aiblueprint-cli 1.4.74 → 1.4.76
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/README.md +7 -0
- package/agents-config/skills/use-style/SKILL.md +54 -0
- package/agents-config/skills/use-style/examples/anthropic.html +400 -0
- package/agents-config/skills/use-style/examples/dusk.html +368 -0
- package/agents-config/skills/use-style/examples/gumroad.html +396 -0
- package/agents-config/skills/use-style/examples/linear.html +389 -0
- package/agents-config/skills/use-style/examples/new-york-times.html +417 -0
- package/agents-config/skills/use-style/examples/raycast.html +402 -0
- package/agents-config/skills/use-style/examples/split-auth.html +366 -0
- package/agents-config/skills/use-style/examples/stripe.html +386 -0
- package/agents-config/skills/use-style/examples/vercel.html +379 -0
- package/agents-config/skills/use-style/styles/anthropic.md +266 -0
- package/agents-config/skills/use-style/styles/dusk.md +269 -0
- package/agents-config/skills/use-style/styles/grid.md +284 -0
- package/agents-config/skills/use-style/styles/gumroad.md +273 -0
- package/agents-config/skills/use-style/styles/linear.md +355 -0
- package/agents-config/skills/use-style/styles/new-york-times.md +277 -0
- package/agents-config/skills/use-style/styles/raycast.md +285 -0
- package/agents-config/skills/use-style/styles/split-auth.md +281 -0
- package/agents-config/skills/use-style/styles/stripe.md +372 -0
- package/agents-config/skills/use-style/styles/vercel-simple.md +322 -0
- package/dist/cli.js +100 -19
- package/package.json +1 -1
|
@@ -0,0 +1,277 @@
|
|
|
1
|
+
# New York Times Style
|
|
2
|
+
|
|
3
|
+
Print-newspaper editorial. Serif-driven, hairline rules, multi-column grids, near-zero color. Reads like a broadsheet, not an app.
|
|
4
|
+
|
|
5
|
+
**Reference vibe:** The New York Times home page, article pages, and opinion section.
|
|
6
|
+
|
|
7
|
+
---
|
|
8
|
+
|
|
9
|
+
## Core vibe
|
|
10
|
+
|
|
11
|
+
- **Editorial, not product.** Authority and reading comfort over UI chrome.
|
|
12
|
+
- **Serif headlines.** Display serif for every headline and deck. Sans is for kickers and metadata only.
|
|
13
|
+
- **Black ink on paper white.** `#fff` page, `#121212` ink. Color is an accent, almost never a fill.
|
|
14
|
+
- **Hairline rules define structure.** Thin black/gray lines separate stories and columns. No cards, no shadows, no radius.
|
|
15
|
+
- **Multi-column grid.** A wide main column + a divided sidebar, stories stacked with rules between them.
|
|
16
|
+
- **Tight, dense type.** Headlines `leading-none`-ish, generous reading measure for body (`~38ch` per column).
|
|
17
|
+
- **Blackletter masthead.** The wordmark is Old English; everything else is Cheltenham/Franklin.
|
|
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
|
+
| Paper | `#ffffff` | `--nyt-bg` | Page background |
|
|
28
|
+
| Wash | `#f7f7f7` | `--nyt-wash` | Rare inset blocks, audio rows |
|
|
29
|
+
| Ink | `#121212` | `--nyt-fg` | Headlines, body, rules |
|
|
30
|
+
| Slate | `#363636` | `--nyt-slate` | Deck / summary text |
|
|
31
|
+
| Muted | `#666666` | `--nyt-muted` | Bylines, credits, "min read" |
|
|
32
|
+
| Faint | `#999999` | `--nyt-faint` | Photo credits, timestamps |
|
|
33
|
+
| Rule | `#121212` | `--nyt-rule` | Primary hairline dividers |
|
|
34
|
+
| Rule light | `#e2e2e2` | `--nyt-rule-light` | Secondary inner dividers |
|
|
35
|
+
| Link blue | `#326891` | `--nyt-link` | Text links (hover underline) |
|
|
36
|
+
| Subscribe blue | `#567b95` | `--nyt-blue` | Subscribe button fill |
|
|
37
|
+
| Live red | `#d0021b` | `--nyt-red` | LIVE markers, market drop, breaking |
|
|
38
|
+
|
|
39
|
+
### Tailwind mapping (when no project tokens)
|
|
40
|
+
|
|
41
|
+
```css
|
|
42
|
+
:root {
|
|
43
|
+
--nyt-bg: #fff;
|
|
44
|
+
--nyt-fg: #121212;
|
|
45
|
+
--nyt-slate: #363636;
|
|
46
|
+
--nyt-muted: #666;
|
|
47
|
+
--nyt-rule: #121212;
|
|
48
|
+
--nyt-rule-light: #e2e2e2;
|
|
49
|
+
--nyt-link: #326891;
|
|
50
|
+
--nyt-red: #d0021b;
|
|
51
|
+
}
|
|
52
|
+
```
|
|
53
|
+
|
|
54
|
+
**Rule:** The page is black-and-white. Red is reserved for LIVE / breaking / market loss. Blue is reserved for links and the subscribe button. Never tint backgrounds.
|
|
55
|
+
|
|
56
|
+
---
|
|
57
|
+
|
|
58
|
+
## Typography
|
|
59
|
+
|
|
60
|
+
The heart of the style. Three faces, strict roles.
|
|
61
|
+
|
|
62
|
+
### Font stacks
|
|
63
|
+
|
|
64
|
+
| Role | Stack | Open substitute |
|
|
65
|
+
|------|-------|-----------------|
|
|
66
|
+
| Headline / deck / body (serif) | `"nyt-cheltenham", Georgia, "Times New Roman", serif` | `"Source Serif 4"` or Georgia |
|
|
67
|
+
| Body long-read (serif) | `"nyt-imperial", Georgia, serif` | Georgia |
|
|
68
|
+
| Kicker / nav / label / byline (sans) | `"nyt-franklin", "Libre Franklin", Helvetica, Arial, sans-serif` | `"Libre Franklin"` (the open NYT Franklin) |
|
|
69
|
+
| Masthead wordmark (blackletter) | `"Old English Text MT", "UnifrakturCook", serif` | `"UnifrakturCook:wght@700"` |
|
|
70
|
+
|
|
71
|
+
Load via Google Fonts: `Libre+Franklin:wght@400;500;600;700`, `Source+Serif+4:opsz,wght@8..60,400;8..60,600;8..60,700`, `UnifrakturCook:wght@700`.
|
|
72
|
+
|
|
73
|
+
### Scale
|
|
74
|
+
|
|
75
|
+
| Level | Font | Pattern |
|
|
76
|
+
|-------|------|---------|
|
|
77
|
+
| Masthead | Blackletter | `text-4xl md:text-6xl text-center text-[#121212]` |
|
|
78
|
+
| Lead headline | Serif | `text-3xl md:text-4xl font-bold leading-[1.05] tracking-[-0.01em]` |
|
|
79
|
+
| Story headline | Serif | `text-xl md:text-2xl font-bold leading-tight` |
|
|
80
|
+
| Small headline | Serif | `text-lg font-bold leading-snug` |
|
|
81
|
+
| Deck / summary | Serif | `text-base md:text-lg leading-snug text-[#363636]` |
|
|
82
|
+
| Body | Serif | `text-[17px] leading-[1.6] text-[#121212]` |
|
|
83
|
+
| Kicker / section label | Sans | `text-xs font-bold uppercase tracking-[0.05em]` |
|
|
84
|
+
| Byline / min read / credit | Sans | `text-xs uppercase tracking-wide text-[#666]` |
|
|
85
|
+
| Nav | Sans | `text-sm text-[#363636]` |
|
|
86
|
+
|
|
87
|
+
### Kickers & labels (the NYT tell)
|
|
88
|
+
|
|
89
|
+
Small, bold, uppercase, **sans-serif**, often above or inline with a headline. Red for live, ink for sections.
|
|
90
|
+
|
|
91
|
+
```tsx
|
|
92
|
+
<p className="font-sans text-xs font-bold uppercase tracking-wider text-[#d0021b]">Live</p>
|
|
93
|
+
<p className="font-sans text-xs font-bold uppercase tracking-wider text-[#121212]">The Headlines</p>
|
|
94
|
+
<span className="font-sans text-xs uppercase tracking-wide text-[#666]">4 Min Read</span>
|
|
95
|
+
```
|
|
96
|
+
|
|
97
|
+
---
|
|
98
|
+
|
|
99
|
+
## Layout tokens
|
|
100
|
+
|
|
101
|
+
| Token | Value |
|
|
102
|
+
|-------|-------|
|
|
103
|
+
| `NYT_SHELL` | `mx-auto w-full max-w-[1200px] px-4 sm:px-6` |
|
|
104
|
+
| `NYT_SECTION` | `py-6 md:py-8` |
|
|
105
|
+
| `NYT_COL_GAP` | `gap-5 md:gap-8` |
|
|
106
|
+
| `NYT_MEASURE` | `max-w-[38ch]` (body reading column) |
|
|
107
|
+
|
|
108
|
+
### Home grid (lead + sidebar)
|
|
109
|
+
|
|
110
|
+
A wide left region and a rule-divided right rail. The vertical rule between them is the signature.
|
|
111
|
+
|
|
112
|
+
```tsx
|
|
113
|
+
<div className="grid grid-cols-1 lg:grid-cols-[1fr_360px]">
|
|
114
|
+
<div className="lg:border-r lg:border-[#121212] lg:pr-8">{lead}</div>
|
|
115
|
+
<aside className="lg:pl-8">{rail}</aside>
|
|
116
|
+
</div>
|
|
117
|
+
```
|
|
118
|
+
|
|
119
|
+
### Story block (image + text columns)
|
|
120
|
+
|
|
121
|
+
```tsx
|
|
122
|
+
<article className="grid grid-cols-1 md:grid-cols-2 gap-5">
|
|
123
|
+
<div>
|
|
124
|
+
<h2 className="font-serif text-2xl font-bold leading-tight">China Builds an Economic Fortress...</h2>
|
|
125
|
+
<p className="mt-2 font-serif text-base leading-snug text-[#363636]">Beijing says the changes are needed...</p>
|
|
126
|
+
<span className="mt-3 block font-sans text-xs uppercase tracking-wide text-[#666]">4 Min Read</span>
|
|
127
|
+
</div>
|
|
128
|
+
<figure>
|
|
129
|
+
<img className="w-full" />
|
|
130
|
+
<figcaption className="mt-1 text-right font-sans text-xs text-[#999]">Jade Gao/AFP - Getty</figcaption>
|
|
131
|
+
</figure>
|
|
132
|
+
</article>
|
|
133
|
+
```
|
|
134
|
+
|
|
135
|
+
---
|
|
136
|
+
|
|
137
|
+
## Rules & dividers (no borders-as-boxes)
|
|
138
|
+
|
|
139
|
+
Structure comes from lines, never from rounded boxes or shadows.
|
|
140
|
+
|
|
141
|
+
| Context | Rule |
|
|
142
|
+
|---------|------|
|
|
143
|
+
| Section top (heavy) | `border-t-2 border-[#121212]` |
|
|
144
|
+
| Between stacked stories | `border-t border-[#121212]` |
|
|
145
|
+
| Inner / soft separators | `border-t border-[#e2e2e2]` |
|
|
146
|
+
| Column divider | `border-r border-[#121212]` |
|
|
147
|
+
| Masthead underline | thick rule below nav: `border-b-2 border-[#121212]` |
|
|
148
|
+
|
|
149
|
+
Stories are separated by hairline rules with vertical padding, **not** wrapped in cards.
|
|
150
|
+
|
|
151
|
+
```tsx
|
|
152
|
+
<div className="divide-y divide-[#121212]">
|
|
153
|
+
{stories.map((s) => <article key={s.id} className="py-6">{...}</article>)}
|
|
154
|
+
</div>
|
|
155
|
+
```
|
|
156
|
+
|
|
157
|
+
---
|
|
158
|
+
|
|
159
|
+
## Masthead & top bar
|
|
160
|
+
|
|
161
|
+
```tsx
|
|
162
|
+
<header>
|
|
163
|
+
<div className="flex items-center justify-between py-2 font-sans text-xs">
|
|
164
|
+
<span>Friday, June 5, 2026</span>
|
|
165
|
+
<nav className="hidden gap-4 sm:flex uppercase tracking-wide text-[#363636]">
|
|
166
|
+
<a className="text-[#121212] font-bold">International</a><a>Canada</a><a>Español</a>
|
|
167
|
+
</nav>
|
|
168
|
+
<span className="text-[#666]">S&P 500 <span className="text-[#d0021b]">-0.98% ↓</span></span>
|
|
169
|
+
</div>
|
|
170
|
+
<h1 className="py-2 text-center font-[blackletter] text-5xl md:text-6xl">The New York Times</h1>
|
|
171
|
+
<nav className="flex justify-center gap-5 border-y-2 border-[#121212] py-3 font-serif text-base">
|
|
172
|
+
<a>U.S.</a><a>World</a><a>Business</a><a>Arts</a>...
|
|
173
|
+
</nav>
|
|
174
|
+
</header>
|
|
175
|
+
```
|
|
176
|
+
|
|
177
|
+
- Date left, market/utility right, masthead centered.
|
|
178
|
+
- Section nav centered, framed by **two heavy rules** (top + bottom).
|
|
179
|
+
- A LIVE strip can sit under the nav: red `LIVE` + sans uppercase headlines, separated by `·`.
|
|
180
|
+
|
|
181
|
+
---
|
|
182
|
+
|
|
183
|
+
## Component patterns
|
|
184
|
+
|
|
185
|
+
### Buttons (subscribe / log in)
|
|
186
|
+
|
|
187
|
+
```tsx
|
|
188
|
+
// Subscribe (filled NYT blue)
|
|
189
|
+
<button className="bg-[#567b95] px-4 py-2 font-sans text-xs font-bold uppercase tracking-wide text-white">
|
|
190
|
+
Subscribe for €0.50/week
|
|
191
|
+
</button>
|
|
192
|
+
// Log in (outline)
|
|
193
|
+
<button className="border border-[#121212] px-4 py-2 font-sans text-xs font-bold uppercase tracking-wide text-[#121212]">
|
|
194
|
+
Log in
|
|
195
|
+
</button>
|
|
196
|
+
```
|
|
197
|
+
|
|
198
|
+
Square corners. No shadow. Uppercase sans label.
|
|
199
|
+
|
|
200
|
+
### Text link
|
|
201
|
+
|
|
202
|
+
```tsx
|
|
203
|
+
<a className="text-[#326891] hover:underline">See more updates ›</a>
|
|
204
|
+
```
|
|
205
|
+
|
|
206
|
+
Body links: ink with underline, or NYT blue. Hover always underlines.
|
|
207
|
+
|
|
208
|
+
### Audio / row item
|
|
209
|
+
|
|
210
|
+
```tsx
|
|
211
|
+
<div className="flex items-center gap-4 border-t border-[#121212] py-5">
|
|
212
|
+
<img className="h-16 w-16 object-cover" />
|
|
213
|
+
<div>
|
|
214
|
+
<p className="font-sans text-xs font-bold uppercase tracking-wide">The Headlines <span className="text-[#666]">Audio</span></p>
|
|
215
|
+
<h3 className="mt-1 font-serif text-xl font-bold leading-snug">Trump's Strategy to Push Out Immigrants...</h3>
|
|
216
|
+
<span className="font-sans text-xs uppercase tracking-wide text-[#666]">14 Min Listen</span>
|
|
217
|
+
</div>
|
|
218
|
+
</div>
|
|
219
|
+
```
|
|
220
|
+
|
|
221
|
+
### Photo credit
|
|
222
|
+
|
|
223
|
+
```tsx
|
|
224
|
+
<figcaption className="mt-1 text-right font-sans text-xs text-[#999]">Ryan McGinley</figcaption>
|
|
225
|
+
```
|
|
226
|
+
|
|
227
|
+
### Data / numbers (when an editorial page shows stats)
|
|
228
|
+
|
|
229
|
+
Use serif for big figures, sans uppercase for the label, a single accent (red for negative, ink for positive). Tabular nums.
|
|
230
|
+
|
|
231
|
+
```tsx
|
|
232
|
+
<div>
|
|
233
|
+
<p className="font-sans text-xs uppercase tracking-wide text-[#666]">Output value</p>
|
|
234
|
+
<p className="font-serif text-4xl font-bold tabular-nums">$977</p>
|
|
235
|
+
</div>
|
|
236
|
+
```
|
|
237
|
+
|
|
238
|
+
---
|
|
239
|
+
|
|
240
|
+
## Charts (editorial data viz)
|
|
241
|
+
|
|
242
|
+
When charting on this style, keep it print-like:
|
|
243
|
+
|
|
244
|
+
- Series in **grayscale** (`#121212`, `#666`, `#bbb`, `#e2e2e2`); at most **one** accent (`#d0021b` for the highlighted/negative series).
|
|
245
|
+
- Gridlines `#e2e2e2`, axis text sans (`Libre Franklin`) muted.
|
|
246
|
+
- Square bars (small or no radius), no glow, flat fills.
|
|
247
|
+
- Tooltip: ink background `#121212`, white text.
|
|
248
|
+
- Chart titles serif bold; axis labels sans uppercase.
|
|
249
|
+
|
|
250
|
+
---
|
|
251
|
+
|
|
252
|
+
## Motion & effects
|
|
253
|
+
|
|
254
|
+
- Essentially none. This is print.
|
|
255
|
+
- Hover: links underline; headlines may shift to `#326891` or stay ink.
|
|
256
|
+
- No transforms, no shadows, no fades on scroll, no card lift.
|
|
257
|
+
|
|
258
|
+
---
|
|
259
|
+
|
|
260
|
+
## Anti-patterns
|
|
261
|
+
|
|
262
|
+
| Avoid | Why |
|
|
263
|
+
|-------|-----|
|
|
264
|
+
| Sans-serif headlines | Headlines are serif; sans is for kickers/labels only |
|
|
265
|
+
| Rounded corners on stories/images | Editorial is square; cards break the broadsheet feel |
|
|
266
|
+
| `shadow-*`, `ring-*`, gradients | Structure is rules, not depth |
|
|
267
|
+
| Tinted/colored backgrounds | Paper stays white; color is accent only |
|
|
268
|
+
| Color beyond red (live/loss) + blue (links/subscribe) | One accent each, used sparingly |
|
|
269
|
+
| Wrapping stories in bordered cards | Use hairline rules + padding instead |
|
|
270
|
+
| Wide body measure (full-width paragraphs) | Keep reading columns near `38ch` |
|
|
271
|
+
| Emoji / playful icons | Out of register for a newspaper |
|
|
272
|
+
|
|
273
|
+
---
|
|
274
|
+
|
|
275
|
+
## Project overrides
|
|
276
|
+
|
|
277
|
+
If the repo defines `.agents/styles/new-york-times.md` or `.agents/styles/nyt-theme.md`, prefer those tokens and components over this portable spec.
|
|
@@ -0,0 +1,285 @@
|
|
|
1
|
+
# Raycast Style
|
|
2
|
+
|
|
3
|
+
Glossy dark product marketing. Near-black canvas, red accent, soft glow gradients, floating glass nav, oversized bold pricing, large-radius cards. Premium and refined - the opposite of flat.
|
|
4
|
+
|
|
5
|
+
**Reference vibe:** raycast.com (pricing, marketing, footer).
|
|
6
|
+
|
|
7
|
+
---
|
|
8
|
+
|
|
9
|
+
## Core vibe
|
|
10
|
+
|
|
11
|
+
- **Dark and glossy.** Near-black canvas with subtle red glow gradients bleeding from the top. Depth via light, not lines.
|
|
12
|
+
- **Red accent.** Raycast red `#FF6363` for the logo, sparkles, highlights. Used as a glow and a spark, rarely a flat fill.
|
|
13
|
+
- **Floating glass chrome.** The nav is a detached pill/bar with a translucent fill, `backdrop-blur`, and a faint border.
|
|
14
|
+
- **Big bold pricing.** Oversized white numerals (`$8`, `$16`) with a small mono `/ month`. Numbers are the hero.
|
|
15
|
+
- **Large soft radius.** Cards at `rounded-3xl` (20-24px), subtle gradient fills, faint borders, soft inner glow.
|
|
16
|
+
- **Refined Inter.** Clean sans everywhere; mono only for `/month`, prices-per-unit, tiny meta.
|
|
17
|
+
- **Quiet muted body.** White headings, gray body, generous spacing. Color is the spark on a calm dark field.
|
|
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 | `#0A0A0A` | `--rc-bg` | Page background |
|
|
28
|
+
| Canvas deep | `#000000` | `--rc-bg-deep` | Footer / deepest sections |
|
|
29
|
+
| Surface | `#141414` | `--rc-surface` | Cards, panels |
|
|
30
|
+
| Surface raised | `#1C1C1E` | `--rc-surface-raised` | Featured card, hover, inputs |
|
|
31
|
+
| Glass | `rgba(20,20,20,0.6)` | `--rc-glass` | Floating nav fill (with blur) |
|
|
32
|
+
| Ink | `#FFFFFF` | `--rc-fg` | Headings, prices, active nav |
|
|
33
|
+
| Muted ink | `#A1A1A1` | `--rc-muted-fg` | Body, feature text, nav links |
|
|
34
|
+
| Subtle ink | `#6B6B6B` | `--rc-subtle-fg` | Meta, struck prices, footer fine print |
|
|
35
|
+
| Border | `#232323` | `--rc-border` | Card borders, dividers |
|
|
36
|
+
| Border glass | `rgba(255,255,255,0.08)` | `--rc-border-glass` | Floating nav / glass outlines |
|
|
37
|
+
| Red | `#FF6363` | `--rc-red` | Logo, sparkle, accents, glow |
|
|
38
|
+
| Red deep | `#E5484D` | `--rc-red-deep` | Hover / stronger accent |
|
|
39
|
+
| Blue | `#3B9EFF` | `--rc-blue` | Verified badge, secondary links |
|
|
40
|
+
| Light | `#F5F5F5` | `--rc-light` | Light button fill (Download) |
|
|
41
|
+
|
|
42
|
+
### Tailwind mapping (when no project tokens)
|
|
43
|
+
|
|
44
|
+
```css
|
|
45
|
+
:root {
|
|
46
|
+
--rc-bg: #0a0a0a;
|
|
47
|
+
--rc-surface: #141414;
|
|
48
|
+
--rc-surface-raised: #1c1c1e;
|
|
49
|
+
--rc-fg: #fff;
|
|
50
|
+
--rc-muted-fg: #a1a1a1;
|
|
51
|
+
--rc-border: #232323;
|
|
52
|
+
--rc-red: #ff6363;
|
|
53
|
+
--rc-blue: #3b9eff;
|
|
54
|
+
}
|
|
55
|
+
```
|
|
56
|
+
|
|
57
|
+
### The red glow
|
|
58
|
+
|
|
59
|
+
The signature top-of-page atmosphere: diagonal/radial red beams fading into black.
|
|
60
|
+
|
|
61
|
+
```css
|
|
62
|
+
background:
|
|
63
|
+
radial-gradient(60% 50% at 50% 0%, rgba(255,99,99,0.18), transparent 70%),
|
|
64
|
+
#0a0a0a;
|
|
65
|
+
/* or diagonal beams */
|
|
66
|
+
background-image: linear-gradient(115deg, transparent 40%, rgba(255,99,99,0.12) 50%, transparent 60%);
|
|
67
|
+
```
|
|
68
|
+
|
|
69
|
+
**Rule:** Keep the field dark and calm. Red appears as glow, logo, and spark - never as a big solid block.
|
|
70
|
+
|
|
71
|
+
---
|
|
72
|
+
|
|
73
|
+
## Typography
|
|
74
|
+
|
|
75
|
+
### Font stacks
|
|
76
|
+
|
|
77
|
+
| Role | Stack |
|
|
78
|
+
|------|-------|
|
|
79
|
+
| Sans (everything) | `Inter, "SF Pro Display", ui-sans-serif, system-ui, sans-serif` |
|
|
80
|
+
| Mono (`/month`, units, meta) | `"Berkeley Mono", ui-monospace, SFMono-Regular, Menlo, monospace` |
|
|
81
|
+
|
|
82
|
+
### Scale
|
|
83
|
+
|
|
84
|
+
| Level | Pattern |
|
|
85
|
+
|-------|---------|
|
|
86
|
+
| Hero | `text-5xl md:text-7xl font-semibold tracking-tight text-white` |
|
|
87
|
+
| Price numeral | `text-6xl md:text-7xl font-bold tracking-tight text-white` |
|
|
88
|
+
| Price unit | `font-mono text-sm text-[#6b6b6b]` (`/ month`) |
|
|
89
|
+
| Card title | `text-xl font-semibold text-white` |
|
|
90
|
+
| Card subtitle | `text-base text-[#a1a1a1]` |
|
|
91
|
+
| Section heading | `text-2xl md:text-3xl font-semibold tracking-tight` |
|
|
92
|
+
| Body / feature | `text-sm md:text-[15px] text-[#a1a1a1] leading-relaxed` |
|
|
93
|
+
| Nav / button | `text-sm font-medium` |
|
|
94
|
+
| Struck price | `text-sm text-[#6b6b6b] line-through` |
|
|
95
|
+
|
|
96
|
+
---
|
|
97
|
+
|
|
98
|
+
## Layout tokens
|
|
99
|
+
|
|
100
|
+
| Token | Value |
|
|
101
|
+
|-------|-------|
|
|
102
|
+
| `RC_SHELL` | `mx-auto w-full max-w-6xl px-4 sm:px-6` |
|
|
103
|
+
| `RC_SECTION` | `py-16 md:py-24` |
|
|
104
|
+
| `RC_CARD_RADIUS` | `rounded-3xl` (cards) |
|
|
105
|
+
| `RC_NAV_RADIUS` | `rounded-2xl` or `rounded-full` (floating nav) |
|
|
106
|
+
| `RC_CARD_PAD` | `p-6 md:p-8` |
|
|
107
|
+
|
|
108
|
+
### Page shell with glow
|
|
109
|
+
|
|
110
|
+
```tsx
|
|
111
|
+
<div className="relative min-h-screen bg-[#0a0a0a] text-white">
|
|
112
|
+
{/* top red glow */}
|
|
113
|
+
<div className="pointer-events-none absolute inset-x-0 top-0 h-[480px]
|
|
114
|
+
bg-[radial-gradient(60%_50%_at_50%_0%,rgba(255,99,99,0.18),transparent_70%)]" />
|
|
115
|
+
<FloatingNav />
|
|
116
|
+
<main className={cn(RC_SHELL, "relative")}>...</main>
|
|
117
|
+
</div>
|
|
118
|
+
```
|
|
119
|
+
|
|
120
|
+
### Floating glass nav
|
|
121
|
+
|
|
122
|
+
Detached from the top edge, translucent, blurred, faint border.
|
|
123
|
+
|
|
124
|
+
```tsx
|
|
125
|
+
<header className="sticky top-4 z-50 px-4">
|
|
126
|
+
<nav className="mx-auto flex max-w-6xl items-center justify-between rounded-2xl
|
|
127
|
+
border border-white/10 bg-[#141414]/60 px-5 py-3 backdrop-blur-xl">
|
|
128
|
+
<span className="flex items-center gap-2 font-semibold">
|
|
129
|
+
<Logo className="text-[#ff6363]" /> Raycast
|
|
130
|
+
</span>
|
|
131
|
+
<div className="hidden gap-7 text-sm text-[#a1a1a1] md:flex">
|
|
132
|
+
<a className="hover:text-white">Store</a>
|
|
133
|
+
<a className="rounded-md ring-1 ring-[#3b9eff]/60 px-2 py-0.5 text-white">Pricing</a>
|
|
134
|
+
</div>
|
|
135
|
+
<button className="rounded-xl bg-[#f5f5f5] px-4 py-2 text-sm font-medium text-black hover:bg-white"> Download</button>
|
|
136
|
+
</nav>
|
|
137
|
+
</header>
|
|
138
|
+
```
|
|
139
|
+
|
|
140
|
+
---
|
|
141
|
+
|
|
142
|
+
## Borders, radius & elevation
|
|
143
|
+
|
|
144
|
+
| Context | Radius | Border | Fill |
|
|
145
|
+
|---------|--------|--------|------|
|
|
146
|
+
| Pricing / feature card | `rounded-3xl` | `border border-[#232323]` | gradient `#141414 → #0f0f0f` |
|
|
147
|
+
| Featured card | `rounded-3xl` | `border border-white/10` + soft ring | raised `#1c1c1e`, faint glow |
|
|
148
|
+
| Floating nav / glass | `rounded-2xl` / `full` | `border-white/10` | `bg-[#141414]/60 backdrop-blur-xl` |
|
|
149
|
+
| Button (primary light) | `rounded-xl` | none | `#f5f5f5` |
|
|
150
|
+
| Button (dark) | `rounded-xl` | `border-[#232323]` | `#1c1c1e` |
|
|
151
|
+
| Input | `rounded-xl` | `border-[#232323]` | `#141414` |
|
|
152
|
+
| Toggle pill | `rounded-full` | `border-[#232323]` | track `#141414` |
|
|
153
|
+
|
|
154
|
+
Cards get a faint inner top highlight; the featured card gets a subtle outer glow. No hard offset shadows.
|
|
155
|
+
|
|
156
|
+
---
|
|
157
|
+
|
|
158
|
+
## Component patterns
|
|
159
|
+
|
|
160
|
+
### Pricing card
|
|
161
|
+
|
|
162
|
+
```tsx
|
|
163
|
+
<div className="rounded-3xl border border-[#232323] bg-gradient-to-b from-[#141414] to-[#0f0f0f] p-8">
|
|
164
|
+
<h3 className="text-xl font-semibold text-white">Raycast Pro</h3>
|
|
165
|
+
<p className="mt-1 text-sm text-[#a1a1a1]">AI at your fingertips</p>
|
|
166
|
+
<div className="mt-8 flex items-baseline gap-2">
|
|
167
|
+
<span className="text-6xl font-bold tracking-tight text-white">$8</span>
|
|
168
|
+
<span className="font-mono text-sm text-[#6b6b6b]">/ month</span>
|
|
169
|
+
</div>
|
|
170
|
+
<p className="mt-2 text-sm text-[#6b6b6b]"><span className="line-through">$120</span> $96 billed annually</p>
|
|
171
|
+
<ul className="mt-8 space-y-3">{features}</ul>
|
|
172
|
+
</div>
|
|
173
|
+
```
|
|
174
|
+
|
|
175
|
+
### Featured card (raised + badge)
|
|
176
|
+
|
|
177
|
+
```tsx
|
|
178
|
+
<div className="relative rounded-3xl border border-white/10 bg-[#1c1c1e] p-8
|
|
179
|
+
shadow-[0_0_80px_-20px_rgba(255,99,99,0.25)]">
|
|
180
|
+
<span className="absolute right-6 top-6 text-[#3b9eff]">{verifiedBadge}</span>
|
|
181
|
+
...
|
|
182
|
+
</div>
|
|
183
|
+
```
|
|
184
|
+
|
|
185
|
+
### Feature row (circle check)
|
|
186
|
+
|
|
187
|
+
```tsx
|
|
188
|
+
<li className="flex items-start gap-3 text-sm">
|
|
189
|
+
<CheckCircle className="mt-0.5 size-4 shrink-0 text-[#a1a1a1]" />
|
|
190
|
+
<span className="text-[#e5e5e5]">Unlimited Clipboard History</span>
|
|
191
|
+
</li>
|
|
192
|
+
```
|
|
193
|
+
|
|
194
|
+
### Billing toggle
|
|
195
|
+
|
|
196
|
+
```tsx
|
|
197
|
+
<div className="inline-flex items-center gap-1 rounded-full border border-[#232323] bg-[#141414] p-1">
|
|
198
|
+
<button className="rounded-full px-4 py-1.5 text-sm text-[#a1a1a1]">Monthly</button>
|
|
199
|
+
<button className="rounded-full bg-[#1c1c1e] px-4 py-1.5 text-sm text-white">
|
|
200
|
+
Yearly <span className="ml-1 rounded-full bg-white/10 px-1.5 text-xs">-20%</span>
|
|
201
|
+
</button>
|
|
202
|
+
</div>
|
|
203
|
+
```
|
|
204
|
+
|
|
205
|
+
### Buttons
|
|
206
|
+
|
|
207
|
+
| Variant | Classes |
|
|
208
|
+
|---------|---------|
|
|
209
|
+
| Primary (light) | `rounded-xl bg-[#f5f5f5] px-5 py-2.5 text-sm font-medium text-black hover:bg-white` |
|
|
210
|
+
| Secondary (dark) | `rounded-xl border border-[#232323] bg-[#1c1c1e] px-5 py-2.5 text-sm text-white hover:bg-[#242424]` |
|
|
211
|
+
| Link | `text-[#3b9eff] hover:underline` |
|
|
212
|
+
|
|
213
|
+
### Sparkle accent
|
|
214
|
+
|
|
215
|
+
The red spark marks AI / premium tiers. Small, red, never large.
|
|
216
|
+
|
|
217
|
+
```tsx
|
|
218
|
+
<span className="text-[#ff6363]">✦</span>
|
|
219
|
+
```
|
|
220
|
+
|
|
221
|
+
### Footer (multi-column dark)
|
|
222
|
+
|
|
223
|
+
```tsx
|
|
224
|
+
<footer className="border-t border-[#232323] bg-black pt-16">
|
|
225
|
+
<div className={cn(RC_SHELL, "grid grid-cols-2 gap-8 md:grid-cols-6")}>
|
|
226
|
+
{columns.map((c) => (
|
|
227
|
+
<div key={c.title}>
|
|
228
|
+
<p className="text-sm font-medium text-white">{c.title}</p>
|
|
229
|
+
<ul className="mt-4 space-y-3 text-sm text-[#a1a1a1]">{c.links}</ul>
|
|
230
|
+
</div>
|
|
231
|
+
))}
|
|
232
|
+
</div>
|
|
233
|
+
</footer>
|
|
234
|
+
```
|
|
235
|
+
|
|
236
|
+
---
|
|
237
|
+
|
|
238
|
+
## Charts (glossy dark data viz)
|
|
239
|
+
|
|
240
|
+
- Series: red `#ff6363` for the highlighted series, neutral grays `#a1a1a1` / `#6b6b6b` / `#2a2a2a` for the rest. Blue `#3b9eff` as a secondary accent.
|
|
241
|
+
- Background = card fill (`#141414`); gridlines `#232323`; axis text `Inter`, muted `#6b6b6b`.
|
|
242
|
+
- **Rounded bars** (`borderRadius: 6-8`), flat fills - optionally a vertical gradient on the highlighted series for a glossy sheen.
|
|
243
|
+
- Tooltip: glass - `rgba(20,20,20,0.9)` + `#232323` border + white text, `12px` corners.
|
|
244
|
+
- Doughnut: segment stroke = card fill; legend in muted sans.
|
|
245
|
+
- A faint glow under the chart (red, low opacity) reinforces the Raycast atmosphere on hero charts.
|
|
246
|
+
|
|
247
|
+
```js
|
|
248
|
+
const RED="#ff6363", BLUE="#3b9eff", S2="#a1a1a1", S3="#6b6b6b", S4="#2a2a2a", GRID="#232323";
|
|
249
|
+
Chart.defaults.font.family = "Inter, system-ui, sans-serif";
|
|
250
|
+
Chart.defaults.color = "#6b6b6b";
|
|
251
|
+
// bars: backgroundColor:[S3, RED], borderRadius:8
|
|
252
|
+
// grid: { color: GRID }
|
|
253
|
+
// tooltip: { backgroundColor:"rgba(20,20,20,0.9)", borderColor:"#232323", borderWidth:1, cornerRadius:12 }
|
|
254
|
+
```
|
|
255
|
+
|
|
256
|
+
---
|
|
257
|
+
|
|
258
|
+
## Motion & effects
|
|
259
|
+
|
|
260
|
+
- Glow IS the depth language - keep the soft red gradients and faint card glows.
|
|
261
|
+
- Hover: subtle bg lift (`#1c1c1e → #242424`), border lighten, or a gentle glow bloom. No hard movement.
|
|
262
|
+
- `backdrop-blur` on the floating nav and any glass surface.
|
|
263
|
+
- `transition-colors duration-150`; the featured card may breathe a slow glow.
|
|
264
|
+
- Avoid hard offset shadows (that's Gumroad), avoid flat-no-glow (that's vercel-simple). Raycast is glossy-soft.
|
|
265
|
+
|
|
266
|
+
---
|
|
267
|
+
|
|
268
|
+
## Anti-patterns
|
|
269
|
+
|
|
270
|
+
| Avoid | Why |
|
|
271
|
+
|-------|-----|
|
|
272
|
+
| Flat dark with no glow/gradient | Raycast's identity is the soft glow + glass |
|
|
273
|
+
| Sharp `rounded-none` cards | Cards are large-radius `rounded-3xl` |
|
|
274
|
+
| Red as a big solid background fill | Red is glow, logo, spark - kept small |
|
|
275
|
+
| Hard offset shadows (`Npx Npx 0`) | That's neo-brutalist; use soft glow instead |
|
|
276
|
+
| Mono as the body font | Inter is primary; mono only for `/month` + meta |
|
|
277
|
+
| Opaque flat nav glued to the top edge | Nav floats, translucent, blurred, detached |
|
|
278
|
+
| Pure `#fff` background sections | Stay dark; this is a dark-only style |
|
|
279
|
+
| Multiple loud accent colors | Red primary + blue secondary, both restrained |
|
|
280
|
+
|
|
281
|
+
---
|
|
282
|
+
|
|
283
|
+
## Project overrides
|
|
284
|
+
|
|
285
|
+
If the repo defines `.agents/styles/raycast.md` or `.agents/styles/raycast-theme.md`, prefer those tokens and components over this portable spec.
|