opui-css 5.4.3 → 6.0.0-rc.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (740) hide show
  1. package/CHANGELOG.md +1015 -373
  2. package/LICENSE +21 -21
  3. package/MIGRATING-legacy.md +159 -0
  4. package/MIGRATING.md +1362 -138
  5. package/README.md +238 -87
  6. package/astro/index.ts +175 -46
  7. package/bin/opui-css.mjs +68 -0
  8. package/components/Accordion/Accordion.astro +21 -48
  9. package/components/Accordion/Accordion.react.tsx +23 -0
  10. package/components/Accordion/Accordion.svelte +27 -0
  11. package/components/Accordion/Accordion.vue +21 -38
  12. package/components/Accordion/AccordionActions.astro +16 -0
  13. package/components/Accordion/AccordionActions.react.tsx +15 -0
  14. package/components/Accordion/AccordionActions.svelte +23 -0
  15. package/components/Accordion/AccordionActions.vue +18 -0
  16. package/components/Accordion/AccordionContent.astro +9 -0
  17. package/components/Accordion/AccordionContent.react.tsx +6 -0
  18. package/components/Accordion/AccordionContent.svelte +15 -0
  19. package/components/Accordion/AccordionContent.vue +12 -0
  20. package/components/Accordion/AccordionSummary.astro +19 -0
  21. package/components/Accordion/AccordionSummary.react.tsx +30 -0
  22. package/components/Accordion/AccordionSummary.svelte +24 -0
  23. package/components/Accordion/AccordionSummary.vue +27 -0
  24. package/components/Accordion/icons.ts +2 -0
  25. package/components/Accordion/types.astro.ts +13 -4
  26. package/components/Accordion/types.react.ts +14 -0
  27. package/components/Accordion/types.svelte.ts +15 -7
  28. package/components/Accordion/types.ts +16 -10
  29. package/components/Accordion/types.vue-props.ts +22 -0
  30. package/components/Anchor/Anchor.astro +37 -49
  31. package/components/Anchor/Anchor.react.tsx +38 -0
  32. package/components/Anchor/Anchor.svelte +47 -0
  33. package/components/Anchor/Anchor.vue +43 -41
  34. package/components/Anchor/AnchorContent.astro +17 -0
  35. package/components/Anchor/AnchorContent.react.tsx +18 -0
  36. package/components/Anchor/AnchorContent.svelte +23 -0
  37. package/components/Anchor/AnchorContent.vue +20 -0
  38. package/components/Anchor/context.astro.ts +4 -0
  39. package/components/Anchor/context.react.ts +8 -0
  40. package/components/Anchor/context.svelte.ts +7 -0
  41. package/components/Anchor/context.vue.ts +4 -0
  42. package/components/Anchor/root.ts +12 -0
  43. package/components/Anchor/types.astro.ts +7 -4
  44. package/components/Anchor/types.react.ts +7 -0
  45. package/components/Anchor/types.svelte.ts +7 -7
  46. package/components/Anchor/types.ts +18 -9
  47. package/components/Anchor/types.vue-props.ts +15 -0
  48. package/components/Avatar/Avatar.astro +33 -29
  49. package/components/Avatar/Avatar.react.tsx +34 -0
  50. package/components/Avatar/Avatar.svelte +39 -0
  51. package/components/Avatar/Avatar.vue +26 -24
  52. package/components/Avatar/AvatarGroup.astro +9 -0
  53. package/components/Avatar/AvatarGroup.react.tsx +12 -0
  54. package/components/Avatar/AvatarGroup.svelte +15 -0
  55. package/components/Avatar/AvatarGroup.vue +12 -0
  56. package/components/Avatar/types.astro.ts +11 -10
  57. package/components/Avatar/types.react.ts +11 -0
  58. package/components/Avatar/types.svelte.ts +11 -12
  59. package/components/Avatar/types.ts +32 -29
  60. package/components/Avatar/types.vue-props.ts +11 -0
  61. package/components/Badge/Badge.astro +56 -51
  62. package/components/Badge/Badge.react.tsx +50 -0
  63. package/components/Badge/Badge.svelte +48 -0
  64. package/components/Badge/Badge.vue +36 -40
  65. package/components/Badge/types.astro.ts +4 -4
  66. package/components/Badge/types.react.ts +6 -0
  67. package/components/Badge/types.svelte.ts +7 -4
  68. package/components/Badge/types.ts +12 -12
  69. package/components/Badge/types.vue-props.ts +7 -0
  70. package/components/Button/Button.astro +36 -36
  71. package/components/Button/Button.react.tsx +33 -0
  72. package/components/Button/Button.svelte +37 -0
  73. package/components/Button/Button.vue +27 -27
  74. package/components/Button/types.astro.ts +6 -6
  75. package/components/Button/types.react.ts +11 -0
  76. package/components/Button/types.svelte.ts +15 -6
  77. package/components/Button/types.ts +32 -16
  78. package/components/Button/types.vue-props.ts +6 -0
  79. package/components/ButtonGroup/ButtonGroup.astro +33 -29
  80. package/components/ButtonGroup/ButtonGroup.react.tsx +30 -0
  81. package/components/ButtonGroup/ButtonGroup.svelte +34 -0
  82. package/components/ButtonGroup/ButtonGroup.vue +25 -22
  83. package/components/ButtonGroup/types.astro.ts +4 -4
  84. package/components/ButtonGroup/types.react.ts +4 -0
  85. package/components/ButtonGroup/types.svelte.ts +4 -4
  86. package/components/ButtonGroup/types.ts +7 -7
  87. package/components/ButtonGroup/types.vue-props.ts +6 -0
  88. package/components/Callout/Callout.astro +24 -76
  89. package/components/Callout/Callout.react.tsx +26 -0
  90. package/components/Callout/Callout.svelte +32 -0
  91. package/components/Callout/Callout.vue +23 -63
  92. package/components/Callout/CalloutContent.astro +9 -0
  93. package/components/Callout/CalloutContent.react.tsx +6 -0
  94. package/components/Callout/CalloutContent.svelte +15 -0
  95. package/components/Callout/CalloutContent.vue +12 -0
  96. package/components/Callout/CalloutIcon.astro +25 -0
  97. package/components/Callout/CalloutIcon.react.tsx +26 -0
  98. package/components/Callout/CalloutIcon.svelte +24 -0
  99. package/components/Callout/CalloutIcon.vue +25 -0
  100. package/components/Callout/context.astro.ts +4 -0
  101. package/components/Callout/context.react.ts +8 -0
  102. package/components/Callout/context.svelte.ts +7 -0
  103. package/components/Callout/context.vue.ts +4 -0
  104. package/components/Callout/icons.ts +23 -0
  105. package/components/Callout/types.astro.ts +9 -4
  106. package/components/Callout/types.react.ts +9 -0
  107. package/components/Callout/types.svelte.ts +9 -7
  108. package/components/Callout/types.ts +10 -10
  109. package/components/Callout/types.vue-props.ts +14 -0
  110. package/components/Card/Card.astro +18 -34
  111. package/components/Card/Card.react.tsx +15 -0
  112. package/components/Card/Card.svelte +23 -0
  113. package/components/Card/Card.vue +18 -28
  114. package/components/Card/CardActions.astro +16 -0
  115. package/components/Card/CardActions.react.tsx +15 -0
  116. package/components/Card/CardActions.svelte +23 -0
  117. package/components/Card/CardActions.vue +18 -0
  118. package/components/Card/CardContent.astro +9 -0
  119. package/components/Card/CardContent.react.tsx +6 -0
  120. package/components/Card/CardContent.svelte +15 -0
  121. package/components/Card/CardContent.vue +12 -0
  122. package/components/Card/CardHeader.astro +9 -0
  123. package/components/Card/CardHeader.react.tsx +6 -0
  124. package/components/Card/CardHeader.svelte +15 -0
  125. package/components/Card/CardHeader.vue +12 -0
  126. package/components/Card/types.astro.ts +10 -4
  127. package/components/Card/types.react.ts +10 -0
  128. package/components/Card/types.svelte.ts +11 -7
  129. package/components/Card/types.ts +11 -11
  130. package/components/Card/types.vue-props.ts +17 -0
  131. package/components/Carousel/Carousel.astro +44 -0
  132. package/components/Carousel/Carousel.react.tsx +47 -0
  133. package/components/Carousel/Carousel.svelte +45 -0
  134. package/components/Carousel/Carousel.vue +44 -0
  135. package/components/Carousel/types.astro.ts +4 -0
  136. package/components/Carousel/types.react.ts +4 -0
  137. package/components/Carousel/types.svelte.ts +4 -0
  138. package/components/Carousel/types.ts +11 -0
  139. package/components/Carousel/types.vue-props.ts +6 -0
  140. package/components/Checkbox/Checkbox.astro +58 -46
  141. package/components/Checkbox/Checkbox.react.tsx +51 -0
  142. package/components/Checkbox/Checkbox.svelte +61 -0
  143. package/components/Checkbox/Checkbox.vue +64 -43
  144. package/components/Checkbox/CheckboxInput.astro +20 -16
  145. package/components/Checkbox/CheckboxInput.react.tsx +39 -0
  146. package/components/Checkbox/CheckboxInput.svelte +34 -0
  147. package/components/Checkbox/CheckboxInput.vue +50 -32
  148. package/components/Checkbox/types.astro.ts +7 -8
  149. package/components/Checkbox/types.react.ts +11 -0
  150. package/components/Checkbox/types.svelte.ts +16 -12
  151. package/components/Checkbox/types.ts +20 -16
  152. package/components/Checkbox/types.vue-props.ts +15 -0
  153. package/components/Chip/Chip.astro +47 -31
  154. package/components/Chip/Chip.react.tsx +45 -0
  155. package/components/Chip/Chip.svelte +45 -0
  156. package/components/Chip/Chip.vue +44 -37
  157. package/components/Chip/types.astro.ts +9 -9
  158. package/components/Chip/types.react.ts +15 -0
  159. package/components/Chip/types.svelte.ts +16 -14
  160. package/components/Chip/types.ts +30 -13
  161. package/components/Chip/types.vue-props.ts +11 -0
  162. package/components/DescriptionList/DescriptionList.astro +22 -18
  163. package/components/DescriptionList/DescriptionList.react.tsx +25 -0
  164. package/components/DescriptionList/DescriptionList.svelte +29 -0
  165. package/components/DescriptionList/DescriptionList.vue +22 -23
  166. package/components/DescriptionList/DescriptionListDescription.astro +9 -0
  167. package/components/DescriptionList/DescriptionListDescription.react.tsx +9 -0
  168. package/components/DescriptionList/DescriptionListDescription.svelte +15 -0
  169. package/components/DescriptionList/{Description.vue → DescriptionListDescription.vue} +15 -12
  170. package/components/DescriptionList/DescriptionListItem.astro +9 -0
  171. package/components/DescriptionList/DescriptionListItem.react.tsx +6 -0
  172. package/components/DescriptionList/DescriptionListItem.svelte +15 -0
  173. package/components/DescriptionList/{Item.vue → DescriptionListItem.vue} +15 -12
  174. package/components/DescriptionList/DescriptionListTerm.astro +9 -0
  175. package/components/DescriptionList/DescriptionListTerm.react.tsx +6 -0
  176. package/components/DescriptionList/DescriptionListTerm.svelte +15 -0
  177. package/components/DescriptionList/{Term.vue → DescriptionListTerm.vue} +15 -12
  178. package/components/DescriptionList/types.astro.ts +10 -10
  179. package/components/DescriptionList/types.react.ts +10 -0
  180. package/components/DescriptionList/types.svelte.ts +10 -4
  181. package/components/DescriptionList/types.ts +5 -3
  182. package/components/DescriptionList/types.vue-props.ts +12 -0
  183. package/components/Dialog/Dialog.astro +24 -38
  184. package/components/Dialog/Dialog.react.tsx +23 -0
  185. package/components/Dialog/Dialog.svelte +33 -0
  186. package/components/Dialog/Dialog.vue +25 -35
  187. package/components/Dialog/DialogContent.astro +9 -0
  188. package/components/Dialog/DialogContent.react.tsx +6 -0
  189. package/components/Dialog/DialogContent.svelte +15 -0
  190. package/components/Dialog/DialogContent.vue +12 -0
  191. package/components/Dialog/DialogFooter.astro +16 -0
  192. package/components/Dialog/DialogFooter.react.tsx +15 -0
  193. package/components/Dialog/DialogFooter.svelte +23 -0
  194. package/components/Dialog/DialogFooter.vue +18 -0
  195. package/components/Dialog/DialogHeader.astro +9 -0
  196. package/components/Dialog/DialogHeader.react.tsx +6 -0
  197. package/components/Dialog/DialogHeader.svelte +15 -0
  198. package/components/Dialog/DialogHeader.vue +12 -0
  199. package/components/Dialog/DialogTitle.astro +14 -0
  200. package/components/Dialog/DialogTitle.react.tsx +13 -0
  201. package/components/Dialog/DialogTitle.svelte +23 -0
  202. package/components/Dialog/DialogTitle.vue +18 -0
  203. package/components/Dialog/context.astro.ts +4 -0
  204. package/components/Dialog/context.react.ts +8 -0
  205. package/components/Dialog/context.svelte.ts +7 -0
  206. package/components/Dialog/context.vue.ts +4 -0
  207. package/components/Dialog/types.astro.ts +12 -4
  208. package/components/Dialog/types.react.ts +12 -0
  209. package/components/Dialog/types.svelte.ts +15 -7
  210. package/components/Dialog/types.ts +17 -10
  211. package/components/Dialog/types.vue-props.ts +24 -0
  212. package/components/Divider/Divider.astro +34 -12
  213. package/components/Divider/Divider.react.tsx +36 -0
  214. package/components/Divider/Divider.svelte +40 -0
  215. package/components/Divider/Divider.vue +30 -12
  216. package/components/Divider/types.astro.ts +4 -4
  217. package/components/Divider/types.react.ts +4 -0
  218. package/components/Divider/types.svelte.ts +4 -4
  219. package/components/Divider/types.ts +5 -3
  220. package/components/Divider/types.vue-props.ts +6 -0
  221. package/components/Drawer/Drawer.astro +42 -47
  222. package/components/Drawer/Drawer.react.tsx +40 -0
  223. package/components/Drawer/Drawer.svelte +50 -0
  224. package/components/Drawer/Drawer.vue +41 -46
  225. package/components/Drawer/DrawerContent.astro +9 -0
  226. package/components/Drawer/DrawerContent.react.tsx +6 -0
  227. package/components/Drawer/DrawerContent.svelte +15 -0
  228. package/components/Drawer/DrawerContent.vue +12 -0
  229. package/components/Drawer/DrawerFooter.astro +16 -11
  230. package/components/Drawer/DrawerFooter.react.tsx +15 -0
  231. package/components/Drawer/DrawerFooter.svelte +23 -0
  232. package/components/Drawer/DrawerFooter.vue +18 -16
  233. package/components/Drawer/DrawerHeader.astro +35 -27
  234. package/components/Drawer/DrawerHeader.react.tsx +41 -0
  235. package/components/Drawer/DrawerHeader.svelte +42 -0
  236. package/components/Drawer/DrawerHeader.vue +35 -36
  237. package/components/Drawer/DrawerTitle.astro +14 -0
  238. package/components/Drawer/DrawerTitle.react.tsx +13 -0
  239. package/components/Drawer/DrawerTitle.svelte +23 -0
  240. package/components/Drawer/DrawerTitle.vue +18 -0
  241. package/components/Drawer/context.astro.ts +4 -0
  242. package/components/Drawer/context.react.ts +8 -0
  243. package/components/Drawer/context.svelte.ts +7 -0
  244. package/components/Drawer/context.vue.ts +4 -0
  245. package/components/Drawer/icons.ts +2 -0
  246. package/components/Drawer/types.astro.ts +12 -8
  247. package/components/Drawer/types.react.ts +13 -0
  248. package/components/Drawer/types.svelte.ts +16 -15
  249. package/components/Drawer/types.ts +25 -20
  250. package/components/Drawer/types.vue-props.ts +24 -0
  251. package/components/FieldDescription/FieldDescription.astro +9 -9
  252. package/components/FieldDescription/FieldDescription.react.tsx +6 -0
  253. package/components/FieldDescription/FieldDescription.svelte +15 -0
  254. package/components/FieldDescription/FieldDescription.vue +12 -12
  255. package/components/FieldDescription/types.astro.ts +4 -4
  256. package/components/FieldDescription/types.react.ts +4 -0
  257. package/components/FieldDescription/types.svelte.ts +4 -4
  258. package/components/FieldDescription/types.ts +1 -1
  259. package/components/FieldDescription/types.vue-props.ts +6 -0
  260. package/components/FieldGroup/FieldGroup.astro +24 -24
  261. package/components/FieldGroup/FieldGroup.react.tsx +27 -0
  262. package/components/FieldGroup/FieldGroup.svelte +32 -0
  263. package/components/FieldGroup/FieldGroup.vue +23 -25
  264. package/components/FieldGroup/context.astro.ts +4 -0
  265. package/components/FieldGroup/context.react.ts +8 -0
  266. package/components/FieldGroup/context.svelte.ts +8 -0
  267. package/components/FieldGroup/context.vue.ts +4 -0
  268. package/components/FieldGroup/types.astro.ts +4 -4
  269. package/components/FieldGroup/types.react.ts +4 -0
  270. package/components/FieldGroup/types.svelte.ts +4 -4
  271. package/components/FieldGroup/types.ts +6 -4
  272. package/components/FieldGroup/types.vue-props.ts +6 -0
  273. package/components/FieldLegend/FieldLegend.astro +11 -11
  274. package/components/FieldLegend/FieldLegend.react.tsx +14 -0
  275. package/components/FieldLegend/FieldLegend.svelte +20 -0
  276. package/components/FieldLegend/FieldLegend.vue +20 -18
  277. package/components/FieldLegend/types.astro.ts +6 -6
  278. package/components/FieldLegend/types.react.ts +6 -0
  279. package/components/FieldLegend/types.svelte.ts +6 -6
  280. package/components/FieldLegend/types.ts +1 -1
  281. package/components/FieldLegend/types.vue-props.ts +9 -0
  282. package/components/{FieldSet/FieldSet.astro → Fieldset/Fieldset.astro} +15 -11
  283. package/components/Fieldset/Fieldset.react.tsx +15 -0
  284. package/components/Fieldset/Fieldset.svelte +21 -0
  285. package/components/Fieldset/Fieldset.vue +21 -0
  286. package/components/{FieldSet → Fieldset}/types.astro.ts +6 -6
  287. package/components/Fieldset/types.react.ts +6 -0
  288. package/components/Fieldset/types.svelte.ts +6 -0
  289. package/components/Fieldset/types.ts +1 -0
  290. package/components/Fieldset/types.vue-props.ts +9 -0
  291. package/components/Form/Form.astro +10 -10
  292. package/components/Form/Form.react.tsx +9 -0
  293. package/components/Form/Form.svelte +16 -0
  294. package/components/Form/Form.vue +16 -14
  295. package/components/Form/types.astro.ts +6 -6
  296. package/components/Form/types.react.ts +6 -0
  297. package/components/Form/types.svelte.ts +6 -7
  298. package/components/Form/types.ts +1 -1
  299. package/components/Form/types.vue-props.ts +9 -0
  300. package/components/List/List.astro +29 -29
  301. package/components/List/List.react.tsx +27 -0
  302. package/components/List/List.svelte +31 -0
  303. package/components/List/List.vue +23 -28
  304. package/components/List/types.astro.ts +4 -4
  305. package/components/List/types.react.ts +4 -0
  306. package/components/List/types.svelte.ts +4 -4
  307. package/components/List/types.ts +6 -7
  308. package/components/List/types.vue-props.ts +6 -0
  309. package/components/ListItem/ListItem.astro +115 -108
  310. package/components/ListItem/ListItem.react.tsx +65 -0
  311. package/components/ListItem/ListItem.svelte +80 -0
  312. package/components/ListItem/ListItem.vue +93 -98
  313. package/components/ListItem/types.astro.ts +9 -10
  314. package/components/ListItem/types.react.ts +17 -0
  315. package/components/ListItem/types.svelte.ts +17 -14
  316. package/components/ListItem/types.ts +35 -32
  317. package/components/ListItem/types.vue-props.ts +14 -0
  318. package/components/Menu/Menu.astro +86 -0
  319. package/components/Menu/Menu.react.tsx +87 -0
  320. package/components/Menu/Menu.svelte +71 -0
  321. package/components/Menu/Menu.vue +76 -0
  322. package/components/Menu/context.astro.ts +4 -0
  323. package/components/Menu/context.react.ts +8 -0
  324. package/components/Menu/context.svelte.ts +7 -0
  325. package/components/Menu/context.vue.ts +4 -0
  326. package/components/Menu/types.astro.ts +12 -0
  327. package/components/Menu/types.react.ts +12 -0
  328. package/components/Menu/types.svelte.ts +12 -0
  329. package/components/Menu/types.ts +23 -0
  330. package/components/Menu/types.vue-props.ts +16 -0
  331. package/components/Progress/Progress.astro +20 -31
  332. package/components/Progress/Progress.react.tsx +27 -0
  333. package/components/Progress/Progress.svelte +30 -0
  334. package/components/Progress/Progress.vue +30 -34
  335. package/components/Progress/types.astro.ts +5 -4
  336. package/components/Progress/types.react.ts +5 -0
  337. package/components/Progress/types.svelte.ts +5 -4
  338. package/components/Progress/types.ts +5 -10
  339. package/components/Progress/types.vue-props.ts +6 -0
  340. package/components/Radio/Radio.astro +58 -44
  341. package/components/Radio/Radio.react.tsx +51 -0
  342. package/components/Radio/Radio.svelte +59 -0
  343. package/components/Radio/Radio.vue +62 -41
  344. package/components/Radio/RadioInput.astro +10 -7
  345. package/components/Radio/RadioInput.react.tsx +10 -0
  346. package/components/Radio/RadioInput.svelte +27 -0
  347. package/components/Radio/RadioInput.vue +39 -14
  348. package/components/Radio/types.astro.ts +7 -6
  349. package/components/Radio/types.react.ts +11 -0
  350. package/components/Radio/types.svelte.ts +16 -12
  351. package/components/Radio/types.ts +17 -12
  352. package/components/Radio/types.vue-props.ts +15 -0
  353. package/components/Range/Range.astro +139 -128
  354. package/components/Range/Range.react.tsx +157 -0
  355. package/components/Range/Range.svelte +136 -0
  356. package/components/Range/Range.vue +169 -85
  357. package/components/Range/types.astro.ts +1 -3
  358. package/components/Range/types.react.ts +10 -0
  359. package/components/Range/types.svelte.ts +8 -3
  360. package/components/Range/types.ts +24 -25
  361. package/components/Range/types.vue-props.ts +16 -0
  362. package/components/Range/value.ts +27 -0
  363. package/components/Select/Select.astro +147 -108
  364. package/components/Select/Select.react.tsx +124 -0
  365. package/components/Select/Select.svelte +123 -0
  366. package/components/Select/Select.vue +157 -85
  367. package/components/Select/selection.ts +11 -0
  368. package/components/Select/types.react.ts +6 -0
  369. package/components/Select/types.svelte.ts +1 -1
  370. package/components/Select/types.ts +16 -13
  371. package/components/Select/types.vue-props.ts +20 -0
  372. package/components/Switch/Switch.astro +72 -76
  373. package/components/Switch/Switch.react.tsx +63 -0
  374. package/components/Switch/Switch.svelte +73 -0
  375. package/components/Switch/Switch.vue +81 -63
  376. package/components/Switch/SwitchInput.astro +10 -7
  377. package/components/Switch/SwitchInput.react.tsx +12 -0
  378. package/components/Switch/SwitchInput.svelte +30 -0
  379. package/components/Switch/SwitchInput.vue +36 -14
  380. package/components/Switch/types.astro.ts +7 -5
  381. package/components/Switch/types.react.ts +11 -0
  382. package/components/Switch/types.svelte.ts +16 -9
  383. package/components/Switch/types.ts +19 -16
  384. package/components/Switch/types.vue-props.ts +17 -0
  385. package/components/Table/Table.astro +27 -14
  386. package/components/Table/Table.react.tsx +24 -0
  387. package/components/Table/Table.svelte +28 -0
  388. package/components/Table/Table.vue +20 -19
  389. package/components/Table/TableBody.astro +9 -0
  390. package/components/Table/TableBody.react.tsx +5 -0
  391. package/components/Table/TableBody.svelte +9 -0
  392. package/components/Table/TableBody.vue +12 -0
  393. package/components/Table/TableCaption.astro +9 -0
  394. package/components/Table/TableCaption.react.tsx +5 -0
  395. package/components/Table/TableCaption.svelte +9 -0
  396. package/components/Table/TableCaption.vue +12 -0
  397. package/components/Table/TableCell.astro +9 -0
  398. package/components/Table/TableCell.react.tsx +6 -0
  399. package/components/Table/TableCell.svelte +16 -0
  400. package/components/Table/TableCell.vue +12 -0
  401. package/components/Table/TableColumn.astro +8 -0
  402. package/components/Table/TableColumn.react.tsx +7 -0
  403. package/components/Table/TableColumn.svelte +8 -0
  404. package/components/Table/TableColumn.vue +12 -0
  405. package/components/Table/TableColumnGroup.astro +9 -0
  406. package/components/Table/TableColumnGroup.react.tsx +5 -0
  407. package/components/Table/TableColumnGroup.svelte +9 -0
  408. package/components/Table/TableColumnGroup.vue +12 -0
  409. package/components/Table/TableFoot.astro +9 -0
  410. package/components/Table/TableFoot.react.tsx +5 -0
  411. package/components/Table/TableFoot.svelte +9 -0
  412. package/components/Table/TableFoot.vue +12 -0
  413. package/components/Table/TableHead.astro +9 -0
  414. package/components/Table/TableHead.react.tsx +5 -0
  415. package/components/Table/TableHead.svelte +9 -0
  416. package/components/Table/TableHead.vue +12 -0
  417. package/components/Table/TableHeaderCell.astro +9 -0
  418. package/components/Table/TableHeaderCell.react.tsx +10 -0
  419. package/components/Table/TableHeaderCell.svelte +16 -0
  420. package/components/Table/TableHeaderCell.vue +12 -0
  421. package/components/Table/TableRow.astro +9 -0
  422. package/components/Table/TableRow.react.tsx +5 -0
  423. package/components/Table/TableRow.svelte +9 -0
  424. package/components/Table/TableRow.vue +12 -0
  425. package/components/Table/types.astro.ts +22 -16
  426. package/components/Table/types.react.ts +22 -0
  427. package/components/Table/types.svelte.ts +23 -11
  428. package/components/Table/types.ts +14 -9
  429. package/components/Table/types.vue-props.ts +28 -0
  430. package/components/Tabs/Tabs.astro +34 -24
  431. package/components/Tabs/Tabs.react.tsx +43 -0
  432. package/components/Tabs/Tabs.svelte +43 -0
  433. package/components/Tabs/Tabs.vue +30 -20
  434. package/components/Tabs/TabsItem.astro +28 -40
  435. package/components/Tabs/TabsItem.react.tsx +47 -0
  436. package/components/Tabs/TabsItem.svelte +52 -0
  437. package/components/Tabs/TabsItem.vue +41 -39
  438. package/components/Tabs/TabsLabel.astro +16 -0
  439. package/components/Tabs/TabsLabel.react.tsx +17 -0
  440. package/components/Tabs/TabsLabel.svelte +19 -0
  441. package/components/Tabs/TabsLabel.vue +16 -0
  442. package/components/Tabs/TabsPanel.astro +9 -16
  443. package/components/Tabs/TabsPanel.react.tsx +6 -0
  444. package/components/Tabs/TabsPanel.svelte +15 -0
  445. package/components/Tabs/TabsPanel.vue +12 -31
  446. package/components/Tabs/context.astro.ts +4 -0
  447. package/components/Tabs/context.react.ts +8 -0
  448. package/components/Tabs/context.svelte.ts +7 -0
  449. package/components/Tabs/context.vue.ts +4 -0
  450. package/components/Tabs/types.astro.ts +13 -11
  451. package/components/Tabs/types.react.ts +12 -0
  452. package/components/Tabs/types.svelte.ts +10 -10
  453. package/components/Tabs/types.ts +21 -19
  454. package/components/Tabs/types.vue-props.ts +25 -0
  455. package/components/TextField/TextField.astro +108 -124
  456. package/components/TextField/TextField.react.tsx +70 -0
  457. package/components/TextField/TextField.svelte +84 -0
  458. package/components/TextField/TextField.vue +94 -74
  459. package/components/TextField/types.astro.ts +15 -17
  460. package/components/TextField/types.react.ts +12 -0
  461. package/components/TextField/types.svelte.ts +2 -4
  462. package/components/TextField/types.ts +11 -25
  463. package/components/TextField/types.vue-props.ts +21 -0
  464. package/components/Textarea/Textarea.astro +104 -118
  465. package/components/Textarea/Textarea.react.tsx +64 -0
  466. package/components/Textarea/Textarea.svelte +80 -0
  467. package/components/Textarea/Textarea.vue +88 -64
  468. package/components/Textarea/types.astro.ts +8 -10
  469. package/components/Textarea/types.react.ts +8 -0
  470. package/components/Textarea/types.svelte.ts +13 -21
  471. package/components/Textarea/types.ts +21 -33
  472. package/components/Textarea/types.vue-props.ts +20 -0
  473. package/components/ToggleButton/ToggleButton.astro +43 -43
  474. package/components/ToggleButton/ToggleButton.react.tsx +57 -0
  475. package/components/ToggleButton/ToggleButton.svelte +58 -0
  476. package/components/ToggleButton/ToggleButton.vue +65 -41
  477. package/components/ToggleButton/types.astro.ts +4 -4
  478. package/components/ToggleButton/types.react.ts +4 -0
  479. package/components/ToggleButton/types.svelte.ts +5 -7
  480. package/components/ToggleButton/types.ts +6 -10
  481. package/components/ToggleButton/types.vue-props.ts +11 -0
  482. package/components/ToggleGroup/ToggleGroup.astro +40 -42
  483. package/components/ToggleGroup/ToggleGroup.react.tsx +54 -0
  484. package/components/ToggleGroup/ToggleGroup.svelte +54 -0
  485. package/components/ToggleGroup/ToggleGroup.vue +45 -36
  486. package/components/ToggleGroup/context.astro.ts +5 -0
  487. package/components/ToggleGroup/context.react.ts +8 -0
  488. package/components/ToggleGroup/context.svelte.ts +8 -0
  489. package/components/ToggleGroup/context.vue.ts +4 -0
  490. package/components/ToggleGroup/selection.ts +12 -0
  491. package/components/ToggleGroup/types.astro.ts +4 -4
  492. package/components/ToggleGroup/types.react.ts +12 -0
  493. package/components/ToggleGroup/types.svelte.ts +6 -9
  494. package/components/ToggleGroup/types.ts +17 -15
  495. package/components/ToggleGroup/types.vue-props.ts +6 -0
  496. package/components/Tooltip/Tooltip.astro +22 -23
  497. package/components/Tooltip/Tooltip.react.tsx +24 -0
  498. package/components/Tooltip/Tooltip.svelte +29 -0
  499. package/components/Tooltip/Tooltip.vue +21 -22
  500. package/components/Tooltip/types.astro.ts +4 -4
  501. package/components/Tooltip/types.react.ts +4 -0
  502. package/components/Tooltip/types.svelte.ts +4 -7
  503. package/components/Tooltip/types.ts +5 -11
  504. package/components/Tooltip/types.vue-props.ts +6 -0
  505. package/components/content.svelte +9 -0
  506. package/components/context.astro.ts +15 -0
  507. package/components/cx.ts +12 -0
  508. package/components/dev.ts +63 -0
  509. package/components/group.ts +2 -0
  510. package/components/id.ts +9 -0
  511. package/components/style.ts +33 -0
  512. package/components/tag.ts +6 -0
  513. package/components/vue.ts +18 -0
  514. package/core/normalize.css +191 -214
  515. package/core/palette.css +131 -314
  516. package/core/utils.css +55 -68
  517. package/css/compat/avatar.css +7 -0
  518. package/css/compat/menu.css +20 -0
  519. package/css/compat.css +3 -0
  520. package/css/components/accordion.css +237 -173
  521. package/css/components/anchor.css +40 -27
  522. package/css/components/avatar.css +105 -65
  523. package/css/components/badge.css +146 -107
  524. package/css/components/button-group.css +170 -179
  525. package/css/components/button.css +422 -212
  526. package/css/components/callout.css +153 -112
  527. package/css/components/card.css +234 -116
  528. package/css/components/carousel.css +399 -0
  529. package/css/components/checkbox.css +90 -211
  530. package/css/components/chip.css +215 -92
  531. package/css/components/choice.css +291 -0
  532. package/css/components/description-list.css +91 -81
  533. package/css/components/dialog.css +154 -64
  534. package/css/components/divider.css +73 -20
  535. package/css/components/drawer.css +300 -170
  536. package/css/components/form.css +131 -146
  537. package/css/components/layout.css +92 -0
  538. package/css/components/link.css +53 -21
  539. package/css/components/list.css +460 -343
  540. package/css/components/menu.css +174 -0
  541. package/css/components/progress.css +107 -99
  542. package/css/components/radio.css +61 -170
  543. package/css/components/range.css +463 -320
  544. package/css/components/select.css +189 -170
  545. package/css/components/spinner.css +57 -38
  546. package/css/components/switch.css +197 -270
  547. package/css/components/table.css +214 -173
  548. package/css/components/tabs.css +278 -84
  549. package/css/components/text-field.css +559 -449
  550. package/css/components/textarea.css +20 -26
  551. package/css/components/toggle-button.css +131 -91
  552. package/css/components/toggle-group.css +86 -56
  553. package/css/components/tooltip.css +125 -68
  554. package/css/components/typography.css +801 -580
  555. package/css/components.css +48 -41
  556. package/css/imports.css +15 -17
  557. package/css/js/checkbox.d.ts +3 -0
  558. package/css/js/checkbox.js +31 -21
  559. package/css/js/range.d.ts +1 -0
  560. package/css/js/range.js +44 -0
  561. package/css/layers.css +2 -0
  562. package/css/theme.css +750 -124
  563. package/dist/op.css +16 -241
  564. package/dist/op.css.map +1 -1
  565. package/dist/opui.baseline-2023.css +9209 -0
  566. package/dist/opui.baseline-2023.css.map +1 -0
  567. package/dist/opui.baseline-2024.css +9209 -0
  568. package/dist/opui.baseline-2024.css.map +1 -0
  569. package/dist/opui.baseline-2025.css +9209 -0
  570. package/dist/opui.baseline-2025.css.map +1 -0
  571. package/dist/opui.baseline-2026.css +9209 -0
  572. package/dist/opui.baseline-2026.css.map +1 -0
  573. package/dist/opui.components.css +7346 -5140
  574. package/dist/opui.components.css.map +1 -1
  575. package/dist/opui.css +8489 -6128
  576. package/dist/opui.css.map +1 -1
  577. package/dist/opui.no-compat.css +9182 -0
  578. package/dist/opui.no-compat.css.map +1 -0
  579. package/env.d.ts +17 -14
  580. package/open-props.css +15 -6
  581. package/package.json +136 -90
  582. package/react/elements.ts +13 -0
  583. package/react/index.ts +176 -0
  584. package/skills/opui/SKILL.md +75 -0
  585. package/skills/opui/references/accordion.md +253 -0
  586. package/skills/opui/references/anchor.md +213 -0
  587. package/skills/opui/references/avatar.md +202 -0
  588. package/skills/opui/references/badge.md +199 -0
  589. package/skills/opui/references/button-group.md +239 -0
  590. package/skills/opui/references/button.md +242 -0
  591. package/skills/opui/references/callout.md +221 -0
  592. package/skills/opui/references/card.md +222 -0
  593. package/skills/opui/references/carousel.md +269 -0
  594. package/skills/opui/references/checkbox.md +241 -0
  595. package/skills/opui/references/chip.md +135 -0
  596. package/skills/opui/references/customizing.md +85 -0
  597. package/skills/opui/references/description-list.md +191 -0
  598. package/skills/opui/references/dialog.md +301 -0
  599. package/skills/opui/references/divider.md +112 -0
  600. package/skills/opui/references/drawer.md +802 -0
  601. package/skills/opui/references/form.md +260 -0
  602. package/skills/opui/references/getting-started.md +398 -0
  603. package/skills/opui/references/index.md +89 -0
  604. package/skills/opui/references/layout.md +161 -0
  605. package/skills/opui/references/list.md +216 -0
  606. package/skills/opui/references/menu.md +248 -0
  607. package/skills/opui/references/progress.md +114 -0
  608. package/skills/opui/references/radio.md +234 -0
  609. package/skills/opui/references/range.md +150 -0
  610. package/skills/opui/references/select.md +255 -0
  611. package/skills/opui/references/spinner.md +85 -0
  612. package/skills/opui/references/switch.md +223 -0
  613. package/skills/opui/references/table.md +480 -0
  614. package/skills/opui/references/tabs.md +257 -0
  615. package/skills/opui/references/text-field.md +167 -0
  616. package/skills/opui/references/textarea.md +169 -0
  617. package/skills/opui/references/theming.md +278 -0
  618. package/skills/opui/references/toggle.md +222 -0
  619. package/skills/opui/references/tooltip.md +167 -0
  620. package/skills/opui/references/typography.md +159 -0
  621. package/svelte/elements.ts +7 -0
  622. package/svelte/index.ts +177 -0
  623. package/themes/bootstrap.css +223 -0
  624. package/themes/brutalist.css +105 -0
  625. package/themes/m3.css +152 -0
  626. package/themes/shadcn.css +125 -0
  627. package/tokens.json +3729 -0
  628. package/vue/index.ts +175 -54
  629. package/components/AGENTS.md +0 -247
  630. package/components/Accordion/types.d.vue.ts +0 -15
  631. package/components/Accordion/types.solid.ts +0 -6
  632. package/components/Anchor/types.d.vue.ts +0 -10
  633. package/components/Anchor/types.solid.ts +0 -6
  634. package/components/Avatar/types.d.vue.ts +0 -12
  635. package/components/Avatar/types.solid.ts +0 -11
  636. package/components/Badge/types.d.vue.ts +0 -10
  637. package/components/Badge/types.solid.ts +0 -4
  638. package/components/Button/types.d.vue.ts +0 -10
  639. package/components/Button/types.solid.ts +0 -8
  640. package/components/ButtonGroup/types.d.vue.ts +0 -10
  641. package/components/ButtonGroup/types.solid.ts +0 -4
  642. package/components/Callout/types.d.vue.ts +0 -10
  643. package/components/Callout/types.solid.ts +0 -6
  644. package/components/Card/types.d.vue.ts +0 -10
  645. package/components/Card/types.solid.ts +0 -6
  646. package/components/Checkbox/types.d.vue.ts +0 -11
  647. package/components/Checkbox/types.solid.ts +0 -9
  648. package/components/Chip/types.d.vue.ts +0 -10
  649. package/components/Chip/types.solid.ts +0 -10
  650. package/components/ClassicSelect/ClassicSelect.astro +0 -60
  651. package/components/ClassicSelect/ClassicSelect.vue +0 -54
  652. package/components/ClassicSelect/types.astro.ts +0 -8
  653. package/components/ClassicSelect/types.d.vue.ts +0 -10
  654. package/components/ClassicSelect/types.solid.ts +0 -5
  655. package/components/ClassicSelect/types.svelte.ts +0 -5
  656. package/components/ClassicSelect/types.ts +0 -15
  657. package/components/DescriptionList/Description.astro +0 -9
  658. package/components/DescriptionList/Item.astro +0 -9
  659. package/components/DescriptionList/Term.astro +0 -9
  660. package/components/DescriptionList/index.ts +0 -12
  661. package/components/DescriptionList/types.d.vue.ts +0 -10
  662. package/components/DescriptionList/types.solid.ts +0 -4
  663. package/components/Dialog/types.d.vue.ts +0 -10
  664. package/components/Dialog/types.solid.ts +0 -8
  665. package/components/Divider/types.d.vue.ts +0 -6
  666. package/components/Divider/types.solid.ts +0 -4
  667. package/components/Drawer/types.d.vue.ts +0 -31
  668. package/components/Drawer/types.solid.ts +0 -12
  669. package/components/FieldDescription/types.d.vue.ts +0 -10
  670. package/components/FieldDescription/types.solid.ts +0 -5
  671. package/components/FieldGroup/types.d.vue.ts +0 -12
  672. package/components/FieldGroup/types.solid.ts +0 -5
  673. package/components/FieldLegend/types.d.vue.ts +0 -11
  674. package/components/FieldLegend/types.solid.ts +0 -5
  675. package/components/FieldSet/FieldSet.vue +0 -18
  676. package/components/FieldSet/types.d.vue.ts +0 -11
  677. package/components/FieldSet/types.solid.ts +0 -5
  678. package/components/FieldSet/types.svelte.ts +0 -8
  679. package/components/FieldSet/types.ts +0 -5
  680. package/components/Form/types.d.vue.ts +0 -11
  681. package/components/Form/types.solid.ts +0 -5
  682. package/components/IconButton/IconButton.astro +0 -24
  683. package/components/IconButton/IconButton.vue +0 -24
  684. package/components/IconButton/types.astro.ts +0 -6
  685. package/components/IconButton/types.d.vue.ts +0 -10
  686. package/components/IconButton/types.solid.ts +0 -8
  687. package/components/IconButton/types.svelte.ts +0 -6
  688. package/components/IconButton/types.ts +0 -16
  689. package/components/List/types.d.vue.ts +0 -10
  690. package/components/List/types.solid.ts +0 -4
  691. package/components/ListItem/types.d.vue.ts +0 -10
  692. package/components/ListItem/types.solid.ts +0 -12
  693. package/components/Progress/types.d.vue.ts +0 -10
  694. package/components/Progress/types.solid.ts +0 -4
  695. package/components/Radio/types.d.vue.ts +0 -11
  696. package/components/Radio/types.solid.ts +0 -9
  697. package/components/Range/types.d.vue.ts +0 -14
  698. package/components/Range/types.solid.ts +0 -6
  699. package/components/Select/types.d.vue.ts +0 -17
  700. package/components/Select/types.solid.ts +0 -6
  701. package/components/Switch/types.d.vue.ts +0 -13
  702. package/components/Switch/types.solid.ts +0 -9
  703. package/components/Table/Body.astro +0 -11
  704. package/components/Table/Body.vue +0 -5
  705. package/components/Table/Cell.astro +0 -11
  706. package/components/Table/Cell.vue +0 -5
  707. package/components/Table/Column.astro +0 -12
  708. package/components/Table/Column.vue +0 -19
  709. package/components/Table/ColumnGroup.astro +0 -11
  710. package/components/Table/ColumnGroup.vue +0 -5
  711. package/components/Table/Head.astro +0 -11
  712. package/components/Table/Head.vue +0 -5
  713. package/components/Table/HeaderCell.astro +0 -11
  714. package/components/Table/HeaderCell.vue +0 -5
  715. package/components/Table/Row.astro +0 -11
  716. package/components/Table/Row.vue +0 -5
  717. package/components/Table/index.ts +0 -20
  718. package/components/Table/types.d.vue.ts +0 -10
  719. package/components/Table/types.solid.ts +0 -8
  720. package/components/Tabs/TabsTab.astro +0 -15
  721. package/components/Tabs/TabsTab.vue +0 -24
  722. package/components/Tabs/index.ts +0 -14
  723. package/components/Tabs/types.d.vue.ts +0 -31
  724. package/components/Tabs/types.solid.ts +0 -12
  725. package/components/TextField/types.d.vue.ts +0 -20
  726. package/components/TextField/types.solid.ts +0 -22
  727. package/components/Textarea/types.d.vue.ts +0 -19
  728. package/components/Textarea/types.solid.ts +0 -6
  729. package/components/Toast/Toast.astro +0 -42
  730. package/components/Toast/Toast.vue +0 -48
  731. package/components/ToggleButton/types.d.vue.ts +0 -10
  732. package/components/ToggleButton/types.solid.ts +0 -7
  733. package/components/ToggleGroup/types.d.vue.ts +0 -15
  734. package/components/ToggleGroup/types.solid.ts +0 -4
  735. package/components/Tooltip/types.d.vue.ts +0 -10
  736. package/components/Tooltip/types.solid.ts +0 -6
  737. package/css/components/icon-button.css +0 -139
  738. package/css/components/text-input.css +0 -68
  739. package/css/components/toast.css +0 -157
  740. package/css/js/toast.js +0 -94
@@ -1,580 +1,801 @@
1
- @layer components.root {
2
- :where(.ui-p) {
3
- text-wrap: pretty;
4
-
5
- &.ui-small {
6
- font-size: var(--font-size-1);
7
- }
8
-
9
- &.ui-large {
10
- font-size: var(--font-size-3);
11
- }
12
- }
13
-
14
- :where(.ui-h1, .ui-h2, .ui-h3, .ui-h4, .ui-h5, .ui-h6) {
15
- color: var(--text-primary);
16
- font-weight: 700;
17
- text-wrap: pretty;
18
- }
19
-
20
- :where(.ui-h1) {
21
- font-size: var(--font-size-h1, var(--font-size-7));
22
- letter-spacing: -0.02em;
23
- line-height: 1.15;
24
- }
25
-
26
- :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;
30
- }
31
-
32
- :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;
36
- }
37
-
38
- :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
- }
43
-
44
- :where(.ui-h5) {
45
- font-size: var(--font-size-h5, var(--font-size-2, 1.1rem));
46
- line-height: 1.334;
47
- }
48
-
49
- :where(.ui-h6) {
50
- font-size: var(--font-size-h6, var(--font-size-1, 1rem));
51
- line-height: 1;
52
- }
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;
62
- }
63
-
64
- :where(.ui-hgroup) {
65
- &>p {
66
- margin: 0;
67
- }
68
-
69
- &> :where(h1, h2, h3, h4, h5, h6) {
70
- margin-block: 0 0.4em;
71
- }
72
-
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;
81
- }
82
-
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;
88
- }
89
-
90
- &>p+p {
91
- margin-block-start: 0.75em;
92
- }
93
- }
94
-
95
- /** Caption */
96
- :where(.ui-caption) {
97
- color: var(--text-muted);
98
- font-size: var(--font-size-0);
99
- line-height: 1.6;
100
- }
101
-
102
- /* Inline text elements - class utilities */
103
- :where(.ui-u, .ui-abbr, .ui-dfn) {
104
- text-decoration: underline;
105
- text-underline-offset: 1px;
106
-
107
- @supports (-moz-appearance: none) {
108
- text-underline-offset: 2px;
109
- }
110
- }
111
-
112
- :where(.ui-abbr, .ui-dfn) {
113
- font-style: normal;
114
- text-decoration: var(--color-9) underline dotted;
115
-
116
- &[title] {
117
- cursor: help;
118
- text-underline-offset: 1px;
119
- }
120
-
121
- @supports (-moz-appearance: none) {
122
- text-underline-offset: 2px;
123
- }
124
- }
125
-
126
- :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));
133
- }
134
-
135
- :where(.ui-cite) {
136
- font-style: italic;
137
- }
138
-
139
- /* 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;
149
- }
150
-
151
- :where(.ui-mark) {
152
- border-radius: var(--radius-2);
153
- box-decoration-break: clone;
154
- padding: 0.1ex 0.3ex;
155
- vertical-align: baseline;
156
- }
157
-
158
- :where(.ui-s) {
159
- text-decoration: line-through;
160
- }
161
-
162
- :where(.ui-sub) {
163
- font-size: 0.75em;
164
- vertical-align: sub;
165
- }
166
-
167
- :where(.ui-del) {
168
- color: var(--color-9);
169
- text-decoration: line-through;
170
- }
171
-
172
- :where(.ui-ins) {
173
- color: var(--color-9);
174
- text-decoration: underline;
175
- text-underline-offset: 1px;
176
- }
177
-
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;
187
- }
188
-
189
- :where(.ui-samp) {
190
- font-family: var(--font-mono);
191
- }
192
-
193
- /* Blockquote */
194
- :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);
198
-
199
- :first-child {
200
- margin-block-start: 0;
201
- }
202
-
203
- :last-child {
204
- margin-block-end: 0;
205
- }
206
-
207
- footer {
208
- color: var(--text-muted);
209
- margin-block-start: var(--size-3);
210
- }
211
- }
212
-
213
- /* 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;
235
- }
236
- }
237
- }
238
-
239
- /* 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;
251
-
252
- &[href] {
253
-
254
- &:hover,
255
- &:focus-visible {
256
- color: var(--primary-light);
257
- }
258
- }
259
- }
260
-
261
- /* Blockquote */
262
- blockquote {
263
- border-inline-start: var(--border-size-3) solid currentColor;
264
- font-size: inherit;
265
- line-height: inherit;
266
- padding-block: var(--size-3);
267
- padding-inline: var(--size-4);
268
-
269
- :first-child {
270
- margin-block-start: 0;
271
- }
272
-
273
- :last-child {
274
- margin-block-end: 0;
275
- }
276
-
277
- footer {
278
- color: var(--text-muted);
279
- margin-block-start: var(--size-3);
280
- }
281
- }
282
-
283
- /* Code */
284
- 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
- }
312
- }
313
-
314
- /* Text */
315
- p {
316
- font-size: inherit;
317
- line-height: inherit;
318
- margin-block: 1.25em;
319
- text-wrap: pretty;
320
- }
321
-
322
- :is(h1, h2, h3, h4, h5, h6) {
323
- color: var(--text-primary);
324
- font-weight: 700;
325
- text-wrap: pretty;
326
-
327
- &+*:not(&) {
328
- margin-block-start: 0;
329
- }
330
- }
331
-
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;
337
- }
338
-
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;
344
- }
345
-
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;
351
- }
352
-
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;
358
- }
359
-
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);
364
- }
365
-
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);
370
- }
371
-
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;
380
- }
381
-
382
- hgroup {
383
- &>p {
384
- margin: 0;
385
- }
386
-
387
- &> :where(h1, h2, h3, h4, h5, h6) {
388
- margin-block: 0 0.4em;
389
- }
390
-
391
- &+* {
392
- margin-block-start: 3em;
393
- }
394
-
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;
400
- }
401
-
402
- &>p+p {
403
- margin-block-start: 0.75em;
404
- }
405
- }
406
-
407
- /* Lists */
408
- ul:not([class]) {
409
- list-style-type: disc;
410
- }
411
-
412
- ol:not([class]) {
413
- list-style-type: decimal;
414
- }
415
-
416
- :where(ul, ol):not([class]) {
417
- display: grid;
418
- font-size: inherit;
419
- gap: 0.5em;
420
- line-height: inherit;
421
- margin-block-end: 1.25em;
422
- margin-block-start: 1.25em;
423
- padding-inline-start: 1.625em;
424
-
425
- li {
426
- padding-inline-start: 0.375em;
427
- }
428
- }
429
-
430
- /* 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;
437
- }
438
-
439
- /* Description lists */
440
- :where(dl) {
441
- font-size: inherit;
442
- line-height: inherit;
443
- margin-block-end: 1.25em;
444
- margin-block-start: 1.25em;
445
-
446
- dt {
447
- font-weight: 700;
448
- margin-block-start: 1.25em;
449
- }
450
-
451
- dd {
452
- margin-block-start: 0.5em;
453
- padding-inline-start: 1.625em;
454
- }
455
- }
456
-
457
- /* Figures */
458
- figure {
459
- display: grid;
460
- gap: var(--size-2);
461
- margin-block: var(--size-7);
462
- place-items: center;
463
-
464
- &>* {
465
- margin-block: 0;
466
- }
467
-
468
- & figcaption {
469
- font-size: var(--font-size-0);
470
- text-wrap: pretty;
471
- }
472
- }
473
-
474
- /* Remove top margin from first child */
475
- &> :first-child {
476
- margin-block-start: 0;
477
- }
478
-
479
- /* Remove bottom margin from last child */
480
- &> :last-child {
481
- margin-block-end: 0;
482
- }
483
-
484
- /* Horizontal rules */
485
- hr {
486
- &+* {
487
- margin-block-start: 0;
488
- }
489
- }
490
-
491
- /* Inline text elements */
492
- :where(ins, u, abbr, dfn) {
493
- text-decoration: underline;
494
- text-underline-offset: 1px;
495
-
496
- @supports (-moz-appearance: none) {
497
- text-underline-offset: 2px;
498
- }
499
- }
500
-
501
- :where(abbr, dfn) {
502
- font-style: normal;
503
- text-decoration: var(--color-9) underline dotted;
504
-
505
- &[title] {
506
- cursor: help;
507
- text-underline-offset: 1px;
508
- }
509
-
510
- @supports (-moz-appearance: none) {
511
- text-underline-offset: 2px;
512
- }
513
- }
514
-
515
- sup {
516
- font-size: 0.5em;
517
- vertical-align: super;
518
- }
519
-
520
- :where(del, ins) {
521
- color: var(--color-9);
522
- }
523
-
524
- small {
525
- font-size: max(0.5em, var(--font-size-0, 0.75rem));
526
- }
527
-
528
- cite {
529
- font-style: italic;
530
- }
531
-
532
- /* Code */
533
- :where(code, kbd, samp, pre) {
534
- font-family: var(--font-mono);
535
- }
536
-
537
- code {
538
- background-color: oklch(0 0 0 / 18%);
539
- border-radius: var(--border-size-3);
540
- font-size: 0.9em;
541
- padding: 0.1ex 0.3ex;
542
- }
543
-
544
- :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;
551
- }
552
-
553
- :not(pre) code,
554
- kbd {
555
- word-break: break-word;
556
- }
557
-
558
- :not(pre) code {
559
- border-radius: var(--border-radius, var(--radius-2));
560
- padding: 0.5ex;
561
- writing-mode: lr;
562
- }
563
-
564
- mark {
565
- border-radius: var(--radius-2);
566
- box-decoration-break: clone;
567
- padding: 0.1ex 0.3ex;
568
- vertical-align: baseline;
569
- }
570
-
571
- s {
572
- text-decoration: line-through;
573
- }
574
-
575
- sub {
576
- font-size: 0.75em;
577
- vertical-align: sub;
578
- }
579
- }
580
- }
1
+ @layer components.root {
2
+ :where(.ui-p) {
3
+ text-wrap: pretty;
4
+
5
+ &.ui-small {
6
+ font-size: var(--ui-font-size-small);
7
+ }
8
+
9
+ &.ui-large {
10
+ font-size: var(--ui-font-size-large);
11
+ }
12
+ }
13
+
14
+ :where(.ui-h1, .ui-h2, .ui-h3, .ui-h4, .ui-h5, .ui-h6) {
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
+ );
23
+ text-wrap: pretty;
24
+ }
25
+
26
+ :where(.ui-h1) {
27
+ font-size: round(var(--ui-font-size-h1), var(--ui-rhythm-step) / 2);
28
+ letter-spacing: var(--ui-letter-spacing-display);
29
+ }
30
+
31
+ :where(.ui-h2) {
32
+ font-size: round(var(--ui-font-size-h2), var(--ui-rhythm-step) / 2);
33
+ letter-spacing: var(--ui-letter-spacing-display);
34
+ }
35
+
36
+ :where(.ui-h3) {
37
+ font-size: round(var(--ui-font-size-h3), var(--ui-rhythm-step) / 2);
38
+ letter-spacing: var(--ui-letter-spacing-heading);
39
+ }
40
+
41
+ :where(.ui-h4) {
42
+ font-size: round(var(--ui-font-size-h4), var(--ui-rhythm-step) / 2);
43
+ letter-spacing: var(--ui-letter-spacing-heading);
44
+ }
45
+
46
+ :where(.ui-h5) {
47
+ font-size: round(var(--ui-font-size-h5), var(--ui-rhythm-step) / 2);
48
+ }
49
+
50
+ :where(.ui-h6) {
51
+ font-size: round(var(--ui-font-size-h6), var(--ui-rhythm-step) / 2);
52
+ }
53
+
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
+ }
79
+ }
80
+
81
+ :where(.ui-hgroup) {
82
+ & > p {
83
+ margin: 0;
84
+ }
85
+
86
+ & > :where(h1, h2, h3, h4, h5, h6) {
87
+ margin-block: 0 round(0.4em, var(--ui-rhythm-step));
88
+ }
89
+
90
+ & > p + p {
91
+ margin-block-start: round(0.75em, var(--ui-rhythm-step));
92
+ }
93
+ }
94
+
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);
111
+ }
112
+
113
+ &.ui-large {
114
+ block-size: var(--ui-icon-size-large);
115
+ inline-size: var(--ui-icon-size-large);
116
+ }
117
+ }
118
+
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
+ }
135
+ }
136
+
137
+ /* Inline text elements - class utilities */
138
+ :where(.ui-u, .ui-abbr, .ui-dfn) {
139
+ text-decoration: underline;
140
+ text-underline-offset: var(--ui-underline-offset-small);
141
+ }
142
+
143
+ :where(.ui-abbr, .ui-dfn) {
144
+ font-style: normal;
145
+ text-decoration: var(--ui-info) underline dotted;
146
+
147
+ &[title] {
148
+ cursor: help;
149
+ }
150
+ }
151
+
152
+ :where(.ui-sup) {
153
+ font-size: 0.75em;
154
+ inset-block-start: -0.5em;
155
+ line-height: 0;
156
+ position: relative;
157
+ vertical-align: baseline;
158
+ }
159
+
160
+ :where(.ui-cite) {
161
+ font-style: italic;
162
+ }
163
+
164
+ /* Code */
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));
173
+ }
174
+
175
+ :where(.ui-mark) {
176
+ background-color: Mark;
177
+ border-radius: var(--ui-radius-small);
178
+ box-decoration-break: clone;
179
+ color: MarkText;
180
+ padding-block: 0.1ex;
181
+ padding-inline: 0.3ex;
182
+ vertical-align: baseline;
183
+ }
184
+
185
+ :where(.ui-s) {
186
+ text-decoration: line-through;
187
+ }
188
+
189
+ :where(.ui-sub) {
190
+ font-size: 0.75em;
191
+ inset-block-start: 0.25em;
192
+ line-height: 0;
193
+ position: relative;
194
+ vertical-align: baseline;
195
+ }
196
+
197
+ :where(.ui-del) {
198
+ color: var(--ui-critical-text);
199
+
200
+ text-decoration: line-through;
201
+ }
202
+
203
+ :where(.ui-ins) {
204
+ color: var(--ui-success-text);
205
+
206
+ text-decoration: underline;
207
+ text-underline-offset: var(--ui-underline-offset-small);
208
+ }
209
+
210
+ :where(.ui-samp) {
211
+ font-family: var(--ui-font-code);
212
+ }
213
+
214
+ /* Blockquote */
215
+ :where(.ui-blockquote) {
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);
220
+
221
+ :first-child {
222
+ margin-block-start: 0;
223
+ }
224
+
225
+ :last-child {
226
+ margin-block-end: 0;
227
+ }
228
+
229
+ footer {
230
+ color: var(--ui-text);
231
+ margin-block-start: var(--ui-space-3);
232
+ }
233
+ }
234
+
235
+ /* Code block */
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
+ }
259
+ }
260
+ }
261
+
262
+ :where(pre.ui-code-block) {
263
+ font-size: var(--ui-font-size-small);
264
+ }
265
+ }
266
+
267
+ /* Rich text */
268
+ @property --_flow-gap {
269
+ inherits: true;
270
+ initial-value: 0px;
271
+ syntax: "<length>";
272
+ }
273
+
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
+ }
278
+
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;
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;
317
+ }
318
+
319
+ /* Blockquote */
320
+ blockquote {
321
+ border-inline-start: calc(var(--ui-border-width-thick) * 1.5) solid
322
+ currentColor;
323
+ font-size: inherit;
324
+ line-height: inherit;
325
+ padding-block: var(--ui-space-3);
326
+ padding-inline: var(--ui-space-4);
327
+
328
+ :first-child {
329
+ margin-block-start: 0;
330
+ }
331
+
332
+ :last-child {
333
+ margin-block-end: 0;
334
+ }
335
+
336
+ footer {
337
+ color: var(--ui-text);
338
+ margin-block-start: var(--_flow-gap);
339
+ }
340
+ }
341
+
342
+ /* Code */
343
+ pre {
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));
351
+ }
352
+
353
+ /* Text */
354
+ p {
355
+ font-size: inherit;
356
+ line-height: inherit;
357
+ text-wrap: pretty;
358
+ }
359
+
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
+ }
375
+
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 {
394
+ margin-block-start: 0;
395
+ }
396
+
397
+ & > :last-child {
398
+ margin-block-end: 0;
399
+ }
400
+ }
401
+
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
+ }
412
+ }
413
+
414
+ :is(h1, h2, h3, h4, h5, h6) {
415
+ & + * {
416
+ margin-block-start: 0;
417
+ }
418
+ }
419
+
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;
434
+ }
435
+
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);
443
+ }
444
+
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));
453
+ }
454
+
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));
463
+ }
464
+
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));
491
+ }
492
+
493
+ hgroup {
494
+ margin-block-start: calc(var(--_flow-gap) * 3);
495
+
496
+ & > p {
497
+ margin: 0;
498
+ }
499
+
500
+ & > :where(h1, h2, h3, h4, h5, h6) {
501
+ margin-block: 0 round(var(--_flow-gap) * 0.75, var(--ui-rhythm-step));
502
+ }
503
+
504
+ & + * {
505
+ margin-block-start: round(
506
+ var(--_flow-gap) * 2.5,
507
+ var(--ui-rhythm-step)
508
+ );
509
+ }
510
+
511
+ & > p + p {
512
+ margin-block-start: round(
513
+ var(--_flow-gap) * 0.75,
514
+ var(--ui-rhythm-step)
515
+ );
516
+ }
517
+ }
518
+
519
+ /* Lists */
520
+ ul:not([class]) {
521
+ list-style-type: disc;
522
+ }
523
+
524
+ ol:not([class], [type]) {
525
+ list-style-type: decimal;
526
+ }
527
+
528
+ :where(ul, ol):where(:not([class])) {
529
+ display: grid;
530
+ font-size: inherit;
531
+ gap: 0.5em;
532
+ line-height: inherit;
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);
546
+
547
+ & > li {
548
+ padding-inline-start: 0.375em;
549
+ }
550
+ }
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
+
599
+ /* Nested lists */
600
+ :where(ul, ol) :where(ul, ol) {
601
+ margin-block: 0.5em 0;
602
+ }
603
+
604
+ /* Description lists */
605
+ :where(dl) {
606
+ font-size: inherit;
607
+ line-height: inherit;
608
+
609
+ dt {
610
+ font-weight: var(--ui-font-weight-bold);
611
+ margin-block-start: 0;
612
+ }
613
+
614
+ dd {
615
+ margin-block-start: 0.5em;
616
+ padding-inline-start: 1.625em;
617
+ }
618
+
619
+ dd + dt {
620
+ margin-block-start: var(--_flow-gap);
621
+ }
622
+ }
623
+
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
+ }
643
+
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
+ }
659
+ }
660
+
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);
670
+ }
671
+ }
672
+
673
+ /* Remove top margin from first child */
674
+ & > :first-child {
675
+ margin-block-start: 0;
676
+ }
677
+
678
+ /* Remove bottom margin from last child */
679
+ & > :last-child {
680
+ margin-block-end: 0;
681
+ }
682
+
683
+ /* Inline text elements */
684
+ :where(ins, u, abbr, dfn) {
685
+ text-decoration: underline;
686
+ text-underline-offset: var(--ui-underline-offset-small);
687
+ }
688
+
689
+ :where(abbr, dfn) {
690
+ font-style: normal;
691
+ text-decoration: var(--ui-info) underline dotted;
692
+
693
+ &[title] {
694
+ cursor: help;
695
+ }
696
+ }
697
+
698
+ sup {
699
+ font-size: 0.75em;
700
+ inset-block-start: -0.5em;
701
+ line-height: 0;
702
+ position: relative;
703
+ vertical-align: baseline;
704
+ }
705
+
706
+ del {
707
+ color: var(--ui-critical-text);
708
+ }
709
+
710
+ ins {
711
+ color: var(--ui-success-text);
712
+ }
713
+
714
+ small {
715
+ font-size: max(0.75em, var(--ui-font-size-caption));
716
+ }
717
+
718
+ cite {
719
+ font-style: italic;
720
+ }
721
+
722
+ /* Code */
723
+ :where(code, kbd, samp, pre, var) {
724
+ font-family: var(--ui-font-code);
725
+ }
726
+
727
+ code {
728
+ background-color: var(--ui-code-bg-color);
729
+ border-radius: var(--ui-radius-small);
730
+ font-size: 0.9em;
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;
750
+ }
751
+
752
+ :where(kbd, var) {
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;
765
+ }
766
+
767
+ :not(pre) > code {
768
+ writing-mode: horizontal-tb;
769
+ }
770
+
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;
779
+ }
780
+
781
+ mark {
782
+ border-radius: var(--ui-radius-small);
783
+ box-decoration-break: clone;
784
+ padding-block: 0.1ex;
785
+ padding-inline: 0.3ex;
786
+ vertical-align: baseline;
787
+ }
788
+
789
+ s {
790
+ text-decoration: line-through;
791
+ }
792
+
793
+ sub {
794
+ font-size: 0.75em;
795
+ inset-block-start: 0.25em;
796
+ line-height: 0;
797
+ position: relative;
798
+ vertical-align: baseline;
799
+ }
800
+ }
801
+ }