mirror of
https://github.com/narrrl/holy-flavor-rater.git
synced 2026-11-03 16:41:27 +01:00
4.6 KiB
4.6 KiB
UX & Design Improvements
Tracking doc from the frontend/UX audit. Items grouped by priority. Check off as done.
🔴 High impact
- #1 i18n sweep — app claims EN/DE but ~30+ user-facing strings are English-only.
App.tsx404 pageCategoryFlavors.tsxempty state + review captionCommunityFeed.tsx"No comment provided.", reply-failed toastFlavorDetail.tsxadmin edit labels, confirm dialogs, error toastsLogin.tsxreset/verify flow labels, buttons, messagesMyReviewCard.tsxconfirm dialogs, error toastsPublicProfile.tsxtabs, empty states, confirm dialogs, error toasts- Admin-only, superuser surface: swept
AdminUserDetail.tsx,admin/*(Banners, Tickets, Overview, Config, Jobs, Users, Layout, Flavors),AdminRatingDetail.tsx,AdminReplyDetail.tsx,Settings.tsxtheme-list subheaders. Added ~120admin.*keys +common.{home,processing,active,inactive}(EN+DE), fixed DE leftovers in the existing admin block (manageUser/manageRating/manageReply/deactivate), addedreact-i18nexttoAdminJobs(was missing). Toasts/confirms/labels/table headers/menu items all keyed.
- #2 Delete dead code —
FlavorList.tsx(240 LOC) +AdminDashboard.tsx(873 LOC). Zero imports, not in router (replaced byadmin/folder +flavors/FlavorDetail). - #3 Add brand/logo — new
BrandMark(components/layout/BrandMark.tsx): gradient "H" monogram + wordmark, links home. Anchored at the top ofNavSidebar(full) and the mobileGlassAppBar(compact, icon-only). Newbrand.{name,tagline}i18n keys (EN+DE). - #4 Categories discoverable — accordion now open by default (
NavSidebar.tsx); primary browse axis visible without an extra click.
🟡 Medium
- #5 Hall of Fame carousel (
MainPage.tsx) — added 6s auto-advance (stops on manual control, pauses on hover, off for reduced-motion), touch swipe, on-card overlay arrows on mobile (header arrows desktop-only), and featured quote now picks the highest-scored comment instead of the first. - #6 Admin edit leaks into product card (
FlavorDetail.tsx) — extracted tocomponents/AdminFlavorEditDialog.tsx; card keeps a clean read view, edit opens a focused dialog. - #7 CommunityFeed duplication (
CommunityFeed.tsx) — dropped the in-page Notifications + Following sidebar cards (NavSidebar already provides both: NotificationMenu popup + Following collapse). Kept the unique "Circle's Top Rated" card. Removed now-dead queries/state/imports. - #8 Reply Enter-to-submit on multiline (
CommunityFeed.tsx,FlavorDetail.tsx,MyReviewCard.tsx) — reply fields are nowmultiline rows={2}; plain Enter inserts a newline, submit moved to Ctrl/Cmd+Enter (no longer hijacks Enter, no longer blocks newlines). - #9 Login password UX (
Login.tsx) — added aPasswordFieldwith show/hide toggle (all password inputs), a 0–4 strength meter on signup + reset-new-password, and inline validation mirroring the backend (min 8 chars, not entirely numeric) that gates the submit button.
🟢 Design-system cleanup
- #10 Unify grid breakpoints — new
<FlavorGrid>(components/ui/FlavorGrid.tsx) is the single source of truth for flavor-card grids: default roomy auto-fill mode +compact2→6 fixed mode. Replaced the 3 divergent inlinedisplay:griddefs (CategoryFlavors, MainPage search/newest) and converted SimilarFlavors off MUI<Grid>. - #11 Extract
<BackButton>— repeated with driftingsxon 5+ pages. - #12 Font-weight scale — normalized all inline weights to a numeric scale (
'bold'→700,'900'→900,'800'→800) across 35 files; theme typography already owns h1–h6/button/tab weights. No visual change ('bold'===700). - #13 Avatar fallback casing — all avatar/initial fallbacks now
.charAt(0).toUpperCase(); fixed the 2 outliers missing.toUpperCase()(MainPagefeatured review,PublicProfileheader). - #14 Image placeholder — new
<FlavorThumb>(components/ui/FlavorThumb.tsx) renders the flavor initial on missing or failed image (onErrorfallback), no broken-image glyph. Adopted inCommunityFeed(feed + top-followed) andMyReviewCard. - #15 Standardize empty states — audited: all user-facing list/section empties already use
<EmptyState>. Remaining inline<Typography>are intentional in-card comment placeholders (italic "no comment") + one admin-only caption (deferred under #1).
✅ Good (keep)
ScoreInput a11y (radiogroup, arrow/number keys). Glass design system + skeletons. Optimistic mutations. Lazy routes. Status/Rating badges.