opui-css 5.1.2 → 5.3.0

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 (290) hide show
  1. package/CHANGELOG.md +18 -0
  2. package/README.md +4 -5
  3. package/components/AGENTS.md +12 -13
  4. package/components/Accordion/Accordion.astro +5 -9
  5. package/components/Accordion/Accordion.vue +38 -0
  6. package/components/Accordion/types.astro.ts +4 -0
  7. package/components/Accordion/types.d.vue.ts +15 -0
  8. package/components/Accordion/types.solid.ts +6 -0
  9. package/components/Accordion/types.svelte.ts +7 -0
  10. package/components/Accordion/types.ts +10 -0
  11. package/components/Anchor/Anchor.astro +1 -7
  12. package/components/Anchor/Anchor.vue +41 -0
  13. package/components/Anchor/types.astro.ts +4 -0
  14. package/components/Anchor/types.d.vue.ts +10 -0
  15. package/components/Anchor/types.solid.ts +6 -0
  16. package/components/Anchor/types.svelte.ts +7 -0
  17. package/components/Anchor/types.ts +9 -0
  18. package/components/Avatar/Avatar.astro +4 -13
  19. package/components/Avatar/Avatar.vue +24 -0
  20. package/components/Avatar/types.astro.ts +10 -0
  21. package/components/Avatar/types.d.vue.ts +11 -0
  22. package/components/Avatar/types.solid.ts +11 -0
  23. package/components/Avatar/types.svelte.ts +12 -0
  24. package/components/Avatar/types.ts +29 -0
  25. package/components/Badge/Badge.astro +3 -11
  26. package/components/Badge/Badge.vue +39 -0
  27. package/components/Badge/types.astro.ts +4 -0
  28. package/components/Badge/types.d.vue.ts +10 -0
  29. package/components/Badge/types.solid.ts +4 -0
  30. package/components/Badge/types.svelte.ts +4 -0
  31. package/components/Badge/types.ts +8 -0
  32. package/components/Button/Button.astro +18 -27
  33. package/components/Button/Button.vue +27 -0
  34. package/components/Button/types.astro.ts +6 -0
  35. package/components/Button/types.d.vue.ts +10 -0
  36. package/components/Button/types.solid.ts +8 -0
  37. package/components/Button/types.svelte.ts +6 -0
  38. package/components/Button/types.ts +16 -0
  39. package/components/ButtonGroup/ButtonGroup.astro +1 -8
  40. package/components/ButtonGroup/ButtonGroup.vue +22 -0
  41. package/components/ButtonGroup/types.astro.ts +4 -0
  42. package/components/ButtonGroup/types.d.vue.ts +10 -0
  43. package/components/ButtonGroup/types.solid.ts +4 -0
  44. package/components/ButtonGroup/types.svelte.ts +4 -0
  45. package/components/ButtonGroup/types.ts +7 -0
  46. package/components/Callout/Callout.astro +10 -9
  47. package/components/Callout/Callout.vue +63 -0
  48. package/components/Callout/types.astro.ts +4 -0
  49. package/components/Callout/types.d.vue.ts +10 -0
  50. package/components/Callout/types.solid.ts +6 -0
  51. package/components/Callout/types.svelte.ts +7 -0
  52. package/components/Callout/types.ts +10 -0
  53. package/components/Card/Card.astro +1 -5
  54. package/components/Card/Card.vue +28 -0
  55. package/components/Card/types.astro.ts +4 -0
  56. package/components/Card/types.d.vue.ts +10 -0
  57. package/components/Card/types.solid.ts +6 -0
  58. package/components/Card/types.svelte.ts +7 -0
  59. package/components/Card/types.ts +11 -0
  60. package/components/Checkbox/Checkbox.astro +6 -36
  61. package/components/Checkbox/Checkbox.vue +43 -0
  62. package/components/Checkbox/CheckboxInput.astro +2 -18
  63. package/components/Checkbox/CheckboxInput.vue +32 -0
  64. package/components/Checkbox/types.astro.ts +8 -0
  65. package/components/Checkbox/types.d.vue.ts +11 -0
  66. package/components/Checkbox/types.solid.ts +9 -0
  67. package/components/Checkbox/types.svelte.ts +12 -0
  68. package/components/Checkbox/types.ts +16 -0
  69. package/components/Chip/Chip.astro +6 -12
  70. package/components/Chip/Chip.vue +37 -0
  71. package/components/Chip/types.astro.ts +9 -0
  72. package/components/Chip/types.d.vue.ts +10 -0
  73. package/components/Chip/types.solid.ts +10 -0
  74. package/components/Chip/types.svelte.ts +14 -0
  75. package/components/Chip/types.ts +13 -0
  76. package/components/ClassicSelect/ClassicSelect.astro +5 -28
  77. package/components/ClassicSelect/ClassicSelect.vue +54 -0
  78. package/components/ClassicSelect/types.astro.ts +8 -0
  79. package/components/ClassicSelect/types.d.vue.ts +10 -0
  80. package/components/ClassicSelect/types.solid.ts +5 -0
  81. package/components/ClassicSelect/types.svelte.ts +5 -0
  82. package/components/ClassicSelect/types.ts +15 -0
  83. package/components/DescriptionList/Description.astro +1 -4
  84. package/components/DescriptionList/Description.vue +12 -0
  85. package/components/DescriptionList/DescriptionList.astro +1 -5
  86. package/components/DescriptionList/DescriptionList.vue +23 -0
  87. package/components/DescriptionList/Item.astro +1 -4
  88. package/components/DescriptionList/Item.vue +12 -0
  89. package/components/DescriptionList/Term.astro +1 -4
  90. package/components/DescriptionList/Term.vue +12 -0
  91. package/components/DescriptionList/types.astro.ts +10 -0
  92. package/components/DescriptionList/types.d.vue.ts +10 -0
  93. package/components/DescriptionList/types.solid.ts +4 -0
  94. package/components/DescriptionList/types.svelte.ts +4 -0
  95. package/components/DescriptionList/types.ts +3 -0
  96. package/components/Dialog/Dialog.astro +1 -6
  97. package/components/Dialog/Dialog.vue +35 -0
  98. package/components/Dialog/types.astro.ts +4 -0
  99. package/components/Dialog/types.d.vue.ts +10 -0
  100. package/components/Dialog/types.solid.ts +8 -0
  101. package/components/Dialog/types.svelte.ts +7 -0
  102. package/components/Dialog/types.ts +10 -0
  103. package/components/Divider/Divider.astro +1 -6
  104. package/components/Divider/Divider.vue +12 -0
  105. package/components/Divider/types.astro.ts +4 -0
  106. package/components/Divider/types.d.vue.ts +6 -0
  107. package/components/Divider/types.solid.ts +4 -0
  108. package/components/Divider/types.svelte.ts +4 -0
  109. package/components/Divider/types.ts +3 -0
  110. package/components/Drawer/Drawer.astro +10 -12
  111. package/components/Drawer/Drawer.vue +46 -0
  112. package/components/Drawer/DrawerFooter.astro +1 -4
  113. package/components/Drawer/DrawerFooter.vue +16 -0
  114. package/components/Drawer/DrawerHeader.astro +1 -5
  115. package/components/Drawer/DrawerHeader.vue +36 -0
  116. package/components/Drawer/types.astro.ts +8 -0
  117. package/components/Drawer/types.d.vue.ts +31 -0
  118. package/components/Drawer/types.solid.ts +12 -0
  119. package/components/Drawer/types.svelte.ts +15 -0
  120. package/components/Drawer/types.ts +20 -0
  121. package/components/FieldDescription/FieldDescription.astro +1 -5
  122. package/components/FieldDescription/FieldDescription.vue +12 -0
  123. package/components/FieldDescription/types.astro.ts +4 -0
  124. package/components/FieldDescription/types.d.vue.ts +10 -0
  125. package/components/FieldDescription/types.solid.ts +5 -0
  126. package/components/FieldDescription/types.svelte.ts +4 -0
  127. package/components/FieldDescription/types.ts +1 -0
  128. package/components/FieldGroup/FieldGroup.astro +1 -8
  129. package/components/FieldGroup/FieldGroup.vue +25 -0
  130. package/components/FieldGroup/types.astro.ts +4 -0
  131. package/components/FieldGroup/types.d.vue.ts +12 -0
  132. package/components/FieldGroup/types.solid.ts +5 -0
  133. package/components/FieldGroup/types.svelte.ts +4 -0
  134. package/components/FieldGroup/types.ts +4 -0
  135. package/components/FieldLegend/FieldLegend.astro +4 -8
  136. package/components/FieldLegend/FieldLegend.vue +18 -0
  137. package/components/FieldLegend/types.astro.ts +6 -0
  138. package/components/FieldLegend/types.d.vue.ts +11 -0
  139. package/components/FieldLegend/types.solid.ts +5 -0
  140. package/components/FieldLegend/types.svelte.ts +6 -0
  141. package/components/FieldLegend/types.ts +1 -0
  142. package/components/FieldSet/FieldSet.astro +1 -5
  143. package/components/FieldSet/FieldSet.vue +18 -0
  144. package/components/FieldSet/types.astro.ts +6 -0
  145. package/components/FieldSet/types.d.vue.ts +11 -0
  146. package/components/FieldSet/types.solid.ts +5 -0
  147. package/components/FieldSet/types.svelte.ts +8 -0
  148. package/components/FieldSet/types.ts +5 -0
  149. package/components/Form/Form.astro +1 -6
  150. package/components/Form/Form.vue +14 -0
  151. package/components/Form/types.astro.ts +6 -0
  152. package/components/Form/types.d.vue.ts +11 -0
  153. package/components/Form/types.solid.ts +5 -0
  154. package/components/Form/types.svelte.ts +7 -0
  155. package/components/Form/types.ts +1 -0
  156. package/components/IconButton/IconButton.astro +18 -20
  157. package/components/IconButton/IconButton.vue +24 -0
  158. package/components/IconButton/types.astro.ts +6 -0
  159. package/components/IconButton/types.d.vue.ts +10 -0
  160. package/components/IconButton/types.solid.ts +8 -0
  161. package/components/IconButton/types.svelte.ts +6 -0
  162. package/components/IconButton/types.ts +16 -0
  163. package/components/List/List.astro +1 -8
  164. package/components/List/List.vue +28 -0
  165. package/components/List/types.astro.ts +4 -0
  166. package/components/List/types.d.vue.ts +10 -0
  167. package/components/List/types.solid.ts +4 -0
  168. package/components/List/types.svelte.ts +4 -0
  169. package/components/List/types.ts +7 -0
  170. package/components/ListItem/ListItem.astro +3 -13
  171. package/components/ListItem/ListItem.vue +98 -0
  172. package/components/ListItem/types.astro.ts +10 -0
  173. package/components/ListItem/types.d.vue.ts +10 -0
  174. package/components/ListItem/types.solid.ts +12 -0
  175. package/components/ListItem/types.svelte.ts +14 -0
  176. package/components/ListItem/types.ts +32 -0
  177. package/components/Progress/Progress.astro +1 -11
  178. package/components/Progress/Progress.vue +34 -0
  179. package/components/Progress/types.astro.ts +4 -0
  180. package/components/Progress/types.d.vue.ts +10 -0
  181. package/components/Progress/types.solid.ts +4 -0
  182. package/components/Progress/types.svelte.ts +4 -0
  183. package/components/Progress/types.ts +10 -0
  184. package/components/Radio/Radio.astro +6 -32
  185. package/components/Radio/Radio.vue +41 -0
  186. package/components/Radio/RadioInput.astro +3 -20
  187. package/components/Radio/RadioInput.vue +14 -0
  188. package/components/Radio/types.astro.ts +6 -0
  189. package/components/Radio/types.d.vue.ts +11 -0
  190. package/components/Radio/types.solid.ts +9 -0
  191. package/components/Radio/types.svelte.ts +12 -0
  192. package/components/Radio/types.ts +12 -0
  193. package/components/Range/Range.astro +23 -31
  194. package/components/Range/Range.vue +85 -0
  195. package/components/Range/types.astro.ts +6 -0
  196. package/components/Range/types.d.vue.ts +14 -0
  197. package/components/Range/types.solid.ts +6 -0
  198. package/components/Range/types.svelte.ts +9 -0
  199. package/components/Range/types.ts +25 -0
  200. package/components/Select/Select.astro +41 -39
  201. package/components/Select/Select.vue +85 -0
  202. package/components/Select/types.astro.ts +4 -0
  203. package/components/Select/types.d.vue.ts +17 -0
  204. package/components/Select/types.solid.ts +6 -0
  205. package/components/Select/types.svelte.ts +7 -0
  206. package/components/Select/types.ts +27 -0
  207. package/components/Switch/Switch.astro +14 -39
  208. package/components/Switch/Switch.vue +63 -0
  209. package/components/Switch/SwitchInput.astro +3 -21
  210. package/components/Switch/SwitchInput.vue +14 -0
  211. package/components/Switch/types.astro.ts +5 -0
  212. package/components/Switch/types.d.vue.ts +13 -0
  213. package/components/Switch/types.solid.ts +9 -0
  214. package/components/Switch/types.svelte.ts +9 -0
  215. package/components/Switch/types.ts +16 -0
  216. package/components/Table/Body.astro +1 -3
  217. package/components/Table/Body.vue +5 -0
  218. package/components/Table/Cell.astro +1 -3
  219. package/components/Table/Cell.vue +5 -0
  220. package/components/Table/Column.astro +1 -4
  221. package/components/Table/Column.vue +19 -0
  222. package/components/Table/ColumnGroup.astro +1 -3
  223. package/components/Table/ColumnGroup.vue +5 -0
  224. package/components/Table/Head.astro +1 -3
  225. package/components/Table/Head.vue +5 -0
  226. package/components/Table/HeaderCell.astro +1 -3
  227. package/components/Table/HeaderCell.vue +5 -0
  228. package/components/Table/Row.astro +1 -3
  229. package/components/Table/Row.vue +5 -0
  230. package/components/Table/Table.astro +1 -5
  231. package/components/Table/Table.vue +19 -0
  232. package/components/Table/types.astro.ts +16 -0
  233. package/components/Table/types.d.vue.ts +10 -0
  234. package/components/Table/types.solid.ts +8 -0
  235. package/components/Table/types.svelte.ts +11 -0
  236. package/components/Table/types.ts +9 -0
  237. package/components/Tabs/Tabs.astro +1 -5
  238. package/components/Tabs/Tabs.vue +20 -0
  239. package/components/Tabs/TabsItem.astro +1 -8
  240. package/components/Tabs/TabsItem.vue +39 -0
  241. package/components/Tabs/TabsPanel.astro +1 -6
  242. package/components/Tabs/TabsPanel.vue +31 -0
  243. package/components/Tabs/TabsTab.astro +1 -5
  244. package/components/Tabs/TabsTab.vue +24 -0
  245. package/components/Tabs/types.astro.ts +11 -0
  246. package/components/Tabs/types.d.vue.ts +31 -0
  247. package/components/Tabs/types.solid.ts +12 -0
  248. package/components/Tabs/types.svelte.ts +10 -0
  249. package/components/Tabs/types.ts +19 -0
  250. package/components/TextField/TextField.astro +45 -49
  251. package/components/TextField/TextField.vue +74 -0
  252. package/components/TextField/types.astro.ts +17 -0
  253. package/components/TextField/types.d.vue.ts +20 -0
  254. package/components/TextField/types.solid.ts +22 -0
  255. package/components/TextField/types.svelte.ts +22 -0
  256. package/components/TextField/types.ts +35 -0
  257. package/components/Textarea/Textarea.astro +50 -38
  258. package/components/Textarea/Textarea.vue +64 -0
  259. package/components/Textarea/types.astro.ts +10 -0
  260. package/components/Textarea/types.d.vue.ts +19 -0
  261. package/components/Textarea/types.solid.ts +6 -0
  262. package/components/Textarea/types.svelte.ts +21 -0
  263. package/components/Textarea/types.ts +33 -0
  264. package/components/Toast/Toast.vue +48 -0
  265. package/components/ToggleButton/ToggleButton.astro +1 -11
  266. package/components/ToggleButton/ToggleButton.vue +41 -0
  267. package/components/ToggleButton/types.astro.ts +4 -0
  268. package/components/ToggleButton/types.d.vue.ts +10 -0
  269. package/components/ToggleButton/types.solid.ts +7 -0
  270. package/components/ToggleButton/types.svelte.ts +7 -0
  271. package/components/ToggleButton/types.ts +10 -0
  272. package/components/ToggleGroup/ToggleGroup.astro +1 -8
  273. package/components/ToggleGroup/ToggleGroup.vue +36 -0
  274. package/components/ToggleGroup/types.astro.ts +4 -0
  275. package/components/ToggleGroup/types.d.vue.ts +15 -0
  276. package/components/ToggleGroup/types.solid.ts +4 -0
  277. package/components/ToggleGroup/types.svelte.ts +9 -0
  278. package/components/ToggleGroup/types.ts +15 -0
  279. package/components/Tooltip/Tooltip.astro +2 -9
  280. package/components/Tooltip/Tooltip.vue +22 -0
  281. package/components/Tooltip/types.astro.ts +4 -0
  282. package/components/Tooltip/types.d.vue.ts +10 -0
  283. package/components/Tooltip/types.solid.ts +6 -0
  284. package/components/Tooltip/types.svelte.ts +7 -0
  285. package/components/Tooltip/types.ts +11 -0
  286. package/css/theme.css +0 -1
  287. package/dist/opui.css +0 -1
  288. package/dist/opui.css.map +1 -1
  289. package/package.json +16 -7
  290. package/vue/index.ts +54 -0
@@ -0,0 +1,6 @@
1
+ import type * as Base from "./types"
2
+ import type { HTMLAttributes } from "astro/types"
3
+
4
+ export type Props =
5
+ | (Base.Props & { as?: "button" } & HTMLAttributes<"button">)
6
+ | (Base.Props & { as?: "a" } & HTMLAttributes<"a">)
@@ -0,0 +1,10 @@
1
+ import type { HTMLAttributes, Slot } from "vue"
2
+ import type { Props as BaseProps } from "./types"
3
+
4
+ export type Props = BaseProps & {
5
+ class?: HTMLAttributes["class"]
6
+ }
7
+
8
+ export type Slots = {
9
+ default?: Slot
10
+ }
@@ -0,0 +1,8 @@
1
+ import type * as Base from "./types"
2
+ import type { JSX } from "solid-js"
3
+
4
+ export type Props = Base.Props &
5
+ (
6
+ | ({ as?: "button" } & JSX.ButtonHTMLAttributes<HTMLButtonElement>)
7
+ | ({ as?: "a" } & JSX.AnchorHTMLAttributes<HTMLAnchorElement>)
8
+ )
@@ -0,0 +1,6 @@
1
+ import type * as Base from "./types"
2
+ import type { SvelteHTMLElements } from "svelte/elements"
3
+
4
+ export type Props =
5
+ | (Base.Props & { as?: "button" } & SvelteHTMLElements["button"])
6
+ | (Base.Props & { as?: "a" } & SvelteHTMLElements["a"])
@@ -0,0 +1,16 @@
1
+ export type Props = {
2
+ color?: "critical" | "primary"
3
+ size?: "x-small" | "small" | "large"
4
+ variant?: "outlined" | "tonal" | "filled"
5
+ } & (
6
+ | {
7
+ as?: "a"
8
+ href: string
9
+ disabled?: never
10
+ }
11
+ | {
12
+ as?: "button"
13
+ href?: never
14
+ disabled?: boolean
15
+ }
16
+ )
@@ -1,12 +1,5 @@
1
1
  ---
2
- type Props = {
3
- [key: string]: any
4
- class?: string
5
- color?: "critical" | "primary"
6
- orientation?: "vertical"
7
- size?: "small" | "large"
8
- variant?: "outlined" | "tonal" | "filled"
9
- }
2
+ import type { Props } from "./types.astro"
10
3
 
11
4
  export const title = "Button Group"
12
5
 
@@ -0,0 +1,22 @@
1
+ <script setup lang="ts">
2
+ import type { Props, Slots } from "./types.d.vue"
3
+
4
+ const props = defineProps<Props>()
5
+ defineSlots<Slots>()
6
+ </script>
7
+
8
+ <template>
9
+ <div
10
+ :class="[
11
+ 'ui-button-group',
12
+ props.color && `ui-${props.color}`,
13
+ props.size && `ui-${props.size}`,
14
+ props.variant && `ui-${props.variant}`,
15
+ props.orientation && `ui-${props.orientation}`,
16
+ props.class,
17
+ ]"
18
+ role="group"
19
+ >
20
+ <slot></slot>
21
+ </div>
22
+ </template>
@@ -0,0 +1,4 @@
1
+ import type * as Base from "./types"
2
+ import type { HTMLAttributes } from "astro/types"
3
+
4
+ export type Props = Base.Props & HTMLAttributes<"div">
@@ -0,0 +1,10 @@
1
+ import type { HTMLAttributes, Slot } from "vue"
2
+ import type { Props as BaseProps } from "./types"
3
+
4
+ export type Props = BaseProps & {
5
+ class?: HTMLAttributes["class"]
6
+ }
7
+
8
+ export type Slots = {
9
+ default?: Slot
10
+ }
@@ -0,0 +1,4 @@
1
+ import type * as Base from "./types"
2
+ import type { JSX } from "solid-js"
3
+
4
+ export type Props = Base.Props & JSX.HTMLAttributes<HTMLDivElement>
@@ -0,0 +1,4 @@
1
+ import type * as Base from "./types"
2
+ import type { SvelteHTMLElements } from "svelte/elements"
3
+
4
+ export type Props = Base.Props & SvelteHTMLElements["div"]
@@ -0,0 +1,7 @@
1
+ export type Props = {
2
+ [key: string]: any
3
+ color?: "critical" | "primary"
4
+ orientation?: "vertical"
5
+ size?: "small" | "large"
6
+ variant?: "outlined" | "tonal" | "filled"
7
+ }
@@ -1,10 +1,5 @@
1
1
  ---
2
- type Props = {
3
- [key: string]: any
4
- class?: string
5
- severity?: "critical" | "info" | "neutral" | "success" | "warning"
6
- variant?: "tonal" | "outlined"
7
- }
2
+ import type { Props } from "./types.astro"
8
3
 
9
4
  export const title = "Callout"
10
5
 
@@ -13,7 +8,12 @@ const { class: className, severity, variant, ...rest } = Astro.props
13
8
 
14
9
  <article
15
10
  role="note"
16
- class:list={["ui-callout", variant && `ui-${variant}`, severity && `ui-${severity}`, className]}
11
+ class:list={[
12
+ "ui-callout",
13
+ variant && `ui-${variant}`,
14
+ severity && `ui-${severity}`,
15
+ className,
16
+ ]}
17
17
  {...rest}
18
18
  >
19
19
  <slot name="icon">
@@ -66,8 +66,9 @@ const { class: className, severity, variant, ...rest } = Astro.props
66
66
  <div class="ui-content">
67
67
  {
68
68
  Astro.slots.has("title") && (
69
- <!-- prettier-ignore -->
70
- <h3 class="ui-title"><slot name="title" /></h3>
69
+ <h3 class="ui-title">
70
+ <slot name="title" />
71
+ </h3>
71
72
  )
72
73
  }
73
74
  <slot />
@@ -0,0 +1,63 @@
1
+ <script setup lang="ts">
2
+ import type { Props, Slots } from "./types.d.vue"
3
+
4
+ const { severity, variant } = defineProps<Props>()
5
+ const slots = defineSlots<Slots>()
6
+ </script>
7
+
8
+ <template>
9
+ <article
10
+ role="note"
11
+ :class="[
12
+ 'ui-callout',
13
+ variant && `ui-${variant}`,
14
+ severity && `ui-${severity}`,
15
+ $props.class,
16
+ ]"
17
+ >
18
+ <slot name="icon">
19
+ <svg
20
+ v-if="severity === 'info'"
21
+ xmlns="http://www.w3.org/2000/svg"
22
+ width="32"
23
+ height="32"
24
+ viewBox="0 0 32 32"
25
+ >
26
+ <path
27
+ fill="currentColor"
28
+ d="M16 13a1 1 0 0 1 1 1v9a1 1 0 1 1-2 0v-9a1 1 0 0 1 1-1m0-2a1.5 1.5 0 1 0 0-3a1.5 1.5 0 0 0 0 3M2 16C2 8.268 8.268 2 16 2s14 6.268 14 14s-6.268 14-14 14S2 23.732 2 16M16 4C9.373 4 4 9.373 4 16s5.373 12 12 12s12-5.373 12-12S22.627 4 16 4"
29
+ />
30
+ </svg>
31
+ <svg
32
+ v-if="severity === 'warning'"
33
+ xmlns="http://www.w3.org/2000/svg"
34
+ width="32"
35
+ height="32"
36
+ viewBox="0 0 32 32"
37
+ >
38
+ <path
39
+ fill="currentColor"
40
+ d="M17.25 22a1.25 1.25 0 1 1-2.5 0a1.25 1.25 0 0 1 2.5 0M16 9a1 1 0 0 0-1 1v8a1 1 0 1 0 2 0v-8a1 1 0 0 0-1-1m-3.064-5.191c1.332-2.41 4.796-2.41 6.128 0l10.493 18.999C30.846 25.14 29.158 28 26.494 28H5.507c-2.665 0-4.352-2.86-3.064-5.192zm4.377.967a1.5 1.5 0 0 0-2.626 0L4.194 23.775A1.5 1.5 0 0 0 5.507 26h20.987a1.5 1.5 0 0 0 1.313-2.225z"
41
+ />
42
+ </svg>
43
+ <svg
44
+ v-if="severity === 'critical'"
45
+ xmlns="http://www.w3.org/2000/svg"
46
+ width="32"
47
+ height="32"
48
+ viewBox="0 0 48 48"
49
+ >
50
+ <path
51
+ fill="currentColor"
52
+ d="M24 13c.69 0 1.25.56 1.25 1.25v12.5a1.25 1.25 0 1 1-2.5 0v-12.5c0-.69.56-1.25 1.25-1.25m0 21a2 2 0 1 0 0-4a2 2 0 0 0 0 4M4 24C4 12.954 12.954 4 24 4s20 8.954 20 20s-8.954 20-20 20S4 35.046 4 24M24 6.5C14.335 6.5 6.5 14.335 6.5 24S14.335 41.5 24 41.5S41.5 33.665 41.5 24S33.665 6.5 24 6.5"
53
+ />
54
+ </svg>
55
+ </slot>
56
+ <div class="ui-content">
57
+ <h3 v-if="slots.title" class="ui-title">
58
+ <slot name="title"></slot>
59
+ </h3>
60
+ <slot></slot>
61
+ </div>
62
+ </article>
63
+ </template>
@@ -0,0 +1,4 @@
1
+ import type * as Base from "./types"
2
+ import type { HTMLAttributes } from "astro/types"
3
+
4
+ export type Props = Base.Props & HTMLAttributes<"article">
@@ -0,0 +1,10 @@
1
+ import type { HTMLAttributes, Slot } from "vue"
2
+ import type { Props as BaseProps, Slots as BaseSlots } from "./types"
3
+
4
+ export type Props = BaseProps & {
5
+ class?: HTMLAttributes["class"]
6
+ }
7
+
8
+ export type Slots = BaseSlots<Slot> & {
9
+ default?: Slot
10
+ }
@@ -0,0 +1,6 @@
1
+ import type * as Base from "./types"
2
+ import type { JSX } from "solid-js"
3
+
4
+ export type Props = Base.Props &
5
+ Partial<Base.Slots<JSX.Element>> &
6
+ JSX.HTMLAttributes<HTMLElement>
@@ -0,0 +1,7 @@
1
+ import type * as Base from "./types"
2
+ import type { SvelteHTMLElements } from "svelte/elements"
3
+ import type { Snippet } from "svelte"
4
+
5
+ type Snippets = Base.Slots<Snippet>
6
+
7
+ export type Props = Base.Props & Snippets & SvelteHTMLElements["article"]
@@ -0,0 +1,10 @@
1
+ export type Props = {
2
+ [key: string]: any
3
+ severity?: "critical" | "info" | "neutral" | "success" | "warning"
4
+ variant?: "tonal" | "outlined"
5
+ }
6
+
7
+ export type Slots<S> = {
8
+ icon?: S
9
+ title?: S
10
+ }
@@ -1,9 +1,5 @@
1
1
  ---
2
- type Props = {
3
- actionsAlign?: "start" | "end"
4
- variant?: "text" | "outlined" | "elevated" | "tonal"
5
- [key: string]: any
6
- }
2
+ import type { Props } from "./types.astro"
7
3
 
8
4
  export const title = "Card"
9
5
 
@@ -0,0 +1,28 @@
1
+ <script setup lang="ts">
2
+ import { useSlots } from "vue"
3
+ import type { Props, Slots } from "./types.d.vue"
4
+
5
+ const { actionsAlign, variant } = defineProps<Props>()
6
+ const slots = defineSlots<Slots>()
7
+ </script>
8
+
9
+ <template>
10
+ <div :class="['ui-card', variant && `ui-${variant}`, $props.class]">
11
+ <hgroup v-if="slots.header">
12
+ <slot name="header"></slot>
13
+ </hgroup>
14
+
15
+ <div v-if="slots.content" class="ui-content">
16
+ <slot name="content"></slot>
17
+ </div>
18
+
19
+ <slot></slot>
20
+
21
+ <div
22
+ v-if="slots.actions"
23
+ :class="['ui-actions', actionsAlign && `ui-align-${actionsAlign}`]"
24
+ >
25
+ <slot name="actions"></slot>
26
+ </div>
27
+ </div>
28
+ </template>
@@ -0,0 +1,4 @@
1
+ import type * as Base from "./types"
2
+ import type { HTMLAttributes } from "astro/types"
3
+
4
+ export type Props = Base.Props & HTMLAttributes<"div">
@@ -0,0 +1,10 @@
1
+ import type { HTMLAttributes, Slot } from "vue"
2
+ import type { Props as BaseProps, Slots as BaseSlots } from "./types"
3
+
4
+ export type Props = BaseProps & {
5
+ class?: HTMLAttributes["class"]
6
+ }
7
+
8
+ export type Slots = BaseSlots<Slot> & {
9
+ default?: Slot
10
+ }
@@ -0,0 +1,6 @@
1
+ import type * as Base from "./types"
2
+ import type { JSX } from "solid-js"
3
+
4
+ export type Props = Base.Props &
5
+ Partial<Base.Slots<JSX.Element>> &
6
+ JSX.HTMLAttributes<HTMLDivElement>
@@ -0,0 +1,7 @@
1
+ import type * as Base from "./types"
2
+ import type { SvelteHTMLElements } from "svelte/elements"
3
+ import type { Snippet } from "svelte"
4
+
5
+ type Snippets = Base.Slots<Snippet>
6
+
7
+ export type Props = Base.Props & Snippets & SvelteHTMLElements["div"]
@@ -0,0 +1,11 @@
1
+ export type Props = {
2
+ actionsAlign?: "start" | "end"
3
+ variant?: "text" | "outlined" | "elevated" | "tonal"
4
+ }
5
+
6
+ export type Slots<S> = {
7
+ actions?: S
8
+ children?: S
9
+ content?: S
10
+ header?: S
11
+ }
@@ -1,39 +1,18 @@
1
1
  ---
2
+ import type { CheckboxProps as Props } from "./types.astro"
2
3
  import CheckboxInput from "./CheckboxInput.astro"
3
4
 
4
- type Props = {
5
- [key: string]: any
6
- checked?: boolean
7
- class?: string
8
- error?: boolean
9
- disabled?: boolean
10
- hideLabel?: boolean
11
- id?: string
12
- indeterminate?: boolean
13
- name?: string
14
- required?: boolean
15
- size?: "small" | "large"
16
- spread?: boolean
17
- stack?: boolean
18
- value?: string
19
- }
20
-
21
5
  export const title = "Checkbox"
22
6
 
23
7
  const {
24
- checked,
25
8
  class: className,
26
9
  error,
27
10
  disabled,
28
11
  hideLabel,
29
- id,
30
- indeterminate,
31
12
  name,
32
- required,
33
13
  size,
34
14
  spread,
35
15
  stack,
36
- value,
37
16
  ...rest
38
17
  } = Astro.props
39
18
 
@@ -55,22 +34,13 @@ const finalName = name || currentFieldName
55
34
  ]}
56
35
  data-invalid={error || undefined}
57
36
  >
58
- <CheckboxInput
59
- aria-describedby={endTextId}
60
- {checked}
61
- {disabled}
62
- {id}
63
- {indeterminate}
64
- name={finalName}
65
- {required}
66
- {value}
67
- {...rest}
68
- />
69
- <!-- prettier-ignore --><span class:list={[hideLabel ? "ui-sr-only" : "ui-label"]}><slot /></span>
37
+ <CheckboxInput aria-describedby={endTextId} name={finalName} {...rest} />
38
+ <span class:list={[hideLabel ? "ui-sr-only" : "ui-label"]}><slot /></span>
70
39
  {
71
40
  Astro.slots.has("end-text") && (
72
- <!-- prettier-ignore -->
73
- <span id={endTextId} class="ui-end-text"><slot name="end-text" /></span>
41
+ <span id={endTextId} class="ui-end-text">
42
+ <slot name="end-text" />
43
+ </span>
74
44
  )
75
45
  }
76
46
  </label>
@@ -0,0 +1,43 @@
1
+ <script setup lang="ts">
2
+ import CheckboxInput from "./CheckboxInput.vue"
3
+ import type { CheckboxProps, Slots } from "./types.d.vue"
4
+ import { useId } from "vue"
5
+
6
+ defineOptions({
7
+ inheritAttrs: false,
8
+ })
9
+
10
+ const props = defineProps<CheckboxProps>()
11
+ defineSlots<Slots>()
12
+ const modelValue = defineModel<boolean | (string | number)[]>()
13
+
14
+ const endTextId = useId()
15
+ </script>
16
+
17
+ <template>
18
+ <label
19
+ :class="[
20
+ 'ui-checkbox',
21
+ props.size && `ui-${props.size}`,
22
+ {
23
+ 'ui-stack': props.stack,
24
+ 'ui-spread': props.spread,
25
+ },
26
+ props.class,
27
+ ]"
28
+ :data-invalid="props.error || undefined"
29
+ >
30
+ <CheckboxInput
31
+ v-bind="$attrs"
32
+ v-model="modelValue"
33
+ :aria-describedby="$slots['end-text'] ? endTextId : undefined"
34
+ :indeterminate="props.indeterminate"
35
+ />
36
+ <span :class="[props.hideLabel ? 'ui-sr-only' : 'ui-label']"
37
+ ><slot></slot
38
+ ></span>
39
+ <span :id="endTextId" class="ui-end-text" v-if="$slots['end-text']">
40
+ <slot name="end-text"></slot>
41
+ </span>
42
+ </label>
43
+ </template>
@@ -1,28 +1,12 @@
1
1
  ---
2
- type Props = {
3
- [key: string]: any
4
- checked?: boolean
5
- disabled?: boolean
6
- id?: string
7
- indeterminate?: boolean
8
- name?: string
9
- required?: boolean
10
- value?: string
11
- }
2
+ import type { CheckboxInputProps as Props } from "./types.astro"
12
3
 
13
- const { checked, disabled, id, indeterminate, name, required, value, ...rest } =
14
- Astro.props
4
+ const { indeterminate, ...rest } = Astro.props as Props
15
5
  ---
16
6
 
17
7
  <input
18
8
  type="checkbox"
19
9
  data-indeterminate={indeterminate || undefined}
20
- {checked}
21
- {disabled}
22
- {id}
23
- {name}
24
- {required}
25
- {value}
26
10
  {...rest}
27
11
  />
28
12
 
@@ -0,0 +1,32 @@
1
+ <script setup lang="ts">
2
+ import type { CheckboxInputProps } from "./types"
3
+ import { useAttrs, useTemplateRef, watchPostEffect } from "vue"
4
+
5
+ defineOptions({
6
+ inheritAttrs: false,
7
+ })
8
+
9
+ const attrs = useAttrs()
10
+ const props = defineProps<CheckboxInputProps>()
11
+ const modelValue = defineModel<boolean | (string | number)[]>()
12
+
13
+ const input = useTemplateRef<HTMLInputElement>("input")
14
+
15
+ if (modelValue.value === undefined && attrs.checked !== undefined) {
16
+ modelValue.value = attrs.checked !== false
17
+ }
18
+
19
+ watchPostEffect(() => {
20
+ if (input.value) input.value.indeterminate = Boolean(props.indeterminate)
21
+ })
22
+ </script>
23
+
24
+ <template>
25
+ <input
26
+ ref="input"
27
+ type="checkbox"
28
+ :data-indeterminate="props.indeterminate || undefined"
29
+ v-bind="$attrs"
30
+ v-model="modelValue"
31
+ />
32
+ </template>
@@ -0,0 +1,8 @@
1
+ import type * as Base from "./types"
2
+ import type { HTMLAttributes } from "astro/types"
3
+
4
+ export type CheckboxProps = Base.CheckboxProps &
5
+ Omit<HTMLAttributes<"input">, "size">
6
+
7
+ export type CheckboxInputProps = Base.CheckboxInputProps &
8
+ HTMLAttributes<"input">
@@ -0,0 +1,11 @@
1
+ import type { HTMLAttributes, Slot } from "vue"
2
+ import type { CheckboxProps as BaseCheckboxProps } from "./types"
3
+
4
+ export type CheckboxProps = BaseCheckboxProps & {
5
+ class?: HTMLAttributes["class"]
6
+ }
7
+
8
+ export type Slots = {
9
+ default?: Slot
10
+ "end-text"?: Slot
11
+ }
@@ -0,0 +1,9 @@
1
+ import type * as Base from "./types"
2
+ import type { JSX } from "solid-js"
3
+
4
+ export type CheckboxInputProps = Base.CheckboxInputProps &
5
+ JSX.InputHTMLAttributes<HTMLInputElement>
6
+
7
+ export type CheckboxProps = Base.CheckboxProps &
8
+ Partial<Base.CheckboxSlots<JSX.Element>> &
9
+ Omit<JSX.InputHTMLAttributes<HTMLInputElement>, "size">
@@ -0,0 +1,12 @@
1
+ import type * as Base from "./types"
2
+ import type { SvelteHTMLElements } from "svelte/elements"
3
+ import type { Snippet } from "svelte"
4
+
5
+ type Snippets = Base.CheckboxSlots<Snippet>
6
+
7
+ export type CheckboxProps = Omit<Base.CheckboxProps, keyof Snippets> &
8
+ Snippets &
9
+ Omit<SvelteHTMLElements["input"], "size">
10
+
11
+ export type CheckboxInputProps = Base.CheckboxInputProps &
12
+ SvelteHTMLElements["input"]
@@ -0,0 +1,16 @@
1
+ export type CheckboxProps = {
2
+ error?: boolean
3
+ hideLabel?: boolean
4
+ indeterminate?: boolean
5
+ size?: "small" | "large"
6
+ spread?: boolean
7
+ stack?: boolean
8
+ }
9
+
10
+ export type CheckboxSlots<S> = {
11
+ endText?: string | S
12
+ }
13
+
14
+ export type CheckboxInputProps = {
15
+ indeterminate?: boolean
16
+ }
@@ -1,13 +1,5 @@
1
1
  ---
2
- type Props = {
3
- [key: string]: any
4
- as?: "a" | "button" | "div" | string
5
- class?: string
6
- label?: string
7
- multiline?: boolean
8
- size?: "small"
9
- variant?: "tonal" | "outlined"
10
- }
2
+ import type { Props } from "./types.astro"
11
3
 
12
4
  export const title = "Chip"
13
5
 
@@ -22,7 +14,6 @@ const {
22
14
  } = Astro.props
23
15
  ---
24
16
 
25
- <!-- prettier-ignore -->
26
17
  <Tag
27
18
  class:list={[
28
19
  "ui-chip",
@@ -33,5 +24,8 @@ const {
33
24
  variant && `ui-${variant}`,
34
25
  className,
35
26
  ]}
36
- {...rest}
37
- ><slot name="start" /><slot />{label && <span class="ui-text">{label}</span>}<slot name="end" /></Tag>
27
+ {...rest as any}
28
+ ><slot name="start" /><slot />{
29
+ label && <span class="ui-text">{label}</span>
30
+ }<slot name="end" /></Tag
31
+ >