opui-css 5.1.2 → 5.2.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 (235) hide show
  1. package/CHANGELOG.md +8 -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/types.astro.ts +4 -0
  6. package/components/Accordion/types.d.vue.ts +15 -0
  7. package/components/Accordion/types.solid.ts +6 -0
  8. package/components/Accordion/types.svelte.ts +7 -0
  9. package/components/Accordion/types.ts +10 -0
  10. package/components/Anchor/Anchor.astro +1 -7
  11. package/components/Anchor/types.astro.ts +4 -0
  12. package/components/Anchor/types.d.vue.ts +10 -0
  13. package/components/Anchor/types.solid.ts +6 -0
  14. package/components/Anchor/types.svelte.ts +7 -0
  15. package/components/Anchor/types.ts +9 -0
  16. package/components/Avatar/Avatar.astro +4 -13
  17. package/components/Avatar/types.astro.ts +10 -0
  18. package/components/Avatar/types.d.vue.ts +11 -0
  19. package/components/Avatar/types.solid.ts +11 -0
  20. package/components/Avatar/types.svelte.ts +12 -0
  21. package/components/Avatar/types.ts +29 -0
  22. package/components/Badge/Badge.astro +3 -11
  23. package/components/Badge/types.astro.ts +4 -0
  24. package/components/Badge/types.d.vue.ts +10 -0
  25. package/components/Badge/types.solid.ts +4 -0
  26. package/components/Badge/types.svelte.ts +4 -0
  27. package/components/Badge/types.ts +8 -0
  28. package/components/Button/Button.astro +18 -27
  29. package/components/Button/types.astro.ts +6 -0
  30. package/components/Button/types.d.vue.ts +10 -0
  31. package/components/Button/types.solid.ts +8 -0
  32. package/components/Button/types.svelte.ts +6 -0
  33. package/components/Button/types.ts +19 -0
  34. package/components/ButtonGroup/ButtonGroup.astro +1 -8
  35. package/components/ButtonGroup/types.astro.ts +4 -0
  36. package/components/ButtonGroup/types.d.vue.ts +10 -0
  37. package/components/ButtonGroup/types.solid.ts +4 -0
  38. package/components/ButtonGroup/types.svelte.ts +4 -0
  39. package/components/ButtonGroup/types.ts +7 -0
  40. package/components/Callout/Callout.astro +10 -9
  41. package/components/Callout/types.astro.ts +4 -0
  42. package/components/Callout/types.d.vue.ts +10 -0
  43. package/components/Callout/types.solid.ts +6 -0
  44. package/components/Callout/types.svelte.ts +7 -0
  45. package/components/Callout/types.ts +10 -0
  46. package/components/Card/Card.astro +1 -5
  47. package/components/Card/types.astro.ts +4 -0
  48. package/components/Card/types.d.vue.ts +10 -0
  49. package/components/Card/types.solid.ts +6 -0
  50. package/components/Card/types.svelte.ts +7 -0
  51. package/components/Card/types.ts +10 -0
  52. package/components/Checkbox/Checkbox.astro +6 -36
  53. package/components/Checkbox/CheckboxInput.astro +2 -18
  54. package/components/Checkbox/types.astro.ts +8 -0
  55. package/components/Checkbox/types.d.vue.ts +11 -0
  56. package/components/Checkbox/types.solid.ts +9 -0
  57. package/components/Checkbox/types.svelte.ts +12 -0
  58. package/components/Checkbox/types.ts +17 -0
  59. package/components/Chip/Chip.astro +6 -12
  60. package/components/Chip/types.astro.ts +9 -0
  61. package/components/Chip/types.d.vue.ts +10 -0
  62. package/components/Chip/types.solid.ts +10 -0
  63. package/components/Chip/types.svelte.ts +14 -0
  64. package/components/Chip/types.ts +13 -0
  65. package/components/ClassicSelect/ClassicSelect.astro +5 -28
  66. package/components/ClassicSelect/types.astro.ts +8 -0
  67. package/components/ClassicSelect/types.d.vue.ts +10 -0
  68. package/components/ClassicSelect/types.solid.ts +5 -0
  69. package/components/ClassicSelect/types.svelte.ts +5 -0
  70. package/components/ClassicSelect/types.ts +19 -0
  71. package/components/DescriptionList/Description.astro +1 -4
  72. package/components/DescriptionList/DescriptionList.astro +1 -5
  73. package/components/DescriptionList/Item.astro +1 -4
  74. package/components/DescriptionList/Term.astro +1 -4
  75. package/components/DescriptionList/types.astro.ts +10 -0
  76. package/components/DescriptionList/types.d.vue.ts +10 -0
  77. package/components/DescriptionList/types.solid.ts +4 -0
  78. package/components/DescriptionList/types.svelte.ts +4 -0
  79. package/components/DescriptionList/types.ts +3 -0
  80. package/components/Dialog/Dialog.astro +1 -6
  81. package/components/Dialog/types.astro.ts +4 -0
  82. package/components/Dialog/types.d.vue.ts +10 -0
  83. package/components/Dialog/types.solid.ts +8 -0
  84. package/components/Dialog/types.svelte.ts +7 -0
  85. package/components/Dialog/types.ts +9 -0
  86. package/components/Divider/Divider.astro +1 -6
  87. package/components/Divider/types.astro.ts +4 -0
  88. package/components/Divider/types.d.vue.ts +6 -0
  89. package/components/Divider/types.solid.ts +4 -0
  90. package/components/Divider/types.svelte.ts +4 -0
  91. package/components/Divider/types.ts +3 -0
  92. package/components/Drawer/Drawer.astro +1 -9
  93. package/components/Drawer/DrawerFooter.astro +1 -4
  94. package/components/Drawer/DrawerHeader.astro +1 -5
  95. package/components/Drawer/types.astro.ts +8 -0
  96. package/components/Drawer/types.d.vue.ts +29 -0
  97. package/components/Drawer/types.solid.ts +12 -0
  98. package/components/Drawer/types.svelte.ts +15 -0
  99. package/components/Drawer/types.ts +19 -0
  100. package/components/FieldDescription/FieldDescription.astro +1 -5
  101. package/components/FieldDescription/types.astro.ts +4 -0
  102. package/components/FieldDescription/types.d.vue.ts +10 -0
  103. package/components/FieldDescription/types.solid.ts +5 -0
  104. package/components/FieldDescription/types.svelte.ts +4 -0
  105. package/components/FieldDescription/types.ts +1 -0
  106. package/components/FieldGroup/FieldGroup.astro +1 -8
  107. package/components/FieldGroup/types.astro.ts +4 -0
  108. package/components/FieldGroup/types.d.vue.ts +12 -0
  109. package/components/FieldGroup/types.solid.ts +5 -0
  110. package/components/FieldGroup/types.svelte.ts +4 -0
  111. package/components/FieldGroup/types.ts +4 -0
  112. package/components/FieldLegend/FieldLegend.astro +4 -8
  113. package/components/FieldLegend/types.astro.ts +6 -0
  114. package/components/FieldLegend/types.d.vue.ts +11 -0
  115. package/components/FieldLegend/types.solid.ts +5 -0
  116. package/components/FieldLegend/types.svelte.ts +6 -0
  117. package/components/FieldLegend/types.ts +1 -0
  118. package/components/FieldSet/FieldSet.astro +1 -5
  119. package/components/FieldSet/types.astro.ts +6 -0
  120. package/components/FieldSet/types.d.vue.ts +11 -0
  121. package/components/FieldSet/types.solid.ts +5 -0
  122. package/components/FieldSet/types.svelte.ts +8 -0
  123. package/components/FieldSet/types.ts +5 -0
  124. package/components/Form/Form.astro +1 -6
  125. package/components/Form/types.astro.ts +6 -0
  126. package/components/Form/types.d.vue.ts +11 -0
  127. package/components/Form/types.solid.ts +5 -0
  128. package/components/Form/types.svelte.ts +7 -0
  129. package/components/Form/types.ts +1 -0
  130. package/components/IconButton/IconButton.astro +18 -20
  131. package/components/IconButton/types.astro.ts +6 -0
  132. package/components/IconButton/types.d.vue.ts +10 -0
  133. package/components/IconButton/types.solid.ts +8 -0
  134. package/components/IconButton/types.svelte.ts +6 -0
  135. package/components/IconButton/types.ts +16 -0
  136. package/components/List/List.astro +1 -8
  137. package/components/List/types.astro.ts +4 -0
  138. package/components/List/types.d.vue.ts +10 -0
  139. package/components/List/types.solid.ts +4 -0
  140. package/components/List/types.svelte.ts +4 -0
  141. package/components/List/types.ts +7 -0
  142. package/components/ListItem/ListItem.astro +3 -13
  143. package/components/ListItem/types.astro.ts +10 -0
  144. package/components/ListItem/types.d.vue.ts +10 -0
  145. package/components/ListItem/types.solid.ts +12 -0
  146. package/components/ListItem/types.svelte.ts +14 -0
  147. package/components/ListItem/types.ts +32 -0
  148. package/components/Progress/Progress.astro +1 -11
  149. package/components/Progress/types.astro.ts +4 -0
  150. package/components/Progress/types.d.vue.ts +10 -0
  151. package/components/Progress/types.solid.ts +4 -0
  152. package/components/Progress/types.svelte.ts +4 -0
  153. package/components/Progress/types.ts +10 -0
  154. package/components/Radio/Radio.astro +6 -32
  155. package/components/Radio/RadioInput.astro +3 -20
  156. package/components/Radio/types.astro.ts +6 -0
  157. package/components/Radio/types.d.vue.ts +11 -0
  158. package/components/Radio/types.solid.ts +9 -0
  159. package/components/Radio/types.svelte.ts +12 -0
  160. package/components/Radio/types.ts +13 -0
  161. package/components/Range/Range.astro +23 -31
  162. package/components/Range/types.astro.ts +6 -0
  163. package/components/Range/types.d.vue.ts +14 -0
  164. package/components/Range/types.solid.ts +6 -0
  165. package/components/Range/types.svelte.ts +9 -0
  166. package/components/Range/types.ts +30 -0
  167. package/components/Select/Select.astro +42 -34
  168. package/components/Select/types.astro.ts +4 -0
  169. package/components/Select/types.d.vue.ts +17 -0
  170. package/components/Select/types.solid.ts +6 -0
  171. package/components/Select/types.svelte.ts +7 -0
  172. package/components/Select/types.ts +27 -0
  173. package/components/Switch/Switch.astro +14 -39
  174. package/components/Switch/SwitchInput.astro +3 -21
  175. package/components/Switch/types.astro.ts +5 -0
  176. package/components/Switch/types.d.vue.ts +13 -0
  177. package/components/Switch/types.solid.ts +9 -0
  178. package/components/Switch/types.svelte.ts +9 -0
  179. package/components/Switch/types.ts +16 -0
  180. package/components/Table/Body.astro +1 -3
  181. package/components/Table/Cell.astro +1 -3
  182. package/components/Table/Column.astro +1 -4
  183. package/components/Table/ColumnGroup.astro +1 -3
  184. package/components/Table/Head.astro +1 -3
  185. package/components/Table/HeaderCell.astro +1 -3
  186. package/components/Table/Row.astro +1 -3
  187. package/components/Table/Table.astro +1 -5
  188. package/components/Table/types.astro.ts +16 -0
  189. package/components/Table/types.d.vue.ts +10 -0
  190. package/components/Table/types.solid.ts +8 -0
  191. package/components/Table/types.svelte.ts +11 -0
  192. package/components/Table/types.ts +9 -0
  193. package/components/Tabs/Tabs.astro +1 -5
  194. package/components/Tabs/TabsItem.astro +1 -8
  195. package/components/Tabs/TabsPanel.astro +1 -6
  196. package/components/Tabs/TabsTab.astro +1 -5
  197. package/components/Tabs/types.astro.ts +11 -0
  198. package/components/Tabs/types.d.vue.ts +31 -0
  199. package/components/Tabs/types.solid.ts +12 -0
  200. package/components/Tabs/types.svelte.ts +10 -0
  201. package/components/Tabs/types.ts +19 -0
  202. package/components/TextField/TextField.astro +45 -49
  203. package/components/TextField/types.astro.ts +17 -0
  204. package/components/TextField/types.d.vue.ts +18 -0
  205. package/components/TextField/types.solid.ts +22 -0
  206. package/components/TextField/types.svelte.ts +22 -0
  207. package/components/TextField/types.ts +35 -0
  208. package/components/Textarea/Textarea.astro +50 -38
  209. package/components/Textarea/types.astro.ts +10 -0
  210. package/components/Textarea/types.d.vue.ts +18 -0
  211. package/components/Textarea/types.solid.ts +6 -0
  212. package/components/Textarea/types.svelte.ts +21 -0
  213. package/components/Textarea/types.ts +33 -0
  214. package/components/ToggleButton/ToggleButton.astro +1 -11
  215. package/components/ToggleButton/types.astro.ts +4 -0
  216. package/components/ToggleButton/types.d.vue.ts +10 -0
  217. package/components/ToggleButton/types.solid.ts +7 -0
  218. package/components/ToggleButton/types.svelte.ts +7 -0
  219. package/components/ToggleButton/types.ts +10 -0
  220. package/components/ToggleGroup/ToggleGroup.astro +1 -8
  221. package/components/ToggleGroup/types.astro.ts +4 -0
  222. package/components/ToggleGroup/types.d.vue.ts +15 -0
  223. package/components/ToggleGroup/types.solid.ts +4 -0
  224. package/components/ToggleGroup/types.svelte.ts +9 -0
  225. package/components/ToggleGroup/types.ts +15 -0
  226. package/components/Tooltip/Tooltip.astro +2 -9
  227. package/components/Tooltip/types.astro.ts +4 -0
  228. package/components/Tooltip/types.d.vue.ts +10 -0
  229. package/components/Tooltip/types.solid.ts +6 -0
  230. package/components/Tooltip/types.svelte.ts +7 -0
  231. package/components/Tooltip/types.ts +11 -0
  232. package/css/theme.css +0 -1
  233. package/dist/opui.css +0 -1
  234. package/dist/opui.css.map +1 -1
  235. package/package.json +4 -6
@@ -0,0 +1,14 @@
1
+ import type * as Base from "./types"
2
+ import type { SvelteHTMLElements } from "svelte/elements"
3
+ import type { Snippet } from "svelte"
4
+
5
+ // prettier-ignore
6
+ export type Props =
7
+ Base.Props &
8
+ Base.Slots<Snippet> &
9
+ (
10
+ | ({ as?: "li" } & SvelteHTMLElements["li"])
11
+ | ({ as: "a" } & SvelteHTMLElements["a"])
12
+ | ({ as: "button" } & SvelteHTMLElements["button"])
13
+ | ({ as: "div" } & SvelteHTMLElements["div"])
14
+ )
@@ -0,0 +1,32 @@
1
+ export type Props = {
2
+ borderTop?: boolean
3
+ class?: string
4
+ description?: string
5
+ for?: string
6
+ headline?: string
7
+ inset?: boolean
8
+ type?: "checkbox" | "radio" | "switch" | "button"
9
+ } & (
10
+ | {
11
+ as?: "a"
12
+ href: string
13
+ disabled?: never
14
+ }
15
+ | {
16
+ as?: "button"
17
+ href?: never
18
+ disabled?: boolean
19
+ }
20
+ | {
21
+ as?: string
22
+ href?: never
23
+ }
24
+ )
25
+
26
+ export type Slots<S> = {
27
+ description?: string | S
28
+ end?: string | S
29
+ headline?: string | S
30
+ start?: string | S
31
+ text?: string | S
32
+ }
@@ -1,15 +1,5 @@
1
1
  ---
2
- type Props = {
3
- [key: string]: any
4
- "aria-busy"?: "true" | "false" | boolean
5
- "aria-describedby"?: string
6
- "aria-label"?: string
7
- class?: string
8
- id?: string
9
- max?: number | string
10
- value?: number | string
11
- variant?: "filled" | "default" | "tonal"
12
- }
2
+ import type { Props } from "./types.astro"
13
3
 
14
4
  export const title = "Progress"
15
5
 
@@ -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<"progress">
@@ -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<HTMLProgressElement>
@@ -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["progress"]
@@ -0,0 +1,10 @@
1
+ export type Props = {
2
+ [key: string]: any
3
+ "aria-busy"?: "true" | "false" | boolean
4
+ "aria-describedby"?: string
5
+ "aria-label"?: string
6
+ id?: string
7
+ max?: number | string
8
+ value?: number | string
9
+ variant?: "filled" | "default" | "tonal"
10
+ }
@@ -1,35 +1,17 @@
1
1
  ---
2
+ import type { RadioProps as Props } from "./types.astro"
2
3
  import RadioInput from "./RadioInput.astro"
3
4
 
4
- type Props = {
5
- [key: string]: any
6
- checked?: boolean
7
- class?: string
8
- disabled?: boolean
9
- error?: boolean
10
- hideLabel?: boolean
11
- id?: string
12
- name?: string
13
- required?: boolean
14
- size?: "small" | "large"
15
- stack?: boolean
16
- value?: string
17
- }
18
-
19
5
  export const title = "Radio"
20
6
 
21
7
  const {
22
- checked,
23
8
  class: className,
24
9
  disabled,
25
10
  error,
26
11
  hideLabel,
27
- id,
28
12
  name,
29
- required,
30
13
  size,
31
14
  stack,
32
- value,
33
15
  ...rest
34
16
  } = Astro.props
35
17
 
@@ -50,21 +32,13 @@ const finalName = name || currentFieldName
50
32
  ]}
51
33
  data-invalid={error || undefined}
52
34
  >
53
- <RadioInput
54
- aria-describedby={endTextId}
55
- {checked}
56
- {disabled}
57
- {id}
58
- name={finalName}
59
- {required}
60
- {value}
61
- {...rest}
62
- />
63
- <!-- prettier-ignore --><span class:list={[hideLabel ? "ui-sr-only" : "ui-label"]}><slot /></span>
35
+ <RadioInput aria-describedby={endTextId} name={finalName} {...rest} />
36
+ <span class:list={[hideLabel ? "ui-sr-only" : "ui-label"]}><slot /></span>
64
37
  {
65
38
  Astro.slots.has("end-text") && (
66
- <!-- prettier-ignore -->
67
- <span id={endTextId} class="ui-end-text"><slot name="end-text" /></span>
39
+ <span id={endTextId} class="ui-end-text">
40
+ <slot name="end-text" />
41
+ </span>
68
42
  )
69
43
  }
70
44
  </label>
@@ -1,24 +1,7 @@
1
1
  ---
2
- type Props = {
3
- [key: string]: any
4
- checked?: boolean
5
- disabled?: boolean
6
- id?: string
7
- name?: string
8
- required?: boolean
9
- value?: string
10
- }
2
+ import type { RadioInputProps as Props } from "./types.astro"
11
3
 
12
- const { checked, disabled, id, name, required, value, ...rest } = Astro.props
4
+ const { ...props } = Astro.props
13
5
  ---
14
6
 
15
- <input
16
- type="radio"
17
- {checked}
18
- {disabled}
19
- {id}
20
- {name}
21
- {required}
22
- {value}
23
- {...rest}
24
- />
7
+ <input type="radio" {...props} />
@@ -0,0 +1,6 @@
1
+ import type * as Base from "./types"
2
+ import type { HTMLAttributes } from "astro/types"
3
+
4
+ export type RadioProps = Base.RadioProps & HTMLAttributes<"input">
5
+ export type RadioInputProps = Base.RadioInputProps &
6
+ Omit<HTMLAttributes<"input">, "type">
@@ -0,0 +1,11 @@
1
+ import type { HTMLAttributes, Slot } from "vue"
2
+ import type { RadioProps as BaseRadioProps } from "./types"
3
+
4
+ export type RadioProps = BaseRadioProps & {
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 RadioInputProps = Base.RadioInputProps &
5
+ JSX.InputHTMLAttributes<HTMLInputElement>
6
+
7
+ export type RadioProps = Base.RadioProps &
8
+ Partial<Base.RadioSlots<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.RadioSlots<Snippet>
6
+
7
+ export type RadioInputProps = Base.RadioInputProps &
8
+ Omit<SvelteHTMLElements["input"], "type">
9
+
10
+ export type RadioProps = Omit<Base.RadioProps, keyof Snippets> &
11
+ Snippets &
12
+ Omit<SvelteHTMLElements["input"], "size">
@@ -0,0 +1,13 @@
1
+ export type RadioProps = {
2
+ disabled?: boolean
3
+ error?: boolean
4
+ hideLabel?: boolean
5
+ size?: "small" | "large"
6
+ stack?: boolean
7
+ }
8
+
9
+ export type RadioInputProps = {}
10
+
11
+ export type RadioSlots<S> = {
12
+ endText?: string | S
13
+ }
@@ -1,27 +1,5 @@
1
1
  ---
2
- type Props = {
3
- [key: string]: any
4
- class?: string
5
- disabled?: boolean
6
- endText?: string
7
- id?: string
8
- label?: string
9
- max?: number | string
10
- min?: number | string
11
- name?: string
12
- spread?: boolean
13
- startText?: string
14
- step?: number | string
15
- value?: number | string
16
- valueSuffix?: string
17
- variant?: "filled" | "default" | "tonal"
18
- } & (
19
- | { list?: never; options?: never }
20
- | {
21
- list: string
22
- options: (string | number | { value: string | number; label?: string })[]
23
- }
24
- )
2
+ import type { RangeProps as Props } from "./types.astro"
25
3
 
26
4
  export const title = "Range"
27
5
 
@@ -57,14 +35,24 @@ const labelId = hasLabel ? $id("range-label") : undefined
57
35
  const startTextId = hasStartText ? $id("range-start") : undefined
58
36
  const endTextId = hasEndText ? $id("range-end") : undefined
59
37
 
60
- const describedBy = [startTextId, endTextId].filter(Boolean).join(" ") || undefined
38
+ const describedBy =
39
+ [startTextId, endTextId].filter(Boolean).join(" ") || undefined
61
40
  ---
62
41
 
63
- <label class:list={["ui-range", variant && `ui-${variant}`, { "ui-spread": spread }, className]}>
42
+ <label
43
+ class:list={[
44
+ "ui-range",
45
+ variant && `ui-${variant}`,
46
+ { "ui-spread": spread },
47
+ className,
48
+ ]}
49
+ >
64
50
  {
65
51
  hasLabel && (
66
- <!-- prettier-ignore -->
67
- <span class="ui-label" id={labelId}>{label}<slot /></span>
52
+ <span class="ui-label" id={labelId}>
53
+ {label}
54
+ <slot />
55
+ </span>
68
56
  )
69
57
  }
70
58
  {
@@ -77,7 +65,8 @@ const describedBy = [startTextId, endTextId].filter(Boolean).join(" ") || undefi
77
65
  {
78
66
  hasStartText && (
79
67
  <span class="ui-start-text" id={startTextId}>
80
- {startText}<slot name="start-text" />
68
+ {startText}
69
+ <slot name="start-text" />
81
70
  </span>
82
71
  )
83
72
  }
@@ -103,7 +92,7 @@ const describedBy = [startTextId, endTextId].filter(Boolean).join(" ") || undefi
103
92
  <option value={option.value} label={option.label} />
104
93
  ) : (
105
94
  <option value={option} />
106
- )
95
+ ),
107
96
  )}
108
97
  <slot name="datalist" />
109
98
  </datalist>
@@ -112,7 +101,8 @@ const describedBy = [startTextId, endTextId].filter(Boolean).join(" ") || undefi
112
101
  {
113
102
  hasEndText && (
114
103
  <span class="ui-end-text" id={endTextId}>
115
- {endText}<slot name="end-text" />
104
+ {endText}
105
+ <slot name="end-text" />
116
106
  </span>
117
107
  )
118
108
  }
@@ -124,7 +114,9 @@ const describedBy = [startTextId, endTextId].filter(Boolean).join(" ") || undefi
124
114
  // without a value display.
125
115
  for (const range of document.querySelectorAll<HTMLElement>(".ui-range")) {
126
116
  const input = range.querySelector<HTMLInputElement>('input[type="range"]')
127
- const output = range.querySelector<HTMLOutputElement>(":scope > output.ui-value")
117
+ const output = range.querySelector<HTMLOutputElement>(
118
+ ":scope > output.ui-value",
119
+ )
128
120
  if (!input || !output) continue
129
121
  const suffix = output.dataset.suffix ?? ""
130
122
  const update = () => {
@@ -0,0 +1,6 @@
1
+ import type * as Base from "./types"
2
+ import type { HTMLAttributes } from "astro/types"
3
+
4
+ export type RangeProps = Base.RangeProps &
5
+ HTMLAttributes<"label"> &
6
+ HTMLAttributes<"input">
@@ -0,0 +1,14 @@
1
+ import type { HTMLAttributes, Slot } from "vue"
2
+ import type { RangeProps as BaseRangeProps } from "./types"
3
+
4
+ export type RangeProps = BaseRangeProps & {
5
+ class?: HTMLAttributes["class"]
6
+ }
7
+
8
+ export type Slots = {
9
+ datalist?: Slot
10
+ default?: Slot
11
+ "end-text"?: Slot
12
+ "start-text"?: Slot
13
+ value?: Slot
14
+ }
@@ -0,0 +1,6 @@
1
+ import type * as Base from "./types"
2
+ import type { JSX } from "solid-js"
3
+
4
+ export type RangeProps = Base.RangeProps &
5
+ Partial<Base.RangeSlots<JSX.Element>> &
6
+ JSX.InputHTMLAttributes<HTMLInputElement>
@@ -0,0 +1,9 @@
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.RangeSlots<Snippet>
6
+
7
+ export type RangeProps = Omit<Base.RangeProps, keyof Snippets> &
8
+ Snippets &
9
+ SvelteHTMLElements["input"]
@@ -0,0 +1,30 @@
1
+ export type RangeProps = {
2
+ [key: string]: any
3
+ disabled?: boolean
4
+ endText?: string
5
+ id?: string
6
+ label?: string
7
+ max?: number | string
8
+ min?: number | string
9
+ name?: string
10
+ spread?: boolean
11
+ startText?: string
12
+ step?: number | string
13
+ value?: number | string
14
+ valueSuffix?: string
15
+ variant?: "filled" | "default" | "tonal"
16
+ } & (
17
+ | { list?: never; options?: never }
18
+ | {
19
+ list: string
20
+ options: (string | number | { value: string | number; label?: string })[]
21
+ }
22
+ )
23
+
24
+ export type RangeSlots<S> = {
25
+ datalist?: S
26
+ endText?: string | S
27
+ startText?: string | S
28
+ valueSuffix?: string | S
29
+ valueText?: S
30
+ }
@@ -1,27 +1,5 @@
1
1
  ---
2
- type Item = {
3
- text: string
4
- value: any
5
- }
6
-
7
- type Props = {
8
- [key: string]: any
9
- class?: string
10
- description?: string
11
- disabled?: boolean
12
- error?: boolean
13
- dense?: boolean
14
- id?: string
15
- items?: Item[]
16
- label?: string
17
- name?: string
18
- spread?: boolean
19
- required?: boolean
20
- size?: "small"
21
- endText?: string
22
- value?: any
23
- variant?: "outlined" | "filled"
24
- }
2
+ import type { Props } from "./types.astro"
25
3
 
26
4
  export const title = "Select"
27
5
 
@@ -36,9 +14,9 @@ const {
36
14
  label,
37
15
  name,
38
16
  spread,
39
- required,
40
17
  size,
41
18
  endText,
19
+ required,
42
20
  value,
43
21
  variant = "outlined",
44
22
  ...rest
@@ -64,14 +42,18 @@ const labelId = $id("select-label")
64
42
  >
65
43
  {
66
44
  (label || Astro.slots.has("label")) && (
67
- <!-- prettier-ignore -->
68
- <span class="ui-label" id={labelId}>{label}<slot name="label" /></span>
45
+ <span class="ui-label" id={labelId}>
46
+ {label}
47
+ <slot name="label" />
48
+ </span>
69
49
  )
70
50
  }
71
51
  {
72
52
  (description || Astro.slots.has("description")) && (
73
- <!-- prettier-ignore -->
74
- <span class="ui-start-text">{description}<slot name="description" /></span>
53
+ <span class="ui-start-text">
54
+ {description}
55
+ <slot name="description" />
56
+ </span>
75
57
  )
76
58
  }
77
59
  <span class="ui-field">
@@ -92,15 +74,41 @@ const labelId = $id("select-label")
92
74
  <slot />
93
75
  </div>
94
76
  </select>
95
- {Astro.slots.has("prefix") && <span class="ui-prefix"><slot name="prefix" /></span>}
96
- {Astro.slots.has("suffix") && <span class="ui-suffix"><slot name="suffix" /></span>}
97
- {Astro.slots.has("header") && <span class="ui-header"><slot name="header" /></span>}
98
- {Astro.slots.has("footer") && <span class="ui-footer"><slot name="footer" /></span>}
77
+ {
78
+ Astro.slots.has("prefix") && (
79
+ <span class="ui-prefix">
80
+ <slot name="prefix" />
81
+ </span>
82
+ )
83
+ }
84
+ {
85
+ Astro.slots.has("suffix") && (
86
+ <span class="ui-suffix">
87
+ <slot name="suffix" />
88
+ </span>
89
+ )
90
+ }
91
+ {
92
+ Astro.slots.has("header") && (
93
+ <span class="ui-header">
94
+ <slot name="header" />
95
+ </span>
96
+ )
97
+ }
98
+ {
99
+ Astro.slots.has("footer") && (
100
+ <span class="ui-footer">
101
+ <slot name="footer" />
102
+ </span>
103
+ )
104
+ }
99
105
  </span>
100
106
  {
101
107
  (endText || Astro.slots.has("end-text")) && (
102
- <!-- prettier-ignore -->
103
- <span id={$id("end-text")} class="ui-end-text">{endText}<slot name="end-text" /></span>
108
+ <span id={$id("end-text")} class="ui-end-text">
109
+ {endText}
110
+ <slot name="end-text" />
111
+ </span>
104
112
  )
105
113
  }
106
114
  </label>
@@ -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<"select">
@@ -0,0 +1,17 @@
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
+ description?: Slot
11
+ "end-text"?: Slot
12
+ footer?: Slot
13
+ header?: Slot
14
+ label?: Slot
15
+ prefix?: Slot
16
+ suffix?: Slot
17
+ }
@@ -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
+ Omit<JSX.SelectHTMLAttributes<HTMLSelectElement>, "size"> &
6
+ Base.Slots<JSX.Element>
@@ -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
+ export type Props = Omit<Base.Props, keyof Base.Slots<Snippet>> &
6
+ Base.Slots<Snippet> &
7
+ Omit<SvelteHTMLElements["select"], "prefix" | "size">
@@ -0,0 +1,27 @@
1
+ export type Props = {
2
+ error?: boolean
3
+ dense?: boolean
4
+ description?: string
5
+ items?: Item[]
6
+ label?: string
7
+ spread?: boolean
8
+ size?: "small"
9
+ endText?: string
10
+ variant?: "outlined" | "filled"
11
+ }
12
+
13
+ export type Item = {
14
+ text: string
15
+ value: any
16
+ }
17
+
18
+ export type Slots<S> = {
19
+ children?: S
20
+ description?: string | S
21
+ endText?: string | S
22
+ footer?: string | S
23
+ header?: string | S
24
+ label?: string | S
25
+ prefix?: string | S
26
+ suffix?: string | S
27
+ }