chore: 前端工程化 + Git hooks + 对齐 PathEditor 规范
- 新增 .gitattributes(CRLF 统一)+ rust-toolchain.toml - 新增 Prettier + ESLint + markdownlint 配置 - 新增 Husky Git hooks(pre-commit lint-staged + commit-msg commitlint) - 新增 vitest 前端测试(12 tests, utils/qrText.ts) - 新增 @ 路径别名(vite + tsconfig) - 新增 ROADMAP / SUPPORT / CODEOWNERS / FUNDING / dependabot - 更新 .gitignore + .editorconfig - 更新 package.json(新增 lint/format/test 脚本) - 全项目 prettier 格式化 + eslint 通过 - 更新 CLAUDE.md + README.md
This commit is contained in:
@@ -17,7 +17,7 @@ export default function HistoryList() {
|
||||
|
||||
const handleDelete = (e: React.MouseEvent, id: string) => {
|
||||
e.stopPropagation();
|
||||
const updated = state.history.filter(h => h.id !== id);
|
||||
const updated = state.history.filter((h) => h.id !== id);
|
||||
dispatch({ type: 'SET_HISTORY', payload: updated });
|
||||
persistHistory(updated);
|
||||
};
|
||||
@@ -39,8 +39,10 @@ export default function HistoryList() {
|
||||
📋 历史记录
|
||||
</span>
|
||||
{state.history.length > 0 && (
|
||||
<button onClick={handleClear}
|
||||
className="text-xs text-red-400 hover:text-red-600 transition-colors">
|
||||
<button
|
||||
onClick={handleClear}
|
||||
className="text-xs text-red-400 hover:text-red-600 transition-colors"
|
||||
>
|
||||
清空
|
||||
</button>
|
||||
)}
|
||||
@@ -50,10 +52,12 @@ export default function HistoryList() {
|
||||
{state.history.length === 0 && (
|
||||
<p className="text-xs text-gray-400 text-center py-4">暂无记录</p>
|
||||
)}
|
||||
{state.history.map(entry => (
|
||||
<div key={entry.id}
|
||||
{state.history.map((entry) => (
|
||||
<div
|
||||
key={entry.id}
|
||||
onClick={() => handleClick(entry)}
|
||||
className="group flex items-center justify-between px-2 py-1.5 rounded-lg text-xs cursor-pointer hover:bg-gray-100 dark:hover:bg-gray-800 transition-all">
|
||||
className="group flex items-center justify-between px-2 py-1.5 rounded-lg text-xs cursor-pointer hover:bg-gray-100 dark:hover:bg-gray-800 transition-all"
|
||||
>
|
||||
<div className="flex-1 min-w-0">
|
||||
<div className="flex items-center gap-1.5">
|
||||
<span className="px-1 py-0.5 rounded text-[10px] font-medium bg-blue-100 dark:bg-blue-900/30 text-blue-600 dark:text-blue-400">
|
||||
@@ -65,8 +69,10 @@ export default function HistoryList() {
|
||||
{entry.content.length > 20 ? entry.content.slice(0, 20) + '...' : entry.content}
|
||||
</span>
|
||||
</div>
|
||||
<button onClick={(e) => handleDelete(e, entry.id)}
|
||||
className="opacity-0 group-hover:opacity-100 text-red-400 hover:text-red-600 ml-1 transition-all text-lg leading-none">
|
||||
<button
|
||||
onClick={(e) => handleDelete(e, entry.id)}
|
||||
className="opacity-0 group-hover:opacity-100 text-red-400 hover:text-red-600 ml-1 transition-all text-lg leading-none"
|
||||
>
|
||||
×
|
||||
</button>
|
||||
</div>
|
||||
|
||||
Reference in New Issue
Block a user