# Design System Remediation Roadmap — 65% → 100% ✅ COMPLETE > **Date:** 2026-03-28 (created) → 2026-03-29 (completed) > **Baseline:** Design System Audit (`docs/DESIGN_SYSTEM_AUDIT.md`) — Overall 65% > **Final:** 100% Design System Maturity Level 3 (Consistent) > **Actual timeline:** 2 sessions (~4 hours) > **Scope:** 8 product web apps, 5 iOS apps, 5 Android apps, 3 React Native apps, 3 platform dashboards --- ## Score Baseline (Post-Remediation Round 1) | Dimension | Current | Target | Gap | | ------------------------------- | ------- | -------- | --- | | **Token Foundation** | 95% | 100% | 5% | | **Token Adoption (Web)** | 72% | 100% | 28% | | **Token Adoption (Mobile)** | 50% | 85% | 35% | | **Component Library** | 15% | 80% | 65% | | **Accessibility (WCAG 2.1 AA)** | 42% | 90% | 48% | | **Responsive Design** | 5% | 60% | 55% | | **Dark/Light Theme** | 55% | 85% | 30% | | **Animation/Motion** | 35% | 50% | 15% | | **UX Patterns (Feedback)** | 32% | 80% | 48% | | **Interaction Quality** | 25% | 75% | 50% | | **Information Architecture** | 65% | 85% | 20% | | **E2E / Visual Testing** | 40% | 70% | 30% | | **Design Documentation** | 20% | 60% | 40% | | **Overall Completeness** | **65%** | **100%** | 35% | --- ## Phase 1 — Token Foundation & Adoption (Week 1–2) **Goal:** Every web app consumes tokens from `@bytelyst/design-tokens`. Zero hand-written CSS custom properties. Token Foundation 95% → 100%, Token Adoption (Web) 72% → 95%. **Estimated effort:** 4–5 days ### 1.1 Add Missing Product Palettes to Canonical JSON 4 products have no palette in `bytelyst.tokens.json`. Add them so the generator can produce per-product CSS. - [x] **ActionTrail** — add `color.actiontrail` section (accent, danger, surface variants) to `bytelyst.tokens.json` - [x] **NoteLett** — add `color.notelett` section - [x] **LocalMemGPT** — add `color.localmemgpt` section - [x] **Local LLM Lab** — add `color.localllmlab` section - [x] Run `generate.ts` and verify 4 new CSS + Swift + Kotlin files appear in `generated/` **Files:** `packages/design-tokens/tokens/bytelyst.tokens.json`, `packages/design-tokens/scripts/generate.ts` ### 1.2 Generate Per-Product CSS and Wire Into Web Apps The generator already produces per-product files. Each web app should import the generated CSS instead of hand-writing `globals.css` token blocks. - [x] Publish `@bytelyst/design-tokens` generated output to Gitea npm registry (or use `file:` ref) - [x] **ChronoMind** — replace hand-written `--cm-*` block in `globals.css` with `@import '@bytelyst/design-tokens/generated/css/chronomind.css'` - [x] **JarvisJr** — replace `--jj-*` block - [x] **NomGap** — replace `--ng-*` block; remove leaked `--ml-*` references - [x] **ActionTrail** — replace `--at-*` block - [x] **FlowMonk** — replace `--fm-*` block - [x] **NoteLett** — replace `--nl-*` block; remove leaked `--ml-*` references - [x] **LocalMemGPT** — replace `--lmg-*` block - [x] **Local LLM Lab** — replace `--llm-*` block - [x] Verify each app still renders correctly after swap (visual spot-check) **Files per app:** `web/src/app/globals.css`, `package.json` (add dep) ### 1.3 Fix NomGap + NoteLett Token Prefix Leaks Both apps leak `--ml-*` MindLyst tokens into their CSS. - [x] **NomGap web** `globals.css` — find and replace all `--ml-*` references with `--ng-*` - [x] **NoteLett web** `globals.css` — find and replace all `--ml-*` references with `--nl-*` - [x] Grep-verify: `grep -rn '\-\-ml-' web/src/` returns 0 hits in both repos ### 1.4 Commit & Push - [x] Commit per-repo: `fix(tokens): consume @bytelyst/design-tokens instead of hand-written CSS` - [x] Push all repos to origin ### Phase 1 Score Impact | Dimension | Before | After | | -------------------- | ------ | -------- | | Token Foundation | 95% | **100%** | | Token Adoption (Web) | 72% | **95%** | | **Overall** | 65% | **72%** | --- ## Phase 2 — Shared Component Library (Week 2–4) **Goal:** Create `@bytelyst/ui` with 12 shared primitives. Integrate shadcn/ui as the foundation. Component Library 15% → 70%. **Estimated effort:** 8–10 days ### 2.1 Scaffold `@bytelyst/ui` Package - [x] Create `packages/ui/` in `learning_ai_common_plat` - [x] Initialize with `package.json` (`@bytelyst/ui`), `tsconfig.json`, Vitest - [x] Add `react`, `react-dom`, `tailwindcss`, `class-variance-authority`, `clsx`, `tailwind-merge` as peer deps - [x] Add `lucide-react` as peer dep (standardize icon library) - [x] Configure exports: `@bytelyst/ui/button`, `@bytelyst/ui/input`, etc. - [x] Add `README.md` with usage examples ### 2.2 Integrate shadcn/ui Primitives Use Radix UI primitives (via shadcn/ui patterns) for accessible, composable components. - [x] Add `@radix-ui/react-dialog`, `@radix-ui/react-toast`, `@radix-ui/react-select`, `@radix-ui/react-dropdown-menu`, `@radix-ui/react-tooltip` - [x] Create `cn()` utility (clsx + tailwind-merge) - [x] Configure Tailwind to consume `@bytelyst/design-tokens` CSS vars ### 2.3 Build 12 Core Components Each component must: use design tokens, support dark/light, have ARIA, have focus-visible, be documented. | # | Component | Priority | Variants | Notes | | --- | ------------------ | -------- | ------------------------------------------------- | ------------------------------------- | | 1 | **Button** | P0 | primary, secondary, ghost, destructive, icon-only | `aria-label` on icon-only | | 2 | **Input** | P0 | text, email, password, search | Error/success states, `aria-invalid` | | 3 | **Modal/Dialog** | P0 | alert, confirm, form | Focus trap, Esc close, `aria-modal` | | 4 | **Toast** | P0 | success, error, warning, info | Auto-dismiss, `role="alert"` | | 5 | **Card** | P0 | default, elevated, interactive | Hover state on interactive | | 6 | **Badge** | P1 | status, count, risk-level | Color-coded by semantic tokens | | 7 | **Select** | P1 | single, multi | Radix Select, keyboard nav | | 8 | **Sidebar** | P1 | collapsible, responsive | `