@jaimevalasek/aioson 1.4.0 → 1.5.1
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 +31 -1
- package/LICENSE +661 -21
- package/README.md +3 -1
- package/docs/en/squad-dashboard.md +372 -0
- package/docs/openclaw-bridge.md +308 -0
- package/docs/pt/agentes.md +124 -10
- package/docs/pt/cenarios.md +46 -2
- package/docs/pt/comandos-cli.md +60 -1
- package/docs/pt/inicio-rapido.md +18 -2
- package/docs/pt/squad-dashboard.md +373 -0
- package/docs/testing/genome-2.0-matrix.md +5 -5
- package/docs/testing/genome-2.0-rollout.md +9 -9
- package/package.json +2 -2
- package/src/backup-local.js +74 -0
- package/src/cli.js +98 -0
- package/src/commands/backup-local-cmd.js +25 -0
- package/src/commands/runtime.js +242 -0
- package/src/commands/setup-context.js +7 -2
- package/src/commands/squad-daemon.js +209 -0
- package/src/commands/squad-dashboard.js +39 -0
- package/src/commands/squad-deploy.js +64 -0
- package/src/commands/squad-doctor.js +52 -0
- package/src/commands/squad-mcp.js +270 -0
- package/src/commands/squad-processes.js +56 -0
- package/src/commands/squad-recovery.js +42 -0
- package/src/commands/squad-roi.js +291 -0
- package/src/commands/squad-score.js +250 -0
- package/src/commands/squad-status.js +37 -1
- package/src/commands/squad-validate.js +62 -1
- package/src/commands/squad-webhook.js +160 -0
- package/src/commands/squad-worker.js +191 -0
- package/src/commands/squad-worktrees.js +75 -0
- package/src/commands/web-map.js +70 -0
- package/src/commands/web-scrape.js +71 -0
- package/src/constants.js +8 -0
- package/src/context-writer.js +45 -1
- package/src/i18n/messages/en.js +127 -1
- package/src/i18n/messages/es.js +117 -0
- package/src/i18n/messages/fr.js +117 -0
- package/src/i18n/messages/pt-BR.js +126 -1
- package/src/lib/webhook-server.js +328 -0
- package/src/mcp-connectors/registry.js +602 -0
- package/src/runtime-store.js +259 -2
- package/src/squad/external-session.js +180 -0
- package/src/squad/inter-squad.js +74 -0
- package/src/squad/recovery-context.js +201 -0
- package/src/squad/worktree-manager.js +114 -0
- package/src/squad-daemon.js +490 -0
- package/src/squad-dashboard/api.js +223 -0
- package/src/squad-dashboard/attachment-handler.js +93 -0
- package/src/squad-dashboard/context-monitor.js +157 -0
- package/src/squad-dashboard/execution-logs.js +115 -0
- package/src/squad-dashboard/hunk-review.js +209 -0
- package/src/squad-dashboard/metrics.js +133 -0
- package/src/squad-dashboard/process-monitor.js +125 -0
- package/src/squad-dashboard/renderer.js +858 -0
- package/src/squad-dashboard/server.js +232 -0
- package/src/squad-dashboard/styles.js +525 -0
- package/src/squad-dashboard/token-tracker.js +99 -0
- package/src/web.js +284 -0
- package/src/worker-runner.js +339 -0
- package/template/.aioson/agents/analyst.md +4 -0
- package/template/.aioson/agents/architect.md +4 -0
- package/template/.aioson/agents/dev.md +120 -11
- package/template/.aioson/agents/deyvin.md +8 -0
- package/template/.aioson/agents/neo.md +152 -0
- package/template/.aioson/agents/orache.md +17 -0
- package/template/.aioson/agents/orchestrator.md +26 -0
- package/template/.aioson/agents/product.md +60 -12
- package/template/.aioson/agents/qa.md +1 -0
- package/template/.aioson/agents/setup.md +63 -19
- package/template/.aioson/agents/sheldon.md +603 -0
- package/template/.aioson/agents/squad.md +191 -0
- package/template/.aioson/agents/tester.md +254 -0
- package/template/.aioson/agents/ux-ui.md +12 -0
- package/template/.aioson/config.md +6 -0
- package/template/.aioson/locales/en/agents/analyst.md +8 -0
- package/template/.aioson/locales/en/agents/architect.md +8 -0
- package/template/.aioson/locales/en/agents/dev.md +66 -7
- package/template/.aioson/locales/en/agents/deyvin.md +8 -0
- package/template/.aioson/locales/en/agents/neo.md +8 -0
- package/template/.aioson/locales/en/agents/orchestrator.md +26 -0
- package/template/.aioson/locales/en/agents/qa.md +49 -0
- package/template/.aioson/locales/en/agents/setup.md +2 -1
- package/template/.aioson/locales/en/agents/sheldon.md +340 -0
- package/template/.aioson/locales/en/agents/ux-ui.md +8 -0
- package/template/.aioson/locales/es/agents/analyst.md +8 -0
- package/template/.aioson/locales/es/agents/architect.md +8 -0
- package/template/.aioson/locales/es/agents/dev.md +66 -7
- package/template/.aioson/locales/es/agents/deyvin.md +8 -0
- package/template/.aioson/locales/es/agents/neo.md +48 -0
- package/template/.aioson/locales/es/agents/orchestrator.md +26 -0
- package/template/.aioson/locales/es/agents/qa.md +26 -0
- package/template/.aioson/locales/es/agents/setup.md +2 -1
- package/template/.aioson/locales/es/agents/sheldon.md +192 -0
- package/template/.aioson/locales/es/agents/squad.md +63 -0
- package/template/.aioson/locales/es/agents/ux-ui.md +8 -0
- package/template/.aioson/locales/fr/agents/analyst.md +8 -0
- package/template/.aioson/locales/fr/agents/architect.md +8 -0
- package/template/.aioson/locales/fr/agents/dev.md +66 -7
- package/template/.aioson/locales/fr/agents/deyvin.md +8 -0
- package/template/.aioson/locales/fr/agents/neo.md +48 -0
- package/template/.aioson/locales/fr/agents/orchestrator.md +26 -0
- package/template/.aioson/locales/fr/agents/qa.md +26 -0
- package/template/.aioson/locales/fr/agents/setup.md +2 -1
- package/template/.aioson/locales/fr/agents/sheldon.md +192 -0
- package/template/.aioson/locales/fr/agents/squad.md +63 -0
- package/template/.aioson/locales/fr/agents/ux-ui.md +8 -0
- package/template/.aioson/locales/pt-BR/agents/analyst.md +19 -0
- package/template/.aioson/locales/pt-BR/agents/architect.md +19 -0
- package/template/.aioson/locales/pt-BR/agents/dev.md +75 -12
- package/template/.aioson/locales/pt-BR/agents/deyvin.md +8 -0
- package/template/.aioson/locales/pt-BR/agents/neo.md +147 -0
- package/template/.aioson/locales/pt-BR/agents/orchestrator.md +26 -0
- package/template/.aioson/locales/pt-BR/agents/product.md +8 -3
- package/template/.aioson/locales/pt-BR/agents/qa.md +60 -0
- package/template/.aioson/locales/pt-BR/agents/setup.md +2 -1
- package/template/.aioson/locales/pt-BR/agents/sheldon.md +192 -0
- package/template/.aioson/locales/pt-BR/agents/squad.md +105 -0
- package/template/.aioson/locales/pt-BR/agents/ux-ui.md +8 -0
- package/template/.aioson/schemas/squad-blueprint.schema.json +21 -0
- package/template/.aioson/schemas/squad-manifest.schema.json +178 -1
- package/template/.aioson/skills/design/bold-editorial-ui/SKILL.md +205 -0
- package/template/.aioson/skills/design/bold-editorial-ui/references/art-direction.md +338 -0
- package/template/.aioson/skills/design/bold-editorial-ui/references/components.md +977 -0
- package/template/.aioson/skills/design/bold-editorial-ui/references/dashboards.md +218 -0
- package/template/.aioson/skills/design/bold-editorial-ui/references/design-tokens.md +326 -0
- package/template/.aioson/skills/design/bold-editorial-ui/references/motion.md +461 -0
- package/template/.aioson/skills/design/bold-editorial-ui/references/patterns.md +293 -0
- package/template/.aioson/skills/design/bold-editorial-ui/references/websites.md +352 -0
- package/template/.aioson/skills/design/clean-saas-ui/SKILL.md +210 -0
- package/template/.aioson/skills/design/clean-saas-ui/references/art-direction.md +319 -0
- package/template/.aioson/skills/design/clean-saas-ui/references/components.md +365 -0
- package/template/.aioson/skills/design/clean-saas-ui/references/dashboards.md +196 -0
- package/template/.aioson/skills/design/clean-saas-ui/references/design-tokens.md +244 -0
- package/template/.aioson/skills/design/clean-saas-ui/references/motion.md +235 -0
- package/template/.aioson/skills/design/clean-saas-ui/references/patterns.md +215 -0
- package/template/.aioson/skills/design/clean-saas-ui/references/websites.md +295 -0
- package/template/.aioson/skills/design/cognitive-core-ui/SKILL.md +55 -9
- package/template/.aioson/skills/design/cognitive-core-ui/references/art-direction.md +339 -0
- package/template/.aioson/skills/design/cognitive-core-ui/references/components.md +1 -1
- package/template/.aioson/skills/design/cognitive-core-ui/references/dashboards.md +100 -0
- package/template/.aioson/skills/design/cognitive-core-ui/references/design-tokens.md +43 -9
- package/template/.aioson/skills/design/cognitive-core-ui/references/motion.md +40 -0
- package/template/.aioson/skills/design/cognitive-core-ui/references/patterns.md +1 -1
- package/template/.aioson/skills/design/cognitive-core-ui/references/websites.md +99 -12
- package/template/.aioson/skills/design/warm-craft-ui/SKILL.md +209 -0
- package/template/.aioson/skills/design/warm-craft-ui/references/art-direction.md +324 -0
- package/template/.aioson/skills/design/warm-craft-ui/references/components.md +508 -0
- package/template/.aioson/skills/design/warm-craft-ui/references/dashboards.md +223 -0
- package/template/.aioson/skills/design/warm-craft-ui/references/design-tokens.md +374 -0
- package/template/.aioson/skills/design/warm-craft-ui/references/motion.md +356 -0
- package/template/.aioson/skills/design/warm-craft-ui/references/patterns.md +288 -0
- package/template/.aioson/skills/design/warm-craft-ui/references/websites.md +289 -0
- package/template/.aioson/skills/premium-visual-design/SKILL.md +83 -0
- package/template/.aioson/skills/premium-visual-design/components/agent-badge.md +92 -0
- package/template/.aioson/skills/premium-visual-design/components/dependency-node.md +102 -0
- package/template/.aioson/skills/premium-visual-design/components/mention-autocomplete.md +136 -0
- package/template/.aioson/skills/premium-visual-design/components/notification-center.md +136 -0
- package/template/.aioson/skills/premium-visual-design/components/review-action-bar.md +188 -0
- package/template/.aioson/skills/premium-visual-design/components/team-switcher.md +131 -0
- package/template/.aioson/skills/premium-visual-design/patterns/agent-message-thread.md +198 -0
- package/template/.aioson/skills/premium-visual-design/patterns/notification-panel.md +275 -0
- package/template/.aioson/skills/premium-visual-design/patterns/review-workflow-ui.md +234 -0
- package/template/.aioson/skills/premium-visual-design/patterns/task-dependency-graph.md +147 -0
- package/template/.aioson/skills/premium-visual-design/tokens/status-extended.md +142 -0
- package/template/.aioson/skills/squad/formats/catalog.json +15 -0
- package/template/.aioson/skills/squad/formats/content/blog-post.md +47 -0
- package/template/.aioson/skills/squad/formats/content/newsletter.md +47 -0
- package/template/.aioson/skills/squad/formats/creative/podcast-script.md +43 -0
- package/template/.aioson/skills/squad/formats/creative/video-script.md +41 -0
- package/template/.aioson/skills/squad/formats/social/instagram-feed.md +42 -0
- package/template/.aioson/skills/squad/formats/social/linkedin-post.md +42 -0
- package/template/.aioson/skills/squad/formats/social/tiktok.md +39 -0
- package/template/.aioson/skills/squad/formats/social/twitter-thread.md +39 -0
- package/template/.aioson/skills/squad/formats/social/youtube-long.md +47 -0
- package/template/.aioson/skills/squad/formats/social/youtube-shorts.md +39 -0
- package/template/.aioson/skills/squad/patterns/multi-platform-pattern.md +108 -0
- package/template/.aioson/skills/squad/patterns/persona-based-pattern.md +98 -0
- package/template/.aioson/skills/squad/patterns/pipeline-pattern.md +106 -0
- package/template/.aioson/skills/squad/patterns/review-loop-pattern.md +81 -0
- package/template/.aioson/skills/squad/references/checklist-templates.md +122 -0
- package/template/.aioson/skills/squad/references/executor-archetypes.md +123 -0
- package/template/.aioson/skills/squad/references/workflow-templates.md +169 -0
- package/template/.aioson/skills/static/debugging-protocol.md +42 -0
- package/template/.aioson/skills/static/git-worktrees.md +36 -0
- package/template/.aioson/tasks/implementation-plan.md +19 -0
- package/template/.aioson/tasks/squad-design.md +28 -0
- package/template/.aioson/tasks/squad-profile.md +48 -0
- package/template/.aioson/tasks/squad-review.md +61 -0
- package/template/.aioson/tasks/squad-task-decompose.md +66 -0
- package/template/.claude/commands/aioson/agent/neo.md +5 -0
- package/template/.claude/commands/aioson/agent/tester.md +5 -0
- package/template/.gemini/GEMINI.md +1 -0
- package/template/.gemini/commands/aios-neo.toml +4 -0
- package/template/.gemini/commands/aios-tester.toml +6 -0
- package/template/AGENTS.md +3 -0
- package/template/CLAUDE.md +5 -2
- package/template/OPENCODE.md +2 -0
|
@@ -0,0 +1,293 @@
|
|
|
1
|
+
# Page Patterns — Bold Editorial UI
|
|
2
|
+
|
|
3
|
+
Composition guides for app shells and page types. Uses tokens from `design-tokens.md` and components from `components.md`.
|
|
4
|
+
|
|
5
|
+
---
|
|
6
|
+
|
|
7
|
+
## App Shell
|
|
8
|
+
|
|
9
|
+
### Full Shell (Sidebar + Topbar + Content)
|
|
10
|
+
|
|
11
|
+
```
|
|
12
|
+
+----------------------------------------------------------+
|
|
13
|
+
| TOPBAR (sticky, 64px, dark glass) |
|
|
14
|
+
| [Logo mark] [Nav — slim, mono labels] [CTA btn] |
|
|
15
|
+
+----------------------------------------------------------+
|
|
16
|
+
| | |
|
|
17
|
+
| SIDEBAR | CONTENT AREA |
|
|
18
|
+
| 200px | padding: var(--space-8) var(--space-10) |
|
|
19
|
+
| fixed | |
|
|
20
|
+
| slim | PAGE HEADER |
|
|
21
|
+
| mono | [mono overline] |
|
|
22
|
+
| nav | [display heading] |
|
|
23
|
+
| | [subtitle + actions right] |
|
|
24
|
+
| | |
|
|
25
|
+
| [items | CONTENT SECTIONS |
|
|
26
|
+
| mono | cards / tables / charts |
|
|
27
|
+
| labels]| |
|
|
28
|
+
| | |
|
|
29
|
+
+----------+-----------------------------------------------+
|
|
30
|
+
```
|
|
31
|
+
|
|
32
|
+
```css
|
|
33
|
+
.app-shell {
|
|
34
|
+
display: flex;
|
|
35
|
+
flex-direction: column;
|
|
36
|
+
min-height: 100vh;
|
|
37
|
+
background: var(--bg-base);
|
|
38
|
+
}
|
|
39
|
+
|
|
40
|
+
.app-shell__topbar {
|
|
41
|
+
position: sticky;
|
|
42
|
+
top: 0;
|
|
43
|
+
z-index: var(--z-sticky);
|
|
44
|
+
height: 64px;
|
|
45
|
+
/* see Navigation: Top Bar in components.md */
|
|
46
|
+
}
|
|
47
|
+
|
|
48
|
+
.app-shell__body {
|
|
49
|
+
display: flex;
|
|
50
|
+
flex: 1;
|
|
51
|
+
overflow: hidden;
|
|
52
|
+
}
|
|
53
|
+
|
|
54
|
+
.app-shell__sidebar {
|
|
55
|
+
width: 200px;
|
|
56
|
+
flex-shrink: 0;
|
|
57
|
+
height: calc(100vh - 64px);
|
|
58
|
+
position: sticky;
|
|
59
|
+
top: 64px;
|
|
60
|
+
overflow-y: auto;
|
|
61
|
+
/* see Sidebar in components.md */
|
|
62
|
+
}
|
|
63
|
+
|
|
64
|
+
.app-shell__content {
|
|
65
|
+
flex: 1;
|
|
66
|
+
min-width: 0;
|
|
67
|
+
overflow-y: auto;
|
|
68
|
+
padding: var(--space-8) var(--space-10);
|
|
69
|
+
}
|
|
70
|
+
```
|
|
71
|
+
|
|
72
|
+
### Minimal Shell (no sidebar — marketing or focused apps)
|
|
73
|
+
|
|
74
|
+
```
|
|
75
|
+
+----------------------------------------------------------+
|
|
76
|
+
| TOPBAR (sticky, 64px) |
|
|
77
|
+
+----------------------------------------------------------+
|
|
78
|
+
| |
|
|
79
|
+
| CONTENT — full width, max-width: var(--content-xl) |
|
|
80
|
+
| margin: 0 auto |
|
|
81
|
+
| padding: var(--space-12) var(--space-8) |
|
|
82
|
+
| |
|
|
83
|
+
+----------------------------------------------------------+
|
|
84
|
+
```
|
|
85
|
+
|
|
86
|
+
---
|
|
87
|
+
|
|
88
|
+
## Page Header
|
|
89
|
+
|
|
90
|
+
Used at the top of every app page inside the content area.
|
|
91
|
+
|
|
92
|
+
```
|
|
93
|
+
[MONO OVERLINE] — category, section name in mono uppercase
|
|
94
|
+
[DISPLAY HEADING] — page title in font-display
|
|
95
|
+
[SUBTITLE] — optional, body font, text-secondary [ACTION BUTTONS]
|
|
96
|
+
[DIVIDER] — 1px border-subtle
|
|
97
|
+
```
|
|
98
|
+
|
|
99
|
+
```css
|
|
100
|
+
.page-header {
|
|
101
|
+
margin-bottom: var(--space-8);
|
|
102
|
+
}
|
|
103
|
+
|
|
104
|
+
.page-header__overline {
|
|
105
|
+
/* .mono-caption */
|
|
106
|
+
margin-bottom: var(--space-2);
|
|
107
|
+
}
|
|
108
|
+
|
|
109
|
+
.page-header__title {
|
|
110
|
+
font-family: var(--font-display);
|
|
111
|
+
font-size: var(--text-3xl);
|
|
112
|
+
font-weight: var(--weight-bold);
|
|
113
|
+
letter-spacing: var(--tracking-tight);
|
|
114
|
+
line-height: var(--leading-snug);
|
|
115
|
+
color: var(--text-heading);
|
|
116
|
+
}
|
|
117
|
+
|
|
118
|
+
.page-header__row {
|
|
119
|
+
display: flex;
|
|
120
|
+
align-items: flex-end;
|
|
121
|
+
justify-content: space-between;
|
|
122
|
+
gap: var(--space-4);
|
|
123
|
+
margin-top: var(--space-2);
|
|
124
|
+
}
|
|
125
|
+
|
|
126
|
+
.page-header__subtitle {
|
|
127
|
+
font-family: var(--font-body);
|
|
128
|
+
font-size: var(--text-sm);
|
|
129
|
+
color: var(--text-secondary);
|
|
130
|
+
max-width: 560px;
|
|
131
|
+
}
|
|
132
|
+
|
|
133
|
+
.page-header__divider {
|
|
134
|
+
margin-top: var(--space-6);
|
|
135
|
+
height: 1px;
|
|
136
|
+
background: var(--border-subtle);
|
|
137
|
+
}
|
|
138
|
+
```
|
|
139
|
+
|
|
140
|
+
---
|
|
141
|
+
|
|
142
|
+
## Dashboard Page
|
|
143
|
+
|
|
144
|
+
```
|
|
145
|
+
PAGE HEADER
|
|
146
|
+
overline: "OVERVIEW" (mono)
|
|
147
|
+
title: Project / Dashboard name (display, text-3xl)
|
|
148
|
+
actions: date range selector + export button
|
|
149
|
+
|
|
150
|
+
HERO INSIGHT (full width or 2/3 width)
|
|
151
|
+
Stat card: ONE large display-font number + trend + context
|
|
152
|
+
background: var(--bg-surface), shadow-md
|
|
153
|
+
|
|
154
|
+
SECONDARY STATS (3-4 columns)
|
|
155
|
+
Stat cards, smaller, shadow-sm
|
|
156
|
+
|
|
157
|
+
CHART SECTION
|
|
158
|
+
Section header (mono overline + display title text-xl)
|
|
159
|
+
One or two chart containers (Base Card, padding var(--space-6))
|
|
160
|
+
|
|
161
|
+
RECENT ACTIVITY or TABLE
|
|
162
|
+
Section header + table or activity feed
|
|
163
|
+
```
|
|
164
|
+
|
|
165
|
+
Rules:
|
|
166
|
+
- Never start with four equal stat cards.
|
|
167
|
+
- Hero insight gets `shadow-md`, secondary cards get `shadow-sm`.
|
|
168
|
+
- Charts use only the editorial chart palette (see `dashboards.md`).
|
|
169
|
+
- Section titles use `font-display`.
|
|
170
|
+
|
|
171
|
+
---
|
|
172
|
+
|
|
173
|
+
## Detail / Profile Page
|
|
174
|
+
|
|
175
|
+
```
|
|
176
|
+
DETAIL HEADER (full width card or flush section)
|
|
177
|
+
Media (image / avatar) + Name / Title + Meta badges
|
|
178
|
+
Tabs below header
|
|
179
|
+
|
|
180
|
+
TAB BAR
|
|
181
|
+
border-bottom: var(--border-medium)
|
|
182
|
+
active tab: accent bottom border (2px)
|
|
183
|
+
font-body, weight-medium
|
|
184
|
+
|
|
185
|
+
CONTENT SECTIONS (inside active tab)
|
|
186
|
+
Cards organized by priority
|
|
187
|
+
Sidebar panel (1/3) for quick actions and summary
|
|
188
|
+
```
|
|
189
|
+
|
|
190
|
+
---
|
|
191
|
+
|
|
192
|
+
## Settings Page
|
|
193
|
+
|
|
194
|
+
```
|
|
195
|
+
SETTINGS SHELL
|
|
196
|
+
Left nav (1/4): section list — mono labels, active with accent border-left
|
|
197
|
+
Right content (3/4): form sections
|
|
198
|
+
|
|
199
|
+
FORM SECTION
|
|
200
|
+
Section card with:
|
|
201
|
+
header: display font title + mono subtitle
|
|
202
|
+
divider
|
|
203
|
+
form groups (label above input)
|
|
204
|
+
section save bar (sticky bottom, accent CTA)
|
|
205
|
+
```
|
|
206
|
+
|
|
207
|
+
---
|
|
208
|
+
|
|
209
|
+
## List / Browse Page
|
|
210
|
+
|
|
211
|
+
```
|
|
212
|
+
PAGE HEADER
|
|
213
|
+
title + "[+ New Item]" button
|
|
214
|
+
|
|
215
|
+
FILTER BAR (horizontal, bg-surface, border-bottom)
|
|
216
|
+
search input + dropdowns + active filter badges + clear
|
|
217
|
+
|
|
218
|
+
TABLE AREA
|
|
219
|
+
table component (full width)
|
|
220
|
+
row click → opens detail panel or navigates
|
|
221
|
+
|
|
222
|
+
PAGINATION BAR
|
|
223
|
+
bottom of table, flex between: count info + page controls
|
|
224
|
+
```
|
|
225
|
+
|
|
226
|
+
---
|
|
227
|
+
|
|
228
|
+
## Onboarding Flow
|
|
229
|
+
|
|
230
|
+
```
|
|
231
|
+
PROGRESS BAR (top, full-width, accent fill)
|
|
232
|
+
STEP INDICATOR (mono — "STEP 02 / 05")
|
|
233
|
+
|
|
234
|
+
CENTERED CONTENT (max-width: var(--content-sm))
|
|
235
|
+
Display heading for step title (font-display, text-3xl)
|
|
236
|
+
Description (body, text-secondary, generous line-height)
|
|
237
|
+
Form or interactive elements
|
|
238
|
+
|
|
239
|
+
ACTIONS (full-width button stack at bottom)
|
|
240
|
+
[Continue →] (primary, full-width)
|
|
241
|
+
[Back] (ghost, smaller)
|
|
242
|
+
```
|
|
243
|
+
|
|
244
|
+
---
|
|
245
|
+
|
|
246
|
+
## Auth Pages
|
|
247
|
+
|
|
248
|
+
### Login / Sign Up
|
|
249
|
+
|
|
250
|
+
```
|
|
251
|
+
LAYOUT: full-viewport
|
|
252
|
+
Left (1/2, dark): branding panel
|
|
253
|
+
logo + tagline large (display font)
|
|
254
|
+
optional: testimonial or feature list
|
|
255
|
+
background: var(--bg-void) with subtle grain
|
|
256
|
+
|
|
257
|
+
Right (1/2, surface): form panel
|
|
258
|
+
centered card (max-width: 400px)
|
|
259
|
+
form: email, password
|
|
260
|
+
CTA button (primary, full-width)
|
|
261
|
+
social auth options
|
|
262
|
+
link to other auth action
|
|
263
|
+
```
|
|
264
|
+
|
|
265
|
+
Alternative — Centered single card:
|
|
266
|
+
```
|
|
267
|
+
Full-viewport background: var(--bg-base)
|
|
268
|
+
Centered card (max-width: 400px, shadow-xl, radius-xl)
|
|
269
|
+
Logo above, form inside, footer links below
|
|
270
|
+
```
|
|
271
|
+
|
|
272
|
+
---
|
|
273
|
+
|
|
274
|
+
## Responsive Breakpoints
|
|
275
|
+
|
|
276
|
+
```css
|
|
277
|
+
/* Mobile first */
|
|
278
|
+
@media (min-width: 640px) { /* sm — sidebar starts appearing */ }
|
|
279
|
+
@media (min-width: 768px) { /* md — two-column layouts */ }
|
|
280
|
+
@media (min-width: 1024px) { /* lg — full sidebar + content */ }
|
|
281
|
+
@media (min-width: 1280px) { /* xl — wide content, max readable */ }
|
|
282
|
+
@media (min-width: 1536px) { /* 2xl — max layout width */ }
|
|
283
|
+
```
|
|
284
|
+
|
|
285
|
+
Rules:
|
|
286
|
+
- Below 1024px: sidebar collapses to top hamburger nav.
|
|
287
|
+
- Below 768px: two-column card grids become single column.
|
|
288
|
+
- Tables: always horizontal scroll on mobile — never stack into cards (tabular data must remain a table).
|
|
289
|
+
- Display type (`text-5xl`, `text-6xl`) scales down on mobile:
|
|
290
|
+
- `text-6xl` → `text-4xl` on mobile
|
|
291
|
+
- `text-5xl` → `text-3xl` on mobile
|
|
292
|
+
- `text-4xl` → `text-2xl` on mobile
|
|
293
|
+
- Touch targets: minimum 44x44px for all interactive elements.
|
|
@@ -0,0 +1,352 @@
|
|
|
1
|
+
# Website Layouts — Bold Editorial UI
|
|
2
|
+
|
|
3
|
+
Composition guides for landing pages, product pages, and marketing sites. Uses tokens from `design-tokens.md` and components from `components.md`.
|
|
4
|
+
|
|
5
|
+
---
|
|
6
|
+
|
|
7
|
+
## General Website Rules
|
|
8
|
+
|
|
9
|
+
1. **Typography dominates.** The headline is the hero. If the design relies on an image to carry impact, the type is not working hard enough.
|
|
10
|
+
2. **Dark default, light as contrast.** Marketing pages use near-black backgrounds. Light sections feel like spotlights — use them intentionally.
|
|
11
|
+
3. **Editorial pacing.** Every page must follow a rhythm: dense impact → white space → impact → pause. Never four identical sections.
|
|
12
|
+
4. **Mono captions everywhere.** Every overline, category, date, and section label uses `var(--font-mono)` + uppercase + wide tracking.
|
|
13
|
+
5. **One accent moment per viewport.** The CTA button or the one key visual element gets `--shadow-glow`. Nothing else.
|
|
14
|
+
6. **Real copy.** No Lorem ipsum. Headlines must be uncomfortable to read — not clever taglines, but statements that mean something.
|
|
15
|
+
7. **No warm aesthetics.** No rounded corners above `radius-xl`, no serif fonts, no warm beige backgrounds.
|
|
16
|
+
|
|
17
|
+
---
|
|
18
|
+
|
|
19
|
+
## Navigation
|
|
20
|
+
|
|
21
|
+
```
|
|
22
|
+
STICKY HEADER
|
|
23
|
+
height: 64px
|
|
24
|
+
background: rgba(10, 10, 10, 0.85) /* --bg-base + opacity */
|
|
25
|
+
backdrop-filter: blur(12px)
|
|
26
|
+
border-bottom: 1px solid var(--border-subtle)
|
|
27
|
+
position: sticky; top: 0
|
|
28
|
+
z-index: var(--z-sticky)
|
|
29
|
+
padding: 0 var(--space-8)
|
|
30
|
+
display: flex; align-items: center; justify-content: space-between
|
|
31
|
+
|
|
32
|
+
Logo (left):
|
|
33
|
+
font-display, weight-bold, text-lg, text-heading, no decoration
|
|
34
|
+
|
|
35
|
+
Nav links (center):
|
|
36
|
+
font-body, text-sm, weight-medium, text-secondary
|
|
37
|
+
hover: text-heading
|
|
38
|
+
active: text-heading + 1px solid border-accent bottom (optional)
|
|
39
|
+
|
|
40
|
+
CTA (right):
|
|
41
|
+
.btn-primary, compact height 36px
|
|
42
|
+
OR .btn-ghost + .btn-primary side by side
|
|
43
|
+
|
|
44
|
+
MOBILE (< 768px)
|
|
45
|
+
Hamburger icon → full-screen overlay menu
|
|
46
|
+
background: var(--bg-base) at 0.96 opacity
|
|
47
|
+
Nav items stacked vertically, text-xl, font-display
|
|
48
|
+
CTA at bottom
|
|
49
|
+
Close button top-right
|
|
50
|
+
```
|
|
51
|
+
|
|
52
|
+
---
|
|
53
|
+
|
|
54
|
+
## Hero Patterns
|
|
55
|
+
|
|
56
|
+
### Pattern A — Statement Hero
|
|
57
|
+
|
|
58
|
+
```
|
|
59
|
+
+-----------------------------------------------------------+
|
|
60
|
+
| BACKGROUND: var(--bg-base) or var(--bg-void) |
|
|
61
|
+
| Optional: grain texture overlay at 3% opacity |
|
|
62
|
+
| |
|
|
63
|
+
| MONO OVERLINE (centered or left) |
|
|
64
|
+
| "INTRODUCING / PRODUCT — 2025" in font-mono |
|
|
65
|
+
| |
|
|
66
|
+
| HEADLINE |
|
|
67
|
+
| font-display, text-5xl, weight-bold |
|
|
68
|
+
| letter-spacing: var(--tracking-tighter) |
|
|
69
|
+
| line-height: var(--leading-tight) |
|
|
70
|
+
| max-width: 800px, text-align: left or center |
|
|
71
|
+
| color: var(--text-heading) |
|
|
72
|
+
| |
|
|
73
|
+
| SUBTITLE |
|
|
74
|
+
| font-body, text-lg, text-primary, max-width: 560px |
|
|
75
|
+
| |
|
|
76
|
+
| [CTA Hero Button] [Ghost Button — optional] |
|
|
77
|
+
| .btn-hero with shadow-glow |
|
|
78
|
+
| |
|
|
79
|
+
| SOCIAL PROOF (optional) |
|
|
80
|
+
| "Used by engineers at [logos]" — mono text-xs |
|
|
81
|
+
| |
|
|
82
|
+
+-----------------------------------------------------------+
|
|
83
|
+
```
|
|
84
|
+
|
|
85
|
+
Use when: the message IS the product. Vision, manifesto, or pure product statement. No visual needed.
|
|
86
|
+
|
|
87
|
+
### Pattern B — Product Theater Hero
|
|
88
|
+
|
|
89
|
+
```
|
|
90
|
+
+---------------------------+---------------------------+
|
|
91
|
+
| | |
|
|
92
|
+
| OVERLINE (mono) | PRODUCT VISUAL |
|
|
93
|
+
| | screenshot / terminal |
|
|
94
|
+
| HEADLINE | floating at 1-2deg tilt |
|
|
95
|
+
| text-4xl or text-5xl | border: --border-medium |
|
|
96
|
+
| font-display, bold | radius: --radius-lg |
|
|
97
|
+
| | shadow: --shadow-xl |
|
|
98
|
+
| SUBTITLE | + shadow-glow |
|
|
99
|
+
| text-lg, text-primary | |
|
|
100
|
+
| max-width: 480px | gradient radial behind |
|
|
101
|
+
| | the product (subtle |
|
|
102
|
+
| [Hero CTA] | spotlight effect) |
|
|
103
|
+
| | |
|
|
104
|
+
| MONO TRUST LINES | |
|
|
105
|
+
| version badge + metrics | |
|
|
106
|
+
| | |
|
|
107
|
+
+---------------------------+---------------------------+
|
|
108
|
+
```
|
|
109
|
+
|
|
110
|
+
Use when: product has a strong visual — UI, terminal, API, diagram. Let the product be the proof.
|
|
111
|
+
|
|
112
|
+
### Pattern C — Split Cinematic Hero
|
|
113
|
+
|
|
114
|
+
```
|
|
115
|
+
+-------------------+-----------------------------------+
|
|
116
|
+
| | |
|
|
117
|
+
| HEADLINE | HIGH-CONTRAST VISUAL |
|
|
118
|
+
| text-5xl+ | Full-bleed image or video |
|
|
119
|
+
| bold, white | Dark overlay gradient |
|
|
120
|
+
| | (rgba(10,10,10,0.4)) |
|
|
121
|
+
| SUBTITLE | |
|
|
122
|
+
| | OR: Abstract dark illustration |
|
|
123
|
+
| [CTA] | code aesthetic, data visualization|
|
|
124
|
+
| | |
|
|
125
|
+
+-------------------+-----------------------------------+
|
|
126
|
+
```
|
|
127
|
+
|
|
128
|
+
Use when: brand-heavy experience, premium product, emotional product story.
|
|
129
|
+
|
|
130
|
+
### Pattern D — Full-Bleed Hero
|
|
131
|
+
|
|
132
|
+
```
|
|
133
|
+
+-----------------------------------------------------------+
|
|
134
|
+
| FULL-VIEWPORT background |
|
|
135
|
+
| Video or high-contrast dark photography |
|
|
136
|
+
| Gradient overlay: rgba(10,10,10,0.55) uniform |
|
|
137
|
+
| OR darker at bottom — text area |
|
|
138
|
+
| |
|
|
139
|
+
| Centered content, max-width: var(--content-sm) |
|
|
140
|
+
| |
|
|
141
|
+
| MONO OVERLINE |
|
|
142
|
+
| HEADLINE — white, text-5xl, centered |
|
|
143
|
+
| [CTA — accent, centered] |
|
|
144
|
+
| |
|
|
145
|
+
| SCROLL INDICATOR (bottom center) |
|
|
146
|
+
| animated chevron or line pulsing down |
|
|
147
|
+
| |
|
|
148
|
+
+-----------------------------------------------------------+
|
|
149
|
+
```
|
|
150
|
+
|
|
151
|
+
Use when: cinematic, atmospheric, experience-first products.
|
|
152
|
+
|
|
153
|
+
---
|
|
154
|
+
|
|
155
|
+
## Section Patterns
|
|
156
|
+
|
|
157
|
+
### Feature Alternating
|
|
158
|
+
|
|
159
|
+
```
|
|
160
|
+
SECTION 1 (visual left, text right)
|
|
161
|
+
+---------------------------+---------------------------+
|
|
162
|
+
| [Product screenshot | MONO OVERLINE |
|
|
163
|
+
| or illustration | DISPLAY TITLE (text-2xl) |
|
|
164
|
+
| radius-lg, shadow-lg] | DESCRIPTION |
|
|
165
|
+
| | BULLET POINTS or LIST |
|
|
166
|
+
| | [CTA link →] |
|
|
167
|
+
+---------------------------+---------------------------+
|
|
168
|
+
|
|
169
|
+
SECTION 2 (text left, visual right)
|
|
170
|
+
+---------------------------+---------------------------+
|
|
171
|
+
| MONO OVERLINE | [Product screenshot |
|
|
172
|
+
| DISPLAY TITLE | different angle] |
|
|
173
|
+
| DESCRIPTION | |
|
|
174
|
+
+---------------------------+---------------------------+
|
|
175
|
+
```
|
|
176
|
+
|
|
177
|
+
Rules:
|
|
178
|
+
- Always alternate sides.
|
|
179
|
+
- Product visuals get `radius-lg` + `shadow-lg`. Never flat or borderless.
|
|
180
|
+
- Vertical padding between sections: `var(--space-24)` minimum.
|
|
181
|
+
|
|
182
|
+
---
|
|
183
|
+
|
|
184
|
+
### Metrics Strip
|
|
185
|
+
|
|
186
|
+
```
|
|
187
|
+
HORIZONTAL STRIP (full width, bg-surface card)
|
|
188
|
+
3-5 metrics side by side, divided by 1px border-subtle
|
|
189
|
+
|
|
190
|
+
Each metric:
|
|
191
|
+
MONO LABEL (text-xs, text-muted, uppercase, tracking-widest)
|
|
192
|
+
DISPLAY NUMBER (font-display, text-4xl, weight-bold, text-heading)
|
|
193
|
+
TREND (mono text-xs, semantic color)
|
|
194
|
+
|
|
195
|
+
padding: var(--space-8) var(--space-12)
|
|
196
|
+
border: 1px solid var(--border-subtle)
|
|
197
|
+
radius: var(--radius-lg)
|
|
198
|
+
shadow: var(--shadow-sm)
|
|
199
|
+
```
|
|
200
|
+
|
|
201
|
+
Rules:
|
|
202
|
+
- Numbers animate on scroll entry (see `motion.md` — Counter Roll).
|
|
203
|
+
- No individual card frames around each metric — one unified strip.
|
|
204
|
+
|
|
205
|
+
---
|
|
206
|
+
|
|
207
|
+
### Testimonial Editorial
|
|
208
|
+
|
|
209
|
+
```
|
|
210
|
+
PULL QUOTE (centered, max-width: 680px)
|
|
211
|
+
Opening quote mark: oversized, accent color, font-display
|
|
212
|
+
QUOTE TEXT: font-display, text-2xl, italic, text-heading, line-height: var(--leading-snug)
|
|
213
|
+
|
|
214
|
+
ATTRIBUTION (below quote)
|
|
215
|
+
avatar (40px, radius-md) + name (font-body, weight-semibold) + title + company
|
|
216
|
+
font: text-sm, text-secondary
|
|
217
|
+
|
|
218
|
+
BACKGROUND: alternating — if page is dark, testimonial section is light (white spotlight moment)
|
|
219
|
+
```
|
|
220
|
+
|
|
221
|
+
Rules:
|
|
222
|
+
- One testimonial section per page. Make it count.
|
|
223
|
+
- Pull quote is strongly preferred over card grid — this is editorial, not social media.
|
|
224
|
+
- Never a gray box. Either dramatic editorial treatment or nothing.
|
|
225
|
+
|
|
226
|
+
---
|
|
227
|
+
|
|
228
|
+
### Case Study Cards
|
|
229
|
+
|
|
230
|
+
```
|
|
231
|
+
GRID (2 columns on desktop)
|
|
232
|
+
Each card:
|
|
233
|
+
background: var(--bg-surface)
|
|
234
|
+
border: 1px solid var(--border-subtle)
|
|
235
|
+
radius: var(--radius-lg)
|
|
236
|
+
overflow: hidden
|
|
237
|
+
|
|
238
|
+
IMAGE (top, aspect-ratio: 4/3, object-fit: cover)
|
|
239
|
+
On hover: image scale(1.03), dark overlay fades in with project details
|
|
240
|
+
|
|
241
|
+
BODY (padding var(--space-6))
|
|
242
|
+
MONO CAPTION — year + category
|
|
243
|
+
TITLE — font-display, text-xl, weight-bold
|
|
244
|
+
DESCRIPTION — font-body, text-sm, text-secondary
|
|
245
|
+
```
|
|
246
|
+
|
|
247
|
+
---
|
|
248
|
+
|
|
249
|
+
### Logo Cloud
|
|
250
|
+
|
|
251
|
+
```
|
|
252
|
+
HORIZONTAL ROW
|
|
253
|
+
"TRUSTED BY TEAMS AT" — mono label, text-xs, text-muted, uppercase
|
|
254
|
+
Logos: monochrome white (dark theme) or black (light theme), opacity 0.5
|
|
255
|
+
Hover: opacity 1, transition var(--transition-base)
|
|
256
|
+
Container: bg-surface, border-y: var(--border-subtle), padding var(--space-6) 0
|
|
257
|
+
```
|
|
258
|
+
|
|
259
|
+
---
|
|
260
|
+
|
|
261
|
+
### Pricing Section
|
|
262
|
+
|
|
263
|
+
```
|
|
264
|
+
SECTION HEADER (centered)
|
|
265
|
+
mono overline: "PRICING"
|
|
266
|
+
display title: "Simple, transparent." (font-display, text-3xl)
|
|
267
|
+
subtitle: font-body, text-lg, text-secondary
|
|
268
|
+
|
|
269
|
+
PRICING CARDS (2-3 columns, centered grid)
|
|
270
|
+
Each card:
|
|
271
|
+
background: var(--bg-surface)
|
|
272
|
+
border: 1px solid var(--border-subtle)
|
|
273
|
+
radius: var(--radius-lg)
|
|
274
|
+
padding: var(--space-8)
|
|
275
|
+
|
|
276
|
+
PLAN NAME: mono, text-sm, uppercase, tracking-widest, text-secondary
|
|
277
|
+
PRICE: font-display, text-4xl, weight-bold, text-heading
|
|
278
|
+
PER PERIOD: mono, text-xs, text-muted
|
|
279
|
+
FEATURE LIST: body text-sm, checkmark icons in semantic-green
|
|
280
|
+
CTA: .btn-primary or .btn-secondary (full width)
|
|
281
|
+
|
|
282
|
+
Featured card:
|
|
283
|
+
border: 1px solid var(--accent)
|
|
284
|
+
shadow: var(--shadow-lg) + var(--shadow-glow)
|
|
285
|
+
"RECOMMENDED" mono badge above card (rotated -2deg optional)
|
|
286
|
+
```
|
|
287
|
+
|
|
288
|
+
---
|
|
289
|
+
|
|
290
|
+
### CTA Section (pre-footer)
|
|
291
|
+
|
|
292
|
+
```
|
|
293
|
+
BACKGROUND: alternating from page (if page dark → section light; if page light → section dark)
|
|
294
|
+
MAX-WIDTH: var(--content-lg), centered, margin auto
|
|
295
|
+
PADDING: var(--space-20) var(--space-8)
|
|
296
|
+
|
|
297
|
+
MONO OVERLINE: "START TODAY"
|
|
298
|
+
DISPLAY TITLE: font-display, text-3xl, weight-bold
|
|
299
|
+
SUBTITLE: font-body, text-lg, text-secondary, max-width: 480px
|
|
300
|
+
BUTTONS: [Hero CTA] + [Ghost optional]
|
|
301
|
+
```
|
|
302
|
+
|
|
303
|
+
---
|
|
304
|
+
|
|
305
|
+
## Footer
|
|
306
|
+
|
|
307
|
+
```
|
|
308
|
+
BACKGROUND: var(--bg-void)
|
|
309
|
+
BORDER-TOP: 1px solid var(--border-subtle)
|
|
310
|
+
PADDING: var(--space-16) var(--space-8) var(--space-8)
|
|
311
|
+
|
|
312
|
+
LAYOUT (4 columns on desktop, stacked on mobile)
|
|
313
|
+
Column 1: Logo + tagline (font-display, text-sm, italic, text-secondary) + social icons
|
|
314
|
+
Columns 2-4: Link groups
|
|
315
|
+
|
|
316
|
+
Link group title:
|
|
317
|
+
font-family: var(--font-mono)
|
|
318
|
+
font-size: var(--text-xs)
|
|
319
|
+
font-weight: var(--weight-medium)
|
|
320
|
+
letter-spacing: var(--tracking-widest)
|
|
321
|
+
text-transform: uppercase
|
|
322
|
+
color: var(--text-muted)
|
|
323
|
+
margin-bottom: var(--space-4)
|
|
324
|
+
|
|
325
|
+
Links:
|
|
326
|
+
font: var(--font-body), var(--text-sm), var(--text-secondary)
|
|
327
|
+
hover: var(--text-heading)
|
|
328
|
+
line-height: 2
|
|
329
|
+
|
|
330
|
+
BOTTOM BAR
|
|
331
|
+
border-top: 1px solid var(--border-subtle)
|
|
332
|
+
margin-top: var(--space-8)
|
|
333
|
+
padding-top: var(--space-6)
|
|
334
|
+
display: flex; justify-content: space-between
|
|
335
|
+
copyright: font-mono, text-xs, text-muted, uppercase
|
|
336
|
+
legal links: font-body, text-xs, text-secondary
|
|
337
|
+
```
|
|
338
|
+
|
|
339
|
+
---
|
|
340
|
+
|
|
341
|
+
## Anti-Patterns — Never Do This
|
|
342
|
+
|
|
343
|
+
1. **Generic dark landing page**: gradient mesh background, centered headline, abstract 3D blob in the background. The visual signature of AI-generated zero-personality marketing.
|
|
344
|
+
2. **Gradient mesh backgrounds**: `#8B5CF6` → `#EC4899` → `#EF4444` in an mesh. This is explicitly NOT Bold Editorial.
|
|
345
|
+
3. **Purple or blue as accent**: this system is red-orange. Blue and purple belong to Glassmorphism and Clean SaaS.
|
|
346
|
+
4. **Rounded pill buttons everywhere**: hero buttons use `radius-md` (6px). Only secondary badges are pills. Pill-everything belongs to Warm Craft.
|
|
347
|
+
5. **Serif fonts**: Source Serif or any editorial serif is Warm Craft territory. Bold Editorial uses display sans only.
|
|
348
|
+
6. **Card grid features with icon + 1-line description**: lazy and undifferentiated. Use alternating features or full feature sections instead.
|
|
349
|
+
7. **Equal-size section layout**: four sections all the same height and width. Editorial rhythm requires scale variation.
|
|
350
|
+
8. **Emoji as decoration**: never as icons, never as visual anchors.
|
|
351
|
+
9. **Stock illustrations**: geometric or hand-drawn generic illustrations. Product screenshots, code, or nothing.
|
|
352
|
+
10. **Warm beige backgrounds**: `#FDF8F0` or similar. That's Warm Craft. Bold Editorial uses off-white `#FAFAF7` (light) or near-black (dark).
|