@jaimevalasek/aioson 1.30.0 → 1.30.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/CHANGELOG.md +18 -0
- package/docs/design-previews/cognitive-core-ui-auth.html +95 -0
- package/docs/design-previews/cognitive-core-ui-kanban.html +231 -0
- package/docs/design-previews/cognitive-core-ui-list-detail.html +174 -0
- package/docs/design-previews/cognitive-core-ui-preview.css +1315 -0
- package/docs/design-previews/cognitive-core-ui-settings.html +142 -0
- package/docs/design-previews/cognitive-core-ui-website.html +190 -1009
- package/docs/design-previews/cognitive-core-ui.html +281 -463
- package/docs/design-previews/index.html +83 -31
- package/package.json +1 -1
- package/src/constants.js +578 -514
- package/template/.aioson/docs/integrations/dashboard-app-form-publish-mapping.md +183 -0
- package/template/.aioson/docs/play/README.md +74 -0
- package/template/.aioson/docs/play/agent-usage-guide.md +112 -0
- package/template/.aioson/docs/play/app-compatibility-guide.md +117 -0
- package/template/.aioson/docs/play/auth-services-and-testing.md +235 -0
- package/template/.aioson/docs/play/llm-data-and-bindings.md +238 -0
- package/template/.aioson/docs/play/manifest-and-runtime.md +267 -0
- package/template/.aioson/docs/play/source-map.md +104 -0
- package/template/.aioson/skills/design/aurora-command-ui/SKILL.md +266 -243
- package/template/.aioson/skills/design/aurora-command-ui/references/art-direction.md +293 -293
- package/template/.aioson/skills/design/aurora-command-ui/references/components.md +827 -827
- package/template/.aioson/skills/design/aurora-command-ui/references/dashboards.md +250 -250
- package/template/.aioson/skills/design/aurora-command-ui/references/design-tokens.md +585 -585
- package/template/.aioson/skills/design/aurora-command-ui/references/motion.md +365 -365
- package/template/.aioson/skills/design/aurora-command-ui/references/patterns.md +485 -482
- package/template/.aioson/skills/design/aurora-command-ui/references/websites.md +386 -387
- package/template/.aioson/skills/design/bold-editorial-ui/SKILL.md +228 -205
- package/template/.aioson/skills/design/bold-editorial-ui/references/art-direction.md +338 -338
- package/template/.aioson/skills/design/bold-editorial-ui/references/components.md +977 -977
- package/template/.aioson/skills/design/bold-editorial-ui/references/dashboards.md +218 -218
- package/template/.aioson/skills/design/bold-editorial-ui/references/design-tokens.md +326 -326
- package/template/.aioson/skills/design/bold-editorial-ui/references/motion.md +461 -461
- package/template/.aioson/skills/design/bold-editorial-ui/references/patterns.md +293 -293
- package/template/.aioson/skills/design/bold-editorial-ui/references/websites.md +352 -352
- package/template/.aioson/skills/design/clean-saas-ui/SKILL.md +233 -210
- package/template/.aioson/skills/design/clean-saas-ui/references/art-direction.md +319 -319
- package/template/.aioson/skills/design/clean-saas-ui/references/components.md +365 -365
- package/template/.aioson/skills/design/clean-saas-ui/references/dashboards.md +196 -196
- package/template/.aioson/skills/design/clean-saas-ui/references/design-tokens.md +244 -244
- package/template/.aioson/skills/design/clean-saas-ui/references/motion.md +235 -235
- package/template/.aioson/skills/design/clean-saas-ui/references/patterns.md +215 -215
- package/template/.aioson/skills/design/clean-saas-ui/references/websites.md +295 -295
- package/template/.aioson/skills/design/cognitive-core-ui/SKILL.md +239 -203
- package/template/.aioson/skills/design/cognitive-core-ui/references/art-direction.md +339 -339
- package/template/.aioson/skills/design/cognitive-core-ui/references/components.md +417 -407
- package/template/.aioson/skills/design/cognitive-core-ui/references/dashboards.md +289 -272
- package/template/.aioson/skills/design/cognitive-core-ui/references/design-tokens.md +525 -524
- package/template/.aioson/skills/design/cognitive-core-ui/references/motion.md +279 -279
- package/template/.aioson/skills/design/cognitive-core-ui/references/patterns.md +355 -289
- package/template/.aioson/skills/design/cognitive-core-ui/references/websites.md +443 -437
- package/template/.aioson/skills/design/glassmorphism-ui/SKILL.md +245 -222
- package/template/.aioson/skills/design/glassmorphism-ui/references/art-direction.md +159 -159
- package/template/.aioson/skills/design/glassmorphism-ui/references/components.md +498 -498
- package/template/.aioson/skills/design/glassmorphism-ui/references/dashboards.md +236 -236
- package/template/.aioson/skills/design/glassmorphism-ui/references/design-tokens.md +274 -274
- package/template/.aioson/skills/design/glassmorphism-ui/references/motion.md +355 -355
- package/template/.aioson/skills/design/glassmorphism-ui/references/patterns.md +198 -198
- package/template/.aioson/skills/design/glassmorphism-ui/references/websites.md +307 -307
- package/template/.aioson/skills/design/interface-design/SKILL.md +68 -47
- package/template/.aioson/skills/design/interface-design/references/components-and-states.md +105 -105
- package/template/.aioson/skills/design/interface-design/references/design-directions.md +101 -101
- package/template/.aioson/skills/design/interface-design/references/handoff-and-quality.md +92 -71
- package/template/.aioson/skills/design/interface-design/references/intent-and-domain.md +74 -74
- package/template/.aioson/skills/design/interface-design/references/tokens-and-depth.md +173 -173
- package/template/.aioson/skills/design/neo-brutalist-ui/SKILL.md +236 -213
- package/template/.aioson/skills/design/neo-brutalist-ui/references/art-direction.md +228 -228
- package/template/.aioson/skills/design/neo-brutalist-ui/references/components.md +855 -855
- package/template/.aioson/skills/design/neo-brutalist-ui/references/dashboards.md +334 -334
- package/template/.aioson/skills/design/neo-brutalist-ui/references/design-tokens.md +342 -342
- package/template/.aioson/skills/design/neo-brutalist-ui/references/motion.md +286 -286
- package/template/.aioson/skills/design/neo-brutalist-ui/references/patterns.md +458 -458
- package/template/.aioson/skills/design/neo-brutalist-ui/references/websites.md +723 -723
- package/template/.aioson/skills/design/premium-command-center-ui/SKILL.md +83 -62
- package/template/.aioson/skills/design/premium-command-center-ui/references/operations.md +74 -74
- package/template/.aioson/skills/design/premium-command-center-ui/references/patterns.md +116 -116
- package/template/.aioson/skills/design/premium-command-center-ui/references/validation.md +47 -47
- package/template/.aioson/skills/design/premium-command-center-ui/references/visual-system.md +215 -215
- package/template/.aioson/skills/design/pt.squarespace.com/.skill-meta.json +31 -31
- package/template/.aioson/skills/design/pt.squarespace.com/SKILL.md +94 -66
- package/template/.aioson/skills/design/pt.squarespace.com/references/components.md +366 -366
- package/template/.aioson/skills/design/pt.squarespace.com/references/design-tokens.md +150 -150
- package/template/.aioson/skills/design/pt.squarespace.com/references/motion.md +270 -270
- package/template/.aioson/skills/design/pt.squarespace.com/references/patterns.md +189 -189
- package/template/.aioson/skills/design/pt.squarespace.com/references/websites.md +161 -161
- package/template/.aioson/skills/design/warm-craft-ui/SKILL.md +232 -209
- package/template/.aioson/skills/design/warm-craft-ui/references/art-direction.md +324 -324
- package/template/.aioson/skills/design/warm-craft-ui/references/components.md +508 -508
- package/template/.aioson/skills/design/warm-craft-ui/references/dashboards.md +223 -223
- package/template/.aioson/skills/design/warm-craft-ui/references/design-tokens.md +374 -374
- package/template/.aioson/skills/design/warm-craft-ui/references/motion.md +356 -356
- package/template/.aioson/skills/design/warm-craft-ui/references/patterns.md +288 -288
- package/template/.aioson/skills/design/warm-craft-ui/references/websites.md +289 -289
|
@@ -1,215 +1,215 @@
|
|
|
1
|
-
# Patterns — Clean SaaS UI
|
|
2
|
-
|
|
3
|
-
Page-level composition patterns. Always build from these patterns — never invent a new shell without a domain reason.
|
|
4
|
-
|
|
5
|
-
---
|
|
6
|
-
|
|
7
|
-
## App Shell
|
|
8
|
-
|
|
9
|
-
```
|
|
10
|
-
┌──────────────────────────────────────────────────────────┐
|
|
11
|
-
│ [Logo] ProductName [Search] [?] [Avatar ▾] │ ← 56px top bar (optional)
|
|
12
|
-
├────────────────┬─────────────────────────────────────────┤
|
|
13
|
-
│ │ Page Header (title + breadcrumbs + │
|
|
14
|
-
│ SIDEBAR │ actions) │
|
|
15
|
-
│ 256px ├─────────────────────────────────────────┤
|
|
16
|
-
│ bg-surface │ Filter Bar / Tab Bar (when needed) │
|
|
17
|
-
│ border-right ├─────────────────────────────────────────┤
|
|
18
|
-
│ │ CONTENT AREA │
|
|
19
|
-
│ Nav groups │ padding: 24px │
|
|
20
|
-
│ Active state │ scroll: vertical │
|
|
21
|
-
│ │ │
|
|
22
|
-
│ [User] │ │
|
|
23
|
-
└────────────────┴─────────────────────────────────────────┘
|
|
24
|
-
```
|
|
25
|
-
|
|
26
|
-
**Rules:**
|
|
27
|
-
- Sidebar: `256px` fixed, `bg-surface`, `border-r border-default`, scrollable independently
|
|
28
|
-
- Top bar: optional — some apps omit it if sidebar has logo + user footer
|
|
29
|
-
- Content area: `flex-1 overflow-y-auto`, `padding: 24px`
|
|
30
|
-
- Page header: inside content area, not full-width — stays within the scrollable zone
|
|
31
|
-
- Sidebar collapses to hamburger menu below `1024px`
|
|
32
|
-
|
|
33
|
-
---
|
|
34
|
-
|
|
35
|
-
## 1. List Page
|
|
36
|
-
|
|
37
|
-
**Use for:** contacts, accounts, tickets, orders, products, users
|
|
38
|
-
|
|
39
|
-
```
|
|
40
|
-
┌─────────────────────────────────────────────────────────┐
|
|
41
|
-
│ Contacts [Export] [+ New] │ ← page header
|
|
42
|
-
├─────────────────────────────────────────────────────────┤
|
|
43
|
-
│ [Search...] [Status ▾] [Owner ▾] ×2 filters [Clear] │ ← filter bar
|
|
44
|
-
├─────────────────────────────────────────────────────────┤
|
|
45
|
-
│ ☐ Name ↕ Company ↕ Status Created (…) │ ← sticky table header
|
|
46
|
-
│ ☐ J. Smith Acme Corp ● Active Mar 12 │
|
|
47
|
-
│ ☐ A. Jones Beta Ltd ○ Inactive Mar 10 │
|
|
48
|
-
│ ☐ R. Miller Gamma Inc ⚠ Warning Mar 8 │
|
|
49
|
-
├─────────────────────────────────────────────────────────┤
|
|
50
|
-
│ Showing 1–25 of 143 [← Prev] 1 2 3 [Next →] │ ← pagination
|
|
51
|
-
└─────────────────────────────────────────────────────────┘
|
|
52
|
-
```
|
|
53
|
-
|
|
54
|
-
**Composition rules:**
|
|
55
|
-
- Page header always: title + subtitle + right actions
|
|
56
|
-
- Filter bar always below header, sticky below `--z-sticky`
|
|
57
|
-
- Table fills remaining space, sticky header
|
|
58
|
-
- Pagination anchored to bottom of table, not page
|
|
59
|
-
- Bulk action bar replaces filter bar when rows selected (slides in)
|
|
60
|
-
|
|
61
|
-
---
|
|
62
|
-
|
|
63
|
-
## 2. Detail Page
|
|
64
|
-
|
|
65
|
-
**Use for:** contact detail, account detail, ticket detail, order detail
|
|
66
|
-
|
|
67
|
-
```
|
|
68
|
-
┌─────────────────────────────────────────────────────────┐
|
|
69
|
-
│ Contacts > Acme Corp │ ← breadcrumb
|
|
70
|
-
│ Acme Corp [Archive] [Edit] [+ Task] │ ← title + status badge + actions
|
|
71
|
-
├─────────────────────────────────────────────────────────┤
|
|
72
|
-
│ Overview │ Contacts │ Activity │ Documents │ Settings │ ← tabs
|
|
73
|
-
├───────────────────────────────┬─────────────────────────┤
|
|
74
|
-
│ MAIN CONTENT │ SIDEBAR DETAIL RAIL │
|
|
75
|
-
│ (primary info, main data) │ Key metrics / info │
|
|
76
|
-
│ │ Related items │
|
|
77
|
-
│ │ Quick actions │
|
|
78
|
-
└───────────────────────────────┴─────────────────────────┘
|
|
79
|
-
```
|
|
80
|
-
|
|
81
|
-
**Composition rules:**
|
|
82
|
-
- Breadcrumb above title — always
|
|
83
|
-
- Status badge inline with title
|
|
84
|
-
- Tabs separate content areas (Overview, Activity, etc.)
|
|
85
|
-
- Two-column layout: main content (2/3) + detail rail (1/3)
|
|
86
|
-
- Detail rail: `bg-surface border-l border-default px-4 py-5`
|
|
87
|
-
|
|
88
|
-
---
|
|
89
|
-
|
|
90
|
-
## 3. Form Page
|
|
91
|
-
|
|
92
|
-
**Use for:** create contact, new deal, edit settings section, configure integration
|
|
93
|
-
|
|
94
|
-
```
|
|
95
|
-
┌─────────────────────────────────────────────────────────┐
|
|
96
|
-
│ Contacts > New Contact │ ← breadcrumb
|
|
97
|
-
│ New Contact │ ← title
|
|
98
|
-
├──────────────────────────────────────────────────────────┤
|
|
99
|
-
│ ┌─────────────────────────────────────────────────────┐ │
|
|
100
|
-
│ │ Basic Information │ │ ← section card
|
|
101
|
-
│ │ Fill in the contact's core details. │ │
|
|
102
|
-
│ │ ─────────────────────────────────────────────────── │ │
|
|
103
|
-
│ │ First name * [ __________________ ] │ │
|
|
104
|
-
│ │ Last name * [ __________________ ] │ │
|
|
105
|
-
│ │ Email [ __________________ ] │ │
|
|
106
|
-
│ └─────────────────────────────────────────────────────┘ │
|
|
107
|
-
│ ┌─────────────────────────────────────────────────────┐ │
|
|
108
|
-
│ │ Company Details │ │ ← section card 2
|
|
109
|
-
│ └─────────────────────────────────────────────────────┘ │
|
|
110
|
-
├──────────────────────────────────────────────────────────┤
|
|
111
|
-
│ [Cancel] [Save Contact] │ ← sticky save bar
|
|
112
|
-
└─────────────────────────────────────────────────────────┘
|
|
113
|
-
```
|
|
114
|
-
|
|
115
|
-
**Composition rules:**
|
|
116
|
-
- Max content width: `640px` (centered within content area or left-aligned)
|
|
117
|
-
- Section cards: `bg-surface border border-default rounded-lg`
|
|
118
|
-
- Section header: `px-5 py-4 border-b border-default` — title `text-base font-semibold` + description `text-sm text-secondary`
|
|
119
|
-
- Form fields inside: `px-5 py-5 space-y-4`
|
|
120
|
-
- Sticky save bar: `fixed bottom-0 left-[256px] right-0 bg-surface border-t border-default px-6 py-3 flex justify-between`
|
|
121
|
-
- Auto-save indicator: `text-xs text-secondary` in save bar left
|
|
122
|
-
|
|
123
|
-
---
|
|
124
|
-
|
|
125
|
-
## 4. Dashboard Page
|
|
126
|
-
|
|
127
|
-
**Use for:** main dashboard, analytics, reporting overview, exec summary
|
|
128
|
-
|
|
129
|
-
```
|
|
130
|
-
┌─────────────────────────────────────────────────────────┐
|
|
131
|
-
│ Dashboard [This month ▾] [Export] │ ← page header + date range
|
|
132
|
-
├─────────────────────────────────────────────────────────┤
|
|
133
|
-
│ [MRR: $48K ↑] [ARR: $580K] [Churn: 1.2%] [NPS: 42] │ ← stat cards row
|
|
134
|
-
├─────────────────────────────────────────────────────────┤
|
|
135
|
-
│ [Revenue Chart (2/3)] │ [Top Sources (1/3)] │ ← charts section
|
|
136
|
-
├─────────────────────────────────────────────────────────┤
|
|
137
|
-
│ Recent Accounts [View all →] │ ← section header
|
|
138
|
-
│ [table snippet — 5 rows max] │
|
|
139
|
-
└─────────────────────────────────────────────────────────┘
|
|
140
|
-
```
|
|
141
|
-
|
|
142
|
-
**Composition rules:**
|
|
143
|
-
- Date range selector: prominent in page header, right-aligned
|
|
144
|
-
- Stat cards: 4-column grid, `gap-4`
|
|
145
|
-
- Charts: 2/3 + 1/3 or 1/2 + 1/2 — never all equal width
|
|
146
|
-
- Table snippets: 5 rows max with "View all" link — do not paginate on dashboard
|
|
147
|
-
- Section headers: `flex justify-between items-center mb-3` — title + link
|
|
148
|
-
|
|
149
|
-
---
|
|
150
|
-
|
|
151
|
-
## 5. Settings Page
|
|
152
|
-
|
|
153
|
-
**Use for:** account settings, team settings, notifications, billing, integrations
|
|
154
|
-
|
|
155
|
-
```
|
|
156
|
-
┌──────────────────────┬──────────────────────────────────┐
|
|
157
|
-
│ SETTINGS NAV │ Profile │
|
|
158
|
-
│ │ Update your name and email. │
|
|
159
|
-
│ Profile │ ─────────────────────────────── │
|
|
160
|
-
│ Security ▶ │ [form content] │
|
|
161
|
-
│ Notifications │ │
|
|
162
|
-
│ Billing │ API Keys │
|
|
163
|
-
│ Integrations │ ─────────────────────────────── │
|
|
164
|
-
│ Team │ [form content] │
|
|
165
|
-
└──────────────────────┴──────────────────────────────────┘
|
|
166
|
-
```
|
|
167
|
-
|
|
168
|
-
**Composition rules:**
|
|
169
|
-
- Settings nav: `200px` left sub-nav, `text-sm`, active item with accent color + weight-medium
|
|
170
|
-
- Content area: `flex-1 max-w-2xl`
|
|
171
|
-
- Each settings section: card with header + content
|
|
172
|
-
- Dangerous actions (delete account): separate section at bottom with danger styling
|
|
173
|
-
|
|
174
|
-
---
|
|
175
|
-
|
|
176
|
-
## 6. Empty / Onboarding Page
|
|
177
|
-
|
|
178
|
-
**Use for:** first-run, empty state for a feature, setup completion
|
|
179
|
-
|
|
180
|
-
```
|
|
181
|
-
┌─────────────────────────────────────────────────────────┐
|
|
182
|
-
│ [Step 1/4 progress] │
|
|
183
|
-
│ │
|
|
184
|
-
│ [geometric illustration] │
|
|
185
|
-
│ │
|
|
186
|
-
│ Connect your CRM │
|
|
187
|
-
│ Import your contacts automatically │
|
|
188
|
-
│ from Salesforce, HubSpot, or CSV. │
|
|
189
|
-
│ │
|
|
190
|
-
│ [Skip] [Connect CRM →] │
|
|
191
|
-
└─────────────────────────────────────────────────────────┘
|
|
192
|
-
```
|
|
193
|
-
|
|
194
|
-
**Composition rules:**
|
|
195
|
-
- Centered, `max-w-sm` to `max-w-md`
|
|
196
|
-
- Progress: `text-xs text-secondary` or step dots above illustration
|
|
197
|
-
- Illustration: clean geometric SVG, 120–160px
|
|
198
|
-
- Title: `text-xl font-semibold`
|
|
199
|
-
- Description: `text-sm text-secondary text-center max-w-xs`
|
|
200
|
-
- Actions: ghost (skip) + primary (main action), `gap-3 mt-8`
|
|
201
|
-
|
|
202
|
-
---
|
|
203
|
-
|
|
204
|
-
## Responsive rules
|
|
205
|
-
|
|
206
|
-
| Breakpoint | Behavior |
|
|
207
|
-
|-----------|---------|
|
|
208
|
-
| `< 640px` | Single column, cards stack |
|
|
209
|
-
| `< 768px` | Tables scroll horizontally (NEVER stack into cards) |
|
|
210
|
-
| `< 1024px` | Sidebar collapses to hamburger; settings nav becomes tab bar |
|
|
211
|
-
| `>= 1024px` | Full app shell with fixed sidebar |
|
|
212
|
-
|
|
213
|
-
**Critical:** Tables **never** become card lists on mobile. Tabular data stays in a table, always with horizontal scroll. This is non-negotiable in this design system.
|
|
214
|
-
|
|
215
|
-
**Control heights** are maintained at all breakpoints — touch targets stay at minimum 36px.
|
|
1
|
+
# Patterns — Clean SaaS UI
|
|
2
|
+
|
|
3
|
+
Page-level composition patterns. Always build from these patterns — never invent a new shell without a domain reason.
|
|
4
|
+
|
|
5
|
+
---
|
|
6
|
+
|
|
7
|
+
## App Shell
|
|
8
|
+
|
|
9
|
+
```
|
|
10
|
+
┌──────────────────────────────────────────────────────────┐
|
|
11
|
+
│ [Logo] ProductName [Search] [?] [Avatar ▾] │ ← 56px top bar (optional)
|
|
12
|
+
├────────────────┬─────────────────────────────────────────┤
|
|
13
|
+
│ │ Page Header (title + breadcrumbs + │
|
|
14
|
+
│ SIDEBAR │ actions) │
|
|
15
|
+
│ 256px ├─────────────────────────────────────────┤
|
|
16
|
+
│ bg-surface │ Filter Bar / Tab Bar (when needed) │
|
|
17
|
+
│ border-right ├─────────────────────────────────────────┤
|
|
18
|
+
│ │ CONTENT AREA │
|
|
19
|
+
│ Nav groups │ padding: 24px │
|
|
20
|
+
│ Active state │ scroll: vertical │
|
|
21
|
+
│ │ │
|
|
22
|
+
│ [User] │ │
|
|
23
|
+
└────────────────┴─────────────────────────────────────────┘
|
|
24
|
+
```
|
|
25
|
+
|
|
26
|
+
**Rules:**
|
|
27
|
+
- Sidebar: `256px` fixed, `bg-surface`, `border-r border-default`, scrollable independently
|
|
28
|
+
- Top bar: optional — some apps omit it if sidebar has logo + user footer
|
|
29
|
+
- Content area: `flex-1 overflow-y-auto`, `padding: 24px`
|
|
30
|
+
- Page header: inside content area, not full-width — stays within the scrollable zone
|
|
31
|
+
- Sidebar collapses to hamburger menu below `1024px`
|
|
32
|
+
|
|
33
|
+
---
|
|
34
|
+
|
|
35
|
+
## 1. List Page
|
|
36
|
+
|
|
37
|
+
**Use for:** contacts, accounts, tickets, orders, products, users
|
|
38
|
+
|
|
39
|
+
```
|
|
40
|
+
┌─────────────────────────────────────────────────────────┐
|
|
41
|
+
│ Contacts [Export] [+ New] │ ← page header
|
|
42
|
+
├─────────────────────────────────────────────────────────┤
|
|
43
|
+
│ [Search...] [Status ▾] [Owner ▾] ×2 filters [Clear] │ ← filter bar
|
|
44
|
+
├─────────────────────────────────────────────────────────┤
|
|
45
|
+
│ ☐ Name ↕ Company ↕ Status Created (…) │ ← sticky table header
|
|
46
|
+
│ ☐ J. Smith Acme Corp ● Active Mar 12 │
|
|
47
|
+
│ ☐ A. Jones Beta Ltd ○ Inactive Mar 10 │
|
|
48
|
+
│ ☐ R. Miller Gamma Inc ⚠ Warning Mar 8 │
|
|
49
|
+
├─────────────────────────────────────────────────────────┤
|
|
50
|
+
│ Showing 1–25 of 143 [← Prev] 1 2 3 [Next →] │ ← pagination
|
|
51
|
+
└─────────────────────────────────────────────────────────┘
|
|
52
|
+
```
|
|
53
|
+
|
|
54
|
+
**Composition rules:**
|
|
55
|
+
- Page header always: title + subtitle + right actions
|
|
56
|
+
- Filter bar always below header, sticky below `--z-sticky`
|
|
57
|
+
- Table fills remaining space, sticky header
|
|
58
|
+
- Pagination anchored to bottom of table, not page
|
|
59
|
+
- Bulk action bar replaces filter bar when rows selected (slides in)
|
|
60
|
+
|
|
61
|
+
---
|
|
62
|
+
|
|
63
|
+
## 2. Detail Page
|
|
64
|
+
|
|
65
|
+
**Use for:** contact detail, account detail, ticket detail, order detail
|
|
66
|
+
|
|
67
|
+
```
|
|
68
|
+
┌─────────────────────────────────────────────────────────┐
|
|
69
|
+
│ Contacts > Acme Corp │ ← breadcrumb
|
|
70
|
+
│ Acme Corp [Archive] [Edit] [+ Task] │ ← title + status badge + actions
|
|
71
|
+
├─────────────────────────────────────────────────────────┤
|
|
72
|
+
│ Overview │ Contacts │ Activity │ Documents │ Settings │ ← tabs
|
|
73
|
+
├───────────────────────────────┬─────────────────────────┤
|
|
74
|
+
│ MAIN CONTENT │ SIDEBAR DETAIL RAIL │
|
|
75
|
+
│ (primary info, main data) │ Key metrics / info │
|
|
76
|
+
│ │ Related items │
|
|
77
|
+
│ │ Quick actions │
|
|
78
|
+
└───────────────────────────────┴─────────────────────────┘
|
|
79
|
+
```
|
|
80
|
+
|
|
81
|
+
**Composition rules:**
|
|
82
|
+
- Breadcrumb above title — always
|
|
83
|
+
- Status badge inline with title
|
|
84
|
+
- Tabs separate content areas (Overview, Activity, etc.)
|
|
85
|
+
- Two-column layout: main content (2/3) + detail rail (1/3)
|
|
86
|
+
- Detail rail: `bg-surface border-l border-default px-4 py-5`
|
|
87
|
+
|
|
88
|
+
---
|
|
89
|
+
|
|
90
|
+
## 3. Form Page
|
|
91
|
+
|
|
92
|
+
**Use for:** create contact, new deal, edit settings section, configure integration
|
|
93
|
+
|
|
94
|
+
```
|
|
95
|
+
┌─────────────────────────────────────────────────────────┐
|
|
96
|
+
│ Contacts > New Contact │ ← breadcrumb
|
|
97
|
+
│ New Contact │ ← title
|
|
98
|
+
├──────────────────────────────────────────────────────────┤
|
|
99
|
+
│ ┌─────────────────────────────────────────────────────┐ │
|
|
100
|
+
│ │ Basic Information │ │ ← section card
|
|
101
|
+
│ │ Fill in the contact's core details. │ │
|
|
102
|
+
│ │ ─────────────────────────────────────────────────── │ │
|
|
103
|
+
│ │ First name * [ __________________ ] │ │
|
|
104
|
+
│ │ Last name * [ __________________ ] │ │
|
|
105
|
+
│ │ Email [ __________________ ] │ │
|
|
106
|
+
│ └─────────────────────────────────────────────────────┘ │
|
|
107
|
+
│ ┌─────────────────────────────────────────────────────┐ │
|
|
108
|
+
│ │ Company Details │ │ ← section card 2
|
|
109
|
+
│ └─────────────────────────────────────────────────────┘ │
|
|
110
|
+
├──────────────────────────────────────────────────────────┤
|
|
111
|
+
│ [Cancel] [Save Contact] │ ← sticky save bar
|
|
112
|
+
└─────────────────────────────────────────────────────────┘
|
|
113
|
+
```
|
|
114
|
+
|
|
115
|
+
**Composition rules:**
|
|
116
|
+
- Max content width: `640px` (centered within content area or left-aligned)
|
|
117
|
+
- Section cards: `bg-surface border border-default rounded-lg`
|
|
118
|
+
- Section header: `px-5 py-4 border-b border-default` — title `text-base font-semibold` + description `text-sm text-secondary`
|
|
119
|
+
- Form fields inside: `px-5 py-5 space-y-4`
|
|
120
|
+
- Sticky save bar: `fixed bottom-0 left-[256px] right-0 bg-surface border-t border-default px-6 py-3 flex justify-between`
|
|
121
|
+
- Auto-save indicator: `text-xs text-secondary` in save bar left
|
|
122
|
+
|
|
123
|
+
---
|
|
124
|
+
|
|
125
|
+
## 4. Dashboard Page
|
|
126
|
+
|
|
127
|
+
**Use for:** main dashboard, analytics, reporting overview, exec summary
|
|
128
|
+
|
|
129
|
+
```
|
|
130
|
+
┌─────────────────────────────────────────────────────────┐
|
|
131
|
+
│ Dashboard [This month ▾] [Export] │ ← page header + date range
|
|
132
|
+
├─────────────────────────────────────────────────────────┤
|
|
133
|
+
│ [MRR: $48K ↑] [ARR: $580K] [Churn: 1.2%] [NPS: 42] │ ← stat cards row
|
|
134
|
+
├─────────────────────────────────────────────────────────┤
|
|
135
|
+
│ [Revenue Chart (2/3)] │ [Top Sources (1/3)] │ ← charts section
|
|
136
|
+
├─────────────────────────────────────────────────────────┤
|
|
137
|
+
│ Recent Accounts [View all →] │ ← section header
|
|
138
|
+
│ [table snippet — 5 rows max] │
|
|
139
|
+
└─────────────────────────────────────────────────────────┘
|
|
140
|
+
```
|
|
141
|
+
|
|
142
|
+
**Composition rules:**
|
|
143
|
+
- Date range selector: prominent in page header, right-aligned
|
|
144
|
+
- Stat cards: 4-column grid, `gap-4`
|
|
145
|
+
- Charts: 2/3 + 1/3 or 1/2 + 1/2 — never all equal width
|
|
146
|
+
- Table snippets: 5 rows max with "View all" link — do not paginate on dashboard
|
|
147
|
+
- Section headers: `flex justify-between items-center mb-3` — title + link
|
|
148
|
+
|
|
149
|
+
---
|
|
150
|
+
|
|
151
|
+
## 5. Settings Page
|
|
152
|
+
|
|
153
|
+
**Use for:** account settings, team settings, notifications, billing, integrations
|
|
154
|
+
|
|
155
|
+
```
|
|
156
|
+
┌──────────────────────┬──────────────────────────────────┐
|
|
157
|
+
│ SETTINGS NAV │ Profile │
|
|
158
|
+
│ │ Update your name and email. │
|
|
159
|
+
│ Profile │ ─────────────────────────────── │
|
|
160
|
+
│ Security ▶ │ [form content] │
|
|
161
|
+
│ Notifications │ │
|
|
162
|
+
│ Billing │ API Keys │
|
|
163
|
+
│ Integrations │ ─────────────────────────────── │
|
|
164
|
+
│ Team │ [form content] │
|
|
165
|
+
└──────────────────────┴──────────────────────────────────┘
|
|
166
|
+
```
|
|
167
|
+
|
|
168
|
+
**Composition rules:**
|
|
169
|
+
- Settings nav: `200px` left sub-nav, `text-sm`, active item with accent color + weight-medium
|
|
170
|
+
- Content area: `flex-1 max-w-2xl`
|
|
171
|
+
- Each settings section: card with header + content
|
|
172
|
+
- Dangerous actions (delete account): separate section at bottom with danger styling
|
|
173
|
+
|
|
174
|
+
---
|
|
175
|
+
|
|
176
|
+
## 6. Empty / Onboarding Page
|
|
177
|
+
|
|
178
|
+
**Use for:** first-run, empty state for a feature, setup completion
|
|
179
|
+
|
|
180
|
+
```
|
|
181
|
+
┌─────────────────────────────────────────────────────────┐
|
|
182
|
+
│ [Step 1/4 progress] │
|
|
183
|
+
│ │
|
|
184
|
+
│ [geometric illustration] │
|
|
185
|
+
│ │
|
|
186
|
+
│ Connect your CRM │
|
|
187
|
+
│ Import your contacts automatically │
|
|
188
|
+
│ from Salesforce, HubSpot, or CSV. │
|
|
189
|
+
│ │
|
|
190
|
+
│ [Skip] [Connect CRM →] │
|
|
191
|
+
└─────────────────────────────────────────────────────────┘
|
|
192
|
+
```
|
|
193
|
+
|
|
194
|
+
**Composition rules:**
|
|
195
|
+
- Centered, `max-w-sm` to `max-w-md`
|
|
196
|
+
- Progress: `text-xs text-secondary` or step dots above illustration
|
|
197
|
+
- Illustration: clean geometric SVG, 120–160px
|
|
198
|
+
- Title: `text-xl font-semibold`
|
|
199
|
+
- Description: `text-sm text-secondary text-center max-w-xs`
|
|
200
|
+
- Actions: ghost (skip) + primary (main action), `gap-3 mt-8`
|
|
201
|
+
|
|
202
|
+
---
|
|
203
|
+
|
|
204
|
+
## Responsive rules
|
|
205
|
+
|
|
206
|
+
| Breakpoint | Behavior |
|
|
207
|
+
|-----------|---------|
|
|
208
|
+
| `< 640px` | Single column, cards stack |
|
|
209
|
+
| `< 768px` | Tables scroll horizontally (NEVER stack into cards) |
|
|
210
|
+
| `< 1024px` | Sidebar collapses to hamburger; settings nav becomes tab bar |
|
|
211
|
+
| `>= 1024px` | Full app shell with fixed sidebar |
|
|
212
|
+
|
|
213
|
+
**Critical:** Tables **never** become card lists on mobile. Tabular data stays in a table, always with horizontal scroll. This is non-negotiable in this design system.
|
|
214
|
+
|
|
215
|
+
**Control heights** are maintained at all breakpoints — touch targets stay at minimum 36px.
|