UI: light Things-3 design system — tokens, task rows, chips, home

Replaces the dark navy palette with a light grouped-background system:
- theme.ts: full token set (space/radius/type/shadow) + light+dark palettes
- ui.tsx: Screen/Title/SectionHeader/Card/Separator/Pill/Empty primitives
- TaskRow: rounded-square checkbox carrying priority colour, inset separators
- TaskListScreen: rows grouped into a card, drag lift, refined deferred footer
- Icon.tsx: dependency-free geometric icon set (emoji don't take a tint)
- home: large title, Next-up card, "needs attention" rows, icon tab bar
- Priority/Estimate/Date chips unified on the accent-soft active state

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
This commit is contained in:
Claude
2026-09-01 22:36:26 +10:00
parent 65efb632db
commit 1af86cd27c
11 changed files with 863 additions and 217 deletions

View File

@@ -9,11 +9,21 @@ export const PRIORITY_LABEL: Record<Task["priority"], string> = {
4: "Low",
};
// Todoist's flag mapping (urgent red → low grey), retuned to sit calmly on a
// light canvas. `PRIORITY_TINT` is the same hue at wash strength, for the
// selected state of a chip — a saturated fill would shout on a white card.
export const PRIORITY_COLOR: Record<Task["priority"], `#${string}`> = {
1: "#E05B5B",
2: "#E0A93E",
3: "#5B8DEF",
4: "#6B7280",
1: "#E5484D",
2: "#D98324",
3: "#2F6FED",
4: "#9A9AA2",
};
export const PRIORITY_TINT: Record<Task["priority"], `#${string}`> = {
1: "#FDECEC",
2: "#FBF0E2",
3: "#E8F0FE",
4: "#F0F0F3",
};
export function formatEstimate(min: number | null): string | null {