@nocoo/basalt 3.1.0 → 3.2.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (133) hide show
  1. package/ai/DESIGN.md +128 -55
  2. package/ai/INTEGRATION.md +9 -9
  3. package/ai/USAGE.md +1 -1
  4. package/ai/registry.json +166 -124
  5. package/dist/charts/config.d.ts +1 -1
  6. package/dist/charts/config.js +1 -1
  7. package/dist/charts/config.js.map +1 -1
  8. package/dist/charts/frame.js +2 -2
  9. package/dist/charts/frame.js.map +1 -1
  10. package/dist/charts/heatmap-calendar.js +4 -4
  11. package/dist/charts/heatmap-calendar.js.map +1 -1
  12. package/dist/charts/heatmap-matrix.js +5 -5
  13. package/dist/charts/heatmap-matrix.js.map +1 -1
  14. package/dist/charts/sparkline.js +1 -1
  15. package/dist/charts/sparkline.js.map +1 -1
  16. package/dist/charts/stat-card.js +1 -1
  17. package/dist/charts/stat-card.js.map +1 -1
  18. package/dist/components/alert-dialog.js +4 -4
  19. package/dist/components/alert-dialog.js.map +1 -1
  20. package/dist/components/app-header.js +1 -1
  21. package/dist/components/app-header.js.map +1 -1
  22. package/dist/components/app-shell.js +1 -1
  23. package/dist/components/app-shell.js.map +1 -1
  24. package/dist/components/approval-card.js +5 -6
  25. package/dist/components/approval-card.js.map +1 -1
  26. package/dist/components/avatar.js +1 -1
  27. package/dist/components/avatar.js.map +1 -1
  28. package/dist/components/chat-bubble.js +1 -1
  29. package/dist/components/chat-bubble.js.map +1 -1
  30. package/dist/components/chat-composer.js +1 -1
  31. package/dist/components/chat-composer.js.map +1 -1
  32. package/dist/components/chat-header.js +1 -1
  33. package/dist/components/chat-header.js.map +1 -1
  34. package/dist/components/chat-inbox.js +1 -1
  35. package/dist/components/chat-inbox.js.map +1 -1
  36. package/dist/components/chat-markdown.js +1 -1
  37. package/dist/components/chat-markdown.js.map +1 -1
  38. package/dist/components/chat-message.js +2 -2
  39. package/dist/components/chat-message.js.map +1 -1
  40. package/dist/components/code.js +5 -4
  41. package/dist/components/code.js.map +1 -1
  42. package/dist/components/command-palette.js +2 -2
  43. package/dist/components/command-palette.js.map +1 -1
  44. package/dist/components/context-cards.js +6 -6
  45. package/dist/components/context-cards.js.map +1 -1
  46. package/dist/components/context-menu.js +1 -1
  47. package/dist/components/context-menu.js.map +1 -1
  48. package/dist/components/data-table.js +127 -124
  49. package/dist/components/data-table.js.map +1 -1
  50. package/dist/components/dialog.js +2 -2
  51. package/dist/components/dialog.js.map +1 -1
  52. package/dist/components/diff-table.js +3 -3
  53. package/dist/components/diff-table.js.map +1 -1
  54. package/dist/components/dropdown-menu.js +1 -1
  55. package/dist/components/dropdown-menu.js.map +1 -1
  56. package/dist/components/editable-nav-item.js +2 -2
  57. package/dist/components/editable-nav-item.js.map +1 -1
  58. package/dist/components/file-dropzone.js +1 -1
  59. package/dist/components/file-dropzone.js.map +1 -1
  60. package/dist/components/filter-bar.js +1 -1
  61. package/dist/components/filter-bar.js.map +1 -1
  62. package/dist/components/icon-picker.js +3 -3
  63. package/dist/components/icon-picker.js.map +1 -1
  64. package/dist/components/inline-editable.js +1 -1
  65. package/dist/components/inline-editable.js.map +1 -1
  66. package/dist/components/input-area.js +1 -1
  67. package/dist/components/input-area.js.map +1 -1
  68. package/dist/components/input-group.js +2 -2
  69. package/dist/components/input-group.js.map +1 -1
  70. package/dist/components/layer-card.d.ts +6 -4
  71. package/dist/components/layer-card.js +61 -71
  72. package/dist/components/layer-card.js.map +1 -1
  73. package/dist/components/link.js +1 -1
  74. package/dist/components/link.js.map +1 -1
  75. package/dist/components/loader.js +1 -1
  76. package/dist/components/loader.js.map +1 -1
  77. package/dist/components/menu-bar.js +2 -2
  78. package/dist/components/menu-bar.js.map +1 -1
  79. package/dist/components/multi-select.js +1 -1
  80. package/dist/components/multi-select.js.map +1 -1
  81. package/dist/components/overlay.d.ts +3 -6
  82. package/dist/components/overlay.js +3 -3
  83. package/dist/components/overlay.js.map +1 -1
  84. package/dist/components/page-header.d.ts +2 -2
  85. package/dist/components/page-header.js +7 -7
  86. package/dist/components/page-header.js.map +1 -1
  87. package/dist/components/recommendation-card.js +2 -2
  88. package/dist/components/recommendation-card.js.map +1 -1
  89. package/dist/components/responsive-master-detail.js +2 -2
  90. package/dist/components/responsive-master-detail.js.map +1 -1
  91. package/dist/components/scroll-area.js +1 -1
  92. package/dist/components/scroll-area.js.map +1 -1
  93. package/dist/components/section-rule.js +1 -1
  94. package/dist/components/section-rule.js.map +1 -1
  95. package/dist/components/segment-control.js +1 -1
  96. package/dist/components/segment-control.js.map +1 -1
  97. package/dist/components/select.js +2 -2
  98. package/dist/components/select.js.map +1 -1
  99. package/dist/components/sensitive-input.js +1 -1
  100. package/dist/components/sensitive-input.js.map +1 -1
  101. package/dist/components/sheet.js +3 -3
  102. package/dist/components/sheet.js.map +1 -1
  103. package/dist/components/sidebar.js +3 -3
  104. package/dist/components/sidebar.js.map +1 -1
  105. package/dist/components/skeleton-line.js +1 -1
  106. package/dist/components/skeleton-line.js.map +1 -1
  107. package/dist/components/stat-strip.js +1 -1
  108. package/dist/components/stat-strip.js.map +1 -1
  109. package/dist/components/table.d.ts +2 -0
  110. package/dist/components/table.js +10 -12
  111. package/dist/components/table.js.map +1 -1
  112. package/dist/components/tabs.js +2 -2
  113. package/dist/components/tabs.js.map +1 -1
  114. package/dist/components/tag-badge.js +1 -1
  115. package/dist/components/tag-badge.js.map +1 -1
  116. package/dist/components/tag-color-picker.js +2 -2
  117. package/dist/components/tag-color-picker.js.map +1 -1
  118. package/dist/components/text.js +2 -2
  119. package/dist/components/text.js.map +1 -1
  120. package/dist/components/thinking.js +1 -1
  121. package/dist/components/thinking.js.map +1 -1
  122. package/dist/components/toast.js +1 -1
  123. package/dist/components/toast.js.map +1 -1
  124. package/dist/components/tool-chips.js +2 -2
  125. package/dist/components/tool-chips.js.map +1 -1
  126. package/dist/components/toolbar.js +8 -8
  127. package/dist/components/toolbar.js.map +1 -1
  128. package/dist/styles/base.css +71 -0
  129. package/dist/styles/standalone.css +187 -168
  130. package/dist/styles/tailwind.css +9 -2
  131. package/dist/styles/tokens.css +86 -40
  132. package/dist/utils/navigation.d.ts +1 -1
  133. package/package.json +1 -1
@@ -27,15 +27,18 @@
27
27
  --basalt-space-md: 0.375rem;
28
28
  --basalt-space-lg: 0.5rem;
29
29
  --basalt-space-default: var(--basalt-space-lg);
30
- --basalt-text-xs: 0.6875rem;
30
+ --basalt-focus-width: 0.0625rem;
31
+ --basalt-focus-offset: 0.125rem;
32
+ --basalt-focus-clearance: var(--basalt-space-sm);
33
+ --basalt-text-xs: 0.75rem;
31
34
  --basalt-text-sm: 0.75rem;
32
- --basalt-text-code: 0.8125rem;
35
+ --basalt-text-code: 0.875rem;
33
36
  --basalt-text-base: 0.875rem;
34
- --basalt-text-lg: 1rem;
37
+ --basalt-text-lg: 1.125rem;
35
38
  --basalt-text-xl: 1.125rem;
36
- --basalt-text-2xl: 1.25rem;
39
+ --basalt-text-2xl: 1.125rem;
37
40
  --basalt-text-3xl: 1.5rem;
38
- --basalt-text-4xl: 1.875rem;
41
+ --basalt-text-4xl: 1.5rem;
39
42
  --basalt-text-5xl: 2.25rem;
40
43
  --basalt-text-6xl: 3rem;
41
44
  --basalt-text-7xl: 3.75rem;
@@ -48,7 +51,7 @@
48
51
  --basalt-leading-inline: calc(16 / 12);
49
52
  --basalt-leading-action: calc(24 / 14);
50
53
  --basalt-leading-action-sm: 1.5;
51
- --basalt-leading-action-lg: 1.375;
54
+ --basalt-leading-action-lg: calc(22 / 14);
52
55
  --basalt-leading-banner: calc(22 / 14);
53
56
  --basalt-radius-sm: 0.25rem;
54
57
  --basalt-radius-md: 0.5rem;
@@ -104,15 +107,15 @@
104
107
  --basalt-size-icon-display: 1.5rem;
105
108
  --basalt-size-touch: 2.75rem;
106
109
  --basalt-size-menu-row: var(--basalt-size-control);
107
- --basalt-size-table-row: 2.25rem;
110
+ --basalt-size-table-row: 2.5rem;
108
111
  --basalt-size-check: 1rem;
109
112
  --basalt-size-check-sm: 0.75rem;
110
113
  --basalt-size-textarea: 5rem;
111
114
  --basalt-size-textarea-sm: 4rem;
112
115
  --basalt-size-textarea-lg: 6rem;
113
- --basalt-space-control-x: var(--basalt-space-lg);
114
- --basalt-space-control-x-sm: var(--basalt-space-md);
115
- --basalt-space-control-x-lg: var(--basalt-space-lg);
116
+ --basalt-space-control-x: 0.75rem;
117
+ --basalt-space-control-x-sm: 0.625rem;
118
+ --basalt-space-control-x-lg: 1rem;
116
119
  --basalt-space-control-y: var(--basalt-space-sm);
117
120
  --basalt-space-control-gap: var(--basalt-space-lg);
118
121
  --basalt-space-menu-inset: var(--basalt-space-lg);
@@ -127,8 +130,8 @@
127
130
  --basalt-space-layout-lg: 1.5rem;
128
131
  --basalt-space-layout-xl: 2rem;
129
132
  --basalt-space-field-gap: var(--basalt-space-lg);
130
- --basalt-space-table-x: var(--basalt-space-lg);
131
- --basalt-space-table-y: var(--basalt-space-md);
133
+ --basalt-space-table-x: 0.75rem;
134
+ --basalt-space-table-y: var(--basalt-space-lg);
132
135
  --basalt-space-overlay: var(--basalt-space-lg);
133
136
  --basalt-space-panel-x: var(--basalt-space-card);
134
137
  --basalt-space-panel-y: var(--basalt-space-card-sm);
@@ -144,7 +147,7 @@
144
147
  );
145
148
  --basalt-size-action: var(--basalt-size-control);
146
149
  --basalt-space-nav-inset: var(--basalt-space-lg);
147
- --basalt-space-nav-gap: var(--basalt-space-xs);
150
+ --basalt-space-nav-gap: var(--basalt-space-sm);
148
151
  --basalt-size-rail: 4.25rem;
149
152
  }
150
153
  :root, .light, [data-mode="light"] {
@@ -178,16 +181,15 @@
178
181
  --basalt-input: 220 13% 88%;
179
182
  --basalt-ring: var(--basalt-primary);
180
183
  --basalt-control-fill: hsl(var(--basalt-secondary));
184
+ --basalt-surface-current: var(--basalt-card);
185
+ --basalt-surface-elevated: var(--basalt-secondary);
186
+ --basalt-hover-weight: 18%;
181
187
  --basalt-hover: hsl(var(--basalt-primary));
182
188
  @supports (color: color-mix(in lab, red, red)) {
183
- --basalt-hover: color-mix(in srgb, hsl(var(--basalt-primary)) 9.6%, hsl(var(--basalt-popover)));
184
- }
185
- --basalt-hover-end: hsl(var(--basalt-primary));
186
- @supports (color: color-mix(in lab, red, red)) {
187
- --basalt-hover-end: color-mix(
189
+ --basalt-hover: color-mix(
188
190
  in srgb,
189
- hsl(var(--basalt-primary)) 4.8%,
190
- hsl(var(--basalt-popover))
191
+ hsl(var(--basalt-primary)) 18%,
192
+ hsl(var(--basalt-surface-elevated))
191
193
  );
192
194
  }
193
195
  --basalt-selected: 0 0% 100%;
@@ -228,13 +230,13 @@
228
230
  --basalt-chart-yellow: 49 100% 69%;
229
231
  --basalt-chart-pearl: 215 12% 48%;
230
232
  --basalt-chart-1: var(--basalt-chart-blue);
231
- --basalt-chart-2: var(--basalt-chart-blue);
232
- --basalt-chart-3: var(--basalt-chart-green);
233
- --basalt-chart-4: var(--basalt-chart-green);
233
+ --basalt-chart-2: var(--basalt-chart-pink);
234
+ --basalt-chart-3: 182 38% 48%;
235
+ --basalt-chart-4: 280 32% 62%;
234
236
  --basalt-chart-5: var(--basalt-chart-green);
235
- --basalt-chart-6: var(--basalt-chart-green);
237
+ --basalt-chart-6: 27 54% 62%;
236
238
  --basalt-chart-7: var(--basalt-chart-yellow);
237
- --basalt-chart-8: var(--basalt-chart-yellow);
239
+ --basalt-chart-8: 237 36% 62%;
238
240
  --basalt-chart-9: var(--basalt-chart-pink);
239
241
  --basalt-chart-10: var(--basalt-chart-pink);
240
242
  --basalt-chart-11: var(--basalt-chart-pink);
@@ -263,6 +265,7 @@
263
265
  --basalt-accent-10: 280 53% 71%;
264
266
  --basalt-accent-11: 237 66% 69%;
265
267
  --basalt-accent-12: 210 20% 87%;
268
+ --basalt-success: var(--basalt-tag-success-foreground);
266
269
  --basalt-badge-green: 113 60% 30%;
267
270
  --basalt-badge-green-foreground: 0 0% 100%;
268
271
  --basalt-badge-teal: 182 62% 30%;
@@ -315,6 +318,7 @@
315
318
  --basalt-danger-tint: 0 40% 16%;
316
319
  --basalt-info-foreground: 0 0% 10%;
317
320
  --basalt-warning-foreground: 0 0% 10%;
321
+ --basalt-success: var(--basalt-tag-success-foreground);
318
322
  --basalt-badge-green: 113 55% 62%;
319
323
  --basalt-badge-green-foreground: 0 0% 10%;
320
324
  --basalt-badge-teal: var(--basalt-accent-3);
@@ -325,16 +329,15 @@
325
329
  --basalt-input: 0 0% 18%;
326
330
  --basalt-ring: var(--basalt-primary);
327
331
  --basalt-control-fill: hsl(var(--basalt-secondary));
332
+ --basalt-surface-current: var(--basalt-card);
333
+ --basalt-surface-elevated: var(--basalt-secondary);
334
+ --basalt-hover-weight: 18%;
328
335
  --basalt-hover: hsl(var(--basalt-primary));
329
336
  @supports (color: color-mix(in lab, red, red)) {
330
- --basalt-hover: color-mix(in srgb, hsl(var(--basalt-primary)) 16%, hsl(var(--basalt-popover)));
331
- }
332
- --basalt-hover-end: hsl(var(--basalt-primary));
333
- @supports (color: color-mix(in lab, red, red)) {
334
- --basalt-hover-end: color-mix(
337
+ --basalt-hover: color-mix(
335
338
  in srgb,
336
- hsl(var(--basalt-primary)) 9.6%,
337
- hsl(var(--basalt-popover))
339
+ hsl(var(--basalt-primary)) 18%,
340
+ hsl(var(--basalt-surface-elevated))
338
341
  );
339
342
  }
340
343
  --basalt-selected: 0 0% 22%;
@@ -362,13 +365,13 @@
362
365
  --basalt-chart-yellow: 49 100% 73%;
363
366
  --basalt-chart-pearl: 210 20% 86%;
364
367
  --basalt-chart-1: var(--basalt-chart-blue);
365
- --basalt-chart-2: var(--basalt-chart-blue);
366
- --basalt-chart-3: var(--basalt-chart-green);
367
- --basalt-chart-4: var(--basalt-chart-green);
368
+ --basalt-chart-2: var(--basalt-chart-pink);
369
+ --basalt-chart-3: 182 38% 64%;
370
+ --basalt-chart-4: 280 32% 74%;
368
371
  --basalt-chart-5: var(--basalt-chart-green);
369
- --basalt-chart-6: var(--basalt-chart-green);
372
+ --basalt-chart-6: 27 54% 72%;
370
373
  --basalt-chart-7: var(--basalt-chart-yellow);
371
- --basalt-chart-8: var(--basalt-chart-yellow);
374
+ --basalt-chart-8: 237 36% 74%;
372
375
  --basalt-chart-9: var(--basalt-chart-pink);
373
376
  --basalt-chart-10: var(--basalt-chart-pink);
374
377
  --basalt-chart-11: var(--basalt-chart-pink);
@@ -418,12 +421,24 @@
418
421
  }
419
422
  [data-basalt-surface-root] {
420
423
  background: hsl(var(--basalt-card));
421
- --basalt-control-fill: hsl(var(--basalt-card));
424
+ --basalt-surface-current: var(--basalt-card);
425
+ --basalt-surface-elevated: var(--basalt-secondary);
426
+ --basalt-control-fill: hsl(var(--basalt-secondary));
422
427
  --basalt-zebra-fill: hsl(var(--basalt-secondary));
423
428
  }
424
429
  [data-basalt-surface-root] [data-basalt-surface] {
425
430
  background: hsl(var(--basalt-secondary));
426
- --basalt-control-fill: hsl(var(--basalt-secondary));
431
+ --basalt-surface-current: var(--basalt-secondary);
432
+ --basalt-surface-elevated: var(--basalt-bright);
433
+ --basalt-control-fill: hsl(var(--basalt-bright));
434
+ --basalt-hover: hsl(var(--basalt-primary));
435
+ @supports (color: color-mix(in lab, red, red)) {
436
+ --basalt-hover: color-mix(
437
+ in srgb,
438
+ hsl(var(--basalt-primary)) var(--basalt-hover-weight),
439
+ hsl(var(--basalt-surface-elevated))
440
+ );
441
+ }
427
442
  --basalt-primary-hover: hsl(var(--basalt-primary));
428
443
  @supports (color: color-mix(in lab, red, red)) {
429
444
  --basalt-primary-hover: color-mix(
@@ -444,6 +459,7 @@
444
459
  }
445
460
  [data-basalt-surface-root] [data-basalt-surface] [data-basalt-surface] {
446
461
  background: hsl(var(--basalt-bright));
462
+ --basalt-surface-current: var(--basalt-bright);
447
463
  --basalt-control-fill: hsl(var(--basalt-bright));
448
464
  --basalt-zebra-fill: transparent;
449
465
  }
@@ -454,12 +470,31 @@
454
470
  }
455
471
  [data-basalt-surface]:not([data-basalt-surface-root] *):not([data-basalt-surface] *) {
456
472
  background: hsl(var(--basalt-card));
457
- --basalt-control-fill: hsl(var(--basalt-card));
473
+ --basalt-surface-current: var(--basalt-card);
474
+ --basalt-surface-elevated: var(--basalt-bright);
475
+ --basalt-control-fill: hsl(var(--basalt-bright));
476
+ --basalt-hover: hsl(var(--basalt-primary));
477
+ @supports (color: color-mix(in lab, red, red)) {
478
+ --basalt-hover: color-mix(
479
+ in srgb,
480
+ hsl(var(--basalt-primary)) var(--basalt-hover-weight),
481
+ hsl(var(--basalt-surface-elevated))
482
+ );
483
+ }
458
484
  --basalt-zebra-fill: hsl(var(--basalt-secondary));
459
485
  }
460
486
  [data-basalt-surface]:not([data-basalt-surface-root] *) [data-basalt-surface] {
461
487
  background: hsl(var(--basalt-secondary));
462
- --basalt-control-fill: hsl(var(--basalt-secondary));
488
+ --basalt-surface-current: var(--basalt-secondary);
489
+ --basalt-control-fill: hsl(var(--basalt-bright));
490
+ --basalt-hover: hsl(var(--basalt-primary));
491
+ @supports (color: color-mix(in lab, red, red)) {
492
+ --basalt-hover: color-mix(
493
+ in srgb,
494
+ hsl(var(--basalt-primary)) var(--basalt-hover-weight),
495
+ hsl(var(--basalt-surface-elevated))
496
+ );
497
+ }
463
498
  --basalt-primary-hover: hsl(var(--basalt-primary));
464
499
  @supports (color: color-mix(in lab, red, red)) {
465
500
  --basalt-primary-hover: color-mix(
@@ -480,6 +515,7 @@
480
515
  }
481
516
  [data-basalt-surface]:not([data-basalt-surface-root] *) [data-basalt-surface] [data-basalt-surface] {
482
517
  background: hsl(var(--basalt-bright));
518
+ --basalt-surface-current: var(--basalt-bright);
483
519
  --basalt-control-fill: hsl(var(--basalt-bright));
484
520
  --basalt-zebra-fill: transparent;
485
521
  }
@@ -488,6 +524,9 @@
488
524
  --basalt-control-fill: hsl(var(--basalt-bright));
489
525
  --basalt-zebra-fill: transparent;
490
526
  }
527
+ [data-basalt-table] tbody tr:not(:last-child), [data-basalt-table] tbody tr:not(:last-child) > td {
528
+ border-bottom: 1px solid hsl(var(--basalt-border) / 0.5);
529
+ }
491
530
  [data-basalt-table] tbody tr[aria-selected="true"] td {
492
531
  background: hsl(var(--basalt-selected));
493
532
  color: hsl(var(--basalt-selected-foreground));
@@ -495,8 +534,14 @@
495
534
  [data-basalt-table] tbody tr:hover:not([aria-selected="true"]) td {
496
535
  background: var(--basalt-hover);
497
536
  }
498
- [data-basalt-table] tbody tr:nth-child(even):not([aria-selected="true"]):not(:hover) td {
499
- background: var(--basalt-zebra-fill);
537
+ [data-basalt-table][data-striped="true"] tbody tr:nth-child(even) {
538
+ background-color: hsl(var(--basalt-surface-current));
539
+ }
540
+ [data-basalt-table-container][data-edge="attached"] :where(th, td):first-child {
541
+ padding-inline-start: var(--basalt-space-card);
542
+ }
543
+ [data-basalt-table-container][data-edge="attached"] :where(th, td):last-child {
544
+ padding-inline-end: var(--basalt-space-card);
500
545
  }
501
546
  [data-basalt-table] tbody tr[data-diff-change="remove"][data-included="true"][aria-selected="true"] td {
502
547
  background: hsl(var(--basalt-danger-tint));
@@ -531,7 +576,7 @@
531
576
  .basalt-action-lg {
532
577
  padding-block: var(--basalt-space-lg);
533
578
  padding-inline: var(--basalt-space-control-x-lg);
534
- font-size: var(--basalt-text-lg);
579
+ font-size: var(--basalt-text-base);
535
580
  line-height: var(--basalt-leading-action-lg);
536
581
  }
537
582
  .basalt-action-icon {
@@ -622,7 +667,7 @@
622
667
  height: var(--basalt-hover-height, 0px);
623
668
  transform: translate(var(--basalt-hover-x, 0px), var(--basalt-hover-y, 0px));
624
669
  border-radius: var(--basalt-radius-md);
625
- background: linear-gradient(90deg, var(--basalt-hover), var(--basalt-hover-end));
670
+ background: var(--basalt-hover);
626
671
  opacity: 0;
627
672
  transition: none;
628
673
  }
@@ -677,7 +722,7 @@
677
722
  width: var(--basalt-command-width);
678
723
  height: var(--basalt-command-height);
679
724
  border-radius: var(--basalt-radius-md);
680
- background: linear-gradient(90deg, var(--basalt-hover), var(--basalt-hover-end));
725
+ background: var(--basalt-hover);
681
726
  }
682
727
  .basalt-command-list[data-basalt-command-animated="true"]::before {
683
728
  transition: transform var(--basalt-motion-normal) var(--basalt-motion-ease);
@@ -1152,17 +1197,60 @@
1152
1197
  }
1153
1198
  }
1154
1199
  @layer components {
1200
+ :is(.basalt-focus, .basalt-action) {
1201
+ scroll-margin: var(--basalt-focus-clearance);
1202
+ }
1203
+ :is(.basalt-focus, .basalt-action):focus:not(:focus-visible) {
1204
+ outline: none;
1205
+ }
1206
+ :is(.basalt-focus, .basalt-action):focus-visible, .basalt-nav-actions :focus-visible, .basalt-focus-frame:has(> .basalt-focus:focus-visible)::after, .basalt-focus-group:has(:is(input, textarea):focus-visible):not( :has(.basalt-focus-group :focus-visible) ) {
1207
+ outline: var(--basalt-focus-width) solid hsl(var(--basalt-ring));
1208
+ outline-offset: var(--basalt-focus-offset);
1209
+ }
1210
+ .basalt-focus-inset:focus-visible, .basalt-focus-frame:has(> .basalt-focus:focus-visible)::after, .basalt-focus-group.basalt-focus-inset:has(:is(input, textarea):focus-visible):not( :has(.basalt-focus-group :focus-visible) ), .basalt-focus-group .basalt-choice:focus-visible, .basalt-nav-actions .basalt-choice:focus-visible {
1211
+ outline-offset: calc(-1 * var(--basalt-focus-offset));
1212
+ }
1213
+ .basalt-focus-group :is(input, textarea):focus-visible, .basalt-focus-frame > .basalt-focus:focus-visible {
1214
+ outline: none;
1215
+ }
1216
+ .basalt-focus-frame:has(> .basalt-focus:focus-visible)::after {
1217
+ content: "";
1218
+ position: absolute;
1219
+ inset: 0;
1220
+ z-index: 1;
1221
+ border-radius: inherit;
1222
+ pointer-events: none;
1223
+ }
1224
+ @media (forced-colors: active) {
1225
+ :is(.basalt-focus, .basalt-action):focus-visible, .basalt-nav-actions :focus-visible, .basalt-focus-frame:has(> .basalt-focus:focus-visible)::after, .basalt-focus-group:has(:is(input, textarea):focus-visible):not( :has(.basalt-focus-group :focus-visible) ) {
1226
+ outline: 2px solid Highlight;
1227
+ }
1228
+ .basalt-focus-group :is(input, textarea):focus-visible {
1229
+ outline: none;
1230
+ }
1231
+ }
1155
1232
  [data-basalt-header][data-density="compact"] :where([data-basalt-header-leading], [data-basalt-header-actions]) :where(button, a, [role="button"]) {
1156
1233
  min-height: var(--basalt-size-touch);
1157
1234
  min-width: var(--basalt-size-touch);
1158
1235
  }
1159
1236
  }
1237
+ :is(.basalt-focus, .basalt-action):focus-visible, .basalt-nav-actions :focus-visible, .basalt-focus-group:has(:is(input, textarea):focus-visible):not( :has(.basalt-focus-group :focus-visible) ), .basalt-chart :focus-visible {
1238
+ transition: none;
1239
+ }
1240
+ .basalt-focus-swatch:focus-visible {
1241
+ box-shadow: inset 0 0 0 calc(var(--basalt-focus-offset) + var(--basalt-focus-width)) hsl(var(--basalt-background));
1242
+ }
1160
1243
  .basalt-chart .recharts-sector:focus:not(:focus-visible), .basalt-chart .recharts-rectangle:focus:not(:focus-visible), .basalt-chart .recharts-layer:focus:not(:focus-visible), .basalt-chart .recharts-surface:focus:not(:focus-visible) {
1161
1244
  outline: none;
1162
1245
  }
1163
1246
  .basalt-chart :focus-visible {
1164
- outline: 2px solid hsl(var(--basalt-ring));
1165
- outline-offset: 2px;
1247
+ outline: var(--basalt-focus-width) solid hsl(var(--basalt-ring));
1248
+ outline-offset: var(--basalt-focus-offset);
1249
+ }
1250
+ @media (forced-colors: active) {
1251
+ .basalt-chart :focus-visible {
1252
+ outline: 2px solid Highlight;
1253
+ }
1166
1254
  }
1167
1255
  @layer utilities {
1168
1256
  .pointer-events-none {
@@ -1347,6 +1435,9 @@
1347
1435
  .-my-basalt-space-lg {
1348
1436
  margin-block: calc(var(--basalt-space-lg) * -1);
1349
1437
  }
1438
+ .-my-basalt-space-sm {
1439
+ margin-block: calc(var(--basalt-space-sm) * -1);
1440
+ }
1350
1441
  .my-basalt-card {
1351
1442
  margin-block: var(--basalt-space-card);
1352
1443
  }
@@ -1371,9 +1462,6 @@
1371
1462
  .my-basalt-layout-xl {
1372
1463
  margin-block: var(--basalt-space-layout-xl);
1373
1464
  }
1374
- .ms-auto {
1375
- margin-inline-start: auto;
1376
- }
1377
1465
  .mt-auto {
1378
1466
  margin-top: auto;
1379
1467
  }
@@ -1395,6 +1483,9 @@
1395
1483
  .-mr-\[calc\(\(var\(--basalt-size-action\)-var\(--basalt-size-icon\)\)\/2\)\] {
1396
1484
  margin-right: calc(calc((var(--basalt-size-action) - var(--basalt-size-icon)) / 2) * -1);
1397
1485
  }
1486
+ .-mr-basalt-space-sm {
1487
+ margin-right: calc(var(--basalt-space-sm) * -1);
1488
+ }
1398
1489
  .mr-basalt-space-lg {
1399
1490
  margin-right: var(--basalt-space-lg);
1400
1491
  }
@@ -1879,6 +1970,9 @@
1879
1970
  .resize-none {
1880
1971
  resize: none;
1881
1972
  }
1973
+ .scroll-p-basalt-space-sm {
1974
+ scroll-padding: var(--basalt-space-sm);
1975
+ }
1882
1976
  .list-decimal {
1883
1977
  list-style-type: decimal;
1884
1978
  }
@@ -2223,9 +2317,9 @@
2223
2317
  .rounded-none {
2224
2318
  border-radius: 0;
2225
2319
  }
2226
- .rounded-t-basalt-md {
2227
- border-top-left-radius: var(--basalt-radius-md);
2228
- border-top-right-radius: var(--basalt-radius-md);
2320
+ .rounded-t-basalt-lg {
2321
+ border-top-left-radius: var(--basalt-radius-lg);
2322
+ border-top-right-radius: var(--basalt-radius-lg);
2229
2323
  }
2230
2324
  .rounded-l-basalt-md {
2231
2325
  border-top-left-radius: var(--basalt-radius-md);
@@ -2500,10 +2594,10 @@
2500
2594
  --tw-gradient-from: transparent;
2501
2595
  --tw-gradient-stops: var(--tw-gradient-via-stops, var(--tw-gradient-position), var(--tw-gradient-from) var(--tw-gradient-from-position), var(--tw-gradient-to) var(--tw-gradient-to-position));
2502
2596
  }
2503
- .via-basalt-backdrop\/10 {
2504
- --tw-gradient-via: hsl(var(--basalt-backdrop));
2597
+ .via-basalt-foreground\/10 {
2598
+ --tw-gradient-via: hsl(var(--basalt-foreground));
2505
2599
  @supports (color: color-mix(in lab, red, red)) {
2506
- --tw-gradient-via: color-mix(in oklab, hsl(var(--basalt-backdrop)) 10%, transparent);
2600
+ --tw-gradient-via: color-mix(in oklab, hsl(var(--basalt-foreground)) 10%, transparent);
2507
2601
  }
2508
2602
  --tw-gradient-via-stops: var(--tw-gradient-position), var(--tw-gradient-from) var(--tw-gradient-from-position), var(--tw-gradient-via) var(--tw-gradient-via-position), var(--tw-gradient-to) var(--tw-gradient-to-position);
2509
2603
  --tw-gradient-stops: var(--tw-gradient-via-stops);
@@ -2653,9 +2747,6 @@
2653
2747
  .py-basalt-menu-y {
2654
2748
  padding-block: var(--basalt-space-menu-y);
2655
2749
  }
2656
- .py-basalt-nav-inset {
2657
- padding-block: var(--basalt-space-nav-inset);
2658
- }
2659
2750
  .py-basalt-panel-y {
2660
2751
  padding-block: var(--basalt-space-panel-y);
2661
2752
  }
@@ -2689,6 +2780,12 @@
2689
2780
  .pe-basalt-table-x {
2690
2781
  padding-inline-end: var(--basalt-space-table-x);
2691
2782
  }
2783
+ .pt-basalt-card {
2784
+ padding-top: var(--basalt-space-card);
2785
+ }
2786
+ .pt-basalt-card-sm {
2787
+ padding-top: var(--basalt-space-card-sm);
2788
+ }
2692
2789
  .pt-basalt-layout {
2693
2790
  padding-top: var(--basalt-space-layout);
2694
2791
  }
@@ -2710,6 +2807,12 @@
2710
2807
  .pr-basalt-space-sm {
2711
2808
  padding-right: var(--basalt-space-sm);
2712
2809
  }
2810
+ .pb-0 {
2811
+ padding-bottom: 0px;
2812
+ }
2813
+ .pb-basalt-layout {
2814
+ padding-bottom: var(--basalt-space-layout);
2815
+ }
2713
2816
  .pb-basalt-panel-y {
2714
2817
  padding-bottom: var(--basalt-space-panel-y);
2715
2818
  }
@@ -2719,9 +2822,6 @@
2719
2822
  .pb-basalt-space-lg {
2720
2823
  padding-bottom: var(--basalt-space-lg);
2721
2824
  }
2722
- .pb-basalt-space-sm {
2723
- padding-bottom: var(--basalt-space-sm);
2724
- }
2725
2825
  .pl-\[calc\(var\(--basalt-size-icon-lg\)\/2\+var\(--basalt-space-row-gap\)\)\] {
2726
2826
  padding-left: calc(var(--basalt-size-icon-lg) / 2 + var(--basalt-space-row-gap));
2727
2827
  }
@@ -2758,30 +2858,14 @@
2758
2858
  .font-mono {
2759
2859
  font-family: var(--font-mono);
2760
2860
  }
2761
- .text-basalt-2xl {
2762
- font-size: var(--basalt-text-2xl);
2763
- line-height: var(--tw-leading, var(--basalt-leading-body));
2764
- }
2765
2861
  .text-basalt-3xl {
2766
2862
  font-size: var(--basalt-text-3xl);
2767
2863
  line-height: var(--tw-leading, var(--basalt-leading-body));
2768
2864
  }
2769
- .text-basalt-4xl {
2770
- font-size: var(--basalt-text-4xl);
2771
- line-height: var(--tw-leading, var(--basalt-leading-body));
2772
- }
2773
2865
  .text-basalt-base {
2774
2866
  font-size: var(--basalt-text-base);
2775
2867
  line-height: var(--tw-leading, var(--basalt-leading-body));
2776
2868
  }
2777
- .text-basalt-code {
2778
- font-size: var(--basalt-text-code);
2779
- line-height: var(--tw-leading, var(--basalt-leading-body));
2780
- }
2781
- .text-basalt-lg {
2782
- font-size: var(--basalt-text-lg);
2783
- line-height: var(--tw-leading, var(--basalt-leading-body));
2784
- }
2785
2869
  .text-basalt-sm {
2786
2870
  font-size: var(--basalt-text-sm);
2787
2871
  line-height: var(--tw-leading, var(--basalt-leading-body));
@@ -2810,10 +2894,6 @@
2810
2894
  --tw-leading: var(--basalt-line-relaxed);
2811
2895
  line-height: var(--basalt-line-relaxed);
2812
2896
  }
2813
- .leading-\[var\(--basalt-line-row\)\] {
2814
- --tw-leading: var(--basalt-line-row);
2815
- line-height: var(--basalt-line-row);
2816
- }
2817
2897
  .leading-basalt-relaxed {
2818
2898
  --tw-leading: var(--basalt-leading-relaxed);
2819
2899
  line-height: var(--basalt-leading-relaxed);
@@ -2838,6 +2918,10 @@
2838
2918
  --tw-font-weight: var(--font-weight-semibold);
2839
2919
  font-weight: var(--font-weight-semibold);
2840
2920
  }
2921
+ .tracking-\[0\.04em\] {
2922
+ --tw-tracking: 0.04em;
2923
+ letter-spacing: 0.04em;
2924
+ }
2841
2925
  .tracking-tight {
2842
2926
  --tw-tracking: var(--tracking-tight);
2843
2927
  letter-spacing: var(--tracking-tight);
@@ -2944,6 +3028,9 @@
2944
3028
  color: color-mix(in oklab, hsl(var(--basalt-primary-foreground)) 80%, transparent);
2945
3029
  }
2946
3030
  }
3031
+ .text-basalt-success {
3032
+ color: var(--basalt-success);
3033
+ }
2947
3034
  .text-basalt-tag-amber-foreground {
2948
3035
  color: var(--basalt-tag-amber-foreground);
2949
3036
  }
@@ -3208,15 +3295,13 @@
3208
3295
  border-top-right-radius: var(--basalt-radius-md);
3209
3296
  border-bottom-right-radius: var(--basalt-radius-md);
3210
3297
  }
3298
+ .last\:rounded-b-basalt-lg:last-child {
3299
+ border-bottom-right-radius: var(--basalt-radius-lg);
3300
+ border-bottom-left-radius: var(--basalt-radius-lg);
3301
+ }
3211
3302
  .focus-within\:z-2:focus-within {
3212
3303
  z-index: 2;
3213
3304
  }
3214
- .focus-within\:border-basalt-ring:focus-within {
3215
- border-color: hsl(var(--basalt-ring));
3216
- }
3217
- .focus-within\:ring-basalt-ring:focus-within {
3218
- --tw-ring-color: hsl(var(--basalt-ring));
3219
- }
3220
3305
  @media (hover: hover) {
3221
3306
  .hover\:scale-\[1\.03\]:hover {
3222
3307
  scale: 1.03;
@@ -3310,63 +3395,9 @@
3310
3395
  .focus-visible\:z-2:focus-visible {
3311
3396
  z-index: 2;
3312
3397
  }
3313
- .focus-visible\:border-basalt-ring:focus-visible {
3314
- border-color: hsl(var(--basalt-ring));
3315
- }
3316
- .focus-visible\:border-transparent:focus-visible {
3317
- border-color: transparent;
3318
- }
3319
3398
  .focus-visible\:bg-basalt-hover:focus-visible {
3320
3399
  background-color: var(--basalt-hover);
3321
3400
  }
3322
- .focus-visible\:ring-0:focus-visible {
3323
- --tw-ring-shadow: var(--tw-ring-inset,) 0 0 0 calc(0px + var(--tw-ring-offset-width)) var(--tw-ring-color, currentcolor);
3324
- box-shadow: var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow);
3325
- }
3326
- .focus-visible\:ring-1:focus-visible {
3327
- --tw-ring-shadow: var(--tw-ring-inset,) 0 0 0 calc(1px + var(--tw-ring-offset-width)) var(--tw-ring-color, currentcolor);
3328
- box-shadow: var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow);
3329
- }
3330
- .focus-visible\:ring-2:focus-visible {
3331
- --tw-ring-shadow: var(--tw-ring-inset,) 0 0 0 calc(2px + var(--tw-ring-offset-width)) var(--tw-ring-color, currentcolor);
3332
- box-shadow: var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow);
3333
- }
3334
- .focus-visible\:ring-basalt-ring:focus-visible {
3335
- --tw-ring-color: hsl(var(--basalt-ring));
3336
- }
3337
- .focus-visible\:ring-offset-0:focus-visible {
3338
- --tw-ring-offset-width: 0px;
3339
- --tw-ring-offset-shadow: var(--tw-ring-inset,) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);
3340
- }
3341
- .focus-visible\:ring-offset-2:focus-visible {
3342
- --tw-ring-offset-width: 2px;
3343
- --tw-ring-offset-shadow: var(--tw-ring-inset,) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);
3344
- }
3345
- .focus-visible\:ring-offset-basalt-background:focus-visible {
3346
- --tw-ring-offset-color: hsl(var(--basalt-background));
3347
- }
3348
- .focus-visible\:outline-2:focus-visible {
3349
- outline-style: var(--tw-outline-style);
3350
- outline-width: 2px;
3351
- }
3352
- .focus-visible\:-outline-offset-2:focus-visible {
3353
- outline-offset: calc(2px * -1);
3354
- }
3355
- .focus-visible\:outline-offset-1:focus-visible {
3356
- outline-offset: 1px;
3357
- }
3358
- .focus-visible\:outline-offset-2:focus-visible {
3359
- outline-offset: 2px;
3360
- }
3361
- .focus-visible\:outline-basalt-primary:focus-visible {
3362
- outline-color: hsl(var(--basalt-primary));
3363
- }
3364
- .focus-visible\:outline-basalt-ring:focus-visible {
3365
- outline-color: hsl(var(--basalt-ring));
3366
- }
3367
- .focus-visible\:ring-inset:focus-visible {
3368
- --tw-ring-inset: inset;
3369
- }
3370
3401
  .active\:scale-\[0\.98\]:active {
3371
3402
  scale: 0.98;
3372
3403
  }
@@ -3464,9 +3495,6 @@
3464
3495
  .data-\[state\=active\]\:animate-basalt-tab-in[data-state="active"] {
3465
3496
  animation: basalt-tab-in var(--basalt-motion-normal) var(--basalt-motion-ease);
3466
3497
  }
3467
- .data-\[state\=active\]\:bg-basalt-selected[data-state="active"] {
3468
- background-color: hsl(var(--basalt-selected));
3469
- }
3470
3498
  .data-\[state\=active\]\:text-basalt-selected-foreground[data-state="active"] {
3471
3499
  color: hsl(var(--basalt-selected-foreground));
3472
3500
  }
@@ -3484,9 +3512,6 @@
3484
3512
  .data-\[state\=checked\]\:text-basalt-primary-foreground[data-state="checked"] {
3485
3513
  color: hsl(var(--basalt-primary-foreground));
3486
3514
  }
3487
- .data-\[state\=checked\]\:focus-visible\:ring-basalt-primary-foreground[data-state="checked"]:focus-visible {
3488
- --tw-ring-color: hsl(var(--basalt-primary-foreground));
3489
- }
3490
3515
  .data-\[state\=closed\]\:animate-basalt-collapsible-up[data-state="closed"] {
3491
3516
  animation: basalt-collapsible-up var(--basalt-motion-fast)
3492
3517
  var(--basalt-motion-ease);
@@ -3499,6 +3524,10 @@
3499
3524
  animation: basalt-overlay-out var(--basalt-floating-duration-exit)
3500
3525
  var(--basalt-motion-ease-exit) forwards;
3501
3526
  }
3527
+ .data-\[state\=closed\]\:rounded-b-basalt-lg[data-state="closed"] {
3528
+ border-bottom-right-radius: var(--basalt-radius-lg);
3529
+ border-bottom-left-radius: var(--basalt-radius-lg);
3530
+ }
3502
3531
  .data-\[state\=indeterminate\]\:bg-basalt-primary[data-state="indeterminate"] {
3503
3532
  background-color: hsl(var(--basalt-primary));
3504
3533
  }
@@ -3511,9 +3540,6 @@
3511
3540
  .data-\[state\=on\]\:text-basalt-primary-foreground[data-state="on"] {
3512
3541
  color: hsl(var(--basalt-primary-foreground));
3513
3542
  }
3514
- .data-\[state\=on\]\:focus-visible\:ring-basalt-primary-foreground[data-state="on"]:focus-visible {
3515
- --tw-ring-color: hsl(var(--basalt-primary-foreground));
3516
- }
3517
3543
  .data-\[state\=open\]\:animate-basalt-collapsible-down[data-state="open"] {
3518
3544
  animation: basalt-collapsible-down var(--basalt-motion-normal)
3519
3545
  var(--basalt-motion-ease);
@@ -3526,6 +3552,13 @@
3526
3552
  animation: basalt-overlay-in var(--basalt-floating-duration-enter)
3527
3553
  var(--basalt-motion-ease-enter);
3528
3554
  }
3555
+ .data-\[state\=open\]\:border-b[data-state="open"] {
3556
+ border-bottom-style: var(--tw-border-style);
3557
+ border-bottom-width: 1px;
3558
+ }
3559
+ .data-\[state\=open\]\:border-basalt-border[data-state="open"] {
3560
+ border-color: hsl(var(--basalt-border));
3561
+ }
3529
3562
  .data-\[state\=open\]\:bg-basalt-selected[data-state="open"] {
3530
3563
  background-color: hsl(var(--basalt-selected));
3531
3564
  }
@@ -3623,12 +3656,8 @@
3623
3656
  .md\:p-basalt-layout-lg {
3624
3657
  padding: var(--basalt-space-layout-lg);
3625
3658
  }
3626
- .md\:px-basalt-space-lg {
3627
- padding-inline: var(--basalt-space-lg);
3628
- }
3629
- .md\:text-basalt-5xl {
3630
- font-size: var(--basalt-text-5xl);
3631
- line-height: var(--tw-leading, var(--basalt-leading-body));
3659
+ .md\:px-basalt-layout-sm {
3660
+ padding-inline: var(--basalt-space-layout-sm);
3632
3661
  }
3633
3662
  .md\:shadow-sm {
3634
3663
  --tw-shadow: 0 1px 3px 0 var(--tw-shadow-color, rgb(0 0 0 / 0.1)), 0 1px 2px -1px var(--tw-shadow-color, rgb(0 0 0 / 0.1));
@@ -3658,16 +3687,6 @@
3658
3687
  padding-inline: var(--basalt-space-layout-xl);
3659
3688
  }
3660
3689
  }
3661
- .\[\&_\.recharts-surface\:focus-visible\]\:outline-2 .recharts-surface:focus-visible {
3662
- outline-style: var(--tw-outline-style);
3663
- outline-width: 2px;
3664
- }
3665
- .\[\&_\.recharts-surface\:focus-visible\]\:outline-offset-2 .recharts-surface:focus-visible {
3666
- outline-offset: 2px;
3667
- }
3668
- .\[\&_\.recharts-surface\:focus-visible\]\:outline-basalt-ring .recharts-surface:focus-visible {
3669
- outline-color: hsl(var(--basalt-ring));
3670
- }
3671
3690
  .\[\&_\[cmdk-group-heading\]\]\:px-basalt-space-lg [cmdk-group-heading] {
3672
3691
  padding-inline: var(--basalt-space-lg);
3673
3692
  }