@winkintel/bootstrap-svelte 0.0.1
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.md +202 -0
- package/README.md +221 -0
- package/dist/Accordion/accordion-body.svelte +8 -0
- package/dist/Accordion/accordion-body.svelte.d.ts +4 -0
- package/dist/Accordion/accordion-button.svelte +25 -0
- package/dist/Accordion/accordion-button.svelte.d.ts +4 -0
- package/dist/Accordion/accordion-collapse.svelte +18 -0
- package/dist/Accordion/accordion-collapse.svelte.d.ts +4 -0
- package/dist/Accordion/accordion-header.svelte +8 -0
- package/dist/Accordion/accordion-header.svelte.d.ts +4 -0
- package/dist/Accordion/accordion-item.svelte +33 -0
- package/dist/Accordion/accordion-item.svelte.d.ts +4 -0
- package/dist/Accordion/accordion.svelte +65 -0
- package/dist/Accordion/accordion.svelte.d.ts +51 -0
- package/dist/Accordion/accordion.svelte.js +139 -0
- package/dist/Accordion/composition.d.ts +7 -0
- package/dist/Accordion/composition.js +6 -0
- package/dist/Accordion/index.d.ts +1 -0
- package/dist/Accordion/index.js +1 -0
- package/dist/Accordion/types.d.ts +15 -0
- package/dist/Accordion/types.js +1 -0
- package/dist/Alert/alert.svelte +73 -0
- package/dist/Alert/alert.svelte.d.ts +46 -0
- package/dist/Alert/index.d.ts +2 -0
- package/dist/Alert/index.js +2 -0
- package/dist/Alert/types.d.ts +11 -0
- package/dist/Alert/types.js +1 -0
- package/dist/Badge/badge.svelte +42 -0
- package/dist/Badge/badge.svelte.d.ts +36 -0
- package/dist/Badge/index.d.ts +2 -0
- package/dist/Badge/index.js +2 -0
- package/dist/Badge/types.d.ts +28 -0
- package/dist/Badge/types.js +24 -0
- package/dist/Breadcrumb/breadcrumb-item.svelte +66 -0
- package/dist/Breadcrumb/breadcrumb-item.svelte.d.ts +30 -0
- package/dist/Breadcrumb/breadcrumb.svelte +57 -0
- package/dist/Breadcrumb/breadcrumb.svelte.d.ts +34 -0
- package/dist/Breadcrumb/breadcrumb.svelte.js +41 -0
- package/dist/Breadcrumb/composition.d.ts +3 -0
- package/dist/Breadcrumb/composition.js +2 -0
- package/dist/Breadcrumb/index.d.ts +1 -0
- package/dist/Breadcrumb/index.js +1 -0
- package/dist/Breadcrumb/types.d.ts +9 -0
- package/dist/Breadcrumb/types.js +1 -0
- package/dist/BreakpointListener/breakpoint-listener.svelte +54 -0
- package/dist/BreakpointListener/breakpoint-listener.svelte.d.ts +4 -0
- package/dist/BreakpointListener/index.d.ts +2 -0
- package/dist/BreakpointListener/index.js +2 -0
- package/dist/BreakpointListener/types.d.ts +30 -0
- package/dist/BreakpointListener/types.js +20 -0
- package/dist/Button/button.svelte +87 -0
- package/dist/Button/button.svelte.d.ts +59 -0
- package/dist/Button/index.d.ts +2 -0
- package/dist/Button/index.js +2 -0
- package/dist/Button/types.d.ts +26 -0
- package/dist/Button/types.js +1 -0
- package/dist/ButtonGroup/button-check.svelte +70 -0
- package/dist/ButtonGroup/button-check.svelte.d.ts +35 -0
- package/dist/ButtonGroup/button-group.svelte +51 -0
- package/dist/ButtonGroup/button-group.svelte.d.ts +43 -0
- package/dist/ButtonGroup/button-toolbar.svelte +36 -0
- package/dist/ButtonGroup/button-toolbar.svelte.d.ts +28 -0
- package/dist/ButtonGroup/index.d.ts +4 -0
- package/dist/ButtonGroup/index.js +4 -0
- package/dist/ButtonGroup/types.d.ts +21 -0
- package/dist/ButtonGroup/types.js +1 -0
- package/dist/Card/card-body.svelte +10 -0
- package/dist/Card/card-body.svelte.d.ts +3 -0
- package/dist/Card/card-footer.svelte +10 -0
- package/dist/Card/card-footer.svelte.d.ts +3 -0
- package/dist/Card/card-group.svelte +10 -0
- package/dist/Card/card-group.svelte.d.ts +3 -0
- package/dist/Card/card-header.svelte +10 -0
- package/dist/Card/card-header.svelte.d.ts +3 -0
- package/dist/Card/card-img-overlay.svelte +10 -0
- package/dist/Card/card-img-overlay.svelte.d.ts +3 -0
- package/dist/Card/card-img.svelte +12 -0
- package/dist/Card/card-img.svelte.d.ts +4 -0
- package/dist/Card/card-link.svelte +10 -0
- package/dist/Card/card-link.svelte.d.ts +4 -0
- package/dist/Card/card-subtitle.svelte +11 -0
- package/dist/Card/card-subtitle.svelte.d.ts +4 -0
- package/dist/Card/card-text.svelte +10 -0
- package/dist/Card/card-text.svelte.d.ts +3 -0
- package/dist/Card/card-title.svelte +11 -0
- package/dist/Card/card-title.svelte.d.ts +4 -0
- package/dist/Card/card.svelte +45 -0
- package/dist/Card/card.svelte.d.ts +38 -0
- package/dist/Card/composition.d.ts +12 -0
- package/dist/Card/composition.js +11 -0
- package/dist/Card/index.d.ts +1 -0
- package/dist/Card/index.js +1 -0
- package/dist/Card/types.d.ts +22 -0
- package/dist/Card/types.js +1 -0
- package/dist/Carousel/carousel-caption.svelte +30 -0
- package/dist/Carousel/carousel-caption.svelte.d.ts +22 -0
- package/dist/Carousel/carousel-control-next.svelte +35 -0
- package/dist/Carousel/carousel-control-next.svelte.d.ts +21 -0
- package/dist/Carousel/carousel-control-prev.svelte +35 -0
- package/dist/Carousel/carousel-control-prev.svelte.d.ts +21 -0
- package/dist/Carousel/carousel-indicator-button.svelte +41 -0
- package/dist/Carousel/carousel-indicator-button.svelte.d.ts +21 -0
- package/dist/Carousel/carousel-indicators.svelte +33 -0
- package/dist/Carousel/carousel-indicators.svelte.d.ts +25 -0
- package/dist/Carousel/carousel-inner.svelte +30 -0
- package/dist/Carousel/carousel-inner.svelte.d.ts +22 -0
- package/dist/Carousel/carousel-item.svelte +138 -0
- package/dist/Carousel/carousel-item.svelte.d.ts +28 -0
- package/dist/Carousel/carousel.svelte +140 -0
- package/dist/Carousel/carousel.svelte.d.ts +46 -0
- package/dist/Carousel/carousel.svelte.js +551 -0
- package/dist/Carousel/composition.d.ts +9 -0
- package/dist/Carousel/composition.js +8 -0
- package/dist/Carousel/index.d.ts +1 -0
- package/dist/Carousel/index.js +1 -0
- package/dist/Carousel/types.d.ts +74 -0
- package/dist/Carousel/types.js +1 -0
- package/dist/CloseButton/close-button.svelte +32 -0
- package/dist/CloseButton/close-button.svelte.d.ts +29 -0
- package/dist/CloseButton/index.d.ts +2 -0
- package/dist/CloseButton/index.js +2 -0
- package/dist/CloseButton/types.d.ts +6 -0
- package/dist/CloseButton/types.js +1 -0
- package/dist/Col/col.svelte +133 -0
- package/dist/Col/col.svelte.d.ts +60 -0
- package/dist/Col/index.d.ts +2 -0
- package/dist/Col/index.js +2 -0
- package/dist/Col/types.d.ts +30 -0
- package/dist/Col/types.js +1 -0
- package/dist/Collapse/collapse-aria-attachment.svelte.d.ts +3 -0
- package/dist/Collapse/collapse-aria-attachment.svelte.js +32 -0
- package/dist/Collapse/collapse.svelte +63 -0
- package/dist/Collapse/collapse.svelte.d.ts +45 -0
- package/dist/Collapse/index.d.ts +3 -0
- package/dist/Collapse/index.js +3 -0
- package/dist/Collapse/transition.d.ts +5 -0
- package/dist/Collapse/transition.js +75 -0
- package/dist/Collapse/types.d.ts +18 -0
- package/dist/Collapse/types.js +1 -0
- package/dist/Container/container.svelte +46 -0
- package/dist/Container/container.svelte.d.ts +36 -0
- package/dist/Container/index.d.ts +2 -0
- package/dist/Container/index.js +2 -0
- package/dist/Container/types.d.ts +8 -0
- package/dist/Container/types.js +1 -0
- package/dist/Dropdown/composition.d.ts +8 -0
- package/dist/Dropdown/composition.js +7 -0
- package/dist/Dropdown/dropdown-divider.svelte +23 -0
- package/dist/Dropdown/dropdown-divider.svelte.d.ts +18 -0
- package/dist/Dropdown/dropdown-header.svelte +27 -0
- package/dist/Dropdown/dropdown-header.svelte.d.ts +19 -0
- package/dist/Dropdown/dropdown-item-text.svelte +26 -0
- package/dist/Dropdown/dropdown-item-text.svelte.d.ts +18 -0
- package/dist/Dropdown/dropdown-item.svelte +86 -0
- package/dist/Dropdown/dropdown-item.svelte.d.ts +24 -0
- package/dist/Dropdown/dropdown-menu.svelte +82 -0
- package/dist/Dropdown/dropdown-menu.svelte.d.ts +27 -0
- package/dist/Dropdown/dropdown-toggle.svelte +67 -0
- package/dist/Dropdown/dropdown-toggle.svelte.d.ts +24 -0
- package/dist/Dropdown/dropdown.svelte +106 -0
- package/dist/Dropdown/dropdown.svelte.d.ts +34 -0
- package/dist/Dropdown/dropdown.svelte.js +435 -0
- package/dist/Dropdown/index.d.ts +1 -0
- package/dist/Dropdown/index.js +1 -0
- package/dist/Dropdown/types.d.ts +47 -0
- package/dist/Dropdown/types.js +1 -0
- package/dist/Form/composition.d.ts +34 -0
- package/dist/Form/composition.js +33 -0
- package/dist/Form/form-check-input.svelte +92 -0
- package/dist/Form/form-check-input.svelte.d.ts +48 -0
- package/dist/Form/form-check-label.svelte +26 -0
- package/dist/Form/form-check-label.svelte.d.ts +21 -0
- package/dist/Form/form-check.svelte +55 -0
- package/dist/Form/form-check.svelte.d.ts +50 -0
- package/dist/Form/form-color-input.svelte +54 -0
- package/dist/Form/form-color-input.svelte.d.ts +30 -0
- package/dist/Form/form-date-input.svelte +64 -0
- package/dist/Form/form-date-input.svelte.d.ts +46 -0
- package/dist/Form/form-datetime-local-input.svelte +60 -0
- package/dist/Form/form-datetime-local-input.svelte.d.ts +45 -0
- package/dist/Form/form-email-input.svelte +64 -0
- package/dist/Form/form-email-input.svelte.d.ts +46 -0
- package/dist/Form/form-feedback.svelte +36 -0
- package/dist/Form/form-feedback.svelte.d.ts +26 -0
- package/dist/Form/form-file-input.svelte +43 -0
- package/dist/Form/form-file-input.svelte.d.ts +30 -0
- package/dist/Form/form-floating.svelte +44 -0
- package/dist/Form/form-floating.svelte.d.ts +38 -0
- package/dist/Form/form-helper-text.svelte +35 -0
- package/dist/Form/form-helper-text.svelte.d.ts +29 -0
- package/dist/Form/form-hidden-input.svelte +18 -0
- package/dist/Form/form-hidden-input.svelte.d.ts +16 -0
- package/dist/Form/form-image-input.svelte +30 -0
- package/dist/Form/form-image-input.svelte.d.ts +26 -0
- package/dist/Form/form-input-group-text.svelte +47 -0
- package/dist/Form/form-input-group-text.svelte.d.ts +42 -0
- package/dist/Form/form-input-group.svelte +52 -0
- package/dist/Form/form-input-group.svelte.d.ts +43 -0
- package/dist/Form/form-input-label.svelte +33 -0
- package/dist/Form/form-input-label.svelte.d.ts +28 -0
- package/dist/Form/form-month-input.svelte +63 -0
- package/dist/Form/form-month-input.svelte.d.ts +48 -0
- package/dist/Form/form-number-input.svelte +62 -0
- package/dist/Form/form-number-input.svelte.d.ts +47 -0
- package/dist/Form/form-password-input.svelte +60 -0
- package/dist/Form/form-password-input.svelte.d.ts +41 -0
- package/dist/Form/form-radio-input.svelte +47 -0
- package/dist/Form/form-radio-input.svelte.d.ts +41 -0
- package/dist/Form/form-radio-label.svelte +41 -0
- package/dist/Form/form-radio-label.svelte.d.ts +35 -0
- package/dist/Form/form-range-input.svelte +43 -0
- package/dist/Form/form-range-input.svelte.d.ts +39 -0
- package/dist/Form/form-search-input.svelte +63 -0
- package/dist/Form/form-search-input.svelte.d.ts +45 -0
- package/dist/Form/form-select.svelte +85 -0
- package/dist/Form/form-select.svelte.d.ts +59 -0
- package/dist/Form/form-switch-input.svelte +54 -0
- package/dist/Form/form-switch-input.svelte.d.ts +41 -0
- package/dist/Form/form-switch-label.svelte +25 -0
- package/dist/Form/form-switch-label.svelte.d.ts +19 -0
- package/dist/Form/form-telephone-input.svelte +129 -0
- package/dist/Form/form-telephone-input.svelte.d.ts +55 -0
- package/dist/Form/form-text-area.svelte +57 -0
- package/dist/Form/form-text-area.svelte.d.ts +38 -0
- package/dist/Form/form-text-input.svelte +55 -0
- package/dist/Form/form-text-input.svelte.d.ts +37 -0
- package/dist/Form/form-time-input.svelte +62 -0
- package/dist/Form/form-time-input.svelte.d.ts +47 -0
- package/dist/Form/form-url-input.svelte +60 -0
- package/dist/Form/form-url-input.svelte.d.ts +45 -0
- package/dist/Form/form-week-Input.svelte +62 -0
- package/dist/Form/form-week-Input.svelte.d.ts +47 -0
- package/dist/Form/form.svelte +37 -0
- package/dist/Form/form.svelte.d.ts +23 -0
- package/dist/Form/index.d.ts +1 -0
- package/dist/Form/index.js +1 -0
- package/dist/Form/types.d.ts +168 -0
- package/dist/Form/types.js +1 -0
- package/dist/ListGroup/composition.d.ts +4 -0
- package/dist/ListGroup/composition.js +3 -0
- package/dist/ListGroup/index.d.ts +1 -0
- package/dist/ListGroup/index.js +1 -0
- package/dist/ListGroup/list-group-item-action.svelte +50 -0
- package/dist/ListGroup/list-group-item-action.svelte.d.ts +23 -0
- package/dist/ListGroup/list-group-item.svelte +58 -0
- package/dist/ListGroup/list-group-item.svelte.d.ts +51 -0
- package/dist/ListGroup/list-group.svelte +83 -0
- package/dist/ListGroup/list-group.svelte.d.ts +68 -0
- package/dist/ListGroup/types.d.ts +20 -0
- package/dist/ListGroup/types.js +1 -0
- package/dist/Modal/composition.d.ts +8 -0
- package/dist/Modal/composition.js +7 -0
- package/dist/Modal/index.d.ts +1 -0
- package/dist/Modal/index.js +1 -0
- package/dist/Modal/modal-body.svelte +27 -0
- package/dist/Modal/modal-body.svelte.d.ts +19 -0
- package/dist/Modal/modal-content.svelte +35 -0
- package/dist/Modal/modal-content.svelte.d.ts +27 -0
- package/dist/Modal/modal-dialog.svelte +65 -0
- package/dist/Modal/modal-dialog.svelte.d.ts +52 -0
- package/dist/Modal/modal-footer.svelte +28 -0
- package/dist/Modal/modal-footer.svelte.d.ts +20 -0
- package/dist/Modal/modal-header.svelte +50 -0
- package/dist/Modal/modal-header.svelte.d.ts +29 -0
- package/dist/Modal/modal-title.svelte +45 -0
- package/dist/Modal/modal-title.svelte.d.ts +26 -0
- package/dist/Modal/modal.svelte +233 -0
- package/dist/Modal/modal.svelte.d.ts +52 -0
- package/dist/Modal/modal.svelte.js +86 -0
- package/dist/Modal/types.d.ts +31 -0
- package/dist/Modal/types.js +1 -0
- package/dist/Nav/composition.d.ts +4 -0
- package/dist/Nav/composition.js +3 -0
- package/dist/Nav/index.d.ts +1 -0
- package/dist/Nav/index.js +1 -0
- package/dist/Nav/nav-item.svelte +25 -0
- package/dist/Nav/nav-item.svelte.d.ts +18 -0
- package/dist/Nav/nav-link.svelte +77 -0
- package/dist/Nav/nav-link.svelte.d.ts +22 -0
- package/dist/Nav/nav.svelte +93 -0
- package/dist/Nav/nav.svelte.d.ts +56 -0
- package/dist/Nav/types.d.ts +26 -0
- package/dist/Nav/types.js +1 -0
- package/dist/Navbar/composition.d.ts +8 -0
- package/dist/Navbar/composition.js +7 -0
- package/dist/Navbar/index.d.ts +1 -0
- package/dist/Navbar/index.js +1 -0
- package/dist/Navbar/navbar-brand.svelte +55 -0
- package/dist/Navbar/navbar-brand.svelte.d.ts +48 -0
- package/dist/Navbar/navbar-collapse.svelte +76 -0
- package/dist/Navbar/navbar-collapse.svelte.d.ts +55 -0
- package/dist/Navbar/navbar-nav.svelte +66 -0
- package/dist/Navbar/navbar-nav.svelte.d.ts +53 -0
- package/dist/Navbar/navbar-text.svelte +36 -0
- package/dist/Navbar/navbar-text.svelte.d.ts +28 -0
- package/dist/Navbar/navbar-toggler-icon.svelte +34 -0
- package/dist/Navbar/navbar-toggler-icon.svelte.d.ts +28 -0
- package/dist/Navbar/navbar-toggler.svelte +75 -0
- package/dist/Navbar/navbar-toggler.svelte.d.ts +48 -0
- package/dist/Navbar/navbar.svelte +116 -0
- package/dist/Navbar/navbar.svelte.d.ts +88 -0
- package/dist/Navbar/types.d.ts +23 -0
- package/dist/Navbar/types.js +1 -0
- package/dist/Offcanvas/composition.d.ts +5 -0
- package/dist/Offcanvas/composition.js +4 -0
- package/dist/Offcanvas/index.d.ts +1 -0
- package/dist/Offcanvas/index.js +1 -0
- package/dist/Offcanvas/offcanvas-body.svelte +25 -0
- package/dist/Offcanvas/offcanvas-body.svelte.d.ts +19 -0
- package/dist/Offcanvas/offcanvas-header.svelte +39 -0
- package/dist/Offcanvas/offcanvas-header.svelte.d.ts +20 -0
- package/dist/Offcanvas/offcanvas-title.svelte +31 -0
- package/dist/Offcanvas/offcanvas-title.svelte.d.ts +25 -0
- package/dist/Offcanvas/offcanvas.svelte +220 -0
- package/dist/Offcanvas/offcanvas.svelte.d.ts +61 -0
- package/dist/Offcanvas/types.d.ts +25 -0
- package/dist/Offcanvas/types.js +1 -0
- package/dist/Pagination/composition.d.ts +4 -0
- package/dist/Pagination/composition.js +3 -0
- package/dist/Pagination/index.d.ts +1 -0
- package/dist/Pagination/index.js +1 -0
- package/dist/Pagination/pagination-item.svelte +81 -0
- package/dist/Pagination/pagination-item.svelte.d.ts +35 -0
- package/dist/Pagination/pagination-link.svelte +45 -0
- package/dist/Pagination/pagination-link.svelte.d.ts +25 -0
- package/dist/Pagination/pagination.svelte +60 -0
- package/dist/Pagination/pagination.svelte.d.ts +37 -0
- package/dist/Pagination/pagination.svelte.js +117 -0
- package/dist/Pagination/types.d.ts +19 -0
- package/dist/Pagination/types.js +1 -0
- package/dist/Placeholder/composition.d.ts +3 -0
- package/dist/Placeholder/composition.js +2 -0
- package/dist/Placeholder/index.d.ts +1 -0
- package/dist/Placeholder/index.js +1 -0
- package/dist/Placeholder/placeholder-item.svelte +53 -0
- package/dist/Placeholder/placeholder-item.svelte.d.ts +48 -0
- package/dist/Placeholder/placeholder.svelte +37 -0
- package/dist/Placeholder/placeholder.svelte.d.ts +32 -0
- package/dist/Placeholder/types.d.ts +12 -0
- package/dist/Placeholder/types.js +1 -0
- package/dist/Popover/composition.d.ts +4 -0
- package/dist/Popover/composition.js +3 -0
- package/dist/Popover/index.d.ts +1 -0
- package/dist/Popover/index.js +1 -0
- package/dist/Popover/popover-body.svelte +10 -0
- package/dist/Popover/popover-body.svelte.d.ts +3 -0
- package/dist/Popover/popover-header.svelte +11 -0
- package/dist/Popover/popover-header.svelte.d.ts +4 -0
- package/dist/Popover/popover.svelte +74 -0
- package/dist/Popover/popover.svelte.d.ts +53 -0
- package/dist/Popover/types.d.ts +20 -0
- package/dist/Popover/types.js +1 -0
- package/dist/Portal/index.d.ts +2 -0
- package/dist/Portal/index.js +2 -0
- package/dist/Portal/portal-host.svelte +5 -0
- package/dist/Portal/portal-host.svelte.d.ts +7 -0
- package/dist/Portal/portal.svelte +69 -0
- package/dist/Portal/portal.svelte.d.ts +32 -0
- package/dist/Portal/types.d.ts +6 -0
- package/dist/Portal/types.js +1 -0
- package/dist/Progress/index.d.ts +3 -0
- package/dist/Progress/index.js +3 -0
- package/dist/Progress/progress-bar.svelte +101 -0
- package/dist/Progress/progress-bar.svelte.d.ts +39 -0
- package/dist/Progress/progress-stacked.svelte +34 -0
- package/dist/Progress/progress-stacked.svelte.d.ts +24 -0
- package/dist/Progress/progress.svelte.d.ts +31 -0
- package/dist/Progress/progress.svelte.js +52 -0
- package/dist/Progress/types.d.ts +40 -0
- package/dist/Progress/types.js +1 -0
- package/dist/Row/index.d.ts +2 -0
- package/dist/Row/index.js +2 -0
- package/dist/Row/row.svelte +75 -0
- package/dist/Row/row.svelte.d.ts +46 -0
- package/dist/Row/types.d.ts +12 -0
- package/dist/Row/types.js +1 -0
- package/dist/Scrollspy/index.d.ts +2 -0
- package/dist/Scrollspy/index.js +2 -0
- package/dist/Scrollspy/scrollspy-attachment.svelte.d.ts +10 -0
- package/dist/Scrollspy/scrollspy-attachment.svelte.js +122 -0
- package/dist/Scrollspy/types.d.ts +9 -0
- package/dist/Scrollspy/types.js +1 -0
- package/dist/Spinner/index.d.ts +2 -0
- package/dist/Spinner/index.js +2 -0
- package/dist/Spinner/spinner.svelte +77 -0
- package/dist/Spinner/spinner.svelte.d.ts +70 -0
- package/dist/Spinner/types.d.ts +9 -0
- package/dist/Spinner/types.js +1 -0
- package/dist/Tab/composition.d.ts +5 -0
- package/dist/Tab/composition.js +4 -0
- package/dist/Tab/index.d.ts +1 -0
- package/dist/Tab/index.js +1 -0
- package/dist/Tab/tab-content.svelte +29 -0
- package/dist/Tab/tab-content.svelte.d.ts +23 -0
- package/dist/Tab/tab-nav-link.svelte +69 -0
- package/dist/Tab/tab-nav-link.svelte.d.ts +22 -0
- package/dist/Tab/tab-pane.svelte +72 -0
- package/dist/Tab/tab-pane.svelte.d.ts +26 -0
- package/dist/Tab/tab.svelte +63 -0
- package/dist/Tab/tab.svelte.d.ts +50 -0
- package/dist/Tab/types.d.ts +18 -0
- package/dist/Tab/types.js +1 -0
- package/dist/Table/composition.d.ts +9 -0
- package/dist/Table/composition.js +8 -0
- package/dist/Table/index.d.ts +1 -0
- package/dist/Table/index.js +1 -0
- package/dist/Table/table-body.svelte +30 -0
- package/dist/Table/table-body.svelte.d.ts +23 -0
- package/dist/Table/table-caption.svelte +20 -0
- package/dist/Table/table-caption.svelte.d.ts +15 -0
- package/dist/Table/table-data.svelte +30 -0
- package/dist/Table/table-data.svelte.d.ts +19 -0
- package/dist/Table/table-foot.svelte +31 -0
- package/dist/Table/table-foot.svelte.d.ts +24 -0
- package/dist/Table/table-head.svelte +31 -0
- package/dist/Table/table-head.svelte.d.ts +24 -0
- package/dist/Table/table-header.svelte +38 -0
- package/dist/Table/table-header.svelte.d.ts +17 -0
- package/dist/Table/table-row.svelte +34 -0
- package/dist/Table/table-row.svelte.d.ts +23 -0
- package/dist/Table/table.svelte +154 -0
- package/dist/Table/table.svelte.d.ts +98 -0
- package/dist/Table/table.svelte.js +92 -0
- package/dist/Table/types.d.ts +43 -0
- package/dist/Table/types.js +1 -0
- package/dist/Toast/composition.d.ts +5 -0
- package/dist/Toast/composition.js +4 -0
- package/dist/Toast/index.d.ts +1 -0
- package/dist/Toast/index.js +1 -0
- package/dist/Toast/toast-body.svelte +26 -0
- package/dist/Toast/toast-body.svelte.d.ts +18 -0
- package/dist/Toast/toast-container.svelte +44 -0
- package/dist/Toast/toast-container.svelte.d.ts +36 -0
- package/dist/Toast/toast-header.svelte +56 -0
- package/dist/Toast/toast-header.svelte.d.ts +36 -0
- package/dist/Toast/toast.svelte +112 -0
- package/dist/Toast/toast.svelte.d.ts +54 -0
- package/dist/Toast/toast.svelte.js +83 -0
- package/dist/Toast/types.d.ts +53 -0
- package/dist/Toast/types.js +19 -0
- package/dist/Tooltip/composition.d.ts +3 -0
- package/dist/Tooltip/composition.js +2 -0
- package/dist/Tooltip/index.d.ts +1 -0
- package/dist/Tooltip/index.js +1 -0
- package/dist/Tooltip/tooltip-inner.svelte +10 -0
- package/dist/Tooltip/tooltip-inner.svelte.d.ts +4 -0
- package/dist/Tooltip/tooltip.svelte +213 -0
- package/dist/Tooltip/tooltip.svelte.d.ts +54 -0
- package/dist/Tooltip/types.d.ts +43 -0
- package/dist/Tooltip/types.js +1 -0
- package/dist/common/context.d.ts +47 -0
- package/dist/common/context.js +70 -0
- package/dist/common/css.d.ts +71 -0
- package/dist/common/css.js +133 -0
- package/dist/common/dom.d.ts +51 -0
- package/dist/common/dom.js +98 -0
- package/dist/common/index.d.ts +6 -0
- package/dist/common/index.js +5 -0
- package/dist/common/nav-tab.svelte.d.ts +88 -0
- package/dist/common/nav-tab.svelte.js +188 -0
- package/dist/common/navbar-offcanvas.svelte.d.ts +101 -0
- package/dist/common/navbar-offcanvas.svelte.js +228 -0
- package/dist/common/noop.d.ts +4 -0
- package/dist/common/noop.js +4 -0
- package/dist/common/scrollbar.d.ts +20 -0
- package/dist/common/scrollbar.js +53 -0
- package/dist/common/types.d.ts +143 -0
- package/dist/common/types.js +40 -0
- package/dist/index.d.ts +33 -0
- package/dist/index.js +33 -0
- package/package.json +105 -0
|
@@ -0,0 +1,83 @@
|
|
|
1
|
+
import { Context } from '../common/index.js';
|
|
2
|
+
/**
|
|
3
|
+
* ToastRootState is the state of the Toast component.
|
|
4
|
+
* It is used to manage the state of the Toast and its children.
|
|
5
|
+
*/
|
|
6
|
+
export class ToastRootState {
|
|
7
|
+
props;
|
|
8
|
+
// Default values for toast configuration
|
|
9
|
+
static DELAY_DEFAULT = 5000;
|
|
10
|
+
static DO_AUTOHIDE_DEFAULT = true;
|
|
11
|
+
static IS_SHOWN_DEFAULT = false;
|
|
12
|
+
static USE_FADE_DEFAULT = true;
|
|
13
|
+
// Using private field with getter to prevent external mutation without using the toggle method
|
|
14
|
+
#isShown = $state(ToastRootState.IS_SHOWN_DEFAULT);
|
|
15
|
+
constructor(props) {
|
|
16
|
+
this.props = props;
|
|
17
|
+
this.#isShown = this.props.isShown ?? ToastRootState.IS_SHOWN_DEFAULT;
|
|
18
|
+
}
|
|
19
|
+
get isShown() {
|
|
20
|
+
return this.#isShown;
|
|
21
|
+
}
|
|
22
|
+
/**
|
|
23
|
+
* Toggles the visibility state of the toast
|
|
24
|
+
* This is the only way to change the isShown state externally
|
|
25
|
+
*/
|
|
26
|
+
toggleIsShown() {
|
|
27
|
+
this.#isShown = !this.#isShown;
|
|
28
|
+
}
|
|
29
|
+
}
|
|
30
|
+
/**
|
|
31
|
+
* ToastHeaderState is the state of the Toast.Header component.
|
|
32
|
+
* It is used to manage the state of the Toast.Header and its children.
|
|
33
|
+
*/
|
|
34
|
+
export class ToastHeaderState {
|
|
35
|
+
props;
|
|
36
|
+
root;
|
|
37
|
+
static IS_DISMISSIBLE_DEFAULT = true;
|
|
38
|
+
/**
|
|
39
|
+
* Derived state that depends on parent toast's visibility
|
|
40
|
+
* When the toast root's visibility changes, this will automatically update
|
|
41
|
+
*/
|
|
42
|
+
isShown = $derived.by(() => this.root.isShown);
|
|
43
|
+
// Controls whether the close button is displayed in the header
|
|
44
|
+
isDismissible = $state(ToastHeaderState.IS_DISMISSIBLE_DEFAULT);
|
|
45
|
+
constructor(props, root) {
|
|
46
|
+
this.props = props;
|
|
47
|
+
this.root = root;
|
|
48
|
+
this.isDismissible = this.props.isDismissible ?? ToastHeaderState.IS_DISMISSIBLE_DEFAULT;
|
|
49
|
+
}
|
|
50
|
+
/**
|
|
51
|
+
* Event handler for the close button
|
|
52
|
+
* Delegates to the parent toast's toggle method to maintain a single source of truth
|
|
53
|
+
*/
|
|
54
|
+
onclick() {
|
|
55
|
+
this.root.toggleIsShown();
|
|
56
|
+
}
|
|
57
|
+
}
|
|
58
|
+
/**
|
|
59
|
+
* Context for sharing toast state across component hierarchy
|
|
60
|
+
* Uses a unique key to prevent collisions with other contexts
|
|
61
|
+
*/
|
|
62
|
+
const ToastRootContext = new Context('toast-root');
|
|
63
|
+
/**
|
|
64
|
+
* Creates a new ToastRootState and sets it in the context.
|
|
65
|
+
* @param props The props of the Toast component.
|
|
66
|
+
* @returns The created ToastRootState.
|
|
67
|
+
*/
|
|
68
|
+
export function initToastRootState(props) {
|
|
69
|
+
const rootState = new ToastRootState(props);
|
|
70
|
+
return ToastRootContext.set(rootState);
|
|
71
|
+
}
|
|
72
|
+
/**
|
|
73
|
+
* Creates a new ToastHeaderState and sets it in the context.
|
|
74
|
+
* @param props The props of the Toast.Header component.
|
|
75
|
+
* @returns The created ToastHeaderState.
|
|
76
|
+
*/
|
|
77
|
+
export function initToastHeaderState(props) {
|
|
78
|
+
if (!ToastRootContext.exists()) {
|
|
79
|
+
throw new Error('Toast.Header requires Toast.Root context. Please ensure Toast.Root is initialized before Toast.Header.');
|
|
80
|
+
}
|
|
81
|
+
const rootState = ToastRootContext.get();
|
|
82
|
+
return new ToastHeaderState(props, rootState);
|
|
83
|
+
}
|
|
@@ -0,0 +1,53 @@
|
|
|
1
|
+
import type { DivElement } from '../common/types.js';
|
|
2
|
+
/**
|
|
3
|
+
* Specifies the position of toasts within a container
|
|
4
|
+
*
|
|
5
|
+
* The naming convention follows a two-part structure:
|
|
6
|
+
* - Vertical position: top, middle, bottom
|
|
7
|
+
* - Horizontal position: start, center, end (respects RTL/LTR direction)
|
|
8
|
+
*/
|
|
9
|
+
export type ToastPlacement = 'top-start' | 'top-center' | 'top-end' | 'middle-start' | 'middle-center' | 'middle-end' | 'bottom-start' | 'bottom-center' | 'bottom-end';
|
|
10
|
+
/**
|
|
11
|
+
* Transforms the placement type into a Bootstrap class string.
|
|
12
|
+
* @param placement the placement of the toast
|
|
13
|
+
* @returns the corresponding Bootstrap class string
|
|
14
|
+
*/
|
|
15
|
+
export declare const transformToastPlacement: (placement: ToastPlacement) => string;
|
|
16
|
+
/**
|
|
17
|
+
* Props for the main Toast component
|
|
18
|
+
*
|
|
19
|
+
* Controls visibility, animation, timing, and lifecycle events
|
|
20
|
+
*/
|
|
21
|
+
export type ToastRootProps = DivElement & {
|
|
22
|
+
delay?: number;
|
|
23
|
+
doAutohide?: boolean;
|
|
24
|
+
isShown?: boolean;
|
|
25
|
+
onHide?: EventListener;
|
|
26
|
+
onHidden?: EventListener;
|
|
27
|
+
onShow?: EventListener;
|
|
28
|
+
onShown?: EventListener;
|
|
29
|
+
useFade?: boolean;
|
|
30
|
+
};
|
|
31
|
+
/**
|
|
32
|
+
* Props for the Toast header section
|
|
33
|
+
*
|
|
34
|
+
* Contains title and optional close button
|
|
35
|
+
*/
|
|
36
|
+
export type ToastHeaderProps = DivElement & {
|
|
37
|
+
isDismissible?: boolean;
|
|
38
|
+
};
|
|
39
|
+
/**
|
|
40
|
+
* Props for the Toast body content
|
|
41
|
+
*
|
|
42
|
+
* Contains the main toast message
|
|
43
|
+
*/
|
|
44
|
+
export type ToastBodyProps = DivElement;
|
|
45
|
+
/**
|
|
46
|
+
* Props for the Toast container component
|
|
47
|
+
*
|
|
48
|
+
* Manages multiple toasts with positioning control
|
|
49
|
+
*/
|
|
50
|
+
export type ToastContainerProps = DivElement & {
|
|
51
|
+
isFixed?: boolean;
|
|
52
|
+
placement?: ToastPlacement;
|
|
53
|
+
};
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Transforms the placement type into a Bootstrap class string.
|
|
3
|
+
* @param placement the placement of the toast
|
|
4
|
+
* @returns the corresponding Bootstrap class string
|
|
5
|
+
*/
|
|
6
|
+
export const transformToastPlacement = (placement) => {
|
|
7
|
+
const placementTypeToClassMap = {
|
|
8
|
+
'top-start': 'top-0 start-0',
|
|
9
|
+
'top-center': 'top-0 start-50 translate-middle-x',
|
|
10
|
+
'top-end': 'top-0 end-0',
|
|
11
|
+
'middle-start': 'top-50 start-0 translate-middle-y',
|
|
12
|
+
'middle-center': 'top-50 start-50 translate-middle',
|
|
13
|
+
'middle-end': 'top-50 end-0 translate-middle-y',
|
|
14
|
+
'bottom-start': 'bottom-0 start-0',
|
|
15
|
+
'bottom-center': 'bottom-0 start-50 translate-middle-x',
|
|
16
|
+
'bottom-end': 'bottom-0 end-0'
|
|
17
|
+
};
|
|
18
|
+
return placementTypeToClassMap[placement];
|
|
19
|
+
};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export * as Tooltip from './composition.js';
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export * as Tooltip from './composition.js';
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
<script lang="ts">import { uniqueClsx } from '../common/css.js';
|
|
2
|
+
// Generate a unique ID for the component, in case one is not provided...
|
|
3
|
+
const uid = $props.id();
|
|
4
|
+
let { children, class: classValues, elementRef = $bindable(null), id = `tooltip-inner-${uid}`, ...restOfProps } = $props();
|
|
5
|
+
let classes = $derived(uniqueClsx('tooltip-inner', classValues));
|
|
6
|
+
</script>
|
|
7
|
+
|
|
8
|
+
<div bind:this={elementRef} class={classes} {id} {...restOfProps}>
|
|
9
|
+
{@render children?.()}
|
|
10
|
+
</div>
|
|
@@ -0,0 +1,213 @@
|
|
|
1
|
+
<!--
|
|
2
|
+
@component
|
|
3
|
+
## Tooltip
|
|
4
|
+
Add small overlay content to any element for housing secondary information or interactive controls.
|
|
5
|
+
|
|
6
|
+
@example
|
|
7
|
+
```svelte
|
|
8
|
+
<Button id="tooltip-button">Click for Tooltip</Button>
|
|
9
|
+
<Tooltip.Root isShown={true} referenceElementId="tooltip-button">
|
|
10
|
+
<Tooltip.Header>Tooltip Title</Tooltip.Header>
|
|
11
|
+
<Tooltip.Body>
|
|
12
|
+
<p>This is the tooltip content.</p>
|
|
13
|
+
</Tooltip.Body>
|
|
14
|
+
</Tooltip.Root>
|
|
15
|
+
```
|
|
16
|
+
|
|
17
|
+
#### Different Triggers
|
|
18
|
+
```svelte
|
|
19
|
+
<Tooltip.Root trigger="click" referenceElementId="click-button">...</Tooltip.Root>
|
|
20
|
+
<Tooltip.Root trigger="hover" referenceElementId="hover-button">...</Tooltip.Root>
|
|
21
|
+
<Tooltip.Root trigger="focus" referenceElementId="focus-button">...</Tooltip.Root>
|
|
22
|
+
```
|
|
23
|
+
#### Placement Options
|
|
24
|
+
```svelte
|
|
25
|
+
<Tooltip.Root placement="top" referenceElementId="top-button">...</Tooltip.Root>
|
|
26
|
+
<Tooltip.Root placement="right" referenceElementId="right-button">...</Tooltip.Root>
|
|
27
|
+
<Tooltip.Root placement="bottom" referenceElementId="bottom-button">...</Tooltip.Root>
|
|
28
|
+
<Tooltip.Root placement="left" referenceElementId="left-button">...</Tooltip.Root>
|
|
29
|
+
```
|
|
30
|
+
#### Custom Container
|
|
31
|
+
```svelte
|
|
32
|
+
<div id="custom-container"></div>
|
|
33
|
+
<Tooltip.Root container="#custom-container" referenceElementId="container-button">...</Tooltip.Root>
|
|
34
|
+
```
|
|
35
|
+
### Props
|
|
36
|
+
- `children` (slot): Content to display inside the tooltip.
|
|
37
|
+
- `class` (string): Optional. Additional CSS classes.
|
|
38
|
+
- `container` (string | HTMLElement | false): Optional. Specifies the container where the tooltip should be appended. Default is 'body'.
|
|
39
|
+
- `elementRef` (HTMLElement): Optional. Reference to the tooltip DOM element.
|
|
40
|
+
- `id` (string): Optional. ID for the tooltip element.
|
|
41
|
+
- `isShown` (boolean): Optional. Controls whether the tooltip is visible.
|
|
42
|
+
- `onHide` (function): Optional. Callback to invoke when the tooltip starts hiding.
|
|
43
|
+
- `onHidden` (function): Optional. Callback to invoke when the tooltip has been hidden.
|
|
44
|
+
- `onShow` (function): Optional. Callback to invoke when the tooltip starts showing.
|
|
45
|
+
- `onShown` (function): Optional. Callback to invoke when the tooltip has been shown.
|
|
46
|
+
- `placement` (string): Optional. Position of the tooltip relative to the trigger element. Options: 'top', 'right', 'bottom', 'left', 'auto'. Default is 'right'.
|
|
47
|
+
- `referenceElementId` (string): Required. ID of the element that triggers the tooltip. It accommodates the id containing a hash or not.
|
|
48
|
+
- `trigger` (string): Optional. Event type that triggers the tooltip. Options: 'click', 'hover', 'focus', or space-separated combinations. Default is 'click'.
|
|
49
|
+
- `type` (string): Optional. Type of the tooltip. Default is 'tooltip'. Can be 'tooltip' or 'popover'.
|
|
50
|
+
- `useFade` (boolean): Optional. Controls whether the tooltip uses a fade transition. Default is true.
|
|
51
|
+
-->
|
|
52
|
+
<script lang="ts">import { hasFocus, noop, uniqueClsx } from '../common/index.js';
|
|
53
|
+
import { Portal } from '../index.js';
|
|
54
|
+
import { createPopper } from '@popperjs/core';
|
|
55
|
+
import { onMount } from 'svelte';
|
|
56
|
+
import { fade } from 'svelte/transition';
|
|
57
|
+
// Generate a unique ID for the component, in case one is not provided...
|
|
58
|
+
const uid = $props.id();
|
|
59
|
+
let { children, class: classValues, container = false, elementRef = $bindable(null), id, isShown = false, onHide = noop, onHidden = noop, onShow = noop, onShown = noop, placement, referenceElementId, trigger, type = 'tooltip', useFade = true, ...restOfProps } = $props();
|
|
60
|
+
// Set defaults based on type
|
|
61
|
+
let effectiveId = $derived(id || `${type}-${uid}`);
|
|
62
|
+
let effectivePlacement = $derived(placement || (type === 'tooltip' ? 'top' : 'right'));
|
|
63
|
+
let effectiveTrigger = $derived(trigger || (type === 'tooltip' ? 'hover focus' : 'click'));
|
|
64
|
+
const unset = Symbol('unset');
|
|
65
|
+
let previousTrigger = unset;
|
|
66
|
+
let popperInstance = null;
|
|
67
|
+
let popperPlacement = $state('');
|
|
68
|
+
let referenceElement = $state(null);
|
|
69
|
+
let currentPopperPlacement = $derived(popperPlacement || effectivePlacement || 'top');
|
|
70
|
+
let triggers = $derived.by(() => effectiveTrigger.split(' ')); // support space-delimited list of triggers
|
|
71
|
+
let classes = $derived(uniqueClsx(type, {
|
|
72
|
+
[`bs-${type}-auto`]: currentPopperPlacement === 'auto',
|
|
73
|
+
[`bs-${type}-start`]: currentPopperPlacement === 'left',
|
|
74
|
+
[`bs-${type}-end`]: currentPopperPlacement === 'right',
|
|
75
|
+
[`bs-${type}-top`]: currentPopperPlacement === 'top',
|
|
76
|
+
[`bs-${type}-bottom`]: currentPopperPlacement === 'bottom',
|
|
77
|
+
fade: useFade,
|
|
78
|
+
show: isShown
|
|
79
|
+
}, classValues));
|
|
80
|
+
// Operations...
|
|
81
|
+
const hide = () => (isShown = false);
|
|
82
|
+
const show = () => (isShown = true);
|
|
83
|
+
const toggle = () => {
|
|
84
|
+
if (triggers.includes('focus') && hasFocus(referenceElement)) {
|
|
85
|
+
// If the reference element is focused, we don't want to toggle the tooltip
|
|
86
|
+
return;
|
|
87
|
+
}
|
|
88
|
+
isShown = !isShown;
|
|
89
|
+
};
|
|
90
|
+
const addEventListeners = () => {
|
|
91
|
+
if (!referenceElement) {
|
|
92
|
+
return;
|
|
93
|
+
}
|
|
94
|
+
if (triggers.length === 0) {
|
|
95
|
+
return;
|
|
96
|
+
}
|
|
97
|
+
if (triggers.includes('click')) {
|
|
98
|
+
referenceElement.addEventListener('click', toggle);
|
|
99
|
+
}
|
|
100
|
+
if (triggers.includes('hover')) {
|
|
101
|
+
referenceElement.addEventListener('mouseenter', show);
|
|
102
|
+
referenceElement.addEventListener('mouseleave', hide);
|
|
103
|
+
}
|
|
104
|
+
if (triggers.includes('focus')) {
|
|
105
|
+
referenceElement.addEventListener('focusin', show);
|
|
106
|
+
referenceElement.addEventListener('focusout', hide);
|
|
107
|
+
}
|
|
108
|
+
};
|
|
109
|
+
const destroyPopper = () => {
|
|
110
|
+
if (!popperInstance) {
|
|
111
|
+
return;
|
|
112
|
+
}
|
|
113
|
+
popperInstance.destroy();
|
|
114
|
+
popperInstance = null;
|
|
115
|
+
};
|
|
116
|
+
const removeEventListeners = () => {
|
|
117
|
+
if (!referenceElement) {
|
|
118
|
+
return;
|
|
119
|
+
}
|
|
120
|
+
referenceElement.removeEventListener('click', toggle);
|
|
121
|
+
referenceElement.removeEventListener('mouseenter', show);
|
|
122
|
+
referenceElement.removeEventListener('mouseleave', hide);
|
|
123
|
+
referenceElement.removeEventListener('focusin', show);
|
|
124
|
+
referenceElement.removeEventListener('focusout', hide);
|
|
125
|
+
};
|
|
126
|
+
// Event listeners...
|
|
127
|
+
const handleOnHidden = (event) => {
|
|
128
|
+
destroyPopper();
|
|
129
|
+
onHidden(event);
|
|
130
|
+
};
|
|
131
|
+
onMount(() => {
|
|
132
|
+
if (typeof window === 'undefined') {
|
|
133
|
+
return;
|
|
134
|
+
}
|
|
135
|
+
if (!referenceElementId) {
|
|
136
|
+
console.warn(`${type.charAt(0).toUpperCase() + type.slice(1)}: Missing referenceElementId. Unable to find the reference element.`);
|
|
137
|
+
return;
|
|
138
|
+
}
|
|
139
|
+
// accommodate the id containing a hash or not...
|
|
140
|
+
const elementId = referenceElementId.startsWith('#') ? referenceElementId.substring(1) : referenceElementId;
|
|
141
|
+
referenceElement = document.querySelector(`#${elementId}`);
|
|
142
|
+
addEventListeners();
|
|
143
|
+
return () => {
|
|
144
|
+
destroyPopper();
|
|
145
|
+
removeEventListeners();
|
|
146
|
+
};
|
|
147
|
+
});
|
|
148
|
+
// Listen changes to the `trigger` prop and update the state accordingly...
|
|
149
|
+
$effect(() => {
|
|
150
|
+
if (previousTrigger !== unset && previousTrigger !== effectiveTrigger) {
|
|
151
|
+
removeEventListeners();
|
|
152
|
+
addEventListeners();
|
|
153
|
+
}
|
|
154
|
+
previousTrigger = effectiveTrigger;
|
|
155
|
+
});
|
|
156
|
+
// Listen changes to the `isShown` prop and update the state accordingly...
|
|
157
|
+
$effect(() => {
|
|
158
|
+
if (!isShown || !elementRef || !referenceElement) {
|
|
159
|
+
return;
|
|
160
|
+
}
|
|
161
|
+
destroyPopper();
|
|
162
|
+
popperInstance = createPopper(referenceElement, elementRef, {
|
|
163
|
+
placement: effectivePlacement,
|
|
164
|
+
modifiers: [
|
|
165
|
+
{
|
|
166
|
+
name: 'placementUpdated',
|
|
167
|
+
enabled: true,
|
|
168
|
+
phase: 'main',
|
|
169
|
+
fn({ state }) {
|
|
170
|
+
// Only support the placement of auto, top, right, bottom, left...
|
|
171
|
+
if ((state.placement === 'auto' && popperPlacement !== 'auto') ||
|
|
172
|
+
(state.placement === 'top' && popperPlacement !== 'top') ||
|
|
173
|
+
(state.placement === 'left' && popperPlacement !== 'left') ||
|
|
174
|
+
(state.placement === 'right' && popperPlacement !== 'right') ||
|
|
175
|
+
(state.placement === 'bottom' && popperPlacement !== 'bottom')) {
|
|
176
|
+
popperPlacement = state.placement;
|
|
177
|
+
}
|
|
178
|
+
}
|
|
179
|
+
},
|
|
180
|
+
{
|
|
181
|
+
name: 'offset',
|
|
182
|
+
options: {
|
|
183
|
+
offset: () => {
|
|
184
|
+
// Different offset for tooltip vs popover
|
|
185
|
+
return [0, type === 'tooltip' ? 6 : 8];
|
|
186
|
+
}
|
|
187
|
+
}
|
|
188
|
+
}
|
|
189
|
+
]
|
|
190
|
+
});
|
|
191
|
+
});
|
|
192
|
+
let containerElement = $derived(container === false ? 'body' : container);
|
|
193
|
+
</script>
|
|
194
|
+
|
|
195
|
+
<Portal target={containerElement} disabled={container === false}>
|
|
196
|
+
{#if isShown}
|
|
197
|
+
<div
|
|
198
|
+
bind:this={elementRef}
|
|
199
|
+
class={classes}
|
|
200
|
+
data-popper-placement={currentPopperPlacement}
|
|
201
|
+
id={effectiveId}
|
|
202
|
+
onintrostart={onShow}
|
|
203
|
+
onintroend={onShown}
|
|
204
|
+
onoutrostart={onHide}
|
|
205
|
+
onoutroend={handleOnHidden}
|
|
206
|
+
role="tooltip"
|
|
207
|
+
transition:fade={{ duration: useFade ? 150 : 0 }}
|
|
208
|
+
{...restOfProps}>
|
|
209
|
+
<div class={`${type}-arrow`} data-popper-arrow></div>
|
|
210
|
+
{@render children?.()}
|
|
211
|
+
</div>
|
|
212
|
+
{/if}
|
|
213
|
+
</Portal>
|
|
@@ -0,0 +1,54 @@
|
|
|
1
|
+
import type { Tooltip } from './index.js';
|
|
2
|
+
/**
|
|
3
|
+
* ## Tooltip
|
|
4
|
+
* Add small overlay content to any element for housing secondary information or interactive controls.
|
|
5
|
+
*
|
|
6
|
+
* @example
|
|
7
|
+
* ```svelte
|
|
8
|
+
* <Button id="tooltip-button">Click for Tooltip</Button>
|
|
9
|
+
* <Tooltip.Root isShown={true} referenceElementId="tooltip-button">
|
|
10
|
+
* <Tooltip.Header>Tooltip Title</Tooltip.Header>
|
|
11
|
+
* <Tooltip.Body>
|
|
12
|
+
* <p>This is the tooltip content.</p>
|
|
13
|
+
* </Tooltip.Body>
|
|
14
|
+
* </Tooltip.Root>
|
|
15
|
+
* ```
|
|
16
|
+
*
|
|
17
|
+
* #### Different Triggers
|
|
18
|
+
* ```svelte
|
|
19
|
+
* <Tooltip.Root trigger="click" referenceElementId="click-button">...</Tooltip.Root>
|
|
20
|
+
* <Tooltip.Root trigger="hover" referenceElementId="hover-button">...</Tooltip.Root>
|
|
21
|
+
* <Tooltip.Root trigger="focus" referenceElementId="focus-button">...</Tooltip.Root>
|
|
22
|
+
* ```
|
|
23
|
+
* #### Placement Options
|
|
24
|
+
* ```svelte
|
|
25
|
+
* <Tooltip.Root placement="top" referenceElementId="top-button">...</Tooltip.Root>
|
|
26
|
+
* <Tooltip.Root placement="right" referenceElementId="right-button">...</Tooltip.Root>
|
|
27
|
+
* <Tooltip.Root placement="bottom" referenceElementId="bottom-button">...</Tooltip.Root>
|
|
28
|
+
* <Tooltip.Root placement="left" referenceElementId="left-button">...</Tooltip.Root>
|
|
29
|
+
* ```
|
|
30
|
+
* #### Custom Container
|
|
31
|
+
* ```svelte
|
|
32
|
+
* <div id="custom-container"></div>
|
|
33
|
+
* <Tooltip.Root container="#custom-container" referenceElementId="container-button">...</Tooltip.Root>
|
|
34
|
+
* ```
|
|
35
|
+
* ### Props
|
|
36
|
+
* - `children` (slot): Content to display inside the tooltip.
|
|
37
|
+
* - `class` (string): Optional. Additional CSS classes.
|
|
38
|
+
* - `container` (string | HTMLElement | false): Optional. Specifies the container where the tooltip should be appended. Default is 'body'.
|
|
39
|
+
* - `elementRef` (HTMLElement): Optional. Reference to the tooltip DOM element.
|
|
40
|
+
* - `id` (string): Optional. ID for the tooltip element.
|
|
41
|
+
* - `isShown` (boolean): Optional. Controls whether the tooltip is visible.
|
|
42
|
+
* - `onHide` (function): Optional. Callback to invoke when the tooltip starts hiding.
|
|
43
|
+
* - `onHidden` (function): Optional. Callback to invoke when the tooltip has been hidden.
|
|
44
|
+
* - `onShow` (function): Optional. Callback to invoke when the tooltip starts showing.
|
|
45
|
+
* - `onShown` (function): Optional. Callback to invoke when the tooltip has been shown.
|
|
46
|
+
* - `placement` (string): Optional. Position of the tooltip relative to the trigger element. Options: 'top', 'right', 'bottom', 'left', 'auto'. Default is 'right'.
|
|
47
|
+
* - `referenceElementId` (string): Required. ID of the element that triggers the tooltip. It accommodates the id containing a hash or not.
|
|
48
|
+
* - `trigger` (string): Optional. Event type that triggers the tooltip. Options: 'click', 'hover', 'focus', or space-separated combinations. Default is 'click'.
|
|
49
|
+
* - `type` (string): Optional. Type of the tooltip. Default is 'tooltip'. Can be 'tooltip' or 'popover'.
|
|
50
|
+
* - `useFade` (boolean): Optional. Controls whether the tooltip uses a fade transition. Default is true.
|
|
51
|
+
*/
|
|
52
|
+
declare const Tooltip: import("svelte").Component<Tooltip.RootProps, {}, "elementRef">;
|
|
53
|
+
type Tooltip = ReturnType<typeof Tooltip>;
|
|
54
|
+
export default Tooltip;
|
|
@@ -0,0 +1,43 @@
|
|
|
1
|
+
import type { DivElement, PopperPlacement } from '../common/types.js';
|
|
2
|
+
/**
|
|
3
|
+
* Defines where the tooltip should be appended in the DOM
|
|
4
|
+
* - string: CSS selector for the container element
|
|
5
|
+
* - HTMLElement: Direct reference to a DOM element
|
|
6
|
+
* - false: Stays within natural DOM placement (no portal/teleport)
|
|
7
|
+
*/
|
|
8
|
+
export type TooltipContainer = string | HTMLElement | false;
|
|
9
|
+
export type TooltipPlacement = PopperPlacement;
|
|
10
|
+
/**
|
|
11
|
+
* Specifies what user interaction will activate the tooltip
|
|
12
|
+
* - 'click': Shows on click, hides on second click
|
|
13
|
+
* - 'hover': Shows on mouseenter, hides on mouseleave
|
|
14
|
+
* - 'focus': Shows on element focus, hides on blur
|
|
15
|
+
* - 'manual': Programmatic control only via isShown prop
|
|
16
|
+
*/
|
|
17
|
+
export type TooltipTrigger = 'click' | 'hover' | 'focus' | 'manual';
|
|
18
|
+
/**
|
|
19
|
+
* Determines visual style and behavior variant
|
|
20
|
+
* - 'tooltip': Smaller, simpler style for brief hints
|
|
21
|
+
* - 'popover': Larger with styled header/body areas for more content
|
|
22
|
+
*/
|
|
23
|
+
export type TooltipType = 'tooltip' | 'popover';
|
|
24
|
+
export type TooltipRootProps = DivElement & {
|
|
25
|
+
container?: TooltipContainer;
|
|
26
|
+
isShown?: boolean;
|
|
27
|
+
onHide?: EventListener;
|
|
28
|
+
onHidden?: EventListener;
|
|
29
|
+
onShow?: EventListener;
|
|
30
|
+
onShown?: EventListener;
|
|
31
|
+
placement?: TooltipPlacement;
|
|
32
|
+
referenceElementId?: string;
|
|
33
|
+
trigger?: TooltipTrigger | string;
|
|
34
|
+
type?: TooltipType;
|
|
35
|
+
useFade?: boolean;
|
|
36
|
+
};
|
|
37
|
+
/**
|
|
38
|
+
* Props for the inner content of the tooltip
|
|
39
|
+
* Uses type to adjust styling based on tooltip or popover variant
|
|
40
|
+
*/
|
|
41
|
+
export type TooltipInnerProps = DivElement & {
|
|
42
|
+
type?: TooltipType;
|
|
43
|
+
};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export {};
|
|
@@ -0,0 +1,47 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* A utility class for managing Svelte component context in a type-safe manner.
|
|
3
|
+
* Provides methods to set, get, and check the existence of context values.
|
|
4
|
+
* @see https://github.com/svecosystem/runed/blob/runed%400.28.0/packages/runed/src/lib/utilities/context/context.ts
|
|
5
|
+
*/
|
|
6
|
+
export declare class Context<TContext> {
|
|
7
|
+
#private;
|
|
8
|
+
/**
|
|
9
|
+
* @param name The name of the context.
|
|
10
|
+
* This is used for generating the context key and error messages.
|
|
11
|
+
*/
|
|
12
|
+
constructor(name: string);
|
|
13
|
+
/**
|
|
14
|
+
* The key used to get and set the context.
|
|
15
|
+
*
|
|
16
|
+
* It is not recommended to use this value directly.
|
|
17
|
+
* Instead, use the methods provided by this class.
|
|
18
|
+
*/
|
|
19
|
+
get key(): symbol;
|
|
20
|
+
/**
|
|
21
|
+
* Checks whether this has been set in the context of a parent component.
|
|
22
|
+
*
|
|
23
|
+
* Must be called during component initialization.
|
|
24
|
+
*/
|
|
25
|
+
exists(): boolean;
|
|
26
|
+
/**
|
|
27
|
+
* Retrieves the context that belongs to the closest parent component.
|
|
28
|
+
*
|
|
29
|
+
* Must be called during component initialization.
|
|
30
|
+
*
|
|
31
|
+
* @throws An error if the context does not exist.
|
|
32
|
+
*/
|
|
33
|
+
get(): TContext;
|
|
34
|
+
/**
|
|
35
|
+
* Retrieves the context that belongs to the closest parent component,
|
|
36
|
+
* or the given fallback value if the context does not exist.
|
|
37
|
+
*
|
|
38
|
+
* Must be called during component initialization.
|
|
39
|
+
*/
|
|
40
|
+
getOr<TFallback>(fallback: TFallback): TContext | TFallback;
|
|
41
|
+
/**
|
|
42
|
+
* Associates the given value with the current component and returns it.
|
|
43
|
+
*
|
|
44
|
+
* Must be called during component initialization.
|
|
45
|
+
*/
|
|
46
|
+
set(context: TContext): TContext;
|
|
47
|
+
}
|
|
@@ -0,0 +1,70 @@
|
|
|
1
|
+
import { getContext, hasContext, setContext } from 'svelte';
|
|
2
|
+
/**
|
|
3
|
+
* A utility class for managing Svelte component context in a type-safe manner.
|
|
4
|
+
* Provides methods to set, get, and check the existence of context values.
|
|
5
|
+
* @see https://github.com/svecosystem/runed/blob/runed%400.28.0/packages/runed/src/lib/utilities/context/context.ts
|
|
6
|
+
*/
|
|
7
|
+
export class Context {
|
|
8
|
+
#name;
|
|
9
|
+
#key;
|
|
10
|
+
/**
|
|
11
|
+
* @param name The name of the context.
|
|
12
|
+
* This is used for generating the context key and error messages.
|
|
13
|
+
*/
|
|
14
|
+
constructor(name) {
|
|
15
|
+
this.#name = name;
|
|
16
|
+
this.#key = Symbol(name);
|
|
17
|
+
}
|
|
18
|
+
/**
|
|
19
|
+
* The key used to get and set the context.
|
|
20
|
+
*
|
|
21
|
+
* It is not recommended to use this value directly.
|
|
22
|
+
* Instead, use the methods provided by this class.
|
|
23
|
+
*/
|
|
24
|
+
get key() {
|
|
25
|
+
return this.#key;
|
|
26
|
+
}
|
|
27
|
+
/**
|
|
28
|
+
* Checks whether this has been set in the context of a parent component.
|
|
29
|
+
*
|
|
30
|
+
* Must be called during component initialization.
|
|
31
|
+
*/
|
|
32
|
+
exists() {
|
|
33
|
+
return hasContext(this.#key);
|
|
34
|
+
}
|
|
35
|
+
/**
|
|
36
|
+
* Retrieves the context that belongs to the closest parent component.
|
|
37
|
+
*
|
|
38
|
+
* Must be called during component initialization.
|
|
39
|
+
*
|
|
40
|
+
* @throws An error if the context does not exist.
|
|
41
|
+
*/
|
|
42
|
+
get() {
|
|
43
|
+
const context = getContext(this.#key);
|
|
44
|
+
if (context === undefined) {
|
|
45
|
+
throw new Error(`Context "${this.#name}" not found`);
|
|
46
|
+
}
|
|
47
|
+
return context;
|
|
48
|
+
}
|
|
49
|
+
/**
|
|
50
|
+
* Retrieves the context that belongs to the closest parent component,
|
|
51
|
+
* or the given fallback value if the context does not exist.
|
|
52
|
+
*
|
|
53
|
+
* Must be called during component initialization.
|
|
54
|
+
*/
|
|
55
|
+
getOr(fallback) {
|
|
56
|
+
const context = getContext(this.#key);
|
|
57
|
+
if (context === undefined) {
|
|
58
|
+
return fallback;
|
|
59
|
+
}
|
|
60
|
+
return context;
|
|
61
|
+
}
|
|
62
|
+
/**
|
|
63
|
+
* Associates the given value with the current component and returns it.
|
|
64
|
+
*
|
|
65
|
+
* Must be called during component initialization.
|
|
66
|
+
*/
|
|
67
|
+
set(context) {
|
|
68
|
+
return setContext(this.#key, context);
|
|
69
|
+
}
|
|
70
|
+
}
|