aiblueprint-cli 1.4.73 → 1.4.75

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -0,0 +1,322 @@
1
+ # Vercel Simple Style
2
+
3
+ Minimal dark-mode developer UI. High contrast, line-driven structure, no decoration.
4
+
5
+ **Reference vibe:** Vercel dashboard, blog, and data tools (take-home pay, country index).
6
+
7
+ ---
8
+
9
+ ## Core vibe
10
+
11
+ - **Developer-first.** Utilitarian, not marketing-soft.
12
+ - **Pure dark canvas.** Black background, white primary text, gray hierarchy.
13
+ - **Line over depth.** 1px borders define structure; no shadows or blur.
14
+ - **Restrained radius.** `0` on data/tool surfaces, `6-8px` on nav buttons and cards in app shells.
15
+ - **Monospace for data.** Labels, nav, tables, inputs, metadata.
16
+ - **Sans for prose.** Blog posts, long descriptions, dashboard titles (Geist / Inter stack).
17
+ - **Generous whitespace.** Wide section gaps, airy row padding.
18
+
19
+ ---
20
+
21
+ ## Color
22
+
23
+ Portable palette. Map to project tokens when available.
24
+
25
+ | Role | Hex | CSS var (suggested) | Usage |
26
+ |------|-----|---------------------|-------|
27
+ | Canvas | `#000000` | `--vs-bg` | Page background |
28
+ | Surface | `#111111` | `--vs-surface` | Summary boxes, sidebar panels, inset blocks |
29
+ | Surface raised | `#1a1a1a` | `--vs-surface-raised` | Hover rows, secondary panels |
30
+ | Ink | `#ffffff` | `--vs-fg` | Headlines, primary values, active tab text |
31
+ | Muted ink | `#888888` | `--vs-muted-fg` | Descriptions, metadata, inactive tabs |
32
+ | Subtle ink | `#a1a1aa` | `--vs-subtle-fg` | Breadcrumbs, timestamps, helper text |
33
+ | Border | `#333333` | `--vs-border` | Boxes, dividers, input outlines |
34
+ | Border strong | `#444444` | `--vs-border-strong` | Active/hover borders |
35
+ | Data bar | `#666666` | `--vs-bar` | Progress / comparison bars |
36
+ | Link | `#0070f3` | `--vs-link` | Text links, copy actions |
37
+ | Success | `#50e3c2` | `--vs-success` | Stable / success states |
38
+ | Error | `#ee0000` | `--vs-error` | Failed states |
39
+
40
+ ### Tailwind mapping (when no project tokens)
41
+
42
+ ```css
43
+ :root {
44
+ --vs-bg: #000;
45
+ --vs-surface: #111;
46
+ --vs-fg: #fff;
47
+ --vs-muted-fg: #888;
48
+ --vs-border: #333;
49
+ --vs-link: #0070f3;
50
+ }
51
+ ```
52
+
53
+ | Tailwind | Value |
54
+ |----------|-------|
55
+ | `bg-black` | Canvas |
56
+ | `bg-[#111]` | Surface |
57
+ | `text-white` | Primary |
58
+ | `text-[#888]` | Muted |
59
+ | `border-[#333]` | Structure |
60
+
61
+ **Rule:** Keep 90% of the UI monochromatic. Color accents only for links, status, and flag/icon glyphs.
62
+
63
+ ---
64
+
65
+ ## Typography
66
+
67
+ ### Font stacks
68
+
69
+ | Role | Stack |
70
+ |------|-------|
71
+ | Sans (prose / dashboard) | `Geist, Inter, ui-sans-serif, system-ui, sans-serif` |
72
+ | Mono (data / tools) | `Geist Mono, ui-monospace, SFMono-Regular, Menlo, monospace` |
73
+
74
+ Load Geist via `@fontsource/geist-sans` / `@fontsource/geist-mono`, or `next/font/local` in Next.js.
75
+
76
+ ### Scale
77
+
78
+ | Level | Font | Pattern |
79
+ |-------|------|---------|
80
+ | Page title | Sans or Mono | `text-2xl md:text-3xl font-medium tracking-tight text-white` |
81
+ | Section label | Mono | `text-[10px] sm:text-xs uppercase tracking-wider text-[#888]` |
82
+ | Body | Sans | `text-sm md:text-base leading-relaxed text-[#888]` |
83
+ | Data / nav / button | Mono | `font-mono text-xs uppercase tracking-wide` |
84
+ | Large input value | Mono | `font-mono text-2xl md:text-3xl tabular-nums text-white` |
85
+ | Metadata | Sans or Mono | `text-xs text-[#888]` |
86
+
87
+ ### Section labels
88
+
89
+ All-caps, small, muted gray. Examples: `TAX`, `TOOLS`, `SORT BY`, `YOUR GROSS ANNUAL SALARY`.
90
+
91
+ ```tsx
92
+ <p className="font-mono text-xs uppercase tracking-wider text-[#888]">Tools</p>
93
+ ```
94
+
95
+ ---
96
+
97
+ ## Layout tokens
98
+
99
+ | Token | Value |
100
+ |-------|-------|
101
+ | `VS_SHELL` | `mx-auto w-full max-w-5xl px-4 sm:px-6 md:px-8` |
102
+ | `VS_SHELL_WIDE` | `max-w-7xl` (dashboard) |
103
+ | `VS_SECTION` | `py-12 md:py-16 lg:py-20` |
104
+ | `VS_STACK` | `px-4 py-4 sm:px-5 sm:py-5 md:px-6 md:py-6` |
105
+ | `VS_GAP_SECTION` | `mb-12 md:mb-16` |
106
+
107
+ ### Page shell (tool / index)
108
+
109
+ ```
110
+ +---------------------------------------- viewport --+
111
+ | VS_SHELL |
112
+ | - Section label (mono, uppercase, muted) |
113
+ | - Page title |
114
+ | - Description (muted sans) |
115
+ | - Search / controls |
116
+ | - Bordered grid or list |
117
+ +----------------------------------------------------+
118
+ ```
119
+
120
+ ```tsx
121
+ <div className="min-h-screen bg-black text-white">
122
+ <main className={VS_SHELL}>
123
+ <section className={VS_SECTION}>...</section>
124
+ </main>
125
+ </div>
126
+ ```
127
+
128
+ ### App shell (dashboard)
129
+
130
+ Sidebar + main. Sidebar is narrow, icon + label, muted inactive links.
131
+
132
+ ```tsx
133
+ <div className="flex min-h-screen bg-black">
134
+ <aside className="w-56 border-r border-[#333]">...</aside>
135
+ <main className="flex-1 p-6 md:p-8">...</main>
136
+ </div>
137
+ ```
138
+
139
+ ---
140
+
141
+ ## Borders & radius
142
+
143
+ | Context | Radius | Border |
144
+ |---------|--------|--------|
145
+ | Data tools, country lists, tables | `rounded-none` | `border border-[#333]` |
146
+ | Cards, project tiles, blog feature | `rounded-lg` (8px) | `border border-[#333]` |
147
+ | Primary button | `rounded-md` (6px) | filled or outline |
148
+ | Inputs | `rounded-none` or `rounded-md` | `border border-[#333] bg-transparent` |
149
+
150
+ Dividers: `border-t border-[#333]`, full width inside the container.
151
+
152
+ ---
153
+
154
+ ## Component patterns
155
+
156
+ ### Search input
157
+
158
+ ```tsx
159
+ <input
160
+ className="w-full border border-[#333] bg-transparent px-4 py-3 font-mono text-sm text-white placeholder:text-[#888] focus:border-[#444] focus:outline-none"
161
+ placeholder="Search countries..."
162
+ />
163
+ ```
164
+
165
+ ### Link row (index grid)
166
+
167
+ Bordered box, icon left, title white, arrow right.
168
+
169
+ ```tsx
170
+ <a className="flex items-center justify-between border border-[#333] px-4 py-3 transition-colors hover:border-[#444] hover:bg-[#111]">
171
+ <span className="flex items-center gap-3 font-mono text-sm text-white">...</span>
172
+ <span className="font-mono text-[#888]">{"->"}</span>
173
+ </a>
174
+ ```
175
+
176
+ ### Tab / sort toggle
177
+
178
+ Inactive: gray border + gray text. Active: white border + white text.
179
+
180
+ ```tsx
181
+ <button className={cn(
182
+ "border px-3 py-1.5 font-mono text-xs uppercase tracking-wide",
183
+ active ? "border-white text-white" : "border-[#333] text-[#888]"
184
+ )}>...</button>
185
+ ```
186
+
187
+ ### Data table row
188
+
189
+ Row inside a bordered container. Primary number is white + mono tabular. Secondary detail is muted and small.
190
+
191
+ ```tsx
192
+ <div className="flex items-center gap-4 border-b border-[#333] px-4 py-4 last:border-b-0">
193
+ <span className="w-28 font-mono text-sm">Germany</span>
194
+ <div className="h-2 flex-1 bg-[#333]">
195
+ <div className="h-full bg-[#666]" style={{ width: `${pct}%` }} />
196
+ </div>
197
+ <span className="font-mono tabular-nums text-white">52,340</span>
198
+ </div>
199
+ ```
200
+
201
+ Progress bars: track `#333`, fill `#666`. Flat, no gradient.
202
+
203
+ ### Summary / highlight box
204
+
205
+ ```tsx
206
+ <div className="border border-[#333] bg-[#111] px-5 py-4 font-mono text-sm">
207
+ <span className="text-[#888]">Best value: </span>
208
+ <span className="text-white">Bulgaria</span>
209
+ </div>
210
+ ```
211
+
212
+ ### Card (dashboard / blog)
213
+
214
+ ```tsx
215
+ <div className="rounded-lg border border-[#333] bg-black p-4 transition-colors hover:border-[#444]">
216
+ <div className="mb-3 flex items-start justify-between">...</div>
217
+ <h3 className="text-sm font-medium text-white">Project name</h3>
218
+ <p className="mt-1 text-xs text-[#888]">project.vercel.app</p>
219
+ </div>
220
+ ```
221
+
222
+ ### Buttons
223
+
224
+ | Variant | Classes |
225
+ |---------|---------|
226
+ | Primary | `rounded-md bg-white px-4 py-2 text-sm font-medium text-black hover:bg-white/90` |
227
+ | Secondary | `rounded-md border border-[#333] bg-black px-4 py-2 text-sm text-white hover:border-[#444]` |
228
+ | Ghost link | `text-[#0070f3] hover:underline` |
229
+
230
+ ### Two-column grid
231
+
232
+ ```tsx
233
+ <div className="grid grid-cols-1 gap-3 sm:grid-cols-2">
234
+ {items.map(...)}
235
+ </div>
236
+ ```
237
+
238
+ Each cell is its own bordered box, not a `gap-px` mosaic unless every cell sets explicit `bg-black`.
239
+
240
+ ---
241
+
242
+ ## Grid patterns
243
+
244
+ ### Bordered list stack
245
+
246
+ ```tsx
247
+ <div className="border border-[#333] divide-y divide-[#333]">
248
+ {rows.map(...)}
249
+ </div>
250
+ ```
251
+
252
+ ### Full-width tool card
253
+
254
+ ```tsx
255
+ <a className="block border border-[#333] px-5 py-5 transition-colors hover:bg-[#111]">
256
+ <p className="font-mono text-base text-white">Europe: Take-Home Pay Comparison</p>
257
+ <p className="mt-1 text-sm text-[#888]">Calculate, visualize, and compare...</p>
258
+ </a>
259
+ ```
260
+
261
+ ---
262
+
263
+ ## Charts (data viz)
264
+
265
+ Match the line-driven, monochrome tool aesthetic:
266
+
267
+ - Series in grayscale: `#fff`, `#888`, `#666`, `#333`. Add **one** accent only when a series must stand out - `#0070f3` (link blue) or `#50e3c2` (success).
268
+ - **Sharp bars** (`borderRadius: 0`) - same square geometry as the data tools. Flat fills, no gradients.
269
+ - Gridlines `#333`; axis text **mono** (`Geist Mono`), muted `#888`.
270
+ - Tooltip: `#111` background, white text, square or 6px corners.
271
+ - Bars/progress reuse the data-bar token: track `#333`, fill `#666` (or `#fff` for the active series).
272
+ - Doughnut: segments separated by a `#000` stroke; legend in mono uppercase.
273
+
274
+ ```js
275
+ const FG="#fff", S2="#888", S3="#666", S4="#333", ACCENT="#0070f3", GRID="#333";
276
+ Chart.defaults.font.family = "Geist Mono, ui-monospace, monospace";
277
+ Chart.defaults.color = "#888";
278
+ // bars: backgroundColor:[S3, FG], borderRadius:0
279
+ // grid: { color: GRID }, border: { color: GRID }
280
+ // tooltip: { backgroundColor:"#111", cornerRadius:0 }
281
+ ```
282
+
283
+ ---
284
+
285
+ ## Motion & effects
286
+
287
+ - No drop shadows, glass blur, gradient backgrounds, or glow halos.
288
+ - Hover: border lighten (`#333` to `#444`), subtle bg (`#111`), or text color shift.
289
+ - `transition-colors duration-150` on interactive elements.
290
+ - No scale/lift animations on cards.
291
+
292
+ ---
293
+
294
+ ## Mode selection
295
+
296
+ | Surface type | Font | Radius |
297
+ |--------------|------|--------|
298
+ | Data tools, tax calculators, index pages | Mono primary | Sharp (`0`) |
299
+ | Dashboard, blog, marketing docs | Sans primary, mono for metadata | Soft (`6-8px`) |
300
+
301
+ When unsure, default to mono + sharp for new tool UIs, and sans + `rounded-lg` for app shells and content pages.
302
+
303
+ ---
304
+
305
+ ## Anti-patterns
306
+
307
+ | Avoid | Why |
308
+ |-------|-----|
309
+ | `rounded-xl`, `rounded-2xl`, `rounded-full` on data/tool UI | Breaks the utilitarian look |
310
+ | `shadow-lg`, `ring-*`, `backdrop-blur-*` | Depth replaces line hierarchy |
311
+ | Gradient backgrounds | Keep flat black / `#111` surfaces |
312
+ | Bright saturated fills on large areas | Reserve color for links and status |
313
+ | `gap-px` + `bg-border` without per-cell bg | Unintended gray gutters |
314
+ | Pill-shaped tabs on tool pages | Use rectangular bordered toggles |
315
+ | Light mode by default | The style is dark-first |
316
+ | Decorative hero imagery on a tool index | Text + bordered grid only |
317
+
318
+ ---
319
+
320
+ ## Project overrides
321
+
322
+ If the repo defines `.agents/styles/vercel-simple.md` or `.agents/styles/vercel-simple-theme.md`, prefer those tokens and components over this portable spec.