opui-css 5.4.3 → 6.0.0-rc.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 (740) hide show
  1. package/CHANGELOG.md +1015 -373
  2. package/LICENSE +21 -21
  3. package/MIGRATING-legacy.md +159 -0
  4. package/MIGRATING.md +1362 -138
  5. package/README.md +238 -87
  6. package/astro/index.ts +175 -46
  7. package/bin/opui-css.mjs +68 -0
  8. package/components/Accordion/Accordion.astro +21 -48
  9. package/components/Accordion/Accordion.react.tsx +23 -0
  10. package/components/Accordion/Accordion.svelte +27 -0
  11. package/components/Accordion/Accordion.vue +21 -38
  12. package/components/Accordion/AccordionActions.astro +16 -0
  13. package/components/Accordion/AccordionActions.react.tsx +15 -0
  14. package/components/Accordion/AccordionActions.svelte +23 -0
  15. package/components/Accordion/AccordionActions.vue +18 -0
  16. package/components/Accordion/AccordionContent.astro +9 -0
  17. package/components/Accordion/AccordionContent.react.tsx +6 -0
  18. package/components/Accordion/AccordionContent.svelte +15 -0
  19. package/components/Accordion/AccordionContent.vue +12 -0
  20. package/components/Accordion/AccordionSummary.astro +19 -0
  21. package/components/Accordion/AccordionSummary.react.tsx +30 -0
  22. package/components/Accordion/AccordionSummary.svelte +24 -0
  23. package/components/Accordion/AccordionSummary.vue +27 -0
  24. package/components/Accordion/icons.ts +2 -0
  25. package/components/Accordion/types.astro.ts +13 -4
  26. package/components/Accordion/types.react.ts +14 -0
  27. package/components/Accordion/types.svelte.ts +15 -7
  28. package/components/Accordion/types.ts +16 -10
  29. package/components/Accordion/types.vue-props.ts +22 -0
  30. package/components/Anchor/Anchor.astro +37 -49
  31. package/components/Anchor/Anchor.react.tsx +38 -0
  32. package/components/Anchor/Anchor.svelte +47 -0
  33. package/components/Anchor/Anchor.vue +43 -41
  34. package/components/Anchor/AnchorContent.astro +17 -0
  35. package/components/Anchor/AnchorContent.react.tsx +18 -0
  36. package/components/Anchor/AnchorContent.svelte +23 -0
  37. package/components/Anchor/AnchorContent.vue +20 -0
  38. package/components/Anchor/context.astro.ts +4 -0
  39. package/components/Anchor/context.react.ts +8 -0
  40. package/components/Anchor/context.svelte.ts +7 -0
  41. package/components/Anchor/context.vue.ts +4 -0
  42. package/components/Anchor/root.ts +12 -0
  43. package/components/Anchor/types.astro.ts +7 -4
  44. package/components/Anchor/types.react.ts +7 -0
  45. package/components/Anchor/types.svelte.ts +7 -7
  46. package/components/Anchor/types.ts +18 -9
  47. package/components/Anchor/types.vue-props.ts +15 -0
  48. package/components/Avatar/Avatar.astro +33 -29
  49. package/components/Avatar/Avatar.react.tsx +34 -0
  50. package/components/Avatar/Avatar.svelte +39 -0
  51. package/components/Avatar/Avatar.vue +26 -24
  52. package/components/Avatar/AvatarGroup.astro +9 -0
  53. package/components/Avatar/AvatarGroup.react.tsx +12 -0
  54. package/components/Avatar/AvatarGroup.svelte +15 -0
  55. package/components/Avatar/AvatarGroup.vue +12 -0
  56. package/components/Avatar/types.astro.ts +11 -10
  57. package/components/Avatar/types.react.ts +11 -0
  58. package/components/Avatar/types.svelte.ts +11 -12
  59. package/components/Avatar/types.ts +32 -29
  60. package/components/Avatar/types.vue-props.ts +11 -0
  61. package/components/Badge/Badge.astro +56 -51
  62. package/components/Badge/Badge.react.tsx +50 -0
  63. package/components/Badge/Badge.svelte +48 -0
  64. package/components/Badge/Badge.vue +36 -40
  65. package/components/Badge/types.astro.ts +4 -4
  66. package/components/Badge/types.react.ts +6 -0
  67. package/components/Badge/types.svelte.ts +7 -4
  68. package/components/Badge/types.ts +12 -12
  69. package/components/Badge/types.vue-props.ts +7 -0
  70. package/components/Button/Button.astro +36 -36
  71. package/components/Button/Button.react.tsx +33 -0
  72. package/components/Button/Button.svelte +37 -0
  73. package/components/Button/Button.vue +27 -27
  74. package/components/Button/types.astro.ts +6 -6
  75. package/components/Button/types.react.ts +11 -0
  76. package/components/Button/types.svelte.ts +15 -6
  77. package/components/Button/types.ts +32 -16
  78. package/components/Button/types.vue-props.ts +6 -0
  79. package/components/ButtonGroup/ButtonGroup.astro +33 -29
  80. package/components/ButtonGroup/ButtonGroup.react.tsx +30 -0
  81. package/components/ButtonGroup/ButtonGroup.svelte +34 -0
  82. package/components/ButtonGroup/ButtonGroup.vue +25 -22
  83. package/components/ButtonGroup/types.astro.ts +4 -4
  84. package/components/ButtonGroup/types.react.ts +4 -0
  85. package/components/ButtonGroup/types.svelte.ts +4 -4
  86. package/components/ButtonGroup/types.ts +7 -7
  87. package/components/ButtonGroup/types.vue-props.ts +6 -0
  88. package/components/Callout/Callout.astro +24 -76
  89. package/components/Callout/Callout.react.tsx +26 -0
  90. package/components/Callout/Callout.svelte +32 -0
  91. package/components/Callout/Callout.vue +23 -63
  92. package/components/Callout/CalloutContent.astro +9 -0
  93. package/components/Callout/CalloutContent.react.tsx +6 -0
  94. package/components/Callout/CalloutContent.svelte +15 -0
  95. package/components/Callout/CalloutContent.vue +12 -0
  96. package/components/Callout/CalloutIcon.astro +25 -0
  97. package/components/Callout/CalloutIcon.react.tsx +26 -0
  98. package/components/Callout/CalloutIcon.svelte +24 -0
  99. package/components/Callout/CalloutIcon.vue +25 -0
  100. package/components/Callout/context.astro.ts +4 -0
  101. package/components/Callout/context.react.ts +8 -0
  102. package/components/Callout/context.svelte.ts +7 -0
  103. package/components/Callout/context.vue.ts +4 -0
  104. package/components/Callout/icons.ts +23 -0
  105. package/components/Callout/types.astro.ts +9 -4
  106. package/components/Callout/types.react.ts +9 -0
  107. package/components/Callout/types.svelte.ts +9 -7
  108. package/components/Callout/types.ts +10 -10
  109. package/components/Callout/types.vue-props.ts +14 -0
  110. package/components/Card/Card.astro +18 -34
  111. package/components/Card/Card.react.tsx +15 -0
  112. package/components/Card/Card.svelte +23 -0
  113. package/components/Card/Card.vue +18 -28
  114. package/components/Card/CardActions.astro +16 -0
  115. package/components/Card/CardActions.react.tsx +15 -0
  116. package/components/Card/CardActions.svelte +23 -0
  117. package/components/Card/CardActions.vue +18 -0
  118. package/components/Card/CardContent.astro +9 -0
  119. package/components/Card/CardContent.react.tsx +6 -0
  120. package/components/Card/CardContent.svelte +15 -0
  121. package/components/Card/CardContent.vue +12 -0
  122. package/components/Card/CardHeader.astro +9 -0
  123. package/components/Card/CardHeader.react.tsx +6 -0
  124. package/components/Card/CardHeader.svelte +15 -0
  125. package/components/Card/CardHeader.vue +12 -0
  126. package/components/Card/types.astro.ts +10 -4
  127. package/components/Card/types.react.ts +10 -0
  128. package/components/Card/types.svelte.ts +11 -7
  129. package/components/Card/types.ts +11 -11
  130. package/components/Card/types.vue-props.ts +17 -0
  131. package/components/Carousel/Carousel.astro +44 -0
  132. package/components/Carousel/Carousel.react.tsx +47 -0
  133. package/components/Carousel/Carousel.svelte +45 -0
  134. package/components/Carousel/Carousel.vue +44 -0
  135. package/components/Carousel/types.astro.ts +4 -0
  136. package/components/Carousel/types.react.ts +4 -0
  137. package/components/Carousel/types.svelte.ts +4 -0
  138. package/components/Carousel/types.ts +11 -0
  139. package/components/Carousel/types.vue-props.ts +6 -0
  140. package/components/Checkbox/Checkbox.astro +58 -46
  141. package/components/Checkbox/Checkbox.react.tsx +51 -0
  142. package/components/Checkbox/Checkbox.svelte +61 -0
  143. package/components/Checkbox/Checkbox.vue +64 -43
  144. package/components/Checkbox/CheckboxInput.astro +20 -16
  145. package/components/Checkbox/CheckboxInput.react.tsx +39 -0
  146. package/components/Checkbox/CheckboxInput.svelte +34 -0
  147. package/components/Checkbox/CheckboxInput.vue +50 -32
  148. package/components/Checkbox/types.astro.ts +7 -8
  149. package/components/Checkbox/types.react.ts +11 -0
  150. package/components/Checkbox/types.svelte.ts +16 -12
  151. package/components/Checkbox/types.ts +20 -16
  152. package/components/Checkbox/types.vue-props.ts +15 -0
  153. package/components/Chip/Chip.astro +47 -31
  154. package/components/Chip/Chip.react.tsx +45 -0
  155. package/components/Chip/Chip.svelte +45 -0
  156. package/components/Chip/Chip.vue +44 -37
  157. package/components/Chip/types.astro.ts +9 -9
  158. package/components/Chip/types.react.ts +15 -0
  159. package/components/Chip/types.svelte.ts +16 -14
  160. package/components/Chip/types.ts +30 -13
  161. package/components/Chip/types.vue-props.ts +11 -0
  162. package/components/DescriptionList/DescriptionList.astro +22 -18
  163. package/components/DescriptionList/DescriptionList.react.tsx +25 -0
  164. package/components/DescriptionList/DescriptionList.svelte +29 -0
  165. package/components/DescriptionList/DescriptionList.vue +22 -23
  166. package/components/DescriptionList/DescriptionListDescription.astro +9 -0
  167. package/components/DescriptionList/DescriptionListDescription.react.tsx +9 -0
  168. package/components/DescriptionList/DescriptionListDescription.svelte +15 -0
  169. package/components/DescriptionList/{Description.vue → DescriptionListDescription.vue} +15 -12
  170. package/components/DescriptionList/DescriptionListItem.astro +9 -0
  171. package/components/DescriptionList/DescriptionListItem.react.tsx +6 -0
  172. package/components/DescriptionList/DescriptionListItem.svelte +15 -0
  173. package/components/DescriptionList/{Item.vue → DescriptionListItem.vue} +15 -12
  174. package/components/DescriptionList/DescriptionListTerm.astro +9 -0
  175. package/components/DescriptionList/DescriptionListTerm.react.tsx +6 -0
  176. package/components/DescriptionList/DescriptionListTerm.svelte +15 -0
  177. package/components/DescriptionList/{Term.vue → DescriptionListTerm.vue} +15 -12
  178. package/components/DescriptionList/types.astro.ts +10 -10
  179. package/components/DescriptionList/types.react.ts +10 -0
  180. package/components/DescriptionList/types.svelte.ts +10 -4
  181. package/components/DescriptionList/types.ts +5 -3
  182. package/components/DescriptionList/types.vue-props.ts +12 -0
  183. package/components/Dialog/Dialog.astro +24 -38
  184. package/components/Dialog/Dialog.react.tsx +23 -0
  185. package/components/Dialog/Dialog.svelte +33 -0
  186. package/components/Dialog/Dialog.vue +25 -35
  187. package/components/Dialog/DialogContent.astro +9 -0
  188. package/components/Dialog/DialogContent.react.tsx +6 -0
  189. package/components/Dialog/DialogContent.svelte +15 -0
  190. package/components/Dialog/DialogContent.vue +12 -0
  191. package/components/Dialog/DialogFooter.astro +16 -0
  192. package/components/Dialog/DialogFooter.react.tsx +15 -0
  193. package/components/Dialog/DialogFooter.svelte +23 -0
  194. package/components/Dialog/DialogFooter.vue +18 -0
  195. package/components/Dialog/DialogHeader.astro +9 -0
  196. package/components/Dialog/DialogHeader.react.tsx +6 -0
  197. package/components/Dialog/DialogHeader.svelte +15 -0
  198. package/components/Dialog/DialogHeader.vue +12 -0
  199. package/components/Dialog/DialogTitle.astro +14 -0
  200. package/components/Dialog/DialogTitle.react.tsx +13 -0
  201. package/components/Dialog/DialogTitle.svelte +23 -0
  202. package/components/Dialog/DialogTitle.vue +18 -0
  203. package/components/Dialog/context.astro.ts +4 -0
  204. package/components/Dialog/context.react.ts +8 -0
  205. package/components/Dialog/context.svelte.ts +7 -0
  206. package/components/Dialog/context.vue.ts +4 -0
  207. package/components/Dialog/types.astro.ts +12 -4
  208. package/components/Dialog/types.react.ts +12 -0
  209. package/components/Dialog/types.svelte.ts +15 -7
  210. package/components/Dialog/types.ts +17 -10
  211. package/components/Dialog/types.vue-props.ts +24 -0
  212. package/components/Divider/Divider.astro +34 -12
  213. package/components/Divider/Divider.react.tsx +36 -0
  214. package/components/Divider/Divider.svelte +40 -0
  215. package/components/Divider/Divider.vue +30 -12
  216. package/components/Divider/types.astro.ts +4 -4
  217. package/components/Divider/types.react.ts +4 -0
  218. package/components/Divider/types.svelte.ts +4 -4
  219. package/components/Divider/types.ts +5 -3
  220. package/components/Divider/types.vue-props.ts +6 -0
  221. package/components/Drawer/Drawer.astro +42 -47
  222. package/components/Drawer/Drawer.react.tsx +40 -0
  223. package/components/Drawer/Drawer.svelte +50 -0
  224. package/components/Drawer/Drawer.vue +41 -46
  225. package/components/Drawer/DrawerContent.astro +9 -0
  226. package/components/Drawer/DrawerContent.react.tsx +6 -0
  227. package/components/Drawer/DrawerContent.svelte +15 -0
  228. package/components/Drawer/DrawerContent.vue +12 -0
  229. package/components/Drawer/DrawerFooter.astro +16 -11
  230. package/components/Drawer/DrawerFooter.react.tsx +15 -0
  231. package/components/Drawer/DrawerFooter.svelte +23 -0
  232. package/components/Drawer/DrawerFooter.vue +18 -16
  233. package/components/Drawer/DrawerHeader.astro +35 -27
  234. package/components/Drawer/DrawerHeader.react.tsx +41 -0
  235. package/components/Drawer/DrawerHeader.svelte +42 -0
  236. package/components/Drawer/DrawerHeader.vue +35 -36
  237. package/components/Drawer/DrawerTitle.astro +14 -0
  238. package/components/Drawer/DrawerTitle.react.tsx +13 -0
  239. package/components/Drawer/DrawerTitle.svelte +23 -0
  240. package/components/Drawer/DrawerTitle.vue +18 -0
  241. package/components/Drawer/context.astro.ts +4 -0
  242. package/components/Drawer/context.react.ts +8 -0
  243. package/components/Drawer/context.svelte.ts +7 -0
  244. package/components/Drawer/context.vue.ts +4 -0
  245. package/components/Drawer/icons.ts +2 -0
  246. package/components/Drawer/types.astro.ts +12 -8
  247. package/components/Drawer/types.react.ts +13 -0
  248. package/components/Drawer/types.svelte.ts +16 -15
  249. package/components/Drawer/types.ts +25 -20
  250. package/components/Drawer/types.vue-props.ts +24 -0
  251. package/components/FieldDescription/FieldDescription.astro +9 -9
  252. package/components/FieldDescription/FieldDescription.react.tsx +6 -0
  253. package/components/FieldDescription/FieldDescription.svelte +15 -0
  254. package/components/FieldDescription/FieldDescription.vue +12 -12
  255. package/components/FieldDescription/types.astro.ts +4 -4
  256. package/components/FieldDescription/types.react.ts +4 -0
  257. package/components/FieldDescription/types.svelte.ts +4 -4
  258. package/components/FieldDescription/types.ts +1 -1
  259. package/components/FieldDescription/types.vue-props.ts +6 -0
  260. package/components/FieldGroup/FieldGroup.astro +24 -24
  261. package/components/FieldGroup/FieldGroup.react.tsx +27 -0
  262. package/components/FieldGroup/FieldGroup.svelte +32 -0
  263. package/components/FieldGroup/FieldGroup.vue +23 -25
  264. package/components/FieldGroup/context.astro.ts +4 -0
  265. package/components/FieldGroup/context.react.ts +8 -0
  266. package/components/FieldGroup/context.svelte.ts +8 -0
  267. package/components/FieldGroup/context.vue.ts +4 -0
  268. package/components/FieldGroup/types.astro.ts +4 -4
  269. package/components/FieldGroup/types.react.ts +4 -0
  270. package/components/FieldGroup/types.svelte.ts +4 -4
  271. package/components/FieldGroup/types.ts +6 -4
  272. package/components/FieldGroup/types.vue-props.ts +6 -0
  273. package/components/FieldLegend/FieldLegend.astro +11 -11
  274. package/components/FieldLegend/FieldLegend.react.tsx +14 -0
  275. package/components/FieldLegend/FieldLegend.svelte +20 -0
  276. package/components/FieldLegend/FieldLegend.vue +20 -18
  277. package/components/FieldLegend/types.astro.ts +6 -6
  278. package/components/FieldLegend/types.react.ts +6 -0
  279. package/components/FieldLegend/types.svelte.ts +6 -6
  280. package/components/FieldLegend/types.ts +1 -1
  281. package/components/FieldLegend/types.vue-props.ts +9 -0
  282. package/components/{FieldSet/FieldSet.astro → Fieldset/Fieldset.astro} +15 -11
  283. package/components/Fieldset/Fieldset.react.tsx +15 -0
  284. package/components/Fieldset/Fieldset.svelte +21 -0
  285. package/components/Fieldset/Fieldset.vue +21 -0
  286. package/components/{FieldSet → Fieldset}/types.astro.ts +6 -6
  287. package/components/Fieldset/types.react.ts +6 -0
  288. package/components/Fieldset/types.svelte.ts +6 -0
  289. package/components/Fieldset/types.ts +1 -0
  290. package/components/Fieldset/types.vue-props.ts +9 -0
  291. package/components/Form/Form.astro +10 -10
  292. package/components/Form/Form.react.tsx +9 -0
  293. package/components/Form/Form.svelte +16 -0
  294. package/components/Form/Form.vue +16 -14
  295. package/components/Form/types.astro.ts +6 -6
  296. package/components/Form/types.react.ts +6 -0
  297. package/components/Form/types.svelte.ts +6 -7
  298. package/components/Form/types.ts +1 -1
  299. package/components/Form/types.vue-props.ts +9 -0
  300. package/components/List/List.astro +29 -29
  301. package/components/List/List.react.tsx +27 -0
  302. package/components/List/List.svelte +31 -0
  303. package/components/List/List.vue +23 -28
  304. package/components/List/types.astro.ts +4 -4
  305. package/components/List/types.react.ts +4 -0
  306. package/components/List/types.svelte.ts +4 -4
  307. package/components/List/types.ts +6 -7
  308. package/components/List/types.vue-props.ts +6 -0
  309. package/components/ListItem/ListItem.astro +115 -108
  310. package/components/ListItem/ListItem.react.tsx +65 -0
  311. package/components/ListItem/ListItem.svelte +80 -0
  312. package/components/ListItem/ListItem.vue +93 -98
  313. package/components/ListItem/types.astro.ts +9 -10
  314. package/components/ListItem/types.react.ts +17 -0
  315. package/components/ListItem/types.svelte.ts +17 -14
  316. package/components/ListItem/types.ts +35 -32
  317. package/components/ListItem/types.vue-props.ts +14 -0
  318. package/components/Menu/Menu.astro +86 -0
  319. package/components/Menu/Menu.react.tsx +87 -0
  320. package/components/Menu/Menu.svelte +71 -0
  321. package/components/Menu/Menu.vue +76 -0
  322. package/components/Menu/context.astro.ts +4 -0
  323. package/components/Menu/context.react.ts +8 -0
  324. package/components/Menu/context.svelte.ts +7 -0
  325. package/components/Menu/context.vue.ts +4 -0
  326. package/components/Menu/types.astro.ts +12 -0
  327. package/components/Menu/types.react.ts +12 -0
  328. package/components/Menu/types.svelte.ts +12 -0
  329. package/components/Menu/types.ts +23 -0
  330. package/components/Menu/types.vue-props.ts +16 -0
  331. package/components/Progress/Progress.astro +20 -31
  332. package/components/Progress/Progress.react.tsx +27 -0
  333. package/components/Progress/Progress.svelte +30 -0
  334. package/components/Progress/Progress.vue +30 -34
  335. package/components/Progress/types.astro.ts +5 -4
  336. package/components/Progress/types.react.ts +5 -0
  337. package/components/Progress/types.svelte.ts +5 -4
  338. package/components/Progress/types.ts +5 -10
  339. package/components/Progress/types.vue-props.ts +6 -0
  340. package/components/Radio/Radio.astro +58 -44
  341. package/components/Radio/Radio.react.tsx +51 -0
  342. package/components/Radio/Radio.svelte +59 -0
  343. package/components/Radio/Radio.vue +62 -41
  344. package/components/Radio/RadioInput.astro +10 -7
  345. package/components/Radio/RadioInput.react.tsx +10 -0
  346. package/components/Radio/RadioInput.svelte +27 -0
  347. package/components/Radio/RadioInput.vue +39 -14
  348. package/components/Radio/types.astro.ts +7 -6
  349. package/components/Radio/types.react.ts +11 -0
  350. package/components/Radio/types.svelte.ts +16 -12
  351. package/components/Radio/types.ts +17 -12
  352. package/components/Radio/types.vue-props.ts +15 -0
  353. package/components/Range/Range.astro +139 -128
  354. package/components/Range/Range.react.tsx +157 -0
  355. package/components/Range/Range.svelte +136 -0
  356. package/components/Range/Range.vue +169 -85
  357. package/components/Range/types.astro.ts +1 -3
  358. package/components/Range/types.react.ts +10 -0
  359. package/components/Range/types.svelte.ts +8 -3
  360. package/components/Range/types.ts +24 -25
  361. package/components/Range/types.vue-props.ts +16 -0
  362. package/components/Range/value.ts +27 -0
  363. package/components/Select/Select.astro +147 -108
  364. package/components/Select/Select.react.tsx +124 -0
  365. package/components/Select/Select.svelte +123 -0
  366. package/components/Select/Select.vue +157 -85
  367. package/components/Select/selection.ts +11 -0
  368. package/components/Select/types.react.ts +6 -0
  369. package/components/Select/types.svelte.ts +1 -1
  370. package/components/Select/types.ts +16 -13
  371. package/components/Select/types.vue-props.ts +20 -0
  372. package/components/Switch/Switch.astro +72 -76
  373. package/components/Switch/Switch.react.tsx +63 -0
  374. package/components/Switch/Switch.svelte +73 -0
  375. package/components/Switch/Switch.vue +81 -63
  376. package/components/Switch/SwitchInput.astro +10 -7
  377. package/components/Switch/SwitchInput.react.tsx +12 -0
  378. package/components/Switch/SwitchInput.svelte +30 -0
  379. package/components/Switch/SwitchInput.vue +36 -14
  380. package/components/Switch/types.astro.ts +7 -5
  381. package/components/Switch/types.react.ts +11 -0
  382. package/components/Switch/types.svelte.ts +16 -9
  383. package/components/Switch/types.ts +19 -16
  384. package/components/Switch/types.vue-props.ts +17 -0
  385. package/components/Table/Table.astro +27 -14
  386. package/components/Table/Table.react.tsx +24 -0
  387. package/components/Table/Table.svelte +28 -0
  388. package/components/Table/Table.vue +20 -19
  389. package/components/Table/TableBody.astro +9 -0
  390. package/components/Table/TableBody.react.tsx +5 -0
  391. package/components/Table/TableBody.svelte +9 -0
  392. package/components/Table/TableBody.vue +12 -0
  393. package/components/Table/TableCaption.astro +9 -0
  394. package/components/Table/TableCaption.react.tsx +5 -0
  395. package/components/Table/TableCaption.svelte +9 -0
  396. package/components/Table/TableCaption.vue +12 -0
  397. package/components/Table/TableCell.astro +9 -0
  398. package/components/Table/TableCell.react.tsx +6 -0
  399. package/components/Table/TableCell.svelte +16 -0
  400. package/components/Table/TableCell.vue +12 -0
  401. package/components/Table/TableColumn.astro +8 -0
  402. package/components/Table/TableColumn.react.tsx +7 -0
  403. package/components/Table/TableColumn.svelte +8 -0
  404. package/components/Table/TableColumn.vue +12 -0
  405. package/components/Table/TableColumnGroup.astro +9 -0
  406. package/components/Table/TableColumnGroup.react.tsx +5 -0
  407. package/components/Table/TableColumnGroup.svelte +9 -0
  408. package/components/Table/TableColumnGroup.vue +12 -0
  409. package/components/Table/TableFoot.astro +9 -0
  410. package/components/Table/TableFoot.react.tsx +5 -0
  411. package/components/Table/TableFoot.svelte +9 -0
  412. package/components/Table/TableFoot.vue +12 -0
  413. package/components/Table/TableHead.astro +9 -0
  414. package/components/Table/TableHead.react.tsx +5 -0
  415. package/components/Table/TableHead.svelte +9 -0
  416. package/components/Table/TableHead.vue +12 -0
  417. package/components/Table/TableHeaderCell.astro +9 -0
  418. package/components/Table/TableHeaderCell.react.tsx +10 -0
  419. package/components/Table/TableHeaderCell.svelte +16 -0
  420. package/components/Table/TableHeaderCell.vue +12 -0
  421. package/components/Table/TableRow.astro +9 -0
  422. package/components/Table/TableRow.react.tsx +5 -0
  423. package/components/Table/TableRow.svelte +9 -0
  424. package/components/Table/TableRow.vue +12 -0
  425. package/components/Table/types.astro.ts +22 -16
  426. package/components/Table/types.react.ts +22 -0
  427. package/components/Table/types.svelte.ts +23 -11
  428. package/components/Table/types.ts +14 -9
  429. package/components/Table/types.vue-props.ts +28 -0
  430. package/components/Tabs/Tabs.astro +34 -24
  431. package/components/Tabs/Tabs.react.tsx +43 -0
  432. package/components/Tabs/Tabs.svelte +43 -0
  433. package/components/Tabs/Tabs.vue +30 -20
  434. package/components/Tabs/TabsItem.astro +28 -40
  435. package/components/Tabs/TabsItem.react.tsx +47 -0
  436. package/components/Tabs/TabsItem.svelte +52 -0
  437. package/components/Tabs/TabsItem.vue +41 -39
  438. package/components/Tabs/TabsLabel.astro +16 -0
  439. package/components/Tabs/TabsLabel.react.tsx +17 -0
  440. package/components/Tabs/TabsLabel.svelte +19 -0
  441. package/components/Tabs/TabsLabel.vue +16 -0
  442. package/components/Tabs/TabsPanel.astro +9 -16
  443. package/components/Tabs/TabsPanel.react.tsx +6 -0
  444. package/components/Tabs/TabsPanel.svelte +15 -0
  445. package/components/Tabs/TabsPanel.vue +12 -31
  446. package/components/Tabs/context.astro.ts +4 -0
  447. package/components/Tabs/context.react.ts +8 -0
  448. package/components/Tabs/context.svelte.ts +7 -0
  449. package/components/Tabs/context.vue.ts +4 -0
  450. package/components/Tabs/types.astro.ts +13 -11
  451. package/components/Tabs/types.react.ts +12 -0
  452. package/components/Tabs/types.svelte.ts +10 -10
  453. package/components/Tabs/types.ts +21 -19
  454. package/components/Tabs/types.vue-props.ts +25 -0
  455. package/components/TextField/TextField.astro +108 -124
  456. package/components/TextField/TextField.react.tsx +70 -0
  457. package/components/TextField/TextField.svelte +84 -0
  458. package/components/TextField/TextField.vue +94 -74
  459. package/components/TextField/types.astro.ts +15 -17
  460. package/components/TextField/types.react.ts +12 -0
  461. package/components/TextField/types.svelte.ts +2 -4
  462. package/components/TextField/types.ts +11 -25
  463. package/components/TextField/types.vue-props.ts +21 -0
  464. package/components/Textarea/Textarea.astro +104 -118
  465. package/components/Textarea/Textarea.react.tsx +64 -0
  466. package/components/Textarea/Textarea.svelte +80 -0
  467. package/components/Textarea/Textarea.vue +88 -64
  468. package/components/Textarea/types.astro.ts +8 -10
  469. package/components/Textarea/types.react.ts +8 -0
  470. package/components/Textarea/types.svelte.ts +13 -21
  471. package/components/Textarea/types.ts +21 -33
  472. package/components/Textarea/types.vue-props.ts +20 -0
  473. package/components/ToggleButton/ToggleButton.astro +43 -43
  474. package/components/ToggleButton/ToggleButton.react.tsx +57 -0
  475. package/components/ToggleButton/ToggleButton.svelte +58 -0
  476. package/components/ToggleButton/ToggleButton.vue +65 -41
  477. package/components/ToggleButton/types.astro.ts +4 -4
  478. package/components/ToggleButton/types.react.ts +4 -0
  479. package/components/ToggleButton/types.svelte.ts +5 -7
  480. package/components/ToggleButton/types.ts +6 -10
  481. package/components/ToggleButton/types.vue-props.ts +11 -0
  482. package/components/ToggleGroup/ToggleGroup.astro +40 -42
  483. package/components/ToggleGroup/ToggleGroup.react.tsx +54 -0
  484. package/components/ToggleGroup/ToggleGroup.svelte +54 -0
  485. package/components/ToggleGroup/ToggleGroup.vue +45 -36
  486. package/components/ToggleGroup/context.astro.ts +5 -0
  487. package/components/ToggleGroup/context.react.ts +8 -0
  488. package/components/ToggleGroup/context.svelte.ts +8 -0
  489. package/components/ToggleGroup/context.vue.ts +4 -0
  490. package/components/ToggleGroup/selection.ts +12 -0
  491. package/components/ToggleGroup/types.astro.ts +4 -4
  492. package/components/ToggleGroup/types.react.ts +12 -0
  493. package/components/ToggleGroup/types.svelte.ts +6 -9
  494. package/components/ToggleGroup/types.ts +17 -15
  495. package/components/ToggleGroup/types.vue-props.ts +6 -0
  496. package/components/Tooltip/Tooltip.astro +22 -23
  497. package/components/Tooltip/Tooltip.react.tsx +24 -0
  498. package/components/Tooltip/Tooltip.svelte +29 -0
  499. package/components/Tooltip/Tooltip.vue +21 -22
  500. package/components/Tooltip/types.astro.ts +4 -4
  501. package/components/Tooltip/types.react.ts +4 -0
  502. package/components/Tooltip/types.svelte.ts +4 -7
  503. package/components/Tooltip/types.ts +5 -11
  504. package/components/Tooltip/types.vue-props.ts +6 -0
  505. package/components/content.svelte +9 -0
  506. package/components/context.astro.ts +15 -0
  507. package/components/cx.ts +12 -0
  508. package/components/dev.ts +63 -0
  509. package/components/group.ts +2 -0
  510. package/components/id.ts +9 -0
  511. package/components/style.ts +33 -0
  512. package/components/tag.ts +6 -0
  513. package/components/vue.ts +18 -0
  514. package/core/normalize.css +191 -214
  515. package/core/palette.css +131 -314
  516. package/core/utils.css +55 -68
  517. package/css/compat/avatar.css +7 -0
  518. package/css/compat/menu.css +20 -0
  519. package/css/compat.css +3 -0
  520. package/css/components/accordion.css +237 -173
  521. package/css/components/anchor.css +40 -27
  522. package/css/components/avatar.css +105 -65
  523. package/css/components/badge.css +146 -107
  524. package/css/components/button-group.css +170 -179
  525. package/css/components/button.css +422 -212
  526. package/css/components/callout.css +153 -112
  527. package/css/components/card.css +234 -116
  528. package/css/components/carousel.css +399 -0
  529. package/css/components/checkbox.css +90 -211
  530. package/css/components/chip.css +215 -92
  531. package/css/components/choice.css +291 -0
  532. package/css/components/description-list.css +91 -81
  533. package/css/components/dialog.css +154 -64
  534. package/css/components/divider.css +73 -20
  535. package/css/components/drawer.css +300 -170
  536. package/css/components/form.css +131 -146
  537. package/css/components/layout.css +92 -0
  538. package/css/components/link.css +53 -21
  539. package/css/components/list.css +460 -343
  540. package/css/components/menu.css +174 -0
  541. package/css/components/progress.css +107 -99
  542. package/css/components/radio.css +61 -170
  543. package/css/components/range.css +463 -320
  544. package/css/components/select.css +189 -170
  545. package/css/components/spinner.css +57 -38
  546. package/css/components/switch.css +197 -270
  547. package/css/components/table.css +214 -173
  548. package/css/components/tabs.css +278 -84
  549. package/css/components/text-field.css +559 -449
  550. package/css/components/textarea.css +20 -26
  551. package/css/components/toggle-button.css +131 -91
  552. package/css/components/toggle-group.css +86 -56
  553. package/css/components/tooltip.css +125 -68
  554. package/css/components/typography.css +801 -580
  555. package/css/components.css +48 -41
  556. package/css/imports.css +15 -17
  557. package/css/js/checkbox.d.ts +3 -0
  558. package/css/js/checkbox.js +31 -21
  559. package/css/js/range.d.ts +1 -0
  560. package/css/js/range.js +44 -0
  561. package/css/layers.css +2 -0
  562. package/css/theme.css +750 -124
  563. package/dist/op.css +16 -241
  564. package/dist/op.css.map +1 -1
  565. package/dist/opui.baseline-2023.css +9209 -0
  566. package/dist/opui.baseline-2023.css.map +1 -0
  567. package/dist/opui.baseline-2024.css +9209 -0
  568. package/dist/opui.baseline-2024.css.map +1 -0
  569. package/dist/opui.baseline-2025.css +9209 -0
  570. package/dist/opui.baseline-2025.css.map +1 -0
  571. package/dist/opui.baseline-2026.css +9209 -0
  572. package/dist/opui.baseline-2026.css.map +1 -0
  573. package/dist/opui.components.css +7346 -5140
  574. package/dist/opui.components.css.map +1 -1
  575. package/dist/opui.css +8489 -6128
  576. package/dist/opui.css.map +1 -1
  577. package/dist/opui.no-compat.css +9182 -0
  578. package/dist/opui.no-compat.css.map +1 -0
  579. package/env.d.ts +17 -14
  580. package/open-props.css +15 -6
  581. package/package.json +136 -90
  582. package/react/elements.ts +13 -0
  583. package/react/index.ts +176 -0
  584. package/skills/opui/SKILL.md +75 -0
  585. package/skills/opui/references/accordion.md +253 -0
  586. package/skills/opui/references/anchor.md +213 -0
  587. package/skills/opui/references/avatar.md +202 -0
  588. package/skills/opui/references/badge.md +199 -0
  589. package/skills/opui/references/button-group.md +239 -0
  590. package/skills/opui/references/button.md +242 -0
  591. package/skills/opui/references/callout.md +221 -0
  592. package/skills/opui/references/card.md +222 -0
  593. package/skills/opui/references/carousel.md +269 -0
  594. package/skills/opui/references/checkbox.md +241 -0
  595. package/skills/opui/references/chip.md +135 -0
  596. package/skills/opui/references/customizing.md +85 -0
  597. package/skills/opui/references/description-list.md +191 -0
  598. package/skills/opui/references/dialog.md +301 -0
  599. package/skills/opui/references/divider.md +112 -0
  600. package/skills/opui/references/drawer.md +802 -0
  601. package/skills/opui/references/form.md +260 -0
  602. package/skills/opui/references/getting-started.md +398 -0
  603. package/skills/opui/references/index.md +89 -0
  604. package/skills/opui/references/layout.md +161 -0
  605. package/skills/opui/references/list.md +216 -0
  606. package/skills/opui/references/menu.md +248 -0
  607. package/skills/opui/references/progress.md +114 -0
  608. package/skills/opui/references/radio.md +234 -0
  609. package/skills/opui/references/range.md +150 -0
  610. package/skills/opui/references/select.md +255 -0
  611. package/skills/opui/references/spinner.md +85 -0
  612. package/skills/opui/references/switch.md +223 -0
  613. package/skills/opui/references/table.md +480 -0
  614. package/skills/opui/references/tabs.md +257 -0
  615. package/skills/opui/references/text-field.md +167 -0
  616. package/skills/opui/references/textarea.md +169 -0
  617. package/skills/opui/references/theming.md +278 -0
  618. package/skills/opui/references/toggle.md +222 -0
  619. package/skills/opui/references/tooltip.md +167 -0
  620. package/skills/opui/references/typography.md +159 -0
  621. package/svelte/elements.ts +7 -0
  622. package/svelte/index.ts +177 -0
  623. package/themes/bootstrap.css +223 -0
  624. package/themes/brutalist.css +105 -0
  625. package/themes/m3.css +152 -0
  626. package/themes/shadcn.css +125 -0
  627. package/tokens.json +3729 -0
  628. package/vue/index.ts +175 -54
  629. package/components/AGENTS.md +0 -247
  630. package/components/Accordion/types.d.vue.ts +0 -15
  631. package/components/Accordion/types.solid.ts +0 -6
  632. package/components/Anchor/types.d.vue.ts +0 -10
  633. package/components/Anchor/types.solid.ts +0 -6
  634. package/components/Avatar/types.d.vue.ts +0 -12
  635. package/components/Avatar/types.solid.ts +0 -11
  636. package/components/Badge/types.d.vue.ts +0 -10
  637. package/components/Badge/types.solid.ts +0 -4
  638. package/components/Button/types.d.vue.ts +0 -10
  639. package/components/Button/types.solid.ts +0 -8
  640. package/components/ButtonGroup/types.d.vue.ts +0 -10
  641. package/components/ButtonGroup/types.solid.ts +0 -4
  642. package/components/Callout/types.d.vue.ts +0 -10
  643. package/components/Callout/types.solid.ts +0 -6
  644. package/components/Card/types.d.vue.ts +0 -10
  645. package/components/Card/types.solid.ts +0 -6
  646. package/components/Checkbox/types.d.vue.ts +0 -11
  647. package/components/Checkbox/types.solid.ts +0 -9
  648. package/components/Chip/types.d.vue.ts +0 -10
  649. package/components/Chip/types.solid.ts +0 -10
  650. package/components/ClassicSelect/ClassicSelect.astro +0 -60
  651. package/components/ClassicSelect/ClassicSelect.vue +0 -54
  652. package/components/ClassicSelect/types.astro.ts +0 -8
  653. package/components/ClassicSelect/types.d.vue.ts +0 -10
  654. package/components/ClassicSelect/types.solid.ts +0 -5
  655. package/components/ClassicSelect/types.svelte.ts +0 -5
  656. package/components/ClassicSelect/types.ts +0 -15
  657. package/components/DescriptionList/Description.astro +0 -9
  658. package/components/DescriptionList/Item.astro +0 -9
  659. package/components/DescriptionList/Term.astro +0 -9
  660. package/components/DescriptionList/index.ts +0 -12
  661. package/components/DescriptionList/types.d.vue.ts +0 -10
  662. package/components/DescriptionList/types.solid.ts +0 -4
  663. package/components/Dialog/types.d.vue.ts +0 -10
  664. package/components/Dialog/types.solid.ts +0 -8
  665. package/components/Divider/types.d.vue.ts +0 -6
  666. package/components/Divider/types.solid.ts +0 -4
  667. package/components/Drawer/types.d.vue.ts +0 -31
  668. package/components/Drawer/types.solid.ts +0 -12
  669. package/components/FieldDescription/types.d.vue.ts +0 -10
  670. package/components/FieldDescription/types.solid.ts +0 -5
  671. package/components/FieldGroup/types.d.vue.ts +0 -12
  672. package/components/FieldGroup/types.solid.ts +0 -5
  673. package/components/FieldLegend/types.d.vue.ts +0 -11
  674. package/components/FieldLegend/types.solid.ts +0 -5
  675. package/components/FieldSet/FieldSet.vue +0 -18
  676. package/components/FieldSet/types.d.vue.ts +0 -11
  677. package/components/FieldSet/types.solid.ts +0 -5
  678. package/components/FieldSet/types.svelte.ts +0 -8
  679. package/components/FieldSet/types.ts +0 -5
  680. package/components/Form/types.d.vue.ts +0 -11
  681. package/components/Form/types.solid.ts +0 -5
  682. package/components/IconButton/IconButton.astro +0 -24
  683. package/components/IconButton/IconButton.vue +0 -24
  684. package/components/IconButton/types.astro.ts +0 -6
  685. package/components/IconButton/types.d.vue.ts +0 -10
  686. package/components/IconButton/types.solid.ts +0 -8
  687. package/components/IconButton/types.svelte.ts +0 -6
  688. package/components/IconButton/types.ts +0 -16
  689. package/components/List/types.d.vue.ts +0 -10
  690. package/components/List/types.solid.ts +0 -4
  691. package/components/ListItem/types.d.vue.ts +0 -10
  692. package/components/ListItem/types.solid.ts +0 -12
  693. package/components/Progress/types.d.vue.ts +0 -10
  694. package/components/Progress/types.solid.ts +0 -4
  695. package/components/Radio/types.d.vue.ts +0 -11
  696. package/components/Radio/types.solid.ts +0 -9
  697. package/components/Range/types.d.vue.ts +0 -14
  698. package/components/Range/types.solid.ts +0 -6
  699. package/components/Select/types.d.vue.ts +0 -17
  700. package/components/Select/types.solid.ts +0 -6
  701. package/components/Switch/types.d.vue.ts +0 -13
  702. package/components/Switch/types.solid.ts +0 -9
  703. package/components/Table/Body.astro +0 -11
  704. package/components/Table/Body.vue +0 -5
  705. package/components/Table/Cell.astro +0 -11
  706. package/components/Table/Cell.vue +0 -5
  707. package/components/Table/Column.astro +0 -12
  708. package/components/Table/Column.vue +0 -19
  709. package/components/Table/ColumnGroup.astro +0 -11
  710. package/components/Table/ColumnGroup.vue +0 -5
  711. package/components/Table/Head.astro +0 -11
  712. package/components/Table/Head.vue +0 -5
  713. package/components/Table/HeaderCell.astro +0 -11
  714. package/components/Table/HeaderCell.vue +0 -5
  715. package/components/Table/Row.astro +0 -11
  716. package/components/Table/Row.vue +0 -5
  717. package/components/Table/index.ts +0 -20
  718. package/components/Table/types.d.vue.ts +0 -10
  719. package/components/Table/types.solid.ts +0 -8
  720. package/components/Tabs/TabsTab.astro +0 -15
  721. package/components/Tabs/TabsTab.vue +0 -24
  722. package/components/Tabs/index.ts +0 -14
  723. package/components/Tabs/types.d.vue.ts +0 -31
  724. package/components/Tabs/types.solid.ts +0 -12
  725. package/components/TextField/types.d.vue.ts +0 -20
  726. package/components/TextField/types.solid.ts +0 -22
  727. package/components/Textarea/types.d.vue.ts +0 -19
  728. package/components/Textarea/types.solid.ts +0 -6
  729. package/components/Toast/Toast.astro +0 -42
  730. package/components/Toast/Toast.vue +0 -48
  731. package/components/ToggleButton/types.d.vue.ts +0 -10
  732. package/components/ToggleButton/types.solid.ts +0 -7
  733. package/components/ToggleGroup/types.d.vue.ts +0 -15
  734. package/components/ToggleGroup/types.solid.ts +0 -4
  735. package/components/Tooltip/types.d.vue.ts +0 -10
  736. package/components/Tooltip/types.solid.ts +0 -6
  737. package/css/components/icon-button.css +0 -139
  738. package/css/components/text-input.css +0 -68
  739. package/css/components/toast.css +0 -157
  740. package/css/js/toast.js +0 -94
package/tokens.json ADDED
@@ -0,0 +1,3729 @@
1
+ {
2
+ "color-scheme": {
3
+ "ui-color-scheme": {
4
+ "$description": "The color scheme in force: `light`, or `dark` under `prefers-color-scheme: dark`. `html` reads it as its `color-scheme`, `.ui-light` and `.ui-dark` set it on a part of the page, and `Typography` reads it in a style query. Set the classes, not the token.",
5
+ "$extensions": {
6
+ "opui": {
7
+ "cssVar": "--ui-color-scheme",
8
+ "modes": {
9
+ "dark": "dark"
10
+ },
11
+ "tier": "knob"
12
+ }
13
+ },
14
+ "$value": "light"
15
+ }
16
+ },
17
+ "palette": {
18
+ "ui-palette-chroma": {
19
+ "$description": "Chroma of the palette source color, as a multiplier of `0.21`.",
20
+ "$extensions": {
21
+ "opui": {
22
+ "css": "0.5",
23
+ "cssVar": "--ui-palette-chroma",
24
+ "tier": "knob"
25
+ }
26
+ },
27
+ "$type": "number",
28
+ "$value": 0.5
29
+ },
30
+ "ui-palette-hue": {
31
+ "$description": "Hue of the palette source color in degrees. `145` (green) by default, in both color schemes.",
32
+ "$extensions": {
33
+ "opui": {
34
+ "css": "145",
35
+ "cssVar": "--ui-palette-hue",
36
+ "tier": "knob"
37
+ }
38
+ },
39
+ "$type": "number",
40
+ "$value": 145
41
+ },
42
+ "ui-palette-hue-rotate-by": {
43
+ "$description": "Hue drift per palette step in degrees: each step rotates one more time than the last, so `1` spreads 15° across the ramp. The severity scopes use `1` for livelier tints, the brand palette `0`.",
44
+ "$extensions": {
45
+ "opui": {
46
+ "css": "0",
47
+ "cssVar": "--ui-palette-hue-rotate-by",
48
+ "tier": "knob"
49
+ }
50
+ },
51
+ "$type": "number",
52
+ "$value": 0
53
+ },
54
+ "ui-palette-source": {
55
+ "$description": "The source color the palette is derived from. Set it to replace `--ui-palette-hue` and `--ui-palette-chroma`. Any color works: the palette keeps its oklch hue, scales its chroma and sets the lightness per step. See [Palette](/guide/theming#palette).",
56
+ "$extensions": {
57
+ "opui": {
58
+ "cssVar": "--ui-palette-source",
59
+ "example": "oklch(0.58 calc(0.21 * 0.5) 240)",
60
+ "optional": true,
61
+ "tier": "knob"
62
+ }
63
+ },
64
+ "$type": "color"
65
+ },
66
+ "ui-gray-chroma": {
67
+ "$description": "Chroma of the gray ramp. Raise it for tinted grays.",
68
+ "$extensions": {
69
+ "opui": {
70
+ "css": "0.01",
71
+ "cssVar": "--ui-gray-chroma",
72
+ "tier": "knob"
73
+ }
74
+ },
75
+ "$type": "number",
76
+ "$value": 0.01
77
+ },
78
+ "ui-gray-hue": {
79
+ "$description": "Hue of the gray ramp.",
80
+ "$extensions": {
81
+ "opui": {
82
+ "css": "255",
83
+ "cssVar": "--ui-gray-hue",
84
+ "tier": "knob"
85
+ }
86
+ },
87
+ "$type": "number",
88
+ "$value": 255
89
+ }
90
+ },
91
+ "palette-steps": {
92
+ "ui-color-1": {
93
+ "$description": "Step 1 of the palette, at 98% lightness.",
94
+ "$extensions": {
95
+ "opui": {
96
+ "cssVar": "--ui-color-1",
97
+ "tier": "primitive"
98
+ }
99
+ },
100
+ "$type": "color",
101
+ "$value": "oklch( from var(--ui-palette-source) 98% calc(0.03 * (c / 0.21)) calc(h + (0 * var(--ui-palette-hue-rotate-by))) )"
102
+ },
103
+ "ui-color-2": {
104
+ "$description": "Step 2 of the palette, at 97% lightness.",
105
+ "$extensions": {
106
+ "opui": {
107
+ "cssVar": "--ui-color-2",
108
+ "tier": "primitive"
109
+ }
110
+ },
111
+ "$type": "color",
112
+ "$value": "oklch( from var(--ui-palette-source) 97% calc(0.06 * (c / 0.21)) calc(h + (1 * var(--ui-palette-hue-rotate-by))) )"
113
+ },
114
+ "ui-color-3": {
115
+ "$description": "Step 3 of the palette, at 93% lightness.",
116
+ "$extensions": {
117
+ "opui": {
118
+ "cssVar": "--ui-color-3",
119
+ "tier": "primitive"
120
+ }
121
+ },
122
+ "$type": "color",
123
+ "$value": "oklch( from var(--ui-palette-source) 93% calc(0.1 * (c / 0.21)) calc(h + (2 * var(--ui-palette-hue-rotate-by))) )"
124
+ },
125
+ "ui-color-4": {
126
+ "$description": "Step 4 of the palette, at 84% lightness.",
127
+ "$extensions": {
128
+ "opui": {
129
+ "cssVar": "--ui-color-4",
130
+ "tier": "primitive"
131
+ }
132
+ },
133
+ "$type": "color",
134
+ "$value": "oklch( from var(--ui-palette-source) 84% calc(0.12 * (c / 0.21)) calc(h + (3 * var(--ui-palette-hue-rotate-by))) )"
135
+ },
136
+ "ui-color-5": {
137
+ "$description": "Step 5 of the palette, at 80% lightness.",
138
+ "$extensions": {
139
+ "opui": {
140
+ "cssVar": "--ui-color-5",
141
+ "tier": "primitive"
142
+ }
143
+ },
144
+ "$type": "color",
145
+ "$value": "oklch( from var(--ui-palette-source) 80% calc(0.16 * (c / 0.21)) calc(h + (4 * var(--ui-palette-hue-rotate-by))) )"
146
+ },
147
+ "ui-color-6": {
148
+ "$description": "Step 6 of the palette, at 71% lightness.",
149
+ "$extensions": {
150
+ "opui": {
151
+ "cssVar": "--ui-color-6",
152
+ "tier": "primitive"
153
+ }
154
+ },
155
+ "$type": "color",
156
+ "$value": "oklch( from var(--ui-palette-source) 71% calc(0.19 * (c / 0.21)) calc(h + (5 * var(--ui-palette-hue-rotate-by))) )"
157
+ },
158
+ "ui-color-7": {
159
+ "$description": "Step 7 of the palette, at 66% lightness.",
160
+ "$extensions": {
161
+ "opui": {
162
+ "cssVar": "--ui-color-7",
163
+ "tier": "primitive"
164
+ }
165
+ },
166
+ "$type": "color",
167
+ "$value": "oklch( from var(--ui-palette-source) 66% calc(0.2 * (c / 0.21)) calc(h + (6 * var(--ui-palette-hue-rotate-by))) )"
168
+ },
169
+ "ui-color-8": {
170
+ "$description": "Step 8 of the palette, at 58% lightness.",
171
+ "$extensions": {
172
+ "opui": {
173
+ "cssVar": "--ui-color-8",
174
+ "tier": "primitive"
175
+ }
176
+ },
177
+ "$type": "color",
178
+ "$value": "oklch( from var(--ui-palette-source) 58% calc(0.21 * (c / 0.21)) calc(h + (7 * var(--ui-palette-hue-rotate-by))) )"
179
+ },
180
+ "ui-color-9": {
181
+ "$description": "Step 9 of the palette, at 53% lightness.",
182
+ "$extensions": {
183
+ "opui": {
184
+ "cssVar": "--ui-color-9",
185
+ "tier": "primitive"
186
+ }
187
+ },
188
+ "$type": "color",
189
+ "$value": "oklch( from var(--ui-palette-source) 53% calc(0.2 * (c / 0.21)) calc(h + (8 * var(--ui-palette-hue-rotate-by))) )"
190
+ },
191
+ "ui-color-10": {
192
+ "$description": "Step 10 of the palette, at 49% lightness.",
193
+ "$extensions": {
194
+ "opui": {
195
+ "cssVar": "--ui-color-10",
196
+ "tier": "primitive"
197
+ }
198
+ },
199
+ "$type": "color",
200
+ "$value": "oklch( from var(--ui-palette-source) 49% calc(0.19 * (c / 0.21)) calc(h + (9 * var(--ui-palette-hue-rotate-by))) )"
201
+ },
202
+ "ui-color-11": {
203
+ "$description": "Step 11 of the palette, at 42% lightness.",
204
+ "$extensions": {
205
+ "opui": {
206
+ "cssVar": "--ui-color-11",
207
+ "tier": "primitive"
208
+ }
209
+ },
210
+ "$type": "color",
211
+ "$value": "oklch( from var(--ui-palette-source) 42% calc(0.17 * (c / 0.21)) calc(h + (10 * var(--ui-palette-hue-rotate-by))) )"
212
+ },
213
+ "ui-color-12": {
214
+ "$description": "Step 12 of the palette, at 35% lightness.",
215
+ "$extensions": {
216
+ "opui": {
217
+ "cssVar": "--ui-color-12",
218
+ "tier": "primitive"
219
+ }
220
+ },
221
+ "$type": "color",
222
+ "$value": "oklch( from var(--ui-palette-source) 35% calc(0.15 * (c / 0.21)) calc(h + (11 * var(--ui-palette-hue-rotate-by))) )"
223
+ },
224
+ "ui-color-13": {
225
+ "$description": "Step 13 of the palette, at 27% lightness.",
226
+ "$extensions": {
227
+ "opui": {
228
+ "cssVar": "--ui-color-13",
229
+ "tier": "primitive"
230
+ }
231
+ },
232
+ "$type": "color",
233
+ "$value": "oklch( from var(--ui-palette-source) 27% calc(0.12 * (c / 0.21)) calc(h + (12 * var(--ui-palette-hue-rotate-by))) )"
234
+ },
235
+ "ui-color-14": {
236
+ "$description": "Step 14 of the palette, at 20% lightness.",
237
+ "$extensions": {
238
+ "opui": {
239
+ "cssVar": "--ui-color-14",
240
+ "tier": "primitive"
241
+ }
242
+ },
243
+ "$type": "color",
244
+ "$value": "oklch( from var(--ui-palette-source) 20% calc(0.09 * (c / 0.21)) calc(h + (13 * var(--ui-palette-hue-rotate-by))) )"
245
+ },
246
+ "ui-color-15": {
247
+ "$description": "Step 15 of the palette, at 16% lightness.",
248
+ "$extensions": {
249
+ "opui": {
250
+ "cssVar": "--ui-color-15",
251
+ "tier": "primitive"
252
+ }
253
+ },
254
+ "$type": "color",
255
+ "$value": "oklch( from var(--ui-palette-source) 16% calc(0.07 * (c / 0.21)) calc(h + (14 * var(--ui-palette-hue-rotate-by))) )"
256
+ },
257
+ "ui-color-16": {
258
+ "$description": "Step 16 of the palette, at 10% lightness.",
259
+ "$extensions": {
260
+ "opui": {
261
+ "cssVar": "--ui-color-16",
262
+ "tier": "primitive"
263
+ }
264
+ },
265
+ "$type": "color",
266
+ "$value": "oklch( from var(--ui-palette-source) 10% calc(0.05 * (c / 0.21)) calc(h + (15 * var(--ui-palette-hue-rotate-by))) )"
267
+ },
268
+ "ui-gray-1": {
269
+ "$description": "Step 1 of the gray palette: the lightness of `--ui-color-1` at `--ui-gray-chroma` and `--ui-gray-hue`.",
270
+ "$extensions": {
271
+ "opui": {
272
+ "cssVar": "--ui-gray-1",
273
+ "tier": "primitive"
274
+ }
275
+ },
276
+ "$type": "color",
277
+ "$value": "oklch( from var(--ui-color-1) l var(--ui-gray-chroma) var(--ui-gray-hue) )"
278
+ },
279
+ "ui-gray-2": {
280
+ "$description": "Step 2 of the gray palette: the lightness of `--ui-color-2` at `--ui-gray-chroma` and `--ui-gray-hue`.",
281
+ "$extensions": {
282
+ "opui": {
283
+ "cssVar": "--ui-gray-2",
284
+ "tier": "primitive"
285
+ }
286
+ },
287
+ "$type": "color",
288
+ "$value": "oklch( from var(--ui-color-2) l var(--ui-gray-chroma) var(--ui-gray-hue) )"
289
+ },
290
+ "ui-gray-3": {
291
+ "$description": "Step 3 of the gray palette: the lightness of `--ui-color-3` at `--ui-gray-chroma` and `--ui-gray-hue`.",
292
+ "$extensions": {
293
+ "opui": {
294
+ "cssVar": "--ui-gray-3",
295
+ "tier": "primitive"
296
+ }
297
+ },
298
+ "$type": "color",
299
+ "$value": "oklch( from var(--ui-color-3) l var(--ui-gray-chroma) var(--ui-gray-hue) )"
300
+ },
301
+ "ui-gray-4": {
302
+ "$description": "Step 4 of the gray palette: the lightness of `--ui-color-4` at `--ui-gray-chroma` and `--ui-gray-hue`.",
303
+ "$extensions": {
304
+ "opui": {
305
+ "cssVar": "--ui-gray-4",
306
+ "tier": "primitive"
307
+ }
308
+ },
309
+ "$type": "color",
310
+ "$value": "oklch( from var(--ui-color-4) l var(--ui-gray-chroma) var(--ui-gray-hue) )"
311
+ },
312
+ "ui-gray-5": {
313
+ "$description": "Step 5 of the gray palette: the lightness of `--ui-color-5` at `--ui-gray-chroma` and `--ui-gray-hue`.",
314
+ "$extensions": {
315
+ "opui": {
316
+ "cssVar": "--ui-gray-5",
317
+ "tier": "primitive"
318
+ }
319
+ },
320
+ "$type": "color",
321
+ "$value": "oklch( from var(--ui-color-5) l var(--ui-gray-chroma) var(--ui-gray-hue) )"
322
+ },
323
+ "ui-gray-6": {
324
+ "$description": "Step 6 of the gray palette: the lightness of `--ui-color-6` at `--ui-gray-chroma` and `--ui-gray-hue`.",
325
+ "$extensions": {
326
+ "opui": {
327
+ "cssVar": "--ui-gray-6",
328
+ "tier": "primitive"
329
+ }
330
+ },
331
+ "$type": "color",
332
+ "$value": "oklch( from var(--ui-color-6) l var(--ui-gray-chroma) var(--ui-gray-hue) )"
333
+ },
334
+ "ui-gray-7": {
335
+ "$description": "Step 7 of the gray palette: the lightness of `--ui-color-7` at `--ui-gray-chroma` and `--ui-gray-hue`.",
336
+ "$extensions": {
337
+ "opui": {
338
+ "cssVar": "--ui-gray-7",
339
+ "tier": "primitive"
340
+ }
341
+ },
342
+ "$type": "color",
343
+ "$value": "oklch( from var(--ui-color-7) l var(--ui-gray-chroma) var(--ui-gray-hue) )"
344
+ },
345
+ "ui-gray-8": {
346
+ "$description": "Step 8 of the gray palette: the lightness of `--ui-color-8` at `--ui-gray-chroma` and `--ui-gray-hue`.",
347
+ "$extensions": {
348
+ "opui": {
349
+ "cssVar": "--ui-gray-8",
350
+ "tier": "primitive"
351
+ }
352
+ },
353
+ "$type": "color",
354
+ "$value": "oklch( from var(--ui-color-8) l var(--ui-gray-chroma) var(--ui-gray-hue) )"
355
+ },
356
+ "ui-gray-9": {
357
+ "$description": "Step 9 of the gray palette: the lightness of `--ui-color-9` at `--ui-gray-chroma` and `--ui-gray-hue`.",
358
+ "$extensions": {
359
+ "opui": {
360
+ "cssVar": "--ui-gray-9",
361
+ "tier": "primitive"
362
+ }
363
+ },
364
+ "$type": "color",
365
+ "$value": "oklch( from var(--ui-color-9) l var(--ui-gray-chroma) var(--ui-gray-hue) )"
366
+ },
367
+ "ui-gray-10": {
368
+ "$description": "Step 10 of the gray palette: the lightness of `--ui-color-10` at `--ui-gray-chroma` and `--ui-gray-hue`.",
369
+ "$extensions": {
370
+ "opui": {
371
+ "cssVar": "--ui-gray-10",
372
+ "tier": "primitive"
373
+ }
374
+ },
375
+ "$type": "color",
376
+ "$value": "oklch( from var(--ui-color-10) l var(--ui-gray-chroma) var(--ui-gray-hue) )"
377
+ },
378
+ "ui-gray-11": {
379
+ "$description": "Step 11 of the gray palette: the lightness of `--ui-color-11` at `--ui-gray-chroma` and `--ui-gray-hue`.",
380
+ "$extensions": {
381
+ "opui": {
382
+ "cssVar": "--ui-gray-11",
383
+ "tier": "primitive"
384
+ }
385
+ },
386
+ "$type": "color",
387
+ "$value": "oklch( from var(--ui-color-11) l var(--ui-gray-chroma) var(--ui-gray-hue) )"
388
+ },
389
+ "ui-gray-12": {
390
+ "$description": "Step 12 of the gray palette: the lightness of `--ui-color-12` at `--ui-gray-chroma` and `--ui-gray-hue`.",
391
+ "$extensions": {
392
+ "opui": {
393
+ "cssVar": "--ui-gray-12",
394
+ "tier": "primitive"
395
+ }
396
+ },
397
+ "$type": "color",
398
+ "$value": "oklch( from var(--ui-color-12) l var(--ui-gray-chroma) var(--ui-gray-hue) )"
399
+ },
400
+ "ui-gray-13": {
401
+ "$description": "Step 13 of the gray palette: the lightness of `--ui-color-13` at `--ui-gray-chroma` and `--ui-gray-hue`.",
402
+ "$extensions": {
403
+ "opui": {
404
+ "cssVar": "--ui-gray-13",
405
+ "tier": "primitive"
406
+ }
407
+ },
408
+ "$type": "color",
409
+ "$value": "oklch( from var(--ui-color-13) l var(--ui-gray-chroma) var(--ui-gray-hue) )"
410
+ },
411
+ "ui-gray-14": {
412
+ "$description": "Step 14 of the gray palette: the lightness of `--ui-color-14` at `--ui-gray-chroma` and `--ui-gray-hue`.",
413
+ "$extensions": {
414
+ "opui": {
415
+ "cssVar": "--ui-gray-14",
416
+ "tier": "primitive"
417
+ }
418
+ },
419
+ "$type": "color",
420
+ "$value": "oklch( from var(--ui-color-14) l var(--ui-gray-chroma) var(--ui-gray-hue) )"
421
+ },
422
+ "ui-gray-15": {
423
+ "$description": "Step 15 of the gray palette: the lightness of `--ui-color-15` at `--ui-gray-chroma` and `--ui-gray-hue`.",
424
+ "$extensions": {
425
+ "opui": {
426
+ "cssVar": "--ui-gray-15",
427
+ "tier": "primitive"
428
+ }
429
+ },
430
+ "$type": "color",
431
+ "$value": "oklch( from var(--ui-color-15) l var(--ui-gray-chroma) var(--ui-gray-hue) )"
432
+ },
433
+ "ui-gray-16": {
434
+ "$description": "Step 16 of the gray palette: the lightness of `--ui-color-16` at `--ui-gray-chroma` and `--ui-gray-hue`.",
435
+ "$extensions": {
436
+ "opui": {
437
+ "cssVar": "--ui-gray-16",
438
+ "tier": "primitive"
439
+ }
440
+ },
441
+ "$type": "color",
442
+ "$value": "oklch( from var(--ui-color-16) l var(--ui-gray-chroma) var(--ui-gray-hue) )"
443
+ }
444
+ },
445
+ "palette-roles": {
446
+ "ui-palette-accent": {
447
+ "$description": "The accent shade of the current palette: `Callout` icons and outlined borders. Stronger with more contrast. The severity `Chip` dot reads it. Re-derived inside every severity scope, so `.ui-success` gets a green one.",
448
+ "$extensions": {
449
+ "opui": {
450
+ "cssVar": "--ui-palette-accent",
451
+ "tier": "role"
452
+ }
453
+ },
454
+ "$type": "color",
455
+ "$value": "light-dark( oklch(from var(--ui-color-9) min(l, var(--ui-accent-max-lightness)) c h), oklch( from var(--ui-color-7) max(l, var(--ui-palette-accent-min-lightness)) c h ) )"
456
+ },
457
+ "ui-palette-border": {
458
+ "$description": "The border shade of the current palette: tonal `Callout` borders. Stronger with more contrast. Severity `Chip` borders read it. Re-derived inside every severity scope.",
459
+ "$extensions": {
460
+ "opui": {
461
+ "cssVar": "--ui-palette-border",
462
+ "tier": "role"
463
+ }
464
+ },
465
+ "$type": "color",
466
+ "$value": "light-dark( oklch( from var(--ui-color-5) min(l, var(--ui-palette-border-max-lightness)) c h ), oklch( from var(--ui-color-11) max(l, var(--ui-palette-border-min-lightness)) c h ) )"
467
+ },
468
+ "ui-palette-strong": {
469
+ "$description": "The strongest shade of the current palette, the darkest in light mode and the lightest in dark mode, with the most contrast against the page: `Callout` text, the default `Button` fill when `--ui-button-accent` is unset. Severity `Chip` text reads it. Re-derived inside every severity scope.",
470
+ "$extensions": {
471
+ "opui": {
472
+ "cssVar": "--ui-palette-strong",
473
+ "tier": "role"
474
+ }
475
+ },
476
+ "$type": "color",
477
+ "$value": "light-dark(var(--ui-color-16), var(--ui-color-1))"
478
+ },
479
+ "ui-palette-on-strong": {
480
+ "$description": "Text color on `--ui-palette-strong`.",
481
+ "$extensions": {
482
+ "opui": {
483
+ "cssVar": "--ui-palette-on-strong",
484
+ "promise": {
485
+ "against": [
486
+ "--ui-palette-strong"
487
+ ],
488
+ "ratio": 4.5
489
+ },
490
+ "tier": "role"
491
+ }
492
+ },
493
+ "$type": "color",
494
+ "$value": "light-dark(var(--ui-color-1), var(--ui-color-16))"
495
+ },
496
+ "ui-palette-text": {
497
+ "$description": "A readable text shade of the current palette, at least `--ui-palette-text-min-lightness` in dark mode. Darker in light mode and lighter in dark mode with more contrast. Re-derived inside every severity scope.",
498
+ "$extensions": {
499
+ "opui": {
500
+ "cssVar": "--ui-palette-text",
501
+ "promise": {
502
+ "against": [
503
+ "--ui-surface",
504
+ "--ui-surface-elevated",
505
+ "--ui-surface-filled",
506
+ "--ui-surface-tonal"
507
+ ],
508
+ "ratio": 4.5
509
+ },
510
+ "tier": "role"
511
+ }
512
+ },
513
+ "$type": "color",
514
+ "$value": "light-dark( oklch( from var(--ui-color-11) min(l, var(--ui-palette-text-max-lightness)) c h ), oklch( from var(--ui-color-6) max(l, var(--ui-palette-text-min-lightness)) min(c, var(--ui-accent-max-chroma)) h ) )"
515
+ },
516
+ "ui-palette-tint": {
517
+ "$description": "The tonal fill of the current palette: primary and critical tonal buttons when `--ui-primary-tonal` is unset. Stronger with more contrast. Re-derived inside every severity scope.",
518
+ "$extensions": {
519
+ "opui": {
520
+ "cssVar": "--ui-palette-tint",
521
+ "tier": "role"
522
+ }
523
+ },
524
+ "$type": "color",
525
+ "$value": "light-dark( oklch( from var(--ui-color-6) max(l, var(--ui-palette-tint-min-lightness)) c h ), oklch( from var(--ui-color-11) min(l, var(--ui-palette-tint-max-lightness)) c h ) )"
526
+ },
527
+ "ui-palette-on-tint": {
528
+ "$description": "Text color on `--ui-palette-tint`.",
529
+ "$extensions": {
530
+ "opui": {
531
+ "css": "var(--ui-text-strong)",
532
+ "cssVar": "--ui-palette-on-tint",
533
+ "promise": {
534
+ "against": [
535
+ "--ui-palette-tint"
536
+ ],
537
+ "ratio": 4.5
538
+ },
539
+ "tier": "role"
540
+ }
541
+ },
542
+ "$type": "color",
543
+ "$value": "{text.ui-text-strong}"
544
+ },
545
+ "ui-palette-tint-subtle": {
546
+ "$description": "A faint fill of the current palette: tonal severity `Callout`s. Tonal severity `Chip`s read it. Re-derived inside every severity scope.",
547
+ "$extensions": {
548
+ "opui": {
549
+ "cssVar": "--ui-palette-tint-subtle",
550
+ "tier": "role"
551
+ }
552
+ },
553
+ "$type": "color",
554
+ "$value": "light-dark( oklch(from var(--ui-color-3) l c h / 60%), oklch(from var(--ui-color-6) l c h / 5%) )"
555
+ }
556
+ },
557
+ "named-colors-no-severity-meaning": {
558
+ "ui-blue": {
559
+ "$description": "A literal blue, hue 240 at `0.53`, the lightness of palette step 9 in every palette. No severity meaning.",
560
+ "$extensions": {
561
+ "opui": {
562
+ "cssVar": "--ui-blue",
563
+ "tier": "role"
564
+ }
565
+ },
566
+ "$type": "color",
567
+ "$value": "light-dark( oklch(min(0.53, var(--ui-accent-max-lightness)) 0.2 240), oklch(0.53 0.2 240) )"
568
+ },
569
+ "ui-green": {
570
+ "$description": "A literal green, hue 145 at `0.53`, the lightness of palette step 9 in every palette. No severity meaning.",
571
+ "$extensions": {
572
+ "opui": {
573
+ "cssVar": "--ui-green",
574
+ "tier": "role"
575
+ }
576
+ },
577
+ "$type": "color",
578
+ "$value": "light-dark( oklch(min(0.53, var(--ui-accent-max-lightness)) 0.2 145), oklch(0.53 0.2 145) )"
579
+ },
580
+ "ui-orange": {
581
+ "$description": "A literal orange, hue 75 at `0.66`, the lightness of palette step 7 in every palette. No severity meaning.",
582
+ "$extensions": {
583
+ "opui": {
584
+ "cssVar": "--ui-orange",
585
+ "tier": "role"
586
+ }
587
+ },
588
+ "$type": "color",
589
+ "$value": "oklch(0.66 0.2 75)"
590
+ },
591
+ "ui-red": {
592
+ "$description": "A literal red, hue 25 at `0.53`, the lightness of palette step 9 in every palette. No severity meaning.",
593
+ "$extensions": {
594
+ "opui": {
595
+ "cssVar": "--ui-red",
596
+ "tier": "role"
597
+ }
598
+ },
599
+ "$type": "color",
600
+ "$value": "light-dark( oklch(min(0.53, var(--ui-accent-max-lightness)) 0.2 25), oklch(0.53 0.2 25) )"
601
+ }
602
+ },
603
+ "intent-tokens": {
604
+ "ui-critical": {
605
+ "$description": "Severity color for errors and destructive actions.",
606
+ "$extensions": {
607
+ "opui": {
608
+ "css": "var(--ui-red)",
609
+ "cssVar": "--ui-critical",
610
+ "tier": "role"
611
+ }
612
+ },
613
+ "$type": "color",
614
+ "$value": "{named-colors-no-severity-meaning.ui-red}"
615
+ },
616
+ "ui-critical-text": {
617
+ "$description": "Critical as a text color: the `.ui-critical` items of a `Menu`, a `.ui-critical` `Button` with no variant or `.ui-outlined`, and `del` and `.ui-del` text. `--ui-critical` with its lightness kept within `--ui-text-max-lightness` and `--ui-text-min-lightness`.",
618
+ "$extensions": {
619
+ "opui": {
620
+ "cssVar": "--ui-critical-text",
621
+ "promise": {
622
+ "against": [
623
+ "--ui-surface",
624
+ "--ui-surface-elevated",
625
+ "--ui-surface-filled",
626
+ "--ui-surface-tonal"
627
+ ],
628
+ "ratio": 4.5
629
+ },
630
+ "tier": "role"
631
+ }
632
+ },
633
+ "$type": "color",
634
+ "$value": "light-dark( oklch(from var(--ui-critical) min(l, var(--ui-text-max-lightness)) c h), oklch( from var(--ui-critical) max(l, var(--ui-text-min-lightness)) min(c, var(--ui-text-max-chroma)) h ) )"
635
+ },
636
+ "ui-info": {
637
+ "$description": "Severity color for informational messages, and the dotted underline of `abbr`, `dfn`, `.ui-abbr` and `.ui-dfn`.",
638
+ "$extensions": {
639
+ "opui": {
640
+ "css": "var(--ui-blue)",
641
+ "cssVar": "--ui-info",
642
+ "tier": "role"
643
+ }
644
+ },
645
+ "$type": "color",
646
+ "$value": "{named-colors-no-severity-meaning.ui-blue}"
647
+ },
648
+ "ui-info-text": {
649
+ "$description": "Info as a text color, for informational text outside an `.ui-info` scope. `--ui-info` with its lightness kept within `--ui-text-max-lightness` and `--ui-text-min-lightness`.",
650
+ "$extensions": {
651
+ "opui": {
652
+ "cssVar": "--ui-info-text",
653
+ "promise": {
654
+ "against": [
655
+ "--ui-surface",
656
+ "--ui-surface-elevated",
657
+ "--ui-surface-filled",
658
+ "--ui-surface-tonal"
659
+ ],
660
+ "ratio": 4.5
661
+ },
662
+ "tier": "role"
663
+ }
664
+ },
665
+ "$type": "color",
666
+ "$value": "light-dark( oklch(from var(--ui-info) min(l, var(--ui-text-max-lightness)) c h), oklch( from var(--ui-info) max(l, var(--ui-text-min-lightness)) min(c, var(--ui-text-max-chroma)) h ) )"
667
+ },
668
+ "ui-invalid": {
669
+ "$description": "Color for invalid field borders, fills and outlines. Lifted to `--ui-invalid-min-lightness` in dark mode, so invalid borders stand out from the page with more contrast.",
670
+ "$extensions": {
671
+ "opui": {
672
+ "cssVar": "--ui-invalid",
673
+ "tier": "role"
674
+ }
675
+ },
676
+ "$type": "color",
677
+ "$value": "light-dark( var(--ui-critical), oklch( from var(--ui-critical) max(l, var(--ui-invalid-min-lightness)) min(c, var(--ui-accent-max-chroma)) h ) )"
678
+ },
679
+ "ui-invalid-text": {
680
+ "$description": "Color for validation messages and invalid labels. `--ui-invalid` with its lightness kept within `--ui-text-max-lightness` and `--ui-text-min-lightness`, so it stays readable where `--ui-invalid` is lighter for borders.",
681
+ "$extensions": {
682
+ "opui": {
683
+ "cssVar": "--ui-invalid-text",
684
+ "promise": {
685
+ "against": [
686
+ "--ui-surface",
687
+ "--ui-surface-elevated",
688
+ "--ui-surface-filled",
689
+ "--ui-surface-tonal"
690
+ ],
691
+ "ratio": 4.5
692
+ },
693
+ "tier": "role"
694
+ }
695
+ },
696
+ "$type": "color",
697
+ "$value": "light-dark( oklch(from var(--ui-invalid) min(l, var(--ui-text-max-lightness)) c h), oklch( from var(--ui-invalid) max(l, var(--ui-text-min-lightness)) min(c, var(--ui-text-max-chroma)) h ) )"
698
+ },
699
+ "ui-neutral": {
700
+ "$description": "Severity color for neutral messages. `--ui-gray-hue` and `--ui-gray-chroma` at `0.53`, the lightness of `--ui-gray-9`, capped at `--ui-accent-max-lightness` in light mode. The `.ui-neutral` scope derives its palette from its hue and chroma.",
701
+ "$extensions": {
702
+ "opui": {
703
+ "cssVar": "--ui-neutral",
704
+ "tier": "role"
705
+ }
706
+ },
707
+ "$type": "color",
708
+ "$value": "light-dark( oklch( min(0.53, var(--ui-accent-max-lightness)) var(--ui-gray-chroma) var(--ui-gray-hue) ), oklch(0.53 var(--ui-gray-chroma) var(--ui-gray-hue)) )"
709
+ },
710
+ "ui-neutral-text": {
711
+ "$description": "Neutral as a text color, for neutral text outside an `.ui-neutral` scope. `--ui-neutral` with its lightness kept within `--ui-text-max-lightness` and `--ui-text-min-lightness`.",
712
+ "$extensions": {
713
+ "opui": {
714
+ "cssVar": "--ui-neutral-text",
715
+ "promise": {
716
+ "against": [
717
+ "--ui-surface",
718
+ "--ui-surface-elevated",
719
+ "--ui-surface-filled",
720
+ "--ui-surface-tonal"
721
+ ],
722
+ "ratio": 4.5
723
+ },
724
+ "tier": "role"
725
+ }
726
+ },
727
+ "$type": "color",
728
+ "$value": "light-dark( oklch(from var(--ui-neutral) min(l, var(--ui-text-max-lightness)) c h), oklch( from var(--ui-neutral) max(l, var(--ui-text-min-lightness)) min(c, var(--ui-text-max-chroma)) h ) )"
729
+ },
730
+ "ui-success": {
731
+ "$description": "Severity color for success messages.",
732
+ "$extensions": {
733
+ "opui": {
734
+ "css": "var(--ui-green)",
735
+ "cssVar": "--ui-success",
736
+ "tier": "role"
737
+ }
738
+ },
739
+ "$type": "color",
740
+ "$value": "{named-colors-no-severity-meaning.ui-green}"
741
+ },
742
+ "ui-success-text": {
743
+ "$description": "Success as a text color, for success text outside an `.ui-success` scope, and `ins` and `.ui-ins` text. `--ui-success` with its lightness kept within `--ui-text-max-lightness` and `--ui-text-min-lightness`.",
744
+ "$extensions": {
745
+ "opui": {
746
+ "cssVar": "--ui-success-text",
747
+ "promise": {
748
+ "against": [
749
+ "--ui-surface",
750
+ "--ui-surface-elevated",
751
+ "--ui-surface-filled",
752
+ "--ui-surface-tonal"
753
+ ],
754
+ "ratio": 4.5
755
+ },
756
+ "tier": "role"
757
+ }
758
+ },
759
+ "$type": "color",
760
+ "$value": "light-dark( oklch(from var(--ui-success) min(l, var(--ui-text-max-lightness)) c h), oklch( from var(--ui-success) max(l, var(--ui-text-min-lightness)) min(c, var(--ui-text-max-chroma)) h ) )"
761
+ },
762
+ "ui-warning": {
763
+ "$description": "Severity color for warnings. Unlike the other severities it keeps its lightness with more contrast: the fill is light and takes dark `--ui-on-warning` text, and `--ui-warning-text` gets the stricter lightness limits instead.",
764
+ "$extensions": {
765
+ "opui": {
766
+ "css": "var(--ui-orange)",
767
+ "cssVar": "--ui-warning",
768
+ "tier": "role"
769
+ }
770
+ },
771
+ "$type": "color",
772
+ "$value": "{named-colors-no-severity-meaning.ui-orange}"
773
+ },
774
+ "ui-on-warning": {
775
+ "$description": "Text color on a `--ui-warning` fill: the warning `Badge`. White on a warning below 0.182 relative luminance and near-black above it, like `--ui-on-primary`.",
776
+ "$extensions": {
777
+ "opui": {
778
+ "cssVar": "--ui-on-warning",
779
+ "promise": {
780
+ "against": [
781
+ "--ui-warning"
782
+ ],
783
+ "ratio": 4.5
784
+ },
785
+ "tier": "role"
786
+ }
787
+ },
788
+ "$type": "color",
789
+ "$value": "color( from var(--ui-warning) xyz-d65 calc(0.9505 * (0.0012 + 0.9988 * clamp(0, (0.182 - y) * 1000, 1))) calc(0.0012 + 0.9988 * clamp(0, (0.182 - y) * 1000, 1)) calc(1.089 * (0.0012 + 0.9988 * clamp(0, (0.182 - y) * 1000, 1))) )"
790
+ },
791
+ "ui-warning-text": {
792
+ "$description": "Warning as a text color, for warning text outside a `.ui-warning` scope. `--ui-warning` with its lightness kept within `--ui-text-max-lightness` and `--ui-text-min-lightness`.",
793
+ "$extensions": {
794
+ "opui": {
795
+ "cssVar": "--ui-warning-text",
796
+ "promise": {
797
+ "against": [
798
+ "--ui-surface",
799
+ "--ui-surface-elevated",
800
+ "--ui-surface-filled",
801
+ "--ui-surface-tonal"
802
+ ],
803
+ "ratio": 4.5
804
+ },
805
+ "tier": "role"
806
+ }
807
+ },
808
+ "$type": "color",
809
+ "$value": "light-dark( oklch(from var(--ui-warning) min(l, var(--ui-text-max-lightness)) c h), oklch( from var(--ui-warning) max(l, var(--ui-text-min-lightness)) min(c, var(--ui-text-max-chroma)) h ) )"
810
+ }
811
+ },
812
+ "primary": {
813
+ "ui-primary-source": {
814
+ "$description": "The brand color `--ui-primary` is derived from, within `--ui-primary-max-lightness` and `--ui-primary-min-lightness`. Set it to a theme's brand color so more contrast can darken or lighten it while keeping its hue. Setting `--ui-primary` directly pins the color in every contrast mode.",
815
+ "$extensions": {
816
+ "opui": {
817
+ "cssVar": "--ui-primary-source",
818
+ "tier": "knob"
819
+ }
820
+ },
821
+ "$type": "color",
822
+ "$value": "light-dark(var(--ui-color-9), var(--ui-color-6))"
823
+ },
824
+ "ui-primary": {
825
+ "$description": "Brand color for primary actions and accents. Derived from `--ui-primary-source` within `--ui-primary-max-lightness` and `--ui-primary-min-lightness`. Set `--ui-primary-source` to keep more contrast working, or this token to pin the color.",
826
+ "$extensions": {
827
+ "opui": {
828
+ "cssVar": "--ui-primary",
829
+ "tier": "role"
830
+ }
831
+ },
832
+ "$type": "color",
833
+ "$value": "light-dark( oklch( from var(--ui-primary-source) min(l, var(--ui-primary-max-lightness)) c h ), oklch( from var(--ui-primary-source) max(l, var(--ui-primary-min-lightness)) min(c, var(--ui-accent-max-chroma)) h ) )"
834
+ },
835
+ "ui-on-primary": {
836
+ "$description": "Text color on `--ui-primary`. Derived with relative color from the primary's relative luminance (the `y` of `xyz-d65`): white on a primary below 0.182, near-black above it, so either side keeps 4.5:1 and a custom `--ui-primary` gets readable text.",
837
+ "$extensions": {
838
+ "opui": {
839
+ "cssVar": "--ui-on-primary",
840
+ "promise": {
841
+ "against": [
842
+ "--ui-primary"
843
+ ],
844
+ "ratio": 4.5
845
+ },
846
+ "tier": "role"
847
+ }
848
+ },
849
+ "$type": "color",
850
+ "$value": "color( from var(--ui-primary) xyz-d65 calc(0.9505 * (0.0012 + 0.9988 * clamp(0, (0.182 - y) * 1000, 1))) calc(0.0012 + 0.9988 * clamp(0, (0.182 - y) * 1000, 1)) calc(1.089 * (0.0012 + 0.9988 * clamp(0, (0.182 - y) * 1000, 1))) )"
851
+ },
852
+ "ui-primary-text": {
853
+ "$description": "Primary as a text color: links, rich text links, `Callout` link hover, `Button` and `ButtonGroup` with `.ui-primary` and no variant or `.ui-outlined`, and a selected `Select` option. Defaults to `--ui-primary` with its lightness kept within `--ui-text-max-lightness` and `--ui-text-min-lightness`, and is derived again from the more-contrast primary. Set it when the primary needs another shade for text.",
854
+ "$extensions": {
855
+ "opui": {
856
+ "cssVar": "--ui-primary-text",
857
+ "promise": {
858
+ "against": [
859
+ "--ui-surface",
860
+ "--ui-surface-elevated",
861
+ "--ui-surface-filled",
862
+ "--ui-surface-tonal"
863
+ ],
864
+ "ratio": 4.5
865
+ },
866
+ "tier": "role"
867
+ }
868
+ },
869
+ "$type": "color",
870
+ "$value": "light-dark( oklch(from var(--ui-primary) min(l, var(--ui-text-max-lightness)) c h), oklch( from var(--ui-primary) max(l, var(--ui-text-min-lightness)) min(c, var(--ui-text-max-chroma)) h ) )"
871
+ },
872
+ "ui-primary-tonal": {
873
+ "$description": "Background of `Button` and `ButtonGroup` with `.ui-primary` and `.ui-tonal`, and of a checked `Checkbox`, `Radio` or `Switch` card. When unset, buttons use `--ui-palette-tint` and cards `--ui-primary` at `--ui-state-active-alpha-accent`. Material's `primary-container` and shadcn's `secondary` go here.",
874
+ "$extensions": {
875
+ "opui": {
876
+ "cssVar": "--ui-primary-tonal",
877
+ "example": "light-dark(var(--ui-color-6), var(--ui-color-11))",
878
+ "optional": true,
879
+ "tier": "hook"
880
+ }
881
+ },
882
+ "$type": "color"
883
+ },
884
+ "ui-on-primary-tonal": {
885
+ "$description": "Text color on `--ui-primary-tonal`. Set it with `--ui-primary-tonal`.",
886
+ "$extensions": {
887
+ "opui": {
888
+ "cssVar": "--ui-on-primary-tonal",
889
+ "example": "light-dark(var(--ui-gray-15), var(--ui-gray-1))",
890
+ "optional": true,
891
+ "tier": "role"
892
+ }
893
+ },
894
+ "$type": "color"
895
+ },
896
+ "ui-selected-strong": {
897
+ "$description": "Mark of a selected item that has to stand out from the page on its own: the current `Carousel` marker, the bar on the start edge of a selected `List` row and the selected tab of filled `Tabs`. Defaults to `--ui-primary`. `--ui-selected` is the fill behind a selected item and may be faint.",
898
+ "$extensions": {
899
+ "opui": {
900
+ "css": "var(--ui-primary)",
901
+ "cssVar": "--ui-selected-strong",
902
+ "promise": {
903
+ "against": [
904
+ "--ui-surface"
905
+ ],
906
+ "ratio": 3
907
+ },
908
+ "tier": "role"
909
+ }
910
+ },
911
+ "$type": "color",
912
+ "$value": "{primary.ui-primary}"
913
+ },
914
+ "ui-on-selected-strong": {
915
+ "$description": "Text color on `--ui-selected-strong`: the selected tab of filled `Tabs`. Defaults to `--ui-on-primary`.",
916
+ "$extensions": {
917
+ "opui": {
918
+ "css": "var(--ui-on-primary)",
919
+ "cssVar": "--ui-on-selected-strong",
920
+ "promise": {
921
+ "against": [
922
+ "--ui-selected-strong"
923
+ ],
924
+ "ratio": 4.5
925
+ },
926
+ "tier": "role"
927
+ }
928
+ },
929
+ "$type": "color",
930
+ "$value": "{primary.ui-on-primary}"
931
+ }
932
+ },
933
+ "text": {
934
+ "ui-text-strong": {
935
+ "$description": "Strongest text color, for headings, labels and values. Body text is `--ui-text`.",
936
+ "$extensions": {
937
+ "opui": {
938
+ "cssVar": "--ui-text-strong",
939
+ "promise": {
940
+ "against": [
941
+ "--ui-surface"
942
+ ],
943
+ "ratio": 4.5
944
+ },
945
+ "tier": "role"
946
+ }
947
+ },
948
+ "$type": "color",
949
+ "$value": "light-dark(var(--ui-gray-15), var(--ui-gray-1))"
950
+ },
951
+ "ui-text": {
952
+ "$description": "Body text color. `--ui-text-strong` mixed into `--ui-surface` at `--ui-text-strength-light` or `--ui-text-strength-dark`.",
953
+ "$extensions": {
954
+ "opui": {
955
+ "cssVar": "--ui-text",
956
+ "promise": {
957
+ "against": [
958
+ "--ui-surface"
959
+ ],
960
+ "ratio": 4.5
961
+ },
962
+ "tier": "role"
963
+ }
964
+ },
965
+ "$type": "color",
966
+ "$value": "light-dark( color-mix( in oklch, var(--ui-text-strong) var(--ui-text-strength-light), var(--ui-surface) ), color-mix( in oklch, var(--ui-text-strong) var(--ui-text-strength-dark), var(--ui-surface) ) )"
967
+ },
968
+ "ui-text-subtle": {
969
+ "$description": "Secondary text: placeholders, field helper text, overlines, descriptions in `List` and `Menu` items, unselected `Tabs` labels and `Table` captions. When unset, `--ui-text`.",
970
+ "$extensions": {
971
+ "opui": {
972
+ "css": "var(--ui-text)",
973
+ "cssVar": "--ui-text-subtle",
974
+ "promise": {
975
+ "against": [
976
+ "--ui-surface"
977
+ ],
978
+ "ratio": 4.5
979
+ },
980
+ "tier": "role"
981
+ }
982
+ },
983
+ "$type": "color",
984
+ "$value": "{text.ui-text}"
985
+ },
986
+ "ui-text-disabled": {
987
+ "$description": "Text color of disabled buttons and chips. `--ui-text` mixed into `--ui-surface` at `--ui-text-disabled-strength`. Also the label and border of an unchecked disabled `ToggleButton`.",
988
+ "$extensions": {
989
+ "opui": {
990
+ "cssVar": "--ui-text-disabled",
991
+ "tier": "role"
992
+ }
993
+ },
994
+ "$type": "color",
995
+ "$value": "color-mix( in oklch, var(--ui-text) var(--ui-text-disabled-strength), var(--ui-surface) )"
996
+ },
997
+ "ui-on-inverse": {
998
+ "$description": "Text color on `--ui-surface-inverse`.",
999
+ "$extensions": {
1000
+ "opui": {
1001
+ "cssVar": "--ui-on-inverse",
1002
+ "promise": {
1003
+ "against": [
1004
+ "--ui-surface-inverse"
1005
+ ],
1006
+ "ratio": 4.5
1007
+ },
1008
+ "tier": "role"
1009
+ }
1010
+ },
1011
+ "$type": "color",
1012
+ "$value": "light-dark(var(--ui-gray-1), var(--ui-gray-15))"
1013
+ },
1014
+ "ui-on-fill": {
1015
+ "$description": "Text on an intent fill: an intent color with its lightness capped so light text reads on it, within `--ui-accent-fill-max-lightness` for critical `Button`s and the critical, info, neutral and success `Badge`, and within `--ui-choice-fill-max-lightness` for the invalid choice mark and the checked one in dark mode. Near-white in both modes. The fill has no token of its own, since each intent is one. Not `--ui-palette-on-strong`, which turns dark in dark mode for the light `--ui-palette-strong`.",
1016
+ "$extensions": {
1017
+ "opui": {
1018
+ "css": "var(--ui-gray-1)",
1019
+ "cssVar": "--ui-on-fill",
1020
+ "promise": {
1021
+ "against": [
1022
+ "oklch(from var(--ui-critical) min(l, var(--ui-accent-fill-max-lightness)) c h)",
1023
+ "oklch(from var(--ui-info) min(l, var(--ui-accent-fill-max-lightness)) c h)",
1024
+ "oklch(from var(--ui-neutral) min(l, var(--ui-accent-fill-max-lightness)) c h)",
1025
+ "oklch(from var(--ui-success) min(l, var(--ui-accent-fill-max-lightness)) c h)"
1026
+ ],
1027
+ "ratio": 4.5
1028
+ },
1029
+ "tier": "role"
1030
+ }
1031
+ },
1032
+ "$type": "color",
1033
+ "$value": "{palette-steps.ui-gray-1}"
1034
+ }
1035
+ },
1036
+ "surfaces": {
1037
+ "ui-surface": {
1038
+ "$description": "Page and card background.",
1039
+ "$extensions": {
1040
+ "opui": {
1041
+ "cssVar": "--ui-surface",
1042
+ "tier": "role"
1043
+ }
1044
+ },
1045
+ "$type": "color",
1046
+ "$value": "light-dark(var(--ui-gray-1), var(--ui-gray-13))"
1047
+ },
1048
+ "ui-surface-elevated": {
1049
+ "$description": "Background of elevated cards and accordions, dialogs, drawers, menus and native `Select` options.",
1050
+ "$extensions": {
1051
+ "opui": {
1052
+ "cssVar": "--ui-surface-elevated",
1053
+ "tier": "role"
1054
+ }
1055
+ },
1056
+ "$type": "color",
1057
+ "$value": "light-dark(var(--ui-gray-1), var(--ui-gray-12))"
1058
+ },
1059
+ "ui-surface-filled": {
1060
+ "$description": "Background of filled areas such as progress tracks and table stripes.",
1061
+ "$extensions": {
1062
+ "opui": {
1063
+ "cssVar": "--ui-surface-filled",
1064
+ "tier": "role"
1065
+ }
1066
+ },
1067
+ "$type": "color",
1068
+ "$value": "light-dark(var(--ui-gray-4), var(--ui-gray-15))"
1069
+ },
1070
+ "ui-surface-inverse": {
1071
+ "$description": "Background of `Tooltip`, the `Carousel` buttons and `kbd`, `var`, `.ui-kbd` and `.ui-var`, inverted against the page.",
1072
+ "$extensions": {
1073
+ "opui": {
1074
+ "cssVar": "--ui-surface-inverse",
1075
+ "tier": "role"
1076
+ }
1077
+ },
1078
+ "$type": "color",
1079
+ "$value": "light-dark(var(--ui-gray-15), var(--ui-gray-2))"
1080
+ },
1081
+ "ui-surface-tonal": {
1082
+ "$description": "Background of tonal variants.",
1083
+ "$extensions": {
1084
+ "opui": {
1085
+ "cssVar": "--ui-surface-tonal",
1086
+ "tier": "role"
1087
+ }
1088
+ },
1089
+ "$type": "color",
1090
+ "$value": "light-dark(var(--ui-gray-3), var(--ui-gray-12))"
1091
+ },
1092
+ "ui-surface-tonal-hover": {
1093
+ "$description": "Hover fill of a `--ui-surface-tonal` surface: clickable `Chip`s and filled `TextField`, `Select` and `Textarea` fields. Derived from `--ui-surface-tonal`, darker in light mode and lighter in dark mode.",
1094
+ "$extensions": {
1095
+ "opui": {
1096
+ "cssVar": "--ui-surface-tonal-hover",
1097
+ "tier": "role"
1098
+ }
1099
+ },
1100
+ "$type": "color",
1101
+ "$value": "light-dark( oklch(from var(--ui-surface-tonal) calc(l * 0.93) c h), oklch(from var(--ui-surface-tonal) calc(l * 1.1) c h) )"
1102
+ }
1103
+ },
1104
+ "borders": {
1105
+ "ui-radius": {
1106
+ "$description": "Corner radius for every component: cards, callouts, menus, buttons and fields follow it, and small parts like `kbd`, tooltips and checkboxes never get rounder than it. Set it to `0` for square corners. Takes a single length.",
1107
+ "$extensions": {
1108
+ "opui": {
1109
+ "css": "0.5rem",
1110
+ "cssVar": "--ui-radius",
1111
+ "tier": "role"
1112
+ }
1113
+ },
1114
+ "$type": "dimension",
1115
+ "$value": {
1116
+ "unit": "rem",
1117
+ "value": 0.5
1118
+ }
1119
+ },
1120
+ "ui-border-width": {
1121
+ "$description": "Default border width for components that draw a border.",
1122
+ "$extensions": {
1123
+ "opui": {
1124
+ "css": "1px",
1125
+ "cssVar": "--ui-border-width",
1126
+ "tier": "role"
1127
+ }
1128
+ },
1129
+ "$type": "dimension",
1130
+ "$value": {
1131
+ "unit": "px",
1132
+ "value": 1
1133
+ }
1134
+ },
1135
+ "ui-border-width-thick": {
1136
+ "$description": "Width of emphasized rules: the head and foot rules of rich text tables, the `AvatarGroup` ring, the `Badge` border, the neutral `Chip` dot, the dotted `DescriptionList` rule, the `Tabs` indicator, the bar on a selected `List` row, the `Spinner` ring, and at one and a half times, the blockquote bar.",
1137
+ "$extensions": {
1138
+ "opui": {
1139
+ "css": "2px",
1140
+ "cssVar": "--ui-border-width-thick",
1141
+ "tier": "role"
1142
+ }
1143
+ },
1144
+ "$type": "dimension",
1145
+ "$value": {
1146
+ "unit": "px",
1147
+ "value": 2
1148
+ }
1149
+ },
1150
+ "ui-radius-round": {
1151
+ "$description": "The pill radius for round buttons, avatars, badges, chips, radios, switches, the range track and the carousel buttons and markers.",
1152
+ "$extensions": {
1153
+ "opui": {
1154
+ "cssVar": "--ui-radius-round",
1155
+ "tier": "role"
1156
+ }
1157
+ },
1158
+ "$type": "dimension",
1159
+ "$value": "1e5px"
1160
+ },
1161
+ "ui-chip-radius": {
1162
+ "$description": "Corner radius for `Chip`. When unset, chips follow `--ui-radius`.",
1163
+ "$extensions": {
1164
+ "opui": {
1165
+ "cssVar": "--ui-chip-radius",
1166
+ "example": "var(--ui-radius)",
1167
+ "optional": true,
1168
+ "tier": "component"
1169
+ }
1170
+ },
1171
+ "$type": "dimension"
1172
+ },
1173
+ "ui-dialog-radius": {
1174
+ "$description": "Corner radius for `Dialog`. When unset, dialogs follow `--ui-radius`.",
1175
+ "$extensions": {
1176
+ "opui": {
1177
+ "cssVar": "--ui-dialog-radius",
1178
+ "example": "var(--ui-radius)",
1179
+ "optional": true,
1180
+ "tier": "component"
1181
+ }
1182
+ },
1183
+ "$type": "dimension"
1184
+ },
1185
+ "ui-menu-radius": {
1186
+ "$description": "Corner radius for `Menu`. When unset, menus follow `--ui-radius`.",
1187
+ "$extensions": {
1188
+ "opui": {
1189
+ "cssVar": "--ui-menu-radius",
1190
+ "example": "var(--ui-radius)",
1191
+ "optional": true,
1192
+ "tier": "component"
1193
+ }
1194
+ },
1195
+ "$type": "dimension"
1196
+ },
1197
+ "ui-radius-large": {
1198
+ "$description": "Corner radius for large surfaces, such as cards and dialogs that want more rounding than controls. `--ui-radius` times 1.5, so `0` still squares it. Not read by a component yet.",
1199
+ "$extensions": {
1200
+ "opui": {
1201
+ "cssVar": "--ui-radius-large",
1202
+ "tier": "role"
1203
+ }
1204
+ },
1205
+ "$type": "dimension",
1206
+ "$value": "calc(var(--ui-radius) * 1.5)"
1207
+ },
1208
+ "ui-radius-small": {
1209
+ "$description": "Corner radius of small parts: `kbd`, inline `code`, `mark`, `var`, `Tooltip`, the file input and a square `Avatar` image. `--ui-radius`, capped at 5px.",
1210
+ "$extensions": {
1211
+ "opui": {
1212
+ "cssVar": "--ui-radius-small",
1213
+ "tier": "role"
1214
+ }
1215
+ },
1216
+ "$type": "dimension",
1217
+ "$value": "min(5px, var(--ui-radius))"
1218
+ },
1219
+ "ui-radius-x-small": {
1220
+ "$description": "Corner radius of the `Checkbox` box. `--ui-radius`, capped at 2px.",
1221
+ "$extensions": {
1222
+ "opui": {
1223
+ "cssVar": "--ui-radius-x-small",
1224
+ "tier": "role"
1225
+ }
1226
+ },
1227
+ "$type": "dimension",
1228
+ "$value": "min(2px, var(--ui-radius))"
1229
+ },
1230
+ "ui-border-color": {
1231
+ "$description": "Default border color for cards, lists, tables and dividers. `--ui-text-strong` mixed into `--ui-surface` at `--ui-border-strength-light` or `--ui-border-strength-dark`.",
1232
+ "$extensions": {
1233
+ "opui": {
1234
+ "cssVar": "--ui-border-color",
1235
+ "tier": "role"
1236
+ }
1237
+ },
1238
+ "$type": "color",
1239
+ "$value": "light-dark( color-mix( in oklch, var(--ui-text-strong) var(--ui-border-strength-light), var(--ui-surface) ), color-mix( in oklch, var(--ui-text-strong) var(--ui-border-strength-dark), var(--ui-surface) ) )"
1240
+ },
1241
+ "ui-border-color-on-filled": {
1242
+ "$description": "Border color inside filled surfaces: lists without a variant and table headers. `List` and `Table` set `--ui-border-color` to it on those parts.",
1243
+ "$extensions": {
1244
+ "opui": {
1245
+ "cssVar": "--ui-border-color-on-filled",
1246
+ "tier": "role"
1247
+ }
1248
+ },
1249
+ "$type": "color",
1250
+ "$value": "light-dark( var(--ui-gray-6), var(--ui-gray-12) )"
1251
+ },
1252
+ "ui-border-color-on-raised": {
1253
+ "$description": "Borders drawn inside a raised surface (tonal and elevated `Card` and `Accordion`, `Dialog`, `Drawer`, `Menu`, the `Select` picker and `Callout` without a severity): dividers, separators, outlined controls. The same mix as `--ui-border-color` by default. Each raised component sets `--ui-border-color` to it on its root, so a theme that wants another border inside raised surfaces sets this one. The edge of the surface itself is `--ui-border-color-raised`.",
1254
+ "$extensions": {
1255
+ "opui": {
1256
+ "cssVar": "--ui-border-color-on-raised",
1257
+ "tier": "role"
1258
+ }
1259
+ },
1260
+ "$type": "color",
1261
+ "$value": "light-dark( color-mix( in oklch, var(--ui-text-strong) var(--ui-border-strength-light), var(--ui-surface) ), color-mix( in oklch, var(--ui-text-strong) var(--ui-border-strength-dark), var(--ui-surface) ) )"
1262
+ },
1263
+ "ui-border-color-raised": {
1264
+ "$description": "The edge of every raised surface: tonal and elevated `Card`, `Accordion` and `Dialog`, `Callout` without a severity, `Drawer`, `Menu` and the `Select` picker. Set it to outline them all at once, or to `transparent` to drop their edges. When unset, each keeps its own edge: cards, accordions and dialogs the page background, so they stay visible on tonal surfaces, callouts their tonal background, and drawers, menus and the picker `--ui-border-color-on-raised`. The borders inside a raised surface are `--ui-border-color-on-raised`.",
1265
+ "$extensions": {
1266
+ "opui": {
1267
+ "cssVar": "--ui-border-color-raised",
1268
+ "example": "var(--ui-border-color)",
1269
+ "optional": true,
1270
+ "tier": "hook"
1271
+ }
1272
+ },
1273
+ "$type": "color"
1274
+ }
1275
+ },
1276
+ "field-input": {
1277
+ "ui-field-radius": {
1278
+ "$description": "Corner radius for fields. When unset, they follow `--ui-radius`, also where it's set on a part of the page.",
1279
+ "$extensions": {
1280
+ "opui": {
1281
+ "cssVar": "--ui-field-radius",
1282
+ "example": "var(--ui-radius)",
1283
+ "optional": true,
1284
+ "tier": "role"
1285
+ }
1286
+ },
1287
+ "$type": "dimension"
1288
+ },
1289
+ "ui-field-bg-color": {
1290
+ "$description": "Background of `TextField`, `Textarea` and `Select` fields. When unset, `--ui-surface`, the page color.",
1291
+ "$extensions": {
1292
+ "opui": {
1293
+ "cssVar": "--ui-field-bg-color",
1294
+ "example": "var(--ui-surface)",
1295
+ "optional": true,
1296
+ "tier": "role"
1297
+ }
1298
+ },
1299
+ "$type": "color"
1300
+ },
1301
+ "ui-field-padding-inline": {
1302
+ "$description": "Horizontal padding inside `TextField`, `Textarea` and `Select` fields. When unset, `--ui-space-2`.",
1303
+ "$extensions": {
1304
+ "opui": {
1305
+ "cssVar": "--ui-field-padding-inline",
1306
+ "example": "var(--ui-space-2)",
1307
+ "optional": true,
1308
+ "tier": "role"
1309
+ }
1310
+ },
1311
+ "$type": "dimension"
1312
+ },
1313
+ "ui-field-placeholder-text-color": {
1314
+ "$description": "Color of placeholder text in fields. When unset, `--ui-text-subtle`.",
1315
+ "$extensions": {
1316
+ "opui": {
1317
+ "cssVar": "--ui-field-placeholder-text-color",
1318
+ "example": "var(--ui-text-subtle)",
1319
+ "optional": true,
1320
+ "tier": "role"
1321
+ }
1322
+ },
1323
+ "$type": "color"
1324
+ },
1325
+ "ui-field-border-width": {
1326
+ "$description": "Border width for fields, `Checkbox`, `Radio` and `Switch`.",
1327
+ "$extensions": {
1328
+ "opui": {
1329
+ "css": "1px",
1330
+ "cssVar": "--ui-field-border-width",
1331
+ "tier": "role"
1332
+ }
1333
+ },
1334
+ "$type": "dimension",
1335
+ "$value": {
1336
+ "unit": "px",
1337
+ "value": 1
1338
+ }
1339
+ },
1340
+ "ui-field-helper-text-color": {
1341
+ "$description": "Text color for helper and end text under a field.",
1342
+ "$extensions": {
1343
+ "opui": {
1344
+ "css": "var(--ui-text-subtle)",
1345
+ "cssVar": "--ui-field-helper-text-color",
1346
+ "promise": {
1347
+ "against": [
1348
+ "--ui-surface",
1349
+ "--ui-surface-elevated",
1350
+ "--ui-surface-filled",
1351
+ "--ui-surface-tonal"
1352
+ ],
1353
+ "ratio": 4.5
1354
+ },
1355
+ "tier": "role"
1356
+ }
1357
+ },
1358
+ "$type": "color",
1359
+ "$value": "{text.ui-text-subtle}"
1360
+ },
1361
+ "ui-field-helper-font-size": {
1362
+ "$description": "Font size for helper and end text under a field.",
1363
+ "$extensions": {
1364
+ "opui": {
1365
+ "css": "var(--ui-font-size-caption)",
1366
+ "cssVar": "--ui-field-helper-font-size",
1367
+ "tier": "role"
1368
+ }
1369
+ },
1370
+ "$type": "dimension",
1371
+ "$value": "{typography.ui-font-size-caption}"
1372
+ },
1373
+ "ui-field-helper-line-height": {
1374
+ "$description": "Line height for helper and end text under a field.",
1375
+ "$extensions": {
1376
+ "opui": {
1377
+ "css": "var(--ui-line-height-control)",
1378
+ "cssVar": "--ui-field-helper-line-height",
1379
+ "tier": "role"
1380
+ }
1381
+ },
1382
+ "$type": "number",
1383
+ "$value": "{typography.ui-line-height-control}"
1384
+ },
1385
+ "ui-field-label-text-color": {
1386
+ "$description": "Text color for field labels.",
1387
+ "$extensions": {
1388
+ "opui": {
1389
+ "css": "var(--ui-text-strong)",
1390
+ "cssVar": "--ui-field-label-text-color",
1391
+ "promise": {
1392
+ "against": [
1393
+ "--ui-surface",
1394
+ "--ui-surface-elevated",
1395
+ "--ui-surface-filled",
1396
+ "--ui-surface-tonal"
1397
+ ],
1398
+ "ratio": 4.5
1399
+ },
1400
+ "tier": "role"
1401
+ }
1402
+ },
1403
+ "$type": "color",
1404
+ "$value": "{text.ui-text-strong}"
1405
+ },
1406
+ "ui-field-label-font-size": {
1407
+ "$description": "Font size for field labels.",
1408
+ "$extensions": {
1409
+ "opui": {
1410
+ "css": "var(--ui-font-size-small)",
1411
+ "cssVar": "--ui-field-label-font-size",
1412
+ "tier": "role"
1413
+ }
1414
+ },
1415
+ "$type": "dimension",
1416
+ "$value": "{typography.ui-font-size-small}"
1417
+ },
1418
+ "ui-field-label-font-weight": {
1419
+ "$description": "Font weight for emphasized field labels and legends.",
1420
+ "$extensions": {
1421
+ "opui": {
1422
+ "css": "var(--ui-font-weight-semibold)",
1423
+ "cssVar": "--ui-field-label-font-weight",
1424
+ "tier": "role"
1425
+ }
1426
+ },
1427
+ "$type": "fontWeight",
1428
+ "$value": "{typography.ui-font-weight-semibold}"
1429
+ },
1430
+ "ui-field-required-text-color": {
1431
+ "$description": "Color of the required asterisk.",
1432
+ "$extensions": {
1433
+ "opui": {
1434
+ "css": "var(--ui-invalid-text)",
1435
+ "cssVar": "--ui-field-required-text-color",
1436
+ "promise": {
1437
+ "against": [
1438
+ "--ui-surface",
1439
+ "--ui-surface-elevated",
1440
+ "--ui-surface-filled",
1441
+ "--ui-surface-tonal"
1442
+ ],
1443
+ "ratio": 4.5
1444
+ },
1445
+ "tier": "role"
1446
+ }
1447
+ },
1448
+ "$type": "color",
1449
+ "$value": "{intent-tokens.ui-invalid-text}"
1450
+ },
1451
+ "ui-field-border-color": {
1452
+ "$description": "Border color of every empty control: `TextField`, `Select`, `Textarea`, the unchecked `Checkbox`, `Radio` and `Switch` unless `--ui-choice-border-color` is set, the `Range` track and the `Progress` outline. `--ui-text-strong` mixed into `--ui-surface` at `--ui-field-border-strength`, so it reaches 3:1. Lighter than `--ui-border-color`, which is decorative, is a choice a theme can make.",
1453
+ "$extensions": {
1454
+ "opui": {
1455
+ "cssVar": "--ui-field-border-color",
1456
+ "promise": {
1457
+ "against": [
1458
+ "--ui-surface"
1459
+ ],
1460
+ "ratio": 3
1461
+ },
1462
+ "tier": "role"
1463
+ }
1464
+ },
1465
+ "$type": "color",
1466
+ "$value": "color-mix( in oklch, var(--ui-text-strong) var(--ui-field-border-strength), var(--ui-surface) )"
1467
+ },
1468
+ "ui-field-border-color-on-filled": {
1469
+ "$description": "Field border color inside filled surfaces: lists without a variant and table headers. `--ui-text-strong` mixed into `--ui-surface-filled` at `--ui-field-border-strength`.",
1470
+ "$extensions": {
1471
+ "opui": {
1472
+ "cssVar": "--ui-field-border-color-on-filled",
1473
+ "tier": "role"
1474
+ }
1475
+ },
1476
+ "$type": "color",
1477
+ "$value": "color-mix( in oklch, var(--ui-text-strong) var(--ui-field-border-strength), var(--ui-surface-filled) )"
1478
+ },
1479
+ "ui-field-border-color-on-raised": {
1480
+ "$description": "Field border color inside raised surfaces. The same mix as `--ui-field-border-color` by default. Each raised component sets `--ui-field-border-color` to it on its root.",
1481
+ "$extensions": {
1482
+ "opui": {
1483
+ "cssVar": "--ui-field-border-color-on-raised",
1484
+ "tier": "role"
1485
+ }
1486
+ },
1487
+ "$type": "color",
1488
+ "$value": "color-mix( in oklch, var(--ui-text-strong) var(--ui-field-border-strength), var(--ui-surface) )"
1489
+ }
1490
+ },
1491
+ "focus-ring": {
1492
+ "ui-focus-ring-offset": {
1493
+ "$description": "Distance between a control and its focus ring.",
1494
+ "$extensions": {
1495
+ "opui": {
1496
+ "css": "2px",
1497
+ "cssVar": "--ui-focus-ring-offset",
1498
+ "tier": "role"
1499
+ }
1500
+ },
1501
+ "$type": "dimension",
1502
+ "$value": {
1503
+ "unit": "px",
1504
+ "value": 2
1505
+ }
1506
+ },
1507
+ "ui-focus-ring-style": {
1508
+ "$description": "Outline style of the focus ring.",
1509
+ "$extensions": {
1510
+ "opui": {
1511
+ "cssVar": "--ui-focus-ring-style",
1512
+ "tier": "role"
1513
+ }
1514
+ },
1515
+ "$type": "strokeStyle",
1516
+ "$value": "solid"
1517
+ },
1518
+ "ui-focus-ring-width": {
1519
+ "$description": "Width of the focus ring.",
1520
+ "$extensions": {
1521
+ "opui": {
1522
+ "css": "2px",
1523
+ "cssVar": "--ui-focus-ring-width",
1524
+ "modes": {
1525
+ "more-contrast": "3px"
1526
+ },
1527
+ "tier": "role"
1528
+ }
1529
+ },
1530
+ "$type": "dimension",
1531
+ "$value": {
1532
+ "unit": "px",
1533
+ "value": 2
1534
+ }
1535
+ },
1536
+ "ui-focus-ring-color": {
1537
+ "$description": "Color of the keyboard focus ring. Black on surfaces lighter than OKLCH 0.6 and white on darker ones, so it reaches 3:1 on any `--ui-surface`.",
1538
+ "$extensions": {
1539
+ "opui": {
1540
+ "cssVar": "--ui-focus-ring-color",
1541
+ "promise": {
1542
+ "against": [
1543
+ "--ui-surface"
1544
+ ],
1545
+ "ratio": 3
1546
+ },
1547
+ "tier": "role"
1548
+ }
1549
+ },
1550
+ "$type": "color",
1551
+ "$value": "oklch( from var(--ui-surface) clamp(0, (0.6 - l) * 1000, 1) 0 0 )"
1552
+ },
1553
+ "ui-focus-ring-inset": {
1554
+ "$description": "Negative offset for focus rings drawn inside a control, such as `ButtonGroup`, `List` items and `Select` options.",
1555
+ "$extensions": {
1556
+ "opui": {
1557
+ "cssVar": "--ui-focus-ring-inset",
1558
+ "tier": "role"
1559
+ }
1560
+ },
1561
+ "$type": "dimension",
1562
+ "$value": "calc(-1 * var(--ui-focus-ring-width))"
1563
+ }
1564
+ },
1565
+ "typography": {
1566
+ "ui-font-body": {
1567
+ "$description": "Font family for body text, fields and buttons. `system-ui, sans-serif` by default.",
1568
+ "$extensions": {
1569
+ "opui": {
1570
+ "cssVar": "--ui-font-body",
1571
+ "tier": "role"
1572
+ }
1573
+ },
1574
+ "$type": "fontFamily",
1575
+ "$value": "system-ui, sans-serif"
1576
+ },
1577
+ "ui-font-code": {
1578
+ "$description": "Font family for `code`, `kbd`, `samp` and `pre` in rich text, `.ui-kbd`, `.ui-samp`, `.ui-var`, code blocks and `kbd` in buttons and lists. A monospace stack by default.",
1579
+ "$extensions": {
1580
+ "opui": {
1581
+ "cssVar": "--ui-font-code",
1582
+ "tier": "role"
1583
+ }
1584
+ },
1585
+ "$type": "fontFamily",
1586
+ "$value": "Dank Mono, Operator Mono, Inconsolata, Fira Mono, ui-monospace, SF Mono, Monaco, Droid Sans Mono, Source Code Pro, Cascadia Code, Menlo, Consolas, DejaVu Sans Mono, monospace"
1587
+ },
1588
+ "ui-font-heading": {
1589
+ "$description": "Font family for `h1`–`h6` and the `.ui-h1`–`.ui-h6` classes. When unset, headings follow `--ui-font-body`.",
1590
+ "$extensions": {
1591
+ "opui": {
1592
+ "cssVar": "--ui-font-heading",
1593
+ "example": "var(--ui-font-body)",
1594
+ "optional": true,
1595
+ "tier": "role"
1596
+ }
1597
+ },
1598
+ "$type": "fontFamily"
1599
+ },
1600
+ "ui-font-size-100": {
1601
+ "$description": "The smallest step of the type scale, 12px. `--ui-font-size-caption` reads it. Set the steps to reshape every size at once, or a role to move one.",
1602
+ "$extensions": {
1603
+ "opui": {
1604
+ "css": "0.75rem",
1605
+ "cssVar": "--ui-font-size-100",
1606
+ "tier": "primitive"
1607
+ }
1608
+ },
1609
+ "$type": "dimension",
1610
+ "$value": {
1611
+ "unit": "rem",
1612
+ "value": 0.75
1613
+ }
1614
+ },
1615
+ "ui-font-size-200": {
1616
+ "$description": "Type scale step, 14px. `--ui-font-size-small` reads it.",
1617
+ "$extensions": {
1618
+ "opui": {
1619
+ "css": "0.875rem",
1620
+ "cssVar": "--ui-font-size-200",
1621
+ "tier": "primitive"
1622
+ }
1623
+ },
1624
+ "$type": "dimension",
1625
+ "$value": {
1626
+ "unit": "rem",
1627
+ "value": 0.875
1628
+ }
1629
+ },
1630
+ "ui-font-size-300": {
1631
+ "$description": "Type scale step, 16px. `--ui-font-size-body`, `--ui-font-size-control` and `--ui-font-size-h6` read it.",
1632
+ "$extensions": {
1633
+ "opui": {
1634
+ "css": "1rem",
1635
+ "cssVar": "--ui-font-size-300",
1636
+ "tier": "primitive"
1637
+ }
1638
+ },
1639
+ "$type": "dimension",
1640
+ "$value": {
1641
+ "unit": "rem",
1642
+ "value": 1
1643
+ }
1644
+ },
1645
+ "ui-font-size-400": {
1646
+ "$description": "Type scale step, 18px. `--ui-font-size-h5` reads it, and `--ui-font-size-h4` grows from it.",
1647
+ "$extensions": {
1648
+ "opui": {
1649
+ "css": "1.125rem",
1650
+ "cssVar": "--ui-font-size-400",
1651
+ "tier": "primitive"
1652
+ }
1653
+ },
1654
+ "$type": "dimension",
1655
+ "$value": {
1656
+ "unit": "rem",
1657
+ "value": 1.125
1658
+ }
1659
+ },
1660
+ "ui-font-size-500": {
1661
+ "$description": "Type scale step, 20px. `--ui-font-size-large` reads it, `--ui-font-size-h3` grows from it and `--ui-font-size-h4` grows to it.",
1662
+ "$extensions": {
1663
+ "opui": {
1664
+ "css": "1.25rem",
1665
+ "cssVar": "--ui-font-size-500",
1666
+ "tier": "primitive"
1667
+ }
1668
+ },
1669
+ "$type": "dimension",
1670
+ "$value": {
1671
+ "unit": "rem",
1672
+ "value": 1.25
1673
+ }
1674
+ },
1675
+ "ui-font-size-600": {
1676
+ "$description": "Type scale step, 24px. `--ui-font-size-h2` grows from it and `--ui-font-size-h3` grows to it.",
1677
+ "$extensions": {
1678
+ "opui": {
1679
+ "css": "1.5rem",
1680
+ "cssVar": "--ui-font-size-600",
1681
+ "tier": "primitive"
1682
+ }
1683
+ },
1684
+ "$type": "dimension",
1685
+ "$value": {
1686
+ "unit": "rem",
1687
+ "value": 1.5
1688
+ }
1689
+ },
1690
+ "ui-font-size-700": {
1691
+ "$description": "Type scale step, 32px. `--ui-font-size-h1` grows from it.",
1692
+ "$extensions": {
1693
+ "opui": {
1694
+ "css": "2rem",
1695
+ "cssVar": "--ui-font-size-700",
1696
+ "tier": "primitive"
1697
+ }
1698
+ },
1699
+ "$type": "dimension",
1700
+ "$value": {
1701
+ "unit": "rem",
1702
+ "value": 2
1703
+ }
1704
+ },
1705
+ "ui-font-size-800": {
1706
+ "$description": "Type scale step, 40px. `--ui-font-size-h2` grows to it.",
1707
+ "$extensions": {
1708
+ "opui": {
1709
+ "css": "2.5rem",
1710
+ "cssVar": "--ui-font-size-800",
1711
+ "tier": "primitive"
1712
+ }
1713
+ },
1714
+ "$type": "dimension",
1715
+ "$value": {
1716
+ "unit": "rem",
1717
+ "value": 2.5
1718
+ }
1719
+ },
1720
+ "ui-font-size-900": {
1721
+ "$description": "The largest step of the type scale, 56px. `--ui-font-size-h1` grows to it.",
1722
+ "$extensions": {
1723
+ "opui": {
1724
+ "css": "3.5rem",
1725
+ "cssVar": "--ui-font-size-900",
1726
+ "tier": "primitive"
1727
+ }
1728
+ },
1729
+ "$type": "dimension",
1730
+ "$value": {
1731
+ "unit": "rem",
1732
+ "value": 3.5
1733
+ }
1734
+ },
1735
+ "ui-fluid-min-inline-size": {
1736
+ "$description": "Viewport inline size where `--ui-fluid-progress` starts at 0 and the fluid heading sizes at their minimum, 20rem.",
1737
+ "$extensions": {
1738
+ "opui": {
1739
+ "css": "20rem",
1740
+ "cssVar": "--ui-fluid-min-inline-size",
1741
+ "tier": "knob"
1742
+ }
1743
+ },
1744
+ "$type": "dimension",
1745
+ "$value": {
1746
+ "unit": "rem",
1747
+ "value": 20
1748
+ }
1749
+ },
1750
+ "ui-fluid-max-inline-size": {
1751
+ "$description": "Viewport inline size where `--ui-fluid-progress` reaches 1 and the fluid heading sizes their maximum, 48rem.",
1752
+ "$extensions": {
1753
+ "opui": {
1754
+ "css": "48rem",
1755
+ "cssVar": "--ui-fluid-max-inline-size",
1756
+ "tier": "knob"
1757
+ }
1758
+ },
1759
+ "$type": "dimension",
1760
+ "$value": {
1761
+ "unit": "rem",
1762
+ "value": 48
1763
+ }
1764
+ },
1765
+ "ui-font-weight-normal": {
1766
+ "$description": "Font weight for body text, `List` text and `Button` keyboard shortcuts.",
1767
+ "$extensions": {
1768
+ "opui": {
1769
+ "cssVar": "--ui-font-weight-normal",
1770
+ "tier": "role"
1771
+ }
1772
+ },
1773
+ "$type": "fontWeight",
1774
+ "$value": "400"
1775
+ },
1776
+ "ui-font-weight-medium": {
1777
+ "$description": "Font weight for badges, overlines and group labels.",
1778
+ "$extensions": {
1779
+ "opui": {
1780
+ "cssVar": "--ui-font-weight-medium",
1781
+ "tier": "role"
1782
+ }
1783
+ },
1784
+ "$type": "fontWeight",
1785
+ "$value": "500"
1786
+ },
1787
+ "ui-font-weight-semibold": {
1788
+ "$description": "Font weight for labels, table headers and titles.",
1789
+ "$extensions": {
1790
+ "opui": {
1791
+ "cssVar": "--ui-font-weight-semibold",
1792
+ "tier": "role"
1793
+ }
1794
+ },
1795
+ "$type": "fontWeight",
1796
+ "$value": "600"
1797
+ },
1798
+ "ui-font-weight-bold": {
1799
+ "$description": "Font weight for headings, buttons and terms.",
1800
+ "$extensions": {
1801
+ "opui": {
1802
+ "cssVar": "--ui-font-weight-bold",
1803
+ "tier": "role"
1804
+ }
1805
+ },
1806
+ "$type": "fontWeight",
1807
+ "$value": "700"
1808
+ },
1809
+ "ui-letter-spacing-caps": {
1810
+ "$description": "Letter spacing of uppercase text: overlines and the first paragraph of an `hgroup`.",
1811
+ "$extensions": {
1812
+ "opui": {
1813
+ "cssVar": "--ui-letter-spacing-caps",
1814
+ "tier": "role"
1815
+ }
1816
+ },
1817
+ "$type": "dimension",
1818
+ "$value": "0.06em"
1819
+ },
1820
+ "ui-letter-spacing-display": {
1821
+ "$description": "Letter spacing of `h1` and `h2`, tighter than the body.",
1822
+ "$extensions": {
1823
+ "opui": {
1824
+ "cssVar": "--ui-letter-spacing-display",
1825
+ "tier": "role"
1826
+ }
1827
+ },
1828
+ "$type": "dimension",
1829
+ "$value": "-0.02em"
1830
+ },
1831
+ "ui-letter-spacing-heading": {
1832
+ "$description": "Letter spacing of `h3` and `h4`, slightly tighter than the body.",
1833
+ "$extensions": {
1834
+ "opui": {
1835
+ "cssVar": "--ui-letter-spacing-heading",
1836
+ "tier": "role"
1837
+ }
1838
+ },
1839
+ "$type": "dimension",
1840
+ "$value": "-0.01em"
1841
+ },
1842
+ "ui-line-height-tight": {
1843
+ "$description": "Line height of single-line controls and compact text: field inputs, `Table` cells, `Tooltip`, `Card` captions and keyboard hints in buttons.",
1844
+ "$extensions": {
1845
+ "opui": {
1846
+ "css": "1.25",
1847
+ "cssVar": "--ui-line-height-tight",
1848
+ "tier": "role"
1849
+ }
1850
+ },
1851
+ "$type": "number",
1852
+ "$value": 1.25
1853
+ },
1854
+ "ui-line-height-control": {
1855
+ "$description": "Line height of interface text: labels, helpers, choice labels and field hints.",
1856
+ "$extensions": {
1857
+ "opui": {
1858
+ "css": "1.5",
1859
+ "cssVar": "--ui-line-height-control",
1860
+ "tier": "role"
1861
+ }
1862
+ },
1863
+ "$type": "number",
1864
+ "$value": 1.5
1865
+ },
1866
+ "ui-line-height": {
1867
+ "$description": "Line height of body copy: prose, captions and `List` text.",
1868
+ "$extensions": {
1869
+ "opui": {
1870
+ "css": "1.6",
1871
+ "cssVar": "--ui-line-height",
1872
+ "tier": "role"
1873
+ }
1874
+ },
1875
+ "$type": "number",
1876
+ "$value": 1.6
1877
+ },
1878
+ "ui-line-height-relaxed": {
1879
+ "$description": "Line height of the page text set on `html`, and of `Tabs` labels.",
1880
+ "$extensions": {
1881
+ "opui": {
1882
+ "css": "1.75",
1883
+ "cssVar": "--ui-line-height-relaxed",
1884
+ "tier": "role"
1885
+ }
1886
+ },
1887
+ "$type": "number",
1888
+ "$value": 1.75
1889
+ },
1890
+ "ui-rhythm-step": {
1891
+ "$description": "Vertical rhythm unit. Rich text margins and heading line heights round to it.",
1892
+ "$extensions": {
1893
+ "opui": {
1894
+ "css": "0.25rem",
1895
+ "cssVar": "--ui-rhythm-step",
1896
+ "tier": "role"
1897
+ }
1898
+ },
1899
+ "$type": "dimension",
1900
+ "$value": {
1901
+ "unit": "rem",
1902
+ "value": 0.25
1903
+ }
1904
+ },
1905
+ "ui-underline-offset": {
1906
+ "$description": "Gap between text and its underline: `Link` and rich text links, and in Firefox `abbr`, `dfn`, `ins` and `u`.",
1907
+ "$extensions": {
1908
+ "opui": {
1909
+ "css": "2px",
1910
+ "cssVar": "--ui-underline-offset",
1911
+ "tier": "role"
1912
+ }
1913
+ },
1914
+ "$type": "dimension",
1915
+ "$value": {
1916
+ "unit": "px",
1917
+ "value": 2
1918
+ }
1919
+ },
1920
+ "ui-underline-offset-small": {
1921
+ "$description": "Gap between text and the underline of `abbr`, `dfn`, `ins` and `u` and their classes. Firefox uses `--ui-underline-offset`.",
1922
+ "$extensions": {
1923
+ "opui": {
1924
+ "css": "1px",
1925
+ "cssVar": "--ui-underline-offset-small",
1926
+ "tier": "role"
1927
+ }
1928
+ },
1929
+ "$type": "dimension",
1930
+ "$value": {
1931
+ "unit": "px",
1932
+ "value": 1
1933
+ }
1934
+ },
1935
+ "ui-underline-thickness-hover": {
1936
+ "$description": "Underline thickness of `Link` and rich text links on hover and keyboard focus. At rest they keep the font's own thickness.",
1937
+ "$extensions": {
1938
+ "opui": {
1939
+ "css": "3px",
1940
+ "cssVar": "--ui-underline-thickness-hover",
1941
+ "tier": "role"
1942
+ }
1943
+ },
1944
+ "$type": "dimension",
1945
+ "$value": {
1946
+ "unit": "px",
1947
+ "value": 3
1948
+ }
1949
+ },
1950
+ "ui-font-size-caption": {
1951
+ "$description": "Font size of captions, `Badge`, `Chip`, `Divider` labels, `List` secondary text, `Menu` shortcuts, overlines, `small`, `figcaption` and x-small buttons, toggles and fields. Defaults to `--ui-font-size-100`.",
1952
+ "$extensions": {
1953
+ "opui": {
1954
+ "css": "var(--ui-font-size-100)",
1955
+ "cssVar": "--ui-font-size-caption",
1956
+ "tier": "role"
1957
+ }
1958
+ },
1959
+ "$type": "dimension",
1960
+ "$value": "{typography.ui-font-size-100}"
1961
+ },
1962
+ "ui-font-size-small": {
1963
+ "$description": "Font size of helper text, `Callout`, `Table`, `Tooltip`, code blocks, dense `List` text and small buttons, chips, toggles and fields. Defaults to `--ui-font-size-200`.",
1964
+ "$extensions": {
1965
+ "opui": {
1966
+ "css": "var(--ui-font-size-200)",
1967
+ "cssVar": "--ui-font-size-small",
1968
+ "tier": "role"
1969
+ }
1970
+ },
1971
+ "$type": "dimension",
1972
+ "$value": "{typography.ui-font-size-200}"
1973
+ },
1974
+ "ui-font-size-body": {
1975
+ "$description": "Font size of body copy, `Card` text and the `Callout` title. Defaults to `--ui-font-size-300`.",
1976
+ "$extensions": {
1977
+ "opui": {
1978
+ "css": "var(--ui-font-size-300)",
1979
+ "cssVar": "--ui-font-size-body",
1980
+ "tier": "role"
1981
+ }
1982
+ },
1983
+ "$type": "dimension",
1984
+ "$value": "{typography.ui-font-size-300}"
1985
+ },
1986
+ "ui-font-size-control": {
1987
+ "$description": "Font size of the default `Button`, `Select`, `Tabs`, `TextField`, `Textarea` and `ToggleButton`. Small and x-small sizes read `--ui-font-size-small` and `--ui-font-size-caption`. Defaults to `--ui-font-size-300`.",
1988
+ "$extensions": {
1989
+ "opui": {
1990
+ "css": "var(--ui-font-size-300)",
1991
+ "cssVar": "--ui-font-size-control",
1992
+ "tier": "role"
1993
+ }
1994
+ },
1995
+ "$type": "dimension",
1996
+ "$value": "{typography.ui-font-size-300}"
1997
+ },
1998
+ "ui-font-size-large": {
1999
+ "$description": "Font size of lead paragraphs, `.ui-p.ui-large`, the `Drawer` title and large `Avatar` initials. Defaults to `--ui-font-size-500`.",
2000
+ "$extensions": {
2001
+ "opui": {
2002
+ "css": "var(--ui-font-size-500)",
2003
+ "cssVar": "--ui-font-size-large",
2004
+ "tier": "role"
2005
+ }
2006
+ },
2007
+ "$type": "dimension",
2008
+ "$value": "{typography.ui-font-size-500}"
2009
+ },
2010
+ "ui-fluid-progress": {
2011
+ "$description": "Position of the viewport inline size in the `--ui-fluid-min-inline-size` to `--ui-fluid-max-inline-size` window, 0 to 1, from `progress()`. `--ui-font-size-h1` to `--ui-font-size-h4` grow with it, and a theme can ramp other values on the same window.",
2012
+ "$extensions": {
2013
+ "opui": {
2014
+ "cssVar": "--ui-fluid-progress",
2015
+ "tier": "primitive"
2016
+ }
2017
+ },
2018
+ "$type": "number",
2019
+ "$value": "progress( 100vi, var(--ui-fluid-min-inline-size), var(--ui-fluid-max-inline-size) )"
2020
+ },
2021
+ "ui-font-size-h1": {
2022
+ "$description": "Font size for `h1` and `.ui-h1`. Grows from `--ui-font-size-700` to `--ui-font-size-900` with `--ui-fluid-progress`.",
2023
+ "$extensions": {
2024
+ "opui": {
2025
+ "cssVar": "--ui-font-size-h1",
2026
+ "tier": "role"
2027
+ }
2028
+ },
2029
+ "$type": "dimension",
2030
+ "$value": "calc( var(--ui-font-size-700) + (var(--ui-font-size-900) - var(--ui-font-size-700)) * var(--ui-fluid-progress) )"
2031
+ },
2032
+ "ui-font-size-h2": {
2033
+ "$description": "Font size for `h2` and `.ui-h2`. Grows from `--ui-font-size-600` to `--ui-font-size-800` with `--ui-fluid-progress`.",
2034
+ "$extensions": {
2035
+ "opui": {
2036
+ "cssVar": "--ui-font-size-h2",
2037
+ "tier": "role"
2038
+ }
2039
+ },
2040
+ "$type": "dimension",
2041
+ "$value": "calc( var(--ui-font-size-600) + (var(--ui-font-size-800) - var(--ui-font-size-600)) * var(--ui-fluid-progress) )"
2042
+ },
2043
+ "ui-font-size-h3": {
2044
+ "$description": "Font size for `h3` and `.ui-h3`. Grows from `--ui-font-size-500` to `--ui-font-size-600` with `--ui-fluid-progress`.",
2045
+ "$extensions": {
2046
+ "opui": {
2047
+ "cssVar": "--ui-font-size-h3",
2048
+ "tier": "role"
2049
+ }
2050
+ },
2051
+ "$type": "dimension",
2052
+ "$value": "calc( var(--ui-font-size-500) + (var(--ui-font-size-600) - var(--ui-font-size-500)) * var(--ui-fluid-progress) )"
2053
+ },
2054
+ "ui-font-size-h4": {
2055
+ "$description": "Font size for `h4` and `.ui-h4`. Grows from `--ui-font-size-400` to `--ui-font-size-500` with `--ui-fluid-progress`.",
2056
+ "$extensions": {
2057
+ "opui": {
2058
+ "cssVar": "--ui-font-size-h4",
2059
+ "tier": "role"
2060
+ }
2061
+ },
2062
+ "$type": "dimension",
2063
+ "$value": "calc( var(--ui-font-size-400) + (var(--ui-font-size-500) - var(--ui-font-size-400)) * var(--ui-fluid-progress) )"
2064
+ },
2065
+ "ui-font-size-h5": {
2066
+ "$description": "Font size for `h5` and `.ui-h5`. Defaults to `--ui-font-size-400`.",
2067
+ "$extensions": {
2068
+ "opui": {
2069
+ "css": "var(--ui-font-size-400)",
2070
+ "cssVar": "--ui-font-size-h5",
2071
+ "tier": "role"
2072
+ }
2073
+ },
2074
+ "$type": "dimension",
2075
+ "$value": "{typography.ui-font-size-400}"
2076
+ },
2077
+ "ui-font-size-h6": {
2078
+ "$description": "Font size for `h6` and `.ui-h6`. Defaults to `--ui-font-size-300`.",
2079
+ "$extensions": {
2080
+ "opui": {
2081
+ "css": "var(--ui-font-size-300)",
2082
+ "cssVar": "--ui-font-size-h6",
2083
+ "tier": "role"
2084
+ }
2085
+ },
2086
+ "$type": "dimension",
2087
+ "$value": "{typography.ui-font-size-300}"
2088
+ }
2089
+ },
2090
+ "code": {
2091
+ "ui-code-bg-color": {
2092
+ "$description": "Background of inline `code` in rich text and `Typography`. `--ui-text` at `--ui-code-bg-alpha-light` in light mode and `--ui-code-bg-alpha-dark` in dark mode, fainter with more contrast so the text stands out.",
2093
+ "$extensions": {
2094
+ "opui": {
2095
+ "cssVar": "--ui-code-bg-color",
2096
+ "tier": "component"
2097
+ }
2098
+ },
2099
+ "$type": "color",
2100
+ "$value": "light-dark( oklch(from var(--ui-text) l c h / var(--ui-code-bg-alpha-light)), oklch(from var(--ui-text) l c h / var(--ui-code-bg-alpha-dark)) )"
2101
+ },
2102
+ "ui-code-block-bg-color": {
2103
+ "$description": "Background of `pre.ui-code-block` and `pre` in rich text. `--ui-surface-inverse` in light mode and `--ui-surface-filled` in dark mode, so the block is dark in both.",
2104
+ "$extensions": {
2105
+ "opui": {
2106
+ "cssVar": "--ui-code-block-bg-color",
2107
+ "tier": "component"
2108
+ }
2109
+ },
2110
+ "$type": "color",
2111
+ "$value": "light-dark( var(--ui-surface-inverse), var(--ui-surface-filled) )"
2112
+ },
2113
+ "ui-code-block-text-color": {
2114
+ "$description": "Text color of `pre.ui-code-block` and `pre` in rich text. `--ui-on-inverse` in light mode and `--ui-text-strong` in dark mode, on `--ui-code-block-bg-color`.",
2115
+ "$extensions": {
2116
+ "opui": {
2117
+ "cssVar": "--ui-code-block-text-color",
2118
+ "promise": {
2119
+ "against": [
2120
+ "--ui-code-block-bg-color"
2121
+ ],
2122
+ "ratio": 4.5
2123
+ },
2124
+ "tier": "component"
2125
+ }
2126
+ },
2127
+ "$type": "color",
2128
+ "$value": "light-dark( var(--ui-on-inverse), var(--ui-text-strong) )"
2129
+ }
2130
+ },
2131
+ "spacing": {
2132
+ "ui-space-scale": {
2133
+ "$description": "Multiplier for the `--ui-space-*` scale, the gaps, padding and margins of containers such as cards, dialogs, forms, tables and rich text. Controls follow `--ui-density` instead. See [Spacing](/guide/theming#spacing).",
2134
+ "$extensions": {
2135
+ "opui": {
2136
+ "css": "1",
2137
+ "cssVar": "--ui-space-scale",
2138
+ "tier": "knob"
2139
+ }
2140
+ },
2141
+ "$type": "number",
2142
+ "$value": 1
2143
+ },
2144
+ "ui-card-padding": {
2145
+ "$description": "Padding of `Card`, `Dialog` and `Accordion` content, headers and actions. When unset, `--ui-space-3`.",
2146
+ "$extensions": {
2147
+ "opui": {
2148
+ "cssVar": "--ui-card-padding",
2149
+ "example": "var(--ui-space-3)",
2150
+ "optional": true,
2151
+ "tier": "component"
2152
+ }
2153
+ },
2154
+ "$type": "dimension"
2155
+ },
2156
+ "ui-list-item-padding-inline": {
2157
+ "$description": "Horizontal padding of `List` and `Menu` items, headings and `Select` options. When unset, `--ui-space-3`.",
2158
+ "$extensions": {
2159
+ "opui": {
2160
+ "cssVar": "--ui-list-item-padding-inline",
2161
+ "example": "var(--ui-space-3)",
2162
+ "optional": true,
2163
+ "tier": "component"
2164
+ }
2165
+ },
2166
+ "$type": "dimension"
2167
+ },
2168
+ "ui-space-1": {
2169
+ "$description": "Spacing step 1: `0.25rem` times `--ui-space-scale`.",
2170
+ "$extensions": {
2171
+ "opui": {
2172
+ "cssVar": "--ui-space-1",
2173
+ "tier": "role"
2174
+ }
2175
+ },
2176
+ "$type": "dimension",
2177
+ "$value": "calc(0.25rem * var(--ui-space-scale))"
2178
+ },
2179
+ "ui-space-2": {
2180
+ "$description": "Spacing step 2: `0.5rem` times `--ui-space-scale`.",
2181
+ "$extensions": {
2182
+ "opui": {
2183
+ "cssVar": "--ui-space-2",
2184
+ "tier": "role"
2185
+ }
2186
+ },
2187
+ "$type": "dimension",
2188
+ "$value": "calc(0.5rem * var(--ui-space-scale))"
2189
+ },
2190
+ "ui-space-3": {
2191
+ "$description": "Spacing step 3: `1rem` times `--ui-space-scale`.",
2192
+ "$extensions": {
2193
+ "opui": {
2194
+ "cssVar": "--ui-space-3",
2195
+ "tier": "role"
2196
+ }
2197
+ },
2198
+ "$type": "dimension",
2199
+ "$value": "calc(1rem * var(--ui-space-scale))"
2200
+ },
2201
+ "ui-space-4": {
2202
+ "$description": "Spacing step 4: `1.25rem` times `--ui-space-scale`.",
2203
+ "$extensions": {
2204
+ "opui": {
2205
+ "cssVar": "--ui-space-4",
2206
+ "tier": "role"
2207
+ }
2208
+ },
2209
+ "$type": "dimension",
2210
+ "$value": "calc(1.25rem * var(--ui-space-scale))"
2211
+ },
2212
+ "ui-space-5": {
2213
+ "$description": "Spacing step 5: `1.5rem` times `--ui-space-scale`.",
2214
+ "$extensions": {
2215
+ "opui": {
2216
+ "cssVar": "--ui-space-5",
2217
+ "tier": "role"
2218
+ }
2219
+ },
2220
+ "$type": "dimension",
2221
+ "$value": "calc(1.5rem * var(--ui-space-scale))"
2222
+ },
2223
+ "ui-space-6": {
2224
+ "$description": "Spacing step 6: `1.75rem` times `--ui-space-scale`.",
2225
+ "$extensions": {
2226
+ "opui": {
2227
+ "cssVar": "--ui-space-6",
2228
+ "tier": "role"
2229
+ }
2230
+ },
2231
+ "$type": "dimension",
2232
+ "$value": "calc(1.75rem * var(--ui-space-scale))"
2233
+ },
2234
+ "ui-space-7": {
2235
+ "$description": "Spacing step 7: `2rem` times `--ui-space-scale`.",
2236
+ "$extensions": {
2237
+ "opui": {
2238
+ "cssVar": "--ui-space-7",
2239
+ "tier": "role"
2240
+ }
2241
+ },
2242
+ "$type": "dimension",
2243
+ "$value": "calc(2rem * var(--ui-space-scale))"
2244
+ },
2245
+ "ui-space-8": {
2246
+ "$description": "Spacing step 8: `3rem` times `--ui-space-scale`.",
2247
+ "$extensions": {
2248
+ "opui": {
2249
+ "cssVar": "--ui-space-8",
2250
+ "tier": "role"
2251
+ }
2252
+ },
2253
+ "$type": "dimension",
2254
+ "$value": "calc(3rem * var(--ui-space-scale))"
2255
+ }
2256
+ },
2257
+ "controls": {
2258
+ "ui-control-accent": {
2259
+ "$description": "The accent every control shares: `Button` and `ButtonGroup` without `.ui-primary` or `.ui-critical`, a checked `Checkbox`, `Radio` and `Switch`, and the `Range` thumb and fill. Unset by default, so buttons keep `--ui-palette-strong` and choice controls `--ui-primary`. Set it to `--ui-primary` to give every control the brand color in one line, like Material and shadcn, and `--ui-button-accent` or `--ui-choice-accent` to override one of them.",
2260
+ "$extensions": {
2261
+ "opui": {
2262
+ "cssVar": "--ui-control-accent",
2263
+ "example": "var(--ui-primary)",
2264
+ "optional": true,
2265
+ "tier": "hook"
2266
+ }
2267
+ },
2268
+ "$type": "color"
2269
+ },
2270
+ "ui-control-border-color": {
2271
+ "$description": "Border color of controls without a fill: `Button` with `.ui-outlined`, the edge and dividers of an outlined `ButtonGroup`, `ToggleButton`, `ToggleGroup`, `Chip` with `.ui-outlined`, the track of `Tabs` with `.ui-outlined`, and the selected `Tabs` pill. When unset, outlined buttons use their color, the selected `Tabs` pill `--ui-field-border-color` and the rest `--ui-border-color`. Themes that outline controls like fields set it to `--ui-field-border-color`.",
2272
+ "$extensions": {
2273
+ "opui": {
2274
+ "cssVar": "--ui-control-border-color",
2275
+ "example": "var(--ui-field-border-color)",
2276
+ "optional": true,
2277
+ "tier": "hook"
2278
+ }
2279
+ },
2280
+ "$type": "color"
2281
+ },
2282
+ "ui-control-border-color-filled": {
2283
+ "$description": "Border color of controls with a fill: `Button` with `.ui-filled` or `.ui-tonal`, the edge and dividers of a `ButtonGroup` with one of them, a checked `ToggleButton`, `Chip` without `.ui-outlined` and the `Carousel` buttons. When unset, buttons have no visible border, the carousel buttons use a shade of their fill and the rest use `--ui-border-color`. Set it with `--ui-control-border-color` to outline every control.",
2284
+ "$extensions": {
2285
+ "opui": {
2286
+ "cssVar": "--ui-control-border-color-filled",
2287
+ "example": "oklch(0 0 0)",
2288
+ "optional": true,
2289
+ "tier": "hook"
2290
+ }
2291
+ },
2292
+ "$type": "color"
2293
+ },
2294
+ "ui-on-control-accent": {
2295
+ "$description": "Text and mark color on a `--ui-control-accent` fill. Set it with `--ui-control-accent`. `--ui-button-on-accent` and `--ui-choice-on-accent` override it per component.",
2296
+ "$extensions": {
2297
+ "opui": {
2298
+ "cssVar": "--ui-on-control-accent",
2299
+ "example": "var(--ui-on-primary)",
2300
+ "optional": true,
2301
+ "tier": "hook"
2302
+ }
2303
+ },
2304
+ "$type": "color"
2305
+ },
2306
+ "ui-track-bg-color": {
2307
+ "$description": "The empty part of a track: the unchecked `Switch`, `Progress` and the `Range` track. When unset, `Progress` and tonal ranges use `--ui-surface-tonal`, the default range its field border and the switch `--ui-switch-track-bg-color`.",
2308
+ "$extensions": {
2309
+ "opui": {
2310
+ "cssVar": "--ui-track-bg-color",
2311
+ "example": "var(--ui-surface-tonal)",
2312
+ "optional": true,
2313
+ "tier": "hook"
2314
+ }
2315
+ },
2316
+ "$type": "color"
2317
+ }
2318
+ },
2319
+ "control-sizes": {
2320
+ "ui-density": {
2321
+ "$description": "Multiplier for the control sizes: `--ui-control-size*`, `--ui-chip-size*`, `--ui-choice-size*` and the `Switch` thumb and track sizes. `0.875` is compact, `1.125` is comfortable. See [Density](/guide/theming#density).",
2322
+ "$extensions": {
2323
+ "opui": {
2324
+ "css": "1",
2325
+ "cssVar": "--ui-density",
2326
+ "tier": "knob"
2327
+ }
2328
+ },
2329
+ "$type": "number",
2330
+ "$value": 1
2331
+ },
2332
+ "ui-control-size-x-small": {
2333
+ "$description": "Shared x-small height for fields and buttons.",
2334
+ "$extensions": {
2335
+ "opui": {
2336
+ "cssVar": "--ui-control-size-x-small",
2337
+ "tier": "role"
2338
+ }
2339
+ },
2340
+ "$type": "dimension",
2341
+ "$value": "calc(1.75rem * var(--ui-density))"
2342
+ },
2343
+ "ui-control-size-small": {
2344
+ "$description": "Shared small height for fields and buttons.",
2345
+ "$extensions": {
2346
+ "opui": {
2347
+ "cssVar": "--ui-control-size-small",
2348
+ "tier": "role"
2349
+ }
2350
+ },
2351
+ "$type": "dimension",
2352
+ "$value": "calc(2rem * var(--ui-density))"
2353
+ },
2354
+ "ui-control-size": {
2355
+ "$description": "Shared default height for fields and buttons so they line up.",
2356
+ "$extensions": {
2357
+ "opui": {
2358
+ "cssVar": "--ui-control-size",
2359
+ "tier": "role"
2360
+ }
2361
+ },
2362
+ "$type": "dimension",
2363
+ "$value": "calc(2.5rem * var(--ui-density))"
2364
+ },
2365
+ "ui-control-size-large": {
2366
+ "$description": "Shared large height for fields and buttons.",
2367
+ "$extensions": {
2368
+ "opui": {
2369
+ "cssVar": "--ui-control-size-large",
2370
+ "tier": "role"
2371
+ }
2372
+ },
2373
+ "$type": "dimension",
2374
+ "$value": "calc(3rem * var(--ui-density))"
2375
+ },
2376
+ "ui-field-size-x-small": {
2377
+ "$description": "Field height with `.ui-x-small`.",
2378
+ "$extensions": {
2379
+ "opui": {
2380
+ "css": "var(--ui-control-size-x-small)",
2381
+ "cssVar": "--ui-field-size-x-small",
2382
+ "tier": "role"
2383
+ }
2384
+ },
2385
+ "$type": "dimension",
2386
+ "$value": "{control-sizes.ui-control-size-x-small}"
2387
+ },
2388
+ "ui-field-size-small": {
2389
+ "$description": "Field height with `.ui-small`.",
2390
+ "$extensions": {
2391
+ "opui": {
2392
+ "css": "var(--ui-control-size-small)",
2393
+ "cssVar": "--ui-field-size-small",
2394
+ "tier": "role"
2395
+ }
2396
+ },
2397
+ "$type": "dimension",
2398
+ "$value": "{control-sizes.ui-control-size-small}"
2399
+ },
2400
+ "ui-field-size": {
2401
+ "$description": "Default field height.",
2402
+ "$extensions": {
2403
+ "opui": {
2404
+ "css": "var(--ui-control-size)",
2405
+ "cssVar": "--ui-field-size",
2406
+ "tier": "role"
2407
+ }
2408
+ },
2409
+ "$type": "dimension",
2410
+ "$value": "{control-sizes.ui-control-size}"
2411
+ },
2412
+ "ui-field-size-large": {
2413
+ "$description": "Field height with `.ui-large`.",
2414
+ "$extensions": {
2415
+ "opui": {
2416
+ "css": "var(--ui-control-size-large)",
2417
+ "cssVar": "--ui-field-size-large",
2418
+ "tier": "role"
2419
+ }
2420
+ },
2421
+ "$type": "dimension",
2422
+ "$value": "{control-sizes.ui-control-size-large}"
2423
+ },
2424
+ "ui-button-size-x-small": {
2425
+ "$description": "`Button` and `ButtonGroup` height with `.ui-x-small`.",
2426
+ "$extensions": {
2427
+ "opui": {
2428
+ "css": "var(--ui-control-size-x-small)",
2429
+ "cssVar": "--ui-button-size-x-small",
2430
+ "tier": "component"
2431
+ }
2432
+ },
2433
+ "$type": "dimension",
2434
+ "$value": "{control-sizes.ui-control-size-x-small}"
2435
+ },
2436
+ "ui-button-size-small": {
2437
+ "$description": "`Button` height with `.ui-small`.",
2438
+ "$extensions": {
2439
+ "opui": {
2440
+ "css": "var(--ui-control-size-small)",
2441
+ "cssVar": "--ui-button-size-small",
2442
+ "tier": "component"
2443
+ }
2444
+ },
2445
+ "$type": "dimension",
2446
+ "$value": "{control-sizes.ui-control-size-small}"
2447
+ },
2448
+ "ui-button-size": {
2449
+ "$description": "Default `Button` height.",
2450
+ "$extensions": {
2451
+ "opui": {
2452
+ "css": "var(--ui-control-size)",
2453
+ "cssVar": "--ui-button-size",
2454
+ "tier": "component"
2455
+ }
2456
+ },
2457
+ "$type": "dimension",
2458
+ "$value": "{control-sizes.ui-control-size}"
2459
+ },
2460
+ "ui-button-size-large": {
2461
+ "$description": "`Button` height with `.ui-large`.",
2462
+ "$extensions": {
2463
+ "opui": {
2464
+ "css": "var(--ui-control-size-large)",
2465
+ "cssVar": "--ui-button-size-large",
2466
+ "tier": "component"
2467
+ }
2468
+ },
2469
+ "$type": "dimension",
2470
+ "$value": "{control-sizes.ui-control-size-large}"
2471
+ },
2472
+ "ui-chip-size-x-small": {
2473
+ "$description": "`Chip` height with `.ui-x-small`.",
2474
+ "$extensions": {
2475
+ "opui": {
2476
+ "cssVar": "--ui-chip-size-x-small",
2477
+ "tier": "component"
2478
+ }
2479
+ },
2480
+ "$type": "dimension",
2481
+ "$value": "calc(1.5rem * var(--ui-density))"
2482
+ },
2483
+ "ui-chip-size-small": {
2484
+ "$description": "`Chip` height with `.ui-small`.",
2485
+ "$extensions": {
2486
+ "opui": {
2487
+ "css": "var(--ui-control-size-x-small)",
2488
+ "cssVar": "--ui-chip-size-small",
2489
+ "tier": "component"
2490
+ }
2491
+ },
2492
+ "$type": "dimension",
2493
+ "$value": "{control-sizes.ui-control-size-x-small}"
2494
+ },
2495
+ "ui-chip-size": {
2496
+ "$description": "Default `Chip` height.",
2497
+ "$extensions": {
2498
+ "opui": {
2499
+ "css": "var(--ui-control-size-small)",
2500
+ "cssVar": "--ui-chip-size",
2501
+ "tier": "component"
2502
+ }
2503
+ },
2504
+ "$type": "dimension",
2505
+ "$value": "{control-sizes.ui-control-size-small}"
2506
+ },
2507
+ "ui-chip-size-large": {
2508
+ "$description": "`Chip` height with `.ui-large`.",
2509
+ "$extensions": {
2510
+ "opui": {
2511
+ "css": "var(--ui-control-size)",
2512
+ "cssVar": "--ui-chip-size-large",
2513
+ "tier": "component"
2514
+ }
2515
+ },
2516
+ "$type": "dimension",
2517
+ "$value": "{control-sizes.ui-control-size}"
2518
+ }
2519
+ },
2520
+ "button": {
2521
+ "ui-button-accent": {
2522
+ "$description": "Color of `Button` and `ButtonGroup` without `.ui-primary` or `.ui-critical`: the fill of filled buttons, the text and border of outlined and text buttons. When unset, `--ui-control-accent`, else the darkest palette color in light mode and the lightest in dark mode.",
2523
+ "$extensions": {
2524
+ "opui": {
2525
+ "cssVar": "--ui-button-accent",
2526
+ "example": "light-dark(var(--ui-color-16), var(--ui-color-1))",
2527
+ "optional": true,
2528
+ "tier": "component"
2529
+ }
2530
+ },
2531
+ "$type": "color"
2532
+ },
2533
+ "ui-button-on-accent": {
2534
+ "$description": "Text color on a filled `--ui-button-accent` button. Set it with `--ui-button-accent`. When unset, `--ui-on-control-accent`, else `--ui-palette-on-strong`.",
2535
+ "$extensions": {
2536
+ "opui": {
2537
+ "cssVar": "--ui-button-on-accent",
2538
+ "example": "light-dark(var(--ui-color-1), var(--ui-color-16))",
2539
+ "optional": true,
2540
+ "tier": "component"
2541
+ }
2542
+ },
2543
+ "$type": "color"
2544
+ },
2545
+ "ui-button-accent-filled": {
2546
+ "$description": "Fill of `Button` and `ButtonGroup` with `.ui-filled` and no `.ui-primary` or `.ui-critical`, and of hovered outlined and tonal ones. When unset, `--ui-button-accent`, so text, outlined and filled buttons share one color.",
2547
+ "$extensions": {
2548
+ "opui": {
2549
+ "cssVar": "--ui-button-accent-filled",
2550
+ "example": "var(--ui-button-accent)",
2551
+ "optional": true,
2552
+ "tier": "component"
2553
+ }
2554
+ },
2555
+ "$type": "color"
2556
+ },
2557
+ "ui-button-on-accent-filled": {
2558
+ "$description": "Text color on a `--ui-button-accent-filled` fill. Set it with `--ui-button-accent-filled`.",
2559
+ "$extensions": {
2560
+ "opui": {
2561
+ "cssVar": "--ui-button-on-accent-filled",
2562
+ "example": "var(--ui-button-on-accent)",
2563
+ "optional": true,
2564
+ "tier": "component"
2565
+ }
2566
+ },
2567
+ "$type": "color"
2568
+ },
2569
+ "ui-button-radius": {
2570
+ "$description": "Corner radius for `Button`, `ButtonGroup`, `ToggleButton` and `ToggleGroup`. When unset, they follow `--ui-radius`, also where it's set on a part of the page.",
2571
+ "$extensions": {
2572
+ "opui": {
2573
+ "cssVar": "--ui-button-radius",
2574
+ "example": "var(--ui-radius)",
2575
+ "optional": true,
2576
+ "tier": "component"
2577
+ }
2578
+ },
2579
+ "$type": "dimension"
2580
+ },
2581
+ "ui-button-font-weight": {
2582
+ "$description": "Font weight of `Button`. When unset, buttons follow `--ui-font-weight-bold`.",
2583
+ "$extensions": {
2584
+ "opui": {
2585
+ "cssVar": "--ui-button-font-weight",
2586
+ "example": "var(--ui-font-weight-bold)",
2587
+ "optional": true,
2588
+ "tier": "component"
2589
+ }
2590
+ },
2591
+ "$type": "fontWeight"
2592
+ },
2593
+ "ui-button-hover": {
2594
+ "$description": "How `Button` and `ButtonGroup` show hover and pressed states. `layer` draws a translucent state layer in `--ui-state-hover-alpha-accent` and `--ui-state-active-alpha-accent`: the text color over filled and tonal buttons, the accent over outlined ones, which keep their text and border. When unset (`shade`), filled buttons shade their fill and outlined and tonal buttons fill with the accent.",
2595
+ "$extensions": {
2596
+ "opui": {
2597
+ "cssVar": "--ui-button-hover",
2598
+ "example": "shade",
2599
+ "optional": true,
2600
+ "tier": "component"
2601
+ }
2602
+ }
2603
+ },
2604
+ "ui-button-hover-shadow": {
2605
+ "$description": "Shadow of `Button` with `.ui-filled`, `.ui-outlined` or `.ui-tonal` on hover. When unset, it keeps `--ui-shadow-control`.",
2606
+ "$extensions": {
2607
+ "opui": {
2608
+ "cssVar": "--ui-button-hover-shadow",
2609
+ "example": "var(--ui-shadow-control)",
2610
+ "optional": true,
2611
+ "tier": "component"
2612
+ }
2613
+ },
2614
+ "$type": "shadow"
2615
+ },
2616
+ "ui-button-hover-translate": {
2617
+ "$description": "Moves `Button` with `.ui-filled`, `.ui-outlined` or `.ui-tonal` on hover, as a `translate` value. Pair it with `--ui-button-hover-shadow` to press buttons into their shadow. `none` when unset.",
2618
+ "$extensions": {
2619
+ "opui": {
2620
+ "cssVar": "--ui-button-hover-translate",
2621
+ "example": "none",
2622
+ "optional": true,
2623
+ "tier": "component"
2624
+ }
2625
+ }
2626
+ },
2627
+ "ui-button-padding-inline-x-small": {
2628
+ "$description": "Horizontal padding of `Button` with `.ui-x-small`. When unset, `1ex`.",
2629
+ "$extensions": {
2630
+ "opui": {
2631
+ "cssVar": "--ui-button-padding-inline-x-small",
2632
+ "example": "1ex",
2633
+ "optional": true,
2634
+ "tier": "component"
2635
+ }
2636
+ },
2637
+ "$type": "dimension"
2638
+ },
2639
+ "ui-button-padding-inline-small": {
2640
+ "$description": "Horizontal padding of `Button` with `.ui-small`. When unset, `1.25ex`.",
2641
+ "$extensions": {
2642
+ "opui": {
2643
+ "cssVar": "--ui-button-padding-inline-small",
2644
+ "example": "1.25ex",
2645
+ "optional": true,
2646
+ "tier": "component"
2647
+ }
2648
+ },
2649
+ "$type": "dimension"
2650
+ },
2651
+ "ui-button-padding-inline": {
2652
+ "$description": "Horizontal padding of `Button`. When unset, `1.5ex`, which scales with the font.",
2653
+ "$extensions": {
2654
+ "opui": {
2655
+ "cssVar": "--ui-button-padding-inline",
2656
+ "example": "1.5ex",
2657
+ "optional": true,
2658
+ "tier": "component"
2659
+ }
2660
+ },
2661
+ "$type": "dimension"
2662
+ },
2663
+ "ui-button-padding-inline-large": {
2664
+ "$description": "Horizontal padding of `Button` with `.ui-large`. When unset, `2.5ex`.",
2665
+ "$extensions": {
2666
+ "opui": {
2667
+ "cssVar": "--ui-button-padding-inline-large",
2668
+ "example": "2.5ex",
2669
+ "optional": true,
2670
+ "tier": "component"
2671
+ }
2672
+ },
2673
+ "$type": "dimension"
2674
+ }
2675
+ },
2676
+ "tabs": {
2677
+ "ui-tabs-accent": {
2678
+ "$description": "Color of the selected `Tabs` label, and of the indicator with `.ui-line`. When unset, `--ui-text-strong`. Filled tabs keep `--ui-on-selected-strong`.",
2679
+ "$extensions": {
2680
+ "opui": {
2681
+ "cssVar": "--ui-tabs-accent",
2682
+ "example": "var(--ui-text-strong)",
2683
+ "optional": true,
2684
+ "tier": "component"
2685
+ }
2686
+ },
2687
+ "$type": "color"
2688
+ }
2689
+ },
2690
+ "divider": {
2691
+ "ui-divider-gap": {
2692
+ "$description": "Block margin around a `Divider`, times `--ui-space-scale`. Cards, callouts, dialogs and drawers set it to `--ui-space-3`. A divider that is a direct child of a card has no margin, since the card's gap already spaces it.",
2693
+ "$extensions": {
2694
+ "opui": {
2695
+ "cssVar": "--ui-divider-gap",
2696
+ "tier": "component"
2697
+ }
2698
+ },
2699
+ "$type": "dimension",
2700
+ "$value": "calc(clamp(1.5rem, 3vi, 2rem) * var(--ui-space-scale))"
2701
+ }
2702
+ },
2703
+ "motion": {
2704
+ "ui-duration-fast": {
2705
+ "$description": "Transition duration for hover and press feedback.",
2706
+ "$extensions": {
2707
+ "opui": {
2708
+ "cssVar": "--ui-duration-fast",
2709
+ "tier": "role"
2710
+ }
2711
+ },
2712
+ "$type": "duration",
2713
+ "$value": "0.1s"
2714
+ },
2715
+ "ui-duration": {
2716
+ "$description": "Default transition duration. Multiplied by `--ui-motion`.",
2717
+ "$extensions": {
2718
+ "opui": {
2719
+ "cssVar": "--ui-duration",
2720
+ "tier": "role"
2721
+ }
2722
+ },
2723
+ "$type": "duration",
2724
+ "$value": "0.2s"
2725
+ },
2726
+ "ui-duration-slow": {
2727
+ "$description": "Transition duration for entering and leaving overlays: `Dialog`, `Drawer` and `Menu`.",
2728
+ "$extensions": {
2729
+ "opui": {
2730
+ "cssVar": "--ui-duration-slow",
2731
+ "tier": "role"
2732
+ }
2733
+ },
2734
+ "$type": "duration",
2735
+ "$value": "0.3s"
2736
+ },
2737
+ "ui-ease": {
2738
+ "$description": "Default easing for transitions.",
2739
+ "$extensions": {
2740
+ "opui": {
2741
+ "cssVar": "--ui-ease",
2742
+ "tier": "role"
2743
+ }
2744
+ },
2745
+ "$type": "cubicBezier",
2746
+ "$value": "ease"
2747
+ },
2748
+ "ui-ease-enter": {
2749
+ "$description": "Easing for elements entering the screen: opening `Dialog`, `Drawer` and `Menu`, and the `Badge`, `Progress` and `Tooltip` transitions.",
2750
+ "$extensions": {
2751
+ "opui": {
2752
+ "cssVar": "--ui-ease-enter",
2753
+ "tier": "role"
2754
+ }
2755
+ },
2756
+ "$type": "cubicBezier",
2757
+ "$value": "cubic-bezier(0, 0, 0.3, 1)"
2758
+ },
2759
+ "ui-ease-exit": {
2760
+ "$description": "Easing for elements leaving the screen: closing `Drawer` and `Menu`.",
2761
+ "$extensions": {
2762
+ "opui": {
2763
+ "cssVar": "--ui-ease-exit",
2764
+ "tier": "role"
2765
+ }
2766
+ },
2767
+ "$type": "cubicBezier",
2768
+ "$value": "cubic-bezier(0.7, 0, 1, 1)"
2769
+ },
2770
+ "ui-motion": {
2771
+ "$description": "Motion multiplier. `0` disables transitions, `1` is normal speed. Set to `0` automatically under `prefers-reduced-motion`. See [Motion](/guide/theming#motion).",
2772
+ "$extensions": {
2773
+ "opui": {
2774
+ "css": "1",
2775
+ "cssVar": "--ui-motion",
2776
+ "tier": "knob"
2777
+ }
2778
+ },
2779
+ "$type": "number",
2780
+ "$value": 1
2781
+ }
2782
+ },
2783
+ "contrast": {
2784
+ "ui-contrast": {
2785
+ "$description": "`more` tightens the contrast knobs (`--ui-text-strength-*`, `--ui-border-strength-*`, `--ui-field-border-strength`, `--ui-code-bg-alpha-*`, the `*-max-lightness` and `*-min-lightness` limits and `--ui-focus-ring-width`), and every role derived from them follows. Set to `more` under `prefers-contrast: more` or by `.ui-contrast-more`. Components read it in style queries for shape changes. See [Contrast](/guide/theming#contrast).",
2786
+ "$extensions": {
2787
+ "opui": {
2788
+ "cssVar": "--ui-contrast",
2789
+ "modes": {
2790
+ "more-contrast": "more"
2791
+ },
2792
+ "tier": "knob"
2793
+ }
2794
+ },
2795
+ "$value": "normal"
2796
+ },
2797
+ "ui-accent-fill-max-lightness": {
2798
+ "$description": "The highest OKLCH lightness of an intent fill, an intent color filled under `--ui-on-fill` text: the critical, info, neutral and success `Badge`, and the fills of critical `Button`s, also in a critical `ButtonGroup`. Borders keep the intent color. `0.48`, and `0.45` with more contrast.",
2799
+ "$extensions": {
2800
+ "opui": {
2801
+ "css": "0.48",
2802
+ "cssVar": "--ui-accent-fill-max-lightness",
2803
+ "modes": {
2804
+ "more-contrast": "0.45"
2805
+ },
2806
+ "tier": "knob"
2807
+ }
2808
+ },
2809
+ "$type": "number",
2810
+ "$value": 0.48
2811
+ },
2812
+ "ui-accent-max-chroma": {
2813
+ "$description": "The highest OKLCH chroma of `--ui-primary`, `--ui-invalid` and `--ui-palette-text` in dark mode when more contrast lifts them. `1` (no cap), and `0.1` with more contrast.",
2814
+ "$extensions": {
2815
+ "opui": {
2816
+ "css": "1",
2817
+ "cssVar": "--ui-accent-max-chroma",
2818
+ "modes": {
2819
+ "more-contrast": "0.1"
2820
+ },
2821
+ "tier": "knob"
2822
+ }
2823
+ },
2824
+ "$type": "number",
2825
+ "$value": 1
2826
+ },
2827
+ "ui-accent-max-lightness": {
2828
+ "$description": "The highest OKLCH lightness of the named colors, `--ui-neutral` and `--ui-palette-accent` in light mode. `1` (no cap), and `0.42` with more contrast.",
2829
+ "$extensions": {
2830
+ "opui": {
2831
+ "css": "1",
2832
+ "cssVar": "--ui-accent-max-lightness",
2833
+ "modes": {
2834
+ "more-contrast": "0.42"
2835
+ },
2836
+ "tier": "knob"
2837
+ }
2838
+ },
2839
+ "$type": "number",
2840
+ "$value": 1
2841
+ },
2842
+ "ui-border-strength-dark": {
2843
+ "$description": "How much of `--ui-text-strong` is mixed into `--ui-surface` for `--ui-border-color` in dark mode. `11%`, and `55%` with more contrast.",
2844
+ "$extensions": {
2845
+ "opui": {
2846
+ "cssVar": "--ui-border-strength-dark",
2847
+ "modes": {
2848
+ "more-contrast": "55%"
2849
+ },
2850
+ "tier": "knob"
2851
+ }
2852
+ },
2853
+ "$type": "number",
2854
+ "$value": "11%"
2855
+ },
2856
+ "ui-border-strength-light": {
2857
+ "$description": "How much of `--ui-text-strong` is mixed into `--ui-surface` for `--ui-border-color` in light mode. `17%`, and `55%` with more contrast.",
2858
+ "$extensions": {
2859
+ "opui": {
2860
+ "cssVar": "--ui-border-strength-light",
2861
+ "modes": {
2862
+ "more-contrast": "55%"
2863
+ },
2864
+ "tier": "knob"
2865
+ }
2866
+ },
2867
+ "$type": "number",
2868
+ "$value": "17%"
2869
+ },
2870
+ "ui-code-bg-alpha-dark": {
2871
+ "$description": "Opacity of `--ui-code-bg-color`, the inline `code` background, in dark mode. `10%`, and `6%` with more contrast.",
2872
+ "$extensions": {
2873
+ "opui": {
2874
+ "cssVar": "--ui-code-bg-alpha-dark",
2875
+ "modes": {
2876
+ "more-contrast": "6%"
2877
+ },
2878
+ "tier": "knob"
2879
+ }
2880
+ },
2881
+ "$type": "number",
2882
+ "$value": "10%"
2883
+ },
2884
+ "ui-code-bg-alpha-light": {
2885
+ "$description": "Opacity of `--ui-code-bg-color`, the inline `code` background, in light mode. `12%`, and `6%` with more contrast.",
2886
+ "$extensions": {
2887
+ "opui": {
2888
+ "cssVar": "--ui-code-bg-alpha-light",
2889
+ "modes": {
2890
+ "more-contrast": "6%"
2891
+ },
2892
+ "tier": "knob"
2893
+ }
2894
+ },
2895
+ "$type": "number",
2896
+ "$value": "12%"
2897
+ },
2898
+ "ui-field-border-strength": {
2899
+ "$description": "How much of `--ui-text-strong` is mixed into the surface for `--ui-field-border-color` and its filled and raised variants. `50%`, and `70%` with more contrast.",
2900
+ "$extensions": {
2901
+ "opui": {
2902
+ "cssVar": "--ui-field-border-strength",
2903
+ "modes": {
2904
+ "more-contrast": "70%"
2905
+ },
2906
+ "tier": "knob"
2907
+ }
2908
+ },
2909
+ "$type": "number",
2910
+ "$value": "50%"
2911
+ },
2912
+ "ui-invalid-min-lightness": {
2913
+ "$description": "The lowest OKLCH lightness of `--ui-invalid` in dark mode. `0` (no floor), and `0.85` with more contrast, so invalid borders stand out from the page.",
2914
+ "$extensions": {
2915
+ "opui": {
2916
+ "css": "0",
2917
+ "cssVar": "--ui-invalid-min-lightness",
2918
+ "modes": {
2919
+ "more-contrast": "0.85"
2920
+ },
2921
+ "tier": "knob"
2922
+ }
2923
+ },
2924
+ "$type": "number",
2925
+ "$value": 0
2926
+ },
2927
+ "ui-palette-accent-min-lightness": {
2928
+ "$description": "The lowest OKLCH lightness of `--ui-palette-accent` in dark mode. `0`, and `0.71` with more contrast.",
2929
+ "$extensions": {
2930
+ "opui": {
2931
+ "css": "0",
2932
+ "cssVar": "--ui-palette-accent-min-lightness",
2933
+ "modes": {
2934
+ "more-contrast": "0.71"
2935
+ },
2936
+ "tier": "knob"
2937
+ }
2938
+ },
2939
+ "$type": "number",
2940
+ "$value": 0
2941
+ },
2942
+ "ui-palette-border-max-lightness": {
2943
+ "$description": "The highest OKLCH lightness of `--ui-palette-border` in light mode. `1`, and `0.53` with more contrast.",
2944
+ "$extensions": {
2945
+ "opui": {
2946
+ "css": "1",
2947
+ "cssVar": "--ui-palette-border-max-lightness",
2948
+ "modes": {
2949
+ "more-contrast": "0.53"
2950
+ },
2951
+ "tier": "knob"
2952
+ }
2953
+ },
2954
+ "$type": "number",
2955
+ "$value": 1
2956
+ },
2957
+ "ui-palette-border-min-lightness": {
2958
+ "$description": "The lowest OKLCH lightness of `--ui-palette-border` in dark mode. `0`, and `0.66` with more contrast.",
2959
+ "$extensions": {
2960
+ "opui": {
2961
+ "css": "0",
2962
+ "cssVar": "--ui-palette-border-min-lightness",
2963
+ "modes": {
2964
+ "more-contrast": "0.66"
2965
+ },
2966
+ "tier": "knob"
2967
+ }
2968
+ },
2969
+ "$type": "number",
2970
+ "$value": 0
2971
+ },
2972
+ "ui-palette-text-max-lightness": {
2973
+ "$description": "The highest OKLCH lightness of `--ui-palette-text` in light mode. `1`, and `0.35` with more contrast.",
2974
+ "$extensions": {
2975
+ "opui": {
2976
+ "css": "1",
2977
+ "cssVar": "--ui-palette-text-max-lightness",
2978
+ "modes": {
2979
+ "more-contrast": "0.35"
2980
+ },
2981
+ "tier": "knob"
2982
+ }
2983
+ },
2984
+ "$type": "number",
2985
+ "$value": 1
2986
+ },
2987
+ "ui-palette-text-min-lightness": {
2988
+ "$description": "The lowest OKLCH lightness of `--ui-palette-text` in dark mode, so it keeps 4.5:1 on every surface. `0.8` like `--ui-text-min-lightness`, and `0.93` with more contrast.",
2989
+ "$extensions": {
2990
+ "opui": {
2991
+ "css": "0.8",
2992
+ "cssVar": "--ui-palette-text-min-lightness",
2993
+ "modes": {
2994
+ "more-contrast": "0.93"
2995
+ },
2996
+ "tier": "knob"
2997
+ }
2998
+ },
2999
+ "$type": "number",
3000
+ "$value": 0.8
3001
+ },
3002
+ "ui-palette-tint-max-lightness": {
3003
+ "$description": "The highest OKLCH lightness of `--ui-palette-tint` in dark mode. `1`, and `0.35` with more contrast.",
3004
+ "$extensions": {
3005
+ "opui": {
3006
+ "css": "1",
3007
+ "cssVar": "--ui-palette-tint-max-lightness",
3008
+ "modes": {
3009
+ "more-contrast": "0.35"
3010
+ },
3011
+ "tier": "knob"
3012
+ }
3013
+ },
3014
+ "$type": "number",
3015
+ "$value": 1
3016
+ },
3017
+ "ui-palette-tint-min-lightness": {
3018
+ "$description": "The lowest OKLCH lightness of `--ui-palette-tint` in light mode. `0`, and `0.84` with more contrast.",
3019
+ "$extensions": {
3020
+ "opui": {
3021
+ "css": "0",
3022
+ "cssVar": "--ui-palette-tint-min-lightness",
3023
+ "modes": {
3024
+ "more-contrast": "0.84"
3025
+ },
3026
+ "tier": "knob"
3027
+ }
3028
+ },
3029
+ "$type": "number",
3030
+ "$value": 0
3031
+ },
3032
+ "ui-primary-max-lightness": {
3033
+ "$description": "The highest OKLCH lightness of `--ui-primary` in light mode, applied to `--ui-primary-source`. `1` (no cap), and `0.35` with more contrast.",
3034
+ "$extensions": {
3035
+ "opui": {
3036
+ "css": "1",
3037
+ "cssVar": "--ui-primary-max-lightness",
3038
+ "modes": {
3039
+ "more-contrast": "0.35"
3040
+ },
3041
+ "tier": "knob"
3042
+ }
3043
+ },
3044
+ "$type": "number",
3045
+ "$value": 1
3046
+ },
3047
+ "ui-primary-min-lightness": {
3048
+ "$description": "The lowest OKLCH lightness of `--ui-primary` in dark mode, applied to `--ui-primary-source`. `0` (no floor), and `0.93` with more contrast.",
3049
+ "$extensions": {
3050
+ "opui": {
3051
+ "css": "0",
3052
+ "cssVar": "--ui-primary-min-lightness",
3053
+ "modes": {
3054
+ "more-contrast": "0.93"
3055
+ },
3056
+ "tier": "knob"
3057
+ }
3058
+ },
3059
+ "$type": "number",
3060
+ "$value": 0
3061
+ },
3062
+ "ui-text-disabled-strength": {
3063
+ "$description": "How much of `--ui-text` is mixed into `--ui-surface` for `--ui-text-disabled`. `50%`, and `60%` with more contrast.",
3064
+ "$extensions": {
3065
+ "opui": {
3066
+ "cssVar": "--ui-text-disabled-strength",
3067
+ "modes": {
3068
+ "more-contrast": "60%"
3069
+ },
3070
+ "tier": "knob"
3071
+ }
3072
+ },
3073
+ "$type": "number",
3074
+ "$value": "50%"
3075
+ },
3076
+ "ui-text-max-chroma": {
3077
+ "$description": "The highest OKLCH chroma of the intent text roles in dark mode, which keeps a light color inside sRGB. `0.1`. Also caps the dark mode text of `Button` and `ButtonGroup` without `.ui-primary` or `.ui-critical`.",
3078
+ "$extensions": {
3079
+ "opui": {
3080
+ "css": "0.1",
3081
+ "cssVar": "--ui-text-max-chroma",
3082
+ "tier": "knob"
3083
+ }
3084
+ },
3085
+ "$type": "number",
3086
+ "$value": 0.1
3087
+ },
3088
+ "ui-text-max-lightness": {
3089
+ "$description": "The highest OKLCH lightness of the intent text roles (`--ui-primary-text`, `--ui-critical-text` and the other `-text` roles) in light mode, so they keep 4.5:1 on every surface. `0.41`, and `0.3` with more contrast.",
3090
+ "$extensions": {
3091
+ "opui": {
3092
+ "css": "0.41",
3093
+ "cssVar": "--ui-text-max-lightness",
3094
+ "modes": {
3095
+ "more-contrast": "0.3"
3096
+ },
3097
+ "tier": "knob"
3098
+ }
3099
+ },
3100
+ "$type": "number",
3101
+ "$value": 0.41
3102
+ },
3103
+ "ui-text-min-lightness": {
3104
+ "$description": "The lowest OKLCH lightness of the intent text roles in dark mode, so they keep 4.5:1 on every surface. `0.8`, and `0.9` with more contrast. Their chroma is also capped at `--ui-text-max-chroma` in dark mode. Also the lowest lightness of `Button` and `ButtonGroup` text without `.ui-primary` or `.ui-critical` in dark mode.",
3105
+ "$extensions": {
3106
+ "opui": {
3107
+ "css": "0.8",
3108
+ "cssVar": "--ui-text-min-lightness",
3109
+ "modes": {
3110
+ "more-contrast": "0.9"
3111
+ },
3112
+ "tier": "knob"
3113
+ }
3114
+ },
3115
+ "$type": "number",
3116
+ "$value": 0.8
3117
+ },
3118
+ "ui-text-strength-dark": {
3119
+ "$description": "How much of `--ui-text-strong` is mixed into `--ui-surface` for `--ui-text` in dark mode. `80%`, and `90%` with more contrast.",
3120
+ "$extensions": {
3121
+ "opui": {
3122
+ "cssVar": "--ui-text-strength-dark",
3123
+ "modes": {
3124
+ "more-contrast": "90%"
3125
+ },
3126
+ "tier": "knob"
3127
+ }
3128
+ },
3129
+ "$type": "number",
3130
+ "$value": "80%"
3131
+ },
3132
+ "ui-text-strength-light": {
3133
+ "$description": "How much of `--ui-text-strong` is mixed into `--ui-surface` for `--ui-text` in light mode. `87%`, and `90%` with more contrast.",
3134
+ "$extensions": {
3135
+ "opui": {
3136
+ "cssVar": "--ui-text-strength-light",
3137
+ "modes": {
3138
+ "more-contrast": "90%"
3139
+ },
3140
+ "tier": "knob"
3141
+ }
3142
+ },
3143
+ "$type": "number",
3144
+ "$value": "87%"
3145
+ }
3146
+ },
3147
+ "state": {
3148
+ "ui-disabled-opacity": {
3149
+ "$description": "Opacity applied to disabled controls.",
3150
+ "$extensions": {
3151
+ "opui": {
3152
+ "css": "0.64",
3153
+ "cssVar": "--ui-disabled-opacity",
3154
+ "tier": "role"
3155
+ }
3156
+ },
3157
+ "$type": "number",
3158
+ "$value": 0.64
3159
+ },
3160
+ "ui-selected": {
3161
+ "$description": "Background of a selected control: a checked `ToggleButton`, the selected `ToggleGroup` item, and a selected or current `List` item and `Select` option. When unset, `--ui-primary` on toggles and `--ui-primary` at `--ui-state-active-alpha-accent` on list items and options. Pair it with `--ui-on-selected`.",
3162
+ "$extensions": {
3163
+ "opui": {
3164
+ "cssVar": "--ui-selected",
3165
+ "example": "var(--ui-primary)",
3166
+ "optional": true,
3167
+ "tier": "hook"
3168
+ }
3169
+ },
3170
+ "$type": "color"
3171
+ },
3172
+ "ui-on-selected": {
3173
+ "$description": "Text color on `--ui-selected`. When unset, `--ui-on-primary` on toggles, the item's own text color on list items and `--ui-primary-text` on a selected `Select` option.",
3174
+ "$extensions": {
3175
+ "opui": {
3176
+ "cssVar": "--ui-on-selected",
3177
+ "example": "var(--ui-on-primary)",
3178
+ "optional": true,
3179
+ "tier": "hook"
3180
+ }
3181
+ },
3182
+ "$type": "color"
3183
+ },
3184
+ "ui-state-active-alpha-light": {
3185
+ "$description": "Alpha of the pressed state layer on neutral buttons in light mode.",
3186
+ "$extensions": {
3187
+ "opui": {
3188
+ "cssVar": "--ui-state-active-alpha-light",
3189
+ "tier": "knob"
3190
+ }
3191
+ },
3192
+ "$type": "number",
3193
+ "$value": "20%"
3194
+ },
3195
+ "ui-state-active-alpha-accent": {
3196
+ "$description": "Alpha of the pressed state layer on primary and critical buttons.",
3197
+ "$extensions": {
3198
+ "opui": {
3199
+ "cssVar": "--ui-state-active-alpha-accent",
3200
+ "tier": "knob"
3201
+ }
3202
+ },
3203
+ "$type": "number",
3204
+ "$value": "25%"
3205
+ },
3206
+ "ui-state-active-alpha-dark": {
3207
+ "$description": "Alpha of the pressed state layer on neutral buttons in dark mode. `30%`, and `20%` with more contrast so the text keeps 7:1.",
3208
+ "$extensions": {
3209
+ "opui": {
3210
+ "cssVar": "--ui-state-active-alpha-dark",
3211
+ "modes": {
3212
+ "more-contrast": "20%"
3213
+ },
3214
+ "tier": "knob"
3215
+ }
3216
+ },
3217
+ "$type": "number",
3218
+ "$value": "30%"
3219
+ },
3220
+ "ui-state-hover-alpha-light": {
3221
+ "$description": "Alpha of the hover state layer on neutral buttons in light mode.",
3222
+ "$extensions": {
3223
+ "opui": {
3224
+ "cssVar": "--ui-state-hover-alpha-light",
3225
+ "tier": "knob"
3226
+ }
3227
+ },
3228
+ "$type": "number",
3229
+ "$value": "10%"
3230
+ },
3231
+ "ui-state-hover-alpha-accent": {
3232
+ "$description": "Alpha of the hover state layer on primary and critical buttons.",
3233
+ "$extensions": {
3234
+ "opui": {
3235
+ "cssVar": "--ui-state-hover-alpha-accent",
3236
+ "tier": "knob"
3237
+ }
3238
+ },
3239
+ "$type": "number",
3240
+ "$value": "15%"
3241
+ },
3242
+ "ui-state-hover-alpha-dark": {
3243
+ "$description": "Alpha of the hover state layer on neutral buttons in dark mode.",
3244
+ "$extensions": {
3245
+ "opui": {
3246
+ "cssVar": "--ui-state-hover-alpha-dark",
3247
+ "tier": "knob"
3248
+ }
3249
+ },
3250
+ "$type": "number",
3251
+ "$value": "20%"
3252
+ }
3253
+ },
3254
+ "icons": {
3255
+ "ui-icon-size-x-small": {
3256
+ "$description": "Smallest icon size, for icons in x-small controls. Not read by a component yet.",
3257
+ "$extensions": {
3258
+ "opui": {
3259
+ "css": "0.75rem",
3260
+ "cssVar": "--ui-icon-size-x-small",
3261
+ "tier": "role"
3262
+ }
3263
+ },
3264
+ "$type": "dimension",
3265
+ "$value": {
3266
+ "unit": "rem",
3267
+ "value": 0.75
3268
+ }
3269
+ },
3270
+ "ui-icon-size-small": {
3271
+ "$description": "Icon size inside `Chip`, x-small `Avatar` and dense `List` rows, and the `Select` and autosuggest chevron.",
3272
+ "$extensions": {
3273
+ "opui": {
3274
+ "css": "1rem",
3275
+ "cssVar": "--ui-icon-size-small",
3276
+ "tier": "role"
3277
+ }
3278
+ },
3279
+ "$type": "dimension",
3280
+ "$value": {
3281
+ "unit": "rem",
3282
+ "value": 1
3283
+ }
3284
+ },
3285
+ "ui-icon-size": {
3286
+ "$description": "Default icon size inside components.",
3287
+ "$extensions": {
3288
+ "opui": {
3289
+ "css": "1.25rem",
3290
+ "cssVar": "--ui-icon-size",
3291
+ "tier": "role"
3292
+ }
3293
+ },
3294
+ "$type": "dimension",
3295
+ "$value": {
3296
+ "unit": "rem",
3297
+ "value": 1.25
3298
+ }
3299
+ },
3300
+ "ui-icon-size-large": {
3301
+ "$description": "Icon size inside `Avatar`, and of an `svg` without a `width` in `normalize.css`.",
3302
+ "$extensions": {
3303
+ "opui": {
3304
+ "css": "1.5rem",
3305
+ "cssVar": "--ui-icon-size-large",
3306
+ "tier": "role"
3307
+ }
3308
+ },
3309
+ "$type": "dimension",
3310
+ "$value": {
3311
+ "unit": "rem",
3312
+ "value": 1.5
3313
+ }
3314
+ }
3315
+ },
3316
+ "choice-controls": {
3317
+ "ui-choice-accent": {
3318
+ "$description": "Fill of a checked `Checkbox`, `Radio` and `Switch`, and the thumb and fill of `Range`. When unset, `--ui-control-accent`, else `--ui-primary`, with its lightness capped in dark mode for the choice controls. Set it, or `--ui-control-accent`, to `--ui-primary` for the plain primary, like Material and shadcn.",
3319
+ "$extensions": {
3320
+ "opui": {
3321
+ "cssVar": "--ui-choice-accent",
3322
+ "example": "var(--ui-primary)",
3323
+ "optional": true,
3324
+ "tier": "hook"
3325
+ }
3326
+ },
3327
+ "$type": "color"
3328
+ },
3329
+ "ui-choice-on-accent": {
3330
+ "$description": "Color of the mark on a checked `Checkbox`, `Radio` and `Switch`. Set it with `--ui-choice-accent`. When unset, `--ui-on-control-accent`, else `--ui-on-primary` in light mode and near-white in dark mode.",
3331
+ "$extensions": {
3332
+ "opui": {
3333
+ "cssVar": "--ui-choice-on-accent",
3334
+ "example": "var(--ui-on-primary)",
3335
+ "optional": true,
3336
+ "tier": "component"
3337
+ }
3338
+ },
3339
+ "$type": "color"
3340
+ },
3341
+ "ui-choice-border-color": {
3342
+ "$description": "Border of the unchecked `Checkbox`, `Radio` and `Switch` track. When unset, `--ui-field-border-color`. Set it for themes whose field border is fainter than 3:1, like shadcn, which outlines its choices with `--ui-primary` like shadcn/ui does.",
3343
+ "$extensions": {
3344
+ "opui": {
3345
+ "cssVar": "--ui-choice-border-color",
3346
+ "example": "var(--ui-field-border-color)",
3347
+ "optional": true,
3348
+ "promise": {
3349
+ "against": [
3350
+ "--ui-surface"
3351
+ ],
3352
+ "fallback": "--ui-field-border-color",
3353
+ "ratio": 3
3354
+ },
3355
+ "tier": "component"
3356
+ }
3357
+ },
3358
+ "$type": "color"
3359
+ },
3360
+ "ui-choice-fill-max-lightness": {
3361
+ "$description": "The highest OKLCH lightness of a checked `Checkbox`, `Radio` and `Switch` fill in dark mode, so the light mark keeps 3:1. `0.62`.",
3362
+ "$extensions": {
3363
+ "opui": {
3364
+ "css": "0.62",
3365
+ "cssVar": "--ui-choice-fill-max-lightness",
3366
+ "tier": "knob"
3367
+ }
3368
+ },
3369
+ "$type": "number",
3370
+ "$value": 0.62
3371
+ },
3372
+ "ui-choice-label-offset": {
3373
+ "$description": "Moves `Checkbox`, `Radio` and `Switch` labels down (positive) or up (negative) against their control. Use `em` or `cap` to scale with the label font.",
3374
+ "$extensions": {
3375
+ "opui": {
3376
+ "css": "0px",
3377
+ "cssVar": "--ui-choice-label-offset",
3378
+ "tier": "component"
3379
+ }
3380
+ },
3381
+ "$type": "dimension",
3382
+ "$value": {
3383
+ "unit": "px",
3384
+ "value": 0
3385
+ }
3386
+ },
3387
+ "ui-choice-ripple-bg-color": {
3388
+ "$description": "Halo color for the `Checkbox` and `Radio` hover effect. `--ui-text` at 20%.",
3389
+ "$extensions": {
3390
+ "opui": {
3391
+ "cssVar": "--ui-choice-ripple-bg-color",
3392
+ "tier": "component"
3393
+ }
3394
+ },
3395
+ "$type": "color",
3396
+ "$value": "oklch(from var(--ui-text) l c h / 20%)"
3397
+ },
3398
+ "ui-choice-size-x-small": {
3399
+ "$description": "`Checkbox` and `Radio` input size with `.ui-x-small`.",
3400
+ "$extensions": {
3401
+ "opui": {
3402
+ "cssVar": "--ui-choice-size-x-small",
3403
+ "tier": "component"
3404
+ }
3405
+ },
3406
+ "$type": "dimension",
3407
+ "$value": "calc(0.875rem * var(--ui-density))"
3408
+ },
3409
+ "ui-choice-size-small": {
3410
+ "$description": "`Checkbox` and `Radio` input size with `.ui-small`, and in dense `List` rows unless the control has a size class.",
3411
+ "$extensions": {
3412
+ "opui": {
3413
+ "cssVar": "--ui-choice-size-small",
3414
+ "tier": "component"
3415
+ }
3416
+ },
3417
+ "$type": "dimension",
3418
+ "$value": "calc(1rem * var(--ui-density))"
3419
+ },
3420
+ "ui-choice-size": {
3421
+ "$description": "Default `Checkbox` and `Radio` input size.",
3422
+ "$extensions": {
3423
+ "opui": {
3424
+ "cssVar": "--ui-choice-size",
3425
+ "tier": "component"
3426
+ }
3427
+ },
3428
+ "$type": "dimension",
3429
+ "$value": "calc(1.25rem * var(--ui-density))"
3430
+ },
3431
+ "ui-choice-size-large": {
3432
+ "$description": "`Checkbox` and `Radio` input size with `.ui-large`.",
3433
+ "$extensions": {
3434
+ "opui": {
3435
+ "cssVar": "--ui-choice-size-large",
3436
+ "tier": "component"
3437
+ }
3438
+ },
3439
+ "$type": "dimension",
3440
+ "$value": "calc(1.5rem * var(--ui-density))"
3441
+ },
3442
+ "ui-switch-thumb-size-x-small": {
3443
+ "$description": "Diameter of the `Switch` thumb with `.ui-x-small`.",
3444
+ "$extensions": {
3445
+ "opui": {
3446
+ "cssVar": "--ui-switch-thumb-size-x-small",
3447
+ "tier": "component"
3448
+ }
3449
+ },
3450
+ "$type": "dimension",
3451
+ "$value": "calc(0.625rem * var(--ui-density))"
3452
+ },
3453
+ "ui-switch-thumb-size-small": {
3454
+ "$description": "Diameter of the `Switch` thumb with `.ui-small`, and in `List` rows unless the switch has a size class.",
3455
+ "$extensions": {
3456
+ "opui": {
3457
+ "cssVar": "--ui-switch-thumb-size-small",
3458
+ "tier": "component"
3459
+ }
3460
+ },
3461
+ "$type": "dimension",
3462
+ "$value": "calc(0.75rem * var(--ui-density))"
3463
+ },
3464
+ "ui-switch-thumb-size": {
3465
+ "$description": "Diameter of the `Switch` thumb.",
3466
+ "$extensions": {
3467
+ "opui": {
3468
+ "cssVar": "--ui-switch-thumb-size",
3469
+ "tier": "component"
3470
+ }
3471
+ },
3472
+ "$type": "dimension",
3473
+ "$value": "calc(1rem * var(--ui-density))"
3474
+ },
3475
+ "ui-switch-thumb-size-large": {
3476
+ "$description": "Diameter of the `Switch` thumb with `.ui-large`.",
3477
+ "$extensions": {
3478
+ "opui": {
3479
+ "cssVar": "--ui-switch-thumb-size-large",
3480
+ "tier": "component"
3481
+ }
3482
+ },
3483
+ "$type": "dimension",
3484
+ "$value": "calc(1.25rem * var(--ui-density))"
3485
+ },
3486
+ "ui-switch-track-block-size-x-small": {
3487
+ "$description": "Height of the `Switch` track with `.ui-x-small`.",
3488
+ "$extensions": {
3489
+ "opui": {
3490
+ "cssVar": "--ui-switch-track-block-size-x-small",
3491
+ "tier": "component"
3492
+ }
3493
+ },
3494
+ "$type": "dimension",
3495
+ "$value": "calc(1rem * var(--ui-density))"
3496
+ },
3497
+ "ui-switch-track-block-size-small": {
3498
+ "$description": "Height of the `Switch` track with `.ui-small`, and in `List` rows unless the switch has a size class.",
3499
+ "$extensions": {
3500
+ "opui": {
3501
+ "cssVar": "--ui-switch-track-block-size-small",
3502
+ "tier": "component"
3503
+ }
3504
+ },
3505
+ "$type": "dimension",
3506
+ "$value": "calc(1.25rem * var(--ui-density))"
3507
+ },
3508
+ "ui-switch-track-block-size": {
3509
+ "$description": "Height of the `Switch` track.",
3510
+ "$extensions": {
3511
+ "opui": {
3512
+ "cssVar": "--ui-switch-track-block-size",
3513
+ "tier": "component"
3514
+ }
3515
+ },
3516
+ "$type": "dimension",
3517
+ "$value": "calc(1.5rem * var(--ui-density))"
3518
+ },
3519
+ "ui-switch-track-block-size-large": {
3520
+ "$description": "Height of the `Switch` track with `.ui-large`.",
3521
+ "$extensions": {
3522
+ "opui": {
3523
+ "cssVar": "--ui-switch-track-block-size-large",
3524
+ "tier": "component"
3525
+ }
3526
+ },
3527
+ "$type": "dimension",
3528
+ "$value": "calc(1.75rem * var(--ui-density))"
3529
+ },
3530
+ "ui-switch-track-inline-size-x-small": {
3531
+ "$description": "Width of the `Switch` track with `.ui-x-small`. Twice `--ui-switch-track-block-size-x-small` until a theme sets it.",
3532
+ "$extensions": {
3533
+ "opui": {
3534
+ "cssVar": "--ui-switch-track-inline-size-x-small",
3535
+ "tier": "component"
3536
+ }
3537
+ },
3538
+ "$type": "dimension",
3539
+ "$value": "calc( 2 * var(--ui-switch-track-block-size-x-small) )"
3540
+ },
3541
+ "ui-switch-track-inline-size-small": {
3542
+ "$description": "Width of the `Switch` track with `.ui-small`, and in `List` rows unless the switch has a size class. Twice `--ui-switch-track-block-size-small` until a theme sets it.",
3543
+ "$extensions": {
3544
+ "opui": {
3545
+ "cssVar": "--ui-switch-track-inline-size-small",
3546
+ "tier": "component"
3547
+ }
3548
+ },
3549
+ "$type": "dimension",
3550
+ "$value": "calc( 2 * var(--ui-switch-track-block-size-small) )"
3551
+ },
3552
+ "ui-switch-track-inline-size": {
3553
+ "$description": "Width of the `Switch` track. Twice `--ui-switch-track-block-size` until a theme sets it.",
3554
+ "$extensions": {
3555
+ "opui": {
3556
+ "cssVar": "--ui-switch-track-inline-size",
3557
+ "tier": "component"
3558
+ }
3559
+ },
3560
+ "$type": "dimension",
3561
+ "$value": "calc(2 * var(--ui-switch-track-block-size))"
3562
+ },
3563
+ "ui-switch-track-inline-size-large": {
3564
+ "$description": "Width of the `Switch` track with `.ui-large`. Twice `--ui-switch-track-block-size-large` until a theme sets it.",
3565
+ "$extensions": {
3566
+ "opui": {
3567
+ "cssVar": "--ui-switch-track-inline-size-large",
3568
+ "tier": "component"
3569
+ }
3570
+ },
3571
+ "$type": "dimension",
3572
+ "$value": "calc( 2 * var(--ui-switch-track-block-size-large) )"
3573
+ },
3574
+ "ui-switch-thumb-bg-color": {
3575
+ "$description": "Color of the unchecked `Switch` thumb. The checked thumb uses `--ui-choice-on-accent`.",
3576
+ "$extensions": {
3577
+ "opui": {
3578
+ "cssVar": "--ui-switch-thumb-bg-color",
3579
+ "tier": "component"
3580
+ }
3581
+ },
3582
+ "$type": "color",
3583
+ "$value": "light-dark( var(--ui-gray-11), var(--ui-gray-14) )"
3584
+ },
3585
+ "ui-switch-track-bg-color": {
3586
+ "$description": "Background of the unchecked `Switch` track when `--ui-track-bg-color` is unset.",
3587
+ "$extensions": {
3588
+ "opui": {
3589
+ "cssVar": "--ui-switch-track-bg-color",
3590
+ "tier": "component"
3591
+ }
3592
+ },
3593
+ "$type": "color",
3594
+ "$value": "light-dark(var(--ui-gray-3), var(--ui-gray-8))"
3595
+ }
3596
+ },
3597
+ "elevation": {
3598
+ "ui-shadow-control": {
3599
+ "$description": "Shadow of buttons with a variant, standalone `ToggleButton`, outlined `Chip` and fields. `none` by default, for themes that lift controls off the page.",
3600
+ "$extensions": {
3601
+ "opui": {
3602
+ "cssVar": "--ui-shadow-control",
3603
+ "tier": "role"
3604
+ }
3605
+ },
3606
+ "$type": "shadow",
3607
+ "$value": "none"
3608
+ },
3609
+ "ui-shadow-field": {
3610
+ "$description": "Shadow of `TextField`, `Textarea` and `Select` fields. When unset, they follow `--ui-shadow-control`. Set it to `none` to lift buttons but keep fields flat.",
3611
+ "$extensions": {
3612
+ "opui": {
3613
+ "cssVar": "--ui-shadow-field",
3614
+ "example": "var(--ui-shadow-control)",
3615
+ "optional": true,
3616
+ "tier": "role"
3617
+ }
3618
+ },
3619
+ "$type": "shadow"
3620
+ },
3621
+ "ui-shadow-surface": {
3622
+ "$description": "Shadow of tonal and outlined `Card` and `Accordion`, and of `Callout`. `none` by default, for themes that put every surface on the same plane.",
3623
+ "$extensions": {
3624
+ "opui": {
3625
+ "cssVar": "--ui-shadow-surface",
3626
+ "tier": "role"
3627
+ }
3628
+ },
3629
+ "$type": "shadow",
3630
+ "$value": "none"
3631
+ },
3632
+ "ui-shadow-color": {
3633
+ "$description": "Color of every shadow, with its base opacity. Each layer of `--ui-shadow-elevated`, `--ui-shadow-overlay`, `--ui-shadow-scroll` and `--ui-shadow-selected` adds its own opacity on top, with relative color. `oklch(0.268 0.003 265 / 1%)` in light mode and `oklch(0.11 0.01 259 / 20%)` in dark mode, also in `.ui-light` and `.ui-dark` parts of the page.",
3634
+ "$extensions": {
3635
+ "opui": {
3636
+ "cssVar": "--ui-shadow-color",
3637
+ "tier": "knob"
3638
+ }
3639
+ },
3640
+ "$type": "color",
3641
+ "$value": "light-dark( oklch(0.268 0.003 265 / 1%), oklch(0.11 0.01 259 / 20%) )"
3642
+ },
3643
+ "ui-shadow-elevated": {
3644
+ "$description": "Shadow of elevated `Card` and `Accordion`. Five layers of `--ui-shadow-color`, which follows the color scheme, also in `.ui-light` and `.ui-dark` parts of the page.",
3645
+ "$extensions": {
3646
+ "opui": {
3647
+ "cssVar": "--ui-shadow-elevated",
3648
+ "tier": "role"
3649
+ }
3650
+ },
3651
+ "$type": "shadow",
3652
+ "$value": "0 -1px 3px 0 oklch(from var(--ui-shadow-color) l c h / calc(alpha + 0.02)), 0 1px 2px -5px oklch(from var(--ui-shadow-color) l c h / calc(alpha + 0.02)), 0 2px 5px -5px oklch(from var(--ui-shadow-color) l c h / calc(alpha + 0.04)), 0 4px 12px -5px oklch(from var(--ui-shadow-color) l c h / calc(alpha + 0.05)), 0 12px 15px -5px oklch(from var(--ui-shadow-color) l c h / calc(alpha + 0.07))"
3653
+ },
3654
+ "ui-shadow-overlay": {
3655
+ "$description": "Shadow of layers that float above the page: `Dialog`, `Drawer`, `Menu`, `Select` pickers and the `Carousel` buttons. Five layers of `--ui-shadow-color`.",
3656
+ "$extensions": {
3657
+ "opui": {
3658
+ "cssVar": "--ui-shadow-overlay",
3659
+ "tier": "role"
3660
+ }
3661
+ },
3662
+ "$type": "shadow",
3663
+ "$value": "0 -1px 3px 0 oklch(from var(--ui-shadow-color) l c h / calc(alpha + 0.02)), 0 1px 2px -5px oklch(from var(--ui-shadow-color) l c h / calc(alpha + 0.02)), 0 2px 5px -5px oklch(from var(--ui-shadow-color) l c h / calc(alpha + 0.04)), 0 4px 12px -5px oklch(from var(--ui-shadow-color) l c h / calc(alpha + 0.05)), 0 12px 15px -5px oklch(from var(--ui-shadow-color) l c h / calc(alpha + 0.07))"
3664
+ },
3665
+ "ui-shadow-scroll": {
3666
+ "$description": "Shadow under the header and above the footer of a scrolled `Dialog` or `Drawer`, and under a sticky `Table` header. Six layers of `--ui-shadow-color`.",
3667
+ "$extensions": {
3668
+ "opui": {
3669
+ "cssVar": "--ui-shadow-scroll",
3670
+ "tier": "role"
3671
+ }
3672
+ },
3673
+ "$type": "shadow",
3674
+ "$value": "0 -2px 5px 0 oklch(from var(--ui-shadow-color) l c h / calc(alpha + 0.02)), 0 1px 1px -2px oklch(from var(--ui-shadow-color) l c h / calc(alpha + 0.03)), 0 2px 2px -2px oklch(from var(--ui-shadow-color) l c h / calc(alpha + 0.03)), 0 5px 5px -2px oklch(from var(--ui-shadow-color) l c h / calc(alpha + 0.04)), 0 9px 9px -2px oklch(from var(--ui-shadow-color) l c h / calc(alpha + 0.05)), 0 16px 16px -2px oklch(from var(--ui-shadow-color) l c h / calc(alpha + 0.06))"
3675
+ },
3676
+ "ui-shadow-selected": {
3677
+ "$description": "Shadow of the selected tab in default and `.ui-filled` `Tabs`. `.ui-line` and `.ui-outlined` have none. One layer of `--ui-shadow-color`.",
3678
+ "$extensions": {
3679
+ "opui": {
3680
+ "cssVar": "--ui-shadow-selected",
3681
+ "tier": "role"
3682
+ }
3683
+ },
3684
+ "$type": "shadow",
3685
+ "$value": "0 1px 2px -1px oklch(from var(--ui-shadow-color) l c h / calc(alpha + 0.09))"
3686
+ }
3687
+ },
3688
+ "overlays": {
3689
+ "ui-backdrop-blur": {
3690
+ "$description": "Blur radius behind an open `Dialog` or `Drawer`.",
3691
+ "$extensions": {
3692
+ "opui": {
3693
+ "css": "1px",
3694
+ "cssVar": "--ui-backdrop-blur",
3695
+ "tier": "role"
3696
+ }
3697
+ },
3698
+ "$type": "dimension",
3699
+ "$value": {
3700
+ "unit": "px",
3701
+ "value": 1
3702
+ }
3703
+ },
3704
+ "ui-backdrop-bg-color": {
3705
+ "$description": "Overlay color behind an open `Dialog` or `Drawer`. `--ui-text` at 50% in light mode, and half the lightness of `--ui-surface` at 50% in dark mode.",
3706
+ "$extensions": {
3707
+ "opui": {
3708
+ "cssVar": "--ui-backdrop-bg-color",
3709
+ "tier": "role"
3710
+ }
3711
+ },
3712
+ "$type": "color",
3713
+ "$value": "light-dark( oklch(from var(--ui-text) l c h / 50%), oklch(from var(--ui-surface) calc(l / 2) c h / 50%) )"
3714
+ }
3715
+ },
3716
+ "instance-inputs": {
3717
+ "ui-anchor-position-area": {
3718
+ "$description": "The `position-area` of the floating content of an `Anchor`, a popover `Menu` or a `Tooltip`. The `positionArea` prop sets it on one instance, or set it on an element for everything inside it. When unset, each keeps its own: `self-start self-end` for `Anchor`, its `side` and `span` for `Menu` (`self-block-end span-self-inline-end`) and `self-block-start` for `Tooltip`.",
3719
+ "$extensions": {
3720
+ "opui": {
3721
+ "cssVar": "--ui-anchor-position-area",
3722
+ "example": "self-block-end",
3723
+ "optional": true,
3724
+ "tier": "input"
3725
+ }
3726
+ }
3727
+ }
3728
+ }
3729
+ }