opui-css 5.4.2 → 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 -367
  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 -40
  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 -12
  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 -68
  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 -179
  285. package/css/components/button.css +212 -212
  286. package/css/components/callout.css +112 -112
  287. package/css/components/card.css +116 -116
  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 -170
  294. package/css/components/form.css +146 -146
  295. package/css/components/icon-button.css +139 -139
  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 -320
  301. package/css/components/select.css +170 -170
  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 -157
  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 -68
  313. package/css/components/typography.css +580 -580
  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 -124
  319. package/dist/op.css +4 -4
  320. package/dist/op.css.map +1 -1
  321. package/dist/opui.components.css +5140 -5140
  322. package/dist/opui.components.css.map +1 -1
  323. package/dist/opui.css +5907 -5907
  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
@@ -1,41 +1,41 @@
1
- /*
2
- * Components are divided into two categories - if they are stand-alone (root) or if they are built on top of others (extended).
3
- */
4
-
5
- /*** Root components (no dependencies) */
6
- @import "./components/button.css";
7
- @import "./components/callout.css";
8
- @import "./components/icon-button.css";
9
- @import "./components/tabs.css";
10
- @import "./components/toggle-group.css";
11
- @import "./components/toggle-button.css";
12
- @import "./components/anchor.css";
13
- @import "./components/avatar.css";
14
- @import "./components/card.css";
15
- @import "./components/chip.css";
16
- @import "./components/description-list.css";
17
- @import "./components/divider.css";
18
- @import "./components/link.css";
19
- @import "./components/table.css";
20
- @import "./components/progress.css";
21
- @import "./components/spinner.css";
22
- @import "./components/checkbox.css";
23
- @import "./components/radio.css";
24
- @import "./components/range.css";
25
- @import "./components/switch.css";
26
- @import "./components/toast.css";
27
- @import "./components/typography.css";
28
-
29
- /*** Extended components (has dependencies) */
30
- @import "./components/badge.css";
31
- @import "./components/button-group.css";
32
- @import "./components/accordion.css";
33
- @import "./components/list.css";
34
- @import "./components/dialog.css";
35
- @import "./components/drawer.css";
36
- @import "./components/form.css";
37
- @import "./components/text-field.css";
38
- @import "./components/select.css";
39
- @import "./components/text-input.css";
40
- @import "./components/textarea.css";
41
- @import "./components/tooltip.css";
1
+ /*
2
+ * Components are divided into two categories - if they are stand-alone (root) or if they are built on top of others (extended).
3
+ */
4
+
5
+ /*** Root components (no dependencies) */
6
+ @import "./components/button.css";
7
+ @import "./components/callout.css";
8
+ @import "./components/icon-button.css";
9
+ @import "./components/tabs.css";
10
+ @import "./components/toggle-group.css";
11
+ @import "./components/toggle-button.css";
12
+ @import "./components/anchor.css";
13
+ @import "./components/avatar.css";
14
+ @import "./components/card.css";
15
+ @import "./components/chip.css";
16
+ @import "./components/description-list.css";
17
+ @import "./components/divider.css";
18
+ @import "./components/link.css";
19
+ @import "./components/table.css";
20
+ @import "./components/progress.css";
21
+ @import "./components/spinner.css";
22
+ @import "./components/checkbox.css";
23
+ @import "./components/radio.css";
24
+ @import "./components/range.css";
25
+ @import "./components/switch.css";
26
+ @import "./components/toast.css";
27
+ @import "./components/typography.css";
28
+
29
+ /*** Extended components (has dependencies) */
30
+ @import "./components/badge.css";
31
+ @import "./components/button-group.css";
32
+ @import "./components/accordion.css";
33
+ @import "./components/list.css";
34
+ @import "./components/dialog.css";
35
+ @import "./components/drawer.css";
36
+ @import "./components/form.css";
37
+ @import "./components/text-field.css";
38
+ @import "./components/select.css";
39
+ @import "./components/text-input.css";
40
+ @import "./components/textarea.css";
41
+ @import "./components/tooltip.css";
package/css/imports.css CHANGED
@@ -1,17 +1,17 @@
1
- @layer openprops, theme, normalize, components.root, components.extended, utils;
2
-
3
- /* Open Props */
4
- @import "../open-props.css";
5
-
6
- /* Theme */
7
- @import "../core/palette.css";
8
- @import "./theme.css";
9
-
10
- /* Normalize */
11
- @import "../core/normalize.css";
12
-
13
- /* Components */
14
- @import "./components.css";
15
-
16
- /* Utils */
17
- @import "../core/utils.css";
1
+ @layer openprops, theme, normalize, components.root, components.extended, utils;
2
+
3
+ /* Open Props */
4
+ @import "../open-props.css";
5
+
6
+ /* Theme */
7
+ @import "../core/palette.css";
8
+ @import "./theme.css";
9
+
10
+ /* Normalize */
11
+ @import "../core/normalize.css";
12
+
13
+ /* Components */
14
+ @import "./components.css";
15
+
16
+ /* Utils */
17
+ @import "../core/utils.css";
@@ -1,21 +1,21 @@
1
- /**
2
- * Checkbox runtime helpers.
3
- *
4
- * `indeterminate` is a JavaScript-only property on HTMLInputElement - the
5
- * attribute alone has no effect. We mark inputs with `data-indeterminate` at
6
- * render time and apply the property here, both on initial load and after
7
- * Astro's view transitions swap the DOM.
8
- */
9
-
10
- export function activateIndeterminate(root = document) {
11
- root
12
- .querySelectorAll('input[type="checkbox"][data-indeterminate]')
13
- .forEach((el) => {
14
- el.indeterminate = true
15
- })
16
- }
17
-
18
- export function initCheckbox() {
19
- activateIndeterminate()
20
- document.addEventListener("astro:after-swap", () => activateIndeterminate())
21
- }
1
+ /**
2
+ * Checkbox runtime helpers.
3
+ *
4
+ * `indeterminate` is a JavaScript-only property on HTMLInputElement - the
5
+ * attribute alone has no effect. We mark inputs with `data-indeterminate` at
6
+ * render time and apply the property here, both on initial load and after
7
+ * Astro's view transitions swap the DOM.
8
+ */
9
+
10
+ export function activateIndeterminate(root = document) {
11
+ root
12
+ .querySelectorAll('input[type="checkbox"][data-indeterminate]')
13
+ .forEach((el) => {
14
+ el.indeterminate = true
15
+ })
16
+ }
17
+
18
+ export function initCheckbox() {
19
+ activateIndeterminate()
20
+ document.addEventListener("astro:after-swap", () => activateIndeterminate())
21
+ }
package/css/js/toast.js CHANGED
@@ -1,94 +1,94 @@
1
- /**
2
- * Toast manager.
3
- *
4
- * - HTML owns structure (via <template id="toast-template">).
5
- * - CSS owns lifetime (via attr(data-duration type(<time>))).
6
- * - JS owns lifecycle (clone template, fill slots, append, remove on animationend).
7
- *
8
- * No setTimeout. No popovertargetaction. No innerHTML of user data.
9
- */
10
-
11
- const FALLBACK_TEMPLATE = `<div class="ui-toast" role="alert">
12
- <span class="ui-icon" data-toast-icon></span>
13
- <div class="ui-content">
14
- <div class="ui-title" data-toast-title></div>
15
- <div class="ui-description" data-toast-description></div>
16
- </div>
17
- <button class="ui-close-button" data-toast-close type="button" aria-label="Close">
18
- <svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><path d="M18 6 6 18"/><path d="m6 6 12 12"/></svg>
19
- </button>
20
- </div>`
21
-
22
- export function initToastManager() {
23
- const manager = document.getElementById("toast-manager")
24
- if (!manager) return
25
-
26
- try {
27
- manager.showPopover()
28
- } catch {
29
- /* already open or unsupported */
30
- }
31
-
32
- manager.addEventListener("command", (event) => {
33
- if (event.command !== "--show-toast") return
34
- const trigger = event.source
35
- if (!trigger) return
36
-
37
- const data = trigger.dataset || {}
38
- showToast(
39
- {
40
- description: data.description,
41
- duration: data.duration,
42
- severity: data.severity,
43
- template: data.template,
44
- title: data.title || trigger.textContent?.trim() || "",
45
- },
46
- manager,
47
- )
48
- })
49
-
50
- window.showToast = (options) => showToast(options || {}, manager)
51
- }
52
-
53
- function showToast(options, manager) {
54
- const node = buildToast(options.template || "toast-template")
55
- if (!node) return
56
-
57
- fillSlot(node, "[data-toast-title]", options.title)
58
- fillSlot(node, "[data-toast-description]", options.description)
59
-
60
- if (options.severity) node.dataset.severity = options.severity
61
- if (options.duration) node.dataset.duration = options.duration
62
-
63
- wireToast(node)
64
- manager.appendChild(node)
65
- }
66
-
67
- function buildToast(templateId) {
68
- const tpl = document.getElementById(templateId)
69
- if (tpl?.content?.firstElementChild) {
70
- return tpl.content.firstElementChild.cloneNode(true)
71
- }
72
- const wrap = document.createElement("div")
73
- wrap.innerHTML = FALLBACK_TEMPLATE.trim()
74
- return wrap.firstElementChild
75
- }
76
-
77
- function fillSlot(root, selector, text) {
78
- const el = root.querySelector(selector)
79
- if (!el) return
80
- if (text == null || text === "") {
81
- el.remove()
82
- return
83
- }
84
- el.textContent = text
85
- }
86
-
87
- function wireToast(node) {
88
- node.querySelector("[data-toast-close]")?.addEventListener("click", () => {
89
- node.classList.add("ui-exiting")
90
- })
91
- node.addEventListener("animationend", (event) => {
92
- if (event.animationName === "toast-exit") node.remove()
93
- })
94
- }
1
+ /**
2
+ * Toast manager.
3
+ *
4
+ * - HTML owns structure (via <template id="toast-template">).
5
+ * - CSS owns lifetime (via attr(data-duration type(<time>))).
6
+ * - JS owns lifecycle (clone template, fill slots, append, remove on animationend).
7
+ *
8
+ * No setTimeout. No popovertargetaction. No innerHTML of user data.
9
+ */
10
+
11
+ const FALLBACK_TEMPLATE = `<div class="ui-toast" role="alert">
12
+ <span class="ui-icon" data-toast-icon></span>
13
+ <div class="ui-content">
14
+ <div class="ui-title" data-toast-title></div>
15
+ <div class="ui-description" data-toast-description></div>
16
+ </div>
17
+ <button class="ui-close-button" data-toast-close type="button" aria-label="Close">
18
+ <svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><path d="M18 6 6 18"/><path d="m6 6 12 12"/></svg>
19
+ </button>
20
+ </div>`
21
+
22
+ export function initToastManager() {
23
+ const manager = document.getElementById("toast-manager")
24
+ if (!manager) return
25
+
26
+ try {
27
+ manager.showPopover()
28
+ } catch {
29
+ /* already open or unsupported */
30
+ }
31
+
32
+ manager.addEventListener("command", (event) => {
33
+ if (event.command !== "--show-toast") return
34
+ const trigger = event.source
35
+ if (!trigger) return
36
+
37
+ const data = trigger.dataset || {}
38
+ showToast(
39
+ {
40
+ description: data.description,
41
+ duration: data.duration,
42
+ severity: data.severity,
43
+ template: data.template,
44
+ title: data.title || trigger.textContent?.trim() || "",
45
+ },
46
+ manager,
47
+ )
48
+ })
49
+
50
+ window.showToast = (options) => showToast(options || {}, manager)
51
+ }
52
+
53
+ function showToast(options, manager) {
54
+ const node = buildToast(options.template || "toast-template")
55
+ if (!node) return
56
+
57
+ fillSlot(node, "[data-toast-title]", options.title)
58
+ fillSlot(node, "[data-toast-description]", options.description)
59
+
60
+ if (options.severity) node.dataset.severity = options.severity
61
+ if (options.duration) node.dataset.duration = options.duration
62
+
63
+ wireToast(node)
64
+ manager.appendChild(node)
65
+ }
66
+
67
+ function buildToast(templateId) {
68
+ const tpl = document.getElementById(templateId)
69
+ if (tpl?.content?.firstElementChild) {
70
+ return tpl.content.firstElementChild.cloneNode(true)
71
+ }
72
+ const wrap = document.createElement("div")
73
+ wrap.innerHTML = FALLBACK_TEMPLATE.trim()
74
+ return wrap.firstElementChild
75
+ }
76
+
77
+ function fillSlot(root, selector, text) {
78
+ const el = root.querySelector(selector)
79
+ if (!el) return
80
+ if (text == null || text === "") {
81
+ el.remove()
82
+ return
83
+ }
84
+ el.textContent = text
85
+ }
86
+
87
+ function wireToast(node) {
88
+ node.querySelector("[data-toast-close]")?.addEventListener("click", () => {
89
+ node.classList.add("ui-exiting")
90
+ })
91
+ node.addEventListener("animationend", (event) => {
92
+ if (event.animationName === "toast-exit") node.remove()
93
+ })
94
+ }
package/css/theme.css CHANGED
@@ -1,124 +1,124 @@
1
- @layer theme {
2
-
3
- /* 1. Color scheme */
4
- .ui-light {
5
- --color-scheme: light;
6
- }
7
-
8
- .ui-dark {
9
- --color-scheme: dark;
10
- }
11
-
12
- :where(html) {
13
- color-scheme: var(--color-scheme, light dark);
14
-
15
- /* 2. Palette - override the values in core/palette.css */
16
- --palette-hue: light-dark(var(--hue-green), var(--hue-blue));
17
- --palette-chroma: 0.5;
18
- /* --palette-source: oklch(.58 calc(.21 * .5) var(--hue-blue)); */
19
-
20
- /* Gray palette also lives in core/palette.css. */
21
- /*
22
- --gray-hue: 255;
23
- --gray-chroma: 0.01;
24
- */
25
-
26
- /* 3. Named colors (no severity meaning) - use when you literally want a green/red/etc. dot */
27
- --blue: oklch(from var(--color-9) l 0.2 210);
28
- --green: oklch(from var(--color-9) l 0.2 145);
29
- --orange: oklch(from var(--color-7) l 0.2 75);
30
- --red: oklch(from var(--color-9) l 0.2 25);
31
-
32
- /* 4. Intent tokens */
33
- --success: var(--green);
34
- --info: var(--blue);
35
- --warning: var(--orange);
36
- --critical: var(--red);
37
- --neutral: var(--gray-9);
38
-
39
- /* 5. Primary */
40
- --primary: var(--color-8);
41
- --primary-light: oklch(from var(--primary) calc(l * 1.25) c h);
42
- --primary-dark: oklch(from var(--primary) calc(l * 0.75) c h);
43
- --primary-contrast: var(--gray-1);
44
-
45
- /* 6. Text */
46
- --text-primary: light-dark(var(--gray-15), var(--gray-1));
47
- --text-primary-contrast: light-dark(var(--gray-2), var(--gray-15));
48
- --text-muted: light-dark(var(--gray-13), var(--gray-4));
49
- --text-muted-contrast: light-dark(var(--gray-4), var(--gray-13));
50
-
51
- /* 7. Surfaces */
52
- --surface-default: light-dark(var(--gray-1), var(--gray-13));
53
- --surface-filled: light-dark(var(--gray-4), var(--gray-15));
54
- --surface-tonal: light-dark(var(--gray-3), var(--gray-12));
55
- --surface-elevated: light-dark(var(--gray-1), var(--gray-12));
56
-
57
- /* 8. Borders */
58
- --border-color: light-dark(var(--gray-4), var(--gray-12));
59
- --border-radius: var(--size-2);
60
- --border-width: 1px;
61
-
62
- /* 9. Focus ring */
63
- --focus-ring-color: var(--primary);
64
- --focus-ring-width: 2px;
65
- --focus-ring-offset: 2px;
66
- --focus-ring-style: solid;
67
-
68
- /* 10. Typography */
69
- --font-size-h1: var(--font-size-fluid-3);
70
- --font-size-h2: var(--font-size-fluid-2);
71
- --font-size-h3: var(--font-size-fluid-1);
72
- --font-size-h4: var(--font-size-3);
73
- --font-size-h5: var(--font-size-2);
74
- --font-size-h6: var(--font-size-fluid-0);
75
-
76
- /* Sneaking in an extra font size I want but Open Props doesn't provide. You can do whatever you want with your own theme. It's just CSS. */
77
- --font-size-05: 0.875rem;
78
-
79
- /* 11. Control sizes - shared scale for fields and buttons so they line up. */
80
- --control-size-x-small: 28px;
81
- --control-size-small: 32px;
82
- --control-size: 40px;
83
- --control-size-large: 46px;
84
-
85
- --field-size-x-small: var(--control-size-x-small);
86
- --field-size-small: var(--control-size-small);
87
- --field-size: var(--control-size);
88
- --field-size-large: var(--control-size-large);
89
-
90
- --button-size-x-small: var(--control-size-x-small);
91
- --button-size-small: var(--control-size-small);
92
- --button-size: var(--control-size);
93
- --button-size-large: var(--control-size-large);
94
-
95
- /* 12. Field / input */
96
- --field-border-color: var(--border-color);
97
- --field-border-radius: var(--size-2);
98
- --field-border-width: 1px;
99
-
100
- /* 13. Button */
101
- --button-border-radius: var(--size-2);
102
- }
103
-
104
- /* 14. Severity scope classes */
105
- :where(.ui-critical, [data-invalid], del) {
106
- --palette-source: oklch(0.58 0.21 var(--hue-red));
107
- --palette-hue-rotate-by: 1;
108
- }
109
-
110
- :where(.ui-info, abbr, dfn) {
111
- --palette-source: oklch(0.58 0.21 var(--hue-blue));
112
- --palette-hue-rotate-by: 1;
113
- }
114
-
115
- :where(.ui-success, ins) {
116
- --palette-source: oklch(0.58 0.21 var(--hue-green));
117
- --palette-hue-rotate-by: 1;
118
- }
119
-
120
- :where(.ui-warning) {
121
- --palette-source: oklch(0.58 0.21 var(--hue-orange));
122
- --palette-hue-rotate-by: 1;
123
- }
124
- }
1
+ @layer theme {
2
+
3
+ /* 1. Color scheme */
4
+ .ui-light {
5
+ --color-scheme: light;
6
+ }
7
+
8
+ .ui-dark {
9
+ --color-scheme: dark;
10
+ }
11
+
12
+ :where(html) {
13
+ color-scheme: var(--color-scheme, light dark);
14
+
15
+ /* 2. Palette - override the values in core/palette.css */
16
+ --palette-hue: light-dark(var(--hue-green), var(--hue-blue));
17
+ --palette-chroma: 0.5;
18
+ /* --palette-source: oklch(.58 calc(.21 * .5) var(--hue-blue)); */
19
+
20
+ /* Gray palette also lives in core/palette.css. */
21
+ /*
22
+ --gray-hue: 255;
23
+ --gray-chroma: 0.01;
24
+ */
25
+
26
+ /* 3. Named colors (no severity meaning) - use when you literally want a green/red/etc. dot */
27
+ --blue: oklch(from var(--color-9) l 0.2 210);
28
+ --green: oklch(from var(--color-9) l 0.2 145);
29
+ --orange: oklch(from var(--color-7) l 0.2 75);
30
+ --red: oklch(from var(--color-9) l 0.2 25);
31
+
32
+ /* 4. Intent tokens */
33
+ --success: var(--green);
34
+ --info: var(--blue);
35
+ --warning: var(--orange);
36
+ --critical: var(--red);
37
+ --neutral: var(--gray-9);
38
+
39
+ /* 5. Primary */
40
+ --primary: var(--color-8);
41
+ --primary-light: oklch(from var(--primary) calc(l * 1.25) c h);
42
+ --primary-dark: oklch(from var(--primary) calc(l * 0.75) c h);
43
+ --primary-contrast: var(--gray-1);
44
+
45
+ /* 6. Text */
46
+ --text-primary: light-dark(var(--gray-15), var(--gray-1));
47
+ --text-primary-contrast: light-dark(var(--gray-2), var(--gray-15));
48
+ --text-muted: light-dark(var(--gray-13), var(--gray-4));
49
+ --text-muted-contrast: light-dark(var(--gray-4), var(--gray-13));
50
+
51
+ /* 7. Surfaces */
52
+ --surface-default: light-dark(var(--gray-1), var(--gray-13));
53
+ --surface-filled: light-dark(var(--gray-4), var(--gray-15));
54
+ --surface-tonal: light-dark(var(--gray-3), var(--gray-12));
55
+ --surface-elevated: light-dark(var(--gray-1), var(--gray-12));
56
+
57
+ /* 8. Borders */
58
+ --border-color: light-dark(var(--gray-4), var(--gray-12));
59
+ --border-radius: var(--size-2);
60
+ --border-width: 1px;
61
+
62
+ /* 9. Focus ring */
63
+ --focus-ring-color: var(--primary);
64
+ --focus-ring-width: 2px;
65
+ --focus-ring-offset: 2px;
66
+ --focus-ring-style: solid;
67
+
68
+ /* 10. Typography */
69
+ --font-size-h1: var(--font-size-fluid-3);
70
+ --font-size-h2: var(--font-size-fluid-2);
71
+ --font-size-h3: var(--font-size-fluid-1);
72
+ --font-size-h4: var(--font-size-3);
73
+ --font-size-h5: var(--font-size-2);
74
+ --font-size-h6: var(--font-size-fluid-0);
75
+
76
+ /* Sneaking in an extra font size I want but Open Props doesn't provide. You can do whatever you want with your own theme. It's just CSS. */
77
+ --font-size-05: 0.875rem;
78
+
79
+ /* 11. Control sizes - shared scale for fields and buttons so they line up. */
80
+ --control-size-x-small: 28px;
81
+ --control-size-small: 32px;
82
+ --control-size: 40px;
83
+ --control-size-large: 46px;
84
+
85
+ --field-size-x-small: var(--control-size-x-small);
86
+ --field-size-small: var(--control-size-small);
87
+ --field-size: var(--control-size);
88
+ --field-size-large: var(--control-size-large);
89
+
90
+ --button-size-x-small: var(--control-size-x-small);
91
+ --button-size-small: var(--control-size-small);
92
+ --button-size: var(--control-size);
93
+ --button-size-large: var(--control-size-large);
94
+
95
+ /* 12. Field / input */
96
+ --field-border-color: var(--border-color);
97
+ --field-border-radius: var(--size-2);
98
+ --field-border-width: 1px;
99
+
100
+ /* 13. Button */
101
+ --button-border-radius: var(--size-2);
102
+ }
103
+
104
+ /* 14. Severity scope classes */
105
+ :where(.ui-critical, [data-invalid], del) {
106
+ --palette-source: oklch(0.58 0.21 var(--hue-red));
107
+ --palette-hue-rotate-by: 1;
108
+ }
109
+
110
+ :where(.ui-info, abbr, dfn) {
111
+ --palette-source: oklch(0.58 0.21 var(--hue-blue));
112
+ --palette-hue-rotate-by: 1;
113
+ }
114
+
115
+ :where(.ui-success, ins) {
116
+ --palette-source: oklch(0.58 0.21 var(--hue-green));
117
+ --palette-hue-rotate-by: 1;
118
+ }
119
+
120
+ :where(.ui-warning) {
121
+ --palette-source: oklch(0.58 0.21 var(--hue-orange));
122
+ --palette-hue-rotate-by: 1;
123
+ }
124
+ }
package/dist/op.css CHANGED
@@ -1,6 +1,6 @@
1
- /*
2
- * Open Props
3
- * Import as many props as you need here.
1
+ /*
2
+ * Open Props
3
+ * Import as many props as you need here.
4
4
  */
5
5
  @layer openprops{
6
6
  @custom-media --motionOK (prefers-reduced-motion: no-preference);
@@ -954,5 +954,5 @@
954
954
  --hue-yellow: 100;
955
955
  --hue-orange: 75;
956
956
  }
957
- }
957
+ }
958
958
  /*# sourceMappingURL=op.css.map */