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
@@ -1,25 +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 { SwitchInputProps as Props } from "./types.astro"
11
3
 
12
- const { checked, disabled, id, name, required, value, ...rest } = Astro.props
4
+ const { ...rest } = Astro.props
13
5
  ---
14
6
 
15
- <input
16
- type="checkbox"
17
- role="switch"
18
- {checked}
19
- {disabled}
20
- {id}
21
- {name}
22
- {required}
23
- {value}
24
- {...rest}
25
- />
7
+ <input type="checkbox" role="switch" {...rest} />
@@ -0,0 +1,14 @@
1
+ <script setup lang="ts">
2
+ import type { SwitchInputProps } from "./types"
3
+
4
+ defineOptions({
5
+ inheritAttrs: false,
6
+ })
7
+
8
+ defineProps<SwitchInputProps>()
9
+ const modelValue = defineModel<boolean | (string | number)[]>()
10
+ </script>
11
+
12
+ <template>
13
+ <input type="checkbox" role="switch" v-bind="$attrs" v-model="modelValue" />
14
+ </template>
@@ -0,0 +1,5 @@
1
+ import type * as Base from "./types"
2
+ import type { HTMLAttributes } from "astro/types"
3
+
4
+ export type SwitchProps = Base.SwitchProps & HTMLAttributes<"input">
5
+ export type SwitchInputProps = Base.SwitchInputProps & HTMLAttributes<"input">
@@ -0,0 +1,13 @@
1
+ import type { HTMLAttributes, Slot } from "vue"
2
+ import type { SwitchProps as BaseSwitchProps } from "./types"
3
+
4
+ export type SwitchProps = BaseSwitchProps & {
5
+ class?: HTMLAttributes["class"]
6
+ }
7
+
8
+ export type Slots = {
9
+ default?: Slot
10
+ "end-text"?: Slot
11
+ "icon-checked"?: Slot
12
+ "icon-unchecked"?: Slot
13
+ }
@@ -0,0 +1,9 @@
1
+ import type * as Base from "./types"
2
+ import type { JSX } from "solid-js"
3
+
4
+ export type SwitchProps = Base.SwitchProps &
5
+ JSX.InputHTMLAttributes<HTMLInputElement> &
6
+ Base.SwitchSlots<JSX.Element>
7
+
8
+ export type SwitchInputProps = Base.SwitchInputProps &
9
+ 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
+ export type SwitchProps = Base.SwitchProps &
6
+ Base.SwitchSlots<Snippet> &
7
+ SvelteHTMLElements["input"]
8
+ export type SwitchInputProps = Base.SwitchInputProps &
9
+ SvelteHTMLElements["input"]
@@ -0,0 +1,16 @@
1
+ export type SwitchProps = {
2
+ error?: boolean
3
+ hideLabel?: boolean
4
+ small?: boolean
5
+ spread?: boolean
6
+ stack?: boolean
7
+ }
8
+
9
+ export type SwitchSlots<S> = {
10
+ children?: S
11
+ endText?: string | S
12
+ iconUnchecked?: S
13
+ iconChecked?: S
14
+ }
15
+
16
+ export type SwitchInputProps = {}
@@ -1,7 +1,5 @@
1
1
  ---
2
- type Props = {
3
- [key: string]: any
4
- }
2
+ import type { SectionProps as Props } from "./types.astro"
5
3
 
6
4
  export const title = "Table Body"
7
5
 
@@ -0,0 +1,5 @@
1
+ <template>
2
+ <tbody>
3
+ <slot></slot>
4
+ </tbody>
5
+ </template>
@@ -1,7 +1,5 @@
1
1
  ---
2
- type Props = {
3
- [key: string]: any
4
- }
2
+ import type { SectionProps as Props } from "./types.astro"
5
3
 
6
4
  export const title = "Table Cell"
7
5
 
@@ -0,0 +1,5 @@
1
+ <template>
2
+ <td>
3
+ <slot></slot>
4
+ </td>
5
+ </template>
@@ -1,8 +1,5 @@
1
1
  ---
2
- type Props = {
3
- [key: string]: any
4
- width?: string
5
- }
2
+ import type { ColumnProps as Props } from "./types.astro"
6
3
 
7
4
  export const title = "Table Column"
8
5
 
@@ -0,0 +1,19 @@
1
+ <script setup lang="ts">
2
+ import type { ColumnProps } from "./types"
3
+
4
+ const { width } = defineProps<ColumnProps>()
5
+
6
+ defineOptions({
7
+ inheritAttrs: false,
8
+ })
9
+
10
+ const colStyle = width
11
+ ? width.includes(":")
12
+ ? width
13
+ : `width: ${width}`
14
+ : undefined
15
+ </script>
16
+
17
+ <template>
18
+ <col :style="colStyle" v-bind="$attrs" />
19
+ </template>
@@ -1,7 +1,5 @@
1
1
  ---
2
- type Props = {
3
- [key: string]: any
4
- }
2
+ import type { SectionProps as Props } from "./types.astro"
5
3
 
6
4
  export const title = "Table Column Group"
7
5
 
@@ -0,0 +1,5 @@
1
+ <template>
2
+ <colgroup>
3
+ <slot></slot>
4
+ </colgroup>
5
+ </template>
@@ -1,7 +1,5 @@
1
1
  ---
2
- type Props = {
3
- [key: string]: any
4
- }
2
+ import type { SectionProps as Props } from "./types.astro"
5
3
 
6
4
  export const title = "Table Head"
7
5
 
@@ -0,0 +1,5 @@
1
+ <template>
2
+ <thead>
3
+ <slot></slot>
4
+ </thead>
5
+ </template>
@@ -1,7 +1,5 @@
1
1
  ---
2
- type Props = {
3
- [key: string]: any
4
- }
2
+ import type { SectionProps as Props } from "./types.astro"
5
3
 
6
4
  export const title = "Table Header Cell"
7
5
 
@@ -0,0 +1,5 @@
1
+ <template>
2
+ <th>
3
+ <slot></slot>
4
+ </th>
5
+ </template>
@@ -1,7 +1,5 @@
1
1
  ---
2
- type Props = {
3
- [key: string]: any
4
- }
2
+ import type { SectionProps as Props } from "./types.astro"
5
3
 
6
4
  export const title = "Table Row"
7
5
 
@@ -0,0 +1,5 @@
1
+ <template>
2
+ <tr>
3
+ <slot></slot>
4
+ </tr>
5
+ </template>
@@ -1,9 +1,5 @@
1
1
  ---
2
- type Props = {
3
- [key: string]: any
4
- class?: string
5
- variant?: "dense" | "spacious"
6
- }
2
+ import type { Props } from "./types.astro"
7
3
 
8
4
  export const title = "Table"
9
5
 
@@ -0,0 +1,19 @@
1
+ <script setup lang="ts">
2
+ import type { Props, Slots } from "./types.d.vue"
3
+
4
+ const { variant } = defineProps<Props>()
5
+ defineSlots<Slots>()
6
+
7
+ defineOptions({
8
+ inheritAttrs: false,
9
+ })
10
+ </script>
11
+
12
+ <template>
13
+ <table
14
+ :class="['ui-table', variant && `ui-${variant}`, $props.class]"
15
+ v-bind="$attrs"
16
+ >
17
+ <slot></slot>
18
+ </table>
19
+ </template>
@@ -0,0 +1,16 @@
1
+ import type * as Base from "./types"
2
+ import type { HTMLAttributes } from "astro/types"
3
+
4
+ export type Props = Base.Props & HTMLAttributes<"table">
5
+
6
+ export type SectionProps = Base.SectionProps &
7
+ (
8
+ | HTMLAttributes<"tr">
9
+ | HTMLAttributes<"tbody">
10
+ | HTMLAttributes<"thead">
11
+ | HTMLAttributes<"th">
12
+ | HTMLAttributes<"td">
13
+ | HTMLAttributes<"colgroup">
14
+ )
15
+
16
+ export type ColumnProps = Base.ColumnProps & HTMLAttributes<"col">
@@ -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 & JSX.HTMLAttributes<HTMLTableElement>
5
+ export type SectionProps = Base.SectionProps &
6
+ JSX.HTMLAttributes<HTMLTableSectionElement>
7
+ export type ColumnProps = Base.ColumnProps &
8
+ JSX.HTMLAttributes<HTMLTableColElement>
@@ -0,0 +1,11 @@
1
+ import type * as Base from "./types"
2
+ import type { SvelteHTMLElements } from "svelte/elements"
3
+
4
+ export type ColumnProps = Base.ColumnProps & SvelteHTMLElements["col"]
5
+ export type Props = Base.Props & SvelteHTMLElements["table"]
6
+ export type SectionProps = Base.SectionProps &
7
+ (
8
+ | SvelteHTMLElements["tbody"]
9
+ | SvelteHTMLElements["tfoot"]
10
+ | SvelteHTMLElements["thead"]
11
+ )
@@ -0,0 +1,9 @@
1
+ export type Props = {
2
+ variant?: "dense" | "spacious"
3
+ }
4
+
5
+ export type SectionProps = {}
6
+
7
+ export type ColumnProps = {
8
+ width?: string
9
+ }
@@ -1,9 +1,5 @@
1
1
  ---
2
- type Props = {
3
- [key: string]: any
4
- class?: string
5
- name?: string
6
- }
2
+ import type { Props } from "./types.astro"
7
3
 
8
4
  export const title = "Tabs"
9
5
 
@@ -0,0 +1,20 @@
1
+ <script setup lang="ts">
2
+ import { provide, useId } from "vue"
3
+ import { TabsGroupNameKey, type Props, type Slots } from "./types.d.vue"
4
+
5
+ const { name } = defineProps<Props>()
6
+ defineSlots<Slots>()
7
+
8
+ defineOptions({
9
+ inheritAttrs: false,
10
+ })
11
+
12
+ const groupName = name || useId()
13
+ provide(TabsGroupNameKey, groupName)
14
+ </script>
15
+
16
+ <template>
17
+ <div :class="['ui-tabs', $props.class]" role="tablist" v-bind="$attrs">
18
+ <slot></slot>
19
+ </div>
20
+ </template>
@@ -1,12 +1,5 @@
1
1
  ---
2
- type Props = {
3
- class?: string
4
- name?: string
5
- open?: boolean
6
- tabId?: string
7
- panelId?: string
8
- [key: string]: any
9
- }
2
+ import type { TabsItemProps as Props } from "./types.astro"
10
3
 
11
4
  const { $id } = Astro.locals
12
5
  const {
@@ -0,0 +1,39 @@
1
+ <script setup lang="ts">
2
+ import { inject, provide, useId } from "vue"
3
+ import {
4
+ CurrentPanelIdKey,
5
+ CurrentTabIdKey,
6
+ TabsGroupNameKey,
7
+ type Slots,
8
+ type TabsItemProps,
9
+ } from "./types.d.vue"
10
+
11
+ const { name, open, panelId, tabId } = defineProps<TabsItemProps>()
12
+ defineSlots<Slots>()
13
+
14
+ defineOptions({
15
+ inheritAttrs: false,
16
+ })
17
+
18
+ const tabsGroupName = name || inject(TabsGroupNameKey, undefined) || useId()
19
+ provide(TabsGroupNameKey, tabsGroupName)
20
+
21
+ const computedTabId = tabId || useId()
22
+ const computedPanelId = panelId || useId()
23
+
24
+ provide(CurrentTabIdKey, computedTabId)
25
+ provide(CurrentPanelIdKey, computedPanelId)
26
+ </script>
27
+
28
+ <template>
29
+ <input
30
+ :aria-controls="computedPanelId"
31
+ :checked="open"
32
+ :class="['ui-tab-input', $props.class]"
33
+ :id="computedTabId"
34
+ :name="tabsGroupName"
35
+ type="radio"
36
+ v-bind="$attrs"
37
+ />
38
+ <slot></slot>
39
+ </template>
@@ -1,10 +1,5 @@
1
1
  ---
2
- type Props = {
3
- class?: string
4
- panelId?: string
5
- tabId?: string
6
- [key: string]: any
7
- }
2
+ import type { TabsPanelProps as Props } from "./types.astro"
8
3
 
9
4
  const { class: className, panelId, tabId, ...rest } = Astro.props
10
5
  const { currentPanelId, currentTabId } = Astro.locals
@@ -0,0 +1,31 @@
1
+ <script setup lang="ts">
2
+ import { inject } from "vue"
3
+ import {
4
+ CurrentPanelIdKey,
5
+ CurrentTabIdKey,
6
+ type Slots,
7
+ type TabsPanelProps,
8
+ } from "./types.d.vue"
9
+
10
+ const { panelId, tabId } = defineProps<TabsPanelProps>()
11
+ defineSlots<Slots>()
12
+
13
+ defineOptions({
14
+ inheritAttrs: false,
15
+ })
16
+
17
+ const currentPanelId = inject(CurrentPanelIdKey, undefined)
18
+ const currentTabId = inject(CurrentTabIdKey, undefined)
19
+ </script>
20
+
21
+ <template>
22
+ <div
23
+ :id="panelId || currentPanelId"
24
+ :class="['ui-tab-panel', $props.class]"
25
+ role="tabpanel"
26
+ :aria-labelledby="tabId || currentTabId"
27
+ v-bind="$attrs"
28
+ >
29
+ <slot></slot>
30
+ </div>
31
+ </template>
@@ -1,9 +1,5 @@
1
1
  ---
2
- type Props = {
3
- class?: string
4
- tabId?: string
5
- [key: string]: any
6
- }
2
+ import type { TabsTabProps as Props } from "./types.astro"
7
3
 
8
4
  const { class: className, tabId, ...rest } = Astro.props
9
5
  const { currentTabId } = Astro.locals
@@ -0,0 +1,24 @@
1
+ <script setup lang="ts">
2
+ import { inject } from "vue"
3
+ import { CurrentTabIdKey, type Slots, type TabsTabProps } from "./types.d.vue"
4
+
5
+ const { tabId } = defineProps<TabsTabProps>()
6
+ defineSlots<Slots>()
7
+
8
+ defineOptions({
9
+ inheritAttrs: false,
10
+ })
11
+
12
+ const currentTabId = inject(CurrentTabIdKey, undefined)
13
+ </script>
14
+
15
+ <template>
16
+ <label
17
+ :for="tabId || currentTabId"
18
+ :class="['ui-tab-label', $props.class]"
19
+ role="tab"
20
+ v-bind="$attrs"
21
+ >
22
+ <slot></slot>
23
+ </label>
24
+ </template>
@@ -0,0 +1,11 @@
1
+ import type * as Base from "./types"
2
+ import type { HTMLAttributes } from "astro/types"
3
+
4
+ export type Props = Base.Props & HTMLAttributes<"div">
5
+
6
+ export type TabsItemProps = Base.TabsItemProps &
7
+ Omit<HTMLAttributes<"input">, "type">
8
+
9
+ export type TabsTabProps = Base.TabsTabProps & HTMLAttributes<"label">
10
+
11
+ export type TabsPanelProps = Base.TabsPanelProps & HTMLAttributes<"div">
@@ -0,0 +1,31 @@
1
+ import type { HTMLAttributes, InjectionKey, Slot } from "vue"
2
+ import type {
3
+ Props as BaseProps,
4
+ TabsItemProps as BaseTabsItemProps,
5
+ TabsPanelProps as BaseTabsPanelProps,
6
+ TabsTabProps as BaseTabsTabProps,
7
+ } from "./types"
8
+
9
+ export type Props = BaseProps & {
10
+ class?: HTMLAttributes["class"]
11
+ }
12
+
13
+ export type TabsItemProps = BaseTabsItemProps & {
14
+ class?: HTMLAttributes["class"]
15
+ }
16
+
17
+ export type TabsPanelProps = BaseTabsPanelProps & {
18
+ class?: HTMLAttributes["class"]
19
+ }
20
+
21
+ export type TabsTabProps = BaseTabsTabProps & {
22
+ class?: HTMLAttributes["class"]
23
+ }
24
+
25
+ export type Slots = {
26
+ default?: Slot
27
+ }
28
+
29
+ export const TabsGroupNameKey = Symbol() as InjectionKey<string>
30
+ export const CurrentTabIdKey = Symbol() as InjectionKey<string>
31
+ export const CurrentPanelIdKey = Symbol() as InjectionKey<string>
@@ -0,0 +1,12 @@
1
+ import type * as Base from "./types"
2
+ import type { JSX } from "solid-js"
3
+
4
+ export type Props = Base.Props & JSX.HTMLAttributes<HTMLDivElement>
5
+ export type TabsItemProps = Base.TabsItemProps &
6
+ JSX.InputHTMLAttributes<HTMLInputElement>
7
+ export type TabsTabProps = Base.TabsTabProps &
8
+ Omit<JSX.LabelHTMLAttributes<HTMLLabelElement>, "for"> & {
9
+ for?: string
10
+ }
11
+ export type TabsPanelProps = Base.TabsPanelProps &
12
+ JSX.HTMLAttributes<HTMLDivElement>
@@ -0,0 +1,10 @@
1
+ import type * as Base from "./types"
2
+ import type { SvelteHTMLElements } from "svelte/elements"
3
+
4
+ export type Props = Base.Props & SvelteHTMLElements["div"]
5
+ export type TabsItemProps = Base.TabsItemProps & SvelteHTMLElements["input"]
6
+ export type TabsPanelProps = Base.TabsPanelProps & SvelteHTMLElements["div"]
7
+ export type TabsTabProps = Base.TabsTabProps &
8
+ Omit<SvelteHTMLElements["label"], "for"> & {
9
+ for?: string
10
+ }
@@ -0,0 +1,19 @@
1
+ export type Props = {
2
+ name?: string
3
+ }
4
+
5
+ export type TabsItemProps = {
6
+ name?: string
7
+ open?: boolean
8
+ panelId?: string
9
+ tabId?: string
10
+ }
11
+
12
+ export type TabsTabProps = {
13
+ tabId?: string
14
+ }
15
+
16
+ export type TabsPanelProps = {
17
+ panelId?: string
18
+ tabId?: string
19
+ }