4.5 KiB
Story 10.1: Core CSS Theme Update
Story
As a developer I want to update the Tailwind CSS theme color variables So that the application uses the new LIBRA for Rights brand palette
Acceptance Criteria
AC1: Update Color Variables in resources/css/app.css
Given the current theme uses Navy Blue + Gold palette
When I update the @theme block
Then the following color mappings are applied:
| Old Variable | Old Hex | New Variable | New Hex |
|---|---|---|---|
--color-navy |
#0A1F44 |
--color-primary |
#4A4A42 (Charcoal) |
--color-gold |
#D4AF37 |
--color-accent |
#C9C4BA (Warm Gray) |
--color-gold-light |
#F4E4B8 |
--color-accent-light |
#E8E4DC (Off-White) |
--color-cream |
#F9F7F4 |
--color-background |
#E8E4DC (Off-White) |
--color-charcoal |
#2C3E50 |
--color-text |
#1A1A1A (Deep Black) |
AC2: Maintain Backward Compatibility Aliases
Given existing components use navy, gold, cream class names
When the theme is updated
Then aliases are created so existing classes continue to work:
--color-navy→ points to--color-primary(Charcoal)--color-gold→ points to--color-accent(Warm Gray)--color-gold-light→ points to--color-accent-light(Off-White)--color-cream→ points to--color-background(Off-White)--color-charcoal→ points to--color-text(Deep Black)
AC3: Update Semantic Aliases
Given semantic aliases exist for components When theme is updated Then these mappings are correct:
--color-primary→#4A4A42(Charcoal)--color-accent→#C9C4BA(Warm Gray)--color-accent-content→#C9C4BA(Warm Gray)--color-accent-foreground→#4A4A42(Charcoal)--color-background→#E8E4DC(Off-White)--color-text→#1A1A1A(Deep Black)
AC4: Update Button Styles
Given button classes use gold/navy colors
When theme is updated
Then .btn-primary and .btn-secondary use new palette:
- Primary: Charcoal background, Off-White text
- Secondary: Warm Gray border, Charcoal text
- Hover states updated accordingly
AC5: Update Form Focus States
Given form inputs have gold focus rings When theme is updated Then focus states use Warm Gray:
focus:border-gold→ Warm Gray borderfocus:ring-gold→ Warm Gray ring
AC6: Update Prose Class
Given .prose-navy class exists for blog content
When theme is updated
Then rename to .prose-brand or update colors:
- Headings: Charcoal
- Links: Warm Gray
- Body: Deep Black
AC7: Status Colors Unchanged
Given status colors serve functional purposes When theme is updated Then these remain unchanged:
--color-success: #27AE60--color-danger: #E74C3C--color-warning: #F39C12
AC8: WCAG AA Contrast Compliance
Given accessibility requirements When new colors are applied Then all text/background combinations meet WCAG AA:
- Deep Black (
#1A1A1A) on Off-White (#E8E4DC): ≥4.5:1 for body text - Off-White on Charcoal (
#4A4A42): ≥4.5:1 for body text - Warm Gray (
#C9C4BA) usage verified for sufficient contrast
Technical Notes
Files to Modify
resources/css/app.css- Main theme file
Color Reference (from docs/brand.md)
| Color | Hex | Usage |
|---|---|---|
| Charcoal | #4A4A42 |
Primary backgrounds, text |
| Warm Gray | #C9C4BA |
Secondary backgrounds, accents |
| Off-White | #E8E4DC |
Light backgrounds |
| Deep Black | #1A1A1A |
Logo artwork, headlines |
Contrast Verification
Use WebAIM Contrast Checker or similar tool to verify:
- Deep Black on Off-White: ~12.5:1 (passes AAA)
- Off-White on Charcoal: ~4.8:1 (passes AA)
- Charcoal on Off-White: ~4.8:1 (passes AA)
Dev Checklist
- Update
@themeblock with new color values - Create backward-compatible aliases
- Update semantic aliases
- Update
.btn-primarystyles - Update
.btn-secondarystyles - Update form focus states (input, textarea, select, checkbox, radio)
- Update
.prose-navy→.prose-brand - Update skip-link focus styles
- Update timeline-dot color
- Update skeleton loader color
- Verify status colors unchanged
- Run contrast checker on all combinations
- Run
npm run buildsuccessfully - Visual test in browser (both light and dark mode if applicable)
Estimation
Complexity: Low Risk: Low - CSS-only changes with aliases for backward compatibility