aibos-design-system 1.0.0 → 1.0.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/LICENSE +21 -0
- package/README.md +335 -333
- package/dist/headless-map.json +44 -41
- package/dist/tokens/index.d.ts +66 -66
- package/dist/tokens.json +34 -34
- package/{API_REFERENCE.md → docs/API_REFERENCE.md} +379 -379
- package/{EXTERNAL_USAGE.md → docs/EXTERNAL_USAGE.md} +372 -370
- package/docs/INTEGRATION_GUIDE.md +433 -0
- package/docs/QUICK_REFERENCE.md +303 -0
- package/input.css +4056 -4050
- package/lib/cli-autocomplete.ts +231 -0
- package/lib/cli-commands.ts +364 -0
- package/lib/cli-filter-engine.ts +271 -0
- package/lib/cli-parser.ts +197 -0
- package/lib/utils.ts +18 -0
- package/package.json +11 -4
- package/style.css +683 -237
|
@@ -1,379 +1,379 @@
|
|
|
1
|
-
# Neo-Analog Design System - API Reference
|
|
2
|
-
|
|
3
|
-
**Quick Reference Guide for npm Package Users**
|
|
4
|
-
|
|
5
|
-
This document provides a complete reference for all typography, spacing, colors, and component classes available in the Neo-Analog Design System.
|
|
6
|
-
|
|
7
|
-
---
|
|
8
|
-
|
|
9
|
-
## 📖 Table of Contents
|
|
10
|
-
|
|
11
|
-
1. [Typography Hierarchy](#typography-hierarchy)
|
|
12
|
-
2. [Spacing & Padding](#spacing--padding)
|
|
13
|
-
3. [Component Classes](#component-classes)
|
|
14
|
-
4. [Color Tokens](#color-tokens)
|
|
15
|
-
5. [Layout Classes](#layout-classes)
|
|
16
|
-
6. [Using Design Tokens](#using-design-tokens)
|
|
17
|
-
|
|
18
|
-
---
|
|
19
|
-
|
|
20
|
-
## Typography Hierarchy
|
|
21
|
-
|
|
22
|
-
**⚠️ Important**: Always use semantic classes (`.na-h1` through `.na-h6`) instead of hardcoding font sizes. This prevents design drift.
|
|
23
|
-
|
|
24
|
-
### Heading Classes
|
|
25
|
-
|
|
26
|
-
| Class | Size | Weight | Line Height | Usage |
|
|
27
|
-
|-------|------|--------|-------------|-------|
|
|
28
|
-
| `.na-h1` | **32px** (2rem) | **700** (bold) | 1.2 | Page titles (unique H1 per page) |
|
|
29
|
-
| `.na-h2` | **24px** (1.5rem) | **600** (semibold) | 1.3 | Section titles (major page divisions) |
|
|
30
|
-
| `.na-h3` | **20px** (1.25rem) | **600** (semibold) | 1.4 | Subsection titles (within sections) |
|
|
31
|
-
| `.na-h4` | **18px** (1.125rem) | **600** (semibold) | 1.4 | Card titles (inside `.na-card`) |
|
|
32
|
-
| `.na-h5` | **16px** (1rem) | **600** (semibold) | 1.5 | Small titles (minor groupings) |
|
|
33
|
-
| `.na-h6` | **14px** (0.875rem) | **600** (semibold) | 1.5 | Micro titles (tooltips, tiny headers) |
|
|
34
|
-
|
|
35
|
-
### Data & Metadata Classes
|
|
36
|
-
|
|
37
|
-
| Class | Size | Weight | Font | Usage |
|
|
38
|
-
|-------|------|--------|------|-------|
|
|
39
|
-
| `.na-data` | **14px** (0.875rem) | **400** (normal) | Monospace | Primary data values, table cells, user input |
|
|
40
|
-
| `.na-data-large` | **30px** (1.875rem) | **500** (medium) | Serif | KPI values, hero numbers, dashboard stats |
|
|
41
|
-
| `.na-metadata` | **11px** (0.6875rem) | **500** (medium) | Sans | Field labels, column headers (uppercase, tracked) |
|
|
42
|
-
| `.na-metadata-small` | **10px** (0.625rem) | **400** (normal) | Sans | Timestamps, IDs, footnotes, secondary info |
|
|
43
|
-
|
|
44
|
-
### Typography Examples
|
|
45
|
-
|
|
46
|
-
```tsx
|
|
47
|
-
// Headings
|
|
48
|
-
<h1 className="na-h1">Page Title</h1>
|
|
49
|
-
<h2 className="na-h2">Section Title</h2>
|
|
50
|
-
<h3 className="na-h3">Subsection</h3>
|
|
51
|
-
<h4 className="na-h4">Card Title</h4>
|
|
52
|
-
|
|
53
|
-
// Data & Metadata
|
|
54
|
-
<div className="na-data">$12,450.00</div>
|
|
55
|
-
<div className="na-data-large">1,234,567</div>
|
|
56
|
-
<div className="na-metadata">PO-88219 • Feed Supply</div>
|
|
57
|
-
<div className="na-metadata-small">Updated 2m ago</div>
|
|
58
|
-
```
|
|
59
|
-
|
|
60
|
-
---
|
|
61
|
-
|
|
62
|
-
## Spacing & Padding
|
|
63
|
-
|
|
64
|
-
The design system uses a **standard Tailwind spacing scale**. Use Tailwind's standard padding/margin classes (e.g., `p-4`, `p-6`, `m-8`).
|
|
65
|
-
|
|
66
|
-
### Standard Spacing Scale
|
|
67
|
-
|
|
68
|
-
| Class | Value | Pixels |
|
|
69
|
-
|-------|-------|--------|
|
|
70
|
-
| `p-0`, `m-0` | 0 | 0px |
|
|
71
|
-
| `p-1`, `m-1` | 0.25rem | 4px |
|
|
72
|
-
| `p-2`, `m-2` | 0.5rem | 8px |
|
|
73
|
-
| `p-4`, `m-4` | 1rem | **16px** |
|
|
74
|
-
| `p-6`, `m-6` | 1.5rem | **24px** (standard) |
|
|
75
|
-
| `p-8`, `m-8` | 2rem | **32px** |
|
|
76
|
-
| `p-12`, `m-12` | 3rem | 48px |
|
|
77
|
-
| `p-16`, `m-16` | 4rem | 64px |
|
|
78
|
-
| `p-24`, `m-24` | 6rem | 96px |
|
|
79
|
-
|
|
80
|
-
### Common Spacing Patterns
|
|
81
|
-
|
|
82
|
-
```tsx
|
|
83
|
-
// Standard card padding
|
|
84
|
-
<div className="na-card p-6">Content</div>
|
|
85
|
-
|
|
86
|
-
// Standard content padding
|
|
87
|
-
<div className="na-content p-8">Content</div>
|
|
88
|
-
|
|
89
|
-
// Spacing between elements
|
|
90
|
-
<div className="space-y-6">
|
|
91
|
-
<div>Item 1</div>
|
|
92
|
-
<div>Item 2</div>
|
|
93
|
-
</div>
|
|
94
|
-
|
|
95
|
-
// Grid with standard gap
|
|
96
|
-
<div className="na-grid gap-6">
|
|
97
|
-
<div>Item 1</div>
|
|
98
|
-
<div>Item 2</div>
|
|
99
|
-
</div>
|
|
100
|
-
```
|
|
101
|
-
|
|
102
|
-
### Directional Spacing
|
|
103
|
-
|
|
104
|
-
Use Tailwind's directional utilities:
|
|
105
|
-
- `pt-*`, `pb-*`, `pl-*`, `pr-*` (padding)
|
|
106
|
-
- `mt-*`, `mb-*`, `ml-*`, `mr-*` (margin)
|
|
107
|
-
- `px-*`, `py-*` (padding horizontal/vertical)
|
|
108
|
-
- `mx-*`, `my-*` (margin horizontal/vertical)
|
|
109
|
-
|
|
110
|
-
```tsx
|
|
111
|
-
<div className="na-card p-6 mb-8">Card with bottom margin</div>
|
|
112
|
-
<div className="flex gap-4">Items with gap</div>
|
|
113
|
-
```
|
|
114
|
-
|
|
115
|
-
---
|
|
116
|
-
|
|
117
|
-
## Component Classes
|
|
118
|
-
|
|
119
|
-
### Cards & Surfaces
|
|
120
|
-
|
|
121
|
-
| Class | Description |
|
|
122
|
-
|-------|-------------|
|
|
123
|
-
| `.na-card` | Paper background, shadow, filament top border |
|
|
124
|
-
| `.na-panel` | Muted background, internal separation |
|
|
125
|
-
| `.na-content` | Standard 32px padding container |
|
|
126
|
-
|
|
127
|
-
### Buttons
|
|
128
|
-
|
|
129
|
-
| Class | Description |
|
|
130
|
-
|-------|-------------|
|
|
131
|
-
| `.na-btn` | Standard button |
|
|
132
|
-
| `.na-btn-primary` | Primary action button |
|
|
133
|
-
| `.na-btn-secondary` | Secondary button |
|
|
134
|
-
| `.na-iconbtn` | Icon-only button |
|
|
135
|
-
|
|
136
|
-
### Inputs
|
|
137
|
-
|
|
138
|
-
| Class | Description |
|
|
139
|
-
|-------|-------------|
|
|
140
|
-
| `.na-input` | Text input (never use default borders) |
|
|
141
|
-
|
|
142
|
-
### Status Indicators
|
|
143
|
-
|
|
144
|
-
| Class | Description |
|
|
145
|
-
|-------|-------------|
|
|
146
|
-
| `.na-status` | Base status badge |
|
|
147
|
-
| `.na-status-ok` | Success status (green) |
|
|
148
|
-
| `.na-status-pending` | Pending status (yellow) |
|
|
149
|
-
| `.na-status-bad` | Error status (red) |
|
|
150
|
-
|
|
151
|
-
### Tables
|
|
152
|
-
|
|
153
|
-
| Class | Description |
|
|
154
|
-
|-------|-------------|
|
|
155
|
-
| `.na-table-wrap` | Table container with scrolling |
|
|
156
|
-
| `.na-table` | Table element |
|
|
157
|
-
| `.na-th` | Table header cell |
|
|
158
|
-
| `.na-td` | Table data cell |
|
|
159
|
-
| `.na-tr` | Table row |
|
|
160
|
-
| `.na-tabular` | Tabular numbers (for alignment) |
|
|
161
|
-
|
|
162
|
-
### Component Examples
|
|
163
|
-
|
|
164
|
-
```tsx
|
|
165
|
-
// Card
|
|
166
|
-
<div className="na-card p-6">
|
|
167
|
-
<h3 className="na-h4">Card Title</h3>
|
|
168
|
-
<div className="na-data">Content</div>
|
|
169
|
-
</div>
|
|
170
|
-
|
|
171
|
-
// Button
|
|
172
|
-
<button className="na-btn na-btn-primary">Click Me</button>
|
|
173
|
-
|
|
174
|
-
// Status
|
|
175
|
-
<span className="na-status na-status-ok">Active</span>
|
|
176
|
-
|
|
177
|
-
// Table
|
|
178
|
-
<div className="na-table-wrap">
|
|
179
|
-
<table className="na-table">
|
|
180
|
-
<thead>
|
|
181
|
-
<tr>
|
|
182
|
-
<th className="na-th">Name</th>
|
|
183
|
-
<th className="na-th">Price</th>
|
|
184
|
-
</tr>
|
|
185
|
-
</thead>
|
|
186
|
-
<tbody>
|
|
187
|
-
<tr className="na-tr">
|
|
188
|
-
<td className="na-td">Product</td>
|
|
189
|
-
<td className="na-td na-tabular">$1,234.56</td>
|
|
190
|
-
</tr>
|
|
191
|
-
</tbody>
|
|
192
|
-
</table>
|
|
193
|
-
</div>
|
|
194
|
-
```
|
|
195
|
-
|
|
196
|
-
---
|
|
197
|
-
|
|
198
|
-
## Color Tokens
|
|
199
|
-
|
|
200
|
-
### Base Colors
|
|
201
|
-
|
|
202
|
-
| Token | Value | Usage |
|
|
203
|
-
|-------|-------|-------|
|
|
204
|
-
| `--color-void` | `#09090b` | Main background (Zinc-950) |
|
|
205
|
-
| `--color-paper` | `#121214` | Panel background (Zinc-900) |
|
|
206
|
-
| `--color-paper-2` | `#18181b` | Hover/Input background (Zinc-800) |
|
|
207
|
-
| `--color-lux` | `#f4f4f5` | Primary text (Zinc-50) |
|
|
208
|
-
| `--color-lux-dim` | `#a1a1aa` | Secondary text (Zinc-400) |
|
|
209
|
-
| `--color-clay` | `#71717a` | Meta/Label text (Zinc-500) |
|
|
210
|
-
| `--color-gold` | `#eab308` | Accent color (Amber-500) |
|
|
211
|
-
|
|
212
|
-
### Status Colors
|
|
213
|
-
|
|
214
|
-
| Token | Value | Usage |
|
|
215
|
-
|-------|-------|-------|
|
|
216
|
-
| `--color-success` | `#10b981` | Success states (Emerald-500) |
|
|
217
|
-
| `--color-warning` | `#f59e0b` | Warning states (Amber-500) |
|
|
218
|
-
| `--color-error` | `#f43f5e` | Error states (Rose-500) |
|
|
219
|
-
| `--color-info` | `#3b82f6` | Info states (Blue-500) |
|
|
220
|
-
|
|
221
|
-
### Using Color Tokens
|
|
222
|
-
|
|
223
|
-
```tsx
|
|
224
|
-
// In CSS/CSS-in-JS
|
|
225
|
-
import '
|
|
226
|
-
|
|
227
|
-
const style = {
|
|
228
|
-
backgroundColor: 'var(--color-paper)',
|
|
229
|
-
color: 'var(--color-lux)',
|
|
230
|
-
borderColor: 'var(--color-stroke)',
|
|
231
|
-
};
|
|
232
|
-
|
|
233
|
-
// In TypeScript/JavaScript
|
|
234
|
-
import tokens from '
|
|
235
|
-
|
|
236
|
-
const style = {
|
|
237
|
-
backgroundColor: tokens.color.paper,
|
|
238
|
-
color: tokens.color.lux,
|
|
239
|
-
};
|
|
240
|
-
```
|
|
241
|
-
|
|
242
|
-
---
|
|
243
|
-
|
|
244
|
-
## Layout Classes
|
|
245
|
-
|
|
246
|
-
### Shell Layout
|
|
247
|
-
|
|
248
|
-
| Class | Description |
|
|
249
|
-
|-------|-------------|
|
|
250
|
-
| `.na-shell` | Sidebar + Main area grid |
|
|
251
|
-
| `.na-shell-omni` | Omni shell layout (grid-based) |
|
|
252
|
-
| `.na-shell-head` | Shell header |
|
|
253
|
-
| `.na-shell-rail` | Shell sidebar |
|
|
254
|
-
| `.na-shell-main` | Shell main content area |
|
|
255
|
-
|
|
256
|
-
### Grid & Layout
|
|
257
|
-
|
|
258
|
-
| Class | Description |
|
|
259
|
-
|-------|-------------|
|
|
260
|
-
| `.na-grid` | Standard grid with 24px gap |
|
|
261
|
-
| `.na-grid-frozen` | Bi-directional sticky grid (frozen panes) |
|
|
262
|
-
| `.na-table-frozen` | Frozen table (sticky columns/rows) |
|
|
263
|
-
|
|
264
|
-
### Layout Examples
|
|
265
|
-
|
|
266
|
-
```tsx
|
|
267
|
-
// Standard shell
|
|
268
|
-
<div className="na-shell">
|
|
269
|
-
<aside className="na-shell-rail">Sidebar</aside>
|
|
270
|
-
<main className="na-shell-main">Content</main>
|
|
271
|
-
</div>
|
|
272
|
-
|
|
273
|
-
// Standard grid
|
|
274
|
-
<div className="na-grid gap-6">
|
|
275
|
-
<div className="na-card p-6">Card 1</div>
|
|
276
|
-
<div className="na-card p-6">Card 2</div>
|
|
277
|
-
</div>
|
|
278
|
-
```
|
|
279
|
-
|
|
280
|
-
---
|
|
281
|
-
|
|
282
|
-
## Using Design Tokens
|
|
283
|
-
|
|
284
|
-
### Import Tokens
|
|
285
|
-
|
|
286
|
-
```typescript
|
|
287
|
-
// CSS (main export)
|
|
288
|
-
import '
|
|
289
|
-
|
|
290
|
-
// Tokens (JSON)
|
|
291
|
-
import tokens from '
|
|
292
|
-
|
|
293
|
-
// Tokens (TypeScript)
|
|
294
|
-
import type { DesignTokens } from '
|
|
295
|
-
```
|
|
296
|
-
|
|
297
|
-
### Access Token Values
|
|
298
|
-
|
|
299
|
-
```typescript
|
|
300
|
-
import tokens from '
|
|
301
|
-
|
|
302
|
-
// Colors
|
|
303
|
-
tokens.color.void // '#09090b'
|
|
304
|
-
tokens.color.paper // '#121214'
|
|
305
|
-
tokens.color.lux // '#f4f4f5'
|
|
306
|
-
tokens.color.gold // '#eab308'
|
|
307
|
-
|
|
308
|
-
// Spacing
|
|
309
|
-
tokens.spacing[4] // '1rem' (16px)
|
|
310
|
-
tokens.spacing[6] // '1.5rem' (24px)
|
|
311
|
-
tokens.spacing[8] // '2rem' (32px)
|
|
312
|
-
|
|
313
|
-
// Typography
|
|
314
|
-
tokens.typography.heading1.size // '2rem'
|
|
315
|
-
tokens.typography.heading1.weight // 700
|
|
316
|
-
|
|
317
|
-
// Border Radius
|
|
318
|
-
tokens.radius.card // '0.75rem'
|
|
319
|
-
tokens.radius.panel // '1rem'
|
|
320
|
-
```
|
|
321
|
-
|
|
322
|
-
### Using in Components
|
|
323
|
-
|
|
324
|
-
```tsx
|
|
325
|
-
import tokens from '
|
|
326
|
-
|
|
327
|
-
export function CustomButton() {
|
|
328
|
-
return (
|
|
329
|
-
<button
|
|
330
|
-
className="na-btn"
|
|
331
|
-
style={{
|
|
332
|
-
backgroundColor: tokens.color.gold,
|
|
333
|
-
padding: `${tokens.spacing[4]} ${tokens.spacing[6]}`,
|
|
334
|
-
borderRadius: tokens.radius.control,
|
|
335
|
-
}}
|
|
336
|
-
>
|
|
337
|
-
Custom Button
|
|
338
|
-
</button>
|
|
339
|
-
);
|
|
340
|
-
}
|
|
341
|
-
```
|
|
342
|
-
|
|
343
|
-
---
|
|
344
|
-
|
|
345
|
-
## Quick Reference Cheat Sheet
|
|
346
|
-
|
|
347
|
-
### Typography
|
|
348
|
-
- **Page Title**: `.na-h1` (32px bold)
|
|
349
|
-
- **Section**: `.na-h2` (24px semibold)
|
|
350
|
-
- **Subsection**: `.na-h3` (20px semibold)
|
|
351
|
-
- **Card Title**: `.na-h4` (18px semibold)
|
|
352
|
-
- **Data**: `.na-data` (14px monospace)
|
|
353
|
-
- **KPI**: `.na-data-large` (30px serif)
|
|
354
|
-
- **Label**: `.na-metadata` (11px uppercase)
|
|
355
|
-
- **Footnote**: `.na-metadata-small` (10px)
|
|
356
|
-
|
|
357
|
-
### Spacing
|
|
358
|
-
- **Standard padding**: `p-6` (24px)
|
|
359
|
-
- **Content padding**: `p-8` (32px)
|
|
360
|
-
- **Standard gap**: `gap-6` (24px)
|
|
361
|
-
|
|
362
|
-
### Components
|
|
363
|
-
- **Card**: `.na-card p-6`
|
|
364
|
-
- **Button**: `.na-btn na-btn-primary`
|
|
365
|
-
- **Status**: `.na-status na-status-ok`
|
|
366
|
-
- **Input**: `.na-input`
|
|
367
|
-
|
|
368
|
-
---
|
|
369
|
-
|
|
370
|
-
## 📚 Additional Resources
|
|
371
|
-
|
|
372
|
-
- **Full Documentation**: See [README.md](./README.md) for complete guide
|
|
373
|
-
- **External Usage**: See [EXTERNAL_USAGE.md](./EXTERNAL_USAGE.md) for framework examples
|
|
374
|
-
- **GitHub**: https://github.com/pohlai88/AIBOS-DESIGN-SYSTEM
|
|
375
|
-
|
|
376
|
-
---
|
|
377
|
-
|
|
378
|
-
**Need Help?** Check the [README.md](./README.md) or open an issue on GitHub.
|
|
379
|
-
|
|
1
|
+
# Neo-Analog Design System - API Reference
|
|
2
|
+
|
|
3
|
+
**Quick Reference Guide for npm Package Users**
|
|
4
|
+
|
|
5
|
+
This document provides a complete reference for all typography, spacing, colors, and component classes available in the Neo-Analog Design System.
|
|
6
|
+
|
|
7
|
+
---
|
|
8
|
+
|
|
9
|
+
## 📖 Table of Contents
|
|
10
|
+
|
|
11
|
+
1. [Typography Hierarchy](#typography-hierarchy)
|
|
12
|
+
2. [Spacing & Padding](#spacing--padding)
|
|
13
|
+
3. [Component Classes](#component-classes)
|
|
14
|
+
4. [Color Tokens](#color-tokens)
|
|
15
|
+
5. [Layout Classes](#layout-classes)
|
|
16
|
+
6. [Using Design Tokens](#using-design-tokens)
|
|
17
|
+
|
|
18
|
+
---
|
|
19
|
+
|
|
20
|
+
## Typography Hierarchy
|
|
21
|
+
|
|
22
|
+
**⚠️ Important**: Always use semantic classes (`.na-h1` through `.na-h6`) instead of hardcoding font sizes. This prevents design drift.
|
|
23
|
+
|
|
24
|
+
### Heading Classes
|
|
25
|
+
|
|
26
|
+
| Class | Size | Weight | Line Height | Usage |
|
|
27
|
+
|-------|------|--------|-------------|-------|
|
|
28
|
+
| `.na-h1` | **32px** (2rem) | **700** (bold) | 1.2 | Page titles (unique H1 per page) |
|
|
29
|
+
| `.na-h2` | **24px** (1.5rem) | **600** (semibold) | 1.3 | Section titles (major page divisions) |
|
|
30
|
+
| `.na-h3` | **20px** (1.25rem) | **600** (semibold) | 1.4 | Subsection titles (within sections) |
|
|
31
|
+
| `.na-h4` | **18px** (1.125rem) | **600** (semibold) | 1.4 | Card titles (inside `.na-card`) |
|
|
32
|
+
| `.na-h5` | **16px** (1rem) | **600** (semibold) | 1.5 | Small titles (minor groupings) |
|
|
33
|
+
| `.na-h6` | **14px** (0.875rem) | **600** (semibold) | 1.5 | Micro titles (tooltips, tiny headers) |
|
|
34
|
+
|
|
35
|
+
### Data & Metadata Classes
|
|
36
|
+
|
|
37
|
+
| Class | Size | Weight | Font | Usage |
|
|
38
|
+
|-------|------|--------|------|-------|
|
|
39
|
+
| `.na-data` | **14px** (0.875rem) | **400** (normal) | Monospace | Primary data values, table cells, user input |
|
|
40
|
+
| `.na-data-large` | **30px** (1.875rem) | **500** (medium) | Serif | KPI values, hero numbers, dashboard stats |
|
|
41
|
+
| `.na-metadata` | **11px** (0.6875rem) | **500** (medium) | Sans | Field labels, column headers (uppercase, tracked) |
|
|
42
|
+
| `.na-metadata-small` | **10px** (0.625rem) | **400** (normal) | Sans | Timestamps, IDs, footnotes, secondary info |
|
|
43
|
+
|
|
44
|
+
### Typography Examples
|
|
45
|
+
|
|
46
|
+
```tsx
|
|
47
|
+
// Headings
|
|
48
|
+
<h1 className="na-h1">Page Title</h1>
|
|
49
|
+
<h2 className="na-h2">Section Title</h2>
|
|
50
|
+
<h3 className="na-h3">Subsection</h3>
|
|
51
|
+
<h4 className="na-h4">Card Title</h4>
|
|
52
|
+
|
|
53
|
+
// Data & Metadata
|
|
54
|
+
<div className="na-data">$12,450.00</div>
|
|
55
|
+
<div className="na-data-large">1,234,567</div>
|
|
56
|
+
<div className="na-metadata">PO-88219 • Feed Supply</div>
|
|
57
|
+
<div className="na-metadata-small">Updated 2m ago</div>
|
|
58
|
+
```
|
|
59
|
+
|
|
60
|
+
---
|
|
61
|
+
|
|
62
|
+
## Spacing & Padding
|
|
63
|
+
|
|
64
|
+
The design system uses a **standard Tailwind spacing scale**. Use Tailwind's standard padding/margin classes (e.g., `p-4`, `p-6`, `m-8`).
|
|
65
|
+
|
|
66
|
+
### Standard Spacing Scale
|
|
67
|
+
|
|
68
|
+
| Class | Value | Pixels |
|
|
69
|
+
|-------|-------|--------|
|
|
70
|
+
| `p-0`, `m-0` | 0 | 0px |
|
|
71
|
+
| `p-1`, `m-1` | 0.25rem | 4px |
|
|
72
|
+
| `p-2`, `m-2` | 0.5rem | 8px |
|
|
73
|
+
| `p-4`, `m-4` | 1rem | **16px** |
|
|
74
|
+
| `p-6`, `m-6` | 1.5rem | **24px** (standard) |
|
|
75
|
+
| `p-8`, `m-8` | 2rem | **32px** |
|
|
76
|
+
| `p-12`, `m-12` | 3rem | 48px |
|
|
77
|
+
| `p-16`, `m-16` | 4rem | 64px |
|
|
78
|
+
| `p-24`, `m-24` | 6rem | 96px |
|
|
79
|
+
|
|
80
|
+
### Common Spacing Patterns
|
|
81
|
+
|
|
82
|
+
```tsx
|
|
83
|
+
// Standard card padding
|
|
84
|
+
<div className="na-card p-6">Content</div>
|
|
85
|
+
|
|
86
|
+
// Standard content padding
|
|
87
|
+
<div className="na-content p-8">Content</div>
|
|
88
|
+
|
|
89
|
+
// Spacing between elements
|
|
90
|
+
<div className="space-y-6">
|
|
91
|
+
<div>Item 1</div>
|
|
92
|
+
<div>Item 2</div>
|
|
93
|
+
</div>
|
|
94
|
+
|
|
95
|
+
// Grid with standard gap
|
|
96
|
+
<div className="na-grid gap-6">
|
|
97
|
+
<div>Item 1</div>
|
|
98
|
+
<div>Item 2</div>
|
|
99
|
+
</div>
|
|
100
|
+
```
|
|
101
|
+
|
|
102
|
+
### Directional Spacing
|
|
103
|
+
|
|
104
|
+
Use Tailwind's directional utilities:
|
|
105
|
+
- `pt-*`, `pb-*`, `pl-*`, `pr-*` (padding)
|
|
106
|
+
- `mt-*`, `mb-*`, `ml-*`, `mr-*` (margin)
|
|
107
|
+
- `px-*`, `py-*` (padding horizontal/vertical)
|
|
108
|
+
- `mx-*`, `my-*` (margin horizontal/vertical)
|
|
109
|
+
|
|
110
|
+
```tsx
|
|
111
|
+
<div className="na-card p-6 mb-8">Card with bottom margin</div>
|
|
112
|
+
<div className="flex gap-4">Items with gap</div>
|
|
113
|
+
```
|
|
114
|
+
|
|
115
|
+
---
|
|
116
|
+
|
|
117
|
+
## Component Classes
|
|
118
|
+
|
|
119
|
+
### Cards & Surfaces
|
|
120
|
+
|
|
121
|
+
| Class | Description |
|
|
122
|
+
|-------|-------------|
|
|
123
|
+
| `.na-card` | Paper background, shadow, filament top border |
|
|
124
|
+
| `.na-panel` | Muted background, internal separation |
|
|
125
|
+
| `.na-content` | Standard 32px padding container |
|
|
126
|
+
|
|
127
|
+
### Buttons
|
|
128
|
+
|
|
129
|
+
| Class | Description |
|
|
130
|
+
|-------|-------------|
|
|
131
|
+
| `.na-btn` | Standard button |
|
|
132
|
+
| `.na-btn-primary` | Primary action button |
|
|
133
|
+
| `.na-btn-secondary` | Secondary button |
|
|
134
|
+
| `.na-iconbtn` | Icon-only button |
|
|
135
|
+
|
|
136
|
+
### Inputs
|
|
137
|
+
|
|
138
|
+
| Class | Description |
|
|
139
|
+
|-------|-------------|
|
|
140
|
+
| `.na-input` | Text input (never use default borders) |
|
|
141
|
+
|
|
142
|
+
### Status Indicators
|
|
143
|
+
|
|
144
|
+
| Class | Description |
|
|
145
|
+
|-------|-------------|
|
|
146
|
+
| `.na-status` | Base status badge |
|
|
147
|
+
| `.na-status-ok` | Success status (green) |
|
|
148
|
+
| `.na-status-pending` | Pending status (yellow) |
|
|
149
|
+
| `.na-status-bad` | Error status (red) |
|
|
150
|
+
|
|
151
|
+
### Tables
|
|
152
|
+
|
|
153
|
+
| Class | Description |
|
|
154
|
+
|-------|-------------|
|
|
155
|
+
| `.na-table-wrap` | Table container with scrolling |
|
|
156
|
+
| `.na-table` | Table element |
|
|
157
|
+
| `.na-th` | Table header cell |
|
|
158
|
+
| `.na-td` | Table data cell |
|
|
159
|
+
| `.na-tr` | Table row |
|
|
160
|
+
| `.na-tabular` | Tabular numbers (for alignment) |
|
|
161
|
+
|
|
162
|
+
### Component Examples
|
|
163
|
+
|
|
164
|
+
```tsx
|
|
165
|
+
// Card
|
|
166
|
+
<div className="na-card p-6">
|
|
167
|
+
<h3 className="na-h4">Card Title</h3>
|
|
168
|
+
<div className="na-data">Content</div>
|
|
169
|
+
</div>
|
|
170
|
+
|
|
171
|
+
// Button
|
|
172
|
+
<button className="na-btn na-btn-primary">Click Me</button>
|
|
173
|
+
|
|
174
|
+
// Status
|
|
175
|
+
<span className="na-status na-status-ok">Active</span>
|
|
176
|
+
|
|
177
|
+
// Table
|
|
178
|
+
<div className="na-table-wrap">
|
|
179
|
+
<table className="na-table">
|
|
180
|
+
<thead>
|
|
181
|
+
<tr>
|
|
182
|
+
<th className="na-th">Name</th>
|
|
183
|
+
<th className="na-th">Price</th>
|
|
184
|
+
</tr>
|
|
185
|
+
</thead>
|
|
186
|
+
<tbody>
|
|
187
|
+
<tr className="na-tr">
|
|
188
|
+
<td className="na-td">Product</td>
|
|
189
|
+
<td className="na-td na-tabular">$1,234.56</td>
|
|
190
|
+
</tr>
|
|
191
|
+
</tbody>
|
|
192
|
+
</table>
|
|
193
|
+
</div>
|
|
194
|
+
```
|
|
195
|
+
|
|
196
|
+
---
|
|
197
|
+
|
|
198
|
+
## Color Tokens
|
|
199
|
+
|
|
200
|
+
### Base Colors
|
|
201
|
+
|
|
202
|
+
| Token | Value | Usage |
|
|
203
|
+
|-------|-------|-------|
|
|
204
|
+
| `--color-void` | `#09090b` | Main background (Zinc-950) |
|
|
205
|
+
| `--color-paper` | `#121214` | Panel background (Zinc-900) |
|
|
206
|
+
| `--color-paper-2` | `#18181b` | Hover/Input background (Zinc-800) |
|
|
207
|
+
| `--color-lux` | `#f4f4f5` | Primary text (Zinc-50) |
|
|
208
|
+
| `--color-lux-dim` | `#a1a1aa` | Secondary text (Zinc-400) |
|
|
209
|
+
| `--color-clay` | `#71717a` | Meta/Label text (Zinc-500) |
|
|
210
|
+
| `--color-gold` | `#eab308` | Accent color (Amber-500) |
|
|
211
|
+
|
|
212
|
+
### Status Colors
|
|
213
|
+
|
|
214
|
+
| Token | Value | Usage |
|
|
215
|
+
|-------|-------|-------|
|
|
216
|
+
| `--color-success` | `#10b981` | Success states (Emerald-500) |
|
|
217
|
+
| `--color-warning` | `#f59e0b` | Warning states (Amber-500) |
|
|
218
|
+
| `--color-error` | `#f43f5e` | Error states (Rose-500) |
|
|
219
|
+
| `--color-info` | `#3b82f6` | Info states (Blue-500) |
|
|
220
|
+
|
|
221
|
+
### Using Color Tokens
|
|
222
|
+
|
|
223
|
+
```tsx
|
|
224
|
+
// In CSS/CSS-in-JS
|
|
225
|
+
import 'aibos-design-system/css';
|
|
226
|
+
|
|
227
|
+
const style = {
|
|
228
|
+
backgroundColor: 'var(--color-paper)',
|
|
229
|
+
color: 'var(--color-lux)',
|
|
230
|
+
borderColor: 'var(--color-stroke)',
|
|
231
|
+
};
|
|
232
|
+
|
|
233
|
+
// In TypeScript/JavaScript
|
|
234
|
+
import tokens from 'aibos-design-system/tokens';
|
|
235
|
+
|
|
236
|
+
const style = {
|
|
237
|
+
backgroundColor: tokens.color.paper,
|
|
238
|
+
color: tokens.color.lux,
|
|
239
|
+
};
|
|
240
|
+
```
|
|
241
|
+
|
|
242
|
+
---
|
|
243
|
+
|
|
244
|
+
## Layout Classes
|
|
245
|
+
|
|
246
|
+
### Shell Layout
|
|
247
|
+
|
|
248
|
+
| Class | Description |
|
|
249
|
+
|-------|-------------|
|
|
250
|
+
| `.na-shell` | Sidebar + Main area grid |
|
|
251
|
+
| `.na-shell-omni` | Omni shell layout (grid-based) |
|
|
252
|
+
| `.na-shell-head` | Shell header |
|
|
253
|
+
| `.na-shell-rail` | Shell sidebar |
|
|
254
|
+
| `.na-shell-main` | Shell main content area |
|
|
255
|
+
|
|
256
|
+
### Grid & Layout
|
|
257
|
+
|
|
258
|
+
| Class | Description |
|
|
259
|
+
|-------|-------------|
|
|
260
|
+
| `.na-grid` | Standard grid with 24px gap |
|
|
261
|
+
| `.na-grid-frozen` | Bi-directional sticky grid (frozen panes) |
|
|
262
|
+
| `.na-table-frozen` | Frozen table (sticky columns/rows) |
|
|
263
|
+
|
|
264
|
+
### Layout Examples
|
|
265
|
+
|
|
266
|
+
```tsx
|
|
267
|
+
// Standard shell
|
|
268
|
+
<div className="na-shell">
|
|
269
|
+
<aside className="na-shell-rail">Sidebar</aside>
|
|
270
|
+
<main className="na-shell-main">Content</main>
|
|
271
|
+
</div>
|
|
272
|
+
|
|
273
|
+
// Standard grid
|
|
274
|
+
<div className="na-grid gap-6">
|
|
275
|
+
<div className="na-card p-6">Card 1</div>
|
|
276
|
+
<div className="na-card p-6">Card 2</div>
|
|
277
|
+
</div>
|
|
278
|
+
```
|
|
279
|
+
|
|
280
|
+
---
|
|
281
|
+
|
|
282
|
+
## Using Design Tokens
|
|
283
|
+
|
|
284
|
+
### Import Tokens
|
|
285
|
+
|
|
286
|
+
```typescript
|
|
287
|
+
// CSS (main export)
|
|
288
|
+
import 'aibos-design-system/css';
|
|
289
|
+
|
|
290
|
+
// Tokens (JSON)
|
|
291
|
+
import tokens from 'aibos-design-system/tokens';
|
|
292
|
+
|
|
293
|
+
// Tokens (TypeScript)
|
|
294
|
+
import type { DesignTokens } from 'aibos-design-system/tokens/typescript';
|
|
295
|
+
```
|
|
296
|
+
|
|
297
|
+
### Access Token Values
|
|
298
|
+
|
|
299
|
+
```typescript
|
|
300
|
+
import tokens from 'aibos-design-system/tokens';
|
|
301
|
+
|
|
302
|
+
// Colors
|
|
303
|
+
tokens.color.void // '#09090b'
|
|
304
|
+
tokens.color.paper // '#121214'
|
|
305
|
+
tokens.color.lux // '#f4f4f5'
|
|
306
|
+
tokens.color.gold // '#eab308'
|
|
307
|
+
|
|
308
|
+
// Spacing
|
|
309
|
+
tokens.spacing[4] // '1rem' (16px)
|
|
310
|
+
tokens.spacing[6] // '1.5rem' (24px)
|
|
311
|
+
tokens.spacing[8] // '2rem' (32px)
|
|
312
|
+
|
|
313
|
+
// Typography
|
|
314
|
+
tokens.typography.heading1.size // '2rem'
|
|
315
|
+
tokens.typography.heading1.weight // 700
|
|
316
|
+
|
|
317
|
+
// Border Radius
|
|
318
|
+
tokens.radius.card // '0.75rem'
|
|
319
|
+
tokens.radius.panel // '1rem'
|
|
320
|
+
```
|
|
321
|
+
|
|
322
|
+
### Using in Components
|
|
323
|
+
|
|
324
|
+
```tsx
|
|
325
|
+
import tokens from 'aibos-design-system/tokens';
|
|
326
|
+
|
|
327
|
+
export function CustomButton() {
|
|
328
|
+
return (
|
|
329
|
+
<button
|
|
330
|
+
className="na-btn"
|
|
331
|
+
style={{
|
|
332
|
+
backgroundColor: tokens.color.gold,
|
|
333
|
+
padding: `${tokens.spacing[4]} ${tokens.spacing[6]}`,
|
|
334
|
+
borderRadius: tokens.radius.control,
|
|
335
|
+
}}
|
|
336
|
+
>
|
|
337
|
+
Custom Button
|
|
338
|
+
</button>
|
|
339
|
+
);
|
|
340
|
+
}
|
|
341
|
+
```
|
|
342
|
+
|
|
343
|
+
---
|
|
344
|
+
|
|
345
|
+
## Quick Reference Cheat Sheet
|
|
346
|
+
|
|
347
|
+
### Typography
|
|
348
|
+
- **Page Title**: `.na-h1` (32px bold)
|
|
349
|
+
- **Section**: `.na-h2` (24px semibold)
|
|
350
|
+
- **Subsection**: `.na-h3` (20px semibold)
|
|
351
|
+
- **Card Title**: `.na-h4` (18px semibold)
|
|
352
|
+
- **Data**: `.na-data` (14px monospace)
|
|
353
|
+
- **KPI**: `.na-data-large` (30px serif)
|
|
354
|
+
- **Label**: `.na-metadata` (11px uppercase)
|
|
355
|
+
- **Footnote**: `.na-metadata-small` (10px)
|
|
356
|
+
|
|
357
|
+
### Spacing
|
|
358
|
+
- **Standard padding**: `p-6` (24px)
|
|
359
|
+
- **Content padding**: `p-8` (32px)
|
|
360
|
+
- **Standard gap**: `gap-6` (24px)
|
|
361
|
+
|
|
362
|
+
### Components
|
|
363
|
+
- **Card**: `.na-card p-6`
|
|
364
|
+
- **Button**: `.na-btn na-btn-primary`
|
|
365
|
+
- **Status**: `.na-status na-status-ok`
|
|
366
|
+
- **Input**: `.na-input`
|
|
367
|
+
|
|
368
|
+
---
|
|
369
|
+
|
|
370
|
+
## 📚 Additional Resources
|
|
371
|
+
|
|
372
|
+
- **Full Documentation**: See [README.md](./README.md) for complete guide
|
|
373
|
+
- **External Usage**: See [EXTERNAL_USAGE.md](./EXTERNAL_USAGE.md) for framework examples
|
|
374
|
+
- **GitHub**: https://github.com/pohlai88/AIBOS-DESIGN-SYSTEM
|
|
375
|
+
|
|
376
|
+
---
|
|
377
|
+
|
|
378
|
+
**Need Help?** Check the [README.md](./README.md) or open an issue on GitHub.
|
|
379
|
+
|