Preserve recovered design-plan doc and ignore local beads lock artifact

This commit is contained in:
zenchantlive 2026-02-11 21:27:01 -08:00
parent e599640d3b
commit 89876b1862
2 changed files with 137 additions and 0 deletions

3
.gitignore vendored
View file

@ -6,3 +6,6 @@ worktrees/
# bv (beads viewer) local config and caches
.bv/
# beads lock artifact
.beads/.bv.lock

View file

@ -0,0 +1,134 @@
# BeadBoard Kanban Design System Plan
**Goal**
Ship a production-ready baseline visual system for Tracer Bullet 1 (Kanban) before further feature expansion.
**Primary decision**
Use **Tailwind CSS v4 + CSS tokens (`@theme`) + Framer Motion**.
## 1. Why This Stack
### Tailwind v4 is the right baseline
- Fastest path to a coherent, reusable system in Next.js 15.
- CSS-first token model (`@theme`) fits our need for semantic design tokens.
- Lets us avoid scattered inline styles and ad-hoc CSS files.
### Framer Motion should be scoped
- Use for state transitions (card changes, panel enter/exit, filtered results).
- Avoid decorative over-animation that hurts readability in a dense dashboard.
### Risks and mitigations
- Risk: “generic Tailwind look”
- Mitigation: strict token palette + component contracts + typography rules.
- Risk: visual inconsistency
- Mitigation: no direct color literals in component markup except token definitions.
## 2. Baseline-First Sequencing
This should happen **now**, not later.
1. Foundation (tokens, layout, core components)
2. Motion and interaction polish
3. Accessibility and responsive hardening
4. Continue other tracer bullets
## 3. Visual Language (v1)
### Product feel
- High-signal operations UI.
- Calm neutral surfaces with sharp status accents.
- Dense information without visual clutter.
### Typography
- Primary UI: `DM Sans` (or `Inter` fallback decision at implementation time)
- Metadata/IDs: `JetBrains Mono`
### Color model
- Semantic tokens only:
- `background`, `foreground`, `surface`, `muted`
- `status-open`, `status-in-progress`, `status-blocked`, `status-deferred`, `status-closed`
- `priority-p0` ... `priority-p4`
- Contrast target: at least WCAG AA for normal text.
## 4. Component Contract
Required first-class components:
- `KanbanPageShell`
- `KanbanControls`
- `KanbanBoard`
- `KanbanColumn`
- `KanbanCard`
- `KanbanDetailPanel`
- shared: `Badge`, `Chip`, `StatPill`
Rules:
- Component variants defined via class composition (CVA optional but preferred).
- No inline style objects for production components.
- All spacing/radius/shadow/color come from tokens/utilities.
## 5. Layout Contract
### Desktop
- Sticky top header with filters + stats.
- Main grid: board + detail panel.
- Columns scroll horizontally as needed.
### Mobile
- Stacked controls.
- Board in horizontal swipe/scroll mode.
- Detail panel becomes full-screen drawer.
## 6. Motion Contract (Framer Motion)
Use motion for:
- Card appear/disappear on filtering.
- Detail panel slide-in/out.
- Subtle status count transitions.
Do not animate:
- Global page container on every render.
- Constant hover effects that reduce legibility/performance.
## 7. Tailwind v4 Implementation Plan
### Phase A: Design System Foundation (P0)
- Add Tailwind v4 pipeline with `@import "tailwindcss"` in global stylesheet.
- Define `@theme` token set (colors, radius, spacing aliases, shadows, motion tokens).
- Add base layer typography/background defaults.
- Replace inline styles in tracer-1 components with tokenized Tailwind classes.
Acceptance criteria:
- No inline style usage in `src/components/kanban/*` and shared primitives (except truly dynamic edge cases).
- UI at `localhost:3000` has coherent baseline styling.
### Phase B: Motion + Interaction Polish (P1)
- Integrate Framer Motion transitions for board and panel.
- Improve visual hierarchy of card metadata.
- Add polished empty/loading/error states.
Acceptance criteria:
- Motion communicates state changes without jitter.
- Filtering and detail interactions feel intentional.
### Phase C: Accessibility + Responsive Hardening (P1)
- Keyboard focus and traversal for cards/panel.
- Verify color contrast and focus visibility.
- Tune mobile breakpoints and touch targets.
Acceptance criteria:
- Keyboard-only flow works for core Kanban actions.
- Mobile experience is usable and visually consistent.
## 8. Technical Boundaries
- Read path remains `.beads/issues.jsonl` / `.beads/issues.jsonl.new`.
- No direct write path to JSONL.
- Styling changes must not alter read/write boundary behavior.
## 9. Definition of Done (Tracer-1 Design Baseline)
- Tailwind v4 configured and used as primary styling framework.
- Tokenized design system applied across tracer-1 Kanban components.
- Framer Motion integrated for key transitions.
- Tests/typecheck pass, app runs on `localhost:3000`.
- Visual result is clearly beyond prototype/demo quality.