opui-css 5.4.1 → 5.4.3

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 (328) hide show
  1. package/CHANGELOG.md +373 -361
  2. package/LICENSE +21 -21
  3. package/MIGRATING.md +138 -138
  4. package/README.md +87 -87
  5. package/astro/index.ts +46 -46
  6. package/components/AGENTS.md +247 -247
  7. package/components/Accordion/Accordion.astro +48 -48
  8. package/components/Accordion/Accordion.vue +38 -38
  9. package/components/Accordion/types.astro.ts +4 -4
  10. package/components/Accordion/types.d.vue.ts +15 -15
  11. package/components/Accordion/types.solid.ts +6 -6
  12. package/components/Accordion/types.svelte.ts +7 -7
  13. package/components/Accordion/types.ts +10 -10
  14. package/components/Anchor/Anchor.astro +49 -49
  15. package/components/Anchor/Anchor.vue +41 -41
  16. package/components/Anchor/types.astro.ts +4 -4
  17. package/components/Anchor/types.d.vue.ts +10 -10
  18. package/components/Anchor/types.solid.ts +6 -6
  19. package/components/Anchor/types.svelte.ts +7 -7
  20. package/components/Anchor/types.ts +9 -9
  21. package/components/Avatar/Avatar.astro +29 -29
  22. package/components/Avatar/Avatar.vue +24 -24
  23. package/components/Avatar/types.astro.ts +10 -10
  24. package/components/Avatar/types.d.vue.ts +12 -12
  25. package/components/Avatar/types.solid.ts +11 -11
  26. package/components/Avatar/types.svelte.ts +12 -12
  27. package/components/Avatar/types.ts +29 -29
  28. package/components/Badge/Badge.astro +51 -51
  29. package/components/Badge/Badge.vue +40 -39
  30. package/components/Badge/types.astro.ts +4 -4
  31. package/components/Badge/types.d.vue.ts +10 -10
  32. package/components/Badge/types.solid.ts +4 -4
  33. package/components/Badge/types.svelte.ts +4 -4
  34. package/components/Badge/types.ts +12 -8
  35. package/components/Button/Button.astro +36 -36
  36. package/components/Button/Button.vue +27 -27
  37. package/components/Button/types.astro.ts +6 -6
  38. package/components/Button/types.d.vue.ts +10 -10
  39. package/components/Button/types.solid.ts +8 -8
  40. package/components/Button/types.svelte.ts +6 -6
  41. package/components/Button/types.ts +16 -16
  42. package/components/ButtonGroup/ButtonGroup.astro +29 -29
  43. package/components/ButtonGroup/ButtonGroup.vue +22 -22
  44. package/components/ButtonGroup/types.astro.ts +4 -4
  45. package/components/ButtonGroup/types.d.vue.ts +10 -10
  46. package/components/ButtonGroup/types.solid.ts +4 -4
  47. package/components/ButtonGroup/types.svelte.ts +4 -4
  48. package/components/ButtonGroup/types.ts +7 -7
  49. package/components/Callout/Callout.astro +76 -76
  50. package/components/Callout/Callout.vue +63 -63
  51. package/components/Callout/types.astro.ts +4 -4
  52. package/components/Callout/types.d.vue.ts +10 -10
  53. package/components/Callout/types.solid.ts +6 -6
  54. package/components/Callout/types.svelte.ts +7 -7
  55. package/components/Callout/types.ts +10 -10
  56. package/components/Card/Card.astro +34 -34
  57. package/components/Card/Card.vue +28 -28
  58. package/components/Card/types.astro.ts +4 -4
  59. package/components/Card/types.d.vue.ts +10 -10
  60. package/components/Card/types.solid.ts +6 -6
  61. package/components/Card/types.svelte.ts +7 -7
  62. package/components/Card/types.ts +11 -11
  63. package/components/Checkbox/Checkbox.astro +46 -46
  64. package/components/Checkbox/Checkbox.vue +43 -43
  65. package/components/Checkbox/CheckboxInput.astro +16 -16
  66. package/components/Checkbox/CheckboxInput.vue +32 -32
  67. package/components/Checkbox/types.astro.ts +8 -8
  68. package/components/Checkbox/types.d.vue.ts +11 -11
  69. package/components/Checkbox/types.solid.ts +9 -9
  70. package/components/Checkbox/types.svelte.ts +12 -12
  71. package/components/Checkbox/types.ts +16 -16
  72. package/components/Chip/Chip.astro +31 -31
  73. package/components/Chip/Chip.vue +37 -37
  74. package/components/Chip/types.astro.ts +9 -9
  75. package/components/Chip/types.d.vue.ts +10 -10
  76. package/components/Chip/types.solid.ts +10 -10
  77. package/components/Chip/types.svelte.ts +14 -14
  78. package/components/Chip/types.ts +13 -13
  79. package/components/ClassicSelect/ClassicSelect.astro +60 -60
  80. package/components/ClassicSelect/ClassicSelect.vue +54 -54
  81. package/components/ClassicSelect/types.d.vue.ts +10 -10
  82. package/components/ClassicSelect/types.ts +15 -15
  83. package/components/DescriptionList/Description.astro +9 -9
  84. package/components/DescriptionList/Description.vue +12 -12
  85. package/components/DescriptionList/DescriptionList.astro +18 -18
  86. package/components/DescriptionList/DescriptionList.vue +23 -23
  87. package/components/DescriptionList/Item.astro +9 -9
  88. package/components/DescriptionList/Item.vue +12 -12
  89. package/components/DescriptionList/Term.astro +9 -9
  90. package/components/DescriptionList/Term.vue +12 -12
  91. package/components/DescriptionList/index.ts +12 -12
  92. package/components/DescriptionList/types.astro.ts +10 -10
  93. package/components/DescriptionList/types.d.vue.ts +10 -10
  94. package/components/DescriptionList/types.solid.ts +4 -4
  95. package/components/DescriptionList/types.svelte.ts +4 -4
  96. package/components/DescriptionList/types.ts +3 -3
  97. package/components/Dialog/Dialog.astro +38 -38
  98. package/components/Dialog/Dialog.vue +35 -35
  99. package/components/Dialog/types.astro.ts +4 -4
  100. package/components/Dialog/types.d.vue.ts +10 -10
  101. package/components/Dialog/types.solid.ts +8 -8
  102. package/components/Dialog/types.svelte.ts +7 -7
  103. package/components/Dialog/types.ts +10 -10
  104. package/components/Divider/Divider.astro +12 -12
  105. package/components/Divider/Divider.vue +12 -12
  106. package/components/Divider/types.astro.ts +4 -4
  107. package/components/Divider/types.d.vue.ts +6 -6
  108. package/components/Divider/types.solid.ts +4 -4
  109. package/components/Divider/types.svelte.ts +4 -4
  110. package/components/Divider/types.ts +3 -3
  111. package/components/Drawer/Drawer.astro +47 -47
  112. package/components/Drawer/Drawer.vue +46 -46
  113. package/components/Drawer/DrawerFooter.astro +11 -11
  114. package/components/Drawer/DrawerFooter.vue +16 -16
  115. package/components/Drawer/DrawerHeader.astro +27 -27
  116. package/components/Drawer/DrawerHeader.vue +36 -36
  117. package/components/Drawer/types.astro.ts +8 -8
  118. package/components/Drawer/types.d.vue.ts +31 -31
  119. package/components/Drawer/types.solid.ts +12 -12
  120. package/components/Drawer/types.svelte.ts +15 -15
  121. package/components/Drawer/types.ts +20 -20
  122. package/components/FieldDescription/FieldDescription.astro +9 -9
  123. package/components/FieldDescription/FieldDescription.vue +12 -12
  124. package/components/FieldDescription/types.astro.ts +4 -4
  125. package/components/FieldDescription/types.d.vue.ts +10 -10
  126. package/components/FieldDescription/types.solid.ts +5 -5
  127. package/components/FieldDescription/types.svelte.ts +4 -4
  128. package/components/FieldDescription/types.ts +1 -1
  129. package/components/FieldGroup/FieldGroup.astro +24 -24
  130. package/components/FieldGroup/FieldGroup.vue +25 -25
  131. package/components/FieldGroup/types.astro.ts +4 -4
  132. package/components/FieldGroup/types.d.vue.ts +12 -12
  133. package/components/FieldGroup/types.solid.ts +5 -5
  134. package/components/FieldGroup/types.svelte.ts +4 -4
  135. package/components/FieldGroup/types.ts +4 -4
  136. package/components/FieldLegend/FieldLegend.astro +11 -11
  137. package/components/FieldLegend/FieldLegend.vue +18 -18
  138. package/components/FieldLegend/types.astro.ts +6 -6
  139. package/components/FieldLegend/types.d.vue.ts +11 -11
  140. package/components/FieldLegend/types.solid.ts +5 -5
  141. package/components/FieldLegend/types.svelte.ts +6 -6
  142. package/components/FieldLegend/types.ts +1 -1
  143. package/components/FieldSet/FieldSet.astro +11 -11
  144. package/components/FieldSet/FieldSet.vue +18 -18
  145. package/components/FieldSet/types.astro.ts +6 -6
  146. package/components/FieldSet/types.d.vue.ts +11 -11
  147. package/components/FieldSet/types.solid.ts +5 -5
  148. package/components/FieldSet/types.svelte.ts +8 -8
  149. package/components/FieldSet/types.ts +5 -5
  150. package/components/Form/Form.astro +10 -10
  151. package/components/Form/Form.vue +14 -14
  152. package/components/Form/types.astro.ts +6 -6
  153. package/components/Form/types.d.vue.ts +11 -11
  154. package/components/Form/types.solid.ts +5 -5
  155. package/components/Form/types.svelte.ts +7 -7
  156. package/components/Form/types.ts +1 -1
  157. package/components/IconButton/IconButton.astro +24 -24
  158. package/components/IconButton/IconButton.vue +24 -24
  159. package/components/IconButton/types.astro.ts +6 -6
  160. package/components/IconButton/types.d.vue.ts +10 -10
  161. package/components/IconButton/types.solid.ts +8 -8
  162. package/components/IconButton/types.svelte.ts +6 -6
  163. package/components/IconButton/types.ts +16 -16
  164. package/components/List/List.astro +29 -29
  165. package/components/List/List.vue +28 -28
  166. package/components/List/types.astro.ts +4 -4
  167. package/components/List/types.d.vue.ts +10 -10
  168. package/components/List/types.solid.ts +4 -4
  169. package/components/List/types.svelte.ts +4 -4
  170. package/components/List/types.ts +7 -7
  171. package/components/ListItem/ListItem.astro +108 -108
  172. package/components/ListItem/ListItem.vue +98 -98
  173. package/components/ListItem/types.astro.ts +10 -10
  174. package/components/ListItem/types.d.vue.ts +10 -10
  175. package/components/ListItem/types.solid.ts +12 -12
  176. package/components/ListItem/types.svelte.ts +14 -14
  177. package/components/ListItem/types.ts +32 -32
  178. package/components/Progress/Progress.astro +31 -31
  179. package/components/Progress/Progress.vue +34 -34
  180. package/components/Progress/types.astro.ts +4 -4
  181. package/components/Progress/types.d.vue.ts +10 -10
  182. package/components/Progress/types.solid.ts +4 -4
  183. package/components/Progress/types.svelte.ts +4 -4
  184. package/components/Progress/types.ts +10 -10
  185. package/components/Radio/Radio.astro +44 -44
  186. package/components/Radio/Radio.vue +41 -41
  187. package/components/Radio/RadioInput.astro +7 -7
  188. package/components/Radio/RadioInput.vue +14 -14
  189. package/components/Radio/types.astro.ts +6 -6
  190. package/components/Radio/types.d.vue.ts +11 -11
  191. package/components/Radio/types.solid.ts +9 -9
  192. package/components/Radio/types.svelte.ts +12 -12
  193. package/components/Radio/types.ts +12 -12
  194. package/components/Range/Range.astro +128 -128
  195. package/components/Range/Range.vue +85 -85
  196. package/components/Range/types.ts +25 -25
  197. package/components/Select/Select.astro +108 -108
  198. package/components/Select/Select.vue +85 -85
  199. package/components/Switch/Switch.astro +76 -76
  200. package/components/Switch/Switch.vue +63 -63
  201. package/components/Switch/SwitchInput.astro +7 -7
  202. package/components/Switch/SwitchInput.vue +14 -14
  203. package/components/Switch/types.astro.ts +5 -5
  204. package/components/Switch/types.d.vue.ts +13 -13
  205. package/components/Switch/types.solid.ts +9 -9
  206. package/components/Switch/types.svelte.ts +9 -9
  207. package/components/Switch/types.ts +16 -16
  208. package/components/Table/Body.astro +11 -11
  209. package/components/Table/Body.vue +5 -5
  210. package/components/Table/Cell.astro +11 -11
  211. package/components/Table/Cell.vue +5 -5
  212. package/components/Table/Column.astro +12 -12
  213. package/components/Table/Column.vue +19 -19
  214. package/components/Table/ColumnGroup.astro +11 -11
  215. package/components/Table/ColumnGroup.vue +5 -5
  216. package/components/Table/Head.astro +11 -11
  217. package/components/Table/Head.vue +5 -5
  218. package/components/Table/HeaderCell.astro +11 -11
  219. package/components/Table/HeaderCell.vue +5 -5
  220. package/components/Table/Row.astro +11 -11
  221. package/components/Table/Row.vue +5 -5
  222. package/components/Table/Table.astro +14 -14
  223. package/components/Table/Table.vue +19 -19
  224. package/components/Table/index.ts +20 -20
  225. package/components/Table/types.astro.ts +16 -16
  226. package/components/Table/types.d.vue.ts +10 -10
  227. package/components/Table/types.solid.ts +8 -8
  228. package/components/Table/types.svelte.ts +11 -11
  229. package/components/Table/types.ts +9 -9
  230. package/components/Tabs/Tabs.astro +24 -24
  231. package/components/Tabs/Tabs.vue +20 -20
  232. package/components/Tabs/TabsItem.astro +40 -40
  233. package/components/Tabs/TabsItem.vue +39 -39
  234. package/components/Tabs/TabsPanel.astro +16 -16
  235. package/components/Tabs/TabsPanel.vue +31 -31
  236. package/components/Tabs/TabsTab.astro +15 -15
  237. package/components/Tabs/TabsTab.vue +24 -24
  238. package/components/Tabs/index.ts +14 -14
  239. package/components/Tabs/types.astro.ts +11 -11
  240. package/components/Tabs/types.d.vue.ts +31 -31
  241. package/components/Tabs/types.solid.ts +12 -12
  242. package/components/Tabs/types.svelte.ts +10 -10
  243. package/components/Tabs/types.ts +19 -19
  244. package/components/TextField/TextField.astro +124 -124
  245. package/components/TextField/TextField.vue +74 -74
  246. package/components/TextField/types.astro.ts +17 -17
  247. package/components/Textarea/Textarea.astro +118 -118
  248. package/components/Textarea/Textarea.vue +64 -64
  249. package/components/Textarea/types.astro.ts +10 -10
  250. package/components/Textarea/types.d.vue.ts +19 -19
  251. package/components/Textarea/types.solid.ts +6 -6
  252. package/components/Textarea/types.svelte.ts +21 -21
  253. package/components/Textarea/types.ts +33 -33
  254. package/components/Toast/Toast.astro +42 -42
  255. package/components/Toast/Toast.vue +48 -48
  256. package/components/ToggleButton/ToggleButton.astro +43 -43
  257. package/components/ToggleButton/ToggleButton.vue +41 -41
  258. package/components/ToggleButton/types.astro.ts +4 -4
  259. package/components/ToggleButton/types.d.vue.ts +10 -10
  260. package/components/ToggleButton/types.solid.ts +7 -7
  261. package/components/ToggleButton/types.svelte.ts +7 -7
  262. package/components/ToggleButton/types.ts +10 -10
  263. package/components/ToggleGroup/ToggleGroup.astro +42 -42
  264. package/components/ToggleGroup/ToggleGroup.vue +36 -36
  265. package/components/ToggleGroup/types.astro.ts +4 -4
  266. package/components/ToggleGroup/types.d.vue.ts +15 -15
  267. package/components/ToggleGroup/types.solid.ts +4 -4
  268. package/components/ToggleGroup/types.svelte.ts +9 -9
  269. package/components/ToggleGroup/types.ts +15 -15
  270. package/components/Tooltip/Tooltip.astro +23 -23
  271. package/components/Tooltip/Tooltip.vue +22 -22
  272. package/components/Tooltip/types.astro.ts +4 -4
  273. package/components/Tooltip/types.d.vue.ts +10 -10
  274. package/components/Tooltip/types.solid.ts +6 -6
  275. package/components/Tooltip/types.svelte.ts +7 -7
  276. package/components/Tooltip/types.ts +11 -11
  277. package/core/normalize.css +214 -214
  278. package/core/palette.css +314 -314
  279. package/core/utils.css +68 -69
  280. package/css/components/accordion.css +173 -173
  281. package/css/components/anchor.css +27 -27
  282. package/css/components/avatar.css +65 -65
  283. package/css/components/badge.css +107 -107
  284. package/css/components/button-group.css +179 -193
  285. package/css/components/button.css +212 -228
  286. package/css/components/callout.css +112 -112
  287. package/css/components/card.css +116 -115
  288. package/css/components/checkbox.css +211 -211
  289. package/css/components/chip.css +92 -92
  290. package/css/components/description-list.css +81 -81
  291. package/css/components/dialog.css +64 -64
  292. package/css/components/divider.css +20 -20
  293. package/css/components/drawer.css +170 -172
  294. package/css/components/form.css +146 -147
  295. package/css/components/icon-button.css +139 -156
  296. package/css/components/link.css +21 -21
  297. package/css/components/list.css +343 -343
  298. package/css/components/progress.css +99 -99
  299. package/css/components/radio.css +170 -170
  300. package/css/components/range.css +320 -339
  301. package/css/components/select.css +170 -171
  302. package/css/components/spinner.css +38 -38
  303. package/css/components/switch.css +270 -270
  304. package/css/components/table.css +173 -173
  305. package/css/components/tabs.css +84 -84
  306. package/css/components/text-field.css +449 -449
  307. package/css/components/text-input.css +68 -68
  308. package/css/components/textarea.css +26 -26
  309. package/css/components/toast.css +157 -160
  310. package/css/components/toggle-button.css +91 -91
  311. package/css/components/toggle-group.css +56 -56
  312. package/css/components/tooltip.css +68 -70
  313. package/css/components/typography.css +580 -585
  314. package/css/components.css +41 -41
  315. package/css/imports.css +17 -17
  316. package/css/js/checkbox.js +21 -21
  317. package/css/js/toast.js +94 -94
  318. package/css/theme.css +124 -125
  319. package/dist/op.css +4 -4
  320. package/dist/op.css.map +1 -1
  321. package/dist/opui.components.css +5140 -5219
  322. package/dist/opui.components.css.map +1 -1
  323. package/dist/opui.css +5907 -5988
  324. package/dist/opui.css.map +1 -1
  325. package/env.d.ts +14 -14
  326. package/open-props.css +6 -6
  327. package/package.json +90 -90
  328. package/vue/index.ts +54 -54
package/LICENSE CHANGED
@@ -1,21 +1,21 @@
1
- MIT License
2
-
3
- Copyright (c) 2026 Felix Bohlin
4
-
5
- Permission is hereby granted, free of charge, to any person obtaining a copy
6
- of this software and associated documentation files (the "Software"), to deal
7
- in the Software without restriction, including without limitation the rights
8
- to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9
- copies of the Software, and to permit persons to whom the Software is
10
- furnished to do so, subject to the following conditions:
11
-
12
- The above copyright notice and this permission notice shall be included in all
13
- copies or substantial portions of the Software.
14
-
15
- THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16
- IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17
- FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18
- AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19
- LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20
- OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
21
- SOFTWARE.
1
+ MIT License
2
+
3
+ Copyright (c) 2026 Felix Bohlin
4
+
5
+ Permission is hereby granted, free of charge, to any person obtaining a copy
6
+ of this software and associated documentation files (the "Software"), to deal
7
+ in the Software without restriction, including without limitation the rights
8
+ to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9
+ copies of the Software, and to permit persons to whom the Software is
10
+ furnished to do so, subject to the following conditions:
11
+
12
+ The above copyright notice and this permission notice shall be included in all
13
+ copies or substantial portions of the Software.
14
+
15
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16
+ IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17
+ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18
+ AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19
+ LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20
+ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
21
+ SOFTWARE.
package/MIGRATING.md CHANGED
@@ -1,138 +1,138 @@
1
- # Migrating from v5.0 to v5.1
2
-
3
- In v5.1.0, the `critical` prop has been renamed to `error` on all form components (`TextField`, `Checkbox`, `Radio`, `Switch`, `Select`, `ClassicSelect`, `Textarea`).
4
-
5
- ```diff
6
- - <TextField critical label="Name" />
7
- + <TextField error label="Name" />
8
- ```
9
-
10
- Note: Components that use `critical` for severity styling (such as `Button`, `Callout`, `Badge`) still use the `critical` prop.
11
-
12
- # Migrating from v4 to v5
13
-
14
- v5 prefixes every OPUI-owned class with `ui-`. The component prop API is unchanged; only the rendered class names change.
15
-
16
- If you use the framework component (e.g. `<Button size="small" variant="outlined">`), you don't need to do anything — the component emits the prefixed classes for you.
17
-
18
- If you use raw HTML or write CSS that targets library classes, you must rename every reference:
19
-
20
- ```diff
21
- - <button class="button outlined small">Save</button>
22
- + <button class="ui-button ui-outlined ui-small">Save</button>
23
- ```
24
-
25
- ```diff
26
- - .button.filled { /* override */ }
27
- + .ui-button.ui-filled { /* override */ }
28
- ```
29
-
30
- The full list of renamed tokens is in [CHANGELOG.md](./CHANGELOG.md#500). Run a project-wide find/replace per token, then visually smoke test.
31
-
32
- CSS custom properties (`--primary`, `--surface-default`, `--size-3`, …) are unchanged.
33
-
34
- # Migrating from v3 to v4
35
-
36
- v4 is a full re-platform.
37
-
38
- ## 1. `import "opui-css"` still works
39
-
40
- The default export still resolves to a complete, ready-to-use stylesheet — just under a different filename. No code change needed unless you want one.
41
-
42
- ```diff
43
- - import "opui-css" // resolved to dist/theme-two/theme-two.css
44
- + import "opui-css" // now resolves to dist/opui.css (single theme)
45
- ```
46
-
47
- If you imported `theme-one` specifically, you need to either accept the new theme or vendor the v3 stylesheet into your repo:
48
-
49
- ```diff
50
- - import "opui-css/theme-one"
51
- - import "opui-css/theme-one/components"
52
- + import "opui-css" // or your own override layer
53
- ```
54
-
55
- ## 2. `opui-css/open-props` is unchanged
56
-
57
- ```js
58
- import "opui-css/open-props" // still points at compiled Open Props tokens
59
- ```
60
-
61
- ## 3. The other `dist/` subpaths
62
-
63
- | v3 | v4 |
64
- | ---------------------------------------- | ----------------------------------- |
65
- | `opui-css/dist/theme-two/theme-two.css` | `opui-css/dist/opui.css` |
66
- | `opui-css/dist/theme-two/components.css` | `opui-css/dist/opui.components.css` |
67
- | `opui-css/dist/theme-one/theme-one.css` | removed |
68
- | `opui-css/dist/theme-one/components.css` | removed |
69
- | `opui-css/dist/op.css` | `opui-css/dist/op.css` (unchanged) |
70
-
71
- ## 4. Source layout moved
72
-
73
- If you were importing from `src/`:
74
-
75
- ```diff
76
- - @import "opui-css/src/components/button.css";
77
- + @import "opui-css/css/components/button.css";
78
- ```
79
-
80
- The component CSS now lives under `css/`. The pre-bundled output stays in `dist/`.
81
-
82
- ## 5. Pick a theme — there's only one
83
-
84
- `theme-one` and `theme-two` are removed. The shipped theme lives in `css/theme.css`. To customise, override variables in a layer:
85
-
86
- ```css
87
- @layer theme {
88
- :root {
89
- --primary: oklch(60% 0.2 250);
90
- }
91
- }
92
- ```
93
-
94
- ## 6. `open-props` is now a peer dependency
95
-
96
- v3 had `open-props` as a regular dependency. v4 makes it a peer so you control the version:
97
-
98
- ```bash
99
- pnpm add open-props
100
- ```
101
-
102
- ## 7. New: Astro components
103
-
104
- ```astro
105
- ---
106
- import { Button, Dialog, Tabs } from "opui-css/astro"
107
- ---
108
-
109
- <Button variant="primary">Save</Button>
110
- ```
111
-
112
- `astro` is an _optional_ peer — only required if you actually import from `opui-css/astro`. Pure-CSS consumers won't see a peer warning.
113
-
114
- Astro components emit prefixed `ui-` classes (see the v4 → v5 section at the top of this file). Raw HTML and CSS overrides must use those prefixed names.
115
-
116
- ## 8. Cascade layers
117
-
118
- v4 declares the layer order in `css/imports.css` / `dist/opui.css`:
119
-
120
- ```css
121
- @layer openprops, normalize, theme, components.root, components.extended, utils;
122
- ```
123
-
124
- Put your overrides in a later layer or unlayered. If your app already declared `@layer` with a different order, reconcile or import `dist/opui.components.css` and own the layer order yourself.
125
-
126
- ## 9. Copy/paste is still supported
127
-
128
- The source files under `components/` and `css/components/` are unminified and free to vendor in — the license is unchanged (MIT).
129
-
130
- ## 10. Pinning v3
131
-
132
- If you're not ready to migrate, pin the last v3 release:
133
-
134
- ```json
135
- { "dependencies": { "opui-css": "3.3.5" } }
136
- ```
137
-
138
- v3 will not receive further updates.
1
+ # Migrating from v5.0 to v5.1
2
+
3
+ In v5.1.0, the `critical` prop has been renamed to `error` on all form components (`TextField`, `Checkbox`, `Radio`, `Switch`, `Select`, `ClassicSelect`, `Textarea`).
4
+
5
+ ```diff
6
+ - <TextField critical label="Name" />
7
+ + <TextField error label="Name" />
8
+ ```
9
+
10
+ Note: Components that use `critical` for severity styling (such as `Button`, `Callout`, `Badge`) still use the `critical` prop.
11
+
12
+ # Migrating from v4 to v5
13
+
14
+ v5 prefixes every OPUI-owned class with `ui-`. The component prop API is unchanged; only the rendered class names change.
15
+
16
+ If you use the framework component (e.g. `<Button size="small" variant="outlined">`), you don't need to do anything - the component emits the prefixed classes for you.
17
+
18
+ If you use raw HTML or write CSS that targets library classes, you must rename every reference:
19
+
20
+ ```diff
21
+ - <button class="button outlined small">Save</button>
22
+ + <button class="ui-button ui-outlined ui-small">Save</button>
23
+ ```
24
+
25
+ ```diff
26
+ - .button.filled { /* override */ }
27
+ + .ui-button.ui-filled { /* override */ }
28
+ ```
29
+
30
+ The full list of renamed tokens is in [CHANGELOG.md](./CHANGELOG.md#500). Run a project-wide find/replace per token, then visually smoke test.
31
+
32
+ CSS custom properties (`--primary`, `--surface-default`, `--size-3`, …) are unchanged.
33
+
34
+ # Migrating from v3 to v4
35
+
36
+ v4 is a full re-platform.
37
+
38
+ ## 1. `import "opui-css"` still works
39
+
40
+ The default export still resolves to a complete, ready-to-use stylesheet - just under a different filename. No code change needed unless you want one.
41
+
42
+ ```diff
43
+ - import "opui-css" // resolved to dist/theme-two/theme-two.css
44
+ + import "opui-css" // now resolves to dist/opui.css (single theme)
45
+ ```
46
+
47
+ If you imported `theme-one` specifically, you need to either accept the new theme or vendor the v3 stylesheet into your repo:
48
+
49
+ ```diff
50
+ - import "opui-css/theme-one"
51
+ - import "opui-css/theme-one/components"
52
+ + import "opui-css" // or your own override layer
53
+ ```
54
+
55
+ ## 2. `opui-css/open-props` is unchanged
56
+
57
+ ```js
58
+ import "opui-css/open-props" // still points at compiled Open Props tokens
59
+ ```
60
+
61
+ ## 3. The other `dist/` subpaths
62
+
63
+ | v3 | v4 |
64
+ | ---------------------------------------- | ----------------------------------- |
65
+ | `opui-css/dist/theme-two/theme-two.css` | `opui-css/dist/opui.css` |
66
+ | `opui-css/dist/theme-two/components.css` | `opui-css/dist/opui.components.css` |
67
+ | `opui-css/dist/theme-one/theme-one.css` | removed |
68
+ | `opui-css/dist/theme-one/components.css` | removed |
69
+ | `opui-css/dist/op.css` | `opui-css/dist/op.css` (unchanged) |
70
+
71
+ ## 4. Source layout moved
72
+
73
+ If you were importing from `src/`:
74
+
75
+ ```diff
76
+ - @import "opui-css/src/components/button.css";
77
+ + @import "opui-css/css/components/button.css";
78
+ ```
79
+
80
+ The component CSS now lives under `css/`. The pre-bundled output stays in `dist/`.
81
+
82
+ ## 5. Pick a theme - there's only one
83
+
84
+ `theme-one` and `theme-two` are removed. The shipped theme lives in `css/theme.css`. To customise, override variables in a layer:
85
+
86
+ ```css
87
+ @layer theme {
88
+ :root {
89
+ --primary: oklch(60% 0.2 250);
90
+ }
91
+ }
92
+ ```
93
+
94
+ ## 6. `open-props` is now a peer dependency
95
+
96
+ v3 had `open-props` as a regular dependency. v4 makes it a peer so you control the version:
97
+
98
+ ```bash
99
+ pnpm add open-props
100
+ ```
101
+
102
+ ## 7. New: Astro components
103
+
104
+ ```astro
105
+ ---
106
+ import { Button, Dialog, Tabs } from "opui-css/astro"
107
+ ---
108
+
109
+ <Button variant="primary">Save</Button>
110
+ ```
111
+
112
+ `astro` is an _optional_ peer - only required if you actually import from `opui-css/astro`. Pure-CSS consumers won't see a peer warning.
113
+
114
+ Astro components emit prefixed `ui-` classes (see the v4 → v5 section at the top of this file). Raw HTML and CSS overrides must use those prefixed names.
115
+
116
+ ## 8. Cascade layers
117
+
118
+ v4 declares the layer order in `css/imports.css` / `dist/opui.css`:
119
+
120
+ ```css
121
+ @layer openprops, normalize, theme, components.root, components.extended, utils;
122
+ ```
123
+
124
+ Put your overrides in a later layer or unlayered. If your app already declared `@layer` with a different order, reconcile or import `dist/opui.components.css` and own the layer order yourself.
125
+
126
+ ## 9. Copy/paste is still supported
127
+
128
+ The source files under `components/` and `css/components/` are unminified and free to vendor in - the license is unchanged (MIT).
129
+
130
+ ## 10. Pinning v3
131
+
132
+ If you're not ready to migrate, pin the last v3 release:
133
+
134
+ ```json
135
+ { "dependencies": { "opui-css": "3.3.5" } }
136
+ ```
137
+
138
+ v3 will not receive further updates.
package/README.md CHANGED
@@ -1,87 +1,87 @@
1
- # Open Props UI
2
-
3
- A CSS UI library exploring how next-gen HTML & CSS features can change the way we create components. Built on top of [Open Props](https://open-props.style/) and ships HTML, [Astro](https://astro.build/) and [Vue](https://vuejs.org/) components alongside framework-agnostic CSS.
4
-
5
- - Docs: [open-props-ui.netlify.app](https://open-props-ui.netlify.app/)
6
- - Source: [github.com/felix-bohlin/ui](https://github.com/felix-bohlin/ui)
7
-
8
- ## Install
9
-
10
- ```bash
11
- pnpm add opui-css open-props
12
- ```
13
-
14
- Peer dependencies:
15
-
16
- - `astro` `^6` (only required if you use the Astro components)
17
- - `vue` `^3` (only required if you use the Vue components)
18
- - `open-props` `^1`
19
-
20
- ## Usage
21
-
22
- ### Astro components
23
-
24
- ```astro
25
- ---
26
- import "opui-css/css/imports.css"
27
- import { Button, Card } from "opui-css/astro"
28
- ---
29
-
30
- <Card>
31
- <Button variant="primary">Click me</Button>
32
- </Card>
33
- ```
34
-
35
- ### Plain HTML + CSS (no build step)
36
-
37
- Drop a pre-bundled stylesheet into any page and use the documented class names:
38
-
39
- ```html
40
- <link
41
- rel="stylesheet"
42
- href="https://cdn.jsdelivr.net/npm/opui-css/dist/opui.css"
43
- />
44
-
45
- <button class="ui-button ui-primary">Click me</button>
46
- ```
47
-
48
- `dist/opui.css` is a single self-contained file (Open Props + normalize + theme + every component + utils, in the correct cascade layers). `dist/opui.components.css` is the same minus tokens and reset for users who already have those.
49
-
50
- If you do have a bundler that resolves CSS `@import`s (Vite, Astro, webpack, …), import the source instead so you only ship what you use:
51
-
52
- ```css
53
- @import "opui-css/css/imports.css"; /* same content as dist/opui.css */
54
- @import "opui-css/css/components/button.css"; /* or pick à la carte */
55
- ```
56
-
57
- ### Cascade layers
58
-
59
- The library defines this layer order:
60
-
61
- ```css
62
- @layer openprops, theme, normalize, components.root, components.extended, utils;
63
- ```
64
-
65
- Wrap your own styles in a layer above `utils` (or unlayered) to override.
66
-
67
- ## Entry points
68
-
69
- | Import | What it gives you |
70
- | ----------------------------------- | --------------------------------------------- |
71
- | `opui-css` | Pre-bundled: everything in one file (default) |
72
- | `opui-css/open-props` | Pre-bundled: Open Props tokens only |
73
- | `opui-css/dist/opui.css` | Same as default — explicit path |
74
- | `opui-css/dist/opui.components.css` | Pre-bundled: components only |
75
- | `opui-css/dist/op.css` | Same as `opui-css/open-props` — explicit path |
76
- | `opui-css/css/imports.css` | Source: everything (resolved by your bundler) |
77
- | `opui-css/css/components.css` | All component styles (no tokens / reset) |
78
- | `opui-css/css/components/*.css` | One component at a time |
79
- | `opui-css/core/normalize.css` | CSS reset |
80
- | `opui-css/core/palette.css` | Extra OKLCH palette |
81
- | `opui-css/core/utils.css` | Utility classes |
82
- | `opui-css/astro` | All Astro components |
83
- | `opui-css/components/*` | Individual Astro component sources |
84
-
85
- ## License
86
-
87
- [MIT](./LICENSE) © Felix Bohlin
1
+ # Open Props UI
2
+
3
+ A CSS UI library exploring how next-gen HTML & CSS features can change the way we create components. Built on top of [Open Props](https://open-props.style/) and ships HTML, [Astro](https://astro.build/) and [Vue](https://vuejs.org/) components alongside framework-agnostic CSS.
4
+
5
+ - Docs: [open-props-ui.netlify.app](https://open-props-ui.netlify.app/)
6
+ - Source: [github.com/felix-bohlin/ui](https://github.com/felix-bohlin/ui)
7
+
8
+ ## Install
9
+
10
+ ```bash
11
+ pnpm add opui-css open-props
12
+ ```
13
+
14
+ Peer dependencies:
15
+
16
+ - `astro` `^6` (only required if you use the Astro components)
17
+ - `vue` `^3` (only required if you use the Vue components)
18
+ - `open-props` `^1`
19
+
20
+ ## Usage
21
+
22
+ ### Astro components
23
+
24
+ ```astro
25
+ ---
26
+ import "opui-css/css/imports.css"
27
+ import { Button, Card } from "opui-css/astro"
28
+ ---
29
+
30
+ <Card>
31
+ <Button variant="primary">Click me</Button>
32
+ </Card>
33
+ ```
34
+
35
+ ### Plain HTML + CSS (no build step)
36
+
37
+ Drop a pre-bundled stylesheet into any page and use the documented class names:
38
+
39
+ ```html
40
+ <link
41
+ rel="stylesheet"
42
+ href="https://cdn.jsdelivr.net/npm/opui-css/dist/opui.css"
43
+ />
44
+
45
+ <button class="ui-button ui-primary">Click me</button>
46
+ ```
47
+
48
+ `dist/opui.css` is a single self-contained file (Open Props + normalize + theme + every component + utils, in the correct cascade layers). `dist/opui.components.css` is the same minus tokens and reset for users who already have those.
49
+
50
+ If you do have a bundler that resolves CSS `@import`s (Vite, Astro, webpack, …), import the source instead so you only ship what you use:
51
+
52
+ ```css
53
+ @import "opui-css/css/imports.css"; /* same content as dist/opui.css */
54
+ @import "opui-css/css/components/button.css"; /* or pick à la carte */
55
+ ```
56
+
57
+ ### Cascade layers
58
+
59
+ The library defines this layer order:
60
+
61
+ ```css
62
+ @layer openprops, theme, normalize, components.root, components.extended, utils;
63
+ ```
64
+
65
+ Wrap your own styles in a layer above `utils` (or unlayered) to override.
66
+
67
+ ## Entry points
68
+
69
+ | Import | What it gives you |
70
+ | ----------------------------------- | --------------------------------------------- |
71
+ | `opui-css` | Pre-bundled: everything in one file (default) |
72
+ | `opui-css/open-props` | Pre-bundled: Open Props tokens only |
73
+ | `opui-css/dist/opui.css` | Same as default - explicit path |
74
+ | `opui-css/dist/opui.components.css` | Pre-bundled: components only |
75
+ | `opui-css/dist/op.css` | Same as `opui-css/open-props` - explicit path |
76
+ | `opui-css/css/imports.css` | Source: everything (resolved by your bundler) |
77
+ | `opui-css/css/components.css` | All component styles (no tokens / reset) |
78
+ | `opui-css/css/components/*.css` | One component at a time |
79
+ | `opui-css/core/normalize.css` | CSS reset |
80
+ | `opui-css/core/palette.css` | Extra OKLCH palette |
81
+ | `opui-css/core/utils.css` | Utility classes |
82
+ | `opui-css/astro` | All Astro components |
83
+ | `opui-css/components/*` | Individual Astro component sources |
84
+
85
+ ## License
86
+
87
+ [MIT](./LICENSE) © Felix Bohlin
package/astro/index.ts CHANGED
@@ -1,46 +1,46 @@
1
- export { default as Accordion } from "../components/Accordion/Accordion.astro"
2
- export { default as Anchor } from "../components/Anchor/Anchor.astro"
3
- export { default as Avatar } from "../components/Avatar/Avatar.astro"
4
- export { default as Badge } from "../components/Badge/Badge.astro"
5
- export { default as Button } from "../components/Button/Button.astro"
6
- export { default as ButtonGroup } from "../components/ButtonGroup/ButtonGroup.astro"
7
- export { default as Callout } from "../components/Callout/Callout.astro"
8
- export { default as Card } from "../components/Card/Card.astro"
9
- export { default as Checkbox } from "../components/Checkbox/Checkbox.astro"
10
- export { default as CheckboxInput } from "../components/Checkbox/CheckboxInput.astro"
11
- export { default as Chip } from "../components/Chip/Chip.astro"
12
- export { default as ClassicSelect } from "../components/ClassicSelect/ClassicSelect.astro"
13
- export { default as DescriptionList } from "../components/DescriptionList/index"
14
- export { default as Dialog } from "../components/Dialog/Dialog.astro"
15
- export { default as Divider } from "../components/Divider/Divider.astro"
16
- export { default as Drawer } from "../components/Drawer/Drawer.astro"
17
- export { default as DrawerFooter } from "../components/Drawer/DrawerFooter.astro"
18
- export { default as DrawerHeader } from "../components/Drawer/DrawerHeader.astro"
19
- export { default as FieldDescription } from "../components/FieldDescription/FieldDescription.astro"
20
- export { default as FieldGroup } from "../components/FieldGroup/FieldGroup.astro"
21
- export { default as FieldLegend } from "../components/FieldLegend/FieldLegend.astro"
22
- export { default as FieldSet } from "../components/FieldSet/FieldSet.astro"
23
- export { default as Form } from "../components/Form/Form.astro"
24
- export { default as IconButton } from "../components/IconButton/IconButton.astro"
25
- export { default as List } from "../components/List/List.astro"
26
- export { default as ListItem } from "../components/ListItem/ListItem.astro"
27
- export { default as Progress } from "../components/Progress/Progress.astro"
28
- export { default as Radio } from "../components/Radio/Radio.astro"
29
- export { default as RadioInput } from "../components/Radio/RadioInput.astro"
30
- export { default as Range } from "../components/Range/Range.astro"
31
- export { default as Select } from "../components/Select/Select.astro"
32
- export { default as Switch } from "../components/Switch/Switch.astro"
33
- export { default as SwitchInput } from "../components/Switch/SwitchInput.astro"
34
- export { default as Tabs } from "../components/Tabs/index"
35
- export {
36
- TabsItem,
37
- Tab as TabsTab,
38
- Panel as TabsPanel,
39
- } from "../components/Tabs/index"
40
- export { default as Table } from "../components/Table/index"
41
- export { default as Textarea } from "../components/Textarea/Textarea.astro"
42
- export { default as TextField } from "../components/TextField/TextField.astro"
43
- export { default as Toast } from "../components/Toast/Toast.astro"
44
- export { default as Tooltip } from "../components/Tooltip/Tooltip.astro"
45
- export { default as ToggleButton } from "../components/ToggleButton/ToggleButton.astro"
46
- export { default as ToggleGroup } from "../components/ToggleGroup/ToggleGroup.astro"
1
+ export { default as Accordion } from "../components/Accordion/Accordion.astro"
2
+ export { default as Anchor } from "../components/Anchor/Anchor.astro"
3
+ export { default as Avatar } from "../components/Avatar/Avatar.astro"
4
+ export { default as Badge } from "../components/Badge/Badge.astro"
5
+ export { default as Button } from "../components/Button/Button.astro"
6
+ export { default as ButtonGroup } from "../components/ButtonGroup/ButtonGroup.astro"
7
+ export { default as Callout } from "../components/Callout/Callout.astro"
8
+ export { default as Card } from "../components/Card/Card.astro"
9
+ export { default as Checkbox } from "../components/Checkbox/Checkbox.astro"
10
+ export { default as CheckboxInput } from "../components/Checkbox/CheckboxInput.astro"
11
+ export { default as Chip } from "../components/Chip/Chip.astro"
12
+ export { default as ClassicSelect } from "../components/ClassicSelect/ClassicSelect.astro"
13
+ export { default as DescriptionList } from "../components/DescriptionList/index"
14
+ export { default as Dialog } from "../components/Dialog/Dialog.astro"
15
+ export { default as Divider } from "../components/Divider/Divider.astro"
16
+ export { default as Drawer } from "../components/Drawer/Drawer.astro"
17
+ export { default as DrawerFooter } from "../components/Drawer/DrawerFooter.astro"
18
+ export { default as DrawerHeader } from "../components/Drawer/DrawerHeader.astro"
19
+ export { default as FieldDescription } from "../components/FieldDescription/FieldDescription.astro"
20
+ export { default as FieldGroup } from "../components/FieldGroup/FieldGroup.astro"
21
+ export { default as FieldLegend } from "../components/FieldLegend/FieldLegend.astro"
22
+ export { default as FieldSet } from "../components/FieldSet/FieldSet.astro"
23
+ export { default as Form } from "../components/Form/Form.astro"
24
+ export { default as IconButton } from "../components/IconButton/IconButton.astro"
25
+ export { default as List } from "../components/List/List.astro"
26
+ export { default as ListItem } from "../components/ListItem/ListItem.astro"
27
+ export { default as Progress } from "../components/Progress/Progress.astro"
28
+ export { default as Radio } from "../components/Radio/Radio.astro"
29
+ export { default as RadioInput } from "../components/Radio/RadioInput.astro"
30
+ export { default as Range } from "../components/Range/Range.astro"
31
+ export { default as Select } from "../components/Select/Select.astro"
32
+ export { default as Switch } from "../components/Switch/Switch.astro"
33
+ export { default as SwitchInput } from "../components/Switch/SwitchInput.astro"
34
+ export { default as Tabs } from "../components/Tabs/index"
35
+ export {
36
+ TabsItem,
37
+ Tab as TabsTab,
38
+ Panel as TabsPanel,
39
+ } from "../components/Tabs/index"
40
+ export { default as Table } from "../components/Table/index"
41
+ export { default as Textarea } from "../components/Textarea/Textarea.astro"
42
+ export { default as TextField } from "../components/TextField/TextField.astro"
43
+ export { default as Toast } from "../components/Toast/Toast.astro"
44
+ export { default as Tooltip } from "../components/Tooltip/Tooltip.astro"
45
+ export { default as ToggleButton } from "../components/ToggleButton/ToggleButton.astro"
46
+ export { default as ToggleGroup } from "../components/ToggleGroup/ToggleGroup.astro"