motif-design 0.1.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/LICENSE +21 -0
- package/README.md +91 -0
- package/bin/install.js +724 -0
- package/core/references/context-engine.md +190 -0
- package/core/references/design-inputs.md +421 -0
- package/core/references/runtime-adapters.md +180 -0
- package/core/references/state-machine.md +124 -0
- package/core/references/verticals/ecommerce.md +251 -0
- package/core/references/verticals/fintech.md +226 -0
- package/core/references/verticals/health.md +235 -0
- package/core/references/verticals/saas.md +248 -0
- package/core/templates/STATE-TEMPLATE.md +28 -0
- package/core/templates/SUMMARY-TEMPLATE.md +21 -0
- package/core/templates/VERTICAL-TEMPLATE.md +144 -0
- package/core/templates/token-showcase-template.html +946 -0
- package/core/workflows/compose-screen.md +163 -0
- package/core/workflows/evolve.md +64 -0
- package/core/workflows/fix.md +64 -0
- package/core/workflows/generate-system.md +336 -0
- package/core/workflows/quick.md +23 -0
- package/core/workflows/research.md +233 -0
- package/core/workflows/review.md +126 -0
- package/package.json +26 -0
- package/runtimes/claude-code/CLAUDE-MD-SNIPPET.md +34 -0
- package/runtimes/claude-code/agents/motif-design-reviewer.md +207 -0
- package/runtimes/claude-code/agents/motif-fix-agent.md +119 -0
- package/runtimes/claude-code/agents/motif-researcher.md +100 -0
- package/runtimes/claude-code/agents/motif-screen-composer.md +157 -0
- package/runtimes/claude-code/agents/motif-system-architect.md +120 -0
- package/runtimes/claude-code/commands/motif/compose.md +7 -0
- package/runtimes/claude-code/commands/motif/evolve.md +6 -0
- package/runtimes/claude-code/commands/motif/fix.md +7 -0
- package/runtimes/claude-code/commands/motif/help.md +29 -0
- package/runtimes/claude-code/commands/motif/init.md +229 -0
- package/runtimes/claude-code/commands/motif/progress.md +11 -0
- package/runtimes/claude-code/commands/motif/quick.md +7 -0
- package/runtimes/claude-code/commands/motif/research.md +4 -0
- package/runtimes/claude-code/commands/motif/review.md +7 -0
- package/runtimes/claude-code/commands/motif/system.md +4 -0
- package/runtimes/claude-code/hooks/motif-aria-check.js +164 -0
- package/runtimes/claude-code/hooks/motif-context-monitor.js +40 -0
- package/runtimes/claude-code/hooks/motif-font-check.js +192 -0
- package/runtimes/claude-code/hooks/motif-token-check.js +221 -0
- package/runtimes/cursor/README.md +24 -0
- package/runtimes/gemini/README.md +13 -0
- package/runtimes/opencode/README.md +28 -0
- package/scripts/contrast-checker.js +114 -0
- package/scripts/token-counter.js +107 -0
|
@@ -0,0 +1,248 @@
|
|
|
1
|
+
# SaaS Design Intelligence
|
|
2
|
+
|
|
3
|
+
## Core Design Principle
|
|
4
|
+
**Efficiency is the product.** Users are working, not browsing — every pixel must minimize clicks, maximize information density, and stay out of the way. The UI should feel like a precision instrument: fast to navigate, predictable in behavior, and invisible when it's working well. Beautiful SaaS design is the kind you don't notice because it never interrupts your flow.
|
|
5
|
+
|
|
6
|
+
## Navigation Patterns
|
|
7
|
+
|
|
8
|
+
### Standard Models
|
|
9
|
+
- **Mobile:** Hamburger menu or bottom tab bar, 4-5 items. Home/Dashboard, Projects/Workspace, Inbox/Notifications, Search, Settings. SaaS on mobile is a companion view — prioritize read and triage over creation.
|
|
10
|
+
- **Desktop:** Persistent left sidebar, 240-280px expanded, 56-72px collapsed to icon-only. Grouped by product area (e.g., Projects, Teams, Analytics, Settings). Command palette (Cmd+K) for power users. Top bar for breadcrumbs + search + notifications + profile.
|
|
11
|
+
- **Action surfaces:** Command palette for quick navigation and actions. Contextual menus (right-click) for item-level operations. Inline editing over modal forms where possible.
|
|
12
|
+
|
|
13
|
+
### Vertical-Specific Rules
|
|
14
|
+
- Keyboard navigation for all primary actions — power users never leave the keyboard
|
|
15
|
+
- Breadcrumb trail for deep hierarchies (Workspace > Project > Board > Item)
|
|
16
|
+
- Workspace/project switcher always accessible (top-left or sidebar header)
|
|
17
|
+
- Search scoped to current context by default, with "Search all" expansion
|
|
18
|
+
- Cmd+K command palette: reachable from any screen, recent actions first
|
|
19
|
+
|
|
20
|
+
## Color System
|
|
21
|
+
|
|
22
|
+
### Palette A: Professional Indigo (Blue-Purple)
|
|
23
|
+
| Token | Light Mode | Dark Mode | Usage |
|
|
24
|
+
|---|---|---|---|
|
|
25
|
+
| primary-50 | #EEF2FF | #1E1B4B | Subtle backgrounds, selected row tint |
|
|
26
|
+
| primary-100 | #E0E7FF | #312E81 | Hover states on light surfaces |
|
|
27
|
+
| primary-200 | #C7D2FE | #3730A3 | Borders, focus rings (light) |
|
|
28
|
+
| primary-300 | #A5B4FC | #4338CA | Icons, decorative accents |
|
|
29
|
+
| primary-400 | #818CF8 | #6366F1 | Secondary actions, links |
|
|
30
|
+
| primary-500 | #6366F1 | #818CF8 | Primary actions, brand (HSL 239 84% 67%) |
|
|
31
|
+
| primary-600 | #4F46E5 | #A5B4FC | Hover on primary buttons |
|
|
32
|
+
| primary-700 | #4338CA | #C7D2FE | Active/pressed state |
|
|
33
|
+
| primary-800 | #3730A3 | #E0E7FF | Text on light backgrounds |
|
|
34
|
+
| primary-900 | #312E81 | #EEF2FF | Headings on light backgrounds |
|
|
35
|
+
| surface-primary | #FFFFFF | #0F1117 | Main background |
|
|
36
|
+
| surface-secondary | #F9FAFB | #1A1D27 | Cards, sidebar |
|
|
37
|
+
| surface-tertiary | #F3F4F6 | #252836 | Nested elements, table stripes |
|
|
38
|
+
| text-primary | #111827 | #F3F4F6 | Body text (15.3:1 AAA) |
|
|
39
|
+
| text-secondary | #6B7280 | #9CA3AF | Supporting text (5.4:1 AA) |
|
|
40
|
+
|
|
41
|
+
### Palette B: Neutral + Accent
|
|
42
|
+
| Token | Light Mode | Dark Mode | Usage |
|
|
43
|
+
|---|---|---|---|
|
|
44
|
+
| primary-500 | #6D28D9 | #A78BFA | Brand accent (violet) |
|
|
45
|
+
| surface-primary | #FFFFFF | #0A0A0B | Main background |
|
|
46
|
+
| surface-secondary | #F4F4F5 | #18181B | Cards, panels |
|
|
47
|
+
| text-primary | #18181B | #FAFAFA | Body text (16.1:1 AAA) |
|
|
48
|
+
| text-secondary | #71717A | #A1A1AA | Supporting text (4.8:1 AA) |
|
|
49
|
+
|
|
50
|
+
### Semantic Colors
|
|
51
|
+
| Semantic | Hex (Light) | Hex (Dark) | SaaS Meaning |
|
|
52
|
+
|---|---|---|---|
|
|
53
|
+
| Success | #16A34A | #4ADE80 | Action completed, deployment success, build passed |
|
|
54
|
+
| Error | #DC2626 | #F87171 | Operation failed, limit exceeded, build failed |
|
|
55
|
+
| Warning | #D97706 | #FBBF24 | Trial expiring, usage approaching limit, deprecation |
|
|
56
|
+
| Info | #2563EB | #60A5FA | New feature, changelog update, system notification |
|
|
57
|
+
|
|
58
|
+
### Color Anti-Patterns
|
|
59
|
+
- :x: Overly colorful dashboards — visual noise competes with data density
|
|
60
|
+
- :x: Warm surface tones in data contexts — SaaS users expect cool/neutral workspaces
|
|
61
|
+
- :x: Playful gradients on functional surfaces — undermines professional efficiency
|
|
62
|
+
- :x: Inconsistent chart color sequences — reuse the same ordered palette across all visualizations
|
|
63
|
+
- :x: Saturated backgrounds competing with data — surfaces should recede, data should pop
|
|
64
|
+
|
|
65
|
+
## Typography
|
|
66
|
+
|
|
67
|
+
### Pairing A: Engineering Precision
|
|
68
|
+
- **Display:** Space Grotesk 700 at -0.02em — geometric, futuristic precision, designed for technical contexts (Google Fonts)
|
|
69
|
+
- **Body:** IBM Plex Sans 400/500 at 0em — IBM data heritage, excellent at small sizes, optimized for UI (Google Fonts)
|
|
70
|
+
|
|
71
|
+
### Pairing B: Modern Clarity
|
|
72
|
+
- **Display:** Manrope 700 at -0.015em — distinctive semi-rounded geometry, modern and confident (Google Fonts primary; Bricolage Grotesque on Fontshare as alternative)
|
|
73
|
+
- **Body:** Source Sans 3 400/500 at 0em — designed by Paul Hunt for Adobe, optimal UI readability at 14-16px (Google Fonts)
|
|
74
|
+
|
|
75
|
+
### Data & Mono
|
|
76
|
+
- JetBrains Mono 500 or IBM Plex Mono with `font-variant-numeric: tabular-nums` for dashboards, metrics, code snippets, and API references
|
|
77
|
+
|
|
78
|
+
### Type Scale
|
|
79
|
+
| Token | Size | Line Height | SaaS Usage |
|
|
80
|
+
|---|---|---|---|
|
|
81
|
+
| text-xs | 0.75rem (12px) | 1.4 | Timestamps, badges, table metadata, keyboard shortcut hints |
|
|
82
|
+
| text-sm | 0.875rem (14px) | 1.45 | Table cells, sidebar labels, form labels, nav items |
|
|
83
|
+
| text-base | 1rem (16px) | 1.5 | Body copy, form inputs, list items, descriptions |
|
|
84
|
+
| text-lg | 1.125rem (18px) | 1.45 | Section headings, card titles, modal headings |
|
|
85
|
+
| text-xl | 1.25rem (20px) | 1.35 | Page titles, workspace headers |
|
|
86
|
+
| text-2xl | 1.5rem (24px) | 1.3 | Feature headers, settings page titles |
|
|
87
|
+
| text-3xl | 1.875rem (30px) | 1.2 | Dashboard hero metrics, KPI numbers |
|
|
88
|
+
|
|
89
|
+
### Typography Rules
|
|
90
|
+
- Dashboard metrics: --font-mono with tabular-nums for aligned number columns
|
|
91
|
+
- Code snippets, API keys, commit hashes: always --font-mono
|
|
92
|
+
- Table headers: uppercase, tracking-wider, --text-xs, --weight-medium
|
|
93
|
+
- Status labels: --text-xs, --weight-medium, semantic color
|
|
94
|
+
|
|
95
|
+
### Typography Anti-Patterns
|
|
96
|
+
- :x: Serif fonts for UI labels — feels editorial, not functional
|
|
97
|
+
- :x: Rounded/friendly consumer fonts (e.g., Quicksand, Nunito) — feels consumer app, not B2B tool
|
|
98
|
+
- :x: Decorative display fonts — distracts from content density
|
|
99
|
+
- :x: More than 3 font weights on one screen — dilutes hierarchy, increases load
|
|
100
|
+
|
|
101
|
+
## Spacing & Density
|
|
102
|
+
|
|
103
|
+
### Recommended Density: Comfortable-Dense
|
|
104
|
+
Information density matters — SaaS users scan tables, lists, and dashboards — but not at the cost of scannability. Compact enough to show data, spacious enough to click accurately.
|
|
105
|
+
|
|
106
|
+
### Concrete Values
|
|
107
|
+
| Context | Value | Token |
|
|
108
|
+
|---|---|---|
|
|
109
|
+
| Card internal padding | 16px | --space-4 |
|
|
110
|
+
| Table row height | 40-48px | — |
|
|
111
|
+
| Table cell padding | 8px 12px | --space-2 --space-3 |
|
|
112
|
+
| Section gap | 24px | --space-6 |
|
|
113
|
+
| Form field gap | 12-16px | --space-3 to --space-4 |
|
|
114
|
+
| Button padding | 8px 16px | --space-2 --space-4 |
|
|
115
|
+
| Touch target minimum | 44x44px | — |
|
|
116
|
+
| Sidebar width (expanded) | 240px | — |
|
|
117
|
+
| Sidebar width (collapsed) | 56px | — |
|
|
118
|
+
|
|
119
|
+
## Component Specifications
|
|
120
|
+
|
|
121
|
+
### DataTable
|
|
122
|
+
```xml
|
|
123
|
+
<component name="DataTable" category="data-display">
|
|
124
|
+
<description>Sortable, filterable table with column management. The most critical SaaS component — users spend 60%+ of time in tables.</description>
|
|
125
|
+
<structure>
|
|
126
|
+
Header row: [Checkbox] [Column headers with sort indicators] [Actions column]
|
|
127
|
+
Column header: --font-body --text-xs --weight-medium --text-secondary uppercase tracking-wider
|
|
128
|
+
Data row: [Checkbox] [Cell values] [Row action menu ...]
|
|
129
|
+
Cell text: --font-body --text-sm --text-primary
|
|
130
|
+
Numeric cells: --font-mono --text-sm tabular-nums right-aligned
|
|
131
|
+
Pagination: [Page info] [Rows per page selector] [Prev/Next]
|
|
132
|
+
</structure>
|
|
133
|
+
<dimensions>
|
|
134
|
+
header-height: 40px, row-height: 44px, cell-padding: --space-2 --space-3
|
|
135
|
+
Checkbox column: 40px fixed width
|
|
136
|
+
Minimum column width: 80px, resizable via drag handle
|
|
137
|
+
</dimensions>
|
|
138
|
+
<states>
|
|
139
|
+
default: --surface-primary background, --border-primary bottom border on rows
|
|
140
|
+
hover: --surface-secondary background on row
|
|
141
|
+
selected: --primary-50 background, checkbox checked, bulk action bar appears
|
|
142
|
+
loading: skeleton shimmer rows (show 8-10 rows), column headers remain visible
|
|
143
|
+
empty: centered illustration + "No results" + suggested action CTA
|
|
144
|
+
</states>
|
|
145
|
+
<keyboard>Tab through cells, Enter to open row, Space to select, Arrow keys for navigation</keyboard>
|
|
146
|
+
</component>
|
|
147
|
+
```
|
|
148
|
+
|
|
149
|
+
### CommandPalette
|
|
150
|
+
```xml
|
|
151
|
+
<component name="CommandPalette" category="navigation">
|
|
152
|
+
<description>Cmd+K triggered overlay for quick navigation, actions, and search. Power user accelerator.</description>
|
|
153
|
+
<structure>
|
|
154
|
+
Overlay: centered modal, 640px max-width, --surface-primary background
|
|
155
|
+
Search input: --font-body --text-base, placeholder "Type a command or search...", auto-focused
|
|
156
|
+
Results: categorized list [Category label] [Result items with icon + title + shortcut hint]
|
|
157
|
+
Category label: --text-xs --weight-medium --text-secondary uppercase
|
|
158
|
+
Result item: [Icon 20x20] [Title --text-sm] [Shortcut badge --text-xs --surface-tertiary]
|
|
159
|
+
Footer: navigation hints "↑↓ Navigate ↵ Open esc Close"
|
|
160
|
+
</structure>
|
|
161
|
+
<dimensions>
|
|
162
|
+
width: min(640px, 90vw), max-height: 480px
|
|
163
|
+
input-padding: --space-4, result-item-height: 40px, result-padding: --space-2 --space-3
|
|
164
|
+
backdrop: rgba(0,0,0,0.5)
|
|
165
|
+
</dimensions>
|
|
166
|
+
<states>
|
|
167
|
+
open: fade-in backdrop + scale input from 95% to 100%, 150ms ease-out
|
|
168
|
+
searching: spinner in input right, debounce 200ms
|
|
169
|
+
results: categorized list, first item auto-highlighted
|
|
170
|
+
empty: "No results for [query]" + suggested actions
|
|
171
|
+
error: "Search unavailable" + retry link
|
|
172
|
+
</states>
|
|
173
|
+
<animation>appear: opacity 0→1 + scale 0.95→1, 150ms ease-out; dismiss: opacity 1→0, 100ms</animation>
|
|
174
|
+
</component>
|
|
175
|
+
```
|
|
176
|
+
|
|
177
|
+
### FilterBar
|
|
178
|
+
```xml
|
|
179
|
+
<component name="FilterBar" category="navigation">
|
|
180
|
+
<description>Horizontal bar for filtering, searching, and organizing table/list data.</description>
|
|
181
|
+
<structure>
|
|
182
|
+
Bar: [Search input] [Filter chips] [Saved views dropdown] [Sort toggle] [Active filter count badge]
|
|
183
|
+
Search input: icon-left (magnifying glass), --text-sm, placeholder "Filter..."
|
|
184
|
+
Filter chip: --text-xs --weight-medium, --surface-tertiary bg, --radius-sm, removable (x icon)
|
|
185
|
+
Active chip: --primary-50 bg, --primary-700 text, --primary-200 border
|
|
186
|
+
Saved views: dropdown with saved filter combinations, "Save current view" option
|
|
187
|
+
Sort toggle: icon button, current sort field + direction indicator (▲/▼)
|
|
188
|
+
Count badge: --text-xs --primary-500 bg --text-inverse, circular, shows number of active filters
|
|
189
|
+
</structure>
|
|
190
|
+
<dimensions>
|
|
191
|
+
bar-height: 48px, padding: --space-2 --space-3
|
|
192
|
+
search-input-width: 200-280px, chip-padding: --space-1 --space-2, chip-gap: --space-2
|
|
193
|
+
</dimensions>
|
|
194
|
+
<states>
|
|
195
|
+
default: search input + "Add filter" button, no active chips
|
|
196
|
+
active-filters: chips displayed inline, count badge visible, "Clear all" link appears
|
|
197
|
+
expanded: filter dropdown open with column options, operators, value inputs
|
|
198
|
+
</states>
|
|
199
|
+
<tap-target>Each chip and control meets 44x44px minimum</tap-target>
|
|
200
|
+
</component>
|
|
201
|
+
```
|
|
202
|
+
|
|
203
|
+
## Interaction Patterns
|
|
204
|
+
|
|
205
|
+
### Core Flows
|
|
206
|
+
1. **Creating a new resource:** Cmd+K or "New" button → inline form or slide-over panel (not full-page navigation). Auto-save draft. Submit returns to list with new item highlighted.
|
|
207
|
+
2. **Filtering and searching data:** FilterBar search is instant (client-side for <1000 rows, debounced server for larger sets). Filter chips are additive. Saved views persist across sessions.
|
|
208
|
+
3. **Keyboard-driven navigation:** Cmd+K opens command palette → type action → arrow to select → Enter to execute. All primary CRUD actions have keyboard shortcuts displayed in tooltips and command palette.
|
|
209
|
+
|
|
210
|
+
### States
|
|
211
|
+
**Loading:** Skeleton shimmer for tables and cards (left-to-right, 1.5s cycle). Inline spinners (16px) for individual actions (save, delete). Never block the entire page for a single operation.
|
|
212
|
+
**Empty:** First-time: "Welcome to [Workspace]. Create your first [resource] to get started →" with illustration and primary CTA. No-results: "No items match your filters" with "Clear filters" link. Never just blank space.
|
|
213
|
+
**Error:** Inline error messages with retry button for recoverable errors — never modal. Toast notifications for background operation failures. Include error code for support reference.
|
|
214
|
+
|
|
215
|
+
### Motion
|
|
216
|
+
**Appropriate:** Sidebar collapse/expand (200ms ease-out), command palette appear (150ms ease-out), row selection highlight (100ms), toast slide-in from top-right (250ms ease-out), dropdown open (150ms).
|
|
217
|
+
**Inappropriate:** :x: Full page transitions between views, :x: bouncy/spring animations, :x: decorative motion on functional elements, :x: auto-playing feature demos, :x: parallax scrolling in dashboards.
|
|
218
|
+
|
|
219
|
+
## Accessibility Specifics
|
|
220
|
+
- Full keyboard navigation for all features — tab order follows visual layout
|
|
221
|
+
- Visible focus ring (2px solid --border-focus, 2px offset) on all interactive elements
|
|
222
|
+
- aria-labels on icon-only buttons (e.g., "Sort ascending", "Open row actions", "Collapse sidebar")
|
|
223
|
+
- Table column sort state announced to screen readers via aria-sort attribute
|
|
224
|
+
- Command palette results announced as aria-live="polite" region as results update
|
|
225
|
+
- Filter state changes announced via aria-live for screen reader users
|
|
226
|
+
- Minimum 14px font size for all interactive text, 12px only for supplementary metadata
|
|
227
|
+
|
|
228
|
+
## Border Radius
|
|
229
|
+
| Token | Value | Reasoning |
|
|
230
|
+
|---|---|---|
|
|
231
|
+
| radius-sm | 4px | Chips, badges, small inputs — crisp and precise |
|
|
232
|
+
| radius-md | 8px | Buttons, cards, dropdowns — modern without being playful |
|
|
233
|
+
| radius-lg | 12px | Modals, panels, large containers — professional, balanced |
|
|
234
|
+
|
|
235
|
+
## Shadow Style
|
|
236
|
+
| Token | Value | Usage |
|
|
237
|
+
|---|---|---|
|
|
238
|
+
| shadow-sm | 0 1px 2px rgba(0,0,0,0.05) | Subtle card elevation, table header sticky |
|
|
239
|
+
| shadow-md | 0 4px 6px -1px rgba(0,0,0,0.07), 0 2px 4px -2px rgba(0,0,0,0.05) | Dropdowns, popovers, filter bar |
|
|
240
|
+
| shadow-lg | 0 10px 15px -3px rgba(0,0,0,0.08), 0 4px 6px -4px rgba(0,0,0,0.04) | Command palette, modals, slide-over panels |
|
|
241
|
+
|
|
242
|
+
## SaaS-Specific Additions
|
|
243
|
+
- **Keyboard shortcuts display:** Footer hint bar showing context-sensitive shortcuts (e.g., "? Help N New / Search"). Full shortcut reference via "?" key press in modal overlay.
|
|
244
|
+
- **Onboarding checklists:** Dismissible card with progress bar (e.g., "3 of 5 steps complete"). Steps: Create workspace, invite team, connect integration, create first project, customize settings.
|
|
245
|
+
- **Usage meters / quota bars:** Horizontal progress bar with current/limit label (e.g., "8,420 / 10,000 API calls"). Color transitions: --color-success below 75%, --color-warning at 75-90%, --color-error above 90%.
|
|
246
|
+
- **Changelog / notification patterns:** Badge count on bell icon (top-right). Notification drawer slides in from right (250ms). Unread items: --primary-50 background. Changelog entries: version tag + date + summary.
|
|
247
|
+
- **Settings architecture:** Three-tier hierarchy: Workspace settings (billing, integrations, security) > Team settings (permissions, defaults) > Personal settings (profile, preferences, API keys). Left sidebar sub-navigation within settings.
|
|
248
|
+
- **API key display:** Masked by default (sk-****...****abcd). "Reveal" button with re-authentication. "Copy" button with toast confirmation. "Revoke" with confirmation dialog: "This action cannot be undone. Any integrations using this key will stop working."
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
<!-- Source of truth: core/references/state-machine.md -- keep in sync -->
|
|
2
|
+
|
|
3
|
+
# Motif State
|
|
4
|
+
|
|
5
|
+
## Phase
|
|
6
|
+
INITIALIZED
|
|
7
|
+
|
|
8
|
+
## Vertical
|
|
9
|
+
{VERTICAL}
|
|
10
|
+
|
|
11
|
+
## Stack
|
|
12
|
+
{STACK}
|
|
13
|
+
|
|
14
|
+
## Screens
|
|
15
|
+
| # | Screen | Status | Review Score | Last Updated |
|
|
16
|
+
|---|--------|--------|-------------|-------------|
|
|
17
|
+
|
|
18
|
+
## Decisions Log
|
|
19
|
+
- {ISO_DATE} Project initialized
|
|
20
|
+
|
|
21
|
+
## Context Budget
|
|
22
|
+
| File | Tokens (approx) | Budget |
|
|
23
|
+
|---|---|---|
|
|
24
|
+
| PROJECT.md | ~800 | ≤1,000 |
|
|
25
|
+
| DESIGN-BRIEF.md | ~600 | ≤1,000 |
|
|
26
|
+
| DESIGN-RESEARCH.md | -- | ≤3,000 |
|
|
27
|
+
| tokens.css | -- | ≤3,000 |
|
|
28
|
+
| COMPONENT-SPECS.md | -- | ≤5,000 |
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
<!-- Source of truth: core/workflows/compose-screen.md section E -- keep in sync -->
|
|
2
|
+
|
|
3
|
+
# Screen: {SCREEN_NAME}
|
|
4
|
+
|
|
5
|
+
## Components Used
|
|
6
|
+
[List all design system components used in this screen]
|
|
7
|
+
|
|
8
|
+
## Key Tokens Referenced
|
|
9
|
+
[List the primary tokens this screen depends on]
|
|
10
|
+
|
|
11
|
+
## Vertical Patterns Applied
|
|
12
|
+
[Which LOCKED decisions from DESIGN-RESEARCH.md were implemented]
|
|
13
|
+
|
|
14
|
+
## States
|
|
15
|
+
- Default ✓/✗
|
|
16
|
+
- Loading ✓/✗
|
|
17
|
+
- Empty ✓/✗
|
|
18
|
+
- Error ✓/✗
|
|
19
|
+
|
|
20
|
+
## Files Created
|
|
21
|
+
[List all files created/modified for this screen]
|
|
@@ -0,0 +1,144 @@
|
|
|
1
|
+
# [Vertical Name] Design Intelligence
|
|
2
|
+
|
|
3
|
+
> This is a template. Replace all [bracketed content] with concrete, specific values.
|
|
4
|
+
> Each section should contain ACTIONABLE decisions, not generic advice.
|
|
5
|
+
> Target: 400-500 lines with real values a design system generator can use.
|
|
6
|
+
|
|
7
|
+
## Core Design Principle
|
|
8
|
+
**[One sentence: what is the #1 thing the UI must communicate in this vertical?]**
|
|
9
|
+
|
|
10
|
+
[2-3 sentences expanding on why this principle matters for THIS type of product.]
|
|
11
|
+
|
|
12
|
+
## Navigation Patterns
|
|
13
|
+
|
|
14
|
+
### Standard Models
|
|
15
|
+
[Describe 2-3 navigation patterns that users EXPECT in this vertical. Be specific about structure.]
|
|
16
|
+
|
|
17
|
+
### Vertical-Specific Navigation Rules
|
|
18
|
+
[3-5 rules about navigation unique to this vertical. e.g., "Primary CTA must be reachable within 1 tap from any screen."]
|
|
19
|
+
|
|
20
|
+
## Color System
|
|
21
|
+
|
|
22
|
+
### Recommended Palettes
|
|
23
|
+
Provide 2-3 complete palettes with actual hex values:
|
|
24
|
+
|
|
25
|
+
**Palette A: [Name/Mood]**
|
|
26
|
+
| Token | Light Mode | Dark Mode | Usage |
|
|
27
|
+
|---|---|---|---|
|
|
28
|
+
| primary-500 | #[hex] | #[hex] | Primary actions, brand |
|
|
29
|
+
| primary-600 | #[hex] | #[hex] | Hover states |
|
|
30
|
+
| surface-primary | #[hex] | #[hex] | Main background |
|
|
31
|
+
| surface-secondary | #[hex] | #[hex] | Cards, sections |
|
|
32
|
+
| text-primary | #[hex] | #[hex] | Body text |
|
|
33
|
+
| text-secondary | #[hex] | #[hex] | Supporting text |
|
|
34
|
+
|
|
35
|
+
**Palette B: [Name/Mood]**
|
|
36
|
+
[Same format]
|
|
37
|
+
|
|
38
|
+
### Semantic Colors (Vertical Standard)
|
|
39
|
+
| Semantic | Hex | Usage in this vertical |
|
|
40
|
+
|---|---|---|
|
|
41
|
+
| Success | #[hex] | [specific meaning, e.g., "Transaction complete, money received"] |
|
|
42
|
+
| Error | #[hex] | [specific meaning] |
|
|
43
|
+
| Warning | #[hex] | [specific meaning] |
|
|
44
|
+
| Info | #[hex] | [specific meaning] |
|
|
45
|
+
|
|
46
|
+
### Color Anti-Patterns
|
|
47
|
+
[3-5 specific color choices to AVOID with reasoning]
|
|
48
|
+
|
|
49
|
+
## Typography
|
|
50
|
+
|
|
51
|
+
### Recommended Font Pairings
|
|
52
|
+
Provide 2-3 complete pairings with exact specifications:
|
|
53
|
+
|
|
54
|
+
**Pairing A:**
|
|
55
|
+
- Display: [Font Name] [Weight] at [tracking] — [1-sentence personality]
|
|
56
|
+
- Body: [Font Name] [Weight] at [tracking] — [why it works here]
|
|
57
|
+
- Mono/Data: [Font Name] [Weight] with `font-variant-numeric: tabular-nums` — [when to use]
|
|
58
|
+
|
|
59
|
+
**Pairing B:**
|
|
60
|
+
[Same format]
|
|
61
|
+
|
|
62
|
+
### Type Scale
|
|
63
|
+
| Token | Size | Line Height | Use For |
|
|
64
|
+
|---|---|---|---|
|
|
65
|
+
| text-xs | 0.75rem (12px) | 1.4 | [specific uses in this vertical] |
|
|
66
|
+
| text-sm | 0.875rem (14px) | 1.45 | [specific uses] |
|
|
67
|
+
| text-base | 1rem (16px) | 1.5 | [specific uses] |
|
|
68
|
+
| text-lg | 1.125rem (18px) | 1.45 | [specific uses] |
|
|
69
|
+
| text-xl | 1.25rem (20px) | 1.35 | [specific uses] |
|
|
70
|
+
| text-2xl | 1.5rem (24px) | 1.3 | [specific uses] |
|
|
71
|
+
| text-3xl | 1.875rem (30px) | 1.2 | [specific uses] |
|
|
72
|
+
|
|
73
|
+
### Typography Anti-Patterns
|
|
74
|
+
[3-5 specific font/typography choices to AVOID]
|
|
75
|
+
|
|
76
|
+
## Spacing & Density
|
|
77
|
+
|
|
78
|
+
### Recommended Density
|
|
79
|
+
[compact | comfortable | spacious] — [reasoning]
|
|
80
|
+
|
|
81
|
+
### Concrete Spacing Values
|
|
82
|
+
| Context | Value | Token |
|
|
83
|
+
|---|---|---|
|
|
84
|
+
| Card internal padding | [X]px | --space-[N] |
|
|
85
|
+
| List item height | [X]px | — |
|
|
86
|
+
| Section gap | [X]px | --space-[N] |
|
|
87
|
+
| Form field gap | [X]px | --space-[N] |
|
|
88
|
+
| Button padding | [X]px [Y]px | --space-[N] --space-[M] |
|
|
89
|
+
| Touch target minimum | [X]×[X]px | — |
|
|
90
|
+
|
|
91
|
+
## Component Specifications
|
|
92
|
+
|
|
93
|
+
### [Vertical-Specific Component 1]
|
|
94
|
+
```xml
|
|
95
|
+
<component name="[Name]" category="[category]">
|
|
96
|
+
<description>[What it is, when to use it]</description>
|
|
97
|
+
<structure>
|
|
98
|
+
[Describe the DOM structure: what elements, what order]
|
|
99
|
+
</structure>
|
|
100
|
+
<dimensions>
|
|
101
|
+
height: [X]px, padding: [token], gap: [token]
|
|
102
|
+
</dimensions>
|
|
103
|
+
<states>
|
|
104
|
+
default, hover, active, loading, empty, error
|
|
105
|
+
</states>
|
|
106
|
+
</component>
|
|
107
|
+
```
|
|
108
|
+
|
|
109
|
+
### [Vertical-Specific Component 2]
|
|
110
|
+
[Same format]
|
|
111
|
+
|
|
112
|
+
### [Vertical-Specific Component 3]
|
|
113
|
+
[Same format]
|
|
114
|
+
|
|
115
|
+
## Interaction Patterns
|
|
116
|
+
|
|
117
|
+
### Core Flows
|
|
118
|
+
[Describe the 3-5 most critical user flows with specific UX patterns for each]
|
|
119
|
+
|
|
120
|
+
### States
|
|
121
|
+
**Loading:** [How loading should look/feel in this vertical]
|
|
122
|
+
**Empty:** [How empty states should look/feel — tone, visual approach]
|
|
123
|
+
**Error:** [How errors should be communicated — tone, recovery pattern]
|
|
124
|
+
|
|
125
|
+
### Motion
|
|
126
|
+
**Appropriate:** [3-5 specific animations that work in this vertical with timing]
|
|
127
|
+
**Inappropriate:** [3-5 animations to AVOID with reasoning]
|
|
128
|
+
|
|
129
|
+
## Accessibility Specifics
|
|
130
|
+
[Requirements specific to this vertical's user base — beyond general WCAG]
|
|
131
|
+
|
|
132
|
+
## Border Radius
|
|
133
|
+
| Token | Value | Reasoning |
|
|
134
|
+
|---|---|---|
|
|
135
|
+
| radius-sm | [X]px | [why this value for this vertical] |
|
|
136
|
+
| radius-md | [X]px | |
|
|
137
|
+
| radius-lg | [X]px | |
|
|
138
|
+
|
|
139
|
+
## Shadow Style
|
|
140
|
+
| Token | Value | Usage |
|
|
141
|
+
|---|---|---|
|
|
142
|
+
| shadow-sm | [full CSS value] | [when to use] |
|
|
143
|
+
| shadow-md | [full CSS value] | |
|
|
144
|
+
| shadow-lg | [full CSS value] | |
|