@vireo-ai/trellis-ui 0.1.8 → 0.1.10

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 (173) hide show
  1. package/package.json +8 -4
  2. package/packages/client/src/components/app/styles.css +1 -30
  3. package/packages/client/src/components/button/styles.css +1 -122
  4. package/packages/client/src/components/date-picker/styles.css +47 -77
  5. package/packages/client/src/components/field/styles.css +10 -0
  6. package/packages/client/src/components/file-upload/styles.css +0 -28
  7. package/packages/client/src/components/panels/styles.css +43 -0
  8. package/packages/client/src/components/radio/styles.css +26 -21
  9. package/packages/client/src/components/scroll-area/styles.css +0 -4
  10. package/packages/client/src/components/select/styles.css +0 -30
  11. package/packages/client/src/components/sidebar/styles.css +8 -0
  12. package/packages/client/src/components/toast/styles.css +14 -7
  13. package/packages/client/src/styles/components.css +1 -0
  14. package/packages/client/src/styles/generated/theme-fonts.css +5 -0
  15. package/packages/client/src/styles/generated/theme-palette.css +2656 -0
  16. package/packages/client/src/styles/generated/theme-runtime.css +2966 -0
  17. package/packages/client/src/styles/generated-sources.css +1 -1
  18. package/packages/client/src/styles/static.css +1 -0
  19. package/packages/client/src/styles/theme.css +777 -738
  20. package/packages/client/types/cdn.d.ts +1 -4
  21. package/packages/client/types/component-api.d.ts +21 -0
  22. package/packages/client/types/components/accordion/contract.d.ts +3 -2
  23. package/packages/client/types/components/accordion/index.d.ts +28 -42
  24. package/packages/client/types/components/accordion/machine.d.ts +131 -0
  25. package/packages/client/types/components/accordion/runtime-docs.d.ts +2 -0
  26. package/packages/client/types/components/action/contract.d.ts +3 -3
  27. package/packages/client/types/components/app/contract.d.ts +25 -12
  28. package/packages/client/types/components/app/index.d.ts +2 -2
  29. package/packages/client/types/components/badge/contract.d.ts +5 -5
  30. package/packages/client/types/components/box/contract.d.ts +25 -28
  31. package/packages/client/types/components/brand/contract.d.ts +2 -2
  32. package/packages/client/types/components/button/contract.d.ts +5 -5
  33. package/packages/client/types/components/card/contract.d.ts +28 -31
  34. package/packages/client/types/components/checkbox/contract.d.ts +17 -17
  35. package/packages/client/types/components/checkbox/index.d.ts +20 -26
  36. package/packages/client/types/components/checkbox/machine.d.ts +41 -0
  37. package/packages/client/types/components/checkbox/runtime-docs.d.ts +2 -0
  38. package/packages/client/types/components/common.d.ts +53 -235
  39. package/packages/client/types/components/container/contract.d.ts +11 -12
  40. package/packages/client/types/components/date-picker/contract.d.ts +21 -16
  41. package/packages/client/types/components/date-picker/index.d.ts +38 -60
  42. package/packages/client/types/components/date-picker/machine.d.ts +529 -0
  43. package/packages/client/types/components/date-picker/runtime-docs.d.ts +2 -0
  44. package/packages/client/types/components/date-picker/value.d.ts +28 -0
  45. package/packages/client/types/components/dropdown/contract.d.ts +4 -4
  46. package/packages/client/types/components/dropdown/index.d.ts +20 -45
  47. package/packages/client/types/components/dropdown/machine.d.ts +93 -0
  48. package/packages/client/types/components/dropdown/runtime-docs.d.ts +2 -0
  49. package/packages/client/types/components/field/contract.d.ts +10 -6
  50. package/packages/client/types/components/field/index.d.ts +6 -6
  51. package/packages/client/types/components/field/machine.d.ts +13 -0
  52. package/packages/client/types/components/field/runtime-docs.d.ts +2 -0
  53. package/packages/client/types/components/file-upload/contract.d.ts +7 -4
  54. package/packages/client/types/components/file-upload/index.d.ts +34 -31
  55. package/packages/client/types/components/file-upload/machine.d.ts +127 -0
  56. package/packages/client/types/components/file-upload/runtime-docs.d.ts +2 -0
  57. package/packages/client/types/components/flex/contract.d.ts +16 -17
  58. package/packages/client/types/components/frame/contract.d.ts +41 -47
  59. package/packages/client/types/components/frame/index.d.ts +2 -2
  60. package/packages/client/types/components/grid/contract.d.ts +20 -21
  61. package/packages/client/types/components/heading/contract.d.ts +1 -1
  62. package/packages/client/types/components/image/contract.d.ts +3 -3
  63. package/packages/client/types/components/input/contract.d.ts +2 -2
  64. package/packages/client/types/components/input/index.d.ts +15 -12
  65. package/packages/client/types/components/input/machine.d.ts +20 -0
  66. package/packages/client/types/components/layout.d.ts +44 -225
  67. package/packages/client/types/components/menu/contract.d.ts +14 -8
  68. package/packages/client/types/components/modal/contract.d.ts +12 -12
  69. package/packages/client/types/components/modal/index.d.ts +41 -75
  70. package/packages/client/types/components/modal/machine.d.ts +129 -0
  71. package/packages/client/types/components/modal/runtime-docs.d.ts +2 -0
  72. package/packages/client/types/components/overlay/contract.d.ts +3 -3
  73. package/packages/client/types/components/panels/contract.d.ts +39 -0
  74. package/packages/client/types/components/panels/index.d.ts +54 -0
  75. package/packages/client/types/components/panels/machine.d.ts +151 -0
  76. package/packages/client/types/components/panels/runtime-docs.d.ts +2 -0
  77. package/packages/client/types/components/radio/contract.d.ts +11 -11
  78. package/packages/client/types/components/radio/index.d.ts +19 -23
  79. package/packages/client/types/components/radio/machine.d.ts +40 -0
  80. package/packages/client/types/components/radio/runtime-docs.d.ts +2 -0
  81. package/packages/client/types/components/runtime-docs.d.ts +2 -0
  82. package/packages/client/types/components/runtime.d.ts +16 -19
  83. package/packages/client/types/components/scroll-area/contract.d.ts +4 -7
  84. package/packages/client/types/components/scroll-area/index.d.ts +23 -49
  85. package/packages/client/types/components/scroll-area/machine.d.ts +21 -0
  86. package/packages/client/types/components/scroll-area/runtime-docs.d.ts +2 -0
  87. package/packages/client/types/components/section/contract.d.ts +12 -13
  88. package/packages/client/types/components/select/contract.d.ts +19 -15
  89. package/packages/client/types/components/select/index.d.ts +42 -89
  90. package/packages/client/types/components/select/machine.d.ts +476 -0
  91. package/packages/client/types/components/select/runtime-docs.d.ts +2 -0
  92. package/packages/client/types/components/shared/controlled-open.d.ts +11 -0
  93. package/packages/client/types/components/sidebar/contract.d.ts +19 -12
  94. package/packages/client/types/components/sidebar/index.d.ts +51 -88
  95. package/packages/client/types/components/sidebar/machine.d.ts +100 -0
  96. package/packages/client/types/components/sidebar/runtime-docs.d.ts +2 -0
  97. package/packages/client/types/components/slider/contract.d.ts +3 -3
  98. package/packages/client/types/components/slider/index.d.ts +17 -21
  99. package/packages/client/types/components/slider/machine.d.ts +37 -0
  100. package/packages/client/types/components/slider/runtime-docs.d.ts +2 -0
  101. package/packages/client/types/components/stack/contract.d.ts +16 -17
  102. package/packages/client/types/components/surface-manifest.d.ts +9 -0
  103. package/packages/client/types/components/switch/contract.d.ts +11 -11
  104. package/packages/client/types/components/switch/index.d.ts +13 -18
  105. package/packages/client/types/components/switch/machine.d.ts +19 -0
  106. package/packages/client/types/components/switch/runtime-docs.d.ts +2 -0
  107. package/packages/client/types/components/table/contract.d.ts +18 -18
  108. package/packages/client/types/components/tabs/contract.d.ts +10 -5
  109. package/packages/client/types/components/tabs/index.d.ts +33 -51
  110. package/packages/client/types/components/tabs/machine.d.ts +84 -0
  111. package/packages/client/types/components/tabs/runtime-docs.d.ts +2 -0
  112. package/packages/client/types/components/text/contract.d.ts +1 -1
  113. package/packages/client/types/components/textarea/contract.d.ts +2 -2
  114. package/packages/client/types/components/toast/contract.d.ts +5 -4
  115. package/packages/client/types/components/toast/index.d.ts +38 -12
  116. package/packages/client/types/components/toast/machine.d.ts +115 -0
  117. package/packages/client/types/components/toast/runtime-docs.d.ts +2 -0
  118. package/packages/client/types/directives/index.d.ts +3 -1
  119. package/packages/client/types/directives/layout.d.ts +3 -0
  120. package/packages/client/types/directives/request.d.ts +1 -2
  121. package/packages/client/types/directives/transition.d.ts +3 -0
  122. package/packages/client/types/docs/transition-docs.d.ts +30 -0
  123. package/packages/client/types/index.d.ts +8 -40
  124. package/packages/client/types/motion/animate.d.ts +5 -44
  125. package/packages/client/types/motion/controller.d.ts +33 -0
  126. package/packages/client/types/motion/index.d.ts +43 -20
  127. package/packages/client/types/motion/owned.d.ts +5 -0
  128. package/packages/client/types/motion/plan.d.ts +46 -0
  129. package/packages/client/types/motion/recipe.d.ts +56 -0
  130. package/packages/client/types/motion/registry.d.ts +12 -0
  131. package/packages/client/types/motion/resize.d.ts +15 -0
  132. package/packages/client/types/motion/subject.d.ts +10 -0
  133. package/packages/client/types/motion/targets.d.ts +2 -5
  134. package/packages/client/types/motion/view.d.ts +7 -2
  135. package/packages/client/types/runtime/alpine-machine.d.ts +68 -0
  136. package/packages/client/types/runtime/anchored-popover.d.ts +10 -2
  137. package/packages/client/types/runtime/codecs.d.ts +16 -2
  138. package/packages/client/types/runtime/{resizable.d.ts → drag-and-drop/index.d.ts} +4 -2
  139. package/packages/client/types/runtime/engine/request.d.ts +2 -2
  140. package/packages/client/types/runtime/engine/stream.d.ts +11 -5
  141. package/packages/client/types/runtime/focus-scope.d.ts +7 -0
  142. package/packages/client/types/runtime/identity.d.ts +3 -0
  143. package/packages/client/types/runtime/index.d.ts +9 -75
  144. package/packages/client/types/runtime/merge-bindings.d.ts +1 -1
  145. package/packages/client/types/runtime/semantic-observer.d.ts +10 -0
  146. package/packages/client/types/runtime/state-machine/index.d.ts +4 -0
  147. package/packages/client/types/runtime/state-machine/machine.d.ts +83 -0
  148. package/packages/client/types/runtime/state-machine/props-change.d.ts +12 -0
  149. package/packages/client/types/runtime/transition-coordinator.d.ts +52 -0
  150. package/packages/client/types/runtime/ui.d.ts +15 -0
  151. package/packages/client/types/utils/index.d.ts +2 -1
  152. package/packages/client/types/utils/number.d.ts +2 -0
  153. package/packages/client/types/utils/object.d.ts +4 -1
  154. package/packages/server/trellis_ui/static/trellis_ui/assets/css/trellis.css +9097 -2595
  155. package/packages/server/trellis_ui/static/trellis_ui/assets/css/trellis.min.css +1 -1
  156. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/index.js +17313 -13281
  157. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/index.js.map +1 -1
  158. package/packages/server/trellis_ui/static/trellis_ui/assets/js/trellis.js +8 -15
  159. package/packages/server/trellis_ui/static/trellis_ui/assets/js/trellis.min.js +8 -15
  160. package/packages/client/types/bindings/disclosure.d.ts +0 -3
  161. package/packages/client/types/bindings/index.d.ts +0 -7
  162. package/packages/client/types/bindings/motion.d.ts +0 -3
  163. package/packages/client/types/bindings/state.d.ts +0 -3
  164. package/packages/client/types/bindings/types.d.ts +0 -33
  165. package/packages/client/types/components/combobox/contract.d.ts +0 -60
  166. package/packages/client/types/components/combobox/index.d.ts +0 -80
  167. package/packages/client/types/components/textarea/index.d.ts +0 -13
  168. package/packages/client/types/motion/presence.d.ts +0 -34
  169. package/packages/client/types/runtime/class-name.d.ts +0 -9
  170. package/packages/client/types/runtime/create.d.ts +0 -8
  171. package/packages/client/types/runtime/machine.d.ts +0 -55
  172. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/cally-TZl4LpyH.js +0 -1134
  173. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/cally-TZl4LpyH.js.map +0 -1
@@ -1,22 +1,67 @@
1
+ @import "./generated/theme-palette.css";
2
+ @import "./generated/theme-runtime.css";
1
3
  @import "./components.css";
2
4
  @import "./generated-sources.css";
3
5
 
4
6
  @custom-variant dark (&:where(.dark, .dark *):not(:where(.light, .light *)));
5
7
  @custom-variant ui-interactive (&:is([data-ui-interactive]));
6
- @custom-variant ui-interactive-surface (&:is([data-ui-interactive="surface"]));
7
8
  @custom-variant ui-active (&:is(:active, :focus-visible, [data-active], [data-highlighted]));
8
- @custom-variant ui-selected (&:is([data-selected], [aria-selected="true"], [data-current], [aria-current]:not([aria-current="false"]), [data-checked], [aria-checked="true"], [data-pressed], [aria-pressed="true"]));
9
+ @custom-variant ui-selected (&:is([data-selected="true"], [aria-selected="true"], [data-current], [aria-current]:not([aria-current="false"]), [data-checked], [aria-checked="true"], [data-pressed], [aria-pressed="true"]));
10
+
11
+ /* Keep the core authored palette available to custom components in the precompiled package. */
12
+ @source inline("{bg,text,border,ring,fill,stroke}-{neutral,accent}-{1..12}");
13
+ @source inline("{bg,text,border,ring,fill,stroke}-{neutral,accent}-a{1..12}");
14
+ @source inline("bg-canvas {bg,border,ring,fill,stroke}-surface-{0..8}");
15
+ @source inline("text-surface-{0..8}-{ink,ink-muted} shadow-elevation-{0..8}");
16
+ @source inline("rounded-{1..6} rounded-{control,surface,overlay} rounded-{control,surface,overlay}-{xs,sm,md,lg}");
17
+ @source inline("{rounded-t,rounded-r,rounded-b,rounded-l}-{control,surface,overlay}-{xs,sm,md,lg}");
18
+ @source inline("rounded-{none,full,circle}");
19
+ @source inline("gap-control-gap px-control-padding-{xs,sm,md,lg,xlg} px-badge-padding-{xs,sm,md,lg,xlg}");
20
+ @source inline("p-popover-padding px-menu-item-padding-inline");
21
+ @source inline("text-{1..13} text-{body,heading,code,label,description,metadata,menu-item}");
22
+ @source inline("text-{control,badge}-{xs,sm,md,lg,xlg}");
23
+ @source inline("font-{body,heading,code,control,badge,label,description,metadata,menu-item}");
24
+ @source inline("min-h-control-multiline-{xs,sm,md,lg,xlg}");
25
+ @source inline("size-{brand-logo,badge-close,checkbox-indicator,radio-indicator,radio-dot,slider-thumb}-{xs,sm,md,lg,xlg}");
26
+ @source inline("h-switch-track-height-{xs,sm,md,lg,xlg} w-switch-track-width-{xs,sm,md,lg,xlg} size-switch-thumb-{xs,sm,md,lg,xlg}");
27
+ @source inline("p-switch-inset data-checked:translate-x-switch-travel-{xs,sm,md,lg,xlg}");
28
+ @source inline("{h,w}-slider-track-{xs,sm,md,lg,xlg} max-w-modal-{sm,md,lg,xl}");
29
+ @source inline("border-{0..3} border-edge-{perimeter,control,separator,divider}");
30
+ @source inline("{border-t,border-r,border-b,border-l}-edge-{perimeter,control,separator,divider}");
31
+
32
+ @media (hover: hover) {
33
+ [data-ui-elevation][data-ui-interactive="surface"]:hover {
34
+ --ui-state-shadow-layers: 0 0 0 var(--border-width-edge-perimeter) var(--color-intent-neutral-edge-hover);
35
+ }
36
+ }
37
+
38
+ [data-ui-elevation][data-ui-interactive="surface"]:is(
39
+ [data-selected="true"],
40
+ [aria-selected="true"],
41
+ [data-current],
42
+ [aria-current]:not([aria-current="false"]),
43
+ [data-checked],
44
+ [aria-checked="true"],
45
+ [data-pressed],
46
+ [aria-pressed="true"]
47
+ ) {
48
+ --ui-state-shadow-layers: 0 0 0 var(--border-width-edge-perimeter) var(--color-intent-accent-edge);
49
+ }
50
+
51
+ [data-ui-elevation][data-ui-interactive="surface"]:is(:focus-visible, :has(:focus-visible)) {
52
+ --ui-state-shadow-layers: 0 0 0 var(--color-intent-accent-focus-width) var(--color-intent-accent-focus);
53
+ }
9
54
 
10
55
  /*
11
56
  Root theme for the Trellis UI component system.
12
57
 
13
58
  Token layers:
14
- 1. Primitive scales: Radix-inspired color steps, type, space, radius.
15
- 2. Semantic aliases: app, surface, foreground, border, focus, overlay.
16
- 3. Component aliases: control, button, field, panel, popover, menu, nav.
59
+ 1. Generated primitives: 1–12 color families, alpha families, surfaces, and elevation.
60
+ 2. Generated relationships: intent roles, interaction states, paired inks, and scrim.
61
+ 3. Authored recipes: local component variables and state composition.
17
62
 
18
- Project themes should override semantic and component aliases first.
19
- Primitive scale overrides are supported for full re-skinning.
63
+ Theme config regenerates the first two layers. Component recipes consume their
64
+ relationships; custom UI may use the registered Tailwind palette directly.
20
65
 
21
66
  CSS ownership:
22
67
  - TypeScript style recipes own class composition, variants, sizes, and parts.
@@ -28,320 +73,20 @@
28
73
  */
29
74
 
30
75
  @theme {
31
- --font-sans: Inter var, Lexend, ui-sans-serif, system-ui, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol", "Noto Color Emoji";
32
- --font-mono: Geist Mono, ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, "Liberation Mono", "Courier New", monospace;
33
-
34
- --text-xs: 0.75rem;
35
- --text-xs--line-height: 1rem;
36
- --text-sm: 0.875rem;
37
- --text-sm--line-height: 1.25rem;
38
- --text-base: 1rem;
39
- --text-base--line-height: 1.5rem;
40
- --text-lg: 1.125rem;
41
- --text-lg--line-height: 1.625rem;
42
- --text-xl: 1.25rem;
43
- --text-xl--line-height: 1.75rem;
44
- --text-2xl: 1.875rem;
45
- --text-2xl--line-height: 2.375rem;
46
-
47
- --font-weight-normal: 400;
48
- --font-weight-medium: 500;
49
- --font-weight-semibold: 600;
50
- --font-weight-bold: 700;
51
-
52
- --spacing-0: 0;
53
- --spacing-1: 0.25rem;
54
- --spacing-2: 0.5rem;
55
- --spacing-3: 0.75rem;
56
- --spacing-4: 1rem;
57
- --spacing-5: 1.25rem;
58
- --spacing-6: 1.5rem;
59
- --spacing-7: 1.75rem;
60
- --spacing-8: 2rem;
61
- --spacing-9: 2.25rem;
62
- --spacing-10: 2.5rem;
63
- --spacing-12: 3rem;
64
- --spacing-popover: var(--ui-popover-padding);
65
- --spacing-combobox-listbox: var(--ui-combobox-listbox-max-height);
66
- --spacing-menu-item: var(--ui-menu-item-height);
67
- --spacing-menu-item-x: var(--ui-menu-item-padding-x);
68
- --spacing-icon: var(--ui-icon-size);
69
- --spacing-icon-xs: var(--ui-icon-size-xs);
70
- --spacing-icon-sm: var(--ui-icon-size-sm);
71
- --spacing-icon-lg: var(--ui-icon-size-lg);
72
- --spacing-scrollbar: var(--ui-scrollbar-size);
73
- --spacing-scrollbar-inset: var(--ui-scrollbar-inset);
74
- --spacing-control: var(--ui-control-gap);
75
-
76
- --radius-1: 1px;
77
- --radius-2: 2px;
78
- --radius-3: 4px;
79
- --radius-4: 6px;
80
- --radius-5: 8px;
81
- --radius-6: 12px;
82
- --radius-full: 9999px;
83
- --radius-control: var(--ui-control-radius);
84
76
  --radius-scrollbar-thumb: var(--ui-scrollbar-thumb-radius);
85
-
86
- --spacing-control-xs: 1.25rem;
87
- --spacing-control-sm: 1.5rem;
88
- --spacing-control-md: 1.75rem;
89
- --spacing-control-lg: 2rem;
90
- --spacing-control-xlg: 2.25rem;
91
-
92
- --color-black-a1: rgb(0 0 0 / 0.04);
93
- --color-black-a2: rgb(0 0 0 / 0.08);
94
- --color-black-a3: rgb(0 0 0 / 0.12);
95
- --color-black-a4: rgb(0 0 0 / 0.18);
96
- --color-black-a5: rgb(0 0 0 / 0.28);
97
- --color-black-a6: rgb(0 0 0 / 0.40);
98
-
99
- --shadow-border: var(--ui-shadow-border);
100
- --shadow-border-hover: var(--ui-shadow-border-hover);
101
- --shadow-1: var(--ui-shadow-1);
102
- --shadow-2: var(--ui-shadow-2);
103
- --shadow-3: var(--ui-shadow-3);
104
- --shadow-4: var(--ui-shadow-4);
105
- --shadow-5: var(--ui-shadow-5);
106
- --shadow-6: var(--ui-shadow-6);
107
- --shadow-popover: var(--ui-popover-shadow);
108
- --shadow-panel: var(--ui-panel-shadow);
109
- --shadow-dialog: var(--ui-dialog-shadow);
110
- --shadow-modal: var(--ui-modal-shadow);
111
- --shadow-inset: inset 0 1px 1px rgb(0 0 0 / 0.04);
112
- --shadow-control: var(--ui-control-shadow);
113
- --shadow-control-disabled: var(--ui-control-shadow-disabled);
114
- --shadow-focus: 0 0 0 3px var(--color-focus-a4);
115
- --shadow-danger-focus: var(--shadow-control), 0 0 0 3px var(--color-danger-a4);
116
-
117
- --container-content: 72rem;
118
- --container-reading: 42rem;
77
+ --container-reading: var(--container-prose);
119
78
  --z-index-popover: 50;
120
79
  --z-index-dialog: 60;
121
80
  --z-index-toast: 70;
122
81
  }
123
82
 
124
- @theme {
125
- /* Base, neutral scale. */
126
- --color-base-1: #fcfcfd;
127
- --color-base-2: #f9f9fb;
128
- --color-base-3: #f0f0f3;
129
- --color-base-4: #e8e8ec;
130
- --color-base-5: #e0e1e6;
131
- --color-base-6: #d9d9e0;
132
- --color-base-7: #cdced6;
133
- --color-base-8: #b9bbc6;
134
- --color-base-9: #8b8d98;
135
- --color-base-10: #80838d;
136
- --color-base-11: #60646c;
137
- --color-base-12: #1c2024;
138
-
139
- --color-base-a1: #00005503;
140
- --color-base-a2: #00005506;
141
- --color-base-a3: #0000330f;
142
- --color-base-a4: #00002d17;
143
- --color-base-a5: #0009321f;
144
- --color-base-a6: #00002f26;
145
- --color-base-a7: #00062e32;
146
- --color-base-a8: #00083046;
147
- --color-base-a9: #00051d74;
148
- --color-base-a10: #00071b7f;
149
- --color-base-a11: #0007149f;
150
- --color-base-a12: #000509e3;
151
-
152
- /* Accent defaults to blue. Projects can remap this to any Radix scale. */
153
- --color-accent-1: #fbfdff;
154
- --color-accent-2: #f4faff;
155
- --color-accent-3: #e6f4fe;
156
- --color-accent-4: #d5efff;
157
- --color-accent-5: #c2e5ff;
158
- --color-accent-6: #acd8fc;
159
- --color-accent-7: #8ec8f6;
160
- --color-accent-8: #5eb1ef;
161
- --color-accent-9: #0090ff;
162
- --color-accent-10: #0588f0;
163
- --color-accent-11: #0d74ce;
164
- --color-accent-12: #113264;
165
-
166
- --color-accent-a1: #0080ff04;
167
- --color-accent-a2: #008cff0b;
168
- --color-accent-a3: #008ff519;
169
- --color-accent-a4: #009eff2a;
170
- --color-accent-a5: #0093ff3d;
171
- --color-accent-a6: #0088f653;
172
- --color-accent-a7: #0083eb71;
173
- --color-accent-a8: #0084e6a1;
174
- --color-accent-a9: #0090ff;
175
- --color-accent-a10: #0086f0fa;
176
- --color-accent-a11: #006dcbf2;
177
- --color-accent-a12: #002359ee;
178
-
179
- --color-danger-1: #fffcfc;
180
- --color-danger-2: #fff7f7;
181
- --color-danger-3: #feebec;
182
- --color-danger-4: #ffdbdc;
183
- --color-danger-5: #ffcdce;
184
- --color-danger-6: #fdbdbe;
185
- --color-danger-7: #f4a9aa;
186
- --color-danger-8: #eb8e90;
187
- --color-danger-9: #e5484d;
188
- --color-danger-10: #dc3e42;
189
- --color-danger-11: #ce2c31;
190
- --color-danger-12: #641723;
191
-
192
- --color-danger-a1: #ff000003;
193
- --color-danger-a2: #ff000008;
194
- --color-danger-a3: #f3000d14;
195
- --color-danger-a4: #ff000824;
196
- --color-danger-a5: #ff000632;
197
- --color-danger-a6: #f8000442;
198
- --color-danger-a7: #df000356;
199
- --color-danger-a8: #d2000571;
200
- --color-danger-a9: #db0007b7;
201
- --color-danger-a10: #d10005c1;
202
- --color-danger-a11: #c40006d3;
203
- --color-danger-a12: #55000de8;
204
-
205
- --color-success-1: #fbfefc;
206
- --color-success-2: #f4fbf6;
207
- --color-success-3: #e6f6eb;
208
- --color-success-4: #d6f1df;
209
- --color-success-5: #c4e8d1;
210
- --color-success-6: #adddc0;
211
- --color-success-7: #8eceaa;
212
- --color-success-8: #5bb98b;
213
- --color-success-9: #30a46c;
214
- --color-success-10: #2b9a66;
215
- --color-success-11: #218358;
216
- --color-success-12: #193b2d;
217
-
218
- --color-success-a1: #00c04004;
219
- --color-success-a2: #00a32f0b;
220
- --color-success-a3: #00a43319;
221
- --color-success-a4: #00a83829;
222
- --color-success-a5: #019c393b;
223
- --color-success-a6: #00963c52;
224
- --color-success-a7: #00914071;
225
- --color-success-a8: #00924ba4;
226
- --color-success-a9: #008f4acf;
227
- --color-success-a10: #008647d4;
228
- --color-success-a11: #00713fde;
229
- --color-success-a12: #002616e6;
230
-
231
- --color-warning-1: #fefdfb;
232
- --color-warning-2: #fefbe9;
233
- --color-warning-3: #fff7c2;
234
- --color-warning-4: #ffee9c;
235
- --color-warning-5: #fbe577;
236
- --color-warning-6: #f3d673;
237
- --color-warning-7: #e9c162;
238
- --color-warning-8: #e2a336;
239
- --color-warning-9: #ffc53d;
240
- --color-warning-10: #ffba18;
241
- --color-warning-11: #ab6400;
242
- --color-warning-12: #4f3422;
243
-
244
- --color-warning-a1: #c0800004;
245
- --color-warning-a2: #f4d10016;
246
- --color-warning-a3: #ffde003d;
247
- --color-warning-a4: #ffd40063;
248
- --color-warning-a5: #f8cf0088;
249
- --color-warning-a6: #eab5008c;
250
- --color-warning-a7: #dc9b009d;
251
- --color-warning-a8: #da8a00c9;
252
- --color-warning-a9: #ffb300c2;
253
- --color-warning-a10: #ffb300e7;
254
- --color-warning-a11: #ab6400;
255
- --color-warning-a12: #341500dd;
256
- }
257
-
258
- @theme {
259
- /* Semantic aliases that produce Tailwind utilities. */
260
- --color-app: var(--color-base-1);
261
- --color-chrome: var(--color-base-2);
262
- --color-chrome-alpha: color-mix(in srgb, var(--color-chrome) 86%, transparent);
263
- --color-surface-subtle: var(--color-base-2);
264
- --color-surface-panel: var(--color-base-1);
265
- --color-surface-panel-alpha: color-mix(in srgb, var(--color-surface-panel) 88%, transparent);
266
- --color-surface-raised: var(--color-base-1);
267
- --color-surface-overlay: var(--color-base-1);
268
- --color-surface-overlay-alpha: color-mix(in srgb, var(--color-surface-overlay) 92%, transparent);
269
- --color-surface-accent: var(--color-accent-9);
270
- --color-surface-accent-hover: var(--color-accent-10);
271
- --color-surface-accent-fg: var(--color-accent-contrast);
272
- --color-surface-inverse: var(--color-base-12);
273
- --color-surface-inverse-fg: var(--color-base-1);
274
- --color-foreground: var(--color-base-12);
275
- --color-foreground-muted: var(--color-base-11);
276
- --color-foreground-subtle: var(--color-base-11);
277
- --color-border: var(--color-base-a5);
278
- --color-border-interactive: var(--color-base-a6);
279
- --color-border-strong: var(--color-base-a7);
280
- --color-control: var(--ui-control-bg);
281
- --color-control-hover: var(--ui-control-bg-hover);
282
- --color-control-active: var(--ui-control-bg-active);
283
- --color-control-disabled: var(--ui-control-bg-disabled);
284
- --color-control-fg: var(--ui-control-fg);
285
- --color-control-disabled-fg: var(--ui-control-fg-disabled);
286
- --color-control-placeholder: var(--ui-control-placeholder);
287
- --color-control-placeholder-disabled: var(--ui-control-placeholder-disabled);
288
- --color-control-border: var(--ui-control-border);
289
- --color-control-border-focus: var(--ui-control-border-focus);
290
- --color-control-border-invalid: var(--ui-control-border-invalid);
291
- --color-control-border-invalid-focus: var(--ui-control-border-invalid-focus);
292
- --color-focus: var(--color-accent-8);
293
- --color-focus-a4: color-mix(in srgb, var(--color-focus) var(--ui-focus-strength), transparent);
294
- --color-overlay: rgb(0 0 0 / 0.35);
295
- --color-accent-solid: var(--color-accent-11);
296
- --color-accent-solid-hover: var(--color-accent-12);
297
- --color-accent-contrast: white;
298
- --color-accent-surface: color-mix(in srgb, var(--color-accent-9) var(--ui-accent-strength), var(--color-surface-panel));
299
- --color-accent-surface-hover: color-mix(in srgb, var(--color-accent-9) var(--ui-accent-hover-strength), var(--color-surface-panel));
300
- --color-accent-border: color-mix(in srgb, var(--color-accent-9) var(--ui-accent-border-strength), var(--color-border));
301
- --color-accent-text: var(--color-accent-11);
302
- --color-danger-solid: var(--color-danger-11);
303
- --color-danger-solid-hover: var(--color-danger-12);
304
- --color-danger-contrast: white;
305
- --color-danger-surface: var(--color-danger-3);
306
- --color-danger-surface-hover: var(--color-danger-4);
307
- --color-danger-border: var(--color-danger-7);
308
- --color-danger-text: var(--color-danger-11);
309
- --color-success-solid: var(--color-success-9);
310
- --color-success-solid-hover: var(--color-success-10);
311
- --color-success-contrast: white;
312
- --color-success-surface: var(--color-success-3);
313
- --color-success-surface-hover: var(--color-success-4);
314
- --color-success-border: var(--color-success-7);
315
- --color-success-text: var(--color-success-11);
316
- --color-warning-solid: var(--color-warning-9);
317
- --color-warning-solid-hover: var(--color-warning-10);
318
- --color-warning-contrast: var(--color-warning-12);
319
- --color-warning-surface: var(--color-warning-3);
320
- --color-warning-surface-hover: var(--color-warning-4);
321
- --color-warning-border: var(--color-warning-7);
322
- --color-warning-text: var(--color-warning-11);
323
- --color-popover: var(--ui-popover-bg);
324
- --color-popover-fg: var(--ui-popover-fg);
325
- --color-popover-border: var(--ui-popover-border);
326
- --color-toast: var(--ui-toast-bg);
327
- --color-menu-item-hover: var(--ui-menu-item-bg-hover);
328
- --color-menu-item-active: var(--ui-menu-item-bg-active);
329
- --color-menu-item-fg: var(--ui-menu-item-fg);
330
- --color-menu-item-muted: var(--ui-menu-item-fg-muted);
331
- --color-menu-item-danger-hover: var(--ui-menu-item-danger-bg-hover);
332
- --color-menu-item-danger-fg: var(--ui-menu-item-danger-fg);
333
- --color-menu-separator: var(--ui-menu-separator);
334
- --color-menu-heading-fg: var(--ui-menu-heading-fg);
335
- --color-interactive-hover: var(--ui-interactive-bg-hover);
336
- --color-interactive-active: var(--ui-interactive-bg-active);
337
- --color-interactive-selected: var(--ui-interactive-bg-selected);
338
- --color-interactive-selected-hover: var(--ui-interactive-bg-selected-hover);
339
- --color-icon: var(--ui-icon-fg);
340
- --color-scrollbar-thumb: var(--ui-scrollbar-thumb-bg);
341
- --color-scrollbar-thumb-hover: var(--ui-scrollbar-thumb-bg-hover);
342
- --shadow-interactive-hover: var(--ui-interactive-shadow-hover);
343
- --shadow-interactive-selected: var(--ui-interactive-shadow-selected);
344
- --shadow-interactive-focus: var(--ui-interactive-shadow-focus);
83
+ @theme inline {
84
+ --color-surface: var(--ui-surface-color);
85
+ --color-surface-ink: var(--ui-surface-ink);
86
+ --color-surface-ink-muted: var(--ui-surface-ink-muted);
87
+ --color-icon: var(--ui-surface-ink-muted);
88
+ --color-scrollbar-thumb: var(--color-intent-neutral-edge);
89
+ --color-scrollbar-thumb-hover: var(--color-intent-neutral-edge-hover);
345
90
  }
346
91
 
347
92
  :root,
@@ -349,309 +94,37 @@
349
94
  .dark {
350
95
  color-scheme: light;
351
96
 
352
- --ui-bg: var(--color-app);
353
- --ui-bg-subtle: var(--color-surface-subtle);
354
- --ui-fg: var(--color-foreground);
355
- --ui-fg-muted: var(--color-foreground-muted);
356
- --ui-fg-subtle: var(--color-foreground-subtle);
357
- --ui-border: var(--color-border);
358
- --ui-border-interactive: var(--color-border-interactive);
359
- --ui-interactive-bg-hover: var(--color-base-a2);
360
- --ui-interactive-bg-active: var(--color-base-a3);
361
- --ui-interactive-bg-selected: var(--color-accent-surface);
362
- --ui-interactive-bg-selected-hover: var(--color-accent-surface-hover);
363
- --ui-interactive-shadow-hover: var(--shadow-border-hover);
364
- --ui-interactive-shadow-selected: 0 0 0 1px var(--color-accent-border);
365
- --ui-interactive-shadow-focus: var(--shadow-focus), var(--shadow-border-hover);
366
- --ui-focus: var(--color-focus);
367
- --ui-focus-ring: var(--shadow-focus);
368
- --ui-overlay: var(--color-overlay);
369
- --color-black-a1: rgb(0 0 0 / 0.04);
370
- --color-black-a2: rgb(0 0 0 / 0.08);
371
- --color-black-a3: rgb(0 0 0 / 0.12);
372
- --color-black-a4: rgb(0 0 0 / 0.18);
373
- --color-black-a5: rgb(0 0 0 / 0.28);
374
- --color-black-a6: rgb(0 0 0 / 0.40);
375
- --shadow-ring-weak: var(--color-base-a3);
376
- --shadow-ring: var(--color-base-a5);
377
- --shadow-ring-strong: var(--color-base-a6);
378
- --ui-shadow-border:
379
- 0 0 0 1px var(--shadow-ring),
380
- 0 1px 2px -1px var(--color-black-a1),
381
- 0 2px 4px 0 var(--color-black-a1);
382
- --ui-shadow-border-hover:
383
- 0 0 0 1px var(--shadow-ring-strong),
384
- 0 1px 2px -1px var(--color-black-a2),
385
- 0 2px 4px 0 var(--color-black-a2);
386
- --ui-shadow-1: var(--shadow-border);
387
- --ui-shadow-2:
388
- 0 0 0 1px var(--shadow-ring),
389
- 0 1px 1px var(--color-base-a2),
390
- 0 2px 4px -2px var(--color-black-a2),
391
- 0 4px 8px -4px var(--color-black-a1);
392
- --ui-shadow-3:
393
- 0 0 0 1px var(--shadow-ring),
394
- 0 2px 4px -2px var(--color-base-a3),
395
- 0 6px 16px -6px var(--color-black-a2),
396
- 0 8px 24px -12px var(--color-black-a2);
397
- --ui-shadow-4:
398
- 0 0 0 1px var(--shadow-ring),
399
- 0 8px 24px -8px var(--color-black-a2),
400
- 0 12px 32px -16px var(--color-black-a3);
401
- --ui-shadow-5:
402
- 0 0 0 1px var(--shadow-ring),
403
- 0 12px 40px -12px var(--color-black-a3),
404
- 0 20px 64px -24px var(--color-black-a4);
405
- --ui-shadow-6:
406
- 0 0 0 1px var(--shadow-ring),
407
- 0 16px 48px -12px var(--color-black-a4),
408
- 0 24px 80px -24px var(--color-black-a5);
409
- --ui-accent-strength: 12%;
410
- --ui-accent-hover-strength: 16%;
411
- --ui-accent-border-strength: 38%;
412
- --ui-focus-strength: 24%;
413
-
414
97
  --ui-font-weight-normal: var(--font-weight-normal);
415
98
  --ui-font-weight-medium: var(--font-weight-medium);
416
99
  --ui-font-weight-semibold: var(--font-weight-semibold);
417
100
  --ui-letter-spacing: 0;
418
101
 
419
- --ui-border-width: 1px;
420
- --ui-border-width-strong: 2px;
421
-
422
102
  --ui-control-height-xs: var(--spacing-control-xs);
423
103
  --ui-control-height-sm: var(--spacing-control-sm);
424
104
  --ui-control-height-md: var(--spacing-control-md);
425
105
  --ui-control-height-lg: var(--spacing-control-lg);
426
106
  --ui-control-height-xlg: var(--spacing-control-xlg);
427
- --ui-control-padding-x: 0.75rem;
428
- --ui-control-gap: 0.5rem;
429
- --ui-control-radius: var(--radius-3);
430
- --ui-control-bg: var(--color-surface-panel);
431
- --ui-control-bg-hover: var(--color-base-a2);
432
- --ui-control-bg-active: var(--color-base-a3);
433
- --ui-control-bg-disabled: var(--color-surface-panel);
434
- --ui-control-fg: var(--color-foreground);
435
- --ui-control-fg-disabled: var(--color-foreground-subtle);
436
- --ui-control-placeholder: var(--color-foreground-subtle);
437
- --ui-control-placeholder-disabled: var(--color-foreground-subtle);
438
- --ui-control-border: var(--color-border);
439
- --ui-control-border-hover: color-mix(in srgb, var(--ui-control-border) 90%, var(--ui-fg) 10%);
440
- --ui-control-border-focus: var(--color-accent-9);
441
- --ui-control-border-invalid: var(--color-danger-border);
442
- --ui-control-border-invalid-hover: color-mix(in srgb, var(--ui-control-border-invalid) 84%, var(--color-danger-text) 16%);
443
- --ui-control-border-invalid-focus: var(--color-danger-9);
444
- --ui-control-shadow: var(--ui-shadow-border);
445
- --ui-control-shadow-disabled: var(--ui-shadow-border);
446
- --ui-control-shadow-hover: 0 0 0 1px var(--ui-control-border-hover);
447
- --ui-control-shadow-focus: 0 0 0 1px var(--ui-control-border-focus);
448
- --ui-control-shadow-invalid: 0 0 0 1px var(--ui-control-border-invalid);
449
- --ui-control-shadow-invalid-hover: 0 0 0 1px var(--ui-control-border-invalid-hover);
450
- --ui-control-shadow-invalid-focus: 0 0 0 1px var(--ui-control-border-invalid-focus);
451
- --ui-panel-shadow: var(--shadow-2);
452
-
453
- --ui-popover-bg: var(--color-surface-overlay);
454
- --ui-popover-fg: var(--color-foreground);
455
- --ui-popover-border: var(--color-border);
456
- --ui-popover-radius: var(--radius-4);
457
- --ui-popover-shadow:
458
- var(--shadow-border),
459
- 0 8px 24px -8px var(--color-black-a2),
460
- 0 12px 32px -16px var(--color-black-a3);
461
- --ui-dialog-shadow: var(--shadow-5);
462
- --ui-modal-shadow: var(--shadow-6);
463
- --ui-popover-padding: 0.375rem;
107
+ --ui-control-radius: var(--radius-control);
108
+
109
+ --ui-popover-radius: var(--radius-overlay-sm);
110
+ --ui-popover-padding: var(--spacing-popover-padding);
464
111
  --ui-popover-z: var(--z-index-popover);
465
- --ui-toast-bg: var(--color-surface-overlay);
466
112
  --ui-toast-stack-peek: 8px;
467
113
 
468
- --ui-combobox-listbox-max-height: 16rem;
469
-
470
- --ui-menu-item-height: var(--spacing-control-lg);
471
- --ui-menu-item-padding-x: 0.625rem;
472
- --ui-menu-item-radius: var(--radius-3);
473
- --ui-menu-item-bg-hover: var(--color-base-a2);
474
- --ui-menu-item-bg-active: var(--color-base-a3);
475
- --ui-menu-item-fg: var(--color-foreground);
476
- --ui-menu-item-fg-muted: var(--color-foreground-muted);
477
- --ui-menu-item-danger-fg: var(--color-danger-text);
478
- --ui-menu-item-danger-bg-hover: var(--color-danger-a3);
479
- --ui-menu-separator: var(--color-base-a5);
480
- --ui-menu-heading-fg: var(--color-foreground-muted);
481
- --ui-icon-size-xs: 0.75rem;
482
- --ui-icon-size-sm: 0.875rem;
483
- --ui-icon-size: var(--ui-icon-size-sm);
484
- --ui-icon-size-lg: 1rem;
485
- --ui-icon-fg: var(--color-foreground-subtle);
486
- --ui-scrollbar-size: 0.375rem;
487
- --ui-scrollbar-inset: 0.125rem;
488
- --ui-scrollbar-thumb-bg: var(--color-base-a5);
489
- --ui-scrollbar-thumb-bg-hover: var(--color-base-a7);
490
- --ui-scrollbar-thumb-radius: var(--radius-full);
114
+ --ui-select-listbox-max-height: var(--spacing-select-listbox);
491
115
 
492
- --color-control: var(--ui-control-bg);
493
- --color-control-hover: var(--ui-control-bg-hover);
494
- --color-control-active: var(--ui-control-bg-active);
495
- --color-control-disabled: var(--ui-control-bg-disabled);
496
- --color-control-fg: var(--ui-control-fg);
497
- --color-control-disabled-fg: var(--ui-control-fg-disabled);
498
- --color-control-placeholder: var(--ui-control-placeholder);
499
- --color-control-placeholder-disabled: var(--ui-control-placeholder-disabled);
500
- --color-control-border: var(--ui-control-border);
501
- --color-control-border-focus: var(--ui-control-border-focus);
502
- --color-control-border-invalid: var(--ui-control-border-invalid);
503
- --color-control-border-invalid-focus: var(--ui-control-border-invalid-focus);
504
- --color-focus: var(--color-accent-8);
505
- --color-focus-a4: color-mix(in srgb, var(--color-focus) var(--ui-focus-strength), transparent);
506
- --color-accent-solid: var(--color-accent-11);
507
- --color-accent-solid-hover: var(--color-accent-12);
508
- --color-accent-surface: color-mix(in srgb, var(--color-accent-9) var(--ui-accent-strength), var(--color-surface-panel));
509
- --color-accent-surface-hover: color-mix(in srgb, var(--color-accent-9) var(--ui-accent-hover-strength), var(--color-surface-panel));
510
- --color-accent-border: color-mix(in srgb, var(--color-accent-9) var(--ui-accent-border-strength), var(--color-border));
511
- --color-danger-solid: var(--color-danger-11);
512
- --color-danger-solid-hover: var(--color-danger-12);
513
- --color-danger-contrast: white;
514
- --color-success-solid: var(--color-success-9);
515
- --color-success-solid-hover: var(--color-success-10);
516
- --color-success-contrast: white;
517
- --color-success-surface: var(--color-success-3);
518
- --color-success-surface-hover: var(--color-success-4);
519
- --color-success-border: var(--color-success-7);
520
- --color-warning-solid: var(--color-warning-9);
521
- --color-warning-solid-hover: var(--color-warning-10);
522
- --color-warning-contrast: var(--color-warning-12);
523
- --color-warning-surface: var(--color-warning-3);
524
- --color-warning-surface-hover: var(--color-warning-4);
525
- --color-warning-border: var(--color-warning-7);
526
- --color-popover: var(--ui-popover-bg);
527
- --color-popover-fg: var(--ui-popover-fg);
528
- --color-popover-border: var(--ui-popover-border);
529
- --color-toast: var(--ui-toast-bg);
530
- --color-menu-item-hover: var(--ui-menu-item-bg-hover);
531
- --color-menu-item-active: var(--ui-menu-item-bg-active);
532
- --color-menu-item-fg: var(--ui-menu-item-fg);
533
- --color-menu-item-muted: var(--ui-menu-item-fg-muted);
534
- --color-menu-item-danger-hover: var(--ui-menu-item-danger-bg-hover);
535
- --color-menu-item-danger-fg: var(--ui-menu-item-danger-fg);
536
- --color-menu-separator: var(--ui-menu-separator);
537
- --color-menu-heading-fg: var(--ui-menu-heading-fg);
538
- --color-interactive-hover: var(--ui-interactive-bg-hover);
539
- --color-interactive-active: var(--ui-interactive-bg-active);
540
- --color-interactive-selected: var(--ui-interactive-bg-selected);
541
- --color-interactive-selected-hover: var(--ui-interactive-bg-selected-hover);
542
- --color-icon: var(--ui-icon-fg);
543
- --color-scrollbar-thumb: var(--ui-scrollbar-thumb-bg);
544
- --color-scrollbar-thumb-hover: var(--ui-scrollbar-thumb-bg-hover);
545
- --shadow-interactive-hover: var(--ui-interactive-shadow-hover);
546
- --shadow-interactive-selected: var(--ui-interactive-shadow-selected);
547
- --shadow-interactive-focus: var(--ui-interactive-shadow-focus);
116
+ --ui-menu-item-height: var(--spacing-menu-item);
117
+ --ui-icon-size-xs: var(--spacing-icon-xs);
118
+ --ui-icon-size-sm: var(--spacing-icon-sm);
119
+ --ui-icon-size: var(--spacing-icon);
120
+ --ui-icon-size-lg: var(--spacing-icon-lg);
121
+ --ui-scrollbar-size: var(--spacing-scrollbar);
122
+ --ui-scrollbar-inset: var(--spacing-scrollbar-inset);
123
+ --ui-scrollbar-thumb-radius: var(--radius-full);
548
124
  }
549
125
 
550
126
  .light {
551
- --color-base-1: #fcfcfd;
552
- --color-base-2: #f9f9fb;
553
- --color-base-3: #f0f0f3;
554
- --color-base-4: #e8e8ec;
555
- --color-base-5: #e0e1e6;
556
- --color-base-6: #d9d9e0;
557
- --color-base-7: #cdced6;
558
- --color-base-8: #b9bbc6;
559
- --color-base-9: #8b8d98;
560
- --color-base-10: #80838d;
561
- --color-base-11: #60646c;
562
- --color-base-12: #1c2024;
563
-
564
- --color-base-a1: #00005503;
565
- --color-base-a2: #00005506;
566
- --color-base-a3: #0000330f;
567
- --color-base-a4: #00002d17;
568
- --color-base-a5: #0009321f;
569
- --color-base-a6: #00002f26;
570
- --color-base-a7: #00062e32;
571
- --color-base-a8: #00083046;
572
- --color-base-a9: #00051d74;
573
- --color-base-a10: #00071b7f;
574
- --color-base-a11: #0007149f;
575
- --color-base-a12: #000509e3;
576
-
577
- --color-app: var(--color-base-1);
578
- --color-chrome: var(--color-base-2);
579
- --color-chrome-alpha: color-mix(in srgb, var(--color-chrome) 86%, transparent);
580
- --color-surface-subtle: var(--color-base-2);
581
- --color-surface-panel: var(--color-base-1);
582
- --color-surface-panel-alpha: color-mix(in srgb, var(--color-surface-panel) 88%, transparent);
583
- --color-surface-raised: var(--color-base-1);
584
- --color-surface-overlay: var(--color-base-1);
585
- --color-surface-overlay-alpha: color-mix(in srgb, var(--color-surface-overlay) 92%, transparent);
586
- --color-surface-inverse: var(--color-base-12);
587
- --color-surface-inverse-fg: var(--color-base-1);
588
- --color-foreground: var(--color-base-12);
589
- --color-foreground-muted: var(--color-base-11);
590
- --color-foreground-subtle: var(--color-base-11);
591
- --color-border: var(--color-base-a5);
592
- --color-border-interactive: var(--color-base-a6);
593
- --color-border-strong: var(--color-base-a7);
594
- --color-overlay: rgb(0 0 0 / 0.35);
595
- --ui-accent-strength: 12%;
596
- --ui-accent-hover-strength: 16%;
597
- --ui-accent-border-strength: 38%;
598
- --ui-focus-strength: 24%;
599
- --color-accent-contrast: white;
600
- --color-accent-text: var(--color-accent-11);
601
- --color-danger-surface: var(--color-danger-3);
602
- --color-danger-surface-hover: var(--color-danger-4);
603
- --color-danger-border: var(--color-danger-7);
604
- --color-danger-text: var(--color-danger-11);
605
- --color-success-text: var(--color-success-11);
606
- --color-warning-text: var(--color-warning-11);
607
- --color-black-a1: rgb(0 0 0 / 0.04);
608
- --color-black-a2: rgb(0 0 0 / 0.08);
609
- --color-black-a3: rgb(0 0 0 / 0.12);
610
- --color-black-a4: rgb(0 0 0 / 0.18);
611
- --color-black-a5: rgb(0 0 0 / 0.28);
612
- --color-black-a6: rgb(0 0 0 / 0.40);
613
- --shadow-ring-weak: var(--color-base-a3);
614
- --shadow-ring: var(--color-base-a5);
615
- --shadow-ring-strong: var(--color-base-a6);
616
- --ui-shadow-border:
617
- 0 0 0 1px var(--shadow-ring),
618
- 0 1px 2px -1px var(--color-black-a1),
619
- 0 2px 4px 0 var(--color-black-a1);
620
- --ui-shadow-border-hover:
621
- 0 0 0 1px var(--shadow-ring-strong),
622
- 0 1px 2px -1px var(--color-black-a2),
623
- 0 2px 4px 0 var(--color-black-a2);
624
- --ui-shadow-1: var(--shadow-border);
625
- --ui-shadow-2:
626
- 0 0 0 1px var(--shadow-ring),
627
- 0 1px 1px var(--color-base-a2),
628
- 0 2px 4px -2px var(--color-black-a2),
629
- 0 4px 8px -4px var(--color-black-a1);
630
- --ui-shadow-3:
631
- 0 0 0 1px var(--shadow-ring),
632
- 0 2px 4px -2px var(--color-base-a3),
633
- 0 6px 16px -6px var(--color-black-a2),
634
- 0 8px 24px -12px var(--color-black-a2);
635
- --ui-shadow-4:
636
- 0 0 0 1px var(--shadow-ring),
637
- 0 8px 24px -8px var(--color-black-a2),
638
- 0 12px 32px -16px var(--color-black-a3);
639
- --ui-shadow-5:
640
- 0 0 0 1px var(--shadow-ring),
641
- 0 12px 40px -12px var(--color-black-a3),
642
- 0 20px 64px -24px var(--color-black-a4);
643
- --ui-shadow-6:
644
- 0 0 0 1px var(--shadow-ring),
645
- 0 16px 48px -12px var(--color-black-a4),
646
- 0 24px 80px -24px var(--color-black-a5);
647
- --ui-panel-shadow: var(--shadow-2);
648
- --ui-popover-shadow:
649
- var(--shadow-border),
650
- 0 8px 24px -8px var(--color-black-a2),
651
- 0 12px 32px -16px var(--color-black-a3);
652
- --ui-dialog-shadow: var(--shadow-5);
653
- --ui-modal-shadow: var(--shadow-6);
654
- --ui-toast-bg: var(--color-surface-overlay);
127
+ color-scheme: light;
655
128
  }
656
129
 
657
130
  @utility max-h-xs {
@@ -678,169 +151,735 @@
678
151
  max-height: 65ch;
679
152
  }
680
153
 
154
+ @utility ui-edge {
155
+ box-shadow: 0 0 0 var(--border-width-edge-control) var(--color-intent-neutral-edge);
156
+ }
157
+
158
+ @utility ui-focus-ring {
159
+ box-shadow: 0 0 0 var(--color-intent-accent-focus-width) var(--color-intent-accent-focus);
160
+ }
161
+
162
+ @utility ui-focus-ring-inset {
163
+ box-shadow: inset 0 0 0 var(--color-intent-accent-focus-width) var(--color-intent-accent-focus);
164
+ }
165
+
681
166
  @layer components {
682
- [data-ui-control]:where([data-variant="outline"], [data-variant="enhanced"]):is(:hover, :active):not(:focus-within):not([data-state="open"]):not([data-disabled]):not([data-invalid]) {
683
- --ui-control-shadow: var(--ui-control-shadow-hover);
167
+ /* Disabled is one terminal interaction treatment across every control anatomy. */
168
+ :is(
169
+ [data-ui-action-recipe]:is(:disabled, [aria-disabled="true"]):not([data-ui-loading]),
170
+ [data-ui-action-recipe][data-disabled],
171
+ [data-ui-control][data-ui-control-recipe]:is(
172
+ [data-disabled],
173
+ :disabled,
174
+ :has(:disabled):not(:has(:enabled))
175
+ ),
176
+ [data-ui-selection-root]:is([data-disabled], :has(:disabled):not(:has(:enabled)))
177
+ ) {
178
+ pointer-events: none;
179
+ opacity: var(--opacity-interaction-disabled);
180
+ }
181
+
182
+ /* Shared action treatment: Button and interactive Badge. */
183
+ [data-ui-action-recipe] {
184
+ --ui-action-text: var(--color-intent-neutral-text);
185
+ --ui-action-text-hover: var(--color-intent-neutral-text-hover);
186
+ --ui-action-soft: var(--color-intent-neutral-soft);
187
+ --ui-action-soft-hover: var(--color-intent-neutral-soft-hover);
188
+ --ui-action-soft-pressed: var(--color-intent-neutral-soft-pressed);
189
+ --ui-action-soft-ink: var(--color-intent-neutral-soft-ink);
190
+ --ui-action-solid: var(--color-intent-neutral-solid);
191
+ --ui-action-solid-hover: var(--color-intent-neutral-solid-hover);
192
+ --ui-action-solid-pressed: var(--color-intent-neutral-solid-pressed);
193
+ --ui-action-solid-ink: var(--color-intent-neutral-solid-ink);
194
+ --ui-action-edge: var(--color-intent-neutral-edge);
195
+ --ui-action-edge-hover: var(--color-intent-neutral-edge-hover);
196
+ --ui-action-edge-strong: var(--color-intent-neutral-edge-strong);
197
+ --ui-action-focus: var(--color-intent-neutral-focus);
198
+ --ui-action-focus-width: var(--color-intent-neutral-focus-width);
199
+ }
200
+
201
+ [data-ui-action-recipe][data-color="accent"] {
202
+ --ui-action-text: var(--color-intent-accent-text);
203
+ --ui-action-text-hover: var(--color-intent-accent-text-hover);
204
+ --ui-action-soft: var(--color-intent-accent-soft);
205
+ --ui-action-soft-hover: var(--color-intent-accent-soft-hover);
206
+ --ui-action-soft-pressed: var(--color-intent-accent-soft-pressed);
207
+ --ui-action-soft-ink: var(--color-intent-accent-soft-ink);
208
+ --ui-action-solid: var(--color-intent-accent-solid);
209
+ --ui-action-solid-hover: var(--color-intent-accent-solid-hover);
210
+ --ui-action-solid-pressed: var(--color-intent-accent-solid-pressed);
211
+ --ui-action-solid-ink: var(--color-intent-accent-solid-ink);
212
+ --ui-action-edge: var(--color-intent-accent-edge);
213
+ --ui-action-edge-hover: var(--color-intent-accent-edge-hover);
214
+ --ui-action-edge-strong: var(--color-intent-accent-edge-strong);
215
+ --ui-action-focus: var(--color-intent-accent-focus);
216
+ --ui-action-focus-width: var(--color-intent-accent-focus-width);
217
+ }
218
+
219
+ [data-ui-action-recipe][data-color="success"] {
220
+ --ui-action-text: var(--color-intent-success-text);
221
+ --ui-action-text-hover: var(--color-intent-success-text-hover);
222
+ --ui-action-soft: var(--color-intent-success-soft);
223
+ --ui-action-soft-hover: var(--color-intent-success-soft-hover);
224
+ --ui-action-soft-pressed: var(--color-intent-success-soft-pressed);
225
+ --ui-action-soft-ink: var(--color-intent-success-soft-ink);
226
+ --ui-action-solid: var(--color-intent-success-solid);
227
+ --ui-action-solid-hover: var(--color-intent-success-solid-hover);
228
+ --ui-action-solid-pressed: var(--color-intent-success-solid-pressed);
229
+ --ui-action-solid-ink: var(--color-intent-success-solid-ink);
230
+ --ui-action-edge: var(--color-intent-success-edge);
231
+ --ui-action-edge-hover: var(--color-intent-success-edge-hover);
232
+ --ui-action-edge-strong: var(--color-intent-success-edge-strong);
233
+ --ui-action-focus: var(--color-intent-success-focus);
234
+ --ui-action-focus-width: var(--color-intent-success-focus-width);
235
+ }
236
+
237
+ [data-ui-action-recipe][data-color="warning"] {
238
+ --ui-action-text: var(--color-intent-warning-text);
239
+ --ui-action-text-hover: var(--color-intent-warning-text-hover);
240
+ --ui-action-soft: var(--color-intent-warning-soft);
241
+ --ui-action-soft-hover: var(--color-intent-warning-soft-hover);
242
+ --ui-action-soft-pressed: var(--color-intent-warning-soft-pressed);
243
+ --ui-action-soft-ink: var(--color-intent-warning-soft-ink);
244
+ --ui-action-solid: var(--color-intent-warning-solid);
245
+ --ui-action-solid-hover: var(--color-intent-warning-solid-hover);
246
+ --ui-action-solid-pressed: var(--color-intent-warning-solid-pressed);
247
+ --ui-action-solid-ink: var(--color-intent-warning-solid-ink);
248
+ --ui-action-edge: var(--color-intent-warning-edge);
249
+ --ui-action-edge-hover: var(--color-intent-warning-edge-hover);
250
+ --ui-action-edge-strong: var(--color-intent-warning-edge-strong);
251
+ --ui-action-focus: var(--color-intent-warning-focus);
252
+ --ui-action-focus-width: var(--color-intent-warning-focus-width);
253
+ }
254
+
255
+ [data-ui-action-recipe][data-color="danger"] {
256
+ --ui-action-text: var(--color-intent-danger-text);
257
+ --ui-action-text-hover: var(--color-intent-danger-text-hover);
258
+ --ui-action-soft: var(--color-intent-danger-soft);
259
+ --ui-action-soft-hover: var(--color-intent-danger-soft-hover);
260
+ --ui-action-soft-pressed: var(--color-intent-danger-soft-pressed);
261
+ --ui-action-soft-ink: var(--color-intent-danger-soft-ink);
262
+ --ui-action-solid: var(--color-intent-danger-solid);
263
+ --ui-action-solid-hover: var(--color-intent-danger-solid-hover);
264
+ --ui-action-solid-pressed: var(--color-intent-danger-solid-pressed);
265
+ --ui-action-solid-ink: var(--color-intent-danger-solid-ink);
266
+ --ui-action-edge: var(--color-intent-danger-edge);
267
+ --ui-action-edge-hover: var(--color-intent-danger-edge-hover);
268
+ --ui-action-edge-strong: var(--color-intent-danger-edge-strong);
269
+ --ui-action-focus: var(--color-intent-danger-focus);
270
+ --ui-action-focus-width: var(--color-intent-danger-focus-width);
271
+ }
272
+
273
+ [data-ui-action-recipe]:where([data-variant="ghost"], [data-variant="link"]) {
274
+ color: var(--ui-action-text);
275
+ background-color: transparent;
276
+ box-shadow: none;
277
+ }
278
+
279
+ [data-ui-action-recipe][data-variant="soft"] {
280
+ color: var(--ui-action-soft-ink);
281
+ background-color: var(--ui-action-soft);
282
+ box-shadow: none;
283
+ }
284
+
285
+ /* Selected values need one more step of separation from their control surface than informational badges. */
286
+ [data-ui-select-chip][data-variant="soft"] {
287
+ background-color: var(--ui-action-soft-hover);
288
+ }
289
+
290
+ [data-ui-action-recipe][data-variant="surface"] {
291
+ color: var(--ui-action-text);
292
+ background-color: var(--color-interaction-hover);
293
+ box-shadow: 0 0 0 var(--border-width-edge-control) var(--ui-action-edge);
294
+ }
295
+
296
+ [data-ui-action-recipe][data-variant="outline"] {
297
+ color: var(--ui-action-text);
298
+ background-color: transparent;
299
+ box-shadow: 0 0 0 var(--border-width-edge-control) var(--ui-action-edge);
300
+ }
301
+
302
+ [data-ui-action-recipe][data-variant="solid"] {
303
+ color: var(--ui-action-solid-ink);
304
+ background-color: var(--ui-action-solid);
305
+ box-shadow: var(--shadow-elevation-1);
306
+ }
307
+
308
+ :is([data-ui-button], [data-ui-badge][data-interactive]):focus-visible {
309
+ box-shadow: 0 0 0 var(--ui-action-focus-width) var(--ui-action-focus);
310
+ }
311
+
312
+ :is([data-ui-button], [data-ui-badge][data-interactive]):where([data-variant="surface"], [data-variant="outline"]):hover:not(:disabled):not([aria-disabled="true"]) {
313
+ color: var(--ui-action-text-hover);
314
+ background-color: var(--color-interaction-hover);
315
+ box-shadow: 0 0 0 var(--border-width-edge-control) var(--ui-action-edge-hover);
316
+ }
317
+
318
+ :is([data-ui-button], [data-ui-badge][data-interactive])[data-variant="ghost"]:hover:not(:disabled):not([aria-disabled="true"]) {
319
+ color: var(--ui-action-text-hover);
320
+ background-color: var(--color-interaction-hover);
321
+ }
322
+
323
+ :is([data-ui-button], [data-ui-badge][data-interactive])[data-variant="link"]:hover:not(:disabled):not([aria-disabled="true"]) {
324
+ color: var(--ui-action-text-hover);
325
+ }
326
+
327
+ :is([data-ui-button], [data-ui-badge][data-interactive])[data-variant="soft"]:hover:not(:disabled):not([aria-disabled="true"]) {
328
+ background-color: var(--ui-action-soft-hover);
329
+ }
330
+
331
+ :is([data-ui-button], [data-ui-badge][data-interactive])[data-variant="solid"]:hover:not(:disabled):not([aria-disabled="true"]) {
332
+ background-color: var(--ui-action-solid-hover);
333
+ }
334
+
335
+ :is([data-ui-button], [data-ui-badge][data-interactive])[data-variant="soft"]:active:not(:disabled):not([aria-disabled="true"]) {
336
+ background-color: var(--ui-action-soft-pressed);
337
+ }
338
+
339
+ :is([data-ui-button], [data-ui-badge][data-interactive])[data-variant="solid"]:active:not(:disabled):not([aria-disabled="true"]) {
340
+ background-color: var(--ui-action-solid-pressed);
341
+ }
342
+
343
+ :is([data-ui-button], [data-ui-badge][data-interactive]):where([data-variant="ghost"], [data-variant="surface"], [data-variant="outline"]):active:not(:disabled):not([aria-disabled="true"]) {
344
+ background-color: var(--color-interaction-pressed);
345
+ }
346
+
347
+ [data-ui-badge-close]:hover,
348
+ [data-ui-badge-close]:focus-visible {
349
+ background-color: color-mix(in srgb, currentColor 12%, transparent);
350
+ }
351
+
352
+ [data-ui-badge-close]:focus-visible {
353
+ box-shadow: 0 0 0 1px currentColor;
354
+ }
355
+
356
+ /* Feedback surface treatment: Toast. */
357
+ [data-ui-toast-recipe] {
358
+ --ui-toast-text: var(--color-intent-neutral-text);
359
+ --ui-toast-soft: var(--color-intent-neutral-soft);
360
+ --ui-toast-soft-ink: var(--color-intent-neutral-soft-ink);
361
+ --ui-toast-soft-ink-muted: var(--color-intent-neutral-soft-ink-muted);
362
+ --ui-toast-solid: var(--color-intent-neutral-solid);
363
+ --ui-toast-solid-ink: var(--color-intent-neutral-solid-ink);
364
+ --ui-toast-edge: var(--color-intent-neutral-edge);
365
+ --ui-toast-edge-strong: var(--color-intent-neutral-edge-strong);
366
+ --ui-toast-focus: var(--color-intent-neutral-focus);
367
+ --ui-toast-focus-width: var(--color-intent-neutral-focus-width);
368
+ --ui-toast-ink: var(--ui-surface-ink);
369
+ --ui-toast-ink-muted: var(--ui-surface-ink-muted);
370
+ color: var(--ui-toast-ink);
371
+ background-color: var(--ui-surface-color);
372
+ }
373
+
374
+ [data-ui-toast-recipe][data-color="accent"] {
375
+ --ui-toast-text: var(--color-intent-accent-text);
376
+ --ui-toast-soft: var(--color-intent-accent-soft);
377
+ --ui-toast-soft-ink: var(--color-intent-accent-soft-ink);
378
+ --ui-toast-soft-ink-muted: var(--color-intent-accent-soft-ink-muted);
379
+ --ui-toast-solid: var(--color-intent-accent-solid);
380
+ --ui-toast-solid-ink: var(--color-intent-accent-solid-ink);
381
+ --ui-toast-edge: var(--color-intent-accent-edge);
382
+ --ui-toast-edge-strong: var(--color-intent-accent-edge-strong);
383
+ --ui-toast-focus: var(--color-intent-accent-focus);
384
+ --ui-toast-focus-width: var(--color-intent-accent-focus-width);
385
+ }
386
+
387
+ [data-ui-toast-recipe][data-color="success"] {
388
+ --ui-toast-text: var(--color-intent-success-text);
389
+ --ui-toast-soft: var(--color-intent-success-soft);
390
+ --ui-toast-soft-ink: var(--color-intent-success-soft-ink);
391
+ --ui-toast-soft-ink-muted: var(--color-intent-success-soft-ink-muted);
392
+ --ui-toast-solid: var(--color-intent-success-solid);
393
+ --ui-toast-solid-ink: var(--color-intent-success-solid-ink);
394
+ --ui-toast-edge: var(--color-intent-success-edge);
395
+ --ui-toast-edge-strong: var(--color-intent-success-edge-strong);
396
+ --ui-toast-focus: var(--color-intent-success-focus);
397
+ --ui-toast-focus-width: var(--color-intent-success-focus-width);
398
+ }
399
+
400
+ [data-ui-toast-recipe][data-color="warning"] {
401
+ --ui-toast-text: var(--color-intent-warning-text);
402
+ --ui-toast-soft: var(--color-intent-warning-soft);
403
+ --ui-toast-soft-ink: var(--color-intent-warning-soft-ink);
404
+ --ui-toast-soft-ink-muted: var(--color-intent-warning-soft-ink-muted);
405
+ --ui-toast-solid: var(--color-intent-warning-solid);
406
+ --ui-toast-solid-ink: var(--color-intent-warning-solid-ink);
407
+ --ui-toast-edge: var(--color-intent-warning-edge);
408
+ --ui-toast-edge-strong: var(--color-intent-warning-edge-strong);
409
+ --ui-toast-focus: var(--color-intent-warning-focus);
410
+ --ui-toast-focus-width: var(--color-intent-warning-focus-width);
411
+ }
412
+
413
+ [data-ui-toast-recipe][data-color="danger"] {
414
+ --ui-toast-text: var(--color-intent-danger-text);
415
+ --ui-toast-soft: var(--color-intent-danger-soft);
416
+ --ui-toast-soft-ink: var(--color-intent-danger-soft-ink);
417
+ --ui-toast-soft-ink-muted: var(--color-intent-danger-soft-ink-muted);
418
+ --ui-toast-solid: var(--color-intent-danger-solid);
419
+ --ui-toast-solid-ink: var(--color-intent-danger-solid-ink);
420
+ --ui-toast-edge: var(--color-intent-danger-edge);
421
+ --ui-toast-edge-strong: var(--color-intent-danger-edge-strong);
422
+ --ui-toast-focus: var(--color-intent-danger-focus);
423
+ --ui-toast-focus-width: var(--color-intent-danger-focus-width);
424
+ }
425
+
426
+ [data-ui-toast-recipe][data-variant="soft"] {
427
+ --ui-toast-ink: var(--ui-toast-soft-ink);
428
+ --ui-toast-ink-muted: var(--ui-toast-soft-ink-muted);
429
+ color: var(--ui-toast-ink);
430
+ background-color: var(--ui-toast-soft);
431
+ }
432
+
433
+ [data-ui-toast-recipe][data-variant="surface"] {
434
+ --ui-state-shadow-layers: 0 0 0 var(--border-width-edge-perimeter) var(--ui-toast-edge);
435
+ }
436
+
437
+ [data-ui-toast-recipe][data-variant="outline"] {
438
+ --ui-toast-ink: var(--ui-toast-text);
439
+ --ui-toast-ink-muted: var(--ui-toast-text);
440
+ --ui-state-shadow-layers: 0 0 0 var(--border-width-edge-perimeter) var(--ui-toast-edge-strong);
441
+ color: var(--ui-toast-ink);
442
+ background-color: transparent;
443
+ }
444
+
445
+ [data-ui-toast-recipe][data-variant="solid"] {
446
+ --ui-toast-ink: var(--ui-toast-solid-ink);
447
+ --ui-toast-ink-muted: var(--ui-toast-solid-ink);
448
+ color: var(--ui-toast-ink);
449
+ background-color: var(--ui-toast-solid);
450
+ }
451
+
452
+ [data-ui-toast-marker] {
453
+ background-color: var(--ui-toast-solid);
454
+ }
455
+
456
+ [data-ui-toast-title] {
457
+ color: var(--ui-toast-ink);
458
+ }
459
+
460
+ [data-ui-toast-description] {
461
+ color: var(--ui-toast-ink-muted);
462
+ }
463
+
464
+ [data-ui-toast-close] {
465
+ color: var(--ui-toast-ink-muted);
466
+ }
467
+
468
+ [data-ui-toast-close]:hover {
469
+ color: var(--ui-toast-ink);
470
+ background-color: color-mix(in srgb, currentColor 10%, transparent);
471
+ }
472
+
473
+ [data-ui-toast-close]:focus-visible {
474
+ color: var(--ui-toast-ink);
475
+ box-shadow: 0 0 0 var(--ui-toast-focus-width) var(--ui-toast-focus);
476
+ }
477
+
478
+ /* Selection navigation treatment: Tabs. */
479
+ [data-ui-tabs-list] {
480
+ color: var(--ui-surface-ink);
481
+ }
482
+
483
+ [data-ui-tabs-list][data-variant="line"] {
484
+ box-shadow: inset 0 calc(var(--border-width-edge-separator) * -1) 0 var(--color-separator);
485
+ }
486
+
487
+ [data-ui-tabs-list][data-variant="line"][data-orientation="vertical"] {
488
+ box-shadow: inset var(--border-width-edge-separator) 0 0 var(--color-separator);
489
+ }
490
+
491
+ [data-ui-tabs-list][data-variant="segmented"] {
492
+ background-color: var(--color-interaction-hover);
493
+ box-shadow: inset 0 0 0 var(--border-width-edge-control) var(--color-intent-neutral-edge);
494
+ }
495
+
496
+ [data-ui-tabs-tab] {
497
+ color: var(--ui-surface-ink-muted);
498
+ }
499
+
500
+ [data-ui-tabs-tab]:hover:not([data-disabled]) {
501
+ color: var(--ui-surface-ink);
502
+ }
503
+
504
+ [data-ui-tabs-tab][data-selected] {
505
+ color: var(--ui-surface-ink);
506
+ }
507
+
508
+ [data-ui-tabs-tab]:focus-visible {
509
+ box-shadow: 0 0 0 var(--color-intent-accent-focus-width) var(--color-intent-accent-focus);
510
+ }
511
+
512
+ [data-ui-tabs-tab][data-disabled] {
513
+ color: var(--color-interaction-disabled-ink);
514
+ }
515
+
516
+ [data-ui-tabs-list][data-variant="subtle"] [data-ui-tabs-indicator],
517
+ [data-ui-tabs-list][data-variant="pills"] [data-ui-tabs-indicator] {
518
+ background-color: var(--color-interaction-selected);
519
+ }
520
+
521
+ [data-ui-tabs-list][data-variant="line"] [data-ui-tabs-indicator] {
522
+ background-color: var(--color-intent-accent-solid);
523
+ }
524
+
525
+ [data-ui-tabs-list][data-variant="segmented"] [data-ui-tabs-indicator] {
526
+ background-color: transparent;
527
+ }
528
+
529
+ [data-ui-tabs-list][data-variant="segmented"] [data-ui-tabs-indicator]::before {
530
+ position: absolute;
531
+ inset: var(--border-width-edge-control);
532
+ border-radius: inherit;
533
+ background-color: var(--ui-surface-color);
534
+ box-shadow: inset 0 0 0 var(--border-width-edge-control) var(--color-intent-neutral-edge);
535
+ content: "";
536
+ }
537
+
538
+ [data-ui-tabs-panel] {
539
+ color: var(--ui-surface-ink);
540
+ }
541
+
542
+ [data-ui-tabs-panel]:focus-visible {
543
+ box-shadow: 0 0 0 var(--color-intent-accent-focus-width) var(--color-intent-accent-focus);
544
+ }
545
+
546
+ /* Collection option treatment: Menu, Select, Date Picker, and Sidebar. */
547
+ [data-ui-option-recipe] {
548
+ --ui-option-text: var(--ui-surface-ink);
549
+ --ui-option-hover: var(--color-interaction-hover);
550
+ --ui-option-active: var(--color-interaction-pressed);
551
+ --ui-option-selected-background: var(--background-interaction-selection-neutral);
552
+ --ui-option-selected-background-hover: var(--background-interaction-selection-neutral-hover);
553
+ --ui-option-selected-ink: var(--color-interaction-selection-neutral-ink);
554
+ color: var(--ui-option-text);
555
+ background-color: transparent;
556
+ }
557
+
558
+ [data-ui-option-recipe][data-color="accent"] {
559
+ --ui-option-text: var(--color-intent-accent-text);
560
+ --ui-option-hover: var(--color-intent-accent-soft);
561
+ --ui-option-active: var(--color-intent-accent-soft-pressed);
562
+ --ui-option-selected-background: var(--background-interaction-selection-accent);
563
+ --ui-option-selected-background-hover: var(--background-interaction-selection-accent-hover);
564
+ --ui-option-selected-ink: var(--color-interaction-selection-accent-ink);
565
+ }
566
+
567
+ [data-ui-option-recipe][data-color="success"] {
568
+ --ui-option-text: var(--color-intent-success-text);
569
+ --ui-option-hover: var(--color-intent-success-soft);
570
+ --ui-option-active: var(--color-intent-success-soft-pressed);
571
+ --ui-option-selected-background: var(--background-interaction-selection-success);
572
+ --ui-option-selected-background-hover: var(--background-interaction-selection-success-hover);
573
+ --ui-option-selected-ink: var(--color-interaction-selection-success-ink);
574
+ }
575
+
576
+ [data-ui-option-recipe][data-color="warning"] {
577
+ --ui-option-text: var(--color-intent-warning-text);
578
+ --ui-option-hover: var(--color-intent-warning-soft);
579
+ --ui-option-active: var(--color-intent-warning-soft-pressed);
580
+ --ui-option-selected-background: var(--background-interaction-selection-warning);
581
+ --ui-option-selected-background-hover: var(--background-interaction-selection-warning-hover);
582
+ --ui-option-selected-ink: var(--color-interaction-selection-warning-ink);
583
+ }
584
+
585
+ [data-ui-option-recipe][data-color="danger"] {
586
+ --ui-option-text: var(--color-intent-danger-text);
587
+ --ui-option-hover: var(--color-intent-danger-soft);
588
+ --ui-option-active: var(--color-intent-danger-soft-pressed);
589
+ --ui-option-selected-background: var(--background-interaction-selection-danger);
590
+ --ui-option-selected-background-hover: var(--background-interaction-selection-danger-hover);
591
+ --ui-option-selected-ink: var(--color-interaction-selection-danger-ink);
592
+ }
593
+
594
+ [data-ui-option-recipe][data-variant="subtle"] {
595
+ background-color: var(--ui-option-hover);
596
+ }
597
+
598
+ [data-ui-option-recipe][data-variant="filled"] {
599
+ background-color: var(--ui-option-active);
600
+ }
601
+
602
+ [data-ui-option-recipe]:hover:not([data-disabled]),
603
+ [data-ui-option-recipe][data-selected]:hover:not([data-disabled]) {
604
+ color: var(--ui-option-text);
605
+ background-color: var(--ui-option-hover);
606
+ }
607
+
608
+ [data-ui-option-recipe]:is(:active, :focus-visible, [data-active], [data-highlighted]):not([data-disabled]) {
609
+ color: var(--ui-option-text);
610
+ background-color: var(--ui-option-active);
611
+ }
612
+
613
+ [data-ui-option-recipe]:is([data-selected], [data-current], [aria-current]:not([aria-current="false"])):not([data-disabled]) {
614
+ color: var(--ui-option-selected-ink);
615
+ background: var(--ui-option-selected-background);
616
+ }
617
+
618
+ [data-ui-option-recipe]:is([data-selected], [data-current], [aria-current]:not([aria-current="false"])):hover:not([data-disabled]) {
619
+ background: var(--ui-option-selected-background-hover);
620
+ }
621
+
622
+ [data-ui-option-recipe][data-disabled] {
623
+ pointer-events: none;
624
+ color: var(--color-interaction-disabled-ink);
625
+ background-color: transparent;
626
+ }
627
+
628
+ [data-ui-select-option-indicator] {
629
+ color: var(--color-intent-accent-text);
630
+ }
631
+
632
+ :is([data-ui-menu-label], [data-ui-select-label]) {
633
+ color: var(--ui-surface-ink-muted);
634
+ }
635
+
636
+ [data-ui-select-search] {
637
+ box-shadow: inset 0 calc(var(--border-width-edge-separator) * -1) 0 var(--color-separator);
638
+ }
639
+
640
+ [data-ui-select-create],
641
+ [data-ui-date-picker-footer] {
642
+ box-shadow: inset 0 var(--border-width-edge-separator) 0 var(--color-separator);
643
+ }
644
+
645
+ @media (min-width: 40rem) {
646
+ [data-ui-date-picker-presets][data-position="left"] {
647
+ box-shadow: inset calc(var(--border-width-edge-separator) * -1) 0 0 var(--color-separator);
648
+ }
649
+
650
+ [data-ui-date-picker-presets][data-position="right"] {
651
+ box-shadow: inset var(--border-width-edge-separator) 0 0 var(--color-separator);
652
+ }
653
+ }
654
+
655
+ [data-ui-date-picker-presets][data-position="top"] {
656
+ box-shadow: inset 0 calc(var(--border-width-edge-separator) * -1) 0 var(--color-separator);
657
+ }
658
+
659
+ [data-ui-date-picker-presets][data-position="bottom"] {
660
+ box-shadow: inset 0 var(--border-width-edge-separator) 0 var(--color-separator);
661
+ }
662
+
663
+ :is([data-ui-menu-separator], [data-ui-select-separator]) > [role="separator"],
664
+ [data-ui-select-separator] > div {
665
+ background-color: var(--color-separator);
666
+ }
667
+
668
+ /* Field and dropzone control treatments. */
669
+ [data-ui-control][data-ui-control-recipe="field"] {
670
+ color: inherit;
671
+ background-color: transparent;
672
+ box-shadow: 0 0 0 var(--border-width-edge-control) var(--color-intent-neutral-edge);
673
+ }
674
+
675
+ [data-ui-control][data-ui-control-recipe="field"][data-variant="filled"] {
676
+ background-color: var(--color-interaction-hover);
677
+ box-shadow: none;
678
+ }
679
+
680
+ [data-ui-control][data-ui-control-recipe="field"][data-variant="filled"]:is(:hover, :active):not(:focus-within):not([data-state="open"]):not([data-disabled]):not(:disabled):not([data-invalid]):not([aria-invalid="true"]) {
681
+ background-color: var(--color-interaction-pressed);
684
682
  }
685
683
 
686
- [data-ui-control]:where([data-variant="outline"], [data-variant="enhanced"]):focus-within:not([data-invalid]),
687
- [data-ui-control]:where([data-variant="outline"], [data-variant="enhanced"])[data-state="open"]:not([data-invalid]) {
688
- --ui-control-shadow: var(--ui-control-shadow-focus);
684
+ [data-ui-control][data-ui-control-recipe="field"]:is(:hover, :active):not(:focus-within):not([data-state="open"]):not([data-disabled]):not(:disabled):not([data-invalid]):not([aria-invalid="true"]) {
685
+ box-shadow: 0 0 0 var(--border-width-edge-control) var(--color-intent-neutral-edge-hover);
689
686
  }
690
687
 
691
- [data-ui-control]:where([data-variant="outline"], [data-variant="enhanced"], [data-variant="filled"])[data-invalid] {
692
- --ui-control-shadow: var(--ui-control-shadow-invalid);
688
+ [data-ui-control][data-ui-control-recipe="field"]:is(:focus-within, [data-state="open"]):not([data-disabled]):not(:disabled):not([data-invalid]):not([aria-invalid="true"]) {
689
+ box-shadow:
690
+ 0 0 0 var(--border-width-edge-control) var(--color-intent-accent-edge-strong),
691
+ 0 0 0 var(--color-intent-accent-focus-width) var(--color-intent-accent-focus);
693
692
  }
694
693
 
695
- [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]) {
696
- --ui-control-shadow: var(--ui-control-shadow-invalid-hover);
694
+ [data-ui-control][data-ui-control-recipe="field"]:is([data-invalid], [aria-invalid="true"]) {
695
+ box-shadow: 0 0 0 var(--border-width-edge-control) var(--color-intent-danger-edge, var(--color-intent-neutral-edge-strong));
697
696
  }
698
697
 
699
- [data-ui-control]:where([data-variant="outline"], [data-variant="enhanced"], [data-variant="filled"])[data-invalid]:focus-within:not([data-disabled]),
700
- [data-ui-control]:where([data-variant="outline"], [data-variant="enhanced"], [data-variant="filled"])[data-invalid][data-state="open"]:not([data-disabled]) {
701
- --ui-control-shadow: var(--ui-control-shadow-invalid-focus);
702
- box-shadow: var(--shadow-danger-focus);
698
+ [data-ui-control][data-ui-control-recipe="field"]:is([data-invalid], [aria-invalid="true"]):is(:hover, :active):not(:focus-within):not([data-state="open"]):not([data-disabled]):not(:disabled) {
699
+ box-shadow: 0 0 0 var(--border-width-edge-control) var(--color-intent-danger-edge-hover, var(--color-intent-neutral-edge-strong));
703
700
  }
704
701
 
705
- [data-ui-control]:where([data-variant="outline"], [data-variant="enhanced"]):has(:focus-visible):not([data-invalid]) {
706
- box-shadow: var(--shadow-control), var(--shadow-focus);
702
+ [data-ui-control][data-ui-control-recipe="field"]:is([data-invalid], [aria-invalid="true"]):is(:focus-within, [data-state="open"]):not([data-disabled]):not(:disabled) {
703
+ box-shadow:
704
+ 0 0 0 var(--border-width-edge-control) var(--color-intent-danger-edge-strong, var(--color-intent-neutral-edge-strong)),
705
+ 0 0 0 var(--color-intent-danger-focus-width, var(--color-intent-accent-focus-width)) var(--color-intent-danger-focus, var(--color-intent-accent-focus));
707
706
  }
708
707
 
709
- [data-ui-control][data-disabled] {
710
- --ui-control-bg: var(--ui-control-bg-disabled);
711
- --ui-control-bg-hover: var(--ui-control-bg-disabled);
712
- --ui-control-bg-active: var(--ui-control-bg-disabled);
713
- --ui-control-fg: var(--ui-control-fg-disabled);
714
- --ui-control-placeholder: var(--ui-control-placeholder-disabled);
715
- --ui-control-shadow: var(--ui-control-shadow-disabled);
708
+ [data-ui-control][data-ui-control-recipe="field"] :is(input, textarea)::placeholder {
709
+ color: var(--ui-surface-ink-muted);
710
+ opacity: 1;
711
+ }
712
+
713
+ [data-ui-control][data-ui-control-recipe="field"]:not([data-disabled]):not(:disabled) [data-ui-control-action]:hover {
714
+ color: inherit;
715
+ background-color: var(--color-interaction-hover);
716
+ }
717
+
718
+ [data-ui-control][data-ui-control-recipe="field"]:not([data-disabled]):not(:disabled) [data-ui-control-action]:focus-visible {
719
+ box-shadow: 0 0 0 var(--color-intent-accent-focus-width) var(--color-intent-accent-focus);
716
720
  }
717
721
 
718
- [data-ui-control][data-disabled] :is(input, select, textarea, button):disabled {
719
- color: var(--ui-control-fg-disabled);
722
+ [data-ui-control][data-ui-control-recipe="field"] :is(input, select, textarea, button):disabled {
723
+ color: inherit;
720
724
  opacity: 1;
721
- -webkit-text-fill-color: var(--ui-control-fg-disabled);
725
+ -webkit-text-fill-color: currentColor;
722
726
  }
723
727
 
724
- [data-ui-control][data-disabled] :is(input, textarea):disabled::placeholder {
725
- color: var(--ui-control-placeholder-disabled);
728
+ [data-ui-control][data-ui-control-recipe="field"][data-disabled] :is(input, textarea):disabled::placeholder {
729
+ color: var(--ui-surface-ink-muted);
726
730
  opacity: 1;
727
- -webkit-text-fill-color: var(--ui-control-placeholder-disabled);
731
+ -webkit-text-fill-color: currentColor;
728
732
  }
729
- }
730
733
 
731
- .dark {
732
- color-scheme: dark;
734
+ [data-ui-select-native]:disabled + [data-ui-select-native-icon] {
735
+ opacity: var(--opacity-interaction-disabled);
736
+ }
733
737
 
734
- --color-base-1: #111213;
735
- --color-base-2: #131415;
736
- --color-base-3: #151617;
737
- --color-base-4: #191a1c;
738
- --color-base-5: #1f2023;
739
- --color-base-6: #292b2f;
740
- --color-base-7: #373a40;
741
- --color-base-8: #515861;
742
- --color-base-9: #686e76;
743
- --color-base-10: #7b8088;
744
- --color-base-11: #a7abb1;
745
- --color-base-12: #edeef0;
746
- --color-base-a1: #00000000;
747
- --color-base-a2: #ffffff09;
748
- --color-base-a3: #ffffff12;
749
- --color-base-a4: #ffffff1b;
750
- --color-base-a5: #ffffff22;
751
- --color-base-a6: #ffffff2c;
752
- --color-base-a7: #ffffff3b;
753
- --color-base-a8: #ffffff55;
754
- --color-base-a9: #ffffff64;
755
- --color-base-a10: #ffffff72;
756
- --color-base-a11: #ffffffaf;
757
- --color-base-a12: #ffffffed;
758
-
759
- --color-app: var(--color-base-2);
760
- --color-chrome: var(--color-base-1);
761
- --color-chrome-alpha: color-mix(in srgb, var(--color-chrome) 86%, transparent);
762
- --color-surface-subtle: var(--color-base-1);
763
- --color-surface-panel: var(--color-base-2);
764
- --color-surface-panel-alpha: color-mix(in srgb, var(--color-surface-panel) 88%, transparent);
765
- --color-surface-raised: var(--color-base-3);
766
- --color-surface-overlay: var(--color-base-4);
767
- --color-surface-overlay-alpha: color-mix(in srgb, var(--color-surface-overlay) 92%, transparent);
768
- --color-surface-inverse: var(--color-base-12);
769
- --color-surface-inverse-fg: var(--color-base-1);
770
- --ui-toast-bg: var(--color-surface-overlay);
771
- --color-foreground: var(--color-base-12);
772
- --color-foreground-muted: var(--color-base-11);
773
- --color-foreground-subtle: var(--color-base-10);
774
- --color-border: var(--color-base-a3);
775
- --color-border-interactive: var(--color-base-a4);
776
- --color-border-strong: var(--color-base-a5);
777
- --color-overlay: rgb(0 0 0 / 0.55);
778
- --ui-accent-strength: 16%;
779
- --ui-accent-hover-strength: 20%;
780
- --ui-accent-border-strength: 46%;
781
- --ui-focus-strength: 32%;
782
- --color-accent-contrast: white;
783
- --color-accent-text: var(--color-accent-8);
784
- --color-danger-surface: var(--color-danger-a3);
785
- --color-danger-surface-hover: var(--color-danger-a4);
786
- --color-danger-border: var(--color-danger-a7);
787
- --color-danger-text: var(--color-danger-8);
788
- --color-success-text: var(--color-success-8);
789
- --color-warning-text: var(--color-warning-8);
790
- --color-black-a1: rgb(0 0 0 / 0.20);
791
- --color-black-a2: rgb(0 0 0 / 0.32);
792
- --color-black-a3: rgb(0 0 0 / 0.44);
793
- --color-black-a4: rgb(0 0 0 / 0.56);
794
- --color-black-a5: rgb(0 0 0 / 0.68);
795
- --color-black-a6: rgb(0 0 0 / 0.76);
796
- --shadow-ring-weak: var(--color-base-a3);
797
- --shadow-ring: var(--color-base-a4);
798
- --shadow-ring-strong: var(--color-base-a5);
799
- --ui-shadow-border: 0 0 0 1px var(--shadow-ring-weak);
800
- --ui-shadow-border-hover: 0 0 0 1px var(--shadow-ring);
801
- --ui-control-shadow-hover: 0 0 0 1px var(--color-base-a7);
802
- --ui-shadow-1: var(--shadow-border);
803
- --ui-shadow-2:
804
- 0 0 0 1px var(--shadow-ring-weak),
805
- 0 1px 1px var(--color-black-a2),
806
- 0 2px 4px -2px var(--color-black-a2),
807
- 0 4px 8px -4px var(--color-black-a2);
808
- --ui-shadow-3:
809
- 0 0 0 1px var(--shadow-ring),
810
- 0 2px 4px -2px var(--color-black-a2),
811
- 0 6px 16px -6px var(--color-black-a3),
812
- 0 8px 24px -12px var(--color-black-a3);
813
- --ui-shadow-4:
814
- 0 0 0 1px var(--shadow-ring),
815
- 0 8px 24px -8px var(--color-black-a3),
816
- 0 12px 32px -16px var(--color-black-a4);
817
- --ui-shadow-5:
818
- 0 0 0 1px var(--shadow-ring-strong),
819
- 0 12px 40px -12px var(--color-black-a4),
820
- 0 20px 64px -24px var(--color-black-a5);
821
- --ui-shadow-6:
822
- 0 0 0 1px var(--shadow-ring-strong),
823
- 0 16px 48px -12px var(--color-black-a5),
824
- 0 24px 80px -24px var(--color-black-a6);
825
- --ui-panel-shadow: var(--shadow-2);
826
- --ui-popover-shadow: var(--shadow-border);
827
- --ui-dialog-shadow: var(--shadow-5);
828
- --ui-modal-shadow: var(--shadow-6);
829
- }
738
+ [data-ui-control][data-ui-control-recipe="dropzone"] {
739
+ color: inherit;
740
+ background-color: transparent;
741
+ box-shadow: 0 0 0 var(--border-width-edge-control) var(--color-intent-neutral-edge);
742
+ }
743
+
744
+ [data-ui-control][data-ui-control-recipe="dropzone"]:is(:hover, :active):not(:focus-within):not([data-dragging]):not([data-disabled]):not([data-invalid]) {
745
+ background-color: var(--color-interaction-hover);
746
+ box-shadow: 0 0 0 var(--border-width-edge-control) var(--color-intent-neutral-edge-hover);
747
+ }
748
+
749
+ [data-ui-control][data-ui-control-recipe="dropzone"]:is(:focus-within, [data-dragging]):not([data-disabled]):not([data-invalid]) {
750
+ background-color: var(--color-intent-accent-soft);
751
+ box-shadow:
752
+ 0 0 0 var(--border-width-edge-control) var(--color-intent-accent-edge-strong),
753
+ 0 0 0 var(--color-intent-accent-focus-width) var(--color-intent-accent-focus);
754
+ }
755
+
756
+ [data-ui-control][data-ui-control-recipe="dropzone"][data-invalid] {
757
+ box-shadow: 0 0 0 var(--border-width-edge-control) var(--color-intent-danger-edge);
758
+ }
759
+
760
+ [data-ui-control][data-ui-control-recipe="dropzone"][data-invalid]:is(:hover, :active):not(:focus-within):not([data-dragging]):not([data-disabled]) {
761
+ background-color: var(--color-interaction-hover);
762
+ box-shadow: 0 0 0 var(--border-width-edge-control) var(--color-intent-danger-edge-hover);
763
+ }
764
+
765
+ [data-ui-control][data-ui-control-recipe="dropzone"][data-invalid]:is(:focus-within, [data-dragging]):not([data-disabled]) {
766
+ background-color: var(--color-intent-accent-soft);
767
+ box-shadow:
768
+ 0 0 0 var(--border-width-edge-control) var(--color-intent-danger-edge-strong),
769
+ 0 0 0 var(--color-intent-danger-focus-width) var(--color-intent-danger-focus);
770
+ }
771
+
772
+ [data-ui-control][data-ui-control-recipe="dropzone"] [data-ui-file-upload-browse] {
773
+ color: var(--color-intent-neutral-soft-ink);
774
+ background-color: var(--color-intent-neutral-soft);
775
+ box-shadow: 0 0 0 var(--border-width-edge-control) var(--color-intent-neutral-edge);
776
+ }
777
+
778
+ [data-ui-file-upload-item] {
779
+ color: inherit;
780
+ background-color: transparent;
781
+ box-shadow: 0 0 0 var(--border-width-edge-perimeter) var(--color-intent-neutral-edge);
782
+ }
783
+
784
+ [data-ui-file-upload-item]:hover {
785
+ box-shadow: 0 0 0 var(--border-width-edge-perimeter) var(--color-intent-neutral-edge-hover);
786
+ }
787
+
788
+ [data-ui-file-upload-item][data-invalid] {
789
+ background-color: var(--color-intent-danger-soft);
790
+ box-shadow: 0 0 0 var(--border-width-edge-perimeter) var(--color-intent-danger-edge);
791
+ }
830
792
 
831
- @supports (color: color-mix(in oklab, white, black)) {
832
- :root,
833
- .light {
834
- --shadow-ring-weak: color-mix(in oklab, var(--color-base-a3), var(--color-base-3) 25%);
835
- --shadow-ring: color-mix(in oklab, var(--color-base-a5), var(--color-base-5) 20%);
836
- --shadow-ring-strong: color-mix(in oklab, var(--color-base-a6), var(--color-base-6) 20%);
793
+ [data-ui-file-upload-remove]:hover {
794
+ color: inherit;
795
+ background-color: var(--color-interaction-hover);
837
796
  }
838
797
 
839
- .dark {
840
- --shadow-ring-weak: var(--color-base-a3);
841
- --shadow-ring: var(--color-base-a4);
842
- --shadow-ring-strong: var(--color-base-a5);
798
+ [data-ui-file-upload-remove]:focus-visible {
799
+ box-shadow: 0 0 0 var(--color-intent-accent-focus-width) var(--color-intent-accent-focus);
843
800
  }
801
+
802
+ /* Native selection treatment: Checkbox, Radio, Switch, and Slider. */
803
+ [data-ui-selection-root] {
804
+ color: inherit;
805
+ }
806
+
807
+ [data-ui-selection-recipe="indicator"],
808
+ [data-ui-selection-recipe="switch-track"],
809
+ [data-ui-selection-recipe="slider-track"] {
810
+ --ui-selection-edge: var(--color-intent-neutral-edge);
811
+ color: var(--color-intent-accent-solid-ink);
812
+ background-color: var(--ui-surface-color);
813
+ box-shadow: 0 0 0 var(--border-width-edge-control) var(--ui-selection-edge);
814
+ }
815
+
816
+ [data-ui-selection-recipe="indicator"]:is([data-checked], [data-indeterminate]),
817
+ [data-ui-selection-recipe="switch-track"][data-checked] {
818
+ --ui-selection-edge: var(--color-intent-accent-edge);
819
+ color: var(--color-intent-accent-solid-ink);
820
+ background-color: var(--color-intent-accent-solid);
821
+ }
822
+
823
+ [data-ui-selection-recipe="switch-thumb"],
824
+ [data-ui-selection-recipe="slider-thumb"] {
825
+ background-color: var(--ui-surface-color);
826
+ }
827
+
828
+ [data-ui-selection-recipe="switch-track"],
829
+ [data-ui-selection-recipe="slider-track"] {
830
+ background-color: var(--color-intent-neutral-soft);
831
+ }
832
+
833
+ [data-ui-selection-recipe="switch-thumb"][data-checked] {
834
+ &::after {
835
+ position: absolute;
836
+ inset: 0;
837
+ border-radius: inherit;
838
+ background-color: var(--color-intent-accent-solid-ink);
839
+ content: "";
840
+ }
841
+ }
842
+
843
+ [data-ui-selection-recipe="slider-range"] {
844
+ background-color: var(--color-intent-accent-solid);
845
+ }
846
+
847
+ [data-ui-selection-recipe][data-invalid] {
848
+ --ui-selection-edge: var(--color-intent-danger-edge-strong);
849
+ }
850
+
851
+ [data-ui-selection-root]:has(input:focus-visible) [data-ui-selection-recipe="indicator"],
852
+ [data-ui-selection-root]:has(input:focus-visible) [data-ui-selection-recipe="switch-track"],
853
+ [data-ui-selection-recipe="slider-thumb"][data-focus] {
854
+ box-shadow:
855
+ 0 0 0 var(--border-width-edge-control) var(--ui-selection-edge, var(--color-intent-neutral-edge)),
856
+ 0 0 0 var(--color-intent-accent-focus-width) var(--color-intent-accent-focus);
857
+ }
858
+
859
+ [data-ui-selection-recipe="slider-thumb"][data-focus] {
860
+ box-shadow:
861
+ 0 0 0 var(--color-intent-accent-focus-width) var(--color-intent-accent-focus),
862
+ var(--shadow-elevation-1);
863
+ }
864
+
865
+ [data-ui-selection-root][data-invalid]:has(input:focus-visible) [data-ui-selection-recipe="indicator"],
866
+ [data-ui-selection-root][data-invalid]:has(input:focus-visible) [data-ui-selection-recipe="switch-track"],
867
+ [data-ui-selection-recipe="slider-thumb"][data-invalid][data-focus] {
868
+ box-shadow:
869
+ 0 0 0 var(--border-width-edge-control) var(--ui-selection-edge, var(--color-intent-danger-edge-strong)),
870
+ 0 0 0 var(--color-intent-danger-focus-width) var(--color-intent-danger-focus);
871
+ }
872
+
873
+ [data-ui-selection-recipe="slider-thumb"][data-invalid][data-focus] {
874
+ box-shadow:
875
+ 0 0 0 var(--color-intent-danger-focus-width) var(--color-intent-danger-focus),
876
+ var(--shadow-elevation-1);
877
+ }
878
+
879
+ }
880
+
881
+ .dark {
882
+ color-scheme: dark;
844
883
  }
845
884
 
846
885
  html, body {