@vireo-ai/trellis-ui 0.1.2 → 0.1.5

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 (42) hide show
  1. package/package.json +2 -5
  2. package/src/components/date-picker/styles.css +9 -0
  3. package/src/components/select/styles.css +9 -0
  4. package/src/theme.css +36 -4
  5. package/trellis_ui/static/trellis_ui/css/styles.css +307 -12
  6. package/trellis_ui/static/trellis_ui/js/esm/index.js +3605 -2210
  7. package/trellis_ui/static/trellis_ui/js/esm/index.js.map +1 -1
  8. package/trellis_ui/static/trellis_ui/js/index.js +6 -6
  9. package/types/components/accordion/contract.d.ts +2 -0
  10. package/types/components/accordion/index.d.ts +3 -1
  11. package/types/components/combobox/index.d.ts +8 -2
  12. package/types/components/container/contract.d.ts +30 -0
  13. package/types/components/container/index.d.ts +1 -0
  14. package/types/components/date-picker/index.d.ts +3 -2
  15. package/types/components/dropdown/index.d.ts +4 -2
  16. package/types/components/flex/contract.d.ts +35 -0
  17. package/types/components/flex/index.d.ts +1 -0
  18. package/types/components/grid/contract.d.ts +40 -0
  19. package/types/components/grid/index.d.ts +1 -0
  20. package/types/components/input/index.d.ts +1 -0
  21. package/types/components/layout.d.ts +408 -0
  22. package/types/components/modal/index.d.ts +4 -2
  23. package/types/components/runtime.d.ts +2 -0
  24. package/types/components/section/contract.d.ts +27 -0
  25. package/types/components/section/index.d.ts +1 -0
  26. package/types/components/select/index.d.ts +8 -2
  27. package/types/components/sidebar/index.d.ts +14 -7
  28. package/types/components/slider/index.d.ts +1 -0
  29. package/types/components/stack/contract.d.ts +29 -0
  30. package/types/components/stack/index.d.ts +1 -0
  31. package/types/components/table/contract.d.ts +4 -3
  32. package/types/components/tabs/index.d.ts +1 -0
  33. package/types/components/textarea/index.d.ts +13 -0
  34. package/types/components/toast/index.d.ts +4 -0
  35. package/types/index.d.ts +6 -4
  36. package/types/runtime/codecs.d.ts +11 -2
  37. package/types/runtime/index.d.ts +5 -2
  38. package/types/runtime/machine.d.ts +55 -0
  39. package/types/runtime/manifest.d.ts +2 -0
  40. package/types/runtime/stream.d.ts +1 -1
  41. package/trellis_ui/static/trellis_ui/js/esm/chunks/dist-DMX3Q5Zu.js +0 -551
  42. package/trellis_ui/static/trellis_ui/js/esm/chunks/dist-DMX3Q5Zu.js.map +0 -1
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@vireo-ai/trellis-ui",
3
- "version": "0.1.2",
3
+ "version": "0.1.5",
4
4
  "type": "module",
5
5
  "description": "Django-native UI toolkit for building realtime and interactive web apps.",
6
6
  "license": "MIT",
@@ -43,20 +43,17 @@
43
43
  "alpinejs": "^3.14.8",
44
44
  "cally": "^0.9.2",
45
45
  "clsx": "^2.1.1",
46
+ "event-source-plus": "^0.1.15",
46
47
  "motion": "^12.42.0"
47
48
  },
48
49
  "devDependencies": {
49
50
  "@axe-core/playwright": "^4.11.3",
50
51
  "@playwright/test": "^1.61.0",
51
52
  "@tailwindcss/cli": "^4.0.0",
52
- "@tailwindcss/typography": "^0.5.20",
53
53
  "@tailwindcss/vite": "^4.3.2",
54
54
  "@types/alpinejs": "^3.13.11",
55
55
  "@types/node": "^25.9.3",
56
- "@types/prismjs": "^1.26.6",
57
- "event-source-plus": "^0.1.15",
58
56
  "jsdom": "^29.1.1",
59
- "prismjs": "^1.30.0",
60
57
  "tailwindcss": "^4.0.0",
61
58
  "typescript": "^6.0.3",
62
59
  "vite": "^8.0.16",
@@ -19,6 +19,15 @@
19
19
  --ui-date-picker-range-bg-hover: var(--color-accent-surface-hover);
20
20
  }
21
21
 
22
+ [data-ui-date-picker-native]:disabled {
23
+ --ui-control-bg: var(--ui-control-bg-disabled);
24
+ --ui-control-bg-hover: var(--ui-control-bg-disabled);
25
+ --ui-control-bg-active: var(--ui-control-bg-disabled);
26
+ --ui-control-fg: var(--ui-control-fg-disabled);
27
+ --ui-control-placeholder: var(--ui-control-placeholder-disabled);
28
+ --ui-control-shadow: var(--ui-control-shadow-disabled);
29
+ }
30
+
22
31
  [data-ui-date-picker-native]:is(:hover, :active):not(:focus):not(:disabled):not([aria-invalid="true"]) {
23
32
  --ui-control-shadow: var(--ui-control-shadow-hover);
24
33
  }
@@ -27,6 +27,15 @@
27
27
  display: none;
28
28
  }
29
29
 
30
+ [data-ui-select-native]:disabled {
31
+ --ui-control-bg: var(--ui-control-bg-disabled);
32
+ --ui-control-bg-hover: var(--ui-control-bg-disabled);
33
+ --ui-control-bg-active: var(--ui-control-bg-disabled);
34
+ --ui-control-fg: var(--ui-control-fg-disabled);
35
+ --ui-control-placeholder: var(--ui-control-placeholder-disabled);
36
+ --ui-control-shadow: var(--ui-control-shadow-disabled);
37
+ }
38
+
30
39
  [data-ui-select-native]:is(:hover, :active):not(:focus):not(:disabled):not([aria-invalid="true"]) {
31
40
  --ui-control-shadow: var(--ui-control-shadow-hover);
32
41
  }
package/src/theme.css CHANGED
@@ -116,6 +116,7 @@
116
116
  --shadow-modal: var(--ui-modal-shadow);
117
117
  --shadow-inset: inset 0 1px 1px rgb(0 0 0 / 0.04);
118
118
  --shadow-control: var(--ui-control-shadow);
119
+ --shadow-control-disabled: var(--ui-control-shadow-disabled);
119
120
  --shadow-focus: 0 0 0 3px var(--color-focus-a4);
120
121
  --shadow-danger-focus: var(--shadow-control), 0 0 0 3px var(--color-danger-a4);
121
122
 
@@ -285,8 +286,11 @@
285
286
  --color-control: var(--ui-control-bg);
286
287
  --color-control-hover: var(--ui-control-bg-hover);
287
288
  --color-control-active: var(--ui-control-bg-active);
289
+ --color-control-disabled: var(--ui-control-bg-disabled);
288
290
  --color-control-fg: var(--ui-control-fg);
291
+ --color-control-disabled-fg: var(--ui-control-fg-disabled);
289
292
  --color-control-placeholder: var(--ui-control-placeholder);
293
+ --color-control-placeholder-disabled: var(--ui-control-placeholder-disabled);
290
294
  --color-control-border: var(--ui-control-border);
291
295
  --color-control-border-focus: var(--ui-control-border-focus);
292
296
  --color-control-border-invalid: var(--ui-control-border-invalid);
@@ -432,8 +436,11 @@
432
436
  --ui-control-bg: var(--color-surface-panel);
433
437
  --ui-control-bg-hover: var(--color-base-a2);
434
438
  --ui-control-bg-active: var(--color-base-a3);
439
+ --ui-control-bg-disabled: var(--color-surface-panel);
435
440
  --ui-control-fg: var(--color-foreground);
441
+ --ui-control-fg-disabled: var(--color-foreground-subtle);
436
442
  --ui-control-placeholder: var(--color-foreground-subtle);
443
+ --ui-control-placeholder-disabled: var(--color-foreground-subtle);
437
444
  --ui-control-border: var(--color-border);
438
445
  --ui-control-border-hover: color-mix(in srgb, var(--ui-control-border) 90%, var(--ui-fg) 10%);
439
446
  --ui-control-border-focus: var(--color-accent-9);
@@ -441,6 +448,7 @@
441
448
  --ui-control-border-invalid-hover: color-mix(in srgb, var(--ui-control-border-invalid) 84%, var(--color-danger-text) 16%);
442
449
  --ui-control-border-invalid-focus: var(--color-danger-9);
443
450
  --ui-control-shadow: var(--ui-shadow-border);
451
+ --ui-control-shadow-disabled: var(--ui-shadow-border);
444
452
  --ui-control-shadow-hover: 0 0 0 1px var(--ui-control-border-hover);
445
453
  --ui-control-shadow-focus: 0 0 0 1px var(--ui-control-border-focus);
446
454
  --ui-control-shadow-invalid: 0 0 0 1px var(--ui-control-border-invalid);
@@ -490,8 +498,11 @@
490
498
  --color-control: var(--ui-control-bg);
491
499
  --color-control-hover: var(--ui-control-bg-hover);
492
500
  --color-control-active: var(--ui-control-bg-active);
501
+ --color-control-disabled: var(--ui-control-bg-disabled);
493
502
  --color-control-fg: var(--ui-control-fg);
503
+ --color-control-disabled-fg: var(--ui-control-fg-disabled);
494
504
  --color-control-placeholder: var(--ui-control-placeholder);
505
+ --color-control-placeholder-disabled: var(--ui-control-placeholder-disabled);
495
506
  --color-control-border: var(--ui-control-border);
496
507
  --color-control-border-focus: var(--ui-control-border-focus);
497
508
  --color-control-border-invalid: var(--ui-control-border-invalid);
@@ -683,16 +694,16 @@
683
694
  --ui-control-shadow: var(--ui-control-shadow-focus);
684
695
  }
685
696
 
686
- [data-ui-control]:where([data-variant="outline"], [data-variant="enhanced"])[data-invalid] {
697
+ [data-ui-control]:where([data-variant="outline"], [data-variant="enhanced"], [data-variant="filled"])[data-invalid] {
687
698
  --ui-control-shadow: var(--ui-control-shadow-invalid);
688
699
  }
689
700
 
690
- [data-ui-control]:where([data-variant="outline"], [data-variant="enhanced"])[data-invalid]:is(:hover, :active):not(:focus-within):not([data-state="open"]):not([data-disabled]) {
701
+ [data-ui-control]:where([data-variant="outline"], [data-variant="enhanced"], [data-variant="filled"])[data-invalid]:is(:hover, :active):not(:focus-within):not([data-state="open"]):not([data-disabled]) {
691
702
  --ui-control-shadow: var(--ui-control-shadow-invalid-hover);
692
703
  }
693
704
 
694
- [data-ui-control]:where([data-variant="outline"], [data-variant="enhanced"])[data-invalid]:focus-within:not([data-disabled]),
695
- [data-ui-control]:where([data-variant="outline"], [data-variant="enhanced"])[data-invalid][data-state="open"]:not([data-disabled]) {
705
+ [data-ui-control]:where([data-variant="outline"], [data-variant="enhanced"], [data-variant="filled"])[data-invalid]:focus-within:not([data-disabled]),
706
+ [data-ui-control]:where([data-variant="outline"], [data-variant="enhanced"], [data-variant="filled"])[data-invalid][data-state="open"]:not([data-disabled]) {
696
707
  --ui-control-shadow: var(--ui-control-shadow-invalid-focus);
697
708
  box-shadow: var(--shadow-danger-focus);
698
709
  }
@@ -700,6 +711,27 @@
700
711
  [data-ui-control]:where([data-variant="outline"], [data-variant="enhanced"]):has(:focus-visible):not([data-invalid]) {
701
712
  box-shadow: var(--shadow-control), var(--shadow-focus);
702
713
  }
714
+
715
+ [data-ui-control][data-disabled] {
716
+ --ui-control-bg: var(--ui-control-bg-disabled);
717
+ --ui-control-bg-hover: var(--ui-control-bg-disabled);
718
+ --ui-control-bg-active: var(--ui-control-bg-disabled);
719
+ --ui-control-fg: var(--ui-control-fg-disabled);
720
+ --ui-control-placeholder: var(--ui-control-placeholder-disabled);
721
+ --ui-control-shadow: var(--ui-control-shadow-disabled);
722
+ }
723
+
724
+ [data-ui-control][data-disabled] :is(input, select, textarea, button):disabled {
725
+ color: var(--ui-control-fg-disabled);
726
+ opacity: 1;
727
+ -webkit-text-fill-color: var(--ui-control-fg-disabled);
728
+ }
729
+
730
+ [data-ui-control][data-disabled] :is(input, textarea):disabled::placeholder {
731
+ color: var(--ui-control-placeholder-disabled);
732
+ opacity: 1;
733
+ -webkit-text-fill-color: var(--ui-control-placeholder-disabled);
734
+ }
703
735
  }
704
736
 
705
737
  .dark {
@@ -18,6 +18,7 @@
18
18
  --container-3xl: 48rem;
19
19
  --container-4xl: 56rem;
20
20
  --container-5xl: 64rem;
21
+ --container-6xl: 72rem;
21
22
  --container-7xl: 80rem;
22
23
  --text-xs: 0.75rem;
23
24
  --text-xs--line-height: 1rem;
@@ -95,6 +96,7 @@
95
96
  --shadow-popover: var(--ui-popover-shadow);
96
97
  --shadow-modal: var(--ui-modal-shadow);
97
98
  --shadow-control: var(--ui-control-shadow);
99
+ --shadow-control-disabled: var(--ui-control-shadow-disabled);
98
100
  --shadow-focus: 0 0 0 3px var(--color-focus-a4);
99
101
  --shadow-danger-focus: var(--shadow-control), 0 0 0 3px var(--color-danger-a4);
100
102
  --container-reading: 42rem;
@@ -179,7 +181,9 @@
179
181
  --color-control: var(--ui-control-bg);
180
182
  --color-control-hover: var(--ui-control-bg-hover);
181
183
  --color-control-active: var(--ui-control-bg-active);
184
+ --color-control-disabled: var(--ui-control-bg-disabled);
182
185
  --color-control-fg: var(--ui-control-fg);
186
+ --color-control-disabled-fg: var(--ui-control-fg-disabled);
183
187
  --color-control-placeholder: var(--ui-control-placeholder);
184
188
  --color-control-border: var(--ui-control-border);
185
189
  --color-control-border-focus: var(--ui-control-border-focus);
@@ -684,6 +688,12 @@
684
688
  .-mr-4 {
685
689
  margin-right: calc(var(--spacing-4) * -1);
686
690
  }
691
+ .mr-0 {
692
+ margin-right: var(--spacing-0);
693
+ }
694
+ .mr-auto {
695
+ margin-right: auto;
696
+ }
687
697
  .-mb-1 {
688
698
  margin-bottom: calc(var(--spacing-1) * -1);
689
699
  }
@@ -714,6 +724,9 @@
714
724
  .-ml-px {
715
725
  margin-left: -1px;
716
726
  }
727
+ .ml-0 {
728
+ margin-left: var(--spacing-0);
729
+ }
717
730
  .ml-2 {
718
731
  margin-left: var(--spacing-2);
719
732
  }
@@ -1109,6 +1122,9 @@
1109
1122
  .max-w-5xl {
1110
1123
  max-width: var(--container-5xl);
1111
1124
  }
1125
+ .max-w-6xl {
1126
+ max-width: var(--container-6xl);
1127
+ }
1112
1128
  .max-w-7xl {
1113
1129
  max-width: var(--container-7xl);
1114
1130
  }
@@ -1240,6 +1256,9 @@
1240
1256
  .cursor-grab {
1241
1257
  cursor: grab;
1242
1258
  }
1259
+ .cursor-not-allowed {
1260
+ cursor: not-allowed;
1261
+ }
1243
1262
  .cursor-pointer {
1244
1263
  cursor: pointer;
1245
1264
  }
@@ -1261,12 +1280,30 @@
1261
1280
  .scroll-mt-6 {
1262
1281
  scroll-margin-top: var(--spacing-6);
1263
1282
  }
1283
+ .list-disc {
1284
+ list-style-type: disc;
1285
+ }
1264
1286
  .list-none {
1265
1287
  list-style-type: none;
1266
1288
  }
1267
1289
  .appearance-none {
1268
1290
  appearance: none;
1269
1291
  }
1292
+ .grid-flow-col {
1293
+ grid-auto-flow: column;
1294
+ }
1295
+ .grid-flow-col-dense {
1296
+ grid-auto-flow: column dense;
1297
+ }
1298
+ .grid-flow-dense {
1299
+ grid-auto-flow: dense;
1300
+ }
1301
+ .grid-flow-row {
1302
+ grid-auto-flow: row;
1303
+ }
1304
+ .grid-flow-row-dense {
1305
+ grid-auto-flow: row dense;
1306
+ }
1270
1307
  .auto-rows-min {
1271
1308
  grid-auto-rows: min-content;
1272
1309
  }
@@ -1288,6 +1325,24 @@
1288
1325
  .grid-cols-\[minmax\(0\,1fr\)_auto\] {
1289
1326
  grid-template-columns: minmax(0,1fr) auto;
1290
1327
  }
1328
+ .grid-rows-1 {
1329
+ grid-template-rows: repeat(1, minmax(0, 1fr));
1330
+ }
1331
+ .grid-rows-2 {
1332
+ grid-template-rows: repeat(2, minmax(0, 1fr));
1333
+ }
1334
+ .grid-rows-3 {
1335
+ grid-template-rows: repeat(3, minmax(0, 1fr));
1336
+ }
1337
+ .grid-rows-4 {
1338
+ grid-template-rows: repeat(4, minmax(0, 1fr));
1339
+ }
1340
+ .grid-rows-5 {
1341
+ grid-template-rows: repeat(5, minmax(0, 1fr));
1342
+ }
1343
+ .grid-rows-6 {
1344
+ grid-template-rows: repeat(6, minmax(0, 1fr));
1345
+ }
1291
1346
  .grid-rows-\[auto_auto_minmax\(0\,1fr\)_auto\] {
1292
1347
  grid-template-rows: auto auto minmax(0,1fr) auto;
1293
1348
  }
@@ -1297,21 +1352,45 @@
1297
1352
  .flex-col {
1298
1353
  flex-direction: column;
1299
1354
  }
1355
+ .flex-col-reverse {
1356
+ flex-direction: column-reverse;
1357
+ }
1300
1358
  .flex-row {
1301
1359
  flex-direction: row;
1302
1360
  }
1303
1361
  .flex-row-reverse {
1304
1362
  flex-direction: row-reverse;
1305
1363
  }
1364
+ .flex-nowrap {
1365
+ flex-wrap: nowrap;
1366
+ }
1306
1367
  .flex-wrap {
1307
1368
  flex-wrap: wrap;
1308
1369
  }
1370
+ .flex-wrap-reverse {
1371
+ flex-wrap: wrap-reverse;
1372
+ }
1309
1373
  .place-items-center {
1310
1374
  place-items: center;
1311
1375
  }
1376
+ .content-between {
1377
+ align-content: space-between;
1378
+ }
1379
+ .content-center {
1380
+ align-content: center;
1381
+ }
1382
+ .content-end {
1383
+ align-content: flex-end;
1384
+ }
1312
1385
  .content-start {
1313
1386
  align-content: flex-start;
1314
1387
  }
1388
+ .content-stretch {
1389
+ align-content: stretch;
1390
+ }
1391
+ .items-baseline {
1392
+ align-items: baseline;
1393
+ }
1315
1394
  .items-center {
1316
1395
  align-items: center;
1317
1396
  }
@@ -1915,6 +1994,9 @@
1915
1994
  .\!pl-1\.5 {
1916
1995
  padding-left: calc(var(--spacing) * 1.5) !important;
1917
1996
  }
1997
+ .pl-5 {
1998
+ padding-left: var(--spacing-5);
1999
+ }
1918
2000
  .text-center {
1919
2001
  text-align: center;
1920
2002
  }
@@ -2573,11 +2655,6 @@
2573
2655
  cursor: grabbing;
2574
2656
  }
2575
2657
  }
2576
- .disabled\:cursor-not-allowed {
2577
- &:disabled {
2578
- cursor: not-allowed;
2579
- }
2580
- }
2581
2658
  .disabled\:opacity-50 {
2582
2659
  &:disabled {
2583
2660
  opacity: 50%;
@@ -2659,9 +2736,24 @@
2659
2736
  display: none;
2660
2737
  }
2661
2738
  }
2662
- .data-disabled\:cursor-not-allowed {
2739
+ .data-disabled\:border-border {
2740
+ &[data-disabled] {
2741
+ border-color: var(--color-border);
2742
+ }
2743
+ }
2744
+ .data-disabled\:bg-border-interactive {
2663
2745
  &[data-disabled] {
2664
- cursor: not-allowed;
2746
+ background-color: var(--color-border-interactive);
2747
+ }
2748
+ }
2749
+ .data-disabled\:bg-control-disabled {
2750
+ &[data-disabled] {
2751
+ background-color: var(--color-control-disabled);
2752
+ }
2753
+ }
2754
+ .data-disabled\:bg-control-hover {
2755
+ &[data-disabled] {
2756
+ background-color: var(--color-control-hover);
2665
2757
  }
2666
2758
  }
2667
2759
  .data-disabled\:bg-surface-panel {
@@ -2669,6 +2761,11 @@
2669
2761
  background-color: var(--color-surface-panel);
2670
2762
  }
2671
2763
  }
2764
+ .data-disabled\:text-control-disabled-fg {
2765
+ &[data-disabled] {
2766
+ color: var(--color-control-disabled-fg);
2767
+ }
2768
+ }
2672
2769
  .data-disabled\:opacity-50 {
2673
2770
  &[data-disabled] {
2674
2771
  opacity: 50%;
@@ -2679,15 +2776,58 @@
2679
2776
  opacity: 60%;
2680
2777
  }
2681
2778
  }
2682
- .data-disabled\:hover\:bg-surface-panel {
2779
+ .data-disabled\:shadow-control-disabled {
2780
+ &[data-disabled] {
2781
+ --tw-shadow: var(--ui-control-shadow-disabled);
2782
+ box-shadow: var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow);
2783
+ }
2784
+ }
2785
+ .data-disabled\:ring-border {
2786
+ &[data-disabled] {
2787
+ --tw-ring-color: var(--color-border);
2788
+ }
2789
+ }
2790
+ .data-disabled\:hover\:bg-control-disabled {
2791
+ &[data-disabled] {
2792
+ &:hover {
2793
+ @media (hover: hover) {
2794
+ background-color: var(--color-control-disabled);
2795
+ }
2796
+ }
2797
+ }
2798
+ }
2799
+ .data-disabled\:hover\:bg-control-hover {
2683
2800
  &[data-disabled] {
2684
2801
  &:hover {
2685
2802
  @media (hover: hover) {
2686
- background-color: var(--color-surface-panel);
2803
+ background-color: var(--color-control-hover);
2687
2804
  }
2688
2805
  }
2689
2806
  }
2690
2807
  }
2808
+ .data-disabled\:hover\:text-control-disabled-fg {
2809
+ &[data-disabled] {
2810
+ &:hover {
2811
+ @media (hover: hover) {
2812
+ color: var(--color-control-disabled-fg);
2813
+ }
2814
+ }
2815
+ }
2816
+ }
2817
+ .data-disabled\:data-checked\:border-border {
2818
+ &[data-disabled] {
2819
+ &[data-checked] {
2820
+ border-color: var(--color-border);
2821
+ }
2822
+ }
2823
+ }
2824
+ .data-disabled\:data-checked\:bg-control-disabled {
2825
+ &[data-disabled] {
2826
+ &[data-checked] {
2827
+ background-color: var(--color-control-disabled);
2828
+ }
2829
+ }
2830
+ }
2691
2831
  .data-dragging\:bg-base-a3 {
2692
2832
  &[data-dragging] {
2693
2833
  background-color: var(--color-base-a3);
@@ -2719,6 +2859,20 @@
2719
2859
  opacity: 100%;
2720
2860
  }
2721
2861
  }
2862
+ .data-disabled\:data-indeterminate\:border-border {
2863
+ &[data-disabled] {
2864
+ &[data-indeterminate] {
2865
+ border-color: var(--color-border);
2866
+ }
2867
+ }
2868
+ }
2869
+ .data-disabled\:data-indeterminate\:bg-control-disabled {
2870
+ &[data-disabled] {
2871
+ &[data-indeterminate] {
2872
+ background-color: var(--color-control-disabled);
2873
+ }
2874
+ }
2875
+ }
2722
2876
  .data-invalid\:border-control-border-invalid {
2723
2877
  &[data-invalid] {
2724
2878
  border-color: var(--color-control-border-invalid);
@@ -2729,6 +2883,17 @@
2729
2883
  border-color: var(--color-danger-border);
2730
2884
  }
2731
2885
  }
2886
+ .data-invalid\:bg-danger-solid {
2887
+ &[data-invalid] {
2888
+ background-color: var(--color-danger-solid);
2889
+ }
2890
+ }
2891
+ .data-invalid\:shadow-control {
2892
+ &[data-invalid] {
2893
+ --tw-shadow: var(--ui-control-shadow);
2894
+ box-shadow: var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow);
2895
+ }
2896
+ }
2732
2897
  .data-invalid\:shadow-danger-focus {
2733
2898
  &[data-invalid] {
2734
2899
  --tw-shadow: var(--shadow-control), 0 0 0 3px var(--tw-shadow-color, var(--color-danger-a4));
@@ -2757,6 +2922,34 @@
2757
2922
  }
2758
2923
  }
2759
2924
  }
2925
+ .data-invalid\:data-checked\:border-danger-border {
2926
+ &[data-invalid] {
2927
+ &[data-checked] {
2928
+ border-color: var(--color-danger-border);
2929
+ }
2930
+ }
2931
+ }
2932
+ .data-invalid\:data-checked\:bg-danger-solid {
2933
+ &[data-invalid] {
2934
+ &[data-checked] {
2935
+ background-color: var(--color-danger-solid);
2936
+ }
2937
+ }
2938
+ }
2939
+ .data-invalid\:data-checked\:text-danger-text {
2940
+ &[data-invalid] {
2941
+ &[data-checked] {
2942
+ color: var(--color-danger-text);
2943
+ }
2944
+ }
2945
+ }
2946
+ .data-invalid\:data-indeterminate\:border-danger-border {
2947
+ &[data-invalid] {
2948
+ &[data-indeterminate] {
2949
+ border-color: var(--color-danger-border);
2950
+ }
2951
+ }
2952
+ }
2760
2953
  .data-resizing\:bg-border-interactive {
2761
2954
  &[data-resizing] {
2762
2955
  background-color: var(--color-border-interactive);
@@ -2901,6 +3094,11 @@
2901
3094
  grid-auto-flow: column;
2902
3095
  }
2903
3096
  }
3097
+ .md\:grid-cols-2 {
3098
+ @media (width >= 48rem) {
3099
+ grid-template-columns: repeat(2, minmax(0, 1fr));
3100
+ }
3101
+ }
2904
3102
  .md\:grid-cols-\[max-content_minmax\(0\,1fr\)\] {
2905
3103
  @media (width >= 48rem) {
2906
3104
  grid-template-columns: max-content minmax(0,1fr);
@@ -3681,6 +3879,62 @@
3681
3879
  width: auto;
3682
3880
  }
3683
3881
  }
3882
+ .\[\&\[data-disabled\]_\[data-ui-checkbox-description\]\]\:text-control-disabled-fg {
3883
+ &[data-disabled] [data-ui-checkbox-description] {
3884
+ color: var(--color-control-disabled-fg);
3885
+ }
3886
+ }
3887
+ .\[\&\[data-disabled\]_\[data-ui-file-upload-browse\]\]\:bg-control-disabled {
3888
+ &[data-disabled] [data-ui-file-upload-browse] {
3889
+ background-color: var(--color-control-disabled);
3890
+ }
3891
+ }
3892
+ .\[\&\[data-disabled\]_\[data-ui-file-upload-browse\]\]\:text-control-disabled-fg {
3893
+ &[data-disabled] [data-ui-file-upload-browse] {
3894
+ color: var(--color-control-disabled-fg);
3895
+ }
3896
+ }
3897
+ .\[\&\[data-disabled\]_\[data-ui-file-upload-browse\]\]\:shadow-control-disabled {
3898
+ &[data-disabled] [data-ui-file-upload-browse] {
3899
+ --tw-shadow: var(--ui-control-shadow-disabled);
3900
+ box-shadow: var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow);
3901
+ }
3902
+ }
3903
+ .\[\&\[data-disabled\]_\[data-ui-file-upload-heading\]\]\:text-control-disabled-fg {
3904
+ &[data-disabled] [data-ui-file-upload-heading] {
3905
+ color: var(--color-control-disabled-fg);
3906
+ }
3907
+ }
3908
+ .\[\&\[data-disabled\]_\[data-ui-file-upload-text\]\]\:text-control-disabled-fg {
3909
+ &[data-disabled] [data-ui-file-upload-text] {
3910
+ color: var(--color-control-disabled-fg);
3911
+ }
3912
+ }
3913
+ .\[\&\[data-disabled\]_\[data-ui-radio-description\]\]\:text-control-disabled-fg {
3914
+ &[data-disabled] [data-ui-radio-description] {
3915
+ color: var(--color-control-disabled-fg);
3916
+ }
3917
+ }
3918
+ .\[\&\[data-disabled\]_\[data-ui-slider-tick-label\]\]\:text-control-disabled-fg {
3919
+ &[data-disabled] [data-ui-slider-tick-label] {
3920
+ color: var(--color-control-disabled-fg);
3921
+ }
3922
+ }
3923
+ .\[\&\[data-disabled\]_\[data-ui-slider-tick\]\]\:text-control-disabled-fg {
3924
+ &[data-disabled] [data-ui-slider-tick] {
3925
+ color: var(--color-control-disabled-fg);
3926
+ }
3927
+ }
3928
+ .\[\&\[data-disabled\]_\[data-ui-slider-value\]\]\:text-control-disabled-fg {
3929
+ &[data-disabled] [data-ui-slider-value] {
3930
+ color: var(--color-control-disabled-fg);
3931
+ }
3932
+ }
3933
+ .\[\&\[data-disabled\]_\[data-ui-switch-description\]\]\:text-control-disabled-fg {
3934
+ &[data-disabled] [data-ui-switch-description] {
3935
+ color: var(--color-control-disabled-fg);
3936
+ }
3937
+ }
3684
3938
  .\[\[data-ui-text\]\+\&\]\:mt-2 {
3685
3939
  [data-ui-text]+& {
3686
3940
  margin-top: var(--spacing-2);
@@ -3741,6 +3995,14 @@
3741
3995
  [data-ui-select][data-mark="none"] [data-ui-select-option-indicator] {
3742
3996
  display: none;
3743
3997
  }
3998
+ [data-ui-select-native]:disabled {
3999
+ --ui-control-bg: var(--ui-control-bg-disabled);
4000
+ --ui-control-bg-hover: var(--ui-control-bg-disabled);
4001
+ --ui-control-bg-active: var(--ui-control-bg-disabled);
4002
+ --ui-control-fg: var(--ui-control-fg-disabled);
4003
+ --ui-control-placeholder: var(--ui-control-placeholder-disabled);
4004
+ --ui-control-shadow: var(--ui-control-shadow-disabled);
4005
+ }
3744
4006
  [data-ui-select-native]:is(:hover, :active):not(:focus):not(:disabled):not([aria-invalid="true"]) {
3745
4007
  --ui-control-shadow: var(--ui-control-shadow-hover);
3746
4008
  }
@@ -3868,6 +4130,14 @@
3868
4130
  --ui-date-picker-range-bg: var(--color-accent-surface);
3869
4131
  --ui-date-picker-range-bg-hover: var(--color-accent-surface-hover);
3870
4132
  }
4133
+ [data-ui-date-picker-native]:disabled {
4134
+ --ui-control-bg: var(--ui-control-bg-disabled);
4135
+ --ui-control-bg-hover: var(--ui-control-bg-disabled);
4136
+ --ui-control-bg-active: var(--ui-control-bg-disabled);
4137
+ --ui-control-fg: var(--ui-control-fg-disabled);
4138
+ --ui-control-placeholder: var(--ui-control-placeholder-disabled);
4139
+ --ui-control-shadow: var(--ui-control-shadow-disabled);
4140
+ }
3871
4141
  [data-ui-date-picker-native]:is(:hover, :active):not(:focus):not(:disabled):not([aria-invalid="true"]) {
3872
4142
  --ui-control-shadow: var(--ui-control-shadow-hover);
3873
4143
  }
@@ -4483,8 +4753,11 @@
4483
4753
  --ui-control-bg: var(--color-surface-panel);
4484
4754
  --ui-control-bg-hover: var(--color-base-a2);
4485
4755
  --ui-control-bg-active: var(--color-base-a3);
4756
+ --ui-control-bg-disabled: var(--color-surface-panel);
4486
4757
  --ui-control-fg: var(--color-foreground);
4758
+ --ui-control-fg-disabled: var(--color-foreground-subtle);
4487
4759
  --ui-control-placeholder: var(--color-foreground-subtle);
4760
+ --ui-control-placeholder-disabled: var(--color-foreground-subtle);
4488
4761
  --ui-control-border: var(--color-border);
4489
4762
  --ui-control-border-hover: var(--ui-control-border);
4490
4763
  @supports (color: color-mix(in lab, red, red)) {
@@ -4498,6 +4771,7 @@
4498
4771
  }
4499
4772
  --ui-control-border-invalid-focus: var(--color-danger-9);
4500
4773
  --ui-control-shadow: var(--ui-shadow-border);
4774
+ --ui-control-shadow-disabled: var(--ui-shadow-border);
4501
4775
  --ui-control-shadow-hover: 0 0 0 1px var(--ui-control-border-hover);
4502
4776
  --ui-control-shadow-focus: 0 0 0 1px var(--ui-control-border-focus);
4503
4777
  --ui-control-shadow-invalid: 0 0 0 1px var(--ui-control-border-invalid);
@@ -4542,8 +4816,11 @@
4542
4816
  --color-control: var(--ui-control-bg);
4543
4817
  --color-control-hover: var(--ui-control-bg-hover);
4544
4818
  --color-control-active: var(--ui-control-bg-active);
4819
+ --color-control-disabled: var(--ui-control-bg-disabled);
4545
4820
  --color-control-fg: var(--ui-control-fg);
4821
+ --color-control-disabled-fg: var(--ui-control-fg-disabled);
4546
4822
  --color-control-placeholder: var(--ui-control-placeholder);
4823
+ --color-control-placeholder-disabled: var(--ui-control-placeholder-disabled);
4547
4824
  --color-control-border: var(--ui-control-border);
4548
4825
  --color-control-border-focus: var(--ui-control-border-focus);
4549
4826
  --color-control-border-invalid: var(--ui-control-border-invalid);
@@ -4717,19 +4994,37 @@
4717
4994
  [data-ui-control]:where([data-variant="outline"], [data-variant="enhanced"]):focus-within:not([data-invalid]), [data-ui-control]:where([data-variant="outline"], [data-variant="enhanced"])[data-state="open"]:not([data-invalid]) {
4718
4995
  --ui-control-shadow: var(--ui-control-shadow-focus);
4719
4996
  }
4720
- [data-ui-control]:where([data-variant="outline"], [data-variant="enhanced"])[data-invalid] {
4997
+ [data-ui-control]:where([data-variant="outline"], [data-variant="enhanced"], [data-variant="filled"])[data-invalid] {
4721
4998
  --ui-control-shadow: var(--ui-control-shadow-invalid);
4722
4999
  }
4723
- [data-ui-control]:where([data-variant="outline"], [data-variant="enhanced"])[data-invalid]:is(:hover, :active):not(:focus-within):not([data-state="open"]):not([data-disabled]) {
5000
+ [data-ui-control]:where([data-variant="outline"], [data-variant="enhanced"], [data-variant="filled"])[data-invalid]:is(:hover, :active):not(:focus-within):not([data-state="open"]):not([data-disabled]) {
4724
5001
  --ui-control-shadow: var(--ui-control-shadow-invalid-hover);
4725
5002
  }
4726
- [data-ui-control]:where([data-variant="outline"], [data-variant="enhanced"])[data-invalid]:focus-within:not([data-disabled]), [data-ui-control]:where([data-variant="outline"], [data-variant="enhanced"])[data-invalid][data-state="open"]:not([data-disabled]) {
5003
+ [data-ui-control]:where([data-variant="outline"], [data-variant="enhanced"], [data-variant="filled"])[data-invalid]:focus-within:not([data-disabled]), [data-ui-control]:where([data-variant="outline"], [data-variant="enhanced"], [data-variant="filled"])[data-invalid][data-state="open"]:not([data-disabled]) {
4727
5004
  --ui-control-shadow: var(--ui-control-shadow-invalid-focus);
4728
5005
  box-shadow: var(--shadow-danger-focus);
4729
5006
  }
4730
5007
  [data-ui-control]:where([data-variant="outline"], [data-variant="enhanced"]):has(:focus-visible):not([data-invalid]) {
4731
5008
  box-shadow: var(--shadow-control), var(--shadow-focus);
4732
5009
  }
5010
+ [data-ui-control][data-disabled] {
5011
+ --ui-control-bg: var(--ui-control-bg-disabled);
5012
+ --ui-control-bg-hover: var(--ui-control-bg-disabled);
5013
+ --ui-control-bg-active: var(--ui-control-bg-disabled);
5014
+ --ui-control-fg: var(--ui-control-fg-disabled);
5015
+ --ui-control-placeholder: var(--ui-control-placeholder-disabled);
5016
+ --ui-control-shadow: var(--ui-control-shadow-disabled);
5017
+ }
5018
+ [data-ui-control][data-disabled] :is(input, select, textarea, button):disabled {
5019
+ color: var(--ui-control-fg-disabled);
5020
+ opacity: 1;
5021
+ -webkit-text-fill-color: var(--ui-control-fg-disabled);
5022
+ }
5023
+ [data-ui-control][data-disabled] :is(input, textarea):disabled::placeholder {
5024
+ color: var(--ui-control-placeholder-disabled);
5025
+ opacity: 1;
5026
+ -webkit-text-fill-color: var(--ui-control-placeholder-disabled);
5027
+ }
4733
5028
  }
4734
5029
  .dark {
4735
5030
  color-scheme: dark;