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.
- package/README.md +12 -0
- package/dist/app.css +0 -4
- package/dist/lib/api/form.svelte.d.ts +11 -0
- package/dist/lib/api/form.svelte.d.ts.map +1 -0
- package/dist/lib/api/form.svelte.js +43 -0
- package/dist/lib/api/index.d.ts +3 -0
- package/dist/lib/api/index.d.ts.map +1 -0
- package/dist/lib/api/index.js +2 -0
- package/dist/lib/api/query.svelte.d.ts +21 -0
- package/dist/lib/api/query.svelte.d.ts.map +1 -0
- package/dist/lib/api/query.svelte.js +47 -0
- package/dist/lib/bits/internal/arrays.d.ts +1 -0
- package/dist/lib/bits/internal/arrays.d.ts.map +1 -0
- package/dist/lib/bits/internal/arrays.test.d.ts +1 -0
- package/dist/lib/bits/internal/arrays.test.d.ts.map +1 -0
- package/dist/lib/bits/internal/attrs.d.ts +1 -0
- package/dist/lib/bits/internal/attrs.d.ts.map +1 -0
- package/dist/lib/bits/internal/box-auto-reset.svelte.d.ts +1 -0
- package/dist/lib/bits/internal/box-auto-reset.svelte.d.ts.map +1 -0
- package/dist/lib/bits/internal/box.svelte.d.ts +1 -0
- package/dist/lib/bits/internal/box.svelte.d.ts.map +1 -0
- package/dist/lib/bits/internal/clamp.d.ts +1 -0
- package/dist/lib/bits/internal/clamp.d.ts.map +1 -0
- package/dist/lib/bits/internal/clamp.test.d.ts +1 -0
- package/dist/lib/bits/internal/clamp.test.d.ts.map +1 -0
- package/dist/lib/bits/internal/create-event-hook.svelte.d.ts +1 -0
- package/dist/lib/bits/internal/create-event-hook.svelte.d.ts.map +1 -0
- package/dist/lib/bits/internal/create-shared-hook.svelte.d.ts +1 -0
- package/dist/lib/bits/internal/create-shared-hook.svelte.d.ts.map +1 -0
- package/dist/lib/bits/internal/date-time/announcer.d.ts +2 -1
- package/dist/lib/bits/internal/date-time/announcer.d.ts.map +1 -0
- package/dist/lib/bits/internal/date-time/calendar-helpers.svelte.d.ts +1 -0
- package/dist/lib/bits/internal/date-time/calendar-helpers.svelte.d.ts.map +1 -0
- package/dist/lib/bits/internal/date-time/field/helpers.d.ts +1 -0
- package/dist/lib/bits/internal/date-time/field/helpers.d.ts.map +1 -0
- package/dist/lib/bits/internal/date-time/field/parts.d.ts +1 -0
- package/dist/lib/bits/internal/date-time/field/parts.d.ts.map +1 -0
- package/dist/lib/bits/internal/date-time/field/segments.d.ts +1 -0
- package/dist/lib/bits/internal/date-time/field/segments.d.ts.map +1 -0
- package/dist/lib/bits/internal/date-time/field/types.d.ts +1 -0
- package/dist/lib/bits/internal/date-time/field/types.d.ts.map +1 -0
- package/dist/lib/bits/internal/date-time/formatter.d.ts +1 -0
- package/dist/lib/bits/internal/date-time/formatter.d.ts.map +1 -0
- package/dist/lib/bits/internal/date-time/placeholders.d.ts +1 -0
- package/dist/lib/bits/internal/date-time/placeholders.d.ts.map +1 -0
- package/dist/lib/bits/internal/date-time/utils.d.ts +1 -0
- package/dist/lib/bits/internal/date-time/utils.d.ts.map +1 -0
- package/dist/lib/bits/internal/debounce.d.ts +1 -0
- package/dist/lib/bits/internal/debounce.d.ts.map +1 -0
- package/dist/lib/bits/internal/debounce.test.d.ts +1 -0
- package/dist/lib/bits/internal/debounce.test.d.ts.map +1 -0
- package/dist/lib/bits/internal/dom.d.ts +1 -0
- package/dist/lib/bits/internal/dom.d.ts.map +1 -0
- package/dist/lib/bits/internal/elements.d.ts +1 -0
- package/dist/lib/bits/internal/elements.d.ts.map +1 -0
- package/dist/lib/bits/internal/events.d.ts +1 -0
- package/dist/lib/bits/internal/events.d.ts.map +1 -0
- package/dist/lib/bits/internal/floating-svelte/floating-utils.svelte.d.ts +1 -0
- package/dist/lib/bits/internal/floating-svelte/floating-utils.svelte.d.ts.map +1 -0
- package/dist/lib/bits/internal/floating-svelte/types.d.ts +1 -0
- package/dist/lib/bits/internal/floating-svelte/types.d.ts.map +1 -0
- package/dist/lib/bits/internal/floating-svelte/use-floating.svelte.d.ts +1 -0
- package/dist/lib/bits/internal/floating-svelte/use-floating.svelte.d.ts.map +1 -0
- package/dist/lib/bits/internal/focus.d.ts +1 -0
- package/dist/lib/bits/internal/focus.d.ts.map +1 -0
- package/dist/lib/bits/internal/get-directional-keys.d.ts +1 -0
- package/dist/lib/bits/internal/get-directional-keys.d.ts.map +1 -0
- package/dist/lib/bits/internal/get-directional-keys.test.d.ts +1 -0
- package/dist/lib/bits/internal/get-directional-keys.test.d.ts.map +1 -0
- package/dist/lib/bits/internal/is.d.ts +1 -0
- package/dist/lib/bits/internal/is.d.ts.map +1 -0
- package/dist/lib/bits/internal/is.test.d.ts +1 -0
- package/dist/lib/bits/internal/is.test.d.ts.map +1 -0
- package/dist/lib/bits/internal/kbd-constants.d.ts +1 -0
- package/dist/lib/bits/internal/kbd-constants.d.ts.map +1 -0
- package/dist/lib/bits/internal/kbd.d.ts +1 -0
- package/dist/lib/bits/internal/kbd.d.ts.map +1 -0
- package/dist/lib/bits/internal/locale.d.ts +1 -0
- package/dist/lib/bits/internal/locale.d.ts.map +1 -0
- package/dist/lib/bits/internal/math.d.ts +1 -0
- package/dist/lib/bits/internal/math.d.ts.map +1 -0
- package/dist/lib/bits/internal/math.test.d.ts +1 -0
- package/dist/lib/bits/internal/math.test.d.ts.map +1 -0
- package/dist/lib/bits/internal/noop.d.ts +1 -0
- package/dist/lib/bits/internal/noop.d.ts.map +1 -0
- package/dist/lib/bits/internal/should-trap-focus.d.ts +1 -0
- package/dist/lib/bits/internal/should-trap-focus.d.ts.map +1 -0
- package/dist/lib/bits/internal/sleep.d.ts +1 -0
- package/dist/lib/bits/internal/sleep.d.ts.map +1 -0
- package/dist/lib/bits/internal/tabbable.d.ts +1 -0
- package/dist/lib/bits/internal/tabbable.d.ts.map +1 -0
- package/dist/lib/bits/internal/types.d.ts +1 -0
- package/dist/lib/bits/internal/types.d.ts.map +1 -0
- package/dist/lib/bits/internal/use-after-animations.svelte.d.ts +1 -0
- package/dist/lib/bits/internal/use-after-animations.svelte.d.ts.map +1 -0
- package/dist/lib/bits/internal/use-arrow-navigation.d.ts +1 -0
- package/dist/lib/bits/internal/use-arrow-navigation.d.ts.map +1 -0
- package/dist/lib/bits/internal/use-body-scroll-lock.svelte.d.ts +1 -0
- package/dist/lib/bits/internal/use-body-scroll-lock.svelte.d.ts.map +1 -0
- package/dist/lib/bits/internal/use-data-typeahead.svelte.d.ts +1 -0
- package/dist/lib/bits/internal/use-data-typeahead.svelte.d.ts.map +1 -0
- package/dist/lib/bits/internal/use-dom-typeahead.svelte.d.ts +1 -0
- package/dist/lib/bits/internal/use-dom-typeahead.svelte.d.ts.map +1 -0
- package/dist/lib/bits/internal/use-form-control.svelte.d.ts +1 -0
- package/dist/lib/bits/internal/use-form-control.svelte.d.ts.map +1 -0
- package/dist/lib/bits/internal/use-grace-area.svelte.d.ts +1 -0
- package/dist/lib/bits/internal/use-grace-area.svelte.d.ts.map +1 -0
- package/dist/lib/bits/internal/use-id.d.ts +1 -0
- package/dist/lib/bits/internal/use-id.d.ts.map +1 -0
- package/dist/lib/bits/internal/use-resize-observer.svelte.d.ts +1 -0
- package/dist/lib/bits/internal/use-resize-observer.svelte.d.ts.map +1 -0
- package/dist/lib/bits/internal/use-roving-focus.svelte.d.ts +1 -0
- package/dist/lib/bits/internal/use-roving-focus.svelte.d.ts.map +1 -0
- package/dist/lib/bits/internal/use-size.svelte.d.ts +1 -0
- package/dist/lib/bits/internal/use-size.svelte.d.ts.map +1 -0
- package/dist/lib/bits/internal/use-state-machine.svelte.d.ts +1 -0
- package/dist/lib/bits/internal/use-state-machine.svelte.d.ts.map +1 -0
- package/dist/lib/bits/internal/use-timeout-fn.svelte.d.ts +1 -0
- package/dist/lib/bits/internal/use-timeout-fn.svelte.d.ts.map +1 -0
- package/dist/lib/components/animated/animated.svelte +5 -3
- package/dist/lib/components/animated/animated.svelte.d.ts +4 -0
- package/dist/lib/components/animated/animated.svelte.d.ts.map +1 -0
- package/dist/lib/components/animated/index.d.ts +1 -0
- package/dist/lib/components/animated/index.d.ts.map +1 -0
- package/dist/lib/components/carousel/carousel-content.svelte +44 -0
- package/dist/lib/components/carousel/carousel-content.svelte.d.ts +9 -0
- package/dist/lib/components/carousel/carousel-content.svelte.d.ts.map +1 -0
- package/dist/lib/components/carousel/carousel-dots.svelte +28 -0
- package/dist/lib/components/carousel/carousel-dots.svelte.d.ts +9 -0
- package/dist/lib/components/carousel/carousel-dots.svelte.d.ts.map +1 -0
- package/dist/lib/components/carousel/carousel-item.svelte +27 -0
- package/dist/lib/components/carousel/carousel-item.svelte.d.ts +9 -0
- package/dist/lib/components/carousel/carousel-item.svelte.d.ts.map +1 -0
- package/dist/lib/components/carousel/carousel-next.svelte +38 -0
- package/dist/lib/components/carousel/carousel-next.svelte.d.ts +9 -0
- package/dist/lib/components/carousel/carousel-next.svelte.d.ts.map +1 -0
- package/dist/lib/components/carousel/carousel-previous.svelte +38 -0
- package/dist/lib/components/carousel/carousel-previous.svelte.d.ts +9 -0
- package/dist/lib/components/carousel/carousel-previous.svelte.d.ts.map +1 -0
- package/dist/lib/components/carousel/carousel.svelte +103 -0
- package/dist/lib/components/carousel/carousel.svelte.d.ts +5 -0
- package/dist/lib/components/carousel/carousel.svelte.d.ts.map +1 -0
- package/dist/lib/components/carousel/context.d.ts +36 -0
- package/dist/lib/components/carousel/context.d.ts.map +1 -0
- package/dist/lib/components/carousel/context.js +12 -0
- package/dist/lib/components/carousel/index.d.ts +8 -0
- package/dist/lib/components/carousel/index.d.ts.map +1 -0
- package/dist/lib/components/carousel/index.js +9 -0
- package/dist/lib/components/dnd/Droppable.svelte.d.ts +1 -0
- package/dist/lib/components/dnd/Droppable.svelte.d.ts.map +1 -0
- package/dist/lib/components/dnd/context.svelte.d.ts +3 -3
- package/dist/lib/components/dnd/context.svelte.d.ts.map +1 -0
- package/dist/lib/components/dnd/context.svelte.js +6 -7
- package/dist/lib/components/dnd/dnd-context.svelte.d.ts +1 -0
- package/dist/lib/components/dnd/dnd-context.svelte.d.ts.map +1 -0
- package/dist/lib/components/dnd/dnd-drag-overlay.svelte.d.ts +1 -0
- package/dist/lib/components/dnd/dnd-drag-overlay.svelte.d.ts.map +1 -0
- package/dist/lib/components/dnd/dnd-drag-placeholder.svelte.d.ts +1 -0
- package/dist/lib/components/dnd/dnd-drag-placeholder.svelte.d.ts.map +1 -0
- package/dist/lib/components/dnd/dnd-draghandle.svelte +7 -1
- package/dist/lib/components/dnd/dnd-draghandle.svelte.d.ts +1 -0
- package/dist/lib/components/dnd/dnd-draghandle.svelte.d.ts.map +1 -0
- package/dist/lib/components/dnd/dnd-overlay.svelte.d.ts +1 -0
- package/dist/lib/components/dnd/dnd-overlay.svelte.d.ts.map +1 -0
- package/dist/lib/components/dnd/dnd-sortable-context.svelte.d.ts +1 -0
- package/dist/lib/components/dnd/dnd-sortable-context.svelte.d.ts.map +1 -0
- package/dist/lib/components/dnd/dnd-sortable-item.svelte +9 -5
- package/dist/lib/components/dnd/dnd-sortable-item.svelte.d.ts +3 -2
- package/dist/lib/components/dnd/dnd-sortable-item.svelte.d.ts.map +1 -0
- package/dist/lib/components/dnd/example.svelte.d.ts +1 -0
- package/dist/lib/components/dnd/example.svelte.d.ts.map +1 -0
- package/dist/lib/components/dnd/exports.d.ts +1 -0
- package/dist/lib/components/dnd/exports.d.ts.map +1 -0
- package/dist/lib/components/dnd/index.d.ts +1 -0
- package/dist/lib/components/dnd/index.d.ts.map +1 -0
- package/dist/lib/components/dnd/sortable.svelte.d.ts +1 -0
- package/dist/lib/components/dnd/sortable.svelte.d.ts.map +1 -0
- package/dist/lib/components/dnd/sortable.svelte.js +3 -1
- package/dist/lib/components/dnd/utils.svelte.d.ts +14 -0
- package/dist/lib/components/dnd/utils.svelte.d.ts.map +1 -0
- package/dist/lib/components/dnd/utils.svelte.js +7 -3
- package/dist/lib/components/form/form-button.svelte +20 -0
- package/dist/lib/components/form/form-button.svelte.d.ts +5 -0
- package/dist/lib/components/form/form-button.svelte.d.ts.map +1 -0
- package/dist/lib/components/form/form-description.svelte +17 -0
- package/dist/lib/components/form/form-description.svelte.d.ts +5 -0
- package/dist/lib/components/form/form-description.svelte.d.ts.map +1 -0
- package/dist/lib/components/form/form-element-field.svelte +24 -0
- package/dist/lib/components/form/form-element-field.svelte.d.ts +19 -0
- package/dist/lib/components/form/form-element-field.svelte.d.ts.map +1 -0
- package/dist/lib/components/form/form-field-errors.svelte +30 -0
- package/dist/lib/components/form/form-field-errors.svelte.d.ts +4 -0
- package/dist/lib/components/form/form-field-errors.svelte.d.ts.map +1 -0
- package/dist/lib/components/form/form-field.svelte +29 -0
- package/dist/lib/components/form/form-field.svelte.d.ts +19 -0
- package/dist/lib/components/form/form-field.svelte.d.ts.map +1 -0
- package/dist/lib/components/form/form-fieldset.svelte +15 -0
- package/dist/lib/components/form/form-fieldset.svelte.d.ts +20 -0
- package/dist/lib/components/form/form-fieldset.svelte.d.ts.map +1 -0
- package/dist/lib/components/form/form-label.svelte +24 -0
- package/dist/lib/components/form/form-label.svelte.d.ts +5 -0
- package/dist/lib/components/form/form-label.svelte.d.ts.map +1 -0
- package/dist/lib/components/form/form-legend.svelte +16 -0
- package/dist/lib/components/form/form-legend.svelte.d.ts +5 -0
- package/dist/lib/components/form/form-legend.svelte.d.ts.map +1 -0
- package/dist/lib/components/form/form.svelte +36 -0
- package/dist/lib/components/form/form.svelte.d.ts +13 -0
- package/dist/lib/components/form/form.svelte.d.ts.map +1 -0
- package/dist/lib/components/form/index.d.ts +13 -0
- package/dist/lib/components/form/index.d.ts.map +1 -0
- package/dist/lib/components/form/index.js +14 -0
- package/dist/lib/components/gradient/Gradient.svelte +66 -0
- package/dist/lib/components/gradient/Gradient.svelte.d.ts +11 -0
- package/dist/lib/components/gradient/Gradient.svelte.d.ts.map +1 -0
- package/dist/lib/components/gradient/index.d.ts +2 -0
- package/dist/lib/components/gradient/index.d.ts.map +1 -0
- package/dist/lib/components/gradient/index.js +1 -0
- package/dist/lib/components/safe/index.d.ts +3 -0
- package/dist/lib/components/safe/index.d.ts.map +1 -0
- package/dist/lib/components/safe/index.js +2 -0
- package/dist/lib/components/safe/safe.svelte +20 -0
- package/dist/lib/components/safe/safe.svelte.d.ts +9 -0
- package/dist/lib/components/safe/safe.svelte.d.ts.map +1 -0
- package/dist/lib/components/search/combinations/searchPopover.svelte.d.ts +1 -0
- package/dist/lib/components/search/combinations/searchPopover.svelte.d.ts.map +1 -0
- package/dist/lib/components/search/components/search-empty.svelte.d.ts +1 -0
- package/dist/lib/components/search/components/search-empty.svelte.d.ts.map +1 -0
- package/dist/lib/components/search/components/search-input.svelte.d.ts +1 -0
- package/dist/lib/components/search/components/search-input.svelte.d.ts.map +1 -0
- package/dist/lib/components/search/components/search-list.svelte +2 -2
- package/dist/lib/components/search/components/search-list.svelte.d.ts +1 -0
- package/dist/lib/components/search/components/search-list.svelte.d.ts.map +1 -0
- package/dist/lib/components/search/components/search-pagnation.svelte.d.ts +1 -0
- package/dist/lib/components/search/components/search-pagnation.svelte.d.ts.map +1 -0
- package/dist/lib/components/search/components/search.svelte.d.ts +1 -0
- package/dist/lib/components/search/components/search.svelte.d.ts.map +1 -0
- package/dist/lib/components/search/exports.d.ts +1 -0
- package/dist/lib/components/search/exports.d.ts.map +1 -0
- package/dist/lib/components/search/index.d.ts +1 -0
- package/dist/lib/components/search/index.d.ts.map +1 -0
- package/dist/lib/components/search/search.svelte.d.ts +1 -0
- package/dist/lib/components/search/search.svelte.d.ts.map +1 -0
- package/dist/lib/components/search/types.d.ts +1 -0
- package/dist/lib/components/search/types.d.ts.map +1 -0
- package/dist/lib/components/sidebar/README.md +10 -0
- package/dist/lib/components/sidebar/constants.d.ts +7 -0
- package/dist/lib/components/sidebar/constants.d.ts.map +1 -0
- package/dist/lib/components/sidebar/constants.js +6 -0
- package/dist/lib/components/sidebar/context.svelte.d.ts +52 -0
- package/dist/lib/components/sidebar/context.svelte.d.ts.map +1 -0
- package/dist/lib/components/sidebar/context.svelte.js +57 -0
- package/dist/lib/components/sidebar/index.d.ts +26 -0
- package/dist/lib/components/sidebar/index.d.ts.map +1 -0
- package/dist/lib/components/sidebar/index.js +27 -0
- package/dist/lib/components/sidebar/sidebar-content.svelte +24 -0
- package/dist/lib/components/sidebar/sidebar-content.svelte.d.ts +6 -0
- package/dist/lib/components/sidebar/sidebar-content.svelte.d.ts.map +1 -0
- package/dist/lib/components/sidebar/sidebar-footer.svelte +21 -0
- package/dist/lib/components/sidebar/sidebar-footer.svelte.d.ts +6 -0
- package/dist/lib/components/sidebar/sidebar-footer.svelte.d.ts.map +1 -0
- package/dist/lib/components/sidebar/sidebar-group-action.svelte +36 -0
- package/dist/lib/components/sidebar/sidebar-group-action.svelte.d.ts +12 -0
- package/dist/lib/components/sidebar/sidebar-group-action.svelte.d.ts.map +1 -0
- package/dist/lib/components/sidebar/sidebar-group-content.svelte +21 -0
- package/dist/lib/components/sidebar/sidebar-group-content.svelte.d.ts +6 -0
- package/dist/lib/components/sidebar/sidebar-group-content.svelte.d.ts.map +1 -0
- package/dist/lib/components/sidebar/sidebar-group-label.svelte +34 -0
- package/dist/lib/components/sidebar/sidebar-group-label.svelte.d.ts +12 -0
- package/dist/lib/components/sidebar/sidebar-group-label.svelte.d.ts.map +1 -0
- package/dist/lib/components/sidebar/sidebar-group.svelte +21 -0
- package/dist/lib/components/sidebar/sidebar-group.svelte.d.ts +6 -0
- package/dist/lib/components/sidebar/sidebar-group.svelte.d.ts.map +1 -0
- package/dist/lib/components/sidebar/sidebar-header.svelte +21 -0
- package/dist/lib/components/sidebar/sidebar-header.svelte.d.ts +6 -0
- package/dist/lib/components/sidebar/sidebar-header.svelte.d.ts.map +1 -0
- package/dist/lib/components/sidebar/sidebar-input.svelte +23 -0
- package/dist/lib/components/sidebar/sidebar-input.svelte.d.ts +12 -0
- package/dist/lib/components/sidebar/sidebar-input.svelte.d.ts.map +1 -0
- package/dist/lib/components/sidebar/sidebar-inset.svelte +31 -0
- package/dist/lib/components/sidebar/sidebar-inset.svelte.d.ts +6 -0
- package/dist/lib/components/sidebar/sidebar-inset.svelte.d.ts.map +1 -0
- package/dist/lib/components/sidebar/sidebar-menu-action.svelte +56 -0
- package/dist/lib/components/sidebar/sidebar-menu-action.svelte.d.ts +13 -0
- package/dist/lib/components/sidebar/sidebar-menu-action.svelte.d.ts.map +1 -0
- package/dist/lib/components/sidebar/sidebar-menu-badge.svelte +29 -0
- package/dist/lib/components/sidebar/sidebar-menu-badge.svelte.d.ts +6 -0
- package/dist/lib/components/sidebar/sidebar-menu-badge.svelte.d.ts.map +1 -0
- package/dist/lib/components/sidebar/sidebar-menu-button.svelte +150 -0
- package/dist/lib/components/sidebar/sidebar-menu-button.svelte.d.ts +57 -0
- package/dist/lib/components/sidebar/sidebar-menu-button.svelte.d.ts.map +1 -0
- package/dist/lib/components/sidebar/sidebar-menu-item.svelte +21 -0
- package/dist/lib/components/sidebar/sidebar-menu-item.svelte.d.ts +6 -0
- package/dist/lib/components/sidebar/sidebar-menu-item.svelte.d.ts.map +1 -0
- package/dist/lib/components/sidebar/sidebar-menu-skeleton.svelte +36 -0
- package/dist/lib/components/sidebar/sidebar-menu-skeleton.svelte.d.ts +9 -0
- package/dist/lib/components/sidebar/sidebar-menu-skeleton.svelte.d.ts.map +1 -0
- package/dist/lib/components/sidebar/sidebar-menu-sub-button.svelte +53 -0
- package/dist/lib/components/sidebar/sidebar-menu-sub-button.svelte.d.ts +14 -0
- package/dist/lib/components/sidebar/sidebar-menu-sub-button.svelte.d.ts.map +1 -0
- package/dist/lib/components/sidebar/sidebar-menu-sub-item.svelte +16 -0
- package/dist/lib/components/sidebar/sidebar-menu-sub-item.svelte.d.ts +6 -0
- package/dist/lib/components/sidebar/sidebar-menu-sub-item.svelte.d.ts.map +1 -0
- package/dist/lib/components/sidebar/sidebar-menu-sub.svelte +25 -0
- package/dist/lib/components/sidebar/sidebar-menu-sub.svelte.d.ts +6 -0
- package/dist/lib/components/sidebar/sidebar-menu-sub.svelte.d.ts.map +1 -0
- package/dist/lib/components/sidebar/sidebar-menu.svelte +21 -0
- package/dist/lib/components/sidebar/sidebar-menu.svelte.d.ts +6 -0
- package/dist/lib/components/sidebar/sidebar-menu.svelte.d.ts.map +1 -0
- package/dist/lib/components/sidebar/sidebar-provider.svelte +57 -0
- package/dist/lib/components/sidebar/sidebar-provider.svelte.d.ts +13 -0
- package/dist/lib/components/sidebar/sidebar-provider.svelte.d.ts.map +1 -0
- package/dist/lib/components/sidebar/sidebar-rail.svelte +55 -0
- package/dist/lib/components/sidebar/sidebar-rail.svelte.d.ts +9 -0
- package/dist/lib/components/sidebar/sidebar-rail.svelte.d.ts.map +1 -0
- package/dist/lib/components/sidebar/sidebar-separator.svelte +18 -0
- package/dist/lib/components/sidebar/sidebar-separator.svelte.d.ts +4 -0
- package/dist/lib/components/sidebar/sidebar-separator.svelte.d.ts.map +1 -0
- package/dist/lib/components/sidebar/sidebar-trigger.svelte +36 -0
- package/dist/lib/components/sidebar/sidebar-trigger.svelte.d.ts +10 -0
- package/dist/lib/components/sidebar/sidebar-trigger.svelte.d.ts.map +1 -0
- package/dist/lib/components/sidebar/sidebar.svelte +162 -0
- package/dist/lib/components/sidebar/sidebar.svelte.d.ts +11 -0
- package/dist/lib/components/sidebar/sidebar.svelte.d.ts.map +1 -0
- package/dist/lib/components/utilities/arrow/arrow.svelte.d.ts +1 -0
- package/dist/lib/components/utilities/arrow/arrow.svelte.d.ts.map +1 -0
- package/dist/lib/components/utilities/arrow/index.d.ts +1 -0
- package/dist/lib/components/utilities/arrow/index.d.ts.map +1 -0
- package/dist/lib/components/utilities/arrow/types.d.ts +1 -0
- package/dist/lib/components/utilities/arrow/types.d.ts.map +1 -0
- package/dist/lib/components/utilities/floating-layer/components/floating-layer-anchor.svelte.d.ts +1 -0
- package/dist/lib/components/utilities/floating-layer/components/floating-layer-anchor.svelte.d.ts.map +1 -0
- package/dist/lib/components/utilities/floating-layer/components/floating-layer-arrow.svelte.d.ts +1 -0
- package/dist/lib/components/utilities/floating-layer/components/floating-layer-arrow.svelte.d.ts.map +1 -0
- package/dist/lib/components/utilities/floating-layer/components/floating-layer-content-static.svelte.d.ts +1 -0
- package/dist/lib/components/utilities/floating-layer/components/floating-layer-content-static.svelte.d.ts.map +1 -0
- package/dist/lib/components/utilities/floating-layer/components/floating-layer-content.svelte.d.ts +1 -0
- package/dist/lib/components/utilities/floating-layer/components/floating-layer-content.svelte.d.ts.map +1 -0
- package/dist/lib/components/utilities/floating-layer/components/floating-layer.svelte.d.ts +1 -0
- package/dist/lib/components/utilities/floating-layer/components/floating-layer.svelte.d.ts.map +1 -0
- package/dist/lib/components/utilities/floating-layer/components/index.d.ts +1 -0
- package/dist/lib/components/utilities/floating-layer/components/index.d.ts.map +1 -0
- package/dist/lib/components/utilities/floating-layer/index.d.ts +1 -0
- package/dist/lib/components/utilities/floating-layer/index.d.ts.map +1 -0
- package/dist/lib/components/utilities/floating-layer/types.d.ts +1 -0
- package/dist/lib/components/utilities/floating-layer/types.d.ts.map +1 -0
- package/dist/lib/components/utilities/floating-layer/use-floating-layer.svelte.d.ts +1 -0
- package/dist/lib/components/utilities/floating-layer/use-floating-layer.svelte.d.ts.map +1 -0
- package/dist/lib/index.d.ts +3 -1
- package/dist/lib/index.d.ts.map +1 -0
- package/dist/lib/index.js +2 -1
- package/dist/lib/utils/asyncDerived.svelte.d.ts +1 -0
- package/dist/lib/utils/asyncDerived.svelte.d.ts.map +1 -0
- package/dist/lib/utils/bits.d.ts +1 -0
- package/dist/lib/utils/bits.d.ts.map +1 -0
- package/dist/lib/utils/index.d.ts +5 -3
- package/dist/lib/utils/index.d.ts.map +1 -0
- package/dist/lib/utils/index.js +4 -3
- package/dist/lib/utils/reactive.svelte.d.ts +25 -0
- package/dist/lib/utils/reactive.svelte.d.ts.map +1 -0
- package/dist/lib/utils/reactive.svelte.js +34 -0
- package/dist/lib/utils/utils.d.ts +1 -0
- package/dist/lib/utils/utils.d.ts.map +1 -0
- package/dist/lib/vite/index.d.ts +2 -0
- package/dist/lib/vite/index.d.ts.map +1 -0
- package/dist/lib/vite/index.js +1 -0
- package/dist/lib/vite/vite-plugin-component-source-collector.d.ts +16 -0
- package/dist/lib/vite/vite-plugin-component-source-collector.d.ts.map +1 -0
- package/dist/lib/vite/vite-plugin-component-source-collector.js +74 -0
- package/dist/routes/+layout.svelte.d.ts +1 -0
- package/dist/routes/+layout.svelte.d.ts.map +1 -0
- package/package.json +48 -33
- package/src/app.css +0 -4
- package/src/lib/api/form.svelte.ts +65 -0
- package/src/lib/api/index.ts +2 -0
- package/src/lib/api/query.svelte.ts +59 -0
- package/src/lib/components/animated/animated.svelte +5 -3
- package/src/lib/components/carousel/carousel-content.svelte +44 -0
- package/src/lib/components/carousel/carousel-dots.svelte +28 -0
- package/src/lib/components/carousel/carousel-item.svelte +27 -0
- package/src/lib/components/carousel/carousel-next.svelte +38 -0
- package/src/lib/components/carousel/carousel-previous.svelte +38 -0
- package/src/lib/components/carousel/carousel.svelte +103 -0
- package/src/lib/components/carousel/context.ts +59 -0
- package/src/lib/components/carousel/index.ts +22 -0
- package/src/lib/components/dnd/context.svelte.ts +11 -8
- package/src/lib/components/dnd/dnd-draghandle.svelte +7 -1
- package/src/lib/components/dnd/dnd-sortable-item.svelte +9 -5
- package/src/lib/components/dnd/sortable.svelte.ts +4 -1
- package/src/lib/components/dnd/utils.svelte.ts +14 -3
- package/src/lib/components/form/form-button.svelte +20 -0
- package/src/lib/components/form/form-description.svelte +17 -0
- package/src/lib/components/form/form-element-field.svelte +24 -0
- package/src/lib/components/form/form-field-errors.svelte +30 -0
- package/src/lib/components/form/form-field.svelte +29 -0
- package/src/lib/components/form/form-fieldset.svelte +15 -0
- package/src/lib/components/form/form-label.svelte +24 -0
- package/src/lib/components/form/form-legend.svelte +16 -0
- package/src/lib/components/form/form.svelte +36 -0
- package/src/lib/components/form/index.ts +36 -0
- package/src/lib/components/gradient/Gradient.svelte +66 -0
- package/src/lib/components/gradient/index.ts +1 -0
- package/src/lib/components/safe/index.ts +3 -0
- package/src/lib/components/safe/safe.svelte +20 -0
- package/src/lib/components/search/components/search-list.svelte +2 -2
- package/src/lib/components/sidebar/README.md +10 -0
- package/src/lib/components/sidebar/constants.ts +6 -0
- package/src/lib/components/sidebar/context.svelte.ts +84 -0
- package/src/lib/components/sidebar/index.ts +75 -0
- package/src/lib/components/sidebar/sidebar-content.svelte +24 -0
- package/src/lib/components/sidebar/sidebar-footer.svelte +21 -0
- package/src/lib/components/sidebar/sidebar-group-action.svelte +36 -0
- package/src/lib/components/sidebar/sidebar-group-content.svelte +21 -0
- package/src/lib/components/sidebar/sidebar-group-label.svelte +34 -0
- package/src/lib/components/sidebar/sidebar-group.svelte +21 -0
- package/src/lib/components/sidebar/sidebar-header.svelte +21 -0
- package/src/lib/components/sidebar/sidebar-input.svelte +23 -0
- package/src/lib/components/sidebar/sidebar-inset.svelte +31 -0
- package/src/lib/components/sidebar/sidebar-menu-action.svelte +56 -0
- package/src/lib/components/sidebar/sidebar-menu-badge.svelte +29 -0
- package/src/lib/components/sidebar/sidebar-menu-button.svelte +150 -0
- package/src/lib/components/sidebar/sidebar-menu-item.svelte +21 -0
- package/src/lib/components/sidebar/sidebar-menu-skeleton.svelte +36 -0
- package/src/lib/components/sidebar/sidebar-menu-sub-button.svelte +53 -0
- package/src/lib/components/sidebar/sidebar-menu-sub-item.svelte +16 -0
- package/src/lib/components/sidebar/sidebar-menu-sub.svelte +25 -0
- package/src/lib/components/sidebar/sidebar-menu.svelte +21 -0
- package/src/lib/components/sidebar/sidebar-provider.svelte +57 -0
- package/src/lib/components/sidebar/sidebar-rail.svelte +55 -0
- package/src/lib/components/sidebar/sidebar-separator.svelte +18 -0
- package/src/lib/components/sidebar/sidebar-trigger.svelte +36 -0
- package/src/lib/components/sidebar/sidebar.svelte +162 -0
- package/src/lib/index.ts +2 -1
- package/src/lib/utils/index.ts +4 -3
- package/src/lib/utils/reactive.svelte.ts +38 -0
- package/src/lib/vite/index.ts +1 -0
- package/src/lib/vite/vite-plugin-component-source-collector.ts +102 -0
- package/dist/lib/components/Typeahead.svelte.d.ts +0 -47
- package/dist/lib/components/Typeahead.svelte.js +0 -150
- package/dist/lib/components/combo/combo.svelte +0 -186
- package/dist/lib/components/combo/combo.svelte.d.ts +0 -21
- package/dist/lib/components/combo/index.d.ts +0 -2
- package/dist/lib/components/combo/index.js +0 -2
- package/src/lib/components/Typeahead.svelte.ts +0 -200
- package/src/lib/components/combo/combo.svelte +0 -186
- 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.
|
|
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.
|
|
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
|
-
"
|
|
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
|
-
"@
|
|
32
|
-
"@
|
|
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
|
-
"
|
|
35
|
-
"eslint": "^9.24.0",
|
|
49
|
+
"eslint": "^9.26.0",
|
|
36
50
|
"eslint-plugin-import": "^2.31.0",
|
|
37
|
-
"eslint-plugin-readable-tailwind": "^2.
|
|
51
|
+
"eslint-plugin-readable-tailwind": "^2.1.1",
|
|
38
52
|
"eslint-plugin-svelte": "^3.5.1",
|
|
39
|
-
"globals": "^16.
|
|
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.
|
|
47
|
-
"
|
|
48
|
-
"
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
"node": "
|
|
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
|
-
"
|
|
73
|
-
"
|
|
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
|
@@ -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,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:
|
|
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
|
+
};
|