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
@@ -3,133 +3,158 @@
3
3
  text-wrap: pretty;
4
4
 
5
5
  &.ui-small {
6
- font-size: var(--font-size-1);
6
+ font-size: var(--ui-font-size-small);
7
7
  }
8
8
 
9
9
  &.ui-large {
10
- font-size: var(--font-size-3);
10
+ font-size: var(--ui-font-size-large);
11
11
  }
12
12
  }
13
13
 
14
14
  :where(.ui-h1, .ui-h2, .ui-h3, .ui-h4, .ui-h5, .ui-h6) {
15
- color: var(--text-primary);
16
- font-weight: 700;
15
+ color: var(--ui-text-strong);
16
+ font-family: var(--ui-font-heading, var(--ui-font-body));
17
+ font-weight: var(--ui-font-weight-bold);
18
+ line-height: round(
19
+ up,
20
+ 1em + 2 * var(--ui-rhythm-step),
21
+ var(--ui-rhythm-step)
22
+ );
17
23
  text-wrap: pretty;
18
24
  }
19
25
 
20
26
  :where(.ui-h1) {
21
- font-size: var(--font-size-h1, var(--font-size-7));
22
- letter-spacing: -0.02em;
23
- line-height: 1.15;
27
+ font-size: round(var(--ui-font-size-h1), var(--ui-rhythm-step) / 2);
28
+ letter-spacing: var(--ui-letter-spacing-display);
24
29
  }
25
30
 
26
31
  :where(.ui-h2) {
27
- font-size: var(--font-size-h2, var(--font-size-5, 2rem));
28
- letter-spacing: -0.02em;
29
- line-height: 1.2;
32
+ font-size: round(var(--ui-font-size-h2), var(--ui-rhythm-step) / 2);
33
+ letter-spacing: var(--ui-letter-spacing-display);
30
34
  }
31
35
 
32
36
  :where(.ui-h3) {
33
- font-size: var(--font-size-h3, var(--font-size-4, 1.5rem));
34
- letter-spacing: -0.01em;
35
- line-height: 1.167;
37
+ font-size: round(var(--ui-font-size-h3), var(--ui-rhythm-step) / 2);
38
+ letter-spacing: var(--ui-letter-spacing-heading);
36
39
  }
37
40
 
38
41
  :where(.ui-h4) {
39
- font-size: var(--font-size-h4, var(--font-size-3, 1.25rem));
40
- letter-spacing: -0.01em;
41
- line-height: 1.235;
42
+ font-size: round(var(--ui-font-size-h4), var(--ui-rhythm-step) / 2);
43
+ letter-spacing: var(--ui-letter-spacing-heading);
42
44
  }
43
45
 
44
46
  :where(.ui-h5) {
45
- font-size: var(--font-size-h5, var(--font-size-2, 1.1rem));
46
- line-height: 1.334;
47
+ font-size: round(var(--ui-font-size-h5), var(--ui-rhythm-step) / 2);
47
48
  }
48
49
 
49
50
  :where(.ui-h6) {
50
- font-size: var(--font-size-h6, var(--font-size-1, 1rem));
51
- line-height: 1;
51
+ font-size: round(var(--ui-font-size-h6), var(--ui-rhythm-step) / 2);
52
52
  }
53
53
 
54
- /** Overline */
55
- :where(.ui-overline) {
56
- color: light-dark(oklch(from var(--text-muted) calc(l * 1.25) c h),
57
- oklch(from var(--text-muted) calc(l * 0.75) c h));
58
- font-size: var(--font-size-0);
59
- font-weight: 500;
60
- letter-spacing: 0.06em;
61
- text-transform: uppercase;
54
+ @scope (.ui-hgroup, .ui-overline, .ui-rich-text) to (.ui-not-rich-text) {
55
+ /** Overline */
56
+ :where(:scope.ui-overline),
57
+ /* First p element (overline) */
58
+ :where(:scope.ui-hgroup) > p:first-of-type:first-child,
59
+ hgroup p:first-of-type:first-child {
60
+ color: var(--ui-text-subtle);
61
+ font-size: var(--ui-font-size-caption);
62
+ font-weight: var(--ui-font-weight-medium);
63
+ letter-spacing: var(--ui-letter-spacing-caps);
64
+ text-transform: uppercase;
65
+ }
66
+
67
+ /* Body paragraphs after the heading */
68
+ :where(:scope.ui-hgroup) > p:not(:first-of-type:first-child),
69
+ hgroup > p:not(:first-of-type:first-child) {
70
+ color: oklch(from currentColor l c h / 75%);
71
+
72
+ @container style(--ui-contrast: more) {
73
+ color: inherit;
74
+ }
75
+
76
+ font-size: var(--ui-font-size-large);
77
+ line-height: round(up, 1.6em, var(--ui-rhythm-step));
78
+ }
62
79
  }
63
80
 
64
81
  :where(.ui-hgroup) {
65
- &>p {
82
+ & > p {
66
83
  margin: 0;
67
84
  }
68
85
 
69
- &> :where(h1, h2, h3, h4, h5, h6) {
70
- margin-block: 0 0.4em;
86
+ & > :where(h1, h2, h3, h4, h5, h6) {
87
+ margin-block: 0 round(0.4em, var(--ui-rhythm-step));
71
88
  }
72
89
 
73
- /* First p element (overline) */
74
- &>p:first-of-type:first-child {
75
- color: light-dark(oklch(from var(--text-muted) calc(l * 1.25) c h),
76
- oklch(from var(--text-muted) calc(l * 0.75) c h));
77
- font-size: var(--font-size-0);
78
- font-weight: 500;
79
- letter-spacing: 0.06em;
80
- text-transform: uppercase;
90
+ & > p + p {
91
+ margin-block-start: round(0.75em, var(--ui-rhythm-step));
81
92
  }
93
+ }
82
94
 
83
- /* Body paragraphs after the heading */
84
- &>p:not(:first-of-type:first-child) {
85
- color: oklch(from currentColor l c h / 75%);
86
- font-size: var(--font-size-3);
87
- line-height: 1.6;
95
+ /** Caption */
96
+ :where(.ui-caption) {
97
+ color: var(--ui-text);
98
+ font-size: var(--ui-font-size-caption);
99
+ line-height: var(--ui-line-height);
100
+ }
101
+
102
+ /* Icon */
103
+ :where(.ui-icon) {
104
+ block-size: var(--ui-icon-size);
105
+ flex-shrink: 0;
106
+ inline-size: var(--ui-icon-size);
107
+
108
+ &.ui-small {
109
+ block-size: var(--ui-icon-size-small);
110
+ inline-size: var(--ui-icon-size-small);
88
111
  }
89
112
 
90
- &>p+p {
91
- margin-block-start: 0.75em;
113
+ &.ui-large {
114
+ block-size: var(--ui-icon-size-large);
115
+ inline-size: var(--ui-icon-size-large);
92
116
  }
93
117
  }
94
118
 
95
- /** Caption */
96
- :where(.ui-caption) {
97
- color: var(--text-muted);
98
- font-size: var(--font-size-0);
99
- line-height: 1.6;
119
+ /* Swatch */
120
+ :where(.ui-swatch) {
121
+ --_swatch-bg-color: var(--ui-palette-accent);
122
+
123
+ background-color: var(--_swatch-bg-color);
124
+ block-size: var(--ui-space-2);
125
+ border-radius: var(--ui-radius-round);
126
+ display: inline-block;
127
+ flex-shrink: 0;
128
+ inline-size: var(--ui-space-2);
129
+ vertical-align: middle;
130
+
131
+ @media (forced-colors: active) {
132
+ background-color: CanvasText;
133
+ forced-color-adjust: none;
134
+ }
100
135
  }
101
136
 
102
137
  /* Inline text elements - class utilities */
103
138
  :where(.ui-u, .ui-abbr, .ui-dfn) {
104
139
  text-decoration: underline;
105
- text-underline-offset: 1px;
106
-
107
- @supports (-moz-appearance: none) {
108
- text-underline-offset: 2px;
109
- }
140
+ text-underline-offset: var(--ui-underline-offset-small);
110
141
  }
111
142
 
112
143
  :where(.ui-abbr, .ui-dfn) {
113
144
  font-style: normal;
114
- text-decoration: var(--color-9) underline dotted;
145
+ text-decoration: var(--ui-info) underline dotted;
115
146
 
116
147
  &[title] {
117
148
  cursor: help;
118
- text-underline-offset: 1px;
119
- }
120
-
121
- @supports (-moz-appearance: none) {
122
- text-underline-offset: 2px;
123
149
  }
124
150
  }
125
151
 
126
152
  :where(.ui-sup) {
127
- font-size: 0.5em;
128
- vertical-align: super;
129
- }
130
-
131
- :where(p, span).ui-small {
132
- font-size: max(0.5em, var(--font-size-0, 0.75rem));
153
+ font-size: 0.75em;
154
+ inset-block-start: -0.5em;
155
+ line-height: 0;
156
+ position: relative;
157
+ vertical-align: baseline;
133
158
  }
134
159
 
135
160
  :where(.ui-cite) {
@@ -137,21 +162,23 @@
137
162
  }
138
163
 
139
164
  /* Code */
140
- :where(.ui-kbd) {
141
- font-family: var(--font-mono);
142
- background-color: var(--text-muted);
143
- border-color: var(--text-muted);
144
- border-radius: var(--radius-2);
145
- border-width: var(--border-size-1);
146
- color: var(--text-muted-contrast);
147
- padding: 0.1ex 0.3ex;
148
- word-break: break-word;
165
+ :where(.ui-kbd, .ui-var) {
166
+ background-color: var(--ui-surface-inverse);
167
+ border-radius: var(--ui-radius-small);
168
+ color: var(--ui-on-inverse);
169
+ font-family: var(--ui-font-code);
170
+ overflow-wrap: anywhere;
171
+ padding-block: calc(0.1ex + var(--ui-border-width));
172
+ padding-inline: calc(0.3ex + var(--ui-border-width));
149
173
  }
150
174
 
151
175
  :where(.ui-mark) {
152
- border-radius: var(--radius-2);
176
+ background-color: Mark;
177
+ border-radius: var(--ui-radius-small);
153
178
  box-decoration-break: clone;
154
- padding: 0.1ex 0.3ex;
179
+ color: MarkText;
180
+ padding-block: 0.1ex;
181
+ padding-inline: 0.3ex;
155
182
  vertical-align: baseline;
156
183
  }
157
184
 
@@ -161,40 +188,35 @@
161
188
 
162
189
  :where(.ui-sub) {
163
190
  font-size: 0.75em;
164
- vertical-align: sub;
191
+ inset-block-start: 0.25em;
192
+ line-height: 0;
193
+ position: relative;
194
+ vertical-align: baseline;
165
195
  }
166
196
 
167
197
  :where(.ui-del) {
168
- color: var(--color-9);
198
+ color: var(--ui-critical-text);
199
+
169
200
  text-decoration: line-through;
170
201
  }
171
202
 
172
203
  :where(.ui-ins) {
173
- color: var(--color-9);
174
- text-decoration: underline;
175
- text-underline-offset: 1px;
176
- }
204
+ color: var(--ui-success-text);
177
205
 
178
- :where(.ui-var) {
179
- font-family: var(--font-mono);
180
- background-color: var(--text-muted);
181
- border-color: var(--text-muted);
182
- border-radius: var(--radius-2);
183
- border-width: var(--border-size-1);
184
- color: var(--text-muted-contrast);
185
- padding: 0.1ex 0.3ex;
186
- word-break: break-word;
206
+ text-decoration: underline;
207
+ text-underline-offset: var(--ui-underline-offset-small);
187
208
  }
188
209
 
189
210
  :where(.ui-samp) {
190
- font-family: var(--font-mono);
211
+ font-family: var(--ui-font-code);
191
212
  }
192
213
 
193
214
  /* Blockquote */
194
215
  :where(.ui-blockquote) {
195
- border-inline-start: var(--border-size-3) solid currentColor;
196
- padding-block: var(--size-3);
197
- padding-inline: var(--size-4);
216
+ border-inline-start: calc(var(--ui-border-width-thick) * 1.5) solid
217
+ currentColor;
218
+ padding-block: var(--ui-space-3);
219
+ padding-inline: var(--ui-space-4);
198
220
 
199
221
  :first-child {
200
222
  margin-block-start: 0;
@@ -205,66 +227,103 @@
205
227
  }
206
228
 
207
229
  footer {
208
- color: var(--text-muted);
209
- margin-block-start: var(--size-3);
230
+ color: var(--ui-text);
231
+ margin-block-start: var(--ui-space-3);
210
232
  }
211
233
  }
212
234
 
213
235
  /* Code block */
214
- :where(pre.ui-code-block) {
215
- background-color: var(--color-15);
216
- border-radius: var(--border-radius);
217
- color: var(--color-1);
218
- font-family: var(--font-mono);
219
- font-size: var(--font-size-05);
220
- max-inline-size: 100%;
221
- overflow-x: auto;
222
- padding-block: var(--size-3);
223
- padding-inline: var(--size-4);
224
- scrollbar-width: thin;
225
- white-space: pre;
226
-
227
- >code {
228
- background: none;
229
- border-radius: 0;
230
- color: inherit;
231
- font-size: inherit;
232
- padding: 0;
233
- word-break: normal;
234
- writing-mode: inherit;
236
+ @scope (pre.ui-code-block, .ui-rich-text) to (.ui-not-rich-text) {
237
+ :where(:scope.ui-code-block),
238
+ pre {
239
+ background-color: var(--ui-code-block-bg-color);
240
+ border-radius: var(--ui-radius);
241
+ color: var(--ui-code-block-text-color);
242
+ font-family: var(--ui-font-code);
243
+ max-inline-size: 100%;
244
+ overflow-inline: auto;
245
+ padding-block: var(--ui-space-3);
246
+ padding-inline: var(--ui-space-4);
247
+ scrollbar-width: thin;
248
+ white-space: pre;
249
+
250
+ > :is(code, samp) {
251
+ background: none;
252
+ border-radius: 0;
253
+ color: inherit;
254
+ font-size: inherit;
255
+ padding: 0;
256
+ word-break: normal;
257
+ writing-mode: inherit;
258
+ }
235
259
  }
236
260
  }
261
+
262
+ :where(pre.ui-code-block) {
263
+ font-size: var(--ui-font-size-small);
264
+ }
237
265
  }
238
266
 
239
267
  /* Rich text */
240
- @layer components.extended {
241
- @scope (.ui-rich-text) to (.ui-not-rich-text) {
242
- a {
243
- color: var(--primary);
244
- cursor: pointer;
245
- font-size: inherit;
246
- font-weight: 700;
247
- line-height: inherit;
248
- text-decoration: underline;
249
- text-decoration-color: var(--primary);
250
- text-underline-offset: 2px;
268
+ @property --_flow-gap {
269
+ inherits: true;
270
+ initial-value: 0px;
271
+ syntax: "<length>";
272
+ }
251
273
 
252
- &[href] {
274
+ @layer components.prose {
275
+ :where(p:not(.ui-p), small, span).ui-small {
276
+ font-size: max(0.75em, var(--ui-font-size-caption));
277
+ }
253
278
 
254
- &:hover,
255
- &:focus-visible {
256
- color: var(--primary-light);
257
- }
279
+ @scope (.ui-rich-text) to (.ui-not-rich-text) {
280
+ :scope {
281
+ --_flow-gap: round(1.25em, var(--ui-rhythm-step));
282
+ min-inline-size: 0;
283
+ overflow-wrap: break-word;
284
+ }
285
+
286
+ :where(
287
+ address,
288
+ blockquote,
289
+ details:not([class]),
290
+ dl:not([class]),
291
+ ol:not([class]),
292
+ p,
293
+ table:not([class]),
294
+ ul:not([class])
295
+ ) {
296
+ margin-block: var(--_flow-gap);
297
+ }
298
+
299
+ :is(
300
+ blockquote:not([class]),
301
+ details:not([class]),
302
+ dl:not([class]) > dd,
303
+ :is(ol, ul):not([class]) > li
304
+ ) {
305
+ & > :first-child:not(ul, ol) {
306
+ margin-block-start: 0;
258
307
  }
308
+
309
+ & > :last-child {
310
+ margin-block-end: 0;
311
+ }
312
+ }
313
+
314
+ a[href]:where(:not([class*="ui-"])) {
315
+ font-size: inherit;
316
+ line-height: inherit;
259
317
  }
260
318
 
261
319
  /* Blockquote */
262
320
  blockquote {
263
- border-inline-start: var(--border-size-3) solid currentColor;
321
+ border-inline-start: calc(var(--ui-border-width-thick) * 1.5) solid
322
+ currentColor;
264
323
  font-size: inherit;
265
324
  line-height: inherit;
266
- padding-block: var(--size-3);
267
- padding-inline: var(--size-4);
325
+ padding-block: var(--ui-space-3);
326
+ padding-inline: var(--ui-space-4);
268
327
 
269
328
  :first-child {
270
329
  margin-block-start: 0;
@@ -275,132 +334,185 @@
275
334
  }
276
335
 
277
336
  footer {
278
- color: var(--text-muted);
279
- margin-block-start: var(--size-3);
337
+ color: var(--ui-text);
338
+ margin-block-start: var(--_flow-gap);
280
339
  }
281
340
  }
282
341
 
283
342
  /* Code */
284
343
  pre {
285
- border-radius: var(--border-radius);
286
- font-size: var(--font-size-05);
287
- margin-block: var(--size-6);
288
- max-inline-size: max-content;
289
- min-inline-size: 0;
290
- padding-block: var(--size-3);
291
- padding-inline: var(--size-4);
292
- white-space: pre;
293
- }
294
-
295
- pre:has(> code) {
296
- background-color: var(--color-15);
297
- border-radius: var(--border-radius);
298
- color: var(--color-1);
299
- max-inline-size: 100%;
300
- overflow-x: auto;
301
- scrollbar-width: thin;
302
-
303
- >code {
304
- background: none;
305
- border-radius: 0;
306
- color: inherit;
307
- font-size: inherit;
308
- padding: 0;
309
- word-break: normal;
310
- writing-mode: inherit;
311
- }
344
+ font-size: 0.875em;
345
+ line-height: round(
346
+ up,
347
+ 1em + 2 * var(--ui-rhythm-step),
348
+ var(--ui-rhythm-step)
349
+ );
350
+ margin-block: round(var(--_flow-gap) * 1.5, var(--ui-rhythm-step));
312
351
  }
313
352
 
314
353
  /* Text */
315
354
  p {
316
355
  font-size: inherit;
317
356
  line-height: inherit;
318
- margin-block: 1.25em;
319
357
  text-wrap: pretty;
320
358
  }
321
359
 
322
- :is(h1, h2, h3, h4, h5, h6) {
323
- color: var(--text-primary);
324
- font-weight: 700;
325
- text-wrap: pretty;
360
+ /* Figures */
361
+ figure {
362
+ display: grid;
363
+ gap: var(--ui-space-2);
364
+ margin-block: round(var(--_flow-gap) * 1.5, var(--ui-rhythm-step));
365
+ place-items: center;
366
+
367
+ & > * {
368
+ margin-block: 0;
369
+ min-inline-size: 0;
370
+ }
371
+
372
+ &:not([class]) > :where(blockquote, pre, table) {
373
+ justify-self: stretch;
374
+ }
326
375
 
327
- &+*:not(&) {
376
+ &:not([class]):has(> :where(blockquote, pre, table)) > figcaption {
377
+ justify-self: start;
378
+ }
379
+
380
+ & figcaption {
381
+ color: var(--ui-text);
382
+ font-size: var(--ui-font-size-caption);
383
+ line-height: round(
384
+ up,
385
+ 1em + 2 * var(--ui-rhythm-step),
386
+ var(--ui-rhythm-step)
387
+ );
388
+ text-wrap: pretty;
389
+ }
390
+ }
391
+
392
+ :where(.ui-content) {
393
+ & > :first-child {
328
394
  margin-block-start: 0;
329
395
  }
396
+
397
+ & > :last-child {
398
+ margin-block-end: 0;
399
+ }
330
400
  }
331
401
 
332
- h1 {
333
- font-size: var(--font-size-h1, var(--font-size-7));
334
- letter-spacing: -0.02em;
335
- line-height: 1.1111111;
336
- margin-block: 0 0.8888889em;
402
+ /* Horizontal rules */
403
+ hr {
404
+ &:not([class]) {
405
+ border-block-start: var(--ui-border-width) solid var(--ui-border-color);
406
+ margin-block: calc(var(--_flow-gap) * 2);
407
+ }
408
+
409
+ & + * {
410
+ margin-block-start: 0;
411
+ }
337
412
  }
338
413
 
339
- h2 {
340
- font-size: var(--font-size-h2, var(--font-size-5, 2rem));
341
- letter-spacing: -0.02em;
342
- line-height: 1.3333333;
343
- margin-block: 2em 1em;
414
+ :is(h1, h2, h3, h4, h5, h6) {
415
+ & + * {
416
+ margin-block-start: 0;
417
+ }
344
418
  }
345
419
 
346
- h3 {
347
- font-size: var(--font-size-h3, var(--font-size-4, 1.5rem));
348
- letter-spacing: -0.01em;
349
- line-height: 1.6;
350
- margin-block: 1.6em 0.6em;
420
+ :is(h1, h2, h3, h4, h5, h6):where(:not([class])) {
421
+ /* Firefox and Safari fallback */
422
+ @supports (inline-size: calc(1px * 1em / 1rem)) {
423
+ --_font-scale: calc(1em / 1rem);
424
+ }
425
+
426
+ color: var(--ui-text-strong);
427
+ font-weight: var(--ui-font-weight-bold);
428
+ line-height: round(
429
+ up,
430
+ 1em + 2 * var(--ui-rhythm-step),
431
+ var(--ui-rhythm-step)
432
+ );
433
+ text-wrap: pretty;
351
434
  }
352
435
 
353
- h4 {
354
- font-size: var(--font-size-h4, var(--font-size-3, 1.25rem));
355
- letter-spacing: -0.01em;
356
- line-height: 1.5;
357
- margin-block: 1.5em 0.5em;
436
+ h1:where(:not([class])) {
437
+ font-size: round(
438
+ calc(var(--ui-font-size-h1) * var(--_font-scale, 1)),
439
+ var(--ui-rhythm-step) / 2
440
+ );
441
+ letter-spacing: var(--ui-letter-spacing-display);
442
+ margin-block: calc(var(--_flow-gap) * 3) var(--_flow-gap);
358
443
  }
359
444
 
360
- h5 {
361
- font-size: var(--font-size-h5, var(--font-size-2, 1.1rem));
362
- line-height: 1;
363
- margin-block: 0 var(--size-1);
445
+ h2:where(:not([class])) {
446
+ font-size: round(
447
+ calc(var(--ui-font-size-h2) * var(--_font-scale, 1)),
448
+ var(--ui-rhythm-step) / 2
449
+ );
450
+ letter-spacing: var(--ui-letter-spacing-display);
451
+ margin-block: calc(var(--_flow-gap) * 3)
452
+ round(var(--_flow-gap) * 0.75, var(--ui-rhythm-step));
364
453
  }
365
454
 
366
- h6 {
367
- font-size: var(--font-size-h6, var(--font-size-1, 1rem));
368
- line-height: 1;
369
- margin-block: 0 var(--size-1);
455
+ h3:where(:not([class])) {
456
+ font-size: round(
457
+ calc(var(--ui-font-size-h3) * var(--_font-scale, 1)),
458
+ var(--ui-rhythm-step) / 2
459
+ );
460
+ letter-spacing: var(--ui-letter-spacing-heading);
461
+ margin-block: calc(var(--_flow-gap) * 2)
462
+ round(var(--_flow-gap) * 0.5, var(--ui-rhythm-step));
370
463
  }
371
464
 
372
- /** Overline */
373
- :is(.ui-overline, hgroup p:first-of-type:first-child) {
374
- color: light-dark(oklch(from var(--text-muted) calc(l * 1.25) c h),
375
- oklch(from var(--text-muted) calc(l * 0.75) c h));
376
- font-size: var(--font-size-0);
377
- font-weight: 500;
378
- letter-spacing: 0.06em;
379
- text-transform: uppercase;
465
+ h4:where(:not([class])) {
466
+ font-size: round(
467
+ calc(var(--ui-font-size-h4) * var(--_font-scale, 1)),
468
+ var(--ui-rhythm-step) / 2
469
+ );
470
+ letter-spacing: var(--ui-letter-spacing-heading);
471
+ margin-block: round(var(--_flow-gap) * 1.5, var(--ui-rhythm-step))
472
+ round(var(--_flow-gap) * 0.5, var(--ui-rhythm-step));
473
+ }
474
+
475
+ h5:where(:not([class])) {
476
+ font-size: round(
477
+ calc(var(--ui-font-size-h5) * var(--_font-scale, 1)),
478
+ var(--ui-rhythm-step) / 2
479
+ );
480
+ margin-block: round(var(--_flow-gap) * 1.5, var(--ui-rhythm-step))
481
+ round(var(--_flow-gap) * 0.5, var(--ui-rhythm-step));
482
+ }
483
+
484
+ h6:where(:not([class])) {
485
+ font-size: round(
486
+ calc(var(--ui-font-size-h6) * var(--_font-scale, 1)),
487
+ var(--ui-rhythm-step) / 2
488
+ );
489
+ margin-block: round(var(--_flow-gap) * 1.5, var(--ui-rhythm-step))
490
+ round(var(--_flow-gap) * 0.5, var(--ui-rhythm-step));
380
491
  }
381
492
 
382
493
  hgroup {
383
- &>p {
384
- margin: 0;
385
- }
494
+ margin-block-start: calc(var(--_flow-gap) * 3);
386
495
 
387
- &> :where(h1, h2, h3, h4, h5, h6) {
388
- margin-block: 0 0.4em;
496
+ & > p {
497
+ margin: 0;
389
498
  }
390
499
 
391
- &+* {
392
- margin-block-start: 3em;
500
+ & > :where(h1, h2, h3, h4, h5, h6) {
501
+ margin-block: 0 round(var(--_flow-gap) * 0.75, var(--ui-rhythm-step));
393
502
  }
394
503
 
395
- /* Body paragraphs after the heading */
396
- &>p:not(:first-of-type:first-child) {
397
- color: oklch(from currentColor l c h / 75%);
398
- font-size: var(--font-size-3);
399
- line-height: 1.6;
504
+ & + * {
505
+ margin-block-start: round(
506
+ var(--_flow-gap) * 2.5,
507
+ var(--ui-rhythm-step)
508
+ );
400
509
  }
401
510
 
402
- &>p+p {
403
- margin-block-start: 0.75em;
511
+ & > p + p {
512
+ margin-block-start: round(
513
+ var(--_flow-gap) * 0.75,
514
+ var(--ui-rhythm-step)
515
+ );
404
516
  }
405
517
  }
406
518
 
@@ -409,120 +521,198 @@
409
521
  list-style-type: disc;
410
522
  }
411
523
 
412
- ol:not([class]) {
524
+ ol:not([class], [type]) {
413
525
  list-style-type: decimal;
414
526
  }
415
527
 
416
- :where(ul, ol):not([class]) {
528
+ :where(ul, ol):where(:not([class])) {
417
529
  display: grid;
418
530
  font-size: inherit;
419
531
  gap: 0.5em;
420
532
  line-height: inherit;
421
- margin-block-end: 1.25em;
422
- margin-block-start: 1.25em;
423
- padding-inline-start: 1.625em;
533
+ padding-inline-start: calc(2ch + 1em);
534
+
535
+ &:has(> li > :where(blockquote, figure, p, pre)) {
536
+ gap: var(--_flow-gap);
537
+ }
538
+
539
+ & > li {
540
+ min-inline-size: 0;
541
+ }
542
+ }
543
+
544
+ :where(ul):where(:not([class])) {
545
+ padding-inline-start: calc(2ch + 0.625em);
424
546
 
425
- li {
547
+ & > li {
426
548
  padding-inline-start: 0.375em;
427
549
  }
428
550
  }
429
551
 
552
+ :where(ol):where(:not([class])) {
553
+ --_count-digits: 2;
554
+ --_start-digits: 2;
555
+
556
+ padding-inline-start: calc(
557
+ max(var(--_count-digits), var(--_start-digits)) * 1ch + 1em
558
+ );
559
+
560
+ &:has(> li:nth-child(100)) {
561
+ --_count-digits: 3;
562
+ }
563
+
564
+ &:has(> li:nth-child(1000)) {
565
+ --_count-digits: 4;
566
+ }
567
+
568
+ &[start] {
569
+ /* Firefox and Safari fallback */
570
+ --_start-digits: 4;
571
+
572
+ @supports (x: attr(x type(*))) {
573
+ --_start-digits: calc(
574
+ round(down, log(attr(start type(<number>), 1) + 9, 10)) + 1
575
+ );
576
+ }
577
+ }
578
+
579
+ & > li::marker {
580
+ font-variant-numeric: tabular-nums;
581
+ }
582
+ }
583
+
584
+ li:has(
585
+ > input[type="checkbox"]:first-child,
586
+ > label:where(:not([class])):first-child
587
+ > input[type="checkbox"]:first-child
588
+ ) {
589
+ list-style-type: none;
590
+
591
+ & input[type="checkbox"] {
592
+ block-size: 1em;
593
+ inline-size: 1em;
594
+ margin-inline: -1.5em 0.25em;
595
+ vertical-align: -0.125em;
596
+ }
597
+ }
598
+
430
599
  /* Nested lists */
431
- :where(ul ul),
432
- :where(ul ol),
433
- :where(ol ul),
434
- :where(ol ol) {
435
- margin-block-end: 0.75em;
436
- margin-block-start: 0.75em;
600
+ :where(ul, ol) :where(ul, ol) {
601
+ margin-block: 0.5em 0;
437
602
  }
438
603
 
439
604
  /* Description lists */
440
605
  :where(dl) {
441
606
  font-size: inherit;
442
607
  line-height: inherit;
443
- margin-block-end: 1.25em;
444
- margin-block-start: 1.25em;
445
608
 
446
609
  dt {
447
- font-weight: 700;
448
- margin-block-start: 1.25em;
610
+ font-weight: var(--ui-font-weight-bold);
611
+ margin-block-start: 0;
449
612
  }
450
613
 
451
614
  dd {
452
615
  margin-block-start: 0.5em;
453
616
  padding-inline-start: 1.625em;
454
617
  }
618
+
619
+ dd + dt {
620
+ margin-block-start: var(--_flow-gap);
621
+ }
455
622
  }
456
623
 
457
- /* Figures */
458
- figure {
459
- display: grid;
460
- gap: var(--size-2);
461
- margin-block: var(--size-7);
462
- place-items: center;
624
+ /* Tables */
625
+ table:not([class]) {
626
+ border-collapse: collapse;
627
+ display: block;
628
+ font-variant-numeric: tabular-nums;
629
+ inline-size: 100%;
630
+ overflow-inline: auto;
631
+
632
+ caption {
633
+ color: var(--ui-text);
634
+ font-size: var(--ui-font-size-caption);
635
+ line-height: round(
636
+ up,
637
+ 1em + 2 * var(--ui-rhythm-step),
638
+ var(--ui-rhythm-step)
639
+ );
640
+ padding-block-end: var(--ui-space-2);
641
+ text-align: start;
642
+ }
463
643
 
464
- &>* {
465
- margin-block: 0;
644
+ :where(th, td) {
645
+ border-block-end: var(--ui-border-width) solid var(--ui-border-color);
646
+ overflow-wrap: break-word;
647
+ padding-block: 0.5em;
648
+ padding-inline: 0.75em;
649
+ text-align: start;
650
+ vertical-align: top;
651
+
652
+ &:first-child {
653
+ padding-inline-start: 0;
654
+ }
655
+
656
+ &:last-child {
657
+ padding-inline-end: 0;
658
+ }
466
659
  }
467
660
 
468
- & figcaption {
469
- font-size: var(--font-size-0);
470
- text-wrap: pretty;
661
+ thead th {
662
+ border-block-end-width: var(--ui-border-width-thick);
663
+ vertical-align: bottom;
664
+ }
665
+
666
+ tfoot :where(th, td) {
667
+ border-block-end: none;
668
+ border-block-start: var(--ui-border-width-thick) solid
669
+ var(--ui-border-color);
471
670
  }
472
671
  }
473
672
 
474
673
  /* Remove top margin from first child */
475
- &> :first-child {
674
+ & > :first-child {
476
675
  margin-block-start: 0;
477
676
  }
478
677
 
479
678
  /* Remove bottom margin from last child */
480
- &> :last-child {
679
+ & > :last-child {
481
680
  margin-block-end: 0;
482
681
  }
483
682
 
484
- /* Horizontal rules */
485
- hr {
486
- &+* {
487
- margin-block-start: 0;
488
- }
489
- }
490
-
491
683
  /* Inline text elements */
492
684
  :where(ins, u, abbr, dfn) {
493
685
  text-decoration: underline;
494
- text-underline-offset: 1px;
495
-
496
- @supports (-moz-appearance: none) {
497
- text-underline-offset: 2px;
498
- }
686
+ text-underline-offset: var(--ui-underline-offset-small);
499
687
  }
500
688
 
501
689
  :where(abbr, dfn) {
502
690
  font-style: normal;
503
- text-decoration: var(--color-9) underline dotted;
691
+ text-decoration: var(--ui-info) underline dotted;
504
692
 
505
693
  &[title] {
506
694
  cursor: help;
507
- text-underline-offset: 1px;
508
- }
509
-
510
- @supports (-moz-appearance: none) {
511
- text-underline-offset: 2px;
512
695
  }
513
696
  }
514
697
 
515
698
  sup {
516
- font-size: 0.5em;
517
- vertical-align: super;
699
+ font-size: 0.75em;
700
+ inset-block-start: -0.5em;
701
+ line-height: 0;
702
+ position: relative;
703
+ vertical-align: baseline;
518
704
  }
519
705
 
520
- :where(del, ins) {
521
- color: var(--color-9);
706
+ del {
707
+ color: var(--ui-critical-text);
708
+ }
709
+
710
+ ins {
711
+ color: var(--ui-success-text);
522
712
  }
523
713
 
524
714
  small {
525
- font-size: max(0.5em, var(--font-size-0, 0.75rem));
715
+ font-size: max(0.75em, var(--ui-font-size-caption));
526
716
  }
527
717
 
528
718
  cite {
@@ -530,41 +720,69 @@
530
720
  }
531
721
 
532
722
  /* Code */
533
- :where(code, kbd, samp, pre) {
534
- font-family: var(--font-mono);
723
+ :where(code, kbd, samp, pre, var) {
724
+ font-family: var(--ui-font-code);
535
725
  }
536
726
 
537
727
  code {
538
- background-color: oklch(0 0 0 / 18%);
539
- border-radius: var(--border-size-3);
728
+ background-color: var(--ui-code-bg-color);
729
+ border-radius: var(--ui-radius-small);
540
730
  font-size: 0.9em;
541
- padding: 0.1ex 0.3ex;
731
+ padding: 0.5ex;
732
+ }
733
+
734
+ a[href] code {
735
+ background-color: light-dark(transparent, oklch(0 0 0 / 24%));
736
+
737
+ @container not style(--ui-color-scheme: dark) {
738
+ padding-inline: 0;
739
+ }
740
+
741
+ @container style(--ui-contrast: more) {
742
+ background-color: transparent;
743
+ padding-inline: 0;
744
+ }
745
+ }
746
+
747
+ :is(del, ins) code {
748
+ background-color: transparent;
749
+ padding-inline: 0;
542
750
  }
543
751
 
544
752
  :where(kbd, var) {
545
- background-color: var(--text-muted);
546
- border-color: var(--text-muted);
547
- border-radius: var(--radius-2);
548
- border-width: var(--border-size-1);
549
- color: var(--text-muted-contrast);
550
- padding: 0.1ex 0.3ex;
753
+ background-color: var(--ui-surface-inverse);
754
+ border-radius: var(--ui-radius-small);
755
+ color: var(--ui-on-inverse);
756
+ padding-block: calc(0.1ex + var(--ui-border-width));
757
+ padding-inline: calc(0.3ex + var(--ui-border-width));
758
+ }
759
+
760
+ :not(pre) > code,
761
+ kbd,
762
+ var {
763
+ line-height: 1;
764
+ overflow-wrap: anywhere;
551
765
  }
552
766
 
553
- :not(pre) code,
554
- kbd {
555
- word-break: break-word;
767
+ :not(pre) > code {
768
+ writing-mode: horizontal-tb;
556
769
  }
557
770
 
558
- :not(pre) code {
559
- border-radius: var(--border-radius, var(--radius-2));
560
- padding: 0.5ex;
561
- writing-mode: lr;
771
+ :where(pre, :not(pre) > code):where(:not([dir])) {
772
+ direction: ltr;
773
+ unicode-bidi: isolate;
774
+ }
775
+
776
+ :is(h1, h2, h3, h4, h5, h6) :not(pre) > code {
777
+ padding-block: 0.05em;
778
+ padding-inline: 0.2em;
562
779
  }
563
780
 
564
781
  mark {
565
- border-radius: var(--radius-2);
782
+ border-radius: var(--ui-radius-small);
566
783
  box-decoration-break: clone;
567
- padding: 0.1ex 0.3ex;
784
+ padding-block: 0.1ex;
785
+ padding-inline: 0.3ex;
568
786
  vertical-align: baseline;
569
787
  }
570
788
 
@@ -574,7 +792,10 @@
574
792
 
575
793
  sub {
576
794
  font-size: 0.75em;
577
- vertical-align: sub;
795
+ inset-block-start: 0.25em;
796
+ line-height: 0;
797
+ position: relative;
798
+ vertical-align: baseline;
578
799
  }
579
800
  }
580
801
  }