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,10 +1,14 @@
1
- import React, { useRef,useState } from 'react'
2
- import type { ReactTabsProps } from './tabs'
1
+ import React, { useEffect, useRef, useState } from 'react'
2
+ import type { TabsProps } from './tabs'
3
3
 
4
4
  import { classNames } from '../../utils/classNames'
5
5
 
6
6
  import styles from './tabs.module.scss'
7
7
 
8
+ export type Props = TabsProps & {
9
+ children: React.ReactNode
10
+ }
11
+
8
12
  const Tabs = ({
9
13
  items,
10
14
  theme,
@@ -12,9 +16,12 @@ const Tabs = ({
12
16
  even,
13
17
  className,
14
18
  children
15
- }: ReactTabsProps) => {
19
+ }: Props) => {
16
20
  const tabContainer = useRef<HTMLDivElement>(null)
21
+ const usedInAstro = useRef(false)
22
+
17
23
  const [active, setActive] = useState('')
24
+ const hasActive = items.some(item => item.active)
18
25
 
19
26
  const classes = classNames([
20
27
  styles.tabs,
@@ -24,21 +31,25 @@ const Tabs = ({
24
31
  className
25
32
  ])
26
33
 
27
- const setTab = (tab: string) => {
28
- const tabs = tabContainer.current!.querySelectorAll('[data-tab]')
34
+ const setTab = (tab: string, index: number) => {
35
+ const contentChildren = usedInAstro.current
36
+ ? Array.from(tabContainer.current!.children[0].children) as HTMLElement[]
37
+ : Array.from(tabContainer.current!.children) as HTMLElement[]
29
38
 
30
- Array.from(tabs).forEach((item: any) => {
31
- item.dataset.active = false
39
+ const hasExplicitTabs = contentChildren.some((el: HTMLElement) => el.dataset.tab)
32
40
 
33
- if (item.dataset.tab === tab) {
34
- item.dataset.active = true
41
+ contentChildren.forEach((item: HTMLElement, i: number) => {
42
+ if (hasExplicitTabs) {
43
+ item.dataset.active = item.dataset.tab === tab ? 'true' : 'false'
44
+ } else {
45
+ item.dataset.active = i === index ? 'true' : 'false'
35
46
  }
36
47
  })
37
48
 
38
49
  setActive(tab)
39
50
  }
40
51
 
41
- const isActive = (item: ReactTabsProps['items'][0]) => {
52
+ const isActive = (item: Props['items'][0]) => {
42
53
  if (!active) {
43
54
  return item.active ? 'true' : undefined
44
55
  }
@@ -46,6 +57,26 @@ const Tabs = ({
46
57
  return active === item.value ? 'true' : undefined
47
58
  }
48
59
 
60
+ if (!hasActive) {
61
+ items[0].active = true
62
+ }
63
+
64
+ useEffect(() => {
65
+ usedInAstro.current = tabContainer.current?.children[0]?.nodeName === 'ASTRO-SLOT'
66
+
67
+ const contentChildren = usedInAstro.current
68
+ ? Array.from(tabContainer.current!.children[0].children) as HTMLElement[]
69
+ : Array.from(tabContainer.current!.children) as HTMLElement[]
70
+
71
+ if (!contentChildren.some(element => element.dataset.active === 'true')) {
72
+ const index = items.findIndex(item => item.active)
73
+
74
+ if (contentChildren[index]) {
75
+ contentChildren[index].dataset.active = 'true'
76
+ }
77
+ }
78
+ }, [])
79
+
49
80
  return (
50
81
  <section className={classes}>
51
82
  <div className={styles.wrapper}>
@@ -55,7 +86,7 @@ const Tabs = ({
55
86
  key={index}
56
87
  disabled={item.disabled}
57
88
  dangerouslySetInnerHTML={{ __html: item.label }}
58
- onClick={() => setTab(item.value)}
89
+ onClick={() => setTab(item.value, index)}
59
90
  data-active={isActive(item)}
60
91
  />
61
92
  ))}
@@ -110,13 +110,14 @@
110
110
 
111
111
  .content {
112
112
  @include spacing(mt-default);
113
- }
114
-
115
- [data-tab] {
116
- @include visibility(none);
117
113
 
118
- &[data-active="true"] {
119
- @include visibility(block);
114
+ & > *:not(astro-slot),
115
+ & > astro-slot > * {
116
+ @include visibility(none);
117
+
118
+ &[data-active="true"] {
119
+ @include visibility(block);
120
+ }
120
121
  }
121
122
  }
122
123
  }
@@ -1,5 +1,3 @@
1
- import type { Snippet } from 'svelte'
2
-
3
1
  export type TabsProps = {
4
2
  items: {
5
3
  label: string
@@ -12,11 +10,3 @@ export type TabsProps = {
12
10
  even?: boolean
13
11
  className?: string
14
12
  }
15
-
16
- export type SvelteTabsProps = {
17
- children: Snippet
18
- } & TabsProps
19
-
20
- export type ReactTabsProps = {
21
- children: React.ReactNode
22
- } & TabsProps
@@ -1,18 +1,17 @@
1
1
  ---
2
+ import type { HTMLAttributes } from 'astro/types'
2
3
  import type { TextareaProps } from './textarea'
3
4
 
4
5
  import ConditionalWrapper from '../ConditionalWrapper/ConditionalWrapper.astro'
5
6
 
6
7
  import styles from './textarea.module.scss'
7
8
 
8
- interface Props extends TextareaProps {}
9
+ export type Props = TextareaProps<HTMLAttributes<'textarea'>>
9
10
 
10
11
  const {
11
12
  label,
12
- placeholder,
13
13
  subText,
14
14
  value = '',
15
- disabled,
16
15
  className,
17
16
  ...rest
18
17
  } = Astro.props
@@ -39,9 +38,7 @@ const useLabel = !!(label || subText)
39
38
  </label>
40
39
 
41
40
  <textarea
42
- placeholder={placeholder}
43
- disabled={disabled}
44
- class:list={classes}
45
41
  {...rest}
42
+ class:list={classes}
46
43
  >{value}</textarea>
47
44
  </ConditionalWrapper>
@@ -1,5 +1,6 @@
1
1
  <script lang="ts">
2
- import type { SvelteTextareaProps } from './textarea'
2
+ import type { HTMLTextareaAttributes } from 'svelte/elements'
3
+ import type { TextareaProps, TextareaTarget } from './textarea'
3
4
 
4
5
  import ConditionalWrapper from '../ConditionalWrapper/ConditionalWrapper.svelte'
5
6
 
@@ -7,18 +8,22 @@
7
8
 
8
9
  import styles from './textarea.module.scss'
9
10
 
11
+ export type Props = TextareaProps<HTMLTextareaAttributes> & {
12
+ onInput?: (event: Event & TextareaTarget) => void
13
+ onChange?: (event: Event & TextareaTarget) => void
14
+ onKeyUp?: (event: KeyboardEvent & TextareaTarget) => void
15
+ }
16
+
10
17
  const {
11
18
  label,
12
- placeholder,
13
19
  subText,
14
20
  value = '',
15
- disabled,
16
21
  className,
17
22
  onChange,
18
23
  onKeyUp,
19
24
  onInput,
20
25
  ...rest
21
- }: SvelteTextareaProps = $props()
26
+ }: Props = $props()
22
27
 
23
28
  const classes = $derived(classNames([
24
29
  styles.textarea,
@@ -37,13 +42,11 @@
37
42
  <div class={styles.label}>{label}</div>
38
43
  {/if}
39
44
  <textarea
40
- placeholder={placeholder}
41
- disabled={disabled}
45
+ {...rest}
42
46
  class={classes}
43
47
  oninput={onInput}
44
48
  onchange={onChange}
45
49
  onkeyup={onKeyUp}
46
- {...rest}
47
50
  >{value}</textarea>
48
51
  {#if subText}
49
52
  <div class={styles.subtext}>
@@ -1,5 +1,5 @@
1
1
  import React from 'react'
2
- import type { ReactTextareaProps } from './textarea'
2
+ import type { TextareaProps } from './textarea'
3
3
 
4
4
  import ConditionalWrapper from '../ConditionalWrapper/ConditionalWrapper.tsx'
5
5
 
@@ -7,15 +7,19 @@ import { classNames } from '../../utils/classNames'
7
7
 
8
8
  import styles from './textarea.module.scss'
9
9
 
10
+ export type Props = TextareaProps<React.TextareaHTMLAttributes<HTMLTextAreaElement>> & {
11
+ onInput?: (event: React.InputEvent<HTMLTextAreaElement>) => void
12
+ onChange?: (event: React.ChangeEvent<HTMLTextAreaElement>) => void
13
+ onKeyUp?: (event: React.KeyboardEvent<HTMLTextAreaElement>) => void
14
+ }
15
+
10
16
  const Textarea = ({
11
17
  label,
12
- placeholder,
13
18
  subText,
14
19
  value = '',
15
- disabled,
16
20
  className,
17
21
  ...rest
18
- }: ReactTextareaProps) => {
22
+ }: Props) => {
19
23
  const classes = classNames([
20
24
  styles.textarea,
21
25
  className
@@ -39,11 +43,9 @@ const Textarea = ({
39
43
  </label>
40
44
  )}>
41
45
  <textarea
42
- placeholder={placeholder}
43
- disabled={disabled}
46
+ {...rest}
44
47
  className={classes}
45
48
  defaultValue={value}
46
- {...rest}
47
49
  />
48
50
  </ConditionalWrapper>
49
51
  )
@@ -2,24 +2,9 @@ export type TextareaTarget = {
2
2
  currentTarget: HTMLTextAreaElement
3
3
  }
4
4
 
5
- export type TextareaProps = {
5
+ export type TextareaProps<T extends object = object> = {
6
6
  label?: string
7
- placeholder?: string
8
7
  subText?: string
9
8
  value?: string
10
- disabled?: boolean
11
9
  className?: string
12
- [key: string]: any
13
- }
14
-
15
- export type SvelteTextareaProps = {
16
- onInput?: (event: Event & TextareaTarget) => void
17
- onChange?: (event: Event & TextareaTarget) => void
18
- onKeyUp?: (event: KeyboardEvent & TextareaTarget) => void
19
- } & TextareaProps
20
-
21
- export type ReactTextareaProps = {
22
- onInput?: (event: React.InputEvent<HTMLTextAreaElement>) => void
23
- onChange?: (event: React.ChangeEvent<HTMLTextAreaElement>) => void
24
- onKeyUp?: (event: React.KeyboardEvent<HTMLTextAreaElement>) => void
25
- } & TextareaProps
10
+ } & T
@@ -3,7 +3,7 @@ import type { ThemeSwitcherProps } from './themeswitcher'
3
3
 
4
4
  import styles from './themeswitcher.module.scss'
5
5
 
6
- interface Props extends ThemeSwitcherProps {}
6
+ export type Props = ThemeSwitcherProps
7
7
 
8
8
  const {
9
9
  themes,
@@ -1,6 +1,6 @@
1
1
  <script lang="ts">
2
- import { onMount } from 'svelte'
3
- import type { SvelteThemeSwitcherProps } from './themeswitcher'
2
+ import { onMount, type Snippet } from 'svelte'
3
+ import type { ThemeSwitcherProps } from './themeswitcher'
4
4
 
5
5
  import { classNames } from '../../utils/classNames'
6
6
  import { getCookie, setCookie } from '../../utils/cookies'
@@ -8,6 +8,12 @@
8
8
 
9
9
  import styles from './themeswitcher.module.scss'
10
10
 
11
+ export type Props = ThemeSwitcherProps & {
12
+ primaryIcon?: Snippet
13
+ secondaryIcon?: Snippet
14
+ children?: Snippet
15
+ }
16
+
11
17
  const {
12
18
  themes,
13
19
  toggle,
@@ -15,7 +21,7 @@
15
21
  primaryIcon,
16
22
  secondaryIcon,
17
23
  className
18
- }: SvelteThemeSwitcherProps = $props()
24
+ }: Props = $props()
19
25
 
20
26
  let currentTheme = $state('')
21
27
  let toggled = false
@@ -1,5 +1,5 @@
1
1
  import React, { useEffect, useState } from 'react'
2
- import type { ReactThemeSwitcherProps } from './themeswitcher'
2
+ import type { ThemeSwitcherProps } from './themeswitcher'
3
3
 
4
4
  import { classNames } from '../../utils/classNames'
5
5
  import { getCookie, setCookie } from '../../utils/cookies'
@@ -7,6 +7,11 @@ import { dispatch, listen } from '../../utils/event'
7
7
 
8
8
  import styles from './themeswitcher.module.scss'
9
9
 
10
+ export type Props = ThemeSwitcherProps & {
11
+ primaryIcon?: React.ReactNode
12
+ secondaryIcon?: React.ReactNode
13
+ }
14
+
10
15
  const ThemeSwitcher = ({
11
16
  themes,
12
17
  toggle,
@@ -14,7 +19,7 @@ const ThemeSwitcher = ({
14
19
  primaryIcon,
15
20
  secondaryIcon,
16
21
  className
17
- }: ReactThemeSwitcherProps) => {
22
+ }: Props) => {
18
23
  const [currentTheme, setCurrentTheme] = useState('')
19
24
  const [toggled, setToggled] = useState(false)
20
25
 
@@ -1,5 +1,3 @@
1
- import type { Snippet } from 'svelte'
2
-
3
1
  export type ThemeSwitcherProps = {
4
2
  themes: {
5
3
  [key: string]: string
@@ -8,14 +6,3 @@ export type ThemeSwitcherProps = {
8
6
  size?: number
9
7
  className?: string
10
8
  }
11
-
12
- export type SvelteThemeSwitcherProps = {
13
- primaryIcon?: Snippet
14
- secondaryIcon?: Snippet
15
- children?: Snippet
16
- } & ThemeSwitcherProps
17
-
18
- export type ReactThemeSwitcherProps = {
19
- primaryIcon?: React.ReactNode
20
- secondaryIcon?: React.ReactNode
21
- } & ThemeSwitcherProps
@@ -5,7 +5,7 @@ import { classNames } from '../../utils/classNames'
5
5
 
6
6
  import styles from './timeline.module.scss'
7
7
 
8
- interface Props extends TimelineProps {}
8
+ export type Props = TimelineProps
9
9
 
10
10
  const {
11
11
  theme,
@@ -1,10 +1,15 @@
1
1
  <script lang="ts">
2
- import type { SvelteTimelineProps } from './timeline'
2
+ import type { Snippet } from 'svelte'
3
+ import type { TimelineProps } from './timeline'
3
4
 
4
5
  import { classNames } from '../../utils/classNames'
5
6
 
6
7
  import styles from './timeline.module.scss'
7
8
 
9
+ export type Props = TimelineProps & {
10
+ children: Snippet
11
+ }
12
+
8
13
  const {
9
14
  theme,
10
15
  counter,
@@ -14,7 +19,7 @@
14
19
  textColor,
15
20
  className,
16
21
  children
17
- }: SvelteTimelineProps = $props()
22
+ }: Props = $props()
18
23
 
19
24
  const classes = $derived(classNames([
20
25
  styles.timeline,
@@ -1,10 +1,14 @@
1
1
  import React from 'react'
2
- import type { ReactTimelineProps } from './timeline'
2
+ import type { TimelineProps } from './timeline'
3
3
 
4
4
  import { classNames } from '../../utils/classNames'
5
5
 
6
6
  import styles from './timeline.module.scss'
7
7
 
8
+ export type Props = TimelineProps & {
9
+ children: React.ReactNode
10
+ }
11
+
8
12
  const Timeline = ({
9
13
  theme,
10
14
  counter,
@@ -14,7 +18,7 @@ const Timeline = ({
14
18
  textColor,
15
19
  className,
16
20
  children
17
- }: ReactTimelineProps) => {
21
+ }: Props) => {
18
22
  const classes = classNames([
19
23
  styles.timeline,
20
24
  theme && theme.split(' ').map(style => styles[style]),
@@ -1,5 +1,3 @@
1
- import type { Snippet } from 'svelte'
2
-
3
1
  export type TimelineProps = {
4
2
  theme?: 'fill' | 'stroke' | 'stroke fill' | 'icons'
5
3
  alternate?: boolean
@@ -56,11 +54,3 @@ export type TimelineProps = {
56
54
  | 'upper-armenian'
57
55
  | 'upper-roman'
58
56
  }
59
-
60
- export type SvelteTimelineProps = {
61
- children: Snippet
62
- } & TimelineProps
63
-
64
- export type ReactTimelineProps = {
65
- children: React.ReactNode
66
- } & TimelineProps
@@ -5,7 +5,7 @@ import Icon from '../Icon/Icon.astro'
5
5
 
6
6
  import styles from './timelineitem.module.scss'
7
7
 
8
- interface Props extends TimelineItemProps {}
8
+ export type Props = TimelineItemProps
9
9
 
10
10
  const {
11
11
  title,
@@ -1,17 +1,22 @@
1
1
  <script lang="ts">
2
- import type { SvelteTimelineItemProps } from './timelineitem'
2
+ import type { Snippet } from 'svelte'
3
+ import type { TimelineItemProps } from './timelineitem'
3
4
 
4
5
  import { classNames } from '../../utils/classNames'
5
6
 
6
7
  import styles from './timelineitem.module.scss'
7
8
 
9
+ export type Props = TimelineItemProps & {
10
+ children: Snippet
11
+ }
12
+
8
13
  const {
9
14
  title,
10
15
  titleTag = 'span',
11
16
  icon,
12
17
  className,
13
18
  children
14
- }: SvelteTimelineItemProps = $props()
19
+ }: Props = $props()
15
20
 
16
21
  const classes = $derived(classNames([
17
22
  styles.item,
@@ -1,17 +1,22 @@
1
- import React from 'react'
2
- import type { ReactTimelineItemProps } from './timelineitem'
1
+ import React, { type JSX } from 'react'
2
+ import type { TimelineItemProps } from './timelineitem'
3
3
 
4
4
  import { classNames } from '../../utils/classNames'
5
5
 
6
6
  import styles from './timelineitem.module.scss'
7
7
 
8
+ export type Props = Omit<TimelineItemProps, 'titleTag'> & {
9
+ TitleTag?: keyof JSX.IntrinsicElements
10
+ children: React.ReactNode
11
+ }
12
+
8
13
  const TimelineItem = ({
9
14
  title,
10
15
  TitleTag = 'span',
11
16
  icon,
12
17
  className,
13
18
  children
14
- }: ReactTimelineItemProps) => {
19
+ }: Props) => {
15
20
  const classes = classNames([
16
21
  styles.item,
17
22
  icon && styles['with-icon'],
@@ -1,6 +1,3 @@
1
- import type { JSX } from 'react'
2
- import type { Snippet } from 'svelte'
3
-
4
1
  import type { IconProps } from '../Icon/icon'
5
2
 
6
3
  export type TimelineItemProps = {
@@ -9,12 +6,3 @@ export type TimelineItemProps = {
9
6
  icon?: IconProps['type'] | string
10
7
  className?: string
11
8
  }
12
-
13
- export type SvelteTimelineItemProps = {
14
- children: Snippet
15
- } & TimelineItemProps
16
-
17
- export type ReactTimelineItemProps = {
18
- TitleTag?: keyof JSX.IntrinsicElements
19
- children: React.ReactNode
20
- } & Omit<TimelineItemProps, 'titleTag'>
@@ -1,4 +1,5 @@
1
1
  ---
2
+ import type { HTMLAttributes } from 'astro/types'
2
3
  import type { ToastProps } from './toast'
3
4
 
4
5
  import Alert from '../Alert/Alert.astro'
@@ -7,7 +8,7 @@ import { classNames } from '../../utils/classNames'
7
8
 
8
9
  import styles from './toast.module.scss'
9
10
 
10
- interface Props extends ToastProps {}
11
+ export type Props = ToastProps<HTMLAttributes<'section'>>
11
12
 
12
13
  const {
13
14
  position,
@@ -1,19 +1,21 @@
1
1
  <script lang="ts">
2
- import type { SvelteToastProps } from './toast'
2
+ import type { ToastProps } from './toast'
3
3
 
4
- import Alert from '../Alert/Alert.svelte'
4
+ import Alert, { type Props as AlertProps } from '../Alert/Alert.svelte'
5
5
 
6
6
  import { classNames } from '../../utils/classNames'
7
7
 
8
8
  import styles from './toast.module.scss'
9
9
 
10
+ export type Props = ToastProps<AlertProps>
11
+
10
12
  const {
11
13
  position,
12
14
  className,
13
15
  icon,
14
16
  children,
15
17
  ...rest
16
- }: SvelteToastProps = $props()
18
+ }: Props = $props()
17
19
 
18
20
  const classes = $derived(classNames([
19
21
  styles.toast,
@@ -1,19 +1,20 @@
1
- import React from 'react'
2
- import type { ReactToastProps } from './toast'
1
+ import type { ToastProps } from './toast'
3
2
 
4
- import Alert from '../Alert/Alert.tsx'
3
+ import Alert, { type Props as AlertProps } from '../Alert/Alert.tsx'
5
4
 
6
5
  import { classNames } from '../../utils/classNames'
7
6
 
8
7
  import styles from './toast.module.scss'
9
8
 
9
+ export type Props = ToastProps<React.HTMLAttributes<HTMLElement>> & AlertProps
10
+
10
11
  const Toast = ({
11
12
  icon,
12
13
  position,
13
14
  className,
14
15
  children,
15
16
  ...rest
16
- }: ReactToastProps) => {
17
+ }: Props) => {
17
18
  const classes = classNames([
18
19
  styles.toast,
19
20
  className
@@ -1,18 +1,10 @@
1
- import type {
2
- AlertProps,
3
- ReactAlertProps,
4
- SvelteAlertProps
5
- } from '../Alert/alert'
1
+ import type { AlertProps } from '../Alert/alert'
6
2
 
7
- export type ToastProps = {
3
+ export type ToastProps<T extends object = object> = {
8
4
  position?: 'bottom-left'
9
5
  | 'top-left'
10
6
  | 'top-right'
11
7
  | 'bottom-full'
12
8
  | 'top-full'
13
9
  | null
14
- [key: string]: any
15
- } & AlertProps
16
-
17
- export type SvelteToastProps = ToastProps & SvelteAlertProps
18
- export type ReactToastProps = ToastProps & ReactAlertProps
10
+ } & AlertProps<T>