@nadicodeai/design-system 0.5.3 → 0.7.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.
@@ -10,19 +10,22 @@
10
10
  --card-foreground: var(--color-ink);
11
11
  --popover: var(--color-canvas);
12
12
  --popover-foreground: var(--color-ink);
13
- --primary: var(--color-nadicode-primary);
14
- --primary-foreground: var(--color-on-primary);
13
+ --primary: var(--color-action);
14
+ --primary-foreground: var(--color-action-foreground);
15
+ --primary-hover: var(--color-action-hover);
16
+ --primary-active: var(--color-action-active);
15
17
  --secondary: var(--color-canvas-soft);
16
18
  --secondary-foreground: var(--color-ink);
17
19
  --muted: var(--color-canvas-soft);
18
- --muted-foreground: var(--color-nadicode-muted);
20
+ --muted-foreground: var(--color-body);
19
21
  --accent: var(--color-canvas-soft-2);
20
22
  --accent-foreground: var(--color-ink);
21
23
  --destructive: var(--color-error);
22
24
  --destructive-foreground: var(--color-on-primary);
23
25
  --border: var(--color-line);
24
- --input: var(--color-line);
25
- --ring: var(--color-link);
26
+ --input: var(--color-nadicode-input);
27
+ --ring: var(--color-focus-ring);
28
+ --scrim: var(--color-nadicode-scrim);
26
29
  --chart-1: var(--color-nadicode-chart-1);
27
30
  --chart-2: var(--color-nadicode-chart-2);
28
31
  --chart-3: var(--color-nadicode-chart-3);
@@ -35,7 +38,7 @@
35
38
  --sidebar-accent: var(--color-canvas-soft-2);
36
39
  --sidebar-accent-foreground: var(--color-ink);
37
40
  --sidebar-border: var(--color-line);
38
- --sidebar-ring: var(--color-link);
41
+ --sidebar-ring: var(--color-focus-ring);
39
42
  }
40
43
 
41
44
  .dark {
@@ -46,19 +49,22 @@
46
49
  --card-foreground: var(--color-dark-ink);
47
50
  --popover: var(--color-dark-canvas);
48
51
  --popover-foreground: var(--color-dark-ink);
49
- --primary: var(--color-dark-primary);
50
- --primary-foreground: var(--color-dark-on-primary);
52
+ --primary: var(--color-dark-action);
53
+ --primary-foreground: var(--color-dark-action-foreground);
54
+ --primary-hover: var(--color-dark-action-hover);
55
+ --primary-active: var(--color-dark-action-active);
51
56
  --secondary: var(--color-dark-canvas-soft);
52
57
  --secondary-foreground: var(--color-dark-ink);
53
58
  --muted: var(--color-dark-canvas-soft);
54
- --muted-foreground: var(--color-dark-muted);
59
+ --muted-foreground: var(--color-dark-body);
55
60
  --accent: var(--color-dark-canvas-soft-2);
56
61
  --accent-foreground: var(--color-dark-ink);
57
62
  --destructive: var(--color-dark-error);
58
63
  --destructive-foreground: var(--color-dark-on-primary);
59
64
  --border: var(--color-dark-line);
60
65
  --input: var(--color-dark-input);
61
- --ring: var(--color-dark-link);
66
+ --ring: var(--color-dark-focus-ring);
67
+ --scrim: var(--color-dark-scrim);
62
68
  --chart-1: var(--color-dark-chart-1);
63
69
  --chart-2: var(--color-dark-chart-2);
64
70
  --chart-3: var(--color-dark-chart-3);
@@ -71,10 +77,17 @@
71
77
  --sidebar-accent: var(--color-dark-canvas-soft-2);
72
78
  --sidebar-accent-foreground: var(--color-dark-ink);
73
79
  --sidebar-border: var(--color-dark-line);
74
- --sidebar-ring: var(--color-dark-link);
80
+ --sidebar-ring: var(--color-dark-focus-ring);
75
81
  }
76
82
 
77
83
  :root.dark {
84
+ --nc-action: var(--nc-dark-action);
85
+ --nc-action-foreground: var(--nc-dark-action-foreground);
86
+ --nc-action-hover: var(--nc-dark-action-hover);
87
+ --nc-action-active: var(--nc-dark-action-active);
88
+ --nc-input: var(--nc-dark-input);
89
+ --nc-focus-ring: var(--nc-dark-focus-ring);
90
+ --nc-scrim: var(--nc-dark-scrim);
78
91
  --nc-state-ready: var(--nc-dark-state-ready);
79
92
  --nc-state-running: var(--nc-dark-state-running);
80
93
  --nc-state-review: var(--nc-dark-state-review);
@@ -114,6 +127,10 @@
114
127
  --nadicode-spacing-6xl: var(--spacing-nadicode-6xl);
115
128
  --nadicode-spacing-section: var(--spacing-nadicode-section);
116
129
  --nadicode-spacing-guide: var(--spacing-nadicode-guide);
130
+ --nadicode-spacing-focus-ring-width: var(--spacing-nadicode-focus-ring-width);
131
+ --nadicode-spacing-control-height: var(--spacing-nadicode-control-height);
132
+ --nadicode-spacing-control-padding-inline: var(--spacing-nadicode-control-padding-inline);
133
+ --nadicode-spacing-touch-target: var(--spacing-nadicode-touch-target);
117
134
  --nadicode-spacing-page-pad: var(--spacing-nadicode-page-pad);
118
135
  --nadicode-spacing-page-max-mobile: var(--spacing-nadicode-page-max-mobile);
119
136
  --nadicode-spacing-page-max-tablet: var(--spacing-nadicode-page-max-tablet);
@@ -166,6 +183,10 @@
166
183
  @theme {
167
184
  --color-primary: #008c45;
168
185
  --color-on-primary: #ffffff;
186
+ --color-action: #007a3c;
187
+ --color-action-foreground: #ffffff;
188
+ --color-action-hover: #00602f;
189
+ --color-action-active: #00301a;
169
190
  --color-ink: #171717;
170
191
  --color-body: #4d4d4d;
171
192
  --color-muted: #888888;
@@ -173,8 +194,11 @@
173
194
  --color-canvas-soft: #fafafa;
174
195
  --color-canvas-soft-2: #f5f5f5;
175
196
  --color-line: #e5e5e5;
197
+ --color-input: #8f8f8f;
176
198
  --color-seam: #e4e7ec;
177
199
  --color-cross: #a1a1a1;
200
+ --color-focus-ring: #007a3c;
201
+ --color-scrim: #171717;
178
202
  --color-link: #007a3c;
179
203
  --color-link-deep: #00602f;
180
204
  --color-link-bg-soft: #d9f6e4;
@@ -279,9 +303,15 @@
279
303
  --color-dark-seam: #1f1f1f;
280
304
  --color-dark-primary: #ededed;
281
305
  --color-dark-on-primary: #0a0a0a;
306
+ --color-dark-action: #ededed;
307
+ --color-dark-action-foreground: #0a0a0a;
308
+ --color-dark-action-hover: #d4d4d4;
309
+ --color-dark-action-active: #a3a3a3;
282
310
  --color-dark-link: #9fe6bc;
283
311
  --color-dark-link-deep: #c3f0d4;
284
312
  --color-dark-link-bg-soft: #00301a;
313
+ --color-dark-focus-ring: #9fe6bc;
314
+ --color-dark-scrim: #f5f5f5;
285
315
  --color-dark-error: #f7b3b5;
286
316
  --color-dark-error-soft: #4a000e;
287
317
  --color-dark-error-deep: #fad3d4;
@@ -314,8 +344,10 @@
314
344
  --color-dark-chart-div-warm: #ffd97d;
315
345
  --color-dark-chart-div-mid: #e6e6e6;
316
346
  --color-dark-chart-div-cool: #cdd9fd;
347
+ --color-nadicode-input: #8f8f8f;
317
348
  --color-nadicode-muted: #888888;
318
349
  --color-nadicode-primary: #008c45;
350
+ --color-nadicode-scrim: #171717;
319
351
  --color-nadicode-chart-1: #2743d8;
320
352
  --color-nadicode-chart-2: #008c45;
321
353
  --color-nadicode-chart-3: #f5a623;
@@ -334,6 +366,7 @@
334
366
  --font-body-sm: Geist, Inter, system-ui, -apple-system, sans-serif;
335
367
  --font-body-sm-strong: Geist, Inter, system-ui, -apple-system, sans-serif;
336
368
  --font-caption: Geist, Inter, system-ui, -apple-system, sans-serif;
369
+ --font-caption-strong: Geist, Inter, system-ui, -apple-system, sans-serif;
337
370
  --font-caption-mono: Geist Mono, ui-monospace, SFMono-Regular, Menlo, Monaco, monospace;
338
371
  --font-code: Geist Mono, ui-monospace, SFMono-Regular, Menlo, Monaco, monospace;
339
372
  --font-button-md: Geist, Inter, system-ui, -apple-system, sans-serif;
@@ -429,6 +462,13 @@
429
462
  --tracking-caption: 0px;
430
463
  --text-caption--font-weight: 400;
431
464
  --font-weight-caption: 400;
465
+ --text-caption-strong: 12px;
466
+ --text-caption-strong--line-height: 16px;
467
+ --leading-caption-strong: 16px;
468
+ --text-caption-strong--letter-spacing: 0px;
469
+ --tracking-caption-strong: 0px;
470
+ --text-caption-strong--font-weight: 500;
471
+ --font-weight-caption-strong: 500;
432
472
  --text-caption-mono: 12px;
433
473
  --text-caption-mono--line-height: 16px;
434
474
  --leading-caption-mono: 16px;
@@ -463,9 +503,17 @@
463
503
  --radius-md: 6px;
464
504
  --radius-lg: 8px;
465
505
  --radius-xl: 10px;
506
+ --radius-2xl: 12px;
507
+ --radius-3xl: 16px;
466
508
  --radius-pill-sm: 64px;
467
509
  --radius-pill: 100px;
468
510
  --radius-full: 9999px;
511
+ --ring-width-focus: var(--spacing-nadicode-focus-ring-width);
512
+ --opacity-scrim: var(--nc-material-scrim-opacity);
513
+ --shadow-tooltip: var(--nc-material-shadow-tooltip);
514
+ --shadow-menu: var(--nc-material-shadow-menu);
515
+ --shadow-dialog: var(--nc-material-shadow-dialog);
516
+ --shadow-sheet: var(--nc-material-shadow-sheet);
469
517
  --spacing-nadicode-xxs: 4px;
470
518
  --spacing-nadicode-filter-chip-gap: 6px;
471
519
  --spacing-nadicode-xs: 8px;
@@ -480,6 +528,10 @@
480
528
  --spacing-nadicode-6xl: 128px;
481
529
  --spacing-nadicode-section: 192px;
482
530
  --spacing-nadicode-guide: 1px;
531
+ --spacing-nadicode-focus-ring-width: 3px;
532
+ --spacing-nadicode-control-height: 32px;
533
+ --spacing-nadicode-control-padding-inline: 10px;
534
+ --spacing-nadicode-touch-target: 44px;
483
535
  --spacing-nadicode-page-pad: 24px;
484
536
  --spacing-nadicode-page-max-mobile: 448px;
485
537
  --spacing-nadicode-page-max-tablet: 624px;
@@ -526,4 +578,7 @@
526
578
  --spacing-nadicode-h-bento-strip: 20px;
527
579
  --spacing-nadicode-filter-chip-height: 28px;
528
580
  --spacing-nadicode-filter-chip-icon: 14px;
581
+ --spacing-control-height: var(--spacing-nadicode-control-height);
582
+ --spacing-control-padding-inline: var(--spacing-nadicode-control-padding-inline);
583
+ --spacing-touch-target: var(--spacing-nadicode-touch-target);
529
584
  }
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "$schema": "https://www.designtokens.org/schemas/2025.10/format.json",
3
- "$description": "Reusable design-system contract for NadicodeAI: engineered page geometry, neutral high-contrast surfaces, AI-agent work artifacts, and strict 12-column/10-column composition rules for the public website and package token exports.",
3
+ "$description": "Reusable design-system contract for NadicodeAI: engineered page geometry, neutral high-contrast product surfaces, AI-agent work artifacts, strict 12-column/10-column public-page composition, and the package token exports shared by every NadicodeAI interface.",
4
4
  "nadicode": {
5
5
  "color": {
6
6
  "$type": "color",
@@ -26,6 +26,50 @@
26
26
  "hex": "#ffffff"
27
27
  }
28
28
  },
29
+ "action": {
30
+ "$value": {
31
+ "colorSpace": "srgb",
32
+ "components": [
33
+ 0,
34
+ 0.478,
35
+ 0.235
36
+ ],
37
+ "hex": "#007a3c"
38
+ }
39
+ },
40
+ "action-foreground": {
41
+ "$value": {
42
+ "colorSpace": "srgb",
43
+ "components": [
44
+ 1,
45
+ 1,
46
+ 1
47
+ ],
48
+ "hex": "#ffffff"
49
+ }
50
+ },
51
+ "action-hover": {
52
+ "$value": {
53
+ "colorSpace": "srgb",
54
+ "components": [
55
+ 0,
56
+ 0.376,
57
+ 0.184
58
+ ],
59
+ "hex": "#00602f"
60
+ }
61
+ },
62
+ "action-active": {
63
+ "$value": {
64
+ "colorSpace": "srgb",
65
+ "components": [
66
+ 0,
67
+ 0.188,
68
+ 0.102
69
+ ],
70
+ "hex": "#00301a"
71
+ }
72
+ },
29
73
  "ink": {
30
74
  "$value": {
31
75
  "colorSpace": "srgb",
@@ -103,6 +147,17 @@
103
147
  "hex": "#e5e5e5"
104
148
  }
105
149
  },
150
+ "input": {
151
+ "$value": {
152
+ "colorSpace": "srgb",
153
+ "components": [
154
+ 0.561,
155
+ 0.561,
156
+ 0.561
157
+ ],
158
+ "hex": "#8f8f8f"
159
+ }
160
+ },
106
161
  "seam": {
107
162
  "$value": {
108
163
  "colorSpace": "srgb",
@@ -125,6 +180,28 @@
125
180
  "hex": "#a1a1a1"
126
181
  }
127
182
  },
183
+ "focus-ring": {
184
+ "$value": {
185
+ "colorSpace": "srgb",
186
+ "components": [
187
+ 0,
188
+ 0.478,
189
+ 0.235
190
+ ],
191
+ "hex": "#007a3c"
192
+ }
193
+ },
194
+ "scrim": {
195
+ "$value": {
196
+ "colorSpace": "srgb",
197
+ "components": [
198
+ 0.09,
199
+ 0.09,
200
+ 0.09
201
+ ],
202
+ "hex": "#171717"
203
+ }
204
+ },
128
205
  "link": {
129
206
  "$value": {
130
207
  "colorSpace": "srgb",
@@ -1269,6 +1346,50 @@
1269
1346
  "hex": "#0a0a0a"
1270
1347
  }
1271
1348
  },
1349
+ "dark-action": {
1350
+ "$value": {
1351
+ "colorSpace": "srgb",
1352
+ "components": [
1353
+ 0.929,
1354
+ 0.929,
1355
+ 0.929
1356
+ ],
1357
+ "hex": "#ededed"
1358
+ }
1359
+ },
1360
+ "dark-action-foreground": {
1361
+ "$value": {
1362
+ "colorSpace": "srgb",
1363
+ "components": [
1364
+ 0.039,
1365
+ 0.039,
1366
+ 0.039
1367
+ ],
1368
+ "hex": "#0a0a0a"
1369
+ }
1370
+ },
1371
+ "dark-action-hover": {
1372
+ "$value": {
1373
+ "colorSpace": "srgb",
1374
+ "components": [
1375
+ 0.831,
1376
+ 0.831,
1377
+ 0.831
1378
+ ],
1379
+ "hex": "#d4d4d4"
1380
+ }
1381
+ },
1382
+ "dark-action-active": {
1383
+ "$value": {
1384
+ "colorSpace": "srgb",
1385
+ "components": [
1386
+ 0.639,
1387
+ 0.639,
1388
+ 0.639
1389
+ ],
1390
+ "hex": "#a3a3a3"
1391
+ }
1392
+ },
1272
1393
  "dark-link": {
1273
1394
  "$value": {
1274
1395
  "colorSpace": "srgb",
@@ -1302,6 +1423,28 @@
1302
1423
  "hex": "#00301a"
1303
1424
  }
1304
1425
  },
1426
+ "dark-focus-ring": {
1427
+ "$value": {
1428
+ "colorSpace": "srgb",
1429
+ "components": [
1430
+ 0.624,
1431
+ 0.902,
1432
+ 0.737
1433
+ ],
1434
+ "hex": "#9fe6bc"
1435
+ }
1436
+ },
1437
+ "dark-scrim": {
1438
+ "$value": {
1439
+ "colorSpace": "srgb",
1440
+ "components": [
1441
+ 0.961,
1442
+ 0.961,
1443
+ 0.961
1444
+ ],
1445
+ "hex": "#f5f5f5"
1446
+ }
1447
+ },
1305
1448
  "dark-error": {
1306
1449
  "$value": {
1307
1450
  "colorSpace": "srgb",
@@ -1741,6 +1884,30 @@
1741
1884
  "unit": "px"
1742
1885
  }
1743
1886
  },
1887
+ "focus-ring-width": {
1888
+ "$value": {
1889
+ "value": 3,
1890
+ "unit": "px"
1891
+ }
1892
+ },
1893
+ "control-height": {
1894
+ "$value": {
1895
+ "value": 32,
1896
+ "unit": "px"
1897
+ }
1898
+ },
1899
+ "control-padding-inline": {
1900
+ "$value": {
1901
+ "value": 10,
1902
+ "unit": "px"
1903
+ }
1904
+ },
1905
+ "touch-target": {
1906
+ "$value": {
1907
+ "value": 44,
1908
+ "unit": "px"
1909
+ }
1910
+ },
1744
1911
  "page-pad": {
1745
1912
  "$value": {
1746
1913
  "value": 24,
@@ -2056,6 +2223,18 @@
2056
2223
  "unit": "px"
2057
2224
  }
2058
2225
  },
2226
+ "2xl": {
2227
+ "$value": {
2228
+ "value": 12,
2229
+ "unit": "px"
2230
+ }
2231
+ },
2232
+ "3xl": {
2233
+ "$value": {
2234
+ "value": 16,
2235
+ "unit": "px"
2236
+ }
2237
+ },
2059
2238
  "pill-sm": {
2060
2239
  "$value": {
2061
2240
  "value": 64,
@@ -2284,6 +2463,22 @@
2284
2463
  "lineHeight": 16
2285
2464
  }
2286
2465
  },
2466
+ "caption-strong": {
2467
+ "$type": "typography",
2468
+ "$value": {
2469
+ "fontFamily": "Geist, Inter, system-ui, -apple-system, sans-serif",
2470
+ "fontSize": {
2471
+ "value": 12,
2472
+ "unit": "px"
2473
+ },
2474
+ "fontWeight": 500,
2475
+ "letterSpacing": {
2476
+ "value": 0,
2477
+ "unit": "px"
2478
+ },
2479
+ "lineHeight": 16
2480
+ }
2481
+ },
2287
2482
  "caption-mono": {
2288
2483
  "$type": "typography",
2289
2484
  "$value": {
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@nadicodeai/design-system",
3
- "version": "0.5.3",
3
+ "version": "0.7.0",
4
4
  "type": "module",
5
5
  "publishConfig": {
6
6
  "access": "public"
@@ -45,7 +45,7 @@
45
45
  "build": "tsx scripts/build.ts",
46
46
  "generate:icons": "tsx scripts/generate-icons.ts",
47
47
  "generate:favicons": "tsx scripts/generate-favicons.ts",
48
- "lint:design": "npm exec -- design.md lint DESIGN.md",
48
+ "lint:design": "design.md lint DESIGN.md",
49
49
  "test": "vitest run",
50
50
  "test:visual": "vitest run --config vitest.visual.config.ts",
51
51
  "prepublishOnly": "npm run build"