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
@@ -0,0 +1,150 @@
1
+ # Range
2
+
3
+ Range lets users pick a number by sliding a thumb along a track.
4
+
5
+ - CSS: `opui-css/css/components/range.css`.
6
+ - Full docs with every example: [HTML](https://open-props-ui.netlify.app/html/components/range.md), [Astro](https://open-props-ui.netlify.app/astro/components/range.md), [React](https://open-props-ui.netlify.app/react/components/range.md), [Svelte](https://open-props-ui.netlify.app/svelte/components/range.md), [Vue](https://open-props-ui.netlify.app/vue/components/range.md).
7
+
8
+ ## Range
9
+
10
+ ### Parts
11
+
12
+ - `label.ui-range` (root): Container element.
13
+ - `.ui-label` (prop `label`, slot `label`): The label for the range.
14
+ - `<output>` (prop `valueSuffix`, slot `value-text`): Shows the current value, with an optional `valueSuffix`.
15
+ - `.ui-start-text` (prop `startText`, slot `start-text`): Description text displayed above the input.
16
+ - `<input>` (model): The range input.
17
+ - `<datalist>` (prop `items`, prop `list`, slot `datalist`): Tick marks and their labels, under the input.
18
+ - `.ui-end-text` (prop `endText`, slot `end-text`): Supporting text displayed below the input.
19
+
20
+ ### Props and modifiers
21
+
22
+ - `disabled`: `boolean`, `input[disabled]`. Dims the slider and blocks input.
23
+ - `error`: `boolean`, `input[aria-invalid="true"]`. Marks the control invalid and shows error styles.
24
+ - `hideLabel`: `boolean`, `.ui-range > span.ui-sr-only`. Visually hides the label, `.ui-sr-only` instead of `.ui-label`. The field keeps it as its accessible name.
25
+ - `id`: `string`. The id of the `<input>`. Generated when omitted and the value is shown.
26
+ - `items`: `RangeItem[]`. Tick marks, rendered as `<option>` elements in a `<datalist>`. Each is a value, or a `{ label, value }` object for a labeled tick.
27
+ - `list`: `string`. The id of the `<datalist>`. Generated when `items` or the `datalist` slot is used.
28
+ - `name`: `string`. The name of the `<input>`. Inside a `FieldGroup`, the group's `name` applies.
29
+ - `size`: `"large"` (`.ui-large`), `"medium"` (default), `"small"` (`.ui-small`), `"x-small"` (`.ui-x-small`). The size of the element.
30
+ - `spread`: `boolean`, `.ui-spread`. Pushes the label and start text to one side and the input to the other.
31
+ - `value`: `number | string`. The current value.
32
+ - `valueSuffix`: `string`. Text after the shown value, such as `%`. Setting it shows the current value in an `<output>`.
33
+ - `variant`: `"filled"` (`.ui-filled`), `"outlined"` (default), `"tonal"` (`.ui-tonal`). The variant to use. The default `outlined` track uses `--ui-track-bg-color`, or the field border color when the theme doesn't set it.
34
+
35
+ Model: `value` (`number | string`), the current value. Astro and React `value`, Svelte `bind:value`, Vue `v-model`.
36
+
37
+ ### Notes
38
+
39
+ - HTML: Add a `<datalist aria-hidden="true">` after the input for tick marks.
40
+ - Astro, Svelte and Vue: Attributes that aren't props go to the `<input>`, like `max`, `min` and `step`, and `class` and `style` go to the root `<label>`.
41
+ - React: Attributes that aren't props go to the `<input>`, like `max`, `min` and `step`, and `className` and `style` go to the root `<label>`. Set `defaultValue` for the starting value. `value` makes it controlled, so update it in `onChange`.
42
+
43
+ ## Component properties
44
+
45
+ Set inputs on the component, inline or in your CSS. Outputs follow the variant and state, so never override them.
46
+
47
+ ### range.css
48
+
49
+ - `--_accent`: Color of the thumb, its ring and the track fill. Defaults to `--ui-choice-accent`, or `--ui-primary` when the theme doesn't set it, and is set by the invalid state.
50
+ - `--_ease`: Easing of the thumb ring transition and focus ring. Defaults to `--ui-ease`.
51
+ - `--_motion`: Motion multiplier for the thumb highlight and focus ring. `0` turns them off.
52
+ - `--_thumb-border-width`: Width of the page-colored ring between the thumb and the track. Set on the `<input>`.
53
+ - `--_thumb-size`: Width and height of the thumb. Set by the sizes, and larger on touch screens at the default size.
54
+ - `--_track-base-bg-color`: Color of the empty track at rest. `--ui-track-bg-color` when the theme sets it, otherwise the field border, and `--ui-surface` under more contrast; set by `.ui-filled` and `.ui-tonal`.
55
+ - `--_track-block-size`: Height of the track. Set by the sizes.
56
+ - `--_track-radius`: Corner radius of the track.
57
+
58
+ Outputs: `--_duration`, `--_focus-ring-duration`, `--_forced-fill-bg-color`, `--_forced-track-bg-color`, `--_inset`, `--_thumb-bg-color`, `--_thumb-highlight-bg-color`, `--_thumb-highlight-size`, `--_thumb-offset`, `--_track-bg-color`, `--_track-fill-bg-color` and `--_track-fill-fraction`.
59
+
60
+ ## Theme tokens
61
+
62
+ The stylesheets read `--ui-border-width`, `--ui-choice-accent`, `--ui-control-accent`, `--ui-disabled-opacity`, `--ui-duration`, `--ui-duration-fast`, `--ui-ease`, `--ui-field-border-color`, `--ui-field-helper-font-size`, `--ui-field-helper-line-height`, `--ui-field-helper-text-color`, `--ui-field-label-font-size`, `--ui-field-label-font-weight`, `--ui-field-label-text-color`, `--ui-focus-ring-offset`, `--ui-font-weight-semibold`, `--ui-invalid`, `--ui-invalid-text`, `--ui-motion`, `--ui-primary`, `--ui-radius-round`, `--ui-space-1`, `--ui-space-2`, `--ui-space-4`, `--ui-state-active-alpha-dark`, `--ui-state-active-alpha-light`, `--ui-surface`, `--ui-surface-filled`, `--ui-surface-tonal`, `--ui-text-strong` and `--ui-track-bg-color`. `theming.md` and `tokens.json` describe them.
63
+
64
+ ## HTML
65
+
66
+ ### Example: Basics
67
+
68
+ ```html
69
+ <label class="ui-range">
70
+ <span class="ui-label" id="range-basics-1-label">Label</span>
71
+ <span class="ui-start-text" id="range-basics-1-start-text">Min</span>
72
+ <input
73
+ aria-describedby="range-basics-1-start-text"
74
+ aria-labelledby="range-basics-1-label"
75
+ type="range"
76
+ />
77
+ </label>
78
+ ```
79
+
80
+ ## Astro
81
+
82
+ `import { Range } from "opui-css/astro"`
83
+
84
+ - `Range` named slots: `datalist`, `end-text`, `label`, `start-text` and `value-text`. Fill one with `slot="datalist"` on a child.
85
+
86
+ ### Example: Basics
87
+
88
+ ```astro
89
+ ---
90
+ import { Range } from "opui-css/astro"
91
+ ---
92
+
93
+ <Range label="Label" startText="Min" />
94
+ ```
95
+
96
+ ## React
97
+
98
+ `import { Range } from "opui-css/react"`
99
+
100
+ - `Range` slot props (`ReactNode`): `datalist`, `endText`, `label`, `startText` and `valueText`.
101
+ - Client components (`"use client"`): `Range`.
102
+ - Hydration: `valueSuffix` and `valueText` on `Range`. The value `<output>` renders once and only follows the thumb after hydration. The track fill is CSS, so it works. Without hydration: Update the `<output>` text on `input` yourself, or add `data-live` to it and call `initRange()` from `opui-css/css/js/range.js`.
103
+
104
+ ### Example: Basics
105
+
106
+ ```tsx
107
+ import { Range } from "opui-css/react"
108
+
109
+ export default function Basics() {
110
+ return <Range label="Label" startText="Min" />
111
+ }
112
+ ```
113
+
114
+ ## Svelte
115
+
116
+ `import { Range } from "opui-css/svelte"`
117
+
118
+ - `Range` slot snippets: `datalist`, `endText`, `label`, `startText` and `valueText`.
119
+ - Hydration: `bind:value` on `Range`. The bound value only updates on the client. The native control still changes and submits with its form. Without hydration: Read the value from the form instead.
120
+ - Hydration: `valueSuffix` and `valueText` on `Range`. The value `<output>` renders once and only follows the thumb after hydration. The track fill is CSS, so it works. Without hydration: Update the `<output>` text on `input` yourself, or add `data-live` to it and call `initRange()` from `opui-css/css/js/range.js`.
121
+
122
+ ### Example: Basics
123
+
124
+ ```svelte
125
+ <script lang="ts">
126
+ import { Range } from "opui-css/svelte"
127
+ </script>
128
+
129
+ <Range label="Label" startText="Min" />
130
+ ```
131
+
132
+ ## Vue
133
+
134
+ `import { Range } from "opui-css/vue"`
135
+
136
+ - `Range` named slots: `datalist`, `end-text`, `label`, `start-text` and `value-text`. Fill one with `<template #datalist>`.
137
+ - Hydration: `v-model` on `Range`. The bound value only updates on the client. The native control still changes and submits with its form. Without hydration: Read the value from the form instead.
138
+ - Hydration: `valueSuffix` on `Range`. The value `<output>` renders once and only follows the thumb after hydration. The track fill is CSS, so it works. Without hydration: Update the `<output>` text on `input` yourself, or add `data-live` to it and call `initRange()` from `opui-css/css/js/range.js`.
139
+
140
+ ### Example: Basics
141
+
142
+ ```vue
143
+ <script setup lang="ts">
144
+ import { Range } from "opui-css/vue"
145
+ </script>
146
+
147
+ <template>
148
+ <Range label="Label" startText="Min" />
149
+ </template>
150
+ ```
@@ -0,0 +1,255 @@
1
+ # Select
2
+
3
+ Leverages the List component to provide markup for the Select popover. Use a Select to pick a value in a form. For actions, use a Menu.
4
+
5
+ - CSS: `opui-css/css/components/text-field.css`, `opui-css/css/components/select.css` and `opui-css/css/components/list.css`.
6
+ - Full docs with every example: [HTML](https://open-props-ui.netlify.app/html/components/select.md), [Astro](https://open-props-ui.netlify.app/astro/components/select.md), [React](https://open-props-ui.netlify.app/react/components/select.md), [Svelte](https://open-props-ui.netlify.app/svelte/components/select.md), [Vue](https://open-props-ui.netlify.app/vue/components/select.md).
7
+
8
+ ## Select
9
+
10
+ ### Parts
11
+
12
+ - `label.ui-select` (root): Container element.
13
+ - `.ui-label` (prop `label`, slot `label`): The label for the field.
14
+ - `.ui-start-text` (prop `startText`, slot `start-text`): Start text displayed above the field.
15
+ - `.ui-field`: The boxed select area.
16
+ - `.ui-field > .ui-top` (slot `top`): Content above the select, inside the border, with a divider.
17
+ - `.ui-field > .ui-start` (slot `start`): Content at the inline-start of the field, inside the border.
18
+ - `<select>` (model): The select. Its options are in a popover list.
19
+ - `.ui-field > .ui-end` (slot `end`): Content at the inline-end of the field, inside the border.
20
+ - `.ui-field > .ui-bottom` (slot `bottom`): Content below the select, inside the border, with a divider.
21
+ - `.ui-end-text` (prop `endText`, slot `end-text`): Supporting text displayed below the field.
22
+
23
+ ### Props and modifiers
24
+
25
+ - `autoFit`: `boolean`, `.ui-auto-fit`. Lets the width follow the selected option, from `25ch`.
26
+ - `dense`: `boolean`, `.ui-list.ui-dense`. Packs the items tighter.
27
+ - `disabled`: `boolean`, `select[disabled]`. Dims the select and blocks input.
28
+ - `error`: `boolean`, `select[aria-invalid="true"]`. Marks the control invalid and shows error styles.
29
+ - `hideLabel`: `boolean`, `.ui-select > span.ui-sr-only`. Visually hides the label, `.ui-sr-only` instead of `.ui-label`. The field keeps it as its accessible name.
30
+ - `id`: `string`. The id of the `<select>`.
31
+ - `items`: `SelectItem[]`, default `[]`. The options, as `{ label, selected, value }` objects.
32
+ - `name`: `string`. The name of the `<select>`. Inside a `FieldGroup`, the group's `name` applies.
33
+ - `required`: `boolean`, `select[required]`. Adds a required mark after the label. The form won't submit until an option with a value is selected.
34
+ - `size`: `"large"` (`.ui-large`), `"medium"` (default), `"small"` (`.ui-small`), `"x-small"` (`.ui-x-small`). The size of the element.
35
+ - `spread`: `boolean`, `.ui-spread`. Pushes the label and start text to one side and the select to the other.
36
+ - `variant`: `"filled"` (`.ui-filled`), `"outlined"` (default). The variant to use.
37
+
38
+ ### Slots
39
+
40
+ - `default`: Extra `<option>` and `<optgroup>` elements.
41
+
42
+ Model: `value` (`string | number | (string | number)[]`), the selected value, or values with `multiple`. Astro and React `value`, Svelte `bind:value`, Vue `v-model`.
43
+
44
+ ### Notes
45
+
46
+ - HTML: The `<select>` holds a `<button>` and a `.ui-list`. The button holds `<selectedcontent>`. The list holds the options. Browsers without customizable selects show a native select.
47
+ - Astro, Svelte and Vue: Attributes that aren't props go to the `<select>`, like `autocomplete` and `multiple`, and `class` and `style` go to the root `<label>`.
48
+ - React: Attributes that aren't props go to the `<select>`, like `autocomplete` and `multiple`, and `className` and `style` go to the root `<label>`.
49
+
50
+ ## Component properties
51
+
52
+ Set inputs on the component, inline or in your CSS. Outputs follow the variant and state, so never override them.
53
+
54
+ ### text-field.css
55
+
56
+ - `--_accent`: Border color of `.ui-field` when focused with a pointer; keyboard focus shows the focus ring instead. Defaults to `--ui-primary`, `--ui-invalid` when invalid.
57
+ - `--_arrow-inset`: Distance of the select arrow from the inline end.
58
+ - `--_chevron-image`: The select arrow, as an image used for a mask.
59
+ - `--_chevron-size`: Width and height of the select arrow.
60
+ - `--_ease`: Easing of the transitions. Defaults to `--ui-ease`.
61
+ - `--_field-padding-block`: The preferred block padding of the control. Set by the size classes.
62
+ - `--_field-padding-inline`: The inline padding of the control and affixes. `.ui-large` sets it.
63
+ - `--_font-size`: The font size of the control and affixes.
64
+ - `--_motion`: Motion multiplier for the transitions. `0` turns them off.
65
+ - `--_size`: The height of `.ui-field`, a minimum so a textarea can grow, and the width and height of a color field. Defaults to `--ui-field-size`, set by the size classes.
66
+
67
+ Outputs: `--_affix-text-color`, `--_arrow-padding`, `--_bg-color`, `--_border-color`, `--_duration`, `--_field-padding-block-fit` and `--_helper-text-color`.
68
+
69
+ ### select.css
70
+
71
+ - `--_bg-color`: Background of the picker's `.ui-list`. Set it on the `.ui-list`; on the root it is the field background. Defaults to `--ui-surface-elevated`, like `Menu`.
72
+
73
+ ### list.css
74
+
75
+ - `--_bg-color`: Background of the list and its items. Defaults to `--ui-surface-filled`, `.ui-transparent` and `.ui-tonal` set it.
76
+ - `--_description-text-color`: Text color of the description paragraph in an item. `--ui-text-subtle`, and `--ui-on-selected` on a selected or current row when a theme sets it.
77
+ - `--_divider-border-color`: Color of the lines between items in `.ui-bordered` and on `.ui-border-top`. Defaults to `--ui-border-color`, mixed with 20% `--ui-text-strong` in `.ui-tonal`.
78
+ - `--_hover-bg-color`: Background of hovered items, from `--ui-primary`.
79
+ - `--_item-gap`: Gap between the content of an item. Smaller in `.ui-dense`.
80
+ - `--_item-padding-inline`: Horizontal padding of items, headings and options. `--ui-list-item-padding-inline`, or `--ui-space-3` when a theme leaves it unset.
81
+ - `--_radius`: The corner radius of a `.ui-list`. Defaults to `--ui-radius`, and `0` when the list is a direct child of a `Card`, `Accordion` or `Dialog`, which round and clip it themselves.
82
+ - `--_selected-bg-color`: Background of selected and current items and options. `--ui-selected` when the theme sets it, otherwise `--ui-primary` at `--ui-state-active-alpha-accent`, stronger than `--_hover-bg-color`. With more contrast it is `--_hover-bg-color`, so the text keeps 7:1, and the bar marks the row.
83
+ - `--_selected-indicator-bg-color`: Color of the bar on the start edge of selected and current items and options, which marks them without relying on the fill. Defaults to `--ui-selected-strong`.
84
+ - `--_selected-indicator-size`: Width of the bar on selected and current items. Defaults to `--ui-border-width-thick`.
85
+ - `--_separator-gap`: Space around the lines between items in `.ui-bordered` and on `.ui-border-top`. Smaller in `.ui-dense`.
86
+ - `--_start-image-size`: Width of a square image in `.ui-start`.
87
+ - `--_start-size`: Maximum size of leading and trailing icons, and the indent of `.ui-inset` items. Smaller in `.ui-dense`.
88
+ - `--_start-video-size`: Height of a video in `.ui-start`, which keeps a 16:9 ratio.
89
+
90
+ Outputs: `--_selected-shadow`.
91
+
92
+ ## Theme tokens
93
+
94
+ The stylesheets read `--ui-border-color`, `--ui-border-color-on-filled`, `--ui-border-color-on-raised`, `--ui-border-color-raised`, `--ui-border-width`, `--ui-border-width-thick`, `--ui-choice-size-small`, `--ui-control-size`, `--ui-control-size-small`, `--ui-disabled-opacity`, `--ui-duration`, `--ui-ease`, `--ui-field-bg-color`, `--ui-field-border-color`, `--ui-field-border-color-on-filled`, `--ui-field-border-color-on-raised`, `--ui-field-border-width`, `--ui-field-helper-font-size`, `--ui-field-helper-line-height`, `--ui-field-helper-text-color`, `--ui-field-label-font-size`, `--ui-field-label-font-weight`, `--ui-field-label-text-color`, `--ui-field-padding-inline`, `--ui-field-radius`, `--ui-field-required-text-color`, `--ui-field-size`, `--ui-field-size-large`, `--ui-field-size-small`, `--ui-field-size-x-small`, `--ui-focus-ring-color`, `--ui-focus-ring-inset`, `--ui-focus-ring-offset`, `--ui-focus-ring-style`, `--ui-focus-ring-width`, `--ui-font-body`, `--ui-font-code`, `--ui-font-size-caption`, `--ui-font-size-control`, `--ui-font-size-small`, `--ui-font-weight-medium`, `--ui-font-weight-normal`, `--ui-icon-size`, `--ui-icon-size-small`, `--ui-invalid`, `--ui-invalid-text`, `--ui-line-height`, `--ui-line-height-control`, `--ui-line-height-tight`, `--ui-list-item-padding-inline`, `--ui-motion`, `--ui-on-selected`, `--ui-primary`, `--ui-primary-text`, `--ui-radius`, `--ui-selected`, `--ui-selected-strong`, `--ui-shadow-control`, `--ui-shadow-field`, `--ui-shadow-overlay`, `--ui-space-1`, `--ui-space-2`, `--ui-space-3`, `--ui-space-4`, `--ui-space-6`, `--ui-state-active-alpha-accent`, `--ui-state-hover-alpha-accent`, `--ui-surface`, `--ui-surface-elevated`, `--ui-surface-filled`, `--ui-surface-tonal`, `--ui-surface-tonal-hover`, `--ui-switch-thumb-size-small`, `--ui-switch-track-block-size-small`, `--ui-switch-track-inline-size-small`, `--ui-text`, `--ui-text-strong` and `--ui-text-subtle`. `theming.md` and `tokens.json` describe them.
95
+
96
+ ## HTML
97
+
98
+ ### Example: Variants
99
+
100
+ ```html
101
+ <label class="ui-select">
102
+ <span class="ui-label" id="select-variants-1-label">Label</span>
103
+ <span class="ui-field">
104
+ <select aria-labelledby="select-variants-1-label">
105
+ <button>
106
+ <selectedcontent></selectedcontent>
107
+ </button>
108
+ <div class="ui-list">
109
+ <option value="">-</option>
110
+ <option>Outlined (default)</option>
111
+ <option>Option Two</option>
112
+ <option>Option Three</option>
113
+ </div>
114
+ </select>
115
+ </span>
116
+ </label>
117
+
118
+ <label class="ui-select ui-filled">
119
+ <span class="ui-label" id="select-variants-2-label">Label</span>
120
+ <span class="ui-field">
121
+ <select aria-labelledby="select-variants-2-label">
122
+ <button>
123
+ <selectedcontent></selectedcontent>
124
+ </button>
125
+ <div class="ui-list">
126
+ <option value="">-</option>
127
+ <option>Filled</option>
128
+ <option>Option Two</option>
129
+ <option>Option Three</option>
130
+ </div>
131
+ </select>
132
+ </span>
133
+ </label>
134
+ ```
135
+
136
+ ## Astro
137
+
138
+ `import { Select } from "opui-css/astro"`
139
+
140
+ - `Select` named slots: `bottom`, `end`, `end-text`, `label`, `start`, `start-text` and `top`. Fill one with `slot="bottom"` on a child.
141
+
142
+ ### Example: Variants
143
+
144
+ ```astro
145
+ ---
146
+ import { Select } from "opui-css/astro"
147
+ ---
148
+
149
+ <Select label="Label">
150
+ <option value="">-</option>
151
+ <option>Outlined (default)</option>
152
+ <option>Option Two</option>
153
+ <option>Option Three</option>
154
+ </Select>
155
+
156
+ <Select label="Label" variant="filled">
157
+ <option value="">-</option>
158
+ <option>Filled</option>
159
+ <option>Option Two</option>
160
+ <option>Option Three</option>
161
+ </Select>
162
+ ```
163
+
164
+ ## React
165
+
166
+ `import { Select } from "opui-css/react"`
167
+
168
+ - `Select` slot props (`ReactNode`): `bottom`, `children`, `end`, `endText`, `label`, `start`, `startText` and `top`.
169
+ - Client components (`"use client"`): `Select`.
170
+
171
+ ### Example: Variants
172
+
173
+ ```tsx
174
+ import { Select } from "opui-css/react"
175
+
176
+ export default function Variants() {
177
+ return (
178
+ <>
179
+ <Select label="Label">
180
+ <option value="">-</option>
181
+ <option>Outlined (default)</option>
182
+ <option>Option Two</option>
183
+ <option>Option Three</option>
184
+ </Select>
185
+
186
+ <Select label="Label" variant="filled">
187
+ <option value="">-</option>
188
+ <option>Filled</option>
189
+ <option>Option Two</option>
190
+ <option>Option Three</option>
191
+ </Select>
192
+ </>
193
+ )
194
+ }
195
+ ```
196
+
197
+ ## Svelte
198
+
199
+ `import { Select } from "opui-css/svelte"`
200
+
201
+ - `Select` slot snippets: `bottom`, `children`, `end`, `endText`, `label`, `start`, `startText` and `top`.
202
+ - Hydration: `bind:value` on `Select`. The bound value only updates on the client. The native control still changes and submits with its form. Without hydration: Read the value from the form instead.
203
+
204
+ ### Example: Variants
205
+
206
+ ```svelte
207
+ <script lang="ts">
208
+ import { Select } from "opui-css/svelte"
209
+ </script>
210
+
211
+ <Select label="Label">
212
+ <option value="">-</option>
213
+ <option>Outlined (default)</option>
214
+ <option>Option Two</option>
215
+ <option>Option Three</option>
216
+ </Select>
217
+
218
+ <Select label="Label" variant="filled">
219
+ <option value="">-</option>
220
+ <option>Filled</option>
221
+ <option>Option Two</option>
222
+ <option>Option Three</option>
223
+ </Select>
224
+ ```
225
+
226
+ ## Vue
227
+
228
+ `import { Select } from "opui-css/vue"`
229
+
230
+ - `Select` named slots: `bottom`, `end`, `end-text`, `label`, `start`, `start-text` and `top`. Fill one with `<template #bottom>`.
231
+ - Hydration: `v-model` on `Select`. The bound value only updates on the client. The native control still changes and submits with its form. Without hydration: Read the value from the form instead.
232
+
233
+ ### Example: Variants
234
+
235
+ ```vue
236
+ <script setup lang="ts">
237
+ import { Select } from "opui-css/vue"
238
+ </script>
239
+
240
+ <template>
241
+ <Select label="Label">
242
+ <option value="">-</option>
243
+ <option>Outlined (default)</option>
244
+ <option>Option Two</option>
245
+ <option>Option Three</option>
246
+ </Select>
247
+
248
+ <Select label="Label" variant="filled">
249
+ <option value="">-</option>
250
+ <option>Filled</option>
251
+ <option>Option Two</option>
252
+ <option>Option Three</option>
253
+ </Select>
254
+ </template>
255
+ ```
@@ -0,0 +1,85 @@
1
+ # Spinner
2
+
3
+ Add it to an element with aria-busy="true". Spinners are always indeterminate. See also: Progress bar.
4
+
5
+ - CSS: `opui-css/css/components/spinner.css`.
6
+ - Full docs with every example: [HTML](https://open-props-ui.netlify.app/html/components/spinner.md), [Astro](https://open-props-ui.netlify.app/astro/components/spinner.md), [React](https://open-props-ui.netlify.app/react/components/spinner.md), [Svelte](https://open-props-ui.netlify.app/svelte/components/spinner.md), [Vue](https://open-props-ui.netlify.app/vue/components/spinner.md).
7
+
8
+ ## Spinner (CSS only)
9
+
10
+ ### Parts
11
+
12
+ - `[aria-busy="true"]` (root): Renders a spinner pseudo-element on the element. Always indeterminate.
13
+
14
+ ### Classes
15
+
16
+ - Sizes: `font-size`, default `1em`. Spinner size follows the element's computed font size.
17
+
18
+ ### Notes
19
+
20
+ - HTML: These never show a spinner: `<html>`, `<input>`, `<progress>`, `<select>` and `<textarea>`. Neither do elements with `aria-describedby`, except buttons and links.
21
+ - Astro, React, Svelte and Vue: Set `aria-busy="true"` on any element to show a spinner.
22
+
23
+ ## Component properties
24
+
25
+ Set inputs on the component, inline or in your CSS. Outputs follow the variant and state, so never override them.
26
+
27
+ ### spinner.css
28
+
29
+ - `--_motion`: Motion multiplier for the spin. `0` slows it down instead of stopping it.
30
+
31
+ ## Theme tokens
32
+
33
+ The stylesheets read `--ui-border-width-thick` and `--ui-motion`. `theming.md` and `tokens.json` describe them.
34
+
35
+ ## HTML
36
+
37
+ ### Example: Basics
38
+
39
+ ```html
40
+ <div aria-busy="true">Loading…</div>
41
+ ```
42
+
43
+ ## Astro
44
+
45
+ There is no Astro component. Use the classes in your markup.
46
+
47
+ ### Example: Basics
48
+
49
+ ```astro
50
+ <div aria-busy="true">Loading…</div>
51
+ ```
52
+
53
+ ## React
54
+
55
+ There is no React component. Use the classes in your markup.
56
+
57
+ ### Example: Basics
58
+
59
+ ```tsx
60
+ export default function Basics() {
61
+ return <div aria-busy="true">Loading…</div>
62
+ }
63
+ ```
64
+
65
+ ## Svelte
66
+
67
+ There is no Svelte component. Use the classes in your markup.
68
+
69
+ ### Example: Basics
70
+
71
+ ```svelte
72
+ <div aria-busy="true">Loading…</div>
73
+ ```
74
+
75
+ ## Vue
76
+
77
+ There is no Vue component. Use the classes in your markup.
78
+
79
+ ### Example: Basics
80
+
81
+ ```vue
82
+ <template>
83
+ <div aria-busy="true">Loading…</div>
84
+ </template>
85
+ ```