@brijbyte/agentic-ui 0.0.1-beta → 0.0.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (319) hide show
  1. package/README.md +736 -0
  2. package/dist/accordion/accordion.css +89 -0
  3. package/dist/accordion/accordion.d.ts +28 -0
  4. package/dist/accordion/accordion.d.ts.map +1 -0
  5. package/dist/accordion/accordion.js +51 -0
  6. package/dist/accordion/accordion.js.map +1 -0
  7. package/dist/accordion/accordion.module.css.d.ts +2 -0
  8. package/dist/accordion/accordion.module.js +14 -0
  9. package/dist/accordion/accordion.module.js.map +1 -0
  10. package/dist/accordion/index.d.ts +3 -0
  11. package/dist/accordion/index.js +4 -0
  12. package/dist/accordion/parts.d.ts +28 -0
  13. package/dist/accordion/parts.d.ts.map +1 -0
  14. package/dist/accordion/parts.js +55 -0
  15. package/dist/accordion/parts.js.map +1 -0
  16. package/dist/badge/badge.css +70 -0
  17. package/dist/badge/badge.d.ts +20 -0
  18. package/dist/badge/badge.d.ts.map +1 -0
  19. package/dist/badge/badge.js +21 -0
  20. package/dist/badge/badge.js.map +1 -0
  21. package/dist/badge/badge.module.css.d.ts +2 -0
  22. package/dist/badge/badge.module.js +16 -0
  23. package/dist/badge/badge.module.js.map +1 -0
  24. package/dist/badge/index.d.ts +2 -0
  25. package/dist/badge/index.js +3 -0
  26. package/dist/button/button.css +242 -0
  27. package/dist/button/button.d.ts +28 -0
  28. package/dist/button/button.d.ts.map +1 -0
  29. package/dist/button/button.js +34 -0
  30. package/dist/button/button.js.map +1 -0
  31. package/dist/button/button.module.css.d.ts +2 -0
  32. package/dist/button/button.module.js +27 -0
  33. package/dist/button/button.module.js.map +1 -0
  34. package/dist/button/index.d.ts +2 -0
  35. package/dist/button/index.js +3 -0
  36. package/dist/card/card.css +68 -0
  37. package/dist/card/card.d.ts +41 -0
  38. package/dist/card/card.d.ts.map +1 -0
  39. package/dist/card/card.js +50 -0
  40. package/dist/card/card.js.map +1 -0
  41. package/dist/card/card.module.css.d.ts +2 -0
  42. package/dist/card/card.module.js +15 -0
  43. package/dist/card/card.module.js.map +1 -0
  44. package/dist/card/index.d.ts +2 -0
  45. package/dist/card/index.js +3 -0
  46. package/dist/checkbox/checkbox.css +76 -0
  47. package/dist/checkbox/checkbox.d.ts +29 -0
  48. package/dist/checkbox/checkbox.d.ts.map +1 -0
  49. package/dist/checkbox/checkbox.js +40 -0
  50. package/dist/checkbox/checkbox.js.map +1 -0
  51. package/dist/checkbox/checkbox.module.css.d.ts +2 -0
  52. package/dist/checkbox/checkbox.module.js +11 -0
  53. package/dist/checkbox/checkbox.module.js.map +1 -0
  54. package/dist/checkbox/index.d.ts +3 -0
  55. package/dist/checkbox/index.js +4 -0
  56. package/dist/checkbox/parts.d.ts +20 -0
  57. package/dist/checkbox/parts.d.ts.map +1 -0
  58. package/dist/checkbox/parts.js +51 -0
  59. package/dist/checkbox/parts.js.map +1 -0
  60. package/dist/collapsible/collapsible.css +92 -0
  61. package/dist/collapsible/collapsible.d.ts +24 -0
  62. package/dist/collapsible/collapsible.d.ts.map +1 -0
  63. package/dist/collapsible/collapsible.js +44 -0
  64. package/dist/collapsible/collapsible.js.map +1 -0
  65. package/dist/collapsible/collapsible.module.css.d.ts +2 -0
  66. package/dist/collapsible/collapsible.module.js +12 -0
  67. package/dist/collapsible/collapsible.module.js.map +1 -0
  68. package/dist/collapsible/index.d.ts +3 -0
  69. package/dist/collapsible/index.js +4 -0
  70. package/dist/collapsible/parts.d.ts +23 -0
  71. package/dist/collapsible/parts.d.ts.map +1 -0
  72. package/dist/collapsible/parts.js +44 -0
  73. package/dist/collapsible/parts.js.map +1 -0
  74. package/dist/dialog/dialog.css +120 -0
  75. package/dist/dialog/dialog.d.ts +32 -0
  76. package/dist/dialog/dialog.d.ts.map +1 -0
  77. package/dist/dialog/dialog.js +54 -0
  78. package/dist/dialog/dialog.js.map +1 -0
  79. package/dist/dialog/dialog.module.css.d.ts +2 -0
  80. package/dist/dialog/dialog.module.js +15 -0
  81. package/dist/dialog/dialog.module.js.map +1 -0
  82. package/dist/dialog/index.d.ts +3 -0
  83. package/dist/dialog/index.js +4 -0
  84. package/dist/dialog/parts.d.ts +38 -0
  85. package/dist/dialog/parts.d.ts.map +1 -0
  86. package/dist/dialog/parts.js +75 -0
  87. package/dist/dialog/parts.js.map +1 -0
  88. package/dist/drawer/drawer.css +257 -0
  89. package/dist/drawer/drawer.d.ts +38 -0
  90. package/dist/drawer/drawer.d.ts.map +1 -0
  91. package/dist/drawer/drawer.js +87 -0
  92. package/dist/drawer/drawer.js.map +1 -0
  93. package/dist/drawer/drawer.module.css.d.ts +2 -0
  94. package/dist/drawer/drawer.module.js +20 -0
  95. package/dist/drawer/drawer.module.js.map +1 -0
  96. package/dist/drawer/index.d.ts +3 -0
  97. package/dist/drawer/index.js +4 -0
  98. package/dist/drawer/parts.d.ts +58 -0
  99. package/dist/drawer/parts.d.ts.map +1 -0
  100. package/dist/drawer/parts.js +107 -0
  101. package/dist/drawer/parts.js.map +1 -0
  102. package/dist/index.css +2424 -0
  103. package/dist/index.d.ts +33 -0
  104. package/dist/index.js +53 -0
  105. package/dist/input/index.d.ts +2 -0
  106. package/dist/input/index.js +3 -0
  107. package/dist/input/input.css +107 -0
  108. package/dist/input/input.d.ts +17 -0
  109. package/dist/input/input.d.ts.map +1 -0
  110. package/dist/input/input.js +37 -0
  111. package/dist/input/input.js.map +1 -0
  112. package/dist/input/input.module.css.d.ts +2 -0
  113. package/dist/input/input.module.js +18 -0
  114. package/dist/input/input.module.js.map +1 -0
  115. package/dist/menu/index.d.ts +4 -0
  116. package/dist/menu/index.js +5 -0
  117. package/dist/menu/menu.css +158 -0
  118. package/dist/menu/menu.d.ts +50 -0
  119. package/dist/menu/menu.d.ts.map +1 -0
  120. package/dist/menu/menu.js +69 -0
  121. package/dist/menu/menu.js.map +1 -0
  122. package/dist/menu/menu.module.css.d.ts +2 -0
  123. package/dist/menu/menu.module.js +19 -0
  124. package/dist/menu/menu.module.js.map +1 -0
  125. package/dist/menu/menuitemshortcut.d.ts +9 -0
  126. package/dist/menu/menuitemshortcut.d.ts.map +1 -0
  127. package/dist/menu/menuitemshortcut.js +15 -0
  128. package/dist/menu/menuitemshortcut.js.map +1 -0
  129. package/dist/menu/parts.d.ts +39 -0
  130. package/dist/menu/parts.d.ts.map +1 -0
  131. package/dist/menu/parts.js +76 -0
  132. package/dist/menu/parts.js.map +1 -0
  133. package/dist/number-field/index.d.ts +3 -0
  134. package/dist/number-field/index.js +4 -0
  135. package/dist/number-field/number-field.css +115 -0
  136. package/dist/number-field/number-field.d.ts +31 -0
  137. package/dist/number-field/number-field.d.ts.map +1 -0
  138. package/dist/number-field/number-field.js +78 -0
  139. package/dist/number-field/number-field.js.map +1 -0
  140. package/dist/number-field/number-field.module.css.d.ts +2 -0
  141. package/dist/number-field/number-field.module.js +16 -0
  142. package/dist/number-field/number-field.module.js.map +1 -0
  143. package/dist/number-field/parts.d.ts +38 -0
  144. package/dist/number-field/parts.d.ts.map +1 -0
  145. package/dist/number-field/parts.js +74 -0
  146. package/dist/number-field/parts.js.map +1 -0
  147. package/dist/progress/index.d.ts +3 -0
  148. package/dist/progress/index.js +4 -0
  149. package/dist/progress/parts.d.ts +20 -0
  150. package/dist/progress/parts.d.ts.map +1 -0
  151. package/dist/progress/parts.js +42 -0
  152. package/dist/progress/parts.js.map +1 -0
  153. package/dist/progress/progress.css +75 -0
  154. package/dist/progress/progress.d.ts +27 -0
  155. package/dist/progress/progress.d.ts.map +1 -0
  156. package/dist/progress/progress.js +27 -0
  157. package/dist/progress/progress.js.map +1 -0
  158. package/dist/progress/progress.module.css.d.ts +2 -0
  159. package/dist/progress/progress.module.js +19 -0
  160. package/dist/progress/progress.module.js.map +1 -0
  161. package/dist/reset.css +91 -0
  162. package/dist/select/index.d.ts +3 -0
  163. package/dist/select/index.js +4 -0
  164. package/dist/select/parts.d.ts +65 -0
  165. package/dist/select/parts.d.ts.map +1 -0
  166. package/dist/select/parts.js +134 -0
  167. package/dist/select/parts.js.map +1 -0
  168. package/dist/select/select.css +159 -0
  169. package/dist/select/select.d.ts +38 -0
  170. package/dist/select/select.d.ts.map +1 -0
  171. package/dist/select/select.js +80 -0
  172. package/dist/select/select.js.map +1 -0
  173. package/dist/select/select.module.css.d.ts +2 -0
  174. package/dist/select/select.module.js +17 -0
  175. package/dist/select/select.module.js.map +1 -0
  176. package/dist/separator/index.d.ts +2 -0
  177. package/dist/separator/index.js +3 -0
  178. package/dist/separator/separator.css +20 -0
  179. package/dist/separator/separator.d.ts +16 -0
  180. package/dist/separator/separator.d.ts.map +1 -0
  181. package/dist/separator/separator.js +17 -0
  182. package/dist/separator/separator.js.map +1 -0
  183. package/dist/separator/separator.module.css.d.ts +2 -0
  184. package/dist/separator/separator.module.js +6 -0
  185. package/dist/separator/separator.module.js.map +1 -0
  186. package/dist/styles/reset.css +69 -0
  187. package/dist/styles/tokens.css +274 -0
  188. package/dist/switch/index.d.ts +3 -0
  189. package/dist/switch/index.js +4 -0
  190. package/dist/switch/parts.d.ts +18 -0
  191. package/dist/switch/parts.d.ts.map +1 -0
  192. package/dist/switch/parts.js +39 -0
  193. package/dist/switch/parts.js.map +1 -0
  194. package/dist/switch/switch.css +68 -0
  195. package/dist/switch/switch.d.ts +28 -0
  196. package/dist/switch/switch.d.ts.map +1 -0
  197. package/dist/switch/switch.js +26 -0
  198. package/dist/switch/switch.js.map +1 -0
  199. package/dist/switch/switch.module.css.d.ts +2 -0
  200. package/dist/switch/switch.module.js +11 -0
  201. package/dist/switch/switch.module.js.map +1 -0
  202. package/dist/tabs/index.d.ts +3 -0
  203. package/dist/tabs/index.js +4 -0
  204. package/dist/tabs/parts.d.ts +23 -0
  205. package/dist/tabs/parts.d.ts.map +1 -0
  206. package/dist/tabs/parts.js +48 -0
  207. package/dist/tabs/parts.js.map +1 -0
  208. package/dist/tabs/tabs.css +90 -0
  209. package/dist/tabs/tabs.d.ts +28 -0
  210. package/dist/tabs/tabs.d.ts.map +1 -0
  211. package/dist/tabs/tabs.js +30 -0
  212. package/dist/tabs/tabs.js.map +1 -0
  213. package/dist/tabs/tabs.module.css.d.ts +2 -0
  214. package/dist/tabs/tabs.module.js +11 -0
  215. package/dist/tabs/tabs.module.js.map +1 -0
  216. package/dist/tailwind-theme.css +142 -0
  217. package/dist/toast/index.d.ts +3 -0
  218. package/dist/toast/index.js +4 -0
  219. package/dist/toast/parts.d.ts +33 -0
  220. package/dist/toast/parts.d.ts.map +1 -0
  221. package/dist/toast/parts.js +62 -0
  222. package/dist/toast/parts.js.map +1 -0
  223. package/dist/toast/toast.css +211 -0
  224. package/dist/toast/toast.d.ts +43 -0
  225. package/dist/toast/toast.d.ts.map +1 -0
  226. package/dist/toast/toast.js +156 -0
  227. package/dist/toast/toast.js.map +1 -0
  228. package/dist/toast/toast.module.css.d.ts +2 -0
  229. package/dist/toast/toast.module.js +25 -0
  230. package/dist/toast/toast.module.js.map +1 -0
  231. package/dist/tokens.css +400 -0
  232. package/dist/tooltip/index.d.ts +3 -0
  233. package/dist/tooltip/index.js +4 -0
  234. package/dist/tooltip/parts.d.ts +23 -0
  235. package/dist/tooltip/parts.d.ts.map +1 -0
  236. package/dist/tooltip/parts.js +53 -0
  237. package/dist/tooltip/parts.js.map +1 -0
  238. package/dist/tooltip/tooltip.css +64 -0
  239. package/dist/tooltip/tooltip.d.ts +22 -0
  240. package/dist/tooltip/tooltip.d.ts.map +1 -0
  241. package/dist/tooltip/tooltip.js +23 -0
  242. package/dist/tooltip/tooltip.js.map +1 -0
  243. package/dist/tooltip/tooltip.module.css.d.ts +2 -0
  244. package/dist/tooltip/tooltip.module.js +10 -0
  245. package/dist/tooltip/tooltip.module.js.map +1 -0
  246. package/package.json +137 -4
  247. package/src/accordion/accordion.module.css +89 -0
  248. package/src/accordion/accordion.tsx +50 -0
  249. package/src/accordion/index.ts +6 -0
  250. package/src/accordion/parts.tsx +68 -0
  251. package/src/badge/badge.module.css +70 -0
  252. package/src/badge/badge.tsx +19 -0
  253. package/src/badge/index.ts +3 -0
  254. package/src/button/button.module.css +265 -0
  255. package/src/button/button.tsx +67 -0
  256. package/src/button/index.ts +3 -0
  257. package/src/card/card.module.css +67 -0
  258. package/src/card/card.tsx +54 -0
  259. package/src/card/index.ts +3 -0
  260. package/src/checkbox/checkbox.module.css +80 -0
  261. package/src/checkbox/checkbox.tsx +38 -0
  262. package/src/checkbox/index.ts +6 -0
  263. package/src/checkbox/parts.tsx +54 -0
  264. package/src/collapsible/collapsible.module.css +94 -0
  265. package/src/collapsible/collapsible.tsx +38 -0
  266. package/src/collapsible/index.ts +6 -0
  267. package/src/collapsible/parts.tsx +52 -0
  268. package/src/css.d.ts +8 -0
  269. package/src/dialog/dialog.module.css +123 -0
  270. package/src/dialog/dialog.tsx +60 -0
  271. package/src/dialog/index.ts +13 -0
  272. package/src/dialog/parts.tsx +96 -0
  273. package/src/drawer/drawer.module.css +289 -0
  274. package/src/drawer/drawer.tsx +96 -0
  275. package/src/drawer/index.ts +24 -0
  276. package/src/drawer/parts.tsx +122 -0
  277. package/src/index.ts +189 -0
  278. package/src/input/index.ts +3 -0
  279. package/src/input/input.module.css +109 -0
  280. package/src/input/input.tsx +39 -0
  281. package/src/menu/index.ts +7 -0
  282. package/src/menu/menu.module.css +172 -0
  283. package/src/menu/menu.tsx +108 -0
  284. package/src/menu/menuitemshortcut.tsx +9 -0
  285. package/src/menu/parts.tsx +90 -0
  286. package/src/number-field/index.ts +20 -0
  287. package/src/number-field/number-field.module.css +114 -0
  288. package/src/number-field/number-field.tsx +75 -0
  289. package/src/number-field/parts.tsx +91 -0
  290. package/src/progress/index.ts +6 -0
  291. package/src/progress/parts.tsx +51 -0
  292. package/src/progress/progress.module.css +70 -0
  293. package/src/progress/progress.tsx +42 -0
  294. package/src/select/index.ts +30 -0
  295. package/src/select/parts.tsx +171 -0
  296. package/src/select/select.module.css +167 -0
  297. package/src/select/select.tsx +89 -0
  298. package/src/separator/index.ts +3 -0
  299. package/src/separator/separator.module.css +18 -0
  300. package/src/separator/separator.tsx +20 -0
  301. package/src/styles/reset.css +91 -0
  302. package/src/styles/tailwind-theme.css +142 -0
  303. package/src/styles/tokens.css +400 -0
  304. package/src/switch/index.ts +6 -0
  305. package/src/switch/parts.tsx +44 -0
  306. package/src/switch/switch.module.css +67 -0
  307. package/src/switch/switch.tsx +33 -0
  308. package/src/tabs/index.ts +6 -0
  309. package/src/tabs/parts.tsx +48 -0
  310. package/src/tabs/tabs.module.css +92 -0
  311. package/src/tabs/tabs.tsx +48 -0
  312. package/src/toast/index.ts +6 -0
  313. package/src/toast/parts.tsx +76 -0
  314. package/src/toast/toast.module.css +252 -0
  315. package/src/toast/toast.tsx +129 -0
  316. package/src/tooltip/index.ts +6 -0
  317. package/src/tooltip/parts.tsx +62 -0
  318. package/src/tooltip/tooltip.module.css +67 -0
  319. package/src/tooltip/tooltip.tsx +30 -0
@@ -0,0 +1,142 @@
1
+ /**
2
+ * @brijbyte/agentic-ui — Tailwind v4 theme integration
3
+ *
4
+ * Import this AFTER `@import "tailwindcss"` and AFTER the agentic-ui
5
+ * token/reset CSS in your app's CSS entry file:
6
+ *
7
+ * @import "tailwindcss";
8
+ * @import "@brijbyte/agentic-ui/styles/tokens.css";
9
+ * @import "@brijbyte/agentic-ui/styles/reset.css";
10
+ * @import "@brijbyte/agentic-ui/tailwind-theme";
11
+ *
12
+ * `@theme inline` tells Tailwind v4 to generate utility classes that
13
+ * reference our CSS custom properties directly — dark mode and theme
14
+ * overrides work automatically without any Tailwind configuration.
15
+ *
16
+ * Generated utility examples:
17
+ * bg-bg-base → background-color: var(--color-bg-base)
18
+ * text-text-primary → color: var(--color-text-primary)
19
+ * border-border-base→ border-color: var(--color-border-base)
20
+ * font-mono → font-family: var(--font-mono)
21
+ * rounded-md → border-radius: var(--radius-md)
22
+ * shadow-sm → box-shadow: var(--shadow-sm)
23
+ */
24
+
25
+ @theme inline {
26
+ /* ── Backgrounds ────────────────────────────────────────────── */
27
+ --color-bg-base: var(--color-bg-base);
28
+ --color-bg-elevated: var(--color-bg-elevated);
29
+ --color-bg-sunken: var(--color-bg-sunken);
30
+ --color-bg-overlay: var(--color-bg-overlay);
31
+ --color-bg-sidebar: var(--color-bg-sidebar);
32
+
33
+ /* ── Surfaces ───────────────────────────────────────────────── */
34
+ --color-surface-1: var(--color-surface-1);
35
+ --color-surface-2: var(--color-surface-2);
36
+ --color-surface-3: var(--color-surface-3);
37
+ --color-surface-hover: var(--color-surface-hover);
38
+ --color-surface-active: var(--color-surface-active);
39
+ --color-surface-selected: var(--color-surface-selected);
40
+
41
+ /* ── Text ───────────────────────────────────────────────────── */
42
+ --color-text-primary: var(--color-text-primary);
43
+ --color-text-secondary: var(--color-text-secondary);
44
+ --color-text-tertiary: var(--color-text-tertiary);
45
+ --color-text-disabled: var(--color-text-disabled);
46
+ --color-text-inverse: var(--color-text-inverse);
47
+ --color-text-on-accent: var(--color-text-on-accent);
48
+ --color-text-code: var(--color-text-code);
49
+
50
+ /* ── Borders ────────────────────────────────────────────────── */
51
+ --color-border-base: var(--color-border-base);
52
+ --color-border-strong: var(--color-border-strong);
53
+ --color-border-subtle: var(--color-border-subtle);
54
+ --color-border-focus: var(--color-border-focus);
55
+
56
+ /* ── Accent (macOS blue) ────────────────────────────────────── */
57
+ --color-accent: var(--color-accent);
58
+ --color-accent-hover: var(--color-accent-hover);
59
+ --color-accent-pressed: var(--color-accent-pressed);
60
+ --color-accent-tint: var(--color-accent-tint);
61
+ --color-accent-tint-hover: var(--color-accent-tint-hover);
62
+
63
+ /* ── Focus ──────────────────────────────────────────────────── */
64
+ --color-focus-ring: var(--color-focus-ring);
65
+
66
+ /* ── Status ─────────────────────────────────────────────────── */
67
+ --color-success-bg: var(--color-success-bg);
68
+ --color-success-border: var(--color-success-border);
69
+ --color-success-text: var(--color-success-text);
70
+ --color-success-solid: var(--color-success-solid);
71
+
72
+ --color-warning-bg: var(--color-warning-bg);
73
+ --color-warning-border: var(--color-warning-border);
74
+ --color-warning-text: var(--color-warning-text);
75
+ --color-warning-solid: var(--color-warning-solid);
76
+
77
+ --color-error-bg: var(--color-error-bg);
78
+ --color-error-border: var(--color-error-border);
79
+ --color-error-text: var(--color-error-text);
80
+ --color-error-solid: var(--color-error-solid);
81
+
82
+ --color-info-bg: var(--color-info-bg);
83
+ --color-info-border: var(--color-info-border);
84
+ --color-info-text: var(--color-info-text);
85
+ --color-info-solid: var(--color-info-solid);
86
+
87
+ /* ── Code syntax ────────────────────────────────────────────── */
88
+ --color-code-bg: var(--color-code-bg);
89
+ --color-code-border: var(--color-code-border);
90
+ --color-code-keyword: var(--color-code-keyword);
91
+ --color-code-string: var(--color-code-string);
92
+ --color-code-function: var(--color-code-function);
93
+
94
+ /* ── Fonts ──────────────────────────────────────────────────── */
95
+ --font-display: var(--font-display);
96
+ --font-mono: var(--font-mono);
97
+ --font-sans: var(--font-sans);
98
+
99
+ /* ── Border radius ──────────────────────────────────────────── */
100
+ --radius-none: var(--radius-none);
101
+ --radius-sm: var(--radius-sm);
102
+ --radius-md: var(--radius-md);
103
+ --radius-lg: var(--radius-lg);
104
+ --radius-xl: var(--radius-xl);
105
+ --radius-2xl: var(--radius-2xl);
106
+ --radius-full: var(--radius-full);
107
+
108
+ /* ── Shadows ────────────────────────────────────────────────── */
109
+ --shadow-xs: var(--shadow-xs);
110
+ --shadow-sm: var(--shadow-sm);
111
+ --shadow-md: var(--shadow-md);
112
+ --shadow-lg: var(--shadow-lg);
113
+ --shadow-xl: var(--shadow-xl);
114
+ --shadow-popover: var(--shadow-popover);
115
+ --shadow-focus: var(--shadow-focus);
116
+ --shadow-inset: var(--shadow-inset);
117
+
118
+ /* ── Line heights ───────────────────────────────────────────── */
119
+ --leading-tight: var(--line-height-tight);
120
+ --leading-normal: var(--line-height-normal);
121
+ --leading-relaxed: var(--line-height-relaxed);
122
+
123
+ /* ── Letter spacing ─────────────────────────────────────────── */
124
+ --tracking-tight: var(--letter-spacing-tight);
125
+ --tracking-normal: var(--letter-spacing-normal);
126
+ --tracking-wide: var(--letter-spacing-wide);
127
+ --tracking-wider: var(--letter-spacing-wider);
128
+
129
+ /* ── Easing ─────────────────────────────────────────────────── */
130
+ --ease-standard: var(--easing-standard);
131
+ --ease-spring: var(--easing-spring);
132
+ --ease-in: var(--easing-ease-in);
133
+ --ease-out: var(--easing-ease-out);
134
+ --ease-linear: var(--easing-linear);
135
+
136
+ /* ── Z-index ────────────────────────────────────────────────── */
137
+ --z-dropdown: var(--z-dropdown);
138
+ --z-overlay: var(--z-overlay);
139
+ --z-modal: var(--z-modal);
140
+ --z-toast: var(--z-toast);
141
+ --z-tooltip: var(--z-tooltip);
142
+ }
@@ -0,0 +1,400 @@
1
+ /**
2
+ * @brijbyte/agentic-ui — Design Tokens
3
+ *
4
+ * macOS/iOS-inspired developer-focused design system.
5
+ * Monospace-first, semantic color tokens, supports light & dark modes.
6
+ */
7
+ @layer base {
8
+ :root {
9
+ /* ─── Typography ──────────────────────────────────────────────── */
10
+ /*
11
+ * Display / headline font — Apple "New York" serif (macOS Catalina+).
12
+ * Falls back to classic readable serifs. Used for page titles and headings.
13
+ */
14
+ --font-display: "New York", "Iowan Old Style", "Palatino Linotype", "URW Palladio L", Georgia, serif;
15
+
16
+ /*
17
+ * Mono / UI font — developer-focused monospace stack.
18
+ * Used for all UI chrome: buttons, inputs, labels, badges, code.
19
+ */
20
+ --font-mono:
21
+ "Berkeley Mono", "JetBrains Mono", "Fira Code", "Cascadia Code", "SF Mono", "Menlo", ui-monospace, "Courier New", monospace;
22
+
23
+ /*
24
+ * Sans — system sans-serif for body prose and long descriptions.
25
+ */
26
+ --font-sans: -apple-system, BlinkMacSystemFont, "SF Pro Text", "Helvetica Neue", Arial, sans-serif;
27
+
28
+ --font-size-2xs: 0.625rem; /* 10px */
29
+ --font-size-xs: 0.6875rem; /* 11px */
30
+ --font-size-sm: 0.75rem; /* 12px */
31
+ --font-size-md: 0.8125rem; /* 13px — macOS default */
32
+ --font-size-lg: 0.875rem; /* 14px */
33
+ --font-size-xl: 1rem; /* 16px */
34
+ --font-size-2xl: 1.125rem; /* 18px */
35
+ --font-size-3xl: 1.25rem; /* 20px */
36
+ --font-size-4xl: 1.5rem; /* 24px */
37
+
38
+ --font-weight-regular: 400;
39
+ --font-weight-medium: 500;
40
+ --font-weight-semibold: 600;
41
+ --font-weight-bold: 700;
42
+
43
+ --line-height-tight: 1.2;
44
+ --line-height-normal: 1.4;
45
+ --line-height-relaxed: 1.6;
46
+
47
+ --letter-spacing-tight: -0.02em;
48
+ --letter-spacing-normal: 0em;
49
+ --letter-spacing-wide: 0.04em;
50
+ --letter-spacing-wider: 0.08em;
51
+
52
+ /* ─── Spacing (4px grid) ──────────────────────────────────────── */
53
+ --space-0: 0px;
54
+ --space-px: 1px;
55
+ --space-0-5: 2px;
56
+ --space-1: 4px;
57
+ --space-1-5: 6px;
58
+ --space-2: 8px;
59
+ --space-2-5: 10px;
60
+ --space-3: 12px;
61
+ --space-4: 16px;
62
+ --space-5: 20px;
63
+ --space-6: 24px;
64
+ --space-7: 28px;
65
+ --space-8: 32px;
66
+ --space-9: 36px;
67
+ --space-10: 40px;
68
+ --space-12: 48px;
69
+ --space-16: 64px;
70
+ --space-20: 80px;
71
+ --space-24: 96px;
72
+
73
+ /* ─── Border Radius ───────────────────────────────────────────── */
74
+ --radius-none: 0px;
75
+ --radius-sm: 4px;
76
+ --radius-md: 6px;
77
+ --radius-lg: 8px;
78
+ --radius-xl: 10px;
79
+ --radius-2xl: 12px;
80
+ --radius-full: 9999px;
81
+
82
+ /* ─── Border Width ────────────────────────────────────────────── */
83
+ --border-width-base: 1px;
84
+ --border-width-medium: 1.5px;
85
+ --border-width-thick: 2px;
86
+
87
+ /* ─── Animation ───────────────────────────────────────────────── */
88
+ --duration-instant: 0ms;
89
+ --duration-fast: 100ms;
90
+ --duration-normal: 150ms;
91
+ --duration-slow: 200ms;
92
+ --duration-slower: 300ms;
93
+
94
+ /*
95
+ * Easing curves — use the right one for the job:
96
+ * ease-out → entering elements (starts fast, feels responsive)
97
+ * ease-in → exiting elements (builds speed, disappears cleanly)
98
+ * standard → on-screen movement / morphing between states (ease-in-out)
99
+ * spring → playful or physics-based interactions
100
+ * linear → constant motion (spinners, progress bars, marquees)
101
+ */
102
+ --easing-ease-out: cubic-bezier(0, 0, 0.2, 1);
103
+ --easing-ease-in: cubic-bezier(0.4, 0, 1, 1);
104
+ --easing-standard: cubic-bezier(0.4, 0, 0.2, 1);
105
+ --easing-spring: cubic-bezier(0.34, 1.56, 0.64, 1);
106
+ --easing-linear: linear;
107
+
108
+ /* ─── Z-index Scale ───────────────────────────────────────────── */
109
+ --z-below: -1;
110
+ --z-base: 0;
111
+ --z-raised: 10;
112
+ --z-dropdown: 100;
113
+ --z-sticky: 200;
114
+ --z-overlay: 300;
115
+ --z-modal: 400;
116
+ --z-popover: 500;
117
+ --z-toast: 600;
118
+ --z-tooltip: 700;
119
+ }
120
+
121
+ /* ═══════════════════════════════════════════════════════════════════
122
+ LIGHT MODE — semantic tokens
123
+ ═══════════════════════════════════════════════════════════════════ */
124
+ :root,
125
+ [data-theme="light"] {
126
+ color-scheme: light;
127
+
128
+ /* Background layers (macOS vibrancy-inspired) */
129
+ --color-bg-base: #f5f5f5;
130
+ --color-bg-elevated: #ffffff;
131
+ --color-bg-sunken: #ebebeb;
132
+ --color-bg-overlay: rgba(255, 255, 255, 0.92);
133
+ --color-bg-sidebar: rgba(246, 246, 246, 0.95);
134
+
135
+ /* Surface (card/panel backgrounds) */
136
+ --color-surface-1: #ffffff;
137
+ --color-surface-2: #f9f9f9;
138
+ --color-surface-3: #f4f4f4;
139
+ --color-surface-hover: rgba(0, 0, 0, 0.04);
140
+ --color-surface-active: rgba(0, 0, 0, 0.07);
141
+ --color-surface-selected: rgba(0, 120, 212, 0.1);
142
+
143
+ /* Text */
144
+ --color-text-primary: rgba(0, 0, 0, 0.88);
145
+ --color-text-secondary: rgba(0, 0, 0, 0.55);
146
+ --color-text-tertiary: rgba(0, 0, 0, 0.36);
147
+ --color-text-disabled: rgba(0, 0, 0, 0.24);
148
+ --color-text-inverse: rgba(255, 255, 255, 0.95);
149
+ --color-text-on-accent: #ffffff;
150
+ --color-text-code: #0f766e;
151
+
152
+ /* Borders */
153
+ --color-border-base: rgba(0, 0, 0, 0.12);
154
+ --color-border-strong: rgba(0, 0, 0, 0.22);
155
+ --color-border-subtle: rgba(0, 0, 0, 0.06);
156
+ --color-border-focus: var(--color-focus-ring);
157
+
158
+ /* Accent — macOS blue
159
+ * Semantic names instead of opaque Radix-style numbers:
160
+ * tint → subtle background fill (badges, chips)
161
+ * tint-hover → tint on hover
162
+ * (base) → solid interactive color (buttons, links)
163
+ * hover → solid on hover
164
+ * pressed → solid on press
165
+ */
166
+ --color-accent: #0078d4;
167
+ --color-accent-hover: #006bbf;
168
+ --color-accent-pressed: #005ea8;
169
+ --color-accent-tint: rgba(0, 120, 212, 0.1);
170
+ --color-accent-tint-hover: rgba(0, 120, 212, 0.16);
171
+
172
+ /* Focus ring */
173
+ --color-focus-ring: rgba(0, 120, 212, 0.8);
174
+
175
+ /* Elevation / Shadows — light (subtle black shadows) */
176
+ --shadow-xs: 0 1px 2px 0 rgb(0 0 0 / 0.08);
177
+ --shadow-sm: 0 1px 3px 0 rgb(0 0 0 / 0.1), 0 1px 2px -1px rgb(0 0 0 / 0.06);
178
+ --shadow-md: 0 4px 6px -1px rgb(0 0 0 / 0.1), 0 2px 4px -2px rgb(0 0 0 / 0.06);
179
+ --shadow-lg: 0 10px 15px -3px rgb(0 0 0 / 0.1), 0 4px 6px -4px rgb(0 0 0 / 0.06);
180
+ --shadow-xl: 0 20px 25px -5px rgb(0 0 0 / 0.1), 0 8px 10px -6px rgb(0 0 0 / 0.06);
181
+ --shadow-popover: 0 8px 24px -4px rgb(0 0 0 / 0.16), 0 2px 6px -2px rgb(0 0 0 / 0.1);
182
+ --shadow-sheet: 0 -4px 16px 0 rgb(0 0 0 / 0.12);
183
+ --shadow-inset: inset 0 1px 2px 0 rgb(0 0 0 / 0.08);
184
+ --shadow-focus: 0 0 0 2px var(--color-bg-base), 0 0 0 4px var(--color-focus-ring);
185
+
186
+ /* Status — Success */
187
+ --color-success-bg: #f0fdf4;
188
+ --color-success-border: #bbf7d0;
189
+ --color-success-text: #15803d;
190
+ --color-success-solid: #16a34a;
191
+
192
+ /* Status — Warning */
193
+ --color-warning-bg: #fffbeb;
194
+ --color-warning-border: #fde68a;
195
+ --color-warning-text: #92400e;
196
+ --color-warning-solid: #d97706;
197
+
198
+ /* Status — Error */
199
+ --color-error-bg: #fef2f2;
200
+ --color-error-border: #fecaca;
201
+ --color-error-text: #991b1b;
202
+ --color-error-solid: #dc2626;
203
+
204
+ /* Status — Info */
205
+ --color-info-bg: #eff6ff;
206
+ --color-info-border: #bfdbfe;
207
+ --color-info-text: #1d4ed8;
208
+ --color-info-solid: #2563eb;
209
+
210
+ /* Code / terminal palette */
211
+ --color-code-bg: #f6f8fa;
212
+ --color-code-border: #d0d7de;
213
+ --color-code-comment: #6e7781;
214
+ --color-code-keyword: #cf222e;
215
+ --color-code-string: #0a3069;
216
+ --color-code-number: #0550ae;
217
+ --color-code-function: #8250df;
218
+
219
+ /* Scrollbar */
220
+ --color-scrollbar-thumb: rgba(0, 0, 0, 0.2);
221
+ --color-scrollbar-track: transparent;
222
+ }
223
+
224
+ /* ═══════════════════════════════════════════════════════════════════
225
+ DARK MODE — single source of truth via :where()
226
+ Both the media query and [data-theme="dark"] point to the same
227
+ selector block — no duplication, no drift.
228
+ ═══════════════════════════════════════════════════════════════════ */
229
+ @media (prefers-color-scheme: dark) {
230
+ :root:not([data-theme="light"]),
231
+ :root:not([data-theme="light"]) [data-theme="dark"] {
232
+ color-scheme: dark;
233
+
234
+ /* Background */
235
+ --color-bg-base: #1c1c1e;
236
+ --color-bg-elevated: #2c2c2e;
237
+ --color-bg-sunken: #141416;
238
+ --color-bg-overlay: rgba(30, 30, 32, 0.92);
239
+ --color-bg-sidebar: rgba(28, 28, 30, 0.95);
240
+
241
+ /* Surface */
242
+ --color-surface-1: #2c2c2e;
243
+ --color-surface-2: #3a3a3c;
244
+ --color-surface-3: #48484a;
245
+ --color-surface-hover: rgba(255, 255, 255, 0.06);
246
+ --color-surface-active: rgba(255, 255, 255, 0.1);
247
+ --color-surface-selected: rgba(10, 132, 255, 0.16);
248
+
249
+ /* Text */
250
+ --color-text-primary: rgba(255, 255, 255, 0.92);
251
+ --color-text-secondary: rgba(255, 255, 255, 0.55);
252
+ --color-text-tertiary: rgba(255, 255, 255, 0.36);
253
+ --color-text-disabled: rgba(255, 255, 255, 0.24);
254
+ --color-text-inverse: rgba(0, 0, 0, 0.88);
255
+ --color-text-on-accent: #ffffff;
256
+ --color-text-code: #2dd4bf;
257
+
258
+ /* Borders */
259
+ --color-border-base: rgba(255, 255, 255, 0.12);
260
+ --color-border-strong: rgba(255, 255, 255, 0.22);
261
+ --color-border-subtle: rgba(255, 255, 255, 0.06);
262
+
263
+ /* Accent — macOS blue dark */
264
+ --color-accent: #0a84ff;
265
+ --color-accent-hover: #0071e3;
266
+ --color-accent-pressed: #005bb5;
267
+ --color-accent-tint: rgba(10, 132, 255, 0.12);
268
+ --color-accent-tint-hover: rgba(10, 132, 255, 0.2);
269
+
270
+ /* Focus ring */
271
+ --color-focus-ring: rgba(10, 132, 255, 0.9);
272
+
273
+ /* Elevation / Shadows — dark (higher opacity so they read on dark surfaces) */
274
+ --shadow-xs: 0 1px 2px 0 rgb(0 0 0 / 0.3);
275
+ --shadow-sm: 0 1px 3px 0 rgb(0 0 0 / 0.4), 0 1px 2px -1px rgb(0 0 0 / 0.3);
276
+ --shadow-md: 0 4px 6px -1px rgb(0 0 0 / 0.4), 0 2px 4px -2px rgb(0 0 0 / 0.3);
277
+ --shadow-lg: 0 10px 15px -3px rgb(0 0 0 / 0.5), 0 4px 6px -4px rgb(0 0 0 / 0.3);
278
+ --shadow-xl: 0 20px 25px -5px rgb(0 0 0 / 0.5), 0 8px 10px -6px rgb(0 0 0 / 0.3);
279
+ --shadow-popover: 0 8px 24px -4px rgb(0 0 0 / 0.5), 0 2px 6px -2px rgb(0 0 0 / 0.4);
280
+ --shadow-sheet: 0 -4px 16px 0 rgb(0 0 0 / 0.4);
281
+ --shadow-inset: inset 0 1px 2px 0 rgb(0 0 0 / 0.3);
282
+ --shadow-focus: 0 0 0 2px var(--color-bg-base), 0 0 0 4px var(--color-focus-ring);
283
+
284
+ /* Status — Success */
285
+ --color-success-bg: rgba(22, 163, 74, 0.12);
286
+ --color-success-border: rgba(22, 163, 74, 0.3);
287
+ --color-success-text: #4ade80;
288
+ --color-success-solid: #22c55e;
289
+
290
+ /* Status — Warning */
291
+ --color-warning-bg: rgba(217, 119, 6, 0.12);
292
+ --color-warning-border: rgba(217, 119, 6, 0.3);
293
+ --color-warning-text: #fbbf24;
294
+ --color-warning-solid: #f59e0b;
295
+
296
+ /* Status — Error */
297
+ --color-error-bg: rgba(220, 38, 38, 0.12);
298
+ --color-error-border: rgba(220, 38, 38, 0.3);
299
+ --color-error-text: #f87171;
300
+ --color-error-solid: #ef4444;
301
+
302
+ /* Status — Info */
303
+ --color-info-bg: rgba(37, 99, 235, 0.12);
304
+ --color-info-border: rgba(37, 99, 235, 0.3);
305
+ --color-info-text: #60a5fa;
306
+ --color-info-solid: #3b82f6;
307
+
308
+ /* Code / terminal palette */
309
+ --color-code-bg: #161b22;
310
+ --color-code-border: rgba(255, 255, 255, 0.1);
311
+ --color-code-comment: #8b949e;
312
+ --color-code-keyword: #ff7b72;
313
+ --color-code-string: #a5d6ff;
314
+ --color-code-number: #79c0ff;
315
+ --color-code-function: #d2a8ff;
316
+
317
+ /* Scrollbar */
318
+ --color-scrollbar-thumb: rgba(255, 255, 255, 0.2);
319
+ --color-scrollbar-track: transparent;
320
+ }
321
+ }
322
+
323
+ [data-theme="dark"] {
324
+ color-scheme: dark;
325
+
326
+ --color-bg-base: #1c1c1e;
327
+ --color-bg-elevated: #2c2c2e;
328
+ --color-bg-sunken: #141416;
329
+ --color-bg-overlay: rgba(30, 30, 32, 0.92);
330
+ --color-bg-sidebar: rgba(28, 28, 30, 0.95);
331
+
332
+ --color-surface-1: #2c2c2e;
333
+ --color-surface-2: #3a3a3c;
334
+ --color-surface-3: #48484a;
335
+ --color-surface-hover: rgba(255, 255, 255, 0.06);
336
+ --color-surface-active: rgba(255, 255, 255, 0.1);
337
+ --color-surface-selected: rgba(10, 132, 255, 0.16);
338
+
339
+ --color-text-primary: rgba(255, 255, 255, 0.92);
340
+ --color-text-secondary: rgba(255, 255, 255, 0.55);
341
+ --color-text-tertiary: rgba(255, 255, 255, 0.36);
342
+ --color-text-disabled: rgba(255, 255, 255, 0.24);
343
+ --color-text-inverse: rgba(0, 0, 0, 0.88);
344
+ --color-text-on-accent: #ffffff;
345
+ --color-text-code: #2dd4bf;
346
+
347
+ --color-border-base: rgba(255, 255, 255, 0.12);
348
+ --color-border-strong: rgba(255, 255, 255, 0.22);
349
+ --color-border-subtle: rgba(255, 255, 255, 0.06);
350
+
351
+ --color-accent: #0a84ff;
352
+ --color-accent-hover: #0071e3;
353
+ --color-accent-pressed: #005bb5;
354
+ --color-accent-tint: rgba(10, 132, 255, 0.12);
355
+ --color-accent-tint-hover: rgba(10, 132, 255, 0.2);
356
+
357
+ --color-focus-ring: rgba(10, 132, 255, 0.9);
358
+
359
+ --shadow-xs: 0 1px 2px 0 rgb(0 0 0 / 0.3);
360
+ --shadow-sm: 0 1px 3px 0 rgb(0 0 0 / 0.4), 0 1px 2px -1px rgb(0 0 0 / 0.3);
361
+ --shadow-md: 0 4px 6px -1px rgb(0 0 0 / 0.4), 0 2px 4px -2px rgb(0 0 0 / 0.3);
362
+ --shadow-lg: 0 10px 15px -3px rgb(0 0 0 / 0.5), 0 4px 6px -4px rgb(0 0 0 / 0.3);
363
+ --shadow-xl: 0 20px 25px -5px rgb(0 0 0 / 0.5), 0 8px 10px -6px rgb(0 0 0 / 0.3);
364
+ --shadow-popover: 0 8px 24px -4px rgb(0 0 0 / 0.5), 0 2px 6px -2px rgb(0 0 0 / 0.4);
365
+ --shadow-sheet: 0 -4px 16px 0 rgb(0 0 0 / 0.4);
366
+ --shadow-inset: inset 0 1px 2px 0 rgb(0 0 0 / 0.3);
367
+ --shadow-focus: 0 0 0 2px var(--color-bg-base), 0 0 0 4px var(--color-focus-ring);
368
+
369
+ --color-success-bg: rgba(22, 163, 74, 0.12);
370
+ --color-success-border: rgba(22, 163, 74, 0.3);
371
+ --color-success-text: #4ade80;
372
+ --color-success-solid: #22c55e;
373
+
374
+ --color-warning-bg: rgba(217, 119, 6, 0.12);
375
+ --color-warning-border: rgba(217, 119, 6, 0.3);
376
+ --color-warning-text: #fbbf24;
377
+ --color-warning-solid: #f59e0b;
378
+
379
+ --color-error-bg: rgba(220, 38, 38, 0.12);
380
+ --color-error-border: rgba(220, 38, 38, 0.3);
381
+ --color-error-text: #f87171;
382
+ --color-error-solid: #ef4444;
383
+
384
+ --color-info-bg: rgba(37, 99, 235, 0.12);
385
+ --color-info-border: rgba(37, 99, 235, 0.3);
386
+ --color-info-text: #60a5fa;
387
+ --color-info-solid: #3b82f6;
388
+
389
+ --color-code-bg: #161b22;
390
+ --color-code-border: rgba(255, 255, 255, 0.1);
391
+ --color-code-comment: #8b949e;
392
+ --color-code-keyword: #ff7b72;
393
+ --color-code-string: #a5d6ff;
394
+ --color-code-number: #79c0ff;
395
+ --color-code-function: #d2a8ff;
396
+
397
+ --color-scrollbar-thumb: rgba(255, 255, 255, 0.2);
398
+ --color-scrollbar-track: transparent;
399
+ }
400
+ }
@@ -0,0 +1,6 @@
1
+ export { Switch } from "./switch";
2
+ export type { SwitchProps } from "./switch";
3
+
4
+ export { SwitchRoot, SwitchThumb } from "./parts";
5
+ export type { SwitchRootProps, SwitchThumbProps } from "./parts";
6
+ export { SwitchStyles } from "./switch";
@@ -0,0 +1,44 @@
1
+ /**
2
+ * Styled primitives for Switch.
3
+ *
4
+ * @example
5
+ * ```tsx
6
+ * import { Switch } from '@base-ui/react/switch';
7
+ * import { SwitchRoot, SwitchThumb } from '@brijbyte/agentic-ui/switch';
8
+ *
9
+ * <label htmlFor="sw">
10
+ * <SwitchRoot id="sw" onCheckedChange={...}>
11
+ * <SwitchThumb />
12
+ * </SwitchRoot>
13
+ * Dark mode
14
+ * </label>
15
+ * ```
16
+ */
17
+ import { forwardRef } from "react";
18
+ import type { ComponentRef, ComponentPropsWithoutRef } from "react";
19
+ import { Switch as BaseSwitch } from "@base-ui/react/switch";
20
+ import styles from "./switch.module.css";
21
+
22
+ type BaseRootProps = ComponentPropsWithoutRef<typeof BaseSwitch.Root>;
23
+ type BaseThumbProps = ComponentPropsWithoutRef<typeof BaseSwitch.Thumb>;
24
+
25
+ export interface SwitchRootProps extends Omit<BaseRootProps, "className"> {
26
+ className?: string;
27
+ }
28
+ export interface SwitchThumbProps extends Omit<BaseThumbProps, "className"> {
29
+ className?: string;
30
+ }
31
+
32
+ export const SwitchRoot = forwardRef<ComponentRef<typeof BaseSwitch.Root>, SwitchRootProps>(function SwitchRoot(
33
+ { className, ...props },
34
+ ref,
35
+ ) {
36
+ return <BaseSwitch.Root ref={ref} className={`${styles["thumb-track"]} ${className ?? ""}`} {...props} />;
37
+ });
38
+
39
+ export const SwitchThumb = forwardRef<ComponentRef<typeof BaseSwitch.Thumb>, SwitchThumbProps>(function SwitchThumb(
40
+ { className, ...props },
41
+ ref,
42
+ ) {
43
+ return <BaseSwitch.Thumb ref={ref} className={`${styles.thumb} ${className ?? ""}`} {...props} />;
44
+ });
@@ -0,0 +1,67 @@
1
+ @layer theme, base, components, utilities;
2
+
3
+ @layer components {
4
+ .root {
5
+ display: flex;
6
+ align-items: center;
7
+ gap: var(--space-2);
8
+ cursor: pointer;
9
+ user-select: none;
10
+ }
11
+
12
+ .root[data-disabled] {
13
+ opacity: 0.44;
14
+ cursor: not-allowed;
15
+ }
16
+
17
+ .thumb-track {
18
+ position: relative;
19
+ width: 36px;
20
+ height: 20px;
21
+ border-radius: var(--radius-full);
22
+ background-color: var(--color-surface-3);
23
+ border: var(--border-width-base) solid var(--color-border-base);
24
+ transition:
25
+ background-color var(--duration-normal) var(--easing-standard),
26
+ border-color var(--duration-normal) var(--easing-standard),
27
+ box-shadow var(--duration-fast) var(--easing-standard);
28
+ outline: none;
29
+ flex-shrink: 0;
30
+ }
31
+
32
+ .thumb-track:focus-visible {
33
+ box-shadow: var(--shadow-focus);
34
+ }
35
+
36
+ .thumb-track[data-checked] {
37
+ background-color: var(--color-accent);
38
+ border-color: var(--color-accent);
39
+ }
40
+
41
+ .thumb-track[data-checked]:hover {
42
+ background-color: var(--color-accent-hover);
43
+ border-color: var(--color-accent-hover);
44
+ }
45
+
46
+ .thumb {
47
+ position: absolute;
48
+ top: 2px;
49
+ left: 2px;
50
+ width: 14px;
51
+ height: 14px;
52
+ border-radius: var(--radius-full);
53
+ background-color: #ffffff;
54
+ box-shadow: var(--shadow-xs);
55
+ transition: transform var(--duration-normal) var(--easing-spring);
56
+ }
57
+
58
+ .thumb-track[data-checked] .thumb {
59
+ transform: translateX(16px);
60
+ }
61
+
62
+ .label {
63
+ font-family: var(--font-mono);
64
+ font-size: var(--font-size-sm);
65
+ color: var(--color-text-primary);
66
+ }
67
+ }