3 plans across 2 waves covering DS-01, DS-02, DS-03: - Plan 01: Token edits (radius, colors, chart vars) + chart components - Plan 02: Shared component rounded-* removal + spacing upgrades - Plan 03: Per-page sweep (9 pages) + visual verification checkpoint Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
9.1 KiB
phase, plan, type, wave, depends_on, files_modified, autonomous, requirements, must_haves
| phase | plan | type | wave | depends_on | files_modified | autonomous | requirements | must_haves | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| 05-design-system-token-rework | 01 | execute | 1 |
|
true |
|
|
Purpose: Establish the sharp-cornered, vibrant-pastel visual foundation that cascades to all shadcn components and charts. Output: Modified index.css with new token values + CSS overrides; 3 chart component files with radius={0} and no rounded-full.
<execution_context> @.planning/phases/05-design-system-token-rework/05-RESEARCH.md @.planning/phases/05-design-system-token-rework/05-PATTERNS.md @.planning/phases/05-design-system-token-rework/05-UI-SPEC.md </execution_context>
@.planning/ROADMAP.md @.planning/STATE.mdFrom src/components/dashboard/charts/SpendBarChart.tsx:
const chartConfig = {
budgeted: { label: "Budgeted", color: "var(--color-budget-bar-bg)" },
actual: { label: "Actual", color: "var(--color-muted-foreground)" },
} satisfies ChartConfig
// Bar radius={4} on both Bar elements
// Cell fill uses var(--color-${entry.type}-fill) -- already correct
From src/components/dashboard/charts/IncomeBarChart.tsx:
const chartConfig = {
budgeted: { label: "Budgeted", color: "var(--color-budget-bar-bg)" },
actual: { label: "Actual", color: "var(--color-income-fill)" },
} satisfies ChartConfig
// Bar radius={[4, 4, 0, 0]} on both Bar elements
From src/components/dashboard/charts/ExpenseDonutChart.tsx:
// Line 141: <span className="inline-block size-3 shrink-0 rounded-full" .../>
// Uses var(--color-${entry.type}-fill) for legend dot colors -- already correct
-
Line 7: Change
--color-background: oklch(0.98 0.005 260)to--color-background: oklch(0.98 0.01 260)(warm background chroma from 0.005 to 0.01). -
Lines 52-57: DELETE the entire "Chart Colors" section (6 lines):
/* Chart Colors */ --color-chart-1: oklch(0.72 0.14 155); --color-chart-2: oklch(0.7 0.14 25); --color-chart-3: oklch(0.72 0.14 50); --color-chart-4: oklch(0.65 0.16 355); --color-chart-5: oklch(0.72 0.14 220); -
Lines 65-70: Replace the 6 fill token values with raised chroma (0.22+):
--color-income-fill: oklch(0.72 0.22 155); --color-bill-fill: oklch(0.70 0.22 25); --color-variable-expense-fill: oklch(0.74 0.22 50); --color-debt-fill: oklch(0.66 0.23 355); --color-saving-fill: oklch(0.72 0.22 220); --color-investment-fill: oklch(0.68 0.22 285); -
Line 72: Change
--radius: 0.625remto--radius: 0. -
After the closing
}of the@layer baseblock (after line 99), add CSS overrides for third-party components:/* Third-party radius overrides */ .recharts-rectangle { rx: 0; ry: 0; } [data-sonner-toast] { border-radius: 0 !important; }
In IncomeBarChart.tsx: Find the two <Bar elements. Change radius={[4, 4, 0, 0]} to radius={0} on both Bar components. Do NOT change ChartConfig colors -- they are already correct (actual uses --color-income-fill).
In ExpenseDonutChart.tsx: Find line 141 (the legend color dot span). Remove rounded-full from the className string. The className should go from "inline-block size-3 shrink-0 rounded-full" to "inline-block size-3 shrink-0". No other changes needed in this file.
cd /home/jlmak/Projects/jlmak/SimpleFinanceDash && bun run build
<acceptance_criteria>
- SpendBarChart.tsx contains
radius={0}(grep returns 2 matches) - SpendBarChart.tsx does NOT contain
radius={4} - IncomeBarChart.tsx contains
radius={0}(grep returns 2 matches) - IncomeBarChart.tsx does NOT contain
radius={[4, 4, 0, 0]} - ExpenseDonutChart.tsx does NOT contain
rounded-full - ExpenseDonutChart.tsx contains
"inline-block size-3 shrink-0" bun run buildexits 0 </acceptance_criteria> All 3 chart components have sharp bars (radius={0}) and the donut legend dot is square (no rounded-full)
<threat_model>
Trust Boundaries
No trust boundaries affected. This plan modifies CSS tokens and SVG presentation props only. No user input handling, no data access, no authentication changes.
STRIDE Threat Register
| Threat ID | Category | Component | Disposition | Mitigation Plan |
|---|---|---|---|---|
| — | — | — | — | No applicable threats — pure CSS/visual changes |
| </threat_model> |
<success_criteria>
- Token cascade makes all shadcn components sharp-cornered (verified by --radius: 0 in index.css)
- Category fill colors raised to 0.22+ chroma (verified by grep on index.css)
- Chart color duplication eliminated (--color-chart-* deleted, verified by grep)
- Chart bars render with sharp ends (radius={0} in both bar chart files)
- CSS overrides exist for Recharts SVG and Sonner toasts
- Build passes cleanly </success_criteria>