4.1 KiB
4.1 KiB
Status
APPROVED
Story
As a visitor, I want a cohesive visual language, so that the site feels premium and consistent.
Acceptance Criteria
- Global CSS variables for color, spacing, radii, shadows, and motion exist and are documented.
- Headline font and body font applied globally; extraneous fonts removed.
- Tailwind config consumes tokens; shadcn primitives reflect tokens.
Tasks / Subtasks
- Define and align design tokens (AC: 1, 3)
- Audit existing tokens in
src/app/globals.css(surface/text/brand, spacing, radius, transitions) - Update palette to dark-first black/orange + neutrals per PRD; keep aliases for backward compat where needed
- Add motion presets and shadow tokens if missing; ensure
--radiusaligns with Tailwind theme.borderRadius - Document token usage in a short README at
src/components/ui/README.md
- Audit existing tokens in
- Apply typography pairing globally (AC: 2)
- In
src/app/layout.tsx:body, set Kanit as base text font; Rajdhani for headings via utility/class - Remove unused fonts (DM Serif, Bentham, Share) from layout font variables and any CSS usages
- Ensure weights available: Rajdhani 600/700 for headings; Kanit 400/500 for body
- Update
src/app/globals.cssheading selectors to use Rajdhani
- In
- Tailwind + shadcn integration (AC: 3)
- Map Tailwind theme colors to CSS vars (already partially done); ensure components read from vars
- Set Tailwind
fontFamilyto prefer CSS vars (e.g., body → Kanit, display → Rajdhani) where appropriate - Verify shadcn primitives reflect tokenized colors, radius, and motion
- Regression and quality checks
- Lint passes:
npm run lint - Build passes:
npm run build - Visual smoke check
/projects,/faq,/contactfor layout/regressions (Integration Verification IV1) - Admin pages readable and functional (IV2)
- Bundle size does not grow >10% vs baseline; note result in Completion Notes (IV3)
- Lint passes:
Dev Notes
- Context
- PRD: docs/prd.md (Ready). Story 1.1 targets tokens + typography; sidebar choice does not affect this story.
- Typography pairing approved: Headings Rajdhani 600/700; Body Kanit 400/500.
- Palette direction approved: dark-first black/orange + neutrals.
- Relevant Source Tree
- Layout file: src/app/layout.tsx:1 — loads multiple local fonts and assigns body class variables.
- Global styles: src/app/globals.css:1 — defines CSS variables and sets current fonts (Bentham, DM Serif for headings).
- Tailwind config: tailwind.config.ts:1 — maps theme colors to CSS vars; sets font families (currently Inter/Cal Sans defaults).
- Shared components likely to reflect tokens: src/components/* (e.g., Buttons/Forms use radius/colors).
- Required Changes (high level)
- Remove DM Serif, Bentham, Share font variables from body class list in layout; keep Rajdhani and Kanit only.
- Switch body font-family in globals.css to
var(--font-kanit), headings h1–h3 tovar(--font-rajdhani). - Ensure Tailwind
fontFamilyvalues either include CSS variable driven stacks or rely on element selectors; do not regress shadcn styles. - Tokenize any hardcoded colors in components if encountered while verifying ACs (limit scope to token plumbing, not a full refactor).
Testing
- Standards
- Use existing linting (ESLint + Prettier) and Next build as gates; no unit test framework present in repo.
- Accessibility: verify visible focus rings remain; respect prefers-reduced-motion (no changes expected in this story).
- Performance: capture approximate bundle size before/after with
next buildoutput; ensure <10% growth.
- Manual Checks
- Pages:
/projects,/faq,/contact,/admin/*render without font fallback flashes and with expected fonts. - Visual: Headings visibly using Rajdhani, body using Kanit.
- Pages:
Change Log
| Date | Version | Description | Author |
|---|---|---|---|
| 2025-09-24 | v1 | Initial draft from PRD Story 1.1 | Scrum Master |
Dev Agent Record
Agent Model Used
{{agent_model_name_version}}
Debug Log References
Completion Notes List
File List
QA Results