soureeui 1.0.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.
@@ -0,0 +1,127 @@
1
+ # Packages and Component Decisions
2
+
3
+ The most common failure after bad visual design: reimplementing something the project already has, or installing something the project did not need.
4
+
5
+ ---
6
+
7
+ ## Decision ladder
8
+
9
+ ```
10
+ Existing project component? → reuse or extend it
11
+ ↓ no
12
+ Existing installed dependency? → adapt it
13
+ ↓ no
14
+ Simple enough for the platform? → native / CSS / framework capability
15
+ ↓ no
16
+ Mature package fits? → recommend, install only when justified
17
+ ↓ no
18
+ build a reusable custom component
19
+ ```
20
+
21
+ Walk it top to bottom every time. Stop at the first yes.
22
+
23
+ ---
24
+
25
+ ## Before recommending any package
26
+
27
+ - inspect the dependency manifest — is there already an equivalent?
28
+ - framework and version compatibility
29
+ - typing support when the project is typed
30
+ - accessibility support — a component library that fails keyboard support is a liability, not a shortcut
31
+ - maintenance signals: recent releases, open critical issues, active maintainers
32
+ - runtime and bundle cost relative to the value
33
+ - license compatibility
34
+ - how much customization the design direction requires — a heavily-themed library often costs more than building
35
+ - whether the feature is simple enough to not need it at all
36
+
37
+ Never install because a package is popular. Never add a second library in a category the project already covers.
38
+
39
+ ## Proportionality
40
+
41
+ | Need | Right answer |
42
+ |---|---|
43
+ | Hover transition, simple reveal | Native CSS |
44
+ | Modal, dropdown, tooltip, tabs | Existing primitives library if present; otherwise a headless primitives package — these are accessibility-hard |
45
+ | Sortable, filterable, paginated, virtualized table | Mature table library. Hand-rolling this is a multi-week trap |
46
+ | Form with validation | Project's existing form approach; a form library only past real complexity |
47
+ | One chart | Consider hand-built SVG or a light library |
48
+ | A charting surface across the product | A real charting library |
49
+ | Date picker | Library. Time zones, locales, and keyboard support are worse than they look |
50
+ | Complex gesture, scroll, or layout animation | Established animation library |
51
+ | Icon | The icon library (`imagery-and-icons.md`) |
52
+ | Toast, command palette, drag and drop, rich text | Library — each is deceptively deep |
53
+
54
+ ## Recommendation format
55
+
56
+ ```
57
+ Package: <name>
58
+ Use it for: <specific capability>
59
+ Why: <technical or design reason>
60
+ Why not custom: <maintenance / accessibility / edge-case cost>
61
+ Project fit: <how it sits with the existing stack>
62
+ Cost: <bundle / runtime / API surface>
63
+ ```
64
+
65
+ Present this before installing. If the project already covers the category, do not present it at all.
66
+
67
+ ---
68
+
69
+ ## Category reference
70
+
71
+ Examples, not prescriptions. Choose by detected stack and existing conventions.
72
+
73
+ | Category | Examples |
74
+ |---|---|
75
+ | UI primitives / headless | Radix UI, Headless UI, Ark, Base UI |
76
+ | Component libraries | shadcn/ui, MUI, Mantine, Chakra, Ant Design |
77
+ | Icons | Lucide, Heroicons, Phosphor, Tabler, Radix Icons |
78
+ | Animation | Motion, GSAP, AutoAnimate |
79
+ | Tables | TanStack Table |
80
+ | Forms / validation | React Hook Form, Zod, Valibot |
81
+ | Charts | Recharts, Nivo, ECharts, Chart.js, Visx |
82
+ | Carousel | Embla, Swiper |
83
+ | Drag and drop | dnd-kit |
84
+ | Command palette | cmdk |
85
+ | Notifications | Sonner, React Hot Toast |
86
+ | Rich text | Tiptap, Lexical, ProseMirror |
87
+ | Dates | date-fns, Day.js, Temporal polyfill, React Day Picker |
88
+
89
+ Non-React stacks have their own equivalents; find the project's ecosystem standard rather than porting a React answer.
90
+
91
+ ---
92
+
93
+ ## Component architecture
94
+
95
+ Create a component when it earns **reusability, maintainability, consistency, or readability**. Markup existing is not a reason.
96
+
97
+ Prefer one component with variants over a family of adjectives:
98
+
99
+ ```
100
+ Card variant="product" | "featured" | "compact"
101
+
102
+ not: ModernCard BeautifulCard PremiumCard FancyCard
103
+ ```
104
+
105
+ Organize by role, following whatever the project already does:
106
+
107
+ ```
108
+ ui/ primitives: button, input, dialog
109
+ layout/ shells, grids, containers
110
+ navigation/ nav, breadcrumbs, tabs
111
+ forms/ composed fields and form patterns
112
+ feedback/ toast, empty state, error state, skeleton
113
+ <domain>/ product-specific components
114
+ sections/ page composition blocks
115
+ ```
116
+
117
+ Avoid: a wrapper component that only adds a class, a component used once with ten props, an abstraction invented before the second use case exists.
118
+
119
+ ---
120
+
121
+ ## Reference-based design
122
+
123
+ When the user supplies a reference site, screenshot, or design: extract principles, do not clone.
124
+
125
+ Analyze composition, hierarchy, type system, spacing rhythm, color relationships, surface treatment, interaction patterns, information density. Then translate those principles into this product's content and constraints.
126
+
127
+ Never copy another brand's identity, assets, or copy.
@@ -0,0 +1,68 @@
1
+ # Product Brief
2
+
3
+ Design decisions come from product facts. Collect them cheaply, infer what is inferable, ask only what changes the work.
4
+
5
+ ---
6
+
7
+ ## What to establish
8
+
9
+ | Question | Why it changes the design |
10
+ |---|---|
11
+ | What is the product? | Determines vocabulary, density, imagery, tone |
12
+ | Who uses it? | A trader, a nurse, and a teenager need different densities and affordances |
13
+ | What problem does it solve? | Sets what the first screen must communicate |
14
+ | What is the primary user goal? | Sets the focal point |
15
+ | What is the single most important action? | Sets the primary CTA and its placement |
16
+ | What information matters most? | Sets hierarchy |
17
+ | What is the expected journey? | Sets navigation and section order |
18
+ | What is the brand personality? | Sets typography, color, motion character |
19
+ | What sector? | Consumer, enterprise, developer, fintech, health, education, commerce, gov — each carries conventions users rely on |
20
+ | What devices? | Mobile-first field use and desktop analyst use are different products |
21
+ | Existing brand guidelines or assets? | Constraints beat invention |
22
+
23
+ ---
24
+
25
+ ## Infer, do not ask, when
26
+
27
+ - the repository already answers it (existing screens, copy, tokens, logo, meta tags)
28
+ - the request names the product type and the convention is strong ("an invoice app" implies dense tables, not hero imagery)
29
+ - the answer would not change any decision being made now
30
+
31
+ State the inference in one line and continue: *"Assuming a B2B ops audience on desktop, so density over decoration."*
32
+
33
+ ---
34
+
35
+ ## Ask when
36
+
37
+ - two reasonable readings lead to materially different interfaces
38
+ - brand constraints may exist and getting them wrong wastes the work
39
+ - the primary action is genuinely ambiguous
40
+
41
+ Keep it to a small number of targeted questions. Batch them into one message. Never run a questionnaire to look thorough.
42
+
43
+ Good question shape — concrete, answerable, consequential:
44
+
45
+ ```
46
+ Two things before I build:
47
+
48
+ 1. Primary action on this screen — start a trial, or book a demo?
49
+ 2. Existing brand colors and fonts, or do I choose?
50
+ ```
51
+
52
+ Bad question shape: "What vibe are you going for?" · "Do you want it to be modern?" · asking for anything the repo already contains.
53
+
54
+ ---
55
+
56
+ ## Sector conventions worth respecting
57
+
58
+ | Sector | Users expect |
59
+ |---|---|
60
+ | Enterprise / internal tools | Density, keyboard paths, predictable layout, table-first, no marketing gloss |
61
+ | Developer tools | Monospace where it means something, code samples, dark mode parity, terse copy |
62
+ | Fintech / banking | Numeric clarity, tabular figures, conservative color, unmistakable state, audit trails |
63
+ | Healthcare | Legibility, error prevention, plain language, high contrast, no ambiguity |
64
+ | Education | Progressive disclosure, clear progress, forgiving interaction |
65
+ | Commerce | Product imagery leads, price and availability unmistakable, fast path to cart |
66
+ | Consumer social | Speed, gesture, avatar and media density, thumb reach |
67
+
68
+ Break a convention only deliberately, and say why.
@@ -0,0 +1,145 @@
1
+ # Responsive
2
+
3
+ Shrinking a desktop layout is not responsive design. Each breakpoint is a deliberate composition of the same content.
4
+
5
+ ---
6
+
7
+ ## Per-section worksheet
8
+
9
+ Run this for every major section before building it. Write the answers down; they are design decisions, not implementation details.
10
+
11
+ ```
12
+ What stacks? multi-column → single column, and in what source order
13
+ What reorders? the visually-secondary column is often first on mobile
14
+ What collapses? nav → drawer, filters → sheet, table → cards, sidebar → tabs
15
+ What scrolls sideways? tables, chip rows, carousels — with a visible affordance
16
+ What disappears? genuinely secondary content only; never a core action
17
+ What changes interaction? hover reveals need a tap or persistent equivalent
18
+ What grows? touch targets to ~44px, spacing between adjacent targets
19
+ What shrinks? display type scales down faster than body type
20
+ What re-crops? images whose subject would be cut out of the frame
21
+ ```
22
+
23
+ A section that answers "nothing changes" at every breakpoint is either very simple or unexamined.
24
+
25
+ ---
26
+
27
+ ## Breakpoint strategy
28
+
29
+ Design the **content's** breakpoints. Break where the layout stops working — where the measure gets too long, where columns get too narrow, where a table stops fitting. Not at device widths, which change every year.
30
+
31
+ - follow the project's existing breakpoints. Consistency beats a better set
32
+ - three to four named by intent, not by device, when starting fresh
33
+ - **container queries over viewport queries** for components. A card in a sidebar and the same card in a main column need different layouts at the same viewport width. Query the container it sits in
34
+ - fewer breakpoints held rigorously beats many applied loosely
35
+ - mobile-first source order in most stacks: base styles are the small layout, each query adds
36
+
37
+ ## Fluid vs stepped
38
+
39
+ | Property | Approach |
40
+ |---|---|
41
+ | Type scale | Fluid between a min and max, clamped at both ends. Never unbounded |
42
+ | Spacing / section rhythm | Fluid or stepped, but tied to the scale; never arbitrary per breakpoint |
43
+ | Layout structure | Stepped. Columns change at a decision point, not continuously |
44
+ | Container width | Fluid with a max, plus a side gutter that never collapses to zero |
45
+
46
+ Fluid type without a maximum produces absurd headlines on wide monitors. Fluid type without a minimum makes body text unreadable on small screens. Clamp both.
47
+
48
+ ---
49
+
50
+ ## Layout patterns
51
+
52
+ | Pattern | What it does | Use when |
53
+ |---|---|---|
54
+ | **Stack** | Columns become rows in source order | Equal-weight content |
55
+ | **Reflow** | Grid changes column count at each step | Card and tile collections |
56
+ | **Reorder** | Source order differs from visual order at one size | A sidebar that must lead on mobile |
57
+ | **Priority+** | Show what fits, move the rest into a "more" affordance | Toolbars, tab bars, nav |
58
+ | **Off-canvas** | Secondary region slides in on demand | Navigation, filters, detail panels |
59
+ | **Reveal** | Content hidden behind disclosure on small, visible on large | Dense metadata |
60
+ | **Summary + detail** | List on small, list-plus-detail on large | Inbox, records, settings |
61
+ | **Swap** | A genuinely different component per size | Table vs card list, menu vs drawer |
62
+
63
+ Reordering visual position away from DOM order breaks the keyboard path. Reorder in the source where possible, and verify tab order afterward either way.
64
+
65
+ ---
66
+
67
+ ## Component-by-component
68
+
69
+ ### Navigation
70
+ Horizontal bar → priority+ → drawer or bottom bar. Decide which, do not default to a hamburger. Keep the primary action visible outside the drawer. On mobile, a bottom bar reaches the thumb better than a top bar for frequent actions. Sticky headers cost vertical space and must earn it.
71
+
72
+ ### Tables
73
+ Never a squashed table. Pick one:
74
+ - horizontal scroll with the key column frozen and a visible scroll affordance
75
+ - card-per-row on small screens, with the two or three fields that matter
76
+ - summary column plus a detail view or sheet
77
+ - column priority: hide low-value columns below a threshold, with a way to reveal
78
+
79
+ Pair with: sticky header row, right-aligned numeric columns, tabular figures.
80
+
81
+ ### Forms
82
+ One column on every size. Labels above fields. Group related fields. Correct input type and autocomplete per field so the right keyboard appears. Keep the submit action reachable when the on-screen keyboard is open. Inline validation that does not shift layout when a message appears.
83
+
84
+ ### Modals and overlays
85
+ Dialog on desktop, full-screen or bottom sheet on small screens. Sheets need a drag or close affordance and must not trap scroll behind them.
86
+
87
+ ### Cards and grids
88
+ Define the minimum readable card width and let the grid choose the column count from it, rather than hardcoding counts per breakpoint.
89
+
90
+ ### Images and media
91
+ Art-direct the crop when the subject would be lost. Serve appropriate sizes. Always reserve the aspect ratio so nothing shifts on load. Video needs a poster and must not autoplay with sound.
92
+
93
+ ### Long-form text
94
+ Constrain the measure to roughly 60 to 75 characters at every width. A full-width paragraph on a wide monitor is a responsive failure even though nothing overflows.
95
+
96
+ ---
97
+
98
+ ## Touch, pointer, and input
99
+
100
+ - hover does not exist on touch. Anything revealed only on hover must have a tap equivalent or be persistent
101
+ - query input capability rather than assuming from width: coarse pointer means bigger targets and no hover reliance
102
+ - a device can have both. A laptop with a touchscreen must satisfy both paths
103
+ - drag interactions need a keyboard and a non-drag alternative
104
+ - avoid gestures as the only way to reach anything
105
+ - respect safe areas on notched devices; keep interactive content out of the home-indicator strip
106
+ - account for the on-screen keyboard: inputs must not end up hidden behind it
107
+
108
+ ---
109
+
110
+ ## Density
111
+
112
+ Responsive is not only about width. The same product may need a comfortable density for occasional users and a compact density for people in it all day. If the product has a density switch, it is a token-level decision made at the same time as spacing, not a late retrofit.
113
+
114
+ ---
115
+
116
+ ## Verification
117
+
118
+ | Width | Check |
119
+ |---|---|
120
+ | 320–360px | No overflow, no clipped text, targets reachable |
121
+ | ~480px | Stack decisions read correctly |
122
+ | ~768px | The awkward middle — most layouts break here |
123
+ | ~1024px | Tablet landscape, sidebar decisions |
124
+ | ~1440px+ | Measure is constrained, content is not stranded |
125
+
126
+ Also verify: 200% browser zoom, 400% zoom for reflow compliance, landscape on a short viewport, a long-string worst case, and the largest realistic dataset.
127
+
128
+ **No horizontal page scroll at any width, ever.** An overflowing element inside its own scroll container is fine; the page body scrolling sideways is a bug.
129
+
130
+ ---
131
+
132
+ ## Common failures
133
+
134
+ | Symptom | Cause |
135
+ |---|---|
136
+ | Sideways page scroll on mobile | A fixed width, a negative margin, or an unconstrained image or table |
137
+ | Text touching the screen edge | Gutter applied to an inner element instead of the container |
138
+ | Tiny tap targets crowded together | Desktop spacing carried down unchanged |
139
+ | Content hidden on mobile that users need | "Simplification" that removed a core action |
140
+ | Mobile nav that hides the primary CTA | Everything swept into the drawer |
141
+ | Layout shift as images load | Aspect ratio not reserved |
142
+ | Unreadable line lengths on wide screens | No max width on text containers |
143
+ | Keyboard covering the field being typed in | No scroll-into-view handling |
144
+
145
+ Mobile should feel designed for mobile, not tolerated.
@@ -0,0 +1,98 @@
1
+ # Review and Definition of Done
2
+
3
+ Building is not finishing. Run this before reporting completion.
4
+
5
+ ---
6
+
7
+ ## Visual and UX review
8
+
9
+ Look at the rendered result, at real widths, with real content.
10
+
11
+ ### Hierarchy
12
+ - Is the most important content visible immediately, without scrolling?
13
+ - Is the primary action obvious within seconds?
14
+ - Does the screen have one clear focal point, not four competing ones?
15
+ - Does the visual weight of each element match its actual importance?
16
+
17
+ ### Layout
18
+ - Is everything aligned to the grid or to a deliberate exception?
19
+ - Is spacing consistent and from the scale?
20
+ - Is the composition balanced, and does it have a reading axis?
21
+ - Do related items group and unrelated items separate?
22
+
23
+ ### Typography
24
+ - Are headings legible and clearly ranked?
25
+ - Is body text comfortable — size, line height, measure?
26
+ - Is the hierarchy readable from a squint, with no text in focus?
27
+ - Do long strings, long words, and translated text survive?
28
+
29
+ ### Color and surfaces
30
+ - Are color roles used for their meaning?
31
+ - Does contrast pass on text, icons, and focus rings?
32
+ - Does dark mode hold, if the product has one?
33
+
34
+ ### Components
35
+ - Is each component consistent with its siblings?
36
+ - Are all states implemented: hover, focus-visible, active, disabled, loading, empty, error, success?
37
+ - Does the empty state teach, and does the error state say what to do?
38
+
39
+ ### Responsive
40
+ - Does mobile look designed, not compressed?
41
+ - Any horizontal overflow at any width?
42
+ - Are touch targets large enough and well separated?
43
+ - Do tables, modals, and navigation have real mobile treatments?
44
+ - Does it hold at 200% zoom?
45
+
46
+ ### Interaction
47
+ - Does every action give immediate feedback?
48
+ - Are destructive actions confirmed with consequence stated?
49
+ - Is motion purposeful, and does reduced motion work?
50
+ - Is there a loading treatment for anything that waits?
51
+
52
+ ### UX
53
+ - Can a first-time user tell what to do?
54
+ - Is navigation predictable and is there always a way back?
55
+ - Are errors preventable, and recoverable when they happen?
56
+ - Is cognitive load reasonable — is anything asking for more than it needs?
57
+
58
+ ### Visual identity
59
+ - Does this feel specific to this product?
60
+ - Does it pass the human-design test in `anti-ai-patterns.md`?
61
+ - Are there at least two decisions no competitor would share?
62
+ - Would a stranger recognize the product from a screenshot?
63
+
64
+ ### Engineering
65
+ - Tokens used, no magic values?
66
+ - Existing components reused, no duplicate abstraction added?
67
+ - No unrelated refactoring, existing behavior preserved?
68
+ - Dead code, unused styles, and unused dependencies removed?
69
+
70
+ ---
71
+
72
+ ## Definition of done
73
+
74
+ Not done because it builds. Not done because it renders. Not done because the components work.
75
+
76
+ Done when **all** hold:
77
+
78
+ ```
79
+ [ ] UX is clear — primary action and next step are obvious
80
+ [ ] Visual hierarchy is strong
81
+ [ ] Design direction is applied consistently across every screen touched
82
+ [ ] Components are coherent and states are implemented
83
+ [ ] Responsive behavior is designed at every breakpoint
84
+ [ ] Accessibility is verified, not assumed
85
+ [ ] Interaction states exist: hover, focus, active, disabled, loading, empty, error, success
86
+ [ ] Imagery is intentional, with placeholders and prompts where assets are missing
87
+ [ ] Icons come from one library, used semantically
88
+ [ ] Copy is real and product-specific
89
+ [ ] Tokens are used throughout
90
+ [ ] The interface does not look AI-generated
91
+ [ ] The review above was run and its findings addressed
92
+ ```
93
+
94
+ ---
95
+
96
+ ## Reporting
97
+
98
+ State what was built, what the review found, and what was left undone and why. If something was skipped — a state not implemented, a breakpoint not verified, an asset still a placeholder — say so plainly. Silence on a gap reads as completion.
@@ -0,0 +1,107 @@
1
+ # Workflow
2
+
3
+ The full loop, with the gate that must pass before each step ends.
4
+
5
+ ```
6
+ Inspect → Understand → Direct → Plan → Systemize → Implement → Review → Refine
7
+ ```
8
+
9
+ ---
10
+
11
+ ## 1. Inspect
12
+
13
+ Read the project before recommending anything. Determine:
14
+
15
+ - framework / runtime / language / package manager
16
+ - styling system (CSS, CSS modules, utility framework, CSS-in-JS, preprocessor, native platform styles)
17
+ - existing design tokens or theme file
18
+ - existing component library and existing in-project components
19
+ - icon library
20
+ - animation library
21
+ - form, table, chart, editor libraries
22
+ - routing and layout structure
23
+ - naming, file, and folder conventions
24
+ - accessibility and responsive conventions already in use
25
+ - dependency manifest and relevant config files
26
+
27
+ Cheap ways to find these: the dependency manifest, the theme/token file, one representative screen, one representative component, the global stylesheet.
28
+
29
+ **Gate:** can name the stack, the styling system, and at least three components worth reusing — or has confirmed the project is empty.
30
+
31
+ Never force a recommendation from a framework the project does not use. If the project already has a design system, extend it; do not replace it.
32
+
33
+ ---
34
+
35
+ ## 2. Understand
36
+
37
+ See `product-brief.md`. Establish, by inference or by asking:
38
+
39
+ product · audience · problem solved · primary user goal · primary action · most important information · expected journey · brand personality · sector · primary devices · existing brand assets or guidelines
40
+
41
+ **Gate:** can state the primary user goal and the single most important action on the screen in one sentence each.
42
+
43
+ ---
44
+
45
+ ## 3. Direct
46
+
47
+ See `design-directions.md`. Select a visual direction from product, audience, brand, content, UX needs, sector, and existing identity — never at random and never by trend popularity.
48
+
49
+ Target: **one primary visual language plus at most one supporting technique.**
50
+
51
+ If the requirements do not specify a style and more than one direction would genuinely work, present 2–3 named directions in three lines each and ask which to use. If the correct direction is obvious, state it and move on — do not manufacture a choice.
52
+
53
+ **Gate:** the direction is named, and there is a product-specific reason for it.
54
+
55
+ ---
56
+
57
+ ## 4. Plan
58
+
59
+ Write the design plan before implementation code. Template: `../templates/design-plan.md`. Covers direction, color, typography, layout, components, imagery, interaction states, accessibility.
60
+
61
+ **Gate:** every color role, type level, and spacing step used later exists in the plan.
62
+
63
+ ---
64
+
65
+ ## 5. Systemize
66
+
67
+ See `design-system.md`. Define or extend tokens before building many components. A system defined after ten components is a refactor, not a system.
68
+
69
+ **Gate:** tokens exist for color, type scale, spacing, radius, elevation, motion, breakpoints, icon sizes.
70
+
71
+ ---
72
+
73
+ ## 6. Implement
74
+
75
+ - build the smallest coherent change that fully delivers the request
76
+ - follow the project's existing conventions over personal preference
77
+ - component abstraction only where it earns reuse, maintainability, consistency, or readability
78
+ - handle interaction states as they are built, not afterwards: hover, focus-visible, active, disabled, loading, empty, error, success
79
+ - no unrelated refactoring
80
+ - preserve existing behavior
81
+
82
+ ---
83
+
84
+ ## 7. Review
85
+
86
+ See `review-and-done.md`. Look at the result, not just the code. Hierarchy, layout, typography, component consistency, responsive behavior, UX clarity, visual identity.
87
+
88
+ **Gate:** the checklist has been run and findings are written down.
89
+
90
+ ---
91
+
92
+ ## 8. Refine
93
+
94
+ Fix what the review found. Remove anything that survived only because it was already there: dead styles, unused effects, leftover dependencies, decoration without purpose.
95
+
96
+ ---
97
+
98
+ ## Scaling the process
99
+
100
+ | Request | Process |
101
+ |---|---|
102
+ | Change a label, fix spacing on one element, swap an icon | Inspect, implement |
103
+ | Add a component to an existing system | Inspect, implement to existing tokens, review |
104
+ | New screen in an existing product | Full loop, plan can be short, direction inherited |
105
+ | New product, redesign, "make it modern" | Full loop, explicit direction and plan |
106
+
107
+ Ceremony on a small task is its own failure mode. So is skipping direction on a large one.
@@ -0,0 +1,124 @@
1
+ # Design Plan Template
2
+
3
+ Write this before implementation code on any non-trivial UI task. Keep it tight — a page, not a document. Delete rows that do not apply to the task.
4
+
5
+ ---
6
+
7
+ ## Product
8
+
9
+ - **Product:** what it is, in one line
10
+ - **Audience:** who uses it and in what context
11
+ - **Primary user goal:**
12
+ - **Primary action:** the one thing this screen must get people to do
13
+ - **Most important information:**
14
+ - **Devices:** where it is actually used
15
+ - **Brand constraints:** existing identity, assets, guidelines — or "none, choosing"
16
+
17
+ ## Direction
18
+
19
+ - **Primary visual language:**
20
+ - **Supporting technique (at most one):**
21
+ - **Why this fits:** two concrete product reasons
22
+ - **Deliberately avoiding:** patterns that would weaken this specific design
23
+ - **Originality anchors:** at least two decisions no competitor would share
24
+
25
+ ## Color
26
+
27
+ | Role | Value | Notes |
28
+ |---|---|---|
29
+ | background | | |
30
+ | surface | | |
31
+ | surface-elevated | | |
32
+ | text | | contrast vs background |
33
+ | text-muted | | contrast vs background |
34
+ | border | | |
35
+ | primary | | |
36
+ | primary-contrast | | |
37
+ | secondary / accent | | |
38
+ | success | | |
39
+ | warning | | |
40
+ | error | | |
41
+ | info | | |
42
+
43
+ Dark mode: yes / no. If yes, roles defined for both modes now.
44
+
45
+ ## Typography
46
+
47
+ - **Display family:**
48
+ - **Body family:**
49
+ - **Mono family (if needed):**
50
+ - **Weights in use:**
51
+ - **Scale:** display / h1 / h2 / h3 / body-lg / body / body-sm / caption — with sizes, line heights, tracking
52
+ - **Measure:** target characters per line for body text
53
+
54
+ ## Layout
55
+
56
+ - **Container width / max content width:**
57
+ - **Grid:** columns, gutters
58
+ - **Spacing scale:**
59
+ - **Section rhythm:** vertical space between major sections
60
+ - **Desktop composition:**
61
+ - **Tablet composition:**
62
+ - **Mobile composition:** what stacks, reorders, collapses, scrolls, grows
63
+
64
+ ### Responsive per section
65
+
66
+ | Section | Stacks | Reorders | Collapses to | Scrolls sideways | Hidden | Target size change |
67
+ |---|---|---|---|---|---|---|
68
+ | | | | | | | |
69
+
70
+ - **Navigation on small screens:** drawer / bottom bar / priority+ — and where the primary action stays visible
71
+ - **Tables on small screens:** scroll with frozen column / cards / summary plus detail
72
+ - **Container queries needed for:** components that appear in more than one container width
73
+
74
+ ## Components
75
+
76
+ | Component | Reused / extended / new | Variants | States needed |
77
+ |---|---|---|---|
78
+ | | | | |
79
+
80
+ New dependencies, with justification (see `../references/packages.md`): none / list
81
+
82
+ ## Imagery
83
+
84
+ | Slot | Purpose | Aspect ratio | Negative space | Asset status |
85
+ |---|---|---|---|---|
86
+ | | | | | real / placeholder + prompt |
87
+
88
+ ## Icons
89
+
90
+ - **Library:** existing project library, or chosen one
91
+ - **Sizes:**
92
+ - **Where icons appear, and what they mean:**
93
+
94
+ ## Interaction
95
+
96
+ - **Hover:**
97
+ - **Focus-visible:** (never animated in)
98
+ - **Active / pressed:**
99
+ - **Loading:** inline / skeleton / determinate progress, per expected wait
100
+ - **Empty:**
101
+ - **Error:**
102
+ - **Success:**
103
+
104
+ ### Motion
105
+
106
+ | Moment | Job (feedback / continuity / hierarchy / progress / attention) | Duration | Easing | Origin |
107
+ |---|---|---|---|---|
108
+ | | | | | |
109
+
110
+ - **Anything that animates without user action:** (justify or cut)
111
+ - **Reduced-motion alternative for each row above:**
112
+
113
+ ## Accessibility
114
+
115
+ - **Contrast verified on:** text, muted text, icons, focus rings
116
+ - **Keyboard path for the primary task:**
117
+ - **Heading structure:**
118
+ - **Labels and announcements:**
119
+ - **Touch targets:**
120
+ - **Reduced motion behavior:**
121
+
122
+ ## Copy
123
+
124
+ Real, product-specific strings for headings, primary actions, empty states, and errors. Mark anything invented as invented.