From a8afc1c2ad53710bba5db688cb7bd7e6a84999cb Mon Sep 17 00:00:00 2001 From: tetiana zorii Date: Thu, 5 Feb 2026 09:50:01 -0500 Subject: [PATCH 1/2] style: update dashboard UI and fix canonical Tailwind v4 classes - Replace dashboard background with DynamicGridBackground - Fix suggestCanonicalClasses warnings across multiple components --- frontend/app/[locale]/dashboard/page.tsx | 58 +++++----- frontend/app/not-found.tsx | 22 ++-- frontend/components/dashboard/ProfileCard.tsx | 30 +++--- .../components/dashboard/QuizSavedBanner.tsx | 10 +- frontend/components/dashboard/StatsCard.tsx | 38 +++---- frontend/components/q&a/AIWordHelper.tsx | 24 ++--- .../components/q&a/FloatingExplainButton.tsx | 6 +- .../components/shared/LanguageSwitcher.tsx | 14 +-- frontend/messages/en.json | 87 +++++++-------- frontend/messages/pl.json | 99 ++++++++--------- frontend/messages/uk.json | 101 +++++++++--------- 11 files changed, 238 insertions(+), 251 deletions(-) diff --git a/frontend/app/[locale]/dashboard/page.tsx b/frontend/app/[locale]/dashboard/page.tsx index 3e5a23a3..d601fa17 100644 --- a/frontend/app/[locale]/dashboard/page.tsx +++ b/frontend/app/[locale]/dashboard/page.tsx @@ -4,6 +4,7 @@ import { PostAuthQuizSync } from '@/components/auth/PostAuthQuizSync'; import { ProfileCard } from '@/components/dashboard/ProfileCard'; import { QuizSavedBanner } from '@/components/dashboard/QuizSavedBanner'; import { StatsCard } from '@/components/dashboard/StatsCard'; +import { DynamicGridBackground } from '@/components/shared/DynamicGridBackground'; import { getUserQuizStats } from '@/db/queries/quiz'; import { getUserProfile } from '@/db/queries/users'; import { redirect } from '@/i18n/routing'; @@ -75,42 +76,35 @@ export default async function DashboardPage({ }; const outlineBtnStyles = - 'inline-flex items-center justify-center rounded-full border border-slate-200 dark:border-slate-700 bg-white/50 dark:bg-slate-900/50 backdrop-blur-sm px-6 py-2 text-sm font-medium text-slate-600 dark:text-slate-300 transition-colors hover:bg-white hover:text-sky-600 dark:hover:bg-slate-800 dark:hover:text-sky-400'; + 'inline-flex items-center justify-center rounded-full border border-gray-200 dark:border-white/10 bg-white/50 dark:bg-neutral-900/50 backdrop-blur-sm px-6 py-2 text-sm font-medium text-gray-600 dark:text-gray-300 transition-colors hover:bg-white hover:text-(--accent-primary) dark:hover:bg-neutral-800 dark:hover:text-(--accent-primary)'; return ( -
+
-
+ + + ); } diff --git a/frontend/app/not-found.tsx b/frontend/app/not-found.tsx index aa61e857..22957bcb 100644 --- a/frontend/app/not-found.tsx +++ b/frontend/app/not-found.tsx @@ -26,23 +26,23 @@ export default async function NotFound() { return (
-
-
-
+
+
+
- - - - - + + + + +

- + DevL Ø - + vers

@@ -67,7 +67,7 @@ export default async function NotFound() { {t.backHome} diff --git a/frontend/components/dashboard/ProfileCard.tsx b/frontend/components/dashboard/ProfileCard.tsx index c5c276d0..d171f01e 100644 --- a/frontend/components/dashboard/ProfileCard.tsx +++ b/frontend/components/dashboard/ProfileCard.tsx @@ -17,22 +17,20 @@ export function ProfileCard({ user, locale }: ProfileCardProps) { const t = useTranslations('dashboard.profile'); const cardStyles = ` - relative overflow-hidden rounded-[2rem] - border border-slate-200/70 dark:border-slate-700/80 - bg-white/60 dark:bg-slate-900/60 backdrop-blur-md - shadow-[0_18px_45px_rgba(15,23,42,0.05)] - dark:shadow-[0_22px_60px_rgba(0,0,0,0.2)] - p-8 transition-all hover:border-sky-200 dark:hover:border-sky-800 + relative overflow-hidden rounded-2xl + border border-gray-100 dark:border-white/5 + bg-white/60 dark:bg-neutral-900/60 backdrop-blur-xl + p-8 transition-all hover:border-(--accent-primary)/30 dark:hover:border-(--accent-primary)/30 `; return (