From 522afefc80acd0c852b8f714f6a55cf2947b1ae6 Mon Sep 17 00:00:00 2001 From: BOHA Date: Sat, 6 Jun 2026 02:22:51 +0200 Subject: [PATCH] refactor(frontend): fix undefined --danger-color, dedup formatDate & require2FAOptions, drop double plan.css import - base.css: var(--danger-color) (undefined, no fallback -> inherited color) -> var(--danger) - attendanceHelpers: re-export formatDate from formatters instead of a byte-identical copy - dashboard.ts: remove dead duplicate require2FAOptions (canonical copy is in settings.ts) - settings.ts: remove unused @deprecated systemSettingsOptions alias - PlanWork: drop redundant per-page plan.css import (loaded globally in AdminApp) Co-Authored-By: Claude Opus 4.8 (1M context) --- src/admin/base.css | 2 +- src/admin/lib/queries/dashboard.ts | 8 ++------ src/admin/lib/queries/settings.ts | 3 --- src/admin/pages/PlanWork.tsx | 2 +- src/admin/utils/attendanceHelpers.ts | 8 +++----- 5 files changed, 7 insertions(+), 16 deletions(-) diff --git a/src/admin/base.css b/src/admin/base.css index 01580b9..87cfe29 100644 --- a/src/admin/base.css +++ b/src/admin/base.css @@ -265,7 +265,7 @@ img { border-radius: var(--border-radius-sm); background: var(--bg-tertiary); border: 1px solid var(--border-color); - color: var(--danger-color); + color: var(--danger); font-family: var(--font-mono); font-size: 11px; line-height: 1.5; diff --git a/src/admin/lib/queries/dashboard.ts b/src/admin/lib/queries/dashboard.ts index d8a7325..d3e3267 100644 --- a/src/admin/lib/queries/dashboard.ts +++ b/src/admin/lib/queries/dashboard.ts @@ -9,12 +9,8 @@ export const dashboardOptions = () => staleTime: 60_000, }); -export const require2FAOptions = () => - queryOptions({ - queryKey: ["settings", "2fa"], - queryFn: () => - jsonQuery<{ require_2fa: boolean }>("/api/admin/totp/required"), - }); +// require2FAOptions lives in ./settings.ts (the single definition consumers +// import). The duplicate copy that used to be here was dead. export interface Session { id: number | string; diff --git a/src/admin/lib/queries/settings.ts b/src/admin/lib/queries/settings.ts index ca43dbb..2fc8399 100644 --- a/src/admin/lib/queries/settings.ts +++ b/src/admin/lib/queries/settings.ts @@ -76,9 +76,6 @@ export const systemInfoOptions = () => ), }); -/** @deprecated Use systemInfoOptions instead — this query fetches system-info, not system settings. */ -export const systemSettingsOptions = systemInfoOptions; - export const require2FAOptions = () => queryOptions({ queryKey: ["settings", "2fa"], diff --git a/src/admin/pages/PlanWork.tsx b/src/admin/pages/PlanWork.tsx index 823a1d5..c76b4ed 100644 --- a/src/admin/pages/PlanWork.tsx +++ b/src/admin/pages/PlanWork.tsx @@ -15,7 +15,7 @@ import PlanCategoriesModal from "../components/PlanCategoriesModal"; import Forbidden from "../components/Forbidden"; import { projectListOptions, type Project } from "../lib/queries/projects"; import { planCategoriesOptions, type PlanCategory } from "../lib/queries/plan"; -import "../plan.css"; +// plan.css is imported once globally in AdminApp.tsx — no per-page re-import. const MONTH_NAMES = [ "Leden", diff --git a/src/admin/utils/attendanceHelpers.ts b/src/admin/utils/attendanceHelpers.ts index c67589f..577724b 100644 --- a/src/admin/utils/attendanceHelpers.ts +++ b/src/admin/utils/attendanceHelpers.ts @@ -21,11 +21,9 @@ interface AttendanceRecord { }>; } -export const formatDate = (dateStr: string | null | undefined): string => { - if (!dateStr) return "—"; - const d = new Date(dateStr); - return d.toLocaleDateString("cs-CZ"); -}; +// formatDate is defined once in ./formatters and re-exported here so existing +// importers of attendanceHelpers keep working without a duplicate definition. +export { formatDate } from "./formatters"; /** Extract time as HH:MM from a datetime string without timezone conversion */ const extractTime = (datetime: string): string => {