@tensor_1/tokens 2.55.3 → 2.57.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.
@@ -78,6 +78,8 @@ export const cssVar = {
78
78
  "chart-6": "var(--uix-chart-6)",
79
79
  "chart-7": "var(--uix-chart-7)",
80
80
  "chart-8": "var(--uix-chart-8)",
81
+ "chart-series": "var(--uix-chart-series)",
82
+ "chart-series-soft": "var(--uix-chart-series-soft)",
81
83
  "chart-neutral": "var(--uix-chart-neutral)",
82
84
  "chart-grid": "var(--uix-chart-grid)",
83
85
  "chart-axis": "var(--uix-chart-axis)",
@@ -88,6 +90,47 @@ export const cssVar = {
88
90
  "chart-event": "var(--uix-chart-event)",
89
91
  "chart-partial": "var(--uix-chart-partial)",
90
92
  "chart-comparison": "var(--uix-chart-comparison)",
93
+ "file-img": "var(--uix-file-img)",
94
+ "file-img-soft": "var(--uix-file-img-soft)",
95
+ "file-img-strong": "var(--uix-file-img-strong)",
96
+ "file-img-edge": "var(--uix-file-img-edge)",
97
+ "file-img-label": "var(--uix-file-img-label)",
98
+ "file-doc": "var(--uix-file-doc)",
99
+ "file-doc-soft": "var(--uix-file-doc-soft)",
100
+ "file-doc-strong": "var(--uix-file-doc-strong)",
101
+ "file-doc-edge": "var(--uix-file-doc-edge)",
102
+ "file-doc-label": "var(--uix-file-doc-label)",
103
+ "file-sheet": "var(--uix-file-sheet)",
104
+ "file-sheet-soft": "var(--uix-file-sheet-soft)",
105
+ "file-sheet-strong": "var(--uix-file-sheet-strong)",
106
+ "file-sheet-edge": "var(--uix-file-sheet-edge)",
107
+ "file-sheet-label": "var(--uix-file-sheet-label)",
108
+ "file-mail": "var(--uix-file-mail)",
109
+ "file-mail-soft": "var(--uix-file-mail-soft)",
110
+ "file-mail-strong": "var(--uix-file-mail-strong)",
111
+ "file-mail-edge": "var(--uix-file-mail-edge)",
112
+ "file-mail-label": "var(--uix-file-mail-label)",
113
+ "file-code": "var(--uix-file-code)",
114
+ "file-code-soft": "var(--uix-file-code-soft)",
115
+ "file-code-strong": "var(--uix-file-code-strong)",
116
+ "file-code-edge": "var(--uix-file-code-edge)",
117
+ "file-code-label": "var(--uix-file-code-label)",
118
+ "file-log": "var(--uix-file-log)",
119
+ "file-log-soft": "var(--uix-file-log-soft)",
120
+ "file-log-strong": "var(--uix-file-log-strong)",
121
+ "file-log-edge": "var(--uix-file-log-edge)",
122
+ "file-log-label": "var(--uix-file-log-label)",
123
+ "file-archive": "var(--uix-file-archive)",
124
+ "file-archive-soft": "var(--uix-file-archive-soft)",
125
+ "file-archive-strong": "var(--uix-file-archive-strong)",
126
+ "file-archive-edge": "var(--uix-file-archive-edge)",
127
+ "file-archive-label": "var(--uix-file-archive-label)",
128
+ "file-other": "var(--uix-file-other)",
129
+ "file-other-soft": "var(--uix-file-other-soft)",
130
+ "file-other-strong": "var(--uix-file-other-strong)",
131
+ "file-other-edge": "var(--uix-file-other-edge)",
132
+ "file-other-label": "var(--uix-file-other-label)",
133
+ "file-label-fg": "var(--uix-file-label-fg)",
91
134
  "row": "var(--uix-row)",
92
135
  "row-alt": "var(--uix-row-alt)",
93
136
  "row-pinned-bg": "var(--uix-row-pinned-bg)",
@@ -133,7 +176,15 @@ export const cssVar = {
133
176
  "loop-ping": "var(--uix-loop-ping)",
134
177
  "loop-blink": "var(--uix-loop-blink)",
135
178
  "loop-pulse": "var(--uix-loop-pulse)",
179
+ "dur-arrive": "var(--uix-dur-arrive)",
180
+ "stagger-arrive": "var(--uix-stagger-arrive)",
181
+ "delay-arrive-trace": "var(--uix-delay-arrive-trace)",
182
+ "dur-arrive-trace": "var(--uix-dur-arrive-trace)",
183
+ "dur-arrive-grow": "var(--uix-dur-arrive-grow)",
184
+ "stagger-arrive-grow": "var(--uix-stagger-arrive-grow)",
185
+ "dur-arrive-count": "var(--uix-dur-arrive-count)",
136
186
  "lift": "var(--uix-lift)",
187
+ "arrive-rise": "var(--uix-arrive-rise)",
137
188
  "z-raised": "var(--uix-z-raised)",
138
189
  "z-sticky": "var(--uix-z-sticky)",
139
190
  "z-dropdown": "var(--uix-z-dropdown)",
@@ -223,24 +274,24 @@ export const light = {
223
274
  "accent-text": "color-mix(in srgb, var(--uix-accent) 65%, #000000)",
224
275
  "ring": "#1447E6",
225
276
  "brand-muted": "color-mix(in srgb, var(--uix-accent) 12%, transparent)",
226
- "success": "#047857",
277
+ "success": "#2B7752",
227
278
  "success-fg": "#FFFFFF",
228
- "success-bg": "#D0FAE5",
279
+ "success-bg": "#E8F4ED",
229
280
  "success-text": "var(--uix-success)",
230
- "warning": "#F99C00",
281
+ "warning": "#D4A03A",
231
282
  "warning-fg": "#1A1A1A",
232
- "warning-bg": "#FEF3D6",
233
- "warning-text": "#92400E",
234
- "warning-border": "#D97706",
235
- "info": "#1447E6",
283
+ "warning-bg": "#FAF2E1",
284
+ "warning-text": "#8F6213",
285
+ "warning-border": "#B8862C",
286
+ "info": "#3A5BD0",
236
287
  "info-fg": "#FFFFFF",
237
- "info-bg": "#E3EBFF",
238
- "info-text": "#1447E6",
239
- "danger": "#E40014",
288
+ "info-bg": "#ECF0FC",
289
+ "info-text": "#3A5BD0",
290
+ "danger": "#B8433C",
240
291
  "danger-fg": "#FFFFFF",
241
- "danger-bg": "#FFE4E6",
242
- "danger-border": "#E40014",
243
- "danger-text": "#C20012",
292
+ "danger-bg": "#FBEDEB",
293
+ "danger-border": "#D65A50",
294
+ "danger-text": "#B9423C",
244
295
  "amber": "#C98A1E",
245
296
  "amber-text": "#795006",
246
297
  "amber-bg": "#FEFCE8",
@@ -248,42 +299,85 @@ export const light = {
248
299
  "attention-bg": "#FFEDD5",
249
300
  "attention-text": "#9A3412",
250
301
  "attention-solid": "#EA580C",
251
- "overdue": "#DC2626",
252
- "overdue-bg": "#FEE2E2",
253
- "overdue-text": "#991B1B",
254
- "overdue-solid": "#EF4444",
302
+ "overdue": "#B8433C",
303
+ "overdue-bg": "#FBEDEB",
304
+ "overdue-text": "#B9423C",
305
+ "overdue-solid": "#D65A50",
255
306
  "sev-4": "var(--uix-info)",
256
307
  "sev-4-bg": "var(--uix-info-bg)",
257
308
  "sev-4-text": "var(--uix-info-text)",
258
309
  "sev-5": "var(--uix-text-muted)",
259
310
  "sev-5-bg": "var(--uix-bg-active)",
260
311
  "sev-5-text": "var(--uix-text-hushed)",
261
- "success-solid": "#10B981",
262
- "warning-solid": "#F59E0B",
263
- "info-solid": "#2563EB",
264
- "danger-solid": "#EF4444",
312
+ "success-solid": "#3FA373",
313
+ "warning-solid": "#B8862C",
314
+ "info-solid": "#5B7BE3",
315
+ "danger-solid": "#D65A50",
265
316
  "neutral-solid": "#8A8A8A",
266
317
  "neutral-text": "var(--uix-text-hushed)",
267
318
  "neutral-bg": "var(--uix-bg-active)",
268
319
  "neutral-border": "var(--uix-border-strong)",
269
320
  "chart-1": "#0455E6",
270
- "chart-2": "#249BC8",
271
- "chart-3": "#06A543",
272
- "chart-4": "#905709",
273
- "chart-5": "#F25C1B",
274
- "chart-6": "#B00825",
275
- "chart-7": "#8143E6",
276
- "chart-8": "#DB2579",
321
+ "chart-2": "#1F978A",
322
+ "chart-3": "#8C72D6",
323
+ "chart-4": "#4C9A5A",
324
+ "chart-5": "#B45E9A",
325
+ "chart-6": "#7F8A2E",
326
+ "chart-7": "#2F8FC2",
327
+ "chart-8": "#5E7D3A",
328
+ "chart-series": "var(--uix-chart-1)",
329
+ "chart-series-soft": "rgba(4,85,230,.14)",
277
330
  "chart-neutral": "#64748B",
278
331
  "chart-grid": "#EDEDED",
279
332
  "chart-axis": "#D4D4D4",
280
333
  "chart-reference": "#525252",
281
334
  "chart-zone-warning": "rgba(217,119,6,.10)",
282
- "chart-zone-danger": "rgba(228,0,20,.07)",
335
+ "chart-zone-danger": "rgba(214,90,80,.08)",
283
336
  "chart-forecast-band": "rgba(10,10,10,.06)",
284
337
  "chart-event": "#737373",
285
338
  "chart-partial": "rgba(10,10,10,.10)",
286
339
  "chart-comparison": "#B8B8B8",
340
+ "file-img": "var(--uix-chart-3)",
341
+ "file-img-soft": "color-mix(in srgb, var(--uix-file-img) 12%, transparent)",
342
+ "file-img-strong": "color-mix(in srgb, var(--uix-file-img) 22%, transparent)",
343
+ "file-img-edge": "color-mix(in srgb, var(--uix-file-img) 28%, var(--uix-border))",
344
+ "file-img-label": "color-mix(in srgb, var(--uix-file-img) 86%, #000000)",
345
+ "file-doc": "var(--uix-chart-5)",
346
+ "file-doc-soft": "color-mix(in srgb, var(--uix-file-doc) 12%, transparent)",
347
+ "file-doc-strong": "color-mix(in srgb, var(--uix-file-doc) 22%, transparent)",
348
+ "file-doc-edge": "color-mix(in srgb, var(--uix-file-doc) 28%, var(--uix-border))",
349
+ "file-doc-label": "color-mix(in srgb, var(--uix-file-doc) 86%, #000000)",
350
+ "file-sheet": "#3F8F55",
351
+ "file-sheet-soft": "color-mix(in srgb, var(--uix-file-sheet) 12%, transparent)",
352
+ "file-sheet-strong": "color-mix(in srgb, var(--uix-file-sheet) 22%, transparent)",
353
+ "file-sheet-edge": "color-mix(in srgb, var(--uix-file-sheet) 28%, var(--uix-border))",
354
+ "file-sheet-label": "color-mix(in srgb, var(--uix-file-sheet) 86%, #000000)",
355
+ "file-mail": "var(--uix-chart-7)",
356
+ "file-mail-soft": "color-mix(in srgb, var(--uix-file-mail) 12%, transparent)",
357
+ "file-mail-strong": "color-mix(in srgb, var(--uix-file-mail) 22%, transparent)",
358
+ "file-mail-edge": "color-mix(in srgb, var(--uix-file-mail) 28%, var(--uix-border))",
359
+ "file-mail-label": "color-mix(in srgb, var(--uix-file-mail) 86%, #000000)",
360
+ "file-code": "var(--uix-chart-2)",
361
+ "file-code-soft": "color-mix(in srgb, var(--uix-file-code) 12%, transparent)",
362
+ "file-code-strong": "color-mix(in srgb, var(--uix-file-code) 22%, transparent)",
363
+ "file-code-edge": "color-mix(in srgb, var(--uix-file-code) 28%, var(--uix-border))",
364
+ "file-code-label": "color-mix(in srgb, var(--uix-file-code) 86%, #000000)",
365
+ "file-log": "var(--uix-chart-6)",
366
+ "file-log-soft": "color-mix(in srgb, var(--uix-file-log) 12%, transparent)",
367
+ "file-log-strong": "color-mix(in srgb, var(--uix-file-log) 22%, transparent)",
368
+ "file-log-edge": "color-mix(in srgb, var(--uix-file-log) 28%, var(--uix-border))",
369
+ "file-log-label": "color-mix(in srgb, var(--uix-file-log) 86%, #000000)",
370
+ "file-archive": "#8A7A66",
371
+ "file-archive-soft": "color-mix(in srgb, var(--uix-file-archive) 12%, transparent)",
372
+ "file-archive-strong": "color-mix(in srgb, var(--uix-file-archive) 22%, transparent)",
373
+ "file-archive-edge": "color-mix(in srgb, var(--uix-file-archive) 28%, var(--uix-border))",
374
+ "file-archive-label": "color-mix(in srgb, var(--uix-file-archive) 86%, #000000)",
375
+ "file-other": "#808080",
376
+ "file-other-soft": "color-mix(in srgb, var(--uix-file-other) 12%, transparent)",
377
+ "file-other-strong": "color-mix(in srgb, var(--uix-file-other) 22%, transparent)",
378
+ "file-other-edge": "color-mix(in srgb, var(--uix-file-other) 28%, var(--uix-border))",
379
+ "file-other-label": "color-mix(in srgb, var(--uix-file-other) 86%, #000000)",
380
+ "file-label-fg": "#FFFFFF",
287
381
  "row": "#FFFFFF",
288
382
  "row-alt": "#FAFAFA",
289
383
  "row-pinned-bg": "#F4F7FF",
@@ -329,7 +423,15 @@ export const light = {
329
423
  "loop-ping": "1600ms",
330
424
  "loop-blink": "1100ms",
331
425
  "loop-pulse": "2000ms",
426
+ "dur-arrive": "420ms",
427
+ "stagger-arrive": "45ms",
428
+ "delay-arrive-trace": "150ms",
429
+ "dur-arrive-trace": "700ms",
430
+ "dur-arrive-grow": "500ms",
431
+ "stagger-arrive-grow": "25ms",
432
+ "dur-arrive-count": "600ms",
332
433
  "lift": "4px",
434
+ "arrive-rise": "8px",
333
435
  "z-raised": "1",
334
436
  "z-sticky": "3",
335
437
  "z-dropdown": "10",
@@ -414,24 +516,24 @@ export const dark = {
414
516
  "accent-text": "color-mix(in srgb, var(--uix-accent) 70%, #FFFFFF)",
415
517
  "ring": "#3080FF",
416
518
  "brand-muted": "color-mix(in srgb, var(--uix-accent) 16%, transparent)",
417
- "success": "#49AF7E",
519
+ "success": "#5DB887",
418
520
  "success-fg": "#002C22",
419
- "success-bg": "rgba(73,175,126,.12)",
521
+ "success-bg": "rgba(93,184,135,.12)",
420
522
  "success-text": "#7CC79F",
421
- "warning": "#D7B672",
523
+ "warning": "#D9B571",
422
524
  "warning-fg": "#1A1A1A",
423
- "warning-bg": "rgba(217,164,64,.12)",
424
- "warning-border": "#CA8A04",
425
- "warning-text": "#D7B672",
426
- "info": "#2563EB",
525
+ "warning-bg": "rgba(217,168,74,.12)",
526
+ "warning-border": "#B48C3E",
527
+ "warning-text": "#D9B571",
528
+ "info": "#3D5CC8",
427
529
  "info-fg": "#FFFFFF",
428
- "info-bg": "rgba(98,147,219,.12)",
429
- "info-text": "#8DB4E7",
430
- "danger": "#BE3A41",
530
+ "info-bg": "rgba(120,144,230,.12)",
531
+ "info-text": "#97AEEC",
532
+ "danger": "#B4444A",
431
533
  "danger-fg": "#FFFFFF",
432
- "danger-bg": "rgba(218,108,108,.12)",
433
- "danger-border": "#DA6C6C",
434
- "danger-text": "#E69593",
534
+ "danger-bg": "rgba(218,108,100,.12)",
535
+ "danger-border": "#DA6C64",
536
+ "danger-text": "#E4958F",
435
537
  "amber": "#E6B25C",
436
538
  "amber-text": "#DDB370",
437
539
  "amber-bg": "rgba(201,138,30,.14)",
@@ -443,29 +545,71 @@ export const dark = {
443
545
  "overdue-bg": "rgba(218,108,108,.12)",
444
546
  "overdue-text": "#E89D9F",
445
547
  "overdue-solid": "#DA6C6C",
446
- "success-solid": "#49AF7E",
447
- "warning-solid": "#D9A440",
448
- "info-solid": "#6293DB",
449
- "danger-solid": "#DA6C6C",
548
+ "success-solid": "#5DB887",
549
+ "warning-solid": "#D9A84A",
550
+ "info-solid": "#7890E6",
551
+ "danger-solid": "#DA6C64",
450
552
  "neutral-solid": "#868686",
451
553
  "chart-1": "#3280FC",
452
- "chart-2": "#15A7A4",
453
- "chart-3": "#127A3D",
454
- "chart-4": "#AB9017",
455
- "chart-5": "#8F530C",
456
- "chart-6": "#CD766F",
457
- "chart-7": "#9A77F4",
458
- "chart-8": "#FB416A",
554
+ "chart-2": "#22A093",
555
+ "chart-3": "#A580CF",
556
+ "chart-4": "#4E9F62",
557
+ "chart-5": "#C474AC",
558
+ "chart-6": "#93993A",
559
+ "chart-7": "#0A819D",
560
+ "chart-8": "#6E9147",
561
+ "chart-series-soft": "rgba(50,128,252,.18)",
459
562
  "chart-neutral": "#A1A1A1",
460
563
  "chart-grid": "#232323",
461
564
  "chart-axis": "#3A3A3A",
462
565
  "chart-reference": "#B3B3B3",
463
566
  "chart-zone-warning": "rgba(217,164,64,.10)",
464
- "chart-zone-danger": "rgba(218,108,108,.10)",
567
+ "chart-zone-danger": "rgba(218,108,100,.10)",
465
568
  "chart-forecast-band": "rgba(250,250,250,.06)",
466
569
  "chart-event": "#8C8C8C",
467
570
  "chart-partial": "rgba(250,250,250,.12)",
468
571
  "chart-comparison": "#5C5C5C",
572
+ "file-img": "#A58FE6",
573
+ "file-img-soft": "color-mix(in srgb, var(--uix-file-img) 15%, transparent)",
574
+ "file-img-strong": "color-mix(in srgb, var(--uix-file-img) 26%, transparent)",
575
+ "file-img-edge": "color-mix(in srgb, var(--uix-file-img) 32%, var(--uix-border))",
576
+ "file-img-label": "var(--uix-file-img)",
577
+ "file-doc": "#CF7FB6",
578
+ "file-doc-soft": "color-mix(in srgb, var(--uix-file-doc) 15%, transparent)",
579
+ "file-doc-strong": "color-mix(in srgb, var(--uix-file-doc) 26%, transparent)",
580
+ "file-doc-edge": "color-mix(in srgb, var(--uix-file-doc) 32%, var(--uix-border))",
581
+ "file-doc-label": "var(--uix-file-doc)",
582
+ "file-sheet": "#5DB07A",
583
+ "file-sheet-soft": "color-mix(in srgb, var(--uix-file-sheet) 15%, transparent)",
584
+ "file-sheet-strong": "color-mix(in srgb, var(--uix-file-sheet) 26%, transparent)",
585
+ "file-sheet-edge": "color-mix(in srgb, var(--uix-file-sheet) 32%, var(--uix-border))",
586
+ "file-sheet-label": "var(--uix-file-sheet)",
587
+ "file-mail": "#55A9D9",
588
+ "file-mail-soft": "color-mix(in srgb, var(--uix-file-mail) 15%, transparent)",
589
+ "file-mail-strong": "color-mix(in srgb, var(--uix-file-mail) 26%, transparent)",
590
+ "file-mail-edge": "color-mix(in srgb, var(--uix-file-mail) 32%, var(--uix-border))",
591
+ "file-mail-label": "var(--uix-file-mail)",
592
+ "file-code": "#3DB5A7",
593
+ "file-code-soft": "color-mix(in srgb, var(--uix-file-code) 15%, transparent)",
594
+ "file-code-strong": "color-mix(in srgb, var(--uix-file-code) 26%, transparent)",
595
+ "file-code-edge": "color-mix(in srgb, var(--uix-file-code) 32%, var(--uix-border))",
596
+ "file-code-label": "var(--uix-file-code)",
597
+ "file-log": "#A3AE4C",
598
+ "file-log-soft": "color-mix(in srgb, var(--uix-file-log) 15%, transparent)",
599
+ "file-log-strong": "color-mix(in srgb, var(--uix-file-log) 26%, transparent)",
600
+ "file-log-edge": "color-mix(in srgb, var(--uix-file-log) 32%, var(--uix-border))",
601
+ "file-log-label": "var(--uix-file-log)",
602
+ "file-archive": "#B0A08A",
603
+ "file-archive-soft": "color-mix(in srgb, var(--uix-file-archive) 15%, transparent)",
604
+ "file-archive-strong": "color-mix(in srgb, var(--uix-file-archive) 26%, transparent)",
605
+ "file-archive-edge": "color-mix(in srgb, var(--uix-file-archive) 32%, var(--uix-border))",
606
+ "file-archive-label": "var(--uix-file-archive)",
607
+ "file-other": "#8C8C8C",
608
+ "file-other-soft": "color-mix(in srgb, var(--uix-file-other) 15%, transparent)",
609
+ "file-other-strong": "color-mix(in srgb, var(--uix-file-other) 26%, transparent)",
610
+ "file-other-edge": "color-mix(in srgb, var(--uix-file-other) 32%, var(--uix-border))",
611
+ "file-other-label": "var(--uix-file-other)",
612
+ "file-label-fg": "#0A0A0A",
469
613
  "row": "#111111",
470
614
  "row-alt": "#161616",
471
615
  "row-pinned-bg": "rgba(48,128,255,.08)",
@@ -481,6 +625,7 @@ export const dark = {
481
625
 
482
626
  export const num = {
483
627
  "lift": 4,
628
+ "arrive-rise": 8,
484
629
  "radius-xs": 4,
485
630
  "radius-sm": 8,
486
631
  "radius-md": 12,
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@tensor_1/tokens",
3
- "version": "2.55.3",
3
+ "version": "2.57.0",
4
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
5
  "type": "module",
6
6
  "sideEffects": [
@@ -0,0 +1,67 @@
1
+ /* uix arrive — the first paint of a glance page (calm kit 2.56). Not .uix-arrival, which is the
2
+ "you are here" tint on a link target.
3
+
4
+ .uix-arrive is the stage. While it carries [data-uix-arrive="play"] (React <Arrive> sets it on
5
+ the first mount of a session and clears it once the sequence is over), every .uix-arrive__item
6
+ inside fades and rises 8 px, 45 ms after the one before (its --uix-arrive-i), over 420 ms; lines
7
+ inside an item trace in from the left 150 ms after their card starts (700 ms) and bars grow from
8
+ their baseline, 25 ms apart (500 ms). With any other value, or none, nothing moves: the resting
9
+ state is the finished page, so a refresh or a data change never replays it. Under reduced
10
+ motion each item only fades, for --uix-dur (160 ms), and charts appear drawn.
11
+
12
+ Hooks for drawn marks (used by Sparkline, BarList and Meter; any SVG of your own can opt in):
13
+ .uix-arrive__trace an SVG stroke with pathLength="1"
14
+ .uix-arrive__grow an element that grows on its inline axis from scaleX(0) to its own transform,
15
+ with --uix-arrive-j as its index among its siblings
16
+ .uix-arrive__slide a full-width fill that slides in from its start edge to its own transform
17
+ Depends only on --uix-* tokens. */
18
+ @layer uix.components {
19
+ .uix-arrive { --uix-arrive-i: 0; }
20
+
21
+ .uix-arrive[data-uix-arrive="play"] .uix-arrive__item {
22
+ animation: uix-arrive-rise var(--uix-dur-arrive) var(--uix-ease-out) calc(var(--uix-arrive-i, 0) * var(--uix-stagger-arrive)) both;
23
+ }
24
+ .uix-arrive[data-uix-arrive="play"] .uix-arrive__trace {
25
+ stroke-dasharray: 1;
26
+ animation: uix-arrive-trace var(--uix-dur-arrive-trace) var(--uix-ease-out) calc(var(--uix-arrive-i, 0) * var(--uix-stagger-arrive) + var(--uix-delay-arrive-trace)) both;
27
+ }
28
+ .uix-arrive[data-uix-arrive="play"] .uix-arrive__grow {
29
+ transform-origin: left center;
30
+ animation: uix-arrive-grow var(--uix-dur-arrive-grow) var(--uix-ease-out) calc(var(--uix-arrive-i, 0) * var(--uix-stagger-arrive) + var(--uix-delay-arrive-trace) + var(--uix-arrive-j, 0) * var(--uix-stagger-arrive-grow)) both;
31
+ }
32
+ .uix-arrive[data-uix-arrive="play"] .uix-arrive__grow:dir(rtl) { transform-origin: right center; }
33
+ .uix-arrive[data-uix-arrive="play"] .uix-arrive__slide {
34
+ animation: uix-arrive-slide var(--uix-dur-arrive-grow) var(--uix-ease-out) calc(var(--uix-arrive-i, 0) * var(--uix-stagger-arrive) + var(--uix-delay-arrive-trace)) both;
35
+ }
36
+ .uix-arrive[data-uix-arrive="play"] .uix-arrive__slide:dir(rtl) { animation-name: uix-arrive-slide-rtl; }
37
+
38
+ @keyframes uix-arrive-rise {
39
+ from { opacity: 0; transform: translateY(var(--uix-arrive-rise)); }
40
+ to { opacity: 1; transform: none; }
41
+ }
42
+ @keyframes uix-arrive-trace { from { stroke-dashoffset: 1; } to { stroke-dashoffset: 0; } }
43
+ /* no `to`: each mark grows or slides to its own resting transform (a bar's scaleX(--val)) */
44
+ @keyframes uix-arrive-grow { from { transform: scaleX(0); } }
45
+ @keyframes uix-arrive-slide { from { transform: translateX(-100%); } }
46
+ @keyframes uix-arrive-slide-rtl { from { transform: translateX(100%); } }
47
+ @keyframes uix-arrive-fade { from { opacity: 0; } to { opacity: 1; } }
48
+
49
+ /* !important: the reduced-motion policy (motion.css) ends every keyframe animation at once; a
50
+ layered !important wins over it, so the items still fade (feedback, not movement). Marks do
51
+ not draw in: they are simply there. The in-app preference gets the same. */
52
+ @media (prefers-reduced-motion: reduce) {
53
+ .uix-arrive[data-uix-arrive="play"] .uix-arrive__item { animation: uix-arrive-fade var(--uix-dur) var(--uix-ease-out) both !important; }
54
+ .uix-arrive[data-uix-arrive="play"] .uix-arrive__trace,
55
+ .uix-arrive[data-uix-arrive="play"] .uix-arrive__grow,
56
+ .uix-arrive[data-uix-arrive="play"] .uix-arrive__grow:dir(rtl),
57
+ .uix-arrive[data-uix-arrive="play"] .uix-arrive__slide,
58
+ .uix-arrive[data-uix-arrive="play"] .uix-arrive__slide:dir(rtl) { animation: none !important; stroke-dasharray: none; }
59
+ }
60
+ @media (prefers-reduced-motion: no-preference) {
61
+ :root[data-motion="reduce"] .uix-arrive[data-uix-arrive="play"] .uix-arrive__item { animation: uix-arrive-fade var(--uix-dur) var(--uix-ease-out) both !important; }
62
+ :root[data-motion="reduce"] .uix-arrive[data-uix-arrive="play"] :is(.uix-arrive__trace, .uix-arrive__grow, .uix-arrive__slide) { animation: none !important; stroke-dasharray: none; }
63
+ }
64
+ @media print {
65
+ .uix-arrive[data-uix-arrive="play"] :is(.uix-arrive__item, .uix-arrive__trace, .uix-arrive__grow, .uix-arrive__slide) { animation: none; }
66
+ }
67
+ }
@@ -0,0 +1,87 @@
1
+ /* uix chart card — the glance kit (calm kit 2.56): one card asks one question and answers it with
2
+ a number before it shows one chart. Also the small marks a glance card holds: a bar list, a
3
+ service status strip and a sparkline. For analysis with reading time use .uix-chart.
4
+ Depends only on --uix-* tokens. */
5
+ @layer uix.components {
6
+ .uix-chart-card {
7
+ display: flex; flex-direction: column; gap: var(--uix-space-2); min-width: 0;
8
+ padding: var(--uix-space-4) var(--uix-space-5);
9
+ border: 1px solid var(--uix-border); border-radius: var(--uix-radius-lg);
10
+ background: var(--uix-surface); box-shadow: var(--uix-shadow-sm); color: var(--uix-text);
11
+ }
12
+ .uix-chart-card__head { display: flex; align-items: baseline; justify-content: space-between; gap: var(--uix-space-3); min-width: 0; }
13
+ /* the title is the question, in the quiet voice; the answer under it is the loud line */
14
+ .uix-chart-card__question {
15
+ margin: 0; min-width: 0; color: var(--uix-text-hushed);
16
+ font-size: var(--uix-text-meta); font-weight: 500; line-height: var(--uix-leading-meta);
17
+ }
18
+ .uix-chart-card__action { flex: none; font-size: var(--uix-text-meta); }
19
+ .uix-chart-card__answer {
20
+ display: flex; flex-wrap: wrap; align-items: baseline; gap: 0 var(--uix-space-2); margin: 0; min-width: 0;
21
+ font-size: var(--uix-text-h3); font-weight: 600; line-height: var(--uix-leading-h3); overflow-wrap: anywhere;
22
+ }
23
+ .uix-chart-card__headline {
24
+ font-size: var(--uix-text-h2); font-weight: 650; line-height: var(--uix-leading-h2);
25
+ letter-spacing: var(--uix-tracking-tight); font-variant-numeric: tabular-nums;
26
+ }
27
+ .uix-chart-card__plot { position: relative; min-width: 0; margin-top: var(--uix-space-1); }
28
+ .uix-chart-card__note { margin: 0; color: var(--uix-text-muted); font-size: var(--uix-text-meta); line-height: var(--uix-leading-meta); }
29
+ /* an empty card is one sentence (proposal rule 7); it shrinks to fit it */
30
+ .uix-chart-card__empty { margin: 0; padding-block: var(--uix-space-2); color: var(--uix-text-muted); font-size: var(--uix-text-body); }
31
+
32
+ /* a Chart inside the card drops its own card chrome; the plot keeps its height */
33
+ .uix-chart-card .uix-chart { padding: 0; border: 0; border-radius: 0; background: transparent; box-shadow: none; overflow: visible; }
34
+ /* axis digits in the UI face with tabular figures (ECharts' SVG text takes CSS) */
35
+ .uix-chart-card svg text { font-variant-numeric: tabular-nums; }
36
+
37
+ /* the glance tooltip: dark ink on light pages and light ink on dark ones, small, no border */
38
+ .uix-glance-tooltip { font-size: var(--uix-text-meta); line-height: var(--uix-leading-meta); font-variant-numeric: tabular-nums; }
39
+ .uix-glance-tooltip__title { opacity: .75; }
40
+ .uix-glance-tooltip__row { display: flex; align-items: center; gap: var(--uix-space-2); white-space: nowrap; }
41
+ .uix-glance-tooltip__swatch { width: 8px; height: 8px; flex: none; border-radius: var(--uix-radius-xs); background: var(--swatch); }
42
+ .uix-glance-tooltip__value { margin-inline-start: auto; font-weight: 650; padding-inline-start: var(--uix-space-3); }
43
+
44
+ /* ── bar list: one row per bucket, label | bar | value ─────────────────────────────────── */
45
+ .uix-bar-list { display: flex; flex-direction: column; gap: var(--uix-space-2); margin: 0; padding: 0; list-style: none; }
46
+ .uix-bar-list__row {
47
+ display: grid; grid-template-columns: minmax(4rem, max-content) minmax(0, 1fr) minmax(2rem, max-content);
48
+ align-items: center; gap: var(--uix-space-3); font-size: var(--uix-text-meta);
49
+ }
50
+ .uix-bar-list__label { min-width: 0; color: var(--uix-text-hushed); overflow-wrap: anywhere; }
51
+ .uix-bar-list__track { display: block; height: 8px; border-radius: var(--uix-radius-pill); background: var(--uix-bg-active); overflow: hidden; }
52
+ .uix-bar-list__bar {
53
+ display: block; height: 100%; border-radius: inherit; background: var(--uix-chart-series);
54
+ transform-origin: left center; transform: scaleX(var(--val, 0));
55
+ transition: transform var(--uix-dur) var(--uix-ease-out);
56
+ }
57
+ .uix-bar-list__bar:dir(rtl) { transform-origin: right center; }
58
+ .uix-bar-list__row[data-tone="comparison"] .uix-bar-list__bar { background: var(--uix-chart-comparison); }
59
+ .uix-bar-list__row[data-tone="warning"] .uix-bar-list__bar { background: var(--uix-warning-solid); }
60
+ .uix-bar-list__value { text-align: end; font-weight: 600; font-variant-numeric: tabular-nums; }
61
+
62
+ /* ── status strip: one cell per service, ok / degraded / down / unknown ───────────────── */
63
+ .uix-status-strip { display: flex; flex-direction: column; gap: var(--uix-space-2); min-width: 0; }
64
+ .uix-status-strip__cells { display: flex; gap: var(--uix-space-1); height: 8px; }
65
+ .uix-status-strip__cell { flex: 1 1 0; min-width: 2px; border-radius: var(--uix-radius-xs); background: var(--uix-neutral-solid); }
66
+ .uix-status-strip__cell[data-tone="ok"] { background: var(--uix-success-solid); }
67
+ .uix-status-strip__cell[data-tone="warning"] { background: var(--uix-warning-solid); }
68
+ .uix-status-strip__cell[data-tone="critical"] { background: var(--uix-danger-solid); }
69
+ .uix-status-strip__list { display: flex; flex-direction: column; gap: var(--uix-space-2); margin: var(--uix-space-1) 0 0; padding: 0; list-style: none; font-size: var(--uix-text-meta); }
70
+ .uix-status-strip__item { display: flex; align-items: baseline; gap: var(--uix-space-3); min-width: 0; }
71
+ .uix-status-strip__name { min-width: 0; overflow-wrap: anywhere; }
72
+ .uix-status-strip__state { margin-inline-start: auto; flex: none; color: var(--uix-text-muted); }
73
+
74
+ /* ── sparkline: an ink-grey line and an endpoint dot ───────────────────────────────────── */
75
+ .uix-sparkline { display: inline-block; flex: none; vertical-align: middle; overflow: visible; }
76
+ .uix-sparkline__line { fill: none; stroke: var(--uix-text-muted); stroke-width: 1.5; stroke-linecap: round; stroke-linejoin: round; }
77
+ .uix-sparkline--series .uix-sparkline__line { stroke: var(--uix-chart-series); }
78
+ .uix-sparkline__end { fill: var(--uix-text); }
79
+ .uix-sparkline--series .uix-sparkline__end { fill: var(--uix-chart-series); }
80
+
81
+ @media (forced-colors: active) {
82
+ .uix-bar-list__bar, .uix-status-strip__cell { background: CanvasText; }
83
+ .uix-status-strip__cell[data-tone="ok"] { background: GrayText; }
84
+ .uix-sparkline__line { stroke: CanvasText; }
85
+ .uix-sparkline__end { fill: CanvasText; }
86
+ }
87
+ }