feat: 前端UI标题栏优化与配置更新

- 更新.gitignore,添加frontend/.next/忽略
- 优化RecordModal、index、recurring、search、stats页面标题栏样式
- 新增frontend/lib/utils.js工具函数
- 更新useCategories.js钩子
- 添加代码优化计划文档

Co-Authored-By: Claude <noreply@anthropic.com>
This commit is contained in:
Developer
2026-03-18 16:33:29 +08:00
co-authored by Claude
parent ad6387e49e
commit 127f491167
9 changed files with 2350 additions and 48 deletions
+11 -4
View File
@@ -7,11 +7,20 @@ import { useToast } from '../components/ToastProvider';
import { useConfirm } from '../components/ConfirmProvider';
import { useCategories } from '../hooks/useCategories';
const DAYS = Array.from({ length: 28 }, (_, i) => i + 1);
export default function Recurring() {
const router = useRouter();
const { showToast } = useToast();
const { confirm } = useConfirm();
const { categories } = useCategories();
const { categories, error: categoriesError } = useCategories();
// 显示分类加载错误
useEffect(() => {
if (categoriesError) {
showToast('分类加载失败', { tone: 'error' });
}
}, [categoriesError]);
const [bills, setBills] = useState([]);
const [modalOpen, setModalOpen] = useState(false);
const [editingBill, setEditingBill] = useState(null);
@@ -170,8 +179,6 @@ export default function Recurring() {
}
};
const days = Array.from({ length: 28 }, (_, index) => index + 1);
const actions = (
<button type="button" className="icon-button" aria-label="设置" onClick={() => router.push('/settings')}>
<Icon name="settings" size={18} />
@@ -322,7 +329,7 @@ export default function Recurring() {
<div className="form-group">
<label htmlFor="bill-day">日期每月几号</label>
<select id="bill-day" value={formData.day} onChange={(e) => setFormData({ ...formData, day: e.target.value })} disabled={submitting || deleting}>
{days.map((day) => (
{DAYS.map((day) => (
<option key={day} value={day}>{day} </option>
))}
</select>