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,733 @@
|
|
|
1
|
+
/* Native <details> disclosures (accordion + collapsible): the content slot is a grid
|
|
2
|
+
whose single row interpolates 0fr↔1fr — works in every engine, unlike ::details-content
|
|
3
|
+
(Firefox 143+) or interpolate-size height 0↔auto (Chromium-only). data-state carries the
|
|
4
|
+
visual state; the components hold the `open` attribute through the closing transition so
|
|
5
|
+
content stays rendered, then drop it when animations settle (JS times the unmount, CSS
|
|
6
|
+
owns the motion). @starting-style animates the enter from the just-mounted 0fr state. */
|
|
7
|
+
[data-slot='collapsible'] > [data-slot='collapsible-content'],
|
|
8
|
+
[data-slot='accordion-item'] > [data-slot='accordion-content'] {
|
|
9
|
+
display: grid;
|
|
10
|
+
grid-template-rows: 0fr;
|
|
11
|
+
overflow: clip;
|
|
12
|
+
transition: grid-template-rows var(--tw-duration, 200ms) var(--tw-ease, ease-out);
|
|
13
|
+
}
|
|
14
|
+
|
|
15
|
+
[data-slot='collapsible'][data-state='open'] > [data-slot='collapsible-content'],
|
|
16
|
+
[data-slot='accordion-item'][data-state='open'] > [data-slot='accordion-content'] {
|
|
17
|
+
grid-template-rows: 1fr;
|
|
18
|
+
|
|
19
|
+
@starting-style {
|
|
20
|
+
grid-template-rows: 0fr;
|
|
21
|
+
}
|
|
22
|
+
}
|
|
23
|
+
|
|
24
|
+
/* Each content slot wraps its children in a single element; min-height 0 lets the 0fr
|
|
25
|
+
track actually collapse it. */
|
|
26
|
+
[data-slot='collapsible-content'] > *,
|
|
27
|
+
[data-slot='accordion-content'] > * {
|
|
28
|
+
min-height: 0;
|
|
29
|
+
}
|
|
30
|
+
|
|
31
|
+
/* scrollbar-none covers only scrollbar-width; the webkit pseudo is still needed for Safari < 18.2. */
|
|
32
|
+
/* Popup surfaces (menu family content and sub-content, select/combobox content) stay mounted
|
|
33
|
+
through their exit; the engine sets the closed state inline and these utilities add the
|
|
34
|
+
motion. Closed is visibility:hidden, not display:none: Firefox cannot transition `display` at
|
|
35
|
+
all (BCD css.properties.display.is_transitionable — Chrome 117, Safari 18, Firefox never), so a
|
|
36
|
+
discrete display exit snaps there, while visibility transitions discretely in every engine and
|
|
37
|
+
stays visible until the exit ends. The entry slide is transition-only as well: closed gives
|
|
38
|
+
`translate` a zero duration and a full-length delay, so it jumps to its side offset only once
|
|
39
|
+
the surface is hidden, and open transitions it back to zero — enter slides, exit does not, as
|
|
40
|
+
before. Visibility itself transitions only on the way out: the entry flips it instantly,
|
|
41
|
+
because a hidden→visible transition is still hidden at its first frame (WebKit: for half of
|
|
42
|
+
it) and the focus scope's opening focus() lands exactly there.
|
|
43
|
+
Duration lists live under the state selectors on purpose: an adapter's `duration-*` class sets
|
|
44
|
+
a single transition-duration that would override a list at utility specificity, while the
|
|
45
|
+
attribute selectors still read its --tw-duration. */
|
|
46
|
+
@utility popup-surface {
|
|
47
|
+
--popup-duration: var(--tw-duration, var(--default-transition-duration));
|
|
48
|
+
transition-property: opacity, scale, translate, visibility;
|
|
49
|
+
transition-timing-function: var(--tw-ease, var(--default-transition-timing-function));
|
|
50
|
+
|
|
51
|
+
&[data-state='open'] {
|
|
52
|
+
transition-duration: var(--popup-duration), var(--popup-duration), var(--popup-duration), 0s;
|
|
53
|
+
}
|
|
54
|
+
&[data-state='closed'] {
|
|
55
|
+
visibility: hidden;
|
|
56
|
+
opacity: 0;
|
|
57
|
+
scale: 0.95;
|
|
58
|
+
transition-duration: var(--popup-duration), var(--popup-duration), 0s, var(--popup-duration);
|
|
59
|
+
transition-delay: 0s, 0s, var(--popup-duration), 0s;
|
|
60
|
+
}
|
|
61
|
+
&[data-state='closed'][data-side='bottom'] {
|
|
62
|
+
translate: 0 -0.5rem;
|
|
63
|
+
}
|
|
64
|
+
&[data-state='closed'][data-side='top'] {
|
|
65
|
+
translate: 0 0.5rem;
|
|
66
|
+
}
|
|
67
|
+
&[data-state='closed'][data-side='left'],
|
|
68
|
+
&[data-state='closed'][data-side='inline-start'] {
|
|
69
|
+
translate: 0.5rem 0;
|
|
70
|
+
}
|
|
71
|
+
&[data-state='closed'][data-side='right'],
|
|
72
|
+
&[data-state='closed'][data-side='inline-end'] {
|
|
73
|
+
translate: -0.5rem 0;
|
|
74
|
+
}
|
|
75
|
+
}
|
|
76
|
+
|
|
77
|
+
/* Static (in-flow) content must leave the flow when closed, so the engine sets display:none
|
|
78
|
+
there; transitioning it discretely lets the exit play where display is transitionable. */
|
|
79
|
+
@utility popup-surface-static {
|
|
80
|
+
transition-property: opacity, scale, translate, visibility, display;
|
|
81
|
+
transition-behavior: allow-discrete;
|
|
82
|
+
|
|
83
|
+
&[data-state='open'] {
|
|
84
|
+
transition-duration: var(--popup-duration), var(--popup-duration), var(--popup-duration), 0s, 0s;
|
|
85
|
+
}
|
|
86
|
+
&[data-state='closed'] {
|
|
87
|
+
transition-duration: var(--popup-duration), var(--popup-duration), 0s, var(--popup-duration), var(--popup-duration);
|
|
88
|
+
transition-delay: 0s, 0s, var(--popup-duration), 0s, 0s;
|
|
89
|
+
}
|
|
90
|
+
}
|
|
91
|
+
|
|
92
|
+
/* Navigation menu surfaces, same always-mounted contract as popup-surface. Content enters are
|
|
93
|
+
keyframes, because they are asymmetric with the exit: every enter fades in, and a swap also
|
|
94
|
+
slides in from the previous item's side, while an exit fades and slides only on a swap
|
|
95
|
+
(data-motion=to-*) or in the viewport-less layout (the adapter's data-closed classes). Only
|
|
96
|
+
those two exits hold visibility: inside a viewport a plain close hides the content at once and
|
|
97
|
+
lets the viewport zoom out on its own, as the unmount did. */
|
|
98
|
+
@keyframes nav-content-in {
|
|
99
|
+
from {
|
|
100
|
+
opacity: 0;
|
|
101
|
+
}
|
|
102
|
+
}
|
|
103
|
+
@keyframes nav-content-in-from-start {
|
|
104
|
+
from {
|
|
105
|
+
opacity: 0;
|
|
106
|
+
translate: -13rem 0;
|
|
107
|
+
}
|
|
108
|
+
}
|
|
109
|
+
@keyframes nav-content-in-from-end {
|
|
110
|
+
from {
|
|
111
|
+
opacity: 0;
|
|
112
|
+
translate: 13rem 0;
|
|
113
|
+
}
|
|
114
|
+
}
|
|
115
|
+
@utility nav-content-surface {
|
|
116
|
+
--nav-duration: var(--tw-duration, var(--default-transition-duration));
|
|
117
|
+
--nav-ease: var(--tw-ease, var(--default-transition-timing-function));
|
|
118
|
+
transition-property: opacity, scale, translate, visibility;
|
|
119
|
+
transition-timing-function: var(--nav-ease);
|
|
120
|
+
|
|
121
|
+
&[data-state='open'] {
|
|
122
|
+
transition-duration: var(--nav-duration), var(--nav-duration), var(--nav-duration), 0s;
|
|
123
|
+
animation: nav-content-in var(--nav-duration) var(--nav-ease);
|
|
124
|
+
}
|
|
125
|
+
&[data-state='open'][data-motion='from-start'] {
|
|
126
|
+
animation-name: nav-content-in-from-start;
|
|
127
|
+
}
|
|
128
|
+
&[data-state='open'][data-motion='from-end'] {
|
|
129
|
+
animation-name: nav-content-in-from-end;
|
|
130
|
+
}
|
|
131
|
+
&[data-state='closed'] {
|
|
132
|
+
visibility: hidden;
|
|
133
|
+
transition-duration: var(--nav-duration), var(--nav-duration), var(--nav-duration), 0s;
|
|
134
|
+
}
|
|
135
|
+
&[data-state='closed']:is([data-motion='to-start'], [data-motion='to-end']),
|
|
136
|
+
[data-viewport='false'] &[data-state='closed'] {
|
|
137
|
+
transition-duration: var(--nav-duration);
|
|
138
|
+
}
|
|
139
|
+
&[data-motion='to-start'],
|
|
140
|
+
&[data-motion='to-end'] {
|
|
141
|
+
opacity: 0;
|
|
142
|
+
}
|
|
143
|
+
&[data-motion='to-start'] {
|
|
144
|
+
translate: -13rem 0;
|
|
145
|
+
}
|
|
146
|
+
&[data-motion='to-end'] {
|
|
147
|
+
translate: 13rem 0;
|
|
148
|
+
}
|
|
149
|
+
}
|
|
150
|
+
@utility nav-viewport-surface {
|
|
151
|
+
--nav-duration: var(--tw-duration, var(--default-transition-duration));
|
|
152
|
+
transition-property: scale, visibility;
|
|
153
|
+
transition-timing-function: var(--tw-ease, var(--default-transition-timing-function));
|
|
154
|
+
|
|
155
|
+
&[data-state='open'] {
|
|
156
|
+
transition-duration: var(--nav-duration), 0s;
|
|
157
|
+
}
|
|
158
|
+
&[data-state='closed'] {
|
|
159
|
+
visibility: hidden;
|
|
160
|
+
scale: 0.9;
|
|
161
|
+
transition-duration: var(--nav-duration);
|
|
162
|
+
}
|
|
163
|
+
}
|
|
164
|
+
@utility nav-indicator-surface {
|
|
165
|
+
--nav-duration: var(--tw-duration, var(--default-transition-duration));
|
|
166
|
+
transition-property: opacity, visibility;
|
|
167
|
+
transition-timing-function: var(--tw-ease, var(--default-transition-timing-function));
|
|
168
|
+
|
|
169
|
+
&[data-state='visible'] {
|
|
170
|
+
transition-duration: var(--nav-duration), 0s;
|
|
171
|
+
}
|
|
172
|
+
&[data-state='hidden'] {
|
|
173
|
+
visibility: hidden;
|
|
174
|
+
opacity: 0;
|
|
175
|
+
transition-duration: var(--nav-duration);
|
|
176
|
+
}
|
|
177
|
+
}
|
|
178
|
+
|
|
179
|
+
/* A JS-overlay backdrop that stays mounted: fades, and holds visibility through the fade-out. */
|
|
180
|
+
@utility overlay-surface {
|
|
181
|
+
--overlay-duration: var(--tw-duration, var(--default-transition-duration));
|
|
182
|
+
transition-property: opacity, visibility;
|
|
183
|
+
transition-timing-function: var(--tw-ease, var(--default-transition-timing-function));
|
|
184
|
+
|
|
185
|
+
&[data-state='open'] {
|
|
186
|
+
transition-duration: var(--overlay-duration), 0s;
|
|
187
|
+
}
|
|
188
|
+
&[data-state='closed'] {
|
|
189
|
+
visibility: hidden;
|
|
190
|
+
opacity: 0;
|
|
191
|
+
transition-duration: var(--overlay-duration);
|
|
192
|
+
}
|
|
193
|
+
}
|
|
194
|
+
|
|
195
|
+
/* Text-selection guard. A drag that starts inside an open modal surface must not select the page
|
|
196
|
+
text behind it. This was a document pointer tracker (text-selection-layer) that set body
|
|
197
|
+
user-select:none for the length of an outward drag and kept a global layer stack to decide
|
|
198
|
+
which surface owned the drag; now the open surface flags itself and :has() covers its whole
|
|
199
|
+
open window instead — page text is unreachable then anyway (the scroll lock's pointer-events:
|
|
200
|
+
none on body). Descendants with their own user-select (select-none items) keep it. Safari
|
|
201
|
+
only reads the -webkit- form. */
|
|
202
|
+
body:has([data-text-selection-guard]) {
|
|
203
|
+
-webkit-user-select: none;
|
|
204
|
+
user-select: none;
|
|
205
|
+
}
|
|
206
|
+
[data-text-selection-guard] {
|
|
207
|
+
-webkit-user-select: text;
|
|
208
|
+
user-select: text;
|
|
209
|
+
}
|
|
210
|
+
|
|
211
|
+
@utility scrollbar-hidden {
|
|
212
|
+
scrollbar-width: none;
|
|
213
|
+
&::-webkit-scrollbar {
|
|
214
|
+
display: none;
|
|
215
|
+
}
|
|
216
|
+
}
|
|
217
|
+
|
|
218
|
+
@theme inline {
|
|
219
|
+
--text-2xs: 11px;
|
|
220
|
+
--text-3xs: 10px;
|
|
221
|
+
--animate-check-pop: check-pop 350ms cubic-bezier(0.34, 1.56, 0.64, 1) both;
|
|
222
|
+
@keyframes check-pop {
|
|
223
|
+
from {
|
|
224
|
+
opacity: 0;
|
|
225
|
+
transform: scale(0.6);
|
|
226
|
+
}
|
|
227
|
+
}
|
|
228
|
+
|
|
229
|
+
--animate-caret-blink: caret-blink 1.25s ease-out infinite;
|
|
230
|
+
|
|
231
|
+
@keyframes caret-blink {
|
|
232
|
+
0%,
|
|
233
|
+
70%,
|
|
234
|
+
100% {
|
|
235
|
+
opacity: 1;
|
|
236
|
+
}
|
|
237
|
+
20%,
|
|
238
|
+
50% {
|
|
239
|
+
opacity: 0;
|
|
240
|
+
}
|
|
241
|
+
}
|
|
242
|
+
}
|
|
243
|
+
|
|
244
|
+
/* Component animations — defined centrally; components only trigger them via animation-name. */
|
|
245
|
+
|
|
246
|
+
@keyframes fadeIn {
|
|
247
|
+
from {
|
|
248
|
+
opacity: 0;
|
|
249
|
+
}
|
|
250
|
+
to {
|
|
251
|
+
opacity: 1;
|
|
252
|
+
}
|
|
253
|
+
}
|
|
254
|
+
|
|
255
|
+
/* The exit keyframes keep `visibility: visible` while they run: the drawer and its overlay stay
|
|
256
|
+
mounted with visibility:hidden inline once closed, and a running animation outranks inline
|
|
257
|
+
style, so the surface hides exactly when its exit ends (vaul writes inline `transition`
|
|
258
|
+
shorthands while dragging, which a visibility transition would not survive). */
|
|
259
|
+
@keyframes fadeOut {
|
|
260
|
+
from {
|
|
261
|
+
visibility: visible;
|
|
262
|
+
}
|
|
263
|
+
to {
|
|
264
|
+
opacity: 0;
|
|
265
|
+
visibility: visible;
|
|
266
|
+
}
|
|
267
|
+
}
|
|
268
|
+
|
|
269
|
+
/* Draws an SVG stroke from invisible to full length — pair with pathLength="100" + [stroke-dasharray:100] [stroke-dashoffset:100]. */
|
|
270
|
+
@keyframes draw {
|
|
271
|
+
to {
|
|
272
|
+
stroke-dashoffset: 0;
|
|
273
|
+
}
|
|
274
|
+
}
|
|
275
|
+
|
|
276
|
+
@keyframes slideFromBottom {
|
|
277
|
+
from {
|
|
278
|
+
transform: translate3d(0, var(--initial-transform, 100%), 0);
|
|
279
|
+
}
|
|
280
|
+
to {
|
|
281
|
+
transform: translate3d(0, 0, 0);
|
|
282
|
+
}
|
|
283
|
+
}
|
|
284
|
+
|
|
285
|
+
@keyframes slideToBottom {
|
|
286
|
+
from {
|
|
287
|
+
visibility: visible;
|
|
288
|
+
}
|
|
289
|
+
to {
|
|
290
|
+
transform: translate3d(0, var(--initial-transform, 100%), 0);
|
|
291
|
+
visibility: visible;
|
|
292
|
+
}
|
|
293
|
+
}
|
|
294
|
+
|
|
295
|
+
@keyframes slideFromTop {
|
|
296
|
+
from {
|
|
297
|
+
transform: translate3d(0, calc(var(--initial-transform, 100%) * -1), 0);
|
|
298
|
+
}
|
|
299
|
+
to {
|
|
300
|
+
transform: translate3d(0, 0, 0);
|
|
301
|
+
}
|
|
302
|
+
}
|
|
303
|
+
|
|
304
|
+
@keyframes slideToTop {
|
|
305
|
+
from {
|
|
306
|
+
visibility: visible;
|
|
307
|
+
}
|
|
308
|
+
to {
|
|
309
|
+
transform: translate3d(0, calc(var(--initial-transform, 100%) * -1), 0);
|
|
310
|
+
visibility: visible;
|
|
311
|
+
}
|
|
312
|
+
}
|
|
313
|
+
|
|
314
|
+
@keyframes slideFromLeft {
|
|
315
|
+
from {
|
|
316
|
+
transform: translate3d(calc(var(--initial-transform, 100%) * -1), 0, 0);
|
|
317
|
+
}
|
|
318
|
+
to {
|
|
319
|
+
transform: translate3d(0, 0, 0);
|
|
320
|
+
}
|
|
321
|
+
}
|
|
322
|
+
|
|
323
|
+
@keyframes slideToLeft {
|
|
324
|
+
from {
|
|
325
|
+
visibility: visible;
|
|
326
|
+
}
|
|
327
|
+
to {
|
|
328
|
+
transform: translate3d(calc(var(--initial-transform, 100%) * -1), 0, 0);
|
|
329
|
+
visibility: visible;
|
|
330
|
+
}
|
|
331
|
+
}
|
|
332
|
+
|
|
333
|
+
@keyframes slideFromRight {
|
|
334
|
+
from {
|
|
335
|
+
transform: translate3d(var(--initial-transform, 100%), 0, 0);
|
|
336
|
+
}
|
|
337
|
+
to {
|
|
338
|
+
transform: translate3d(0, 0, 0);
|
|
339
|
+
}
|
|
340
|
+
}
|
|
341
|
+
|
|
342
|
+
@keyframes slideToRight {
|
|
343
|
+
from {
|
|
344
|
+
visibility: visible;
|
|
345
|
+
}
|
|
346
|
+
to {
|
|
347
|
+
transform: translate3d(var(--initial-transform, 100%), 0, 0);
|
|
348
|
+
visibility: visible;
|
|
349
|
+
}
|
|
350
|
+
}
|
|
351
|
+
|
|
352
|
+
@keyframes swipe-out-left {
|
|
353
|
+
from {
|
|
354
|
+
transform: var(--y) translateX(var(--swipe-amount-x));
|
|
355
|
+
opacity: 1;
|
|
356
|
+
}
|
|
357
|
+
to {
|
|
358
|
+
transform: var(--y) translateX(calc(var(--swipe-amount-x) - 100%));
|
|
359
|
+
opacity: 0;
|
|
360
|
+
}
|
|
361
|
+
}
|
|
362
|
+
|
|
363
|
+
@keyframes swipe-out-right {
|
|
364
|
+
from {
|
|
365
|
+
transform: var(--y) translateX(var(--swipe-amount-x));
|
|
366
|
+
opacity: 1;
|
|
367
|
+
}
|
|
368
|
+
to {
|
|
369
|
+
transform: var(--y) translateX(calc(var(--swipe-amount-x) + 100%));
|
|
370
|
+
opacity: 0;
|
|
371
|
+
}
|
|
372
|
+
}
|
|
373
|
+
|
|
374
|
+
@keyframes swipe-out-up {
|
|
375
|
+
from {
|
|
376
|
+
transform: var(--y) translateY(var(--swipe-amount-y));
|
|
377
|
+
opacity: 1;
|
|
378
|
+
}
|
|
379
|
+
to {
|
|
380
|
+
transform: var(--y) translateY(calc(var(--swipe-amount-y) - 100%));
|
|
381
|
+
opacity: 0;
|
|
382
|
+
}
|
|
383
|
+
}
|
|
384
|
+
|
|
385
|
+
@keyframes swipe-out-down {
|
|
386
|
+
from {
|
|
387
|
+
transform: var(--y) translateY(var(--swipe-amount-y));
|
|
388
|
+
opacity: 1;
|
|
389
|
+
}
|
|
390
|
+
to {
|
|
391
|
+
transform: var(--y) translateY(calc(var(--swipe-amount-y) + 100%));
|
|
392
|
+
opacity: 0;
|
|
393
|
+
}
|
|
394
|
+
}
|
|
395
|
+
|
|
396
|
+
@keyframes sonner-fade-in {
|
|
397
|
+
0% {
|
|
398
|
+
opacity: 0;
|
|
399
|
+
transform: scale(0.8);
|
|
400
|
+
}
|
|
401
|
+
100% {
|
|
402
|
+
opacity: 1;
|
|
403
|
+
transform: scale(1);
|
|
404
|
+
}
|
|
405
|
+
}
|
|
406
|
+
|
|
407
|
+
@keyframes theme-spin-out {
|
|
408
|
+
0% {
|
|
409
|
+
opacity: 1;
|
|
410
|
+
transform: rotate(0deg);
|
|
411
|
+
}
|
|
412
|
+
50%,
|
|
413
|
+
100% {
|
|
414
|
+
opacity: 0;
|
|
415
|
+
transform: rotate(180deg);
|
|
416
|
+
}
|
|
417
|
+
}
|
|
418
|
+
|
|
419
|
+
@keyframes theme-spin-in {
|
|
420
|
+
0%,
|
|
421
|
+
50% {
|
|
422
|
+
opacity: 0;
|
|
423
|
+
transform: rotate(180deg);
|
|
424
|
+
}
|
|
425
|
+
100% {
|
|
426
|
+
opacity: 1;
|
|
427
|
+
transform: rotate(360deg);
|
|
428
|
+
}
|
|
429
|
+
}
|
|
430
|
+
|
|
431
|
+
/* Class-based dark mode, defined once for every consumer stylesheet. :where keeps dark: at the
|
|
432
|
+
utility's own specificity, so a same-specificity state utility (aria-expanded:, hover:) is not
|
|
433
|
+
outranked merely by being in dark mode. */
|
|
434
|
+
@custom-variant dark (&:where(.dark, .dark *));
|
|
435
|
+
|
|
436
|
+
/* Custom variants: one spelling per data-state value. These shadow Tailwind's built-in
|
|
437
|
+
data-open/data-closed/... (which match a bare [data-open] attribute nothing here renders).
|
|
438
|
+
data-disabled and data-active keep the ="false" guard: Toast, sidebar menu buttons and
|
|
439
|
+
pagination render the attribute as a boolean string. */
|
|
440
|
+
@custom-variant data-open {
|
|
441
|
+
&:where([data-state='open']) {
|
|
442
|
+
@slot;
|
|
443
|
+
}
|
|
444
|
+
}
|
|
445
|
+
|
|
446
|
+
@custom-variant data-closed {
|
|
447
|
+
&:where([data-state='closed']) {
|
|
448
|
+
@slot;
|
|
449
|
+
}
|
|
450
|
+
}
|
|
451
|
+
|
|
452
|
+
@custom-variant data-checked {
|
|
453
|
+
&:where([data-state='checked']) {
|
|
454
|
+
@slot;
|
|
455
|
+
}
|
|
456
|
+
}
|
|
457
|
+
|
|
458
|
+
@custom-variant data-unchecked {
|
|
459
|
+
&:where([data-state='unchecked']) {
|
|
460
|
+
@slot;
|
|
461
|
+
}
|
|
462
|
+
}
|
|
463
|
+
|
|
464
|
+
@custom-variant data-disabled {
|
|
465
|
+
&:where([data-disabled]:not([data-disabled='false'])) {
|
|
466
|
+
@slot;
|
|
467
|
+
}
|
|
468
|
+
}
|
|
469
|
+
|
|
470
|
+
@custom-variant data-active {
|
|
471
|
+
&:where([data-state='active']),
|
|
472
|
+
&:where([data-active]:not([data-active='false'])) {
|
|
473
|
+
@slot;
|
|
474
|
+
}
|
|
475
|
+
}
|
|
476
|
+
|
|
477
|
+
@custom-variant data-horizontal {
|
|
478
|
+
&:where([data-orientation='horizontal']) {
|
|
479
|
+
@slot;
|
|
480
|
+
}
|
|
481
|
+
}
|
|
482
|
+
|
|
483
|
+
@custom-variant data-vertical {
|
|
484
|
+
&:where([data-orientation='vertical']) {
|
|
485
|
+
@slot;
|
|
486
|
+
}
|
|
487
|
+
}
|
|
488
|
+
|
|
489
|
+
.label-selectable-card {
|
|
490
|
+
@apply gap-2 rounded-2xl border leading-snug group-data-disabled/field:opacity-50 has-data-checked:bg-border/30 *:data-[slot=field]:p-4;
|
|
491
|
+
}
|
|
492
|
+
|
|
493
|
+
.wrap-input-identity {
|
|
494
|
+
@apply relative flex h-9 w-full min-w-0 items-center rounded-md border border-border shadow-xs transition-[color,box-shadow] outline-none in-data-[slot=combobox-content]:focus-within:border-inherit in-data-[slot=combobox-content]:focus-within:ring-0 has-[[data-slot=input-group-control]:focus-visible]:border-ring has-[[data-slot=input-group-control]:focus-visible]:ring-3 has-[[data-slot=input-group-control]:focus-visible]:ring-ring/50 has-[[data-slot][aria-invalid=true]]:border-destructive has-[[data-slot][aria-invalid=true]]:ring-3 has-[[data-slot][aria-invalid=true]]:ring-destructive/20 has-[>[data-align=block-end]]:h-auto has-[>[data-align=block-end]]:flex-col has-[>[data-align=block-start]]:h-auto has-[>[data-align=block-start]]:flex-col has-[>textarea]:h-auto dark:bg-border/30 dark:has-[[data-slot][aria-invalid=true]]:ring-destructive/40 has-[>[data-align=block-end]]:[&>input]:pt-3 has-[>[data-align=block-start]]:[&>input]:pb-3 has-[>[data-align=inline-end]]:[&>input]:pr-1.5 has-[>[data-align=inline-start]]:[&>input]:pl-1.5;
|
|
495
|
+
}
|
|
496
|
+
|
|
497
|
+
/* Anchored JS surfaces (menu family, select/combobox): the engine positions the content itself
|
|
498
|
+
with position-area + position-try-fallbacks (internal/floating-layer). The content must keep
|
|
499
|
+
its intrinsic width for the fallback check to see an overflow — an absolutely positioned box
|
|
500
|
+
would otherwise shrink to the space beside a viewport edge and wrap instead of flipping.
|
|
501
|
+
Layered so a consumer's width utility still wins. */
|
|
502
|
+
@layer components {
|
|
503
|
+
[data-floating-content] {
|
|
504
|
+
width: max-content;
|
|
505
|
+
}
|
|
506
|
+
}
|
|
507
|
+
|
|
508
|
+
/* The last-resort position options for [data-floating-content]: when no side fits the whole
|
|
509
|
+
content, each side is re-tried with its block size capped to the side's space (minus the
|
|
510
|
+
engine's own margins), so the surface scrolls inside instead of overflowing the viewport. */
|
|
511
|
+
@position-try --bits-clamped {
|
|
512
|
+
max-block-size: calc(100% - var(--bits-floating-block-margins, 0px));
|
|
513
|
+
}
|
|
514
|
+
|
|
515
|
+
/* Native overlay anchor positioning — single source for the popover, tooltip, and
|
|
516
|
+
link-preview content surfaces. Tag the content element with `data-anchored`; side/align
|
|
517
|
+
come from `data-side` / `data-align`. Replaces the per-component <style> blocks that
|
|
518
|
+
each duplicated this. Tailwind has no anchor-positioning utilities, so this is raw CSS.
|
|
519
|
+
|
|
520
|
+
The whole block sits behind @supports: engines without anchor positioning (~18% 2026-07)
|
|
521
|
+
keep the UA popover default (fixed, inset 0, auto margins → centered on screen) instead of
|
|
522
|
+
an inset:auto mispositioned surface. TODO(widen): explicit anchor-name on the trigger +
|
|
523
|
+
position-anchor here would extend anchoring to Chrome 125–136, which lack the
|
|
524
|
+
showPopover({source}) implicit anchor (137+); needs per-instance names plumbed through the
|
|
525
|
+
trigger prop bags. */
|
|
526
|
+
@supports (anchor-name: --a) {
|
|
527
|
+
[data-anchored] {
|
|
528
|
+
position: fixed;
|
|
529
|
+
inset: auto;
|
|
530
|
+
margin: 0;
|
|
531
|
+
overflow: visible;
|
|
532
|
+
|
|
533
|
+
/* default (no data-side): above the trigger, centered */
|
|
534
|
+
bottom: anchor(top);
|
|
535
|
+
justify-self: anchor-center;
|
|
536
|
+
margin-bottom: 0.5rem;
|
|
537
|
+
position-try-fallbacks: flip-block;
|
|
538
|
+
}
|
|
539
|
+
|
|
540
|
+
[data-anchored][data-side='bottom'] {
|
|
541
|
+
bottom: auto;
|
|
542
|
+
top: anchor(bottom);
|
|
543
|
+
margin: 0.5rem 0 0;
|
|
544
|
+
}
|
|
545
|
+
[data-anchored][data-side='left'] {
|
|
546
|
+
bottom: auto;
|
|
547
|
+
right: anchor(left);
|
|
548
|
+
left: auto;
|
|
549
|
+
top: anchor(center);
|
|
550
|
+
justify-self: initial;
|
|
551
|
+
margin: 0 0.5rem 0 0;
|
|
552
|
+
}
|
|
553
|
+
[data-anchored][data-side='right'] {
|
|
554
|
+
bottom: auto;
|
|
555
|
+
left: anchor(right);
|
|
556
|
+
top: anchor(center);
|
|
557
|
+
justify-self: initial;
|
|
558
|
+
margin: 0 0 0 0.5rem;
|
|
559
|
+
}
|
|
560
|
+
|
|
561
|
+
[data-anchored][data-align='start'] {
|
|
562
|
+
justify-self: initial;
|
|
563
|
+
left: anchor(left);
|
|
564
|
+
}
|
|
565
|
+
[data-anchored][data-align='end'] {
|
|
566
|
+
justify-self: initial;
|
|
567
|
+
left: auto;
|
|
568
|
+
right: anchor(right);
|
|
569
|
+
}
|
|
570
|
+
}
|
|
571
|
+
|
|
572
|
+
/* An exiting anchored surface (still shown while its [data-state=closed] fade runs, hidden by
|
|
573
|
+
the deferred hidePopover) must not catch the pointer. Shared here, not restated per surface. */
|
|
574
|
+
[data-anchored][data-state='closed'] {
|
|
575
|
+
pointer-events: none;
|
|
576
|
+
}
|
|
577
|
+
|
|
578
|
+
/* Reserve the scrollbar gutter permanently (92% 2026-07): overlays that lock body scroll no
|
|
579
|
+
longer shift the layout, and body-scroll-lock's measurement branch becomes the fallback
|
|
580
|
+
for engines without support (Safari <18.2). Unlayered on purpose — wins over app resets. */
|
|
581
|
+
html {
|
|
582
|
+
scrollbar-gutter: stable;
|
|
583
|
+
}
|
|
584
|
+
|
|
585
|
+
/* Native modal surface — single source for the modal <dialog> adapters (Dialog.Content,
|
|
586
|
+
Sheet.Content). The skeleton (dialog/components/modal-surface.svelte) tags the element
|
|
587
|
+
with `data-modal-surface`. Replaces the per-adapter <style> copies of these rules. */
|
|
588
|
+
|
|
589
|
+
/* A closed <dialog> must stay hidden + non-interactive. Any display utility on the element
|
|
590
|
+
(Sheet's variant puts `flex` there) overrides the UA `dialog:not([open]){display:none}`,
|
|
591
|
+
so re-assert it unlayered (wins over layered Tailwind utilities). */
|
|
592
|
+
[data-modal-surface]:not([open]) {
|
|
593
|
+
display: none;
|
|
594
|
+
}
|
|
595
|
+
|
|
596
|
+
/* ::backdrop replaces the JS-rendered overlay <div> (was `bg-black/50`). Keyframe fade, not an
|
|
597
|
+
@starting-style / overlay / display transition — WebKit doesn't start those on top-layer
|
|
598
|
+
changes, which snapped the fade on iOS, and `overlay` is Chromium-only. The exit fade plays on
|
|
599
|
+
data-[state=closed] while the controller holds the dialog open, so it now runs in every engine
|
|
600
|
+
(it was Chromium-only before). Adapters match the fade to their own motion via
|
|
601
|
+
`--modal-backdrop-duration`. */
|
|
602
|
+
@keyframes modal-backdrop-fade-in {
|
|
603
|
+
from {
|
|
604
|
+
background-color: rgb(0 0 0 / 0);
|
|
605
|
+
}
|
|
606
|
+
}
|
|
607
|
+
@keyframes modal-backdrop-fade-out {
|
|
608
|
+
to {
|
|
609
|
+
background-color: rgb(0 0 0 / 0);
|
|
610
|
+
}
|
|
611
|
+
}
|
|
612
|
+
[data-modal-surface]::backdrop {
|
|
613
|
+
background-color: rgb(0 0 0 / 0.5);
|
|
614
|
+
}
|
|
615
|
+
[data-modal-surface][open][data-state='open']::backdrop {
|
|
616
|
+
animation: modal-backdrop-fade-in var(--modal-backdrop-duration, 200ms) ease;
|
|
617
|
+
}
|
|
618
|
+
[data-modal-surface][open][data-state='closed']::backdrop {
|
|
619
|
+
animation: modal-backdrop-fade-out var(--modal-backdrop-duration, 200ms) ease forwards;
|
|
620
|
+
}
|
|
621
|
+
|
|
622
|
+
/* LayerChart defaults for [data-slot=chart] — the static .lc-* overrides that shadcn-svelte
|
|
623
|
+
ships as ~30 arbitrary-variant classes on every chart-container instance. Kept here once
|
|
624
|
+
instead; new overrides from upstream chart pulls land in this block, not the container. */
|
|
625
|
+
[data-slot='chart'] .lc-root-container {
|
|
626
|
+
@apply w-full;
|
|
627
|
+
}
|
|
628
|
+
|
|
629
|
+
/* Stroke around dots/marks when hovering */
|
|
630
|
+
[data-slot='chart'] .lc-highlight-point {
|
|
631
|
+
@apply stroke-transparent opacity-100;
|
|
632
|
+
}
|
|
633
|
+
|
|
634
|
+
/* Default stroke color of lines */
|
|
635
|
+
[data-slot='chart'] .lc-line {
|
|
636
|
+
@apply stroke-border/50;
|
|
637
|
+
}
|
|
638
|
+
|
|
639
|
+
/* Hide the line intersecting the point when hovering */
|
|
640
|
+
[data-slot='chart'] .lc-highlight-line {
|
|
641
|
+
@apply stroke-0 opacity-100;
|
|
642
|
+
}
|
|
643
|
+
|
|
644
|
+
/* Hovering a point on a stacked series chart drops the opacity of the other series;
|
|
645
|
+
keep them fully visible */
|
|
646
|
+
[data-slot='chart'] .lc-area-path {
|
|
647
|
+
@apply opacity-100;
|
|
648
|
+
}
|
|
649
|
+
|
|
650
|
+
[data-slot='chart'] .lc-text {
|
|
651
|
+
@apply text-xs;
|
|
652
|
+
}
|
|
653
|
+
[data-slot='chart'] .lc-text-svg {
|
|
654
|
+
@apply overflow-visible;
|
|
655
|
+
}
|
|
656
|
+
|
|
657
|
+
/* No tick lines between the axis labels and the chart (saves disabling `tickMarks`
|
|
658
|
+
on the x/y axis of every chart) */
|
|
659
|
+
[data-slot='chart'] .lc-axis-tick {
|
|
660
|
+
@apply stroke-0;
|
|
661
|
+
}
|
|
662
|
+
|
|
663
|
+
/* No rule on the x/y axis: a grid line is already there and the rule renders after
|
|
664
|
+
the marks, overlapping them */
|
|
665
|
+
[data-slot='chart'] .lc-rule-x-line:not(.lc-grid-x-rule),
|
|
666
|
+
[data-slot='chart'] .lc-rule-y-line:not(.lc-grid-y-rule) {
|
|
667
|
+
@apply stroke-0;
|
|
668
|
+
}
|
|
669
|
+
|
|
670
|
+
[data-slot='chart'] .lc-grid-x-radial-line,
|
|
671
|
+
[data-slot='chart'] .lc-grid-x-radial-circle,
|
|
672
|
+
[data-slot='chart'] .lc-grid-y-radial-line,
|
|
673
|
+
[data-slot='chart'] .lc-grid-y-radial-circle {
|
|
674
|
+
@apply stroke-border;
|
|
675
|
+
}
|
|
676
|
+
|
|
677
|
+
/* Legend */
|
|
678
|
+
[data-slot='chart'] .lc-legend-swatch-button {
|
|
679
|
+
@apply items-center gap-1.5;
|
|
680
|
+
}
|
|
681
|
+
[data-slot='chart'] .lc-legend-swatch-group {
|
|
682
|
+
@apply items-center gap-4;
|
|
683
|
+
}
|
|
684
|
+
[data-slot='chart'] .lc-legend-swatch {
|
|
685
|
+
@apply size-2.5 rounded-xs;
|
|
686
|
+
}
|
|
687
|
+
|
|
688
|
+
/* Labels */
|
|
689
|
+
[data-slot='chart'] .lc-labels-text:not([fill]) {
|
|
690
|
+
@apply fill-foreground;
|
|
691
|
+
}
|
|
692
|
+
[data-slot='chart'] text {
|
|
693
|
+
@apply stroke-transparent;
|
|
694
|
+
}
|
|
695
|
+
|
|
696
|
+
/* Tick labels on the x/y axes */
|
|
697
|
+
[data-slot='chart'] .lc-axis-tick-label {
|
|
698
|
+
@apply fill-muted-foreground font-normal;
|
|
699
|
+
}
|
|
700
|
+
|
|
701
|
+
[data-slot='chart'] .lc-tooltip-rects-g,
|
|
702
|
+
[data-slot='chart'] .lc-layout-svg-g {
|
|
703
|
+
@apply fill-transparent;
|
|
704
|
+
}
|
|
705
|
+
|
|
706
|
+
/* Carousel edge treatment: a slide crossing the scroller's clip edge fades out/in instead of
|
|
707
|
+
hard-cutting its border at the corner. Scroll-driven (compositor, no JS); opacity only —
|
|
708
|
+
a transform here would skew the rect-based snap-offset measurements in carousel.svelte.
|
|
709
|
+
Engines without view() timelines keep the plain hard clip. Firefox: not shipped as of 2026-08
|
|
710
|
+
(flag: layout.css.scroll-driven-animations.enabled) — recheck ~mid-2027. */
|
|
711
|
+
@supports (animation-timeline: view()) {
|
|
712
|
+
[data-slot='carousel-content'] > [data-slot='carousel-item'] {
|
|
713
|
+
animation: carousel-edge-fade linear both;
|
|
714
|
+
animation-timeline: view(inline);
|
|
715
|
+
}
|
|
716
|
+
[data-slot='carousel-content'][data-orientation='vertical'] > [data-slot='carousel-item'] {
|
|
717
|
+
animation-timeline: view(block);
|
|
718
|
+
}
|
|
719
|
+
}
|
|
720
|
+
@keyframes carousel-edge-fade {
|
|
721
|
+
entry 0% {
|
|
722
|
+
opacity: 0.2;
|
|
723
|
+
}
|
|
724
|
+
entry 100% {
|
|
725
|
+
opacity: 1;
|
|
726
|
+
}
|
|
727
|
+
exit 0% {
|
|
728
|
+
opacity: 1;
|
|
729
|
+
}
|
|
730
|
+
exit 100% {
|
|
731
|
+
opacity: 0.2;
|
|
732
|
+
}
|
|
733
|
+
}
|