webcoreui 1.5.0-0 → 1.5.0-beta.2

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 (228) hide show
  1. package/astro.d.ts +62 -56
  2. package/astro.js +4 -0
  3. package/components/Accordion/Accordion.astro +1 -1
  4. package/components/Accordion/Accordion.svelte +60 -58
  5. package/components/Accordion/Accordion.tsx +4 -2
  6. package/components/Alert/Alert.astro +2 -1
  7. package/components/Alert/Alert.svelte +9 -2
  8. package/components/Alert/Alert.tsx +10 -3
  9. package/components/Alert/alert.ts +2 -18
  10. package/components/AspectRatio/AspectRatio.astro +1 -1
  11. package/components/AspectRatio/AspectRatio.svelte +7 -2
  12. package/components/AspectRatio/AspectRatio.tsx +6 -3
  13. package/components/AspectRatio/aspectratio.ts +0 -10
  14. package/components/Avatar/Avatar.astro +1 -1
  15. package/components/Avatar/Avatar.svelte +3 -1
  16. package/components/Avatar/Avatar.tsx +3 -2
  17. package/components/Badge/Badge.astro +2 -1
  18. package/components/Badge/Badge.svelte +9 -2
  19. package/components/Badge/Badge.tsx +8 -3
  20. package/components/Badge/badge.ts +11 -13
  21. package/components/Banner/Banner.astro +1 -1
  22. package/components/Banner/Banner.svelte +7 -2
  23. package/components/Banner/Banner.tsx +6 -2
  24. package/components/Banner/banner.ts +0 -10
  25. package/components/BottomNavigation/BottomNavigation.astro +1 -1
  26. package/components/BottomNavigation/BottomNavigation.svelte +3 -1
  27. package/components/BottomNavigation/BottomNavigation.tsx +3 -2
  28. package/components/Breadcrumb/Breadcrumb.astro +1 -1
  29. package/components/Breadcrumb/Breadcrumb.svelte +3 -1
  30. package/components/Breadcrumb/Breadcrumb.tsx +3 -1
  31. package/components/Button/Button.astro +2 -1
  32. package/components/Button/Button.svelte +9 -2
  33. package/components/Button/Button.tsx +7 -2
  34. package/components/Button/button.ts +23 -20
  35. package/components/Card/Card.astro +9 -2
  36. package/components/Card/Card.svelte +17 -4
  37. package/components/Card/Card.tsx +23 -6
  38. package/components/Card/card.module.scss +11 -4
  39. package/components/Card/card.ts +3 -16
  40. package/components/Carousel/Carousel.astro +1 -1
  41. package/components/Carousel/Carousel.svelte +8 -3
  42. package/components/Carousel/Carousel.tsx +7 -2
  43. package/components/Carousel/carousel.ts +0 -12
  44. package/components/CarouselItem/CarouselItem.astro +14 -0
  45. package/components/CarouselItem/CarouselItem.svelte +18 -0
  46. package/components/CarouselItem/CarouselItem.tsx +18 -0
  47. package/components/CarouselItem/carouselItem.ts +4 -0
  48. package/components/Checkbox/Checkbox.astro +3 -6
  49. package/components/Checkbox/Checkbox.svelte +9 -7
  50. package/components/Checkbox/Checkbox.tsx +8 -5
  51. package/components/Checkbox/checkbox.ts +2 -17
  52. package/components/Collapsible/Collapsible.astro +1 -1
  53. package/components/Collapsible/Collapsible.svelte +9 -2
  54. package/components/Collapsible/Collapsible.tsx +8 -2
  55. package/components/Collapsible/collapsible.ts +0 -15
  56. package/components/ConditionalWrapper/ConditionalWrapper.astro +1 -1
  57. package/components/ConditionalWrapper/ConditionalWrapper.svelte +8 -2
  58. package/components/ConditionalWrapper/ConditionalWrapper.tsx +7 -2
  59. package/components/ConditionalWrapper/conditionalwrapper.ts +2 -14
  60. package/components/ContextMenu/ContextMenu.astro +2 -1
  61. package/components/ContextMenu/ContextMenu.svelte +9 -3
  62. package/components/ContextMenu/ContextMenu.tsx +8 -2
  63. package/components/ContextMenu/contextmenu.ts +2 -17
  64. package/components/Copy/Copy.astro +2 -2
  65. package/components/Copy/Copy.svelte +8 -3
  66. package/components/Copy/Copy.tsx +7 -3
  67. package/components/Copy/copy.ts +2 -12
  68. package/components/Counter/Counter.astro +3 -2
  69. package/components/Counter/Counter.svelte +10 -5
  70. package/components/Counter/Counter.tsx +11 -7
  71. package/components/Counter/counter.ts +2 -11
  72. package/components/DataTable/DataTable.astro +1 -1
  73. package/components/DataTable/DataTable.svelte +8 -2
  74. package/components/DataTable/DataTable.tsx +7 -2
  75. package/components/DataTable/datatable.ts +0 -12
  76. package/components/Flex/Flex.astro +2 -1
  77. package/components/Flex/Flex.svelte +8 -2
  78. package/components/Flex/Flex.tsx +8 -3
  79. package/components/Flex/flex.ts +2 -15
  80. package/components/Footer/Footer.astro +1 -1
  81. package/components/Footer/Footer.svelte +7 -2
  82. package/components/Footer/Footer.tsx +6 -2
  83. package/components/Footer/footer.ts +0 -10
  84. package/components/Grid/Grid.astro +2 -1
  85. package/components/Grid/Grid.svelte +8 -2
  86. package/components/Grid/Grid.tsx +8 -3
  87. package/components/Grid/grid.ts +2 -15
  88. package/components/Group/Group.astro +1 -1
  89. package/components/Group/Group.svelte +7 -2
  90. package/components/Group/Group.tsx +6 -2
  91. package/components/Group/group.ts +0 -10
  92. package/components/Icon/Icon.astro +1 -1
  93. package/components/Icon/Icon.svelte +3 -1
  94. package/components/Icon/Icon.tsx +3 -2
  95. package/components/Image/Image.astro +2 -1
  96. package/components/Image/Image.svelte +4 -1
  97. package/components/Image/Image.tsx +3 -1
  98. package/components/Image/image.ts +2 -3
  99. package/components/ImageLoader/ImageLoader.astro +1 -1
  100. package/components/ImageLoader/ImageLoader.svelte +3 -1
  101. package/components/ImageLoader/ImageLoader.tsx +4 -2
  102. package/components/Input/Input.astro +3 -2
  103. package/components/Input/Input.svelte +14 -4
  104. package/components/Input/Input.tsx +11 -3
  105. package/components/Input/input.ts +26 -53
  106. package/components/Kbd/Kbd.astro +1 -1
  107. package/components/Kbd/Kbd.svelte +7 -2
  108. package/components/Kbd/Kbd.tsx +6 -2
  109. package/components/Kbd/kbd.ts +0 -10
  110. package/components/List/List.astro +1 -1
  111. package/components/List/List.svelte +6 -2
  112. package/components/List/List.tsx +8 -4
  113. package/components/List/list.ts +0 -8
  114. package/components/Masonry/Masonry.astro +1 -1
  115. package/components/Masonry/Masonry.svelte +7 -2
  116. package/components/Masonry/Masonry.tsx +7 -3
  117. package/components/Masonry/masonry.ts +2 -13
  118. package/components/Menu/Menu.astro +1 -1
  119. package/components/Menu/Menu.svelte +7 -2
  120. package/components/Menu/Menu.tsx +6 -2
  121. package/components/Menu/menu.ts +0 -10
  122. package/components/Modal/Modal.astro +2 -3
  123. package/components/Modal/Modal.svelte +8 -4
  124. package/components/Modal/Modal.tsx +6 -4
  125. package/components/Modal/modal.ts +2 -14
  126. package/components/OTPInput/OTPInput.astro +3 -5
  127. package/components/OTPInput/OTPInput.svelte +6 -6
  128. package/components/OTPInput/OTPInput.tsx +10 -8
  129. package/components/OTPInput/otpinput.ts +2 -4
  130. package/components/Pagination/Pagination.astro +1 -1
  131. package/components/Pagination/Pagination.svelte +6 -2
  132. package/components/Pagination/Pagination.tsx +6 -2
  133. package/components/Pagination/pagination.ts +0 -8
  134. package/components/Popover/Popover.astro +3 -7
  135. package/components/Popover/Popover.svelte +9 -8
  136. package/components/Popover/Popover.tsx +9 -12
  137. package/components/Popover/popover.ts +2 -15
  138. package/components/Progress/Progress.astro +1 -1
  139. package/components/Progress/Progress.svelte +3 -1
  140. package/components/Progress/Progress.tsx +3 -1
  141. package/components/Radio/Radio.astro +3 -4
  142. package/components/Radio/Radio.svelte +10 -5
  143. package/components/Radio/Radio.tsx +7 -5
  144. package/components/Radio/radio.ts +2 -14
  145. package/components/RangeSlider/RangeSlider.astro +1 -1
  146. package/components/RangeSlider/RangeSlider.svelte +6 -2
  147. package/components/RangeSlider/RangeSlider.tsx +7 -3
  148. package/components/RangeSlider/rangeslider.ts +0 -9
  149. package/components/Rating/Rating.astro +1 -1
  150. package/components/Rating/Rating.svelte +3 -1
  151. package/components/Rating/Rating.tsx +3 -1
  152. package/components/Ribbon/Ribbon.astro +1 -1
  153. package/components/Ribbon/Ribbon.svelte +7 -2
  154. package/components/Ribbon/Ribbon.tsx +6 -2
  155. package/components/Ribbon/ribbon.ts +0 -10
  156. package/components/Select/Select.astro +1 -1
  157. package/components/Select/Select.svelte +9 -4
  158. package/components/Select/Select.tsx +9 -4
  159. package/components/Select/select.ts +1 -12
  160. package/components/Sheet/Sheet.astro +2 -1
  161. package/components/Sheet/Sheet.svelte +5 -3
  162. package/components/Sheet/Sheet.tsx +5 -4
  163. package/components/Sheet/sheet.ts +3 -10
  164. package/components/Sidebar/Sidebar.astro +1 -1
  165. package/components/Sidebar/Sidebar.svelte +7 -2
  166. package/components/Sidebar/Sidebar.tsx +6 -2
  167. package/components/Sidebar/sidebar.ts +0 -10
  168. package/components/Skeleton/Skeleton.astro +1 -1
  169. package/components/Skeleton/Skeleton.svelte +3 -1
  170. package/components/Skeleton/Skeleton.tsx +3 -1
  171. package/components/Slider/Slider.astro +1 -1
  172. package/components/Slider/Slider.svelte +8 -2
  173. package/components/Slider/Slider.tsx +6 -2
  174. package/components/Slider/slider.ts +0 -10
  175. package/components/SpeedDial/SpeedDial.astro +1 -1
  176. package/components/SpeedDial/SpeedDial.svelte +3 -1
  177. package/components/SpeedDial/SpeedDial.tsx +4 -2
  178. package/components/Spinner/Spinner.astro +1 -1
  179. package/components/Spinner/Spinner.svelte +3 -1
  180. package/components/Spinner/Spinner.tsx +3 -1
  181. package/components/Spoiler/Spoiler.astro +1 -1
  182. package/components/Spoiler/Spoiler.svelte +7 -2
  183. package/components/Spoiler/Spoiler.tsx +6 -2
  184. package/components/Spoiler/spoiler.ts +0 -10
  185. package/components/Stepper/Stepper.astro +1 -1
  186. package/components/Stepper/Stepper.svelte +3 -1
  187. package/components/Stepper/Stepper.tsx +3 -1
  188. package/components/Switch/Switch.astro +7 -2
  189. package/components/Switch/Switch.svelte +13 -4
  190. package/components/Switch/Switch.tsx +8 -4
  191. package/components/Switch/switch.ts +2 -16
  192. package/components/Tab/Tab.astro +25 -0
  193. package/components/Tab/Tab.svelte +28 -0
  194. package/components/Tab/Tab.tsx +30 -0
  195. package/components/Tab/tab.ts +6 -0
  196. package/components/Table/Table.astro +1 -1
  197. package/components/Table/Table.svelte +3 -1
  198. package/components/Table/Table.tsx +3 -1
  199. package/components/Tabs/Tabs.astro +58 -25
  200. package/components/Tabs/Tabs.svelte +45 -12
  201. package/components/Tabs/Tabs.tsx +42 -11
  202. package/components/Tabs/tabs.module.scss +7 -6
  203. package/components/Tabs/tabs.ts +0 -10
  204. package/components/Textarea/Textarea.astro +3 -6
  205. package/components/Textarea/Textarea.svelte +10 -7
  206. package/components/Textarea/Textarea.tsx +9 -7
  207. package/components/Textarea/textarea.ts +2 -17
  208. package/components/ThemeSwitcher/ThemeSwitcher.astro +1 -1
  209. package/components/ThemeSwitcher/ThemeSwitcher.svelte +9 -3
  210. package/components/ThemeSwitcher/ThemeSwitcher.tsx +7 -2
  211. package/components/ThemeSwitcher/themeswitcher.ts +0 -13
  212. package/components/Timeline/Timeline.astro +1 -1
  213. package/components/Timeline/Timeline.svelte +7 -2
  214. package/components/Timeline/Timeline.tsx +6 -2
  215. package/components/Timeline/timeline.ts +0 -10
  216. package/components/TimelineItem/TimelineItem.astro +1 -1
  217. package/components/TimelineItem/TimelineItem.svelte +7 -2
  218. package/components/TimelineItem/TimelineItem.tsx +8 -3
  219. package/components/TimelineItem/timelineitem.ts +0 -12
  220. package/components/Toast/Toast.astro +2 -1
  221. package/components/Toast/Toast.svelte +5 -3
  222. package/components/Toast/Toast.tsx +5 -4
  223. package/components/Toast/toast.ts +3 -11
  224. package/package.json +19 -19
  225. package/react.d.ts +145 -138
  226. package/react.js +4 -0
  227. package/svelte.d.ts +145 -138
  228. package/svelte.js +4 -0
@@ -1,15 +1,14 @@
1
1
  ---
2
2
  import type { OTPInputProps } from './otpinput'
3
3
 
4
- import Input from '../Input/Input.astro'
4
+ import Input, { type Props as InputProps } from '../Input/Input.astro'
5
5
 
6
6
  import styles from './otpinput.module.scss'
7
7
 
8
- interface Props extends OTPInputProps {}
8
+ export type Props = OTPInputProps<InputProps>
9
9
 
10
10
  const {
11
11
  name = 'otp',
12
- disabled,
13
12
  length = 6,
14
13
  groupLength = 0,
15
14
  separator = '•',
@@ -47,17 +46,16 @@ const inputs = Array.from({ length }, (_, i) => i + 1)
47
46
  <div class={styles.separator}>{input}</div>
48
47
  ) : (
49
48
  <Input
49
+ {...rest}
50
50
  id={`${name}-${index}`}
51
51
  class={styles.input}
52
52
  type="text"
53
53
  maxlength="1"
54
- disabled={disabled}
55
54
  inputmode="numeric"
56
55
  autocomplete="one-time-code"
57
56
  data-id="w-input-otp"
58
57
  data-index={input}
59
58
  aria-label={`OTP digit ${input + 1}`}
60
- {...rest}
61
59
  />
62
60
  )
63
61
  )}
@@ -1,15 +1,16 @@
1
1
  <script lang="ts">
2
2
  import type { OTPInputProps } from './otpinput'
3
3
 
4
- import Input from '../Input/Input.svelte'
4
+ import Input, { type Props as InputProps } from '../Input/Input.svelte'
5
5
 
6
6
  import { classNames } from '../../utils/classNames'
7
7
 
8
8
  import styles from './otpinput.module.scss'
9
9
 
10
+ export type Props = OTPInputProps<InputProps>
11
+
10
12
  let {
11
13
  name = 'otp',
12
- disabled,
13
14
  length = 6,
14
15
  groupLength = 0,
15
16
  separator = '•',
@@ -18,7 +19,7 @@
18
19
  className,
19
20
  value = $bindable(''),
20
21
  ...rest
21
- }: OTPInputProps = $props()
22
+ }: Props = $props()
22
23
 
23
24
  const classes = $derived(classNames([
24
25
  styles.wrapper,
@@ -160,11 +161,11 @@
160
161
  <div class={styles.separator}>{input}</div>
161
162
  {:else}
162
163
  <Input
164
+ {...rest}
163
165
  id={`${name}-${index}`}
164
166
  className={styles.input}
165
167
  type="text"
166
- maxlength="1"
167
- disabled={disabled}
168
+ maxlength={1}
168
169
  inputmode="numeric"
169
170
  autocomplete="one-time-code"
170
171
  data-index={input}
@@ -174,7 +175,6 @@
174
175
  onfocus={handleFocus}
175
176
  onInput={handleInput}
176
177
  onpaste={handlePaste}
177
- {...rest}
178
178
  />
179
179
  {/if}
180
180
  {/each}
@@ -1,15 +1,18 @@
1
1
  import React from 'react'
2
2
  import type { OTPInputProps } from './otpinput'
3
3
 
4
- import Input from '../Input/Input.tsx'
4
+ import Input, { type Props as InputProps } from '../Input/Input.tsx'
5
5
 
6
6
  import { classNames } from '../../utils/classNames'
7
7
 
8
8
  import styles from './otpinput.module.scss'
9
9
 
10
+ export type Props = OTPInputProps<Omit<InputProps, 'onChange'>> & {
11
+ onChange?: (value: string) => void
12
+ }
13
+
10
14
  const OTPInput = ({
11
15
  name = 'otp',
12
- disabled,
13
16
  length = 6,
14
17
  groupLength = 0,
15
18
  separator = '•',
@@ -18,7 +21,7 @@ const OTPInput = ({
18
21
  className,
19
22
  onChange,
20
23
  ...rest
21
- }: OTPInputProps) => {
24
+ }: Props) => {
22
25
  const classes = classNames([
23
26
  styles.wrapper,
24
27
  className
@@ -64,7 +67,7 @@ const OTPInput = ({
64
67
  }
65
68
  }
66
69
 
67
- const handleInput = (event: React.FormEvent<HTMLInputElement>) => {
70
+ const handleInput = (event: React.InputEvent<HTMLInputElement>) => {
68
71
  const target = event.target
69
72
 
70
73
  if (!(target instanceof HTMLInputElement)) {
@@ -97,7 +100,7 @@ const OTPInput = ({
97
100
  }
98
101
  }
99
102
 
100
- const handlePaste = (event: ClipboardEvent) => {
103
+ const handlePaste = (event: React.ClipboardEvent<HTMLInputElement>) => {
101
104
  event.preventDefault()
102
105
 
103
106
  const target = event.target
@@ -122,7 +125,7 @@ const OTPInput = ({
122
125
  }
123
126
  }
124
127
 
125
- const handleFocus = (event: Event) => {
128
+ const handleFocus = (event: React.FocusEvent<HTMLInputElement>) => {
126
129
  const target = event.target
127
130
 
128
131
  if (target instanceof HTMLInputElement) {
@@ -163,12 +166,12 @@ const OTPInput = ({
163
166
  <div className={styles.separator} key={index}>{input}</div>
164
167
  ) : (
165
168
  <Input
169
+ {...rest}
166
170
  key={index}
167
171
  id={`${name}-${index}`}
168
172
  className={styles.input}
169
173
  type="text"
170
174
  maxLength={1}
171
- disabled={disabled}
172
175
  inputMode="numeric"
173
176
  autoComplete="one-time-code"
174
177
  data-index={input}
@@ -178,7 +181,6 @@ const OTPInput = ({
178
181
  onFocus={handleFocus}
179
182
  onInput={handleInput}
180
183
  onPaste={handlePaste}
181
- {...rest}
182
184
  />
183
185
  )
184
186
  )}
@@ -1,11 +1,9 @@
1
- export type OTPInputProps = {
1
+ export type OTPInputProps<T extends object = object> = {
2
2
  name?: string
3
- disabled?: boolean
4
3
  length?: number
5
4
  groupLength?: number
6
5
  separator?: string
7
6
  label?: string
8
7
  subText?: string
9
8
  className?: string
10
- [key: string]: any
11
- }
9
+ } & T
@@ -8,7 +8,7 @@ import ChevronRight from '../../icons/chevron-right.svg?raw'
8
8
 
9
9
  import styles from './pagination.module.scss'
10
10
 
11
- interface Props extends PaginationProps {}
11
+ export type Props = PaginationProps
12
12
 
13
13
  const {
14
14
  type,
@@ -1,5 +1,5 @@
1
1
  <script lang="ts">
2
- import type { SveltePaginationProps } from './pagination'
2
+ import type { PaginationEventType, PaginationProps } from './pagination'
3
3
 
4
4
  import Button from '../Button/Button.svelte'
5
5
 
@@ -10,6 +10,10 @@
10
10
 
11
11
  import styles from './pagination.module.scss'
12
12
 
13
+ export type Props = PaginationProps & {
14
+ onChange?: (event: PaginationEventType) => void
15
+ }
16
+
13
17
  const {
14
18
  type,
15
19
  showChevrons,
@@ -26,7 +30,7 @@
26
30
  currentPage,
27
31
  onChange,
28
32
  className
29
- }: SveltePaginationProps = $props()
33
+ }: Props = $props()
30
34
 
31
35
  const classes = $derived(classNames([
32
36
  styles.pagination,
@@ -1,5 +1,5 @@
1
1
  import React, { useEffect, useState } from 'react'
2
- import type { ReactPaginationProps } from './pagination'
2
+ import type { PaginationEventType, PaginationProps } from './pagination'
3
3
 
4
4
  import Button from '../Button/Button.tsx'
5
5
 
@@ -10,6 +10,10 @@ import ChevronRight from '../../icons/chevron-right.svg?raw'
10
10
 
11
11
  import styles from './pagination.module.scss'
12
12
 
13
+ export type Props = PaginationProps & {
14
+ onChange?: (event: PaginationEventType) => void
15
+ }
16
+
13
17
  const Pagination = ({
14
18
  type,
15
19
  showChevrons,
@@ -27,7 +31,7 @@ const Pagination = ({
27
31
  onChange,
28
32
  className
29
33
  // eslint-disable-next-line complexity
30
- }: ReactPaginationProps) => {
34
+ }: Props) => {
31
35
  const [calculatedCurrentPage, setCalculatedCurrentPage] = useState(
32
36
  currentPage
33
37
  || (pages?.findIndex(page => page.active) || -1) + 1
@@ -26,11 +26,3 @@ export type PaginationProps = {
26
26
  link?: string
27
27
  }[]
28
28
  }
29
-
30
- export type SveltePaginationProps = {
31
- onChange?: (event: PaginationEventType) => void
32
- } & PaginationProps
33
-
34
- export type ReactPaginationProps = {
35
- onChange?: (event: PaginationEventType) => void
36
- } & PaginationProps
@@ -1,12 +1,12 @@
1
1
  ---
2
+ import type { HTMLAttributes } from 'astro/types'
2
3
  import type { PopoverProps } from './popover'
3
4
 
4
5
  import styles from './popover.module.scss'
5
6
 
6
- interface Props extends PopoverProps {}
7
+ export type Props = PopoverProps<HTMLAttributes<'dialog'>>
7
8
 
8
9
  const {
9
- id,
10
10
  className,
11
11
  transparent,
12
12
  ...rest
@@ -19,10 +19,6 @@ const classes = [
19
19
  ]
20
20
  ---
21
21
 
22
- <dialog
23
- class:list={classes}
24
- id={id}
25
- {...rest}
26
- >
22
+ <dialog {...rest} class:list={classes}>
27
23
  <slot />
28
24
  </dialog>
@@ -1,17 +1,22 @@
1
1
  <script lang="ts">
2
- import type { SveltePopoverProps } from './popover'
2
+ import type { Snippet } from 'svelte'
3
+ import type { HTMLDialogAttributes } from 'svelte/elements'
4
+ import type { PopoverProps } from './popover'
3
5
 
4
6
  import { classNames } from '../../utils/classNames'
5
7
 
6
8
  import styles from './popover.module.scss'
7
9
 
10
+ export type Props = PopoverProps<HTMLDialogAttributes> & {
11
+ children: Snippet
12
+ }
13
+
8
14
  const {
9
- id,
10
15
  className,
11
16
  transparent,
12
17
  children,
13
18
  ...rest
14
- }: SveltePopoverProps = $props()
19
+ }: Props = $props()
15
20
 
16
21
  const classes = $derived(classNames([
17
22
  styles.popover,
@@ -20,10 +25,6 @@
20
25
  ]))
21
26
  </script>
22
27
 
23
- <dialog
24
- class={classes}
25
- id={id}
26
- {...rest}
27
- >
28
+ <dialog {...rest} class={classes}>
28
29
  {@render children?.()}
29
30
  </dialog>
@@ -1,11 +1,16 @@
1
1
  import React, { useEffect,useState } from 'react'
2
2
  import { createPortal } from 'react-dom'
3
- import type { ReactPopoverProps } from './popover'
3
+ import type { PopoverProps } from './popover'
4
4
 
5
5
  import { classNames } from '../../utils/classNames'
6
6
 
7
7
  import styles from './popover.module.scss'
8
8
 
9
+ export type Props = PopoverProps<React.DialogHTMLAttributes<HTMLDialogElement>> & {
10
+ isInteractive?: boolean
11
+ children?: React.ReactNode
12
+ }
13
+
9
14
  const Popover = ({
10
15
  id,
11
16
  className,
@@ -13,7 +18,7 @@ const Popover = ({
13
18
  isInteractive = false,
14
19
  children,
15
20
  ...rest
16
- }: ReactPopoverProps) => {
21
+ }: Props) => {
17
22
  const [isMounted, setIsMounted] = useState(false)
18
23
 
19
24
  const classes = classNames([
@@ -32,11 +37,7 @@ const Popover = ({
32
37
 
33
38
  if (isInteractive) {
34
39
  return createPortal(
35
- <dialog
36
- className={classes}
37
- id={id}
38
- {...rest}
39
- >
40
+ <dialog {...rest} className={classes}>
40
41
  {children}
41
42
  </dialog>,
42
43
  document.body
@@ -44,11 +45,7 @@ const Popover = ({
44
45
  }
45
46
 
46
47
  return (
47
- <dialog
48
- className={classes}
49
- id={id}
50
- {...rest}
51
- >
48
+ <dialog {...rest} className={classes}>
52
49
  {children}
53
50
  </dialog>
54
51
  )
@@ -1,17 +1,4 @@
1
- import type { Snippet } from 'svelte'
2
-
3
- export type PopoverProps = {
4
- id?: string
1
+ export type PopoverProps<T extends object = object> = {
5
2
  className?: string
6
3
  transparent?: boolean
7
- [key: string]: any
8
- }
9
-
10
- export type SveltePopoverProps = {
11
- children: Snippet
12
- } & PopoverProps
13
-
14
- export type ReactPopoverProps = {
15
- isInteractive?: boolean
16
- children?: React.ReactNode
17
- } & PopoverProps
4
+ } & T
@@ -5,7 +5,7 @@ import { classNames } from '../../utils/classNames'
5
5
 
6
6
  import styles from './progress.module.scss'
7
7
 
8
- interface Props extends ProgressProps {}
8
+ export type Props = ProgressProps
9
9
 
10
10
  const {
11
11
  value,
@@ -4,6 +4,8 @@
4
4
  import { classNames } from '../../utils/classNames'
5
5
 
6
6
  import styles from './progress.module.scss'
7
+
8
+ export type Props = ProgressProps
7
9
 
8
10
  const {
9
11
  value,
@@ -17,7 +19,7 @@
17
19
  stripeDark,
18
20
  indeterminate,
19
21
  className
20
- }: ProgressProps = $props()
22
+ }: Props = $props()
21
23
 
22
24
  const classes = $derived(classNames([
23
25
  styles['w-progress'],
@@ -4,6 +4,8 @@ import type { ProgressProps } from './progress'
4
4
  import { classNames } from '../../utils/classNames'
5
5
 
6
6
  import styles from './progress.module.scss'
7
+
8
+ export type Props = ProgressProps
7
9
 
8
10
  const Progress = ({
9
11
  value,
@@ -17,7 +19,7 @@ const Progress = ({
17
19
  stripeDark,
18
20
  indeterminate,
19
21
  className
20
- }: ProgressProps) => {
22
+ }: Props) => {
21
23
  const classes = classNames([
22
24
  styles['w-progress'],
23
25
  size && styles[size],
@@ -1,14 +1,14 @@
1
1
  ---
2
+ import type { HTMLAttributes } from 'astro/types'
2
3
  import type { RadioProps } from './radio'
3
4
 
4
5
  import ConditionalWrapper from '../ConditionalWrapper/ConditionalWrapper.astro'
5
6
 
6
7
  import styles from './radio.module.scss'
7
8
 
8
- interface Props extends RadioProps {}
9
+ export type Props = RadioProps<HTMLAttributes<'input'>>
9
10
 
10
11
  const {
11
- name,
12
12
  items,
13
13
  color,
14
14
  inline,
@@ -38,13 +38,12 @@ const style = color
38
38
  children
39
39
  </div>
40
40
  <input
41
+ {...rest}
41
42
  type="radio"
42
- name={name}
43
43
  value={item.value}
44
44
  checked={item.selected}
45
45
  disabled={item.disabled}
46
46
  required={item.required}
47
- {...rest}
48
47
  />
49
48
  <span class={styles.icon} />
50
49
  <span class={styles.label}>
@@ -1,5 +1,6 @@
1
1
  <script lang="ts">
2
- import type { SvelteRadioProps } from './radio'
2
+ import type { HTMLInputAttributes } from 'svelte/elements'
3
+ import type { RadioProps } from './radio'
3
4
 
4
5
  import ConditionalWrapper from '../ConditionalWrapper/ConditionalWrapper.svelte'
5
6
 
@@ -7,15 +8,20 @@
7
8
 
8
9
  import styles from './radio.module.scss'
9
10
 
11
+ import type { InputTarget } from '../Input/input'
12
+
13
+ export type Props = RadioProps<HTMLInputAttributes> & {
14
+ onChange?: (event: Event & InputTarget) => void
15
+ }
16
+
10
17
  const {
11
- name,
12
18
  items,
13
19
  color,
14
20
  inline,
15
21
  className,
16
22
  onChange,
17
23
  ...rest
18
- }: SvelteRadioProps = $props()
24
+ }: Props = $props()
19
25
 
20
26
  const classes = $derived(classNames([
21
27
  styles.radio,
@@ -42,14 +48,13 @@
42
48
  class={styles.wrapper}
43
49
  >
44
50
  <input
51
+ {...rest}
45
52
  type="radio"
46
- name={name}
47
53
  value={item.value}
48
54
  checked={item.selected}
49
55
  disabled={item.disabled}
50
56
  required={item.required}
51
57
  onchange={onChange}
52
- {...rest}
53
58
  />
54
59
  <span class={styles.icon}></span>
55
60
  <span class={styles.label}>
@@ -1,5 +1,5 @@
1
1
  import React from 'react'
2
- import type { ReactRadioProps } from './radio'
2
+ import type { RadioProps } from './radio'
3
3
 
4
4
  import ConditionalWrapper from '../ConditionalWrapper/ConditionalWrapper.tsx'
5
5
 
@@ -7,15 +7,18 @@ import { classNames } from '../../utils/classNames'
7
7
 
8
8
  import styles from './radio.module.scss'
9
9
 
10
+ export type Props = RadioProps<React.InputHTMLAttributes<HTMLInputElement>> & {
11
+ onChange?: (event: React.ChangeEvent<HTMLInputElement>) => void
12
+ }
13
+
10
14
  const Radio = ({
11
- name,
12
15
  items,
13
16
  color,
14
17
  inline,
15
18
  className,
16
19
  onChange,
17
20
  ...rest
18
- }: ReactRadioProps) => {
21
+ }: Props) => {
19
22
  const classes = classNames([
20
23
  styles.radio,
21
24
  inline && styles.inline,
@@ -42,14 +45,13 @@ const Radio = ({
42
45
  )}
43
46
  >
44
47
  <input
48
+ {...rest}
45
49
  type="radio"
46
- name={name}
47
50
  value={item.value}
48
51
  defaultChecked={item.selected}
49
52
  disabled={item.disabled}
50
53
  required={item.required}
51
54
  onChange={onChange}
52
- {...rest}
53
55
  />
54
56
  <span className={styles.icon} />
55
57
  <span
@@ -1,6 +1,4 @@
1
- import type { InputTarget } from '../Input/input'
2
-
3
- export type RadioProps = {
1
+ export type RadioProps<T extends object = object> = {
4
2
  items: {
5
3
  label: string
6
4
  value: string
@@ -9,17 +7,7 @@ export type RadioProps = {
9
7
  disabled?: boolean
10
8
  required?: boolean
11
9
  }[]
12
- name: string
13
10
  color?: string
14
11
  inline?: boolean
15
12
  className?: string
16
- [key: string]: any
17
- }
18
-
19
- export type SvelteRadioProps = {
20
- onChange?: (event: Event & InputTarget) => void
21
- } & RadioProps
22
-
23
- export type ReactRadioProps = {
24
- onChange?: (event: React.ChangeEvent<HTMLInputElement>) => void
25
- } & RadioProps
13
+ } & T
@@ -9,7 +9,7 @@ import { interpolate } from '../../utils/interpolate'
9
9
 
10
10
  import styles from './rangeslider.module.scss'
11
11
 
12
- interface Props extends RangeSliderProps {}
12
+ export type Props = RangeSliderProps
13
13
 
14
14
  const {
15
15
  min = 0,
@@ -1,5 +1,5 @@
1
1
  <script lang="ts">
2
- import type { SvelteRangeSliderProps } from './rangeslider'
2
+ import type { RangeSliderEventType, RangeSliderProps } from './rangeslider'
3
3
 
4
4
  import ConditionalWrapper from '../ConditionalWrapper/ConditionalWrapper.svelte'
5
5
 
@@ -8,6 +8,10 @@
8
8
 
9
9
  import styles from './rangeslider.module.scss'
10
10
 
11
+ export type Props = RangeSliderProps & {
12
+ onChange?: (event: RangeSliderEventType) => void
13
+ }
14
+
11
15
  const {
12
16
  min = 0,
13
17
  max = 100,
@@ -30,7 +34,7 @@
30
34
  className,
31
35
  onChange,
32
36
  ...rest
33
- }: SvelteRangeSliderProps = $props()
37
+ }: Props = $props()
34
38
 
35
39
  const styleVariables = $derived(classNames([
36
40
  color && `--w-range-slider-color: ${color};`,
@@ -1,6 +1,6 @@
1
1
  /* eslint-disable complexity */
2
2
  import React, { useEffect, useRef, useState } from 'react'
3
- import type { ReactRangeSliderProps } from './rangeslider'
3
+ import type { RangeSliderEventType, RangeSliderProps } from './rangeslider'
4
4
 
5
5
  import ConditionalWrapper from '../ConditionalWrapper/ConditionalWrapper.tsx'
6
6
 
@@ -9,6 +9,10 @@ import { interpolate } from '../../utils/interpolate'
9
9
 
10
10
  import styles from './rangeslider.module.scss'
11
11
 
12
+ export type Props = RangeSliderProps & {
13
+ onChange?: (event: RangeSliderEventType) => void
14
+ }
15
+
12
16
  const RangeSlider = ({
13
17
  min = 0,
14
18
  max = 100,
@@ -31,7 +35,7 @@ const RangeSlider = ({
31
35
  className,
32
36
  onChange,
33
37
  ...rest
34
- }: ReactRangeSliderProps) => {
38
+ }: Props) => {
35
39
  const [minValue, setMinValue] = useState(selectedMin || min)
36
40
  const [maxValue, setMaxValue] = useState(selectedMax || max)
37
41
  const [dynamicMinLabel, setDynamicMinLabel] = useState(minLabel)
@@ -55,7 +59,7 @@ const RangeSlider = ({
55
59
  }
56
60
  }
57
61
 
58
- const handleInput = (event: React.FormEvent) => {
62
+ const handleInput = (event: React.InputEvent<HTMLInputElement>) => {
59
63
  const target = event.target
60
64
 
61
65
  if (!(target instanceof HTMLInputElement)) {
@@ -28,12 +28,3 @@ export type RangeSliderProps = {
28
28
  updateLabels?: boolean
29
29
  className?: string
30
30
  }
31
-
32
- export type SvelteRangeSliderProps = {
33
- onChange?: (event: RangeSliderEventType) => void
34
- } & RangeSliderProps
35
-
36
- export type ReactRangeSliderProps = {
37
- onChange?: (event: RangeSliderEventType) => void
38
- } & RangeSliderProps
39
-