svelte-ag 0.0.2-dev.73 → 0.0.2-dev.80

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 (445) hide show
  1. package/README.md +12 -0
  2. package/dist/app.css +0 -4
  3. package/dist/lib/api/form.svelte.d.ts +11 -0
  4. package/dist/lib/api/form.svelte.d.ts.map +1 -0
  5. package/dist/lib/api/form.svelte.js +43 -0
  6. package/dist/lib/api/index.d.ts +3 -0
  7. package/dist/lib/api/index.d.ts.map +1 -0
  8. package/dist/lib/api/index.js +2 -0
  9. package/dist/lib/api/query.svelte.d.ts +21 -0
  10. package/dist/lib/api/query.svelte.d.ts.map +1 -0
  11. package/dist/lib/api/query.svelte.js +47 -0
  12. package/dist/lib/bits/internal/arrays.d.ts +1 -0
  13. package/dist/lib/bits/internal/arrays.d.ts.map +1 -0
  14. package/dist/lib/bits/internal/arrays.test.d.ts +1 -0
  15. package/dist/lib/bits/internal/arrays.test.d.ts.map +1 -0
  16. package/dist/lib/bits/internal/attrs.d.ts +1 -0
  17. package/dist/lib/bits/internal/attrs.d.ts.map +1 -0
  18. package/dist/lib/bits/internal/box-auto-reset.svelte.d.ts +1 -0
  19. package/dist/lib/bits/internal/box-auto-reset.svelte.d.ts.map +1 -0
  20. package/dist/lib/bits/internal/box.svelte.d.ts +1 -0
  21. package/dist/lib/bits/internal/box.svelte.d.ts.map +1 -0
  22. package/dist/lib/bits/internal/clamp.d.ts +1 -0
  23. package/dist/lib/bits/internal/clamp.d.ts.map +1 -0
  24. package/dist/lib/bits/internal/clamp.test.d.ts +1 -0
  25. package/dist/lib/bits/internal/clamp.test.d.ts.map +1 -0
  26. package/dist/lib/bits/internal/create-event-hook.svelte.d.ts +1 -0
  27. package/dist/lib/bits/internal/create-event-hook.svelte.d.ts.map +1 -0
  28. package/dist/lib/bits/internal/create-shared-hook.svelte.d.ts +1 -0
  29. package/dist/lib/bits/internal/create-shared-hook.svelte.d.ts.map +1 -0
  30. package/dist/lib/bits/internal/date-time/announcer.d.ts +2 -1
  31. package/dist/lib/bits/internal/date-time/announcer.d.ts.map +1 -0
  32. package/dist/lib/bits/internal/date-time/calendar-helpers.svelte.d.ts +1 -0
  33. package/dist/lib/bits/internal/date-time/calendar-helpers.svelte.d.ts.map +1 -0
  34. package/dist/lib/bits/internal/date-time/field/helpers.d.ts +1 -0
  35. package/dist/lib/bits/internal/date-time/field/helpers.d.ts.map +1 -0
  36. package/dist/lib/bits/internal/date-time/field/parts.d.ts +1 -0
  37. package/dist/lib/bits/internal/date-time/field/parts.d.ts.map +1 -0
  38. package/dist/lib/bits/internal/date-time/field/segments.d.ts +1 -0
  39. package/dist/lib/bits/internal/date-time/field/segments.d.ts.map +1 -0
  40. package/dist/lib/bits/internal/date-time/field/types.d.ts +1 -0
  41. package/dist/lib/bits/internal/date-time/field/types.d.ts.map +1 -0
  42. package/dist/lib/bits/internal/date-time/formatter.d.ts +1 -0
  43. package/dist/lib/bits/internal/date-time/formatter.d.ts.map +1 -0
  44. package/dist/lib/bits/internal/date-time/placeholders.d.ts +1 -0
  45. package/dist/lib/bits/internal/date-time/placeholders.d.ts.map +1 -0
  46. package/dist/lib/bits/internal/date-time/utils.d.ts +1 -0
  47. package/dist/lib/bits/internal/date-time/utils.d.ts.map +1 -0
  48. package/dist/lib/bits/internal/debounce.d.ts +1 -0
  49. package/dist/lib/bits/internal/debounce.d.ts.map +1 -0
  50. package/dist/lib/bits/internal/debounce.test.d.ts +1 -0
  51. package/dist/lib/bits/internal/debounce.test.d.ts.map +1 -0
  52. package/dist/lib/bits/internal/dom.d.ts +1 -0
  53. package/dist/lib/bits/internal/dom.d.ts.map +1 -0
  54. package/dist/lib/bits/internal/elements.d.ts +1 -0
  55. package/dist/lib/bits/internal/elements.d.ts.map +1 -0
  56. package/dist/lib/bits/internal/events.d.ts +1 -0
  57. package/dist/lib/bits/internal/events.d.ts.map +1 -0
  58. package/dist/lib/bits/internal/floating-svelte/floating-utils.svelte.d.ts +1 -0
  59. package/dist/lib/bits/internal/floating-svelte/floating-utils.svelte.d.ts.map +1 -0
  60. package/dist/lib/bits/internal/floating-svelte/types.d.ts +1 -0
  61. package/dist/lib/bits/internal/floating-svelte/types.d.ts.map +1 -0
  62. package/dist/lib/bits/internal/floating-svelte/use-floating.svelte.d.ts +1 -0
  63. package/dist/lib/bits/internal/floating-svelte/use-floating.svelte.d.ts.map +1 -0
  64. package/dist/lib/bits/internal/focus.d.ts +1 -0
  65. package/dist/lib/bits/internal/focus.d.ts.map +1 -0
  66. package/dist/lib/bits/internal/get-directional-keys.d.ts +1 -0
  67. package/dist/lib/bits/internal/get-directional-keys.d.ts.map +1 -0
  68. package/dist/lib/bits/internal/get-directional-keys.test.d.ts +1 -0
  69. package/dist/lib/bits/internal/get-directional-keys.test.d.ts.map +1 -0
  70. package/dist/lib/bits/internal/is.d.ts +1 -0
  71. package/dist/lib/bits/internal/is.d.ts.map +1 -0
  72. package/dist/lib/bits/internal/is.test.d.ts +1 -0
  73. package/dist/lib/bits/internal/is.test.d.ts.map +1 -0
  74. package/dist/lib/bits/internal/kbd-constants.d.ts +1 -0
  75. package/dist/lib/bits/internal/kbd-constants.d.ts.map +1 -0
  76. package/dist/lib/bits/internal/kbd.d.ts +1 -0
  77. package/dist/lib/bits/internal/kbd.d.ts.map +1 -0
  78. package/dist/lib/bits/internal/locale.d.ts +1 -0
  79. package/dist/lib/bits/internal/locale.d.ts.map +1 -0
  80. package/dist/lib/bits/internal/math.d.ts +1 -0
  81. package/dist/lib/bits/internal/math.d.ts.map +1 -0
  82. package/dist/lib/bits/internal/math.test.d.ts +1 -0
  83. package/dist/lib/bits/internal/math.test.d.ts.map +1 -0
  84. package/dist/lib/bits/internal/noop.d.ts +1 -0
  85. package/dist/lib/bits/internal/noop.d.ts.map +1 -0
  86. package/dist/lib/bits/internal/should-trap-focus.d.ts +1 -0
  87. package/dist/lib/bits/internal/should-trap-focus.d.ts.map +1 -0
  88. package/dist/lib/bits/internal/sleep.d.ts +1 -0
  89. package/dist/lib/bits/internal/sleep.d.ts.map +1 -0
  90. package/dist/lib/bits/internal/tabbable.d.ts +1 -0
  91. package/dist/lib/bits/internal/tabbable.d.ts.map +1 -0
  92. package/dist/lib/bits/internal/types.d.ts +1 -0
  93. package/dist/lib/bits/internal/types.d.ts.map +1 -0
  94. package/dist/lib/bits/internal/use-after-animations.svelte.d.ts +1 -0
  95. package/dist/lib/bits/internal/use-after-animations.svelte.d.ts.map +1 -0
  96. package/dist/lib/bits/internal/use-arrow-navigation.d.ts +1 -0
  97. package/dist/lib/bits/internal/use-arrow-navigation.d.ts.map +1 -0
  98. package/dist/lib/bits/internal/use-body-scroll-lock.svelte.d.ts +1 -0
  99. package/dist/lib/bits/internal/use-body-scroll-lock.svelte.d.ts.map +1 -0
  100. package/dist/lib/bits/internal/use-data-typeahead.svelte.d.ts +1 -0
  101. package/dist/lib/bits/internal/use-data-typeahead.svelte.d.ts.map +1 -0
  102. package/dist/lib/bits/internal/use-dom-typeahead.svelte.d.ts +1 -0
  103. package/dist/lib/bits/internal/use-dom-typeahead.svelte.d.ts.map +1 -0
  104. package/dist/lib/bits/internal/use-form-control.svelte.d.ts +1 -0
  105. package/dist/lib/bits/internal/use-form-control.svelte.d.ts.map +1 -0
  106. package/dist/lib/bits/internal/use-grace-area.svelte.d.ts +1 -0
  107. package/dist/lib/bits/internal/use-grace-area.svelte.d.ts.map +1 -0
  108. package/dist/lib/bits/internal/use-id.d.ts +1 -0
  109. package/dist/lib/bits/internal/use-id.d.ts.map +1 -0
  110. package/dist/lib/bits/internal/use-resize-observer.svelte.d.ts +1 -0
  111. package/dist/lib/bits/internal/use-resize-observer.svelte.d.ts.map +1 -0
  112. package/dist/lib/bits/internal/use-roving-focus.svelte.d.ts +1 -0
  113. package/dist/lib/bits/internal/use-roving-focus.svelte.d.ts.map +1 -0
  114. package/dist/lib/bits/internal/use-size.svelte.d.ts +1 -0
  115. package/dist/lib/bits/internal/use-size.svelte.d.ts.map +1 -0
  116. package/dist/lib/bits/internal/use-state-machine.svelte.d.ts +1 -0
  117. package/dist/lib/bits/internal/use-state-machine.svelte.d.ts.map +1 -0
  118. package/dist/lib/bits/internal/use-timeout-fn.svelte.d.ts +1 -0
  119. package/dist/lib/bits/internal/use-timeout-fn.svelte.d.ts.map +1 -0
  120. package/dist/lib/components/animated/animated.svelte +5 -3
  121. package/dist/lib/components/animated/animated.svelte.d.ts +4 -0
  122. package/dist/lib/components/animated/animated.svelte.d.ts.map +1 -0
  123. package/dist/lib/components/animated/index.d.ts +1 -0
  124. package/dist/lib/components/animated/index.d.ts.map +1 -0
  125. package/dist/lib/components/carousel/carousel-content.svelte +44 -0
  126. package/dist/lib/components/carousel/carousel-content.svelte.d.ts +9 -0
  127. package/dist/lib/components/carousel/carousel-content.svelte.d.ts.map +1 -0
  128. package/dist/lib/components/carousel/carousel-dots.svelte +28 -0
  129. package/dist/lib/components/carousel/carousel-dots.svelte.d.ts +9 -0
  130. package/dist/lib/components/carousel/carousel-dots.svelte.d.ts.map +1 -0
  131. package/dist/lib/components/carousel/carousel-item.svelte +27 -0
  132. package/dist/lib/components/carousel/carousel-item.svelte.d.ts +9 -0
  133. package/dist/lib/components/carousel/carousel-item.svelte.d.ts.map +1 -0
  134. package/dist/lib/components/carousel/carousel-next.svelte +38 -0
  135. package/dist/lib/components/carousel/carousel-next.svelte.d.ts +9 -0
  136. package/dist/lib/components/carousel/carousel-next.svelte.d.ts.map +1 -0
  137. package/dist/lib/components/carousel/carousel-previous.svelte +38 -0
  138. package/dist/lib/components/carousel/carousel-previous.svelte.d.ts +9 -0
  139. package/dist/lib/components/carousel/carousel-previous.svelte.d.ts.map +1 -0
  140. package/dist/lib/components/carousel/carousel.svelte +103 -0
  141. package/dist/lib/components/carousel/carousel.svelte.d.ts +5 -0
  142. package/dist/lib/components/carousel/carousel.svelte.d.ts.map +1 -0
  143. package/dist/lib/components/carousel/context.d.ts +36 -0
  144. package/dist/lib/components/carousel/context.d.ts.map +1 -0
  145. package/dist/lib/components/carousel/context.js +12 -0
  146. package/dist/lib/components/carousel/index.d.ts +8 -0
  147. package/dist/lib/components/carousel/index.d.ts.map +1 -0
  148. package/dist/lib/components/carousel/index.js +9 -0
  149. package/dist/lib/components/dnd/Droppable.svelte.d.ts +1 -0
  150. package/dist/lib/components/dnd/Droppable.svelte.d.ts.map +1 -0
  151. package/dist/lib/components/dnd/context.svelte.d.ts +3 -3
  152. package/dist/lib/components/dnd/context.svelte.d.ts.map +1 -0
  153. package/dist/lib/components/dnd/context.svelte.js +6 -7
  154. package/dist/lib/components/dnd/dnd-context.svelte.d.ts +1 -0
  155. package/dist/lib/components/dnd/dnd-context.svelte.d.ts.map +1 -0
  156. package/dist/lib/components/dnd/dnd-drag-overlay.svelte.d.ts +1 -0
  157. package/dist/lib/components/dnd/dnd-drag-overlay.svelte.d.ts.map +1 -0
  158. package/dist/lib/components/dnd/dnd-drag-placeholder.svelte.d.ts +1 -0
  159. package/dist/lib/components/dnd/dnd-drag-placeholder.svelte.d.ts.map +1 -0
  160. package/dist/lib/components/dnd/dnd-draghandle.svelte +7 -1
  161. package/dist/lib/components/dnd/dnd-draghandle.svelte.d.ts +1 -0
  162. package/dist/lib/components/dnd/dnd-draghandle.svelte.d.ts.map +1 -0
  163. package/dist/lib/components/dnd/dnd-overlay.svelte.d.ts +1 -0
  164. package/dist/lib/components/dnd/dnd-overlay.svelte.d.ts.map +1 -0
  165. package/dist/lib/components/dnd/dnd-sortable-context.svelte.d.ts +1 -0
  166. package/dist/lib/components/dnd/dnd-sortable-context.svelte.d.ts.map +1 -0
  167. package/dist/lib/components/dnd/dnd-sortable-item.svelte +9 -5
  168. package/dist/lib/components/dnd/dnd-sortable-item.svelte.d.ts +3 -2
  169. package/dist/lib/components/dnd/dnd-sortable-item.svelte.d.ts.map +1 -0
  170. package/dist/lib/components/dnd/example.svelte.d.ts +1 -0
  171. package/dist/lib/components/dnd/example.svelte.d.ts.map +1 -0
  172. package/dist/lib/components/dnd/exports.d.ts +1 -0
  173. package/dist/lib/components/dnd/exports.d.ts.map +1 -0
  174. package/dist/lib/components/dnd/index.d.ts +1 -0
  175. package/dist/lib/components/dnd/index.d.ts.map +1 -0
  176. package/dist/lib/components/dnd/sortable.svelte.d.ts +1 -0
  177. package/dist/lib/components/dnd/sortable.svelte.d.ts.map +1 -0
  178. package/dist/lib/components/dnd/sortable.svelte.js +3 -1
  179. package/dist/lib/components/dnd/utils.svelte.d.ts +14 -0
  180. package/dist/lib/components/dnd/utils.svelte.d.ts.map +1 -0
  181. package/dist/lib/components/dnd/utils.svelte.js +7 -3
  182. package/dist/lib/components/form/form-button.svelte +20 -0
  183. package/dist/lib/components/form/form-button.svelte.d.ts +5 -0
  184. package/dist/lib/components/form/form-button.svelte.d.ts.map +1 -0
  185. package/dist/lib/components/form/form-description.svelte +17 -0
  186. package/dist/lib/components/form/form-description.svelte.d.ts +5 -0
  187. package/dist/lib/components/form/form-description.svelte.d.ts.map +1 -0
  188. package/dist/lib/components/form/form-element-field.svelte +24 -0
  189. package/dist/lib/components/form/form-element-field.svelte.d.ts +19 -0
  190. package/dist/lib/components/form/form-element-field.svelte.d.ts.map +1 -0
  191. package/dist/lib/components/form/form-field-errors.svelte +30 -0
  192. package/dist/lib/components/form/form-field-errors.svelte.d.ts +4 -0
  193. package/dist/lib/components/form/form-field-errors.svelte.d.ts.map +1 -0
  194. package/dist/lib/components/form/form-field.svelte +29 -0
  195. package/dist/lib/components/form/form-field.svelte.d.ts +19 -0
  196. package/dist/lib/components/form/form-field.svelte.d.ts.map +1 -0
  197. package/dist/lib/components/form/form-fieldset.svelte +15 -0
  198. package/dist/lib/components/form/form-fieldset.svelte.d.ts +20 -0
  199. package/dist/lib/components/form/form-fieldset.svelte.d.ts.map +1 -0
  200. package/dist/lib/components/form/form-label.svelte +24 -0
  201. package/dist/lib/components/form/form-label.svelte.d.ts +5 -0
  202. package/dist/lib/components/form/form-label.svelte.d.ts.map +1 -0
  203. package/dist/lib/components/form/form-legend.svelte +16 -0
  204. package/dist/lib/components/form/form-legend.svelte.d.ts +5 -0
  205. package/dist/lib/components/form/form-legend.svelte.d.ts.map +1 -0
  206. package/dist/lib/components/form/form.svelte +36 -0
  207. package/dist/lib/components/form/form.svelte.d.ts +13 -0
  208. package/dist/lib/components/form/form.svelte.d.ts.map +1 -0
  209. package/dist/lib/components/form/index.d.ts +13 -0
  210. package/dist/lib/components/form/index.d.ts.map +1 -0
  211. package/dist/lib/components/form/index.js +14 -0
  212. package/dist/lib/components/gradient/Gradient.svelte +66 -0
  213. package/dist/lib/components/gradient/Gradient.svelte.d.ts +11 -0
  214. package/dist/lib/components/gradient/Gradient.svelte.d.ts.map +1 -0
  215. package/dist/lib/components/gradient/index.d.ts +2 -0
  216. package/dist/lib/components/gradient/index.d.ts.map +1 -0
  217. package/dist/lib/components/gradient/index.js +1 -0
  218. package/dist/lib/components/safe/index.d.ts +3 -0
  219. package/dist/lib/components/safe/index.d.ts.map +1 -0
  220. package/dist/lib/components/safe/index.js +2 -0
  221. package/dist/lib/components/safe/safe.svelte +20 -0
  222. package/dist/lib/components/safe/safe.svelte.d.ts +9 -0
  223. package/dist/lib/components/safe/safe.svelte.d.ts.map +1 -0
  224. package/dist/lib/components/search/combinations/searchPopover.svelte.d.ts +1 -0
  225. package/dist/lib/components/search/combinations/searchPopover.svelte.d.ts.map +1 -0
  226. package/dist/lib/components/search/components/search-empty.svelte.d.ts +1 -0
  227. package/dist/lib/components/search/components/search-empty.svelte.d.ts.map +1 -0
  228. package/dist/lib/components/search/components/search-input.svelte.d.ts +1 -0
  229. package/dist/lib/components/search/components/search-input.svelte.d.ts.map +1 -0
  230. package/dist/lib/components/search/components/search-list.svelte +2 -2
  231. package/dist/lib/components/search/components/search-list.svelte.d.ts +1 -0
  232. package/dist/lib/components/search/components/search-list.svelte.d.ts.map +1 -0
  233. package/dist/lib/components/search/components/search-pagnation.svelte.d.ts +1 -0
  234. package/dist/lib/components/search/components/search-pagnation.svelte.d.ts.map +1 -0
  235. package/dist/lib/components/search/components/search.svelte.d.ts +1 -0
  236. package/dist/lib/components/search/components/search.svelte.d.ts.map +1 -0
  237. package/dist/lib/components/search/exports.d.ts +1 -0
  238. package/dist/lib/components/search/exports.d.ts.map +1 -0
  239. package/dist/lib/components/search/index.d.ts +1 -0
  240. package/dist/lib/components/search/index.d.ts.map +1 -0
  241. package/dist/lib/components/search/search.svelte.d.ts +1 -0
  242. package/dist/lib/components/search/search.svelte.d.ts.map +1 -0
  243. package/dist/lib/components/search/types.d.ts +1 -0
  244. package/dist/lib/components/search/types.d.ts.map +1 -0
  245. package/dist/lib/components/sidebar/README.md +10 -0
  246. package/dist/lib/components/sidebar/constants.d.ts +7 -0
  247. package/dist/lib/components/sidebar/constants.d.ts.map +1 -0
  248. package/dist/lib/components/sidebar/constants.js +6 -0
  249. package/dist/lib/components/sidebar/context.svelte.d.ts +52 -0
  250. package/dist/lib/components/sidebar/context.svelte.d.ts.map +1 -0
  251. package/dist/lib/components/sidebar/context.svelte.js +57 -0
  252. package/dist/lib/components/sidebar/index.d.ts +26 -0
  253. package/dist/lib/components/sidebar/index.d.ts.map +1 -0
  254. package/dist/lib/components/sidebar/index.js +27 -0
  255. package/dist/lib/components/sidebar/sidebar-content.svelte +24 -0
  256. package/dist/lib/components/sidebar/sidebar-content.svelte.d.ts +6 -0
  257. package/dist/lib/components/sidebar/sidebar-content.svelte.d.ts.map +1 -0
  258. package/dist/lib/components/sidebar/sidebar-footer.svelte +21 -0
  259. package/dist/lib/components/sidebar/sidebar-footer.svelte.d.ts +6 -0
  260. package/dist/lib/components/sidebar/sidebar-footer.svelte.d.ts.map +1 -0
  261. package/dist/lib/components/sidebar/sidebar-group-action.svelte +36 -0
  262. package/dist/lib/components/sidebar/sidebar-group-action.svelte.d.ts +12 -0
  263. package/dist/lib/components/sidebar/sidebar-group-action.svelte.d.ts.map +1 -0
  264. package/dist/lib/components/sidebar/sidebar-group-content.svelte +21 -0
  265. package/dist/lib/components/sidebar/sidebar-group-content.svelte.d.ts +6 -0
  266. package/dist/lib/components/sidebar/sidebar-group-content.svelte.d.ts.map +1 -0
  267. package/dist/lib/components/sidebar/sidebar-group-label.svelte +34 -0
  268. package/dist/lib/components/sidebar/sidebar-group-label.svelte.d.ts +12 -0
  269. package/dist/lib/components/sidebar/sidebar-group-label.svelte.d.ts.map +1 -0
  270. package/dist/lib/components/sidebar/sidebar-group.svelte +21 -0
  271. package/dist/lib/components/sidebar/sidebar-group.svelte.d.ts +6 -0
  272. package/dist/lib/components/sidebar/sidebar-group.svelte.d.ts.map +1 -0
  273. package/dist/lib/components/sidebar/sidebar-header.svelte +21 -0
  274. package/dist/lib/components/sidebar/sidebar-header.svelte.d.ts +6 -0
  275. package/dist/lib/components/sidebar/sidebar-header.svelte.d.ts.map +1 -0
  276. package/dist/lib/components/sidebar/sidebar-input.svelte +23 -0
  277. package/dist/lib/components/sidebar/sidebar-input.svelte.d.ts +12 -0
  278. package/dist/lib/components/sidebar/sidebar-input.svelte.d.ts.map +1 -0
  279. package/dist/lib/components/sidebar/sidebar-inset.svelte +31 -0
  280. package/dist/lib/components/sidebar/sidebar-inset.svelte.d.ts +6 -0
  281. package/dist/lib/components/sidebar/sidebar-inset.svelte.d.ts.map +1 -0
  282. package/dist/lib/components/sidebar/sidebar-menu-action.svelte +56 -0
  283. package/dist/lib/components/sidebar/sidebar-menu-action.svelte.d.ts +13 -0
  284. package/dist/lib/components/sidebar/sidebar-menu-action.svelte.d.ts.map +1 -0
  285. package/dist/lib/components/sidebar/sidebar-menu-badge.svelte +29 -0
  286. package/dist/lib/components/sidebar/sidebar-menu-badge.svelte.d.ts +6 -0
  287. package/dist/lib/components/sidebar/sidebar-menu-badge.svelte.d.ts.map +1 -0
  288. package/dist/lib/components/sidebar/sidebar-menu-button.svelte +150 -0
  289. package/dist/lib/components/sidebar/sidebar-menu-button.svelte.d.ts +57 -0
  290. package/dist/lib/components/sidebar/sidebar-menu-button.svelte.d.ts.map +1 -0
  291. package/dist/lib/components/sidebar/sidebar-menu-item.svelte +21 -0
  292. package/dist/lib/components/sidebar/sidebar-menu-item.svelte.d.ts +6 -0
  293. package/dist/lib/components/sidebar/sidebar-menu-item.svelte.d.ts.map +1 -0
  294. package/dist/lib/components/sidebar/sidebar-menu-skeleton.svelte +36 -0
  295. package/dist/lib/components/sidebar/sidebar-menu-skeleton.svelte.d.ts +9 -0
  296. package/dist/lib/components/sidebar/sidebar-menu-skeleton.svelte.d.ts.map +1 -0
  297. package/dist/lib/components/sidebar/sidebar-menu-sub-button.svelte +53 -0
  298. package/dist/lib/components/sidebar/sidebar-menu-sub-button.svelte.d.ts +14 -0
  299. package/dist/lib/components/sidebar/sidebar-menu-sub-button.svelte.d.ts.map +1 -0
  300. package/dist/lib/components/sidebar/sidebar-menu-sub-item.svelte +16 -0
  301. package/dist/lib/components/sidebar/sidebar-menu-sub-item.svelte.d.ts +6 -0
  302. package/dist/lib/components/sidebar/sidebar-menu-sub-item.svelte.d.ts.map +1 -0
  303. package/dist/lib/components/sidebar/sidebar-menu-sub.svelte +25 -0
  304. package/dist/lib/components/sidebar/sidebar-menu-sub.svelte.d.ts +6 -0
  305. package/dist/lib/components/sidebar/sidebar-menu-sub.svelte.d.ts.map +1 -0
  306. package/dist/lib/components/sidebar/sidebar-menu.svelte +21 -0
  307. package/dist/lib/components/sidebar/sidebar-menu.svelte.d.ts +6 -0
  308. package/dist/lib/components/sidebar/sidebar-menu.svelte.d.ts.map +1 -0
  309. package/dist/lib/components/sidebar/sidebar-provider.svelte +57 -0
  310. package/dist/lib/components/sidebar/sidebar-provider.svelte.d.ts +13 -0
  311. package/dist/lib/components/sidebar/sidebar-provider.svelte.d.ts.map +1 -0
  312. package/dist/lib/components/sidebar/sidebar-rail.svelte +55 -0
  313. package/dist/lib/components/sidebar/sidebar-rail.svelte.d.ts +9 -0
  314. package/dist/lib/components/sidebar/sidebar-rail.svelte.d.ts.map +1 -0
  315. package/dist/lib/components/sidebar/sidebar-separator.svelte +18 -0
  316. package/dist/lib/components/sidebar/sidebar-separator.svelte.d.ts +4 -0
  317. package/dist/lib/components/sidebar/sidebar-separator.svelte.d.ts.map +1 -0
  318. package/dist/lib/components/sidebar/sidebar-trigger.svelte +36 -0
  319. package/dist/lib/components/sidebar/sidebar-trigger.svelte.d.ts +10 -0
  320. package/dist/lib/components/sidebar/sidebar-trigger.svelte.d.ts.map +1 -0
  321. package/dist/lib/components/sidebar/sidebar.svelte +162 -0
  322. package/dist/lib/components/sidebar/sidebar.svelte.d.ts +11 -0
  323. package/dist/lib/components/sidebar/sidebar.svelte.d.ts.map +1 -0
  324. package/dist/lib/components/utilities/arrow/arrow.svelte.d.ts +1 -0
  325. package/dist/lib/components/utilities/arrow/arrow.svelte.d.ts.map +1 -0
  326. package/dist/lib/components/utilities/arrow/index.d.ts +1 -0
  327. package/dist/lib/components/utilities/arrow/index.d.ts.map +1 -0
  328. package/dist/lib/components/utilities/arrow/types.d.ts +1 -0
  329. package/dist/lib/components/utilities/arrow/types.d.ts.map +1 -0
  330. package/dist/lib/components/utilities/floating-layer/components/floating-layer-anchor.svelte.d.ts +1 -0
  331. package/dist/lib/components/utilities/floating-layer/components/floating-layer-anchor.svelte.d.ts.map +1 -0
  332. package/dist/lib/components/utilities/floating-layer/components/floating-layer-arrow.svelte.d.ts +1 -0
  333. package/dist/lib/components/utilities/floating-layer/components/floating-layer-arrow.svelte.d.ts.map +1 -0
  334. package/dist/lib/components/utilities/floating-layer/components/floating-layer-content-static.svelte.d.ts +1 -0
  335. package/dist/lib/components/utilities/floating-layer/components/floating-layer-content-static.svelte.d.ts.map +1 -0
  336. package/dist/lib/components/utilities/floating-layer/components/floating-layer-content.svelte.d.ts +1 -0
  337. package/dist/lib/components/utilities/floating-layer/components/floating-layer-content.svelte.d.ts.map +1 -0
  338. package/dist/lib/components/utilities/floating-layer/components/floating-layer.svelte.d.ts +1 -0
  339. package/dist/lib/components/utilities/floating-layer/components/floating-layer.svelte.d.ts.map +1 -0
  340. package/dist/lib/components/utilities/floating-layer/components/index.d.ts +1 -0
  341. package/dist/lib/components/utilities/floating-layer/components/index.d.ts.map +1 -0
  342. package/dist/lib/components/utilities/floating-layer/index.d.ts +1 -0
  343. package/dist/lib/components/utilities/floating-layer/index.d.ts.map +1 -0
  344. package/dist/lib/components/utilities/floating-layer/types.d.ts +1 -0
  345. package/dist/lib/components/utilities/floating-layer/types.d.ts.map +1 -0
  346. package/dist/lib/components/utilities/floating-layer/use-floating-layer.svelte.d.ts +1 -0
  347. package/dist/lib/components/utilities/floating-layer/use-floating-layer.svelte.d.ts.map +1 -0
  348. package/dist/lib/index.d.ts +3 -1
  349. package/dist/lib/index.d.ts.map +1 -0
  350. package/dist/lib/index.js +2 -1
  351. package/dist/lib/utils/asyncDerived.svelte.d.ts +1 -0
  352. package/dist/lib/utils/asyncDerived.svelte.d.ts.map +1 -0
  353. package/dist/lib/utils/bits.d.ts +1 -0
  354. package/dist/lib/utils/bits.d.ts.map +1 -0
  355. package/dist/lib/utils/index.d.ts +5 -3
  356. package/dist/lib/utils/index.d.ts.map +1 -0
  357. package/dist/lib/utils/index.js +4 -3
  358. package/dist/lib/utils/reactive.svelte.d.ts +25 -0
  359. package/dist/lib/utils/reactive.svelte.d.ts.map +1 -0
  360. package/dist/lib/utils/reactive.svelte.js +34 -0
  361. package/dist/lib/utils/utils.d.ts +1 -0
  362. package/dist/lib/utils/utils.d.ts.map +1 -0
  363. package/dist/lib/vite/index.d.ts +2 -0
  364. package/dist/lib/vite/index.d.ts.map +1 -0
  365. package/dist/lib/vite/index.js +1 -0
  366. package/dist/lib/vite/vite-plugin-component-source-collector.d.ts +16 -0
  367. package/dist/lib/vite/vite-plugin-component-source-collector.d.ts.map +1 -0
  368. package/dist/lib/vite/vite-plugin-component-source-collector.js +74 -0
  369. package/dist/routes/+layout.svelte.d.ts +1 -0
  370. package/dist/routes/+layout.svelte.d.ts.map +1 -0
  371. package/package.json +48 -33
  372. package/src/app.css +0 -4
  373. package/src/lib/api/form.svelte.ts +65 -0
  374. package/src/lib/api/index.ts +2 -0
  375. package/src/lib/api/query.svelte.ts +59 -0
  376. package/src/lib/components/animated/animated.svelte +5 -3
  377. package/src/lib/components/carousel/carousel-content.svelte +44 -0
  378. package/src/lib/components/carousel/carousel-dots.svelte +28 -0
  379. package/src/lib/components/carousel/carousel-item.svelte +27 -0
  380. package/src/lib/components/carousel/carousel-next.svelte +38 -0
  381. package/src/lib/components/carousel/carousel-previous.svelte +38 -0
  382. package/src/lib/components/carousel/carousel.svelte +103 -0
  383. package/src/lib/components/carousel/context.ts +59 -0
  384. package/src/lib/components/carousel/index.ts +22 -0
  385. package/src/lib/components/dnd/context.svelte.ts +11 -8
  386. package/src/lib/components/dnd/dnd-draghandle.svelte +7 -1
  387. package/src/lib/components/dnd/dnd-sortable-item.svelte +9 -5
  388. package/src/lib/components/dnd/sortable.svelte.ts +4 -1
  389. package/src/lib/components/dnd/utils.svelte.ts +14 -3
  390. package/src/lib/components/form/form-button.svelte +20 -0
  391. package/src/lib/components/form/form-description.svelte +17 -0
  392. package/src/lib/components/form/form-element-field.svelte +24 -0
  393. package/src/lib/components/form/form-field-errors.svelte +30 -0
  394. package/src/lib/components/form/form-field.svelte +29 -0
  395. package/src/lib/components/form/form-fieldset.svelte +15 -0
  396. package/src/lib/components/form/form-label.svelte +24 -0
  397. package/src/lib/components/form/form-legend.svelte +16 -0
  398. package/src/lib/components/form/form.svelte +36 -0
  399. package/src/lib/components/form/index.ts +36 -0
  400. package/src/lib/components/gradient/Gradient.svelte +66 -0
  401. package/src/lib/components/gradient/index.ts +1 -0
  402. package/src/lib/components/safe/index.ts +3 -0
  403. package/src/lib/components/safe/safe.svelte +20 -0
  404. package/src/lib/components/search/components/search-list.svelte +2 -2
  405. package/src/lib/components/sidebar/README.md +10 -0
  406. package/src/lib/components/sidebar/constants.ts +6 -0
  407. package/src/lib/components/sidebar/context.svelte.ts +84 -0
  408. package/src/lib/components/sidebar/index.ts +75 -0
  409. package/src/lib/components/sidebar/sidebar-content.svelte +24 -0
  410. package/src/lib/components/sidebar/sidebar-footer.svelte +21 -0
  411. package/src/lib/components/sidebar/sidebar-group-action.svelte +36 -0
  412. package/src/lib/components/sidebar/sidebar-group-content.svelte +21 -0
  413. package/src/lib/components/sidebar/sidebar-group-label.svelte +34 -0
  414. package/src/lib/components/sidebar/sidebar-group.svelte +21 -0
  415. package/src/lib/components/sidebar/sidebar-header.svelte +21 -0
  416. package/src/lib/components/sidebar/sidebar-input.svelte +23 -0
  417. package/src/lib/components/sidebar/sidebar-inset.svelte +31 -0
  418. package/src/lib/components/sidebar/sidebar-menu-action.svelte +56 -0
  419. package/src/lib/components/sidebar/sidebar-menu-badge.svelte +29 -0
  420. package/src/lib/components/sidebar/sidebar-menu-button.svelte +150 -0
  421. package/src/lib/components/sidebar/sidebar-menu-item.svelte +21 -0
  422. package/src/lib/components/sidebar/sidebar-menu-skeleton.svelte +36 -0
  423. package/src/lib/components/sidebar/sidebar-menu-sub-button.svelte +53 -0
  424. package/src/lib/components/sidebar/sidebar-menu-sub-item.svelte +16 -0
  425. package/src/lib/components/sidebar/sidebar-menu-sub.svelte +25 -0
  426. package/src/lib/components/sidebar/sidebar-menu.svelte +21 -0
  427. package/src/lib/components/sidebar/sidebar-provider.svelte +57 -0
  428. package/src/lib/components/sidebar/sidebar-rail.svelte +55 -0
  429. package/src/lib/components/sidebar/sidebar-separator.svelte +18 -0
  430. package/src/lib/components/sidebar/sidebar-trigger.svelte +36 -0
  431. package/src/lib/components/sidebar/sidebar.svelte +162 -0
  432. package/src/lib/index.ts +2 -1
  433. package/src/lib/utils/index.ts +4 -3
  434. package/src/lib/utils/reactive.svelte.ts +38 -0
  435. package/src/lib/vite/index.ts +1 -0
  436. package/src/lib/vite/vite-plugin-component-source-collector.ts +102 -0
  437. package/dist/lib/components/Typeahead.svelte.d.ts +0 -47
  438. package/dist/lib/components/Typeahead.svelte.js +0 -150
  439. package/dist/lib/components/combo/combo.svelte +0 -186
  440. package/dist/lib/components/combo/combo.svelte.d.ts +0 -21
  441. package/dist/lib/components/combo/index.d.ts +0 -2
  442. package/dist/lib/components/combo/index.js +0 -2
  443. package/src/lib/components/Typeahead.svelte.ts +0 -200
  444. package/src/lib/components/combo/combo.svelte +0 -186
  445. package/src/lib/components/combo/index.ts +0 -3
package/package.json CHANGED
@@ -1,54 +1,66 @@
1
1
  {
2
2
  "name": "svelte-ag",
3
3
  "description": "Useful svelte components",
4
- "version": "0.0.2-dev.73",
4
+ "version": "0.0.2-dev.80",
5
5
  "author": "Alexander Hornung",
6
6
  "bugs": "https://github.com/ageorgeh/cms/issues",
7
7
  "dependencies": {
8
- "@iconify/types": "^2.0.0",
9
- "@sveltejs/kit": "^2.20.7",
10
- "@sveltejs/package": "^2.3.11",
11
- "@sveltejs/vite-plugin-svelte": "^5.0.3",
12
- "@tailwindcss/vite": "^4.1.4",
13
8
  "clsx": "^2.1.1",
14
- "mode-watcher": "^0.5.1",
15
- "svelte": "^5.27.0",
16
9
  "svelte-toolbelt": "^0.7.1",
17
10
  "tailwind-merge": "^3.2.0",
18
11
  "tailwind-variants": "^1.0.0",
19
- "tw-animate-css": "^1.2.5",
20
- "vitest": "^3.1.1",
21
- "fuse.js": "^7.1.0",
22
12
  "dequal": "^2.0.3",
23
- "@floating-ui/dom": "^1.6.13",
13
+ "@floating-ui/dom": "^1.7.0",
24
14
  "@dnd-kit-svelte/core": "^0.0.8",
25
15
  "@dnd-kit-svelte/sortable": "^0.0.8",
26
- "@dnd-kit-svelte/utilities": "^0.0.8"
16
+ "@dnd-kit-svelte/utilities": "^0.0.8",
17
+ "embla-carousel-svelte": "^8.6.0",
18
+ "svader": "^0.5.4",
19
+ "runed": "^0.26.0",
20
+ "bits-ui": "^1.5.3",
21
+ "@rollup/pluginutils": "^5.1.4",
22
+ "sveltekit-superforms": "2.25.0",
23
+ "formsnap": "2.0.1",
24
+ "valibot": "1.1.0",
25
+ "radash": "12.1.0",
26
+ "ts-ag": "0.0.1-dev.1"
27
+ },
28
+ "peerDependencies": {
29
+ "svelte": "^5.28.2",
30
+ "tailwindcss": "^4.1.5",
31
+ "tw-animate-css": "^1.2.9",
32
+ "tailwind-variants": "^1.0.0",
33
+ "@lucide/svelte": "^0.508.0"
27
34
  },
28
35
  "devDependencies": {
29
- "@eslint/js": "^9.24.0",
36
+ "svelte": "^5.28.2",
37
+ "@sveltejs/kit": "^2.20.8",
38
+ "@sveltejs/package": "^2.3.11",
39
+ "@sveltejs/vite-plugin-svelte": "^5.0.3",
40
+ "@eslint/js": "^9.26.0",
41
+ "@iconify/types": "^2.0.0",
30
42
  "@iconify/tailwind4": "^1.0.6",
31
- "@lucide/svelte": "^0.488.0",
32
- "@tailwindcss/forms": "^0.5.10",
43
+ "@iconify/json": "^2.2.339",
44
+ "@lucide/svelte": "^0.508.0",
45
+ "tailwindcss": "^4.1.5",
46
+ "tw-animate-css": "^1.2.9",
47
+ "@tailwindcss/vite": "^4.1.5",
33
48
  "@tailwindcss/typography": "^0.5.16",
34
- "bits-ui": "^1.3.19",
35
- "eslint": "^9.24.0",
49
+ "eslint": "^9.26.0",
36
50
  "eslint-plugin-import": "^2.31.0",
37
- "eslint-plugin-readable-tailwind": "^2.0.1",
51
+ "eslint-plugin-readable-tailwind": "^2.1.1",
38
52
  "eslint-plugin-svelte": "^3.5.1",
39
- "globals": "^16.0.0",
53
+ "globals": "^16.1.0",
40
54
  "prettier": "^3.5.3",
41
55
  "prettier-plugin-svelte": "^3.3.3",
42
- "tailwind-scrollbar": "^4.0.2",
43
- "tailwindcss": "^4.1.3",
44
- "tw-animate-css": "^1.2.5",
45
56
  "typescript": "^5.8.3",
46
- "typescript-eslint": "^8.29.1",
47
- "vite": "^6.2.6",
48
- "runed": "^0.25.0"
49
- },
50
- "engines": {
51
- "node": ">=18.0.0"
57
+ "typescript-eslint": "^8.32.0",
58
+ "typescript-svelte-plugin": "0.3.46",
59
+ "vite": "^6.3.5",
60
+ "vitest": "^3.1.3",
61
+ "npm-check-updates": "^18.0.1",
62
+ "@types/node": "^22.15.17",
63
+ "rollup": "^4.40.2"
52
64
  },
53
65
  "type": "module",
54
66
  "files": [
@@ -58,9 +70,13 @@
58
70
  "exports": {
59
71
  "./package.json": "./package.json",
60
72
  ".": {
61
- "types": "./dist/lib/index.ts",
73
+ "types": "./dist/lib/index.d.ts",
62
74
  "default": "./dist/lib/index.js"
63
75
  },
76
+ "./vite": {
77
+ "types": "./dist/lib/vite/index.d.ts",
78
+ "default": "./dist/lib/vite/index.js"
79
+ },
64
80
  "./*": {
65
81
  "types": "./dist/lib/*",
66
82
  "svelte": "./dist/lib/*",
@@ -69,9 +85,8 @@
69
85
  },
70
86
  "repository": "ageorgeh/svelte-ag",
71
87
  "scripts": {
72
- "components:package": "svelte-package -i src --tsconfig tsconfig.json",
73
- "components:watch": "svelte-package -i src -w --tsconfig tsconfig.json",
74
- "components:dev": "vite --config vite.config.ts dev",
88
+ "project:package": "svelte-package -i src",
89
+ "project:watch": "svelte-package -i src -w",
75
90
  "svelte:sync": "svelte-kit sync",
76
91
  "publish:local": "pnpm version prerelease --preid dev --no-git-tag-version && pnpm publish --registry http://localhost:4873 --tag dev --access public --no-git-checks --json > ./publishLocal.json",
77
92
  "publish:prerelease": "pnpm publish --tag dev --access public --no-git-checks --registry=https://registry.npmjs.org/ --json > ./publish.json",
package/src/app.css CHANGED
@@ -6,10 +6,6 @@
6
6
  @plugin '@tailwindcss/typography';
7
7
  /* @plugin '@tailwindcss/forms'; */
8
8
  @plugin "@iconify/tailwind4";
9
- @plugin 'tailwind-scrollbar' {
10
- nocompatible: true;
11
- preferredstrategy: 'pseudoelements';
12
- }
13
9
 
14
10
  /* Imports */
15
11
  @import './icons.css';
@@ -0,0 +1,65 @@
1
+ import { sleep } from 'radash';
2
+ import { superForm, defaults, setError, setMessage, type SuperForm, type SuperValidated } from 'sveltekit-superforms';
3
+ import { valibot } from 'sveltekit-superforms/adapters';
4
+ import type { ApiRequestFunction, HTTPMethod, ApiEndpoints, ApiInput, ApiSuccessBody, ApiErrorBody } from 'ts-ag';
5
+ import type * as v from 'valibot';
6
+
7
+ export type ApiRequestForm<API extends ApiEndpoints> = <
8
+ Path extends API['path'],
9
+ Method extends Extract<API, { path: Path }>['method']
10
+ >(
11
+ path: Path,
12
+ method: Method,
13
+ actions: {
14
+ onSuccess?: (
15
+ form: SuperValidated<ApiInput<API, Path, Method>>,
16
+ response: ApiSuccessBody<API, Path, Method>
17
+ ) => void;
18
+ onFail?: (form: SuperValidated<ApiInput<API, Path, Method>>, response: ApiErrorBody<API, Path, Method>) => void;
19
+ }
20
+ ) => SuperForm<ApiInput<API, Path, Method>>;
21
+
22
+ export function createFormFunction<API extends ApiEndpoints>(
23
+ schemas: Record<API['path'], Record<HTTPMethod, v.GenericSchema>>,
24
+ request: ApiRequestFunction<API>
25
+ ): ApiRequestForm<API> {
26
+ return (path, method, actions) => {
27
+ const schema = schemas[path]?.[method];
28
+ if (schema === undefined) throw new Error('Invalid schema for form');
29
+
30
+ // if (typeof schema === 'function') {
31
+ // schema = schema();
32
+ // }
33
+
34
+ return superForm<ApiInput<API, typeof path, typeof method>>(defaults(valibot(schema)), {
35
+ SPA: true,
36
+ resetForm: true,
37
+ delayMs: 300,
38
+ validators: valibot(schema),
39
+ async onUpdate({ form }) {
40
+ if (!form.valid) return;
41
+
42
+ const res = await request(path, method, form.data);
43
+
44
+ if (res.ok === false) {
45
+ const body = await res.json();
46
+
47
+ if (!body.field) {
48
+ setError(form, '', body.message);
49
+ } else {
50
+ setError(form, body.field.name, body.field.value, { status: res.status });
51
+ }
52
+ if (actions && actions.onFail) {
53
+ actions.onFail(form, body);
54
+ }
55
+ } else {
56
+ setMessage(form, 'Success');
57
+ if (actions && actions.onSuccess) {
58
+ const body = await res.json();
59
+ actions.onSuccess(form, body);
60
+ }
61
+ }
62
+ }
63
+ });
64
+ };
65
+ }
@@ -0,0 +1,2 @@
1
+ export * from './form.svelte.js';
2
+ export * from './query.svelte.js';
@@ -0,0 +1,59 @@
1
+ import type { ApiEndpoints, ApiInput, ApiRequestFunction, ApiSuccessBody, ApiErrorBody } from 'ts-ag';
2
+
3
+ export class Query<
4
+ API extends ApiEndpoints,
5
+ Path extends API['path'],
6
+ Method extends Extract<API, { path: Path }>['method']
7
+ > {
8
+ #path: Path;
9
+ #method: Method;
10
+ #request: ApiRequestFunction<API>;
11
+ #status = $state<'idle' | 'loading' | 'success' | 'error'>('idle');
12
+ #data = $state<ApiSuccessBody<API, Path, Method> | undefined>(undefined);
13
+ #errorData = $state<ApiErrorBody<API, Path, Method> | undefined>(undefined);
14
+
15
+ constructor(path: Path, method: Method, request: ApiRequestFunction<API>) {
16
+ this.#path = path;
17
+ this.#method = method;
18
+ this.#request = request;
19
+ }
20
+
21
+ async fetch(input: ApiInput<API, Path, Method>) {
22
+ const res = await this.#request(this.#path, this.#method, input);
23
+ if (res.ok === false) {
24
+ const body = await res.json();
25
+ this.#status = 'error';
26
+
27
+ // @ts-expect-error Generics not working for some reason
28
+ this.#errorData = body;
29
+ return res;
30
+ } else {
31
+ const body = await res.json();
32
+ this.#status = 'success';
33
+ this.#data = body;
34
+ return res;
35
+ }
36
+ }
37
+ get status() {
38
+ return this.#status;
39
+ }
40
+ get data() {
41
+ return this.#data;
42
+ }
43
+ }
44
+
45
+ /**
46
+ * Helper function to use once so that creating queries is easier.
47
+ *
48
+ * @example
49
+ * export const createQuery = createQueryFunction<YourApiEndpoints>(yourApiRequest);
50
+ *
51
+ */
52
+ export function createQueryFunction<API extends ApiEndpoints>(request: ApiRequestFunction<API>) {
53
+ return <Path extends API['path'], Method extends Extract<API, { path: Path }>['method']>(
54
+ path: Path,
55
+ method: Method
56
+ ) => {
57
+ return new Query<API, Path, Method>(path, method, request);
58
+ };
59
+ }
@@ -36,7 +36,8 @@
36
36
  duration: {
37
37
  fast: 'duration-150',
38
38
  default: 'duration-200',
39
- slow: 'duration-500'
39
+ slow: 'duration-500',
40
+ vSlow: 'duration-1000'
40
41
  }
41
42
  },
42
43
  defaultVariants: {
@@ -101,7 +102,7 @@
101
102
  animationComplete = false;
102
103
  }
103
104
  },
104
- { lazy: true }
105
+ { lazy: false }
105
106
  );
106
107
 
107
108
  // Set initial render to false when component mounts if disableInitialAnimation is true
@@ -119,7 +120,8 @@
119
120
  const durationMap = {
120
121
  fast: 150,
121
122
  default: 200,
122
- slow: 500
123
+ slow: 500,
124
+ vSlow: 1000
123
125
  };
124
126
 
125
127
  // Map each animation type to the specific CSS properties that should be transitioned
@@ -0,0 +1,44 @@
1
+ <script lang="ts">
2
+ import emblaCarouselSvelte from 'embla-carousel-svelte';
3
+ import type { WithElementRef } from 'bits-ui';
4
+ import type { HTMLAttributes } from 'svelte/elements';
5
+ import { getEmblaContext } from './context.js';
6
+ import { cn } from '$shadcn/utils.js';
7
+
8
+ let {
9
+ ref = $bindable(null),
10
+ class: className,
11
+ children,
12
+ symbol = undefined,
13
+ ...restProps
14
+ }: WithElementRef<HTMLAttributes<HTMLDivElement>> & { symbol?: symbol } = $props();
15
+
16
+ const emblaCtx = getEmblaContext('<Carousel.Content/>', symbol);
17
+
18
+ // console.log(emblaCtx);
19
+ </script>
20
+
21
+ <!-- svelte-ignore event_directive_deprecated -->
22
+ <div
23
+ class="overflow-hidden"
24
+ use:emblaCarouselSvelte={{
25
+ options: {
26
+ container: `[data-embla-container="${symbol?.description ?? 'default'}"]`,
27
+ loop: true,
28
+ slides: `[data-embla-slide="${symbol?.description ?? 'default'}"]`,
29
+ ...emblaCtx.options,
30
+ axis: emblaCtx.orientation === 'horizontal' ? 'x' : 'y'
31
+ },
32
+ plugins: emblaCtx.plugins
33
+ }}
34
+ on:emblaInit={emblaCtx.onInit}
35
+ >
36
+ <div
37
+ bind:this={ref}
38
+ class={cn('flex', emblaCtx.orientation === 'horizontal' ? '-ml-4' : `-mt-4 flex-col`, className)}
39
+ data-embla-container={symbol?.description}
40
+ {...restProps}
41
+ >
42
+ {@render children?.()}
43
+ </div>
44
+ </div>
@@ -0,0 +1,28 @@
1
+ <script lang="ts">
2
+ import type { WithoutChildren } from 'bits-ui';
3
+ import { getEmblaContext } from './context.js';
4
+ import { cn } from '$shadcn/utils.js';
5
+ import { Button, type Props } from '$shadcn/button/index.js';
6
+
7
+ let {
8
+ ref = $bindable(null),
9
+ class: className,
10
+ variant = 'outline',
11
+ size = 'icon',
12
+ symbol = undefined,
13
+ ...restProps
14
+ }: WithoutChildren<Props> & { symbol?: symbol } = $props();
15
+
16
+ const emblaCtx = getEmblaContext('<Carousel.Next/>', symbol);
17
+ </script>
18
+
19
+ <div class={cn('flex justify-center gap-1.5', className)}>
20
+ {#each Array(emblaCtx.scrollSnaps.length) as _, i (i)}
21
+ <div
22
+ class={cn(
23
+ 'size-2 rounded-full transition-colors duration-300',
24
+ emblaCtx.selectedIndex === i ? `bg-foreground` : `bg-foreground/20`
25
+ )}
26
+ ></div>
27
+ {/each}
28
+ </div>
@@ -0,0 +1,27 @@
1
+ <script lang="ts">
2
+ import type { WithElementRef } from 'bits-ui';
3
+ import type { HTMLAttributes } from 'svelte/elements';
4
+ import { getEmblaContext } from './context.js';
5
+ import { cn } from '$shadcn/utils.js';
6
+
7
+ let {
8
+ ref = $bindable(null),
9
+ class: className,
10
+ children,
11
+ symbol = undefined,
12
+ ...restProps
13
+ }: WithElementRef<HTMLAttributes<HTMLDivElement>> & { symbol?: symbol } = $props();
14
+
15
+ const emblaCtx = getEmblaContext('<Carousel.Item/>', symbol);
16
+ </script>
17
+
18
+ <div
19
+ bind:this={ref}
20
+ role="group"
21
+ aria-roledescription="slide"
22
+ class={cn('min-w-0 shrink-0 grow-0 basis-full', emblaCtx.orientation === 'horizontal' ? `pl-4` : `pt-4`, className)}
23
+ data-embla-slide={symbol?.description ?? 'default'}
24
+ {...restProps}
25
+ >
26
+ {@render children?.()}
27
+ </div>
@@ -0,0 +1,38 @@
1
+ <script lang="ts">
2
+ import ArrowRight from '@lucide/svelte/icons/arrow-right';
3
+ import type { WithoutChildren } from 'bits-ui';
4
+ import { getEmblaContext } from './context.js';
5
+ import { cn } from '$shadcn/utils.js';
6
+ import { Button, type Props } from '$shadcn/button/index.js';
7
+
8
+ let {
9
+ ref = $bindable(null),
10
+ class: className,
11
+ variant = 'outline',
12
+ size = 'icon',
13
+ symbol = undefined,
14
+ ...restProps
15
+ }: WithoutChildren<Props> & { symbol?: symbol } = $props();
16
+
17
+ const emblaCtx = getEmblaContext('<Carousel.Next/>', symbol);
18
+ </script>
19
+
20
+ <Button
21
+ {variant}
22
+ {size}
23
+ class={cn(
24
+ 'absolute size-8 touch-manipulation rounded-full',
25
+ emblaCtx.orientation === 'horizontal'
26
+ ? 'top-1/2 -right-12 -translate-y-1/2'
27
+ : '-bottom-12 left-1/2 -translate-x-1/2 rotate-90',
28
+ className
29
+ )}
30
+ disabled={!emblaCtx.canScrollNext}
31
+ onclick={emblaCtx.scrollNext}
32
+ onkeydown={emblaCtx.handleKeyDown}
33
+ bind:ref
34
+ {...restProps}
35
+ >
36
+ <ArrowRight class="size-4" />
37
+ <span class="sr-only">Next slide</span>
38
+ </Button>
@@ -0,0 +1,38 @@
1
+ <script lang="ts">
2
+ import ArrowLeft from '@lucide/svelte/icons/arrow-left';
3
+ import type { WithoutChildren } from 'bits-ui';
4
+ import { getEmblaContext } from './context.js';
5
+ import { cn } from '$shadcn/utils.js';
6
+ import { Button, type Props } from '$shadcn/button/index.js';
7
+
8
+ let {
9
+ ref = $bindable(null),
10
+ class: className,
11
+ variant = 'outline',
12
+ size = 'icon',
13
+ symbol = undefined,
14
+ ...restProps
15
+ }: WithoutChildren<Props> & { symbol?: symbol } = $props();
16
+
17
+ const emblaCtx = getEmblaContext('<Carousel.Previous/>', symbol);
18
+ </script>
19
+
20
+ <Button
21
+ {variant}
22
+ {size}
23
+ class={cn(
24
+ 'absolute size-8 touch-manipulation rounded-full',
25
+ emblaCtx.orientation === 'horizontal'
26
+ ? 'top-1/2 -left-12 -translate-y-1/2'
27
+ : '-top-12 left-1/2 -translate-x-1/2 rotate-90',
28
+ className
29
+ )}
30
+ disabled={!emblaCtx.canScrollPrev}
31
+ onclick={emblaCtx.scrollPrev}
32
+ onkeydown={emblaCtx.handleKeyDown}
33
+ {...restProps}
34
+ bind:ref
35
+ >
36
+ <ArrowLeft class="size-4" />
37
+ <span class="sr-only">Previous slide</span>
38
+ </Button>
@@ -0,0 +1,103 @@
1
+ <script lang="ts">
2
+ import { type CarouselAPI, type CarouselProps, type EmblaContext, setEmblaContext } from './context.js';
3
+ import { cn } from '$shadcn/utils.js';
4
+
5
+ let {
6
+ opts = {},
7
+ plugins = [],
8
+ setApi = () => {},
9
+ orientation = 'horizontal',
10
+ class: className,
11
+ children,
12
+ pointerdown,
13
+ pointerup,
14
+ symbol = undefined,
15
+ ...restProps
16
+ }: CarouselProps = $props();
17
+
18
+ let carouselState = $state<EmblaContext>({
19
+ api: undefined,
20
+ scrollPrev,
21
+ scrollNext,
22
+ orientation,
23
+ canScrollNext: false,
24
+ canScrollPrev: false,
25
+ handleKeyDown,
26
+ options: opts,
27
+ plugins,
28
+ onInit,
29
+ scrollSnaps: [],
30
+ selectedIndex: 0,
31
+ scrollTo
32
+ });
33
+
34
+ setEmblaContext(carouselState, symbol);
35
+
36
+ function scrollPrev() {
37
+ carouselState.api?.scrollPrev();
38
+ }
39
+ function scrollNext() {
40
+ carouselState.api?.scrollNext();
41
+ }
42
+ function scrollTo(index: number, jump?: boolean) {
43
+ carouselState.api?.scrollTo(index, jump);
44
+ }
45
+
46
+ function onSelect(api: CarouselAPI) {
47
+ if (!api) return;
48
+ carouselState.canScrollPrev = api.canScrollPrev();
49
+ carouselState.canScrollNext = api.canScrollNext();
50
+ carouselState.selectedIndex = api.selectedScrollSnap();
51
+ }
52
+
53
+ function reinit(api: CarouselAPI) {
54
+ onSelect(api);
55
+ }
56
+
57
+ $effect(() => {
58
+ if (carouselState.api) {
59
+ onSelect(carouselState.api);
60
+ carouselState.api.on('reInit', reinit);
61
+ carouselState.api.on('select', onSelect);
62
+ }
63
+ });
64
+
65
+ function handleKeyDown(e: KeyboardEvent) {
66
+ if (e.key === 'ArrowLeft') {
67
+ e.preventDefault();
68
+ scrollPrev();
69
+ } else if (e.key === 'ArrowRight') {
70
+ e.preventDefault();
71
+ scrollNext();
72
+ }
73
+ }
74
+
75
+ $effect(() => {
76
+ setApi(carouselState.api);
77
+ });
78
+
79
+ function onInit(event: CustomEvent<CarouselAPI>) {
80
+ carouselState.api = event.detail;
81
+
82
+ carouselState.scrollSnaps = carouselState.api.scrollSnapList();
83
+ if (pointerdown) {
84
+ carouselState.api.on('pointerDown', pointerdown);
85
+ }
86
+ if (pointerup) {
87
+ carouselState.api.on('pointerUp', pointerup);
88
+ }
89
+ }
90
+
91
+ $effect(() => {
92
+ return () => {
93
+ carouselState.api?.off('select', onSelect);
94
+ carouselState.api?.off('reInit', reinit);
95
+ if (pointerdown) carouselState.api?.off('pointerDown', pointerdown);
96
+ if (pointerup) carouselState.api?.off('pointerUp', pointerup);
97
+ };
98
+ });
99
+ </script>
100
+
101
+ <div class={cn('relative', className)} role="region" aria-roledescription="carousel" {...restProps}>
102
+ {@render children?.()}
103
+ </div>
@@ -0,0 +1,59 @@
1
+ import type { WithElementRef } from 'bits-ui';
2
+ import type { EmblaCarouselSvelteType } from 'embla-carousel-svelte';
3
+ import type emblaCarouselSvelte from 'embla-carousel-svelte';
4
+ import { getContext, hasContext, setContext } from 'svelte';
5
+ import type { HTMLAttributes } from 'svelte/elements';
6
+
7
+ export type CarouselAPI =
8
+ NonNullable<NonNullable<EmblaCarouselSvelteType['$$_attributes']>['on:emblaInit']> extends (
9
+ evt: CustomEvent<infer CarouselAPI>
10
+ ) => void
11
+ ? CarouselAPI
12
+ : never;
13
+
14
+ type EmblaCarouselConfig = NonNullable<Parameters<typeof emblaCarouselSvelte>[1]>;
15
+
16
+ export type CarouselOptions = EmblaCarouselConfig['options'];
17
+ export type CarouselPlugins = EmblaCarouselConfig['plugins'];
18
+
19
+ ////
20
+
21
+ export type CarouselProps = {
22
+ symbol?: symbol;
23
+ opts?: CarouselOptions;
24
+ plugins?: CarouselPlugins;
25
+ setApi?: (api: CarouselAPI | undefined) => void;
26
+ pointerdown?: (api: CarouselAPI) => void;
27
+ pointerup?: (api: CarouselAPI) => void;
28
+ orientation?: 'horizontal' | 'vertical';
29
+ } & WithElementRef<HTMLAttributes<HTMLDivElement>>;
30
+
31
+ export type EmblaContext = {
32
+ api: CarouselAPI | undefined;
33
+ orientation: 'horizontal' | 'vertical';
34
+ scrollNext: () => void;
35
+ scrollPrev: () => void;
36
+ canScrollNext: boolean;
37
+ canScrollPrev: boolean;
38
+ handleKeyDown: (e: KeyboardEvent) => void;
39
+ options: CarouselOptions;
40
+ plugins: CarouselPlugins;
41
+ onInit: (e: CustomEvent<CarouselAPI>) => void;
42
+ scrollTo: (index: number, jump?: boolean) => void;
43
+ scrollSnaps: number[];
44
+ selectedIndex: number;
45
+ };
46
+
47
+ const EMBLA_CAROUSEL_CONTEXT = Symbol('EMBLA_CAROUSEL_CONTEXT');
48
+
49
+ export function setEmblaContext(config: EmblaContext, symbol: symbol = EMBLA_CAROUSEL_CONTEXT): EmblaContext {
50
+ setContext(symbol, config);
51
+ return config;
52
+ }
53
+
54
+ export function getEmblaContext(name = 'This component', symbol: symbol = EMBLA_CAROUSEL_CONTEXT): EmblaContext {
55
+ if (!hasContext(symbol)) {
56
+ throw new Error(`${name} must be used within a <Carousel.Root> component`);
57
+ }
58
+ return getContext<ReturnType<typeof setEmblaContext>>(symbol);
59
+ }
@@ -0,0 +1,22 @@
1
+ import Root from './carousel.svelte';
2
+ import Content from './carousel-content.svelte';
3
+ import Item from './carousel-item.svelte';
4
+ import Previous from './carousel-previous.svelte';
5
+ import Next from './carousel-next.svelte';
6
+ import Dots from './carousel-dots.svelte';
7
+
8
+ export {
9
+ Root,
10
+ Content,
11
+ Item,
12
+ Previous,
13
+ Next,
14
+ Dots,
15
+ //
16
+ Root as Carousel,
17
+ Content as CarouselContent,
18
+ Item as CarouselItem,
19
+ Previous as CarouselPrevious,
20
+ Next as CarouselNext,
21
+ Dots as CarouselDots
22
+ };