@tensor_1/tokens 2.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.
@@ -0,0 +1,355 @@
1
+ /* GENERATED — do not edit. Source: tokens/ • Build: npm run build:tokens.
2
+ * cssVar — theme-aware var() strings; use in the browser / CSS-in-JS (respects brand + dark).
3
+ * light/dark — resolved values for non-DOM use (SSR, React Native, server-rendered charts).
4
+ * runtime brand tokens resolve to their fallback color here.
5
+ * num — unitless px numbers (React Native, layout math). */
6
+ export const cssVar = {
7
+ "bg-app": "var(--uix-bg-app)",
8
+ "bg-subtle": "var(--uix-bg-subtle)",
9
+ "bg-hover": "var(--uix-bg-hover)",
10
+ "bg-active": "var(--uix-bg-active)",
11
+ "surface": "var(--uix-surface)",
12
+ "surface-2": "var(--uix-surface-2)",
13
+ "surface-3": "var(--uix-surface-3)",
14
+ "border": "var(--uix-border)",
15
+ "border-strong": "var(--uix-border-strong)",
16
+ "text": "var(--uix-text)",
17
+ "text-hushed": "var(--uix-text-hushed)",
18
+ "text-muted": "var(--uix-text-muted)",
19
+ "text-reverse": "var(--uix-text-reverse)",
20
+ "text-hushed-reverse": "var(--uix-text-hushed-reverse)",
21
+ "accent": "var(--uix-accent)",
22
+ "accent-dark": "var(--uix-accent-dark)",
23
+ "accent-light": "var(--uix-accent-light)",
24
+ "accent-hover": "var(--uix-accent-hover)",
25
+ "accent-fg": "var(--uix-accent-fg)",
26
+ "link": "var(--uix-link)",
27
+ "ring": "var(--uix-ring)",
28
+ "brand-muted": "var(--uix-brand-muted)",
29
+ "success": "var(--uix-success)",
30
+ "success-fg": "var(--uix-success-fg)",
31
+ "success-bg": "var(--uix-success-bg)",
32
+ "warning": "var(--uix-warning)",
33
+ "warning-fg": "var(--uix-warning-fg)",
34
+ "warning-bg": "var(--uix-warning-bg)",
35
+ "warning-text": "var(--uix-warning-text)",
36
+ "info": "var(--uix-info)",
37
+ "info-fg": "var(--uix-info-fg)",
38
+ "info-bg": "var(--uix-info-bg)",
39
+ "info-text": "var(--uix-info-text)",
40
+ "danger": "var(--uix-danger)",
41
+ "danger-fg": "var(--uix-danger-fg)",
42
+ "danger-bg": "var(--uix-danger-bg)",
43
+ "danger-text": "var(--uix-danger-text)",
44
+ "success-solid": "var(--uix-success-solid)",
45
+ "warning-solid": "var(--uix-warning-solid)",
46
+ "info-solid": "var(--uix-info-solid)",
47
+ "danger-solid": "var(--uix-danger-solid)",
48
+ "chart-1": "var(--uix-chart-1)",
49
+ "chart-2": "var(--uix-chart-2)",
50
+ "chart-3": "var(--uix-chart-3)",
51
+ "chart-4": "var(--uix-chart-4)",
52
+ "chart-5": "var(--uix-chart-5)",
53
+ "chart-6": "var(--uix-chart-6)",
54
+ "chart-7": "var(--uix-chart-7)",
55
+ "chart-8": "var(--uix-chart-8)",
56
+ "chart-neutral": "var(--uix-chart-neutral)",
57
+ "row": "var(--uix-row)",
58
+ "row-alt": "var(--uix-row-alt)",
59
+ "row-pinned-bg": "var(--uix-row-pinned-bg)",
60
+ "scrollbar-thumb": "var(--uix-scrollbar-thumb)",
61
+ "scrollbar-thumb-hover": "var(--uix-scrollbar-thumb-hover)",
62
+ "scrollbar-track": "var(--uix-scrollbar-track)",
63
+ "scrim": "var(--uix-scrim)",
64
+ "scrim-strong": "var(--uix-scrim-strong)",
65
+ "shadow-sm": "var(--uix-shadow-sm)",
66
+ "shadow-popover": "var(--uix-shadow-popover)",
67
+ "shadow-overlay": "var(--uix-shadow-overlay)",
68
+ "highlight-top": "var(--uix-highlight-top)",
69
+ "ease-out": "var(--uix-ease-out)",
70
+ "ease-out-strong": "var(--uix-ease-out-strong)",
71
+ "ease-in": "var(--uix-ease-in)",
72
+ "ease-in-out": "var(--uix-ease-in-out)",
73
+ "ease-spring": "var(--uix-ease-spring)",
74
+ "dur-fast": "var(--uix-dur-fast)",
75
+ "dur": "var(--uix-dur)",
76
+ "dur-slow": "var(--uix-dur-slow)",
77
+ "dur-slower": "var(--uix-dur-slower)",
78
+ "lift": "var(--uix-lift)",
79
+ "z-raised": "var(--uix-z-raised)",
80
+ "z-sticky": "var(--uix-z-sticky)",
81
+ "z-dropdown": "var(--uix-z-dropdown)",
82
+ "z-overlay": "var(--uix-z-overlay)",
83
+ "z-tooltip": "var(--uix-z-tooltip)",
84
+ "z-toast": "var(--uix-z-toast)",
85
+ "radius-xs": "var(--uix-radius-xs)",
86
+ "radius-sm": "var(--uix-radius-sm)",
87
+ "radius-md": "var(--uix-radius-md)",
88
+ "radius-lg": "var(--uix-radius-lg)",
89
+ "radius-pill": "var(--uix-radius-pill)",
90
+ "row-h": "var(--uix-row-h)",
91
+ "row-h-compact": "var(--uix-row-h-compact)",
92
+ "row-h-comfortable": "var(--uix-row-h-comfortable)",
93
+ "control-h": "var(--uix-control-h)",
94
+ "sidebar-w": "var(--uix-sidebar-w)",
95
+ "topbar-h": "var(--uix-topbar-h)",
96
+ "scrollbar-size": "var(--uix-scrollbar-size)",
97
+ "icon-sm": "var(--uix-icon-sm)",
98
+ "icon-md": "var(--uix-icon-md)",
99
+ "icon-lg": "var(--uix-icon-lg)",
100
+ "peek-w": "var(--uix-peek-w)",
101
+ "space-0": "var(--uix-space-0)",
102
+ "space-1": "var(--uix-space-1)",
103
+ "space-2": "var(--uix-space-2)",
104
+ "space-3": "var(--uix-space-3)",
105
+ "space-4": "var(--uix-space-4)",
106
+ "space-5": "var(--uix-space-5)",
107
+ "space-6": "var(--uix-space-6)",
108
+ "space-7": "var(--uix-space-7)",
109
+ "space-8": "var(--uix-space-8)",
110
+ "space-9": "var(--uix-space-9)",
111
+ "space-10": "var(--uix-space-10)",
112
+ "space-11": "var(--uix-space-11)",
113
+ "space-12": "var(--uix-space-12)",
114
+ "font-sans": "var(--uix-font-sans)",
115
+ "font-heading": "var(--uix-font-heading)",
116
+ "font-mono": "var(--uix-font-mono)",
117
+ "text-display": "var(--uix-text-display)",
118
+ "leading-display": "var(--uix-leading-display)",
119
+ "text-data-hero": "var(--uix-text-data-hero)",
120
+ "leading-data-hero": "var(--uix-leading-data-hero)",
121
+ "text-h2": "var(--uix-text-h2)",
122
+ "leading-h2": "var(--uix-leading-h2)",
123
+ "text-h3": "var(--uix-text-h3)",
124
+ "leading-h3": "var(--uix-leading-h3)",
125
+ "text-body": "var(--uix-text-body)",
126
+ "leading-body": "var(--uix-leading-body)",
127
+ "text-meta": "var(--uix-text-meta)",
128
+ "leading-meta": "var(--uix-leading-meta)",
129
+ "text-eyebrow": "var(--uix-text-eyebrow)",
130
+ "leading-eyebrow": "var(--uix-leading-eyebrow)",
131
+ "tracking-tight": "var(--uix-tracking-tight)",
132
+ "tracking-eyebrow": "var(--uix-tracking-eyebrow)",
133
+ };
134
+
135
+ export const light = {
136
+ "bg-app": "#FAFAFA",
137
+ "bg-subtle": "#F5F5F5",
138
+ "bg-hover": "#EFEFEF",
139
+ "bg-active": "#E5E5E5",
140
+ "surface": "#FFFFFF",
141
+ "surface-2": "#FFFFFF",
142
+ "surface-3": "#FAFAFA",
143
+ "border": "#E5E5E5",
144
+ "border-strong": "#D4D4D4",
145
+ "text": "#0A0A0A",
146
+ "text-hushed": "rgba(10,10,10,.62)",
147
+ "text-muted": "#6B6B6B",
148
+ "text-reverse": "#FFFFFF",
149
+ "text-hushed-reverse": "rgba(255,255,255,.62)",
150
+ "accent": "#1447E6",
151
+ "accent-dark": "#0E3AC0",
152
+ "accent-light": "#4D77F0",
153
+ "accent-hover": "color-mix(in srgb, var(--uix-accent) 88%, #000000)",
154
+ "accent-fg": "#FFFFFF",
155
+ "link": "#1447E6",
156
+ "ring": "#1447E6",
157
+ "brand-muted": "color-mix(in srgb, var(--uix-accent) 12%, transparent)",
158
+ "success": "#047857",
159
+ "success-fg": "#FFFFFF",
160
+ "success-bg": "#D0FAE5",
161
+ "warning": "#F99C00",
162
+ "warning-fg": "#1A1A1A",
163
+ "warning-bg": "#FEF3D6",
164
+ "warning-text": "#92400E",
165
+ "info": "#1447E6",
166
+ "info-fg": "#FFFFFF",
167
+ "info-bg": "#E3EBFF",
168
+ "info-text": "#1447E6",
169
+ "danger": "#E40014",
170
+ "danger-fg": "#FFFFFF",
171
+ "danger-bg": "#FFE4E6",
172
+ "danger-text": "#C20012",
173
+ "success-solid": "#10B981",
174
+ "warning-solid": "#F59E0B",
175
+ "info-solid": "#2563EB",
176
+ "danger-solid": "#EF4444",
177
+ "chart-1": "#2563EB",
178
+ "chart-2": "#0891B2",
179
+ "chart-3": "#16A34A",
180
+ "chart-4": "#F59E0B",
181
+ "chart-5": "#EA580C",
182
+ "chart-6": "#E11D48",
183
+ "chart-7": "#7C3AED",
184
+ "chart-8": "#DB2777",
185
+ "chart-neutral": "#64748B",
186
+ "row": "#FFFFFF",
187
+ "row-alt": "#FAFAFA",
188
+ "row-pinned-bg": "#F4F7FF",
189
+ "scrollbar-thumb": "rgba(10,10,10,.20)",
190
+ "scrollbar-thumb-hover": "rgba(10,10,10,.34)",
191
+ "scrollbar-track": "transparent",
192
+ "scrim": "rgba(0,0,0,.5)",
193
+ "scrim-strong": "rgba(0,0,0,.7)",
194
+ "shadow-sm": "0 1px 2px rgba(0,0,0,.06)",
195
+ "shadow-popover": "0 8px 24px rgba(0,0,0,.10),0 1px 2px rgba(0,0,0,.05)",
196
+ "shadow-overlay": "0 16px 48px rgba(0,0,0,.18)",
197
+ "highlight-top": "inset 0 1px 0 rgba(255,255,255,0)",
198
+ "ease-out": "cubic-bezier(.23,1,.32,1)",
199
+ "ease-out-strong": "cubic-bezier(.2,0,0,1)",
200
+ "ease-in": "cubic-bezier(.4,0,1,1)",
201
+ "ease-in-out": "cubic-bezier(.77,0,.175,1)",
202
+ "ease-spring": "cubic-bezier(.34,1.56,.64,1)",
203
+ "dur-fast": "120ms",
204
+ "dur": "160ms",
205
+ "dur-slow": "240ms",
206
+ "dur-slower": "320ms",
207
+ "lift": "4px",
208
+ "z-raised": "1",
209
+ "z-sticky": "3",
210
+ "z-dropdown": "10",
211
+ "z-overlay": "20",
212
+ "z-tooltip": "30",
213
+ "z-toast": "100",
214
+ "radius-xs": "4px",
215
+ "radius-sm": "8px",
216
+ "radius-md": "12px",
217
+ "radius-lg": "16px",
218
+ "radius-pill": "999px",
219
+ "row-h": "56px",
220
+ "row-h-compact": "44px",
221
+ "row-h-comfortable": "68px",
222
+ "control-h": "36px",
223
+ "sidebar-w": "248px",
224
+ "topbar-h": "56px",
225
+ "scrollbar-size": "10px",
226
+ "icon-sm": "16px",
227
+ "icon-md": "20px",
228
+ "icon-lg": "24px",
229
+ "peek-w": "420px",
230
+ "space-0": "0",
231
+ "space-1": "4px",
232
+ "space-2": "8px",
233
+ "space-3": "12px",
234
+ "space-4": "16px",
235
+ "space-5": "20px",
236
+ "space-6": "24px",
237
+ "space-7": "32px",
238
+ "space-8": "40px",
239
+ "space-9": "48px",
240
+ "space-10": "64px",
241
+ "space-11": "80px",
242
+ "space-12": "96px",
243
+ "font-sans": "\"Inter\",system-ui,sans-serif",
244
+ "font-heading": "\"IBM Plex Sans\",\"Inter\",system-ui,sans-serif",
245
+ "font-mono": "\"IBM Plex Mono\",ui-monospace,monospace",
246
+ "text-display": "40px",
247
+ "leading-display": "1.05",
248
+ "text-data-hero": "34px",
249
+ "leading-data-hero": "1.1",
250
+ "text-h2": "24px",
251
+ "leading-h2": "1.15",
252
+ "text-h3": "15px",
253
+ "leading-h3": "1.3",
254
+ "text-body": "14px",
255
+ "leading-body": "1.5",
256
+ "text-meta": "12.5px",
257
+ "leading-meta": "1.4",
258
+ "text-eyebrow": "11px",
259
+ "leading-eyebrow": "1.2",
260
+ "tracking-tight": "-0.02em",
261
+ "tracking-eyebrow": "0.06em",
262
+ };
263
+
264
+ export const dark = {
265
+ "bg-app": "#0A0A0A",
266
+ "bg-subtle": "#171717",
267
+ "bg-hover": "#1F1F1F",
268
+ "bg-active": "#262626",
269
+ "surface": "#111111",
270
+ "surface-2": "#171717",
271
+ "surface-3": "#262626",
272
+ "border": "rgba(255,255,255,.08)",
273
+ "border-strong": "rgba(255,255,255,.14)",
274
+ "text": "#FAFAFA",
275
+ "text-hushed": "rgba(250,250,250,.64)",
276
+ "text-muted": "#A1A1A1",
277
+ "accent": "#2563EB",
278
+ "accent-hover": "color-mix(in srgb, var(--uix-accent) 82%, #FFFFFF)",
279
+ "link": "#5B8DEF",
280
+ "ring": "#3080FF",
281
+ "brand-muted": "color-mix(in srgb, var(--uix-accent) 16%, transparent)",
282
+ "success": "#00D294",
283
+ "success-fg": "#002C22",
284
+ "success-bg": "rgba(0,210,148,.15)",
285
+ "warning": "#FCBB00",
286
+ "warning-fg": "#1A1A1A",
287
+ "warning-bg": "rgba(249,156,0,.16)",
288
+ "warning-text": "#FCBB00",
289
+ "info": "#2563EB",
290
+ "info-fg": "#FFFFFF",
291
+ "info-bg": "rgba(48,128,255,.16)",
292
+ "info-text": "#60A5FA",
293
+ "danger": "#DC2626",
294
+ "danger-fg": "#FFFFFF",
295
+ "danger-bg": "rgba(220,38,38,.20)",
296
+ "danger-text": "#F87171",
297
+ "success-solid": "#34D399",
298
+ "warning-solid": "#FBBF24",
299
+ "info-solid": "#3B82F6",
300
+ "danger-solid": "#F87171",
301
+ "chart-1": "#3080FF",
302
+ "chart-2": "#00C2B0",
303
+ "chart-3": "#00D294",
304
+ "chart-4": "#FCBB00",
305
+ "chart-5": "#FF8B1A",
306
+ "chart-6": "#FF6568",
307
+ "chart-7": "#A685FF",
308
+ "chart-8": "#FF667F",
309
+ "chart-neutral": "#A1A1A1",
310
+ "row": "#111111",
311
+ "row-alt": "#161616",
312
+ "row-pinned-bg": "rgba(48,128,255,.08)",
313
+ "scrollbar-thumb": "rgba(255,255,255,.18)",
314
+ "scrollbar-thumb-hover": "rgba(255,255,255,.30)",
315
+ "highlight-top": "inset 0 1px 0 rgba(255,255,255,.04)",
316
+ };
317
+
318
+ export const num = {
319
+ "lift": 4,
320
+ "radius-xs": 4,
321
+ "radius-sm": 8,
322
+ "radius-md": 12,
323
+ "radius-lg": 16,
324
+ "radius-pill": 999,
325
+ "row-h": 56,
326
+ "row-h-compact": 44,
327
+ "row-h-comfortable": 68,
328
+ "control-h": 36,
329
+ "sidebar-w": 248,
330
+ "topbar-h": 56,
331
+ "scrollbar-size": 10,
332
+ "icon-sm": 16,
333
+ "icon-md": 20,
334
+ "icon-lg": 24,
335
+ "peek-w": 420,
336
+ "space-1": 4,
337
+ "space-2": 8,
338
+ "space-3": 12,
339
+ "space-4": 16,
340
+ "space-5": 20,
341
+ "space-6": 24,
342
+ "space-7": 32,
343
+ "space-8": 40,
344
+ "space-9": 48,
345
+ "space-10": 64,
346
+ "space-11": 80,
347
+ "space-12": 96,
348
+ "text-display": 40,
349
+ "text-data-hero": 34,
350
+ "text-h2": 24,
351
+ "text-h3": 15,
352
+ "text-body": 14,
353
+ "text-meta": 12.5,
354
+ "text-eyebrow": 11,
355
+ };
package/package.json ADDED
@@ -0,0 +1,48 @@
1
+ {
2
+ "name": "@tensor_1/tokens",
3
+ "version": "2.0.0",
4
+ "description": "UIx v2 design tokens — the --uix-* contract for house products (Tensor, POSx, SHOPx). One DTCG source -> CSS variables, Tailwind theme, and typed TS constants.",
5
+ "type": "module",
6
+ "license": "UNLICENSED",
7
+ "repository": {
8
+ "type": "git",
9
+ "url": "git+https://github.com/COx-ORG-H/UIx.git",
10
+ "directory": "packages/tokens"
11
+ },
12
+ "publishConfig": {
13
+ "access": "public"
14
+ },
15
+ "files": [
16
+ "build",
17
+ "themes/*.css",
18
+ "tokens"
19
+ ],
20
+ "exports": {
21
+ "./css": "./build/css/tokens.css",
22
+ "./styles": "./build/css/components.css",
23
+ "./tailwind": "./build/tailwind/theme.css",
24
+ "./tailwind/preset": "./build/tailwind/preset.cjs",
25
+ "./ts": {
26
+ "types": "./build/ts/tokens.d.ts",
27
+ "default": "./build/ts/tokens.js"
28
+ },
29
+ "./themes/tensor": "./themes/tensor.css",
30
+ "./themes/posx": "./themes/posx.css",
31
+ "./themes/shopx": "./themes/shopx.css",
32
+ "./themes/mission-control": "./themes/mission-control.css"
33
+ },
34
+ "scripts": {
35
+ "build:tokens": "node style-dictionary.config.mjs",
36
+ "build:themes": "node scripts/build-themes.mjs",
37
+ "build:styles": "node scripts/build-styles.mjs",
38
+ "build": "npm run build:tokens && npm run build:themes && npm run build:styles",
39
+ "test:parity": "node scripts/check-parity.mjs",
40
+ "test:contract": "node scripts/check-contract.mjs",
41
+ "prepublishOnly": "npm run build && npm run test:parity && npm run test:contract"
42
+ },
43
+ "devDependencies": {
44
+ "postcss": "^8.4.0",
45
+ "postcss-import": "^16.1.1",
46
+ "style-dictionary": "^4.0.0"
47
+ }
48
+ }
@@ -0,0 +1,4 @@
1
+ /* GENERATED — do not edit. Brand override for "mission-control". Source: themes/mission-control.tokens.json; build: npm run build:themes.
2
+ Sets only the write-only brand slots; accent/link/ring/brand-muted re-chain via @tensor_1/tokens/css. */
3
+ :root { --uix-brand: #0088ff; --uix-brand-fg: #ffffff; --uix-bg-app: #f4f2f0; --uix-bg-subtle: #F4F2F0; --uix-bg-hover: #ECEAE6; --uix-bg-active: #E7E4DF; --uix-surface: #FFFFFF; --uix-surface-2: #FFFFFF; --uix-surface-3: #FFFFFF; --uix-border: #D2CECB; --uix-border-strong: #C4BFBB; --uix-text: #0C0A08; --uix-text-hushed: rgba(12,10,8,0.60); --uix-text-muted: #6E6A68; --uix-font-sans: "Geist", system-ui, sans-serif; --uix-font-mono: "Geist Mono", ui-monospace, monospace; --uix-radius-sm: 6px; --uix-radius-md: 8px; --uix-success: #1b6b33; --uix-success-fg: #FFFFFF; --uix-success-bg: #E7F0EC; --uix-success-solid: #34c759; --uix-warning: #9a4d06; --uix-warning-fg: #FFFFFF; --uix-warning-bg: #FBE9DD; --uix-warning-solid: #ff8d28; --uix-info: #0b5cab; --uix-info-fg: #FFFFFF; --uix-info-bg: #E4EBF6; --uix-info-solid: #0088ff; --uix-danger: #be1f25; --uix-danger-fg: #FFFFFF; --uix-danger-bg: #FBE4E4; --uix-danger-solid: #ff383c; }
4
+ :root:where(.dark,[data-theme="dark"]) { --uix-brand: #0091ff; --uix-bg-app: #0E0D0C; --uix-bg-subtle: #1A1817; --uix-bg-hover: #252220; --uix-bg-active: #322E2B; --uix-surface: #1A1817; --uix-surface-2: #252220; --uix-surface-3: #322E2B; --uix-border: rgba(255,255,255,0.08); --uix-border-strong: rgba(255,255,255,0.14); --uix-text: #E3E0DB; --uix-text-hushed: rgba(227,224,219,0.60); --uix-text-muted: rgba(227,224,219,0.60); --uix-success: #30d158; --uix-success-fg: #0C0A08; --uix-success-bg: rgba(94,192,138,0.14); --uix-success-solid: #30d158; --uix-warning: #ff9230; --uix-warning-fg: #0C0A08; --uix-warning-bg: rgba(240,138,74,0.16); --uix-warning-solid: #ff9230; --uix-info: #0091ff; --uix-info-fg: #0C0A08; --uix-info-bg: rgba(86,131,210,0.16); --uix-info-solid: #0091ff; --uix-danger: #ff4245; --uix-danger-fg: #0C0A08; --uix-danger-bg: rgba(242,109,109,0.16); --uix-danger-solid: #ff4245; }
@@ -0,0 +1,4 @@
1
+ /* GENERATED — do not edit. Brand override for "posx". Source: themes/posx.tokens.json; build: npm run build:themes.
2
+ Sets only the write-only brand slots; accent/link/ring/brand-muted re-chain via @tensor_1/tokens/css. */
3
+ :root { --uix-brand: #16A34A; --uix-brand-fg: #FFFFFF; }
4
+ :root:where(.dark,[data-theme="dark"]) { --uix-brand: #22C55E; }
@@ -0,0 +1,4 @@
1
+ /* GENERATED — do not edit. Brand override for "shopx". Source: themes/shopx.tokens.json; build: npm run build:themes.
2
+ Sets only the write-only brand slots; accent/link/ring/brand-muted re-chain via @tensor_1/tokens/css. */
3
+ :root { --uix-brand: #7C3AED; --uix-brand-fg: #FFFFFF; }
4
+ :root:where(.dark,[data-theme="dark"]) { --uix-brand: #8B5CF6; }
@@ -0,0 +1,4 @@
1
+ /* GENERATED — do not edit. Brand override for "tensor". Source: themes/tensor.tokens.json; build: npm run build:themes.
2
+ Sets only the write-only brand slots; accent/link/ring/brand-muted re-chain via @tensor_1/tokens/css. */
3
+ :root { --uix-brand: #4F46E5; --uix-brand-fg: #FFFFFF; }
4
+ :root:where(.dark,[data-theme="dark"]) { --uix-brand: #6366F1; }
@@ -0,0 +1,68 @@
1
+ {
2
+ "bg-app": { "$type": "color", "$value": "#FAFAFA" },
3
+ "bg-subtle": { "$type": "color", "$value": "#F5F5F5" },
4
+ "bg-hover": { "$type": "color", "$value": "#EFEFEF" },
5
+ "bg-active": { "$type": "color", "$value": "#E5E5E5" },
6
+ "surface": { "$type": "color", "$value": "#FFFFFF" },
7
+ "surface-2": { "$type": "color", "$value": "#FFFFFF" },
8
+ "surface-3": { "$type": "color", "$value": "#FAFAFA" },
9
+ "border": { "$type": "color", "$value": "#E5E5E5" },
10
+ "border-strong": { "$type": "color", "$value": "#D4D4D4" },
11
+
12
+ "text": { "$type": "color", "$value": "#0A0A0A" },
13
+ "text-hushed": { "$type": "color", "$value": "rgba(10,10,10,.62)" },
14
+ "text-muted": { "$type": "color", "$value": "#6B6B6B", "$description": "Muted meta text. Darkened from #737373 so it clears WCAG AA 4.5:1 on the off-white surfaces it sits on (--uix-bg-subtle #F5F5F5, --uix-bg-app #FAFAFA); the old value was 4.34:1 on #F5F5F5." },
15
+ "text-reverse": { "$type": "color", "$value": "#FFFFFF" },
16
+ "text-hushed-reverse": { "$type": "color", "$value": "rgba(255,255,255,.62)" },
17
+
18
+ "accent": { "$type": "color", "$value": "var(--uix-brand,#1447E6)", "$description": "Runtime: chains through the write-only --uix-brand slot. Must stay var() to keep live brand override." },
19
+ "accent-dark": { "$type": "color", "$value": "#0E3AC0" },
20
+ "accent-light": { "$type": "color", "$value": "#4D77F0" },
21
+ "accent-hover": { "$type": "color", "$value": "color-mix(in srgb, var(--uix-accent) 88%, #000000)", "$description": "Primary-button hover. Theme-aware: derived from the live accent so it tracks the brand override (light darkens, dark lightens — see tokens/dark)." },
22
+ "accent-fg": { "$type": "color", "$value": "var(--uix-brand-fg,#FFFFFF)", "$description": "Runtime: chains through --uix-brand-fg." },
23
+ "link": { "$type": "color", "$value": "var(--uix-brand,#1447E6)", "$description": "Runtime: chains through --uix-brand." },
24
+ "ring": { "$type": "color", "$value": "var(--uix-brand,#1447E6)", "$description": "Runtime: chains through --uix-brand." },
25
+ "brand-muted": { "$type": "color", "$value": "color-mix(in srgb, var(--uix-accent) 12%, transparent)", "$description": "Runtime: color-mix of the live accent." },
26
+
27
+ "success": { "$type": "color", "$value": "#047857" },
28
+ "success-fg": { "$type": "color", "$value": "#FFFFFF" },
29
+ "success-bg": { "$type": "color", "$value": "#D0FAE5" },
30
+ "warning": { "$type": "color", "$value": "#F99C00" },
31
+ "warning-fg": { "$type": "color", "$value": "#1A1A1A" },
32
+ "warning-bg": { "$type": "color", "$value": "#FEF3D6" },
33
+ "warning-text": { "$type": "color", "$value": "#92400E", "$description": "Warning-toned TEXT, legible on the faint --uix-warning-bg in light mode — the bright --uix-warning (#F99C00) fails contrast on pale yellow, so the foreground is a hand-darkened amber. Dark mode overrides to track --uix-warning. Used by status-pill --warning." },
34
+ "info": { "$type": "color", "$value": "#1447E6" },
35
+ "info-fg": { "$type": "color", "$value": "#FFFFFF" },
36
+ "info-bg": { "$type": "color", "$value": "#E3EBFF" },
37
+ "info-text": { "$type": "color", "$value": "#1447E6", "$description": "Info-toned TEXT, legible on --uix-info-bg and dark surfaces. Light = --uix-info (already AA on the pale tint); dark brightens it (the deep --uix-info #2563EB fails as text on the dark tint). Used by status-pill/alert/node --info. See --uix-warning-text for the same TEXT-vs-SOLID split." },
38
+ "danger": { "$type": "color", "$value": "#E40014" },
39
+ "danger-fg": { "$type": "color", "$value": "#FFFFFF" },
40
+ "danger-bg": { "$type": "color", "$value": "#FFE4E6" },
41
+ "danger-text": { "$type": "color", "$value": "#C20012", "$description": "Danger-toned TEXT, legible on --uix-danger-bg (the bright --uix-danger #E40014 is only 4.05:1 on #FFE4E6). A hand-darkened red for text; --uix-danger stays the SOLID role (danger button bg, critical pill, dots). Dark mode brightens it. Used by pill/alert/stat-trend/field-error/menu/sla/node/audit --danger." },
42
+
43
+ "success-solid": { "$type": "color", "$value": "#10B981", "$description": "SOLID status role — the vivid fill/dot/pulse color, distinct from the legible TEXT role (--uix-success). Products override per brand." },
44
+ "warning-solid": { "$type": "color", "$value": "#F59E0B", "$description": "SOLID status role (see success-solid)." },
45
+ "info-solid": { "$type": "color", "$value": "#2563EB", "$description": "SOLID status role (see success-solid)." },
46
+ "danger-solid": { "$type": "color", "$value": "#EF4444", "$description": "SOLID status role (see success-solid)." },
47
+
48
+ "chart-1": { "$type": "color", "$value": "#2563EB" },
49
+ "chart-2": { "$type": "color", "$value": "#0891B2" },
50
+ "chart-3": { "$type": "color", "$value": "#16A34A" },
51
+ "chart-4": { "$type": "color", "$value": "#F59E0B" },
52
+ "chart-5": { "$type": "color", "$value": "#EA580C" },
53
+ "chart-6": { "$type": "color", "$value": "#E11D48" },
54
+ "chart-7": { "$type": "color", "$value": "#7C3AED" },
55
+ "chart-8": { "$type": "color", "$value": "#DB2777" },
56
+ "chart-neutral": { "$type": "color", "$value": "#64748B" },
57
+
58
+ "row": { "$type": "color", "$value": "#FFFFFF" },
59
+ "row-alt": { "$type": "color", "$value": "#FAFAFA" },
60
+ "row-pinned-bg": { "$type": "color", "$value": "#F4F7FF" },
61
+
62
+ "scrollbar-thumb": { "$type": "color", "$value": "rgba(10,10,10,.20)" },
63
+ "scrollbar-thumb-hover": { "$type": "color", "$value": "rgba(10,10,10,.34)" },
64
+ "scrollbar-track": { "$type": "color", "$value": "transparent" },
65
+
66
+ "scrim": { "$type": "color", "$value": "rgba(0,0,0,.5)", "$description": "Backdrop behind modal / drawer / side-peek overlays and the avatar edit-overlay — dims the content beneath. Theme-invariant: a black scrim reads on light and dark alike (no dark override)." },
67
+ "scrim-strong": { "$type": "color", "$value": "rgba(0,0,0,.7)", "$description": "Heavier scrim for media-focus surfaces (lightbox), where the backdrop should recede fully behind the image." }
68
+ }
@@ -0,0 +1,26 @@
1
+ {
2
+ "shadow-sm": { "$type": "shadow", "$value": "0 1px 2px rgba(0,0,0,.06)" },
3
+ "shadow-popover": { "$type": "shadow", "$value": "0 8px 24px rgba(0,0,0,.10),0 1px 2px rgba(0,0,0,.05)" },
4
+ "shadow-overlay": { "$type": "shadow", "$value": "0 16px 48px rgba(0,0,0,.18)" },
5
+ "highlight-top": { "$type": "shadow", "$value": "inset 0 1px 0 rgba(255,255,255,0)" },
6
+
7
+ "ease-out": { "$type": "cubicBezier", "$value": "cubic-bezier(.23,1,.32,1)" },
8
+ "ease-out-strong": { "$type": "cubicBezier", "$value": "cubic-bezier(.2,0,0,1)" },
9
+ "ease-in": { "$type": "cubicBezier", "$value": "cubic-bezier(.4,0,1,1)" },
10
+ "ease-in-out": { "$type": "cubicBezier", "$value": "cubic-bezier(.77,0,.175,1)" },
11
+ "ease-spring": { "$type": "cubicBezier", "$value": "cubic-bezier(.34,1.56,.64,1)" },
12
+
13
+ "dur-fast": { "$type": "duration", "$value": "120ms" },
14
+ "dur": { "$type": "duration", "$value": "160ms" },
15
+ "dur-slow": { "$type": "duration", "$value": "240ms" },
16
+ "dur-slower": { "$type": "duration", "$value": "320ms" },
17
+
18
+ "lift": { "$type": "dimension", "$value": "4px" },
19
+
20
+ "z-raised": { "$type": "number", "$value": "1", "$description": "z-index ladder (semantic stacking order). raised = locally lifted within a component: a sticky table header & first column, a flow node title over its diamond, a heartbeat dot over its ping." },
21
+ "z-sticky": { "$type": "number", "$value": "3", "$description": "A sticky plane that must outrank raised siblings — the pinned-column header corner, which sits above both the sticky row and the sticky column." },
22
+ "z-dropdown": { "$type": "number", "$value": "10", "$description": "Detached layers anchored to a trigger: menus, selects, comboboxes, popovers." },
23
+ "z-overlay": { "$type": "number", "$value": "20", "$description": "Full-viewport overlays and their backdrops: modal, drawer, side-peek, lightbox." },
24
+ "z-tooltip": { "$type": "number", "$value": "30", "$description": "Tooltips — above overlays so a tip raised from inside a dialog stays visible." },
25
+ "z-toast": { "$type": "number", "$value": "100", "$description": "Toasts / transient notifications — top of the stack." }
26
+ }
@@ -0,0 +1,20 @@
1
+ {
2
+ "radius-xs": { "$type": "dimension", "$value": "4px", "$description": "Smallest corner radius — tiny inset elements (checkbox box, kbd key, table/sidebar hover buttons, legend swatch, inline code, audit-log diff chips, small tags). The bottom rung below radius-sm." },
3
+ "radius-sm": { "$type": "dimension", "$value": "8px" },
4
+ "radius-md": { "$type": "dimension", "$value": "12px" },
5
+ "radius-lg": { "$type": "dimension", "$value": "16px" },
6
+ "radius-pill": { "$type": "dimension", "$value": "999px" },
7
+
8
+ "row-h": { "$type": "dimension", "$value": "56px" },
9
+ "row-h-compact": { "$type": "dimension", "$value": "44px" },
10
+ "row-h-comfortable": { "$type": "dimension", "$value": "68px" },
11
+ "control-h": { "$type": "dimension", "$value": "36px" },
12
+ "sidebar-w": { "$type": "dimension", "$value": "248px" },
13
+ "topbar-h": { "$type": "dimension", "$value": "56px" },
14
+
15
+ "scrollbar-size": { "$type": "dimension", "$value": "10px" },
16
+ "icon-sm": { "$type": "dimension", "$value": "16px" },
17
+ "icon-md": { "$type": "dimension", "$value": "20px" },
18
+ "icon-lg": { "$type": "dimension", "$value": "24px" },
19
+ "peek-w": { "$type": "dimension", "$value": "420px" }
20
+ }
@@ -0,0 +1,15 @@
1
+ {
2
+ "space-0": { "$type": "dimension", "$value": "0", "$description": "Spacing scale (4px base). The shared whitespace rhythm — components consume --uix-space-* instead of hardcoded px so density is tunable in one place." },
3
+ "space-1": { "$type": "dimension", "$value": "4px" },
4
+ "space-2": { "$type": "dimension", "$value": "8px" },
5
+ "space-3": { "$type": "dimension", "$value": "12px" },
6
+ "space-4": { "$type": "dimension", "$value": "16px" },
7
+ "space-5": { "$type": "dimension", "$value": "20px" },
8
+ "space-6": { "$type": "dimension", "$value": "24px" },
9
+ "space-7": { "$type": "dimension", "$value": "32px" },
10
+ "space-8": { "$type": "dimension", "$value": "40px" },
11
+ "space-9": { "$type": "dimension", "$value": "48px" },
12
+ "space-10": { "$type": "dimension", "$value": "64px" },
13
+ "space-11": { "$type": "dimension", "$value": "80px" },
14
+ "space-12": { "$type": "dimension", "$value": "96px" }
15
+ }
@@ -0,0 +1,23 @@
1
+ {
2
+ "font-sans": { "$type": "fontFamily", "$value": "\"Inter\",system-ui,sans-serif" },
3
+ "font-heading": { "$type": "fontFamily", "$value": "\"IBM Plex Sans\",\"Inter\",system-ui,sans-serif" },
4
+ "font-mono": { "$type": "fontFamily", "$value": "\"IBM Plex Mono\",ui-monospace,monospace" },
5
+
6
+ "text-display": { "$type": "dimension", "$value": "40px" },
7
+ "leading-display":{ "$type": "number", "$value": "1.05" },
8
+ "text-data-hero": { "$type": "dimension", "$value": "34px" },
9
+ "leading-data-hero": { "$type": "number", "$value": "1.1" },
10
+ "text-h2": { "$type": "dimension", "$value": "24px" },
11
+ "leading-h2":{ "$type": "number", "$value": "1.15" },
12
+ "text-h3": { "$type": "dimension", "$value": "15px" },
13
+ "leading-h3":{ "$type": "number", "$value": "1.3" },
14
+ "text-body": { "$type": "dimension", "$value": "14px" },
15
+ "leading-body":{ "$type": "number", "$value": "1.5" },
16
+ "text-meta": { "$type": "dimension", "$value": "12.5px" },
17
+ "leading-meta":{ "$type": "number", "$value": "1.4" },
18
+ "text-eyebrow": { "$type": "dimension", "$value": "11px" },
19
+ "leading-eyebrow":{ "$type": "number", "$value": "1.2" },
20
+
21
+ "tracking-tight": { "$type": "dimension", "$value": "-0.02em" },
22
+ "tracking-eyebrow": { "$type": "dimension", "$value": "0.06em" }
23
+ }