@navecss/tokens 0.1.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.
Files changed (121) hide show
  1. package/LICENSE +55 -0
  2. package/README.md +122 -0
  3. package/TOKENS.md +180 -0
  4. package/dist/breakpoints.d.ts +25 -0
  5. package/dist/breakpoints.js +44 -0
  6. package/dist/build-record.json +77 -0
  7. package/dist/core-contract.json +30 -0
  8. package/dist/lib/bin.d.ts +2 -0
  9. package/dist/lib/bin.js +113 -0
  10. package/dist/lib/builder.d.ts +21 -0
  11. package/dist/lib/builder.js +41 -0
  12. package/dist/lib/collision.d.ts +12 -0
  13. package/dist/lib/collision.js +46 -0
  14. package/dist/lib/composite-value.d.ts +3 -0
  15. package/dist/lib/composite-value.js +152 -0
  16. package/dist/lib/core-version.d.ts +12 -0
  17. package/dist/lib/core-version.js +40 -0
  18. package/dist/lib/dtcg-descriptions.d.ts +2 -0
  19. package/dist/lib/dtcg-descriptions.js +23 -0
  20. package/dist/lib/dtcg-malformed.d.ts +10 -0
  21. package/dist/lib/dtcg-malformed.js +56 -0
  22. package/dist/lib/dtcg-outputs.d.ts +2 -0
  23. package/dist/lib/dtcg-outputs.js +32 -0
  24. package/dist/lib/dtcg-shape.d.ts +13 -0
  25. package/dist/lib/dtcg-shape.js +113 -0
  26. package/dist/lib/errors.d.ts +23 -0
  27. package/dist/lib/errors.js +34 -0
  28. package/dist/lib/facade.d.ts +26 -0
  29. package/dist/lib/facade.js +97 -0
  30. package/dist/lib/formats.d.ts +6 -0
  31. package/dist/lib/formats.js +236 -0
  32. package/dist/lib/json-pointer.d.ts +2 -0
  33. package/dist/lib/json-pointer.js +28 -0
  34. package/dist/lib/overrides.d.ts +2 -0
  35. package/dist/lib/overrides.js +59 -0
  36. package/dist/lib/package-root.d.ts +2 -0
  37. package/dist/lib/package-root.js +31 -0
  38. package/dist/lib/reader.d.ts +8 -0
  39. package/dist/lib/reader.js +136 -0
  40. package/dist/lib/theming/adjacency-source.d.ts +20 -0
  41. package/dist/lib/theming/adjacency-source.js +103 -0
  42. package/dist/lib/theming/adjacency.d.ts +17 -0
  43. package/dist/lib/theming/adjacency.js +133 -0
  44. package/dist/lib/theming/build-record.d.ts +45 -0
  45. package/dist/lib/theming/build-record.js +87 -0
  46. package/dist/lib/theming/build-step.d.ts +14 -0
  47. package/dist/lib/theming/build-step.js +91 -0
  48. package/dist/lib/theming/color-math.d.ts +33 -0
  49. package/dist/lib/theming/color-math.js +125 -0
  50. package/dist/lib/theming/comment-open-tracker.d.ts +1 -0
  51. package/dist/lib/theming/comment-open-tracker.js +49 -0
  52. package/dist/lib/theming/consumer-build.d.ts +18 -0
  53. package/dist/lib/theming/consumer-build.js +29 -0
  54. package/dist/lib/theming/contact-sheet.d.ts +22 -0
  55. package/dist/lib/theming/contact-sheet.js +123 -0
  56. package/dist/lib/theming/contrast.d.ts +31 -0
  57. package/dist/lib/theming/contrast.js +133 -0
  58. package/dist/lib/theming/copy-lint.d.ts +13 -0
  59. package/dist/lib/theming/copy-lint.js +98 -0
  60. package/dist/lib/theming/core-contract.d.ts +29 -0
  61. package/dist/lib/theming/core-contract.js +71 -0
  62. package/dist/lib/theming/core-source.d.ts +2 -0
  63. package/dist/lib/theming/core-source.js +18 -0
  64. package/dist/lib/theming/css-color-4.d.ts +19 -0
  65. package/dist/lib/theming/css-color-4.js +66 -0
  66. package/dist/lib/theming/css-named-colours.d.ts +1 -0
  67. package/dist/lib/theming/css-named-colours.js +151 -0
  68. package/dist/lib/theming/descriptions.d.ts +1 -0
  69. package/dist/lib/theming/descriptions.js +21 -0
  70. package/dist/lib/theming/emit.d.ts +10 -0
  71. package/dist/lib/theming/emit.js +62 -0
  72. package/dist/lib/theming/feedback-signal.d.ts +11 -0
  73. package/dist/lib/theming/feedback-signal.js +23 -0
  74. package/dist/lib/theming/guard-message-probes.d.ts +6 -0
  75. package/dist/lib/theming/guard-message-probes.js +96 -0
  76. package/dist/lib/theming/ladder.d.ts +15 -0
  77. package/dist/lib/theming/ladder.js +81 -0
  78. package/dist/lib/theming/neutral.d.ts +12 -0
  79. package/dist/lib/theming/neutral.js +76 -0
  80. package/dist/lib/theming/on-star.d.ts +11 -0
  81. package/dist/lib/theming/on-star.js +87 -0
  82. package/dist/lib/theming/palette-record.d.ts +2 -0
  83. package/dist/lib/theming/palette-record.js +15 -0
  84. package/dist/lib/theming/pipeline.d.ts +43 -0
  85. package/dist/lib/theming/pipeline.js +104 -0
  86. package/dist/lib/theming/ramp.d.ts +34 -0
  87. package/dist/lib/theming/ramp.js +92 -0
  88. package/dist/lib/theming/seed-channel-split.d.ts +8 -0
  89. package/dist/lib/theming/seed-channel-split.js +99 -0
  90. package/dist/lib/theming/seed-form-parsers-css-color-4.d.ts +8 -0
  91. package/dist/lib/theming/seed-form-parsers-css-color-4.js +85 -0
  92. package/dist/lib/theming/seed-form-parsers.d.ts +6 -0
  93. package/dist/lib/theming/seed-form-parsers.js +155 -0
  94. package/dist/lib/theming/seed-ingest.d.ts +15 -0
  95. package/dist/lib/theming/seed-ingest.js +112 -0
  96. package/dist/lib/theming/seed-input.d.ts +22 -0
  97. package/dist/lib/theming/seed-input.js +1 -0
  98. package/dist/lib/theming/seed-refusal.d.ts +21 -0
  99. package/dist/lib/theming/seed-refusal.js +77 -0
  100. package/dist/lib/theming/semantics.d.ts +19 -0
  101. package/dist/lib/theming/semantics.js +71 -0
  102. package/dist/lib/theming/shipped-seeds.d.ts +2 -0
  103. package/dist/lib/theming/shipped-seeds.js +5 -0
  104. package/dist/lib/theming/step-table.d.ts +5 -0
  105. package/dist/lib/theming/step-table.js +26 -0
  106. package/dist/lib/theming/third-party-provenance.d.ts +9 -0
  107. package/dist/lib/theming/third-party-provenance.js +35 -0
  108. package/dist/lib/theming/tokens-source.d.ts +3 -0
  109. package/dist/lib/theming/tokens-source.js +61 -0
  110. package/dist/lib/token-name.d.ts +2 -0
  111. package/dist/lib/token-name.js +28 -0
  112. package/dist/lib/validate-report.d.ts +19 -0
  113. package/dist/lib/validate-report.js +93 -0
  114. package/dist/lib/validate.d.ts +16 -0
  115. package/dist/lib/validate.js +65 -0
  116. package/dist/palette-record.json +293 -0
  117. package/dist/tokens.css +433 -0
  118. package/dist/tokens.d.ts +90 -0
  119. package/dist/tokens.js +88 -0
  120. package/package.json +85 -0
  121. package/tokens.json +938 -0
@@ -0,0 +1,433 @@
1
+ /* Nave Design System — generated, do not edit */
2
+ @layer tokens.defaults, tokens.presets, reset, atomic, components.nave, components.consumer, overrides;
3
+
4
+ /**
5
+ * @property declarations provide:
6
+ * - Type safety (browsers reject invalid values)
7
+ * - CSS transitions on custom properties (e.g. color tokens)
8
+ * - IDE autocomplete in supported editors
9
+ *
10
+ * Only tokens whose initial-value is computationally independent are
11
+ * registered. Font-relative values (rem/em) cannot be, so those tokens
12
+ * ship as plain custom properties below.
13
+ */
14
+ @property --nave-font-weight-regular {
15
+ syntax: '<number>';
16
+ inherits: true;
17
+ initial-value: 400;
18
+ }
19
+
20
+ @property --nave-font-weight-medium {
21
+ syntax: '<number>';
22
+ inherits: true;
23
+ initial-value: 500;
24
+ }
25
+
26
+ @property --nave-font-weight-semibold {
27
+ syntax: '<number>';
28
+ inherits: true;
29
+ initial-value: 600;
30
+ }
31
+
32
+ @property --nave-font-weight-bold {
33
+ syntax: '<number>';
34
+ inherits: true;
35
+ initial-value: 700;
36
+ }
37
+
38
+ @property --nave-line-height-none {
39
+ syntax: '<number>';
40
+ inherits: true;
41
+ initial-value: 1;
42
+ }
43
+
44
+ @property --nave-line-height-tight {
45
+ syntax: '<number>';
46
+ inherits: true;
47
+ initial-value: 1.2;
48
+ }
49
+
50
+ @property --nave-line-height-snug {
51
+ syntax: '<number>';
52
+ inherits: true;
53
+ initial-value: 1.375;
54
+ }
55
+
56
+ @property --nave-line-height-base {
57
+ syntax: '<number>';
58
+ inherits: true;
59
+ initial-value: 1.5;
60
+ }
61
+
62
+ @property --nave-line-height-relaxed {
63
+ syntax: '<number>';
64
+ inherits: true;
65
+ initial-value: 1.625;
66
+ }
67
+
68
+ @property --nave-line-height-loose {
69
+ syntax: '<number>';
70
+ inherits: true;
71
+ initial-value: 2;
72
+ }
73
+
74
+ @property --nave-spacing-content-xs {
75
+ syntax: '<length>';
76
+ inherits: true;
77
+ initial-value: 4px;
78
+ }
79
+
80
+ @property --nave-spacing-content-sm {
81
+ syntax: '<length>';
82
+ inherits: true;
83
+ initial-value: 8px;
84
+ }
85
+
86
+ @property --nave-spacing-content-md {
87
+ syntax: '<length>';
88
+ inherits: true;
89
+ initial-value: 16px;
90
+ }
91
+
92
+ @property --nave-spacing-content-lg {
93
+ syntax: '<length>';
94
+ inherits: true;
95
+ initial-value: 24px;
96
+ }
97
+
98
+ @property --nave-spacing-content-xl {
99
+ syntax: '<length>';
100
+ inherits: true;
101
+ initial-value: 32px;
102
+ }
103
+
104
+ @property --nave-spacing-layout-xs {
105
+ syntax: '<length>';
106
+ inherits: true;
107
+ initial-value: 48px;
108
+ }
109
+
110
+ @property --nave-spacing-layout-sm {
111
+ syntax: '<length>';
112
+ inherits: true;
113
+ initial-value: 64px;
114
+ }
115
+
116
+ @property --nave-spacing-layout-md {
117
+ syntax: '<length>';
118
+ inherits: true;
119
+ initial-value: 96px;
120
+ }
121
+
122
+ @property --nave-spacing-layout-lg {
123
+ syntax: '<length>';
124
+ inherits: true;
125
+ initial-value: 128px;
126
+ }
127
+
128
+ @property --nave-spacing-control-xs {
129
+ syntax: '<length>';
130
+ inherits: true;
131
+ initial-value: 4px;
132
+ }
133
+
134
+ @property --nave-spacing-control-sm {
135
+ syntax: '<length>';
136
+ inherits: true;
137
+ initial-value: 6px;
138
+ }
139
+
140
+ @property --nave-spacing-control-md {
141
+ syntax: '<length>';
142
+ inherits: true;
143
+ initial-value: 8px;
144
+ }
145
+
146
+ @property --nave-spacing-control-lg {
147
+ syntax: '<length>';
148
+ inherits: true;
149
+ initial-value: 12px;
150
+ }
151
+
152
+ @property --nave-border-width-none {
153
+ syntax: '<length>';
154
+ inherits: true;
155
+ initial-value: 0px;
156
+ }
157
+
158
+ @property --nave-border-width-sm {
159
+ syntax: '<length>';
160
+ inherits: true;
161
+ initial-value: 1px;
162
+ }
163
+
164
+ @property --nave-border-width-focus {
165
+ syntax: '<length>';
166
+ inherits: true;
167
+ initial-value: 2px;
168
+ }
169
+
170
+ @property --nave-border-width-lg {
171
+ syntax: '<length>';
172
+ inherits: true;
173
+ initial-value: 4px;
174
+ }
175
+
176
+ @property --nave-radius-none {
177
+ syntax: '<length>';
178
+ inherits: true;
179
+ initial-value: 0px;
180
+ }
181
+
182
+ @property --nave-radius-sm {
183
+ syntax: '<length>';
184
+ inherits: true;
185
+ initial-value: 4px;
186
+ }
187
+
188
+ @property --nave-radius-control {
189
+ syntax: '<length>';
190
+ inherits: true;
191
+ initial-value: 6px;
192
+ }
193
+
194
+ @property --nave-radius-card {
195
+ syntax: '<length>';
196
+ inherits: true;
197
+ initial-value: 12px;
198
+ }
199
+
200
+ @property --nave-radius-overlay {
201
+ syntax: '<length>';
202
+ inherits: true;
203
+ initial-value: 12px;
204
+ }
205
+
206
+ @property --nave-radius-full {
207
+ syntax: '<length>';
208
+ inherits: true;
209
+ initial-value: 9999px;
210
+ }
211
+
212
+ @property --nave-opacity-disabled {
213
+ syntax: '<number>';
214
+ inherits: true;
215
+ initial-value: 0.4;
216
+ }
217
+
218
+ @property --nave-layer-base {
219
+ syntax: '<number>';
220
+ inherits: true;
221
+ initial-value: 0;
222
+ }
223
+
224
+ @property --nave-layer-dropdown {
225
+ syntax: '<number>';
226
+ inherits: true;
227
+ initial-value: 100;
228
+ }
229
+
230
+ @property --nave-layer-sticky {
231
+ syntax: '<number>';
232
+ inherits: true;
233
+ initial-value: 200;
234
+ }
235
+
236
+ @property --nave-layer-overlay {
237
+ syntax: '<number>';
238
+ inherits: true;
239
+ initial-value: 300;
240
+ }
241
+
242
+ @property --nave-layer-modal {
243
+ syntax: '<number>';
244
+ inherits: true;
245
+ initial-value: 400;
246
+ }
247
+
248
+ @property --nave-layer-toast {
249
+ syntax: '<number>';
250
+ inherits: true;
251
+ initial-value: 500;
252
+ }
253
+
254
+ @property --nave-layer-tooltip {
255
+ syntax: '<number>';
256
+ inherits: true;
257
+ initial-value: 600;
258
+ }
259
+
260
+ @property --nave-motion-duration-instant {
261
+ syntax: '<time>';
262
+ inherits: true;
263
+ initial-value: 0ms;
264
+ }
265
+
266
+ @property --nave-motion-duration-fast {
267
+ syntax: '<time>';
268
+ inherits: true;
269
+ initial-value: 100ms;
270
+ }
271
+
272
+ @property --nave-motion-duration-base {
273
+ syntax: '<time>';
274
+ inherits: true;
275
+ initial-value: 200ms;
276
+ }
277
+
278
+ @property --nave-motion-duration-slow {
279
+ syntax: '<time>';
280
+ inherits: true;
281
+ initial-value: 400ms;
282
+ }
283
+
284
+ /**
285
+ * Token values scoped under @layer tokens.defaults.
286
+ * Override in @layer overrides — no specificity battles, ever.
287
+ */
288
+ @layer tokens.defaults {
289
+ :root {
290
+ --nave-font-family-base: system-ui, -apple-system, BlinkMacSystemFont, 'Segoe UI', sans-serif;
291
+ --nave-font-family-display: system-ui, -apple-system, BlinkMacSystemFont, 'Segoe UI', sans-serif;
292
+ --nave-font-family-mono: ui-monospace, 'Cascadia Code', 'Source Code Pro', Menlo, monospace;
293
+ --nave-font-size-xs: 0.75rem;
294
+ --nave-font-size-sm: 0.875rem;
295
+ --nave-font-size-md: 1rem;
296
+ --nave-font-size-lg: 1.125rem;
297
+ --nave-font-size-xl: 1.25rem;
298
+ --nave-font-size-2xl: 1.5rem;
299
+ --nave-font-size-3xl: 1.875rem;
300
+ --nave-font-size-4xl: 2.25rem;
301
+ --nave-font-weight-regular: 400;
302
+ --nave-font-weight-medium: 500;
303
+ --nave-font-weight-semibold: 600;
304
+ --nave-font-weight-bold: 700;
305
+ --nave-line-height-none: 1;
306
+ --nave-line-height-tight: 1.2;
307
+ --nave-line-height-snug: 1.375;
308
+ --nave-line-height-base: 1.5;
309
+ --nave-line-height-relaxed: 1.625;
310
+ --nave-line-height-loose: 2;
311
+ --nave-letter-spacing-tight: -0.025em;
312
+ --nave-letter-spacing-normal: 0em;
313
+ --nave-letter-spacing-wide: 0.075em;
314
+ --nave-spacing-content-xs: 4px;
315
+ --nave-spacing-content-sm: 8px;
316
+ --nave-spacing-content-md: 16px;
317
+ --nave-spacing-content-lg: 24px;
318
+ --nave-spacing-content-xl: 32px;
319
+ --nave-spacing-layout-xs: 48px;
320
+ --nave-spacing-layout-sm: 64px;
321
+ --nave-spacing-layout-md: 96px;
322
+ --nave-spacing-layout-lg: 128px;
323
+ --nave-spacing-control-xs: 4px;
324
+ --nave-spacing-control-sm: 6px;
325
+ --nave-spacing-control-md: 8px;
326
+ --nave-spacing-control-lg: 12px;
327
+ --nave-size-control-xs: 1.5rem;
328
+ --nave-size-control-sm: 2rem;
329
+ --nave-size-control-md: 2.5rem;
330
+ --nave-size-control-lg: 3rem;
331
+ --nave-size-icon-xs: 0.75rem;
332
+ --nave-size-icon-sm: 1rem;
333
+ --nave-size-icon-md: 1.25rem;
334
+ --nave-size-icon-lg: 1.5rem;
335
+ --nave-size-icon-xl: 2rem;
336
+ --nave-size-avatar-sm: 1.5rem;
337
+ --nave-size-avatar-md: 2rem;
338
+ --nave-size-avatar-lg: 3rem;
339
+ --nave-border-width-none: 0px;
340
+ --nave-border-width-sm: 1px;
341
+ --nave-border-width-focus: 2px;
342
+ --nave-border-width-lg: 4px;
343
+ --nave-radius-none: 0px;
344
+ --nave-radius-sm: 4px;
345
+ --nave-radius-control: 6px;
346
+ --nave-radius-card: 12px;
347
+ --nave-radius-overlay: 12px;
348
+ --nave-radius-full: 9999px;
349
+ --nave-shadow-none: none;
350
+ --nave-shadow-raised: 0px 0.0625rem 0.1875rem 0px oklch(0 0 0 / 0.08), 0px 0.0625rem 0.125rem 0px oklch(0 0 0 / 0.06);
351
+ --nave-shadow-overlay: 0px 0.25rem 0.75rem 0px oklch(0 0 0 / 0.1), 0px 0.125rem 0.375rem 0px oklch(0 0 0 / 0.08);
352
+ --nave-shadow-modal: 0px 1rem 2rem 0px oklch(0 0 0 / 0.15), 0px 0.5rem 1rem 0px oklch(0 0 0 / 0.1);
353
+ --nave-opacity-disabled: 0.4;
354
+ --nave-layer-base: 0;
355
+ --nave-layer-dropdown: 100;
356
+ --nave-layer-sticky: 200;
357
+ --nave-layer-overlay: 300;
358
+ --nave-layer-modal: 400;
359
+ --nave-layer-toast: 500;
360
+ --nave-layer-tooltip: 600;
361
+ --nave-motion-duration-instant: 0ms;
362
+ --nave-motion-duration-fast: 100ms;
363
+ --nave-motion-duration-base: 200ms;
364
+ --nave-motion-duration-slow: 400ms;
365
+ --nave-motion-easing-standard: cubic-bezier(0.4, 0, 0.2, 1);
366
+ --nave-motion-easing-decelerate: cubic-bezier(0, 0, 0.2, 1);
367
+ --nave-motion-easing-accelerate: cubic-bezier(0.4, 0, 1, 1);
368
+ }
369
+
370
+ /**
371
+ * Collapse all motion durations for users who prefer reduced motion.
372
+ * Any component using --nave-motion-duration-* gets this for free.
373
+ */
374
+ @media (prefers-reduced-motion: reduce) {
375
+ :root {
376
+ --nave-motion-duration-fast: 0.01ms;
377
+ --nave-motion-duration-base: 0.01ms;
378
+ --nave-motion-duration-slow: 0.01ms;
379
+ }
380
+ }
381
+ }
382
+
383
+ /* Nave theming — generated, do not edit. See this package's README ("Theming"). */
384
+
385
+ @property --nave-color-tint {
386
+ syntax: '<color>';
387
+ inherits: true;
388
+ initial-value: oklch(0.7859 0.1316 186.17);
389
+ }
390
+
391
+ @layer tokens.defaults {
392
+ :root {
393
+ /* color-scheme lives here, not in @navecss/core's reset, so
394
+ * light-dark() resolves even for a tokens-only consumer. */
395
+ color-scheme: light dark;
396
+ /* Tint seed: Changing this changes everything Nave derives from it. The contrast of the resulting palette follows from what you set, and checking it is yours. */
397
+ --nave-color-tint: oklch(0.7859 0.1316 186.17);
398
+ --nave-color-surface-base: light-dark(oklch(from var(--nave-color-tint) 1 0 h), oklch(from var(--nave-color-tint) 0.18 0.0067 h));
399
+ --nave-color-surface-raised: light-dark(oklch(from var(--nave-color-tint) 1 0 h), oklch(from var(--nave-color-tint) 0.225 0.0067 h));
400
+ --nave-color-surface-overlay: light-dark(oklch(from var(--nave-color-tint) 1 0 h), oklch(from var(--nave-color-tint) 0.27 0.0067 h));
401
+ --nave-color-surface-sunken: light-dark(oklch(from var(--nave-color-tint) 0.985 0.0067 h), oklch(from var(--nave-color-tint) 0.12 0.0067 h));
402
+ --nave-color-surface-inverse: light-dark(oklch(from var(--nave-color-tint) 0.18 0.0067 h), oklch(from var(--nave-color-tint) 0.965 0.0067 h));
403
+ --nave-color-content-primary: light-dark(oklch(from var(--nave-color-tint) 0.18 0.0067 h), oklch(from var(--nave-color-tint) 0.965 0.0067 h));
404
+ --nave-color-content-secondary: light-dark(oklch(from var(--nave-color-tint) 0.37 0.0067 h), oklch(from var(--nave-color-tint) 0.835 0.0067 h));
405
+ --nave-color-content-tertiary: light-dark(oklch(from var(--nave-color-tint) 0.47 0.0067 h), oklch(from var(--nave-color-tint) 0.72 0.0067 h));
406
+ --nave-color-content-disabled: light-dark(oklch(from var(--nave-color-tint) 0.835 0.0067 h), oklch(from var(--nave-color-tint) 0.37 0.0067 h));
407
+ --nave-color-content-inverse: light-dark(oklch(from var(--nave-color-tint) 0.965 0.0067 h), oklch(from var(--nave-color-tint) 0.18 0.0067 h));
408
+ --nave-color-content-link: light-dark(oklch(0.47 0.0748 186.17), oklch(0.835 0.123 186.17));
409
+ --nave-color-border-default: light-dark(oklch(from var(--nave-color-tint) 0.905 0.0067 h), oklch(from var(--nave-color-tint) 0.37 0.0067 h));
410
+ --nave-color-border-strong: light-dark(oklch(from var(--nave-color-tint) 0.72 0.0067 h), oklch(from var(--nave-color-tint) 0.47 0.0067 h));
411
+ --nave-color-border-control: light-dark(oklch(from var(--nave-color-tint) 0.59 0.0067 h), oklch(from var(--nave-color-tint) 0.59 0.0067 h));
412
+ --nave-color-border-disabled: light-dark(oklch(from var(--nave-color-tint) 0.94 0.0067 h), oklch(from var(--nave-color-tint) 0.27 0.0067 h));
413
+ --nave-color-border-focus: light-dark(oklch(0.59 0.0939 186.17), oklch(0.59 0.0939 186.17));
414
+ --nave-color-action-primary: light-dark(oklch(0.47 0.0748 186.17), oklch(0.835 0.123 186.17));
415
+ --nave-color-action-primary-hover: light-dark(oklch(0.37 0.0589 186.17), oklch(0.905 0.1106 186.17));
416
+ --nave-color-action-primary-active: light-dark(oklch(0.27 0.0398 186.17), oklch(0.94 0.0574 186.17));
417
+ --nave-color-on-action-primary: light-dark(oklch(from var(--nave-color-tint) 1 0 h), oklch(from var(--nave-color-tint) 0.18 0.0067 h));
418
+ --nave-color-action-secondary: light-dark(oklch(from var(--nave-color-tint) 0.965 0.0067 h), oklch(from var(--nave-color-tint) 0.27 0.0067 h));
419
+ --nave-color-feedback-danger: light-dark(oklch(0.47 0.1455 15.02), oklch(0.835 0.0661 15.02));
420
+ --nave-color-feedback-danger-foreground: light-dark(oklch(0.47 0.1455 15.02), oklch(0.835 0.0661 15.02));
421
+ --nave-color-on-feedback-danger: light-dark(oklch(from var(--nave-color-tint) 1 0 h), oklch(from var(--nave-color-tint) 0.18 0.0067 h));
422
+ /* Feedback tokens: warning, success and info, and their -foreground variants, resolve to one shared value here; only danger differs. Colour alone therefore cannot tell those three states apart, so wherever a feedback token carries meaning, give it a text label naming the state and a distinct icon or shape that differs per state. */
423
+ --nave-color-feedback-warning: light-dark(oklch(from var(--nave-color-tint) 0.47 0.0067 h), oklch(from var(--nave-color-tint) 0.835 0.0067 h));
424
+ --nave-color-feedback-warning-foreground: light-dark(oklch(from var(--nave-color-tint) 0.47 0.0067 h), oklch(from var(--nave-color-tint) 0.835 0.0067 h));
425
+ --nave-color-on-feedback-warning: light-dark(oklch(from var(--nave-color-tint) 1 0 h), oklch(from var(--nave-color-tint) 0.18 0.0067 h));
426
+ --nave-color-feedback-success: light-dark(oklch(from var(--nave-color-tint) 0.47 0.0067 h), oklch(from var(--nave-color-tint) 0.835 0.0067 h));
427
+ --nave-color-feedback-success-foreground: light-dark(oklch(from var(--nave-color-tint) 0.47 0.0067 h), oklch(from var(--nave-color-tint) 0.835 0.0067 h));
428
+ --nave-color-on-feedback-success: light-dark(oklch(from var(--nave-color-tint) 1 0 h), oklch(from var(--nave-color-tint) 0.18 0.0067 h));
429
+ --nave-color-feedback-info: light-dark(oklch(from var(--nave-color-tint) 0.47 0.0067 h), oklch(from var(--nave-color-tint) 0.835 0.0067 h));
430
+ --nave-color-feedback-info-foreground: light-dark(oklch(from var(--nave-color-tint) 0.47 0.0067 h), oklch(from var(--nave-color-tint) 0.835 0.0067 h));
431
+ --nave-color-on-feedback-info: light-dark(oklch(from var(--nave-color-tint) 1 0 h), oklch(from var(--nave-color-tint) 0.18 0.0067 h));
432
+ }
433
+ }
@@ -0,0 +1,90 @@
1
+ /* Nave Design System — generated, do not edit */
2
+
3
+ /** The DTCG 2025.10 token set as a typed const object (e.g. `--nave-font-size-md`).
4
+ * Keys are CSS custom property names. The semantic colour layer
5
+ * (`--nave-color-*`) ships as CSS custom properties in `dist/tokens.css`
6
+ * and is not part of this export.
7
+ */
8
+ export declare const tokens: {
9
+ '--nave-font-family-base': string
10
+ '--nave-font-family-display': string
11
+ '--nave-font-family-mono': string
12
+ '--nave-font-size-xs': string
13
+ '--nave-font-size-sm': string
14
+ '--nave-font-size-md': string
15
+ '--nave-font-size-lg': string
16
+ '--nave-font-size-xl': string
17
+ '--nave-font-size-2xl': string
18
+ '--nave-font-size-3xl': string
19
+ '--nave-font-size-4xl': string
20
+ '--nave-font-weight-regular': number
21
+ '--nave-font-weight-medium': number
22
+ '--nave-font-weight-semibold': number
23
+ '--nave-font-weight-bold': number
24
+ '--nave-line-height-none': number
25
+ '--nave-line-height-tight': number
26
+ '--nave-line-height-snug': number
27
+ '--nave-line-height-base': number
28
+ '--nave-line-height-relaxed': number
29
+ '--nave-line-height-loose': number
30
+ '--nave-letter-spacing-tight': string
31
+ '--nave-letter-spacing-normal': string
32
+ '--nave-letter-spacing-wide': string
33
+ '--nave-spacing-content-xs': string
34
+ '--nave-spacing-content-sm': string
35
+ '--nave-spacing-content-md': string
36
+ '--nave-spacing-content-lg': string
37
+ '--nave-spacing-content-xl': string
38
+ '--nave-spacing-layout-xs': string
39
+ '--nave-spacing-layout-sm': string
40
+ '--nave-spacing-layout-md': string
41
+ '--nave-spacing-layout-lg': string
42
+ '--nave-spacing-control-xs': string
43
+ '--nave-spacing-control-sm': string
44
+ '--nave-spacing-control-md': string
45
+ '--nave-spacing-control-lg': string
46
+ '--nave-size-control-xs': string
47
+ '--nave-size-control-sm': string
48
+ '--nave-size-control-md': string
49
+ '--nave-size-control-lg': string
50
+ '--nave-size-icon-xs': string
51
+ '--nave-size-icon-sm': string
52
+ '--nave-size-icon-md': string
53
+ '--nave-size-icon-lg': string
54
+ '--nave-size-icon-xl': string
55
+ '--nave-size-avatar-sm': string
56
+ '--nave-size-avatar-md': string
57
+ '--nave-size-avatar-lg': string
58
+ '--nave-border-width-none': string
59
+ '--nave-border-width-sm': string
60
+ '--nave-border-width-focus': string
61
+ '--nave-border-width-lg': string
62
+ '--nave-radius-none': string
63
+ '--nave-radius-sm': string
64
+ '--nave-radius-control': string
65
+ '--nave-radius-card': string
66
+ '--nave-radius-overlay': string
67
+ '--nave-radius-full': string
68
+ '--nave-shadow-none': string
69
+ '--nave-shadow-raised': string
70
+ '--nave-shadow-overlay': string
71
+ '--nave-shadow-modal': string
72
+ '--nave-opacity-disabled': number
73
+ '--nave-layer-base': number
74
+ '--nave-layer-dropdown': number
75
+ '--nave-layer-sticky': number
76
+ '--nave-layer-overlay': number
77
+ '--nave-layer-modal': number
78
+ '--nave-layer-toast': number
79
+ '--nave-layer-tooltip': number
80
+ '--nave-motion-duration-instant': string
81
+ '--nave-motion-duration-fast': string
82
+ '--nave-motion-duration-base': string
83
+ '--nave-motion-duration-slow': string
84
+ '--nave-motion-easing-standard': string
85
+ '--nave-motion-easing-decelerate': string
86
+ '--nave-motion-easing-accelerate': string
87
+ }
88
+
89
+ export declare type TokenName = keyof typeof tokens
90
+ export declare type TokenValue = typeof tokens[TokenName]
package/dist/tokens.js ADDED
@@ -0,0 +1,88 @@
1
+ /* Nave Design System — generated, do not edit */
2
+ // This file is the JavaScript entry of @navecss/tokens. For the stylesheet, use: @import '@navecss/tokens/css';
3
+
4
+ /** The DTCG 2025.10 token set as a typed const object (e.g. `--nave-font-size-md`).
5
+ * Keys are CSS custom property names. The semantic colour layer
6
+ * (`--nave-color-*`) ships as CSS custom properties in `dist/tokens.css`
7
+ * and is not part of this export.
8
+ */
9
+ export const tokens = {
10
+ '--nave-font-family-base': "system-ui, -apple-system, BlinkMacSystemFont, 'Segoe UI', sans-serif",
11
+ '--nave-font-family-display': "system-ui, -apple-system, BlinkMacSystemFont, 'Segoe UI', sans-serif",
12
+ '--nave-font-family-mono': "ui-monospace, 'Cascadia Code', 'Source Code Pro', Menlo, monospace",
13
+ '--nave-font-size-xs': "0.75rem",
14
+ '--nave-font-size-sm': "0.875rem",
15
+ '--nave-font-size-md': "1rem",
16
+ '--nave-font-size-lg': "1.125rem",
17
+ '--nave-font-size-xl': "1.25rem",
18
+ '--nave-font-size-2xl': "1.5rem",
19
+ '--nave-font-size-3xl': "1.875rem",
20
+ '--nave-font-size-4xl': "2.25rem",
21
+ '--nave-font-weight-regular': 400,
22
+ '--nave-font-weight-medium': 500,
23
+ '--nave-font-weight-semibold': 600,
24
+ '--nave-font-weight-bold': 700,
25
+ '--nave-line-height-none': 1,
26
+ '--nave-line-height-tight': 1.2,
27
+ '--nave-line-height-snug': 1.375,
28
+ '--nave-line-height-base': 1.5,
29
+ '--nave-line-height-relaxed': 1.625,
30
+ '--nave-line-height-loose': 2,
31
+ '--nave-letter-spacing-tight': "-0.025em",
32
+ '--nave-letter-spacing-normal': "0em",
33
+ '--nave-letter-spacing-wide': "0.075em",
34
+ '--nave-spacing-content-xs': "4px",
35
+ '--nave-spacing-content-sm': "8px",
36
+ '--nave-spacing-content-md': "16px",
37
+ '--nave-spacing-content-lg': "24px",
38
+ '--nave-spacing-content-xl': "32px",
39
+ '--nave-spacing-layout-xs': "48px",
40
+ '--nave-spacing-layout-sm': "64px",
41
+ '--nave-spacing-layout-md': "96px",
42
+ '--nave-spacing-layout-lg': "128px",
43
+ '--nave-spacing-control-xs': "4px",
44
+ '--nave-spacing-control-sm': "6px",
45
+ '--nave-spacing-control-md': "8px",
46
+ '--nave-spacing-control-lg': "12px",
47
+ '--nave-size-control-xs': "1.5rem",
48
+ '--nave-size-control-sm': "2rem",
49
+ '--nave-size-control-md': "2.5rem",
50
+ '--nave-size-control-lg': "3rem",
51
+ '--nave-size-icon-xs': "0.75rem",
52
+ '--nave-size-icon-sm': "1rem",
53
+ '--nave-size-icon-md': "1.25rem",
54
+ '--nave-size-icon-lg': "1.5rem",
55
+ '--nave-size-icon-xl': "2rem",
56
+ '--nave-size-avatar-sm': "1.5rem",
57
+ '--nave-size-avatar-md': "2rem",
58
+ '--nave-size-avatar-lg': "3rem",
59
+ '--nave-border-width-none': "0px",
60
+ '--nave-border-width-sm': "1px",
61
+ '--nave-border-width-focus': "2px",
62
+ '--nave-border-width-lg': "4px",
63
+ '--nave-radius-none': "0px",
64
+ '--nave-radius-sm': "4px",
65
+ '--nave-radius-control': "6px",
66
+ '--nave-radius-card': "12px",
67
+ '--nave-radius-overlay': "12px",
68
+ '--nave-radius-full': "9999px",
69
+ '--nave-shadow-none': "none",
70
+ '--nave-shadow-raised': "0px 0.0625rem 0.1875rem 0px oklch(0 0 0 / 0.08), 0px 0.0625rem 0.125rem 0px oklch(0 0 0 / 0.06)",
71
+ '--nave-shadow-overlay': "0px 0.25rem 0.75rem 0px oklch(0 0 0 / 0.1), 0px 0.125rem 0.375rem 0px oklch(0 0 0 / 0.08)",
72
+ '--nave-shadow-modal': "0px 1rem 2rem 0px oklch(0 0 0 / 0.15), 0px 0.5rem 1rem 0px oklch(0 0 0 / 0.1)",
73
+ '--nave-opacity-disabled': 0.4,
74
+ '--nave-layer-base': 0,
75
+ '--nave-layer-dropdown': 100,
76
+ '--nave-layer-sticky': 200,
77
+ '--nave-layer-overlay': 300,
78
+ '--nave-layer-modal': 400,
79
+ '--nave-layer-toast': 500,
80
+ '--nave-layer-tooltip': 600,
81
+ '--nave-motion-duration-instant': "0ms",
82
+ '--nave-motion-duration-fast': "100ms",
83
+ '--nave-motion-duration-base': "200ms",
84
+ '--nave-motion-duration-slow': "400ms",
85
+ '--nave-motion-easing-standard': "cubic-bezier(0.4, 0, 0.2, 1)",
86
+ '--nave-motion-easing-decelerate': "cubic-bezier(0, 0, 0.2, 1)",
87
+ '--nave-motion-easing-accelerate': "cubic-bezier(0.4, 0, 1, 1)",
88
+ }
package/package.json ADDED
@@ -0,0 +1,85 @@
1
+ {
2
+ "name": "@navecss/tokens",
3
+ "version": "0.1.0",
4
+ "description": "DTCG 2025.10 design tokens for Nave: seed-derived semantic colours, typography, spacing, and the rest of the token layer, built by a first-party DTCG 2025.10 reader.",
5
+ "keywords": [
6
+ "css",
7
+ "design-tokens",
8
+ "dtcg",
9
+ "w3c-design-tokens",
10
+ "design-system"
11
+ ],
12
+ "homepage": "https://github.com/navecss/navecss/tree/main/packages/tokens#readme",
13
+ "license": "MIT",
14
+ "type": "module",
15
+ "publishConfig": {
16
+ "access": "public"
17
+ },
18
+ "bin": {
19
+ "navecss-tokens": "./dist/lib/bin.js"
20
+ },
21
+ "exports": {
22
+ ".": {
23
+ "types": "./dist/tokens.d.ts",
24
+ "import": "./dist/tokens.js",
25
+ "default": "./dist/tokens.js"
26
+ },
27
+ "./css": "./dist/tokens.css",
28
+ "./js": {
29
+ "types": "./dist/tokens.d.ts",
30
+ "import": "./dist/tokens.js",
31
+ "default": "./dist/tokens.js"
32
+ },
33
+ "./breakpoints": {
34
+ "types": "./dist/breakpoints.d.ts",
35
+ "import": "./dist/breakpoints.js",
36
+ "default": "./dist/breakpoints.js"
37
+ },
38
+ "./core-contract": "./dist/core-contract.json",
39
+ "./build": {
40
+ "types": "./dist/lib/facade.d.ts",
41
+ "import": "./dist/lib/facade.js",
42
+ "default": "./dist/lib/facade.js"
43
+ },
44
+ "./package.json": "./package.json",
45
+ "./tokens.json": "./tokens.json"
46
+ },
47
+ "files": [
48
+ "dist",
49
+ "!dist/contact-sheet.html",
50
+ "tokens.json",
51
+ "TOKENS.md"
52
+ ],
53
+ "devDependencies": {
54
+ "@types/node": "^26.6.2",
55
+ "@vitest/coverage-v8": "5.0.1",
56
+ "prettier": "3.9.8",
57
+ "typescript": "6.0.3",
58
+ "vitest": "5.0.1"
59
+ },
60
+ "engines": {
61
+ "node": ">=22.18"
62
+ },
63
+ "repository": {
64
+ "type": "git",
65
+ "url": "git+https://github.com/navecss/navecss.git",
66
+ "directory": "packages/tokens"
67
+ },
68
+ "bugs": {
69
+ "url": "https://github.com/navecss/navecss/issues"
70
+ },
71
+ "sideEffects": [
72
+ "**/*.css"
73
+ ],
74
+ "scripts": {
75
+ "build": "node build.ts && tsc -p tsconfig.build.json",
76
+ "dev": "node --watch build.ts",
77
+ "clean": "rm -rf dist",
78
+ "typecheck": "tsc --noEmit",
79
+ "lint": "eslint build.ts generate-tokens-doc.ts src test --max-warnings 0",
80
+ "lint:fix": "eslint build.ts generate-tokens-doc.ts src test --fix",
81
+ "test": "vitest run",
82
+ "test:coverage": "vitest run --coverage",
83
+ "check:pack": "node ../../scripts/without-dry-run.mjs publint && node ../../scripts/without-dry-run.mjs attw --pack . --profile esm-only --exclude-entrypoints css"
84
+ }
85
+ }