omnidesign 1.0.0
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/LICENSE +21 -0
- package/QUICKREF.md +150 -0
- package/README.md +576 -0
- package/bin/cli.js +390 -0
- package/bin/detect-ide.js +50 -0
- package/bin/install.js +8 -0
- package/logo.jpg +0 -0
- package/package.json +84 -0
- package/recipes/components/README.md +29 -0
- package/recipes/components/agent-card.md +314 -0
- package/recipes/components/ai-chat.md +252 -0
- package/recipes/components/bento-grid.md +186 -0
- package/recipes/components/code-block.md +503 -0
- package/recipes/components/file-upload.md +483 -0
- package/recipes/components/forms.md +238 -0
- package/recipes/components/hero-section.md +161 -0
- package/recipes/components/navbar.md +214 -0
- package/recipes/components/prompt-input.md +293 -0
- package/recipes/components/thinking-indicator.md +372 -0
- package/recipes/motion/README.md +3 -0
- package/recipes/motion/motion-system.md +437 -0
- package/recipes/patterns/README.md +3 -0
- package/skills/aider/omnidesign.md +67 -0
- package/skills/amp/SKILL.md +114 -0
- package/skills/antigravity/SKILL.md +114 -0
- package/skills/claude/omnidesign.md +111 -0
- package/skills/continue/omnidesign.yaml +29 -0
- package/skills/cursor/omnidesign.md +110 -0
- package/skills/kilo/SKILL.md +114 -0
- package/skills/opencode/omnidesign.md +110 -0
- package/skills/vscode/package.json +66 -0
- package/skills/zed/omnidesign.json +7 -0
- package/tokens/motion/README.md +3 -0
- package/tokens/primitives/README.md +3 -0
- package/tokens/primitives/color.json +219 -0
- package/tokens/primitives/motion.json +56 -0
- package/tokens/primitives/radii.json +37 -0
- package/tokens/primitives/shadows.json +34 -0
- package/tokens/primitives/spacing.json +67 -0
- package/tokens/primitives/typography.json +127 -0
- package/tokens/semantic/README.md +3 -0
- package/tokens/semantic/color.json +114 -0
- package/tokens/semantic/motion.json +44 -0
- package/tokens/semantic/radii.json +29 -0
- package/tokens/semantic/shadows.json +24 -0
- package/tokens/semantic/spacing.json +69 -0
- package/tokens/semantic/typography.json +118 -0
- package/tokens/shadows/README.md +3 -0
- package/tokens/themes/README.md +3 -0
- package/tokens/themes/berry.json +143 -0
- package/tokens/themes/brutalist.json +143 -0
- package/tokens/themes/coral.json +143 -0
- package/tokens/themes/corporate.json +143 -0
- package/tokens/themes/cream.json +143 -0
- package/tokens/themes/cyberpunk.json +143 -0
- package/tokens/themes/daylight.json +143 -0
- package/tokens/themes/deep-space.json +143 -0
- package/tokens/themes/forest.json +143 -0
- package/tokens/themes/graphite.json +143 -0
- package/tokens/themes/lavender.json +143 -0
- package/tokens/themes/midnight.json +143 -0
- package/tokens/themes/mint.json +143 -0
- package/tokens/themes/navy.json +143 -0
- package/tokens/themes/noir.json +143 -0
- package/tokens/themes/obsidian.json +143 -0
- package/tokens/themes/ocean.json +143 -0
- package/tokens/themes/paper.json +143 -0
- package/tokens/themes/ruby.json +143 -0
- package/tokens/themes/slate.json +143 -0
- package/tokens/themes/snow.json +143 -0
- package/tokens/themes/solar.json +143 -0
- package/tokens/themes/spring.json +143 -0
- package/tokens/themes/starry-night.json +143 -0
- package/tokens/themes/sunset.json +143 -0
- package/tokens/typography/FONT_GUIDE.md +381 -0
- package/tokens/typography/README.md +37 -0
- package/tokens/typography/font-collection.json +221 -0
|
@@ -0,0 +1,381 @@
|
|
|
1
|
+
# Font Usage Guide
|
|
2
|
+
|
|
3
|
+
Complete guide for using the frontend-arsenal font collection.
|
|
4
|
+
|
|
5
|
+
## Installation Methods
|
|
6
|
+
|
|
7
|
+
### Method 1: Google Fonts CDN (Easiest)
|
|
8
|
+
|
|
9
|
+
```html
|
|
10
|
+
<!-- In your HTML head -->
|
|
11
|
+
<link rel="preconnect" href="https://fonts.googleapis.com">
|
|
12
|
+
<link rel="preconnect" href="https://fonts.gstatic.com" crossorigin>
|
|
13
|
+
|
|
14
|
+
<!-- Inter + JetBrains Mono -->
|
|
15
|
+
<link href="https://fonts.googleapis.com/css2?family=Inter:wght@100..900&family=JetBrains+Mono:wght@100..800&display=swap" rel="stylesheet">
|
|
16
|
+
|
|
17
|
+
<!-- Geist (Vercel's font) -->
|
|
18
|
+
<link href="https://fonts.googleapis.com/css2?family=Geist:wght@100..900&family=Geist+Mono:wght@100..900&display=swap" rel="stylesheet">
|
|
19
|
+
```
|
|
20
|
+
|
|
21
|
+
### Method 2: Fontsource NPM (Best for bundlers)
|
|
22
|
+
|
|
23
|
+
```bash
|
|
24
|
+
# Install fonts
|
|
25
|
+
npm install @fontsource/inter @fontsource/jetbrains-mono @fontsource/space-grotesk
|
|
26
|
+
|
|
27
|
+
# Or all at once
|
|
28
|
+
npm install @fontsource/inter @fontsource/plus-jakarta-sans @fontsource/geist-sans @fontsource/geist-mono @fontsource/merriweather @fontsource/jetbrains-mono @fontsource/space-grotesk
|
|
29
|
+
```
|
|
30
|
+
|
|
31
|
+
```typescript
|
|
32
|
+
// In your entry file (main.tsx, layout.tsx, etc.)
|
|
33
|
+
import '@fontsource/inter/400.css';
|
|
34
|
+
import '@fontsource/inter/500.css';
|
|
35
|
+
import '@fontsource/inter/600.css';
|
|
36
|
+
import '@fontsource/inter/700.css';
|
|
37
|
+
|
|
38
|
+
import '@fontsource/jetbrains-mono/400.css';
|
|
39
|
+
import '@fontsource/jetbrains-mono/500.css';
|
|
40
|
+
|
|
41
|
+
import '@fontsource/space-grotesk/500.css';
|
|
42
|
+
import '@fontsource/space-grotesk/700.css';
|
|
43
|
+
```
|
|
44
|
+
|
|
45
|
+
### Method 3: Nerd Fonts (For terminal/coding)
|
|
46
|
+
|
|
47
|
+
```bash
|
|
48
|
+
# macOS with Homebrew
|
|
49
|
+
brew tap homebrew/cask-fonts
|
|
50
|
+
brew install --cask font-jetbrains-mono-nerd-font
|
|
51
|
+
brew install --cask font-fira-code-nerd-font
|
|
52
|
+
brew install --cask font-hack-nerd-font
|
|
53
|
+
|
|
54
|
+
# Windows (Chocolatey)
|
|
55
|
+
choco install nerd-fonts-hack
|
|
56
|
+
choco install nerd-fonts-firacode
|
|
57
|
+
|
|
58
|
+
# Arch Linux
|
|
59
|
+
yay -S nerd-fonts-jetbrains-mono nerd-fonts-fira-code
|
|
60
|
+
```
|
|
61
|
+
|
|
62
|
+
## Font Pairings by Use Case
|
|
63
|
+
|
|
64
|
+
### 1. Enterprise Dashboard
|
|
65
|
+
```css
|
|
66
|
+
:root {
|
|
67
|
+
--font-sans: 'Inter', system-ui, -apple-system, sans-serif;
|
|
68
|
+
--font-mono: 'JetBrains Mono', 'SF Mono', monospace;
|
|
69
|
+
--font-display: 'Space Grotesk', sans-serif;
|
|
70
|
+
}
|
|
71
|
+
|
|
72
|
+
body { font-family: var(--font-sans); }
|
|
73
|
+
h1, h2 { font-family: var(--font-display); }
|
|
74
|
+
code { font-family: var(--font-mono); }
|
|
75
|
+
```
|
|
76
|
+
|
|
77
|
+
### 2. Developer Tools / IDE
|
|
78
|
+
```css
|
|
79
|
+
:root {
|
|
80
|
+
--font-ui: 'Plus Jakarta Sans', system-ui, sans-serif;
|
|
81
|
+
--font-code: 'JetBrainsMono Nerd Font', 'JetBrains Mono', monospace;
|
|
82
|
+
--font-terminal: 'FiraCode Nerd Font', 'Fira Code', monospace;
|
|
83
|
+
}
|
|
84
|
+
|
|
85
|
+
/* UI Elements */
|
|
86
|
+
.sidebar, .toolbar { font-family: var(--font-ui); }
|
|
87
|
+
|
|
88
|
+
/* Code Editor */
|
|
89
|
+
.editor {
|
|
90
|
+
font-family: var(--font-code);
|
|
91
|
+
font-feature-settings: 'liga' 1, 'calt' 1; /* Enable ligatures */
|
|
92
|
+
}
|
|
93
|
+
|
|
94
|
+
/* Terminal */
|
|
95
|
+
.terminal { font-family: var(--font-terminal); }
|
|
96
|
+
```
|
|
97
|
+
|
|
98
|
+
### 3. Creative Portfolio
|
|
99
|
+
```css
|
|
100
|
+
:root {
|
|
101
|
+
--font-body: 'Geist Sans', system-ui, sans-serif;
|
|
102
|
+
--font-headings: 'Clash Display', sans-serif;
|
|
103
|
+
--font-accent: 'Syne', sans-serif;
|
|
104
|
+
--font-mono: 'Geist Mono', monospace;
|
|
105
|
+
}
|
|
106
|
+
|
|
107
|
+
.hero-title {
|
|
108
|
+
font-family: var(--font-headings);
|
|
109
|
+
font-weight: 700;
|
|
110
|
+
letter-spacing: -0.02em;
|
|
111
|
+
}
|
|
112
|
+
|
|
113
|
+
.nav-links { font-family: var(--font-accent); }
|
|
114
|
+
```
|
|
115
|
+
|
|
116
|
+
### 4. Editorial / Blog
|
|
117
|
+
```css
|
|
118
|
+
:root {
|
|
119
|
+
--font-serif: 'Merriweather', Georgia, serif;
|
|
120
|
+
--font-sans: 'Inter', system-ui, sans-serif;
|
|
121
|
+
--font-mono: 'IBM Plex Mono', monospace;
|
|
122
|
+
--font-display: 'DM Serif Display', Georgia, serif;
|
|
123
|
+
}
|
|
124
|
+
|
|
125
|
+
article p { font-family: var(--font-serif); }
|
|
126
|
+
article h1 { font-family: var(--font-display); }
|
|
127
|
+
figcaption { font-family: var(--font-sans); }
|
|
128
|
+
```
|
|
129
|
+
|
|
130
|
+
### 5. SaaS Marketing Site
|
|
131
|
+
```css
|
|
132
|
+
:root {
|
|
133
|
+
--font-primary: 'Poppins', system-ui, sans-serif;
|
|
134
|
+
--font-secondary: 'Manrope', sans-serif;
|
|
135
|
+
--font-mono: 'Geist Mono', monospace;
|
|
136
|
+
}
|
|
137
|
+
|
|
138
|
+
/* Headlines use Poppins for personality */
|
|
139
|
+
h1, h2, .cta-button { font-family: var(--font-primary); }
|
|
140
|
+
|
|
141
|
+
/* Body uses Manrope for readability */
|
|
142
|
+
body { font-family: var(--font-secondary); }
|
|
143
|
+
```
|
|
144
|
+
|
|
145
|
+
## Nerd Fonts: Icons in Code
|
|
146
|
+
|
|
147
|
+
Nerd Fonts combine regular fonts with thousands of icons from:
|
|
148
|
+
- Devicons (development tools)
|
|
149
|
+
- Font Awesome (general icons)
|
|
150
|
+
- Material Design (Google icons)
|
|
151
|
+
- Weather Icons
|
|
152
|
+
- Octicons (GitHub)
|
|
153
|
+
- Powerline symbols
|
|
154
|
+
|
|
155
|
+
### Common Glyphs
|
|
156
|
+
|
|
157
|
+
```html
|
|
158
|
+
<!-- File type icons -->
|
|
159
|
+
<span></span> <!-- folder -->
|
|
160
|
+
<span></span> <!-- file text -->
|
|
161
|
+
<span></span> <!-- git -->
|
|
162
|
+
<span></span> <!-- code -->
|
|
163
|
+
|
|
164
|
+
<!-- Status icons -->
|
|
165
|
+
<span></span> <!-- check -->
|
|
166
|
+
<span></span> <!-- error -->
|
|
167
|
+
<span></span> <!-- warning -->
|
|
168
|
+
<span></span> <!-- info -->
|
|
169
|
+
|
|
170
|
+
<!-- Tool icons -->
|
|
171
|
+
<span></span> <!-- docker -->
|
|
172
|
+
<span></span> <!-- kubernetes -->
|
|
173
|
+
<span></span> <!-- react -->
|
|
174
|
+
<span></span> <!-- typescript -->
|
|
175
|
+
```
|
|
176
|
+
|
|
177
|
+
### Using with CSS
|
|
178
|
+
|
|
179
|
+
```css
|
|
180
|
+
.nerd-icon {
|
|
181
|
+
font-family: 'JetBrainsMono Nerd Font', monospace;
|
|
182
|
+
font-size: 1.2em;
|
|
183
|
+
}
|
|
184
|
+
|
|
185
|
+
/* File tree styling */
|
|
186
|
+
.file-tree .folder::before {
|
|
187
|
+
content: '';
|
|
188
|
+
font-family: 'JetBrainsMono Nerd Font';
|
|
189
|
+
margin-right: 0.5em;
|
|
190
|
+
}
|
|
191
|
+
|
|
192
|
+
.file-tree .file-js::before {
|
|
193
|
+
content: '';
|
|
194
|
+
font-family: 'JetBrainsMono Nerd Font';
|
|
195
|
+
color: #f7df1e; /* JS yellow */
|
|
196
|
+
}
|
|
197
|
+
```
|
|
198
|
+
|
|
199
|
+
## Performance Optimization
|
|
200
|
+
|
|
201
|
+
### 1. Preconnect to Font CDNs
|
|
202
|
+
```html
|
|
203
|
+
<head>
|
|
204
|
+
<link rel="preconnect" href="https://fonts.googleapis.com">
|
|
205
|
+
<link rel="preconnect" href="https://fonts.gstatic.com" crossorigin>
|
|
206
|
+
<!-- Font links -->
|
|
207
|
+
</head>
|
|
208
|
+
```
|
|
209
|
+
|
|
210
|
+
### 2. Use Variable Fonts (when available)
|
|
211
|
+
```html
|
|
212
|
+
<!-- Inter as variable font (one file, all weights) -->
|
|
213
|
+
<link href="https://fonts.googleapis.com/css2?family=Inter:wght@100..900&display=swap" rel="stylesheet">
|
|
214
|
+
```
|
|
215
|
+
|
|
216
|
+
### 3. Font Display Strategy
|
|
217
|
+
```css
|
|
218
|
+
@font-face {
|
|
219
|
+
font-family: 'CustomFont';
|
|
220
|
+
src: url('font.woff2') format('woff2');
|
|
221
|
+
font-display: swap; /* Show fallback until loaded */
|
|
222
|
+
}
|
|
223
|
+
```
|
|
224
|
+
|
|
225
|
+
### 4. Preload Critical Fonts
|
|
226
|
+
```html
|
|
227
|
+
<link rel="preload" href="/fonts/GeistSans.woff2" as="font" type="font/woff2" crossorigin>
|
|
228
|
+
```
|
|
229
|
+
|
|
230
|
+
### 5. Subset Fonts (Advanced)
|
|
231
|
+
```bash
|
|
232
|
+
# Using glyphhanger to subset fonts
|
|
233
|
+
npx glyphhanger --subset=*.woff2 --formats=woff2 --css
|
|
234
|
+
```
|
|
235
|
+
|
|
236
|
+
## Framework Integration
|
|
237
|
+
|
|
238
|
+
### React / Next.js
|
|
239
|
+
|
|
240
|
+
```tsx
|
|
241
|
+
// layout.tsx
|
|
242
|
+
import { Inter, JetBrains_Mono } from 'next/font/google';
|
|
243
|
+
|
|
244
|
+
const inter = Inter({
|
|
245
|
+
subsets: ['latin'],
|
|
246
|
+
variable: '--font-sans',
|
|
247
|
+
});
|
|
248
|
+
|
|
249
|
+
const jetbrainsMono = JetBrains_Mono({
|
|
250
|
+
subsets: ['latin'],
|
|
251
|
+
variable: '--font-mono',
|
|
252
|
+
});
|
|
253
|
+
|
|
254
|
+
export default function RootLayout({ children }) {
|
|
255
|
+
return (
|
|
256
|
+
<html className={`${inter.variable} ${jetbrainsMono.variable}`}>
|
|
257
|
+
<body className="font-sans">{children}</body>
|
|
258
|
+
</html>
|
|
259
|
+
);
|
|
260
|
+
}
|
|
261
|
+
```
|
|
262
|
+
|
|
263
|
+
```css
|
|
264
|
+
/* globals.css */
|
|
265
|
+
@layer base {
|
|
266
|
+
body {
|
|
267
|
+
font-family: var(--font-sans), system-ui, sans-serif;
|
|
268
|
+
}
|
|
269
|
+
|
|
270
|
+
code, pre {
|
|
271
|
+
font-family: var(--font-mono), monospace;
|
|
272
|
+
}
|
|
273
|
+
}
|
|
274
|
+
```
|
|
275
|
+
|
|
276
|
+
### Tailwind CSS
|
|
277
|
+
|
|
278
|
+
```javascript
|
|
279
|
+
// tailwind.config.js
|
|
280
|
+
module.exports = {
|
|
281
|
+
theme: {
|
|
282
|
+
extend: {
|
|
283
|
+
fontFamily: {
|
|
284
|
+
sans: ['var(--font-sans)', 'system-ui', 'sans-serif'],
|
|
285
|
+
mono: ['var(--font-mono)', 'monospace'],
|
|
286
|
+
display: ['var(--font-display)', 'sans-serif'],
|
|
287
|
+
},
|
|
288
|
+
},
|
|
289
|
+
},
|
|
290
|
+
};
|
|
291
|
+
```
|
|
292
|
+
|
|
293
|
+
```html
|
|
294
|
+
<!-- Usage -->
|
|
295
|
+
<p class="font-sans text-base">Body text</p>
|
|
296
|
+
<code class="font-mono text-sm">Code snippet</code>
|
|
297
|
+
<h1 class="font-display text-4xl">Headline</h1>
|
|
298
|
+
```
|
|
299
|
+
|
|
300
|
+
## Accessibility
|
|
301
|
+
|
|
302
|
+
### Minimum Requirements
|
|
303
|
+
- Body text: minimum 16px (1rem)
|
|
304
|
+
- Line height: 1.5 minimum for body
|
|
305
|
+
- Contrast: 4.5:1 for normal text, 3:1 for large text
|
|
306
|
+
|
|
307
|
+
### Dyslexia Considerations
|
|
308
|
+
```css
|
|
309
|
+
@media (prefers-reduced-data: no-preference) {
|
|
310
|
+
/* Offer OpenDyslexic as an option */
|
|
311
|
+
body.dyslexia-mode {
|
|
312
|
+
font-family: 'OpenDyslexic', sans-serif;
|
|
313
|
+
line-height: 1.8;
|
|
314
|
+
word-spacing: 0.16em;
|
|
315
|
+
}
|
|
316
|
+
}
|
|
317
|
+
```
|
|
318
|
+
|
|
319
|
+
### Motion Preferences
|
|
320
|
+
```css
|
|
321
|
+
@media (prefers-reduced-motion: reduce) {
|
|
322
|
+
/* Disable font transitions */
|
|
323
|
+
* {
|
|
324
|
+
transition: none !important;
|
|
325
|
+
}
|
|
326
|
+
}
|
|
327
|
+
```
|
|
328
|
+
|
|
329
|
+
## Troubleshooting
|
|
330
|
+
|
|
331
|
+
### FOUT/FOIT Prevention
|
|
332
|
+
```css
|
|
333
|
+
/* Flash of Unstyled Text strategy */
|
|
334
|
+
@font-face {
|
|
335
|
+
font-family: 'Inter';
|
|
336
|
+
src: url('inter.woff2') format('woff2');
|
|
337
|
+
font-display: swap; /* Recommended */
|
|
338
|
+
/* or font-display: optional; for faster but may not load */
|
|
339
|
+
}
|
|
340
|
+
```
|
|
341
|
+
|
|
342
|
+
### Font Weight Mismatch
|
|
343
|
+
```css
|
|
344
|
+
/* If 500 looks too bold, use numeric values */
|
|
345
|
+
.medium-text {
|
|
346
|
+
font-weight: 450; /* Some variable fonts support this */
|
|
347
|
+
}
|
|
348
|
+
```
|
|
349
|
+
|
|
350
|
+
### Nerd Font Glyphs Not Showing
|
|
351
|
+
```css
|
|
352
|
+
/* Ensure fallback fonts have the glyphs */
|
|
353
|
+
.nerd-font {
|
|
354
|
+
font-family: 'JetBrainsMono Nerd Font', 'JetBrains Mono', monospace;
|
|
355
|
+
/* The second fallback won't have icons but maintains monospace */
|
|
356
|
+
}
|
|
357
|
+
```
|
|
358
|
+
|
|
359
|
+
## Complete Token Reference
|
|
360
|
+
|
|
361
|
+
All fonts are available as design tokens in `font-collection.json`:
|
|
362
|
+
|
|
363
|
+
```typescript
|
|
364
|
+
import { tokens } from '@frontend-arsenal/tokens';
|
|
365
|
+
|
|
366
|
+
// Font families
|
|
367
|
+
const sansFont = tokens.typography.families.sans.inter.$value;
|
|
368
|
+
const monoFont = tokens.typography.families.mono['jetbrains-mono'].$value;
|
|
369
|
+
const nerdFont = tokens.typography.families.nerd['nerd-mono'].$value;
|
|
370
|
+
|
|
371
|
+
// Font sizes
|
|
372
|
+
const baseSize = tokens.typography.sizes.base.$value; // "1rem"
|
|
373
|
+
const heroSize = tokens.typography.sizes['7xl'].$value; // "4.5rem"
|
|
374
|
+
|
|
375
|
+
// Font weights
|
|
376
|
+
const normal = tokens.typography.weights.normal.$value; // 400
|
|
377
|
+
const bold = tokens.typography.weights.bold.$value; // 700
|
|
378
|
+
|
|
379
|
+
// Line heights
|
|
380
|
+
const bodyLeading = tokens.typography.lineHeights.relaxed.$value; // 1.625
|
|
381
|
+
```
|
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
# Typography
|
|
2
|
+
|
|
3
|
+
Type scale definitions (font families, sizes, weights, line heights). These establish the typographic hierarchy for the system.
|
|
4
|
+
|
|
5
|
+
## 📦 Font Collection
|
|
6
|
+
|
|
7
|
+
Complete typography system with 40+ font families including Nerd Fonts.
|
|
8
|
+
|
|
9
|
+
See [font-collection.json](./font-collection.json) for all available fonts.
|
|
10
|
+
|
|
11
|
+
### Font Categories
|
|
12
|
+
- **Sans-Serif (7 families)** - Geist Sans, Inter, Satoshi, Manrope, Outfit, Poppins, Plus Jakarta Sans
|
|
13
|
+
- **Serif (5 families)** - Merriweather, DM Serif Display, Lora, Source Serif 4, Literata
|
|
14
|
+
- **Monospace (6 families)** - Geist Mono, JetBrains Mono, Fira Code, Cascadia Code, SF Mono, IBM Plex Mono
|
|
15
|
+
- **Nerd Fonts (5 patched)** - JetBrainsMono Nerd Font, FiraCode Nerd Font, Hack Nerd Font, CaskaydiaCove Nerd Font, Symbols Nerd Font
|
|
16
|
+
- **Display (5 families)** - Clash Display, Space Grotesk, Bungee, Archivo Black, Syne
|
|
17
|
+
|
|
18
|
+
### Quick Setup
|
|
19
|
+
|
|
20
|
+
```html
|
|
21
|
+
<!-- Google Fonts CDN -->
|
|
22
|
+
<link href="https://fonts.googleapis.com/css2?family=Inter:wght@100..900&family=JetBrains+Mono:wght@100..800&family=Space+Grotesk:wght@300..700&display=swap" rel="stylesheet">
|
|
23
|
+
```
|
|
24
|
+
|
|
25
|
+
```bash
|
|
26
|
+
# Or via npm (Fontsource)
|
|
27
|
+
npm install @fontsource/inter @fontsource/jetbrains-mono @fontsource/space-grotesk
|
|
28
|
+
```
|
|
29
|
+
|
|
30
|
+
### Recommended Pairings
|
|
31
|
+
|
|
32
|
+
**Professional:** Inter + JetBrains Mono + Space Grotesk
|
|
33
|
+
**Modern:** Geist Sans + Geist Mono + Clash Display
|
|
34
|
+
**Editorial:** Merriweather + Inter + IBM Plex Mono
|
|
35
|
+
**Developer:** Plus Jakarta Sans + JetBrainsMono Nerd Font
|
|
36
|
+
|
|
37
|
+
Full documentation in [FONT_GUIDE.md](./FONT_GUIDE.md) (create with complete usage examples).
|
|
@@ -0,0 +1,221 @@
|
|
|
1
|
+
{
|
|
2
|
+
"families": {
|
|
3
|
+
"sans": {
|
|
4
|
+
"geist": {
|
|
5
|
+
"$type": "fontFamily",
|
|
6
|
+
"$value": "'Geist Sans', system-ui, sans-serif",
|
|
7
|
+
"$description": "Vercel's Geist Sans - modern geometric sans-serif, clean and technical"
|
|
8
|
+
},
|
|
9
|
+
"inter": {
|
|
10
|
+
"$type": "fontFamily",
|
|
11
|
+
"$value": "'Inter', system-ui, sans-serif",
|
|
12
|
+
"$description": "Inter - highly legible, great for UI and data"
|
|
13
|
+
},
|
|
14
|
+
"satoshi": {
|
|
15
|
+
"$type": "fontFamily",
|
|
16
|
+
"$value": "'Satoshi', 'Inter', sans-serif",
|
|
17
|
+
"$description": "Satoshi - contemporary geometric sans, modern alternative"
|
|
18
|
+
},
|
|
19
|
+
"manrope": {
|
|
20
|
+
"$type": "fontFamily",
|
|
21
|
+
"$value": "'Manrope', sans-serif",
|
|
22
|
+
"$description": "Manrope - versatile geometric with personality"
|
|
23
|
+
},
|
|
24
|
+
"outfit": {
|
|
25
|
+
"$type": "fontFamily",
|
|
26
|
+
"$value": "'Outfit', sans-serif",
|
|
27
|
+
"$description": "Outfit - geometric with slight quirk, great for headlines"
|
|
28
|
+
},
|
|
29
|
+
"poppins": {
|
|
30
|
+
"$type": "fontFamily",
|
|
31
|
+
"$value": "'Poppins', sans-serif",
|
|
32
|
+
"$description": "Poppins - geometric, excellent for modern web apps"
|
|
33
|
+
},
|
|
34
|
+
"plus-jakarta-sans": {
|
|
35
|
+
"$type": "fontFamily",
|
|
36
|
+
"$value": "'Plus Jakarta Sans', sans-serif",
|
|
37
|
+
"$description": "Plus Jakarta Sans - humanist geometric, warm yet modern"
|
|
38
|
+
}
|
|
39
|
+
},
|
|
40
|
+
"serif": {
|
|
41
|
+
"merriweather": {
|
|
42
|
+
"$type": "fontFamily",
|
|
43
|
+
"$value": "'Merriweather', Georgia, serif",
|
|
44
|
+
"$description": "Merriweather - readable serif, great for long-form text"
|
|
45
|
+
},
|
|
46
|
+
"dm-serif-display": {
|
|
47
|
+
"$type": "fontFamily",
|
|
48
|
+
"$value": "'DM Serif Display', Georgia, serif",
|
|
49
|
+
"$description": "DM Serif Display - elegant display serif for headings"
|
|
50
|
+
},
|
|
51
|
+
"lora": {
|
|
52
|
+
"$type": "fontFamily",
|
|
53
|
+
"$value": "'Lora', Georgia, serif",
|
|
54
|
+
"$description": "Lora - modern calligraphic serif for body text"
|
|
55
|
+
},
|
|
56
|
+
"source-serif": {
|
|
57
|
+
"$type": "fontFamily",
|
|
58
|
+
"$value": "'Source Serif 4', Georgia, serif",
|
|
59
|
+
"$description": "Source Serif 4 - optimized for screen reading"
|
|
60
|
+
},
|
|
61
|
+
"literata": {
|
|
62
|
+
"$type": "fontFamily",
|
|
63
|
+
"$value": "'Literata', Georgia, serif",
|
|
64
|
+
"$description": "Literata - distinctive serif, great for editorial"
|
|
65
|
+
}
|
|
66
|
+
},
|
|
67
|
+
"mono": {
|
|
68
|
+
"geist-mono": {
|
|
69
|
+
"$type": "fontFamily",
|
|
70
|
+
"$value": "'Geist Mono', 'SF Mono', Monaco, monospace",
|
|
71
|
+
"$description": "Vercel's Geist Mono - clean technical monospace"
|
|
72
|
+
},
|
|
73
|
+
"jetbrains-mono": {
|
|
74
|
+
"$type": "fontFamily",
|
|
75
|
+
"$value": "'JetBrains Mono', 'Fira Code', monospace",
|
|
76
|
+
"$description": "JetBrains Mono - developer-focused with ligatures"
|
|
77
|
+
},
|
|
78
|
+
"fira-code": {
|
|
79
|
+
"$type": "fontFamily",
|
|
80
|
+
"$value": "'Fira Code', 'Fira Mono', monospace",
|
|
81
|
+
"$description": "Fira Code - popular coding font with ligatures"
|
|
82
|
+
},
|
|
83
|
+
"cascadia-code": {
|
|
84
|
+
"$type": "fontFamily",
|
|
85
|
+
"$value": "'Cascadia Code', 'Consolas', monospace",
|
|
86
|
+
"$description": "Cascadia Code - Microsoft's modern coding font"
|
|
87
|
+
},
|
|
88
|
+
"sf-mono": {
|
|
89
|
+
"$type": "fontFamily",
|
|
90
|
+
"$value": "'SF Mono', 'Monaco', 'Menlo', monospace",
|
|
91
|
+
"$description": "SF Mono - Apple's system monospace font"
|
|
92
|
+
},
|
|
93
|
+
"ibm-plex-mono": {
|
|
94
|
+
"$type": "fontFamily",
|
|
95
|
+
"$value": "'IBM Plex Mono', 'Courier New', monospace",
|
|
96
|
+
"$description": "IBM Plex Mono - classic technical monospace"
|
|
97
|
+
}
|
|
98
|
+
},
|
|
99
|
+
"nerd": {
|
|
100
|
+
"nerd-symbols": {
|
|
101
|
+
"$type": "fontFamily",
|
|
102
|
+
"$value": "'Symbols Nerd Font', monospace",
|
|
103
|
+
"$description": "Nerd Font symbols - thousands of icons and glyphs"
|
|
104
|
+
},
|
|
105
|
+
"nerd-mono": {
|
|
106
|
+
"$type": "fontFamily",
|
|
107
|
+
"$value": "'JetBrainsMono Nerd Font', 'JetBrains Mono', monospace",
|
|
108
|
+
"$description": "JetBrains Mono with Nerd Font glyphs"
|
|
109
|
+
},
|
|
110
|
+
"nerd-fira": {
|
|
111
|
+
"$type": "fontFamily",
|
|
112
|
+
"$value": "'FiraCode Nerd Font', 'Fira Code', monospace",
|
|
113
|
+
"$description": "Fira Code with Nerd Font glyphs"
|
|
114
|
+
},
|
|
115
|
+
"nerd-hack": {
|
|
116
|
+
"$type": "fontFamily",
|
|
117
|
+
"$value": "'Hack Nerd Font', 'Hack', monospace",
|
|
118
|
+
"$description": "Hack font with Nerd Font glyphs"
|
|
119
|
+
},
|
|
120
|
+
"nerd-cascadia": {
|
|
121
|
+
"$type": "fontFamily",
|
|
122
|
+
"$value": "'CaskaydiaCove Nerd Font', 'Cascadia Code', monospace",
|
|
123
|
+
"$description": "Cascadia Code with Nerd Font glyphs (CaskaydiaCove)"
|
|
124
|
+
}
|
|
125
|
+
},
|
|
126
|
+
"display": {
|
|
127
|
+
"clash-display": {
|
|
128
|
+
"$type": "fontFamily",
|
|
129
|
+
"$value": "'Clash Display', sans-serif",
|
|
130
|
+
"$description": "Clash Display - bold geometric display font"
|
|
131
|
+
},
|
|
132
|
+
"space-grotesk": {
|
|
133
|
+
"$type": "fontFamily",
|
|
134
|
+
"$value": "'Space Grotesk', sans-serif",
|
|
135
|
+
"$description": "Space Grotesk - quirky geometric with personality"
|
|
136
|
+
},
|
|
137
|
+
"bungee": {
|
|
138
|
+
"$type": "fontFamily",
|
|
139
|
+
"$value": "'Bungee', sans-serif",
|
|
140
|
+
"$description": "Bungee - bold, attention-grabbing display font"
|
|
141
|
+
},
|
|
142
|
+
"archivo-black": {
|
|
143
|
+
"$type": "fontFamily",
|
|
144
|
+
"$value": "'Archivo Black', sans-serif",
|
|
145
|
+
"$description": "Archivo Black - heavy sans for headlines"
|
|
146
|
+
},
|
|
147
|
+
"syne": {
|
|
148
|
+
"$type": "fontFamily",
|
|
149
|
+
"$value": "'Syne', sans-serif",
|
|
150
|
+
"$description": "Syne - experimental sans, great for creative sites"
|
|
151
|
+
}
|
|
152
|
+
}
|
|
153
|
+
},
|
|
154
|
+
"sizes": {
|
|
155
|
+
"2xs": {
|
|
156
|
+
"$type": "fontSize",
|
|
157
|
+
"$value": "0.625rem",
|
|
158
|
+
"$description": "10px - smallest text, timestamps"
|
|
159
|
+
},
|
|
160
|
+
"xs": { "$type": "fontSize", "$value": "0.75rem", "$description": "12px - captions, badges" },
|
|
161
|
+
"sm": {
|
|
162
|
+
"$type": "fontSize",
|
|
163
|
+
"$value": "0.875rem",
|
|
164
|
+
"$description": "14px - small body, buttons"
|
|
165
|
+
},
|
|
166
|
+
"base": { "$type": "fontSize", "$value": "1rem", "$description": "16px - default body text" },
|
|
167
|
+
"lg": { "$type": "fontSize", "$value": "1.125rem", "$description": "18px - lead paragraphs" },
|
|
168
|
+
"xl": { "$type": "fontSize", "$value": "1.25rem", "$description": "20px - small headings" },
|
|
169
|
+
"2xl": { "$type": "fontSize", "$value": "1.5rem", "$description": "24px - H4" },
|
|
170
|
+
"3xl": { "$type": "fontSize", "$value": "1.875rem", "$description": "30px - H3" },
|
|
171
|
+
"4xl": { "$type": "fontSize", "$value": "2.25rem", "$description": "36px - H2" },
|
|
172
|
+
"5xl": { "$type": "fontSize", "$value": "3rem", "$description": "48px - H1" },
|
|
173
|
+
"6xl": { "$type": "fontSize", "$value": "3.75rem", "$description": "60px - display headings" },
|
|
174
|
+
"7xl": { "$type": "fontSize", "$value": "4.5rem", "$description": "72px - hero headings" },
|
|
175
|
+
"8xl": { "$type": "fontSize", "$value": "6rem", "$description": "96px - mega headings" },
|
|
176
|
+
"9xl": { "$type": "fontSize", "$value": "8rem", "$description": "128px - extreme display" }
|
|
177
|
+
},
|
|
178
|
+
"weights": {
|
|
179
|
+
"thin": { "$type": "fontWeight", "$value": 100, "$description": "Ultra light - display only" },
|
|
180
|
+
"extralight": { "$type": "fontWeight", "$value": 200, "$description": "Extra light" },
|
|
181
|
+
"light": { "$type": "fontWeight", "$value": 300, "$description": "Light weight" },
|
|
182
|
+
"normal": { "$type": "fontWeight", "$value": 400, "$description": "Normal/regular weight" },
|
|
183
|
+
"medium": {
|
|
184
|
+
"$type": "fontWeight",
|
|
185
|
+
"$value": 500,
|
|
186
|
+
"$description": "Medium weight - UI emphasis"
|
|
187
|
+
},
|
|
188
|
+
"semibold": { "$type": "fontWeight", "$value": 600, "$description": "Semi-bold - headings" },
|
|
189
|
+
"bold": { "$type": "fontWeight", "$value": 700, "$description": "Bold - strong emphasis" },
|
|
190
|
+
"extrabold": { "$type": "fontWeight", "$value": 800, "$description": "Extra bold - display" },
|
|
191
|
+
"black": { "$type": "fontWeight", "$value": 900, "$description": "Black - maximum weight" }
|
|
192
|
+
},
|
|
193
|
+
"lineHeights": {
|
|
194
|
+
"none": { "$type": "lineHeight", "$value": 1, "$description": "No leading - headings" },
|
|
195
|
+
"tight": { "$type": "lineHeight", "$value": 1.25, "$description": "Tight - display text" },
|
|
196
|
+
"snug": { "$type": "lineHeight", "$value": 1.375, "$description": "Snug - small text" },
|
|
197
|
+
"normal": { "$type": "lineHeight", "$value": 1.5, "$description": "Normal - body text" },
|
|
198
|
+
"relaxed": {
|
|
199
|
+
"$type": "lineHeight",
|
|
200
|
+
"$value": 1.625,
|
|
201
|
+
"$description": "Relaxed - comfortable reading"
|
|
202
|
+
},
|
|
203
|
+
"loose": { "$type": "lineHeight", "$value": 2, "$description": "Loose - editorial" }
|
|
204
|
+
},
|
|
205
|
+
"letterSpacing": {
|
|
206
|
+
"tighter": {
|
|
207
|
+
"$type": "letterSpacing",
|
|
208
|
+
"$value": "-0.05em",
|
|
209
|
+
"$description": "Extra tight - large headings"
|
|
210
|
+
},
|
|
211
|
+
"tight": { "$type": "letterSpacing", "$value": "-0.025em", "$description": "Tight - headings" },
|
|
212
|
+
"normal": { "$type": "letterSpacing", "$value": "0", "$description": "No tracking" },
|
|
213
|
+
"wide": { "$type": "letterSpacing", "$value": "0.025em", "$description": "Slight tracking" },
|
|
214
|
+
"wider": { "$type": "letterSpacing", "$value": "0.05em", "$description": "Medium tracking" },
|
|
215
|
+
"widest": {
|
|
216
|
+
"$type": "letterSpacing",
|
|
217
|
+
"$value": "0.1em",
|
|
218
|
+
"$description": "Wide tracking - labels"
|
|
219
|
+
}
|
|
220
|
+
}
|
|
221
|
+
}
|