@nocoo/basalt 3.2.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 (83) hide show
  1. package/ai/DESIGN.md +20 -9
  2. package/ai/INTEGRATION.md +9 -9
  3. package/ai/USAGE.md +1 -1
  4. package/ai/registry.json +73 -73
  5. package/dist/charts/frame.js +2 -2
  6. package/dist/charts/frame.js.map +1 -1
  7. package/dist/charts/heatmap-calendar.js +4 -4
  8. package/dist/charts/heatmap-calendar.js.map +1 -1
  9. package/dist/charts/heatmap-matrix.js +3 -3
  10. package/dist/charts/heatmap-matrix.js.map +1 -1
  11. package/dist/components/app-header.js +1 -1
  12. package/dist/components/app-header.js.map +1 -1
  13. package/dist/components/app-shell.js +1 -1
  14. package/dist/components/app-shell.js.map +1 -1
  15. package/dist/components/chat-composer.js +1 -1
  16. package/dist/components/chat-composer.js.map +1 -1
  17. package/dist/components/chat-message.js +1 -1
  18. package/dist/components/chat-message.js.map +1 -1
  19. package/dist/components/code.js +1 -1
  20. package/dist/components/code.js.map +1 -1
  21. package/dist/components/command-palette.js +2 -2
  22. package/dist/components/command-palette.js.map +1 -1
  23. package/dist/components/context-cards.js +1 -1
  24. package/dist/components/context-cards.js.map +1 -1
  25. package/dist/components/context-menu.js +1 -1
  26. package/dist/components/context-menu.js.map +1 -1
  27. package/dist/components/data-table.js +127 -124
  28. package/dist/components/data-table.js.map +1 -1
  29. package/dist/components/diff-table.js +1 -1
  30. package/dist/components/diff-table.js.map +1 -1
  31. package/dist/components/dropdown-menu.js +1 -1
  32. package/dist/components/dropdown-menu.js.map +1 -1
  33. package/dist/components/editable-nav-item.js +2 -2
  34. package/dist/components/editable-nav-item.js.map +1 -1
  35. package/dist/components/file-dropzone.js +1 -1
  36. package/dist/components/file-dropzone.js.map +1 -1
  37. package/dist/components/filter-bar.js +1 -1
  38. package/dist/components/filter-bar.js.map +1 -1
  39. package/dist/components/icon-picker.js +3 -3
  40. package/dist/components/icon-picker.js.map +1 -1
  41. package/dist/components/inline-editable.js +1 -1
  42. package/dist/components/inline-editable.js.map +1 -1
  43. package/dist/components/input-group.js +2 -2
  44. package/dist/components/input-group.js.map +1 -1
  45. package/dist/components/layer-card.js +2 -1
  46. package/dist/components/layer-card.js.map +1 -1
  47. package/dist/components/link.js +1 -1
  48. package/dist/components/link.js.map +1 -1
  49. package/dist/components/menu-bar.js +2 -2
  50. package/dist/components/menu-bar.js.map +1 -1
  51. package/dist/components/multi-select.js +1 -1
  52. package/dist/components/multi-select.js.map +1 -1
  53. package/dist/components/overlay.d.ts +3 -6
  54. package/dist/components/overlay.js +3 -3
  55. package/dist/components/overlay.js.map +1 -1
  56. package/dist/components/responsive-master-detail.js +2 -2
  57. package/dist/components/responsive-master-detail.js.map +1 -1
  58. package/dist/components/scroll-area.js +1 -1
  59. package/dist/components/scroll-area.js.map +1 -1
  60. package/dist/components/segment-control.js +1 -1
  61. package/dist/components/segment-control.js.map +1 -1
  62. package/dist/components/select.js +1 -1
  63. package/dist/components/select.js.map +1 -1
  64. package/dist/components/sensitive-input.js +1 -1
  65. package/dist/components/sensitive-input.js.map +1 -1
  66. package/dist/components/sidebar.js +1 -1
  67. package/dist/components/sidebar.js.map +1 -1
  68. package/dist/components/table.js +1 -1
  69. package/dist/components/table.js.map +1 -1
  70. package/dist/components/tabs.js +1 -1
  71. package/dist/components/tabs.js.map +1 -1
  72. package/dist/components/tag-color-picker.js +2 -2
  73. package/dist/components/tag-color-picker.js.map +1 -1
  74. package/dist/components/toast.js +1 -1
  75. package/dist/components/toast.js.map +1 -1
  76. package/dist/components/toolbar.js +8 -8
  77. package/dist/components/toolbar.js.map +1 -1
  78. package/dist/styles/base.css +71 -0
  79. package/dist/styles/standalone.css +72 -87
  80. package/dist/styles/tailwind.css +8 -2
  81. package/dist/styles/tokens.css +4 -1
  82. package/dist/utils/navigation.d.ts +1 -1
  83. package/package.json +1 -1
@@ -27,6 +27,9 @@
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-focus-width: 0.0625rem;
31
+ --basalt-focus-offset: 0.125rem;
32
+ --basalt-focus-clearance: var(--basalt-space-sm);
30
33
  --basalt-text-xs: 0.75rem;
31
34
  --basalt-text-sm: 0.75rem;
32
35
  --basalt-text-code: 0.875rem;
@@ -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"] {
@@ -1194,17 +1197,60 @@
1194
1197
  }
1195
1198
  }
1196
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
+ }
1197
1232
  [data-basalt-header][data-density="compact"] :where([data-basalt-header-leading], [data-basalt-header-actions]) :where(button, a, [role="button"]) {
1198
1233
  min-height: var(--basalt-size-touch);
1199
1234
  min-width: var(--basalt-size-touch);
1200
1235
  }
1201
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
+ }
1202
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) {
1203
1244
  outline: none;
1204
1245
  }
1205
1246
  .basalt-chart :focus-visible {
1206
- outline: 2px solid hsl(var(--basalt-ring));
1207
- 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
+ }
1208
1254
  }
1209
1255
  @layer utilities {
1210
1256
  .pointer-events-none {
@@ -1924,6 +1970,9 @@
1924
1970
  .resize-none {
1925
1971
  resize: none;
1926
1972
  }
1973
+ .scroll-p-basalt-space-sm {
1974
+ scroll-padding: var(--basalt-space-sm);
1975
+ }
1927
1976
  .list-decimal {
1928
1977
  list-style-type: decimal;
1929
1978
  }
@@ -2268,6 +2317,10 @@
2268
2317
  .rounded-none {
2269
2318
  border-radius: 0;
2270
2319
  }
2320
+ .rounded-t-basalt-lg {
2321
+ border-top-left-radius: var(--basalt-radius-lg);
2322
+ border-top-right-radius: var(--basalt-radius-lg);
2323
+ }
2271
2324
  .rounded-l-basalt-md {
2272
2325
  border-top-left-radius: var(--basalt-radius-md);
2273
2326
  border-bottom-left-radius: var(--basalt-radius-md);
@@ -2694,9 +2747,6 @@
2694
2747
  .py-basalt-menu-y {
2695
2748
  padding-block: var(--basalt-space-menu-y);
2696
2749
  }
2697
- .py-basalt-nav-inset {
2698
- padding-block: var(--basalt-space-nav-inset);
2699
- }
2700
2750
  .py-basalt-panel-y {
2701
2751
  padding-block: var(--basalt-space-panel-y);
2702
2752
  }
@@ -2745,6 +2795,9 @@
2745
2795
  .pt-basalt-nav-gap {
2746
2796
  padding-top: var(--basalt-space-nav-gap);
2747
2797
  }
2798
+ .pt-basalt-space-lg {
2799
+ padding-top: var(--basalt-space-lg);
2800
+ }
2748
2801
  .pr-basalt-row-x {
2749
2802
  padding-right: var(--basalt-space-row-x);
2750
2803
  }
@@ -2757,6 +2810,9 @@
2757
2810
  .pb-0 {
2758
2811
  padding-bottom: 0px;
2759
2812
  }
2813
+ .pb-basalt-layout {
2814
+ padding-bottom: var(--basalt-space-layout);
2815
+ }
2760
2816
  .pb-basalt-panel-y {
2761
2817
  padding-bottom: var(--basalt-space-panel-y);
2762
2818
  }
@@ -2766,9 +2822,6 @@
2766
2822
  .pb-basalt-space-lg {
2767
2823
  padding-bottom: var(--basalt-space-lg);
2768
2824
  }
2769
- .pb-basalt-space-sm {
2770
- padding-bottom: var(--basalt-space-sm);
2771
- }
2772
2825
  .pl-\[calc\(var\(--basalt-size-icon-lg\)\/2\+var\(--basalt-space-row-gap\)\)\] {
2773
2826
  padding-left: calc(var(--basalt-size-icon-lg) / 2 + var(--basalt-space-row-gap));
2774
2827
  }
@@ -3242,15 +3295,13 @@
3242
3295
  border-top-right-radius: var(--basalt-radius-md);
3243
3296
  border-bottom-right-radius: var(--basalt-radius-md);
3244
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
+ }
3245
3302
  .focus-within\:z-2:focus-within {
3246
3303
  z-index: 2;
3247
3304
  }
3248
- .focus-within\:border-basalt-ring:focus-within {
3249
- border-color: hsl(var(--basalt-ring));
3250
- }
3251
- .focus-within\:ring-basalt-ring:focus-within {
3252
- --tw-ring-color: hsl(var(--basalt-ring));
3253
- }
3254
3305
  @media (hover: hover) {
3255
3306
  .hover\:scale-\[1\.03\]:hover {
3256
3307
  scale: 1.03;
@@ -3344,63 +3395,9 @@
3344
3395
  .focus-visible\:z-2:focus-visible {
3345
3396
  z-index: 2;
3346
3397
  }
3347
- .focus-visible\:border-basalt-ring:focus-visible {
3348
- border-color: hsl(var(--basalt-ring));
3349
- }
3350
- .focus-visible\:border-transparent:focus-visible {
3351
- border-color: transparent;
3352
- }
3353
3398
  .focus-visible\:bg-basalt-hover:focus-visible {
3354
3399
  background-color: var(--basalt-hover);
3355
3400
  }
3356
- .focus-visible\:ring-0:focus-visible {
3357
- --tw-ring-shadow: var(--tw-ring-inset,) 0 0 0 calc(0px + var(--tw-ring-offset-width)) var(--tw-ring-color, currentcolor);
3358
- box-shadow: var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow);
3359
- }
3360
- .focus-visible\:ring-1:focus-visible {
3361
- --tw-ring-shadow: var(--tw-ring-inset,) 0 0 0 calc(1px + var(--tw-ring-offset-width)) var(--tw-ring-color, currentcolor);
3362
- box-shadow: var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow);
3363
- }
3364
- .focus-visible\:ring-2:focus-visible {
3365
- --tw-ring-shadow: var(--tw-ring-inset,) 0 0 0 calc(2px + var(--tw-ring-offset-width)) var(--tw-ring-color, currentcolor);
3366
- box-shadow: var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow);
3367
- }
3368
- .focus-visible\:ring-basalt-ring:focus-visible {
3369
- --tw-ring-color: hsl(var(--basalt-ring));
3370
- }
3371
- .focus-visible\:ring-offset-0:focus-visible {
3372
- --tw-ring-offset-width: 0px;
3373
- --tw-ring-offset-shadow: var(--tw-ring-inset,) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);
3374
- }
3375
- .focus-visible\:ring-offset-2:focus-visible {
3376
- --tw-ring-offset-width: 2px;
3377
- --tw-ring-offset-shadow: var(--tw-ring-inset,) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);
3378
- }
3379
- .focus-visible\:ring-offset-basalt-background:focus-visible {
3380
- --tw-ring-offset-color: hsl(var(--basalt-background));
3381
- }
3382
- .focus-visible\:outline-2:focus-visible {
3383
- outline-style: var(--tw-outline-style);
3384
- outline-width: 2px;
3385
- }
3386
- .focus-visible\:-outline-offset-2:focus-visible {
3387
- outline-offset: calc(2px * -1);
3388
- }
3389
- .focus-visible\:outline-offset-1:focus-visible {
3390
- outline-offset: 1px;
3391
- }
3392
- .focus-visible\:outline-offset-2:focus-visible {
3393
- outline-offset: 2px;
3394
- }
3395
- .focus-visible\:outline-basalt-primary:focus-visible {
3396
- outline-color: hsl(var(--basalt-primary));
3397
- }
3398
- .focus-visible\:outline-basalt-ring:focus-visible {
3399
- outline-color: hsl(var(--basalt-ring));
3400
- }
3401
- .focus-visible\:ring-inset:focus-visible {
3402
- --tw-ring-inset: inset;
3403
- }
3404
3401
  .active\:scale-\[0\.98\]:active {
3405
3402
  scale: 0.98;
3406
3403
  }
@@ -3515,9 +3512,6 @@
3515
3512
  .data-\[state\=checked\]\:text-basalt-primary-foreground[data-state="checked"] {
3516
3513
  color: hsl(var(--basalt-primary-foreground));
3517
3514
  }
3518
- .data-\[state\=checked\]\:focus-visible\:ring-basalt-primary-foreground[data-state="checked"]:focus-visible {
3519
- --tw-ring-color: hsl(var(--basalt-primary-foreground));
3520
- }
3521
3515
  .data-\[state\=closed\]\:animate-basalt-collapsible-up[data-state="closed"] {
3522
3516
  animation: basalt-collapsible-up var(--basalt-motion-fast)
3523
3517
  var(--basalt-motion-ease);
@@ -3530,6 +3524,10 @@
3530
3524
  animation: basalt-overlay-out var(--basalt-floating-duration-exit)
3531
3525
  var(--basalt-motion-ease-exit) forwards;
3532
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
+ }
3533
3531
  .data-\[state\=indeterminate\]\:bg-basalt-primary[data-state="indeterminate"] {
3534
3532
  background-color: hsl(var(--basalt-primary));
3535
3533
  }
@@ -3542,9 +3540,6 @@
3542
3540
  .data-\[state\=on\]\:text-basalt-primary-foreground[data-state="on"] {
3543
3541
  color: hsl(var(--basalt-primary-foreground));
3544
3542
  }
3545
- .data-\[state\=on\]\:focus-visible\:ring-basalt-primary-foreground[data-state="on"]:focus-visible {
3546
- --tw-ring-color: hsl(var(--basalt-primary-foreground));
3547
- }
3548
3543
  .data-\[state\=open\]\:animate-basalt-collapsible-down[data-state="open"] {
3549
3544
  animation: basalt-collapsible-down var(--basalt-motion-normal)
3550
3545
  var(--basalt-motion-ease);
@@ -3661,8 +3656,8 @@
3661
3656
  .md\:p-basalt-layout-lg {
3662
3657
  padding: var(--basalt-space-layout-lg);
3663
3658
  }
3664
- .md\:px-basalt-space-lg {
3665
- padding-inline: var(--basalt-space-lg);
3659
+ .md\:px-basalt-layout-sm {
3660
+ padding-inline: var(--basalt-space-layout-sm);
3666
3661
  }
3667
3662
  .md\:shadow-sm {
3668
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));
@@ -3692,16 +3687,6 @@
3692
3687
  padding-inline: var(--basalt-space-layout-xl);
3693
3688
  }
3694
3689
  }
3695
- .\[\&_\.recharts-surface\:focus-visible\]\:outline-2 .recharts-surface:focus-visible {
3696
- outline-style: var(--tw-outline-style);
3697
- outline-width: 2px;
3698
- }
3699
- .\[\&_\.recharts-surface\:focus-visible\]\:outline-offset-2 .recharts-surface:focus-visible {
3700
- outline-offset: 2px;
3701
- }
3702
- .\[\&_\.recharts-surface\:focus-visible\]\:outline-basalt-ring .recharts-surface:focus-visible {
3703
- outline-color: hsl(var(--basalt-ring));
3704
- }
3705
3690
  .\[\&_\[cmdk-group-heading\]\]\:px-basalt-space-lg [cmdk-group-heading] {
3706
3691
  padding-inline: var(--basalt-space-lg);
3707
3692
  }
@@ -277,8 +277,14 @@
277
277
  }
278
278
 
279
279
  .basalt-chart :focus-visible {
280
- outline: 2px solid hsl(var(--basalt-ring));
281
- outline-offset: 2px;
280
+ outline: var(--basalt-focus-width) solid hsl(var(--basalt-ring));
281
+ outline-offset: var(--basalt-focus-offset);
282
+ }
283
+
284
+ @media (forced-colors: active) {
285
+ .basalt-chart :focus-visible {
286
+ outline: 2px solid Highlight;
287
+ }
282
288
  }
283
289
 
284
290
  @utility duration-basalt-normal {
@@ -4,6 +4,9 @@
4
4
  --basalt-space-md: 0.375rem;
5
5
  --basalt-space-lg: 0.5rem;
6
6
  --basalt-space-default: var(--basalt-space-lg);
7
+ --basalt-focus-width: 0.0625rem;
8
+ --basalt-focus-offset: 0.125rem;
9
+ --basalt-focus-clearance: var(--basalt-space-sm);
7
10
  --basalt-text-xs: 0.75rem;
8
11
  --basalt-text-sm: 0.75rem;
9
12
  --basalt-text-code: 0.875rem;
@@ -122,7 +125,7 @@
122
125
  );
123
126
  --basalt-size-action: var(--basalt-size-control);
124
127
  --basalt-space-nav-inset: var(--basalt-space-lg);
125
- --basalt-space-nav-gap: var(--basalt-space-xs);
128
+ --basalt-space-nav-gap: var(--basalt-space-sm);
126
129
  --basalt-size-rail: 4.25rem;
127
130
  }
128
131
 
@@ -1,3 +1,3 @@
1
1
  export declare const NAV_LIST_CLASS = "basalt-ui basalt-hover-list flex gap-basalt-nav-gap p-basalt-nav-inset";
2
2
  export declare const NAV_ROW_CLASS = "flex min-w-0 shrink-0 min-h-basalt-control items-center gap-basalt-row-gap rounded-basalt-md px-basalt-row-x py-basalt-row-y text-left text-basalt-base font-normal leading-basalt-row [&>svg]:size-basalt-icon-lg [&>svg]:shrink-0";
3
- export declare const NAV_ITEM_CLASS = "basalt-ui basalt-nav-item flex min-w-0 shrink-0 min-h-basalt-control items-center gap-basalt-row-gap rounded-basalt-md px-basalt-row-x py-basalt-row-y text-left text-basalt-base font-normal leading-basalt-row [&>svg]:size-basalt-icon-lg [&>svg]:shrink-0 outline-hidden focus-visible:ring-1 focus-visible:ring-inset focus-visible:ring-basalt-ring";
3
+ export declare const NAV_ITEM_CLASS = "basalt-ui basalt-nav-item flex min-w-0 shrink-0 min-h-basalt-control items-center gap-basalt-row-gap rounded-basalt-md px-basalt-row-x py-basalt-row-y text-left text-basalt-base font-normal leading-basalt-row [&>svg]:size-basalt-icon-lg [&>svg]:shrink-0 basalt-focus basalt-focus-inset";
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@nocoo/basalt",
3
- "version": "3.2.0",
3
+ "version": "3.2.1",
4
4
  "type": "module",
5
5
  "license": "MIT",
6
6
  "repository": {