sv5ui 2.0.0 → 2.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 (582) hide show
  1. package/README.md +122 -43
  2. package/dist/{Accordion → components/Accordion}/Accordion.svelte +79 -88
  3. package/dist/components/Alert/Alert.svelte +119 -0
  4. package/dist/components/Avatar/Avatar.svelte +86 -0
  5. package/dist/components/AvatarGroup/AvatarGroup.svelte +59 -0
  6. package/dist/components/Badge/Badge.svelte +69 -0
  7. package/dist/{Badge → components/Badge}/badge.types.d.ts +1 -1
  8. package/dist/{Banner → components/Banner}/Banner.svelte +73 -87
  9. package/dist/components/Breadcrumb/Breadcrumb.svelte +85 -0
  10. package/dist/components/Button/Button.svelte +149 -0
  11. package/dist/{Calendar → components/Calendar}/Calendar.svelte +139 -152
  12. package/dist/components/Card/Card.svelte +46 -0
  13. package/dist/components/Carousel/Carousel.svelte +254 -0
  14. package/dist/components/Checkbox/Checkbox.svelte +142 -0
  15. package/dist/{CheckboxGroup → components/CheckboxGroup}/CheckboxGroup.svelte +89 -109
  16. package/dist/components/Chip/Chip.svelte +43 -0
  17. package/dist/components/Collapsible/Collapsible.svelte +60 -0
  18. package/dist/{Collapsible → components/Collapsible}/CollapsibleTestWrapper.svelte +2 -5
  19. package/dist/{Collapsible → components/Collapsible}/collapsible.types.d.ts +1 -1
  20. package/dist/{Command → components/Command}/Command.svelte +69 -78
  21. package/dist/components/Command/CommandTestWrapper.svelte +7 -0
  22. package/dist/{Command → components/Command}/command.types.d.ts +4 -2
  23. package/dist/components/Command/index.d.ts +2 -0
  24. package/dist/components/Container/Container.svelte +13 -0
  25. package/dist/{ContextMenu → components/ContextMenu}/ContextMenu.svelte +94 -118
  26. package/dist/components/Drawer/Drawer.svelte +191 -0
  27. package/dist/components/Drawer/DrawerTriggerTestWrapper.svelte +9 -0
  28. package/dist/components/Drawer/DrawerTriggerTestWrapper.svelte.d.ts +18 -0
  29. package/dist/{Drawer → components/Drawer}/drawer.types.d.ts +13 -2
  30. package/dist/{DropdownMenu → components/DropdownMenu}/DropdownMenu.svelte +103 -128
  31. package/dist/components/DropdownMenu/DropdownMenuTriggerTestWrapper.svelte +9 -0
  32. package/dist/components/Editor/Editor.svelte +674 -0
  33. package/dist/components/Editor/EditorUrlPrompt.svelte +88 -0
  34. package/dist/{Editor → components/Editor}/SlashPopup.svelte +17 -22
  35. package/dist/{Editor → components/Editor}/SlashPopup.svelte.d.ts +2 -0
  36. package/dist/{Editor → components/Editor}/editor.extensions.d.ts +1 -1
  37. package/dist/{Editor → components/Editor}/editor.extensions.js +25 -16
  38. package/dist/{Editor → components/Editor}/editor.schemas.d.ts +1 -0
  39. package/dist/components/Editor/editor.schemas.js +27 -0
  40. package/dist/{Editor → components/Editor}/editor.slash.svelte.d.ts +0 -9
  41. package/dist/{Editor → components/Editor}/editor.slash.svelte.js +33 -7
  42. package/dist/{Editor → components/Editor}/editor.suggestion.js +23 -0
  43. package/dist/{Editor → components/Editor}/editor.toolbar.js +0 -8
  44. package/dist/{Editor → components/Editor}/editor.types.d.ts +20 -0
  45. package/dist/{Editor → components/Editor}/editor.variants.d.ts +0 -5
  46. package/dist/{Editor → components/Editor}/editor.variants.js +0 -15
  47. package/dist/{Editor → components/Editor}/index.d.ts +6 -4
  48. package/dist/{Editor → components/Editor}/index.js +6 -4
  49. package/dist/components/Empty/Empty.svelte +102 -0
  50. package/dist/components/FieldGroup/FieldGroup.svelte +41 -0
  51. package/dist/{FileUpload → components/FileUpload}/FileUpload.svelte +265 -314
  52. package/dist/components/Form/Form.svelte +146 -0
  53. package/dist/{Form → components/Form}/form.context.svelte.js +1 -1
  54. package/dist/{Form → components/Form}/form.variants.d.ts +1 -1
  55. package/dist/{Form → components/Form}/form.variants.js +1 -1
  56. package/dist/components/FormField/FormField.svelte +158 -0
  57. package/dist/components/Icon/Icon.svelte +31 -0
  58. package/dist/{Icon → components/Icon}/icon.types.d.ts +1 -1
  59. package/dist/components/Input/Input.svelte +168 -0
  60. package/dist/components/Input/index.d.ts +2 -0
  61. package/dist/{Input → components/Input}/input.types.d.ts +3 -3
  62. package/dist/components/Kbd/Kbd.svelte +36 -0
  63. package/dist/components/Link/Link.svelte +131 -0
  64. package/dist/{Modal → components/Modal}/Modal.svelte +98 -110
  65. package/dist/components/Modal/ModalTriggerTestWrapper.svelte +9 -0
  66. package/dist/components/Modal/ModalTriggerTestWrapper.svelte.d.ts +18 -0
  67. package/dist/{Modal → components/Modal}/modal.types.d.ts +13 -3
  68. package/dist/{Pagination → components/Pagination}/Pagination.svelte +79 -93
  69. package/dist/{Pagination → components/Pagination}/pagination.types.d.ts +1 -1
  70. package/dist/components/PinInput/PinInput.svelte +142 -0
  71. package/dist/components/Popover/Popover.svelte +111 -0
  72. package/dist/{Popover → components/Popover}/popover.types.d.ts +2 -0
  73. package/dist/components/Progress/Progress.svelte +117 -0
  74. package/dist/{RadioGroup → components/RadioGroup}/RadioGroup.svelte +84 -101
  75. package/dist/components/Select/Select.svelte +400 -0
  76. package/dist/{Select → components/Select}/select.types.d.ts +1 -1
  77. package/dist/components/SelectMenu/SelectMenu.svelte +544 -0
  78. package/dist/components/SelectMenu/SelectMenuFormFieldTestWrapper.svelte +8 -0
  79. package/dist/{SelectMenu → components/SelectMenu}/select-menu.types.d.ts +1 -1
  80. package/dist/components/Separator/Separator.svelte +67 -0
  81. package/dist/{Separator → components/Separator}/separator.types.d.ts +1 -1
  82. package/dist/components/Skeleton/Skeleton.svelte +31 -0
  83. package/dist/{Slideover → components/Slideover}/Slideover.svelte +98 -110
  84. package/dist/components/Slideover/SlideoverTriggerTestWrapper.svelte +9 -0
  85. package/dist/components/Slideover/SlideoverTriggerTestWrapper.svelte.d.ts +18 -0
  86. package/dist/{Slideover → components/Slideover}/slideover.types.d.ts +13 -3
  87. package/dist/components/Slider/Slider.svelte +111 -0
  88. package/dist/components/Stepper/Stepper.svelte +238 -0
  89. package/dist/components/Switch/Switch.svelte +126 -0
  90. package/dist/components/Table/Table.svelte +644 -0
  91. package/dist/{Table → components/Table}/table.utils.d.ts +7 -4
  92. package/dist/{Table → components/Table}/table.utils.js +26 -25
  93. package/dist/components/Tabs/Tabs.svelte +156 -0
  94. package/dist/{Tabs → components/Tabs}/tabs.types.d.ts +1 -1
  95. package/dist/components/Textarea/Textarea.svelte +174 -0
  96. package/dist/components/ThemeModeButton/ThemeModeButton.svelte +64 -0
  97. package/dist/components/Timeline/Timeline.svelte +114 -0
  98. package/dist/{Toast → components/Toast}/Toaster.svelte +18 -26
  99. package/dist/components/Tooltip/Tooltip.svelte +138 -0
  100. package/dist/components/Tooltip/TooltipTestWrapper.svelte +5 -0
  101. package/dist/{Tooltip → components/Tooltip}/tooltip.types.d.ts +2 -0
  102. package/dist/components/User/User.svelte +87 -0
  103. package/dist/hooks/index.d.ts +16 -14
  104. package/dist/hooks/index.js +16 -7
  105. package/dist/hooks/useClickOutside/index.d.ts +1 -0
  106. package/dist/hooks/useClickOutside/index.js +1 -0
  107. package/dist/hooks/{useClickOutside.svelte.js → useClickOutside/useClickOutside.svelte.js} +3 -6
  108. package/dist/hooks/useClipboard/index.d.ts +1 -0
  109. package/dist/hooks/useClipboard/index.js +1 -0
  110. package/dist/hooks/{useClipboard.svelte.d.ts → useClipboard/useClipboard.svelte.d.ts} +2 -1
  111. package/dist/hooks/useDebounce/index.d.ts +1 -0
  112. package/dist/hooks/useDebounce/index.js +1 -0
  113. package/dist/hooks/useDebouncedState/index.d.ts +1 -0
  114. package/dist/hooks/useDebouncedState/index.js +1 -0
  115. package/dist/hooks/useDebouncedState/useDebouncedState.svelte.d.ts +30 -0
  116. package/dist/hooks/useDebouncedState/useDebouncedState.svelte.js +45 -0
  117. package/dist/hooks/useEscapeKeydown/index.d.ts +1 -0
  118. package/dist/hooks/useEscapeKeydown/index.js +1 -0
  119. package/dist/hooks/{useEscapeKeydown.svelte.js → useEscapeKeydown/useEscapeKeydown.svelte.js} +3 -6
  120. package/dist/hooks/useEventListener/index.d.ts +1 -0
  121. package/dist/hooks/useEventListener/index.js +1 -0
  122. package/dist/hooks/useEventListener/useEventListener.svelte.d.ts +30 -0
  123. package/dist/hooks/useEventListener/useEventListener.svelte.js +16 -0
  124. package/dist/hooks/useFocusTrap/index.d.ts +1 -0
  125. package/dist/hooks/useFocusTrap/index.js +1 -0
  126. package/dist/hooks/useFocusTrap/useFocusTrap.svelte.d.ts +42 -0
  127. package/dist/hooks/useFocusTrap/useFocusTrap.svelte.js +87 -0
  128. package/dist/hooks/useFormField/HookContextProbe.svelte +5 -0
  129. package/dist/hooks/useFormField/HookContextProvider.svelte +7 -0
  130. package/dist/hooks/useFormField/HookEmitProbe.svelte +11 -0
  131. package/dist/hooks/useFormField/index.d.ts +1 -0
  132. package/dist/hooks/useFormField/index.js +1 -0
  133. package/dist/hooks/{useFormField.svelte.d.ts → useFormField/useFormField.svelte.d.ts} +1 -1
  134. package/dist/hooks/{useFormField.svelte.js → useFormField/useFormField.svelte.js} +1 -1
  135. package/dist/hooks/useInfiniteScroll/index.d.ts +1 -0
  136. package/dist/hooks/useInfiniteScroll/index.js +1 -0
  137. package/dist/hooks/{useInfiniteScroll.svelte.d.ts → useInfiniteScroll/useInfiniteScroll.svelte.d.ts} +2 -1
  138. package/dist/hooks/{useInfiniteScroll.svelte.js → useInfiniteScroll/useInfiniteScroll.svelte.js} +2 -9
  139. package/dist/hooks/useIntersectionObserver/index.d.ts +1 -0
  140. package/dist/hooks/useIntersectionObserver/index.js +1 -0
  141. package/dist/hooks/useIntersectionObserver/useIntersectionObserver.svelte.d.ts +30 -0
  142. package/dist/hooks/useIntersectionObserver/useIntersectionObserver.svelte.js +46 -0
  143. package/dist/hooks/useLocalStorage/index.d.ts +1 -0
  144. package/dist/hooks/useLocalStorage/index.js +1 -0
  145. package/dist/hooks/useLocalStorage/useLocalStorage.svelte.d.ts +39 -0
  146. package/dist/hooks/useLocalStorage/useLocalStorage.svelte.js +73 -0
  147. package/dist/hooks/useMediaQuery/index.d.ts +1 -0
  148. package/dist/hooks/useMediaQuery/index.js +1 -0
  149. package/dist/hooks/{useMediaQuery.svelte.d.ts → useMediaQuery/useMediaQuery.svelte.d.ts} +2 -1
  150. package/dist/hooks/{useMediaQuery.svelte.js → useMediaQuery/useMediaQuery.svelte.js} +2 -1
  151. package/dist/hooks/useResizeObserver/index.d.ts +1 -0
  152. package/dist/hooks/useResizeObserver/index.js +1 -0
  153. package/dist/hooks/useResizeObserver/useResizeObserver.svelte.d.ts +50 -0
  154. package/dist/hooks/useResizeObserver/useResizeObserver.svelte.js +71 -0
  155. package/dist/hooks/useScrollLock/index.d.ts +1 -0
  156. package/dist/hooks/useScrollLock/index.js +1 -0
  157. package/dist/hooks/useScrollLock/useScrollLock.svelte.d.ts +28 -0
  158. package/dist/hooks/useScrollLock/useScrollLock.svelte.js +79 -0
  159. package/dist/hooks/useThrottle/index.d.ts +1 -0
  160. package/dist/hooks/useThrottle/index.js +1 -0
  161. package/dist/hooks/useThrottle/useThrottle.svelte.d.ts +37 -0
  162. package/dist/hooks/useThrottle/useThrottle.svelte.js +72 -0
  163. package/dist/hooks/useTimers/index.d.ts +1 -0
  164. package/dist/hooks/useTimers/index.js +1 -0
  165. package/dist/hooks/useTimers/useTimers.svelte.d.ts +62 -0
  166. package/dist/hooks/useTimers/useTimers.svelte.js +90 -0
  167. package/dist/hooks/utils.d.ts +1 -0
  168. package/dist/hooks/utils.js +3 -0
  169. package/dist/index.d.ts +51 -51
  170. package/dist/index.js +51 -51
  171. package/package.json +4 -4
  172. package/dist/Alert/Alert.svelte +0 -131
  173. package/dist/Avatar/Avatar.svelte +0 -114
  174. package/dist/AvatarGroup/AvatarGroup.svelte +0 -71
  175. package/dist/Badge/Badge.svelte +0 -79
  176. package/dist/Breadcrumb/Breadcrumb.svelte +0 -101
  177. package/dist/Button/Button.svelte +0 -177
  178. package/dist/Card/Card.svelte +0 -54
  179. package/dist/Carousel/Carousel.svelte +0 -279
  180. package/dist/Checkbox/Checkbox.svelte +0 -161
  181. package/dist/Chip/Chip.svelte +0 -51
  182. package/dist/Collapsible/Collapsible.svelte +0 -69
  183. package/dist/Command/CommandTestWrapper.svelte +0 -13
  184. package/dist/Command/index.d.ts +0 -2
  185. package/dist/Container/Container.svelte +0 -21
  186. package/dist/Drawer/Drawer.svelte +0 -202
  187. package/dist/DropdownMenu/DropdownMenuTriggerTestWrapper.svelte +0 -12
  188. package/dist/Editor/Editor.svelte +0 -738
  189. package/dist/Editor/EditorUrlPrompt.svelte +0 -111
  190. package/dist/Editor/editor.schemas.js +0 -3
  191. package/dist/Empty/Empty.svelte +0 -118
  192. package/dist/FieldGroup/FieldGroup.svelte +0 -53
  193. package/dist/Form/Form.svelte +0 -203
  194. package/dist/FormField/FormField.svelte +0 -186
  195. package/dist/Icon/Icon.svelte +0 -46
  196. package/dist/Input/Input.svelte +0 -199
  197. package/dist/Input/index.d.ts +0 -2
  198. package/dist/Kbd/Kbd.svelte +0 -45
  199. package/dist/Link/Link.svelte +0 -168
  200. package/dist/PinInput/PinInput.svelte +0 -162
  201. package/dist/Popover/Popover.svelte +0 -122
  202. package/dist/Progress/Progress.svelte +0 -127
  203. package/dist/Select/Select.svelte +0 -461
  204. package/dist/SelectMenu/SelectMenu.svelte +0 -621
  205. package/dist/SelectMenu/SelectMenuFormFieldTestWrapper.svelte +0 -11
  206. package/dist/Separator/Separator.svelte +0 -77
  207. package/dist/Skeleton/Skeleton.svelte +0 -41
  208. package/dist/Slider/Slider.svelte +0 -129
  209. package/dist/Stepper/Stepper.svelte +0 -292
  210. package/dist/Switch/Switch.svelte +0 -155
  211. package/dist/Table/Table.svelte +0 -763
  212. package/dist/Tabs/Tabs.svelte +0 -188
  213. package/dist/Textarea/Textarea.svelte +0 -215
  214. package/dist/ThemeModeButton/ThemeModeButton.svelte +0 -73
  215. package/dist/Timeline/Timeline.svelte +0 -151
  216. package/dist/Tooltip/Tooltip.svelte +0 -151
  217. package/dist/Tooltip/TooltipTestWrapper.svelte +0 -8
  218. package/dist/User/User.svelte +0 -98
  219. package/dist/hooks/HookContextProbe.svelte +0 -7
  220. package/dist/hooks/HookContextProvider.svelte +0 -9
  221. package/dist/hooks/HookEmitProbe.svelte +0 -14
  222. /package/dist/{Accordion → components/Accordion}/Accordion.svelte.d.ts +0 -0
  223. /package/dist/{Accordion → components/Accordion}/accordion.types.d.ts +0 -0
  224. /package/dist/{Accordion → components/Accordion}/accordion.types.js +0 -0
  225. /package/dist/{Accordion → components/Accordion}/accordion.variants.d.ts +0 -0
  226. /package/dist/{Accordion → components/Accordion}/accordion.variants.js +0 -0
  227. /package/dist/{Accordion → components/Accordion}/index.d.ts +0 -0
  228. /package/dist/{Accordion → components/Accordion}/index.js +0 -0
  229. /package/dist/{Alert → components/Alert}/Alert.svelte.d.ts +0 -0
  230. /package/dist/{Alert → components/Alert}/alert.types.d.ts +0 -0
  231. /package/dist/{Alert → components/Alert}/alert.types.js +0 -0
  232. /package/dist/{Alert → components/Alert}/alert.variants.d.ts +0 -0
  233. /package/dist/{Alert → components/Alert}/alert.variants.js +0 -0
  234. /package/dist/{Alert → components/Alert}/index.d.ts +0 -0
  235. /package/dist/{Alert → components/Alert}/index.js +0 -0
  236. /package/dist/{Avatar → components/Avatar}/Avatar.svelte.d.ts +0 -0
  237. /package/dist/{Avatar → components/Avatar}/avatar.types.d.ts +0 -0
  238. /package/dist/{Avatar → components/Avatar}/avatar.types.js +0 -0
  239. /package/dist/{Avatar → components/Avatar}/avatar.variants.d.ts +0 -0
  240. /package/dist/{Avatar → components/Avatar}/avatar.variants.js +0 -0
  241. /package/dist/{Avatar → components/Avatar}/index.d.ts +0 -0
  242. /package/dist/{Avatar → components/Avatar}/index.js +0 -0
  243. /package/dist/{AvatarGroup → components/AvatarGroup}/AvatarGroup.svelte.d.ts +0 -0
  244. /package/dist/{AvatarGroup → components/AvatarGroup}/avatar-group.types.d.ts +0 -0
  245. /package/dist/{AvatarGroup → components/AvatarGroup}/avatar-group.types.js +0 -0
  246. /package/dist/{AvatarGroup → components/AvatarGroup}/avatar-group.variants.d.ts +0 -0
  247. /package/dist/{AvatarGroup → components/AvatarGroup}/avatar-group.variants.js +0 -0
  248. /package/dist/{AvatarGroup → components/AvatarGroup}/index.d.ts +0 -0
  249. /package/dist/{AvatarGroup → components/AvatarGroup}/index.js +0 -0
  250. /package/dist/{Badge → components/Badge}/Badge.svelte.d.ts +0 -0
  251. /package/dist/{Badge → components/Badge}/badge.types.js +0 -0
  252. /package/dist/{Badge → components/Badge}/badge.variants.d.ts +0 -0
  253. /package/dist/{Badge → components/Badge}/badge.variants.js +0 -0
  254. /package/dist/{Badge → components/Badge}/index.d.ts +0 -0
  255. /package/dist/{Badge → components/Badge}/index.js +0 -0
  256. /package/dist/{Banner → components/Banner}/Banner.svelte.d.ts +0 -0
  257. /package/dist/{Banner → components/Banner}/banner.types.d.ts +0 -0
  258. /package/dist/{Banner → components/Banner}/banner.types.js +0 -0
  259. /package/dist/{Banner → components/Banner}/banner.variants.d.ts +0 -0
  260. /package/dist/{Banner → components/Banner}/banner.variants.js +0 -0
  261. /package/dist/{Banner → components/Banner}/index.d.ts +0 -0
  262. /package/dist/{Banner → components/Banner}/index.js +0 -0
  263. /package/dist/{Breadcrumb → components/Breadcrumb}/Breadcrumb.svelte.d.ts +0 -0
  264. /package/dist/{Breadcrumb → components/Breadcrumb}/breadcrumb.types.d.ts +0 -0
  265. /package/dist/{Breadcrumb → components/Breadcrumb}/breadcrumb.types.js +0 -0
  266. /package/dist/{Breadcrumb → components/Breadcrumb}/breadcrumb.variants.d.ts +0 -0
  267. /package/dist/{Breadcrumb → components/Breadcrumb}/breadcrumb.variants.js +0 -0
  268. /package/dist/{Breadcrumb → components/Breadcrumb}/index.d.ts +0 -0
  269. /package/dist/{Breadcrumb → components/Breadcrumb}/index.js +0 -0
  270. /package/dist/{Button → components/Button}/Button.svelte.d.ts +0 -0
  271. /package/dist/{Button → components/Button}/button.types.d.ts +0 -0
  272. /package/dist/{Button → components/Button}/button.types.js +0 -0
  273. /package/dist/{Button → components/Button}/button.variants.d.ts +0 -0
  274. /package/dist/{Button → components/Button}/button.variants.js +0 -0
  275. /package/dist/{Button → components/Button}/index.d.ts +0 -0
  276. /package/dist/{Button → components/Button}/index.js +0 -0
  277. /package/dist/{Calendar → components/Calendar}/Calendar.svelte.d.ts +0 -0
  278. /package/dist/{Calendar → components/Calendar}/calendar.types.d.ts +0 -0
  279. /package/dist/{Calendar → components/Calendar}/calendar.types.js +0 -0
  280. /package/dist/{Calendar → components/Calendar}/calendar.variants.d.ts +0 -0
  281. /package/dist/{Calendar → components/Calendar}/calendar.variants.js +0 -0
  282. /package/dist/{Calendar → components/Calendar}/index.d.ts +0 -0
  283. /package/dist/{Calendar → components/Calendar}/index.js +0 -0
  284. /package/dist/{Card → components/Card}/Card.svelte.d.ts +0 -0
  285. /package/dist/{Card → components/Card}/card.types.d.ts +0 -0
  286. /package/dist/{Card → components/Card}/card.types.js +0 -0
  287. /package/dist/{Card → components/Card}/card.variants.d.ts +0 -0
  288. /package/dist/{Card → components/Card}/card.variants.js +0 -0
  289. /package/dist/{Card → components/Card}/index.d.ts +0 -0
  290. /package/dist/{Card → components/Card}/index.js +0 -0
  291. /package/dist/{Carousel → components/Carousel}/Carousel.svelte.d.ts +0 -0
  292. /package/dist/{Carousel → components/Carousel}/carousel.types.d.ts +0 -0
  293. /package/dist/{Carousel → components/Carousel}/carousel.types.js +0 -0
  294. /package/dist/{Carousel → components/Carousel}/carousel.variants.d.ts +0 -0
  295. /package/dist/{Carousel → components/Carousel}/carousel.variants.js +0 -0
  296. /package/dist/{Carousel → components/Carousel}/index.d.ts +0 -0
  297. /package/dist/{Carousel → components/Carousel}/index.js +0 -0
  298. /package/dist/{Checkbox → components/Checkbox}/Checkbox.svelte.d.ts +0 -0
  299. /package/dist/{Checkbox → components/Checkbox}/checkbox.types.d.ts +0 -0
  300. /package/dist/{Checkbox → components/Checkbox}/checkbox.types.js +0 -0
  301. /package/dist/{Checkbox → components/Checkbox}/checkbox.variants.d.ts +0 -0
  302. /package/dist/{Checkbox → components/Checkbox}/checkbox.variants.js +0 -0
  303. /package/dist/{Checkbox → components/Checkbox}/index.d.ts +0 -0
  304. /package/dist/{Checkbox → components/Checkbox}/index.js +0 -0
  305. /package/dist/{CheckboxGroup → components/CheckboxGroup}/CheckboxGroup.svelte.d.ts +0 -0
  306. /package/dist/{CheckboxGroup → components/CheckboxGroup}/checkbox-group.types.d.ts +0 -0
  307. /package/dist/{CheckboxGroup → components/CheckboxGroup}/checkbox-group.types.js +0 -0
  308. /package/dist/{CheckboxGroup → components/CheckboxGroup}/checkbox-group.variants.d.ts +0 -0
  309. /package/dist/{CheckboxGroup → components/CheckboxGroup}/checkbox-group.variants.js +0 -0
  310. /package/dist/{CheckboxGroup → components/CheckboxGroup}/index.d.ts +0 -0
  311. /package/dist/{CheckboxGroup → components/CheckboxGroup}/index.js +0 -0
  312. /package/dist/{Chip → components/Chip}/Chip.svelte.d.ts +0 -0
  313. /package/dist/{Chip → components/Chip}/chip.types.d.ts +0 -0
  314. /package/dist/{Chip → components/Chip}/chip.types.js +0 -0
  315. /package/dist/{Chip → components/Chip}/chip.variants.d.ts +0 -0
  316. /package/dist/{Chip → components/Chip}/chip.variants.js +0 -0
  317. /package/dist/{Chip → components/Chip}/index.d.ts +0 -0
  318. /package/dist/{Chip → components/Chip}/index.js +0 -0
  319. /package/dist/{Collapsible → components/Collapsible}/Collapsible.svelte.d.ts +0 -0
  320. /package/dist/{Collapsible → components/Collapsible}/CollapsibleTestWrapper.svelte.d.ts +0 -0
  321. /package/dist/{Collapsible → components/Collapsible}/collapsible.types.js +0 -0
  322. /package/dist/{Collapsible → components/Collapsible}/collapsible.variants.d.ts +0 -0
  323. /package/dist/{Collapsible → components/Collapsible}/collapsible.variants.js +0 -0
  324. /package/dist/{Collapsible → components/Collapsible}/index.d.ts +0 -0
  325. /package/dist/{Collapsible → components/Collapsible}/index.js +0 -0
  326. /package/dist/{Command → components/Command}/Command.svelte.d.ts +0 -0
  327. /package/dist/{Command → components/Command}/CommandTestWrapper.svelte.d.ts +0 -0
  328. /package/dist/{Command → components/Command}/command.types.js +0 -0
  329. /package/dist/{Command → components/Command}/command.variants.d.ts +0 -0
  330. /package/dist/{Command → components/Command}/command.variants.js +0 -0
  331. /package/dist/{Command → components/Command}/index.js +0 -0
  332. /package/dist/{Container → components/Container}/Container.svelte.d.ts +0 -0
  333. /package/dist/{Container → components/Container}/container.types.d.ts +0 -0
  334. /package/dist/{Container → components/Container}/container.types.js +0 -0
  335. /package/dist/{Container → components/Container}/container.variants.d.ts +0 -0
  336. /package/dist/{Container → components/Container}/container.variants.js +0 -0
  337. /package/dist/{Container → components/Container}/index.d.ts +0 -0
  338. /package/dist/{Container → components/Container}/index.js +0 -0
  339. /package/dist/{ContextMenu → components/ContextMenu}/ContextMenu.svelte.d.ts +0 -0
  340. /package/dist/{ContextMenu → components/ContextMenu}/context-menu.types.d.ts +0 -0
  341. /package/dist/{ContextMenu → components/ContextMenu}/context-menu.types.js +0 -0
  342. /package/dist/{ContextMenu → components/ContextMenu}/context-menu.variants.d.ts +0 -0
  343. /package/dist/{ContextMenu → components/ContextMenu}/context-menu.variants.js +0 -0
  344. /package/dist/{ContextMenu → components/ContextMenu}/index.d.ts +0 -0
  345. /package/dist/{ContextMenu → components/ContextMenu}/index.js +0 -0
  346. /package/dist/{Drawer → components/Drawer}/Drawer.svelte.d.ts +0 -0
  347. /package/dist/{Drawer → components/Drawer}/drawer.types.js +0 -0
  348. /package/dist/{Drawer → components/Drawer}/drawer.variants.d.ts +0 -0
  349. /package/dist/{Drawer → components/Drawer}/drawer.variants.js +0 -0
  350. /package/dist/{Drawer → components/Drawer}/index.d.ts +0 -0
  351. /package/dist/{Drawer → components/Drawer}/index.js +0 -0
  352. /package/dist/{DropdownMenu → components/DropdownMenu}/DropdownMenu.svelte.d.ts +0 -0
  353. /package/dist/{DropdownMenu → components/DropdownMenu}/DropdownMenuTriggerTestWrapper.svelte.d.ts +0 -0
  354. /package/dist/{DropdownMenu → components/DropdownMenu}/dropdown-menu.types.d.ts +0 -0
  355. /package/dist/{DropdownMenu → components/DropdownMenu}/dropdown-menu.types.js +0 -0
  356. /package/dist/{DropdownMenu → components/DropdownMenu}/dropdown-menu.variants.d.ts +0 -0
  357. /package/dist/{DropdownMenu → components/DropdownMenu}/dropdown-menu.variants.js +0 -0
  358. /package/dist/{DropdownMenu → components/DropdownMenu}/index.d.ts +0 -0
  359. /package/dist/{DropdownMenu → components/DropdownMenu}/index.js +0 -0
  360. /package/dist/{Editor → components/Editor}/Editor.svelte.d.ts +0 -0
  361. /package/dist/{Editor → components/Editor}/EditorUrlPrompt.svelte.d.ts +0 -0
  362. /package/dist/{Editor → components/Editor}/editor.suggestion.d.ts +0 -0
  363. /package/dist/{Editor → components/Editor}/editor.toolbar.d.ts +0 -0
  364. /package/dist/{Editor → components/Editor}/editor.types.js +0 -0
  365. /package/dist/{Empty → components/Empty}/Empty.svelte.d.ts +0 -0
  366. /package/dist/{Empty → components/Empty}/empty.types.d.ts +0 -0
  367. /package/dist/{Empty → components/Empty}/empty.types.js +0 -0
  368. /package/dist/{Empty → components/Empty}/empty.variants.d.ts +0 -0
  369. /package/dist/{Empty → components/Empty}/empty.variants.js +0 -0
  370. /package/dist/{Empty → components/Empty}/index.d.ts +0 -0
  371. /package/dist/{Empty → components/Empty}/index.js +0 -0
  372. /package/dist/{FieldGroup → components/FieldGroup}/FieldGroup.svelte.d.ts +0 -0
  373. /package/dist/{FieldGroup → components/FieldGroup}/field-group.types.d.ts +0 -0
  374. /package/dist/{FieldGroup → components/FieldGroup}/field-group.types.js +0 -0
  375. /package/dist/{FieldGroup → components/FieldGroup}/field-group.variants.d.ts +0 -0
  376. /package/dist/{FieldGroup → components/FieldGroup}/field-group.variants.js +0 -0
  377. /package/dist/{FieldGroup → components/FieldGroup}/index.d.ts +0 -0
  378. /package/dist/{FieldGroup → components/FieldGroup}/index.js +0 -0
  379. /package/dist/{FileUpload → components/FileUpload}/FileUpload.svelte.d.ts +0 -0
  380. /package/dist/{FileUpload → components/FileUpload}/file-upload.types.d.ts +0 -0
  381. /package/dist/{FileUpload → components/FileUpload}/file-upload.types.js +0 -0
  382. /package/dist/{FileUpload → components/FileUpload}/file-upload.variants.d.ts +0 -0
  383. /package/dist/{FileUpload → components/FileUpload}/file-upload.variants.js +0 -0
  384. /package/dist/{FileUpload → components/FileUpload}/index.d.ts +0 -0
  385. /package/dist/{FileUpload → components/FileUpload}/index.js +0 -0
  386. /package/dist/{Form → components/Form}/Form.svelte.d.ts +0 -0
  387. /package/dist/{Form → components/Form}/form.context.svelte.d.ts +0 -0
  388. /package/dist/{Form → components/Form}/form.types.d.ts +0 -0
  389. /package/dist/{Form → components/Form}/form.types.js +0 -0
  390. /package/dist/{Form → components/Form}/index.d.ts +0 -0
  391. /package/dist/{Form → components/Form}/index.js +0 -0
  392. /package/dist/{Form → components/Form}/validate-schema.d.ts +0 -0
  393. /package/dist/{Form → components/Form}/validate-schema.js +0 -0
  394. /package/dist/{FormField → components/FormField}/FormField.svelte.d.ts +0 -0
  395. /package/dist/{FormField → components/FormField}/form-field.types.d.ts +0 -0
  396. /package/dist/{FormField → components/FormField}/form-field.types.js +0 -0
  397. /package/dist/{FormField → components/FormField}/form-field.variants.d.ts +0 -0
  398. /package/dist/{FormField → components/FormField}/form-field.variants.js +0 -0
  399. /package/dist/{FormField → components/FormField}/index.d.ts +0 -0
  400. /package/dist/{FormField → components/FormField}/index.js +0 -0
  401. /package/dist/{Icon → components/Icon}/Icon.svelte.d.ts +0 -0
  402. /package/dist/{Icon → components/Icon}/icon.types.js +0 -0
  403. /package/dist/{Icon → components/Icon}/index.d.ts +0 -0
  404. /package/dist/{Icon → components/Icon}/index.js +0 -0
  405. /package/dist/{Input → components/Input}/Input.svelte.d.ts +0 -0
  406. /package/dist/{Input → components/Input}/index.js +0 -0
  407. /package/dist/{Input → components/Input}/input.types.js +0 -0
  408. /package/dist/{Input → components/Input}/input.variants.d.ts +0 -0
  409. /package/dist/{Input → components/Input}/input.variants.js +0 -0
  410. /package/dist/{Kbd → components/Kbd}/Kbd.svelte.d.ts +0 -0
  411. /package/dist/{Kbd → components/Kbd}/index.d.ts +0 -0
  412. /package/dist/{Kbd → components/Kbd}/index.js +0 -0
  413. /package/dist/{Kbd → components/Kbd}/kbd.types.d.ts +0 -0
  414. /package/dist/{Kbd → components/Kbd}/kbd.types.js +0 -0
  415. /package/dist/{Kbd → components/Kbd}/kbd.variants.d.ts +0 -0
  416. /package/dist/{Kbd → components/Kbd}/kbd.variants.js +0 -0
  417. /package/dist/{Kbd → components/Kbd}/useKbd.svelte.d.ts +0 -0
  418. /package/dist/{Kbd → components/Kbd}/useKbd.svelte.js +0 -0
  419. /package/dist/{Link → components/Link}/Link.svelte.d.ts +0 -0
  420. /package/dist/{Link → components/Link}/index.d.ts +0 -0
  421. /package/dist/{Link → components/Link}/index.js +0 -0
  422. /package/dist/{Link → components/Link}/link.types.d.ts +0 -0
  423. /package/dist/{Link → components/Link}/link.types.js +0 -0
  424. /package/dist/{Link → components/Link}/link.variants.d.ts +0 -0
  425. /package/dist/{Link → components/Link}/link.variants.js +0 -0
  426. /package/dist/{Modal → components/Modal}/Modal.svelte.d.ts +0 -0
  427. /package/dist/{Modal → components/Modal}/index.d.ts +0 -0
  428. /package/dist/{Modal → components/Modal}/index.js +0 -0
  429. /package/dist/{Modal → components/Modal}/modal.types.js +0 -0
  430. /package/dist/{Modal → components/Modal}/modal.variants.d.ts +0 -0
  431. /package/dist/{Modal → components/Modal}/modal.variants.js +0 -0
  432. /package/dist/{Pagination → components/Pagination}/Pagination.svelte.d.ts +0 -0
  433. /package/dist/{Pagination → components/Pagination}/index.d.ts +0 -0
  434. /package/dist/{Pagination → components/Pagination}/index.js +0 -0
  435. /package/dist/{Pagination → components/Pagination}/pagination.types.js +0 -0
  436. /package/dist/{Pagination → components/Pagination}/pagination.variants.d.ts +0 -0
  437. /package/dist/{Pagination → components/Pagination}/pagination.variants.js +0 -0
  438. /package/dist/{PinInput → components/PinInput}/PinInput.svelte.d.ts +0 -0
  439. /package/dist/{PinInput → components/PinInput}/index.d.ts +0 -0
  440. /package/dist/{PinInput → components/PinInput}/index.js +0 -0
  441. /package/dist/{PinInput → components/PinInput}/pin-input.types.d.ts +0 -0
  442. /package/dist/{PinInput → components/PinInput}/pin-input.types.js +0 -0
  443. /package/dist/{PinInput → components/PinInput}/pin-input.variants.d.ts +0 -0
  444. /package/dist/{PinInput → components/PinInput}/pin-input.variants.js +0 -0
  445. /package/dist/{Popover → components/Popover}/Popover.svelte.d.ts +0 -0
  446. /package/dist/{Popover → components/Popover}/index.d.ts +0 -0
  447. /package/dist/{Popover → components/Popover}/index.js +0 -0
  448. /package/dist/{Popover → components/Popover}/popover.types.js +0 -0
  449. /package/dist/{Popover → components/Popover}/popover.variants.d.ts +0 -0
  450. /package/dist/{Popover → components/Popover}/popover.variants.js +0 -0
  451. /package/dist/{Progress → components/Progress}/Progress.svelte.d.ts +0 -0
  452. /package/dist/{Progress → components/Progress}/index.d.ts +0 -0
  453. /package/dist/{Progress → components/Progress}/index.js +0 -0
  454. /package/dist/{Progress → components/Progress}/progress.types.d.ts +0 -0
  455. /package/dist/{Progress → components/Progress}/progress.types.js +0 -0
  456. /package/dist/{Progress → components/Progress}/progress.variants.d.ts +0 -0
  457. /package/dist/{Progress → components/Progress}/progress.variants.js +0 -0
  458. /package/dist/{RadioGroup → components/RadioGroup}/RadioGroup.svelte.d.ts +0 -0
  459. /package/dist/{RadioGroup → components/RadioGroup}/index.d.ts +0 -0
  460. /package/dist/{RadioGroup → components/RadioGroup}/index.js +0 -0
  461. /package/dist/{RadioGroup → components/RadioGroup}/radio-group.types.d.ts +0 -0
  462. /package/dist/{RadioGroup → components/RadioGroup}/radio-group.types.js +0 -0
  463. /package/dist/{RadioGroup → components/RadioGroup}/radio-group.variants.d.ts +0 -0
  464. /package/dist/{RadioGroup → components/RadioGroup}/radio-group.variants.js +0 -0
  465. /package/dist/{Select → components/Select}/Select.svelte.d.ts +0 -0
  466. /package/dist/{Select → components/Select}/index.d.ts +0 -0
  467. /package/dist/{Select → components/Select}/index.js +0 -0
  468. /package/dist/{Select → components/Select}/select.types.js +0 -0
  469. /package/dist/{Select → components/Select}/select.variants.d.ts +0 -0
  470. /package/dist/{Select → components/Select}/select.variants.js +0 -0
  471. /package/dist/{SelectMenu → components/SelectMenu}/SelectMenu.svelte.d.ts +0 -0
  472. /package/dist/{SelectMenu → components/SelectMenu}/SelectMenuFormFieldTestWrapper.svelte.d.ts +0 -0
  473. /package/dist/{SelectMenu → components/SelectMenu}/index.d.ts +0 -0
  474. /package/dist/{SelectMenu → components/SelectMenu}/index.js +0 -0
  475. /package/dist/{SelectMenu → components/SelectMenu}/select-menu.types.js +0 -0
  476. /package/dist/{SelectMenu → components/SelectMenu}/select-menu.variants.d.ts +0 -0
  477. /package/dist/{SelectMenu → components/SelectMenu}/select-menu.variants.js +0 -0
  478. /package/dist/{Separator → components/Separator}/Separator.svelte.d.ts +0 -0
  479. /package/dist/{Separator → components/Separator}/index.d.ts +0 -0
  480. /package/dist/{Separator → components/Separator}/index.js +0 -0
  481. /package/dist/{Separator → components/Separator}/separator.types.js +0 -0
  482. /package/dist/{Separator → components/Separator}/separator.variants.d.ts +0 -0
  483. /package/dist/{Separator → components/Separator}/separator.variants.js +0 -0
  484. /package/dist/{Skeleton → components/Skeleton}/Skeleton.svelte.d.ts +0 -0
  485. /package/dist/{Skeleton → components/Skeleton}/index.d.ts +0 -0
  486. /package/dist/{Skeleton → components/Skeleton}/index.js +0 -0
  487. /package/dist/{Skeleton → components/Skeleton}/skeleton.types.d.ts +0 -0
  488. /package/dist/{Skeleton → components/Skeleton}/skeleton.types.js +0 -0
  489. /package/dist/{Skeleton → components/Skeleton}/skeleton.variants.d.ts +0 -0
  490. /package/dist/{Skeleton → components/Skeleton}/skeleton.variants.js +0 -0
  491. /package/dist/{Slideover → components/Slideover}/Slideover.svelte.d.ts +0 -0
  492. /package/dist/{Slideover → components/Slideover}/index.d.ts +0 -0
  493. /package/dist/{Slideover → components/Slideover}/index.js +0 -0
  494. /package/dist/{Slideover → components/Slideover}/slideover.types.js +0 -0
  495. /package/dist/{Slideover → components/Slideover}/slideover.variants.d.ts +0 -0
  496. /package/dist/{Slideover → components/Slideover}/slideover.variants.js +0 -0
  497. /package/dist/{Slider → components/Slider}/Slider.svelte.d.ts +0 -0
  498. /package/dist/{Slider → components/Slider}/index.d.ts +0 -0
  499. /package/dist/{Slider → components/Slider}/index.js +0 -0
  500. /package/dist/{Slider → components/Slider}/slider.types.d.ts +0 -0
  501. /package/dist/{Slider → components/Slider}/slider.types.js +0 -0
  502. /package/dist/{Slider → components/Slider}/slider.variants.d.ts +0 -0
  503. /package/dist/{Slider → components/Slider}/slider.variants.js +0 -0
  504. /package/dist/{Stepper → components/Stepper}/Stepper.svelte.d.ts +0 -0
  505. /package/dist/{Stepper → components/Stepper}/index.d.ts +0 -0
  506. /package/dist/{Stepper → components/Stepper}/index.js +0 -0
  507. /package/dist/{Stepper → components/Stepper}/stepper.types.d.ts +0 -0
  508. /package/dist/{Stepper → components/Stepper}/stepper.types.js +0 -0
  509. /package/dist/{Stepper → components/Stepper}/stepper.variants.d.ts +0 -0
  510. /package/dist/{Stepper → components/Stepper}/stepper.variants.js +0 -0
  511. /package/dist/{Switch → components/Switch}/Switch.svelte.d.ts +0 -0
  512. /package/dist/{Switch → components/Switch}/index.d.ts +0 -0
  513. /package/dist/{Switch → components/Switch}/index.js +0 -0
  514. /package/dist/{Switch → components/Switch}/switch.types.d.ts +0 -0
  515. /package/dist/{Switch → components/Switch}/switch.types.js +0 -0
  516. /package/dist/{Switch → components/Switch}/switch.variants.d.ts +0 -0
  517. /package/dist/{Switch → components/Switch}/switch.variants.js +0 -0
  518. /package/dist/{Table → components/Table}/Table.svelte.d.ts +0 -0
  519. /package/dist/{Table → components/Table}/index.d.ts +0 -0
  520. /package/dist/{Table → components/Table}/index.js +0 -0
  521. /package/dist/{Table → components/Table}/table.types.d.ts +0 -0
  522. /package/dist/{Table → components/Table}/table.types.js +0 -0
  523. /package/dist/{Table → components/Table}/table.variants.d.ts +0 -0
  524. /package/dist/{Table → components/Table}/table.variants.js +0 -0
  525. /package/dist/{Tabs → components/Tabs}/Tabs.svelte.d.ts +0 -0
  526. /package/dist/{Tabs → components/Tabs}/index.d.ts +0 -0
  527. /package/dist/{Tabs → components/Tabs}/index.js +0 -0
  528. /package/dist/{Tabs → components/Tabs}/tabs.types.js +0 -0
  529. /package/dist/{Tabs → components/Tabs}/tabs.variants.d.ts +0 -0
  530. /package/dist/{Tabs → components/Tabs}/tabs.variants.js +0 -0
  531. /package/dist/{Textarea → components/Textarea}/Textarea.svelte.d.ts +0 -0
  532. /package/dist/{Textarea → components/Textarea}/index.d.ts +0 -0
  533. /package/dist/{Textarea → components/Textarea}/index.js +0 -0
  534. /package/dist/{Textarea → components/Textarea}/textarea.types.d.ts +0 -0
  535. /package/dist/{Textarea → components/Textarea}/textarea.types.js +0 -0
  536. /package/dist/{Textarea → components/Textarea}/textarea.variants.d.ts +0 -0
  537. /package/dist/{Textarea → components/Textarea}/textarea.variants.js +0 -0
  538. /package/dist/{ThemeModeButton → components/ThemeModeButton}/ThemeModeButton.svelte.d.ts +0 -0
  539. /package/dist/{ThemeModeButton → components/ThemeModeButton}/index.d.ts +0 -0
  540. /package/dist/{ThemeModeButton → components/ThemeModeButton}/index.js +0 -0
  541. /package/dist/{ThemeModeButton → components/ThemeModeButton}/theme-mode-button.types.d.ts +0 -0
  542. /package/dist/{ThemeModeButton → components/ThemeModeButton}/theme-mode-button.types.js +0 -0
  543. /package/dist/{ThemeModeButton → components/ThemeModeButton}/theme-mode-button.variants.d.ts +0 -0
  544. /package/dist/{ThemeModeButton → components/ThemeModeButton}/theme-mode-button.variants.js +0 -0
  545. /package/dist/{Timeline → components/Timeline}/Timeline.svelte.d.ts +0 -0
  546. /package/dist/{Timeline → components/Timeline}/index.d.ts +0 -0
  547. /package/dist/{Timeline → components/Timeline}/index.js +0 -0
  548. /package/dist/{Timeline → components/Timeline}/timeline.types.d.ts +0 -0
  549. /package/dist/{Timeline → components/Timeline}/timeline.types.js +0 -0
  550. /package/dist/{Timeline → components/Timeline}/timeline.variants.d.ts +0 -0
  551. /package/dist/{Timeline → components/Timeline}/timeline.variants.js +0 -0
  552. /package/dist/{Toast → components/Toast}/Toaster.svelte.d.ts +0 -0
  553. /package/dist/{Toast → components/Toast}/index.d.ts +0 -0
  554. /package/dist/{Toast → components/Toast}/index.js +0 -0
  555. /package/dist/{Toast → components/Toast}/toast.d.ts +0 -0
  556. /package/dist/{Toast → components/Toast}/toast.js +0 -0
  557. /package/dist/{Toast → components/Toast}/toast.types.d.ts +0 -0
  558. /package/dist/{Toast → components/Toast}/toast.types.js +0 -0
  559. /package/dist/{Toast → components/Toast}/toast.variants.d.ts +0 -0
  560. /package/dist/{Toast → components/Toast}/toast.variants.js +0 -0
  561. /package/dist/{Tooltip → components/Tooltip}/Tooltip.svelte.d.ts +0 -0
  562. /package/dist/{Tooltip → components/Tooltip}/TooltipTestWrapper.svelte.d.ts +0 -0
  563. /package/dist/{Tooltip → components/Tooltip}/index.d.ts +0 -0
  564. /package/dist/{Tooltip → components/Tooltip}/index.js +0 -0
  565. /package/dist/{Tooltip → components/Tooltip}/tooltip.types.js +0 -0
  566. /package/dist/{Tooltip → components/Tooltip}/tooltip.variants.d.ts +0 -0
  567. /package/dist/{Tooltip → components/Tooltip}/tooltip.variants.js +0 -0
  568. /package/dist/{User → components/User}/User.svelte.d.ts +0 -0
  569. /package/dist/{User → components/User}/index.d.ts +0 -0
  570. /package/dist/{User → components/User}/index.js +0 -0
  571. /package/dist/{User → components/User}/user.types.d.ts +0 -0
  572. /package/dist/{User → components/User}/user.types.js +0 -0
  573. /package/dist/{User → components/User}/user.variants.d.ts +0 -0
  574. /package/dist/{User → components/User}/user.variants.js +0 -0
  575. /package/dist/hooks/{useClickOutside.svelte.d.ts → useClickOutside/useClickOutside.svelte.d.ts} +0 -0
  576. /package/dist/hooks/{useClipboard.svelte.js → useClipboard/useClipboard.svelte.js} +0 -0
  577. /package/dist/hooks/{useDebounce.svelte.d.ts → useDebounce/useDebounce.svelte.d.ts} +0 -0
  578. /package/dist/hooks/{useDebounce.svelte.js → useDebounce/useDebounce.svelte.js} +0 -0
  579. /package/dist/hooks/{useEscapeKeydown.svelte.d.ts → useEscapeKeydown/useEscapeKeydown.svelte.d.ts} +0 -0
  580. /package/dist/hooks/{HookContextProbe.svelte.d.ts → useFormField/HookContextProbe.svelte.d.ts} +0 -0
  581. /package/dist/hooks/{HookContextProvider.svelte.d.ts → useFormField/HookContextProvider.svelte.d.ts} +0 -0
  582. /package/dist/hooks/{HookEmitProbe.svelte.d.ts → useFormField/HookEmitProbe.svelte.d.ts} +0 -0
package/README.md CHANGED
@@ -5,113 +5,192 @@
5
5
  <h1 align="center">SV5UI</h1>
6
6
 
7
7
  <p align="center">
8
- <strong>Modern UI component library for Svelte 5</strong><br/>
9
- Tailwind CSS 4 &middot; OKLCH Color Tokens &middot; Fully Typed &middot; 50+ Components &middot; 7 Hooks
8
+ <strong>The modern UI component library for Svelte 5.</strong><br/>
9
+ Accessible components and reactive hooks, styled with Tailwind CSS 4 and fully typed.
10
10
  </p>
11
11
 
12
12
  <p align="center">
13
- <a href="https://www.npmjs.com/package/sv5ui"><img src="https://img.shields.io/npm/v/sv5ui?style=flat-square&colorA=18181b&colorB=ff3e00" alt="npm" /></a>
14
- <a href="https://www.npmjs.com/package/sv5ui"><img src="https://img.shields.io/npm/dm/sv5ui?style=flat-square&colorA=18181b&colorB=ff3e00" alt="downloads" /></a>
13
+ <a href="https://www.npmjs.com/package/sv5ui"><img src="https://img.shields.io/npm/v/sv5ui?style=flat-square&colorA=18181b&colorB=ff3e00" alt="npm version" /></a>
14
+ <a href="https://www.npmjs.com/package/sv5ui"><img src="https://img.shields.io/npm/dm/sv5ui?style=flat-square&colorA=18181b&colorB=ff3e00" alt="npm downloads" /></a>
15
15
  <a href="https://github.com/ndlabdev/sv5ui/blob/main/LICENSE"><img src="https://img.shields.io/npm/l/sv5ui?style=flat-square&colorA=18181b&colorB=ff3e00" alt="license" /></a>
16
16
  </p>
17
17
 
18
18
  <p align="center">
19
- <a href="https://sv5ui.vercel.app"><strong>Live Demo</strong></a> &middot;
20
- <a href="https://sv5ui.vercel.app/getting-started"><strong>Getting Started</strong></a> &middot;
19
+ <a href="https://sv5ui.vercel.app"><strong>Live Demo &amp; Docs</strong></a> &middot;
21
20
  <a href="https://github.com/ndlabdev/sv5ui/blob/main/CHANGELOG.md"><strong>Changelog</strong></a>
22
21
  </p>
23
22
 
24
23
  ---
25
24
 
26
- ## Install
25
+ **SV5UI** is a batteries-included component library built natively for **Svelte 5 runes**. It pairs accessible primitives from [Bits UI](https://bits-ui.com) with a [Tailwind CSS 4](https://tailwindcss.com) styling layer you can theme down to a single token — so you ship polished, accessible UI without rebuilding buttons, modals, and forms for the hundredth time.
26
+
27
+ ```svelte
28
+ <script>
29
+ import { Button, Avatar, toast } from 'sv5ui'
30
+ </script>
31
+
32
+ <Button variant="soft" color="primary" leadingIcon="lucide:edit">Edit</Button>
33
+ <Avatar src="/photo.jpg" alt="Jane" size="lg" />
34
+ <Button onclick={() => toast.success('Saved!')}>Save</Button>
35
+ ```
36
+
37
+ ## Why SV5UI?
38
+
39
+ - **Native Svelte 5** — Built on runes and snippets from the ground up, not ported from an older API. Reactivity is first-class, not retrofitted.
40
+ - **Accessible by default** — Overlays, menus, and form controls are built on [Bits UI](https://bits-ui.com) and [Vaul Svelte](https://vaul-svelte.com), so focus management, keyboard navigation, and WAI-ARIA semantics come for free.
41
+ - **Thoroughly tested** — Every component is covered by an extensive unit and real-browser test suite (Vitest + Playwright), including accessibility and memory-leak regressions.
42
+ - **Themeable to the core** — [OKLCH](https://oklch.com) color tokens, automatic light/dark mode, and three layers of customization (per-instance → global config → CSS variables).
43
+ - **Truly typed** — Strict TypeScript with exported prop types for every component; a `publint`-clean ESM package with proper `types` and `svelte` export conditions.
44
+ - **Tree-shakeable** — Pure ESM with side effects limited to CSS, so you only ship the components you import.
45
+ - **Bring your own validation** — `Form` speaks [Standard Schema](https://standardschema.dev), so it works out of the box with Zod, Valibot, Yup, or Joi.
46
+ - **Icons included** — Reference any [Iconify](https://iconify.design) icon by name, with no per-icon imports: `leadingIcon="lucide:edit"`.
47
+
48
+ ## Quick Start
49
+
50
+ **1. Install**
27
51
 
28
52
  ```bash
29
53
  npm install sv5ui
30
- # pnpm add sv5ui
31
- # yarn add sv5ui
32
- # bun add sv5ui
54
+ # pnpm add sv5ui · yarn add sv5ui · bun add sv5ui
33
55
  ```
34
56
 
57
+ > **Peer dependencies:** `svelte@^5`, `tailwindcss@^4`, and `mode-watcher@^1`. The rich-text `Editor` and `Form` validators (TipTap, Zod/Valibot/Yup/Joi) are **optional** peers — install only what you use.
58
+
59
+ **2. Import the theme**
60
+
35
61
  ```css
36
- /* layout.css */
62
+ /* app.css */
37
63
  @import 'sv5ui/theme.css';
38
64
  ```
39
65
 
66
+ **3. Enable dark mode** (one-time, in your root layout)
67
+
40
68
  ```svelte
41
69
  <script>
42
- import { Button, Avatar, toast } from 'sv5ui'
70
+ import { ModeWatcher } from 'mode-watcher'
43
71
  </script>
44
72
 
45
- <Button variant="soft" color="primary" leadingIcon="lucide:edit">Edit</Button>
46
- <Avatar src="/photo.jpg" alt="Jane" size="lg" />
73
+ <ModeWatcher />
74
+ ```
75
+
76
+ **4. Use components**
77
+
78
+ ```svelte
79
+ <script>
80
+ import { Card, Button } from 'sv5ui'
81
+ </script>
82
+
83
+ <Card>
84
+ <p>Welcome back 👋</p>
85
+ <Button color="primary" leadingIcon="lucide:log-in">Sign in</Button>
86
+ </Card>
47
87
  ```
48
88
 
49
- ## Features
89
+ That's it — no provider to wrap, no config file required.
90
+
91
+ ## Components
50
92
 
51
- - **Svelte 5** Runes, snippets, latest reactivity
52
- - **Tailwind CSS 4** — Utility-first with [Tailwind Variants](https://www.tailwind-variants.org/)
53
- - **Fully Typed** Strict TypeScript, exported prop types
54
- - **Accessible** — Built on [Bits UI](https://bits-ui.com) & [Vaul Svelte](https://vaul-svelte.com)
55
- - **200,000+ Icons** — [Iconify](https://iconify.design) integration
56
- - **Themeable** — OKLCH color tokens, light/dark mode, global config
57
- - **Hooks** — 7 reactive hooks for common UI patterns
93
+ SV5UI covers the surface area of a real application — forms and inputs, overlays and menus, navigation, data display, and feedback — including richer pieces many libraries leave out, like a TipTap-powered rich-text **Editor**, a data **Table**, a **Command** palette, and a **Calendar**.
94
+
95
+ Every component is fully typed, theme-aware, and exposes a consistent `variant` / `color` / `size` / `ui` API. Browse the complete, always-current catalog with live examples and prop tables in the **[live demo](https://sv5ui.vercel.app)**.
58
96
 
59
97
  ## Hooks
60
98
 
61
- Reactive hooks built on Svelte 5 runes and actions.
99
+ Beyond components, SV5UI exports a set of reactive hooks built on the same runes and actions it uses internally — for everyday UI needs such as media queries, clipboard access, debouncing, focus trapping, and scroll locking.
62
100
 
63
101
  ```svelte
64
102
  <script>
65
- import { useMediaQuery, useClipboard, useDebounce } from 'sv5ui'
103
+ import { useMediaQuery, useClipboard } from 'sv5ui'
66
104
 
67
105
  const isMobile = useMediaQuery('(max-width: 640px)')
68
106
  const clipboard = useClipboard()
69
- const debounce = useDebounce({ delay: 500 })
70
107
  </script>
71
108
 
72
- {#if isMobile.matches}
73
- <MobileLayout />
74
- {/if}
109
+ {#if isMobile.matches}<MobileNav />{/if}
75
110
 
76
111
  <Button onclick={() => clipboard.copy('Hello!')}>
77
112
  {clipboard.copied ? 'Copied!' : 'Copy'}
78
113
  </Button>
79
114
  ```
80
115
 
81
- | Hook | Type | Description |
82
- | ------------------- | -------------- | ---------------------------------------------- |
83
- | `useMediaQuery` | Runes | Reactive CSS media query tracking |
84
- | `useClipboard` | Runes | Copy text with auto-reset state |
85
- | `useFormField` | Context | Access FormField context from child components |
86
- | `useDebounce` | Runes | Debounce with pending, cancel, flush |
87
- | `useClickOutside` | Action | Detect clicks outside an element |
88
- | `useInfiniteScroll` | Runes + Action | Auto-load on scroll with loading state |
89
- | `useEscapeKeydown` | Action | Listen for Escape key |
90
-
91
116
  ## Customization
92
117
 
118
+ SV5UI gives you three layers of control, from a single instance up to your whole design system.
119
+
120
+ **1. Per-instance** — override any slot with the `ui` prop or `class`:
121
+
93
122
  ```svelte
94
- <!-- Per-instance -->
95
- <Button ui={{ base: 'rounded-full shadow-lg' }}>Custom</Button>
123
+ <Button ui={{ base: 'rounded-full shadow-lg' }}>Pill button</Button>
96
124
  ```
97
125
 
126
+ **2. Global defaults** — set library-wide variants and icons once:
127
+
98
128
  ```ts
99
- // Global defaults
100
129
  import { defineConfig } from 'sv5ui'
101
130
 
102
131
  defineConfig({
103
132
  button: { defaultVariants: { variant: 'outline' } },
104
- icons: { loading: 'lucide:loader' }
133
+ icons: { loading: 'lucide:loader-circle' }
105
134
  })
106
135
  ```
107
136
 
137
+ **3. Design tokens** — re-skin everything with CSS variables (OKLCH):
138
+
108
139
  ```css
109
- /* Custom colors */
110
140
  :root {
111
141
  --color-primary: oklch(0.55 0.25 270);
142
+ --radius-lg: 0.75rem;
112
143
  }
113
144
  ```
114
145
 
146
+ ## Form validation
147
+
148
+ `Form` validates with any [Standard Schema](https://standardschema.dev) library — no adapter, no wrapper:
149
+
150
+ ```svelte
151
+ <script>
152
+ import { Form, FormField, Input, Button } from 'sv5ui'
153
+ import { z } from 'zod'
154
+
155
+ const schema = z.object({
156
+ email: z.string().email(),
157
+ password: z.string().min(8)
158
+ })
159
+ </script>
160
+
161
+ <Form {schema} onsubmit={({ data }) => console.log(data)}>
162
+ <FormField name="email" label="Email"><Input /></FormField>
163
+ <FormField name="password" label="Password"><Input type="password" /></FormField>
164
+ <Button type="submit">Sign in</Button>
165
+ </Form>
166
+ ```
167
+
168
+ Swap `zod` for `valibot`, `yup`, or `joi` — the API is identical.
169
+
170
+ ## Requirements
171
+
172
+ | Peer | Version | Required |
173
+ | --------------------------------- | -------- | -------------------------- |
174
+ | `svelte` | `^5.0.0` | Yes |
175
+ | `tailwindcss` | `^4.0.0` | Yes |
176
+ | `mode-watcher` | `^1.0.0` | Yes (dark mode) |
177
+ | `zod` / `valibot` / `yup` / `joi` | — | Optional (form validation) |
178
+ | `@tiptap/*`, `tiptap-markdown` | `^3.0.0` | Optional (`Editor`) |
179
+
180
+ ## Contributing
181
+
182
+ Issues and pull requests are welcome. To run the project locally:
183
+
184
+ ```bash
185
+ git clone https://github.com/ndlabdev/sv5ui.git
186
+ cd sv5ui
187
+ npm install
188
+ npm run dev # docs site at localhost:5173
189
+ npm test # vitest (unit + browser)
190
+ npm run check # svelte-check
191
+ npm run lint # prettier + eslint
192
+ ```
193
+
115
194
  ## License
116
195
 
117
196
  [MIT](LICENSE) &copy; [ndlabdev](https://github.com/ndlabdev)
@@ -1,91 +1,82 @@
1
- <script lang="ts" module>
2
- import type { AccordionProps, AccordionItem } from './accordion.types.js'
3
-
4
- export type Props = AccordionProps
5
- </script>
6
-
7
- <script lang="ts">
8
- import { Accordion } from 'bits-ui'
9
- import { slide } from 'svelte/transition'
10
- import { accordionVariants, accordionDefaults } from './accordion.variants.js'
11
- import { getComponentConfig } from '../config.js'
12
- import Icon from '../Icon/Icon.svelte'
13
-
14
- const config = getComponentConfig('accordion', accordionDefaults)
15
-
16
- let {
17
- items = [],
18
- type = 'single',
19
- value = $bindable(),
20
- onValueChange,
21
- disabled = false,
22
- loop = false,
23
- orientation = 'vertical',
24
- forceMount = false,
25
- trailingIcon = 'lucide:chevron-down',
26
- ui,
27
- class: className,
28
- leading,
29
- label: labelSlot,
30
- trailing,
31
- content: contentSlot,
32
- body: bodySlot
33
- }: Props = $props()
34
-
35
- const variantSlots = $derived(accordionVariants({ disabled }))
36
- const rootClass = $derived(
37
- variantSlots.root({ class: [config.slots.root, ui?.root, className] })
38
- )
39
-
40
- const singleValue = $derived(typeof value === 'string' ? value : undefined)
41
- const multipleValue = $derived(Array.isArray(value) ? value : undefined)
42
-
43
- const slotNames = [
44
- 'item',
45
- 'header',
46
- 'trigger',
47
- 'content',
48
- 'body',
49
- 'leadingIcon',
50
- 'trailingIcon',
51
- 'label'
52
- ] as const
53
-
54
- type SlotName = (typeof slotNames)[number]
55
-
56
- function getItemClasses(item: AccordionItem) {
57
- const result = {} as Record<SlotName, string>
58
- for (const slot of slotNames) {
59
- const baseClass = [
60
- config.slots[slot],
61
- ui?.[slot],
62
- item.ui?.[slot],
63
- slot === 'item' ? item.class : undefined
64
- ]
65
- const opts =
66
- slot === 'trigger'
67
- ? { class: baseClass, disabled: item.disabled }
68
- : { class: baseClass }
69
- result[slot] = variantSlots[slot](opts)
70
- }
71
- return result
72
- }
73
-
74
- function isOpen(itemValue: string): boolean {
75
- if (!value) return false
76
- if (Array.isArray(value)) return value.includes(itemValue)
77
- return value === itemValue
78
- }
79
-
80
- function handleSingleValueChange(newValue: string) {
81
- value = newValue
82
- onValueChange?.(newValue)
83
- }
84
-
85
- function handleMultipleValueChange(newValue: string[]) {
86
- value = newValue
87
- onValueChange?.(newValue)
88
- }
1
+ <script lang="ts" module></script>
2
+
3
+ <script lang="ts">import { Accordion } from "bits-ui";
4
+ import { slide } from "svelte/transition";
5
+ import { accordionVariants, accordionDefaults } from "./accordion.variants.js";
6
+ import { getComponentConfig } from "../../config.js";
7
+ import Icon from "../Icon/Icon.svelte";
8
+ const config = getComponentConfig("accordion", accordionDefaults);
9
+ let {
10
+ items = [],
11
+ type = "single",
12
+ value = $bindable(),
13
+ onValueChange,
14
+ disabled = false,
15
+ loop = false,
16
+ orientation = "vertical",
17
+ forceMount = false,
18
+ trailingIcon = "lucide:chevron-down",
19
+ ui,
20
+ class: className,
21
+ leading,
22
+ label: labelSlot,
23
+ trailing,
24
+ content: contentSlot,
25
+ body: bodySlot
26
+ } = $props();
27
+ const variantSlots = $derived(accordionVariants({ disabled }));
28
+ const rootClass = $derived(
29
+ variantSlots.root({ class: [config.slots.root, ui?.root, className] })
30
+ );
31
+ const singleValue = $derived(typeof value === "string" ? value : void 0);
32
+ const multipleValue = $derived(Array.isArray(value) ? value : void 0);
33
+ const slotNames = [
34
+ "item",
35
+ "header",
36
+ "trigger",
37
+ "content",
38
+ "body",
39
+ "leadingIcon",
40
+ "trailingIcon",
41
+ "label"
42
+ ];
43
+ const itemDefaults = $derived.by(() => {
44
+ const result = {};
45
+ for (const slot of slotNames) {
46
+ result[slot] = variantSlots[slot]({ class: [config.slots[slot], ui?.[slot]] });
47
+ }
48
+ return result;
49
+ });
50
+ function getItemClasses(item) {
51
+ if (!item.ui && item.class === void 0 && item.disabled === void 0) {
52
+ return itemDefaults;
53
+ }
54
+ const result = {};
55
+ for (const slot of slotNames) {
56
+ const baseClass = [
57
+ config.slots[slot],
58
+ ui?.[slot],
59
+ item.ui?.[slot],
60
+ slot === "item" ? item.class : void 0
61
+ ];
62
+ const opts = slot === "trigger" ? { class: baseClass, disabled: item.disabled } : { class: baseClass };
63
+ result[slot] = variantSlots[slot](opts);
64
+ }
65
+ return result;
66
+ }
67
+ function isOpen(itemValue) {
68
+ if (!value) return false;
69
+ if (Array.isArray(value)) return value.includes(itemValue);
70
+ return value === itemValue;
71
+ }
72
+ function handleSingleValueChange(newValue) {
73
+ value = newValue;
74
+ onValueChange?.(newValue);
75
+ }
76
+ function handleMultipleValueChange(newValue) {
77
+ value = newValue;
78
+ onValueChange?.(newValue);
79
+ }
89
80
  </script>
90
81
 
91
82
  {#snippet accordionItem(item: AccordionItem, index: number)}
@@ -0,0 +1,119 @@
1
+ <script lang="ts" module></script>
2
+
3
+ <script lang="ts">import { alertVariants, alertDefaults } from "./alert.variants.js";
4
+ import { getComponentConfig, iconsDefaults } from "../../config.js";
5
+ import Icon from "../Icon/Icon.svelte";
6
+ import Avatar from "../Avatar/Avatar.svelte";
7
+ import Button from "../Button/Button.svelte";
8
+ const config = getComponentConfig("alert", alertDefaults);
9
+ const icons = getComponentConfig("icons", iconsDefaults);
10
+ let {
11
+ ref = $bindable(null),
12
+ as = "div",
13
+ ui,
14
+ title,
15
+ description,
16
+ icon,
17
+ avatar,
18
+ color = config.defaultVariants.color,
19
+ variant = config.defaultVariants.variant,
20
+ orientation = config.defaultVariants.orientation,
21
+ open = $bindable(true),
22
+ close = false,
23
+ closeIcon,
24
+ actions,
25
+ class: className,
26
+ leading,
27
+ titleSlot,
28
+ descriptionSlot,
29
+ actionsSlot,
30
+ closeSlot,
31
+ onClose,
32
+ ...restProps
33
+ } = $props();
34
+ const resolvedCloseIcon = $derived(closeIcon ?? icons.close);
35
+ const classes = $derived.by(() => {
36
+ const slots = alertVariants({ variant, color, orientation, title: !!title });
37
+ return {
38
+ root: slots.root({ class: [config.slots.root, className, ui?.root] }),
39
+ wrapper: slots.wrapper({ class: [config.slots.wrapper, ui?.wrapper] }),
40
+ title: slots.title({ class: [config.slots.title, ui?.title] }),
41
+ description: slots.description({ class: [config.slots.description, ui?.description] }),
42
+ icon: slots.icon({ class: [config.slots.icon, ui?.icon] }),
43
+ avatar: slots.avatar({ class: [config.slots.avatar, ui?.avatar] }),
44
+ actions: slots.actions({ class: [config.slots.actions, ui?.actions] }),
45
+ close: slots.close({ class: [config.slots.close, ui?.close] })
46
+ };
47
+ });
48
+ const closeButtonProps = $derived(!close ? null : close === true ? {} : close);
49
+ const isVertical = $derived(orientation === "vertical");
50
+ const hasActions = $derived(!!actionsSlot || actions && actions.length > 0);
51
+ function handleClose() {
52
+ open = false;
53
+ onClose?.();
54
+ }
55
+ </script>
56
+
57
+ {#snippet actionsContent()}
58
+ {#if actionsSlot}
59
+ {@render actionsSlot()}
60
+ {:else if actions && actions.length > 0}
61
+ <div class={classes.actions}>
62
+ {#each actions as action, index (index)}
63
+ <Button size="xs" {...action} />
64
+ {/each}
65
+ </div>
66
+ {/if}
67
+ {/snippet}
68
+
69
+ {#if open}
70
+ <svelte:element this={as} bind:this={ref} class={classes.root} role="alert" {...restProps}>
71
+ {#if leading}
72
+ {@render leading()}
73
+ {:else if icon}
74
+ <Icon name={icon} class={classes.icon} />
75
+ {:else if avatar}
76
+ <Avatar {...avatar} class={classes.avatar} />
77
+ {/if}
78
+
79
+ {#if title || description || titleSlot || descriptionSlot || (isVertical && hasActions)}
80
+ <div class={classes.wrapper}>
81
+ {#if titleSlot}
82
+ {@render titleSlot()}
83
+ {:else if title}
84
+ <div class={classes.title}>{title}</div>
85
+ {/if}
86
+
87
+ {#if descriptionSlot}
88
+ {@render descriptionSlot()}
89
+ {:else if description}
90
+ <div class={classes.description}>{description}</div>
91
+ {/if}
92
+
93
+ {#if isVertical}
94
+ {@render actionsContent()}
95
+ {/if}
96
+ </div>
97
+ {/if}
98
+
99
+ {#if !isVertical}
100
+ {@render actionsContent()}
101
+ {/if}
102
+
103
+ {#if closeSlot}
104
+ <div class={classes.close}>
105
+ {@render closeSlot()}
106
+ </div>
107
+ {:else if closeButtonProps}
108
+ <Button
109
+ {...closeButtonProps}
110
+ icon={closeButtonProps.icon ?? resolvedCloseIcon}
111
+ variant={closeButtonProps.variant ?? 'link'}
112
+ color={closeButtonProps.color ?? 'surface'}
113
+ class={classes.close}
114
+ onclick={handleClose}
115
+ aria-label={closeButtonProps['aria-label'] ?? 'Close alert'}
116
+ />
117
+ {/if}
118
+ </svelte:element>
119
+ {/if}
@@ -0,0 +1,86 @@
1
+ <script lang="ts" module></script>
2
+
3
+ <script lang="ts">import { Avatar } from "bits-ui";
4
+ import { avatarVariants, avatarDefaults, avatarSizePx } from "./avatar.variants.js";
5
+ import { getComponentConfig } from "../../config.js";
6
+ import { getContext } from "svelte";
7
+ import Icon from "../Icon/Icon.svelte";
8
+ import Chip from "../Chip/Chip.svelte";
9
+ const config = getComponentConfig("avatar", avatarDefaults);
10
+ let {
11
+ ref = $bindable(null),
12
+ src,
13
+ alt,
14
+ size,
15
+ rounded,
16
+ text,
17
+ icon,
18
+ chip,
19
+ loading,
20
+ delayMs = 0,
21
+ class: className,
22
+ ui,
23
+ fallback: fallbackSnippet,
24
+ children,
25
+ ...restProps
26
+ } = $props();
27
+ const groupContext = getContext("avatarGroup");
28
+ const resolvedSize = $derived(size ?? groupContext?.size ?? config.defaultVariants.size ?? "md");
29
+ const resolvedRounded = $derived(
30
+ rounded ?? groupContext?.rounded ?? config.defaultVariants.rounded ?? "full"
31
+ );
32
+ const sizePx = $derived(avatarSizePx[resolvedSize]);
33
+ const initials = $derived(
34
+ text !== void 0 ? text : alt ? alt.split(" ").filter(Boolean).slice(0, 2).map((w) => w[0]).join("").toUpperCase() : ""
35
+ );
36
+ const chipProps = $derived(
37
+ chip === true ? { inset: true } : chip ? { inset: true, ...chip } : void 0
38
+ );
39
+ const classes = $derived.by(() => {
40
+ const slots = avatarVariants({ size: resolvedSize, rounded: resolvedRounded });
41
+ return {
42
+ root: slots.root({
43
+ class: [config.slots.root, groupContext?.baseClass, className, ui?.root]
44
+ }),
45
+ image: slots.image({ class: [config.slots.image, ui?.image] }),
46
+ fallback: slots.fallback({ class: [config.slots.fallback, ui?.fallback] }),
47
+ icon: slots.icon({ class: [config.slots.icon, ui?.icon] })
48
+ };
49
+ });
50
+ </script>
51
+
52
+ {#snippet avatarContent()}
53
+ <Avatar.Root {...restProps} bind:ref class={classes.root} {delayMs}>
54
+ {#if children}
55
+ {@render children()}
56
+ {:else}
57
+ {#if src}
58
+ <Avatar.Image
59
+ {src}
60
+ alt={alt ?? ''}
61
+ class={classes.image}
62
+ width={sizePx}
63
+ height={sizePx}
64
+ {loading}
65
+ />
66
+ {/if}
67
+ <Avatar.Fallback class={classes.fallback}>
68
+ {#if fallbackSnippet}
69
+ {@render fallbackSnippet()}
70
+ {:else if initials}
71
+ {initials}
72
+ {:else if icon}
73
+ <Icon name={icon} class={classes.icon} />
74
+ {/if}
75
+ </Avatar.Fallback>
76
+ {/if}
77
+ </Avatar.Root>
78
+ {/snippet}
79
+
80
+ {#if chipProps}
81
+ <Chip {...chipProps}>
82
+ {@render avatarContent()}
83
+ </Chip>
84
+ {:else}
85
+ {@render avatarContent()}
86
+ {/if}
@@ -0,0 +1,59 @@
1
+ <script lang="ts" module></script>
2
+
3
+ <script lang="ts">import { avatarGroupVariants, avatarGroupDefaults } from "./avatar-group.variants.js";
4
+ import { getComponentConfig } from "../../config.js";
5
+ import { setContext } from "svelte";
6
+ import Avatar from "../Avatar/Avatar.svelte";
7
+ const config = getComponentConfig("avatarGroup", avatarGroupDefaults);
8
+ let {
9
+ ref = $bindable(null),
10
+ as = "div",
11
+ ui,
12
+ size = config.defaultVariants.size ?? "md",
13
+ rounded = config.defaultVariants.rounded ?? "full",
14
+ avatars,
15
+ max,
16
+ class: className,
17
+ children,
18
+ ...restProps
19
+ } = $props();
20
+ const classes = $derived.by(() => {
21
+ const slots = avatarGroupVariants({ size, rounded });
22
+ return {
23
+ root: slots.root({ class: [config.slots.root, className, ui?.root] }),
24
+ base: slots.base({ class: [config.slots.base, ui?.base] })
25
+ };
26
+ });
27
+ setContext("avatarGroup", {
28
+ get size() {
29
+ return size;
30
+ },
31
+ get rounded() {
32
+ return rounded;
33
+ },
34
+ get baseClass() {
35
+ return classes.base;
36
+ }
37
+ });
38
+ const visibleAvatars = $derived.by(() => {
39
+ if (!avatars) return [];
40
+ const shown = max && max > 0 ? avatars.slice(0, max) : avatars;
41
+ return [...shown].reverse();
42
+ });
43
+ const overflowCount = $derived(
44
+ avatars && max && max > 0 ? Math.max(0, avatars.length - max) : 0
45
+ );
46
+ </script>
47
+
48
+ <svelte:element this={as} bind:this={ref} class={classes.root} {...restProps}>
49
+ {#if avatars}
50
+ {#if overflowCount > 0}
51
+ <Avatar text={`+${overflowCount}`} />
52
+ {/if}
53
+ {#each visibleAvatars as avatar, index (index)}
54
+ <Avatar {...avatar} />
55
+ {/each}
56
+ {:else if children}
57
+ {@render children()}
58
+ {/if}
59
+ </svelte:element>