user-app: redesigned home screen and product detail
Design language introduced here and reused across both screens:
- LESS colour tokens (@ink/@inkSoft/@inkMuted/@inkFaint, @wine/@wineSoft,
@canvas/@canvasSoft, @hairline/@hairlineSoft) added to
themeConfig/colors.json and injected globally via vite's modifyVars, so
scoped <style lang="less"> blocks resolve them with no import
- BEM-ish scoped class names, hairline-bordered cards at 14-18px radii,
ink surfaces with a wine accent, dashed-border empty states
- components/home/: SectionHead, ShowcaseCard, ShowcaseSlider, CategoryRail,
RateStrip, AccountStrip
Data honesty is deliberate throughout: no rial price is printed for a piece,
because a finished item's price is the live gold rate x weight plus wage,
computed at order time and never stored on the product. Only genuinely
present fields are shown (weight, making-charge percent, stock, category,
brand). Categories and the hero are derived from the real catalogue, so an
empty catalogue renders an empty state rather than placeholder tiles.
Also fixes a real bug in the product detail view: it ran, at module scope,
history.pushState + window.onpopstate = () => history.go(1). Because the
drawer mounts its slot eagerly, that fired for every product card on the
home screen and permanently hijacked the back button for the session.
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
This commit is contained in:
co-authored by
Claude Opus 5
parent
a12fb0450e
commit
f2d83c53df
@@ -22,5 +22,17 @@
|
||||
"gray-400": "#9ca3af",
|
||||
"gray-500": "#6b7280",
|
||||
"green": "#16a34a",
|
||||
"red": "#dc2626"
|
||||
"red": "#dc2626",
|
||||
"ink": "#14161A",
|
||||
"inkSoft": "#22262E",
|
||||
"inkMuted": "#5B616E",
|
||||
"inkFaint": "#8A909C",
|
||||
"wine": "#7A1B33",
|
||||
"wineDeep": "#5E1427",
|
||||
"wineSoft": "#A33C55",
|
||||
"wineWash": "#FBF2F4",
|
||||
"canvas": "#FFFFFF",
|
||||
"canvasSoft": "#FAFAFA",
|
||||
"hairline": "#ECEDEF",
|
||||
"hairlineSoft": "#F4F5F6"
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user