@equal-experts/kuat-vue 0.15.0-beta.2 → 0.15.2
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/agent-docs/AGENTS.md +1 -1
- package/agent-docs/README.md +1 -1
- package/agent-docs/external/kuat-agent-rules/reference/design-language/borders.md +49 -36
- package/agent-docs/external/kuat-agent-rules/reference/media-types/web-marketing/emails.md +97 -34
- package/agent-docs/external/kuat-agent-rules/reference/media-types/web-product/design.md +174 -3
- package/agent-docs/external/kuat-agent-rules/reference/media-types/web-product/emails.md +98 -32
- package/agent-docs/external/kuat-agent-rules/reference/media-types/web-product/figma-build-checklist.md +13 -0
- package/agent-docs/external/kuat-agent-rules/reference/media-types/web-product/patterns/README.md +4 -0
- package/agent-docs/external/kuat-agent-rules/reference/media-types/web-product/patterns/browse-and-filter.md +226 -0
- package/agent-docs/external/kuat-agent-rules/reference/media-types/web-product/patterns/complete-a-form.md +1 -1
- package/agent-docs/external/kuat-agent-rules/reference/media-types/web-product/patterns/dashboard.md +14 -53
- package/agent-docs/external/kuat-agent-rules/reference/media-types/web-product/patterns/detail-page.md +196 -0
- package/agent-docs/external/kuat-agent-rules/reference/media-types/web-product/patterns/give-feedback-on-an-action.md +184 -0
- package/agent-docs/external/kuat-agent-rules/reference/media-types/web-product/patterns/section-hub.md +174 -0
- package/agent-docs/external/kuat-agent-rules/reference/media-types/web-product/patterns/sign-in.md +1 -1
- package/agent-docs/manifest.json +3 -3
- package/agent-docs/rules/LOADING-consumer.md +1 -1
- package/dist/{AlertDialogTrigger.vue_vue_type_script_setup_true_lang-DosgAcSM.js → AlertDialogTrigger.vue_vue_type_script_setup_true_lang-Ccs_lGKx.js} +1 -1
- package/dist/alert-dialog.js +1 -1
- package/dist/index.js +1 -1
- package/dist/style.css +1 -1
- package/package.json +1 -1
package/agent-docs/AGENTS.md
CHANGED
|
@@ -7,4 +7,4 @@ Rules for this install live under `agent-docs/` in `@equal-experts/kuat-core`, `
|
|
|
7
7
|
3. Load component guides via `agent-docs/components/components.manifest.json`.
|
|
8
8
|
4. Skills: `kuat-review`, `kuat-create` from [kuat-agent-docs](https://github.com/equalexperts/kuat-agent-docs).
|
|
9
9
|
|
|
10
|
-
**Version:** 0.15.
|
|
10
|
+
**Version:** 0.15.2 · **Rules snapshot:** 2048d9c4b195
|
package/agent-docs/README.md
CHANGED
|
@@ -68,43 +68,56 @@ Use brand-appropriate colors:
|
|
|
68
68
|
|
|
69
69
|
## Border Radius
|
|
70
70
|
|
|
71
|
-
The design system uses a **minimal radius approach
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
**Interactive elements**
|
|
86
|
-
|
|
87
|
-
-
|
|
88
|
-
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
-
|
|
97
|
-
-
|
|
98
|
-
-
|
|
99
|
-
-
|
|
71
|
+
The design system uses a **minimal radius approach**, expressed as tokens rather than raw pixel
|
|
72
|
+
values. Tokens live in `@equal-experts/kuat-core` (`variables.css`) as `--radius-none`,
|
|
73
|
+
`--radius-xs`, `--radius-sm`, `--radius-md`, `--radius-lg`, `--radius-xl`, all derived from a
|
|
74
|
+
single base `--radius` (currently `0.5rem`). **Never hard-code a radius pixel value** — reference
|
|
75
|
+
the token, or the matching Tailwind utility (`rounded-none`, `rounded-xs`, `rounded-sm`,
|
|
76
|
+
`rounded-md`, `rounded-lg`, `rounded-xl`, `rounded-full`).
|
|
77
|
+
|
|
78
|
+
### Scale
|
|
79
|
+
|
|
80
|
+
| Token | Utility | Value | Use for |
|
|
81
|
+
|-------|---------|-------|---------|
|
|
82
|
+
| `--radius-none` | `rounded-none` | 0px | **Default.** Static containers, sections, dividers, content blocks, and floating overlays — dialogs, dropdown/select menus, popovers, toasts. Overlays float above the page but are not themselves interactive, so they take the same flat corner as static content. |
|
|
83
|
+
| `--radius-xs` | `rounded-xs` | 2px | Rare, fine-detail use only — not a general-purpose size |
|
|
84
|
+
| `--radius-sm` | `rounded-sm` | 4px | **Form inputs** — text inputs, textareas, selects, checkboxes, toggles — and card-style option-field wrappers (radio/checkbox/switch "card" appearance) |
|
|
85
|
+
| `--radius-md` | `rounded-md` | 6px | **Interactive elements** — buttons, clickable cards, interactive tiles, tabs, menu items (including items inside an overlay, e.g. a dropdown row — the item is interactive even though its container isn't) |
|
|
86
|
+
| `--radius-lg` | `rounded-lg` | 8px | Reserved — not currently assigned to any component. Available for a future "larger container" category if one is introduced; don't reach for it by default. |
|
|
87
|
+
| `--radius-xl` | `rounded-xl` | 12px | Larger surfaces — bigger modals, feature cards |
|
|
88
|
+
| n/a | `rounded-full` | pill / circle | **Rounded elements** — avatars, pill-shaped tags/badges, status dots, spinners |
|
|
89
|
+
|
|
90
|
+
### Category rules
|
|
91
|
+
|
|
92
|
+
- **Static content and floating overlays → `--radius-none`.** Cards, sections, dividers, dialogs,
|
|
93
|
+
dropdown/select menus, popovers, and toasts are all flat. A floating overlay is still "static" in
|
|
94
|
+
this sense — it isn't itself the interactive control, it's the surface a control sits on.
|
|
95
|
+
- **Interactive elements → `--radius-md` (6px).** Buttons, clickable cards, tabs, menu items —
|
|
96
|
+
including menu items inside an otherwise-flat overlay.
|
|
97
|
+
- **Form inputs → `--radius-sm` (4px).** Text inputs, textareas, selects, checkboxes, toggles, and
|
|
98
|
+
the card-style appearance of radio/checkbox/switch field wrappers.
|
|
99
|
+
- **Pills / circular elements → `rounded-full`.** Use `rounded-full` (`calc(infinity * 1px)`)
|
|
100
|
+
rather than approximating a pill with a large fixed radius, so it always resolves to a true
|
|
101
|
+
circle/stadium shape regardless of element size. Use for avatars, the rounded variant of
|
|
102
|
+
tags/badges, and status/counter dots.
|
|
103
|
+
|
|
104
|
+
### Known trap: keep the scale monotonic
|
|
105
|
+
|
|
106
|
+
`--radius-sm/md/lg/xl` are `calc()`'d off the single `--radius` base. If that base is ever changed,
|
|
107
|
+
confirm the derived values still ascend (xs < sm < md < lg < xl) before shipping. A base below
|
|
108
|
+
roughly 6px breaks this — for example `--radius: 0.3rem` previously made `--radius-sm` compute to
|
|
109
|
+
under 1px, smaller than `--radius-xs`, which silently produced near-square corners on several
|
|
110
|
+
components (checkboxes, textareas, menus) despite their code claiming a 4px radius. If you hit this,
|
|
111
|
+
fix the base token — don't route around it with a hard-coded pixel value in a component.
|
|
100
112
|
|
|
101
113
|
### Summary
|
|
102
114
|
|
|
103
|
-
| Element Type | Border Radius |
|
|
104
|
-
|
|
105
|
-
| Static content | 0px |
|
|
106
|
-
| Interactive elements | 6px |
|
|
107
|
-
| Form inputs | 4px |
|
|
115
|
+
| Element Type | Token | Border Radius |
|
|
116
|
+
|--------------|-------|---------------|
|
|
117
|
+
| Static content & floating overlays | `--radius-none` | 0px |
|
|
118
|
+
| Interactive elements | `--radius-md` | 6px |
|
|
119
|
+
| Form inputs & card-style option fields | `--radius-sm` | 4px |
|
|
120
|
+
| Rounded/pill elements | `rounded-full` | pill / circle |
|
|
108
121
|
|
|
109
122
|
---
|
|
110
123
|
|
|
@@ -130,7 +143,7 @@ Borders must meet WCAG 2.1 Level AA for graphical objects:
|
|
|
130
143
|
|
|
131
144
|
1. **Use borders purposefully** - Only when spacing is insufficient
|
|
132
145
|
2. **Follow width guidelines** - 1px default, 2px emphasized, 3-4px focus
|
|
133
|
-
3. **Apply radius
|
|
146
|
+
3. **Apply radius by category** - `--radius-none` static content & overlays, `--radius-md` interactive, `--radius-sm` inputs & card-style fields, `rounded-full` pills/avatars
|
|
134
147
|
4. **Ensure accessibility** - 3:1 minimum contrast ratio
|
|
135
148
|
5. **Be consistent** - Same border treatment for same element types
|
|
136
149
|
|
|
@@ -138,7 +151,7 @@ Borders must meet WCAG 2.1 Level AA for graphical objects:
|
|
|
138
151
|
|
|
139
152
|
1. **Don't overuse borders** - Spacing should be the first option
|
|
140
153
|
2. **Don't use non-solid borders** - No dashed or dotted
|
|
141
|
-
3. **Don't
|
|
154
|
+
3. **Don't hard-code radius pixel values** - Use the `--radius-*` tokens/utilities, not literal `px` values, even to match an existing size
|
|
142
155
|
4. **Don't break accessibility** - Always verify contrast
|
|
143
156
|
5. **Don't use decorative borders** - Keep them functional
|
|
144
157
|
|
|
@@ -6,63 +6,126 @@ Guidelines for Equal Experts marketing emails and campaigns.
|
|
|
6
6
|
|
|
7
7
|
## Overview
|
|
8
8
|
|
|
9
|
-
Marketing emails are external communications designed to
|
|
9
|
+
Marketing emails are external, opted-in communications designed to inform, engage, and convert prospects and customers — newsletters, announcements, invitations, and nurture content. Unlike product emails, the reader hasn't triggered this specific message, so it has to earn its place in the inbox on relevance and value alone.
|
|
10
10
|
|
|
11
11
|
---
|
|
12
12
|
|
|
13
13
|
## Key Principles
|
|
14
14
|
|
|
15
|
-
1. **
|
|
16
|
-
2. **
|
|
17
|
-
3. **
|
|
18
|
-
4. **
|
|
15
|
+
1. **Permission-based** — send only to people who opted in, and honour unsubscribes immediately.
|
|
16
|
+
2. **Value-first** — the reader gets something (an insight, an offer, useful information) before being asked for anything.
|
|
17
|
+
3. **One clear goal** — a single primary CTA per email; competing asks dilute all of them.
|
|
18
|
+
4. **Relevant and personal** — segment and personalise. Research consistently shows irrelevant content is what makes recipients call an email "spam", regardless of consent status.
|
|
19
|
+
5. **Scannable** — mobile-first, chunked content, clear visual hierarchy; most opens happen on a phone.
|
|
20
|
+
6. **Brand-consistent** — recognisable as Equal Experts in look, tone, and voice.
|
|
19
21
|
|
|
20
22
|
---
|
|
21
23
|
|
|
22
24
|
## Email Types
|
|
23
25
|
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
26
|
+
| Type | Description |
|
|
27
|
+
|------|-------------|
|
|
28
|
+
| Newsletter | Regular round-up of updates, insights, and content |
|
|
29
|
+
| Product announcement | New feature or release news |
|
|
30
|
+
| Event invitation | Webinars, conferences, meetups |
|
|
31
|
+
| Nurture sequence | Educational content delivered over a series |
|
|
32
|
+
| Promotional / campaign | Time-bound offer or call to act |
|
|
33
|
+
|
|
34
|
+
Transactional messages (confirmations, receipts) follow [product email rules](../web-product/emails.md) even when sent to an external customer.
|
|
29
35
|
|
|
30
36
|
---
|
|
31
37
|
|
|
32
|
-
##
|
|
38
|
+
## Design Guidelines
|
|
39
|
+
|
|
40
|
+
### Layout
|
|
41
|
+
|
|
42
|
+
- Single column, mobile-first, roughly 600–640px wide. Multi-column layouts now read as cluttered even on desktop — keep it simple.
|
|
43
|
+
- Lead with a strong headline or high-quality image, then a clear content hierarchy: headline → subheading → chunked body → CTA.
|
|
44
|
+
- One primary CTA per email. More choices measurably reduce the chance any one of them gets clicked. Long-form newsletters are the one common exception, where a few clearly secondary links are acceptable.
|
|
45
|
+
|
|
46
|
+
### Colour and imagery
|
|
47
|
+
|
|
48
|
+
- Use the light, marketing-layout treatment (see [website](./website.md)) rather than the dark product navigation.
|
|
49
|
+
- Apply brand [colours](../../design-language/colours.md) by role; reserve the extended/data palette for genuine data content, never for decoration.
|
|
50
|
+
- Prefer full-width, high-quality imagery over small thumbnails or dense multi-image grids — large, clear images test better than cluttered ones.
|
|
51
|
+
- Compress images, keep total email weight reasonable, and always pair images with alt text (many clients block images by default).
|
|
52
|
+
|
|
53
|
+
### Typography
|
|
54
|
+
|
|
55
|
+
- Brand typeface with a web-safe fallback stack. Use size and weight to establish hierarchy — see [typography](../../design-language/typography.md) and [formatting](../../content/formatting.md).
|
|
33
56
|
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
-
|
|
41
|
-
-
|
|
42
|
-
-
|
|
43
|
-
- Preview text best practices
|
|
57
|
+
### CTA buttons
|
|
58
|
+
|
|
59
|
+
- Filled, high-contrast, live-text ("bulletproof") buttons, sentence case, verb-led.
|
|
60
|
+
|
|
61
|
+
### Footer (legal/compliance minimum)
|
|
62
|
+
|
|
63
|
+
- Recognisable sender identity and registered/physical address.
|
|
64
|
+
- A visible, one-click unsubscribe or preference centre — never hidden, buried, or made deliberately effortful. Making it hard to leave erodes trust faster than losing the subscriber does.
|
|
65
|
+
- A link to the relevant privacy/preferences information.
|
|
44
66
|
|
|
45
67
|
---
|
|
46
68
|
|
|
47
69
|
## Content Guidelines
|
|
48
70
|
|
|
49
|
-
Follow [content](../../content/) for
|
|
71
|
+
Follow [writing style](../../content/writing-style.md) and [formatting](../../content/formatting.md) for tone and conventions.
|
|
72
|
+
|
|
73
|
+
### Subject line
|
|
74
|
+
|
|
75
|
+
- Be specific and honest about what's inside. Curiosity-gap or "mystery" framing reads as spam and erodes trust even when it lifts opens.
|
|
76
|
+
- Keep it concise for the mobile preview pane; avoid spam-trigger patterns (excess capitals, exclamation marks, misleading claims).
|
|
77
|
+
|
|
78
|
+
### Preheader
|
|
79
|
+
|
|
80
|
+
- Extend the subject with a concrete reason to open — don't waste it on "view in browser" boilerplate.
|
|
81
|
+
|
|
82
|
+
### Body
|
|
83
|
+
|
|
84
|
+
- Open with the value to the reader, not company news for its own sake.
|
|
85
|
+
- Personalise with what you actually know about the recipient's interests or activity; a generic blast to everyone is the most common reason recipients call an email irrelevant or spammy.
|
|
86
|
+
- Write in short, scannable chunks. One primary message per email.
|
|
87
|
+
- Give the reader an easy way out. Most people who stop wanting an email won't bother to unsubscribe — they'll just tune out or mark it as spam, which is worse for deliverability than a clean unsubscribe.
|
|
88
|
+
|
|
89
|
+
---
|
|
90
|
+
|
|
91
|
+
## Common Scenarios
|
|
92
|
+
|
|
93
|
+
| Scenario | Must include | Tone |
|
|
94
|
+
|----------|---------------|------|
|
|
95
|
+
| **Newsletter / digest** | A handful of curated, genuinely relevant items; one lead story | Informative, personality allowed, not salesy |
|
|
96
|
+
| **Product announcement** | What's new, why it matters to this reader, one CTA to try/learn more | Confident, benefit-led, brief |
|
|
97
|
+
| **Event invitation** | What, when, where/format, who it's for, one registration CTA | Clear and direct, low-friction to say yes |
|
|
98
|
+
| **Nurture sequence** | One educational idea per email, building toward a later ask | Helpful first, low-pressure |
|
|
99
|
+
| **Promotional / campaign** | The offer, the deadline if any, one CTA | Confident but not hyped; avoid false urgency |
|
|
100
|
+
|
|
101
|
+
---
|
|
102
|
+
|
|
103
|
+
## Deliverability and List Health
|
|
104
|
+
|
|
105
|
+
Kept technology-agnostic here; implementation specifics (sending platform, list architecture) live outside this reference.
|
|
106
|
+
|
|
107
|
+
- Send only to recipients who've opted in; process unsubscribes immediately.
|
|
108
|
+
- Keep the sending identity consistent so recipients recognise it at a glance.
|
|
109
|
+
- Periodically remove inactive or invalid addresses — sender reputation depends on engagement, not list size.
|
|
110
|
+
- Avoid spam-trigger patterns in subject and body copy (excess capitals, exclamation marks, misleading claims).
|
|
111
|
+
|
|
112
|
+
---
|
|
50
113
|
|
|
51
|
-
|
|
52
|
-
- Keep under 50 characters for mobile
|
|
53
|
-
- Be specific about content
|
|
54
|
-
- Avoid spam triggers
|
|
114
|
+
## Accessibility Checklist
|
|
55
115
|
|
|
56
|
-
|
|
57
|
-
-
|
|
58
|
-
-
|
|
59
|
-
-
|
|
60
|
-
-
|
|
116
|
+
- Alt text on every image; decorative images marked as such.
|
|
117
|
+
- Colour contrast meets [accessibility](../../accessibility/accessibility.md#colour-contrast) minimums.
|
|
118
|
+
- Key messages and CTAs exist as live text, not baked into images.
|
|
119
|
+
- A plain-text version accompanies the HTML email.
|
|
120
|
+
- No auto-playing video/audio; limit animated GIFs and provide a static fallback where possible.
|
|
61
121
|
|
|
62
122
|
---
|
|
63
123
|
|
|
64
124
|
## Related Documentation
|
|
65
125
|
|
|
66
|
-
- [Reference home](../../README.md)
|
|
67
|
-
- [Marketing
|
|
68
|
-
- [
|
|
126
|
+
- [Reference home](../../README.md) — brand and design language
|
|
127
|
+
- [Marketing website](./website.md) — layout and visual patterns
|
|
128
|
+
- [Writing style](../../content/writing-style.md) · [Formatting](../../content/formatting.md)
|
|
129
|
+
- [Accessibility](../../accessibility/accessibility.md)
|
|
130
|
+
- [Colours](../../design-language/colours.md) · [Typography](../../design-language/typography.md)
|
|
131
|
+
- [Product emails](../web-product/emails.md) — transactional messages, including ones sent to external customers
|
|
@@ -31,6 +31,8 @@ Use when: Limited navigation items (5-7 items)
|
|
|
31
31
|
|
|
32
32
|
```
|
|
33
33
|
┌─────────────────────────────────────────┐
|
|
34
|
+
│ System Banner (full width, conditional) │
|
|
35
|
+
├─────────────────────────────────────────┤
|
|
34
36
|
│ Dark Navigation Bar (Tech Blue) │
|
|
35
37
|
│ [Logo] [Nav Items] [User Menu] │
|
|
36
38
|
├─────────────────────────────────────────┤
|
|
@@ -57,7 +59,9 @@ Use when: Limited navigation items (5-7 items)
|
|
|
57
59
|
Use when: Complex navigation, hierarchical structure, 8+ items
|
|
58
60
|
|
|
59
61
|
```
|
|
60
|
-
|
|
62
|
+
┌─────────────────────────────────────────┐
|
|
63
|
+
│ System Banner (full width, conditional) │
|
|
64
|
+
├──────┬──────────────────────────────────┤
|
|
61
65
|
│ │ Top Bar (Light) │
|
|
62
66
|
│ Dark │ [Breadcrumbs] [User Menu] │
|
|
63
67
|
│ Side │──────────────────────────────────┤
|
|
@@ -80,6 +84,164 @@ Use when: Complex navigation, hierarchical structure, 8+ items
|
|
|
80
84
|
| Top bar background | `bg-background` (light) |
|
|
81
85
|
| Content area | Light background, full remaining width |
|
|
82
86
|
|
|
87
|
+
#### Region Breakdown
|
|
88
|
+
|
|
89
|
+
Dark Sidebar Navigation is the default template for internal business tools: three persistent
|
|
90
|
+
regions — sidebar, top bar, main content — host different content per screen without changing
|
|
91
|
+
the shell. A fourth, conditional zone sits above all three when a site-wide status message is
|
|
92
|
+
active.
|
|
93
|
+
|
|
94
|
+
| Region | Purpose | Composition (top to bottom / left to right) |
|
|
95
|
+
|--------|---------|-----------------------------------------------|
|
|
96
|
+
| System banner | App-wide status (outage, deprecation, access change) | Full width, above the entire shell — spans both sidebar and top bar, not just the content area. Does not overlay or displace the top bar; only present when a site-wide message is active |
|
|
97
|
+
| Sidebar | Wayfinding and workspace context | Workspace/brand switcher → primary navigation → secondary/utility links → account footer |
|
|
98
|
+
| Top bar | Page context and utility actions | Collapse toggle + breadcrumb or page title (left) → site-wide utilities such as search, notifications, theme toggle, external link (right) |
|
|
99
|
+
| Main content | Task surface | Primary content block(s) — a single block, or bento-style blocks for a dashboard-type layout |
|
|
100
|
+
|
|
101
|
+
Section/page-level feedback (error summary, inline confirmation banner) is not part of this
|
|
102
|
+
system-banner zone — it uses `Callout` as-is at the top of the main content area. See the Main
|
|
103
|
+
content composition table below.
|
|
104
|
+
|
|
105
|
+
**Sidebar composition:**
|
|
106
|
+
|
|
107
|
+
| Element | Notes |
|
|
108
|
+
|---------|-------|
|
|
109
|
+
| Workspace/brand switcher | Icon + name, optional subtitle (plan, member count), expand chevron |
|
|
110
|
+
| Primary navigation | Icon + label per item; items with children expand in place (chevron rotates, sub-items indent) |
|
|
111
|
+
| Section labels | Muted, small-caps-style text grouping related nav items (e.g. "Platform", "Projects") |
|
|
112
|
+
| Secondary navigation | Utility links (Help Center, Settings) below primary nav, visually separated |
|
|
113
|
+
| Account footer | Avatar + name + email/identifier, pinned to the sidebar's bottom edge |
|
|
114
|
+
|
|
115
|
+
**Top bar composition:**
|
|
116
|
+
|
|
117
|
+
| Element | Notes |
|
|
118
|
+
|---------|-------|
|
|
119
|
+
| Collapse toggle | Icon button, always leftmost |
|
|
120
|
+
| Wayfinding | Breadcrumb trail, or a single page title |
|
|
121
|
+
| Search | Optional; may show a keyboard-shortcut hint |
|
|
122
|
+
| Notifications / messages | Icon buttons with an unread badge or dot |
|
|
123
|
+
| Theme toggle | Optional icon button |
|
|
124
|
+
| External link | Optional labelled button (e.g. link to a repo or docs) |
|
|
125
|
+
|
|
126
|
+
**Main content composition:**
|
|
127
|
+
|
|
128
|
+
| Row | Purpose | Notes |
|
|
129
|
+
|-----|---------|-------|
|
|
130
|
+
| Feedback | Page/section-level feedback tied to a submitted action | Top-of-content-area callout or error summary; appears above the page header row when present |
|
|
131
|
+
| Page header | Title + primary actions | Omit if the top bar already carries the page title |
|
|
132
|
+
| Metric/summary row | At-a-glance KPIs | Card grid, 3-4 columns desktop — see [dashboard pattern](./patterns/dashboard.md) |
|
|
133
|
+
| Visualization row | Trends over time | One or two chart cards side by side |
|
|
134
|
+
| Primary work surface | The task itself | Table/list ([browse and filter](./patterns/browse-and-filter.md)), cards ([section hub](./patterns/section-hub.md)), identity + tabs ([detail page](./patterns/detail-page.md)), kanban board, or form — see the relevant [pattern](./patterns/) |
|
|
135
|
+
|
|
136
|
+
Not every row applies to every screen — a settings page may use only "Page header" plus a form,
|
|
137
|
+
while a metrics dashboard uses all rows below "Feedback." "Feedback" itself only appears when
|
|
138
|
+
there's a submitted action to report on.
|
|
139
|
+
|
|
140
|
+
---
|
|
141
|
+
|
|
142
|
+
## Content-Only Layouts
|
|
143
|
+
|
|
144
|
+
Some screens carry no persistent app navigation — the page itself is the task. Two shapes cover
|
|
145
|
+
this in web-product.
|
|
146
|
+
|
|
147
|
+
### Option 3: Single Column
|
|
148
|
+
|
|
149
|
+
Use when: no persistent app navigation is needed — self-contained flows (auth, forms, wizards) or
|
|
150
|
+
structured documents (reports, briefs).
|
|
151
|
+
|
|
152
|
+
#### Narrow / Centred (Auth, Forms, Wizards)
|
|
153
|
+
|
|
154
|
+
```
|
|
155
|
+
┌─────────────────────────────────────────┐
|
|
156
|
+
│ [Logo] (centered) │
|
|
157
|
+
├─────────────────────────────────────────┤
|
|
158
|
+
│ │
|
|
159
|
+
│ ┌─────────────────────────┐ │
|
|
160
|
+
│ │ Auth/Form Card │ │
|
|
161
|
+
│ │ (max 400-480px) │ │
|
|
162
|
+
│ │ [Form fields] │ │
|
|
163
|
+
│ │ [Primary action] │ │
|
|
164
|
+
│ └─────────────────────────┘ │
|
|
165
|
+
│ │
|
|
166
|
+
├─────────────────────────────────────────┤
|
|
167
|
+
│ Footer (minimal: legal links) │
|
|
168
|
+
└─────────────────────────────────────────┘
|
|
169
|
+
```
|
|
170
|
+
|
|
171
|
+
See [sign-in pattern](./patterns/sign-in.md) and [form pattern](./patterns/complete-a-form.md).
|
|
172
|
+
|
|
173
|
+
A confirmation page (the end state of a completed form, application, or transaction) uses this
|
|
174
|
+
same narrow/centred variant rather than a distinct layout shape — it's a simple end-state of a
|
|
175
|
+
form flow, not a different page type. See [give feedback on an action
|
|
176
|
+
pattern](./patterns/give-feedback-on-an-action.md).
|
|
177
|
+
|
|
178
|
+
#### Full-Width / Long-Form (Reports, Briefs, Structured Documents)
|
|
179
|
+
|
|
180
|
+
```
|
|
181
|
+
┌───────────────────────────────────────────┐
|
|
182
|
+
│ [Logo] Breadcrumb Status │
|
|
183
|
+
├───────────────────────────────────────────┤
|
|
184
|
+
│ EYEBROW LABEL │
|
|
185
|
+
│ # Document Title │
|
|
186
|
+
│ Dek / summary paragraph │
|
|
187
|
+
│ Owner · Sponsor · Date · Status │
|
|
188
|
+
├───────────────────────────────────────────┤
|
|
189
|
+
│ ┌─────────────────────────────────────┐ │
|
|
190
|
+
│ │ Callout: at-a-glance summary │ │
|
|
191
|
+
│ └─────────────────────────────────────┘ │
|
|
192
|
+
├───────────────────────────────────────────┤
|
|
193
|
+
│ 01 Section heading │
|
|
194
|
+
│ Cards / lists / tables │
|
|
195
|
+
├───────────────────────────────────────────┤
|
|
196
|
+
│ 02 Section heading │
|
|
197
|
+
│ ... │
|
|
198
|
+
├───────────────────────────────────────────┤
|
|
199
|
+
│ Footer: document title · page N/M │
|
|
200
|
+
└───────────────────────────────────────────┘
|
|
201
|
+
```
|
|
202
|
+
|
|
203
|
+
**Specifications:**
|
|
204
|
+
|
|
205
|
+
| Property | Narrow (auth/forms) | Full-width (reports/briefs) |
|
|
206
|
+
|----------|----------------------|-------------------------------|
|
|
207
|
+
| Max content width | 400-480px | 720-960px (readable column) |
|
|
208
|
+
| Top bar | Logo only, minimal | Slim brand bar + breadcrumb + status |
|
|
209
|
+
| Body | Single card | Numbered sections (01, 02…), each self-contained |
|
|
210
|
+
| Section content | Form fields | Callouts, card grids, comparison lists, status/severity tables, timeline/Gantt tables |
|
|
211
|
+
| Footer | Minimal (legal links) | Document metadata (title, page N/M) |
|
|
212
|
+
|
|
213
|
+
##### Document Header (Full-Width Variant)
|
|
214
|
+
|
|
215
|
+
| Element | Notes |
|
|
216
|
+
|---------|-------|
|
|
217
|
+
| Eyebrow label | Muted, classifies the document (e.g. "Internal brief — steering group") |
|
|
218
|
+
| Title (H1) | One per page |
|
|
219
|
+
| Dek | One- to two-line summary paragraph |
|
|
220
|
+
| Metadata strip | Label/value pairs (Owner, Sponsor, Date, Status) in a horizontal row |
|
|
221
|
+
|
|
222
|
+
##### Section Anatomy (Full-Width Variant)
|
|
223
|
+
|
|
224
|
+
| Element | Notes |
|
|
225
|
+
|---------|-------|
|
|
226
|
+
| Section number | "01", "02"… prefix, muted, left of heading |
|
|
227
|
+
| Section heading | `text-lg` / `text-xl font-semibold` |
|
|
228
|
+
| Section body | Free composition — card grid, two-column comparison, matrix table with legend, or a timeline/Gantt table |
|
|
229
|
+
| Status/severity tags | Colour-coded chips (e.g. severity High/Medium/Low; status Resolved/Deferred/New) — pair colour with text, never colour alone |
|
|
230
|
+
|
|
231
|
+
### Split Layout (Add-on, Not Standalone)
|
|
232
|
+
|
|
233
|
+
Split Layout adds a third region — a right-hand rail — to [Sidebar Navigation](#option-2-dark-sidebar-navigation).
|
|
234
|
+
It's an addition, not an alternative: pair it with Option 2 rather than using it alone.
|
|
235
|
+
|
|
236
|
+
| Property | Value |
|
|
237
|
+
|----------|-------|
|
|
238
|
+
| Right rail width | 200-240px |
|
|
239
|
+
| Visibility | Hidden below 1280px |
|
|
240
|
+
| Content | Contextual to main content (table of contents, inspector, metadata) |
|
|
241
|
+
| Scroll | Independent from main content |
|
|
242
|
+
|
|
243
|
+
See [documentation pattern](./patterns/documentation.md) for the canonical use.
|
|
244
|
+
|
|
83
245
|
---
|
|
84
246
|
|
|
85
247
|
## Navigation Color Tokens
|
|
@@ -130,6 +292,14 @@ See [logo guidelines](../../brand/logo.md).
|
|
|
130
292
|
| Tablet | Collapsible (default collapsed) |
|
|
131
293
|
| Desktop | Full sidebar visible (240-280px) |
|
|
132
294
|
|
|
295
|
+
### Single Column
|
|
296
|
+
|
|
297
|
+
| Breakpoint | Behavior |
|
|
298
|
+
|------------|----------|
|
|
299
|
+
| Mobile | Full width, reduced side padding |
|
|
300
|
+
| Tablet | Narrow variant stays card-width; full-width variant keeps its readable column |
|
|
301
|
+
| Desktop | Narrow variant centred; full-width variant keeps max content width with side margins |
|
|
302
|
+
|
|
133
303
|
---
|
|
134
304
|
|
|
135
305
|
## Content Areas
|
|
@@ -154,7 +324,7 @@ See [logo guidelines](../../brand/logo.md).
|
|
|
154
324
|
|
|
155
325
|
1. **Use dark navigation** - Distinguishes product from marketing
|
|
156
326
|
2. **Use white/monochrome logo** - Appropriate for dark backgrounds
|
|
157
|
-
3. **Choose
|
|
327
|
+
3. **Choose the layout that matches the task** - Horizontal nav for simple apps, sidebar for complex ones, single column when no persistent navigation is needed
|
|
158
328
|
4. **Maintain light content areas** - Good contrast for readability
|
|
159
329
|
5. **Follow spacing guidelines** - 8-point grid, consistent padding
|
|
160
330
|
|
|
@@ -162,7 +332,7 @@ See [logo guidelines](../../brand/logo.md).
|
|
|
162
332
|
|
|
163
333
|
1. **Don't use light navigation** - That's for marketing layouts
|
|
164
334
|
2. **Don't use full-color logo on dark** - Use white monochrome
|
|
165
|
-
3. **Don't combine nav patterns** - Choose horizontal OR sidebar, not both
|
|
335
|
+
3. **Don't combine nav patterns** - Choose horizontal OR sidebar, not both (Split Layout is the one sanctioned addition, and only with Sidebar Navigation)
|
|
166
336
|
4. **Don't ignore mobile** - All layouts must work on small screens
|
|
167
337
|
5. **Don't hardcode colors** - Use design tokens
|
|
168
338
|
|
|
@@ -175,3 +345,4 @@ See [logo guidelines](../../brand/logo.md).
|
|
|
175
345
|
- [Component Decision Tree](./component-decision-tree.md) - Component selection
|
|
176
346
|
- [Product Content](./content/product-content.md) - UX writing guidelines
|
|
177
347
|
- [Patterns](./patterns/) - Applied patterns for specific page types
|
|
348
|
+
- [Figma Build Checklist](./figma-build-checklist.md) - Verification steps for Figma builds, including the EE/Kuat vs. other-client context gate
|