sheer-ui 0.0.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/LICENSE +21 -0
- package/README.md +42 -0
- package/package.json +369 -0
- package/src/lib/VENDORED.md +109 -0
- package/src/lib/assets/ui.css +733 -0
- package/src/lib/blocks/Appearance.svelte +104 -0
- package/src/lib/blocks/BoundaryFailed.svelte +33 -0
- package/src/lib/blocks/ErrorPage.svelte +65 -0
- package/src/lib/blocks/Footer.svelte +71 -0
- package/src/lib/blocks/Header.svelte +67 -0
- package/src/lib/blocks/Heading.svelte +86 -0
- package/src/lib/blocks/MobileNav.svelte +169 -0
- package/src/lib/blocks/PhoneInput.svelte +68 -0
- package/src/lib/blocks/Section.svelte +34 -0
- package/src/lib/blocks/alert-modal/AlertModal.svelte +83 -0
- package/src/lib/blocks/alert-modal/alert-modal.svelte.ts +81 -0
- package/src/lib/blocks/alert-modal/index.ts +2 -0
- package/src/lib/blocks/calendar.svelte +155 -0
- package/src/lib/blocks/copy-button/copy-button.svelte +43 -0
- package/src/lib/blocks/copy-button/copy.svelte.ts +52 -0
- package/src/lib/blocks/copy-button/index.ts +2 -0
- package/src/lib/blocks/date-picker/date-picker-with-presets.svelte +109 -0
- package/src/lib/blocks/date-picker/date-picker.svelte +91 -0
- package/src/lib/blocks/date-picker/index.ts +13 -0
- package/src/lib/blocks/date-picker/range-date-picker.svelte +128 -0
- package/src/lib/blocks/index.ts +12 -0
- package/src/lib/blocks/mockups/Browser.svelte +22 -0
- package/src/lib/blocks/mockups/Phone.svelte +44 -0
- package/src/lib/blocks/mockups/index.ts +2 -0
- package/src/lib/blocks/tab-nav/index.ts +1 -0
- package/src/lib/blocks/tab-nav/tab-nav.svelte +46 -0
- package/src/lib/blocks/time-picker/index.ts +16 -0
- package/src/lib/blocks/time-picker/time-input.svelte +118 -0
- package/src/lib/blocks/time-picker/time-picker.svelte +93 -0
- package/src/lib/blocks/time-picker/time-range-input.svelte +34 -0
- package/src/lib/blocks/time-picker/time-range-picker.svelte +180 -0
- package/src/lib/blocks/time-picker/time-slots.ts +61 -0
- package/src/lib/blocks/user-avatar/UserAvatar.svelte +36 -0
- package/src/lib/blocks/user-avatar/index.ts +1 -0
- package/src/lib/blocks/verification-code-field/VerificationCodeField.svelte +57 -0
- package/src/lib/blocks/verification-code-field/index.ts +1 -0
- package/src/lib/components/accordion/accordion.svelte.ts +43 -0
- package/src/lib/components/accordion/components/accordion-content.svelte +17 -0
- package/src/lib/components/accordion/components/accordion-item.svelte +58 -0
- package/src/lib/components/accordion/components/accordion-trigger.svelte +38 -0
- package/src/lib/components/accordion/components/accordion.svelte +24 -0
- package/src/lib/components/accordion/index.ts +11 -0
- package/src/lib/components/accordion/types.ts +19 -0
- package/src/lib/components/alert/alert-action.svelte +11 -0
- package/src/lib/components/alert/alert-description.svelte +18 -0
- package/src/lib/components/alert/alert-title.svelte +18 -0
- package/src/lib/components/alert/alert.svelte +37 -0
- package/src/lib/components/alert/index.ts +17 -0
- package/src/lib/components/avatar/avatar.svelte.ts +154 -0
- package/src/lib/components/avatar/components/avatar-fallback.svelte +38 -0
- package/src/lib/components/avatar/components/avatar-image.svelte +47 -0
- package/src/lib/components/avatar/components/avatar.svelte +57 -0
- package/src/lib/components/avatar/index.ts +9 -0
- package/src/lib/components/avatar/types.ts +46 -0
- package/src/lib/components/badge/badge.svelte +49 -0
- package/src/lib/components/badge/index.ts +1 -0
- package/src/lib/components/breadcrumb/breadcrumb-ellipsis.svelte +23 -0
- package/src/lib/components/breadcrumb/breadcrumb-item.svelte +11 -0
- package/src/lib/components/breadcrumb/breadcrumb-link.svelte +32 -0
- package/src/lib/components/breadcrumb/breadcrumb-list.svelte +15 -0
- package/src/lib/components/breadcrumb/breadcrumb-page.svelte +18 -0
- package/src/lib/components/breadcrumb/breadcrumb-separator.svelte +22 -0
- package/src/lib/components/breadcrumb/breadcrumb.svelte +10 -0
- package/src/lib/components/breadcrumb/index.ts +25 -0
- package/src/lib/components/button/button.svelte +55 -0
- package/src/lib/components/button/index.ts +12 -0
- package/src/lib/components/button/variants.ts +51 -0
- package/src/lib/components/calendar/calendar.svelte.ts +1081 -0
- package/src/lib/components/calendar/components/calendar-cell.svelte +34 -0
- package/src/lib/components/calendar/components/calendar-day.svelte +36 -0
- package/src/lib/components/calendar/components/calendar-grid-body.svelte +29 -0
- package/src/lib/components/calendar/components/calendar-grid-head.svelte +29 -0
- package/src/lib/components/calendar/components/calendar-grid-row.svelte +29 -0
- package/src/lib/components/calendar/components/calendar-grid.svelte +29 -0
- package/src/lib/components/calendar/components/calendar-head-cell.svelte +29 -0
- package/src/lib/components/calendar/components/calendar-header.svelte +29 -0
- package/src/lib/components/calendar/components/calendar-heading.svelte +33 -0
- package/src/lib/components/calendar/components/calendar-month-select.svelte +50 -0
- package/src/lib/components/calendar/components/calendar-next-button.svelte +37 -0
- package/src/lib/components/calendar/components/calendar-prev-button.svelte +37 -0
- package/src/lib/components/calendar/components/calendar-year-select.svelte +50 -0
- package/src/lib/components/calendar/components/calendar.svelte +123 -0
- package/src/lib/components/calendar/exports.ts +31 -0
- package/src/lib/components/calendar/index.ts +2 -0
- package/src/lib/components/calendar/types.ts +417 -0
- package/src/lib/components/card/card-action.svelte +15 -0
- package/src/lib/components/card/card-content.svelte +11 -0
- package/src/lib/components/card/card-description.svelte +11 -0
- package/src/lib/components/card/card-footer.svelte +11 -0
- package/src/lib/components/card/card-header.svelte +18 -0
- package/src/lib/components/card/card-title.svelte +11 -0
- package/src/lib/components/card/card.svelte +15 -0
- package/src/lib/components/card/index.ts +25 -0
- package/src/lib/components/carousel/carousel-arrow.svelte +42 -0
- package/src/lib/components/carousel/carousel-content.svelte +25 -0
- package/src/lib/components/carousel/carousel-dots.svelte +21 -0
- package/src/lib/components/carousel/carousel-item.svelte +21 -0
- package/src/lib/components/carousel/carousel-next.svelte +9 -0
- package/src/lib/components/carousel/carousel-previous.svelte +9 -0
- package/src/lib/components/carousel/carousel.svelte +245 -0
- package/src/lib/components/carousel/carouselState.svelte.ts +30 -0
- package/src/lib/components/carousel/index.ts +24 -0
- package/src/lib/components/chart/chart-container.svelte +52 -0
- package/src/lib/components/chart/chart-style.svelte +29 -0
- package/src/lib/components/chart/chart-tooltip.svelte +163 -0
- package/src/lib/components/chart/chart-utils.ts +50 -0
- package/src/lib/components/chart/index.ts +6 -0
- package/src/lib/components/checkbox/checkbox.svelte.ts +199 -0
- package/src/lib/components/checkbox/components/checkbox-group-label.svelte +29 -0
- package/src/lib/components/checkbox/components/checkbox-group.svelte +48 -0
- package/src/lib/components/checkbox/components/checkbox.svelte +85 -0
- package/src/lib/components/checkbox/index.ts +9 -0
- package/src/lib/components/checkbox/types.ts +131 -0
- package/src/lib/components/checkbox-native/checkbox.svelte +96 -0
- package/src/lib/components/checkbox-native/index.ts +8 -0
- package/src/lib/components/collapsible/components/collapsible-content.svelte +16 -0
- package/src/lib/components/collapsible/components/collapsible-trigger.svelte +14 -0
- package/src/lib/components/collapsible/components/collapsible.svelte +68 -0
- package/src/lib/components/collapsible/index.ts +9 -0
- package/src/lib/components/collapsible/types.ts +25 -0
- package/src/lib/components/combobox/components/combobox-arrow.svelte +8 -0
- package/src/lib/components/combobox/components/combobox-input.svelte +46 -0
- package/src/lib/components/combobox/components/combobox-trigger.svelte +44 -0
- package/src/lib/components/combobox/components/combobox.svelte +83 -0
- package/src/lib/components/combobox/index.ts +30 -0
- package/src/lib/components/combobox/select/components/select-content-static.svelte +56 -0
- package/src/lib/components/combobox/select/components/select-content.svelte +95 -0
- package/src/lib/components/combobox/select/components/select-group-heading.svelte +51 -0
- package/src/lib/components/combobox/select/components/select-group.svelte +51 -0
- package/src/lib/components/combobox/select/components/select-hidden-input.svelte +16 -0
- package/src/lib/components/combobox/select/components/select-item.svelte +86 -0
- package/src/lib/components/combobox/select/components/select-scroll-down-button.svelte +41 -0
- package/src/lib/components/combobox/select/components/select-scroll-up-button.svelte +34 -0
- package/src/lib/components/combobox/select/components/select-trigger.svelte +32 -0
- package/src/lib/components/combobox/select/components/select-value.svelte +40 -0
- package/src/lib/components/combobox/select/components/select-viewport.svelte +29 -0
- package/src/lib/components/combobox/select/components/select.svelte +92 -0
- package/src/lib/components/combobox/select/select.svelte.ts +1596 -0
- package/src/lib/components/combobox/select/types.ts +291 -0
- package/src/lib/components/combobox/types.ts +77 -0
- package/src/lib/components/command/command-dialog.svelte +42 -0
- package/src/lib/components/command/command.svelte.ts +1506 -0
- package/src/lib/components/command/components/_command-label.svelte +31 -0
- package/src/lib/components/command/components/command-empty.svelte +34 -0
- package/src/lib/components/command/components/command-group-heading.svelte +29 -0
- package/src/lib/components/command/components/command-group-items.svelte +31 -0
- package/src/lib/components/command/components/command-group.svelte +76 -0
- package/src/lib/components/command/components/command-input.svelte +55 -0
- package/src/lib/components/command/components/command-item.svelte +61 -0
- package/src/lib/components/command/components/command-link-item.svelte +61 -0
- package/src/lib/components/command/components/command-list.svelte +41 -0
- package/src/lib/components/command/components/command-loading.svelte +30 -0
- package/src/lib/components/command/components/command-separator.svelte +34 -0
- package/src/lib/components/command/components/command-viewport.svelte +29 -0
- package/src/lib/components/command/components/command.svelte +143 -0
- package/src/lib/components/command/compute-command-score.ts +207 -0
- package/src/lib/components/command/index.ts +29 -0
- package/src/lib/components/command/types.ts +222 -0
- package/src/lib/components/command/utils.ts +30 -0
- package/src/lib/components/context-menu/components/context-menu-content-static.svelte +22 -0
- package/src/lib/components/context-menu/components/context-menu-content.svelte +22 -0
- package/src/lib/components/context-menu/components/context-menu-trigger.svelte +46 -0
- package/src/lib/components/context-menu/components/context-menu.svelte +8 -0
- package/src/lib/components/context-menu/index.ts +39 -0
- package/src/lib/components/context-menu/types.ts +56 -0
- package/src/lib/components/data-table/column-helpers.ts +97 -0
- package/src/lib/components/data-table/data-table-checkbox.svelte +25 -0
- package/src/lib/components/data-table/data-table-sort-button.svelte +16 -0
- package/src/lib/components/data-table/flex-render.svelte +42 -0
- package/src/lib/components/data-table/index.ts +29 -0
- package/src/lib/components/data-table/render-helpers.ts +105 -0
- package/src/lib/components/data-table/table-cell.svelte +9 -0
- package/src/lib/components/data-table/table-column-header.svelte +51 -0
- package/src/lib/components/data-table/table-faceted-filter.svelte +109 -0
- package/src/lib/components/data-table/table-pagination.svelte +54 -0
- package/src/lib/components/data-table/table-priority-cell.svelte +22 -0
- package/src/lib/components/data-table/table-row-actions.svelte +29 -0
- package/src/lib/components/data-table/table-status-cell.svelte +34 -0
- package/src/lib/components/data-table/table-title-cell.svelte +24 -0
- package/src/lib/components/data-table/table-toolbar.svelte +55 -0
- package/src/lib/components/data-table/table-view-options.svelte +25 -0
- package/src/lib/components/date-field/components/date-field-hidden-input.svelte +9 -0
- package/src/lib/components/date-field/components/date-field-input.svelte +33 -0
- package/src/lib/components/date-field/components/date-field-label.svelte +29 -0
- package/src/lib/components/date-field/components/date-field-segment.svelte +29 -0
- package/src/lib/components/date-field/components/date-field.svelte +106 -0
- package/src/lib/components/date-field/date-field.svelte.ts +1474 -0
- package/src/lib/components/date-field/index.ts +11 -0
- package/src/lib/components/date-field/types.ts +165 -0
- package/src/lib/components/date-range-field/components/date-range-field-input.svelte +36 -0
- package/src/lib/components/date-range-field/components/date-range-field-label.svelte +29 -0
- package/src/lib/components/date-range-field/components/date-range-field.svelte +106 -0
- package/src/lib/components/date-range-field/date-range-field.svelte.ts +212 -0
- package/src/lib/components/date-range-field/index.ts +11 -0
- package/src/lib/components/date-range-field/types.ts +171 -0
- package/src/lib/components/dialog/components/dialog-close.svelte +31 -0
- package/src/lib/components/dialog/components/dialog-content-headless.svelte +104 -0
- package/src/lib/components/dialog/components/dialog-content.svelte +69 -0
- package/src/lib/components/dialog/components/dialog-description.svelte +29 -0
- package/src/lib/components/dialog/components/dialog-overlay.svelte +31 -0
- package/src/lib/components/dialog/components/dialog-title.svelte +30 -0
- package/src/lib/components/dialog/components/dialog-trigger.svelte +30 -0
- package/src/lib/components/dialog/components/dialog.svelte +21 -0
- package/src/lib/components/dialog/components/modal-surface.svelte +131 -0
- package/src/lib/components/dialog/dialog.svelte.ts +371 -0
- package/src/lib/components/dialog/index.ts +19 -0
- package/src/lib/components/dialog/types.ts +105 -0
- package/src/lib/components/drawer/drawer-close.svelte +7 -0
- package/src/lib/components/drawer/drawer-content.svelte +91 -0
- package/src/lib/components/drawer/drawer-description.svelte +8 -0
- package/src/lib/components/drawer/drawer-footer.svelte +11 -0
- package/src/lib/components/drawer/drawer-header.svelte +11 -0
- package/src/lib/components/drawer/drawer-nested.svelte +44 -0
- package/src/lib/components/drawer/drawer-overlay.svelte +60 -0
- package/src/lib/components/drawer/drawer-portal.svelte +10 -0
- package/src/lib/components/drawer/drawer-title.svelte +8 -0
- package/src/lib/components/drawer/drawer-trigger.svelte +7 -0
- package/src/lib/components/drawer/drawer.svelte +290 -0
- package/src/lib/components/drawer/index.ts +37 -0
- package/src/lib/components/dropdown-menu/components/dropdown-menu-content-static.svelte +22 -0
- package/src/lib/components/dropdown-menu/components/dropdown-menu-content.svelte +22 -0
- package/src/lib/components/dropdown-menu/index.ts +39 -0
- package/src/lib/components/dropdown-menu/types.ts +41 -0
- package/src/lib/components/empty/empty-content.svelte +15 -0
- package/src/lib/components/empty/empty-description.svelte +15 -0
- package/src/lib/components/empty/empty-header.svelte +15 -0
- package/src/lib/components/empty/empty-media.svelte +21 -0
- package/src/lib/components/empty/empty-title.svelte +11 -0
- package/src/lib/components/empty/empty.svelte +18 -0
- package/src/lib/components/empty/index.ts +22 -0
- package/src/lib/components/empty/variants.ts +16 -0
- package/src/lib/components/field/field-content.svelte +14 -0
- package/src/lib/components/field/field-description.svelte +19 -0
- package/src/lib/components/field/field-error.svelte +47 -0
- package/src/lib/components/field/field-group.svelte +17 -0
- package/src/lib/components/field/field-label.svelte +18 -0
- package/src/lib/components/field/field-legend.svelte +23 -0
- package/src/lib/components/field/field-separator.svelte +32 -0
- package/src/lib/components/field/field-set.svelte +14 -0
- package/src/lib/components/field/field-title.svelte +14 -0
- package/src/lib/components/field/field.svelte +36 -0
- package/src/lib/components/field/index.ts +32 -0
- package/src/lib/components/field/variants.ts +19 -0
- package/src/lib/components/input/file-input.svelte +26 -0
- package/src/lib/components/input/index.ts +12 -0
- package/src/lib/components/input/input.svelte +24 -0
- package/src/lib/components/input/variants.ts +28 -0
- package/src/lib/components/item/index.ts +34 -0
- package/src/lib/components/item/item-actions.svelte +11 -0
- package/src/lib/components/item/item-content.svelte +15 -0
- package/src/lib/components/item/item-description.svelte +18 -0
- package/src/lib/components/item/item-footer.svelte +11 -0
- package/src/lib/components/item/item-group.svelte +16 -0
- package/src/lib/components/item/item-header.svelte +11 -0
- package/src/lib/components/item/item-media.svelte +37 -0
- package/src/lib/components/item/item-separator.svelte +9 -0
- package/src/lib/components/item/item-title.svelte +15 -0
- package/src/lib/components/item/item.svelte +61 -0
- package/src/lib/components/kbd/index.ts +10 -0
- package/src/lib/components/kbd/kbd-group.svelte +11 -0
- package/src/lib/components/kbd/kbd.svelte +18 -0
- package/src/lib/components/label/exports.ts +2 -0
- package/src/lib/components/label/index.ts +2 -0
- package/src/lib/components/label/label.svelte +39 -0
- package/src/lib/components/label/label.svelte.ts +39 -0
- package/src/lib/components/label/types.ts +7 -0
- package/src/lib/components/link-preview/components/link-preview-content.svelte +60 -0
- package/src/lib/components/link-preview/components/link-preview-trigger.svelte +29 -0
- package/src/lib/components/link-preview/components/link-preview.svelte +34 -0
- package/src/lib/components/link-preview/exports.ts +11 -0
- package/src/lib/components/link-preview/index.ts +2 -0
- package/src/lib/components/link-preview/link-preview.svelte.ts +270 -0
- package/src/lib/components/link-preview/types.ts +102 -0
- package/src/lib/components/menu/components/menu-arrow.svelte +14 -0
- package/src/lib/components/menu/components/menu-checkbox-group.svelte +42 -0
- package/src/lib/components/menu/components/menu-checkbox-item.svelte +85 -0
- package/src/lib/components/menu/components/menu-content.svelte +98 -0
- package/src/lib/components/menu/components/menu-group-heading.svelte +47 -0
- package/src/lib/components/menu/components/menu-group.svelte +36 -0
- package/src/lib/components/menu/components/menu-item.svelte +58 -0
- package/src/lib/components/menu/components/menu-radio-group.svelte +44 -0
- package/src/lib/components/menu/components/menu-radio-item.svelte +65 -0
- package/src/lib/components/menu/components/menu-separator.svelte +38 -0
- package/src/lib/components/menu/components/menu-sub-content-static.svelte +8 -0
- package/src/lib/components/menu/components/menu-sub-content.svelte +133 -0
- package/src/lib/components/menu/components/menu-sub-trigger.svelte +60 -0
- package/src/lib/components/menu/components/menu-sub.svelte +23 -0
- package/src/lib/components/menu/components/menu-trigger.svelte +50 -0
- package/src/lib/components/menu/components/menu.svelte +58 -0
- package/src/lib/components/menu/exports.ts +38 -0
- package/src/lib/components/menu/menu.svelte.ts +1599 -0
- package/src/lib/components/menu/types.ts +285 -0
- package/src/lib/components/menu/utils.ts +68 -0
- package/src/lib/components/menubar/components/menubar-content-static.svelte +50 -0
- package/src/lib/components/menubar/components/menubar-content.svelte +54 -0
- package/src/lib/components/menubar/components/menubar-menu.svelte +34 -0
- package/src/lib/components/menubar/components/menubar-trigger.svelte +50 -0
- package/src/lib/components/menubar/components/menubar.svelte +57 -0
- package/src/lib/components/menubar/exports.ts +44 -0
- package/src/lib/components/menubar/index.ts +2 -0
- package/src/lib/components/menubar/menubar.svelte.ts +394 -0
- package/src/lib/components/menubar/types.ts +97 -0
- package/src/lib/components/meter/components/meter.svelte +41 -0
- package/src/lib/components/meter/exports.ts +2 -0
- package/src/lib/components/meter/index.ts +2 -0
- package/src/lib/components/meter/meter.svelte.ts +47 -0
- package/src/lib/components/meter/types.ts +28 -0
- package/src/lib/components/navigation-menu/components/navigation-menu-content-impl.svelte +85 -0
- package/src/lib/components/navigation-menu/components/navigation-menu-content.svelte +58 -0
- package/src/lib/components/navigation-menu/components/navigation-menu-indicator-impl.svelte +29 -0
- package/src/lib/components/navigation-menu/components/navigation-menu-indicator.svelte +56 -0
- package/src/lib/components/navigation-menu/components/navigation-menu-item.svelte +56 -0
- package/src/lib/components/navigation-menu/components/navigation-menu-link.svelte +64 -0
- package/src/lib/components/navigation-menu/components/navigation-menu-list.svelte +59 -0
- package/src/lib/components/navigation-menu/components/navigation-menu-sub.svelte +46 -0
- package/src/lib/components/navigation-menu/components/navigation-menu-trigger.svelte +80 -0
- package/src/lib/components/navigation-menu/components/navigation-menu-viewport.svelte +63 -0
- package/src/lib/components/navigation-menu/components/navigation-menu.svelte +80 -0
- package/src/lib/components/navigation-menu/index.ts +28 -0
- package/src/lib/components/navigation-menu/navigation-menu.svelte.ts +1092 -0
- package/src/lib/components/navigation-menu/types.ts +189 -0
- package/src/lib/components/pagination/components/pagination-next-button.svelte +60 -0
- package/src/lib/components/pagination/components/pagination-page.svelte +65 -0
- package/src/lib/components/pagination/components/pagination-prev-button.svelte +60 -0
- package/src/lib/components/pagination/components/pagination.svelte +65 -0
- package/src/lib/components/pagination/index.ts +11 -0
- package/src/lib/components/pagination/pagination.svelte.ts +275 -0
- package/src/lib/components/pagination/types.ts +100 -0
- package/src/lib/components/pin-input/components/pin-input-cell.svelte +49 -0
- package/src/lib/components/pin-input/components/pin-input.svelte +76 -0
- package/src/lib/components/pin-input/exports.ts +4 -0
- package/src/lib/components/pin-input/index.ts +2 -0
- package/src/lib/components/pin-input/pin-input.svelte.ts +541 -0
- package/src/lib/components/pin-input/types.ts +118 -0
- package/src/lib/components/pin-input/usePasswordManager.svelte.ts +122 -0
- package/src/lib/components/popover/components/popover-close.svelte +38 -0
- package/src/lib/components/popover/components/popover-content.svelte +70 -0
- package/src/lib/components/popover/components/popover-header.svelte +11 -0
- package/src/lib/components/popover/components/popover-title.svelte +11 -0
- package/src/lib/components/popover/components/popover-trigger.svelte +44 -0
- package/src/lib/components/popover/components/popover.svelte +26 -0
- package/src/lib/components/popover/exports.ts +13 -0
- package/src/lib/components/popover/index.ts +2 -0
- package/src/lib/components/popover/popover.svelte.ts +392 -0
- package/src/lib/components/popover/types.ts +92 -0
- package/src/lib/components/progress/components/progress.svelte +56 -0
- package/src/lib/components/progress/exports.ts +3 -0
- package/src/lib/components/progress/index.ts +2 -0
- package/src/lib/components/progress/progress.svelte.ts +58 -0
- package/src/lib/components/progress/types.ts +28 -0
- package/src/lib/components/radio-group/context.ts +13 -0
- package/src/lib/components/radio-group/index.ts +10 -0
- package/src/lib/components/radio-group/radio-group-item.svelte +67 -0
- package/src/lib/components/radio-group/radio-group.svelte +87 -0
- package/src/lib/components/range-calendar/components/range-calendar-cell.svelte +31 -0
- package/src/lib/components/range-calendar/components/range-calendar-day.svelte +33 -0
- package/src/lib/components/range-calendar/components/range-calendar.svelte +120 -0
- package/src/lib/components/range-calendar/exports.ts +31 -0
- package/src/lib/components/range-calendar/index.ts +2 -0
- package/src/lib/components/range-calendar/range-calendar.svelte.ts +739 -0
- package/src/lib/components/range-calendar/types.ts +258 -0
- package/src/lib/components/resizable/index.ts +15 -0
- package/src/lib/components/resizable/resizable-handle.svelte +30 -0
- package/src/lib/components/resizable/resizable-pane-group.svelte +19 -0
- package/src/lib/components/scroll-area/components/scroll-area-corner-impl.svelte +34 -0
- package/src/lib/components/scroll-area/components/scroll-area-corner.svelte +18 -0
- package/src/lib/components/scroll-area/components/scroll-area-scrollbar-auto.svelte +15 -0
- package/src/lib/components/scroll-area/components/scroll-area-scrollbar-hover.svelte +22 -0
- package/src/lib/components/scroll-area/components/scroll-area-scrollbar-scroll.svelte +16 -0
- package/src/lib/components/scroll-area/components/scroll-area-scrollbar-shared.svelte +19 -0
- package/src/lib/components/scroll-area/components/scroll-area-scrollbar-visible.svelte +16 -0
- package/src/lib/components/scroll-area/components/scroll-area-scrollbar-x.svelte +23 -0
- package/src/lib/components/scroll-area/components/scroll-area-scrollbar-y.svelte +24 -0
- package/src/lib/components/scroll-area/components/scroll-area-scrollbar.svelte +56 -0
- package/src/lib/components/scroll-area/components/scroll-area-thumb-impl.svelte +49 -0
- package/src/lib/components/scroll-area/components/scroll-area-thumb.svelte +21 -0
- package/src/lib/components/scroll-area/components/scroll-area-viewport.svelte +39 -0
- package/src/lib/components/scroll-area/components/scroll-area.svelte +82 -0
- package/src/lib/components/scroll-area/exports.ts +13 -0
- package/src/lib/components/scroll-area/index.ts +2 -0
- package/src/lib/components/scroll-area/scroll-area.svelte.ts +946 -0
- package/src/lib/components/scroll-area/types.ts +67 -0
- package/src/lib/components/select/index.ts +5 -0
- package/src/lib/components/select/select-opt-group.svelte +10 -0
- package/src/lib/components/select/select-option.svelte +15 -0
- package/src/lib/components/select/select.svelte +281 -0
- package/src/lib/components/separator/components/separator.svelte +49 -0
- package/src/lib/components/separator/index.ts +3 -0
- package/src/lib/components/separator/separator.svelte.ts +43 -0
- package/src/lib/components/separator/types.ts +22 -0
- package/src/lib/components/sheet/components/sheet-close.svelte +8 -0
- package/src/lib/components/sheet/components/sheet-content.svelte +108 -0
- package/src/lib/components/sheet/components/sheet-description.svelte +9 -0
- package/src/lib/components/sheet/components/sheet-footer.svelte +11 -0
- package/src/lib/components/sheet/components/sheet-header.svelte +11 -0
- package/src/lib/components/sheet/components/sheet-overlay.svelte +13 -0
- package/src/lib/components/sheet/components/sheet-title.svelte +9 -0
- package/src/lib/components/sheet/components/sheet-trigger.svelte +8 -0
- package/src/lib/components/sheet/index.ts +47 -0
- package/src/lib/components/sheet/variants.ts +20 -0
- package/src/lib/components/sidebar/constants.ts +6 -0
- package/src/lib/components/sidebar/context.svelte.ts +54 -0
- package/src/lib/components/sidebar/index.ts +77 -0
- package/src/lib/components/sidebar/sidebar-content.svelte +16 -0
- package/src/lib/components/sidebar/sidebar-desktop-surface.svelte +60 -0
- package/src/lib/components/sidebar/sidebar-footer.svelte +11 -0
- package/src/lib/components/sidebar/sidebar-group-action.svelte +34 -0
- package/src/lib/components/sidebar/sidebar-group-content.svelte +16 -0
- package/src/lib/components/sidebar/sidebar-group-label.svelte +34 -0
- package/src/lib/components/sidebar/sidebar-group.svelte +16 -0
- package/src/lib/components/sidebar/sidebar-header.svelte +11 -0
- package/src/lib/components/sidebar/sidebar-input.svelte +14 -0
- package/src/lib/components/sidebar/sidebar-inset.svelte +18 -0
- package/src/lib/components/sidebar/sidebar-menu-action.svelte +38 -0
- package/src/lib/components/sidebar/sidebar-menu-badge.svelte +19 -0
- package/src/lib/components/sidebar/sidebar-menu-button.svelte +99 -0
- package/src/lib/components/sidebar/sidebar-menu-item.svelte +21 -0
- package/src/lib/components/sidebar/sidebar-menu-skeleton.svelte +34 -0
- package/src/lib/components/sidebar/sidebar-menu-sub-button.svelte +40 -0
- package/src/lib/components/sidebar/sidebar-menu-sub-item.svelte +16 -0
- package/src/lib/components/sidebar/sidebar-menu-sub.svelte +19 -0
- package/src/lib/components/sidebar/sidebar-menu.svelte +21 -0
- package/src/lib/components/sidebar/sidebar-mobile-surface.svelte +48 -0
- package/src/lib/components/sidebar/sidebar-provider.svelte +60 -0
- package/src/lib/components/sidebar/sidebar-rail.svelte +36 -0
- package/src/lib/components/sidebar/sidebar-separator.svelte +9 -0
- package/src/lib/components/sidebar/sidebar-trigger.svelte +35 -0
- package/src/lib/components/sidebar/sidebar.svelte +30 -0
- package/src/lib/components/sidebar/types.ts +14 -0
- package/src/lib/components/skeleton/index.ts +7 -0
- package/src/lib/components/skeleton/skeleton.svelte +9 -0
- package/src/lib/components/slider/components/slider-range.svelte +37 -0
- package/src/lib/components/slider/components/slider-thumb-label.svelte +42 -0
- package/src/lib/components/slider/components/slider-thumb.svelte +46 -0
- package/src/lib/components/slider/components/slider-tick-label.svelte +42 -0
- package/src/lib/components/slider/components/slider-tick.svelte +28 -0
- package/src/lib/components/slider/components/slider.svelte +136 -0
- package/src/lib/components/slider/helpers.ts +249 -0
- package/src/lib/components/slider/index.ts +15 -0
- package/src/lib/components/slider/slider.svelte.ts +979 -0
- package/src/lib/components/slider/types.ts +294 -0
- package/src/lib/components/sonner/Toast.svelte +558 -0
- package/src/lib/components/sonner/Toaster.svelte +603 -0
- package/src/lib/components/sonner/index.ts +15 -0
- package/src/lib/components/sonner/toast-state.svelte.ts +217 -0
- package/src/lib/components/sonner/types.ts +384 -0
- package/src/lib/components/switch/index.ts +8 -0
- package/src/lib/components/switch/switch.svelte +78 -0
- package/src/lib/components/table/index.ts +28 -0
- package/src/lib/components/table/table-body.svelte +15 -0
- package/src/lib/components/table/table-caption.svelte +10 -0
- package/src/lib/components/table/table-cell.svelte +14 -0
- package/src/lib/components/table/table-footer.svelte +19 -0
- package/src/lib/components/table/table-head.svelte +17 -0
- package/src/lib/components/table/table-header.svelte +15 -0
- package/src/lib/components/table/table-row.svelte +14 -0
- package/src/lib/components/table/table.svelte +12 -0
- package/src/lib/components/tabs/components/tabs-content.svelte +30 -0
- package/src/lib/components/tabs/components/tabs-list.svelte +38 -0
- package/src/lib/components/tabs/components/tabs-trigger.svelte +51 -0
- package/src/lib/components/tabs/components/tabs.svelte +52 -0
- package/src/lib/components/tabs/index.ts +11 -0
- package/src/lib/components/tabs/tabs.svelte.ts +253 -0
- package/src/lib/components/tabs/types.ts +86 -0
- package/src/lib/components/textarea/index.ts +7 -0
- package/src/lib/components/textarea/textarea.svelte +23 -0
- package/src/lib/components/theme-toggle/index.ts +5 -0
- package/src/lib/components/theme-toggle/theme-toggle.svelte +49 -0
- package/src/lib/components/theme-toggle/theme.svelte.ts +81 -0
- package/src/lib/components/time-field/components/time-field-hidden-input.svelte +9 -0
- package/src/lib/components/time-field/components/time-field-input.svelte +33 -0
- package/src/lib/components/time-field/components/time-field-label.svelte +29 -0
- package/src/lib/components/time-field/components/time-field-segment.svelte +29 -0
- package/src/lib/components/time-field/components/time-field.svelte +99 -0
- package/src/lib/components/time-field/index.ts +11 -0
- package/src/lib/components/time-field/time-field.svelte.ts +1198 -0
- package/src/lib/components/time-field/types.ts +174 -0
- package/src/lib/components/time-range-field/components/time-range-field-input.svelte +36 -0
- package/src/lib/components/time-range-field/components/time-range-field-label.svelte +29 -0
- package/src/lib/components/time-range-field/components/time-range-field.svelte +104 -0
- package/src/lib/components/time-range-field/index.ts +11 -0
- package/src/lib/components/time-range-field/time-range-field.svelte.ts +235 -0
- package/src/lib/components/time-range-field/types.ts +181 -0
- package/src/lib/components/toggle/components/toggle.svelte +55 -0
- package/src/lib/components/toggle/index.ts +3 -0
- package/src/lib/components/toggle/toggle.svelte.ts +57 -0
- package/src/lib/components/toggle/types.ts +33 -0
- package/src/lib/components/toggle/variants.ts +25 -0
- package/src/lib/components/toggle-group/components/toggle-group-item.svelte +67 -0
- package/src/lib/components/toggle-group/components/toggle-group.svelte +109 -0
- package/src/lib/components/toggle-group/index.ts +7 -0
- package/src/lib/components/toggle-group/toggle-group.svelte.ts +235 -0
- package/src/lib/components/toggle-group/types.ts +89 -0
- package/src/lib/components/toolbar/components/toolbar-button.svelte +46 -0
- package/src/lib/components/toolbar/components/toolbar-group-item.svelte +56 -0
- package/src/lib/components/toolbar/components/toolbar-group.svelte +69 -0
- package/src/lib/components/toolbar/components/toolbar-link.svelte +39 -0
- package/src/lib/components/toolbar/components/toolbar.svelte +39 -0
- package/src/lib/components/toolbar/index.ts +13 -0
- package/src/lib/components/toolbar/toolbar.svelte.ts +373 -0
- package/src/lib/components/toolbar/types.ts +60 -0
- package/src/lib/components/tooltip/components/tooltip-content.svelte +81 -0
- package/src/lib/components/tooltip/components/tooltip-provider.svelte +26 -0
- package/src/lib/components/tooltip/components/tooltip-trigger.svelte +48 -0
- package/src/lib/components/tooltip/components/tooltip.svelte +55 -0
- package/src/lib/components/tooltip/index.ts +17 -0
- package/src/lib/components/tooltip/tooltip.svelte.ts +796 -0
- package/src/lib/components/tooltip/types.ts +175 -0
- package/src/lib/components/tooltip/utils.ts +1 -0
- package/src/lib/icons/google-icon.svelte +10 -0
- package/src/lib/icons/google-workspace.svelte +18 -0
- package/src/lib/icons/icon.d.ts +19 -0
- package/src/lib/icons/instagram.svelte +9 -0
- package/src/lib/icons/instantly.svelte +10 -0
- package/src/lib/icons/linkedin.svelte +9 -0
- package/src/lib/icons/mailshake.svelte +10 -0
- package/src/lib/icons/microsoft-365.svelte +7 -0
- package/src/lib/icons/passcode.svelte +12 -0
- package/src/lib/icons/replyio.svelte +10 -0
- package/src/lib/icons/smartlead.svelte +19 -0
- package/src/lib/icons/smtp.svelte +10 -0
- package/src/lib/icons/x-logo.svelte +9 -0
- package/src/lib/internal/animations-settled.svelte.ts +119 -0
- package/src/lib/internal/arrays.ts +253 -0
- package/src/lib/internal/attribute-types.ts +53 -0
- package/src/lib/internal/attrs.ts +64 -0
- package/src/lib/internal/body-scroll-lock.svelte.ts +330 -0
- package/src/lib/internal/create-id.ts +12 -0
- package/src/lib/internal/date-time/announcer.ts +74 -0
- package/src/lib/internal/date-time/calendar-helpers.svelte.ts +399 -0
- package/src/lib/internal/date-time/field/helpers.ts +431 -0
- package/src/lib/internal/date-time/field/parts.ts +15 -0
- package/src/lib/internal/date-time/field/range-field.svelte.ts +45 -0
- package/src/lib/internal/date-time/field/segments.ts +89 -0
- package/src/lib/internal/date-time/field/time-helpers.ts +311 -0
- package/src/lib/internal/date-time/formatter.ts +86 -0
- package/src/lib/internal/date-time/placeholders.ts +131 -0
- package/src/lib/internal/date-time/types.ts +121 -0
- package/src/lib/internal/date-time/utils.ts +243 -0
- package/src/lib/internal/dismissible-layer/index.ts +3 -0
- package/src/lib/internal/dismissible-layer/scheduler.ts +48 -0
- package/src/lib/internal/dismissible-layer/types.ts +57 -0
- package/src/lib/internal/dismissible-layer/use-dismissable-layer.svelte.ts +291 -0
- package/src/lib/internal/escape-layer/index.ts +3 -0
- package/src/lib/internal/escape-layer/types.ts +34 -0
- package/src/lib/internal/escape-layer/use-escape-layer.svelte.ts +91 -0
- package/src/lib/internal/floating-layer/components/floating-layer-arrow.svelte +35 -0
- package/src/lib/internal/floating-layer/components/floating-layer-content-static.svelte +19 -0
- package/src/lib/internal/floating-layer/components/floating-layer-content.svelte +52 -0
- package/src/lib/internal/floating-layer/components/floating-layer.svelte +12 -0
- package/src/lib/internal/floating-layer/components/index.ts +6 -0
- package/src/lib/internal/floating-layer/index.ts +2 -0
- package/src/lib/internal/floating-layer/types.ts +126 -0
- package/src/lib/internal/floating-layer/use-floating-layer.svelte.ts +471 -0
- package/src/lib/internal/focus-scope/focus-scope.svelte.ts +310 -0
- package/src/lib/internal/focus-scope/index.ts +4 -0
- package/src/lib/internal/focus-scope/types.ts +45 -0
- package/src/lib/internal/focus.ts +14 -0
- package/src/lib/internal/global-singleton.ts +10 -0
- package/src/lib/internal/group-value.svelte.ts +36 -0
- package/src/lib/internal/hover-intent-geometry.ts +96 -0
- package/src/lib/internal/index.ts +44 -0
- package/src/lib/internal/kbd.ts +60 -0
- package/src/lib/internal/layer-stack.ts +37 -0
- package/src/lib/internal/math.ts +11 -0
- package/src/lib/internal/merge-props.ts +7 -0
- package/src/lib/internal/native-dialog-controller.svelte.ts +102 -0
- package/src/lib/internal/native-popover.svelte.ts +173 -0
- package/src/lib/internal/open-cell.svelte.ts +41 -0
- package/src/lib/internal/paneforge/index.ts +5 -0
- package/src/lib/internal/paneforge/internal/constants.ts +2 -0
- package/src/lib/internal/paneforge/internal/helpers.ts +354 -0
- package/src/lib/internal/paneforge/internal/types.ts +33 -0
- package/src/lib/internal/paneforge/internal/utils/adjust-layout.ts +122 -0
- package/src/lib/internal/paneforge/internal/utils/aria.ts +36 -0
- package/src/lib/internal/paneforge/internal/utils/compare.ts +15 -0
- package/src/lib/internal/paneforge/internal/utils/is.ts +13 -0
- package/src/lib/internal/paneforge/internal/utils/resize.ts +31 -0
- package/src/lib/internal/paneforge/internal/utils/storage.ts +116 -0
- package/src/lib/internal/paneforge/internal/utils/style.ts +104 -0
- package/src/lib/internal/paneforge/pane-group.svelte +48 -0
- package/src/lib/internal/paneforge/pane-resizer.svelte +40 -0
- package/src/lib/internal/paneforge/pane.svelte +60 -0
- package/src/lib/internal/paneforge/paneforge.svelte.ts +821 -0
- package/src/lib/internal/paneforge/types.ts +179 -0
- package/src/lib/internal/popper-layer/index.ts +2 -0
- package/src/lib/internal/popper-layer/popper-content.svelte +19 -0
- package/src/lib/internal/popper-layer/popper-layer-inner.svelte +122 -0
- package/src/lib/internal/popper-layer/popper-layer.svelte +71 -0
- package/src/lib/internal/popper-layer/types.ts +65 -0
- package/src/lib/internal/portal/index.ts +2 -0
- package/src/lib/internal/portal/portal.svelte +61 -0
- package/src/lib/internal/prop-resolvers.ts +14 -0
- package/src/lib/internal/roving-focus-group.ts +147 -0
- package/src/lib/internal/roving-focus-item.svelte.ts +51 -0
- package/src/lib/internal/safe-polygon.svelte.ts +239 -0
- package/src/lib/internal/shared-state.svelte.ts +39 -0
- package/src/lib/internal/state-machine.ts +32 -0
- package/src/lib/internal/svelte-resize-observer.svelte.ts +37 -0
- package/src/lib/internal/tabbable.ts +398 -0
- package/src/lib/internal/table/core.ts +53 -0
- package/src/lib/internal/table/filter-fns.ts +10 -0
- package/src/lib/internal/table/index.ts +2 -0
- package/src/lib/internal/table/sorting-fns.ts +84 -0
- package/src/lib/internal/table/table.svelte.ts +330 -0
- package/src/lib/internal/table/types.ts +33 -0
- package/src/lib/internal/timeout-fn.svelte.ts +36 -0
- package/src/lib/internal/tools/box.svelte.ts +153 -0
- package/src/lib/internal/tools/index.ts +22 -0
- package/src/lib/internal/tools/types.ts +44 -0
- package/src/lib/internal/tools/utils/attach-ref.ts +74 -0
- package/src/lib/internal/tools/utils/compose-handlers.ts +36 -0
- package/src/lib/internal/tools/utils/dom-context.svelte.ts +63 -0
- package/src/lib/internal/tools/utils/dom.ts +62 -0
- package/src/lib/internal/tools/utils/events.ts +1 -0
- package/src/lib/internal/tools/utils/index.ts +5 -0
- package/src/lib/internal/tools/utils/strings.ts +28 -0
- package/src/lib/internal/typeahead.svelte.ts +48 -0
- package/src/lib/internal/types.ts +119 -0
- package/src/lib/internal/utils.ts +10 -0
- package/src/lib/internal/vaul/browser.ts +8 -0
- package/src/lib/internal/vaul/constants.ts +19 -0
- package/src/lib/internal/vaul/helpers.ts +39 -0
- package/src/lib/internal/vaul/types.ts +142 -0
- package/src/lib/internal/vaul/use-drawer-content.svelte.ts +219 -0
- package/src/lib/internal/vaul/use-drawer-root.svelte.ts +682 -0
- package/src/lib/internal/vaul/use-position-fixed.svelte.ts +142 -0
- package/src/lib/internal/vaul/use-prevent-scroll.svelte.ts +267 -0
- package/src/lib/internal/vaul/use-snap-points.svelte.ts +246 -0
- package/src/lib/time.ts +73 -0
|
@@ -0,0 +1,175 @@
|
|
|
1
|
+
import type { OpenCell } from '../../internal/open-cell.svelte.js';
|
|
2
|
+
import type { FloatingLayerContentProps } from '../../internal/floating-layer/types.js';
|
|
3
|
+
import type { DismissibleLayerProps } from '../../internal/dismissible-layer/types.js';
|
|
4
|
+
import type { EscapeLayerProps } from '../../internal/escape-layer/types.js';
|
|
5
|
+
import type { Snippet } from 'svelte';
|
|
6
|
+
import type { OnChangeFn, WithChild, WithChildNoChildrenSnippetProps, WithChildren, Without } from '../../internal/types.js';
|
|
7
|
+
import type { BitsPrimitiveButtonAttributes, BitsPrimitiveDivAttributes } from '../../internal/attribute-types.js';
|
|
8
|
+
import type { PortalProps } from '../../internal/portal/index.js';
|
|
9
|
+
import type { FloatingContentSnippetProps } from '../../internal/types.js';
|
|
10
|
+
import type { TooltipTether as TooltipTetherImpl } from './tooltip.svelte.js';
|
|
11
|
+
|
|
12
|
+
export type TooltipTether<Payload = never> = TooltipTetherImpl<Payload>;
|
|
13
|
+
|
|
14
|
+
export type TooltipRootSnippetProps<Payload = never> = {
|
|
15
|
+
open: boolean;
|
|
16
|
+
triggerId: string | null;
|
|
17
|
+
payload: [Payload] extends [never] ? null : Payload | null;
|
|
18
|
+
};
|
|
19
|
+
|
|
20
|
+
export type TooltipProviderPropsWithoutHTML = WithChildren<{
|
|
21
|
+
/**
|
|
22
|
+
* The delay in milliseconds before the tooltip opens.
|
|
23
|
+
*
|
|
24
|
+
* @defaultValue 700
|
|
25
|
+
*/
|
|
26
|
+
delayDuration?: number;
|
|
27
|
+
|
|
28
|
+
/**
|
|
29
|
+
* How much time a user has to enter another trigger without
|
|
30
|
+
* incurring a delay again.
|
|
31
|
+
* @defaultValue 300
|
|
32
|
+
*/
|
|
33
|
+
skipDelayDuration?: number;
|
|
34
|
+
|
|
35
|
+
/**
|
|
36
|
+
* Prevents tooltip from remaining open when hovering over the content.
|
|
37
|
+
*
|
|
38
|
+
* @defaultValue false
|
|
39
|
+
*/
|
|
40
|
+
disableHoverableContent?: boolean;
|
|
41
|
+
|
|
42
|
+
/**
|
|
43
|
+
* When `true`, the tooltip will not close when you click on the trigger.
|
|
44
|
+
*
|
|
45
|
+
* @defaultValue false
|
|
46
|
+
*/
|
|
47
|
+
disableCloseOnTriggerClick?: boolean;
|
|
48
|
+
|
|
49
|
+
/**
|
|
50
|
+
* When `true`, the tooltip will be disabled and will not open.
|
|
51
|
+
*
|
|
52
|
+
* @defaultValue false
|
|
53
|
+
*/
|
|
54
|
+
disabled?: boolean;
|
|
55
|
+
|
|
56
|
+
/**
|
|
57
|
+
* Prevent the tooltip from opening if the focus did not come using
|
|
58
|
+
* the keyboard.
|
|
59
|
+
*
|
|
60
|
+
* @defaultValue false
|
|
61
|
+
*/
|
|
62
|
+
ignoreNonKeyboardFocus?: boolean;
|
|
63
|
+
}>;
|
|
64
|
+
|
|
65
|
+
export type TooltipProviderProps = TooltipProviderPropsWithoutHTML;
|
|
66
|
+
|
|
67
|
+
export type TooltipRootPropsWithoutHTML<Payload = never> = Omit<
|
|
68
|
+
WithChildren<{
|
|
69
|
+
/**
|
|
70
|
+
* The derivation source for the tooltip's open state: the internal cell
|
|
71
|
+
* re-derives whenever this prop changes, and interactions override it
|
|
72
|
+
* until the next change. Plain value — not bindable.
|
|
73
|
+
*/
|
|
74
|
+
open?: boolean;
|
|
75
|
+
|
|
76
|
+
/**
|
|
77
|
+
* A caller-constructed cell (own source and, optionally, a delegate writer)
|
|
78
|
+
* used instead of building one from `open`. When given, `open` is ignored.
|
|
79
|
+
*/
|
|
80
|
+
state?: OpenCell;
|
|
81
|
+
|
|
82
|
+
/**
|
|
83
|
+
* A callback that will be called when the tooltip finishes opening/closing animations.
|
|
84
|
+
*/
|
|
85
|
+
onOpenChangeComplete?: OnChangeFn<boolean>;
|
|
86
|
+
|
|
87
|
+
/**
|
|
88
|
+
* The delay in milliseconds before the tooltip opens.
|
|
89
|
+
*
|
|
90
|
+
* @defaultValue 700
|
|
91
|
+
*/
|
|
92
|
+
delayDuration?: number;
|
|
93
|
+
|
|
94
|
+
/**
|
|
95
|
+
* Prevents tooltip from remaining open when hovering over the content.
|
|
96
|
+
*
|
|
97
|
+
* @defaultValue false
|
|
98
|
+
*/
|
|
99
|
+
disableHoverableContent?: boolean;
|
|
100
|
+
|
|
101
|
+
/**
|
|
102
|
+
* When `true`, the tooltip will not close when you click on the trigger.
|
|
103
|
+
*
|
|
104
|
+
* @defaultValue false
|
|
105
|
+
*/
|
|
106
|
+
disableCloseOnTriggerClick?: boolean;
|
|
107
|
+
|
|
108
|
+
/**
|
|
109
|
+
* When `true`, the tooltip will be disabled and will not open.
|
|
110
|
+
*
|
|
111
|
+
* @defaultValue false
|
|
112
|
+
*/
|
|
113
|
+
disabled?: boolean;
|
|
114
|
+
|
|
115
|
+
/**
|
|
116
|
+
* Prevent the tooltip from opening if the focus did not come using
|
|
117
|
+
* the keyboard.
|
|
118
|
+
*
|
|
119
|
+
* @defaultValue false
|
|
120
|
+
*/
|
|
121
|
+
ignoreNonKeyboardFocus?: boolean;
|
|
122
|
+
/**
|
|
123
|
+
* The active trigger id for controlled single tooltip mode.
|
|
124
|
+
*/
|
|
125
|
+
triggerId?: string | null;
|
|
126
|
+
/**
|
|
127
|
+
* Shared tether used to connect detached triggers and infer payload types.
|
|
128
|
+
*/
|
|
129
|
+
tether?: TooltipTether<Payload> | undefined;
|
|
130
|
+
}>,
|
|
131
|
+
'children'
|
|
132
|
+
> & {
|
|
133
|
+
children?: Snippet | Snippet<[TooltipRootSnippetProps<Payload>]>;
|
|
134
|
+
};
|
|
135
|
+
|
|
136
|
+
export type TooltipRootProps<Payload = never> = TooltipRootPropsWithoutHTML<Payload>;
|
|
137
|
+
|
|
138
|
+
export type TooltipContentPropsWithoutHTML = WithChildNoChildrenSnippetProps<
|
|
139
|
+
Omit<FloatingLayerContentProps, 'content' | 'preventScroll'> &
|
|
140
|
+
Omit<DismissibleLayerProps, 'onInteractOutsideStart'> &
|
|
141
|
+
EscapeLayerProps & {
|
|
142
|
+
/**
|
|
143
|
+
* When `true`, the tooltip will be forced to mount in the DOM.
|
|
144
|
+
*
|
|
145
|
+
* Useful for more control over the transition behavior.
|
|
146
|
+
*/
|
|
147
|
+
forceMount?: boolean;
|
|
148
|
+
},
|
|
149
|
+
FloatingContentSnippetProps
|
|
150
|
+
>;
|
|
151
|
+
|
|
152
|
+
export type TooltipContentProps = TooltipContentPropsWithoutHTML & Without<BitsPrimitiveDivAttributes, TooltipContentPropsWithoutHTML>;
|
|
153
|
+
|
|
154
|
+
export type TooltipPortalPropsWithoutHTML = PortalProps;
|
|
155
|
+
export type TooltipPortalProps = PortalProps;
|
|
156
|
+
|
|
157
|
+
export type TooltipTriggerPropsWithoutHTML<Payload = never> = WithChild<{
|
|
158
|
+
/**
|
|
159
|
+
* Whether the tooltip trigger is disabled or not.
|
|
160
|
+
*
|
|
161
|
+
* @defaultValue false
|
|
162
|
+
*/
|
|
163
|
+
disabled?: boolean | null | undefined;
|
|
164
|
+
/**
|
|
165
|
+
* Payload for the trigger used by singleton tooltip root snippets.
|
|
166
|
+
*/
|
|
167
|
+
payload?: [Payload] extends [never] ? unknown : Payload;
|
|
168
|
+
/**
|
|
169
|
+
* Shared tether used to connect detached triggers and infer payload types.
|
|
170
|
+
*/
|
|
171
|
+
tether?: TooltipTether<Payload> | undefined;
|
|
172
|
+
}>;
|
|
173
|
+
|
|
174
|
+
export type TooltipTriggerProps<Payload = never> = TooltipTriggerPropsWithoutHTML<Payload> &
|
|
175
|
+
Without<BitsPrimitiveButtonAttributes, TooltipTriggerPropsWithoutHTML<Payload>>;
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export const TOOLTIP_OPEN_EVENT = "tooltip.open";
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
<script lang="ts">
|
|
2
|
+
let { class: className, ...rest }: import('svelte/elements').SVGAttributes<SVGSVGElement> = $props();
|
|
3
|
+
</script>
|
|
4
|
+
|
|
5
|
+
<svg class={className ?? 'size-4'} viewBox="0 0 24 24" {...rest}>
|
|
6
|
+
<path fill="#4285F4" d="M22.56 12.25c0-.78-.07-1.53-.2-2.25H12v4.26h5.92a5.06 5.06 0 0 1-2.2 3.32v2.77h3.57c2.08-1.92 3.27-4.74 3.27-8.1z" />
|
|
7
|
+
<path fill="#34A853" d="M12 23c2.97 0 5.46-.98 7.28-2.66l-3.57-2.77c-.98.66-2.23 1.06-3.71 1.06-2.86 0-5.29-1.93-6.16-4.53H2.18v2.84C3.99 20.53 7.7 23 12 23z" />
|
|
8
|
+
<path fill="#FBBC05" d="M5.84 14.09c-.22-.66-.35-1.36-.35-2.09s.13-1.43.35-2.09V7.07H2.18C1.43 8.55 1 10.22 1 12s.43 3.45 1.18 4.93l2.85-2.22.81-.62z" />
|
|
9
|
+
<path fill="#EA4335" d="M12 5.38c1.62 0 3.06.56 4.21 1.64l3.15-3.15C17.45 2.09 14.97 1 12 1 7.7 1 3.99 3.47 2.18 7.07l3.66 2.84c.87-2.6 3.3-4.53 6.16-4.53z" />
|
|
10
|
+
</svg>
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
<script lang="ts">
|
|
2
|
+
let { class: className, ...rest }: import('svelte/elements').SVGAttributes<SVGSVGElement> = $props();
|
|
3
|
+
</script>
|
|
4
|
+
|
|
5
|
+
<svg viewBox="0 0 48 48" class="g-logo {className}" {...rest}>
|
|
6
|
+
<path
|
|
7
|
+
fill="#FFC107"
|
|
8
|
+
d="M43.611,20.083H42V20H24v8h11.303c-1.649,4.657-6.08,8-11.303,8c-6.627,0-12-5.373-12-12c0-6.627,5.373-12,12-12c3.059,0,5.842,1.154,7.961,3.039l5.657-5.657C34.046,6.053,29.268,4,24,4C12.955,4,4,12.955,4,24c0,11.045,8.955,20,20,20c11.045,0,20-8.955,20-20C44,22.659,43.862,21.35,43.611,20.083z" />
|
|
9
|
+
<path
|
|
10
|
+
fill="#FF3D00"
|
|
11
|
+
d="M6.306,14.691l6.571,4.819C14.655,15.108,18.961,12,24,12c3.059,0,5.842,1.154,7.961,3.039l5.657-5.657C34.046,6.053,29.268,4,24,4C16.318,4,9.656,8.337,6.306,14.691z" />
|
|
12
|
+
<path
|
|
13
|
+
fill="#4CAF50"
|
|
14
|
+
d="M24,44c5.166,0,9.86-1.977,13.409-5.192l-6.19-5.238C29.211,35.091,26.715,36,24,36c-5.202,0-9.619-3.317-11.283-7.946l-6.522,5.025C9.505,39.556,16.227,44,24,44z" />
|
|
15
|
+
<path
|
|
16
|
+
fill="#1976D2"
|
|
17
|
+
d="M43.611,20.083H42V20H24v8h11.303c-0.792,2.237-2.231,4.166-4.087,5.571c0.001-0.001,0.002-0.001,0.003-0.002l6.19,5.238C36.971,39.205,44,34,44,24C44,22.659,43.862,21.35,43.611,20.083z" />
|
|
18
|
+
</svg>
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Type declaration for every `*.svelte` file in this folder, wired up by the `./icons/*` export's
|
|
3
|
+
* `types` condition.
|
|
4
|
+
*
|
|
5
|
+
* Without it, TypeScript resolves an icon import straight to the `.svelte` file and gives up:
|
|
6
|
+
* `svelte-check` copes (it runs the source through svelte2tsx), but a bare tsserver — which is what
|
|
7
|
+
* an editor uses for the `.ts` and `.svelte` files that *import* an icon — does not process `.svelte`
|
|
8
|
+
* modules reached through `node_modules`, and reports "has no default export" (ts1192). Every consumer
|
|
9
|
+
* reaches this package through a workspace symlink, so every icon import hit that.
|
|
10
|
+
*
|
|
11
|
+
* One declaration serves all of them because every icon takes exactly the same props.
|
|
12
|
+
*/
|
|
13
|
+
|
|
14
|
+
import type { Component } from 'svelte';
|
|
15
|
+
import type { SVGAttributes } from 'svelte/elements';
|
|
16
|
+
|
|
17
|
+
declare const Icon: Component<SVGAttributes<SVGSVGElement>>;
|
|
18
|
+
|
|
19
|
+
export default Icon;
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
<script lang="ts">
|
|
2
|
+
let { class: className, ...rest }: import('svelte/elements').SVGAttributes<SVGSVGElement> = $props();
|
|
3
|
+
</script>
|
|
4
|
+
|
|
5
|
+
<svg viewBox="0 0 24 24" fill="none" xmlns="http://www.w3.org/2000/svg" class={className} aria-hidden="true" {...rest}>
|
|
6
|
+
<path
|
|
7
|
+
d="M12 2.163c3.204 0 3.584.012 4.85.07 3.252.148 4.771 1.691 4.919 4.919.058 1.265.069 1.645.069 4.849 0 3.205-.012 3.584-.069 4.849-.149 3.225-1.664 4.771-4.919 4.919-1.266.058-1.644.07-4.85.07-3.204 0-3.584-.012-4.849-.07-3.26-.149-4.771-1.699-4.919-4.92-.058-1.265-.07-1.644-.07-4.849 0-3.204.013-3.583.07-4.849.149-3.227 1.664-4.771 4.919-4.919 1.266-.057 1.645-.069 4.849-.069zM12 0C8.741 0 8.333.014 7.053.072 2.695.272.273 2.69.073 7.052.014 8.333 0 8.741 0 12c0 3.259.014 3.668.072 4.948.2 4.358 2.618 6.78 6.98 6.98C8.333 23.986 8.741 24 12 24c3.259 0 3.668-.014 4.948-.072 4.354-.2 6.782-2.618 6.979-6.98.059-1.28.073-1.689.073-4.948 0-3.259-.014-3.667-.072-4.947-.196-4.354-2.617-6.78-6.979-6.98C15.668.014 15.259 0 12 0zm0 5.838a6.162 6.162 0 100 12.324 6.162 6.162 0 000-12.324zM12 16a4 4 0 110-8 4 4 0 010 8zm6.406-11.845a1.44 1.44 0 100 2.881 1.44 1.44 0 000-2.881z"
|
|
8
|
+
fill="currentColor" />
|
|
9
|
+
</svg>
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
<script lang="ts">
|
|
2
|
+
let { class: className, ...rest }: import('svelte/elements').SVGAttributes<SVGSVGElement> = $props();
|
|
3
|
+
</script>
|
|
4
|
+
|
|
5
|
+
<svg viewBox="0 0 32 32" class={className} {...rest}>
|
|
6
|
+
<path d="M16 32C24.8366 32 32 24.8366 32 16C32 7.16344 24.8366 0 16 0C7.16344 0 0 7.16344 0 16C0 24.8366 7.16344 32 16 32Z" fill="#0081FF" />
|
|
7
|
+
<path
|
|
8
|
+
d="M11.5214 18.3125H7.27312C7.12372 18.3125 7.02982 18.151 7.1041 18.0212L13.9093 6.12891H23.8678C24.0293 6.12891 24.1207 6.3142 24.0218 6.44231L19.1563 12.753C19.0578 12.8811 19.1488 13.0664 19.3103 13.0664H24.5063C24.6816 13.0664 24.7675 13.2797 24.6411 13.4011L9.83879 27.6479C9.69815 27.7832 9.46821 27.6505 9.51495 27.461L11.7105 18.5533C11.7405 18.431 11.6479 18.3125 11.5214 18.3125Z"
|
|
9
|
+
fill="white" />
|
|
10
|
+
</svg>
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
<script lang="ts">
|
|
2
|
+
let { class: className, ...rest }: import('svelte/elements').SVGAttributes<SVGSVGElement> = $props();
|
|
3
|
+
</script>
|
|
4
|
+
|
|
5
|
+
<svg viewBox="0 0 24 24" fill="none" xmlns="http://www.w3.org/2000/svg" class={className} aria-hidden="true" {...rest}>
|
|
6
|
+
<path
|
|
7
|
+
d="M20.447 20.452h-3.554v-5.569c0-1.328-.027-3.037-1.852-3.037-1.853 0-2.136 1.445-2.136 2.939v5.667H9.351V9h3.414v1.561h.046c.477-.9 1.637-1.85 3.37-1.85 3.601 0 4.267 2.37 4.267 5.455v6.286zM5.337 7.433a2.062 2.062 0 01-2.063-2.065 2.064 2.064 0 112.063 2.065zm1.782 13.019H3.555V9h3.564v11.452zM22.225 0H1.771C.792 0 0 .774 0 1.729v20.542C0 23.227.792 24 1.771 24h20.451C23.2 24 24 23.227 24 22.271V1.729C24 .774 23.2 0 22.222 0h.003z"
|
|
8
|
+
fill="currentColor" />
|
|
9
|
+
</svg>
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
<script lang="ts">
|
|
2
|
+
let { class: className, ...rest }: import('svelte/elements').SVGAttributes<SVGSVGElement> = $props();
|
|
3
|
+
</script>
|
|
4
|
+
|
|
5
|
+
<svg viewBox="0 0 32 32" class={className} {...rest}>
|
|
6
|
+
<path d="M16 0C7.163 0 0 7.163 0 16s7.163 16 16 16 16-7.163 16-16S24.837 0 16 0Z" fill="#3B82F6" />
|
|
7
|
+
<path
|
|
8
|
+
d="M24 11.5v9a1.5 1.5 0 0 1-1.5 1.5h-13A1.5 1.5 0 0 1 8 20.5v-9a1.5 1.5 0 0 1 1.5-1.5h13a1.5 1.5 0 0 1 1.5 1.5Zm-1.5.81-6.5 4.19-6.5-4.19v-.81h13v.81Zm0 8.19v-6.69l-6.5 4.19-6.5-4.19v6.69h13Z"
|
|
9
|
+
fill="white" />
|
|
10
|
+
</svg>
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
<script lang="ts">
|
|
2
|
+
let { class: className, ...rest }: import('svelte/elements').SVGAttributes<SVGSVGElement> = $props();
|
|
3
|
+
</script>
|
|
4
|
+
|
|
5
|
+
<svg viewBox="0 0 48 48" class="ms-logo {className}" {...rest}>
|
|
6
|
+
<path fill="#0078d4" d="M6 6h16v16H6zm20 0h16v16H26zM6 26h16v16H6zm20 0h16v16H26z" />
|
|
7
|
+
</svg>
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
<script lang="ts">
|
|
2
|
+
let { class: className, ...rest }: import('svelte/elements').SVGAttributes<SVGSVGElement> = $props();
|
|
3
|
+
</script>
|
|
4
|
+
|
|
5
|
+
<svg viewBox="0 0 48 48" class={className} {...rest}>
|
|
6
|
+
<title>Passcode</title>
|
|
7
|
+
<g fill="currentColor">
|
|
8
|
+
<circle cx="4.5" cy="4.5" r="1.5" /><circle cx="12" cy="4.5" r="1.5" /><circle cx="19.5" cy="4.5" r="1.5" />
|
|
9
|
+
<circle cx="4.5" cy="12" r="1.5" /><circle cx="12" cy="12" r="1.5" /><circle cx="19.5" cy="12" r="1.5" />
|
|
10
|
+
<circle cx="12" cy="19.5" r="1.5" />
|
|
11
|
+
</g>
|
|
12
|
+
</svg>
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
<script lang="ts">
|
|
2
|
+
let { class: className, ...rest }: import('svelte/elements').SVGAttributes<SVGSVGElement> = $props();
|
|
3
|
+
</script>
|
|
4
|
+
|
|
5
|
+
<svg viewBox="0 0 136 136" class={className} {...rest}>
|
|
6
|
+
<path
|
|
7
|
+
d="M127.4 72.2c0 10.6-1.2 20-3.6 30.6-3.6 15.3-14.2 25.9-29.7 29.4-20.2 4.7-41.6 4.7-61.7 0-14.2-3.5-26.1-15.3-28.5-29.4C1.5 92.2.3 81.6.3 72.2c0-10.6 1.2-20 3.6-30.6 3.6-15.3 14.2-25.9 29.7-29.4 9.5-2.4 20.2-3.5 30.9-3.5s20.2 1.2 30.9 3.5c15.4 3.5 26.1 14.1 29.7 29.4 1.1 9.4 2.3 20 2.3 30.6Z"
|
|
8
|
+
fill="#F6B802" />
|
|
9
|
+
<path d="M103.2 65.2c17.894 0 32.4-14.506 32.4-32.4S121.094.4 103.2.4 70.8 14.906 70.8 32.8s14.506 32.4 32.4 32.4Z" fill="#005AFF" />
|
|
10
|
+
</svg>
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
<script lang="ts">
|
|
2
|
+
let { class: className, ...rest }: import('svelte/elements').SVGAttributes<SVGSVGElement> = $props();
|
|
3
|
+
</script>
|
|
4
|
+
|
|
5
|
+
<svg viewBox="0 0 40 40" class={className} {...rest}>
|
|
6
|
+
<path d="M0 5.03C0 2.25 2.25 0 5.03 0H34.97C37.75 0 40 2.25 40 5.03V34.97C40 37.75 37.75 40 34.97 40H5.03C2.25 40 0 37.75 0 34.97V5.03Z" fill="#6E58F1" />
|
|
7
|
+
<path
|
|
8
|
+
d="M5.77 17.1C5.77 13.65 8.56 10.85 12 10.85H12.35C13.81 10.85 14.99 12.03 14.99 13.49V20.7C14.99 22.16 13.81 23.34 12.35 23.34H12C8.56 23.34 5.77 20.55 5.77 17.1Z"
|
|
9
|
+
fill="white" />
|
|
10
|
+
<path
|
|
11
|
+
d="M16.41 11.95C16.41 11.28 16.8 10.68 17.41 10.4L26.47 6.33C27.59 5.82 28.85 6.65 28.85 7.88V26.45C28.85 27.69 27.57 28.51 26.45 27.99L17.39 23.8C16.79 23.52 16.41 22.92 16.41 22.26V21.4C16.41 20.69 16.84 20.06 17.5 19.81L22.55 17.89C23.28 17.62 23.28 16.58 22.55 16.3L17.5 14.39C16.84 14.14 16.41 13.51 16.41 12.8V11.95Z"
|
|
12
|
+
fill="white" />
|
|
13
|
+
<path
|
|
14
|
+
d="M34.22 18.59V18.21C34.22 16.12 32.53 14.42 30.45 14.42C30.34 14.42 30.26 14.51 30.26 14.61V22.18C30.26 22.29 30.34 22.37 30.45 22.37C32.53 22.37 34.22 20.68 34.22 18.59Z"
|
|
15
|
+
fill="white" />
|
|
16
|
+
<path
|
|
17
|
+
d="M11.99 25.76C11.99 25.39 12.29 25.09 12.66 25.09H16.17C16.54 25.09 16.84 25.39 16.84 25.76V31.74C16.84 33.08 15.76 34.17 14.42 34.17C13.08 34.17 11.99 33.08 11.99 31.74V25.76Z"
|
|
18
|
+
fill="white" />
|
|
19
|
+
</svg>
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
<script lang="ts">
|
|
2
|
+
let { class: className, ...rest }: import('svelte/elements').SVGAttributes<SVGSVGElement> = $props();
|
|
3
|
+
</script>
|
|
4
|
+
|
|
5
|
+
<svg viewBox="0 0 24 24" class="smtp-logo overflow-visible {className}" {...rest}>
|
|
6
|
+
<defs><path id="tri" d="M2 5h20L12 11z" /></defs>
|
|
7
|
+
<path d="M2 7a2 2 0 0 1 2-2h16a2 2 0 0 1 2 2v10a2 2 0 0 1-2 2H4a2 2 0 0 1-2-2V7z" fill="currentColor" opacity="0.6" />
|
|
8
|
+
<use href="#tri" fill="currentColor" opacity="0.3" />
|
|
9
|
+
<use href="#tri" fill="currentColor" class="smtp-flap" />
|
|
10
|
+
</svg>
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
<script lang="ts">
|
|
2
|
+
let { class: className, ...rest }: import('svelte/elements').SVGAttributes<SVGSVGElement> = $props();
|
|
3
|
+
</script>
|
|
4
|
+
|
|
5
|
+
<svg viewBox="0 0 1200 1227" fill="none" xmlns="http://www.w3.org/2000/svg" class={className} aria-hidden="true" {...rest}>
|
|
6
|
+
<path
|
|
7
|
+
d="M714.163 519.284L1160.89 0H1055.03L667.137 450.887L357.328 0H0L468.492 681.821L0 1226.37H105.866L515.491 750.218L842.672 1226.37H1200L714.137 519.284H714.163ZM569.165 687.828L521.697 619.934L144.011 79.6944H306.615L611.412 515.685L658.88 583.579L1055.08 1150.3H892.476L569.165 687.854V687.828Z"
|
|
8
|
+
fill="currentColor" />
|
|
9
|
+
</svg>
|
|
@@ -0,0 +1,119 @@
|
|
|
1
|
+
import { untrack } from 'svelte';
|
|
2
|
+
import type { Getter } from './tools/index.js';
|
|
3
|
+
|
|
4
|
+
/**
|
|
5
|
+
* Resolves once the node's running animations/transitions finish (descendants included
|
|
6
|
+
* unless `subtree: false`) — `frames` frames first so a transition triggered by the current
|
|
7
|
+
* render has started. Environments without getAnimations (jsdom) resolve immediately
|
|
8
|
+
* after the frames.
|
|
9
|
+
* Infinite animations (Skeleton pulse, caret-blink, animate-spin) are excluded — their
|
|
10
|
+
* `finished` never resolves and would strand the caller.
|
|
11
|
+
*
|
|
12
|
+
* TODO(revisit ~mid-2027): ::details-content + `content-visibility allow-discrete` lets the
|
|
13
|
+
* browser hold content rendered through the close, deleting the disclosure use (83% 2026-07).
|
|
14
|
+
*/
|
|
15
|
+
export const animationsSettled = async (node: HTMLElement, { subtree = true, frames = 1 } = {}): Promise<void> => {
|
|
16
|
+
for (let i = 0; i < frames; i++) await new Promise(requestAnimationFrame);
|
|
17
|
+
if (typeof node.getAnimations !== 'function') return;
|
|
18
|
+
|
|
19
|
+
// A close during an enter retargets the transition: the browser cancels the enter (its
|
|
20
|
+
// `finished` rejects) and starts the exit, so re-query — one pass per frame. Bounded: a
|
|
21
|
+
// descendant whose transition is continuously retargeted (live progress bar, hover colour
|
|
22
|
+
// under a moving pointer) rejects every pass and must not hold the settle open forever.
|
|
23
|
+
for (let pass = 0; ; pass++) {
|
|
24
|
+
const running = node
|
|
25
|
+
.getAnimations({ subtree })
|
|
26
|
+
.filter((animation) => animation.effect?.getComputedTiming().iterations !== Infinity && isInFlight(animation));
|
|
27
|
+
if (running.length === 0) return;
|
|
28
|
+
|
|
29
|
+
const results = await Promise.allSettled(running.map((animation) => animation.finished));
|
|
30
|
+
if (pass === MAX_RETARGET_PASSES || !results.some((result) => result.status === 'rejected')) return;
|
|
31
|
+
await new Promise(requestAnimationFrame);
|
|
32
|
+
}
|
|
33
|
+
};
|
|
34
|
+
|
|
35
|
+
const MAX_RETARGET_PASSES = 3;
|
|
36
|
+
|
|
37
|
+
// `finished` only ever resolves for an animation that is running (or about to be, `pending`);
|
|
38
|
+
// paused/idle finite animations (animation-play-state: paused, a reduced-motion override) would
|
|
39
|
+
// strand the caller exactly like an infinite one.
|
|
40
|
+
const isInFlight = (animation: Animation) => animation.pending || animation.playState === 'running';
|
|
41
|
+
|
|
42
|
+
export interface SettleRunner {
|
|
43
|
+
/** Runs `fn` once `node` settles, superseding any pending run. A null node cancels and drops. */
|
|
44
|
+
run(node: HTMLElement | null, fn: () => void): void;
|
|
45
|
+
cancel(): void;
|
|
46
|
+
}
|
|
47
|
+
|
|
48
|
+
/**
|
|
49
|
+
* The one supersession idiom for settle-deferred work: a monotonic token, so the newest
|
|
50
|
+
* `run` wins and everything older is dropped. Cancels when the owning effect is destroyed,
|
|
51
|
+
* which works at component init and inside an attachment body alike.
|
|
52
|
+
*/
|
|
53
|
+
export function createSettleRunner(options?: { subtree?: boolean; frames?: number }): SettleRunner {
|
|
54
|
+
let token = 0;
|
|
55
|
+
|
|
56
|
+
const cancel = () => {
|
|
57
|
+
token++;
|
|
58
|
+
};
|
|
59
|
+
|
|
60
|
+
const run = (node: HTMLElement | null, fn: () => void) => {
|
|
61
|
+
const current = ++token;
|
|
62
|
+
if (!node) return;
|
|
63
|
+
void animationsSettled(node, options).then(() => {
|
|
64
|
+
if (current === token) fn();
|
|
65
|
+
});
|
|
66
|
+
};
|
|
67
|
+
|
|
68
|
+
$effect(() => cancel);
|
|
69
|
+
|
|
70
|
+
return { run, cancel };
|
|
71
|
+
}
|
|
72
|
+
|
|
73
|
+
/**
|
|
74
|
+
* Fires `onComplete` after an open/close flip once the surface's own animations settle.
|
|
75
|
+
* Settle-based rather than transitionend so completion still fires when no transition
|
|
76
|
+
* runs (duration-0 override, reduced motion, jsdom). A flip while a settle is pending
|
|
77
|
+
* supersedes it; a flip while the surface has no node cancels and is dropped.
|
|
78
|
+
* `skipSettle` answers per flip: true completes synchronously and drops any pending settle
|
|
79
|
+
* (a menubar swap, where the outgoing menu's exit is zeroed).
|
|
80
|
+
* `pending` is true from a flip until its completion fires — an always-mounted surface is still
|
|
81
|
+
* rendered while a close is pending, which is what its locks key on. It flips in a pre-effect so
|
|
82
|
+
* it is already set when the surface's own effects and attachments run in the same flush; set a
|
|
83
|
+
* pass later, `open || pending` would read false for that pass, and a scroll lock would tear
|
|
84
|
+
* down and re-create itself mid-exit (and capture the locked body as the style to restore).
|
|
85
|
+
*/
|
|
86
|
+
export function useOpenChangeComplete(
|
|
87
|
+
open: Getter<boolean>,
|
|
88
|
+
ref: Getter<HTMLElement | null>,
|
|
89
|
+
onComplete: (open: boolean) => void,
|
|
90
|
+
skipSettle: (open: boolean) => boolean = () => false,
|
|
91
|
+
): { readonly pending: boolean } {
|
|
92
|
+
let prevOpen = open();
|
|
93
|
+
let pending = $state(false);
|
|
94
|
+
const settle = createSettleRunner({ subtree: false });
|
|
95
|
+
$effect.pre(() => {
|
|
96
|
+
const el = ref();
|
|
97
|
+
const isOpen = open();
|
|
98
|
+
if (isOpen === prevOpen) return;
|
|
99
|
+
prevOpen = isOpen;
|
|
100
|
+
untrack(() => {
|
|
101
|
+
if (!el || skipSettle(isOpen)) {
|
|
102
|
+
settle.cancel();
|
|
103
|
+
pending = false;
|
|
104
|
+
if (el) onComplete(isOpen);
|
|
105
|
+
return;
|
|
106
|
+
}
|
|
107
|
+
pending = true;
|
|
108
|
+
settle.run(el, () => {
|
|
109
|
+
pending = false;
|
|
110
|
+
onComplete(isOpen);
|
|
111
|
+
});
|
|
112
|
+
});
|
|
113
|
+
});
|
|
114
|
+
return {
|
|
115
|
+
get pending() {
|
|
116
|
+
return pending;
|
|
117
|
+
},
|
|
118
|
+
};
|
|
119
|
+
}
|