@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,122 @@
|
|
|
1
|
+
import { isDisabled } from '../common/dom.js';
|
|
2
|
+
import { SvelteMap } from 'svelte/reactivity';
|
|
3
|
+
/**
|
|
4
|
+
* Creates a scrollspy attachment that monitors elements matching a target selector
|
|
5
|
+
* and triggers a callback when they intersect with the scrolling container.
|
|
6
|
+
*
|
|
7
|
+
* @param options Configuration options for the scrollspy behavior
|
|
8
|
+
* @returns An Attachment function compatible with Svelte 5's {@attach ...} directive
|
|
9
|
+
*/
|
|
10
|
+
export function scrollspy(options) {
|
|
11
|
+
return (element) => {
|
|
12
|
+
// Sanity check the options...
|
|
13
|
+
if (!options || typeof options !== 'object') {
|
|
14
|
+
throw new Error('Scrollspy: options must be an object');
|
|
15
|
+
}
|
|
16
|
+
if (options.targetSelector === undefined) {
|
|
17
|
+
throw new Error('Scrollspy: targetSelector is required in options');
|
|
18
|
+
}
|
|
19
|
+
if (typeof options.callback !== 'function') {
|
|
20
|
+
throw new Error('Scrollspy: callback must be a function');
|
|
21
|
+
}
|
|
22
|
+
// Get the target element from options targetSelector...
|
|
23
|
+
const targetElement = document.querySelector(options.targetSelector);
|
|
24
|
+
if (!targetElement) {
|
|
25
|
+
throw new Error(`Scrollspy: target element not found for selector "${options.targetSelector}"`);
|
|
26
|
+
}
|
|
27
|
+
// Smooth scroll functionality
|
|
28
|
+
const handleClick = (event) => {
|
|
29
|
+
const target = event.target;
|
|
30
|
+
if (!(target instanceof HTMLElement)) {
|
|
31
|
+
return;
|
|
32
|
+
}
|
|
33
|
+
// Only handle clicks on anchor links with hash
|
|
34
|
+
const anchor = target.closest('a[href^="#"]');
|
|
35
|
+
if (!anchor || !anchor.hash) {
|
|
36
|
+
return;
|
|
37
|
+
}
|
|
38
|
+
// Find the target element that corresponds to the clicked link's hash
|
|
39
|
+
const targetElement = element.querySelector(anchor.hash);
|
|
40
|
+
if (targetElement) {
|
|
41
|
+
event.preventDefault();
|
|
42
|
+
// Get the scroll container (root element or window)
|
|
43
|
+
const root = options.observerOptions?.root || element;
|
|
44
|
+
// Calculate the scroll position
|
|
45
|
+
const elementRect = targetElement.getBoundingClientRect();
|
|
46
|
+
const containerRect = root.getBoundingClientRect();
|
|
47
|
+
let scrollTop;
|
|
48
|
+
if (root === element || root instanceof HTMLElement) {
|
|
49
|
+
// Scrolling within a container element
|
|
50
|
+
// Cast targetElement to HTMLElement to use offsetTop
|
|
51
|
+
scrollTop = targetElement.offsetTop - element.offsetTop;
|
|
52
|
+
}
|
|
53
|
+
else {
|
|
54
|
+
// Scrolling the window
|
|
55
|
+
scrollTop = elementRect.top + window.pageYOffset - containerRect.top;
|
|
56
|
+
}
|
|
57
|
+
// Perform smooth scroll
|
|
58
|
+
if (root === element || root instanceof HTMLElement) {
|
|
59
|
+
if (root.scrollTo) {
|
|
60
|
+
root.scrollTo({ top: scrollTop, behavior: 'smooth' });
|
|
61
|
+
}
|
|
62
|
+
else {
|
|
63
|
+
// Fallback for older browsers
|
|
64
|
+
root.scrollTop = scrollTop;
|
|
65
|
+
}
|
|
66
|
+
}
|
|
67
|
+
else {
|
|
68
|
+
// Scroll the window
|
|
69
|
+
if (window.scrollTo) {
|
|
70
|
+
window.scrollTo({ top: scrollTop, behavior: 'smooth' });
|
|
71
|
+
}
|
|
72
|
+
else {
|
|
73
|
+
// Fallback for older browsers
|
|
74
|
+
document.documentElement.scrollTop = scrollTop; // Use document.documentElement.scrollTop instead
|
|
75
|
+
document.body.scrollTop = scrollTop; // For Safari compatibility
|
|
76
|
+
}
|
|
77
|
+
}
|
|
78
|
+
}
|
|
79
|
+
};
|
|
80
|
+
// Maps to store links and their target sections
|
|
81
|
+
const targetLinks = new SvelteMap();
|
|
82
|
+
const observableSections = new SvelteMap();
|
|
83
|
+
// Find all the anchor links within the target element...
|
|
84
|
+
const anchors = targetElement.querySelectorAll('[href]');
|
|
85
|
+
for (const anchor of anchors) {
|
|
86
|
+
// ensure that the anchor has a valid hash and is not disabled
|
|
87
|
+
if (!anchor.hash || ['#', '#!'].includes(anchor.hash) || isDisabled(anchor)) {
|
|
88
|
+
continue;
|
|
89
|
+
}
|
|
90
|
+
const observableSection = document.querySelector(decodeURI(anchor.hash));
|
|
91
|
+
if (observableSection !== null) {
|
|
92
|
+
targetLinks.set(decodeURI(anchor.hash), anchor);
|
|
93
|
+
observableSections.set(anchor.hash, observableSection);
|
|
94
|
+
// attach the click handler to the anchor
|
|
95
|
+
anchor.addEventListener('click', handleClick);
|
|
96
|
+
}
|
|
97
|
+
}
|
|
98
|
+
// Set default options for the IntersectionObserver...
|
|
99
|
+
const defaultBootstrapObserverOptions = {
|
|
100
|
+
root: element,
|
|
101
|
+
rootMargin: '0px 0px -25%',
|
|
102
|
+
threshold: [0.1, 0.5, 1]
|
|
103
|
+
};
|
|
104
|
+
// Ensure observerOptions exists, create it if it doesn't
|
|
105
|
+
options.observerOptions = { ...defaultBootstrapObserverOptions, ...options.observerOptions };
|
|
106
|
+
// Create an IntersectionObserver that will invoke the callback when targets intersect
|
|
107
|
+
const observer = new IntersectionObserver(options.callback, options.observerOptions);
|
|
108
|
+
// Start observing each target element for intersection events
|
|
109
|
+
for (const section of observableSections.values()) {
|
|
110
|
+
observer.observe(section);
|
|
111
|
+
}
|
|
112
|
+
// Return cleanup function that will be called when the attachment is removed
|
|
113
|
+
return () => {
|
|
114
|
+
// Remove click event listener
|
|
115
|
+
for (const anchor of targetLinks.values()) {
|
|
116
|
+
anchor.removeEventListener('click', handleClick);
|
|
117
|
+
}
|
|
118
|
+
// Disconnect the observer to prevent memory leaks
|
|
119
|
+
observer.disconnect();
|
|
120
|
+
};
|
|
121
|
+
};
|
|
122
|
+
}
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Configuration options for the Scrollspy component.
|
|
3
|
+
* Used to track when elements enter/exit the viewport and trigger navigation highlights.
|
|
4
|
+
*/
|
|
5
|
+
export type ScrollspyOptions = {
|
|
6
|
+
targetSelector: string;
|
|
7
|
+
callback: IntersectionObserverCallback;
|
|
8
|
+
observerOptions?: IntersectionObserverInit;
|
|
9
|
+
};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export {};
|
|
@@ -0,0 +1,77 @@
|
|
|
1
|
+
<!--
|
|
2
|
+
@component
|
|
3
|
+
## Spinner
|
|
4
|
+
A component that indicates a loading state using Bootstrap's spinner styling.
|
|
5
|
+
|
|
6
|
+
@example
|
|
7
|
+
```svelte
|
|
8
|
+
<Spinner />
|
|
9
|
+
```
|
|
10
|
+
|
|
11
|
+
#### Border spinner (default)
|
|
12
|
+
```svelte
|
|
13
|
+
<Spinner>
|
|
14
|
+
<span class="visually-hidden">Loading...</span>
|
|
15
|
+
</Spinner>
|
|
16
|
+
```
|
|
17
|
+
|
|
18
|
+
#### Growing spinner
|
|
19
|
+
```svelte
|
|
20
|
+
<Spinner type="grow">
|
|
21
|
+
<span class="visually-hidden">Loading...</span>
|
|
22
|
+
</Spinner>
|
|
23
|
+
```
|
|
24
|
+
|
|
25
|
+
#### Colors variants
|
|
26
|
+
```svelte
|
|
27
|
+
<Spinner colorVariant="primary">
|
|
28
|
+
<span class="visually-hidden">Loading primary...</span>
|
|
29
|
+
</Spinner>
|
|
30
|
+
<Spinner colorVariant="secondary">
|
|
31
|
+
<span class="visually-hidden">Loading secondary...</span>
|
|
32
|
+
</Spinner>
|
|
33
|
+
<Spinner colorVariant="success">
|
|
34
|
+
<span class="visually-hidden">Loading success...</span>
|
|
35
|
+
</Spinner>
|
|
36
|
+
<Spinner colorVariant="danger">
|
|
37
|
+
<span class="visually-hidden">Loading danger...</span>
|
|
38
|
+
</Spinner>
|
|
39
|
+
<Spinner colorVariant="warning">
|
|
40
|
+
<span class="visually-hidden">Loading warning...</span>
|
|
41
|
+
</Spinner>
|
|
42
|
+
<Spinner colorVariant="info">
|
|
43
|
+
<span class="visually-hidden">Loading info...</span>
|
|
44
|
+
</Spinner>
|
|
45
|
+
<Spinner colorVariant="light">
|
|
46
|
+
<span class="visually-hidden">Loading light...</span>
|
|
47
|
+
</Spinner>
|
|
48
|
+
<Spinner colorVariant="dark">
|
|
49
|
+
<span class="visually-hidden">Loading dark...</span>
|
|
50
|
+
</Spinner>
|
|
51
|
+
```
|
|
52
|
+
|
|
53
|
+
#### Sizes
|
|
54
|
+
```svelte
|
|
55
|
+
<Spinner size="sm">
|
|
56
|
+
<span class="visually-hidden">Loading...</span>
|
|
57
|
+
</Spinner>
|
|
58
|
+
```
|
|
59
|
+
|
|
60
|
+
### Props
|
|
61
|
+
- `class` (string): Optional. Additional CSS classes.
|
|
62
|
+
- `colorVariant` (string): Optional. Color variant of the spinner ('primary', 'secondary', etc.).
|
|
63
|
+
- `elementRef` (HTMLElement): Optional. Reference to the spinner DOM element.
|
|
64
|
+
- `id` (string): Optional. ID for the spinner. If not provided, a unique ID will be generated.
|
|
65
|
+
- `size` (string): Optional. Size of the spinner ('sm').
|
|
66
|
+
- `type` (string): Optional. Type of spinner ('border' or 'grow'), defaults to 'border'.
|
|
67
|
+
-->
|
|
68
|
+
<script lang="ts">import { uniqueClsx } from '../common/css.js';
|
|
69
|
+
// Generate a unique ID for the spinner element, in case one is not provided...
|
|
70
|
+
const uid = $props.id();
|
|
71
|
+
let { children, class: classValues, colorVariant, elementRef = $bindable(null), id = `spinner-${uid}`, size, type = 'border', ...restOfProps } = $props();
|
|
72
|
+
let classes = $derived(uniqueClsx(`spinner-${type}`, size && `spinner-${type}-${size}`, colorVariant && `text-${colorVariant}`, classValues));
|
|
73
|
+
</script>
|
|
74
|
+
|
|
75
|
+
<div bind:this={elementRef} class={classes} {id} role="status" {...restOfProps}>
|
|
76
|
+
{@render children?.()}
|
|
77
|
+
</div>
|
|
@@ -0,0 +1,70 @@
|
|
|
1
|
+
import type { SpinnerRootProps } from './types.js';
|
|
2
|
+
/**
|
|
3
|
+
* ## Spinner
|
|
4
|
+
* A component that indicates a loading state using Bootstrap's spinner styling.
|
|
5
|
+
*
|
|
6
|
+
* @example
|
|
7
|
+
* ```svelte
|
|
8
|
+
* <Spinner />
|
|
9
|
+
* ```
|
|
10
|
+
*
|
|
11
|
+
* #### Border spinner (default)
|
|
12
|
+
* ```svelte
|
|
13
|
+
* <Spinner>
|
|
14
|
+
* <span class="visually-hidden">Loading...</span>
|
|
15
|
+
* </Spinner>
|
|
16
|
+
* ```
|
|
17
|
+
*
|
|
18
|
+
* #### Growing spinner
|
|
19
|
+
* ```svelte
|
|
20
|
+
* <Spinner type="grow">
|
|
21
|
+
* <span class="visually-hidden">Loading...</span>
|
|
22
|
+
* </Spinner>
|
|
23
|
+
* ```
|
|
24
|
+
*
|
|
25
|
+
* #### Colors variants
|
|
26
|
+
* ```svelte
|
|
27
|
+
* <Spinner colorVariant="primary">
|
|
28
|
+
* <span class="visually-hidden">Loading primary...</span>
|
|
29
|
+
* </Spinner>
|
|
30
|
+
* <Spinner colorVariant="secondary">
|
|
31
|
+
* <span class="visually-hidden">Loading secondary...</span>
|
|
32
|
+
* </Spinner>
|
|
33
|
+
* <Spinner colorVariant="success">
|
|
34
|
+
* <span class="visually-hidden">Loading success...</span>
|
|
35
|
+
* </Spinner>
|
|
36
|
+
* <Spinner colorVariant="danger">
|
|
37
|
+
* <span class="visually-hidden">Loading danger...</span>
|
|
38
|
+
* </Spinner>
|
|
39
|
+
* <Spinner colorVariant="warning">
|
|
40
|
+
* <span class="visually-hidden">Loading warning...</span>
|
|
41
|
+
* </Spinner>
|
|
42
|
+
* <Spinner colorVariant="info">
|
|
43
|
+
* <span class="visually-hidden">Loading info...</span>
|
|
44
|
+
* </Spinner>
|
|
45
|
+
* <Spinner colorVariant="light">
|
|
46
|
+
* <span class="visually-hidden">Loading light...</span>
|
|
47
|
+
* </Spinner>
|
|
48
|
+
* <Spinner colorVariant="dark">
|
|
49
|
+
* <span class="visually-hidden">Loading dark...</span>
|
|
50
|
+
* </Spinner>
|
|
51
|
+
* ```
|
|
52
|
+
*
|
|
53
|
+
* #### Sizes
|
|
54
|
+
* ```svelte
|
|
55
|
+
* <Spinner size="sm">
|
|
56
|
+
* <span class="visually-hidden">Loading...</span>
|
|
57
|
+
* </Spinner>
|
|
58
|
+
* ```
|
|
59
|
+
*
|
|
60
|
+
* ### Props
|
|
61
|
+
* - `class` (string): Optional. Additional CSS classes.
|
|
62
|
+
* - `colorVariant` (string): Optional. Color variant of the spinner ('primary', 'secondary', etc.).
|
|
63
|
+
* - `elementRef` (HTMLElement): Optional. Reference to the spinner DOM element.
|
|
64
|
+
* - `id` (string): Optional. ID for the spinner. If not provided, a unique ID will be generated.
|
|
65
|
+
* - `size` (string): Optional. Size of the spinner ('sm').
|
|
66
|
+
* - `type` (string): Optional. Type of spinner ('border' or 'grow'), defaults to 'border'.
|
|
67
|
+
*/
|
|
68
|
+
declare const Spinner: import("svelte").Component<SpinnerRootProps, {}, "elementRef">;
|
|
69
|
+
type Spinner = ReturnType<typeof Spinner>;
|
|
70
|
+
export default Spinner;
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
import type { BaseColorVariant, DivElement } from '../common/types.js';
|
|
2
|
+
export type SpinnerColorVariant = BaseColorVariant;
|
|
3
|
+
export type SpinnerType = 'border' | 'grow';
|
|
4
|
+
export type SpinnerSize = 'sm' | '';
|
|
5
|
+
export type SpinnerRootProps = DivElement & {
|
|
6
|
+
colorVariant?: SpinnerColorVariant;
|
|
7
|
+
size?: SpinnerSize;
|
|
8
|
+
type?: SpinnerType;
|
|
9
|
+
};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export {};
|
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
export { default as Content } from './tab-content.svelte';
|
|
2
|
+
export { default as NavLink } from './tab-nav-link.svelte';
|
|
3
|
+
export { default as Pane } from './tab-pane.svelte';
|
|
4
|
+
export { default as Root } from './tab.svelte';
|
|
5
|
+
export type { TabContentProps as ContentProps, TabNavLinkProps as NavLinkProps, TabPaneProps as PaneProps, TabRootProps as RootProps } from './types.js';
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export * as Tab from './composition.js';
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export * as Tab from './composition.js';
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
<!--
|
|
2
|
+
@component
|
|
3
|
+
## Tab.Content
|
|
4
|
+
Content container for tab content. Used with tabs navigation.
|
|
5
|
+
|
|
6
|
+
@example
|
|
7
|
+
```svelte
|
|
8
|
+
<Tab.Content>
|
|
9
|
+
<Tab.Pane id="home-tab-pane" isActive={true}>
|
|
10
|
+
Content for home tab
|
|
11
|
+
</Tab.Pane>
|
|
12
|
+
<Tab.Pane id="contact-tab-pane">
|
|
13
|
+
Content for contact tab
|
|
14
|
+
</Tab.Pane>
|
|
15
|
+
</Tab.Content>
|
|
16
|
+
```
|
|
17
|
+
|
|
18
|
+
### Props
|
|
19
|
+
- `class` (string): Optional. Additional CSS classes
|
|
20
|
+
- `elementRef` (HTMLElement): Optional. Reference to the DOM element
|
|
21
|
+
-->
|
|
22
|
+
<script lang="ts">import { uniqueClsx } from '../common/css.js';
|
|
23
|
+
let { children, class: classValues, elementRef = $bindable(null), ...restOfProps } = $props();
|
|
24
|
+
let classes = $derived(uniqueClsx('tab-content', classValues));
|
|
25
|
+
</script>
|
|
26
|
+
|
|
27
|
+
<div bind:this={elementRef} class={classes} {...restOfProps}>
|
|
28
|
+
{@render children?.()}
|
|
29
|
+
</div>
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* ## Tab.Content
|
|
3
|
+
* Content container for tab content. Used with tabs navigation.
|
|
4
|
+
*
|
|
5
|
+
* @example
|
|
6
|
+
* ```svelte
|
|
7
|
+
* <Tab.Content>
|
|
8
|
+
* <Tab.Pane id="home-tab-pane" isActive={true}>
|
|
9
|
+
* Content for home tab
|
|
10
|
+
* </Tab.Pane>
|
|
11
|
+
* <Tab.Pane id="contact-tab-pane">
|
|
12
|
+
* Content for contact tab
|
|
13
|
+
* </Tab.Pane>
|
|
14
|
+
* </Tab.Content>
|
|
15
|
+
* ```
|
|
16
|
+
*
|
|
17
|
+
* ### Props
|
|
18
|
+
* - `class` (string): Optional. Additional CSS classes
|
|
19
|
+
* - `elementRef` (HTMLElement): Optional. Reference to the DOM element
|
|
20
|
+
*/
|
|
21
|
+
declare const TabContent: import("svelte").Component<import("../index.js").DivElement, {}, "elementRef">;
|
|
22
|
+
type TabContent = ReturnType<typeof TabContent>;
|
|
23
|
+
export default TabContent;
|
|
@@ -0,0 +1,69 @@
|
|
|
1
|
+
<!--
|
|
2
|
+
@component
|
|
3
|
+
## Tab.NavLink
|
|
4
|
+
A tab navigation link component specifically used inside a Tab.Root component.
|
|
5
|
+
|
|
6
|
+
@example
|
|
7
|
+
```svelte
|
|
8
|
+
<Tab.NavLink targetPaneId="#!" isActive={true}>Active Link</Tab.NavLink>
|
|
9
|
+
```
|
|
10
|
+
|
|
11
|
+
### Props
|
|
12
|
+
- `class` (string): Optional. Additional CSS classes.
|
|
13
|
+
- `elementRef` (HTMLElement): Optional. Reference to the link DOM element.
|
|
14
|
+
- `id` (string): Optional. Unique ID for the navigation element. Defaults to `tab-nav-link-{uid}`, where `uid` is a unique identifier.
|
|
15
|
+
- `isActive` (boolean): Optional. Whether the link is active.
|
|
16
|
+
- `isDisabled` (boolean): Optional. Whether the link is disabled.
|
|
17
|
+
- `role` (string): Optional. The ARIA role of the link. If not provided, it will be set to "tab" if the link is a tab.
|
|
18
|
+
- `targetPaneId` (string): Optional. The ID of the tab pane to link to.
|
|
19
|
+
-->
|
|
20
|
+
<script lang="ts">import { uniqueClsx } from '../common/css.js';
|
|
21
|
+
import { initNavLinkState, NavLinkState } from '../common/nav-tab.svelte.js';
|
|
22
|
+
import { noop } from '../common/noop.js';
|
|
23
|
+
// Generate a unique ID for the link, in case one is not provided...
|
|
24
|
+
const uid = $props.id();
|
|
25
|
+
let { children, class: classValues, elementRef = $bindable(null), targetPaneId = '#', id = `tab-nav-link-${uid}`, isActive = false, isDisabled = false, onclick = noop, ...restOfProps } = $props();
|
|
26
|
+
const linkState = initNavLinkState({
|
|
27
|
+
get href() {
|
|
28
|
+
return targetPaneId;
|
|
29
|
+
},
|
|
30
|
+
get id() {
|
|
31
|
+
return id;
|
|
32
|
+
},
|
|
33
|
+
get isActive() {
|
|
34
|
+
return isActive;
|
|
35
|
+
}
|
|
36
|
+
});
|
|
37
|
+
let isActiveState = $derived(linkState.isActive);
|
|
38
|
+
let classes = $derived(uniqueClsx('nav-link', { active: isActiveState, disabled: isDisabled }, classValues));
|
|
39
|
+
const handleClick = (event) => {
|
|
40
|
+
linkState.onclick(event);
|
|
41
|
+
onclick(event);
|
|
42
|
+
};
|
|
43
|
+
// Track the previously synchronized isActive value so we only react to
|
|
44
|
+
// genuine prop transitions (not to reads of the live linkState.props.isActive).
|
|
45
|
+
let previousIsActive;
|
|
46
|
+
$effect(() => {
|
|
47
|
+
if (previousIsActive !== undefined && previousIsActive !== isActive && isActive) {
|
|
48
|
+
linkState.onclick(new MouseEvent('click'));
|
|
49
|
+
}
|
|
50
|
+
previousIsActive = isActive;
|
|
51
|
+
});
|
|
52
|
+
</script>
|
|
53
|
+
|
|
54
|
+
<button
|
|
55
|
+
aria-controls={linkState.ariaControls}
|
|
56
|
+
aria-current={isActiveState ? 'page' : undefined}
|
|
57
|
+
aria-disabled={isDisabled ? 'true' : undefined}
|
|
58
|
+
aria-selected={linkState.isTab ? isActiveState : undefined}
|
|
59
|
+
bind:this={elementRef}
|
|
60
|
+
class={classes}
|
|
61
|
+
data-tab-pane-id={targetPaneId}
|
|
62
|
+
{id}
|
|
63
|
+
onclick={handleClick}
|
|
64
|
+
tabindex={isDisabled ? -1 : undefined}
|
|
65
|
+
type="button"
|
|
66
|
+
role="tab"
|
|
67
|
+
{...restOfProps}>
|
|
68
|
+
{@render children?.()}
|
|
69
|
+
</button>
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
import type { Tab } from './index.js';
|
|
2
|
+
/**
|
|
3
|
+
* ## Tab.NavLink
|
|
4
|
+
* A tab navigation link component specifically used inside a Tab.Root component.
|
|
5
|
+
*
|
|
6
|
+
* @example
|
|
7
|
+
* ```svelte
|
|
8
|
+
* <Tab.NavLink targetPaneId="#!" isActive={true}>Active Link</Tab.NavLink>
|
|
9
|
+
* ```
|
|
10
|
+
*
|
|
11
|
+
* ### Props
|
|
12
|
+
* - `class` (string): Optional. Additional CSS classes.
|
|
13
|
+
* - `elementRef` (HTMLElement): Optional. Reference to the link DOM element.
|
|
14
|
+
* - `id` (string): Optional. Unique ID for the navigation element. Defaults to `tab-nav-link-{uid}`, where `uid` is a unique identifier.
|
|
15
|
+
* - `isActive` (boolean): Optional. Whether the link is active.
|
|
16
|
+
* - `isDisabled` (boolean): Optional. Whether the link is disabled.
|
|
17
|
+
* - `role` (string): Optional. The ARIA role of the link. If not provided, it will be set to "tab" if the link is a tab.
|
|
18
|
+
* - `targetPaneId` (string): Optional. The ID of the tab pane to link to.
|
|
19
|
+
*/
|
|
20
|
+
declare const TabNavLink: import("svelte").Component<Tab.NavLinkProps, {}, "elementRef">;
|
|
21
|
+
type TabNavLink = ReturnType<typeof TabNavLink>;
|
|
22
|
+
export default TabNavLink;
|
|
@@ -0,0 +1,72 @@
|
|
|
1
|
+
<!--
|
|
2
|
+
@component
|
|
3
|
+
## Tab.Pane
|
|
4
|
+
Content pane for a tab. Used inside Tab.Root.
|
|
5
|
+
|
|
6
|
+
@example
|
|
7
|
+
```svelte
|
|
8
|
+
<Tab.Pane id="home" isActive={true} doFade={true}>
|
|
9
|
+
Content for home tab
|
|
10
|
+
</Tab.Pane>
|
|
11
|
+
```
|
|
12
|
+
|
|
13
|
+
### Props
|
|
14
|
+
- `class` (string): Optional. Additional CSS classes.
|
|
15
|
+
- `elementRef` (HTMLElement): Optional. Reference to the DOM element.
|
|
16
|
+
- `doFade` (boolean): Optional. Whether to use fade transition. Defaults to false.
|
|
17
|
+
- `id` (string): Required. ID matching the href of a Nav.Link.
|
|
18
|
+
- `isActive` (boolean): Optional. Whether the pane is initially visible.
|
|
19
|
+
- `onHide` (function): Optional. Callback when the pane is about to be hidden.
|
|
20
|
+
- `onHidden` (function): Optional. Callback when the pane has been hidden.
|
|
21
|
+
- `onShow` (function): Optional. Callback when the pane is about to be shown.
|
|
22
|
+
- `onShown` (function): Optional. Callback when the pane has been shown.
|
|
23
|
+
-->
|
|
24
|
+
<script lang="ts">import { uniqueClsx } from '../common/css.js';
|
|
25
|
+
import { noop } from '../common/noop.js';
|
|
26
|
+
import { fade } from 'svelte/transition';
|
|
27
|
+
import { initTabPaneState, TabPaneState } from '../common/nav-tab.svelte.js';
|
|
28
|
+
// Generate a unique ID for the pane element, in case one is not provided...
|
|
29
|
+
const uid = $props.id();
|
|
30
|
+
let { children, class: classValues, doFade = false, elementRef = $bindable(null), id = `tab-pane-${uid}`, isActive = false, onHide = noop, onHidden = noop, onShow = noop, onShown = noop, ...restOfProps } = $props();
|
|
31
|
+
const paneState = initTabPaneState({
|
|
32
|
+
get id() {
|
|
33
|
+
return id;
|
|
34
|
+
},
|
|
35
|
+
get isActive() {
|
|
36
|
+
return isActive;
|
|
37
|
+
}
|
|
38
|
+
});
|
|
39
|
+
let isActiveState = $derived(paneState.root.isTabPaneActive(id));
|
|
40
|
+
let classes = $derived(uniqueClsx('tab-pane', {
|
|
41
|
+
// The "fade" and "show" class is not needed because we are using the Svelte transition
|
|
42
|
+
active: isActiveState
|
|
43
|
+
}, classValues));
|
|
44
|
+
// The active class can only added or removed when the transition is complete.
|
|
45
|
+
const handleShow = (event) => {
|
|
46
|
+
elementRef?.classList.add('active');
|
|
47
|
+
onShow(event);
|
|
48
|
+
};
|
|
49
|
+
const handleHide = (event) => {
|
|
50
|
+
elementRef?.classList.remove('active');
|
|
51
|
+
onHide(event);
|
|
52
|
+
};
|
|
53
|
+
</script>
|
|
54
|
+
|
|
55
|
+
{#if isActiveState}
|
|
56
|
+
<div
|
|
57
|
+
aria-hidden={!isActiveState}
|
|
58
|
+
aria-labelledby={paneState.ariaLabelledBy}
|
|
59
|
+
bind:this={elementRef}
|
|
60
|
+
class={classes}
|
|
61
|
+
hidden={!isActiveState}
|
|
62
|
+
{id}
|
|
63
|
+
onintrostart={doFade ? handleShow : onShow}
|
|
64
|
+
onintroend={onShown}
|
|
65
|
+
onoutrostart={doFade ? handleHide : onHide}
|
|
66
|
+
onoutroend={onHidden}
|
|
67
|
+
role="tabpanel"
|
|
68
|
+
transition:fade={{ duration: doFade ? 500 : 0 }}
|
|
69
|
+
{...restOfProps}>
|
|
70
|
+
{@render children?.()}
|
|
71
|
+
</div>
|
|
72
|
+
{/if}
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
import type { Tab } from './index.js';
|
|
2
|
+
/**
|
|
3
|
+
* ## Tab.Pane
|
|
4
|
+
* Content pane for a tab. Used inside Tab.Root.
|
|
5
|
+
*
|
|
6
|
+
* @example
|
|
7
|
+
* ```svelte
|
|
8
|
+
* <Tab.Pane id="home" isActive={true} doFade={true}>
|
|
9
|
+
* Content for home tab
|
|
10
|
+
* </Tab.Pane>
|
|
11
|
+
* ```
|
|
12
|
+
*
|
|
13
|
+
* ### Props
|
|
14
|
+
* - `class` (string): Optional. Additional CSS classes.
|
|
15
|
+
* - `elementRef` (HTMLElement): Optional. Reference to the DOM element.
|
|
16
|
+
* - `doFade` (boolean): Optional. Whether to use fade transition. Defaults to false.
|
|
17
|
+
* - `id` (string): Required. ID matching the href of a Nav.Link.
|
|
18
|
+
* - `isActive` (boolean): Optional. Whether the pane is initially visible.
|
|
19
|
+
* - `onHide` (function): Optional. Callback when the pane is about to be hidden.
|
|
20
|
+
* - `onHidden` (function): Optional. Callback when the pane has been hidden.
|
|
21
|
+
* - `onShow` (function): Optional. Callback when the pane is about to be shown.
|
|
22
|
+
* - `onShown` (function): Optional. Callback when the pane has been shown.
|
|
23
|
+
*/
|
|
24
|
+
declare const TabPane: import("svelte").Component<Tab.PaneProps, {}, "elementRef">;
|
|
25
|
+
type TabPane = ReturnType<typeof TabPane>;
|
|
26
|
+
export default TabPane;
|
|
@@ -0,0 +1,63 @@
|
|
|
1
|
+
<!--
|
|
2
|
+
@component
|
|
3
|
+
## Tab.Root
|
|
4
|
+
Root component for tab content. Used with tabs navigation.
|
|
5
|
+
|
|
6
|
+
@example
|
|
7
|
+
```svelte
|
|
8
|
+
<Tab.Root>
|
|
9
|
+
<Nav.Root data-testid="nav-tabs" itemStyle="tabs">
|
|
10
|
+
<Nav.Item>
|
|
11
|
+
<Nav.Link href="#home-tabpane" id="home-navlink" isActive={true}>Home</Nav.Link>
|
|
12
|
+
</Nav.Item>
|
|
13
|
+
<Nav.Item>
|
|
14
|
+
<Nav.Link href="#profile-tabpane" id="profile-navlink">Profile</Nav.Link>
|
|
15
|
+
</Nav.Item>
|
|
16
|
+
<Nav.Item>
|
|
17
|
+
<Nav.Link href="#contact-tabpane" id="contact-navlink">Contact</Nav.Link>
|
|
18
|
+
</Nav.Item>
|
|
19
|
+
<Nav.Item>
|
|
20
|
+
<Nav.Link href="#disabled-tabpane" id="disabled-navlink" isDisabled={true}>Disabled</Nav.Link>
|
|
21
|
+
</Nav.Item>
|
|
22
|
+
</Nav.Root>
|
|
23
|
+
<Tab.Content data-testid="tab-content-container">
|
|
24
|
+
<Tab.Pane data-testid="home-content" id="home-tabpane" isActive={true}>
|
|
25
|
+
<h5 class="mt-3">Home Content</h5>
|
|
26
|
+
<p>This is the home content panel.</p>
|
|
27
|
+
</Tab.Pane>
|
|
28
|
+
<Tab.Pane data-testid="profile-content" id="profile-tabpane">
|
|
29
|
+
<h5 class="mt-3">Profile Content</h5>
|
|
30
|
+
<p>This is the profile content panel.</p>
|
|
31
|
+
</Tab.Pane>
|
|
32
|
+
<Tab.Pane data-testid="contact-content" id="contact-tabpane">
|
|
33
|
+
<h5 class="mt-3">Contact Content</h5>
|
|
34
|
+
<p>This is the contact content panel.</p>
|
|
35
|
+
</Tab.Pane>
|
|
36
|
+
<Tab.Pane data-testid="disabled-content" id="disabled-tabpane">
|
|
37
|
+
<h5 class="mt-3">Disabled Content</h5>
|
|
38
|
+
<p>This is the disabled content panel.</p>
|
|
39
|
+
</Tab.Pane>
|
|
40
|
+
</Tab.Content>
|
|
41
|
+
</Tab.Root>
|
|
42
|
+
```
|
|
43
|
+
### Props
|
|
44
|
+
- `class` (string): Optional. Additional CSS classes
|
|
45
|
+
- `elementRef` (HTMLElement): Optional. Reference to the root DOM element
|
|
46
|
+
- `id` (string): Optional. Unique ID for the root element. Defaults to `tab-{uid}`, where `uid` is a unique identifier.
|
|
47
|
+
-->
|
|
48
|
+
<script lang="ts">import { uniqueClsx } from '../common/css.js';
|
|
49
|
+
import { initTabRootState, TabRootState } from '../common/nav-tab.svelte.js';
|
|
50
|
+
// Generate a unique ID for the card element, in case one is not provided...
|
|
51
|
+
const uid = $props.id();
|
|
52
|
+
let { children, class: classValues, elementRef = $bindable(null), id = `tab-${uid}`, ...restOfProps } = $props();
|
|
53
|
+
const _rootState = initTabRootState({
|
|
54
|
+
get id() {
|
|
55
|
+
return id;
|
|
56
|
+
}
|
|
57
|
+
});
|
|
58
|
+
let classes = $derived(uniqueClsx(classValues));
|
|
59
|
+
</script>
|
|
60
|
+
|
|
61
|
+
<div bind:this={elementRef} class={classes} {id} {...restOfProps}>
|
|
62
|
+
{@render children?.()}
|
|
63
|
+
</div>
|