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,207 @@
|
|
|
1
|
+
// oxlint-disable ban-ts-comment
|
|
2
|
+
// @ts-nocheck
|
|
3
|
+
// The scores are arranged so that a continuous match of characters will
|
|
4
|
+
// result in a total score of 1.
|
|
5
|
+
//
|
|
6
|
+
// The best case, this character is a match, and either this is the start
|
|
7
|
+
// of the string, or the previous character was also a match.
|
|
8
|
+
const SCORE_CONTINUE_MATCH = 1;
|
|
9
|
+
// A new match at the start of a word scores better than a new match
|
|
10
|
+
// elsewhere as it's more likely that the user will type the starts
|
|
11
|
+
// of fragments.
|
|
12
|
+
// NOTE: We score word jumps between spaces slightly higher than slashes, brackets
|
|
13
|
+
// hyphens, etc.
|
|
14
|
+
const SCORE_SPACE_WORD_JUMP = 0.9;
|
|
15
|
+
const SCORE_NON_SPACE_WORD_JUMP = 0.8;
|
|
16
|
+
// Any other match isn't ideal, but we include it for completeness.
|
|
17
|
+
const SCORE_CHARACTER_JUMP = 0.17;
|
|
18
|
+
// If the user transposed two letters, it should be significantly penalized.
|
|
19
|
+
//
|
|
20
|
+
// i.e. "ouch" is more likely than "curtain" when "uc" is typed.
|
|
21
|
+
const SCORE_TRANSPOSITION = 0.1;
|
|
22
|
+
// The goodness of a match should decay slightly with each missing
|
|
23
|
+
// character.
|
|
24
|
+
//
|
|
25
|
+
// i.e. "bad" is more likely than "bard" when "bd" is typed.
|
|
26
|
+
//
|
|
27
|
+
// This will not change the order of suggestions based on SCORE_* until
|
|
28
|
+
// 100 characters are inserted between matches.
|
|
29
|
+
const PENALTY_SKIPPED = 0.999;
|
|
30
|
+
// The goodness of an exact-case match should be higher than a
|
|
31
|
+
// case-insensitive match by a small amount.
|
|
32
|
+
//
|
|
33
|
+
// i.e. "HTML" is more likely than "haml" when "HM" is typed.
|
|
34
|
+
//
|
|
35
|
+
// This will not change the order of suggestions based on SCORE_* until
|
|
36
|
+
// 1000 characters are inserted between matches.
|
|
37
|
+
const PENALTY_CASE_MISMATCH = 0.9999;
|
|
38
|
+
// Match higher for letters closer to the beginning of the word
|
|
39
|
+
// If the word has more characters than the user typed, it should
|
|
40
|
+
// be penalized slightly.
|
|
41
|
+
//
|
|
42
|
+
// i.e. "html" is more likely than "html5" if I type "html".
|
|
43
|
+
//
|
|
44
|
+
// However, it may well be the case that there's a sensible secondary
|
|
45
|
+
// ordering (like alphabetical) that it makes sense to rely on when
|
|
46
|
+
// there are many prefix matches, so we don't make the penalty increase
|
|
47
|
+
// with the number of tokens.
|
|
48
|
+
const PENALTY_NOT_COMPLETE = 0.99;
|
|
49
|
+
|
|
50
|
+
const IS_GAP_REGEXP = /[\\/_+.#"@[({&]/;
|
|
51
|
+
const COUNT_GAPS_REGEXP = /[\\/_+.#"@[({&]/g;
|
|
52
|
+
const IS_SPACE_REGEXP = /[\s-]/;
|
|
53
|
+
const COUNT_SPACE_REGEXP = /[\s-]/g;
|
|
54
|
+
|
|
55
|
+
function computeCommandScoreInner(
|
|
56
|
+
string,
|
|
57
|
+
abbreviation,
|
|
58
|
+
lowerString,
|
|
59
|
+
lowerAbbreviation,
|
|
60
|
+
stringIndex,
|
|
61
|
+
abbreviationIndex,
|
|
62
|
+
memoizedResults
|
|
63
|
+
) {
|
|
64
|
+
if (abbreviationIndex === abbreviation.length) {
|
|
65
|
+
if (stringIndex === string.length) return SCORE_CONTINUE_MATCH;
|
|
66
|
+
return PENALTY_NOT_COMPLETE;
|
|
67
|
+
}
|
|
68
|
+
|
|
69
|
+
const memoizeKey = `${stringIndex},${abbreviationIndex}`;
|
|
70
|
+
if (memoizedResults[memoizeKey] !== undefined) return memoizedResults[memoizeKey];
|
|
71
|
+
|
|
72
|
+
const abbreviationChar = lowerAbbreviation.charAt(abbreviationIndex);
|
|
73
|
+
let index = lowerString.indexOf(abbreviationChar, stringIndex);
|
|
74
|
+
let highScore = 0;
|
|
75
|
+
|
|
76
|
+
let score, transposedScore, wordBreaks, spaceBreaks;
|
|
77
|
+
|
|
78
|
+
while (index >= 0) {
|
|
79
|
+
score = computeCommandScoreInner(
|
|
80
|
+
string,
|
|
81
|
+
abbreviation,
|
|
82
|
+
lowerString,
|
|
83
|
+
lowerAbbreviation,
|
|
84
|
+
index + 1,
|
|
85
|
+
abbreviationIndex + 1,
|
|
86
|
+
memoizedResults
|
|
87
|
+
);
|
|
88
|
+
if (score > highScore) {
|
|
89
|
+
if (index === stringIndex) {
|
|
90
|
+
score *= SCORE_CONTINUE_MATCH;
|
|
91
|
+
} else if (IS_GAP_REGEXP.test(string.charAt(index - 1))) {
|
|
92
|
+
score *= SCORE_NON_SPACE_WORD_JUMP;
|
|
93
|
+
wordBreaks = string.slice(stringIndex, index - 1).match(COUNT_GAPS_REGEXP);
|
|
94
|
+
if (wordBreaks && stringIndex > 0) {
|
|
95
|
+
score *= PENALTY_SKIPPED ** wordBreaks.length;
|
|
96
|
+
}
|
|
97
|
+
} else if (IS_SPACE_REGEXP.test(string.charAt(index - 1))) {
|
|
98
|
+
score *= SCORE_SPACE_WORD_JUMP;
|
|
99
|
+
spaceBreaks = string.slice(stringIndex, index - 1).match(COUNT_SPACE_REGEXP);
|
|
100
|
+
if (spaceBreaks && stringIndex > 0) {
|
|
101
|
+
score *= PENALTY_SKIPPED ** spaceBreaks.length;
|
|
102
|
+
}
|
|
103
|
+
} else {
|
|
104
|
+
score *= SCORE_CHARACTER_JUMP;
|
|
105
|
+
if (stringIndex > 0) {
|
|
106
|
+
score *= PENALTY_SKIPPED ** (index - stringIndex);
|
|
107
|
+
}
|
|
108
|
+
}
|
|
109
|
+
|
|
110
|
+
if (string.charAt(index) !== abbreviation.charAt(abbreviationIndex)) {
|
|
111
|
+
score *= PENALTY_CASE_MISMATCH;
|
|
112
|
+
}
|
|
113
|
+
}
|
|
114
|
+
|
|
115
|
+
if (
|
|
116
|
+
(score < SCORE_TRANSPOSITION &&
|
|
117
|
+
lowerString.charAt(index - 1) ===
|
|
118
|
+
lowerAbbreviation.charAt(abbreviationIndex + 1)) ||
|
|
119
|
+
(lowerAbbreviation.charAt(abbreviationIndex + 1) ===
|
|
120
|
+
lowerAbbreviation.charAt(abbreviationIndex) &&
|
|
121
|
+
lowerString.charAt(index - 1) !== lowerAbbreviation.charAt(abbreviationIndex))
|
|
122
|
+
) {
|
|
123
|
+
transposedScore = computeCommandScoreInner(
|
|
124
|
+
string,
|
|
125
|
+
abbreviation,
|
|
126
|
+
lowerString,
|
|
127
|
+
lowerAbbreviation,
|
|
128
|
+
index + 1,
|
|
129
|
+
abbreviationIndex + 2,
|
|
130
|
+
memoizedResults
|
|
131
|
+
);
|
|
132
|
+
|
|
133
|
+
if (transposedScore * SCORE_TRANSPOSITION > score) {
|
|
134
|
+
score = transposedScore * SCORE_TRANSPOSITION;
|
|
135
|
+
}
|
|
136
|
+
}
|
|
137
|
+
|
|
138
|
+
if (score > highScore) {
|
|
139
|
+
highScore = score;
|
|
140
|
+
}
|
|
141
|
+
|
|
142
|
+
index = lowerString.indexOf(abbreviationChar, index + 1);
|
|
143
|
+
}
|
|
144
|
+
|
|
145
|
+
memoizedResults[memoizeKey] = highScore;
|
|
146
|
+
return highScore;
|
|
147
|
+
}
|
|
148
|
+
|
|
149
|
+
/**
|
|
150
|
+
*
|
|
151
|
+
* @param string
|
|
152
|
+
* @returns
|
|
153
|
+
*/
|
|
154
|
+
function formatInput(string) {
|
|
155
|
+
// convert all valid space characters to space so they match each other
|
|
156
|
+
return string.toLowerCase().replace(COUNT_SPACE_REGEXP, " ");
|
|
157
|
+
}
|
|
158
|
+
|
|
159
|
+
/**
|
|
160
|
+
* Given a command, a search query, and (optionally) a list of keywords for the command,
|
|
161
|
+
* computes a score between 0 and 1 that represents how well the search query matches the
|
|
162
|
+
* abbreviation and keywords. 1 is a perfect match, 0 is no match.
|
|
163
|
+
*
|
|
164
|
+
* The score is calculated based on the following rules:
|
|
165
|
+
* - The scores are arranged so that a continuous match of characters will result in a total
|
|
166
|
+
* score of 1. The best case, this character is a match, and either this is the start of the string
|
|
167
|
+
* or the previous character was also a match.
|
|
168
|
+
* - A new match at the start of a word scores better than a new match elsewhere as it's more likely
|
|
169
|
+
* that the user will type the starts of fragments.
|
|
170
|
+
* - Word jumps between spaces are scored slightly higher than slashes, brackets, hyphens, etc.
|
|
171
|
+
* - A continuous match of characters will result in a total score of 1.
|
|
172
|
+
* - A new match at the start of a word scores better than a new match elsewhere as it's more likely that the user will type the starts of fragments.
|
|
173
|
+
* - Any other match isn't ideal, but we include it for completeness.
|
|
174
|
+
* - If the user transposed two letters, it should be significantly penalized.
|
|
175
|
+
* - The goodness of a match should decay slightly with each missing character.
|
|
176
|
+
* - Match higher for letters closer to the beginning of the word.
|
|
177
|
+
*
|
|
178
|
+
* @param command - The value to score against the search string (e.g. a command name like "Calculator")
|
|
179
|
+
* @param search - The search string to score against the value/aliases
|
|
180
|
+
* @param commandKeywords - An optional list of aliases/keywords to score against the search string - e.g. ["math", "add", "divide", "multiply", "subtract"]
|
|
181
|
+
* @returns A score between 0 and 1 that represents how well the search string matches the
|
|
182
|
+
* command (and keywords)
|
|
183
|
+
*/
|
|
184
|
+
export function computeCommandScore(
|
|
185
|
+
command: string,
|
|
186
|
+
search: string,
|
|
187
|
+
commandKeywords?: string[]
|
|
188
|
+
): number {
|
|
189
|
+
/**
|
|
190
|
+
* NOTE: We used to do lower-casing on each recursive call, but this meant that `toLowerCase()`
|
|
191
|
+
* was the dominating cost in the algorithm. Passing both is a little ugly, but considerably
|
|
192
|
+
* faster.
|
|
193
|
+
*/
|
|
194
|
+
command =
|
|
195
|
+
commandKeywords && commandKeywords.length > 0
|
|
196
|
+
? `${`${command} ${commandKeywords?.join(" ")}`}`
|
|
197
|
+
: command;
|
|
198
|
+
return computeCommandScoreInner(
|
|
199
|
+
command,
|
|
200
|
+
search,
|
|
201
|
+
formatInput(command),
|
|
202
|
+
formatInput(search),
|
|
203
|
+
0,
|
|
204
|
+
0,
|
|
205
|
+
{}
|
|
206
|
+
);
|
|
207
|
+
}
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
export { default as Root } from './components/command.svelte';
|
|
2
|
+
export { default as Empty } from './components/command-empty.svelte';
|
|
3
|
+
export { default as Group } from './components/command-group.svelte';
|
|
4
|
+
export { default as GroupHeading } from './components/command-group-heading.svelte';
|
|
5
|
+
export { default as GroupItems } from './components/command-group-items.svelte';
|
|
6
|
+
export { default as Input } from './components/command-input.svelte';
|
|
7
|
+
export { default as Item } from './components/command-item.svelte';
|
|
8
|
+
export { default as LinkItem } from './components/command-link-item.svelte';
|
|
9
|
+
export { default as List } from './components/command-list.svelte';
|
|
10
|
+
export { default as Viewport } from './components/command-viewport.svelte';
|
|
11
|
+
export { default as Loading } from './components/command-loading.svelte';
|
|
12
|
+
export { default as Separator } from './components/command-separator.svelte';
|
|
13
|
+
|
|
14
|
+
export type {
|
|
15
|
+
CommandRootProps as RootProps,
|
|
16
|
+
CommandEmptyProps as EmptyProps,
|
|
17
|
+
CommandGroupProps as GroupProps,
|
|
18
|
+
CommandGroupHeadingProps as GroupHeadingProps,
|
|
19
|
+
CommandGroupItemsProps as GroupItemsProps,
|
|
20
|
+
CommandItemProps as ItemProps,
|
|
21
|
+
CommandLinkItemProps as LinkItemProps,
|
|
22
|
+
CommandInputProps as InputProps,
|
|
23
|
+
CommandSeparatorProps as SeparatorProps,
|
|
24
|
+
CommandListProps as ListProps,
|
|
25
|
+
CommandLoadingProps as LoadingProps,
|
|
26
|
+
CommandViewportProps as ViewportProps,
|
|
27
|
+
} from './types.js';
|
|
28
|
+
|
|
29
|
+
export { computeCommandScore } from './compute-command-score.js';
|
|
@@ -0,0 +1,222 @@
|
|
|
1
|
+
import type {
|
|
2
|
+
BitsPrimitiveAnchorAttributes,
|
|
3
|
+
BitsPrimitiveDivAttributes,
|
|
4
|
+
BitsPrimitiveInputAttributes,
|
|
5
|
+
WithChild,
|
|
6
|
+
Without,
|
|
7
|
+
} from "../../internal/index.js";
|
|
8
|
+
|
|
9
|
+
export type CommandState = {
|
|
10
|
+
/** The value of the search query */
|
|
11
|
+
search: string;
|
|
12
|
+
/** The value of the selected command menu item */
|
|
13
|
+
value: string;
|
|
14
|
+
/** The filtered items */
|
|
15
|
+
filtered: {
|
|
16
|
+
/** The count of all visible items. */
|
|
17
|
+
count: number;
|
|
18
|
+
/** Map from visible item value to its search store. */
|
|
19
|
+
items: Map<string, number>;
|
|
20
|
+
/** Set of groups with at least one visible item. */
|
|
21
|
+
groups: Set<string>;
|
|
22
|
+
};
|
|
23
|
+
};
|
|
24
|
+
|
|
25
|
+
export type CommandRootPropsWithoutHTML = WithChild<{
|
|
26
|
+
/**
|
|
27
|
+
* An accessible label for the command menu.
|
|
28
|
+
* Not visible & only used for screen readers.
|
|
29
|
+
*/
|
|
30
|
+
label?: string;
|
|
31
|
+
|
|
32
|
+
/**
|
|
33
|
+
* Optionally set to `false` to turn off the automatic filtering
|
|
34
|
+
* and sorting. If `false`, you must conditionally render valid
|
|
35
|
+
* items yourself.
|
|
36
|
+
*/
|
|
37
|
+
shouldFilter?: boolean;
|
|
38
|
+
|
|
39
|
+
/**
|
|
40
|
+
* A custom filter function for whether each command item should
|
|
41
|
+
* match the query. It should return a number between `0` and `1`,
|
|
42
|
+
* with `1` being a perfect match, and `0` being no match, resulting
|
|
43
|
+
* in the item being hidden entirely.
|
|
44
|
+
*
|
|
45
|
+
* By default, it will use the `computeCommandScore` function exported
|
|
46
|
+
* by this package to compute the score.
|
|
47
|
+
*/
|
|
48
|
+
filter?: (value: string, search: string, keywords?: string[]) => number;
|
|
49
|
+
|
|
50
|
+
/**
|
|
51
|
+
* A function that is called when the command state changes.
|
|
52
|
+
*/
|
|
53
|
+
onStateChange?: (state: Readonly<CommandState>) => void;
|
|
54
|
+
|
|
55
|
+
/**
|
|
56
|
+
* Optionally provide or bind to the selected command menu item.
|
|
57
|
+
*/
|
|
58
|
+
value?: string;
|
|
59
|
+
|
|
60
|
+
/**
|
|
61
|
+
* A function that is called when the selected command menu item
|
|
62
|
+
* changes. It receives the new value as an argument.
|
|
63
|
+
*/
|
|
64
|
+
onValueChange?: (value: string) => void;
|
|
65
|
+
|
|
66
|
+
/**
|
|
67
|
+
* Optionally set to `true` to enable looping through the items
|
|
68
|
+
* when the user reaches the end of the list using the keyboard.
|
|
69
|
+
*/
|
|
70
|
+
loop?: boolean;
|
|
71
|
+
|
|
72
|
+
/**
|
|
73
|
+
* Optionally set to `true` to disable selection via pointer events.
|
|
74
|
+
*/
|
|
75
|
+
disablePointerSelection?: boolean;
|
|
76
|
+
|
|
77
|
+
/**
|
|
78
|
+
* Set this prop to `false` to disable the option to use ctrl+n/j/p/k (vim style) navigation.
|
|
79
|
+
*
|
|
80
|
+
* @default true
|
|
81
|
+
*/
|
|
82
|
+
vimBindings?: boolean;
|
|
83
|
+
|
|
84
|
+
/**
|
|
85
|
+
* The number of columns in a grid layout.
|
|
86
|
+
*
|
|
87
|
+
* @default null
|
|
88
|
+
*/
|
|
89
|
+
columns?: number | null;
|
|
90
|
+
|
|
91
|
+
/**
|
|
92
|
+
* Whether to disable scrolling the selected item into view on initial mount.
|
|
93
|
+
* When `true`, prevents automatic scrolling when the command menu first renders
|
|
94
|
+
* and selects its first item, but still allows scrolling on subsequent selections.
|
|
95
|
+
*
|
|
96
|
+
* @default false
|
|
97
|
+
*/
|
|
98
|
+
disableInitialScroll?: boolean;
|
|
99
|
+
}>;
|
|
100
|
+
|
|
101
|
+
export type CommandRootProps = CommandRootPropsWithoutHTML &
|
|
102
|
+
Without<BitsPrimitiveDivAttributes, CommandRootPropsWithoutHTML>;
|
|
103
|
+
|
|
104
|
+
export type CommandEmptyPropsWithoutHTML = WithChild<{
|
|
105
|
+
/**
|
|
106
|
+
* Whether to force mount the group container regardless of
|
|
107
|
+
* filtering logic.
|
|
108
|
+
*/
|
|
109
|
+
forceMount?: boolean;
|
|
110
|
+
}>;
|
|
111
|
+
|
|
112
|
+
export type CommandEmptyProps = CommandEmptyPropsWithoutHTML &
|
|
113
|
+
Without<BitsPrimitiveDivAttributes, CommandEmptyPropsWithoutHTML>;
|
|
114
|
+
|
|
115
|
+
export type CommandGroupPropsWithoutHTML = WithChild<{
|
|
116
|
+
/**
|
|
117
|
+
* A unique value for the group.
|
|
118
|
+
*/
|
|
119
|
+
value?: string;
|
|
120
|
+
|
|
121
|
+
/**
|
|
122
|
+
* Whether to force mount the group container regardless of
|
|
123
|
+
* filtering logic.
|
|
124
|
+
*/
|
|
125
|
+
forceMount?: boolean;
|
|
126
|
+
}>;
|
|
127
|
+
|
|
128
|
+
export type CommandGroupProps = CommandGroupPropsWithoutHTML &
|
|
129
|
+
Without<BitsPrimitiveDivAttributes, CommandGroupPropsWithoutHTML>;
|
|
130
|
+
|
|
131
|
+
export type CommandGroupHeadingPropsWithoutHTML = WithChild;
|
|
132
|
+
|
|
133
|
+
export type CommandGroupHeadingProps = CommandGroupHeadingPropsWithoutHTML &
|
|
134
|
+
Without<BitsPrimitiveDivAttributes, CommandGroupHeadingPropsWithoutHTML>;
|
|
135
|
+
|
|
136
|
+
export type CommandGroupItemsPropsWithoutHTML = WithChild;
|
|
137
|
+
|
|
138
|
+
export type CommandGroupItemsProps = CommandGroupItemsPropsWithoutHTML &
|
|
139
|
+
Without<BitsPrimitiveDivAttributes, CommandGroupItemsPropsWithoutHTML>;
|
|
140
|
+
|
|
141
|
+
export type CommandItemPropsWithoutHTML = WithChild<{
|
|
142
|
+
/**
|
|
143
|
+
* Whether the item is disabled.
|
|
144
|
+
*
|
|
145
|
+
* @default false
|
|
146
|
+
*/
|
|
147
|
+
disabled?: boolean;
|
|
148
|
+
|
|
149
|
+
/**
|
|
150
|
+
* A callback that is fired when the item is selected, either via
|
|
151
|
+
* click or keyboard selection.
|
|
152
|
+
*/
|
|
153
|
+
onSelect?: () => void;
|
|
154
|
+
|
|
155
|
+
/**
|
|
156
|
+
* A unique value for this item that will be used when filtering
|
|
157
|
+
* and ranking the items. If not provided, an attempt will be made
|
|
158
|
+
* to use the `textContent` of the item. If the `textContent` is dynamic,
|
|
159
|
+
* you will need to provide a stable unique value for the item.
|
|
160
|
+
*/
|
|
161
|
+
value?: string;
|
|
162
|
+
|
|
163
|
+
/**
|
|
164
|
+
* A list of keywords that will be used to filter the item.
|
|
165
|
+
*/
|
|
166
|
+
keywords?: string[];
|
|
167
|
+
|
|
168
|
+
/**
|
|
169
|
+
* Whether to always mount the item regardless of filtering logic.
|
|
170
|
+
*/
|
|
171
|
+
forceMount?: boolean;
|
|
172
|
+
}>;
|
|
173
|
+
|
|
174
|
+
export type CommandItemProps = CommandItemPropsWithoutHTML &
|
|
175
|
+
Without<BitsPrimitiveDivAttributes, CommandItemPropsWithoutHTML>;
|
|
176
|
+
|
|
177
|
+
export type CommandLinkItemPropsWithoutHTML = CommandItemPropsWithoutHTML;
|
|
178
|
+
|
|
179
|
+
export type CommandLinkItemProps = CommandLinkItemPropsWithoutHTML &
|
|
180
|
+
Without<BitsPrimitiveAnchorAttributes, CommandLinkItemPropsWithoutHTML>;
|
|
181
|
+
|
|
182
|
+
export type CommandInputPropsWithoutHTML = WithChild<{
|
|
183
|
+
/**
|
|
184
|
+
* The value of the input element, used to search/filter items.
|
|
185
|
+
*/
|
|
186
|
+
value?: string;
|
|
187
|
+
}>;
|
|
188
|
+
|
|
189
|
+
export type CommandInputProps = CommandInputPropsWithoutHTML &
|
|
190
|
+
Without<BitsPrimitiveInputAttributes, CommandInputPropsWithoutHTML>;
|
|
191
|
+
|
|
192
|
+
export type CommandListPropsWithoutHTML = WithChild;
|
|
193
|
+
|
|
194
|
+
export type CommandListProps = CommandListPropsWithoutHTML &
|
|
195
|
+
Without<BitsPrimitiveDivAttributes, CommandListPropsWithoutHTML>;
|
|
196
|
+
|
|
197
|
+
export type CommandSeparatorPropsWithoutHTML = WithChild<{
|
|
198
|
+
/**
|
|
199
|
+
* Whether to force mount the separator container regardless of
|
|
200
|
+
* filtering logic.
|
|
201
|
+
*/
|
|
202
|
+
forceMount?: boolean;
|
|
203
|
+
}>;
|
|
204
|
+
|
|
205
|
+
export type CommandSeparatorProps = CommandSeparatorPropsWithoutHTML &
|
|
206
|
+
Without<BitsPrimitiveDivAttributes, CommandSeparatorPropsWithoutHTML>;
|
|
207
|
+
|
|
208
|
+
export type CommandLoadingPropsWithoutHTML = WithChild<{
|
|
209
|
+
/**
|
|
210
|
+
* The current progress of the loading state.
|
|
211
|
+
* This is a number between `0` and `100`.
|
|
212
|
+
*/
|
|
213
|
+
progress?: number;
|
|
214
|
+
}>;
|
|
215
|
+
|
|
216
|
+
export type CommandLoadingProps = CommandLoadingPropsWithoutHTML &
|
|
217
|
+
Without<BitsPrimitiveDivAttributes, CommandLoadingPropsWithoutHTML>;
|
|
218
|
+
|
|
219
|
+
export type CommandViewportPropsWithoutHTML = WithChild;
|
|
220
|
+
|
|
221
|
+
export type CommandViewportProps = CommandViewportPropsWithoutHTML &
|
|
222
|
+
Without<BitsPrimitiveDivAttributes, CommandViewportPropsWithoutHTML>;
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
export function findNextSibling(el: Element, selector: string) {
|
|
2
|
+
let sibling = el.nextElementSibling;
|
|
3
|
+
|
|
4
|
+
while (sibling) {
|
|
5
|
+
if (sibling.matches(selector)) return sibling;
|
|
6
|
+
sibling = sibling.nextElementSibling;
|
|
7
|
+
}
|
|
8
|
+
}
|
|
9
|
+
|
|
10
|
+
export function findPreviousSibling(el: Element, selector: string) {
|
|
11
|
+
let sibling = el.previousElementSibling;
|
|
12
|
+
|
|
13
|
+
while (sibling) {
|
|
14
|
+
if (sibling.matches(selector)) return sibling;
|
|
15
|
+
sibling = sibling.previousElementSibling;
|
|
16
|
+
}
|
|
17
|
+
}
|
|
18
|
+
|
|
19
|
+
export function findFirstStartMarkerWithImmediateSiblingAsEnd(el: Element, type: 'item' | 'group') {
|
|
20
|
+
const startMarkers = el.querySelectorAll<HTMLElement>(`[data-bits-command-${type}-start]`);
|
|
21
|
+
|
|
22
|
+
for (const startMarker of startMarkers) {
|
|
23
|
+
const endMarker = startMarker.nextElementSibling;
|
|
24
|
+
if (endMarker && endMarker.hasAttribute(`data-bits-command-${type}-end`)) {
|
|
25
|
+
return startMarker;
|
|
26
|
+
}
|
|
27
|
+
}
|
|
28
|
+
|
|
29
|
+
return null;
|
|
30
|
+
}
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
<script lang="ts">
|
|
2
|
+
import { mergeProps } from '../../../internal/merge-props.js';
|
|
3
|
+
import type { ContextMenuContentStaticProps } from '../types.js';
|
|
4
|
+
import MenuContent from '../../menu/components/menu-content.svelte';
|
|
5
|
+
import { getFloatingContentCSSVars } from '../../../internal/floating-layer/index.js';
|
|
6
|
+
|
|
7
|
+
let { ref = $bindable(null), ...restProps }: ContextMenuContentStaticProps = $props();
|
|
8
|
+
|
|
9
|
+
const mergedProps = $derived(
|
|
10
|
+
mergeProps(
|
|
11
|
+
{
|
|
12
|
+
'data-slot': 'context-menu-content',
|
|
13
|
+
class:
|
|
14
|
+
'bg-popover text-popover-foreground popup-surface popup-surface-static z-50 min-w-32 origin-(--bits-context-menu-content-transform-origin) overflow-x-hidden overflow-y-auto rounded-md border p-1 shadow-md',
|
|
15
|
+
style: getFloatingContentCSSVars('context-menu'),
|
|
16
|
+
},
|
|
17
|
+
restProps,
|
|
18
|
+
),
|
|
19
|
+
);
|
|
20
|
+
</script>
|
|
21
|
+
|
|
22
|
+
<MenuContent bind:ref {...mergedProps} isStatic />
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
<script lang="ts">
|
|
2
|
+
import { mergeProps } from '../../../internal/merge-props.js';
|
|
3
|
+
import type { ContextMenuContentProps } from '../types.js';
|
|
4
|
+
import MenuContent from '../../menu/components/menu-content.svelte';
|
|
5
|
+
import { getFloatingContentCSSVars } from '../../../internal/floating-layer/index.js';
|
|
6
|
+
|
|
7
|
+
let { ref = $bindable(null), side = 'right', sideOffset = 2, align = 'start', trapFocus = false, ...restProps }: ContextMenuContentProps = $props();
|
|
8
|
+
|
|
9
|
+
const mergedProps = $derived(
|
|
10
|
+
mergeProps(
|
|
11
|
+
{
|
|
12
|
+
'data-slot': 'context-menu-content',
|
|
13
|
+
class:
|
|
14
|
+
'bg-popover text-popover-foreground popup-surface z-50 min-w-32 origin-(--bits-context-menu-content-transform-origin) overflow-x-hidden overflow-y-auto rounded-md border p-1 shadow-md',
|
|
15
|
+
style: getFloatingContentCSSVars('context-menu'),
|
|
16
|
+
},
|
|
17
|
+
restProps,
|
|
18
|
+
),
|
|
19
|
+
);
|
|
20
|
+
</script>
|
|
21
|
+
|
|
22
|
+
<MenuContent bind:ref {...mergedProps} {side} {sideOffset} {align} {trapFocus} />
|
|
@@ -0,0 +1,46 @@
|
|
|
1
|
+
<script lang="ts">
|
|
2
|
+
import { boxWith } from '../../../internal/tools/index.js';
|
|
3
|
+
import { mergeProps } from '../../../internal/merge-props.js';
|
|
4
|
+
import type { ContextMenuTriggerProps } from '../types.js';
|
|
5
|
+
import { ContextMenuTriggerState } from '../../menu/menu.svelte.js';
|
|
6
|
+
import { createId } from '../../../internal/create-id.js';
|
|
7
|
+
import { setFloatingAnchor } from '../../../internal/floating-layer/index.js';
|
|
8
|
+
|
|
9
|
+
const uid = $props.id();
|
|
10
|
+
|
|
11
|
+
let { id = createId(uid), ref = $bindable(null), child, children, disabled = false, ...restProps }: ContextMenuTriggerProps = $props();
|
|
12
|
+
|
|
13
|
+
const triggerState = ContextMenuTriggerState.create({
|
|
14
|
+
id: boxWith(() => id),
|
|
15
|
+
disabled: boxWith(() => disabled),
|
|
16
|
+
ref: boxWith(
|
|
17
|
+
() => ref,
|
|
18
|
+
(v) => (ref = v),
|
|
19
|
+
),
|
|
20
|
+
});
|
|
21
|
+
|
|
22
|
+
const mergedProps = $derived(
|
|
23
|
+
mergeProps(
|
|
24
|
+
{
|
|
25
|
+
'data-slot': 'context-menu-trigger',
|
|
26
|
+
},
|
|
27
|
+
restProps,
|
|
28
|
+
triggerState.props,
|
|
29
|
+
{ style: { pointerEvents: 'auto' } },
|
|
30
|
+
{
|
|
31
|
+
style: restProps.style,
|
|
32
|
+
tabindex: restProps.tabindex,
|
|
33
|
+
},
|
|
34
|
+
),
|
|
35
|
+
);
|
|
36
|
+
|
|
37
|
+
setFloatingAnchor(triggerState.virtualElement);
|
|
38
|
+
</script>
|
|
39
|
+
|
|
40
|
+
{#if child}
|
|
41
|
+
{@render child({ props: mergedProps })}
|
|
42
|
+
{:else}
|
|
43
|
+
<div {...mergedProps}>
|
|
44
|
+
{@render children?.()}
|
|
45
|
+
</div>
|
|
46
|
+
{/if}
|
|
@@ -0,0 +1,39 @@
|
|
|
1
|
+
export { default as Root } from './components/context-menu.svelte';
|
|
2
|
+
export { default as Sub } from '../menu/components/menu-sub.svelte';
|
|
3
|
+
export { default as Item } from '../menu/components/menu-item.svelte';
|
|
4
|
+
export { default as Group } from '../menu/components/menu-group.svelte';
|
|
5
|
+
export { default as GroupHeading } from '../menu/components/menu-group-heading.svelte';
|
|
6
|
+
export { default as Arrow } from '../menu/components/menu-arrow.svelte';
|
|
7
|
+
export { default as Content } from './components/context-menu-content.svelte';
|
|
8
|
+
export { default as ContentStatic } from './components/context-menu-content-static.svelte';
|
|
9
|
+
export { default as Trigger } from './components/context-menu-trigger.svelte';
|
|
10
|
+
export { default as RadioItem } from '../menu/components/menu-radio-item.svelte';
|
|
11
|
+
export { default as Separator } from '../menu/components/menu-separator.svelte';
|
|
12
|
+
export { default as RadioGroup } from '../menu/components/menu-radio-group.svelte';
|
|
13
|
+
export { default as SubContent } from '../menu/components/menu-sub-content.svelte';
|
|
14
|
+
export { default as SubContentStatic } from '../menu/components/menu-sub-content-static.svelte';
|
|
15
|
+
export { default as SubTrigger } from '../menu/components/menu-sub-trigger.svelte';
|
|
16
|
+
export { default as CheckboxItem } from '../menu/components/menu-checkbox-item.svelte';
|
|
17
|
+
export { default as Portal } from '../../internal/portal/portal.svelte';
|
|
18
|
+
export { default as CheckboxGroup } from '../menu/components/menu-checkbox-group.svelte';
|
|
19
|
+
|
|
20
|
+
export type {
|
|
21
|
+
ContextMenuArrowProps as ArrowProps,
|
|
22
|
+
ContextMenuCheckboxItemProps as CheckboxItemProps,
|
|
23
|
+
ContextMenuGroupProps as GroupProps,
|
|
24
|
+
ContextMenuItemProps as ItemProps,
|
|
25
|
+
ContextMenuGroupHeadingProps as GroupHeadingProps,
|
|
26
|
+
ContextMenuRootProps as RootProps,
|
|
27
|
+
ContextMenuRadioGroupProps as RadioGroupProps,
|
|
28
|
+
ContextMenuRadioItemProps as RadioItemProps,
|
|
29
|
+
ContextMenuSeparatorProps as SeparatorProps,
|
|
30
|
+
ContextMenuSubContentProps as SubContentProps,
|
|
31
|
+
ContextMenuSubContentStaticProps as SubContentStaticProps,
|
|
32
|
+
ContextMenuSubProps as SubProps,
|
|
33
|
+
ContextMenuSubTriggerProps as SubTriggerProps,
|
|
34
|
+
ContextMenuContentProps as ContentProps,
|
|
35
|
+
ContextMenuContentStaticProps as ContentStaticProps,
|
|
36
|
+
ContextMenuTriggerProps as TriggerProps,
|
|
37
|
+
ContextMenuPortalProps as PortalProps,
|
|
38
|
+
ContextMenuCheckboxGroupProps as CheckboxGroupProps,
|
|
39
|
+
} from './types.js';
|
|
@@ -0,0 +1,56 @@
|
|
|
1
|
+
import type { MenuContentProps, MenuContentPropsWithoutHTML } from "../menu/types.js";
|
|
2
|
+
import type { WithChild, Without } from "../../internal/types.js";
|
|
3
|
+
import type { BitsPrimitiveDivAttributes } from "../../internal/attribute-types.js";
|
|
4
|
+
|
|
5
|
+
export type ContextMenuContentPropsWithoutHTML = MenuContentPropsWithoutHTML;
|
|
6
|
+
|
|
7
|
+
export type ContextMenuContentProps = MenuContentProps;
|
|
8
|
+
|
|
9
|
+
export type ContextMenuTriggerPropsWithoutHTML = WithChild<{
|
|
10
|
+
/**
|
|
11
|
+
* Whether the context menu trigger is disabled. If disabled, the trigger will not
|
|
12
|
+
* open the menu when right-clicked.
|
|
13
|
+
*/
|
|
14
|
+
disabled?: boolean;
|
|
15
|
+
}>;
|
|
16
|
+
|
|
17
|
+
export type ContextMenuTriggerProps = ContextMenuTriggerPropsWithoutHTML &
|
|
18
|
+
Without<BitsPrimitiveDivAttributes, ContextMenuTriggerPropsWithoutHTML>;
|
|
19
|
+
|
|
20
|
+
export type {
|
|
21
|
+
MenuArrowProps as ContextMenuArrowProps,
|
|
22
|
+
MenuContentStaticProps as ContextMenuContentStaticProps,
|
|
23
|
+
MenuCheckboxItemProps as ContextMenuCheckboxItemProps,
|
|
24
|
+
MenuGroupProps as ContextMenuGroupProps,
|
|
25
|
+
MenuItemProps as ContextMenuItemProps,
|
|
26
|
+
MenuGroupHeadingProps as ContextMenuGroupHeadingProps,
|
|
27
|
+
MenuRootProps as ContextMenuRootProps,
|
|
28
|
+
MenuRadioGroupProps as ContextMenuRadioGroupProps,
|
|
29
|
+
MenuRadioItemProps as ContextMenuRadioItemProps,
|
|
30
|
+
MenuSeparatorProps as ContextMenuSeparatorProps,
|
|
31
|
+
MenuSubContentProps as ContextMenuSubContentProps,
|
|
32
|
+
MenuSubContentStaticProps as ContextMenuSubContentStaticProps,
|
|
33
|
+
MenuSubProps as ContextMenuSubProps,
|
|
34
|
+
MenuSubTriggerProps as ContextMenuSubTriggerProps,
|
|
35
|
+
MenuPortalProps as ContextMenuPortalProps,
|
|
36
|
+
MenuCheckboxGroupProps as ContextMenuCheckboxGroupProps,
|
|
37
|
+
} from "../menu/types.js";
|
|
38
|
+
|
|
39
|
+
export type {
|
|
40
|
+
MenuRootPropsWithoutHTML as ContextMenuRootPropsWithoutHTML,
|
|
41
|
+
MenuContentStaticPropsWithoutHTML as ContextMenuContentStaticPropsWithoutHTML,
|
|
42
|
+
MenuArrowPropsWithoutHTML as ContextMenuArrowPropsWithoutHTML,
|
|
43
|
+
MenuCheckboxItemPropsWithoutHTML as ContextMenuCheckboxItemPropsWithoutHTML,
|
|
44
|
+
MenuGroupPropsWithoutHTML as ContextMenuGroupPropsWithoutHTML,
|
|
45
|
+
MenuItemPropsWithoutHTML as ContextMenuItemPropsWithoutHTML,
|
|
46
|
+
MenuGroupHeadingPropsWithoutHTML as ContextMenuGroupHeadingPropsWithoutHTML,
|
|
47
|
+
MenuRadioGroupPropsWithoutHTML as ContextMenuRadioGroupPropsWithoutHTML,
|
|
48
|
+
MenuRadioItemPropsWithoutHTML as ContextMenuRadioItemPropsWithoutHTML,
|
|
49
|
+
MenuSeparatorPropsWithoutHTML as ContextMenuSeparatorPropsWithoutHTML,
|
|
50
|
+
MenuSubPropsWithoutHTML as ContextMenuSubPropsWithoutHTML,
|
|
51
|
+
MenuSubTriggerPropsWithoutHTML as ContextMenuSubTriggerPropsWithoutHTML,
|
|
52
|
+
MenuSubContentPropsWithoutHTML as ContextMenuSubContentPropsWithoutHTML,
|
|
53
|
+
MenuSubContentStaticPropsWithoutHTML as ContextMenuSubContentStaticPropsWithoutHTML,
|
|
54
|
+
MenuPortalPropsWithoutHTML as ContextMenuPortalPropsWithoutHTML,
|
|
55
|
+
MenuCheckboxGroupPropsWithoutHTML as ContextMenuCheckboxGroupPropsWithoutHTML,
|
|
56
|
+
} from "../menu/types.js";
|