negodesign 0.0.70 → 0.0.72

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 (393) hide show
  1. package/README.md +115 -23
  2. package/dist/components/NegoDesign.svelte +7 -2
  3. package/dist/components/core/banner/CtaCardImageBanner.svelte +10 -25
  4. package/dist/components/core/carousel/badge/ui/CarouselBadge.svelte +3 -5
  5. package/dist/components/core/carousel/grid/shared/ui/CarouselGridSlot.svelte +2 -2
  6. package/dist/components/core/carousel/highlights/ui/CarouselHighlights.svelte +2 -2
  7. package/dist/components/core/carousel/product/ui/CarouselProduct.svelte +2 -2
  8. package/dist/components/core/carousel/promotion/ui/CarouselPromotion.svelte +2 -2
  9. package/dist/components/core/datatable/data/columns-create.d.ts +1 -1
  10. package/dist/components/core/datatable/data/data-table.d.ts +3 -3
  11. package/dist/components/core/datatable/data/resolve-cell-badge.svelte.d.ts +2 -2
  12. package/dist/components/core/datatable/data/resolve-cell-badge.svelte.js +2 -1
  13. package/dist/components/core/datatable/data/resolve-cell.svelte.d.ts +2 -2
  14. package/dist/components/core/datatable/data/resolve-header.svelte.d.ts +2 -2
  15. package/dist/components/core/datatable/ui/DataTableActions.svelte +1 -1
  16. package/dist/components/core/datatable/ui/DataTableActions.svelte.d.ts +1 -1
  17. package/dist/components/core/datatable/ui/DataTableContent.svelte +1 -1
  18. package/dist/components/core/datatable/ui/DataTableContent.svelte.d.ts +1 -1
  19. package/dist/components/core/datatable/ui/DataTableCore.svelte +23 -26
  20. package/dist/components/core/datatable/ui/DataTableListFilter.svelte +3 -2
  21. package/dist/components/core/datatable/ui/DataTableListFilter.svelte.d.ts +1 -1
  22. package/dist/components/core/datatable/ui/DataTableListPagination.svelte +1 -1
  23. package/dist/components/core/datatable/ui/DataTableListPagination.svelte.d.ts +1 -1
  24. package/dist/components/core/datatable/ui/columns-create.svelte.d.ts +1 -1
  25. package/dist/components/core/panel/LeftHero.svelte +2 -2
  26. package/dist/components/core/sidebar/data/nav-top-bar-sidebar.d.ts +13 -4
  27. package/dist/components/core/sidebar/ui/navbar/NavMenuBarSidebar.svelte +3 -3
  28. package/dist/components/core/sidebar/ui/navbar/NavMenuTopBarSidebar.svelte +0 -2
  29. package/dist/components/core/sidebar/ui/navbar/nav-menu-header-sidebar.svelte +4 -5
  30. package/dist/components/pages/product-details/shared/ProductDetailFilesVertical.svelte +0 -1
  31. package/dist/components/pages/profile-user/shared/ProfileUserAddress.svelte +2 -3
  32. package/dist/components/pages/profile-user/shared/ProfileUserTabs.svelte +3 -1
  33. package/dist/components/ui/avatar/avatar-fallback.svelte +22 -12
  34. package/dist/components/ui/avatar/avatar-fallback.svelte.d.ts +3 -2
  35. package/dist/components/ui/avatar/avatar-image.svelte +31 -9
  36. package/dist/components/ui/avatar/avatar-image.svelte.d.ts +3 -2
  37. package/dist/components/ui/avatar/avatar.svelte +23 -9
  38. package/dist/components/ui/avatar/avatar.svelte.d.ts +6 -3
  39. package/dist/components/ui/avatar/context.svelte.d.ts +7 -0
  40. package/dist/components/ui/avatar/context.svelte.js +10 -0
  41. package/dist/components/ui/badge/badge.svelte +24 -26
  42. package/dist/components/ui/badge/badge.svelte.d.ts +15 -33
  43. package/dist/components/ui/button/button.svelte +35 -31
  44. package/dist/components/ui/button/button.svelte.d.ts +24 -61
  45. package/dist/components/ui/carousel/autoplay.d.ts +7 -0
  46. package/dist/components/ui/carousel/autoplay.js +7 -0
  47. package/dist/components/ui/carousel/carousel-content.svelte +31 -17
  48. package/dist/components/ui/carousel/carousel-item.svelte +2 -3
  49. package/dist/components/ui/carousel/carousel-next.svelte +1 -1
  50. package/dist/components/ui/carousel/carousel-previous.svelte +1 -1
  51. package/dist/components/ui/carousel/carousel.svelte +155 -30
  52. package/dist/components/ui/carousel/context.d.ts +23 -14
  53. package/dist/components/ui/carousel/context.js +4 -4
  54. package/dist/components/ui/carousel/index.d.ts +2 -0
  55. package/dist/components/ui/carousel/index.js +1 -0
  56. package/dist/components/ui/checkbox/checkbox.svelte +74 -17
  57. package/dist/components/ui/checkbox/checkbox.svelte.d.ts +17 -2
  58. package/dist/components/ui/collapsible/collapsible-content.svelte +27 -3
  59. package/dist/components/ui/collapsible/collapsible-content.svelte.d.ts +8 -2
  60. package/dist/components/ui/collapsible/collapsible-trigger.svelte +48 -3
  61. package/dist/components/ui/collapsible/collapsible-trigger.svelte.d.ts +10 -2
  62. package/dist/components/ui/collapsible/collapsible.svelte +62 -6
  63. package/dist/components/ui/collapsible/collapsible.svelte.d.ts +21 -2
  64. package/dist/components/ui/data-table/data-table.svelte.d.ts +2 -40
  65. package/dist/components/ui/data-table/data-table.svelte.js +1 -110
  66. package/dist/components/ui/data-table/flex-render.svelte +5 -5
  67. package/dist/components/ui/data-table/flex-render.svelte.d.ts +2 -2
  68. package/dist/components/ui/data-table/index.d.ts +2 -1
  69. package/dist/components/ui/data-table/index.js +1 -1
  70. package/dist/components/ui/data-table/table-core.svelte.d.ts +117 -0
  71. package/dist/components/ui/data-table/table-core.svelte.js +260 -0
  72. package/dist/components/ui/drawer/drawer-close.svelte +38 -3
  73. package/dist/components/ui/drawer/drawer-close.svelte.d.ts +10 -2
  74. package/dist/components/ui/drawer/drawer-content.svelte +67 -18
  75. package/dist/components/ui/drawer/drawer-content.svelte.d.ts +5 -4
  76. package/dist/components/ui/drawer/drawer-description.svelte +9 -6
  77. package/dist/components/ui/drawer/drawer-description.svelte.d.ts +3 -2
  78. package/dist/components/ui/drawer/drawer-nested.svelte +28 -5
  79. package/dist/components/ui/drawer/drawer-nested.svelte.d.ts +8 -1
  80. package/dist/components/ui/drawer/drawer-overlay.svelte +18 -9
  81. package/dist/components/ui/drawer/drawer-overlay.svelte.d.ts +3 -2
  82. package/dist/components/ui/drawer/drawer-portal.svelte +16 -3
  83. package/dist/components/ui/drawer/drawer-portal.svelte.d.ts +3 -1
  84. package/dist/components/ui/drawer/drawer-title.svelte +9 -6
  85. package/dist/components/ui/drawer/drawer-title.svelte.d.ts +3 -2
  86. package/dist/components/ui/drawer/drawer-trigger.svelte +39 -3
  87. package/dist/components/ui/drawer/drawer-trigger.svelte.d.ts +10 -2
  88. package/dist/components/ui/drawer/drawer.svelte +67 -4
  89. package/dist/components/ui/drawer/drawer.svelte.d.ts +23 -1
  90. package/dist/components/ui/dropdown-menu/dropdown-menu-checkbox-group.svelte +18 -8
  91. package/dist/components/ui/dropdown-menu/dropdown-menu-checkbox-group.svelte.d.ts +8 -2
  92. package/dist/components/ui/dropdown-menu/dropdown-menu-checkbox-item.svelte +53 -28
  93. package/dist/components/ui/dropdown-menu/dropdown-menu-checkbox-item.svelte.d.ts +8 -3
  94. package/dist/components/ui/dropdown-menu/dropdown-menu-content.svelte +93 -17
  95. package/dist/components/ui/dropdown-menu/dropdown-menu-content.svelte.d.ts +10 -6
  96. package/dist/components/ui/dropdown-menu/dropdown-menu-context.svelte.d.ts +26 -0
  97. package/dist/components/ui/dropdown-menu/dropdown-menu-context.svelte.js +27 -0
  98. package/dist/components/ui/dropdown-menu/dropdown-menu-group-heading.svelte +14 -8
  99. package/dist/components/ui/dropdown-menu/dropdown-menu-group-heading.svelte.d.ts +6 -3
  100. package/dist/components/ui/dropdown-menu/dropdown-menu-group.svelte +18 -3
  101. package/dist/components/ui/dropdown-menu/dropdown-menu-group.svelte.d.ts +7 -2
  102. package/dist/components/ui/dropdown-menu/dropdown-menu-item.svelte +42 -8
  103. package/dist/components/ui/dropdown-menu/dropdown-menu-item.svelte.d.ts +9 -2
  104. package/dist/components/ui/dropdown-menu/dropdown-menu-label.svelte +9 -5
  105. package/dist/components/ui/dropdown-menu/dropdown-menu-label.svelte.d.ts +5 -2
  106. package/dist/components/ui/dropdown-menu/dropdown-menu-portal.svelte +3 -3
  107. package/dist/components/ui/dropdown-menu/dropdown-menu-portal.svelte.d.ts +5 -1
  108. package/dist/components/ui/dropdown-menu/dropdown-menu-radio-group.svelte +36 -8
  109. package/dist/components/ui/dropdown-menu/dropdown-menu-radio-group.svelte.d.ts +9 -2
  110. package/dist/components/ui/dropdown-menu/dropdown-menu-radio-item.svelte +59 -23
  111. package/dist/components/ui/dropdown-menu/dropdown-menu-radio-item.svelte.d.ts +12 -2
  112. package/dist/components/ui/dropdown-menu/dropdown-menu-separator.svelte +11 -7
  113. package/dist/components/ui/dropdown-menu/dropdown-menu-separator.svelte.d.ts +6 -2
  114. package/dist/components/ui/dropdown-menu/dropdown-menu-sub-content.svelte +26 -9
  115. package/dist/components/ui/dropdown-menu/dropdown-menu-sub-content.svelte.d.ts +8 -2
  116. package/dist/components/ui/dropdown-menu/dropdown-menu-sub-trigger.svelte +39 -11
  117. package/dist/components/ui/dropdown-menu/dropdown-menu-sub-trigger.svelte.d.ts +7 -2
  118. package/dist/components/ui/dropdown-menu/dropdown-menu-sub.svelte +73 -3
  119. package/dist/components/ui/dropdown-menu/dropdown-menu-sub.svelte.d.ts +8 -1
  120. package/dist/components/ui/dropdown-menu/dropdown-menu-trigger.svelte +65 -3
  121. package/dist/components/ui/dropdown-menu/dropdown-menu-trigger.svelte.d.ts +12 -2
  122. package/dist/components/ui/dropdown-menu/dropdown-menu.svelte +50 -3
  123. package/dist/components/ui/dropdown-menu/dropdown-menu.svelte.d.ts +9 -1
  124. package/dist/components/ui/empty/empty-content.svelte +2 -5
  125. package/dist/components/ui/empty/empty-description.svelte +2 -5
  126. package/dist/components/ui/empty/empty-header.svelte +2 -2
  127. package/dist/components/ui/empty/empty-media.svelte +17 -16
  128. package/dist/components/ui/empty/empty-media.svelte.d.ts +10 -19
  129. package/dist/components/ui/empty/empty-title.svelte +2 -2
  130. package/dist/components/ui/empty/empty.svelte +2 -5
  131. package/dist/components/ui/input-otp/context.svelte.d.ts +22 -0
  132. package/dist/components/ui/input-otp/context.svelte.js +8 -0
  133. package/dist/components/ui/input-otp/input-otp-group.svelte +5 -2
  134. package/dist/components/ui/input-otp/input-otp-separator.svelte +5 -5
  135. package/dist/components/ui/input-otp/input-otp-slot.svelte +50 -17
  136. package/dist/components/ui/input-otp/input-otp-slot.svelte.d.ts +7 -2
  137. package/dist/components/ui/input-otp/input-otp.svelte +167 -8
  138. package/dist/components/ui/input-otp/input-otp.svelte.d.ts +17 -2
  139. package/dist/components/ui/label/label.svelte +10 -10
  140. package/dist/components/ui/label/label.svelte.d.ts +3 -2
  141. package/dist/components/ui/language-switcher/language-switcher.svelte +4 -3
  142. package/dist/components/ui/light-switch/light-switch.svelte +12 -6
  143. package/dist/components/ui/phone-input/country-selector.svelte +64 -78
  144. package/dist/components/ui/phone-input/country-selector.svelte.d.ts +6 -6
  145. package/dist/components/ui/phone-input/flag.svelte +3 -12
  146. package/dist/components/ui/phone-input/flag.svelte.d.ts +1 -1
  147. package/dist/components/ui/phone-input/flags.d.ts +2 -1
  148. package/dist/components/ui/phone-input/flags.js +4 -8
  149. package/dist/components/ui/phone-input/index.d.ts +1 -1
  150. package/dist/components/ui/phone-input/phone-input.svelte +106 -21
  151. package/dist/components/ui/phone-input/phone-input.svelte.d.ts +1 -2
  152. package/dist/components/ui/phone-input/types.d.ts +16 -1
  153. package/dist/components/ui/popover/popover-close.svelte +22 -3
  154. package/dist/components/ui/popover/popover-close.svelte.d.ts +7 -2
  155. package/dist/components/ui/popover/popover-content.svelte +80 -18
  156. package/dist/components/ui/popover/popover-content.svelte.d.ts +10 -6
  157. package/dist/components/ui/popover/popover-context.svelte.d.ts +13 -0
  158. package/dist/components/ui/popover/popover-context.svelte.js +13 -0
  159. package/dist/components/ui/popover/popover-portal.svelte +3 -3
  160. package/dist/components/ui/popover/popover-portal.svelte.d.ts +5 -1
  161. package/dist/components/ui/popover/popover-trigger.svelte +62 -10
  162. package/dist/components/ui/popover/popover-trigger.svelte.d.ts +12 -2
  163. package/dist/components/ui/popover/popover.svelte +50 -3
  164. package/dist/components/ui/popover/popover.svelte.d.ts +9 -1
  165. package/dist/components/ui/separator/separator.svelte +17 -11
  166. package/dist/components/ui/separator/separator.svelte.d.ts +7 -2
  167. package/dist/components/ui/sidebar/context.svelte.d.ts +15 -23
  168. package/dist/components/ui/sidebar/context.svelte.js +33 -21
  169. package/dist/components/ui/sidebar/sidebar-content.svelte +1 -1
  170. package/dist/components/ui/sidebar/sidebar-footer.svelte +1 -1
  171. package/dist/components/ui/sidebar/sidebar-group-content.svelte +1 -1
  172. package/dist/components/ui/sidebar/sidebar-menu-action.svelte +3 -2
  173. package/dist/components/ui/sidebar/sidebar-menu-button.svelte +35 -66
  174. package/dist/components/ui/sidebar/sidebar-menu-button.svelte.d.ts +9 -38
  175. package/dist/components/ui/sidebar/sidebar-provider.svelte +28 -18
  176. package/dist/components/ui/sidebar/sidebar-provider.svelte.d.ts +3 -0
  177. package/dist/components/ui/sidebar/sidebar-rail.svelte +1 -1
  178. package/dist/components/ui/sidebar/sidebar-separator.svelte +11 -8
  179. package/dist/components/ui/sidebar/sidebar-separator.svelte.d.ts +3 -11
  180. package/dist/components/ui/sidebar/sidebar-trigger.svelte +2 -2
  181. package/dist/components/ui/sidebar/sidebar.svelte +34 -23
  182. package/dist/components/ui/sidebar/sidebar.svelte.d.ts +1 -1
  183. package/dist/components/ui/skeleton/skeleton.svelte +7 -4
  184. package/dist/components/ui/skeleton/skeleton.svelte.d.ts +1 -1
  185. package/dist/components/ui/star-rating/star-rating-star.svelte +57 -31
  186. package/dist/components/ui/star-rating/star-rating-star.svelte.d.ts +1 -1
  187. package/dist/components/ui/star-rating/star-rating.svelte +143 -13
  188. package/dist/components/ui/star-rating/star-rating.svelte.d.ts +31 -2
  189. package/dist/components/ui/star-rating/types.d.ts +6 -1
  190. package/dist/components/ui/underline-tabs/underline-tabs-content.svelte +26 -9
  191. package/dist/components/ui/underline-tabs/underline-tabs-content.svelte.d.ts +9 -2
  192. package/dist/components/ui/underline-tabs/underline-tabs-list.svelte +15 -8
  193. package/dist/components/ui/underline-tabs/underline-tabs-list.svelte.d.ts +8 -2
  194. package/dist/components/ui/underline-tabs/underline-tabs-trigger.svelte +65 -34
  195. package/dist/components/ui/underline-tabs/underline-tabs-trigger.svelte.d.ts +14 -2
  196. package/dist/components/ui/underline-tabs/underline-tabs.svelte +49 -20
  197. package/dist/components/ui/underline-tabs/underline-tabs.svelte.d.ts +10 -2
  198. package/dist/components/ui/underline-tabs/underline-tabs.svelte.js +6 -59
  199. package/dist/docs/ApiTable.svelte +42 -0
  200. package/dist/docs/ApiTable.svelte.d.ts +7 -0
  201. package/dist/docs/CodeBlock.svelte +26 -0
  202. package/dist/docs/CodeBlock.svelte.d.ts +7 -0
  203. package/dist/docs/DocsHeader.svelte +25 -0
  204. package/dist/docs/DocsHeader.svelte.d.ts +6 -0
  205. package/dist/docs/DocsSidebar.svelte +99 -0
  206. package/dist/docs/DocsSidebar.svelte.d.ts +3 -0
  207. package/dist/docs/components.d.ts +27 -0
  208. package/dist/docs/components.js +897 -0
  209. package/dist/globals.css +460 -1617
  210. package/dist/styles/globals.css +136 -2
  211. package/dist/theme.svelte.d.ts +7 -0
  212. package/dist/theme.svelte.js +33 -0
  213. package/dist/utils.d.ts +4 -4
  214. package/dist/utils.js +18 -3
  215. package/package.json +4 -34
  216. package/dist/components/ui/chart/chart-container.svelte +0 -80
  217. package/dist/components/ui/chart/chart-container.svelte.d.ts +0 -9
  218. package/dist/components/ui/chart/chart-style.svelte +0 -37
  219. package/dist/components/ui/chart/chart-style.svelte.d.ts +0 -8
  220. package/dist/components/ui/chart/chart-tooltip.svelte +0 -184
  221. package/dist/components/ui/chart/chart-tooltip.svelte.d.ts +0 -27
  222. package/dist/components/ui/chart/chart-utils.d.ts +0 -36
  223. package/dist/components/ui/chart/chart-utils.js +0 -38
  224. package/dist/components/ui/chart/index.d.ts +0 -4
  225. package/dist/components/ui/chart/index.js +0 -4
  226. package/dist/components/ui/command/command-dialog.svelte +0 -42
  227. package/dist/components/ui/command/command-dialog.svelte.d.ts +0 -14
  228. package/dist/components/ui/command/command-empty.svelte +0 -17
  229. package/dist/components/ui/command/command-empty.svelte.d.ts +0 -4
  230. package/dist/components/ui/command/command-group.svelte +0 -33
  231. package/dist/components/ui/command/command-group.svelte.d.ts +0 -7
  232. package/dist/components/ui/command/command-input.svelte +0 -33
  233. package/dist/components/ui/command/command-input.svelte.d.ts +0 -4
  234. package/dist/components/ui/command/command-item.svelte +0 -27
  235. package/dist/components/ui/command/command-item.svelte.d.ts +0 -4
  236. package/dist/components/ui/command/command-link-item.svelte +0 -20
  237. package/dist/components/ui/command/command-link-item.svelte.d.ts +0 -4
  238. package/dist/components/ui/command/command-list.svelte +0 -20
  239. package/dist/components/ui/command/command-list.svelte.d.ts +0 -4
  240. package/dist/components/ui/command/command-loading.svelte +0 -7
  241. package/dist/components/ui/command/command-loading.svelte.d.ts +0 -4
  242. package/dist/components/ui/command/command-separator.svelte +0 -17
  243. package/dist/components/ui/command/command-separator.svelte.d.ts +0 -4
  244. package/dist/components/ui/command/command-shortcut.svelte +0 -23
  245. package/dist/components/ui/command/command-shortcut.svelte.d.ts +0 -5
  246. package/dist/components/ui/command/command.svelte +0 -28
  247. package/dist/components/ui/command/command.svelte.d.ts +0 -8
  248. package/dist/components/ui/command/index.d.ts +0 -12
  249. package/dist/components/ui/command/index.js +0 -14
  250. package/dist/components/ui/dialog/dialog-close.svelte +0 -11
  251. package/dist/components/ui/dialog/dialog-close.svelte.d.ts +0 -4
  252. package/dist/components/ui/dialog/dialog-content.svelte +0 -48
  253. package/dist/components/ui/dialog/dialog-content.svelte.d.ts +0 -13
  254. package/dist/components/ui/dialog/dialog-description.svelte +0 -20
  255. package/dist/components/ui/dialog/dialog-description.svelte.d.ts +0 -4
  256. package/dist/components/ui/dialog/dialog-footer.svelte +0 -32
  257. package/dist/components/ui/dialog/dialog-footer.svelte.d.ts +0 -8
  258. package/dist/components/ui/dialog/dialog-header.svelte +0 -20
  259. package/dist/components/ui/dialog/dialog-header.svelte.d.ts +0 -5
  260. package/dist/components/ui/dialog/dialog-overlay.svelte +0 -20
  261. package/dist/components/ui/dialog/dialog-overlay.svelte.d.ts +0 -4
  262. package/dist/components/ui/dialog/dialog-portal.svelte +0 -7
  263. package/dist/components/ui/dialog/dialog-portal.svelte.d.ts +0 -3
  264. package/dist/components/ui/dialog/dialog-title.svelte +0 -17
  265. package/dist/components/ui/dialog/dialog-title.svelte.d.ts +0 -4
  266. package/dist/components/ui/dialog/dialog-trigger.svelte +0 -11
  267. package/dist/components/ui/dialog/dialog-trigger.svelte.d.ts +0 -4
  268. package/dist/components/ui/dialog/dialog.svelte +0 -7
  269. package/dist/components/ui/dialog/dialog.svelte.d.ts +0 -3
  270. package/dist/components/ui/dialog/index.d.ts +0 -11
  271. package/dist/components/ui/dialog/index.js +0 -13
  272. package/dist/components/ui/input-group/index.d.ts +0 -7
  273. package/dist/components/ui/input-group/index.js +0 -9
  274. package/dist/components/ui/input-group/input-group-addon.svelte +0 -59
  275. package/dist/components/ui/input-group/input-group-addon.svelte.d.ts +0 -38
  276. package/dist/components/ui/input-group/input-group-button.svelte +0 -49
  277. package/dist/components/ui/input-group/input-group-button.svelte.d.ts +0 -32
  278. package/dist/components/ui/input-group/input-group-input.svelte +0 -23
  279. package/dist/components/ui/input-group/input-group-input.svelte.d.ts +0 -11
  280. package/dist/components/ui/input-group/input-group-text.svelte +0 -22
  281. package/dist/components/ui/input-group/input-group-text.svelte.d.ts +0 -5
  282. package/dist/components/ui/input-group/input-group-textarea.svelte +0 -23
  283. package/dist/components/ui/input-group/input-group-textarea.svelte.d.ts +0 -3
  284. package/dist/components/ui/input-group/input-group.svelte +0 -24
  285. package/dist/components/ui/input-group/input-group.svelte.d.ts +0 -5
  286. package/dist/components/ui/navigation-menu/index.d.ts +0 -9
  287. package/dist/components/ui/navigation-menu/index.js +0 -11
  288. package/dist/components/ui/navigation-menu/navigation-menu-content.svelte +0 -20
  289. package/dist/components/ui/navigation-menu/navigation-menu-content.svelte.d.ts +0 -4
  290. package/dist/components/ui/navigation-menu/navigation-menu-indicator.svelte +0 -22
  291. package/dist/components/ui/navigation-menu/navigation-menu-indicator.svelte.d.ts +0 -4
  292. package/dist/components/ui/navigation-menu/navigation-menu-item.svelte +0 -17
  293. package/dist/components/ui/navigation-menu/navigation-menu-item.svelte.d.ts +0 -4
  294. package/dist/components/ui/navigation-menu/navigation-menu-link.svelte +0 -17
  295. package/dist/components/ui/navigation-menu/navigation-menu-link.svelte.d.ts +0 -4
  296. package/dist/components/ui/navigation-menu/navigation-menu-list.svelte +0 -20
  297. package/dist/components/ui/navigation-menu/navigation-menu-list.svelte.d.ts +0 -4
  298. package/dist/components/ui/navigation-menu/navigation-menu-trigger.svelte +0 -30
  299. package/dist/components/ui/navigation-menu/navigation-menu-trigger.svelte.d.ts +0 -5
  300. package/dist/components/ui/navigation-menu/navigation-menu-viewport.svelte +0 -22
  301. package/dist/components/ui/navigation-menu/navigation-menu-viewport.svelte.d.ts +0 -4
  302. package/dist/components/ui/navigation-menu/navigation-menu.svelte +0 -31
  303. package/dist/components/ui/navigation-menu/navigation-menu.svelte.d.ts +0 -7
  304. package/dist/components/ui/scroll-area/index.d.ts +0 -3
  305. package/dist/components/ui/scroll-area/index.js +0 -5
  306. package/dist/components/ui/scroll-area/scroll-area-scrollbar.svelte +0 -30
  307. package/dist/components/ui/scroll-area/scroll-area-scrollbar.svelte.d.ts +0 -4
  308. package/dist/components/ui/scroll-area/scroll-area.svelte +0 -43
  309. package/dist/components/ui/scroll-area/scroll-area.svelte.d.ts +0 -11
  310. package/dist/components/ui/select/index.d.ts +0 -12
  311. package/dist/components/ui/select/index.js +0 -14
  312. package/dist/components/ui/select/select-content.svelte +0 -45
  313. package/dist/components/ui/select/select-content.svelte.d.ts +0 -11
  314. package/dist/components/ui/select/select-group-heading.svelte +0 -21
  315. package/dist/components/ui/select/select-group-heading.svelte.d.ts +0 -10
  316. package/dist/components/ui/select/select-group.svelte +0 -17
  317. package/dist/components/ui/select/select-group.svelte.d.ts +0 -4
  318. package/dist/components/ui/select/select-item.svelte +0 -41
  319. package/dist/components/ui/select/select-item.svelte.d.ts +0 -4
  320. package/dist/components/ui/select/select-label.svelte +0 -20
  321. package/dist/components/ui/select/select-label.svelte.d.ts +0 -6
  322. package/dist/components/ui/select/select-portal.svelte +0 -7
  323. package/dist/components/ui/select/select-portal.svelte.d.ts +0 -3
  324. package/dist/components/ui/select/select-scroll-down-button.svelte +0 -21
  325. package/dist/components/ui/select/select-scroll-down-button.svelte.d.ts +0 -4
  326. package/dist/components/ui/select/select-scroll-up-button.svelte +0 -21
  327. package/dist/components/ui/select/select-scroll-up-button.svelte.d.ts +0 -4
  328. package/dist/components/ui/select/select-separator.svelte +0 -18
  329. package/dist/components/ui/select/select-separator.svelte.d.ts +0 -4
  330. package/dist/components/ui/select/select-trigger.svelte +0 -30
  331. package/dist/components/ui/select/select-trigger.svelte.d.ts +0 -8
  332. package/dist/components/ui/select/select.svelte +0 -11
  333. package/dist/components/ui/select/select.svelte.d.ts +0 -3
  334. package/dist/components/ui/sheet/index.d.ts +0 -11
  335. package/dist/components/ui/sheet/index.js +0 -13
  336. package/dist/components/ui/sheet/sheet-close.svelte +0 -7
  337. package/dist/components/ui/sheet/sheet-close.svelte.d.ts +0 -4
  338. package/dist/components/ui/sheet/sheet-content.svelte +0 -56
  339. package/dist/components/ui/sheet/sheet-content.svelte.d.ts +0 -15
  340. package/dist/components/ui/sheet/sheet-description.svelte +0 -17
  341. package/dist/components/ui/sheet/sheet-description.svelte.d.ts +0 -4
  342. package/dist/components/ui/sheet/sheet-footer.svelte +0 -20
  343. package/dist/components/ui/sheet/sheet-footer.svelte.d.ts +0 -5
  344. package/dist/components/ui/sheet/sheet-header.svelte +0 -20
  345. package/dist/components/ui/sheet/sheet-header.svelte.d.ts +0 -5
  346. package/dist/components/ui/sheet/sheet-overlay.svelte +0 -17
  347. package/dist/components/ui/sheet/sheet-overlay.svelte.d.ts +0 -4
  348. package/dist/components/ui/sheet/sheet-portal.svelte +0 -7
  349. package/dist/components/ui/sheet/sheet-portal.svelte.d.ts +0 -3
  350. package/dist/components/ui/sheet/sheet-title.svelte +0 -17
  351. package/dist/components/ui/sheet/sheet-title.svelte.d.ts +0 -4
  352. package/dist/components/ui/sheet/sheet-trigger.svelte +0 -7
  353. package/dist/components/ui/sheet/sheet-trigger.svelte.d.ts +0 -4
  354. package/dist/components/ui/sheet/sheet.svelte +0 -7
  355. package/dist/components/ui/sheet/sheet.svelte.d.ts +0 -3
  356. package/dist/components/ui/spinner/index.d.ts +0 -1
  357. package/dist/components/ui/spinner/index.js +0 -1
  358. package/dist/components/ui/spinner/spinner.svelte +0 -26
  359. package/dist/components/ui/spinner/spinner.svelte.d.ts +0 -4
  360. package/dist/components/ui/tabs/index.d.ts +0 -5
  361. package/dist/components/ui/tabs/index.js +0 -7
  362. package/dist/components/ui/tabs/tabs-content.svelte +0 -17
  363. package/dist/components/ui/tabs/tabs-content.svelte.d.ts +0 -4
  364. package/dist/components/ui/tabs/tabs-list.svelte +0 -40
  365. package/dist/components/ui/tabs/tabs-list.svelte.d.ts +0 -25
  366. package/dist/components/ui/tabs/tabs-trigger.svelte +0 -23
  367. package/dist/components/ui/tabs/tabs-trigger.svelte.d.ts +0 -4
  368. package/dist/components/ui/tabs/tabs.svelte +0 -19
  369. package/dist/components/ui/tabs/tabs.svelte.d.ts +0 -4
  370. package/dist/components/ui/textarea/index.d.ts +0 -2
  371. package/dist/components/ui/textarea/index.js +0 -4
  372. package/dist/components/ui/textarea/textarea.svelte +0 -23
  373. package/dist/components/ui/textarea/textarea.svelte.d.ts +0 -5
  374. package/dist/components/ui/tooltip/index.d.ts +0 -6
  375. package/dist/components/ui/tooltip/index.js +0 -8
  376. package/dist/components/ui/tooltip/tooltip-content.svelte +0 -52
  377. package/dist/components/ui/tooltip/tooltip-content.svelte.d.ts +0 -11
  378. package/dist/components/ui/tooltip/tooltip-portal.svelte +0 -7
  379. package/dist/components/ui/tooltip/tooltip-portal.svelte.d.ts +0 -4
  380. package/dist/components/ui/tooltip/tooltip-provider.svelte +0 -7
  381. package/dist/components/ui/tooltip/tooltip-provider.svelte.d.ts +0 -4
  382. package/dist/components/ui/tooltip/tooltip-trigger.svelte +0 -7
  383. package/dist/components/ui/tooltip/tooltip-trigger.svelte.d.ts +0 -25
  384. package/dist/components/ui/tooltip/tooltip.svelte +0 -7
  385. package/dist/components/ui/tooltip/tooltip.svelte.d.ts +0 -25
  386. package/dist/vitest-examples/Welcome.svelte +0 -8
  387. package/dist/vitest-examples/Welcome.svelte.d.ts +0 -13
  388. package/dist/vitest-examples/Welcome.svelte.spec.d.ts +0 -1
  389. package/dist/vitest-examples/Welcome.svelte.spec.js +0 -11
  390. package/dist/vitest-examples/greet.d.ts +0 -1
  391. package/dist/vitest-examples/greet.js +0 -3
  392. package/dist/vitest-examples/greet.spec.d.ts +0 -1
  393. package/dist/vitest-examples/greet.spec.js +0 -7
@@ -1,7 +1,7 @@
1
1
  <script lang="ts">
2
- import emblaCarouselSvelte from "embla-carousel-svelte";
3
2
  import { cn, type WithElementRef } from "../../../utils.js";
4
3
  import { getEmblaContext } from "./context.js";
4
+ import type { Action } from "svelte/action";
5
5
  import type { HTMLAttributes } from "svelte/elements";
6
6
 
7
7
  let {
@@ -12,32 +12,46 @@
12
12
  }: WithElementRef<HTMLAttributes<HTMLDivElement>> = $props();
13
13
 
14
14
  const emblaCtx = getEmblaContext("<Carousel.Content/>");
15
+
16
+ let containerEl = $state<HTMLDivElement | null>(null);
17
+
18
+ $effect(() => {
19
+ emblaCtx.setContainer(containerEl);
20
+ });
21
+
22
+ const carouselKeyboard = ((node: HTMLElement) => {
23
+ const handler = (event: KeyboardEvent) => emblaCtx.handleKeyDown(event);
24
+ node.addEventListener("keydown", handler);
25
+ return {
26
+ destroy() {
27
+ node.removeEventListener("keydown", handler);
28
+ },
29
+ };
30
+ }) satisfies Action;
15
31
  </script>
16
32
 
17
33
  <div
34
+ bind:this={ref}
18
35
  data-slot="carousel-content"
19
36
  class="overflow-hidden"
20
- use:emblaCarouselSvelte={{
21
- options: {
22
- container: "[data-embla-container]",
23
- slides: "[data-embla-slide]",
24
- ...emblaCtx.options,
25
- axis: emblaCtx.orientation === "horizontal" ? "x" : "y",
26
- },
27
- plugins: emblaCtx.plugins,
28
- }}
29
- onemblaInit={emblaCtx.onInit}
37
+ {...restProps}
30
38
  >
39
+ <!-- svelte-ignore a11y_no_noninteractive_tabindex -->
31
40
  <div
32
- bind:this={ref}
41
+ bind:this={containerEl}
42
+ use:carouselKeyboard
43
+ role="region"
44
+ aria-roledescription="carousel"
45
+ aria-label="Carousel"
46
+ tabindex="0"
33
47
  class={cn(
34
- "flex",
35
- emblaCtx.orientation === "horizontal" ? "-ms-4" : "-mt-4 flex-col",
48
+ emblaCtx.orientation === "horizontal"
49
+ ? "flex flex-row overflow-x-auto snap-x snap-mandatory scroll-smooth no-scrollbar -ms-4"
50
+ : "flex flex-col overflow-y-auto snap-y snap-mandatory scroll-smooth no-scrollbar -mt-4",
36
51
  className
37
52
  )}
38
- data-embla-container=""
39
- {...restProps}
53
+ onscroll={emblaCtx.onScroll}
40
54
  >
41
55
  {@render children?.()}
42
56
  </div>
43
- </div>
57
+ </div>
@@ -19,11 +19,10 @@
19
19
  role="group"
20
20
  aria-roledescription="slide"
21
21
  class={cn(
22
- "min-w-0 shrink-0 grow-0 basis-full",
22
+ "w-min shrink-0 grow-0",
23
23
  emblaCtx.orientation === "horizontal" ? "ps-4" : "pt-4",
24
- className
24
+ className,
25
25
  )}
26
- data-embla-slide=""
27
26
  {...restProps}
28
27
  >
29
28
  {@render children?.()}
@@ -4,7 +4,7 @@
4
4
  import { Button, type Props } from "../button/index.js";
5
5
  import { cn } from "../../../utils.js";
6
6
  import { getEmblaContext } from "./context.js";
7
- import type { WithoutChildren } from "bits-ui";
7
+ import type { WithoutChildren } from "../../../utils.js";
8
8
 
9
9
  let {
10
10
  ref = $bindable(null),
@@ -4,7 +4,7 @@
4
4
  import { Button, type Props } from "../button/index.js";
5
5
  import { cn } from "../../../utils.js";
6
6
  import { getEmblaContext } from "./context.js";
7
- import type { WithoutChildren } from "bits-ui";
7
+ import type { WithoutChildren } from "../../../utils.js";
8
8
 
9
9
  let {
10
10
  ref = $bindable(null),
@@ -18,44 +18,122 @@
18
18
  ...restProps
19
19
  }: WithElementRef<CarouselProps> = $props();
20
20
 
21
+ let isVertical = $derived(orientation === "vertical");
22
+ let available = $state(false);
23
+
21
24
  // svelte-ignore state_referenced_locally
22
- let carouselState = $state<EmblaContext>({
23
- api: undefined,
24
- scrollPrev,
25
- scrollNext,
25
+ let ctx = $state<EmblaContext>({
26
26
  orientation,
27
+ containerEl: undefined,
27
28
  canScrollNext: false,
28
29
  canScrollPrev: false,
29
- handleKeyDown,
30
- options: opts,
31
- plugins,
32
- onInit,
33
- scrollSnaps: [],
34
30
  selectedIndex: 0,
31
+ scrollSnaps: [],
32
+ scrollPrev,
33
+ scrollNext,
35
34
  scrollTo,
35
+ onScroll,
36
+ handleKeyDown,
37
+ plugins,
38
+ setContainer,
36
39
  });
37
40
 
38
- setEmblaContext(carouselState);
41
+ setEmblaContext(ctx);
39
42
 
40
- function scrollPrev() {
41
- carouselState.api?.scrollPrev();
43
+ function setContainer(el: HTMLDivElement | null | undefined) {
44
+ ctx.containerEl = el ?? undefined;
45
+ available = el != null;
46
+ updateScrollSnaps();
47
+ onScroll();
42
48
  }
43
49
 
44
- function scrollNext() {
45
- carouselState.api?.scrollNext();
50
+ function getSlides(): HTMLElement[] {
51
+ const container = ctx.containerEl;
52
+ if (!container) return [];
53
+ return Array.from(
54
+ container.querySelectorAll<HTMLElement>("[data-slot='carousel-item']")
55
+ );
56
+ }
57
+
58
+ function updateScrollSnaps() {
59
+ const container = ctx.containerEl;
60
+ if (!container) {
61
+ ctx.scrollSnaps = [];
62
+ return;
63
+ }
64
+ const scrollPos = isVertical ? container.scrollTop : container.scrollLeft;
65
+ const origin = isVertical
66
+ ? container.getBoundingClientRect().top
67
+ : container.getBoundingClientRect().left;
68
+ ctx.scrollSnaps = getSlides().map((slide) => {
69
+ const slidePos = isVertical
70
+ ? slide.getBoundingClientRect().top
71
+ : slide.getBoundingClientRect().left;
72
+ return slidePos - origin + scrollPos;
73
+ });
74
+ }
75
+
76
+ function onScroll() {
77
+ const container = ctx.containerEl;
78
+ if (!container) return;
79
+ const pos = isVertical ? container.scrollTop : container.scrollLeft;
80
+ const size = isVertical ? container.clientHeight : container.clientWidth;
81
+ const scrollSize = isVertical
82
+ ? container.scrollHeight
83
+ : container.scrollWidth;
84
+ const max = Math.max(0, scrollSize - size);
85
+ ctx.canScrollPrev = pos > 1;
86
+ ctx.canScrollNext = pos < max - 1;
87
+ const snaps = ctx.scrollSnaps;
88
+ let closest = 0;
89
+ let minDistance = Infinity;
90
+ for (let i = 0; i < snaps.length; i++) {
91
+ const distance = Math.abs(snaps[i] - pos);
92
+ if (distance < minDistance) {
93
+ minDistance = distance;
94
+ closest = i;
95
+ }
96
+ }
97
+ ctx.selectedIndex = minDistance === Infinity ? 0 : closest;
46
98
  }
47
99
 
48
100
  function scrollTo(index: number, jump?: boolean) {
49
- carouselState.api?.scrollTo(index, jump);
101
+ const container = ctx.containerEl;
102
+ const snaps = ctx.scrollSnaps;
103
+ if (!container || snaps.length === 0) return;
104
+ const target = Math.min(Math.max(index, 0), snaps.length - 1);
105
+ const snap = snaps[target];
106
+ container.scrollTo({
107
+ left: isVertical ? 0 : snap,
108
+ top: isVertical ? snap : 0,
109
+ behavior: jump ? "instant" : "smooth",
110
+ });
111
+ }
112
+
113
+ function scrollPrev() {
114
+ scrollTo(ctx.selectedIndex - 1);
50
115
  }
51
116
 
52
- function onSelect() {
53
- if (!carouselState.api) return;
54
- carouselState.selectedIndex = carouselState.api.selectedScrollSnap();
55
- carouselState.canScrollNext = carouselState.api.canScrollNext();
56
- carouselState.canScrollPrev = carouselState.api.canScrollPrev();
117
+ function scrollNext() {
118
+ scrollTo(ctx.selectedIndex + 1);
119
+ }
120
+
121
+ function buildApi(): CarouselAPI {
122
+ return {
123
+ scrollPrev,
124
+ scrollNext,
125
+ canScrollPrev: ctx.canScrollPrev,
126
+ canScrollNext: ctx.canScrollNext,
127
+ selectedIndex: ctx.selectedIndex,
128
+ scrollTo,
129
+ scrollSnapList: () => ctx.scrollSnaps.slice(),
130
+ };
57
131
  }
58
132
 
133
+ $effect(() => {
134
+ setApi(buildApi());
135
+ });
136
+
59
137
  function handleKeyDown(e: KeyboardEvent) {
60
138
  if (e.key === "ArrowLeft") {
61
139
  e.preventDefault();
@@ -66,18 +144,65 @@
66
144
  }
67
145
  }
68
146
 
69
- function onInit(event: CustomEvent<CarouselAPI>) {
70
- carouselState.api = event.detail;
71
- setApi(carouselState.api);
147
+ $effect(() => {
148
+ if (!available) return;
149
+ const container = ctx.containerEl;
150
+ if (!container) return;
151
+ const plugin = plugins[0];
152
+ if (!plugin?.delay) return;
72
153
 
73
- carouselState.scrollSnaps = carouselState.api.scrollSnapList();
74
- carouselState.api.on("select", onSelect);
75
- onSelect();
76
- }
154
+ let stopped = false;
155
+ let timer: number | undefined;
156
+ let lastIndex = ctx.selectedIndex;
157
+
158
+ const clearTimer = () => {
159
+ if (timer !== undefined) window.clearTimeout(timer);
160
+ };
161
+
162
+ const cleanup = () => {
163
+ stopped = true;
164
+ clearTimer();
165
+ };
166
+
167
+ const schedule = () => {
168
+ if (stopped) return;
169
+ timer = window.setTimeout(() => {
170
+ if (stopped) return;
171
+ if (ctx.canScrollNext) {
172
+ scrollNext();
173
+ } else if (plugin.loop) {
174
+ scrollTo(0, true);
175
+ }
176
+ lastIndex = ctx.selectedIndex;
177
+ schedule();
178
+ }, plugin.delay);
179
+ };
180
+
181
+ const onPointer = () => {
182
+ if (stopped) return;
183
+ if (plugin.stopOnInteraction) cleanup();
184
+ };
185
+
186
+ const onScrollReset = () => {
187
+ if (stopped || plugin.stopOnInteraction) return;
188
+ if (ctx.selectedIndex !== lastIndex) {
189
+ clearTimer();
190
+ lastIndex = ctx.selectedIndex;
191
+ schedule();
192
+ }
193
+ };
194
+
195
+ container.addEventListener("pointerdown", onPointer);
196
+ container.addEventListener("touchstart", onPointer);
197
+ container.addEventListener("scroll", onScrollReset, { passive: true });
198
+
199
+ schedule();
77
200
 
78
- $effect(() => {
79
201
  return () => {
80
- carouselState.api?.off("select", onSelect);
202
+ cleanup();
203
+ container.removeEventListener("pointerdown", onPointer);
204
+ container.removeEventListener("touchstart", onPointer);
205
+ container.removeEventListener("scroll", onScrollReset);
81
206
  };
82
207
  });
83
208
  </script>
@@ -91,4 +216,4 @@
91
216
  {...restProps}
92
217
  >
93
218
  {@render children?.()}
94
- </div>
219
+ </div>
@@ -1,10 +1,20 @@
1
1
  import type { WithElementRef } from "../../../utils.js";
2
- import type { EmblaCarouselSvelteType, default as emblaCarouselSvelte } from "embla-carousel-svelte";
3
2
  import type { HTMLAttributes } from "svelte/elements";
4
- export type CarouselAPI = NonNullable<NonNullable<EmblaCarouselSvelteType["$$_attributes"]>["on:emblaInit"]> extends (evt: CustomEvent<infer CarouselAPI>) => void ? CarouselAPI : never;
5
- type EmblaCarouselConfig = NonNullable<Parameters<typeof emblaCarouselSvelte>[1]>;
6
- export type CarouselOptions = EmblaCarouselConfig["options"];
7
- export type CarouselPlugins = EmblaCarouselConfig["plugins"];
3
+ export type CarouselAPI = {
4
+ scrollPrev: () => void;
5
+ scrollNext: () => void;
6
+ canScrollPrev: boolean;
7
+ canScrollNext: boolean;
8
+ selectedIndex: number;
9
+ scrollTo: (index: number) => void;
10
+ scrollSnapList: () => number[];
11
+ };
12
+ export type CarouselOptions = Record<string, unknown>;
13
+ export type CarouselPlugins = {
14
+ delay?: number;
15
+ stopOnInteraction?: boolean;
16
+ loop?: boolean;
17
+ }[];
8
18
  export type CarouselProps = {
9
19
  opts?: CarouselOptions;
10
20
  plugins?: CarouselPlugins;
@@ -12,20 +22,19 @@ export type CarouselProps = {
12
22
  orientation?: "horizontal" | "vertical";
13
23
  } & WithElementRef<HTMLAttributes<HTMLDivElement>>;
14
24
  export type EmblaContext = {
15
- api: CarouselAPI | undefined;
16
25
  orientation: "horizontal" | "vertical";
17
- scrollNext: () => void;
18
- scrollPrev: () => void;
26
+ containerEl: HTMLElement | undefined;
19
27
  canScrollNext: boolean;
20
28
  canScrollPrev: boolean;
29
+ selectedIndex: number;
30
+ scrollSnaps: number[];
31
+ scrollPrev: () => void;
32
+ scrollNext: () => void;
33
+ scrollTo: (index: number, jump?: boolean) => void;
34
+ onScroll: () => void;
21
35
  handleKeyDown: (e: KeyboardEvent) => void;
22
- options: CarouselOptions;
23
36
  plugins: CarouselPlugins;
24
- onInit: (e: CustomEvent<CarouselAPI>) => void;
25
- scrollTo: (index: number, jump?: boolean) => void;
26
- scrollSnaps: number[];
27
- selectedIndex: number;
37
+ setContainer: (el: HTMLDivElement | null | undefined) => void;
28
38
  };
29
39
  export declare function setEmblaContext(config: EmblaContext): EmblaContext;
30
40
  export declare function getEmblaContext(name?: string): EmblaContext;
31
- export {};
@@ -1,12 +1,12 @@
1
1
  import { getContext, hasContext, setContext } from "svelte";
2
- const EMBLA_CAROUSEL_CONTEXT = Symbol("EMBLA_CAROUSEL_CONTEXT");
2
+ const CAROUSEL_CONTEXT = Symbol("CAROUSEL_CONTEXT");
3
3
  export function setEmblaContext(config) {
4
- setContext(EMBLA_CAROUSEL_CONTEXT, config);
4
+ setContext(CAROUSEL_CONTEXT, config);
5
5
  return config;
6
6
  }
7
7
  export function getEmblaContext(name = "This component") {
8
- if (!hasContext(EMBLA_CAROUSEL_CONTEXT)) {
8
+ if (!hasContext(CAROUSEL_CONTEXT)) {
9
9
  throw new Error(`${name} must be used within a <Carousel.Root> component`);
10
10
  }
11
- return getContext(EMBLA_CAROUSEL_CONTEXT);
11
+ return getContext(CAROUSEL_CONTEXT);
12
12
  }
@@ -4,3 +4,5 @@ import Next from "./carousel-next.svelte";
4
4
  import Previous from "./carousel-previous.svelte";
5
5
  import Root from "./carousel.svelte";
6
6
  export { Root, Content, Item, Previous, Next, Root as Carousel, Content as CarouselContent, Item as CarouselItem, Previous as CarouselPrevious, Next as CarouselNext, };
7
+ export { autoplay, type AutoplayOptions } from "./autoplay.js";
8
+ export type { CarouselAPI, CarouselOptions, CarouselPlugins, CarouselProps, } from "./context.js";
@@ -6,3 +6,4 @@ import Root from "./carousel.svelte";
6
6
  export { Root, Content, Item, Previous, Next,
7
7
  //
8
8
  Root as Carousel, Content as CarouselContent, Item as CarouselItem, Previous as CarouselPrevious, Next as CarouselNext, };
9
+ export { autoplay } from "./autoplay.js";
@@ -1,40 +1,97 @@
1
1
  <script lang="ts">
2
- import { Checkbox as CheckboxPrimitive } from "bits-ui";
3
- import { cn, type WithoutChildrenOrChild } from "../../../utils.js";
4
- import { HugeiconsIcon } from "@hugeicons/svelte"
5
- import { Tick02Icon } from '@hugeicons/core-free-icons';
6
- import { MinusSignIcon } from '@hugeicons/core-free-icons';
2
+ import type { Snippet } from "svelte";
3
+ import type { HTMLButtonAttributes } from "svelte/elements";
4
+ import { cn } from "../../../utils.js";
5
+ import { HugeiconsIcon } from "@hugeicons/svelte";
6
+ import { Tick02Icon } from "@hugeicons/core-free-icons";
7
+ import { MinusSignIcon } from "@hugeicons/core-free-icons";
8
+
9
+ type CheckboxState = boolean | "indeterminate";
7
10
 
8
11
  let {
9
12
  ref = $bindable(null),
10
13
  checked = $bindable(false),
11
14
  indeterminate = $bindable(false),
15
+ onCheckedChange,
16
+ disabled = false,
17
+ id,
18
+ value,
19
+ name,
12
20
  class: className,
21
+ children,
22
+ onclick,
13
23
  ...restProps
14
- }: WithoutChildrenOrChild<CheckboxPrimitive.RootProps> = $props();
24
+ }: HTMLButtonAttributes & {
25
+ checked?: CheckboxState;
26
+ indeterminate?: boolean;
27
+ onCheckedChange?: (checked: boolean) => void;
28
+ id?: string;
29
+ value?: string;
30
+ name?: string;
31
+ children?: Snippet<[{ checked: boolean; indeterminate: boolean }]>;
32
+ ref?: HTMLButtonElement | null;
33
+ } = $props();
34
+
35
+ const state = $derived(
36
+ checked === "indeterminate" || indeterminate ? "indeterminate" : checked ? "checked" : "unchecked"
37
+ );
38
+ const isChecked = $derived(checked !== false && checked !== "indeterminate");
39
+ const isIndeterminate = $derived(state === "indeterminate");
40
+
41
+ function handleClick(event: MouseEvent & { currentTarget: HTMLButtonElement }) {
42
+ if (disabled) return;
43
+ onclick?.(event);
44
+ const next = isIndeterminate ? true : !isChecked;
45
+ indeterminate = false;
46
+ checked = next;
47
+ onCheckedChange?.(next);
48
+ }
15
49
  </script>
16
50
 
17
- <CheckboxPrimitive.Root
18
- bind:ref
51
+ <button
52
+ bind:this={ref}
53
+ type="button"
54
+ role="checkbox"
55
+ aria-checked={isIndeterminate ? "mixed" : isChecked}
19
56
  data-slot="checkbox"
57
+ data-state={state}
58
+ disabled={disabled}
59
+ {id}
60
+ {name}
61
+ {value}
20
62
  class={cn(
21
63
  "border-input dark:bg-input/30 data-checked:bg-primary data-checked:text-primary-foreground dark:data-checked:bg-primary data-checked:border-primary aria-invalid:aria-checked:border-primary aria-invalid:border-destructive dark:aria-invalid:border-destructive/50 focus-visible:border-ring focus-visible:ring-ring/50 aria-invalid:ring-destructive/20 dark:aria-invalid:ring-destructive/40 flex size-4 items-center justify-center rounded-[6px] border transition-shadow group-has-disabled/field:opacity-50 focus-visible:ring-[3px] aria-invalid:ring-[3px] peer relative shrink-0 outline-none after:absolute after:-inset-x-3 after:-inset-y-2 disabled:cursor-not-allowed disabled:opacity-50",
22
64
  className
23
65
  )}
24
- bind:checked
25
- bind:indeterminate
66
+ onclick={handleClick}
26
67
  {...restProps}
27
68
  >
28
- {#snippet children({ checked, indeterminate })}
69
+ {#if children}
70
+ {@render children({ checked: isChecked, indeterminate: isIndeterminate })}
71
+ {:else}
29
72
  <div
30
73
  data-slot="checkbox-indicator"
31
74
  class="[&>svg]:size-3.5 grid place-content-center text-current transition-none"
32
75
  >
33
- {#if checked}
34
- <HugeiconsIcon icon={Tick02Icon} strokeWidth={2} />
35
- {:else if indeterminate}
36
- <HugeiconsIcon icon={MinusSignIcon} strokeWidth={2} />
76
+ {#if isChecked}
77
+ <HugeiconsIcon icon={Tick02Icon} strokeWidth={2} />
78
+ {:else if isIndeterminate}
79
+ <HugeiconsIcon icon={MinusSignIcon} strokeWidth={2} />
37
80
  {/if}
38
81
  </div>
39
- {/snippet}
40
- </CheckboxPrimitive.Root>
82
+ {/if}
83
+ </button>
84
+
85
+ {#if name}
86
+ <input
87
+ type="checkbox"
88
+ class="sr-only pointer-events-none"
89
+ tabindex="-1"
90
+ aria-hidden="true"
91
+ {name}
92
+ {value}
93
+ checked={isChecked}
94
+ disabled={disabled}
95
+ onchange={() => {}}
96
+ />
97
+ {/if}
@@ -1,4 +1,19 @@
1
- import { Checkbox as CheckboxPrimitive } from "bits-ui";
2
- declare const Checkbox: import("svelte").Component<Omit<Omit<CheckboxPrimitive.RootProps, "child">, "children">, {}, "ref" | "checked" | "indeterminate">;
1
+ import type { Snippet } from "svelte";
2
+ import type { HTMLButtonAttributes } from "svelte/elements";
3
+ type CheckboxState = boolean | "indeterminate";
4
+ type $$ComponentProps = HTMLButtonAttributes & {
5
+ checked?: CheckboxState;
6
+ indeterminate?: boolean;
7
+ onCheckedChange?: (checked: boolean) => void;
8
+ id?: string;
9
+ value?: string;
10
+ name?: string;
11
+ children?: Snippet<[{
12
+ checked: boolean;
13
+ indeterminate: boolean;
14
+ }]>;
15
+ ref?: HTMLButtonElement | null;
16
+ };
17
+ declare const Checkbox: import("svelte").Component<$$ComponentProps, {}, "ref" | "checked" | "indeterminate">;
3
18
  type Checkbox = ReturnType<typeof Checkbox>;
4
19
  export default Checkbox;
@@ -1,7 +1,31 @@
1
1
  <script lang="ts">
2
- import { Collapsible as CollapsiblePrimitive } from "bits-ui";
2
+ import type { Snippet } from "svelte";
3
+ import { cn } from "../../../utils.js";
4
+ import { useCollapsibleContext } from "./collapsible.svelte";
3
5
 
4
- let { ref = $bindable(null), ...restProps }: CollapsiblePrimitive.ContentProps = $props();
6
+ let {
7
+ ref = $bindable(null),
8
+ class: className,
9
+ children,
10
+ ...restProps
11
+ }: {
12
+ ref?: HTMLDivElement | null;
13
+ class?: string;
14
+ children?: Snippet;
15
+ [key: string]: unknown;
16
+ } = $props();
17
+
18
+ const state = useCollapsibleContext();
5
19
  </script>
6
20
 
7
- <CollapsiblePrimitive.Content bind:ref data-slot="collapsible-content" {...restProps} />
21
+ {#if state.open}
22
+ <div
23
+ bind:this={ref}
24
+ data-slot="collapsible-content"
25
+ data-state={state.open ? "open" : "closed"}
26
+ class={cn("animate-fade-in", className)}
27
+ {...restProps}
28
+ >
29
+ {@render children?.()}
30
+ </div>
31
+ {/if}
@@ -1,4 +1,10 @@
1
- import { Collapsible as CollapsiblePrimitive } from "bits-ui";
2
- declare const CollapsibleContent: import("svelte").Component<CollapsiblePrimitive.ContentProps, {}, "ref">;
1
+ import type { Snippet } from "svelte";
2
+ type $$ComponentProps = {
3
+ ref?: HTMLDivElement | null;
4
+ class?: string;
5
+ children?: Snippet;
6
+ [key: string]: unknown;
7
+ };
8
+ declare const CollapsibleContent: import("svelte").Component<$$ComponentProps, {}, "ref">;
3
9
  type CollapsibleContent = ReturnType<typeof CollapsibleContent>;
4
10
  export default CollapsibleContent;
@@ -1,7 +1,52 @@
1
1
  <script lang="ts">
2
- import { Collapsible as CollapsiblePrimitive } from "bits-ui";
2
+ import type { Snippet } from "svelte";
3
+ import type { HTMLButtonAttributes } from "svelte/elements";
4
+ import { useCollapsibleContext } from "./collapsible.svelte";
3
5
 
4
- let { ref = $bindable(null), ...restProps }: CollapsiblePrimitive.TriggerProps = $props();
6
+ let {
7
+ ref = $bindable(null),
8
+ class: className,
9
+ children,
10
+ child,
11
+ onclick,
12
+ ...restProps
13
+ }: HTMLButtonAttributes & {
14
+ children?: Snippet;
15
+ child?: Snippet<[{ props: Record<string, unknown> }]>;
16
+ ref?: HTMLButtonElement | null;
17
+ } = $props();
18
+
19
+ const state = useCollapsibleContext();
20
+
21
+ function handleClick(event: MouseEvent & { currentTarget: HTMLButtonElement }) {
22
+ onclick?.(event);
23
+ state.toggle();
24
+ }
25
+
26
+ const triggerProps = $derived({
27
+ type: "button",
28
+ "data-slot": "collapsible-trigger",
29
+ "data-state": state.open ? "open" : "closed",
30
+ "aria-expanded": state.open,
31
+ disabled: state.disabled || undefined,
32
+ class: className
33
+ });
5
34
  </script>
6
35
 
7
- <CollapsiblePrimitive.Trigger bind:ref data-slot="collapsible-trigger" {...restProps} />
36
+ {#if child}
37
+ {@render child({ props: { ...triggerProps, onclick: handleClick, ...restProps } })}
38
+ {:else}
39
+ <button
40
+ bind:this={ref}
41
+ type="button"
42
+ data-slot="collapsible-trigger"
43
+ data-state={state.open ? "open" : "closed"}
44
+ aria-expanded={state.open}
45
+ disabled={state.disabled}
46
+ class={className}
47
+ onclick={handleClick}
48
+ {...restProps}
49
+ >
50
+ {@render children?.()}
51
+ </button>
52
+ {/if}
@@ -1,4 +1,12 @@
1
- import { Collapsible as CollapsiblePrimitive } from "bits-ui";
2
- declare const CollapsibleTrigger: import("svelte").Component<CollapsiblePrimitive.TriggerProps, {}, "ref">;
1
+ import type { Snippet } from "svelte";
2
+ import type { HTMLButtonAttributes } from "svelte/elements";
3
+ type $$ComponentProps = HTMLButtonAttributes & {
4
+ children?: Snippet;
5
+ child?: Snippet<[{
6
+ props: Record<string, unknown>;
7
+ }]>;
8
+ ref?: HTMLButtonElement | null;
9
+ };
10
+ declare const CollapsibleTrigger: import("svelte").Component<$$ComponentProps, {}, "ref">;
3
11
  type CollapsibleTrigger = ReturnType<typeof CollapsibleTrigger>;
4
12
  export default CollapsibleTrigger;