opui-css 5.4.2 → 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 (718) hide show
  1. package/CHANGELOG.md +648 -0
  2. package/MIGRATING-legacy.md +159 -0
  3. package/MIGRATING.md +1293 -69
  4. package/README.md +177 -26
  5. package/astro/index.ts +142 -13
  6. package/bin/opui-css.mjs +68 -0
  7. package/components/Accordion/Accordion.astro +6 -33
  8. package/components/Accordion/Accordion.react.tsx +23 -0
  9. package/components/Accordion/Accordion.svelte +27 -0
  10. package/components/Accordion/Accordion.vue +11 -28
  11. package/components/Accordion/AccordionActions.astro +16 -0
  12. package/components/Accordion/AccordionActions.react.tsx +15 -0
  13. package/components/Accordion/AccordionActions.svelte +23 -0
  14. package/components/Accordion/AccordionActions.vue +18 -0
  15. package/components/Accordion/AccordionContent.astro +9 -0
  16. package/components/Accordion/AccordionContent.react.tsx +6 -0
  17. package/components/Accordion/AccordionContent.svelte +15 -0
  18. package/components/Accordion/AccordionContent.vue +12 -0
  19. package/components/Accordion/AccordionSummary.astro +19 -0
  20. package/components/Accordion/AccordionSummary.react.tsx +30 -0
  21. package/components/Accordion/AccordionSummary.svelte +24 -0
  22. package/components/Accordion/AccordionSummary.vue +27 -0
  23. package/components/Accordion/icons.ts +2 -0
  24. package/components/Accordion/types.astro.ts +9 -0
  25. package/components/Accordion/types.react.ts +14 -0
  26. package/components/Accordion/types.svelte.ts +10 -2
  27. package/components/Accordion/types.ts +11 -5
  28. package/components/Accordion/types.vue-props.ts +22 -0
  29. package/components/Anchor/Anchor.astro +21 -33
  30. package/components/Anchor/Anchor.react.tsx +38 -0
  31. package/components/Anchor/Anchor.svelte +47 -0
  32. package/components/Anchor/Anchor.vue +32 -30
  33. package/components/Anchor/AnchorContent.astro +17 -0
  34. package/components/Anchor/AnchorContent.react.tsx +18 -0
  35. package/components/Anchor/AnchorContent.svelte +23 -0
  36. package/components/Anchor/AnchorContent.vue +20 -0
  37. package/components/Anchor/context.astro.ts +4 -0
  38. package/components/Anchor/context.react.ts +8 -0
  39. package/components/Anchor/context.svelte.ts +7 -0
  40. package/components/Anchor/context.vue.ts +4 -0
  41. package/components/Anchor/root.ts +12 -0
  42. package/components/Anchor/types.astro.ts +3 -0
  43. package/components/Anchor/types.react.ts +7 -0
  44. package/components/Anchor/types.svelte.ts +3 -3
  45. package/components/Anchor/types.ts +15 -6
  46. package/components/Anchor/types.vue-props.ts +15 -0
  47. package/components/Avatar/Avatar.astro +12 -8
  48. package/components/Avatar/Avatar.react.tsx +34 -0
  49. package/components/Avatar/Avatar.svelte +39 -0
  50. package/components/Avatar/Avatar.vue +10 -8
  51. package/components/Avatar/AvatarGroup.astro +9 -0
  52. package/components/Avatar/AvatarGroup.react.tsx +12 -0
  53. package/components/Avatar/AvatarGroup.svelte +15 -0
  54. package/components/Avatar/AvatarGroup.vue +12 -0
  55. package/components/Avatar/types.astro.ts +3 -2
  56. package/components/Avatar/types.react.ts +11 -0
  57. package/components/Avatar/types.svelte.ts +3 -4
  58. package/components/Avatar/types.ts +18 -15
  59. package/components/Avatar/types.vue-props.ts +11 -0
  60. package/components/Badge/Badge.astro +27 -22
  61. package/components/Badge/Badge.react.tsx +50 -0
  62. package/components/Badge/Badge.svelte +48 -0
  63. package/components/Badge/Badge.vue +15 -19
  64. package/components/Badge/types.react.ts +6 -0
  65. package/components/Badge/types.svelte.ts +4 -1
  66. package/components/Badge/types.ts +3 -3
  67. package/components/Badge/types.vue-props.ts +7 -0
  68. package/components/Button/Button.astro +12 -12
  69. package/components/Button/Button.react.tsx +33 -0
  70. package/components/Button/Button.svelte +37 -0
  71. package/components/Button/Button.vue +9 -9
  72. package/components/Button/types.astro.ts +2 -2
  73. package/components/Button/types.react.ts +11 -0
  74. package/components/Button/types.svelte.ts +11 -2
  75. package/components/Button/types.ts +20 -4
  76. package/components/Button/types.vue-props.ts +6 -0
  77. package/components/ButtonGroup/ButtonGroup.astro +7 -3
  78. package/components/ButtonGroup/ButtonGroup.react.tsx +30 -0
  79. package/components/ButtonGroup/ButtonGroup.svelte +34 -0
  80. package/components/ButtonGroup/ButtonGroup.vue +10 -7
  81. package/components/ButtonGroup/types.react.ts +4 -0
  82. package/components/ButtonGroup/types.ts +4 -4
  83. package/components/ButtonGroup/types.vue-props.ts +6 -0
  84. package/components/Callout/Callout.astro +7 -59
  85. package/components/Callout/Callout.react.tsx +26 -0
  86. package/components/Callout/Callout.svelte +32 -0
  87. package/components/Callout/Callout.vue +8 -48
  88. package/components/Callout/CalloutContent.astro +9 -0
  89. package/components/Callout/CalloutContent.react.tsx +6 -0
  90. package/components/Callout/CalloutContent.svelte +15 -0
  91. package/components/Callout/CalloutContent.vue +12 -0
  92. package/components/Callout/CalloutIcon.astro +25 -0
  93. package/components/Callout/CalloutIcon.react.tsx +26 -0
  94. package/components/Callout/CalloutIcon.svelte +24 -0
  95. package/components/Callout/CalloutIcon.vue +25 -0
  96. package/components/Callout/context.astro.ts +4 -0
  97. package/components/Callout/context.react.ts +8 -0
  98. package/components/Callout/context.svelte.ts +7 -0
  99. package/components/Callout/context.vue.ts +4 -0
  100. package/components/Callout/icons.ts +23 -0
  101. package/components/Callout/types.astro.ts +5 -0
  102. package/components/Callout/types.react.ts +9 -0
  103. package/components/Callout/types.svelte.ts +5 -3
  104. package/components/Callout/types.ts +5 -5
  105. package/components/Callout/types.vue-props.ts +14 -0
  106. package/components/Card/Card.astro +9 -25
  107. package/components/Card/Card.react.tsx +15 -0
  108. package/components/Card/Card.svelte +23 -0
  109. package/components/Card/Card.vue +10 -20
  110. package/components/Card/CardActions.astro +16 -0
  111. package/components/Card/CardActions.react.tsx +15 -0
  112. package/components/Card/CardActions.svelte +23 -0
  113. package/components/Card/CardActions.vue +18 -0
  114. package/components/Card/CardContent.astro +9 -0
  115. package/components/Card/CardContent.react.tsx +6 -0
  116. package/components/Card/CardContent.svelte +15 -0
  117. package/components/Card/CardContent.vue +12 -0
  118. package/components/Card/CardHeader.astro +9 -0
  119. package/components/Card/CardHeader.react.tsx +6 -0
  120. package/components/Card/CardHeader.svelte +15 -0
  121. package/components/Card/CardHeader.vue +12 -0
  122. package/components/Card/types.astro.ts +6 -0
  123. package/components/Card/types.react.ts +10 -0
  124. package/components/Card/types.svelte.ts +7 -3
  125. package/components/Card/types.ts +7 -7
  126. package/components/Card/types.vue-props.ts +17 -0
  127. package/components/Carousel/Carousel.astro +44 -0
  128. package/components/Carousel/Carousel.react.tsx +47 -0
  129. package/components/Carousel/Carousel.svelte +45 -0
  130. package/components/Carousel/Carousel.vue +44 -0
  131. package/components/Carousel/types.astro.ts +4 -0
  132. package/components/Carousel/types.react.ts +4 -0
  133. package/components/Carousel/types.svelte.ts +4 -0
  134. package/components/Carousel/types.ts +11 -0
  135. package/components/Carousel/types.vue-props.ts +6 -0
  136. package/components/Checkbox/Checkbox.astro +27 -15
  137. package/components/Checkbox/Checkbox.react.tsx +51 -0
  138. package/components/Checkbox/Checkbox.svelte +61 -0
  139. package/components/Checkbox/Checkbox.vue +39 -18
  140. package/components/Checkbox/CheckboxInput.astro +6 -2
  141. package/components/Checkbox/CheckboxInput.react.tsx +39 -0
  142. package/components/Checkbox/CheckboxInput.svelte +34 -0
  143. package/components/Checkbox/CheckboxInput.vue +29 -11
  144. package/components/Checkbox/types.astro.ts +2 -3
  145. package/components/Checkbox/types.react.ts +11 -0
  146. package/components/Checkbox/types.svelte.ts +8 -4
  147. package/components/Checkbox/types.ts +8 -4
  148. package/components/Checkbox/types.vue-props.ts +15 -0
  149. package/components/Chip/Chip.astro +22 -6
  150. package/components/Chip/Chip.react.tsx +45 -0
  151. package/components/Chip/Chip.svelte +45 -0
  152. package/components/Chip/Chip.vue +16 -9
  153. package/components/Chip/types.astro.ts +1 -1
  154. package/components/Chip/types.react.ts +15 -0
  155. package/components/Chip/types.svelte.ts +6 -4
  156. package/components/Chip/types.ts +22 -5
  157. package/components/Chip/types.vue-props.ts +11 -0
  158. package/components/DescriptionList/DescriptionList.astro +6 -2
  159. package/components/DescriptionList/DescriptionList.react.tsx +25 -0
  160. package/components/DescriptionList/DescriptionList.svelte +29 -0
  161. package/components/DescriptionList/DescriptionList.vue +7 -8
  162. package/components/DescriptionList/DescriptionListDescription.astro +9 -0
  163. package/components/DescriptionList/DescriptionListDescription.react.tsx +9 -0
  164. package/components/DescriptionList/DescriptionListDescription.svelte +15 -0
  165. package/components/DescriptionList/DescriptionListDescription.vue +15 -0
  166. package/components/DescriptionList/DescriptionListItem.astro +9 -0
  167. package/components/DescriptionList/DescriptionListItem.react.tsx +6 -0
  168. package/components/DescriptionList/DescriptionListItem.svelte +15 -0
  169. package/components/DescriptionList/{Item.vue → DescriptionListItem.vue} +5 -2
  170. package/components/DescriptionList/DescriptionListTerm.astro +9 -0
  171. package/components/DescriptionList/DescriptionListTerm.react.tsx +6 -0
  172. package/components/DescriptionList/DescriptionListTerm.svelte +15 -0
  173. package/components/DescriptionList/{Term.vue → DescriptionListTerm.vue} +5 -2
  174. package/components/DescriptionList/types.astro.ts +3 -3
  175. package/components/DescriptionList/types.react.ts +10 -0
  176. package/components/DescriptionList/types.svelte.ts +6 -0
  177. package/components/DescriptionList/types.ts +3 -1
  178. package/components/DescriptionList/types.vue-props.ts +12 -0
  179. package/components/Dialog/Dialog.astro +12 -26
  180. package/components/Dialog/Dialog.react.tsx +23 -0
  181. package/components/Dialog/Dialog.svelte +33 -0
  182. package/components/Dialog/Dialog.vue +13 -23
  183. package/components/Dialog/DialogContent.astro +9 -0
  184. package/components/Dialog/DialogContent.react.tsx +6 -0
  185. package/components/Dialog/DialogContent.svelte +15 -0
  186. package/components/Dialog/DialogContent.vue +12 -0
  187. package/components/Dialog/DialogFooter.astro +16 -0
  188. package/components/Dialog/DialogFooter.react.tsx +15 -0
  189. package/components/Dialog/DialogFooter.svelte +23 -0
  190. package/components/Dialog/DialogFooter.vue +18 -0
  191. package/components/Dialog/DialogHeader.astro +9 -0
  192. package/components/Dialog/DialogHeader.react.tsx +6 -0
  193. package/components/Dialog/DialogHeader.svelte +15 -0
  194. package/components/Dialog/DialogHeader.vue +12 -0
  195. package/components/Dialog/DialogTitle.astro +14 -0
  196. package/components/Dialog/DialogTitle.react.tsx +13 -0
  197. package/components/Dialog/DialogTitle.svelte +23 -0
  198. package/components/Dialog/DialogTitle.vue +18 -0
  199. package/components/Dialog/context.astro.ts +4 -0
  200. package/components/Dialog/context.react.ts +8 -0
  201. package/components/Dialog/context.svelte.ts +7 -0
  202. package/components/Dialog/context.vue.ts +4 -0
  203. package/components/Dialog/types.astro.ts +8 -0
  204. package/components/Dialog/types.react.ts +12 -0
  205. package/components/Dialog/types.svelte.ts +11 -3
  206. package/components/Dialog/types.ts +13 -6
  207. package/components/Dialog/types.vue-props.ts +24 -0
  208. package/components/Divider/Divider.astro +29 -7
  209. package/components/Divider/Divider.react.tsx +36 -0
  210. package/components/Divider/Divider.svelte +40 -0
  211. package/components/Divider/Divider.vue +22 -4
  212. package/components/Divider/types.react.ts +4 -0
  213. package/components/Divider/types.ts +3 -1
  214. package/components/Divider/types.vue-props.ts +6 -0
  215. package/components/Drawer/Drawer.astro +13 -18
  216. package/components/Drawer/Drawer.react.tsx +40 -0
  217. package/components/Drawer/Drawer.svelte +50 -0
  218. package/components/Drawer/Drawer.vue +14 -19
  219. package/components/Drawer/DrawerContent.astro +9 -0
  220. package/components/Drawer/DrawerContent.react.tsx +6 -0
  221. package/components/Drawer/DrawerContent.svelte +15 -0
  222. package/components/Drawer/DrawerContent.vue +12 -0
  223. package/components/Drawer/DrawerFooter.astro +9 -4
  224. package/components/Drawer/DrawerFooter.react.tsx +15 -0
  225. package/components/Drawer/DrawerFooter.svelte +23 -0
  226. package/components/Drawer/DrawerFooter.vue +10 -8
  227. package/components/Drawer/DrawerHeader.astro +18 -10
  228. package/components/Drawer/DrawerHeader.react.tsx +41 -0
  229. package/components/Drawer/DrawerHeader.svelte +42 -0
  230. package/components/Drawer/DrawerHeader.vue +18 -19
  231. package/components/Drawer/DrawerTitle.astro +14 -0
  232. package/components/Drawer/DrawerTitle.react.tsx +13 -0
  233. package/components/Drawer/DrawerTitle.svelte +23 -0
  234. package/components/Drawer/DrawerTitle.vue +18 -0
  235. package/components/Drawer/context.astro.ts +4 -0
  236. package/components/Drawer/context.react.ts +8 -0
  237. package/components/Drawer/context.svelte.ts +7 -0
  238. package/components/Drawer/context.vue.ts +4 -0
  239. package/components/Drawer/icons.ts +2 -0
  240. package/components/Drawer/types.astro.ts +5 -1
  241. package/components/Drawer/types.react.ts +13 -0
  242. package/components/Drawer/types.svelte.ts +6 -5
  243. package/components/Drawer/types.ts +15 -10
  244. package/components/Drawer/types.vue-props.ts +24 -0
  245. package/components/FieldDescription/FieldDescription.astro +1 -1
  246. package/components/FieldDescription/FieldDescription.react.tsx +6 -0
  247. package/components/FieldDescription/FieldDescription.svelte +15 -0
  248. package/components/FieldDescription/FieldDescription.vue +3 -3
  249. package/components/FieldDescription/types.react.ts +4 -0
  250. package/components/FieldDescription/types.vue-props.ts +6 -0
  251. package/components/FieldGroup/FieldGroup.astro +15 -15
  252. package/components/FieldGroup/FieldGroup.react.tsx +27 -0
  253. package/components/FieldGroup/FieldGroup.svelte +32 -0
  254. package/components/FieldGroup/FieldGroup.vue +8 -10
  255. package/components/FieldGroup/context.astro.ts +4 -0
  256. package/components/FieldGroup/context.react.ts +8 -0
  257. package/components/FieldGroup/context.svelte.ts +8 -0
  258. package/components/FieldGroup/context.vue.ts +4 -0
  259. package/components/FieldGroup/types.react.ts +4 -0
  260. package/components/FieldGroup/types.ts +3 -1
  261. package/components/FieldGroup/types.vue-props.ts +6 -0
  262. package/components/FieldLegend/FieldLegend.react.tsx +14 -0
  263. package/components/FieldLegend/FieldLegend.svelte +20 -0
  264. package/components/FieldLegend/FieldLegend.vue +8 -6
  265. package/components/FieldLegend/types.react.ts +6 -0
  266. package/components/FieldLegend/types.svelte.ts +3 -3
  267. package/components/FieldLegend/types.vue-props.ts +9 -0
  268. package/components/{FieldSet/FieldSet.astro → Fieldset/Fieldset.astro} +6 -2
  269. package/components/Fieldset/Fieldset.react.tsx +15 -0
  270. package/components/Fieldset/Fieldset.svelte +21 -0
  271. package/components/Fieldset/Fieldset.vue +21 -0
  272. package/components/Fieldset/types.react.ts +6 -0
  273. package/components/Fieldset/types.svelte.ts +6 -0
  274. package/components/Fieldset/types.ts +1 -0
  275. package/components/Fieldset/types.vue-props.ts +9 -0
  276. package/components/Form/Form.react.tsx +9 -0
  277. package/components/Form/Form.svelte +16 -0
  278. package/components/Form/Form.vue +7 -5
  279. package/components/Form/types.react.ts +6 -0
  280. package/components/Form/types.svelte.ts +3 -4
  281. package/components/Form/types.vue-props.ts +9 -0
  282. package/components/List/List.astro +3 -3
  283. package/components/List/List.react.tsx +27 -0
  284. package/components/List/List.svelte +31 -0
  285. package/components/List/List.vue +4 -9
  286. package/components/List/types.react.ts +4 -0
  287. package/components/List/types.ts +2 -3
  288. package/components/List/types.vue-props.ts +6 -0
  289. package/components/ListItem/ListItem.astro +46 -39
  290. package/components/ListItem/ListItem.react.tsx +65 -0
  291. package/components/ListItem/ListItem.svelte +80 -0
  292. package/components/ListItem/ListItem.vue +41 -46
  293. package/components/ListItem/types.astro.ts +2 -3
  294. package/components/ListItem/types.react.ts +17 -0
  295. package/components/ListItem/types.svelte.ts +7 -4
  296. package/components/ListItem/types.ts +14 -11
  297. package/components/ListItem/types.vue-props.ts +14 -0
  298. package/components/Menu/Menu.astro +86 -0
  299. package/components/Menu/Menu.react.tsx +87 -0
  300. package/components/Menu/Menu.svelte +71 -0
  301. package/components/Menu/Menu.vue +76 -0
  302. package/components/Menu/context.astro.ts +4 -0
  303. package/components/Menu/context.react.ts +8 -0
  304. package/components/Menu/context.svelte.ts +7 -0
  305. package/components/Menu/context.vue.ts +4 -0
  306. package/components/Menu/types.astro.ts +12 -0
  307. package/components/Menu/types.react.ts +12 -0
  308. package/components/Menu/types.svelte.ts +12 -0
  309. package/components/Menu/types.ts +23 -0
  310. package/components/Menu/types.vue-props.ts +16 -0
  311. package/components/Progress/Progress.astro +10 -21
  312. package/components/Progress/Progress.react.tsx +27 -0
  313. package/components/Progress/Progress.svelte +30 -0
  314. package/components/Progress/Progress.vue +17 -21
  315. package/components/Progress/types.astro.ts +2 -1
  316. package/components/Progress/types.react.ts +5 -0
  317. package/components/Progress/types.svelte.ts +2 -1
  318. package/components/Progress/types.ts +1 -6
  319. package/components/Progress/types.vue-props.ts +6 -0
  320. package/components/Radio/Radio.astro +29 -15
  321. package/components/Radio/Radio.react.tsx +51 -0
  322. package/components/Radio/Radio.svelte +59 -0
  323. package/components/Radio/Radio.vue +37 -16
  324. package/components/Radio/RadioInput.astro +5 -2
  325. package/components/Radio/RadioInput.react.tsx +10 -0
  326. package/components/Radio/RadioInput.svelte +27 -0
  327. package/components/Radio/RadioInput.vue +28 -3
  328. package/components/Radio/types.astro.ts +2 -1
  329. package/components/Radio/types.react.ts +11 -0
  330. package/components/Radio/types.svelte.ts +9 -5
  331. package/components/Radio/types.ts +9 -4
  332. package/components/Radio/types.vue-props.ts +15 -0
  333. package/components/Range/Range.astro +49 -38
  334. package/components/Range/Range.react.tsx +157 -0
  335. package/components/Range/Range.svelte +136 -0
  336. package/components/Range/Range.vue +116 -32
  337. package/components/Range/types.astro.ts +1 -3
  338. package/components/Range/types.react.ts +10 -0
  339. package/components/Range/types.svelte.ts +8 -3
  340. package/components/Range/types.ts +13 -14
  341. package/components/Range/types.vue-props.ts +16 -0
  342. package/components/Range/value.ts +27 -0
  343. package/components/Select/Select.astro +70 -31
  344. package/components/Select/Select.react.tsx +124 -0
  345. package/components/Select/Select.svelte +123 -0
  346. package/components/Select/Select.vue +108 -36
  347. package/components/Select/selection.ts +11 -0
  348. package/components/Select/types.react.ts +6 -0
  349. package/components/Select/types.svelte.ts +1 -1
  350. package/components/Select/types.ts +16 -13
  351. package/components/Select/types.vue-props.ts +20 -0
  352. package/components/Switch/Switch.astro +22 -26
  353. package/components/Switch/Switch.react.tsx +63 -0
  354. package/components/Switch/Switch.svelte +73 -0
  355. package/components/Switch/Switch.vue +36 -18
  356. package/components/Switch/SwitchInput.astro +5 -2
  357. package/components/Switch/SwitchInput.react.tsx +12 -0
  358. package/components/Switch/SwitchInput.svelte +30 -0
  359. package/components/Switch/SwitchInput.vue +25 -3
  360. package/components/Switch/types.astro.ts +4 -2
  361. package/components/Switch/types.react.ts +11 -0
  362. package/components/Switch/types.svelte.ts +11 -4
  363. package/components/Switch/types.ts +9 -6
  364. package/components/Switch/types.vue-props.ts +17 -0
  365. package/components/Table/Table.astro +15 -2
  366. package/components/Table/Table.react.tsx +24 -0
  367. package/components/Table/Table.svelte +28 -0
  368. package/components/Table/Table.vue +9 -8
  369. package/components/Table/TableBody.astro +9 -0
  370. package/components/Table/TableBody.react.tsx +5 -0
  371. package/components/Table/TableBody.svelte +9 -0
  372. package/components/Table/TableBody.vue +12 -0
  373. package/components/Table/TableCaption.astro +9 -0
  374. package/components/Table/TableCaption.react.tsx +5 -0
  375. package/components/Table/TableCaption.svelte +9 -0
  376. package/components/Table/TableCaption.vue +12 -0
  377. package/components/Table/TableCell.astro +9 -0
  378. package/components/Table/TableCell.react.tsx +6 -0
  379. package/components/Table/TableCell.svelte +16 -0
  380. package/components/Table/TableCell.vue +12 -0
  381. package/components/Table/TableColumn.astro +8 -0
  382. package/components/Table/TableColumn.react.tsx +7 -0
  383. package/components/Table/TableColumn.svelte +8 -0
  384. package/components/Table/TableColumn.vue +12 -0
  385. package/components/Table/TableColumnGroup.astro +9 -0
  386. package/components/Table/TableColumnGroup.react.tsx +5 -0
  387. package/components/Table/TableColumnGroup.svelte +9 -0
  388. package/components/Table/TableColumnGroup.vue +12 -0
  389. package/components/Table/TableFoot.astro +9 -0
  390. package/components/Table/TableFoot.react.tsx +5 -0
  391. package/components/Table/TableFoot.svelte +9 -0
  392. package/components/Table/TableFoot.vue +12 -0
  393. package/components/Table/TableHead.astro +9 -0
  394. package/components/Table/TableHead.react.tsx +5 -0
  395. package/components/Table/TableHead.svelte +9 -0
  396. package/components/Table/TableHead.vue +12 -0
  397. package/components/Table/TableHeaderCell.astro +9 -0
  398. package/components/Table/TableHeaderCell.react.tsx +10 -0
  399. package/components/Table/TableHeaderCell.svelte +16 -0
  400. package/components/Table/TableHeaderCell.vue +12 -0
  401. package/components/Table/TableRow.astro +9 -0
  402. package/components/Table/TableRow.react.tsx +5 -0
  403. package/components/Table/TableRow.svelte +9 -0
  404. package/components/{DescriptionList/Description.vue → Table/TableRow.vue} +3 -3
  405. package/components/Table/types.astro.ts +17 -11
  406. package/components/Table/types.react.ts +22 -0
  407. package/components/Table/types.svelte.ts +19 -7
  408. package/components/Table/types.ts +8 -3
  409. package/components/Table/types.vue-props.ts +28 -0
  410. package/components/Tabs/Tabs.astro +23 -13
  411. package/components/Tabs/Tabs.react.tsx +43 -0
  412. package/components/Tabs/Tabs.svelte +43 -0
  413. package/components/Tabs/Tabs.vue +19 -9
  414. package/components/Tabs/TabsItem.astro +16 -28
  415. package/components/Tabs/TabsItem.react.tsx +47 -0
  416. package/components/Tabs/TabsItem.svelte +52 -0
  417. package/components/Tabs/TabsItem.vue +23 -21
  418. package/components/Tabs/TabsLabel.astro +16 -0
  419. package/components/Tabs/TabsLabel.react.tsx +17 -0
  420. package/components/Tabs/TabsLabel.svelte +19 -0
  421. package/components/Tabs/TabsLabel.vue +16 -0
  422. package/components/Tabs/TabsPanel.astro +2 -9
  423. package/components/Tabs/TabsPanel.react.tsx +6 -0
  424. package/components/Tabs/TabsPanel.svelte +15 -0
  425. package/components/Tabs/TabsPanel.vue +3 -22
  426. package/components/Tabs/context.astro.ts +4 -0
  427. package/components/Tabs/context.react.ts +8 -0
  428. package/components/Tabs/context.svelte.ts +7 -0
  429. package/components/Tabs/context.vue.ts +4 -0
  430. package/components/Tabs/types.astro.ts +5 -3
  431. package/components/Tabs/types.react.ts +12 -0
  432. package/components/Tabs/types.svelte.ts +6 -6
  433. package/components/Tabs/types.ts +10 -8
  434. package/components/Tabs/types.vue-props.ts +25 -0
  435. package/components/TextField/TextField.astro +36 -52
  436. package/components/TextField/TextField.react.tsx +70 -0
  437. package/components/TextField/TextField.svelte +84 -0
  438. package/components/TextField/TextField.vue +59 -39
  439. package/components/TextField/types.astro.ts +1 -3
  440. package/components/TextField/types.react.ts +12 -0
  441. package/components/TextField/types.svelte.ts +2 -4
  442. package/components/TextField/types.ts +11 -25
  443. package/components/TextField/types.vue-props.ts +21 -0
  444. package/components/Textarea/Textarea.astro +34 -48
  445. package/components/Textarea/Textarea.react.tsx +64 -0
  446. package/components/Textarea/Textarea.svelte +80 -0
  447. package/components/Textarea/Textarea.vue +55 -31
  448. package/components/Textarea/types.astro.ts +1 -3
  449. package/components/Textarea/types.react.ts +8 -0
  450. package/components/Textarea/types.svelte.ts +1 -9
  451. package/components/Textarea/types.ts +10 -22
  452. package/components/Textarea/types.vue-props.ts +20 -0
  453. package/components/ToggleButton/ToggleButton.astro +14 -14
  454. package/components/ToggleButton/ToggleButton.react.tsx +57 -0
  455. package/components/ToggleButton/ToggleButton.svelte +58 -0
  456. package/components/ToggleButton/ToggleButton.vue +41 -17
  457. package/components/ToggleButton/types.react.ts +4 -0
  458. package/components/ToggleButton/types.svelte.ts +0 -2
  459. package/components/ToggleButton/types.ts +2 -6
  460. package/components/ToggleButton/types.vue-props.ts +11 -0
  461. package/components/ToggleGroup/ToggleGroup.astro +16 -18
  462. package/components/ToggleGroup/ToggleGroup.react.tsx +54 -0
  463. package/components/ToggleGroup/ToggleGroup.svelte +54 -0
  464. package/components/ToggleGroup/ToggleGroup.vue +29 -20
  465. package/components/ToggleGroup/context.astro.ts +5 -0
  466. package/components/ToggleGroup/context.react.ts +8 -0
  467. package/components/ToggleGroup/context.svelte.ts +8 -0
  468. package/components/ToggleGroup/context.vue.ts +4 -0
  469. package/components/ToggleGroup/selection.ts +12 -0
  470. package/components/ToggleGroup/types.react.ts +12 -0
  471. package/components/ToggleGroup/types.svelte.ts +1 -4
  472. package/components/ToggleGroup/types.ts +11 -9
  473. package/components/ToggleGroup/types.vue-props.ts +6 -0
  474. package/components/Tooltip/Tooltip.astro +6 -7
  475. package/components/Tooltip/Tooltip.react.tsx +24 -0
  476. package/components/Tooltip/Tooltip.svelte +29 -0
  477. package/components/Tooltip/Tooltip.vue +7 -8
  478. package/components/Tooltip/types.react.ts +4 -0
  479. package/components/Tooltip/types.svelte.ts +1 -4
  480. package/components/Tooltip/types.ts +2 -8
  481. package/components/Tooltip/types.vue-props.ts +6 -0
  482. package/components/content.svelte +9 -0
  483. package/components/context.astro.ts +15 -0
  484. package/components/cx.ts +12 -0
  485. package/components/dev.ts +63 -0
  486. package/components/group.ts +2 -0
  487. package/components/id.ts +9 -0
  488. package/components/style.ts +33 -0
  489. package/components/tag.ts +6 -0
  490. package/components/vue.ts +18 -0
  491. package/core/normalize.css +56 -79
  492. package/core/palette.css +99 -282
  493. package/core/utils.css +31 -44
  494. package/css/compat/avatar.css +7 -0
  495. package/css/compat/menu.css +20 -0
  496. package/css/compat.css +3 -0
  497. package/css/components/accordion.css +123 -59
  498. package/css/components/anchor.css +21 -8
  499. package/css/components/avatar.css +57 -17
  500. package/css/components/badge.css +84 -45
  501. package/css/components/button-group.css +120 -129
  502. package/css/components/button.css +326 -116
  503. package/css/components/callout.css +88 -47
  504. package/css/components/card.css +181 -63
  505. package/css/components/carousel.css +399 -0
  506. package/css/components/checkbox.css +27 -148
  507. package/css/components/chip.css +175 -52
  508. package/css/components/choice.css +291 -0
  509. package/css/components/description-list.css +51 -41
  510. package/css/components/dialog.css +120 -30
  511. package/css/components/divider.css +62 -9
  512. package/css/components/drawer.css +181 -51
  513. package/css/components/form.css +51 -66
  514. package/css/components/layout.css +92 -0
  515. package/css/components/link.css +44 -12
  516. package/css/components/list.css +252 -135
  517. package/css/components/menu.css +174 -0
  518. package/css/components/progress.css +37 -29
  519. package/css/components/radio.css +32 -141
  520. package/css/components/range.css +244 -101
  521. package/css/components/select.css +84 -65
  522. package/css/components/spinner.css +31 -12
  523. package/css/components/switch.css +98 -171
  524. package/css/components/table.css +120 -79
  525. package/css/components/tabs.css +230 -36
  526. package/css/components/text-field.css +296 -186
  527. package/css/components/textarea.css +5 -11
  528. package/css/components/toggle-button.css +84 -44
  529. package/css/components/toggle-group.css +62 -32
  530. package/css/components/tooltip.css +87 -30
  531. package/css/components/typography.css +519 -298
  532. package/css/components.css +25 -18
  533. package/css/imports.css +2 -4
  534. package/css/js/checkbox.d.ts +3 -0
  535. package/css/js/checkbox.js +10 -0
  536. package/css/js/range.d.ts +1 -0
  537. package/css/js/range.js +44 -0
  538. package/css/layers.css +2 -0
  539. package/css/theme.css +729 -103
  540. package/dist/op.css +12 -237
  541. package/dist/op.css.map +1 -1
  542. package/dist/opui.baseline-2023.css +9209 -0
  543. package/dist/opui.baseline-2023.css.map +1 -0
  544. package/dist/opui.baseline-2024.css +9209 -0
  545. package/dist/opui.baseline-2024.css.map +1 -0
  546. package/dist/opui.baseline-2025.css +9209 -0
  547. package/dist/opui.baseline-2025.css.map +1 -0
  548. package/dist/opui.baseline-2026.css +9209 -0
  549. package/dist/opui.baseline-2026.css.map +1 -0
  550. package/dist/opui.components.css +5497 -3291
  551. package/dist/opui.components.css.map +1 -1
  552. package/dist/opui.css +6616 -4255
  553. package/dist/opui.css.map +1 -1
  554. package/dist/opui.no-compat.css +9182 -0
  555. package/dist/opui.no-compat.css.map +1 -0
  556. package/env.d.ts +10 -7
  557. package/open-props.css +10 -1
  558. package/package.json +63 -17
  559. package/react/elements.ts +13 -0
  560. package/react/index.ts +176 -0
  561. package/skills/opui/SKILL.md +75 -0
  562. package/skills/opui/references/accordion.md +253 -0
  563. package/skills/opui/references/anchor.md +213 -0
  564. package/skills/opui/references/avatar.md +202 -0
  565. package/skills/opui/references/badge.md +199 -0
  566. package/skills/opui/references/button-group.md +239 -0
  567. package/skills/opui/references/button.md +242 -0
  568. package/skills/opui/references/callout.md +221 -0
  569. package/skills/opui/references/card.md +222 -0
  570. package/skills/opui/references/carousel.md +269 -0
  571. package/skills/opui/references/checkbox.md +241 -0
  572. package/skills/opui/references/chip.md +135 -0
  573. package/skills/opui/references/customizing.md +85 -0
  574. package/skills/opui/references/description-list.md +191 -0
  575. package/skills/opui/references/dialog.md +301 -0
  576. package/skills/opui/references/divider.md +112 -0
  577. package/skills/opui/references/drawer.md +802 -0
  578. package/skills/opui/references/form.md +260 -0
  579. package/skills/opui/references/getting-started.md +398 -0
  580. package/skills/opui/references/index.md +89 -0
  581. package/skills/opui/references/layout.md +161 -0
  582. package/skills/opui/references/list.md +216 -0
  583. package/skills/opui/references/menu.md +248 -0
  584. package/skills/opui/references/progress.md +114 -0
  585. package/skills/opui/references/radio.md +234 -0
  586. package/skills/opui/references/range.md +150 -0
  587. package/skills/opui/references/select.md +255 -0
  588. package/skills/opui/references/spinner.md +85 -0
  589. package/skills/opui/references/switch.md +223 -0
  590. package/skills/opui/references/table.md +480 -0
  591. package/skills/opui/references/tabs.md +257 -0
  592. package/skills/opui/references/text-field.md +167 -0
  593. package/skills/opui/references/textarea.md +169 -0
  594. package/skills/opui/references/theming.md +278 -0
  595. package/skills/opui/references/toggle.md +222 -0
  596. package/skills/opui/references/tooltip.md +167 -0
  597. package/skills/opui/references/typography.md +159 -0
  598. package/svelte/elements.ts +7 -0
  599. package/svelte/index.ts +177 -0
  600. package/themes/bootstrap.css +223 -0
  601. package/themes/brutalist.css +105 -0
  602. package/themes/m3.css +152 -0
  603. package/themes/shadcn.css +125 -0
  604. package/tokens.json +3729 -0
  605. package/vue/index.ts +136 -15
  606. package/components/AGENTS.md +0 -247
  607. package/components/Accordion/types.d.vue.ts +0 -15
  608. package/components/Accordion/types.solid.ts +0 -6
  609. package/components/Anchor/types.d.vue.ts +0 -10
  610. package/components/Anchor/types.solid.ts +0 -6
  611. package/components/Avatar/types.d.vue.ts +0 -12
  612. package/components/Avatar/types.solid.ts +0 -11
  613. package/components/Badge/types.d.vue.ts +0 -10
  614. package/components/Badge/types.solid.ts +0 -4
  615. package/components/Button/types.d.vue.ts +0 -10
  616. package/components/Button/types.solid.ts +0 -8
  617. package/components/ButtonGroup/types.d.vue.ts +0 -10
  618. package/components/ButtonGroup/types.solid.ts +0 -4
  619. package/components/Callout/types.d.vue.ts +0 -10
  620. package/components/Callout/types.solid.ts +0 -6
  621. package/components/Card/types.d.vue.ts +0 -10
  622. package/components/Card/types.solid.ts +0 -6
  623. package/components/Checkbox/types.d.vue.ts +0 -11
  624. package/components/Checkbox/types.solid.ts +0 -9
  625. package/components/Chip/types.d.vue.ts +0 -10
  626. package/components/Chip/types.solid.ts +0 -10
  627. package/components/ClassicSelect/ClassicSelect.astro +0 -60
  628. package/components/ClassicSelect/ClassicSelect.vue +0 -54
  629. package/components/ClassicSelect/types.astro.ts +0 -8
  630. package/components/ClassicSelect/types.d.vue.ts +0 -10
  631. package/components/ClassicSelect/types.solid.ts +0 -5
  632. package/components/ClassicSelect/types.svelte.ts +0 -5
  633. package/components/ClassicSelect/types.ts +0 -15
  634. package/components/DescriptionList/Description.astro +0 -9
  635. package/components/DescriptionList/Item.astro +0 -9
  636. package/components/DescriptionList/Term.astro +0 -9
  637. package/components/DescriptionList/index.ts +0 -12
  638. package/components/DescriptionList/types.d.vue.ts +0 -10
  639. package/components/DescriptionList/types.solid.ts +0 -4
  640. package/components/Dialog/types.d.vue.ts +0 -10
  641. package/components/Dialog/types.solid.ts +0 -8
  642. package/components/Divider/types.d.vue.ts +0 -6
  643. package/components/Divider/types.solid.ts +0 -4
  644. package/components/Drawer/types.d.vue.ts +0 -31
  645. package/components/Drawer/types.solid.ts +0 -12
  646. package/components/FieldDescription/types.d.vue.ts +0 -10
  647. package/components/FieldDescription/types.solid.ts +0 -5
  648. package/components/FieldGroup/types.d.vue.ts +0 -12
  649. package/components/FieldGroup/types.solid.ts +0 -5
  650. package/components/FieldLegend/types.d.vue.ts +0 -11
  651. package/components/FieldLegend/types.solid.ts +0 -5
  652. package/components/FieldSet/FieldSet.vue +0 -18
  653. package/components/FieldSet/types.d.vue.ts +0 -11
  654. package/components/FieldSet/types.solid.ts +0 -5
  655. package/components/FieldSet/types.svelte.ts +0 -8
  656. package/components/FieldSet/types.ts +0 -5
  657. package/components/Form/types.d.vue.ts +0 -11
  658. package/components/Form/types.solid.ts +0 -5
  659. package/components/IconButton/IconButton.astro +0 -24
  660. package/components/IconButton/IconButton.vue +0 -24
  661. package/components/IconButton/types.astro.ts +0 -6
  662. package/components/IconButton/types.d.vue.ts +0 -10
  663. package/components/IconButton/types.solid.ts +0 -8
  664. package/components/IconButton/types.svelte.ts +0 -6
  665. package/components/IconButton/types.ts +0 -16
  666. package/components/List/types.d.vue.ts +0 -10
  667. package/components/List/types.solid.ts +0 -4
  668. package/components/ListItem/types.d.vue.ts +0 -10
  669. package/components/ListItem/types.solid.ts +0 -12
  670. package/components/Progress/types.d.vue.ts +0 -10
  671. package/components/Progress/types.solid.ts +0 -4
  672. package/components/Radio/types.d.vue.ts +0 -11
  673. package/components/Radio/types.solid.ts +0 -9
  674. package/components/Range/types.d.vue.ts +0 -14
  675. package/components/Range/types.solid.ts +0 -6
  676. package/components/Select/types.d.vue.ts +0 -17
  677. package/components/Select/types.solid.ts +0 -6
  678. package/components/Switch/types.d.vue.ts +0 -13
  679. package/components/Switch/types.solid.ts +0 -9
  680. package/components/Table/Body.astro +0 -11
  681. package/components/Table/Body.vue +0 -5
  682. package/components/Table/Cell.astro +0 -11
  683. package/components/Table/Cell.vue +0 -5
  684. package/components/Table/Column.astro +0 -12
  685. package/components/Table/Column.vue +0 -19
  686. package/components/Table/ColumnGroup.astro +0 -11
  687. package/components/Table/ColumnGroup.vue +0 -5
  688. package/components/Table/Head.astro +0 -11
  689. package/components/Table/Head.vue +0 -5
  690. package/components/Table/HeaderCell.astro +0 -11
  691. package/components/Table/HeaderCell.vue +0 -5
  692. package/components/Table/Row.astro +0 -11
  693. package/components/Table/Row.vue +0 -5
  694. package/components/Table/index.ts +0 -20
  695. package/components/Table/types.d.vue.ts +0 -10
  696. package/components/Table/types.solid.ts +0 -8
  697. package/components/Tabs/TabsTab.astro +0 -15
  698. package/components/Tabs/TabsTab.vue +0 -24
  699. package/components/Tabs/index.ts +0 -14
  700. package/components/Tabs/types.d.vue.ts +0 -31
  701. package/components/Tabs/types.solid.ts +0 -12
  702. package/components/TextField/types.d.vue.ts +0 -20
  703. package/components/TextField/types.solid.ts +0 -22
  704. package/components/Textarea/types.d.vue.ts +0 -19
  705. package/components/Textarea/types.solid.ts +0 -6
  706. package/components/Toast/Toast.astro +0 -42
  707. package/components/Toast/Toast.vue +0 -48
  708. package/components/ToggleButton/types.d.vue.ts +0 -10
  709. package/components/ToggleButton/types.solid.ts +0 -7
  710. package/components/ToggleGroup/types.d.vue.ts +0 -15
  711. package/components/ToggleGroup/types.solid.ts +0 -4
  712. package/components/Tooltip/types.d.vue.ts +0 -10
  713. package/components/Tooltip/types.solid.ts +0 -6
  714. package/css/components/icon-button.css +0 -139
  715. package/css/components/text-input.css +0 -68
  716. package/css/components/toast.css +0 -157
  717. package/css/js/toast.js +0 -94
  718. /package/components/{FieldSet → Fieldset}/types.astro.ts +0 -0
@@ -1,120 +1,130 @@
1
1
  @layer components.root {
2
2
  :where(.ui-table) {
3
- --_table-border-radius: var(--border-radius);
3
+ --_radius: var(--ui-radius);
4
4
 
5
+ border: var(--ui-border-width) solid var(--ui-border-color);
5
6
  border-collapse: separate;
7
+ border-radius: var(--_radius);
6
8
  border-spacing: 0;
7
- border: 1px solid var(--border-color);
8
- border-radius: var(--_table-border-radius);
9
- overflow: hidden;
10
9
  inline-size: 100%;
11
- margin: var(--size-3) 0;
10
+ margin-block: var(--ui-space-3);
11
+ margin-inline: 0;
12
+ overflow: clip;
13
+ overflow-clip-margin: calc(
14
+ (var(--ui-focus-ring-width) + var(--ui-focus-ring-offset)) * 1.5
15
+ );
12
16
  position: relative;
13
17
 
14
18
  /* Rows */
15
- tr {
16
- &:hover {
17
- background-color: oklch(from var(--surface-filled) l c h / 75%);
19
+ @media (hover: hover) {
20
+ tbody > tr:hover > :is(td, th) {
21
+ background-color: oklch(from var(--ui-surface-filled) l c h / 75%);
18
22
  }
19
23
  }
20
24
 
21
25
  /* Cells */
22
26
  th,
23
27
  td {
24
- background-color: var(--surface-default);
25
- border-inline-end: var(--border-width) solid var(--border-color);
26
- border-block-end: var(--border-width) solid var(--border-color);
27
- padding: var(--size-1) var(--size-2);
28
+ background-color: var(--ui-surface);
29
+ border-block-end: var(--ui-border-width) solid var(--ui-border-color);
30
+ border-inline-end: var(--ui-border-width) solid var(--ui-border-color);
31
+ font-size: var(--ui-font-size-small);
32
+ padding-block: var(--ui-space-1);
33
+ padding-inline: var(--ui-space-2);
28
34
 
29
35
  &:last-child {
30
36
  border-inline-end: none;
31
37
  }
32
38
  }
33
39
 
34
- /* Remove bottom border only on the last row of the table */
35
- & > *:last-child tr:last-child {
36
- th,
37
- td {
38
- border-block-end: none;
39
- }
40
- }
41
-
42
40
  th {
43
- background-color: var(--surface-filled);
44
- color: var(--text-primary);
45
- font-size: var(--font-size-05);
46
- font-weight: 600;
41
+ --ui-border-color: var(--ui-border-color-on-filled);
42
+ --ui-field-border-color: var(--ui-field-border-color-on-filled);
43
+
44
+ background-color: var(--ui-surface-filled);
45
+ color: var(--ui-text-strong);
46
+ font-weight: var(--ui-font-weight-semibold);
47
47
  text-align: start;
48
48
  }
49
49
 
50
- td {
51
- font-size: var(--font-size-05);
50
+ :is(th, td):has(> .ui-checkbox:only-child) {
51
+ inline-size: 0;
52
+ text-align: center;
53
+ vertical-align: middle;
54
+
55
+ & > .ui-checkbox {
56
+ display: flex;
57
+ margin-inline: auto;
58
+ }
59
+ }
60
+
61
+ tbody :is(th[scope="row"], tr:has(> td) > th) {
62
+ --ui-border-color: inherit;
63
+
64
+ background-color: var(--ui-surface);
52
65
  }
53
66
 
54
67
  /* Round corner cells */
55
68
  & > thead:first-of-type tr:first-child {
56
69
  th:first-child {
57
- border-start-start-radius: var(--_table-border-radius);
70
+ border-start-start-radius: var(--_radius);
58
71
  }
59
72
 
60
73
  th:last-child {
61
- border-start-end-radius: var(--_table-border-radius);
74
+ border-start-end-radius: var(--_radius);
62
75
  }
63
76
  }
64
77
 
65
78
  /* Logic for tables without thead */
66
79
  & > tbody:first-of-type:not(thead ~ tbody) tr:first-child {
67
- td:first-child {
68
- border-start-start-radius: var(--_table-border-radius);
80
+ :where(th, td):first-child {
81
+ border-start-start-radius: var(--_radius);
69
82
  }
70
83
 
71
- td:last-child {
72
- border-start-end-radius: var(--_table-border-radius);
84
+ :where(th, td):last-child {
85
+ border-start-end-radius: var(--_radius);
73
86
  }
74
87
  }
75
88
 
89
+ /* Remove bottom border only on the last row of the table */
76
90
  /* Logic for bottom corners (whether in tbody or tfoot) */
77
91
  & > *:last-child tr:last-child {
92
+ th,
93
+ td {
94
+ border-block-end: none;
95
+ }
96
+
78
97
  :where(th, td):first-child {
79
- border-end-start-radius: var(--_table-border-radius);
98
+ border-end-start-radius: var(--_radius);
80
99
  }
81
100
 
82
101
  :where(th, td):last-child {
83
- border-end-end-radius: var(--_table-border-radius);
102
+ border-end-end-radius: var(--_radius);
84
103
  }
85
104
  }
86
105
 
87
106
  /* Footer */
88
- tfoot {
89
- tr td {
90
- background-color: var(--surface-filled);
91
- padding-block: var(--size-2);
92
- }
93
-
94
- td {
95
- color: var(--text-primary);
96
- font-weight: 600;
97
- border-top: var(--border-width) solid var(--border-color);
98
- }
107
+ tfoot :where(th, td) {
108
+ background-color: var(--ui-surface-filled);
109
+ border-block-start: var(--ui-border-width) solid var(--ui-border-color);
110
+ color: var(--ui-text-strong);
111
+ font-weight: var(--ui-font-weight-semibold);
112
+ padding-block: var(--ui-space-2);
99
113
  }
100
114
 
101
115
  /* Caption */
102
116
  caption {
103
117
  caption-side: bottom;
104
- color: var(--text-muted);
105
- font-size: var(--font-size-05);
106
- margin-inline-start: var(--size-2);
107
- padding: var(--size-2) 0;
118
+ color: var(--ui-text-subtle);
119
+ font-size: var(--ui-font-size-small);
120
+ margin-inline-start: var(--ui-space-2);
121
+ padding-block: var(--ui-space-2);
122
+ padding-inline: 0;
108
123
  text-align: start;
109
124
  }
110
125
 
111
- /* Header */
112
- thead {
113
- z-index: 1;
114
- }
115
-
116
126
  /* Remove bottom border of the row above the footer to stay single-line */
117
- tbody:has(+ tfoot) tr:last-child td {
127
+ tbody:has(+ tfoot) tr:last-child :where(th, td) {
118
128
  border-block-end: none;
119
129
  }
120
130
 
@@ -123,10 +133,54 @@
123
133
  border: none;
124
134
  }
125
135
 
126
- @container (width < 60ch) {
127
- th,
128
- td {
129
- padding: var(--size-1) 0.875rem;
136
+ /* Numbers */
137
+ .ui-numeric {
138
+ font-variant-numeric: tabular-nums;
139
+ text-align: end;
140
+ }
141
+
142
+ &.ui-flush {
143
+ margin-block: 0;
144
+ }
145
+
146
+ &.ui-overflow-scroll {
147
+ display: block;
148
+ overflow-inline: auto;
149
+ overscroll-behavior-inline: contain;
150
+ scrollbar-width: thin;
151
+
152
+ :where(th, td) {
153
+ white-space: nowrap;
154
+
155
+ &:last-child {
156
+ inline-size: 100%;
157
+ }
158
+ }
159
+ }
160
+
161
+ &.ui-sticky-header {
162
+ --_motion: var(--ui-motion);
163
+ --_duration: calc(var(--ui-duration) * var(--_motion));
164
+ --_ease: var(--ui-ease);
165
+ --_scroll-shadow: var(--ui-shadow-scroll);
166
+ --_sticky-offset: 0;
167
+
168
+ & > thead {
169
+ container-type: scroll-state;
170
+ inset-block-start: var(--_sticky-offset);
171
+ position: sticky;
172
+ z-index: 1;
173
+
174
+ th {
175
+ transition: box-shadow var(--_duration) var(--_ease);
176
+ }
177
+ }
178
+
179
+ @container scroll-state(stuck: block-start) {
180
+ & > thead th {
181
+ box-shadow: var(--_scroll-shadow);
182
+ clip-path: inset(0 0 calc(-1 * var(--ui-space-6)));
183
+ }
130
184
  }
131
185
  }
132
186
 
@@ -134,19 +188,11 @@
134
188
  &.ui-spacious {
135
189
  th,
136
190
  td {
137
- padding: var(--size-3);
191
+ padding: var(--ui-space-3);
138
192
  }
139
193
 
140
194
  caption {
141
- margin-inline-start: var(--size-3);
142
- padding: var(--size-2) 0;
143
- }
144
-
145
- @container (width < 60ch) {
146
- th,
147
- td {
148
- padding: var(--size-3);
149
- }
195
+ margin-inline-start: var(--ui-space-3);
150
196
  }
151
197
  }
152
198
 
@@ -154,19 +200,14 @@
154
200
  &.ui-dense {
155
201
  th,
156
202
  td {
157
- padding: var(--size-1);
203
+ line-height: var(--ui-line-height-tight);
204
+ padding-block: calc(var(--ui-space-1) / 2);
205
+ padding-inline: var(--ui-space-1);
158
206
  }
159
207
 
160
208
  caption {
161
- margin-inline-start: var(--size-1);
162
- padding: var(--size-1) 0;
163
- }
164
-
165
- @container (width < 60ch) {
166
- th,
167
- td {
168
- padding: var(--size-1);
169
- }
209
+ margin-inline-start: var(--ui-space-1);
210
+ padding-block: var(--ui-space-1);
170
211
  }
171
212
  }
172
213
  }
@@ -1,84 +1,278 @@
1
1
  @layer components.root {
2
2
  :where(.ui-tabs) {
3
- --_accent-color: var(--primary);
4
- --_bg-color: transparent;
3
+ --_motion: var(--ui-motion);
4
+ --_duration: calc(var(--ui-duration-fast) * var(--_motion));
5
+ --_ease: var(--ui-ease);
6
+ --_focus-ring-duration: calc(var(--ui-duration) * var(--_motion));
7
+ --_indicator-bg-color: transparent;
8
+ --_indicator-size: var(--ui-border-width-thick);
9
+ --_inset: calc(var(--ui-space-1) - var(--_track-border-width));
10
+ --_radius: var(--ui-radius);
11
+ --_selected-bg-color: light-dark(
12
+ var(--ui-surface),
13
+ oklch(100% 0 0 / var(--ui-state-hover-alpha-dark))
14
+ );
15
+ --_selected-border-color: var(
16
+ --ui-control-border-color,
17
+ var(--ui-field-border-color)
18
+ );
19
+ --_selected-shadow: var(--ui-shadow-selected);
20
+ --_selected-text-color: var(--ui-tabs-accent, var(--ui-text-strong));
21
+ --_text-color: var(--ui-text-subtle);
22
+ --_track-bg-color: var(--ui-surface-tonal);
23
+ --_track-border-color: transparent;
24
+ --_track-border-width: var(--ui-border-width);
5
25
 
6
26
  align-items: flex-start;
7
27
  display: flex;
8
28
  flex-wrap: wrap;
9
- gap: 0 var(--size-1);
29
+ gap: 0;
10
30
  position: relative;
11
31
 
12
- & > .ui-tab-input[type="radio"] {
13
- /* utils > .ui-sr-only */
32
+ & > .ui-input[type="radio"] {
14
33
  /* TODO: use mixin for this when available */
15
- block-size: 1px;
34
+ block-size: 1lh;
16
35
  clip-path: inset(50%);
17
- inline-size: 1px;
36
+ inline-size: 1ch;
18
37
  overflow: hidden;
19
38
  position: absolute;
20
39
  white-space: nowrap;
21
40
 
22
41
  &:checked {
23
42
  /* Checked Tab */
24
- & + [role="tab"],
25
- & + .ui-tab-label {
26
- border-block-end-color: var(--_accent-color);
27
- color: var(--_accent-color);
43
+ & + .ui-label {
44
+ color: var(--_selected-text-color);
45
+
46
+ &::before {
47
+ background-color: var(--_selected-bg-color);
48
+ border-color: var(--_selected-border-color);
49
+ box-shadow: var(--_selected-shadow);
50
+ }
51
+
52
+ &::after {
53
+ opacity: 1;
54
+ }
28
55
 
29
56
  /* Checked Panel */
30
- & + [role="tabpanel"],
31
- & + .ui-tab-panel {
57
+ & + .ui-panel {
32
58
  display: block;
33
59
  }
34
60
  }
35
61
  }
36
62
 
37
63
  &:focus-visible {
38
- & + [role="tab"],
39
- & + .ui-tab-label {
40
- --focus-ring-color: var(--text-muted);
41
- --focus-ring-offset: calc(-1 * var(--size-2));
42
- outline: var(--focus-ring-width) var(--focus-ring-style)
43
- var(--focus-ring-color);
44
- outline-offset: var(--focus-ring-offset);
64
+ & + .ui-label {
65
+ z-index: 1;
66
+
67
+ &::before {
68
+ animation: ui-focus-ring var(--_focus-ring-duration) var(--_ease);
69
+ outline: var(--ui-focus-ring-width) var(--ui-focus-ring-style)
70
+ var(--ui-focus-ring-color);
71
+ outline-offset: var(--ui-focus-ring-offset);
72
+ }
45
73
  }
46
74
  }
47
75
  }
48
76
 
49
77
  /* Tab */
50
- & > [role="tab"],
51
- & > .ui-tab-label {
78
+ & > .ui-label {
52
79
  align-items: center;
53
- background-color: transparent;
54
- border-bottom: 2px solid transparent;
55
- border-radius: 0;
56
- color: var(--text-muted);
80
+ background-color: var(--_track-bg-color);
81
+ border-block: var(--_track-border-width) solid var(--_track-border-color);
82
+ color: var(--_text-color);
57
83
  cursor: pointer;
58
84
  display: inline-flex;
59
- font-weight: 600;
85
+ font-size: var(--ui-font-size-control);
86
+ font-weight: var(--ui-font-weight-medium);
87
+ gap: var(--ui-space-2);
88
+ isolation: isolate;
60
89
  justify-content: center;
61
- line-height: var(--font-lineheight-4);
90
+ line-height: var(--ui-line-height-relaxed);
62
91
  order: 1;
63
- padding: var(--size-2) var(--size-3);
92
+ padding-block: calc(
93
+ var(--ui-space-1) + var(--_inset) - var(--_track-border-width)
94
+ );
95
+ padding-inline: var(--ui-space-3);
64
96
  position: relative;
65
- transition: color 0.1s;
97
+ transition: color var(--_duration) var(--_ease);
98
+ -webkit-user-select: none;
66
99
  user-select: none;
100
+ white-space: nowrap;
67
101
 
68
- &:hover {
69
- background-color: light-dark(
70
- oklch(from var(--_accent-color) calc(l * 0.75) none h / 5%),
71
- oklch(from var(--_accent-color) calc(l * 1.25) none h / 5%)
102
+ &::before {
103
+ border: var(--ui-border-width) solid transparent;
104
+ border-radius: calc(
105
+ var(--_radius) - var(--_inset) - var(--_track-border-width)
72
106
  );
107
+ content: "";
108
+ inset-block: var(--_inset);
109
+ inset-inline: 0;
110
+ position: absolute;
111
+ transition:
112
+ background-color var(--_duration) var(--_ease),
113
+ box-shadow var(--_duration) var(--_ease);
114
+ z-index: -1;
115
+ }
116
+
117
+ &::after {
118
+ background-color: var(--_indicator-bg-color);
119
+ block-size: var(--_indicator-size);
120
+ border-radius: var(--_indicator-size);
121
+ content: "";
122
+ inset-block-end: 0;
123
+ inset-inline: 0;
124
+ opacity: 0;
125
+ position: absolute;
126
+ transition: opacity var(--_duration) var(--_ease);
127
+ }
128
+
129
+ &:nth-child(1 of .ui-label) {
130
+ border-end-start-radius: var(--_radius);
131
+ border-inline-start: var(--_track-border-width) solid
132
+ var(--_track-border-color);
133
+ border-start-start-radius: var(--_radius);
134
+ padding-inline-start: calc(
135
+ var(--ui-space-3) + var(--_inset) - var(--_track-border-width)
136
+ );
137
+
138
+ &::before {
139
+ inset-inline-start: var(--_inset);
140
+ }
141
+ }
142
+
143
+ &:nth-last-child(1 of .ui-label) {
144
+ border-end-end-radius: var(--_radius);
145
+ border-inline-end: var(--_track-border-width) solid
146
+ var(--_track-border-color);
147
+ border-start-end-radius: var(--_radius);
148
+ padding-inline-end: calc(
149
+ var(--ui-space-3) + var(--_inset) - var(--_track-border-width)
150
+ );
151
+
152
+ &::before {
153
+ inset-inline-end: var(--_inset);
154
+ }
155
+ }
156
+
157
+ @media (hover: hover) {
158
+ &:hover {
159
+ color: var(--ui-text-strong);
160
+ }
73
161
  }
74
162
  }
75
163
 
76
164
  /* Tab Panel */
77
- & > [role="tabpanel"],
78
- & > .ui-tab-panel {
165
+ & > .ui-panel {
79
166
  display: none;
80
167
  inline-size: 100%;
168
+ margin-block-start: var(--ui-space-2);
81
169
  order: 2;
82
170
  }
171
+
172
+ &.ui-filled {
173
+ --_selected-bg-color: var(--ui-selected-strong);
174
+ --_selected-border-color: transparent;
175
+ --_selected-text-color: var(--ui-on-selected-strong);
176
+ }
177
+
178
+ &.ui-line {
179
+ --_indicator-bg-color: var(--ui-tabs-accent, var(--ui-text-strong));
180
+ --_inset: 0px;
181
+ --_selected-bg-color: transparent;
182
+ --_selected-border-color: transparent;
183
+ --_selected-shadow: none;
184
+ --_track-bg-color: transparent;
185
+ --_track-border-width: 0px;
186
+
187
+ column-gap: var(--ui-space-1);
188
+ }
189
+
190
+ &.ui-outlined {
191
+ --_selected-bg-color: var(--ui-surface-tonal);
192
+ --_selected-border-color: transparent;
193
+ --_selected-shadow: none;
194
+ --_track-bg-color: transparent;
195
+ --_track-border-color: var(
196
+ --ui-control-border-color,
197
+ var(--ui-border-color)
198
+ );
199
+ }
200
+
201
+ :where(.ui-accordion, .ui-card, .ui-dialog) > & {
202
+ & > .ui-input[type="radio"]:focus-visible + .ui-label::before {
203
+ outline-offset: var(--ui-focus-ring-inset);
204
+ }
205
+
206
+ &.ui-filled > .ui-input:checked + .ui-label::before {
207
+ --ui-focus-ring-color: var(--ui-on-selected-strong);
208
+ }
209
+ }
210
+
211
+ &.ui-overflow-scroll {
212
+ column-gap: 0;
213
+ container-type: inline-size;
214
+ display: grid;
215
+ grid-auto-columns: max-content;
216
+ overflow-inline: auto;
217
+ overscroll-behavior-inline: contain;
218
+ scrollbar-width: thin;
219
+
220
+ & > .ui-input[type="radio"] {
221
+ grid-column: calc((sibling-index() + 2) / 3) / span 1;
222
+ grid-row: 1 / span 1;
223
+ inset-block-start: 50%;
224
+ inset-inline-start: 50%;
225
+ margin: 0;
226
+
227
+ &:focus-visible {
228
+ & + .ui-label::before {
229
+ outline-offset: var(--ui-focus-ring-inset);
230
+ }
231
+ }
232
+ }
233
+
234
+ &.ui-filled > .ui-input:checked + .ui-label::before {
235
+ --ui-focus-ring-color: var(--ui-on-selected-strong);
236
+ }
237
+
238
+ & > .ui-label {
239
+ grid-row: 1;
240
+ }
241
+
242
+ & > .ui-panel {
243
+ grid-column: 1 / span calc(sibling-count() / 3);
244
+ grid-row: 2;
245
+ inline-size: 100cqi;
246
+ inset-inline-start: 0;
247
+ margin-inline-end: -100cqi;
248
+ position: sticky;
249
+ }
250
+
251
+ &.ui-line {
252
+ & > .ui-label {
253
+ &:not(:nth-last-child(1 of .ui-label)) {
254
+ margin-inline-end: var(--ui-space-1);
255
+ }
256
+ }
257
+ }
258
+ }
259
+
260
+ @media (forced-colors: active) {
261
+ & > .ui-label::before {
262
+ border-color: Canvas;
263
+ }
264
+
265
+ & > .ui-input:checked + .ui-label {
266
+ --_indicator-bg-color: SelectedItem;
267
+ --_selected-bg-color: SelectedItem;
268
+ --_selected-border-color: SelectedItem;
269
+ --_selected-text-color: SelectedItemText;
270
+ --_track-bg-color: Canvas;
271
+ --ui-focus-ring-color: CanvasText;
272
+
273
+ border-color: CanvasText;
274
+ forced-color-adjust: none;
275
+ }
276
+ }
83
277
  }
84
278
  }