@tessera-ui/core 0.4.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/LICENSE +21 -0
- package/README.md +225 -0
- package/dist/cjs/aria-CeYIvz3U.js +94 -0
- package/dist/cjs/aria-CeYIvz3U.js.map +1 -0
- package/dist/cjs/index-Bel_x2OU.js +2401 -0
- package/dist/cjs/index-Bel_x2OU.js.map +1 -0
- package/dist/cjs/index.cjs.js +155 -0
- package/dist/cjs/index.cjs.js.map +1 -0
- package/dist/cjs/loader.cjs.js +15 -0
- package/dist/cjs/loader.cjs.js.map +1 -0
- package/dist/cjs/lucide-B1gCqJ3G.js +28324 -0
- package/dist/cjs/lucide-B1gCqJ3G.js.map +1 -0
- package/dist/cjs/tessera-ui.cjs.js +27 -0
- package/dist/cjs/tessera-ui.cjs.js.map +1 -0
- package/dist/cjs/ts-accordion-item.cjs.entry.js +65 -0
- package/dist/cjs/ts-accordion-item.cjs.entry.js.map +1 -0
- package/dist/cjs/ts-accordion.cjs.entry.js +36 -0
- package/dist/cjs/ts-accordion.cjs.entry.js.map +1 -0
- package/dist/cjs/ts-alert.cjs.entry.js +60 -0
- package/dist/cjs/ts-alert.cjs.entry.js.map +1 -0
- package/dist/cjs/ts-avatar.cjs.entry.js +54 -0
- package/dist/cjs/ts-avatar.cjs.entry.js.map +1 -0
- package/dist/cjs/ts-badge.cjs.entry.js +38 -0
- package/dist/cjs/ts-badge.cjs.entry.js.map +1 -0
- package/dist/cjs/ts-banner.cjs.entry.js +67 -0
- package/dist/cjs/ts-banner.cjs.entry.js.map +1 -0
- package/dist/cjs/ts-breadcrumb-item.cjs.entry.js +28 -0
- package/dist/cjs/ts-breadcrumb-item.cjs.entry.js.map +1 -0
- package/dist/cjs/ts-breadcrumb.cjs.entry.js +35 -0
- package/dist/cjs/ts-breadcrumb.cjs.entry.js.map +1 -0
- package/dist/cjs/ts-button.cjs.entry.js +88 -0
- package/dist/cjs/ts-button.cjs.entry.js.map +1 -0
- package/dist/cjs/ts-card.cjs.entry.js +35 -0
- package/dist/cjs/ts-card.cjs.entry.js.map +1 -0
- package/dist/cjs/ts-checkbox.cjs.entry.js +68 -0
- package/dist/cjs/ts-checkbox.cjs.entry.js.map +1 -0
- package/dist/cjs/ts-chip.cjs.entry.js +76 -0
- package/dist/cjs/ts-chip.cjs.entry.js.map +1 -0
- package/dist/cjs/ts-container.cjs.entry.js +28 -0
- package/dist/cjs/ts-container.cjs.entry.js.map +1 -0
- package/dist/cjs/ts-date-picker.cjs.entry.js +229 -0
- package/dist/cjs/ts-date-picker.cjs.entry.js.map +1 -0
- package/dist/cjs/ts-dialog.cjs.entry.js +109 -0
- package/dist/cjs/ts-dialog.cjs.entry.js.map +1 -0
- package/dist/cjs/ts-divider.cjs.entry.js +33 -0
- package/dist/cjs/ts-divider.cjs.entry.js.map +1 -0
- package/dist/cjs/ts-drawer.cjs.entry.js +113 -0
- package/dist/cjs/ts-drawer.cjs.entry.js.map +1 -0
- package/dist/cjs/ts-empty-state.cjs.entry.js +32 -0
- package/dist/cjs/ts-empty-state.cjs.entry.js.map +1 -0
- package/dist/cjs/ts-file-upload.cjs.entry.js +122 -0
- package/dist/cjs/ts-file-upload.cjs.entry.js.map +1 -0
- package/dist/cjs/ts-grid.cjs.entry.js +37 -0
- package/dist/cjs/ts-grid.cjs.entry.js.map +1 -0
- package/dist/cjs/ts-icon-CfbhgAgr.js +161 -0
- package/dist/cjs/ts-icon-CfbhgAgr.js.map +1 -0
- package/dist/cjs/ts-icon.cjs.entry.js +11 -0
- package/dist/cjs/ts-icon.cjs.entry.js.map +1 -0
- package/dist/cjs/ts-input.cjs.entry.js +130 -0
- package/dist/cjs/ts-input.cjs.entry.js.map +1 -0
- package/dist/cjs/ts-menu-item.cjs.entry.js +65 -0
- package/dist/cjs/ts-menu-item.cjs.entry.js.map +1 -0
- package/dist/cjs/ts-menu.cjs.entry.js +155 -0
- package/dist/cjs/ts-menu.cjs.entry.js.map +1 -0
- package/dist/cjs/ts-modal.cjs.entry.js +122 -0
- package/dist/cjs/ts-modal.cjs.entry.js.map +1 -0
- package/dist/cjs/ts-nav-item.cjs.entry.js +48 -0
- package/dist/cjs/ts-nav-item.cjs.entry.js.map +1 -0
- package/dist/cjs/ts-nav.cjs.entry.js +29 -0
- package/dist/cjs/ts-nav.cjs.entry.js.map +1 -0
- package/dist/cjs/ts-pagination.cjs.entry.js +88 -0
- package/dist/cjs/ts-pagination.cjs.entry.js.map +1 -0
- package/dist/cjs/ts-popover.cjs.entry.js +133 -0
- package/dist/cjs/ts-popover.cjs.entry.js.map +1 -0
- package/dist/cjs/ts-progress.cjs.entry.js +46 -0
- package/dist/cjs/ts-progress.cjs.entry.js.map +1 -0
- package/dist/cjs/ts-radio.cjs.entry.js +60 -0
- package/dist/cjs/ts-radio.cjs.entry.js.map +1 -0
- package/dist/cjs/ts-row.cjs.entry.js +53 -0
- package/dist/cjs/ts-row.cjs.entry.js.map +1 -0
- package/dist/cjs/ts-select.cjs.entry.js +221 -0
- package/dist/cjs/ts-select.cjs.entry.js.map +1 -0
- package/dist/cjs/ts-skeleton.cjs.entry.js +55 -0
- package/dist/cjs/ts-skeleton.cjs.entry.js.map +1 -0
- package/dist/cjs/ts-slider.cjs.entry.js +132 -0
- package/dist/cjs/ts-slider.cjs.entry.js.map +1 -0
- package/dist/cjs/ts-spacer.cjs.entry.js +28 -0
- package/dist/cjs/ts-spacer.cjs.entry.js.map +1 -0
- package/dist/cjs/ts-spinner.cjs.entry.js +30 -0
- package/dist/cjs/ts-spinner.cjs.entry.js.map +1 -0
- package/dist/cjs/ts-stack.cjs.entry.js +34 -0
- package/dist/cjs/ts-stack.cjs.entry.js.map +1 -0
- package/dist/cjs/ts-step.cjs.entry.js +74 -0
- package/dist/cjs/ts-step.cjs.entry.js.map +1 -0
- package/dist/cjs/ts-stepper.cjs.entry.js +67 -0
- package/dist/cjs/ts-stepper.cjs.entry.js.map +1 -0
- package/dist/cjs/ts-switch-group.cjs.entry.js +109 -0
- package/dist/cjs/ts-switch-group.cjs.entry.js.map +1 -0
- package/dist/cjs/ts-switch-option.cjs.entry.js +42 -0
- package/dist/cjs/ts-switch-option.cjs.entry.js.map +1 -0
- package/dist/cjs/ts-tab-panel.cjs.entry.js +30 -0
- package/dist/cjs/ts-tab-panel.cjs.entry.js.map +1 -0
- package/dist/cjs/ts-table.cjs.entry.js +39 -0
- package/dist/cjs/ts-table.cjs.entry.js.map +1 -0
- package/dist/cjs/ts-tabs.cjs.entry.js +124 -0
- package/dist/cjs/ts-tabs.cjs.entry.js.map +1 -0
- package/dist/cjs/ts-textarea.cjs.entry.js +117 -0
- package/dist/cjs/ts-textarea.cjs.entry.js.map +1 -0
- package/dist/cjs/ts-toast.cjs.entry.js +107 -0
- package/dist/cjs/ts-toast.cjs.entry.js.map +1 -0
- package/dist/cjs/ts-toggle.cjs.entry.js +58 -0
- package/dist/cjs/ts-toggle.cjs.entry.js.map +1 -0
- package/dist/cjs/ts-toolbar.cjs.entry.js +29 -0
- package/dist/cjs/ts-toolbar.cjs.entry.js.map +1 -0
- package/dist/cjs/ts-tooltip.cjs.entry.js +82 -0
- package/dist/cjs/ts-tooltip.cjs.entry.js.map +1 -0
- package/dist/cjs/ts-tree-item.cjs.entry.js +94 -0
- package/dist/cjs/ts-tree-item.cjs.entry.js.map +1 -0
- package/dist/cjs/ts-tree.cjs.entry.js +81 -0
- package/dist/cjs/ts-tree.cjs.entry.js.map +1 -0
- package/dist/collection/collection-manifest.json +64 -0
- package/dist/collection/components/accordion/accordion-item.css +75 -0
- package/dist/collection/components/accordion/accordion-item.js +157 -0
- package/dist/collection/components/accordion/accordion-item.js.map +1 -0
- package/dist/collection/components/accordion/accordion-item.stories.js +4 -0
- package/dist/collection/components/accordion/accordion-item.stories.js.map +1 -0
- package/dist/collection/components/accordion/accordion.css +31 -0
- package/dist/collection/components/accordion/accordion.js +72 -0
- package/dist/collection/components/accordion/accordion.js.map +1 -0
- package/dist/collection/components/accordion/accordion.stories.js +90 -0
- package/dist/collection/components/accordion/accordion.stories.js.map +1 -0
- package/dist/collection/components/alert/alert.css +118 -0
- package/dist/collection/components/alert/alert.js +181 -0
- package/dist/collection/components/alert/alert.js.map +1 -0
- package/dist/collection/components/alert/alert.stories.js +128 -0
- package/dist/collection/components/alert/alert.stories.js.map +1 -0
- package/dist/collection/components/avatar/avatar.css +63 -0
- package/dist/collection/components/avatar/avatar.js +185 -0
- package/dist/collection/components/avatar/avatar.js.map +1 -0
- package/dist/collection/components/avatar/avatar.stories.js +138 -0
- package/dist/collection/components/avatar/avatar.stories.js.map +1 -0
- package/dist/collection/components/badge/badge.css +67 -0
- package/dist/collection/components/badge/badge.js +160 -0
- package/dist/collection/components/badge/badge.js.map +1 -0
- package/dist/collection/components/badge/badge.stories.js +193 -0
- package/dist/collection/components/badge/badge.stories.js.map +1 -0
- package/dist/collection/components/banner/banner.css +129 -0
- package/dist/collection/components/banner/banner.js +226 -0
- package/dist/collection/components/banner/banner.js.map +1 -0
- package/dist/collection/components/banner/banner.stories.js +92 -0
- package/dist/collection/components/banner/banner.stories.js.map +1 -0
- package/dist/collection/components/breadcrumb/breadcrumb-item.css +44 -0
- package/dist/collection/components/breadcrumb/breadcrumb-item.js +95 -0
- package/dist/collection/components/breadcrumb/breadcrumb-item.js.map +1 -0
- package/dist/collection/components/breadcrumb/breadcrumb-item.stories.js +4 -0
- package/dist/collection/components/breadcrumb/breadcrumb-item.stories.js.map +1 -0
- package/dist/collection/components/breadcrumb/breadcrumb.css +26 -0
- package/dist/collection/components/breadcrumb/breadcrumb.js +65 -0
- package/dist/collection/components/breadcrumb/breadcrumb.js.map +1 -0
- package/dist/collection/components/breadcrumb/breadcrumb.stories.js +88 -0
- package/dist/collection/components/breadcrumb/breadcrumb.stories.js.map +1 -0
- package/dist/collection/components/button/button.css +260 -0
- package/dist/collection/components/button/button.js +347 -0
- package/dist/collection/components/button/button.js.map +1 -0
- package/dist/collection/components/button/button.stories.js +219 -0
- package/dist/collection/components/button/button.stories.js.map +1 -0
- package/dist/collection/components/card/card.css +108 -0
- package/dist/collection/components/card/card.js +130 -0
- package/dist/collection/components/card/card.js.map +1 -0
- package/dist/collection/components/card/card.stories.js +221 -0
- package/dist/collection/components/card/card.stories.js.map +1 -0
- package/dist/collection/components/checkbox/checkbox.css +115 -0
- package/dist/collection/components/checkbox/checkbox.js +282 -0
- package/dist/collection/components/checkbox/checkbox.js.map +1 -0
- package/dist/collection/components/checkbox/checkbox.stories.js +90 -0
- package/dist/collection/components/checkbox/checkbox.stories.js.map +1 -0
- package/dist/collection/components/chip/chip.css +210 -0
- package/dist/collection/components/chip/chip.js +253 -0
- package/dist/collection/components/chip/chip.js.map +1 -0
- package/dist/collection/components/chip/chip.stories.js +139 -0
- package/dist/collection/components/chip/chip.stories.js.map +1 -0
- package/dist/collection/components/container/container.css +47 -0
- package/dist/collection/components/container/container.js +76 -0
- package/dist/collection/components/container/container.js.map +1 -0
- package/dist/collection/components/container/container.stories.js +138 -0
- package/dist/collection/components/container/container.stories.js.map +1 -0
- package/dist/collection/components/date-picker/date-picker.css +233 -0
- package/dist/collection/components/date-picker/date-picker.js +462 -0
- package/dist/collection/components/date-picker/date-picker.js.map +1 -0
- package/dist/collection/components/date-picker/date-picker.stories.js +119 -0
- package/dist/collection/components/date-picker/date-picker.stories.js.map +1 -0
- package/dist/collection/components/dialog/dialog.css +128 -0
- package/dist/collection/components/dialog/dialog.js +264 -0
- package/dist/collection/components/dialog/dialog.js.map +1 -0
- package/dist/collection/components/dialog/dialog.stories.js +147 -0
- package/dist/collection/components/dialog/dialog.stories.js.map +1 -0
- package/dist/collection/components/divider/divider.css +94 -0
- package/dist/collection/components/divider/divider.js +99 -0
- package/dist/collection/components/divider/divider.js.map +1 -0
- package/dist/collection/components/divider/divider.stories.js +94 -0
- package/dist/collection/components/divider/divider.stories.js.map +1 -0
- package/dist/collection/components/drawer/drawer.css +202 -0
- package/dist/collection/components/drawer/drawer.js +288 -0
- package/dist/collection/components/drawer/drawer.js.map +1 -0
- package/dist/collection/components/drawer/drawer.stories.js +143 -0
- package/dist/collection/components/drawer/drawer.stories.js.map +1 -0
- package/dist/collection/components/empty-state/empty-state.css +112 -0
- package/dist/collection/components/empty-state/empty-state.js +131 -0
- package/dist/collection/components/empty-state/empty-state.js.map +1 -0
- package/dist/collection/components/empty-state/empty-state.stories.js +113 -0
- package/dist/collection/components/empty-state/empty-state.stories.js.map +1 -0
- package/dist/collection/components/file-upload/file-upload.css +84 -0
- package/dist/collection/components/file-upload/file-upload.js +277 -0
- package/dist/collection/components/file-upload/file-upload.js.map +1 -0
- package/dist/collection/components/file-upload/file-upload.stories.js +107 -0
- package/dist/collection/components/file-upload/file-upload.stories.js.map +1 -0
- package/dist/collection/components/grid/grid.css +11 -0
- package/dist/collection/components/grid/grid.js +125 -0
- package/dist/collection/components/grid/grid.js.map +1 -0
- package/dist/collection/components/grid/grid.stories.js +134 -0
- package/dist/collection/components/grid/grid.stories.js.map +1 -0
- package/dist/collection/components/icon/icon-registry.js +39 -0
- package/dist/collection/components/icon/icon-registry.js.map +1 -0
- package/dist/collection/components/icon/icon.css +54 -0
- package/dist/collection/components/icon/icon.js +239 -0
- package/dist/collection/components/icon/icon.js.map +1 -0
- package/dist/collection/components/icon/icon.stories.js +119 -0
- package/dist/collection/components/icon/icon.stories.js.map +1 -0
- package/dist/collection/components/input/input.css +155 -0
- package/dist/collection/components/input/input.js +583 -0
- package/dist/collection/components/input/input.js.map +1 -0
- package/dist/collection/components/input/input.stories.js +151 -0
- package/dist/collection/components/input/input.stories.js.map +1 -0
- package/dist/collection/components/menu/menu-item.css +77 -0
- package/dist/collection/components/menu/menu-item.js +176 -0
- package/dist/collection/components/menu/menu-item.js.map +1 -0
- package/dist/collection/components/menu/menu-item.stories.js +4 -0
- package/dist/collection/components/menu/menu-item.stories.js.map +1 -0
- package/dist/collection/components/menu/menu.css +81 -0
- package/dist/collection/components/menu/menu.js +295 -0
- package/dist/collection/components/menu/menu.js.map +1 -0
- package/dist/collection/components/menu/menu.stories.js +126 -0
- package/dist/collection/components/menu/menu.stories.js.map +1 -0
- package/dist/collection/components/modal/modal.css +131 -0
- package/dist/collection/components/modal/modal.js +339 -0
- package/dist/collection/components/modal/modal.js.map +1 -0
- package/dist/collection/components/modal/modal.stories.js +233 -0
- package/dist/collection/components/modal/modal.stories.js.map +1 -0
- package/dist/collection/components/nav/nav-item.css +73 -0
- package/dist/collection/components/nav/nav-item.js +154 -0
- package/dist/collection/components/nav/nav-item.js.map +1 -0
- package/dist/collection/components/nav/nav-item.stories.js +4 -0
- package/dist/collection/components/nav/nav-item.stories.js.map +1 -0
- package/dist/collection/components/nav/nav.css +48 -0
- package/dist/collection/components/nav/nav.js +78 -0
- package/dist/collection/components/nav/nav.js.map +1 -0
- package/dist/collection/components/nav/nav.stories.js +106 -0
- package/dist/collection/components/nav/nav.stories.js.map +1 -0
- package/dist/collection/components/pagination/pagination.css +102 -0
- package/dist/collection/components/pagination/pagination.js +220 -0
- package/dist/collection/components/pagination/pagination.js.map +1 -0
- package/dist/collection/components/pagination/pagination.stories.js +92 -0
- package/dist/collection/components/pagination/pagination.stories.js.map +1 -0
- package/dist/collection/components/popover/popover.css +150 -0
- package/dist/collection/components/popover/popover.js +305 -0
- package/dist/collection/components/popover/popover.js.map +1 -0
- package/dist/collection/components/popover/popover.stories.js +112 -0
- package/dist/collection/components/popover/popover.stories.js.map +1 -0
- package/dist/collection/components/progress/progress.css +89 -0
- package/dist/collection/components/progress/progress.js +205 -0
- package/dist/collection/components/progress/progress.js.map +1 -0
- package/dist/collection/components/progress/progress.stories.js +132 -0
- package/dist/collection/components/progress/progress.stories.js.map +1 -0
- package/dist/collection/components/radio/radio.css +110 -0
- package/dist/collection/components/radio/radio.js +234 -0
- package/dist/collection/components/radio/radio.js.map +1 -0
- package/dist/collection/components/radio/radio.stories.js +77 -0
- package/dist/collection/components/radio/radio.stories.js.map +1 -0
- package/dist/collection/components/row/row.css +42 -0
- package/dist/collection/components/row/row.js +179 -0
- package/dist/collection/components/row/row.js.map +1 -0
- package/dist/collection/components/row/row.stories.js +172 -0
- package/dist/collection/components/row/row.stories.js.map +1 -0
- package/dist/collection/components/select/select.css +200 -0
- package/dist/collection/components/select/select.js +527 -0
- package/dist/collection/components/select/select.js.map +1 -0
- package/dist/collection/components/select/select.stories.js +138 -0
- package/dist/collection/components/select/select.stories.js.map +1 -0
- package/dist/collection/components/skeleton/skeleton.css +89 -0
- package/dist/collection/components/skeleton/skeleton.js +161 -0
- package/dist/collection/components/skeleton/skeleton.js.map +1 -0
- package/dist/collection/components/skeleton/skeleton.stories.js +140 -0
- package/dist/collection/components/skeleton/skeleton.stories.js.map +1 -0
- package/dist/collection/components/slider/slider.css +123 -0
- package/dist/collection/components/slider/slider.js +344 -0
- package/dist/collection/components/slider/slider.js.map +1 -0
- package/dist/collection/components/slider/slider.stories.js +100 -0
- package/dist/collection/components/slider/slider.stories.js.map +1 -0
- package/dist/collection/components/spacer/spacer.css +13 -0
- package/dist/collection/components/spacer/spacer.js +74 -0
- package/dist/collection/components/spacer/spacer.js.map +1 -0
- package/dist/collection/components/spacer/spacer.stories.js +90 -0
- package/dist/collection/components/spacer/spacer.stories.js.map +1 -0
- package/dist/collection/components/spinner/spinner.css +49 -0
- package/dist/collection/components/spinner/spinner.js +98 -0
- package/dist/collection/components/spinner/spinner.js.map +1 -0
- package/dist/collection/components/spinner/spinner.stories.js +88 -0
- package/dist/collection/components/spinner/spinner.stories.js.map +1 -0
- package/dist/collection/components/stack/stack.css +10 -0
- package/dist/collection/components/stack/stack.js +82 -0
- package/dist/collection/components/stack/stack.js.map +1 -0
- package/dist/collection/components/stack/stack.stories.js +121 -0
- package/dist/collection/components/stack/stack.stories.js.map +1 -0
- package/dist/collection/components/stepper/step.css +172 -0
- package/dist/collection/components/stepper/step.js +205 -0
- package/dist/collection/components/stepper/step.js.map +1 -0
- package/dist/collection/components/stepper/step.stories.js +4 -0
- package/dist/collection/components/stepper/step.stories.js.map +1 -0
- package/dist/collection/components/stepper/stepper.css +32 -0
- package/dist/collection/components/stepper/stepper.js +137 -0
- package/dist/collection/components/stepper/stepper.js.map +1 -0
- package/dist/collection/components/stepper/stepper.stories.js +130 -0
- package/dist/collection/components/stepper/stepper.stories.js.map +1 -0
- package/dist/collection/components/switch-group/switch-group.css +51 -0
- package/dist/collection/components/switch-group/switch-group.js +237 -0
- package/dist/collection/components/switch-group/switch-group.js.map +1 -0
- package/dist/collection/components/switch-group/switch-group.stories.js +132 -0
- package/dist/collection/components/switch-group/switch-group.stories.js.map +1 -0
- package/dist/collection/components/switch-group/switch-option.css +64 -0
- package/dist/collection/components/switch-group/switch-option.js +150 -0
- package/dist/collection/components/switch-group/switch-option.js.map +1 -0
- package/dist/collection/components/switch-group/switch-option.stories.js +4 -0
- package/dist/collection/components/switch-group/switch-option.stories.js.map +1 -0
- package/dist/collection/components/table/table.css +112 -0
- package/dist/collection/components/table/table.js +151 -0
- package/dist/collection/components/table/table.js.map +1 -0
- package/dist/collection/components/table/table.stories.js +147 -0
- package/dist/collection/components/table/table.stories.js.map +1 -0
- package/dist/collection/components/tabs/tab-panel.css +11 -0
- package/dist/collection/components/tabs/tab-panel.js +116 -0
- package/dist/collection/components/tabs/tab-panel.js.map +1 -0
- package/dist/collection/components/tabs/tab-panel.stories.js +4 -0
- package/dist/collection/components/tabs/tab-panel.stories.js.map +1 -0
- package/dist/collection/components/tabs/tabs.css +134 -0
- package/dist/collection/components/tabs/tabs.js +213 -0
- package/dist/collection/components/tabs/tabs.js.map +1 -0
- package/dist/collection/components/tabs/tabs.stories.js +187 -0
- package/dist/collection/components/tabs/tabs.stories.js.map +1 -0
- package/dist/collection/components/textarea/textarea.css +146 -0
- package/dist/collection/components/textarea/textarea.js +526 -0
- package/dist/collection/components/textarea/textarea.js.map +1 -0
- package/dist/collection/components/textarea/textarea.stories.js +130 -0
- package/dist/collection/components/textarea/textarea.stories.js.map +1 -0
- package/dist/collection/components/toast/toast.css +166 -0
- package/dist/collection/components/toast/toast.js +291 -0
- package/dist/collection/components/toast/toast.js.map +1 -0
- package/dist/collection/components/toast/toast.stories.js +91 -0
- package/dist/collection/components/toast/toast.stories.js.map +1 -0
- package/dist/collection/components/toggle/toggle.css +99 -0
- package/dist/collection/components/toggle/toggle.js +220 -0
- package/dist/collection/components/toggle/toggle.js.map +1 -0
- package/dist/collection/components/toggle/toggle.stories.js +145 -0
- package/dist/collection/components/toggle/toggle.stories.js.map +1 -0
- package/dist/collection/components/toolbar/toolbar.css +89 -0
- package/dist/collection/components/toolbar/toolbar.js +89 -0
- package/dist/collection/components/toolbar/toolbar.js.map +1 -0
- package/dist/collection/components/toolbar/toolbar.stories.js +131 -0
- package/dist/collection/components/toolbar/toolbar.stories.js.map +1 -0
- package/dist/collection/components/tooltip/tooltip.css +124 -0
- package/dist/collection/components/tooltip/tooltip.js +242 -0
- package/dist/collection/components/tooltip/tooltip.js.map +1 -0
- package/dist/collection/components/tooltip/tooltip.stories.js +186 -0
- package/dist/collection/components/tooltip/tooltip.stories.js.map +1 -0
- package/dist/collection/components/tree/tree-item.css +97 -0
- package/dist/collection/components/tree/tree-item.js +242 -0
- package/dist/collection/components/tree/tree-item.js.map +1 -0
- package/dist/collection/components/tree/tree-item.stories.js +4 -0
- package/dist/collection/components/tree/tree-item.stories.js.map +1 -0
- package/dist/collection/components/tree/tree.css +23 -0
- package/dist/collection/components/tree/tree.js +119 -0
- package/dist/collection/components/tree/tree.js.map +1 -0
- package/dist/collection/components/tree/tree.stories.js +121 -0
- package/dist/collection/components/tree/tree.stories.js.map +1 -0
- package/dist/collection/index.js +53 -0
- package/dist/collection/index.js.map +1 -0
- package/dist/collection/theme/tokens.js +109 -0
- package/dist/collection/theme/tokens.js.map +1 -0
- package/dist/collection/types/index.js +2 -0
- package/dist/collection/types/index.js.map +1 -0
- package/dist/collection/utils/aria.js +89 -0
- package/dist/collection/utils/aria.js.map +1 -0
- package/dist/collection/utils/dom.js +42 -0
- package/dist/collection/utils/dom.js.map +1 -0
- package/dist/collection/utils/events.js +20 -0
- package/dist/collection/utils/events.js.map +1 -0
- package/dist/components/index.d.ts +35 -0
- package/dist/components/index.js +2 -0
- package/dist/components/index.js.map +1 -0
- package/dist/components/p-6RDSLDuS.js +2 -0
- package/dist/components/p-6RDSLDuS.js.map +1 -0
- package/dist/components/p-B0ZXNFSa.js +2 -0
- package/dist/components/p-B0ZXNFSa.js.map +1 -0
- package/dist/components/p-BCgm2utU.js +2 -0
- package/dist/components/p-BCgm2utU.js.map +1 -0
- package/dist/components/p-BFN5hUo4.js +2 -0
- package/dist/components/p-BFN5hUo4.js.map +1 -0
- package/dist/components/p-BOxYojS-.js +9572 -0
- package/dist/components/p-BOxYojS-.js.map +1 -0
- package/dist/components/p-BP-fZfRb.js +2 -0
- package/dist/components/p-BP-fZfRb.js.map +1 -0
- package/dist/components/p-B_NL55YI.js +2 -0
- package/dist/components/p-B_NL55YI.js.map +1 -0
- package/dist/components/p-BcoU0ISN.js +2 -0
- package/dist/components/p-BcoU0ISN.js.map +1 -0
- package/dist/components/p-BdzH6wlc.js +2 -0
- package/dist/components/p-BdzH6wlc.js.map +1 -0
- package/dist/components/p-BeErYjKz.js +2 -0
- package/dist/components/p-BeErYjKz.js.map +1 -0
- package/dist/components/p-BjiDgszq.js +2 -0
- package/dist/components/p-BjiDgszq.js.map +1 -0
- package/dist/components/p-BjyTgfXe.js +2 -0
- package/dist/components/p-BjyTgfXe.js.map +1 -0
- package/dist/components/p-BlZHjan9.js +2 -0
- package/dist/components/p-BlZHjan9.js.map +1 -0
- package/dist/components/p-C7JaUlNB.js +2 -0
- package/dist/components/p-C7JaUlNB.js.map +1 -0
- package/dist/components/p-C8wd1644.js +2 -0
- package/dist/components/p-C8wd1644.js.map +1 -0
- package/dist/components/p-CEQXPxzU.js +2 -0
- package/dist/components/p-CEQXPxzU.js.map +1 -0
- package/dist/components/p-CGh7W07E.js +2 -0
- package/dist/components/p-CGh7W07E.js.map +1 -0
- package/dist/components/p-CHtE5caV.js +2 -0
- package/dist/components/p-CHtE5caV.js.map +1 -0
- package/dist/components/p-CSNeA_zh.js +2 -0
- package/dist/components/p-CSNeA_zh.js.map +1 -0
- package/dist/components/p-CbHlJvjF.js +2 -0
- package/dist/components/p-CbHlJvjF.js.map +1 -0
- package/dist/components/p-CkQOAizb.js +2 -0
- package/dist/components/p-CkQOAizb.js.map +1 -0
- package/dist/components/p-Cy_Ad-Jy.js +2 -0
- package/dist/components/p-Cy_Ad-Jy.js.map +1 -0
- package/dist/components/p-DD986daz.js +2 -0
- package/dist/components/p-DD986daz.js.map +1 -0
- package/dist/components/p-DFnNsZtI.js +2 -0
- package/dist/components/p-DFnNsZtI.js.map +1 -0
- package/dist/components/p-DMPxu5Po.js +2 -0
- package/dist/components/p-DMPxu5Po.js.map +1 -0
- package/dist/components/p-DMuI5d5r.js +2 -0
- package/dist/components/p-DMuI5d5r.js.map +1 -0
- package/dist/components/p-DPQ1o4MP.js +2 -0
- package/dist/components/p-DPQ1o4MP.js.map +1 -0
- package/dist/components/p-DTAVTqnc.js +2 -0
- package/dist/components/p-DTAVTqnc.js.map +1 -0
- package/dist/components/p-DhQ7X_TL.js +2 -0
- package/dist/components/p-DhQ7X_TL.js.map +1 -0
- package/dist/components/p-DkpyRqHf.js +2 -0
- package/dist/components/p-DkpyRqHf.js.map +1 -0
- package/dist/components/p-DlB-KfKY.js +2 -0
- package/dist/components/p-DlB-KfKY.js.map +1 -0
- package/dist/components/p-DooMF1E0.js +2 -0
- package/dist/components/p-DooMF1E0.js.map +1 -0
- package/dist/components/p-DwJ7Jt3k.js +2 -0
- package/dist/components/p-DwJ7Jt3k.js.map +1 -0
- package/dist/components/p-DwUH8YQW.js +2 -0
- package/dist/components/p-DwUH8YQW.js.map +1 -0
- package/dist/components/p-Fot2uNwg.js +2 -0
- package/dist/components/p-Fot2uNwg.js.map +1 -0
- package/dist/components/p-O8aQgWRZ.js +2 -0
- package/dist/components/p-O8aQgWRZ.js.map +1 -0
- package/dist/components/p-SopsdO_f.js +2 -0
- package/dist/components/p-SopsdO_f.js.map +1 -0
- package/dist/components/p-TFHAUMKT.js +2 -0
- package/dist/components/p-TFHAUMKT.js.map +1 -0
- package/dist/components/p-faVXXwqR.js +2 -0
- package/dist/components/p-faVXXwqR.js.map +1 -0
- package/dist/components/p-lpqZSiIf.js +2 -0
- package/dist/components/p-lpqZSiIf.js.map +1 -0
- package/dist/components/p-mfB_pP4L.js +2 -0
- package/dist/components/p-mfB_pP4L.js.map +1 -0
- package/dist/components/p-v-L32wKy.js +2 -0
- package/dist/components/p-v-L32wKy.js.map +1 -0
- package/dist/components/p-zveaarwa.js +2 -0
- package/dist/components/p-zveaarwa.js.map +1 -0
- package/dist/components/ts-accordion-item.d.ts +11 -0
- package/dist/components/ts-accordion-item.js +2 -0
- package/dist/components/ts-accordion-item.js.map +1 -0
- package/dist/components/ts-accordion.d.ts +11 -0
- package/dist/components/ts-accordion.js +2 -0
- package/dist/components/ts-accordion.js.map +1 -0
- package/dist/components/ts-alert.d.ts +11 -0
- package/dist/components/ts-alert.js +2 -0
- package/dist/components/ts-alert.js.map +1 -0
- package/dist/components/ts-avatar.d.ts +11 -0
- package/dist/components/ts-avatar.js +2 -0
- package/dist/components/ts-avatar.js.map +1 -0
- package/dist/components/ts-badge.d.ts +11 -0
- package/dist/components/ts-badge.js +2 -0
- package/dist/components/ts-badge.js.map +1 -0
- package/dist/components/ts-banner.d.ts +11 -0
- package/dist/components/ts-banner.js +2 -0
- package/dist/components/ts-banner.js.map +1 -0
- package/dist/components/ts-breadcrumb-item.d.ts +11 -0
- package/dist/components/ts-breadcrumb-item.js +2 -0
- package/dist/components/ts-breadcrumb-item.js.map +1 -0
- package/dist/components/ts-breadcrumb.d.ts +11 -0
- package/dist/components/ts-breadcrumb.js +2 -0
- package/dist/components/ts-breadcrumb.js.map +1 -0
- package/dist/components/ts-button.d.ts +11 -0
- package/dist/components/ts-button.js +2 -0
- package/dist/components/ts-button.js.map +1 -0
- package/dist/components/ts-card.d.ts +11 -0
- package/dist/components/ts-card.js +2 -0
- package/dist/components/ts-card.js.map +1 -0
- package/dist/components/ts-checkbox.d.ts +11 -0
- package/dist/components/ts-checkbox.js +2 -0
- package/dist/components/ts-checkbox.js.map +1 -0
- package/dist/components/ts-chip.d.ts +11 -0
- package/dist/components/ts-chip.js +2 -0
- package/dist/components/ts-chip.js.map +1 -0
- package/dist/components/ts-container.d.ts +11 -0
- package/dist/components/ts-container.js +2 -0
- package/dist/components/ts-container.js.map +1 -0
- package/dist/components/ts-date-picker.d.ts +11 -0
- package/dist/components/ts-date-picker.js +2 -0
- package/dist/components/ts-date-picker.js.map +1 -0
- package/dist/components/ts-dialog.d.ts +11 -0
- package/dist/components/ts-dialog.js +2 -0
- package/dist/components/ts-dialog.js.map +1 -0
- package/dist/components/ts-divider.d.ts +11 -0
- package/dist/components/ts-divider.js +2 -0
- package/dist/components/ts-divider.js.map +1 -0
- package/dist/components/ts-drawer.d.ts +11 -0
- package/dist/components/ts-drawer.js +2 -0
- package/dist/components/ts-drawer.js.map +1 -0
- package/dist/components/ts-empty-state.d.ts +11 -0
- package/dist/components/ts-empty-state.js +2 -0
- package/dist/components/ts-empty-state.js.map +1 -0
- package/dist/components/ts-file-upload.d.ts +11 -0
- package/dist/components/ts-file-upload.js +2 -0
- package/dist/components/ts-file-upload.js.map +1 -0
- package/dist/components/ts-grid.d.ts +11 -0
- package/dist/components/ts-grid.js +2 -0
- package/dist/components/ts-grid.js.map +1 -0
- package/dist/components/ts-icon.d.ts +11 -0
- package/dist/components/ts-icon.js +2 -0
- package/dist/components/ts-icon.js.map +1 -0
- package/dist/components/ts-input.d.ts +11 -0
- package/dist/components/ts-input.js +2 -0
- package/dist/components/ts-input.js.map +1 -0
- package/dist/components/ts-menu-item.d.ts +11 -0
- package/dist/components/ts-menu-item.js +2 -0
- package/dist/components/ts-menu-item.js.map +1 -0
- package/dist/components/ts-menu.d.ts +11 -0
- package/dist/components/ts-menu.js +2 -0
- package/dist/components/ts-menu.js.map +1 -0
- package/dist/components/ts-modal.d.ts +11 -0
- package/dist/components/ts-modal.js +2 -0
- package/dist/components/ts-modal.js.map +1 -0
- package/dist/components/ts-nav-item.d.ts +11 -0
- package/dist/components/ts-nav-item.js +2 -0
- package/dist/components/ts-nav-item.js.map +1 -0
- package/dist/components/ts-nav.d.ts +11 -0
- package/dist/components/ts-nav.js +2 -0
- package/dist/components/ts-nav.js.map +1 -0
- package/dist/components/ts-pagination.d.ts +11 -0
- package/dist/components/ts-pagination.js +2 -0
- package/dist/components/ts-pagination.js.map +1 -0
- package/dist/components/ts-popover.d.ts +11 -0
- package/dist/components/ts-popover.js +2 -0
- package/dist/components/ts-popover.js.map +1 -0
- package/dist/components/ts-progress.d.ts +11 -0
- package/dist/components/ts-progress.js +2 -0
- package/dist/components/ts-progress.js.map +1 -0
- package/dist/components/ts-radio.d.ts +11 -0
- package/dist/components/ts-radio.js +2 -0
- package/dist/components/ts-radio.js.map +1 -0
- package/dist/components/ts-row.d.ts +11 -0
- package/dist/components/ts-row.js +2 -0
- package/dist/components/ts-row.js.map +1 -0
- package/dist/components/ts-select.d.ts +11 -0
- package/dist/components/ts-select.js +2 -0
- package/dist/components/ts-select.js.map +1 -0
- package/dist/components/ts-skeleton.d.ts +11 -0
- package/dist/components/ts-skeleton.js +2 -0
- package/dist/components/ts-skeleton.js.map +1 -0
- package/dist/components/ts-slider.d.ts +11 -0
- package/dist/components/ts-slider.js +2 -0
- package/dist/components/ts-slider.js.map +1 -0
- package/dist/components/ts-spacer.d.ts +11 -0
- package/dist/components/ts-spacer.js +2 -0
- package/dist/components/ts-spacer.js.map +1 -0
- package/dist/components/ts-spinner.d.ts +11 -0
- package/dist/components/ts-spinner.js +2 -0
- package/dist/components/ts-spinner.js.map +1 -0
- package/dist/components/ts-stack.d.ts +11 -0
- package/dist/components/ts-stack.js +2 -0
- package/dist/components/ts-stack.js.map +1 -0
- package/dist/components/ts-step.d.ts +11 -0
- package/dist/components/ts-step.js +2 -0
- package/dist/components/ts-step.js.map +1 -0
- package/dist/components/ts-stepper.d.ts +11 -0
- package/dist/components/ts-stepper.js +2 -0
- package/dist/components/ts-stepper.js.map +1 -0
- package/dist/components/ts-switch-group.d.ts +11 -0
- package/dist/components/ts-switch-group.js +2 -0
- package/dist/components/ts-switch-group.js.map +1 -0
- package/dist/components/ts-switch-option.d.ts +11 -0
- package/dist/components/ts-switch-option.js +2 -0
- package/dist/components/ts-switch-option.js.map +1 -0
- package/dist/components/ts-tab-panel.d.ts +11 -0
- package/dist/components/ts-tab-panel.js +2 -0
- package/dist/components/ts-tab-panel.js.map +1 -0
- package/dist/components/ts-table.d.ts +11 -0
- package/dist/components/ts-table.js +2 -0
- package/dist/components/ts-table.js.map +1 -0
- package/dist/components/ts-tabs.d.ts +11 -0
- package/dist/components/ts-tabs.js +2 -0
- package/dist/components/ts-tabs.js.map +1 -0
- package/dist/components/ts-textarea.d.ts +11 -0
- package/dist/components/ts-textarea.js +2 -0
- package/dist/components/ts-textarea.js.map +1 -0
- package/dist/components/ts-toast.d.ts +11 -0
- package/dist/components/ts-toast.js +2 -0
- package/dist/components/ts-toast.js.map +1 -0
- package/dist/components/ts-toggle.d.ts +11 -0
- package/dist/components/ts-toggle.js +2 -0
- package/dist/components/ts-toggle.js.map +1 -0
- package/dist/components/ts-toolbar.d.ts +11 -0
- package/dist/components/ts-toolbar.js +2 -0
- package/dist/components/ts-toolbar.js.map +1 -0
- package/dist/components/ts-tooltip.d.ts +11 -0
- package/dist/components/ts-tooltip.js +2 -0
- package/dist/components/ts-tooltip.js.map +1 -0
- package/dist/components/ts-tree-item.d.ts +11 -0
- package/dist/components/ts-tree-item.js +2 -0
- package/dist/components/ts-tree-item.js.map +1 -0
- package/dist/components/ts-tree.d.ts +11 -0
- package/dist/components/ts-tree.js +2 -0
- package/dist/components/ts-tree.js.map +1 -0
- package/dist/components.d.ts +480 -0
- package/dist/components.json +12678 -0
- package/dist/esm/aria-lpqZSiIf.js +89 -0
- package/dist/esm/aria-lpqZSiIf.js.map +1 -0
- package/dist/esm/index-V8-ENixA.js +2373 -0
- package/dist/esm/index-V8-ENixA.js.map +1 -0
- package/dist/esm/index.js +102 -0
- package/dist/esm/index.js.map +1 -0
- package/dist/esm/loader.js +13 -0
- package/dist/esm/loader.js.map +1 -0
- package/dist/esm/lucide-BOxYojS-.js +26523 -0
- package/dist/esm/lucide-BOxYojS-.js.map +1 -0
- package/dist/esm/tessera-ui.js +23 -0
- package/dist/esm/tessera-ui.js.map +1 -0
- package/dist/esm/ts-accordion-item.entry.js +63 -0
- package/dist/esm/ts-accordion-item.entry.js.map +1 -0
- package/dist/esm/ts-accordion.entry.js +34 -0
- package/dist/esm/ts-accordion.entry.js.map +1 -0
- package/dist/esm/ts-alert.entry.js +58 -0
- package/dist/esm/ts-alert.entry.js.map +1 -0
- package/dist/esm/ts-avatar.entry.js +52 -0
- package/dist/esm/ts-avatar.entry.js.map +1 -0
- package/dist/esm/ts-badge.entry.js +36 -0
- package/dist/esm/ts-badge.entry.js.map +1 -0
- package/dist/esm/ts-banner.entry.js +65 -0
- package/dist/esm/ts-banner.entry.js.map +1 -0
- package/dist/esm/ts-breadcrumb-item.entry.js +26 -0
- package/dist/esm/ts-breadcrumb-item.entry.js.map +1 -0
- package/dist/esm/ts-breadcrumb.entry.js +33 -0
- package/dist/esm/ts-breadcrumb.entry.js.map +1 -0
- package/dist/esm/ts-button.entry.js +86 -0
- package/dist/esm/ts-button.entry.js.map +1 -0
- package/dist/esm/ts-card.entry.js +33 -0
- package/dist/esm/ts-card.entry.js.map +1 -0
- package/dist/esm/ts-checkbox.entry.js +66 -0
- package/dist/esm/ts-checkbox.entry.js.map +1 -0
- package/dist/esm/ts-chip.entry.js +74 -0
- package/dist/esm/ts-chip.entry.js.map +1 -0
- package/dist/esm/ts-container.entry.js +26 -0
- package/dist/esm/ts-container.entry.js.map +1 -0
- package/dist/esm/ts-date-picker.entry.js +227 -0
- package/dist/esm/ts-date-picker.entry.js.map +1 -0
- package/dist/esm/ts-dialog.entry.js +107 -0
- package/dist/esm/ts-dialog.entry.js.map +1 -0
- package/dist/esm/ts-divider.entry.js +31 -0
- package/dist/esm/ts-divider.entry.js.map +1 -0
- package/dist/esm/ts-drawer.entry.js +111 -0
- package/dist/esm/ts-drawer.entry.js.map +1 -0
- package/dist/esm/ts-empty-state.entry.js +30 -0
- package/dist/esm/ts-empty-state.entry.js.map +1 -0
- package/dist/esm/ts-file-upload.entry.js +120 -0
- package/dist/esm/ts-file-upload.entry.js.map +1 -0
- package/dist/esm/ts-grid.entry.js +35 -0
- package/dist/esm/ts-grid.entry.js.map +1 -0
- package/dist/esm/ts-icon-Jz9ioZag.js +155 -0
- package/dist/esm/ts-icon-Jz9ioZag.js.map +1 -0
- package/dist/esm/ts-icon.entry.js +5 -0
- package/dist/esm/ts-icon.entry.js.map +1 -0
- package/dist/esm/ts-input.entry.js +128 -0
- package/dist/esm/ts-input.entry.js.map +1 -0
- package/dist/esm/ts-menu-item.entry.js +63 -0
- package/dist/esm/ts-menu-item.entry.js.map +1 -0
- package/dist/esm/ts-menu.entry.js +153 -0
- package/dist/esm/ts-menu.entry.js.map +1 -0
- package/dist/esm/ts-modal.entry.js +120 -0
- package/dist/esm/ts-modal.entry.js.map +1 -0
- package/dist/esm/ts-nav-item.entry.js +46 -0
- package/dist/esm/ts-nav-item.entry.js.map +1 -0
- package/dist/esm/ts-nav.entry.js +27 -0
- package/dist/esm/ts-nav.entry.js.map +1 -0
- package/dist/esm/ts-pagination.entry.js +86 -0
- package/dist/esm/ts-pagination.entry.js.map +1 -0
- package/dist/esm/ts-popover.entry.js +131 -0
- package/dist/esm/ts-popover.entry.js.map +1 -0
- package/dist/esm/ts-progress.entry.js +44 -0
- package/dist/esm/ts-progress.entry.js.map +1 -0
- package/dist/esm/ts-radio.entry.js +58 -0
- package/dist/esm/ts-radio.entry.js.map +1 -0
- package/dist/esm/ts-row.entry.js +51 -0
- package/dist/esm/ts-row.entry.js.map +1 -0
- package/dist/esm/ts-select.entry.js +219 -0
- package/dist/esm/ts-select.entry.js.map +1 -0
- package/dist/esm/ts-skeleton.entry.js +53 -0
- package/dist/esm/ts-skeleton.entry.js.map +1 -0
- package/dist/esm/ts-slider.entry.js +130 -0
- package/dist/esm/ts-slider.entry.js.map +1 -0
- package/dist/esm/ts-spacer.entry.js +26 -0
- package/dist/esm/ts-spacer.entry.js.map +1 -0
- package/dist/esm/ts-spinner.entry.js +28 -0
- package/dist/esm/ts-spinner.entry.js.map +1 -0
- package/dist/esm/ts-stack.entry.js +32 -0
- package/dist/esm/ts-stack.entry.js.map +1 -0
- package/dist/esm/ts-step.entry.js +72 -0
- package/dist/esm/ts-step.entry.js.map +1 -0
- package/dist/esm/ts-stepper.entry.js +65 -0
- package/dist/esm/ts-stepper.entry.js.map +1 -0
- package/dist/esm/ts-switch-group.entry.js +107 -0
- package/dist/esm/ts-switch-group.entry.js.map +1 -0
- package/dist/esm/ts-switch-option.entry.js +40 -0
- package/dist/esm/ts-switch-option.entry.js.map +1 -0
- package/dist/esm/ts-tab-panel.entry.js +28 -0
- package/dist/esm/ts-tab-panel.entry.js.map +1 -0
- package/dist/esm/ts-table.entry.js +37 -0
- package/dist/esm/ts-table.entry.js.map +1 -0
- package/dist/esm/ts-tabs.entry.js +122 -0
- package/dist/esm/ts-tabs.entry.js.map +1 -0
- package/dist/esm/ts-textarea.entry.js +115 -0
- package/dist/esm/ts-textarea.entry.js.map +1 -0
- package/dist/esm/ts-toast.entry.js +105 -0
- package/dist/esm/ts-toast.entry.js.map +1 -0
- package/dist/esm/ts-toggle.entry.js +56 -0
- package/dist/esm/ts-toggle.entry.js.map +1 -0
- package/dist/esm/ts-toolbar.entry.js +27 -0
- package/dist/esm/ts-toolbar.entry.js.map +1 -0
- package/dist/esm/ts-tooltip.entry.js +80 -0
- package/dist/esm/ts-tooltip.entry.js.map +1 -0
- package/dist/esm/ts-tree-item.entry.js +92 -0
- package/dist/esm/ts-tree-item.entry.js.map +1 -0
- package/dist/esm/ts-tree.entry.js +79 -0
- package/dist/esm/ts-tree.entry.js.map +1 -0
- package/dist/index.cjs.js +1 -0
- package/dist/index.js +1 -0
- package/dist/tessera-ui/index.esm.js +2 -0
- package/dist/tessera-ui/index.esm.js.map +1 -0
- package/dist/tessera-ui/p-0424cd55.entry.js +2 -0
- package/dist/tessera-ui/p-0424cd55.entry.js.map +1 -0
- package/dist/tessera-ui/p-04522bf9.entry.js +2 -0
- package/dist/tessera-ui/p-04522bf9.entry.js.map +1 -0
- package/dist/tessera-ui/p-04aa8b90.entry.js +2 -0
- package/dist/tessera-ui/p-04aa8b90.entry.js.map +1 -0
- package/dist/tessera-ui/p-080eaf89.entry.js +2 -0
- package/dist/tessera-ui/p-080eaf89.entry.js.map +1 -0
- package/dist/tessera-ui/p-0ec061e5.entry.js +2 -0
- package/dist/tessera-ui/p-0ec061e5.entry.js.map +1 -0
- package/dist/tessera-ui/p-122e43b7.entry.js +2 -0
- package/dist/tessera-ui/p-122e43b7.entry.js.map +1 -0
- package/dist/tessera-ui/p-16bb8ca8.entry.js +2 -0
- package/dist/tessera-ui/p-16bb8ca8.entry.js.map +1 -0
- package/dist/tessera-ui/p-16fc632b.entry.js +2 -0
- package/dist/tessera-ui/p-16fc632b.entry.js.map +1 -0
- package/dist/tessera-ui/p-1d73f6c9.entry.js +2 -0
- package/dist/tessera-ui/p-1d73f6c9.entry.js.map +1 -0
- package/dist/tessera-ui/p-24305379.entry.js +2 -0
- package/dist/tessera-ui/p-24305379.entry.js.map +1 -0
- package/dist/tessera-ui/p-25f77cc9.entry.js +2 -0
- package/dist/tessera-ui/p-25f77cc9.entry.js.map +1 -0
- package/dist/tessera-ui/p-35eb8496.entry.js +2 -0
- package/dist/tessera-ui/p-35eb8496.entry.js.map +1 -0
- package/dist/tessera-ui/p-3aec66b4.entry.js +2 -0
- package/dist/tessera-ui/p-3aec66b4.entry.js.map +1 -0
- package/dist/tessera-ui/p-4277460b.entry.js +2 -0
- package/dist/tessera-ui/p-4277460b.entry.js.map +1 -0
- package/dist/tessera-ui/p-441310f7.entry.js +2 -0
- package/dist/tessera-ui/p-441310f7.entry.js.map +1 -0
- package/dist/tessera-ui/p-491e1a75.entry.js +2 -0
- package/dist/tessera-ui/p-491e1a75.entry.js.map +1 -0
- package/dist/tessera-ui/p-50d092ce.entry.js +2 -0
- package/dist/tessera-ui/p-50d092ce.entry.js.map +1 -0
- package/dist/tessera-ui/p-50efadf3.entry.js +2 -0
- package/dist/tessera-ui/p-50efadf3.entry.js.map +1 -0
- package/dist/tessera-ui/p-53846d59.entry.js +2 -0
- package/dist/tessera-ui/p-53846d59.entry.js.map +1 -0
- package/dist/tessera-ui/p-56f2b070.entry.js +2 -0
- package/dist/tessera-ui/p-56f2b070.entry.js.map +1 -0
- package/dist/tessera-ui/p-6760f922.entry.js +2 -0
- package/dist/tessera-ui/p-6760f922.entry.js.map +1 -0
- package/dist/tessera-ui/p-69bb11ed.entry.js +2 -0
- package/dist/tessera-ui/p-69bb11ed.entry.js.map +1 -0
- package/dist/tessera-ui/p-6d35a60c.entry.js +2 -0
- package/dist/tessera-ui/p-6d35a60c.entry.js.map +1 -0
- package/dist/tessera-ui/p-6ec285ad.entry.js +2 -0
- package/dist/tessera-ui/p-6ec285ad.entry.js.map +1 -0
- package/dist/tessera-ui/p-708d4eb5.entry.js +2 -0
- package/dist/tessera-ui/p-708d4eb5.entry.js.map +1 -0
- package/dist/tessera-ui/p-79ff8ceb.entry.js +2 -0
- package/dist/tessera-ui/p-79ff8ceb.entry.js.map +1 -0
- package/dist/tessera-ui/p-7e531195.entry.js +2 -0
- package/dist/tessera-ui/p-7e531195.entry.js.map +1 -0
- package/dist/tessera-ui/p-7fa64f00.entry.js +2 -0
- package/dist/tessera-ui/p-7fa64f00.entry.js.map +1 -0
- package/dist/tessera-ui/p-829c4307.entry.js +2 -0
- package/dist/tessera-ui/p-829c4307.entry.js.map +1 -0
- package/dist/tessera-ui/p-91ccef3f.entry.js +2 -0
- package/dist/tessera-ui/p-91ccef3f.entry.js.map +1 -0
- package/dist/tessera-ui/p-9209e603.entry.js +2 -0
- package/dist/tessera-ui/p-9209e603.entry.js.map +1 -0
- package/dist/tessera-ui/p-97a9def7.entry.js +2 -0
- package/dist/tessera-ui/p-97a9def7.entry.js.map +1 -0
- package/dist/tessera-ui/p-9b41b538.entry.js +2 -0
- package/dist/tessera-ui/p-9b41b538.entry.js.map +1 -0
- package/dist/tessera-ui/p-9c0504fd.entry.js +2 -0
- package/dist/tessera-ui/p-9c0504fd.entry.js.map +1 -0
- package/dist/tessera-ui/p-BOxYojS-.js +9572 -0
- package/dist/tessera-ui/p-BOxYojS-.js.map +1 -0
- package/dist/tessera-ui/p-StBQmS8h.js +2 -0
- package/dist/tessera-ui/p-StBQmS8h.js.map +1 -0
- package/dist/tessera-ui/p-V8-ENixA.js +3 -0
- package/dist/tessera-ui/p-V8-ENixA.js.map +1 -0
- package/dist/tessera-ui/p-a120b5d6.entry.js +2 -0
- package/dist/tessera-ui/p-a120b5d6.entry.js.map +1 -0
- package/dist/tessera-ui/p-a55a5695.entry.js +2 -0
- package/dist/tessera-ui/p-a55a5695.entry.js.map +1 -0
- package/dist/tessera-ui/p-a83d903e.entry.js +2 -0
- package/dist/tessera-ui/p-a83d903e.entry.js.map +1 -0
- package/dist/tessera-ui/p-adc807dc.entry.js +2 -0
- package/dist/tessera-ui/p-adc807dc.entry.js.map +1 -0
- package/dist/tessera-ui/p-b09f202c.entry.js +2 -0
- package/dist/tessera-ui/p-b09f202c.entry.js.map +1 -0
- package/dist/tessera-ui/p-b1182592.entry.js +2 -0
- package/dist/tessera-ui/p-b1182592.entry.js.map +1 -0
- package/dist/tessera-ui/p-b3f60955.entry.js +2 -0
- package/dist/tessera-ui/p-b3f60955.entry.js.map +1 -0
- package/dist/tessera-ui/p-bb9ebbd8.entry.js +2 -0
- package/dist/tessera-ui/p-bb9ebbd8.entry.js.map +1 -0
- package/dist/tessera-ui/p-bce40715.entry.js +2 -0
- package/dist/tessera-ui/p-bce40715.entry.js.map +1 -0
- package/dist/tessera-ui/p-c35c7049.entry.js +2 -0
- package/dist/tessera-ui/p-c35c7049.entry.js.map +1 -0
- package/dist/tessera-ui/p-c59ecffa.entry.js +2 -0
- package/dist/tessera-ui/p-c59ecffa.entry.js.map +1 -0
- package/dist/tessera-ui/p-d318774a.entry.js +2 -0
- package/dist/tessera-ui/p-d318774a.entry.js.map +1 -0
- package/dist/tessera-ui/p-d5cbadd6.entry.js +2 -0
- package/dist/tessera-ui/p-d5cbadd6.entry.js.map +1 -0
- package/dist/tessera-ui/p-e1d2b141.entry.js +2 -0
- package/dist/tessera-ui/p-e1d2b141.entry.js.map +1 -0
- package/dist/tessera-ui/p-f0bf6408.entry.js +2 -0
- package/dist/tessera-ui/p-f0bf6408.entry.js.map +1 -0
- package/dist/tessera-ui/p-f639213a.entry.js +2 -0
- package/dist/tessera-ui/p-f639213a.entry.js.map +1 -0
- package/dist/tessera-ui/p-fd2376e0.entry.js +2 -0
- package/dist/tessera-ui/p-fd2376e0.entry.js.map +1 -0
- package/dist/tessera-ui/p-fef9a993.entry.js +2 -0
- package/dist/tessera-ui/p-fef9a993.entry.js.map +1 -0
- package/dist/tessera-ui/p-lpqZSiIf.js +2 -0
- package/dist/tessera-ui/p-lpqZSiIf.js.map +1 -0
- package/dist/tessera-ui/tessera-ui.css +1 -0
- package/dist/tessera-ui/tessera-ui.esm.js +2 -0
- package/dist/tessera-ui/tessera-ui.esm.js.map +1 -0
- package/dist/types/components/accordion/accordion-item.d.ts +28 -0
- package/dist/types/components/accordion/accordion-item.stories.d.ts +5 -0
- package/dist/types/components/accordion/accordion.d.ts +12 -0
- package/dist/types/components/accordion/accordion.stories.d.ts +21 -0
- package/dist/types/components/alert/alert.d.ts +30 -0
- package/dist/types/components/alert/alert.stories.d.ts +34 -0
- package/dist/types/components/avatar/avatar.d.ts +26 -0
- package/dist/types/components/avatar/avatar.stories.d.ts +51 -0
- package/dist/types/components/badge/badge.d.ts +19 -0
- package/dist/types/components/badge/badge.stories.d.ts +50 -0
- package/dist/types/components/banner/banner.d.ts +33 -0
- package/dist/types/components/banner/banner.stories.d.ts +40 -0
- package/dist/types/components/breadcrumb/breadcrumb-item.d.ts +15 -0
- package/dist/types/components/breadcrumb/breadcrumb-item.stories.d.ts +5 -0
- package/dist/types/components/breadcrumb/breadcrumb.d.ts +13 -0
- package/dist/types/components/breadcrumb/breadcrumb.stories.d.ts +20 -0
- package/dist/types/components/button/button.d.ts +45 -0
- package/dist/types/components/button/button.stories.d.ts +73 -0
- package/dist/types/components/card/card.d.ts +23 -0
- package/dist/types/components/card/card.stories.d.ts +46 -0
- package/dist/types/components/checkbox/checkbox.d.ts +36 -0
- package/dist/types/components/checkbox/checkbox.stories.d.ts +58 -0
- package/dist/types/components/chip/chip.d.ts +34 -0
- package/dist/types/components/chip/chip.stories.d.ts +54 -0
- package/dist/types/components/container/container.d.ts +12 -0
- package/dist/types/components/container/container.stories.d.ts +21 -0
- package/dist/types/components/date-picker/date-picker.d.ts +67 -0
- package/dist/types/components/date-picker/date-picker.stories.d.ts +62 -0
- package/dist/types/components/dialog/dialog.d.ts +44 -0
- package/dist/types/components/dialog/dialog.stories.d.ts +39 -0
- package/dist/types/components/divider/divider.d.ts +13 -0
- package/dist/types/components/divider/divider.stories.d.ts +33 -0
- package/dist/types/components/drawer/drawer.d.ts +46 -0
- package/dist/types/components/drawer/drawer.stories.d.ts +43 -0
- package/dist/types/components/empty-state/empty-state.d.ts +24 -0
- package/dist/types/components/empty-state/empty-state.stories.d.ts +37 -0
- package/dist/types/components/file-upload/file-upload.d.ts +38 -0
- package/dist/types/components/file-upload/file-upload.stories.d.ts +43 -0
- package/dist/types/components/grid/grid.d.ts +16 -0
- package/dist/types/components/grid/grid.stories.d.ts +30 -0
- package/dist/types/components/icon/icon-registry.d.ts +27 -0
- package/dist/types/components/icon/icon.d.ts +30 -0
- package/dist/types/components/icon/icon.stories.d.ts +42 -0
- package/dist/types/components/input/input.d.ts +72 -0
- package/dist/types/components/input/input.stories.d.ts +77 -0
- package/dist/types/components/menu/menu-item.d.ts +31 -0
- package/dist/types/components/menu/menu-item.stories.d.ts +5 -0
- package/dist/types/components/menu/menu.d.ts +38 -0
- package/dist/types/components/menu/menu.stories.d.ts +36 -0
- package/dist/types/components/modal/modal.d.ts +52 -0
- package/dist/types/components/modal/modal.stories.d.ts +47 -0
- package/dist/types/components/nav/nav-item.d.ts +23 -0
- package/dist/types/components/nav/nav-item.stories.d.ts +5 -0
- package/dist/types/components/nav/nav.d.ts +13 -0
- package/dist/types/components/nav/nav.stories.d.ts +27 -0
- package/dist/types/components/pagination/pagination.d.ts +28 -0
- package/dist/types/components/pagination/pagination.stories.d.ts +42 -0
- package/dist/types/components/popover/popover.d.ts +44 -0
- package/dist/types/components/popover/popover.stories.d.ts +38 -0
- package/dist/types/components/progress/progress.d.ts +26 -0
- package/dist/types/components/progress/progress.stories.d.ts +59 -0
- package/dist/types/components/radio/radio.d.ts +32 -0
- package/dist/types/components/radio/radio.stories.d.ts +48 -0
- package/dist/types/components/row/row.d.ts +18 -0
- package/dist/types/components/row/row.stories.d.ts +52 -0
- package/dist/types/components/select/select.d.ts +74 -0
- package/dist/types/components/select/select.stories.d.ts +73 -0
- package/dist/types/components/skeleton/skeleton.d.ts +17 -0
- package/dist/types/components/skeleton/skeleton.stories.d.ts +44 -0
- package/dist/types/components/slider/slider.d.ts +43 -0
- package/dist/types/components/slider/slider.stories.d.ts +62 -0
- package/dist/types/components/spacer/spacer.d.ts +10 -0
- package/dist/types/components/spacer/spacer.stories.d.ts +28 -0
- package/dist/types/components/spinner/spinner.d.ts +14 -0
- package/dist/types/components/spinner/spinner.stories.d.ts +33 -0
- package/dist/types/components/stack/stack.d.ts +12 -0
- package/dist/types/components/stack/stack.stories.d.ts +28 -0
- package/dist/types/components/stepper/step.d.ts +31 -0
- package/dist/types/components/stepper/step.stories.d.ts +5 -0
- package/dist/types/components/stepper/stepper.d.ts +18 -0
- package/dist/types/components/stepper/stepper.stories.d.ts +36 -0
- package/dist/types/components/switch-group/switch-group.d.ts +33 -0
- package/dist/types/components/switch-group/switch-group.stories.d.ts +37 -0
- package/dist/types/components/switch-group/switch-option.d.ts +24 -0
- package/dist/types/components/switch-group/switch-option.stories.d.ts +5 -0
- package/dist/types/components/table/table.d.ts +23 -0
- package/dist/types/components/table/table.stories.d.ts +45 -0
- package/dist/types/components/tabs/tab-panel.d.ts +17 -0
- package/dist/types/components/tabs/tab-panel.stories.d.ts +5 -0
- package/dist/types/components/tabs/tabs.d.ts +30 -0
- package/dist/types/components/tabs/tabs.stories.d.ts +34 -0
- package/dist/types/components/textarea/textarea.d.ts +62 -0
- package/dist/types/components/textarea/textarea.stories.d.ts +88 -0
- package/dist/types/components/toast/toast.d.ts +42 -0
- package/dist/types/components/toast/toast.stories.d.ts +48 -0
- package/dist/types/components/toggle/toggle.d.ts +31 -0
- package/dist/types/components/toggle/toggle.stories.d.ts +46 -0
- package/dist/types/components/toolbar/toolbar.d.ts +18 -0
- package/dist/types/components/toolbar/toolbar.stories.d.ts +28 -0
- package/dist/types/components/tooltip/tooltip.d.ts +36 -0
- package/dist/types/components/tooltip/tooltip.stories.d.ts +43 -0
- package/dist/types/components/tree/tree-item.d.ts +42 -0
- package/dist/types/components/tree/tree-item.stories.d.ts +5 -0
- package/dist/types/components/tree/tree.d.ts +13 -0
- package/dist/types/components/tree/tree.stories.d.ts +21 -0
- package/dist/types/components.d.ts +4191 -0
- package/dist/types/index.d.ts +53 -0
- package/dist/types/stencil-public-runtime.d.ts +1860 -0
- package/dist/types/theme/tokens.d.ts +29 -0
- package/dist/types/types/index.d.ts +36 -0
- package/dist/types/utils/aria.d.ts +23 -0
- package/dist/types/utils/dom.d.ts +19 -0
- package/dist/types/utils/events.d.ts +17 -0
- package/loader/cdn.js +1 -0
- package/loader/index.cjs.js +1 -0
- package/loader/index.d.ts +24 -0
- package/loader/index.es2017.js +1 -0
- package/loader/index.js +2 -0
- package/package.json +79 -0
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
import{r as e,a as t,h as r,H as s}from"./p-V8-ENixA.js";const a=()=>`:host{display:block;font-family:var(--ts-font-family-base);--ts-tree-indent:var(--ts-spacing-5);--ts-tree-item-height:2rem;--ts-tree-active-bg:var(--ts-color-interactive-primary-subtle)}.tree__base{list-style:none;margin:0;padding:0}`;const i=class{constructor(t){e(this,t)}get hostEl(){return t(this)}selectable=false;handleKeyDown(e){const t=this.getVisibleItems();if(t.length===0)return;const r=document.activeElement;const s=t.indexOf(r);if(s===-1)return;const a=t[s];switch(e.key){case"ArrowDown":e.preventDefault();if(s<t.length-1){t[s+1].focus()}break;case"ArrowUp":e.preventDefault();if(s>0){t[s-1].focus()}break;case"ArrowRight":e.preventDefault();if(a&&!a.expanded){a.expanded=true}break;case"ArrowLeft":e.preventDefault();if(a&&a.expanded){a.expanded=false}break;case"Home":e.preventDefault();t[0].focus();break;case"End":e.preventDefault();t[t.length-1].focus();break}}getVisibleItems(){const e=Array.from(this.hostEl.querySelectorAll("ts-tree-item"));return e.filter((e=>{let t=e.parentElement;while(t&&t!==this.hostEl){if(t.tagName==="TS-TREE-ITEM"&&!t.expanded){return false}t=t.parentElement}return true}))}render(){return r(s,{key:"f19d8e0e243df40456f96dd89eb81fd4b1c68e8e",class:{"ts-tree":true},role:"tree"},r("div",{key:"2cfd542f7681b88563f5ad92f14a807cbb33b590",class:"tree__base",part:"base"},r("slot",{key:"b08eef0089c0e9b5c1d84def2fc17be9be57e3ba"})))}};i.style=a();export{i as ts_tree};
|
|
2
|
+
//# sourceMappingURL=p-a120b5d6.entry.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":["treeCss","TsTree","selectable","handleKeyDown","event","items","this","getVisibleItems","length","focused","document","activeElement","currentIndex","indexOf","currentItem","key","preventDefault","focus","expanded","allItems","Array","from","hostEl","querySelectorAll","filter","item","parent","parentElement","tagName","render","h","Host","class","role","part"],"sources":["src/components/tree/tree.css?tag=ts-tree&encapsulation=shadow","src/components/tree/tree.tsx"],"sourcesContent":["/* ==========================================================================\n ts-tree — Shadow DOM Scoped Styles\n\n Component tokens (Tier 3):\n --ts-tree-indent Indentation per level\n --ts-tree-item-height Item height\n --ts-tree-active-bg Active item background\n ========================================================================== */\n\n:host {\n display: block;\n font-family: var(--ts-font-family-base);\n\n --ts-tree-indent: var(--ts-spacing-5);\n --ts-tree-item-height: 2rem;\n --ts-tree-active-bg: var(--ts-color-interactive-primary-subtle);\n}\n\n.tree__base {\n list-style: none;\n margin: 0;\n padding: 0;\n}\n","import { Component, Prop, h, Host, Element, Listen } from '@stencil/core';\n\n/**\n * @slot - Default slot for ts-tree-item children.\n *\n * @part base - The tree container.\n */\n@Component({\n tag: 'ts-tree',\n styleUrl: 'tree.css',\n shadow: true,\n})\nexport class TsTree {\n @Element() hostEl!: HTMLElement;\n\n /** Enable item selection mode. */\n @Prop({ reflect: true }) selectable = false;\n\n @Listen('keydown')\n handleKeyDown(event: KeyboardEvent): void {\n const items = this.getVisibleItems();\n if (items.length === 0) return;\n\n const focused = document.activeElement as HTMLElement;\n const currentIndex = items.indexOf(focused);\n if (currentIndex === -1) return;\n\n const currentItem = items[currentIndex] as HTMLTsTreeItemElement;\n\n switch (event.key) {\n case 'ArrowDown':\n event.preventDefault();\n if (currentIndex < items.length - 1) {\n items[currentIndex + 1].focus();\n }\n break;\n case 'ArrowUp':\n event.preventDefault();\n if (currentIndex > 0) {\n items[currentIndex - 1].focus();\n }\n break;\n case 'ArrowRight':\n event.preventDefault();\n if (currentItem && !currentItem.expanded) {\n currentItem.expanded = true;\n }\n break;\n case 'ArrowLeft':\n event.preventDefault();\n if (currentItem && currentItem.expanded) {\n currentItem.expanded = false;\n }\n break;\n case 'Home':\n event.preventDefault();\n items[0].focus();\n break;\n case 'End':\n event.preventDefault();\n items[items.length - 1].focus();\n break;\n }\n }\n\n private getVisibleItems(): HTMLElement[] {\n const allItems = Array.from(this.hostEl.querySelectorAll('ts-tree-item'));\n return allItems.filter(item => {\n let parent = item.parentElement;\n while (parent && parent !== this.hostEl) {\n if (parent.tagName === 'TS-TREE-ITEM' && !(parent as HTMLTsTreeItemElement).expanded) {\n return false;\n }\n parent = parent.parentElement;\n }\n return true;\n }) as HTMLElement[];\n }\n\n // eslint-disable-next-line @typescript-eslint/explicit-function-return-type\n render() {\n return (\n <Host\n class={{ 'ts-tree': true }}\n role=\"tree\"\n >\n <div class=\"tree__base\" part=\"base\">\n <slot />\n </div>\n </Host>\n );\n }\n}\n\ninterface HTMLTsTreeItemElement extends HTMLElement {\n expanded: boolean;\n}\n"],"mappings":"yDAAA,MAAMA,EAAU,IAAM,4O,MCYTC,EAAM,M,qDAIQC,WAAa,MAGtC,aAAAC,CAAcC,GACZ,MAAMC,EAAQC,KAAKC,kBACnB,GAAIF,EAAMG,SAAW,EAAG,OAExB,MAAMC,EAAUC,SAASC,cACzB,MAAMC,EAAeP,EAAMQ,QAAQJ,GACnC,GAAIG,KAAiB,EAAI,OAEzB,MAAME,EAAcT,EAAMO,GAE1B,OAAQR,EAAMW,KACZ,IAAK,YACHX,EAAMY,iBACN,GAAIJ,EAAeP,EAAMG,OAAS,EAAG,CACnCH,EAAMO,EAAe,GAAGK,O,CAE1B,MACF,IAAK,UACHb,EAAMY,iBACN,GAAIJ,EAAe,EAAG,CACpBP,EAAMO,EAAe,GAAGK,O,CAE1B,MACF,IAAK,aACHb,EAAMY,iBACN,GAAIF,IAAgBA,EAAYI,SAAU,CACxCJ,EAAYI,SAAW,I,CAEzB,MACF,IAAK,YACHd,EAAMY,iBACN,GAAIF,GAAeA,EAAYI,SAAU,CACvCJ,EAAYI,SAAW,K,CAEzB,MACF,IAAK,OACHd,EAAMY,iBACNX,EAAM,GAAGY,QACT,MACF,IAAK,MACHb,EAAMY,iBACNX,EAAMA,EAAMG,OAAS,GAAGS,QACxB,M,CAIE,eAAAV,GACN,MAAMY,EAAWC,MAAMC,KAAKf,KAAKgB,OAAOC,iBAAiB,iBACzD,OAAOJ,EAASK,QAAOC,IACrB,IAAIC,EAASD,EAAKE,cAClB,MAAOD,GAAUA,IAAWpB,KAAKgB,OAAQ,CACvC,GAAII,EAAOE,UAAY,iBAAoBF,EAAiCR,SAAU,CACpF,OAAO,K,CAETQ,EAASA,EAAOC,a,CAElB,OAAO,IAAI,G,CAKf,MAAAE,GACE,OACEC,EAACC,EAAI,CAAAhB,IAAA,2CACHiB,MAAO,CAAE,UAAW,MACpBC,KAAK,QAELH,EAAA,OAAAf,IAAA,2CAAKiB,MAAM,aAAaE,KAAK,QAC3BJ,EAAA,QAAAf,IAAA,8C","ignoreList":[]}
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
import{r as i,h as t,H as n}from"./p-V8-ENixA.js";const s=()=>`:host{display:block;margin-inline:auto;width:100%;box-sizing:border-box;--ts-container-padding:var(--ts-grid-margin)}:host([size="sm"]){max-width:640px}:host([size="md"]){max-width:768px}:host([size="lg"]){max-width:1024px}:host([size="xl"]){max-width:1280px}:host([size="full"]){max-width:100%}:host(:not(.ts-container--no-padding)){padding-inline:var(--ts-container-padding)}:host(.ts-container--no-padding){padding-inline:0}`;const a=class{constructor(t){i(this,t)}size="lg";padding=true;render(){return t(n,{key:"45f43cf6088754adc81c04a59249361ee1484d73",class:{"ts-container":true,"ts-container--no-padding":!this.padding}},t("slot",{key:"1b302d969a21f7c35bfa8e54523df064171fdaa5"}))}};a.style=s();export{a as ts_container};
|
|
2
|
+
//# sourceMappingURL=p-a55a5695.entry.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":["containerCss","TsContainer","size","padding","render","h","Host","key","class","this"],"sources":["src/components/container/container.css?tag=ts-container&encapsulation=shadow","src/components/container/container.tsx"],"sourcesContent":["/* ==========================================================================\n ts-container — Shadow DOM Scoped Styles\n\n Centered max-width container with responsive padding.\n\n Component tokens (Tier 3):\n --ts-container-padding Horizontal padding\n ========================================================================== */\n\n:host {\n display: block;\n margin-inline: auto;\n width: 100%;\n box-sizing: border-box;\n\n --ts-container-padding: var(--ts-grid-margin);\n}\n\n/* ---- Sizes ---- */\n:host([size=\"sm\"]) {\n max-width: 640px;\n}\n\n:host([size=\"md\"]) {\n max-width: 768px;\n}\n\n:host([size=\"lg\"]) {\n max-width: 1024px;\n}\n\n:host([size=\"xl\"]) {\n max-width: 1280px;\n}\n\n:host([size=\"full\"]) {\n max-width: 100%;\n}\n\n/* ---- Padding ---- */\n:host(:not(.ts-container--no-padding)) {\n padding-inline: var(--ts-container-padding);\n}\n\n:host(.ts-container--no-padding) {\n padding-inline: 0;\n}\n","import { Component, Prop, h, Host } from '@stencil/core';\n\n/**\n * @slot - Default slot for container content.\n *\n * @part base - The container element.\n */\n@Component({\n tag: 'ts-container',\n styleUrl: 'container.css',\n shadow: true,\n})\nexport class TsContainer {\n /** The maximum width of the container. */\n @Prop({ reflect: true }) size: 'sm' | 'md' | 'lg' | 'xl' | 'full' = 'lg';\n\n /** Whether to apply horizontal padding. */\n @Prop({ reflect: true }) padding: boolean = true;\n\n // eslint-disable-next-line @typescript-eslint/explicit-function-return-type\n render() {\n return (\n <Host\n class={{\n 'ts-container': true,\n 'ts-container--no-padding': !this.padding,\n }}\n >\n <slot />\n </Host>\n );\n }\n}\n"],"mappings":"kDAAA,MAAMA,EAAe,IAAM,8a,MCYdC,EAAW,M,yBAEGC,KAA2C,KAG3CC,QAAmB,KAG5C,MAAAC,GACE,OACEC,EAACC,EAAI,CAAAC,IAAA,2CACHC,MAAO,CACL,eAAgB,KAChB,4BAA6BC,KAAKN,UAGpCE,EAAA,QAAAE,IAAA,6C","ignoreList":[]}
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
import{r,a,h as e,H as t}from"./p-V8-ENixA.js";const s=()=>`:host{display:block;--ts-breadcrumb-separator-color:var(--ts-color-text-tertiary);--ts-breadcrumb-link-color:var(--ts-color-interactive-primary)}.breadcrumb__list{display:flex;flex-wrap:wrap;align-items:center;gap:var(--ts-spacing-1);list-style:none;margin:0;padding:0;font-family:var(--ts-font-family-base);font-size:var(--ts-font-size-sm)}`;const c=class{constructor(a){r(this,a)}get hostEl(){return a(this)}separator="/";componentDidRender(){const r=this.hostEl.querySelectorAll("ts-breadcrumb-item");r.forEach(((a,e)=>{if(e<r.length-1){a.setAttribute("separator",this.separator)}else{a.removeAttribute("separator")}}))}render(){return e(t,{key:"c11ecfd52a2cdd8782fcb6015b3cefbda9739af0",class:"ts-breadcrumb"},e("nav",{key:"70b0109d5706643be765d9e73559c6bb9447da81",part:"nav","aria-label":"Breadcrumb"},e("ol",{key:"ebca2980c9c6376bdeb44b7743f7894355f2e9c4",part:"list",class:"breadcrumb__list"},e("slot",{key:"876f0e6f5b11df1e4b5145676adf16f5462c0e72"}))))}};c.style=s();export{c as ts_breadcrumb};
|
|
2
|
+
//# sourceMappingURL=p-a83d903e.entry.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":["breadcrumbCss","TsBreadcrumb","separator","componentDidRender","items","this","hostEl","querySelectorAll","forEach","item","index","length","setAttribute","removeAttribute","render","h","Host","key","class","part"],"sources":["src/components/breadcrumb/breadcrumb.css?tag=ts-breadcrumb&encapsulation=shadow","src/components/breadcrumb/breadcrumb.tsx"],"sourcesContent":["/* ==========================================================================\n ts-breadcrumb — Shadow DOM Scoped Styles\n\n Component tokens (Tier 3):\n --ts-breadcrumb-separator-color Separator color\n --ts-breadcrumb-link-color Link color\n ========================================================================== */\n\n:host {\n display: block;\n\n --ts-breadcrumb-separator-color: var(--ts-color-text-tertiary);\n --ts-breadcrumb-link-color: var(--ts-color-interactive-primary);\n}\n\n.breadcrumb__list {\n display: flex;\n flex-wrap: wrap;\n align-items: center;\n gap: var(--ts-spacing-1);\n list-style: none;\n margin: 0;\n padding: 0;\n font-family: var(--ts-font-family-base);\n font-size: var(--ts-font-size-sm);\n}\n","import { Component, Prop, h, Host, Element } from '@stencil/core';\n\n/**\n * @slot - Default slot for ts-breadcrumb-item children.\n *\n * @part nav - The nav element.\n * @part list - The ordered list element.\n */\n@Component({\n tag: 'ts-breadcrumb',\n styleUrl: 'breadcrumb.css',\n shadow: true,\n})\nexport class TsBreadcrumb {\n @Element() hostEl!: HTMLElement;\n\n /** The separator character between breadcrumb items. */\n @Prop() separator = '/';\n\n componentDidRender(): void {\n const items = this.hostEl.querySelectorAll('ts-breadcrumb-item');\n items.forEach((item, index) => {\n if (index < items.length - 1) {\n item.setAttribute('separator', this.separator);\n } else {\n item.removeAttribute('separator');\n }\n });\n }\n\n // eslint-disable-next-line @typescript-eslint/explicit-function-return-type\n render() {\n return (\n <Host class=\"ts-breadcrumb\">\n <nav part=\"nav\" aria-label=\"Breadcrumb\">\n <ol part=\"list\" class=\"breadcrumb__list\">\n <slot />\n </ol>\n </nav>\n </Host>\n );\n }\n}\n"],"mappings":"+CAAA,MAAMA,EAAgB,IAAM,wV,MCafC,EAAY,M,qDAIfC,UAAY,IAEpB,kBAAAC,GACE,MAAMC,EAAQC,KAAKC,OAAOC,iBAAiB,sBAC3CH,EAAMI,SAAQ,CAACC,EAAMC,KACnB,GAAIA,EAAQN,EAAMO,OAAS,EAAG,CAC5BF,EAAKG,aAAa,YAAaP,KAAKH,U,KAC/B,CACLO,EAAKI,gBAAgB,Y,KAM3B,MAAAC,GACE,OACEC,EAACC,EAAI,CAAAC,IAAA,2CAACC,MAAM,iBACVH,EAAA,OAAAE,IAAA,2CAAKE,KAAK,MAAK,aAAY,cACzBJ,EAAA,MAAAE,IAAA,2CAAIE,KAAK,OAAOD,MAAM,oBACpBH,EAAA,QAAAE,IAAA,+C","ignoreList":[]}
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
import{r as s,c as t,a as e,h as i,H as a}from"./p-V8-ENixA.js";const r=()=>`:host{display:inline-flex;font-family:var(--ts-font-family-base);--ts-switch-group-bg:var(--ts-color-neutral-100);--ts-switch-group-active-bg:var(--ts-color-bg-elevated);--ts-switch-group-radius:var(--ts-shape-interactive)}:host([full-width]){display:flex;inline-size:100%}.switch-group__base{display:inline-flex;align-items:center;gap:var(--ts-spacing-1);padding:var(--ts-spacing-1);background-color:var(--ts-switch-group-bg);border-radius:var(--ts-switch-group-radius);inline-size:100%}:host([size="sm"]) .switch-group__base{font-size:var(--ts-font-size-sm)}:host([size="md"]) .switch-group__base{font-size:var(--ts-font-size-md)}:host([size="lg"]) .switch-group__base{font-size:var(--ts-font-size-lg)}:host([disabled]){opacity:0.5;pointer-events:none}`;const o=class{constructor(e){s(this,e);this.tsChange=t(this,"tsChange")}get hostEl(){return e(this)}value;size="md";disabled=false;fullWidth=false;tsChange;onValueChange(){this.syncOptions()}handleOptionSelect(s){s.stopPropagation();if(this.disabled)return;this.selectOption(s.detail.value)}handleKeyDown(s){if(this.disabled)return;const t=this.getOptions();const e=t.filter((s=>!s.disabled));if(e.length===0)return;const i=e.findIndex((s=>s.value===this.value));switch(s.key){case"ArrowRight":case"ArrowDown":s.preventDefault();{const s=(i+1)%e.length;this.selectOption(e[s].value)}break;case"ArrowLeft":case"ArrowUp":s.preventDefault();{const s=(i-1+e.length)%e.length;this.selectOption(e[s].value)}break;case"Home":s.preventDefault();this.selectOption(e[0].value);break;case"End":s.preventDefault();this.selectOption(e[e.length-1].value);break}}componentDidLoad(){this.syncOptions()}getOptions(){return Array.from(this.hostEl.querySelectorAll("ts-switch-option"))}selectOption(s){if(s!==this.value){this.value=s;this.tsChange.emit({value:s})}this.syncOptions()}syncOptions(){const s=this.getOptions();s.forEach((s=>{s.active=s.value===this.value}))}handleSlotChange=()=>{this.syncOptions()};render(){return i(a,{key:"211ffe406ac11e248971c5485d88e2855cdcdb77",class:{"ts-switch-group":true,[`ts-switch-group--${this.size}`]:true,"ts-switch-group--disabled":this.disabled,"ts-switch-group--full-width":this.fullWidth},role:"radiogroup"},i("div",{key:"82e39f308c359e8d60cc8349de380fcb08f6b252",class:"switch-group__base",part:"base"},i("slot",{key:"81748d90d92184c0fa3b9c6cf55f32dff3267b46",onSlotchange:this.handleSlotChange})))}static get watchers(){return{value:[{onValueChange:0}]}}};o.style=r();export{o as ts_switch_group};
|
|
2
|
+
//# sourceMappingURL=p-adc807dc.entry.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":["switchGroupCss","TsSwitchGroup","value","size","disabled","fullWidth","tsChange","onValueChange","this","syncOptions","handleOptionSelect","event","stopPropagation","selectOption","detail","handleKeyDown","options","getOptions","enabledOptions","filter","o","length","currentIndex","findIndex","key","preventDefault","nextIndex","prevIndex","componentDidLoad","Array","from","hostEl","querySelectorAll","emit","forEach","option","active","handleSlotChange","render","h","Host","class","role","part","onSlotchange"],"sources":["src/components/switch-group/switch-group.css?tag=ts-switch-group&encapsulation=shadow","src/components/switch-group/switch-group.tsx"],"sourcesContent":["/* ==========================================================================\n ts-switch-group — Shadow DOM Scoped Styles\n\n Component tokens (Tier 3):\n --ts-switch-group-bg Background color\n --ts-switch-group-active-bg Active segment background\n --ts-switch-group-radius Border radius\n ========================================================================== */\n\n:host {\n display: inline-flex;\n font-family: var(--ts-font-family-base);\n\n --ts-switch-group-bg: var(--ts-color-neutral-100);\n --ts-switch-group-active-bg: var(--ts-color-bg-elevated);\n --ts-switch-group-radius: var(--ts-shape-interactive);\n}\n\n:host([full-width]) {\n display: flex;\n inline-size: 100%;\n}\n\n.switch-group__base {\n display: inline-flex;\n align-items: center;\n gap: var(--ts-spacing-1);\n padding: var(--ts-spacing-1);\n background-color: var(--ts-switch-group-bg);\n border-radius: var(--ts-switch-group-radius);\n inline-size: 100%;\n}\n\n/* ---- Sizes ---- */\n:host([size=\"sm\"]) .switch-group__base {\n font-size: var(--ts-font-size-sm);\n}\n\n:host([size=\"md\"]) .switch-group__base {\n font-size: var(--ts-font-size-md);\n}\n\n:host([size=\"lg\"]) .switch-group__base {\n font-size: var(--ts-font-size-lg);\n}\n\n/* ---- Disabled ---- */\n:host([disabled]) {\n opacity: 0.5;\n pointer-events: none;\n}\n","import { Component, Prop, Event, h, Host, Element, Listen, Watch } from '@stencil/core';\nimport type { EventEmitter } from '@stencil/core';\nimport type { TsSize } from '../../types';\n\n/**\n * @slot - Default slot for ts-switch-option children.\n *\n * @part base - The switch group container.\n */\n@Component({\n tag: 'ts-switch-group',\n styleUrl: 'switch-group.css',\n shadow: true,\n})\nexport class TsSwitchGroup {\n @Element() hostEl!: HTMLElement;\n\n /** The currently active segment value. */\n @Prop({ reflect: true, mutable: true }) value?: string;\n\n /** The size of the switch group. */\n @Prop({ reflect: true }) size: TsSize = 'md';\n\n /** Disables the entire group. */\n @Prop({ reflect: true }) disabled = false;\n\n /** Stretch to fill the container width. */\n @Prop({ reflect: true }) fullWidth = false;\n\n /** Emitted when the active value changes. */\n @Event({ eventName: 'tsChange' }) tsChange!: EventEmitter<{ value: string }>;\n\n @Watch('value')\n onValueChange(): void {\n this.syncOptions();\n }\n\n @Listen('tsOptionSelect')\n handleOptionSelect(event: CustomEvent<{ value: string }>): void {\n event.stopPropagation();\n if (this.disabled) return;\n this.selectOption(event.detail.value);\n }\n\n @Listen('keydown')\n handleKeyDown(event: KeyboardEvent): void {\n if (this.disabled) return;\n\n const options = this.getOptions();\n const enabledOptions = options.filter(o => !o.disabled);\n if (enabledOptions.length === 0) return;\n\n const currentIndex = enabledOptions.findIndex(o => o.value === this.value);\n\n switch (event.key) {\n case 'ArrowRight':\n case 'ArrowDown':\n event.preventDefault();\n {\n const nextIndex = (currentIndex + 1) % enabledOptions.length;\n this.selectOption(enabledOptions[nextIndex].value);\n }\n break;\n case 'ArrowLeft':\n case 'ArrowUp':\n event.preventDefault();\n {\n const prevIndex = (currentIndex - 1 + enabledOptions.length) % enabledOptions.length;\n this.selectOption(enabledOptions[prevIndex].value);\n }\n break;\n case 'Home':\n event.preventDefault();\n this.selectOption(enabledOptions[0].value);\n break;\n case 'End':\n event.preventDefault();\n this.selectOption(enabledOptions[enabledOptions.length - 1].value);\n break;\n }\n }\n\n componentDidLoad(): void {\n this.syncOptions();\n }\n\n private getOptions(): HTMLTsSwitchOptionElement[] {\n return Array.from(this.hostEl.querySelectorAll('ts-switch-option')) as HTMLTsSwitchOptionElement[];\n }\n\n private selectOption(value: string): void {\n if (value !== this.value) {\n this.value = value;\n this.tsChange.emit({ value });\n }\n this.syncOptions();\n }\n\n private syncOptions(): void {\n const options = this.getOptions();\n options.forEach(option => {\n (option as unknown as { active: boolean }).active = option.value === this.value;\n });\n }\n\n private handleSlotChange = (): void => {\n this.syncOptions();\n };\n\n // eslint-disable-next-line @typescript-eslint/explicit-function-return-type\n render() {\n return (\n <Host\n class={{\n 'ts-switch-group': true,\n [`ts-switch-group--${this.size}`]: true,\n 'ts-switch-group--disabled': this.disabled,\n 'ts-switch-group--full-width': this.fullWidth,\n }}\n role=\"radiogroup\"\n >\n <div class=\"switch-group__base\" part=\"base\">\n <slot onSlotchange={this.handleSlotChange} />\n </div>\n </Host>\n );\n }\n}\n\ninterface HTMLTsSwitchOptionElement extends HTMLElement {\n value: string;\n disabled: boolean;\n active: boolean;\n}\n"],"mappings":"gEAAA,MAAMA,EAAiB,IAAM,qvB,MCchBC,EAAa,M,sFAIgBC,MAGfC,KAAe,KAGfC,SAAW,MAGXC,UAAY,MAGHC,SAGlC,aAAAC,GACEC,KAAKC,a,CAIP,kBAAAC,CAAmBC,GACjBA,EAAMC,kBACN,GAAIJ,KAAKJ,SAAU,OACnBI,KAAKK,aAAaF,EAAMG,OAAOZ,M,CAIjC,aAAAa,CAAcJ,GACZ,GAAIH,KAAKJ,SAAU,OAEnB,MAAMY,EAAUR,KAAKS,aACrB,MAAMC,EAAiBF,EAAQG,QAAOC,IAAMA,EAAEhB,WAC9C,GAAIc,EAAeG,SAAW,EAAG,OAEjC,MAAMC,EAAeJ,EAAeK,WAAUH,GAAKA,EAAElB,QAAUM,KAAKN,QAEpE,OAAQS,EAAMa,KACZ,IAAK,aACL,IAAK,YACHb,EAAMc,iBACN,CACE,MAAMC,GAAaJ,EAAe,GAAKJ,EAAeG,OACtDb,KAAKK,aAAaK,EAAeQ,GAAWxB,M,CAE9C,MACF,IAAK,YACL,IAAK,UACHS,EAAMc,iBACN,CACE,MAAME,GAAaL,EAAe,EAAIJ,EAAeG,QAAUH,EAAeG,OAC9Eb,KAAKK,aAAaK,EAAeS,GAAWzB,M,CAE9C,MACF,IAAK,OACHS,EAAMc,iBACNjB,KAAKK,aAAaK,EAAe,GAAGhB,OACpC,MACF,IAAK,MACHS,EAAMc,iBACNjB,KAAKK,aAAaK,EAAeA,EAAeG,OAAS,GAAGnB,OAC5D,M,CAIN,gBAAA0B,GACEpB,KAAKC,a,CAGC,UAAAQ,GACN,OAAOY,MAAMC,KAAKtB,KAAKuB,OAAOC,iBAAiB,oB,CAGzC,YAAAnB,CAAaX,GACnB,GAAIA,IAAUM,KAAKN,MAAO,CACxBM,KAAKN,MAAQA,EACbM,KAAKF,SAAS2B,KAAK,CAAE/B,S,CAEvBM,KAAKC,a,CAGC,WAAAA,GACN,MAAMO,EAAUR,KAAKS,aACrBD,EAAQkB,SAAQC,IACbA,EAA0CC,OAASD,EAAOjC,QAAUM,KAAKN,KAAK,G,CAI3EmC,iBAAmB,KACzB7B,KAAKC,aAAa,EAIpB,MAAA6B,GACE,OACEC,EAACC,EAAI,CAAAhB,IAAA,2CACHiB,MAAO,CACL,kBAAmB,KACnB,CAAC,oBAAoBjC,KAAKL,QAAS,KACnC,4BAA6BK,KAAKJ,SAClC,8BAA+BI,KAAKH,WAEtCqC,KAAK,cAELH,EAAA,OAAAf,IAAA,2CAAKiB,MAAM,qBAAqBE,KAAK,QACnCJ,EAAA,QAAAf,IAAA,2CAAMoB,aAAcpC,KAAK6B,oB","ignoreList":[]}
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
import{r as t,c as a,h as e,H as i}from"./p-V8-ENixA.js";const s=()=>`:host{display:block;font-family:var(--ts-font-family-base)}.nav-item__wrapper{list-style:none;margin:0;padding:0}.nav-item__link{display:flex;align-items:center;gap:var(--ts-spacing-2);padding:var(--ts-spacing-2) var(--ts-spacing-3);border:none;border-radius:var(--ts-radius-md);background:transparent;color:var(--ts-color-text-secondary);font-family:var(--ts-font-family-base);font-size:var(--ts-font-size-sm);font-weight:var(--ts-font-weight-medium);text-decoration:none;cursor:pointer;width:100%;text-align:start;transition:background-color var(--ts-transition-fast), color var(--ts-transition-fast)}.nav-item__link:hover:not([disabled]):not([aria-disabled="true"]){background-color:var(--ts-color-bg-hover);color:var(--ts-color-text-primary)}.nav-item__link:focus-visible{box-shadow:var(--ts-focus-ring);outline:none}:host([active]) .nav-item__link{background-color:var(--ts-color-interactive-primary-subtle, rgba(59, 130, 246, 0.1));color:var(--ts-color-interactive-primary);font-weight:var(--ts-font-weight-semi)}:host([disabled]) .nav-item__link{opacity:0.5;cursor:not-allowed;pointer-events:none}.nav-item__icon{display:inline-flex;align-items:center;flex-shrink:0}.nav-item__label{display:inline-flex;align-items:center;white-space:nowrap}`;const n=class{constructor(e){t(this,e);this.tsSelect=a(this,"tsSelect")}href;active=false;disabled=false;icon;tsSelect;handleClick=t=>{if(this.disabled){t.preventDefault();t.stopPropagation();return}this.tsSelect.emit()};render(){const t=this.href?"a":"button";const a=this.href?{href:this.disabled?undefined:this.href}:{type:"button",disabled:this.disabled};return e(i,{key:"edc70c61d701ba9765e37d18e49f1f9d198dde85",class:{"ts-nav-item":true,"ts-nav-item--active":this.active,"ts-nav-item--disabled":this.disabled}},e("li",{key:"fa4090e6dd631e6caaf89c84b7735c64f25d46d0",class:"nav-item__wrapper",part:"item",role:"listitem"},e(t,{key:"eb44e83812a47b281719155a49633de0e960a19e",...a,class:"nav-item__link",part:"link","aria-current":this.active?"page":undefined,"aria-disabled":this.disabled?"true":undefined,onClick:this.handleClick},this.icon&&e("span",{key:"a12ec79c7dc7d7a1bf53c4d0c25fc7ed8c4d1fcc",class:"nav-item__icon",part:"icon","aria-hidden":"true"},e("ts-icon",{key:"5268366fada499e81d589b4b21c08065b6d83dd4",name:this.icon,size:"sm"})),e("span",{key:"bef8a388eab007fa739025fbb242f490204cad1f",class:"nav-item__label",part:"label"},e("slot",{key:"9154d4a5f1075ecaa077998198bf6cd0258449d3"})))))}};n.style=s();export{n as ts_nav_item};
|
|
2
|
+
//# sourceMappingURL=p-b09f202c.entry.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":["navItemCss","TsNavItem","href","active","disabled","icon","tsSelect","handleClick","event","this","preventDefault","stopPropagation","emit","render","Tag","attrs","undefined","type","h","Host","key","class","part","role","onClick","name","size"],"sources":["src/components/nav/nav-item.css?tag=ts-nav-item&encapsulation=shadow","src/components/nav/nav-item.tsx"],"sourcesContent":["/* ==========================================================================\n ts-nav-item — Shadow DOM Scoped Styles\n ========================================================================== */\n\n:host {\n display: block;\n font-family: var(--ts-font-family-base);\n}\n\n.nav-item__wrapper {\n list-style: none;\n margin: 0;\n padding: 0;\n}\n\n.nav-item__link {\n display: flex;\n align-items: center;\n gap: var(--ts-spacing-2);\n padding: var(--ts-spacing-2) var(--ts-spacing-3);\n border: none;\n border-radius: var(--ts-radius-md);\n background: transparent;\n color: var(--ts-color-text-secondary);\n font-family: var(--ts-font-family-base);\n font-size: var(--ts-font-size-sm);\n font-weight: var(--ts-font-weight-medium);\n text-decoration: none;\n cursor: pointer;\n width: 100%;\n text-align: start;\n transition:\n background-color var(--ts-transition-fast),\n color var(--ts-transition-fast);\n}\n\n.nav-item__link:hover:not([disabled]):not([aria-disabled=\"true\"]) {\n background-color: var(--ts-color-bg-hover);\n color: var(--ts-color-text-primary);\n}\n\n.nav-item__link:focus-visible {\n box-shadow: var(--ts-focus-ring);\n outline: none;\n}\n\n/* ---- Active state ---- */\n:host([active]) .nav-item__link {\n background-color: var(--ts-color-interactive-primary-subtle, rgba(59, 130, 246, 0.1));\n color: var(--ts-color-interactive-primary);\n font-weight: var(--ts-font-weight-semi);\n}\n\n/* ---- Disabled state ---- */\n:host([disabled]) .nav-item__link {\n opacity: 0.5;\n cursor: not-allowed;\n pointer-events: none;\n}\n\n/* ---- Icon ---- */\n.nav-item__icon {\n display: inline-flex;\n align-items: center;\n flex-shrink: 0;\n}\n\n/* ---- Label ---- */\n.nav-item__label {\n display: inline-flex;\n align-items: center;\n white-space: nowrap;\n}\n","import { Component, Prop, Event, h, Host } from '@stencil/core';\nimport type { EventEmitter } from '@stencil/core';\n\n/**\n * @slot - Default slot for label text.\n *\n * @part item - The list item wrapper.\n * @part link - The anchor or button element.\n * @part icon - The icon wrapper.\n * @part label - The label wrapper.\n */\n@Component({\n tag: 'ts-nav-item',\n styleUrl: 'nav-item.css',\n shadow: true,\n})\nexport class TsNavItem {\n /** The URL to navigate to. */\n @Prop() href?: string;\n\n /** Whether this item is currently active. */\n @Prop({ reflect: true }) active = false;\n\n /** Whether this item is disabled. */\n @Prop({ reflect: true }) disabled = false;\n\n /** Lucide icon name to display. */\n @Prop() icon?: string;\n\n /** Emitted when the nav item is selected. */\n @Event({ eventName: 'tsSelect' }) tsSelect!: EventEmitter<void>;\n\n private handleClick = (event: MouseEvent): void => {\n if (this.disabled) {\n event.preventDefault();\n event.stopPropagation();\n return;\n }\n this.tsSelect.emit();\n };\n\n // eslint-disable-next-line @typescript-eslint/explicit-function-return-type\n render() {\n const Tag = this.href ? 'a' : 'button';\n const attrs = this.href\n ? { href: this.disabled ? undefined : this.href }\n : { type: 'button' as const, disabled: this.disabled };\n\n return (\n <Host\n class={{\n 'ts-nav-item': true,\n 'ts-nav-item--active': this.active,\n 'ts-nav-item--disabled': this.disabled,\n }}\n >\n <li class=\"nav-item__wrapper\" part=\"item\" role=\"listitem\">\n <Tag\n {...attrs}\n class=\"nav-item__link\"\n part=\"link\"\n aria-current={this.active ? 'page' : undefined}\n aria-disabled={this.disabled ? 'true' : undefined}\n onClick={this.handleClick}\n >\n {this.icon && (\n <span class=\"nav-item__icon\" part=\"icon\" aria-hidden=\"true\">\n <ts-icon name={this.icon} size=\"sm\" />\n </span>\n )}\n <span class=\"nav-item__label\" part=\"label\">\n <slot />\n </span>\n </Tag>\n </li>\n </Host>\n );\n }\n}\n"],"mappings":"yDAAA,MAAMA,EAAa,IAAM,uuC,MCgBZC,EAAS,M,0DAEZC,KAGiBC,OAAS,MAGTC,SAAW,MAG5BC,KAG0BC,SAE1BC,YAAeC,IACrB,GAAIC,KAAKL,SAAU,CACjBI,EAAME,iBACNF,EAAMG,kBACN,M,CAEFF,KAAKH,SAASM,MAAM,EAItB,MAAAC,GACE,MAAMC,EAAML,KAAKP,KAAO,IAAM,SAC9B,MAAMa,EAAQN,KAAKP,KACf,CAAEA,KAAMO,KAAKL,SAAWY,UAAYP,KAAKP,MACzC,CAAEe,KAAM,SAAmBb,SAAUK,KAAKL,UAE9C,OACEc,EAACC,EAAI,CAAAC,IAAA,2CACHC,MAAO,CACL,cAAe,KACf,sBAAuBZ,KAAKN,OAC5B,wBAAyBM,KAAKL,WAGhCc,EAAA,MAAAE,IAAA,2CAAIC,MAAM,oBAAoBC,KAAK,OAAOC,KAAK,YAC7CL,EAACJ,EAAG,CAAAM,IAAA,8CACEL,EACJM,MAAM,iBACNC,KAAK,OAAM,eACGb,KAAKN,OAAS,OAASa,UAAS,gBAC/BP,KAAKL,SAAW,OAASY,UACxCQ,QAASf,KAAKF,aAEbE,KAAKJ,MACJa,EAAA,QAAAE,IAAA,2CAAMC,MAAM,iBAAiBC,KAAK,OAAM,cAAa,QACnDJ,EAAA,WAAAE,IAAA,2CAASK,KAAMhB,KAAKJ,KAAMqB,KAAK,QAGnCR,EAAA,QAAAE,IAAA,2CAAMC,MAAM,kBAAkBC,KAAK,SACjCJ,EAAA,QAAAE,IAAA,gD","ignoreList":[]}
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
import{r as e,c as o,a as t,h as r,H as s}from"./p-V8-ENixA.js";import{g as p}from"./p-lpqZSiIf.js";const a=()=>`:host{display:inline-block;position:relative;font-family:var(--ts-font-family-base);--ts-popover-bg:var(--ts-color-bg-elevated);--ts-popover-radius:var(--ts-radius-lg);--ts-popover-shadow:var(--ts-shadow-lg);--ts-popover-max-width:320px}.popover__trigger{display:inline-block;cursor:pointer}.popover__panel{position:absolute;z-index:var(--ts-z-popover, 1000);padding:var(--ts-spacing-4);background-color:var(--ts-popover-bg);border-radius:var(--ts-popover-radius);box-shadow:var(--ts-popover-shadow);max-inline-size:var(--ts-popover-max-width);border:1px solid var(--ts-color-border-subtle);font-size:var(--ts-font-size-sm);line-height:var(--ts-line-height-normal);opacity:0;transform:scale(0.95);pointer-events:none;transition:opacity var(--ts-transition-fast), transform var(--ts-transition-fast)}.popover__panel--visible{opacity:1;transform:scale(1);pointer-events:auto}.popover__panel--top{bottom:calc(100% + 10px);left:50%;margin-left:-50%}.popover__panel--top-start{bottom:calc(100% + 10px);inset-inline-start:0}.popover__panel--top-end{bottom:calc(100% + 10px);inset-inline-end:0}.popover__panel--bottom{top:calc(100% + 10px);left:50%;margin-left:-50%}.popover__panel--bottom-start{top:calc(100% + 10px);inset-inline-start:0}.popover__panel--bottom-end{top:calc(100% + 10px);inset-inline-end:0}.popover__panel--left{inset-inline-end:calc(100% + 10px);top:50%;transform:translateY(-50%) scale(0.95)}.popover__panel--left.popover__panel--visible{transform:translateY(-50%) scale(1)}.popover__panel--right{inset-inline-start:calc(100% + 10px);top:50%;transform:translateY(-50%) scale(0.95)}.popover__panel--right.popover__panel--visible{transform:translateY(-50%) scale(1)}.popover__arrow{position:absolute;inline-size:10px;block-size:10px;background:var(--ts-popover-bg);border:1px solid var(--ts-color-border-subtle);transform:rotate(45deg)}.popover__panel--top .popover__arrow,.popover__panel--top-start .popover__arrow,.popover__panel--top-end .popover__arrow{bottom:-6px;left:50%;margin-left:-5px;border-top:none;border-left:none}.popover__panel--bottom .popover__arrow,.popover__panel--bottom-start .popover__arrow,.popover__panel--bottom-end .popover__arrow{top:-6px;left:50%;margin-left:-5px;border-bottom:none;border-right:none}.popover__panel--left .popover__arrow{inset-inline-end:-6px;top:50%;margin-top:-5px;border-bottom:none;border-left:none}.popover__panel--right .popover__arrow{inset-inline-start:-6px;top:50%;margin-top:-5px;border-top:none;border-right:none}.popover__content{position:relative;z-index:1}`;const i=class{constructor(t){e(this,t);this.tsOpen=o(this,"tsOpen");this.tsClose=o(this,"tsClose")}get hostEl(){return t(this)}popoverId=p("ts-popover");outsideClickHandler;escapeHandler;open=false;placement="bottom";trigger="click";dismissible=true;tsOpen;tsClose;isVisible=false;handleOpenChange(e){this.isVisible=e;if(e){this.tsOpen.emit();this.addGlobalListeners()}else{this.tsClose.emit();this.removeGlobalListeners()}}connectedCallback(){if(this.open){this.isVisible=true;this.addGlobalListeners()}}disconnectedCallback(){this.removeGlobalListeners()}async show(){this.open=true}async hide(){this.open=false}addGlobalListeners(){if(this.dismissible){this.outsideClickHandler=e=>{const o=e.composedPath();if(!o.includes(this.hostEl)){this.open=false}};this.escapeHandler=e=>{if(e.key==="Escape"){this.open=false}};setTimeout((()=>{document.addEventListener("click",this.outsideClickHandler);document.addEventListener("keydown",this.escapeHandler)}),0)}}removeGlobalListeners(){if(this.outsideClickHandler){document.removeEventListener("click",this.outsideClickHandler);this.outsideClickHandler=undefined}if(this.escapeHandler){document.removeEventListener("keydown",this.escapeHandler);this.escapeHandler=undefined}}handleTriggerClick=()=>{if(this.trigger==="click"){this.open=!this.open}};handleTriggerKeydown=e=>{if(this.trigger==="click"&&(e.key==="Enter"||e.key===" ")){e.preventDefault();this.open=!this.open}};handleMouseEnter=()=>{if(this.trigger==="hover"){this.open=true}};handleMouseLeave=()=>{if(this.trigger==="hover"){this.open=false}};render(){return r(s,{key:"9a797e457251167901cee8ebcb7077b5129bc88d",class:{"ts-popover":true,"ts-popover--open":this.isVisible,[`ts-popover--${this.placement}`]:true},onMouseEnter:this.handleMouseEnter,onMouseLeave:this.handleMouseLeave},r("span",{key:"cec789e62522c7d0580fae48563d16ae41c92da4",class:"popover__trigger",part:"trigger","aria-expanded":this.isVisible?"true":"false","aria-controls":this.popoverId,onClick:this.handleTriggerClick,onKeyDown:this.handleTriggerKeydown},r("slot",{key:"6cbc8158004db058b42935af9dc07f8bf6457f6d",name:"trigger"})),r("div",{key:"dc0cfb77b4fbda578336b7c63a78fdac9107d598",class:{popover__panel:true,[`popover__panel--${this.placement}`]:true,"popover__panel--visible":this.isVisible},part:"base",id:this.popoverId,role:"dialog","aria-hidden":!this.isVisible?"true":undefined},r("div",{key:"bcef96d994c1364274eca367a053ef5ec9ddcc8a",class:"popover__arrow",part:"arrow"}),r("div",{key:"027a7e705132e20533ce0f4616b47d5e912e0d78",class:"popover__content"},r("slot",{key:"838183659524f7687ed2d17ae2c00aa21db2b6d8"}))))}static get watchers(){return{open:[{handleOpenChange:0}]}}};i.style=a();export{i as ts_popover};
|
|
2
|
+
//# sourceMappingURL=p-b1182592.entry.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":["popoverCss","TsPopover","popoverId","generateId","outsideClickHandler","escapeHandler","open","placement","trigger","dismissible","tsOpen","tsClose","isVisible","handleOpenChange","newValue","this","emit","addGlobalListeners","removeGlobalListeners","connectedCallback","disconnectedCallback","show","hide","event","path","composedPath","includes","hostEl","key","setTimeout","document","addEventListener","removeEventListener","undefined","handleTriggerClick","handleTriggerKeydown","preventDefault","handleMouseEnter","handleMouseLeave","render","h","Host","class","onMouseEnter","onMouseLeave","part","onClick","onKeyDown","name","popover__panel","id","role"],"sources":["src/components/popover/popover.css?tag=ts-popover&encapsulation=shadow","src/components/popover/popover.tsx"],"sourcesContent":["/* ==========================================================================\n ts-popover — Shadow DOM Scoped Styles\n\n Component tokens (Tier 3):\n --ts-popover-bg Background color\n --ts-popover-radius Border radius\n --ts-popover-shadow Box shadow\n --ts-popover-max-width Max width\n ========================================================================== */\n\n:host {\n display: inline-block;\n position: relative;\n font-family: var(--ts-font-family-base);\n\n --ts-popover-bg: var(--ts-color-bg-elevated);\n --ts-popover-radius: var(--ts-radius-lg);\n --ts-popover-shadow: var(--ts-shadow-lg);\n --ts-popover-max-width: 320px;\n}\n\n.popover__trigger {\n display: inline-block;\n cursor: pointer;\n}\n\n/* ---- Panel ---- */\n.popover__panel {\n position: absolute;\n z-index: var(--ts-z-popover, 1000);\n padding: var(--ts-spacing-4);\n background-color: var(--ts-popover-bg);\n border-radius: var(--ts-popover-radius);\n box-shadow: var(--ts-popover-shadow);\n max-inline-size: var(--ts-popover-max-width);\n border: 1px solid var(--ts-color-border-subtle);\n font-size: var(--ts-font-size-sm);\n line-height: var(--ts-line-height-normal);\n opacity: 0;\n transform: scale(0.95);\n pointer-events: none;\n transition:\n opacity var(--ts-transition-fast),\n transform var(--ts-transition-fast);\n}\n\n.popover__panel--visible {\n opacity: 1;\n transform: scale(1);\n pointer-events: auto;\n}\n\n/* ---- Placements ---- */\n.popover__panel--top {\n bottom: calc(100% + 10px);\n left: 50%;\n margin-left: -50%;\n}\n.popover__panel--top-start {\n bottom: calc(100% + 10px);\n inset-inline-start: 0;\n}\n.popover__panel--top-end {\n bottom: calc(100% + 10px);\n inset-inline-end: 0;\n}\n\n.popover__panel--bottom {\n top: calc(100% + 10px);\n left: 50%;\n margin-left: -50%;\n}\n.popover__panel--bottom-start {\n top: calc(100% + 10px);\n inset-inline-start: 0;\n}\n.popover__panel--bottom-end {\n top: calc(100% + 10px);\n inset-inline-end: 0;\n}\n\n.popover__panel--left {\n inset-inline-end: calc(100% + 10px);\n top: 50%;\n transform: translateY(-50%) scale(0.95);\n}\n.popover__panel--left.popover__panel--visible {\n transform: translateY(-50%) scale(1);\n}\n\n.popover__panel--right {\n inset-inline-start: calc(100% + 10px);\n top: 50%;\n transform: translateY(-50%) scale(0.95);\n}\n.popover__panel--right.popover__panel--visible {\n transform: translateY(-50%) scale(1);\n}\n\n/* ---- Arrow ---- */\n.popover__arrow {\n position: absolute;\n inline-size: 10px;\n block-size: 10px;\n background: var(--ts-popover-bg);\n border: 1px solid var(--ts-color-border-subtle);\n transform: rotate(45deg);\n}\n\n.popover__panel--top .popover__arrow,\n.popover__panel--top-start .popover__arrow,\n.popover__panel--top-end .popover__arrow {\n bottom: -6px;\n left: 50%;\n margin-left: -5px;\n border-top: none;\n border-left: none;\n}\n\n.popover__panel--bottom .popover__arrow,\n.popover__panel--bottom-start .popover__arrow,\n.popover__panel--bottom-end .popover__arrow {\n top: -6px;\n left: 50%;\n margin-left: -5px;\n border-bottom: none;\n border-right: none;\n}\n\n.popover__panel--left .popover__arrow {\n inset-inline-end: -6px;\n top: 50%;\n margin-top: -5px;\n border-bottom: none;\n border-left: none;\n}\n\n.popover__panel--right .popover__arrow {\n inset-inline-start: -6px;\n top: 50%;\n margin-top: -5px;\n border-top: none;\n border-right: none;\n}\n\n/* ---- Content ---- */\n.popover__content {\n position: relative;\n z-index: 1;\n}\n","import { Component, Prop, Event, State, h, Host, Element, Watch, Method } from '@stencil/core';\nimport type { EventEmitter } from '@stencil/core';\nimport { generateId } from '../../utils/aria';\n\ntype TsPopoverPlacement = 'top' | 'bottom' | 'left' | 'right' | 'top-start' | 'top-end' | 'bottom-start' | 'bottom-end';\n\n/**\n * @slot trigger - The element that triggers the popover.\n * @slot - Default slot for popover content.\n *\n * @part base - The popover container.\n * @part arrow - The popover arrow.\n * @part trigger - The trigger wrapper.\n */\n@Component({\n tag: 'ts-popover',\n styleUrl: 'popover.css',\n shadow: true,\n})\nexport class TsPopover {\n @Element() hostEl!: HTMLElement;\n\n private popoverId = generateId('ts-popover');\n private outsideClickHandler?: (event: MouseEvent) => void;\n private escapeHandler?: (event: KeyboardEvent) => void;\n\n /** Whether the popover is currently visible. */\n @Prop({ reflect: true, mutable: true }) open = false;\n\n /** Placement of the popover relative to the trigger. */\n @Prop({ reflect: true }) placement: TsPopoverPlacement = 'bottom';\n\n /** How the popover is triggered. */\n @Prop() trigger: 'click' | 'hover' | 'manual' = 'click';\n\n /** Whether the popover closes on outside click or Escape. */\n @Prop() dismissible = true;\n\n /** Emitted when the popover opens. */\n @Event({ eventName: 'tsOpen' }) tsOpen!: EventEmitter<void>;\n\n /** Emitted when the popover closes. */\n @Event({ eventName: 'tsClose' }) tsClose!: EventEmitter<void>;\n\n @State() isVisible = false;\n\n @Watch('open')\n handleOpenChange(newValue: boolean): void {\n this.isVisible = newValue;\n if (newValue) {\n this.tsOpen.emit();\n this.addGlobalListeners();\n } else {\n this.tsClose.emit();\n this.removeGlobalListeners();\n }\n }\n\n connectedCallback(): void {\n if (this.open) {\n this.isVisible = true;\n this.addGlobalListeners();\n }\n }\n\n disconnectedCallback(): void {\n this.removeGlobalListeners();\n }\n\n /** Programmatically show the popover. */\n @Method()\n async show(): Promise<void> {\n this.open = true;\n }\n\n /** Programmatically hide the popover. */\n @Method()\n async hide(): Promise<void> {\n this.open = false;\n }\n\n private addGlobalListeners(): void {\n if (this.dismissible) {\n this.outsideClickHandler = (event: MouseEvent) => {\n const path = event.composedPath();\n if (!path.includes(this.hostEl)) {\n this.open = false;\n }\n };\n this.escapeHandler = (event: KeyboardEvent) => {\n if (event.key === 'Escape') {\n this.open = false;\n }\n };\n // Use setTimeout to avoid capturing the click that opened the popover\n setTimeout(() => {\n document.addEventListener('click', this.outsideClickHandler!);\n document.addEventListener('keydown', this.escapeHandler!);\n }, 0);\n }\n }\n\n private removeGlobalListeners(): void {\n if (this.outsideClickHandler) {\n document.removeEventListener('click', this.outsideClickHandler);\n this.outsideClickHandler = undefined;\n }\n if (this.escapeHandler) {\n document.removeEventListener('keydown', this.escapeHandler);\n this.escapeHandler = undefined;\n }\n }\n\n private handleTriggerClick = (): void => {\n if (this.trigger === 'click') {\n this.open = !this.open;\n }\n };\n\n private handleTriggerKeydown = (event: KeyboardEvent): void => {\n if (this.trigger === 'click' && (event.key === 'Enter' || event.key === ' ')) {\n event.preventDefault();\n this.open = !this.open;\n }\n };\n\n private handleMouseEnter = (): void => {\n if (this.trigger === 'hover') {\n this.open = true;\n }\n };\n\n private handleMouseLeave = (): void => {\n if (this.trigger === 'hover') {\n this.open = false;\n }\n };\n\n // eslint-disable-next-line @typescript-eslint/explicit-function-return-type\n render() {\n return (\n <Host\n class={{\n 'ts-popover': true,\n 'ts-popover--open': this.isVisible,\n [`ts-popover--${this.placement}`]: true,\n }}\n onMouseEnter={this.handleMouseEnter}\n onMouseLeave={this.handleMouseLeave}\n >\n <span\n class=\"popover__trigger\"\n part=\"trigger\"\n aria-expanded={this.isVisible ? 'true' : 'false'}\n aria-controls={this.popoverId}\n onClick={this.handleTriggerClick}\n onKeyDown={this.handleTriggerKeydown}\n >\n <slot name=\"trigger\" />\n </span>\n\n <div\n class={{\n 'popover__panel': true,\n [`popover__panel--${this.placement}`]: true,\n 'popover__panel--visible': this.isVisible,\n }}\n part=\"base\"\n id={this.popoverId}\n role=\"dialog\"\n aria-hidden={!this.isVisible ? 'true' : undefined}\n >\n <div class=\"popover__arrow\" part=\"arrow\" />\n <div class=\"popover__content\">\n <slot />\n </div>\n </div>\n </Host>\n );\n }\n}\n"],"mappings":"oGAAA,MAAMA,EAAa,IAAM,u+E,MCmBZC,EAAS,M,iHAGZC,UAAYC,EAAW,cACvBC,oBACAC,cAGgCC,KAAO,MAGtBC,UAAgC,SAGjDC,QAAwC,QAGxCC,YAAc,KAGUC,OAGCC,QAExBC,UAAY,MAGrB,gBAAAC,CAAiBC,GACfC,KAAKH,UAAYE,EACjB,GAAIA,EAAU,CACZC,KAAKL,OAAOM,OACZD,KAAKE,oB,KACA,CACLF,KAAKJ,QAAQK,OACbD,KAAKG,uB,EAIT,iBAAAC,GACE,GAAIJ,KAAKT,KAAM,CACbS,KAAKH,UAAY,KACjBG,KAAKE,oB,EAIT,oBAAAG,GACEL,KAAKG,uB,CAKP,UAAMG,GACJN,KAAKT,KAAO,I,CAKd,UAAMgB,GACJP,KAAKT,KAAO,K,CAGN,kBAAAW,GACN,GAAIF,KAAKN,YAAa,CACpBM,KAAKX,oBAAuBmB,IAC1B,MAAMC,EAAOD,EAAME,eACnB,IAAKD,EAAKE,SAASX,KAAKY,QAAS,CAC/BZ,KAAKT,KAAO,K,GAGhBS,KAAKV,cAAiBkB,IACpB,GAAIA,EAAMK,MAAQ,SAAU,CAC1Bb,KAAKT,KAAO,K,GAIhBuB,YAAW,KACTC,SAASC,iBAAiB,QAAShB,KAAKX,qBACxC0B,SAASC,iBAAiB,UAAWhB,KAAKV,cAAe,GACxD,E,EAIC,qBAAAa,GACN,GAAIH,KAAKX,oBAAqB,CAC5B0B,SAASE,oBAAoB,QAASjB,KAAKX,qBAC3CW,KAAKX,oBAAsB6B,S,CAE7B,GAAIlB,KAAKV,cAAe,CACtByB,SAASE,oBAAoB,UAAWjB,KAAKV,eAC7CU,KAAKV,cAAgB4B,S,EAIjBC,mBAAqB,KAC3B,GAAInB,KAAKP,UAAY,QAAS,CAC5BO,KAAKT,MAAQS,KAAKT,I,GAId6B,qBAAwBZ,IAC9B,GAAIR,KAAKP,UAAY,UAAYe,EAAMK,MAAQ,SAAWL,EAAMK,MAAQ,KAAM,CAC5EL,EAAMa,iBACNrB,KAAKT,MAAQS,KAAKT,I,GAId+B,iBAAmB,KACzB,GAAItB,KAAKP,UAAY,QAAS,CAC5BO,KAAKT,KAAO,I,GAIRgC,iBAAmB,KACzB,GAAIvB,KAAKP,UAAY,QAAS,CAC5BO,KAAKT,KAAO,K,GAKhB,MAAAiC,GACE,OACEC,EAACC,EAAI,CAAAb,IAAA,2CACHc,MAAO,CACL,aAAc,KACd,mBAAoB3B,KAAKH,UACzB,CAAC,eAAeG,KAAKR,aAAc,MAErCoC,aAAc5B,KAAKsB,iBACnBO,aAAc7B,KAAKuB,kBAEnBE,EAAA,QAAAZ,IAAA,2CACEc,MAAM,mBACNG,KAAK,UAAS,gBACC9B,KAAKH,UAAY,OAAS,QAAO,gBACjCG,KAAKb,UACpB4C,QAAS/B,KAAKmB,mBACda,UAAWhC,KAAKoB,sBAEhBK,EAAA,QAAAZ,IAAA,2CAAMoB,KAAK,aAGbR,EAAA,OAAAZ,IAAA,2CACEc,MAAO,CACLO,eAAkB,KAClB,CAAC,mBAAmBlC,KAAKR,aAAc,KACvC,0BAA2BQ,KAAKH,WAElCiC,KAAK,OACLK,GAAInC,KAAKb,UACTiD,KAAK,SAAQ,eACCpC,KAAKH,UAAY,OAASqB,WAExCO,EAAA,OAAAZ,IAAA,2CAAKc,MAAM,iBAAiBG,KAAK,UACjCL,EAAA,OAAAZ,IAAA,2CAAKc,MAAM,oBACTF,EAAA,QAAAZ,IAAA,+C","ignoreList":[]}
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
import{r,c as o,h as s,H as a}from"./p-V8-ENixA.js";const t=()=>`:host{display:block;font-family:var(--ts-font-family-base);--ts-alert-radius:var(--ts-radius-lg);--ts-alert-font-size:var(--ts-font-size-sm)}.alert__base{display:flex;align-items:flex-start;gap:var(--ts-spacing-3);padding:var(--ts-spacing-4) var(--ts-spacing-4);border-radius:var(--ts-alert-radius);border:1px solid transparent;border-inline-start:3px solid transparent;font-size:var(--ts-alert-font-size);line-height:var(--ts-line-height-normal)}:host([variant="info"]) .alert__base{background-color:var(--ts-color-info-bg);border-color:var(--ts-color-info-border);border-inline-start-color:var(--ts-color-info-500);color:var(--ts-color-info-600)}:host([variant="success"]) .alert__base{background-color:var(--ts-color-success-bg);border-color:var(--ts-color-success-border);border-inline-start-color:var(--ts-color-success-500);color:var(--ts-color-success-600)}:host([variant="warning"]) .alert__base{background-color:var(--ts-color-warning-bg);border-color:var(--ts-color-warning-border);border-inline-start-color:var(--ts-color-warning-500);color:var(--ts-color-warning-600)}:host([variant="danger"]) .alert__base{background-color:var(--ts-color-danger-bg);border-color:var(--ts-color-danger-border);border-inline-start-color:var(--ts-color-danger-500);color:var(--ts-color-danger-600)}:host([variant="neutral"]) .alert__base{background-color:var(--ts-color-bg-subtle);border-color:var(--ts-color-border-subtle);border-inline-start-color:var(--ts-color-neutral-400);color:var(--ts-color-text-secondary)}.alert__icon{display:flex;align-items:center;font-size:1.25em;flex-shrink:0;margin-top:1px}.alert__message{flex:1;min-width:0}.alert__action{display:flex;align-items:center;flex-shrink:0}.alert__action:empty{display:none}.alert__close{display:flex;align-items:center;justify-content:center;flex-shrink:0;width:1.5rem;height:1.5rem;border:none;border-radius:var(--ts-radius-sm);background:transparent;color:currentColor;opacity:0.6;cursor:pointer;font-size:0.8em;transition:opacity var(--ts-transition-fast);padding:0;line-height:1}.alert__close:hover{opacity:1}.alert__close:focus-visible{box-shadow:var(--ts-focus-ring);opacity:1}`;const e=class{constructor(s){r(this,s);this.tsClose=o(this,"tsClose")}variant="info";closable=false;isVisible=true;tsClose;async close(){this.isVisible=false;this.tsClose.emit()}async show(){this.isVisible=true}handleClose=()=>{this.close()};renderDefaultIcon(){const r={info:"ℹ",success:"✓",warning:"⚠",danger:"✕",primary:"ℹ",secondary:"ℹ",neutral:"ℹ"};return s("span",{"aria-hidden":"true"},r[this.variant]||"ℹ")}render(){if(!this.isVisible)return null;return s(a,{class:{"ts-alert":true,[`ts-alert--${this.variant}`]:true},role:"alert"},s("div",{class:"alert__base",part:"base"},s("div",{class:"alert__icon",part:"icon"},s("slot",{name:"icon"},this.renderDefaultIcon())),s("div",{class:"alert__message",part:"message"},s("slot",null)),s("div",{class:"alert__action",part:"action"},s("slot",{name:"action"})),this.closable&&s("button",{class:"alert__close",part:"close",type:"button","aria-label":"Close alert",onClick:this.handleClose},"✕")))}};e.style=t();export{e as ts_alert};
|
|
2
|
+
//# sourceMappingURL=p-b3f60955.entry.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":["alertCss","TsAlert","variant","closable","isVisible","tsClose","close","this","emit","show","handleClose","renderDefaultIcon","icons","info","success","warning","danger","primary","secondary","neutral","h","render","Host","class","role","part","name","type","onClick"],"sources":["src/components/alert/alert.css?tag=ts-alert&encapsulation=shadow","src/components/alert/alert.tsx"],"sourcesContent":["/* ==========================================================================\n ts-alert — Shadow DOM Scoped Styles\n\n Component tokens (Tier 3):\n --ts-alert-radius Border radius\n --ts-alert-font-size Message font size\n ========================================================================== */\n\n:host {\n display: block;\n font-family: var(--ts-font-family-base);\n\n --ts-alert-radius: var(--ts-radius-lg);\n --ts-alert-font-size: var(--ts-font-size-sm);\n}\n\n.alert__base {\n display: flex;\n align-items: flex-start;\n gap: var(--ts-spacing-3);\n padding: var(--ts-spacing-4) var(--ts-spacing-4);\n border-radius: var(--ts-alert-radius);\n border: 1px solid transparent;\n border-inline-start: 3px solid transparent;\n font-size: var(--ts-alert-font-size);\n line-height: var(--ts-line-height-normal);\n}\n\n/* ---- Variants ---- */\n:host([variant=\"info\"]) .alert__base {\n background-color: var(--ts-color-info-bg);\n border-color: var(--ts-color-info-border);\n border-inline-start-color: var(--ts-color-info-500);\n color: var(--ts-color-info-600);\n}\n\n:host([variant=\"success\"]) .alert__base {\n background-color: var(--ts-color-success-bg);\n border-color: var(--ts-color-success-border);\n border-inline-start-color: var(--ts-color-success-500);\n color: var(--ts-color-success-600);\n}\n\n:host([variant=\"warning\"]) .alert__base {\n background-color: var(--ts-color-warning-bg);\n border-color: var(--ts-color-warning-border);\n border-inline-start-color: var(--ts-color-warning-500);\n color: var(--ts-color-warning-600);\n}\n\n:host([variant=\"danger\"]) .alert__base {\n background-color: var(--ts-color-danger-bg);\n border-color: var(--ts-color-danger-border);\n border-inline-start-color: var(--ts-color-danger-500);\n color: var(--ts-color-danger-600);\n}\n\n:host([variant=\"neutral\"]) .alert__base {\n background-color: var(--ts-color-bg-subtle);\n border-color: var(--ts-color-border-subtle);\n border-inline-start-color: var(--ts-color-neutral-400);\n color: var(--ts-color-text-secondary);\n}\n\n/* ---- Icon ---- */\n.alert__icon {\n display: flex;\n align-items: center;\n font-size: 1.25em;\n flex-shrink: 0;\n margin-top: 1px;\n}\n\n/* ---- Message ---- */\n.alert__message {\n flex: 1;\n min-width: 0;\n}\n\n/* ---- Action ---- */\n.alert__action {\n display: flex;\n align-items: center;\n flex-shrink: 0;\n}\n\n.alert__action:empty {\n display: none;\n}\n\n/* ---- Close Button ---- */\n.alert__close {\n display: flex;\n align-items: center;\n justify-content: center;\n flex-shrink: 0;\n width: 1.5rem;\n height: 1.5rem;\n border: none;\n border-radius: var(--ts-radius-sm);\n background: transparent;\n color: currentColor;\n opacity: 0.6;\n cursor: pointer;\n font-size: 0.8em;\n transition: opacity var(--ts-transition-fast);\n padding: 0;\n line-height: 1;\n}\n\n.alert__close:hover {\n opacity: 1;\n}\n\n.alert__close:focus-visible {\n box-shadow: var(--ts-focus-ring);\n opacity: 1;\n}\n","import { Component, Prop, Event, State, h, Host, Method } from '@stencil/core';\nimport type { EventEmitter } from '@stencil/core';\nimport type { TsVariant } from '../../types';\n\n/**\n * @slot - Default slot for alert message content.\n * @slot icon - Custom icon to override the default variant icon.\n * @slot action - Action buttons or links displayed at the end.\n *\n * @part base - The alert container.\n * @part icon - The icon wrapper.\n * @part message - The message wrapper.\n * @part action - The action slot wrapper.\n * @part close - The close button.\n */\n@Component({\n tag: 'ts-alert',\n styleUrl: 'alert.css',\n shadow: true,\n})\nexport class TsAlert {\n /** The alert's semantic variant. */\n @Prop({ reflect: true }) variant: TsVariant = 'info';\n\n /** Whether the alert can be dismissed. */\n @Prop() closable = false;\n\n /** Whether the alert is currently visible. */\n @State() isVisible = true;\n\n /** Emitted when the alert is closed. */\n @Event({ eventName: 'tsClose' }) tsClose!: EventEmitter<void>;\n\n /** Programmatically close the alert. */\n @Method()\n async close(): Promise<void> {\n this.isVisible = false;\n this.tsClose.emit();\n }\n\n /** Programmatically show the alert. */\n @Method()\n async show(): Promise<void> {\n this.isVisible = true;\n }\n\n private handleClose = (): void => {\n this.close();\n };\n\n // eslint-disable-next-line @typescript-eslint/explicit-function-return-type\n private renderDefaultIcon() {\n const icons: Record<string, string> = {\n info: 'ℹ',\n success: '✓',\n warning: '⚠',\n danger: '✕',\n primary: 'ℹ',\n secondary: 'ℹ',\n neutral: 'ℹ',\n };\n return <span aria-hidden=\"true\">{icons[this.variant] || 'ℹ'}</span>;\n }\n\n // eslint-disable-next-line @typescript-eslint/explicit-function-return-type\n render() {\n if (!this.isVisible) return null;\n\n return (\n <Host\n class={{\n 'ts-alert': true,\n [`ts-alert--${this.variant}`]: true,\n }}\n role=\"alert\"\n >\n <div class=\"alert__base\" part=\"base\">\n <div class=\"alert__icon\" part=\"icon\">\n <slot name=\"icon\">{this.renderDefaultIcon()}</slot>\n </div>\n\n <div class=\"alert__message\" part=\"message\">\n <slot />\n </div>\n\n <div class=\"alert__action\" part=\"action\">\n <slot name=\"action\" />\n </div>\n\n {this.closable && (\n <button\n class=\"alert__close\"\n part=\"close\"\n type=\"button\"\n aria-label=\"Close alert\"\n onClick={this.handleClose}\n >\n ✕\n </button>\n )}\n </div>\n </Host>\n );\n }\n}\n"],"mappings":"oDAAA,MAAMA,EAAW,IAAM,8lE,MCoBVC,EAAO,M,wDAEOC,QAAqB,OAGtCC,SAAW,MAGVC,UAAY,KAGYC,QAIjC,WAAMC,GACJC,KAAKH,UAAY,MACjBG,KAAKF,QAAQG,M,CAKf,UAAMC,GACJF,KAAKH,UAAY,I,CAGXM,YAAc,KACpBH,KAAKD,OAAO,EAIN,iBAAAK,GACN,MAAMC,EAAgC,CACpCC,KAAM,IACNC,QAAS,IACTC,QAAS,IACTC,OAAQ,IACRC,QAAS,IACTC,UAAW,IACXC,QAAS,KAEX,OAAOC,EAAA,sBAAkB,QAAQR,EAAML,KAAKL,UAAY,I,CAI1D,MAAAmB,GACE,IAAKd,KAAKH,UAAW,OAAO,KAE5B,OACEgB,EAACE,EAAI,CACHC,MAAO,CACL,WAAY,KACZ,CAAC,aAAahB,KAAKL,WAAY,MAEjCsB,KAAK,SAELJ,EAAA,OAAKG,MAAM,cAAcE,KAAK,QAC5BL,EAAA,OAAKG,MAAM,cAAcE,KAAK,QAC5BL,EAAA,QAAMM,KAAK,QAAQnB,KAAKI,sBAG1BS,EAAA,OAAKG,MAAM,iBAAiBE,KAAK,WAC/BL,EAAA,cAGFA,EAAA,OAAKG,MAAM,gBAAgBE,KAAK,UAC9BL,EAAA,QAAMM,KAAK,YAGZnB,KAAKJ,UACJiB,EAAA,UACEG,MAAM,eACNE,KAAK,QACLE,KAAK,SAAQ,aACF,cACXC,QAASrB,KAAKG,aAAW,M","ignoreList":[]}
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
import{r as s,c as t,a as e,h as i,H as r}from"./p-V8-ENixA.js";const a=()=>`:host{display:block;--ts-slider-track-bg:var(--ts-color-neutral-200);--ts-slider-fill-bg:var(--ts-color-interactive-primary);--ts-slider-thumb-bg:var(--ts-color-neutral-0);--ts-slider-thumb-size:1.25rem}.slider__label{display:flex;justify-content:space-between;align-items:center;font-family:var(--ts-font-family-base);font-size:var(--ts-font-size-sm);font-weight:var(--ts-font-weight-semi);color:var(--ts-color-text-primary);margin-block-end:var(--ts-spacing-2)}.slider__value{font-family:var(--ts-font-family-base);font-size:var(--ts-font-size-sm);font-weight:var(--ts-font-weight-semi);color:var(--ts-color-text-secondary)}.slider__track{position:relative;block-size:var(--ts-slider-thumb-size);display:flex;align-items:center;cursor:pointer}.slider__track::before{content:'';position:absolute;inset-inline:0;block-size:4px;background-color:var(--ts-slider-track-bg);border-radius:var(--ts-radius-full)}.slider__fill{position:absolute;inset-inline-start:0;block-size:4px;background-color:var(--ts-slider-fill-bg);border-radius:var(--ts-radius-full);pointer-events:none}.slider__thumb{position:absolute;inline-size:var(--ts-slider-thumb-size);block-size:var(--ts-slider-thumb-size);border-radius:var(--ts-radius-full);background-color:var(--ts-slider-thumb-bg);border:2px solid var(--ts-slider-fill-bg);box-shadow:var(--ts-shadow-sm);transform:translateX(-50%);cursor:grab;outline:none;transition:box-shadow var(--ts-transition-fast), transform var(--ts-transition-fast)}.slider__thumb:focus-visible{box-shadow:var(--ts-focus-ring)}.slider__thumb:active{cursor:grabbing;transform:translateX(-50%) scale(1.1)}:host([size="sm"]){--ts-slider-thumb-size:1rem}:host([size="sm"]) .slider__track::before,:host([size="sm"]) .slider__fill{block-size:3px}:host([size="lg"]){--ts-slider-thumb-size:1.5rem}:host([size="lg"]) .slider__track::before,:host([size="lg"]) .slider__fill{block-size:6px}:host(.ts-slider--disabled){opacity:0.5}:host(.ts-slider--disabled) .slider__track{cursor:not-allowed}:host(.ts-slider--disabled) .slider__thumb{cursor:not-allowed}`;const l=class{constructor(e){s(this,e);this.tsInput=t(this,"tsInput");this.tsChange=t(this,"tsChange")}get hostEl(){return e(this)}trackEl;dragging=false;value=0;min=0;max=100;step=1;disabled=false;label;showValue=false;size="md";tsInput;tsChange;get percentage(){const s=this.max-this.min;if(s<=0)return 0;return(this.value-this.min)/s*100}clampAndStep(s){const t=Math.round((s-this.min)/this.step)*this.step+this.min;return Math.min(this.max,Math.max(this.min,t))}updateValueFromPosition(s){if(!this.trackEl)return;const t=this.trackEl.getBoundingClientRect();const e=(s-t.left)/t.width;const i=this.min+e*(this.max-this.min);this.value=this.clampAndStep(i)}handleMouseDown=s=>{if(this.disabled)return;s.preventDefault();this.dragging=true;this.updateValueFromPosition(s.clientX);this.tsInput.emit({value:this.value});const t=s=>{this.updateValueFromPosition(s.clientX);this.tsInput.emit({value:this.value})};const e=()=>{this.dragging=false;this.tsChange.emit({value:this.value});document.removeEventListener("mousemove",t);document.removeEventListener("mouseup",e)};document.addEventListener("mousemove",t);document.addEventListener("mouseup",e)};handleKeyDown=s=>{if(this.disabled)return;let t=this.value;const e=this.step*10;switch(s.key){case"ArrowRight":case"ArrowUp":s.preventDefault();t=this.clampAndStep(this.value+this.step);break;case"ArrowLeft":case"ArrowDown":s.preventDefault();t=this.clampAndStep(this.value-this.step);break;case"PageUp":s.preventDefault();t=this.clampAndStep(this.value+e);break;case"PageDown":s.preventDefault();t=this.clampAndStep(this.value-e);break;case"Home":s.preventDefault();t=this.min;break;case"End":s.preventDefault();t=this.max;break;default:return}if(t!==this.value){this.value=t;this.tsInput.emit({value:this.value});this.tsChange.emit({value:this.value})}};render(){const s=this.percentage;return i(r,{key:"c02613013e6e9c44f48c3916069020bf7252c154",class:{"ts-slider":true,[`ts-slider--${this.size}`]:true,"ts-slider--disabled":this.disabled}},this.label&&i("label",{key:"6919de6f5cbd24e18cd7154bcb056838e31f3d69",class:"slider__label",part:"label"},this.label,this.showValue&&i("span",{key:"c09c6b63da3db97623ff43d6ba329c3072756bd2",class:"slider__value"},this.value)),!this.label&&this.showValue&&i("span",{key:"1ec0bc6e6cecc217b52f5cf36ad2557dfcf3f724",class:"slider__value",part:"label","aria-hidden":"true"},this.value),i("div",{key:"37c433458db6f6d37139fb2b402391570a7bcc2d",class:"slider__track",part:"track",ref:s=>this.trackEl=s,onMouseDown:this.handleMouseDown},i("div",{key:"e2ef651e9b102ea1d0eaf8d1cb5516cd1a413d69",class:"slider__fill",part:"fill",style:{width:`${s}%`}}),i("div",{key:"bff51286191e7beffcbff2d70d9595497bcb8d0b",class:"slider__thumb",part:"thumb",role:"slider",tabindex:this.disabled?-1:0,"aria-valuenow":this.value,"aria-valuemin":this.min,"aria-valuemax":this.max,"aria-label":this.label||undefined,"aria-disabled":this.disabled?"true":undefined,style:{insetInlineStart:`${s}%`},onKeyDown:this.handleKeyDown})))}};l.style=a();export{l as ts_slider};
|
|
2
|
+
//# sourceMappingURL=p-bb9ebbd8.entry.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":["sliderCss","TsSlider","trackEl","dragging","value","min","max","step","disabled","label","showValue","size","tsInput","tsChange","percentage","range","this","clampAndStep","val","stepped","Math","round","updateValueFromPosition","clientX","rect","getBoundingClientRect","ratio","left","width","rawValue","handleMouseDown","event","preventDefault","emit","handleMouseMove","e","handleMouseUp","document","removeEventListener","addEventListener","handleKeyDown","newValue","bigStep","key","render","percent","h","Host","class","part","ref","el","onMouseDown","style","role","tabindex","undefined","insetInlineStart","onKeyDown"],"sources":["src/components/slider/slider.css?tag=ts-slider&encapsulation=shadow","src/components/slider/slider.tsx"],"sourcesContent":["/* ==========================================================================\n ts-slider — Shadow DOM Scoped Styles\n\n Component tokens (Tier 3):\n --ts-slider-track-bg Track background color\n --ts-slider-fill-bg Fill background color\n --ts-slider-thumb-bg Thumb background color\n --ts-slider-thumb-size Thumb dimensions\n ========================================================================== */\n\n:host {\n display: block;\n\n --ts-slider-track-bg: var(--ts-color-neutral-200);\n --ts-slider-fill-bg: var(--ts-color-interactive-primary);\n --ts-slider-thumb-bg: var(--ts-color-neutral-0);\n --ts-slider-thumb-size: 1.25rem;\n}\n\n/* ---- Label ---- */\n.slider__label {\n display: flex;\n justify-content: space-between;\n align-items: center;\n font-family: var(--ts-font-family-base);\n font-size: var(--ts-font-size-sm);\n font-weight: var(--ts-font-weight-semi);\n color: var(--ts-color-text-primary);\n margin-block-end: var(--ts-spacing-2);\n}\n\n.slider__value {\n font-family: var(--ts-font-family-base);\n font-size: var(--ts-font-size-sm);\n font-weight: var(--ts-font-weight-semi);\n color: var(--ts-color-text-secondary);\n}\n\n/* ---- Track ---- */\n.slider__track {\n position: relative;\n block-size: var(--ts-slider-thumb-size);\n display: flex;\n align-items: center;\n cursor: pointer;\n}\n\n.slider__track::before {\n content: '';\n position: absolute;\n inset-inline: 0;\n block-size: 4px;\n background-color: var(--ts-slider-track-bg);\n border-radius: var(--ts-radius-full);\n}\n\n/* ---- Fill ---- */\n.slider__fill {\n position: absolute;\n inset-inline-start: 0;\n block-size: 4px;\n background-color: var(--ts-slider-fill-bg);\n border-radius: var(--ts-radius-full);\n pointer-events: none;\n}\n\n/* ---- Thumb ---- */\n.slider__thumb {\n position: absolute;\n inline-size: var(--ts-slider-thumb-size);\n block-size: var(--ts-slider-thumb-size);\n border-radius: var(--ts-radius-full);\n background-color: var(--ts-slider-thumb-bg);\n border: 2px solid var(--ts-slider-fill-bg);\n box-shadow: var(--ts-shadow-sm);\n transform: translateX(-50%);\n cursor: grab;\n outline: none;\n transition:\n box-shadow var(--ts-transition-fast),\n transform var(--ts-transition-fast);\n}\n\n.slider__thumb:focus-visible {\n box-shadow: var(--ts-focus-ring);\n}\n\n.slider__thumb:active {\n cursor: grabbing;\n transform: translateX(-50%) scale(1.1);\n}\n\n/* ---- Sizes ---- */\n:host([size=\"sm\"]) {\n --ts-slider-thumb-size: 1rem;\n}\n\n:host([size=\"sm\"]) .slider__track::before,\n:host([size=\"sm\"]) .slider__fill {\n block-size: 3px;\n}\n\n:host([size=\"lg\"]) {\n --ts-slider-thumb-size: 1.5rem;\n}\n\n:host([size=\"lg\"]) .slider__track::before,\n:host([size=\"lg\"]) .slider__fill {\n block-size: 6px;\n}\n\n/* ---- Disabled ---- */\n:host(.ts-slider--disabled) {\n opacity: 0.5;\n}\n\n:host(.ts-slider--disabled) .slider__track {\n cursor: not-allowed;\n}\n\n:host(.ts-slider--disabled) .slider__thumb {\n cursor: not-allowed;\n}\n","import { Component, Prop, Event, State, h, Host, Element } from '@stencil/core';\nimport type { EventEmitter } from '@stencil/core';\nimport type { TsSize } from '../../types';\n\n/**\n * @part track - The slider track.\n * @part fill - The filled portion of the track.\n * @part thumb - The draggable thumb.\n * @part label - The value label.\n */\n@Component({\n tag: 'ts-slider',\n styleUrl: 'slider.css',\n shadow: true,\n})\nexport class TsSlider {\n @Element() hostEl!: HTMLElement;\n\n private trackEl?: HTMLElement;\n\n @State() dragging = false;\n\n /** Current slider value. */\n @Prop({ mutable: true, reflect: true }) value = 0;\n\n /** Minimum value. */\n @Prop() min = 0;\n\n /** Maximum value. */\n @Prop() max = 100;\n\n /** Step increment. */\n @Prop() step = 1;\n\n /** Disables the slider. */\n @Prop({ reflect: true }) disabled = false;\n\n /** Accessible label. */\n @Prop() label?: string;\n\n /** Whether to display the current value. */\n @Prop({ reflect: true }) showValue = false;\n\n /** The size of the slider. */\n @Prop({ reflect: true }) size: TsSize = 'md';\n\n /** Emitted continuously during drag. */\n @Event({ eventName: 'tsInput' }) tsInput!: EventEmitter<{ value: number }>;\n\n /** Emitted when drag ends (value committed). */\n @Event({ eventName: 'tsChange' }) tsChange!: EventEmitter<{ value: number }>;\n\n private get percentage(): number {\n const range = this.max - this.min;\n if (range <= 0) return 0;\n return ((this.value - this.min) / range) * 100;\n }\n\n private clampAndStep(val: number): number {\n // Snap to step\n const stepped = Math.round((val - this.min) / this.step) * this.step + this.min;\n // Clamp\n return Math.min(this.max, Math.max(this.min, stepped));\n }\n\n private updateValueFromPosition(clientX: number): void {\n if (!this.trackEl) return;\n const rect = this.trackEl.getBoundingClientRect();\n const ratio = (clientX - rect.left) / rect.width;\n const rawValue = this.min + ratio * (this.max - this.min);\n this.value = this.clampAndStep(rawValue);\n }\n\n private handleMouseDown = (event: MouseEvent): void => {\n if (this.disabled) return;\n event.preventDefault();\n this.dragging = true;\n this.updateValueFromPosition(event.clientX);\n this.tsInput.emit({ value: this.value });\n\n const handleMouseMove = (e: MouseEvent): void => {\n this.updateValueFromPosition(e.clientX);\n this.tsInput.emit({ value: this.value });\n };\n\n const handleMouseUp = (): void => {\n this.dragging = false;\n this.tsChange.emit({ value: this.value });\n document.removeEventListener('mousemove', handleMouseMove);\n document.removeEventListener('mouseup', handleMouseUp);\n };\n\n document.addEventListener('mousemove', handleMouseMove);\n document.addEventListener('mouseup', handleMouseUp);\n };\n\n private handleKeyDown = (event: KeyboardEvent): void => {\n if (this.disabled) return;\n\n let newValue = this.value;\n const bigStep = this.step * 10;\n\n switch (event.key) {\n case 'ArrowRight':\n case 'ArrowUp':\n event.preventDefault();\n newValue = this.clampAndStep(this.value + this.step);\n break;\n case 'ArrowLeft':\n case 'ArrowDown':\n event.preventDefault();\n newValue = this.clampAndStep(this.value - this.step);\n break;\n case 'PageUp':\n event.preventDefault();\n newValue = this.clampAndStep(this.value + bigStep);\n break;\n case 'PageDown':\n event.preventDefault();\n newValue = this.clampAndStep(this.value - bigStep);\n break;\n case 'Home':\n event.preventDefault();\n newValue = this.min;\n break;\n case 'End':\n event.preventDefault();\n newValue = this.max;\n break;\n default:\n return;\n }\n\n if (newValue !== this.value) {\n this.value = newValue;\n this.tsInput.emit({ value: this.value });\n this.tsChange.emit({ value: this.value });\n }\n };\n\n // eslint-disable-next-line @typescript-eslint/explicit-function-return-type\n render() {\n const percent = this.percentage;\n\n return (\n <Host\n class={{\n 'ts-slider': true,\n [`ts-slider--${this.size}`]: true,\n 'ts-slider--disabled': this.disabled,\n }}\n >\n {this.label && (\n <label class=\"slider__label\" part=\"label\">\n {this.label}\n {this.showValue && <span class=\"slider__value\">{this.value}</span>}\n </label>\n )}\n {!this.label && this.showValue && (\n <span class=\"slider__value\" part=\"label\" aria-hidden=\"true\">\n {this.value}\n </span>\n )}\n <div\n class=\"slider__track\"\n part=\"track\"\n ref={(el) => (this.trackEl = el)}\n onMouseDown={this.handleMouseDown}\n >\n <div\n class=\"slider__fill\"\n part=\"fill\"\n style={{ width: `${percent}%` }}\n />\n <div\n class=\"slider__thumb\"\n part=\"thumb\"\n role=\"slider\"\n tabindex={this.disabled ? -1 : 0}\n aria-valuenow={this.value}\n aria-valuemin={this.min}\n aria-valuemax={this.max}\n aria-label={this.label || undefined}\n aria-disabled={this.disabled ? 'true' : undefined}\n style={{ insetInlineStart: `${percent}%` }}\n onKeyDown={this.handleKeyDown}\n />\n </div>\n </Host>\n );\n }\n}\n"],"mappings":"gEAAA,MAAMA,EAAY,IAAM,ygE,MCeXC,EAAQ,M,qHAGXC,QAECC,SAAW,MAGoBC,MAAQ,EAGxCC,IAAM,EAGNC,IAAM,IAGNC,KAAO,EAGUC,SAAW,MAG5BC,MAGiBC,UAAY,MAGZC,KAAe,KAGPC,QAGCC,SAElC,cAAYC,GACV,MAAMC,EAAQC,KAAKV,IAAMU,KAAKX,IAC9B,GAAIU,GAAS,EAAG,OAAO,EACvB,OAASC,KAAKZ,MAAQY,KAAKX,KAAOU,EAAS,G,CAGrC,YAAAE,CAAaC,GAEnB,MAAMC,EAAUC,KAAKC,OAAOH,EAAMF,KAAKX,KAAOW,KAAKT,MAAQS,KAAKT,KAAOS,KAAKX,IAE5E,OAAOe,KAAKf,IAAIW,KAAKV,IAAKc,KAAKd,IAAIU,KAAKX,IAAKc,G,CAGvC,uBAAAG,CAAwBC,GAC9B,IAAKP,KAAKd,QAAS,OACnB,MAAMsB,EAAOR,KAAKd,QAAQuB,wBAC1B,MAAMC,GAASH,EAAUC,EAAKG,MAAQH,EAAKI,MAC3C,MAAMC,EAAWb,KAAKX,IAAMqB,GAASV,KAAKV,IAAMU,KAAKX,KACrDW,KAAKZ,MAAQY,KAAKC,aAAaY,E,CAGzBC,gBAAmBC,IACzB,GAAIf,KAAKR,SAAU,OACnBuB,EAAMC,iBACNhB,KAAKb,SAAW,KAChBa,KAAKM,wBAAwBS,EAAMR,SACnCP,KAAKJ,QAAQqB,KAAK,CAAE7B,MAAOY,KAAKZ,QAEhC,MAAM8B,EAAmBC,IACvBnB,KAAKM,wBAAwBa,EAAEZ,SAC/BP,KAAKJ,QAAQqB,KAAK,CAAE7B,MAAOY,KAAKZ,OAAQ,EAG1C,MAAMgC,EAAgB,KACpBpB,KAAKb,SAAW,MAChBa,KAAKH,SAASoB,KAAK,CAAE7B,MAAOY,KAAKZ,QACjCiC,SAASC,oBAAoB,YAAaJ,GAC1CG,SAASC,oBAAoB,UAAWF,EAAc,EAGxDC,SAASE,iBAAiB,YAAaL,GACvCG,SAASE,iBAAiB,UAAWH,EAAc,EAG7CI,cAAiBT,IACvB,GAAIf,KAAKR,SAAU,OAEnB,IAAIiC,EAAWzB,KAAKZ,MACpB,MAAMsC,EAAU1B,KAAKT,KAAO,GAE5B,OAAQwB,EAAMY,KACZ,IAAK,aACL,IAAK,UACHZ,EAAMC,iBACNS,EAAWzB,KAAKC,aAAaD,KAAKZ,MAAQY,KAAKT,MAC/C,MACF,IAAK,YACL,IAAK,YACHwB,EAAMC,iBACNS,EAAWzB,KAAKC,aAAaD,KAAKZ,MAAQY,KAAKT,MAC/C,MACF,IAAK,SACHwB,EAAMC,iBACNS,EAAWzB,KAAKC,aAAaD,KAAKZ,MAAQsC,GAC1C,MACF,IAAK,WACHX,EAAMC,iBACNS,EAAWzB,KAAKC,aAAaD,KAAKZ,MAAQsC,GAC1C,MACF,IAAK,OACHX,EAAMC,iBACNS,EAAWzB,KAAKX,IAChB,MACF,IAAK,MACH0B,EAAMC,iBACNS,EAAWzB,KAAKV,IAChB,MACF,QACE,OAGJ,GAAImC,IAAazB,KAAKZ,MAAO,CAC3BY,KAAKZ,MAAQqC,EACbzB,KAAKJ,QAAQqB,KAAK,CAAE7B,MAAOY,KAAKZ,QAChCY,KAAKH,SAASoB,KAAK,CAAE7B,MAAOY,KAAKZ,O,GAKrC,MAAAwC,GACE,MAAMC,EAAU7B,KAAKF,WAErB,OACEgC,EAACC,EAAI,CAAAJ,IAAA,2CACHK,MAAO,CACL,YAAa,KACb,CAAC,cAAchC,KAAKL,QAAS,KAC7B,sBAAuBK,KAAKR,WAG7BQ,KAAKP,OACJqC,EAAA,SAAAH,IAAA,2CAAOK,MAAM,gBAAgBC,KAAK,SAC/BjC,KAAKP,MACLO,KAAKN,WAAaoC,EAAA,QAAAH,IAAA,2CAAMK,MAAM,iBAAiBhC,KAAKZ,SAGvDY,KAAKP,OAASO,KAAKN,WACnBoC,EAAA,QAAAH,IAAA,2CAAMK,MAAM,gBAAgBC,KAAK,QAAO,cAAa,QAClDjC,KAAKZ,OAGV0C,EAAA,OAAAH,IAAA,2CACEK,MAAM,gBACNC,KAAK,QACLC,IAAMC,GAAQnC,KAAKd,QAAUiD,EAC7BC,YAAapC,KAAKc,iBAElBgB,EAAA,OAAAH,IAAA,2CACEK,MAAM,eACNC,KAAK,OACLI,MAAO,CAAEzB,MAAO,GAAGiB,QAErBC,EAAA,OAAAH,IAAA,2CACEK,MAAM,gBACNC,KAAK,QACLK,KAAK,SACLC,SAAUvC,KAAKR,UAAW,EAAK,EAAC,gBACjBQ,KAAKZ,MAAK,gBACVY,KAAKX,IAAG,gBACRW,KAAKV,IAAG,aACXU,KAAKP,OAAS+C,UAAS,gBACpBxC,KAAKR,SAAW,OAASgD,UACxCH,MAAO,CAAEI,iBAAkB,GAAGZ,MAC9Ba,UAAW1C,KAAKwB,iB","ignoreList":[]}
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
import{r,c as s,h as n,H as a}from"./p-V8-ENixA.js";const e=()=>`:host{display:block;font-family:var(--ts-font-family-base);--ts-banner-bg:var(--ts-color-info-bg);--ts-banner-border-color:var(--ts-color-info-border)}:host([sticky]){position:sticky;inset-block-start:0;z-index:var(--ts-z-sticky, 100)}.banner__base{display:flex;align-items:center;gap:var(--ts-spacing-3);padding-inline:var(--ts-spacing-4);padding-block:var(--ts-spacing-3);background-color:var(--ts-banner-bg);border-block-end:1px solid var(--ts-banner-border-color);font-size:var(--ts-font-size-sm);line-height:var(--ts-line-height-normal);inline-size:100%}:host([variant="info"]){--ts-banner-bg:var(--ts-color-info-bg);--ts-banner-border-color:var(--ts-color-info-border)}:host([variant="info"]) .banner__base{color:var(--ts-color-info-600)}:host([variant="success"]){--ts-banner-bg:var(--ts-color-success-bg);--ts-banner-border-color:var(--ts-color-success-border)}:host([variant="success"]) .banner__base{color:var(--ts-color-success-600)}:host([variant="warning"]){--ts-banner-bg:var(--ts-color-warning-bg);--ts-banner-border-color:var(--ts-color-warning-border)}:host([variant="warning"]) .banner__base{color:var(--ts-color-warning-600)}:host([variant="danger"]){--ts-banner-bg:var(--ts-color-danger-bg);--ts-banner-border-color:var(--ts-color-danger-border)}:host([variant="danger"]) .banner__base{color:var(--ts-color-danger-600)}:host([variant="neutral"]){--ts-banner-bg:var(--ts-color-bg-subtle);--ts-banner-border-color:var(--ts-color-border-subtle)}:host([variant="neutral"]) .banner__base{color:var(--ts-color-text-secondary)}.banner__icon{display:flex;align-items:center;font-size:1.15em;flex-shrink:0}.banner__message{flex:1;min-inline-size:0}.banner__action{display:flex;align-items:center;flex-shrink:0}.banner__action:empty{display:none}.banner__close{display:flex;align-items:center;justify-content:center;flex-shrink:0;inline-size:1.5rem;block-size:1.5rem;border:none;border-radius:var(--ts-radius-sm);background:transparent;color:currentColor;opacity:0.6;cursor:pointer;font-size:0.8em;transition:opacity var(--ts-transition-fast);padding:0;line-height:1}.banner__close:hover{opacity:1}.banner__close:focus-visible{box-shadow:var(--ts-focus-ring);opacity:1}`;const t=class{constructor(n){r(this,n);this.tsClose=s(this,"tsClose")}variant="info";dismissible=false;icon;sticky=false;isVisible=true;tsClose;async close(){this.isVisible=false;this.tsClose.emit()}async show(){this.isVisible=true}handleClose=()=>{this.close()};renderDefaultIcon(){const r={info:"ℹ",success:"✓",warning:"⚠",danger:"✕",primary:"ℹ",secondary:"ℹ",neutral:"ℹ"};return n("span",{"aria-hidden":"true"},r[this.variant]||"ℹ")}render(){if(!this.isVisible)return null;const r=this.variant==="danger"?"alert":"banner";const s=this.variant==="danger"?"assertive":"polite";return n(a,{class:{"ts-banner":true,[`ts-banner--${this.variant}`]:true,"ts-banner--sticky":this.sticky},role:r,"aria-live":s},n("div",{class:"banner__base",part:"base"},n("div",{class:"banner__icon",part:"icon"},this.icon?n("ts-icon",{name:this.icon}):this.renderDefaultIcon()),n("div",{class:"banner__message",part:"message"},n("slot",null)),n("div",{class:"banner__action",part:"action"},n("slot",{name:"action"})),this.dismissible&&n("button",{class:"banner__close",part:"close",type:"button","aria-label":"Dismiss banner",onClick:this.handleClose},"\\u2715")))}};t.style=e();export{t as ts_banner};
|
|
2
|
+
//# sourceMappingURL=p-bce40715.entry.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":["bannerCss","TsBanner","variant","dismissible","icon","sticky","isVisible","tsClose","close","this","emit","show","handleClose","renderDefaultIcon","icons","info","success","warning","danger","primary","secondary","neutral","h","render","role","ariaLive","Host","class","part","name","type","onClick"],"sources":["src/components/banner/banner.css?tag=ts-banner&encapsulation=shadow","src/components/banner/banner.tsx"],"sourcesContent":["/* ==========================================================================\n ts-banner — Shadow DOM Scoped Styles\n\n Component tokens (Tier 3):\n --ts-banner-bg Background color\n --ts-banner-border-color Border color\n ========================================================================== */\n\n:host {\n display: block;\n font-family: var(--ts-font-family-base);\n\n --ts-banner-bg: var(--ts-color-info-bg);\n --ts-banner-border-color: var(--ts-color-info-border);\n}\n\n:host([sticky]) {\n position: sticky;\n inset-block-start: 0;\n z-index: var(--ts-z-sticky, 100);\n}\n\n.banner__base {\n display: flex;\n align-items: center;\n gap: var(--ts-spacing-3);\n padding-inline: var(--ts-spacing-4);\n padding-block: var(--ts-spacing-3);\n background-color: var(--ts-banner-bg);\n border-block-end: 1px solid var(--ts-banner-border-color);\n font-size: var(--ts-font-size-sm);\n line-height: var(--ts-line-height-normal);\n inline-size: 100%;\n}\n\n/* ---- Variants ---- */\n:host([variant=\"info\"]) {\n --ts-banner-bg: var(--ts-color-info-bg);\n --ts-banner-border-color: var(--ts-color-info-border);\n}\n:host([variant=\"info\"]) .banner__base {\n color: var(--ts-color-info-600);\n}\n\n:host([variant=\"success\"]) {\n --ts-banner-bg: var(--ts-color-success-bg);\n --ts-banner-border-color: var(--ts-color-success-border);\n}\n:host([variant=\"success\"]) .banner__base {\n color: var(--ts-color-success-600);\n}\n\n:host([variant=\"warning\"]) {\n --ts-banner-bg: var(--ts-color-warning-bg);\n --ts-banner-border-color: var(--ts-color-warning-border);\n}\n:host([variant=\"warning\"]) .banner__base {\n color: var(--ts-color-warning-600);\n}\n\n:host([variant=\"danger\"]) {\n --ts-banner-bg: var(--ts-color-danger-bg);\n --ts-banner-border-color: var(--ts-color-danger-border);\n}\n:host([variant=\"danger\"]) .banner__base {\n color: var(--ts-color-danger-600);\n}\n\n:host([variant=\"neutral\"]) {\n --ts-banner-bg: var(--ts-color-bg-subtle);\n --ts-banner-border-color: var(--ts-color-border-subtle);\n}\n:host([variant=\"neutral\"]) .banner__base {\n color: var(--ts-color-text-secondary);\n}\n\n/* ---- Icon ---- */\n.banner__icon {\n display: flex;\n align-items: center;\n font-size: 1.15em;\n flex-shrink: 0;\n}\n\n/* ---- Message ---- */\n.banner__message {\n flex: 1;\n min-inline-size: 0;\n}\n\n/* ---- Action ---- */\n.banner__action {\n display: flex;\n align-items: center;\n flex-shrink: 0;\n}\n\n.banner__action:empty {\n display: none;\n}\n\n/* ---- Close Button ---- */\n.banner__close {\n display: flex;\n align-items: center;\n justify-content: center;\n flex-shrink: 0;\n inline-size: 1.5rem;\n block-size: 1.5rem;\n border: none;\n border-radius: var(--ts-radius-sm);\n background: transparent;\n color: currentColor;\n opacity: 0.6;\n cursor: pointer;\n font-size: 0.8em;\n transition: opacity var(--ts-transition-fast);\n padding: 0;\n line-height: 1;\n}\n\n.banner__close:hover {\n opacity: 1;\n}\n\n.banner__close:focus-visible {\n box-shadow: var(--ts-focus-ring);\n opacity: 1;\n}\n","import { Component, Prop, Event, State, h, Host, Method } from '@stencil/core';\nimport type { EventEmitter } from '@stencil/core';\nimport type { TsVariant } from '../../types';\n\n/**\n * @slot - Default slot for message content.\n * @slot action - CTA button.\n *\n * @part base - The banner container.\n * @part icon - The icon wrapper.\n * @part message - The message wrapper.\n * @part action - The action slot wrapper.\n * @part close - The close/dismiss button.\n */\n@Component({\n tag: 'ts-banner',\n styleUrl: 'banner.css',\n shadow: true,\n})\nexport class TsBanner {\n /** The banner's semantic variant. */\n @Prop({ reflect: true }) variant: TsVariant = 'info';\n\n /** Whether the banner can be dismissed. */\n @Prop({ reflect: true }) dismissible = false;\n\n /** Optional Lucide icon name. */\n @Prop() icon?: string;\n\n /** Whether the banner sticks to the top of the viewport. */\n @Prop({ reflect: true }) sticky = false;\n\n /** Whether the banner is currently visible. */\n @State() isVisible = true;\n\n /** Emitted when the banner is dismissed. */\n @Event({ eventName: 'tsClose' }) tsClose!: EventEmitter<void>;\n\n /** Programmatically close the banner. */\n @Method()\n async close(): Promise<void> {\n this.isVisible = false;\n this.tsClose.emit();\n }\n\n /** Programmatically show the banner. */\n @Method()\n async show(): Promise<void> {\n this.isVisible = true;\n }\n\n private handleClose = (): void => {\n this.close();\n };\n\n // eslint-disable-next-line @typescript-eslint/explicit-function-return-type\n private renderDefaultIcon() {\n const icons: Record<string, string> = {\n info: '\\u2139',\n success: '\\u2713',\n warning: '\\u26A0',\n danger: '\\u2715',\n primary: '\\u2139',\n secondary: '\\u2139',\n neutral: '\\u2139',\n };\n return <span aria-hidden=\"true\">{icons[this.variant] || '\\u2139'}</span>;\n }\n\n // eslint-disable-next-line @typescript-eslint/explicit-function-return-type\n render() {\n if (!this.isVisible) return null;\n\n const role = this.variant === 'danger' ? 'alert' : 'banner';\n const ariaLive = this.variant === 'danger' ? 'assertive' : 'polite';\n\n return (\n <Host\n class={{\n 'ts-banner': true,\n [`ts-banner--${this.variant}`]: true,\n 'ts-banner--sticky': this.sticky,\n }}\n role={role}\n aria-live={ariaLive}\n >\n <div class=\"banner__base\" part=\"base\">\n <div class=\"banner__icon\" part=\"icon\">\n {this.icon ? <ts-icon name={this.icon} /> : this.renderDefaultIcon()}\n </div>\n\n <div class=\"banner__message\" part=\"message\">\n <slot />\n </div>\n\n <div class=\"banner__action\" part=\"action\">\n <slot name=\"action\" />\n </div>\n\n {this.dismissible && (\n <button\n class=\"banner__close\"\n part=\"close\"\n type=\"button\"\n aria-label=\"Dismiss banner\"\n onClick={this.handleClose}\n >\n \\u2715\n </button>\n )}\n </div>\n </Host>\n );\n }\n}\n"],"mappings":"oDAAA,MAAMA,EAAY,IAAM,soE,MCmBXC,EAAQ,M,wDAEMC,QAAqB,OAGrBC,YAAc,MAG/BC,KAGiBC,OAAS,MAGzBC,UAAY,KAGYC,QAIjC,WAAMC,GACJC,KAAKH,UAAY,MACjBG,KAAKF,QAAQG,M,CAKf,UAAMC,GACJF,KAAKH,UAAY,I,CAGXM,YAAc,KACpBH,KAAKD,OAAO,EAIN,iBAAAK,GACN,MAAMC,EAAgC,CACpCC,KAAM,IACNC,QAAS,IACTC,QAAS,IACTC,OAAQ,IACRC,QAAS,IACTC,UAAW,IACXC,QAAS,KAEX,OAAOC,EAAA,sBAAkB,QAAQR,EAAML,KAAKP,UAAY,I,CAI1D,MAAAqB,GACE,IAAKd,KAAKH,UAAW,OAAO,KAE5B,MAAMkB,EAAOf,KAAKP,UAAY,SAAW,QAAU,SACnD,MAAMuB,EAAWhB,KAAKP,UAAY,SAAW,YAAc,SAE3D,OACEoB,EAACI,EAAI,CACHC,MAAO,CACL,YAAa,KACb,CAAC,cAAclB,KAAKP,WAAY,KAChC,oBAAqBO,KAAKJ,QAE5BmB,KAAMA,EAAI,YACCC,GAEXH,EAAA,OAAKK,MAAM,eAAeC,KAAK,QAC7BN,EAAA,OAAKK,MAAM,eAAeC,KAAK,QAC5BnB,KAAKL,KAAOkB,EAAA,WAASO,KAAMpB,KAAKL,OAAWK,KAAKI,qBAGnDS,EAAA,OAAKK,MAAM,kBAAkBC,KAAK,WAChCN,EAAA,cAGFA,EAAA,OAAKK,MAAM,iBAAiBC,KAAK,UAC/BN,EAAA,QAAMO,KAAK,YAGZpB,KAAKN,aACJmB,EAAA,UACEK,MAAM,gBACNC,KAAK,QACLE,KAAK,SAAQ,aACF,iBACXC,QAAStB,KAAKG,aAAW,Y","ignoreList":[]}
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
import{r as a,h as d,H as e}from"./p-V8-ENixA.js";const r=()=>`:host{display:block;font-family:var(--ts-font-family-base);--ts-card-bg:var(--ts-color-bg-elevated);--ts-card-radius:var(--ts-shape-container);--ts-card-border-color:var(--ts-color-border-subtle)}.card__base{border-radius:var(--ts-card-radius);background-color:var(--ts-card-bg);border:1px solid transparent;overflow:hidden;transition:box-shadow var(--ts-transition-normal), transform var(--ts-transition-normal), border-color var(--ts-transition-normal)}:host([elevation="none"]) .card__base{box-shadow:none}:host([elevation="sm"]) .card__base{box-shadow:var(--ts-shadow-sm)}:host([elevation="md"]) .card__base{box-shadow:var(--ts-shadow-md)}:host([elevation="lg"]) .card__base{box-shadow:var(--ts-shadow-lg)}:host([elevation="xl"]) .card__base{box-shadow:var(--ts-shadow-xl)}:host([bordered]) .card__base{border:1px solid var(--ts-card-border-color)}:host([interactive]){cursor:pointer}:host([interactive]) .card__base:hover{box-shadow:var(--ts-shadow-lg)}:host([interactive]) .card__base:active{box-shadow:var(--ts-shadow-md)}:host([interactive]:focus-visible) .card__base{box-shadow:var(--ts-focus-ring)}.card__media{overflow:hidden}.card__media:empty{display:none}.card__media ::slotted(img){display:block;width:100%;height:auto;object-fit:cover}.card__header{border-bottom:1px solid var(--ts-card-border-color)}.card__header:empty{display:none;border-bottom:none}.card__footer{border-top:1px solid var(--ts-card-border-color)}.card__footer:empty{display:none;border-top:none}:host([padding="none"]) .card__header,:host([padding="none"]) .card__body,:host([padding="none"]) .card__footer{padding:0}:host([padding="sm"]) .card__header,:host([padding="sm"]) .card__body,:host([padding="sm"]) .card__footer{padding:var(--ts-spacing-3)}:host([padding="md"]) .card__header,:host([padding="md"]) .card__body,:host([padding="md"]) .card__footer{padding:var(--ts-spacing-4)}:host([padding="lg"]) .card__header,:host([padding="lg"]) .card__body,:host([padding="lg"]) .card__footer{padding:var(--ts-spacing-6)}`;const o=class{constructor(d){a(this,d)}elevation="sm";interactive=false;bordered=false;padding="md";render(){return d(e,{key:"df768436768c2a229b760dc2e1ec17eae2822231",class:{"ts-card":true,[`ts-card--elevation-${this.elevation}`]:true,[`ts-card--padding-${this.padding}`]:true,"ts-card--interactive":this.interactive,"ts-card--bordered":this.bordered},role:this.interactive?"button":undefined,tabindex:this.interactive?"0":undefined},d("div",{key:"bbbaa65e8096402164f96625b2be3600e49fcdc1",class:"card__base",part:"base"},d("div",{key:"ad3c8630cdcdf5d4a7ab19c8c41a70f9d63c80fb",class:"card__media",part:"media"},d("slot",{key:"2b7edddbfa16039b41c3ee0b689595a1de50a054",name:"media"})),d("div",{key:"6e606c675ba1320106106994e74044af137149ce",class:"card__header",part:"header"},d("slot",{key:"979b30143ea98f5df47272753e0c3a56c17dadb6",name:"header"})),d("div",{key:"78edb38cedd9ea7546c8755b9901c03553daf361",class:"card__body",part:"body"},d("slot",{key:"0675cffbc1a040606c071467d00021934ecff188"})),d("div",{key:"f07414c17dc68315cf88e30e509f2736e274e3f2",class:"card__footer",part:"footer"},d("slot",{key:"9a7eae045f925a2f0e4e21c857293ad7bc12ea0c",name:"footer"}))))}};o.style=r();export{o as ts_card};
|
|
2
|
+
//# sourceMappingURL=p-c35c7049.entry.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":["cardCss","TsCard","elevation","interactive","bordered","padding","render","h","Host","key","class","this","role","undefined","tabindex","part","name"],"sources":["src/components/card/card.css?tag=ts-card&encapsulation=shadow","src/components/card/card.tsx"],"sourcesContent":["/* ==========================================================================\n ts-card — Shadow DOM Scoped Styles\n\n Component tokens (Tier 3):\n --ts-card-bg Card background\n --ts-card-radius Border radius\n --ts-card-border-color Border color (when bordered)\n ========================================================================== */\n\n:host {\n display: block;\n font-family: var(--ts-font-family-base);\n\n --ts-card-bg: var(--ts-color-bg-elevated);\n --ts-card-radius: var(--ts-shape-container);\n --ts-card-border-color: var(--ts-color-border-subtle);\n}\n\n.card__base {\n border-radius: var(--ts-card-radius);\n background-color: var(--ts-card-bg);\n border: 1px solid transparent;\n overflow: hidden;\n transition:\n box-shadow var(--ts-transition-normal),\n transform var(--ts-transition-normal),\n border-color var(--ts-transition-normal);\n}\n\n/* ---- Elevation ---- */\n:host([elevation=\"none\"]) .card__base { box-shadow: none; }\n:host([elevation=\"sm\"]) .card__base { box-shadow: var(--ts-shadow-sm); }\n:host([elevation=\"md\"]) .card__base { box-shadow: var(--ts-shadow-md); }\n:host([elevation=\"lg\"]) .card__base { box-shadow: var(--ts-shadow-lg); }\n:host([elevation=\"xl\"]) .card__base { box-shadow: var(--ts-shadow-xl); }\n\n/* ---- Bordered ---- */\n:host([bordered]) .card__base {\n border: 1px solid var(--ts-card-border-color);\n}\n\n/* ---- Interactive ---- */\n:host([interactive]) {\n cursor: pointer;\n}\n\n:host([interactive]) .card__base:hover {\n box-shadow: var(--ts-shadow-lg);\n}\n\n:host([interactive]) .card__base:active {\n box-shadow: var(--ts-shadow-md);\n}\n\n:host([interactive]:focus-visible) .card__base {\n box-shadow: var(--ts-focus-ring);\n}\n\n/* ---- Sections ---- */\n.card__media {\n overflow: hidden;\n}\n\n.card__media:empty {\n display: none;\n}\n\n.card__media ::slotted(img) {\n display: block;\n width: 100%;\n height: auto;\n object-fit: cover;\n}\n\n.card__header {\n border-bottom: 1px solid var(--ts-card-border-color);\n}\n\n.card__header:empty {\n display: none;\n border-bottom: none;\n}\n\n.card__footer {\n border-top: 1px solid var(--ts-card-border-color);\n}\n\n.card__footer:empty {\n display: none;\n border-top: none;\n}\n\n/* ---- Padding ---- */\n:host([padding=\"none\"]) .card__header,\n:host([padding=\"none\"]) .card__body,\n:host([padding=\"none\"]) .card__footer { padding: 0; }\n\n:host([padding=\"sm\"]) .card__header,\n:host([padding=\"sm\"]) .card__body,\n:host([padding=\"sm\"]) .card__footer { padding: var(--ts-spacing-3); }\n\n:host([padding=\"md\"]) .card__header,\n:host([padding=\"md\"]) .card__body,\n:host([padding=\"md\"]) .card__footer { padding: var(--ts-spacing-4); }\n\n:host([padding=\"lg\"]) .card__header,\n:host([padding=\"lg\"]) .card__body,\n:host([padding=\"lg\"]) .card__footer { padding: var(--ts-spacing-6); }\n","import { Component, Prop, h, Host } from '@stencil/core';\n\n/**\n * @slot - Default slot for card body content.\n * @slot header - Card header content.\n * @slot footer - Card footer content.\n * @slot media - Media content (image, video) displayed at the top.\n *\n * @part base - The card container.\n * @part header - The header wrapper.\n * @part body - The body wrapper.\n * @part footer - The footer wrapper.\n * @part media - The media wrapper.\n */\n@Component({\n tag: 'ts-card',\n styleUrl: 'card.css',\n shadow: true,\n})\nexport class TsCard {\n /** Elevation level controlling the shadow depth. */\n @Prop({ reflect: true }) elevation: 'none' | 'sm' | 'md' | 'lg' | 'xl' = 'sm';\n\n /** Makes the card interactive (hover effect, cursor pointer). */\n @Prop({ reflect: true }) interactive = false;\n\n /** Border style variant. */\n @Prop({ reflect: true }) bordered = false;\n\n /** Padding size for the card body. */\n @Prop({ reflect: true }) padding: 'none' | 'sm' | 'md' | 'lg' = 'md';\n\n // eslint-disable-next-line @typescript-eslint/explicit-function-return-type\n render() {\n return (\n <Host\n class={{\n 'ts-card': true,\n [`ts-card--elevation-${this.elevation}`]: true,\n [`ts-card--padding-${this.padding}`]: true,\n 'ts-card--interactive': this.interactive,\n 'ts-card--bordered': this.bordered,\n }}\n role={this.interactive ? 'button' : undefined}\n tabindex={this.interactive ? '0' : undefined}\n >\n <div class=\"card__base\" part=\"base\">\n <div class=\"card__media\" part=\"media\">\n <slot name=\"media\" />\n </div>\n\n <div class=\"card__header\" part=\"header\">\n <slot name=\"header\" />\n </div>\n\n <div class=\"card__body\" part=\"body\">\n <slot />\n </div>\n\n <div class=\"card__footer\" part=\"footer\">\n <slot name=\"footer\" />\n </div>\n </div>\n </Host>\n );\n }\n}\n"],"mappings":"kDAAA,MAAMA,EAAU,IAAM,g+D,MCmBTC,EAAM,M,yBAEQC,UAAgD,KAGhDC,YAAc,MAGdC,SAAW,MAGXC,QAAuC,KAGhE,MAAAC,GACE,OACEC,EAACC,EAAI,CAAAC,IAAA,2CACHC,MAAO,CACL,UAAW,KACX,CAAC,sBAAsBC,KAAKT,aAAc,KAC1C,CAAC,oBAAoBS,KAAKN,WAAY,KACtC,uBAAwBM,KAAKR,YAC7B,oBAAqBQ,KAAKP,UAE5BQ,KAAMD,KAAKR,YAAc,SAAWU,UACpCC,SAAUH,KAAKR,YAAc,IAAMU,WAEnCN,EAAA,OAAAE,IAAA,2CAAKC,MAAM,aAAaK,KAAK,QAC3BR,EAAA,OAAAE,IAAA,2CAAKC,MAAM,cAAcK,KAAK,SAC5BR,EAAA,QAAAE,IAAA,2CAAMO,KAAK,WAGbT,EAAA,OAAAE,IAAA,2CAAKC,MAAM,eAAeK,KAAK,UAC7BR,EAAA,QAAAE,IAAA,2CAAMO,KAAK,YAGbT,EAAA,OAAAE,IAAA,2CAAKC,MAAM,aAAaK,KAAK,QAC3BR,EAAA,QAAAE,IAAA,8CAGFF,EAAA,OAAAE,IAAA,2CAAKC,MAAM,eAAeK,KAAK,UAC7BR,EAAA,QAAAE,IAAA,2CAAMO,KAAK,a","ignoreList":[]}
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
import{r as t,c as s,h as o,H as a}from"./p-V8-ENixA.js";const i=()=>`:host{display:block;position:fixed;z-index:var(--ts-z-toast, 9000);font-family:var(--ts-font-family-base);pointer-events:none;--ts-toast-radius:var(--ts-radius-xl);--ts-toast-shadow:var(--ts-shadow-lg);--ts-toast-max-width:420px}:host([position="top-right"]){inset-block-start:var(--ts-spacing-4);inset-inline-end:var(--ts-spacing-4)}:host([position="top-left"]){inset-block-start:var(--ts-spacing-4);inset-inline-start:var(--ts-spacing-4)}:host([position="bottom-right"]){inset-block-end:var(--ts-spacing-4);inset-inline-end:var(--ts-spacing-4)}:host([position="bottom-left"]){inset-block-end:var(--ts-spacing-4);inset-inline-start:var(--ts-spacing-4)}:host([position="top-center"]){inset-block-start:var(--ts-spacing-4);inset-inline-start:50%;transform:translateX(-50%)}:host([position="bottom-center"]){inset-block-end:var(--ts-spacing-4);inset-inline-start:50%;transform:translateX(-50%)}.toast__base{display:flex;align-items:flex-start;gap:var(--ts-spacing-3);padding:var(--ts-spacing-3) var(--ts-spacing-4);border-radius:var(--ts-toast-radius);box-shadow:var(--ts-toast-shadow);max-inline-size:var(--ts-toast-max-width);pointer-events:auto;border:1px solid transparent;font-size:var(--ts-font-size-sm);line-height:var(--ts-line-height-normal);animation:ts-toast-slide-in 0.3s ease-out}@keyframes ts-toast-slide-in{from{opacity:0;transform:translateY(-8px)}to{opacity:1;transform:translateY(0)}}:host([variant="info"]) .toast__base{background-color:var(--ts-color-info-bg);border-color:var(--ts-color-info-border);color:var(--ts-color-info-600)}:host([variant="success"]) .toast__base{background-color:var(--ts-color-success-bg);border-color:var(--ts-color-success-border);color:var(--ts-color-success-600)}:host([variant="warning"]) .toast__base{background-color:var(--ts-color-warning-bg);border-color:var(--ts-color-warning-border);color:var(--ts-color-warning-600)}:host([variant="danger"]) .toast__base{background-color:var(--ts-color-danger-bg);border-color:var(--ts-color-danger-border);color:var(--ts-color-danger-600)}:host([variant="neutral"]) .toast__base{background-color:var(--ts-color-bg-subtle);border-color:var(--ts-color-border-subtle);color:var(--ts-color-text-secondary)}.toast__icon{display:flex;align-items:center;font-size:1.15em;flex-shrink:0;margin-block-start:1px}.toast__message{flex:1;min-inline-size:0}.toast__action{display:flex;align-items:center;flex-shrink:0}.toast__action:empty{display:none}.toast__close{display:flex;align-items:center;justify-content:center;flex-shrink:0;inline-size:1.5rem;block-size:1.5rem;border:none;border-radius:var(--ts-radius-sm);background:transparent;color:currentColor;opacity:0.6;cursor:pointer;font-size:0.8em;transition:opacity var(--ts-transition-fast);padding:0;line-height:1}.toast__close:hover{opacity:1}.toast__close:focus-visible{box-shadow:var(--ts-focus-ring);opacity:1}`;const r=class{constructor(o){t(this,o);this.tsClose=s(this,"tsClose")}autoCloseTimer;variant="info";duration=5e3;dismissible=true;open=false;position="top-right";tsClose;isVisible=false;handleOpenChange(t){if(t){this.isVisible=true;this.startAutoClose()}else{this.isVisible=false;this.clearAutoClose()}}connectedCallback(){if(this.open){this.isVisible=true;this.startAutoClose()}}disconnectedCallback(){this.clearAutoClose()}async close(){this.open=false;this.isVisible=false;this.clearAutoClose();this.tsClose.emit()}async show(){this.open=true}startAutoClose(){this.clearAutoClose();if(this.duration>0){this.autoCloseTimer=setTimeout((()=>{this.close()}),this.duration)}}clearAutoClose(){if(this.autoCloseTimer){clearTimeout(this.autoCloseTimer);this.autoCloseTimer=undefined}}handleClose=()=>{this.close()};renderIcon(){const t={info:"ℹ",success:"✓",warning:"⚠",danger:"✕",neutral:"ℹ"};return o("span",{class:"toast__icon-symbol","aria-hidden":"true"},t[this.variant]||"ℹ")}render(){if(!this.isVisible)return null;const t=this.variant==="danger"?"assertive":"polite";return o(a,{class:{"ts-toast":true,[`ts-toast--${this.variant}`]:true,[`ts-toast--${this.position}`]:true,"ts-toast--open":this.isVisible},role:"status","aria-live":t},o("div",{class:"toast__base",part:"base"},o("div",{class:"toast__icon",part:"icon"},this.renderIcon()),o("div",{class:"toast__message",part:"message"},o("slot",null)),o("div",{class:"toast__action",part:"action"},o("slot",{name:"action"})),this.dismissible&&o("button",{class:"toast__close",part:"close",type:"button","aria-label":"Dismiss notification",onClick:this.handleClose},"\\u2715")))}static get watchers(){return{open:[{handleOpenChange:0}]}}};r.style=i();export{r as ts_toast};
|
|
2
|
+
//# sourceMappingURL=p-c59ecffa.entry.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":["toastCss","TsToast","autoCloseTimer","variant","duration","dismissible","open","position","tsClose","isVisible","handleOpenChange","newValue","this","startAutoClose","clearAutoClose","connectedCallback","disconnectedCallback","close","emit","show","setTimeout","clearTimeout","undefined","handleClose","renderIcon","icons","info","success","warning","danger","neutral","h","class","render","ariaLive","Host","role","part","name","type","onClick"],"sources":["src/components/toast/toast.css?tag=ts-toast&encapsulation=shadow","src/components/toast/toast.tsx"],"sourcesContent":["/* ==========================================================================\n ts-toast — Shadow DOM Scoped Styles\n\n Component tokens (Tier 3):\n --ts-toast-radius Border radius\n --ts-toast-shadow Box shadow\n --ts-toast-max-width Maximum width\n ========================================================================== */\n\n:host {\n display: block;\n position: fixed;\n z-index: var(--ts-z-toast, 9000);\n font-family: var(--ts-font-family-base);\n pointer-events: none;\n\n --ts-toast-radius: var(--ts-radius-xl);\n --ts-toast-shadow: var(--ts-shadow-lg);\n --ts-toast-max-width: 420px;\n}\n\n/* ---- Positions ---- */\n:host([position=\"top-right\"]) {\n inset-block-start: var(--ts-spacing-4);\n inset-inline-end: var(--ts-spacing-4);\n}\n\n:host([position=\"top-left\"]) {\n inset-block-start: var(--ts-spacing-4);\n inset-inline-start: var(--ts-spacing-4);\n}\n\n:host([position=\"bottom-right\"]) {\n inset-block-end: var(--ts-spacing-4);\n inset-inline-end: var(--ts-spacing-4);\n}\n\n:host([position=\"bottom-left\"]) {\n inset-block-end: var(--ts-spacing-4);\n inset-inline-start: var(--ts-spacing-4);\n}\n\n:host([position=\"top-center\"]) {\n inset-block-start: var(--ts-spacing-4);\n inset-inline-start: 50%;\n transform: translateX(-50%);\n}\n\n:host([position=\"bottom-center\"]) {\n inset-block-end: var(--ts-spacing-4);\n inset-inline-start: 50%;\n transform: translateX(-50%);\n}\n\n/* ---- Base ---- */\n.toast__base {\n display: flex;\n align-items: flex-start;\n gap: var(--ts-spacing-3);\n padding: var(--ts-spacing-3) var(--ts-spacing-4);\n border-radius: var(--ts-toast-radius);\n box-shadow: var(--ts-toast-shadow);\n max-inline-size: var(--ts-toast-max-width);\n pointer-events: auto;\n border: 1px solid transparent;\n font-size: var(--ts-font-size-sm);\n line-height: var(--ts-line-height-normal);\n animation: ts-toast-slide-in 0.3s ease-out;\n}\n\n@keyframes ts-toast-slide-in {\n from {\n opacity: 0;\n transform: translateY(-8px);\n }\n to {\n opacity: 1;\n transform: translateY(0);\n }\n}\n\n/* ---- Variants ---- */\n:host([variant=\"info\"]) .toast__base {\n background-color: var(--ts-color-info-bg);\n border-color: var(--ts-color-info-border);\n color: var(--ts-color-info-600);\n}\n\n:host([variant=\"success\"]) .toast__base {\n background-color: var(--ts-color-success-bg);\n border-color: var(--ts-color-success-border);\n color: var(--ts-color-success-600);\n}\n\n:host([variant=\"warning\"]) .toast__base {\n background-color: var(--ts-color-warning-bg);\n border-color: var(--ts-color-warning-border);\n color: var(--ts-color-warning-600);\n}\n\n:host([variant=\"danger\"]) .toast__base {\n background-color: var(--ts-color-danger-bg);\n border-color: var(--ts-color-danger-border);\n color: var(--ts-color-danger-600);\n}\n\n:host([variant=\"neutral\"]) .toast__base {\n background-color: var(--ts-color-bg-subtle);\n border-color: var(--ts-color-border-subtle);\n color: var(--ts-color-text-secondary);\n}\n\n/* ---- Icon ---- */\n.toast__icon {\n display: flex;\n align-items: center;\n font-size: 1.15em;\n flex-shrink: 0;\n margin-block-start: 1px;\n}\n\n/* ---- Message ---- */\n.toast__message {\n flex: 1;\n min-inline-size: 0;\n}\n\n/* ---- Action ---- */\n.toast__action {\n display: flex;\n align-items: center;\n flex-shrink: 0;\n}\n\n.toast__action:empty {\n display: none;\n}\n\n/* ---- Close button ---- */\n.toast__close {\n display: flex;\n align-items: center;\n justify-content: center;\n flex-shrink: 0;\n inline-size: 1.5rem;\n block-size: 1.5rem;\n border: none;\n border-radius: var(--ts-radius-sm);\n background: transparent;\n color: currentColor;\n opacity: 0.6;\n cursor: pointer;\n font-size: 0.8em;\n transition: opacity var(--ts-transition-fast);\n padding: 0;\n line-height: 1;\n}\n\n.toast__close:hover {\n opacity: 1;\n}\n\n.toast__close:focus-visible {\n box-shadow: var(--ts-focus-ring);\n opacity: 1;\n}\n","import { Component, Prop, Event, State, h, Host, Watch, Method } from '@stencil/core';\nimport type { EventEmitter } from '@stencil/core';\n\ntype TsToastVariant = 'info' | 'success' | 'warning' | 'danger' | 'neutral';\ntype TsToastPosition = 'top-right' | 'top-left' | 'bottom-right' | 'bottom-left' | 'top-center' | 'bottom-center';\n\n/**\n * @slot - Default slot for message content.\n * @slot action - Optional action button.\n *\n * @part base - The toast container.\n * @part icon - The variant icon wrapper.\n * @part message - The message wrapper.\n * @part action - The action slot wrapper.\n * @part close - The close button.\n */\n@Component({\n tag: 'ts-toast',\n styleUrl: 'toast.css',\n shadow: true,\n})\nexport class TsToast {\n private autoCloseTimer?: ReturnType<typeof setTimeout>;\n\n /** The toast's visual variant. */\n @Prop({ reflect: true }) variant: TsToastVariant = 'info';\n\n /** Auto-dismiss duration in ms. Set 0 to disable. */\n @Prop() duration = 5000;\n\n /** Whether the toast shows a close button. */\n @Prop() dismissible = true;\n\n /** Whether the toast is visible. */\n @Prop({ reflect: true, mutable: true }) open = false;\n\n /** Position of the toast on screen. */\n @Prop({ reflect: true }) position: TsToastPosition = 'top-right';\n\n /** Emitted when the toast is dismissed. */\n @Event({ eventName: 'tsClose' }) tsClose!: EventEmitter<void>;\n\n @State() isVisible = false;\n\n @Watch('open')\n handleOpenChange(newValue: boolean): void {\n if (newValue) {\n this.isVisible = true;\n this.startAutoClose();\n } else {\n this.isVisible = false;\n this.clearAutoClose();\n }\n }\n\n connectedCallback(): void {\n if (this.open) {\n this.isVisible = true;\n this.startAutoClose();\n }\n }\n\n disconnectedCallback(): void {\n this.clearAutoClose();\n }\n\n /** Programmatically close the toast. */\n @Method()\n async close(): Promise<void> {\n this.open = false;\n this.isVisible = false;\n this.clearAutoClose();\n this.tsClose.emit();\n }\n\n /** Programmatically show the toast. */\n @Method()\n async show(): Promise<void> {\n this.open = true;\n }\n\n private startAutoClose(): void {\n this.clearAutoClose();\n if (this.duration > 0) {\n this.autoCloseTimer = setTimeout(() => {\n this.close();\n }, this.duration);\n }\n }\n\n private clearAutoClose(): void {\n if (this.autoCloseTimer) {\n clearTimeout(this.autoCloseTimer);\n this.autoCloseTimer = undefined;\n }\n }\n\n private handleClose = (): void => {\n this.close();\n };\n\n // eslint-disable-next-line @typescript-eslint/explicit-function-return-type\n private renderIcon() {\n const icons: Record<string, string> = {\n info: '\\u2139',\n success: '\\u2713',\n warning: '\\u26A0',\n danger: '\\u2715',\n neutral: '\\u2139',\n };\n return <span class=\"toast__icon-symbol\" aria-hidden=\"true\">{icons[this.variant] || '\\u2139'}</span>;\n }\n\n // eslint-disable-next-line @typescript-eslint/explicit-function-return-type\n render() {\n if (!this.isVisible) return null;\n\n const ariaLive = this.variant === 'danger' ? 'assertive' : 'polite';\n\n return (\n <Host\n class={{\n 'ts-toast': true,\n [`ts-toast--${this.variant}`]: true,\n [`ts-toast--${this.position}`]: true,\n 'ts-toast--open': this.isVisible,\n }}\n role=\"status\"\n aria-live={ariaLive}\n >\n <div class=\"toast__base\" part=\"base\">\n <div class=\"toast__icon\" part=\"icon\">\n {this.renderIcon()}\n </div>\n\n <div class=\"toast__message\" part=\"message\">\n <slot />\n </div>\n\n <div class=\"toast__action\" part=\"action\">\n <slot name=\"action\" />\n </div>\n\n {this.dismissible && (\n <button\n class=\"toast__close\"\n part=\"close\"\n type=\"button\"\n aria-label=\"Dismiss notification\"\n onClick={this.handleClose}\n >\n \\u2715\n </button>\n )}\n </div>\n </Host>\n );\n }\n}\n"],"mappings":"yDAAA,MAAMA,EAAW,IAAM,qyF,MCqBVC,EAAO,M,wDACVC,eAGiBC,QAA0B,OAG3CC,SAAW,IAGXC,YAAc,KAGkBC,KAAO,MAGtBC,SAA4B,YAGpBC,QAExBC,UAAY,MAGrB,gBAAAC,CAAiBC,GACf,GAAIA,EAAU,CACZC,KAAKH,UAAY,KACjBG,KAAKC,gB,KACA,CACLD,KAAKH,UAAY,MACjBG,KAAKE,gB,EAIT,iBAAAC,GACE,GAAIH,KAAKN,KAAM,CACbM,KAAKH,UAAY,KACjBG,KAAKC,gB,EAIT,oBAAAG,GACEJ,KAAKE,gB,CAKP,WAAMG,GACJL,KAAKN,KAAO,MACZM,KAAKH,UAAY,MACjBG,KAAKE,iBACLF,KAAKJ,QAAQU,M,CAKf,UAAMC,GACJP,KAAKN,KAAO,I,CAGN,cAAAO,GACND,KAAKE,iBACL,GAAIF,KAAKR,SAAW,EAAG,CACrBQ,KAAKV,eAAiBkB,YAAW,KAC/BR,KAAKK,OAAO,GACXL,KAAKR,S,EAIJ,cAAAU,GACN,GAAIF,KAAKV,eAAgB,CACvBmB,aAAaT,KAAKV,gBAClBU,KAAKV,eAAiBoB,S,EAIlBC,YAAc,KACpBX,KAAKK,OAAO,EAIN,UAAAO,GACN,MAAMC,EAAgC,CACpCC,KAAM,IACNC,QAAS,IACTC,QAAS,IACTC,OAAQ,IACRC,QAAS,KAEX,OAAOC,EAAA,QAAMC,MAAM,qBAAoB,cAAa,QAAQP,EAAMb,KAAKT,UAAY,I,CAIrF,MAAA8B,GACE,IAAKrB,KAAKH,UAAW,OAAO,KAE5B,MAAMyB,EAAWtB,KAAKT,UAAY,SAAW,YAAc,SAE3D,OACE4B,EAACI,EAAI,CACHH,MAAO,CACL,WAAY,KACZ,CAAC,aAAapB,KAAKT,WAAY,KAC/B,CAAC,aAAaS,KAAKL,YAAa,KAChC,iBAAkBK,KAAKH,WAEzB2B,KAAK,SAAQ,YACFF,GAEXH,EAAA,OAAKC,MAAM,cAAcK,KAAK,QAC5BN,EAAA,OAAKC,MAAM,cAAcK,KAAK,QAC3BzB,KAAKY,cAGRO,EAAA,OAAKC,MAAM,iBAAiBK,KAAK,WAC/BN,EAAA,cAGFA,EAAA,OAAKC,MAAM,gBAAgBK,KAAK,UAC9BN,EAAA,QAAMO,KAAK,YAGZ1B,KAAKP,aACJ0B,EAAA,UACEC,MAAM,eACNK,KAAK,QACLE,KAAK,SAAQ,aACF,uBACXC,QAAS5B,KAAKW,aAAW,Y","ignoreList":[]}
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
import{r as e,h as t,H as s}from"./p-V8-ENixA.js";const r=()=>`:host{display:flex;flex-direction:column}`;const c=class{constructor(t){e(this,t)}gap="3";align="stretch";render(){const e={start:"flex-start",center:"center",end:"flex-end",stretch:"stretch"};return t(s,{key:"e3a85d1cdd874e8e09e069d6d5e22502b494fbef",style:{gap:`var(--ts-spacing-${this.gap})`,alignItems:e[this.align]||"stretch"}},t("slot",{key:"eb4127e0dfded8841de2951976461f0ec2ec1f88"}))}};c.style=r();export{c as ts_stack};
|
|
2
|
+
//# sourceMappingURL=p-d318774a.entry.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":["stackCss","TsStack","gap","align","render","alignMap","start","center","end","stretch","h","Host","key","style","this","alignItems"],"sources":["src/components/stack/stack.css?tag=ts-stack&encapsulation=shadow","src/components/stack/stack.tsx"],"sourcesContent":["/* ==========================================================================\n ts-stack — Shadow DOM Scoped Styles\n\n A vertical stack layout primitive with consistent gap spacing.\n ========================================================================== */\n\n:host {\n display: flex;\n flex-direction: column;\n}\n","import { Component, Prop, h, Host } from '@stencil/core';\n\n/**\n * @slot - Default slot for stacked content.\n *\n * @part base - The stack container.\n */\n@Component({\n tag: 'ts-stack',\n styleUrl: 'stack.css',\n shadow: true,\n})\nexport class TsStack {\n /** Spacing token number controlling the gap between items. */\n @Prop({ reflect: true }) gap: string = '3';\n\n /** Cross-axis alignment of items. */\n @Prop({ reflect: true }) align: 'start' | 'center' | 'end' | 'stretch' = 'stretch';\n\n // eslint-disable-next-line @typescript-eslint/explicit-function-return-type\n render() {\n const alignMap: Record<string, string> = {\n start: 'flex-start',\n center: 'center',\n end: 'flex-end',\n stretch: 'stretch',\n };\n\n return (\n <Host\n style={{\n gap: `var(--ts-spacing-${this.gap})`,\n alignItems: alignMap[this.align] || 'stretch',\n }}\n >\n <slot />\n </Host>\n );\n }\n}\n"],"mappings":"kDAAA,MAAMA,EAAW,IAAM,4C,MCYVC,EAAO,M,yBAEOC,IAAc,IAGdC,MAAgD,UAGzE,MAAAC,GACE,MAAMC,EAAmC,CACvCC,MAAO,aACPC,OAAQ,SACRC,IAAK,WACLC,QAAS,WAGX,OACEC,EAACC,EAAI,CAAAC,IAAA,2CACHC,MAAO,CACLX,IAAK,oBAAoBY,KAAKZ,OAC9Ba,WAAYV,EAASS,KAAKX,QAAU,YAGtCO,EAAA,QAAAE,IAAA,6C","ignoreList":[]}
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
import{r as t,a as e,h as s,H as r}from"./p-V8-ENixA.js";const o=()=>`:host{display:flex;font-family:var(--ts-font-family-base)}:host(.ts-step--horizontal){flex:1;flex-direction:column}:host(.ts-step--vertical){flex-direction:column}.step__wrapper{display:flex;flex-direction:column}:host(.ts-step--horizontal) .step__wrapper{flex-direction:column;align-items:center}:host(.ts-step--vertical) .step__wrapper{flex-direction:row;align-items:flex-start}.step__header{display:flex;align-items:center;gap:var(--ts-spacing-2)}:host(.ts-step--horizontal) .step__header{flex-direction:column;text-align:center}:host(.ts-step--vertical) .step__header{flex-direction:row}.step__indicator{display:flex;align-items:center;justify-content:center;inline-size:2rem;block-size:2rem;border-radius:var(--ts-radius-full);border:2px solid var(--ts-color-border-default);background-color:var(--ts-color-bg-elevated);color:var(--ts-color-text-tertiary);font-size:var(--ts-font-size-sm);font-weight:var(--ts-font-weight-semi);flex-shrink:0;transition:background-color var(--ts-transition-fast), border-color var(--ts-transition-fast), color var(--ts-transition-fast)}.step__indicator--active{border-color:var(--ts-stepper-active-color, var(--ts-color-interactive-primary));background-color:var(--ts-stepper-active-color, var(--ts-color-interactive-primary));color:var(--ts-color-text-on-primary, #fff)}.step__indicator--completed{border-color:var(--ts-stepper-completed-color, var(--ts-color-success-600));background-color:var(--ts-stepper-completed-color, var(--ts-color-success-600));color:#ffffff}.step__indicator--error{border-color:var(--ts-color-danger-500);background-color:var(--ts-color-danger-500);color:#ffffff}.step__icon{inline-size:1em;block-size:1em}.step__text{display:flex;flex-direction:column;gap:var(--ts-spacing-0, 2px)}.step__label{font-size:var(--ts-font-size-sm);font-weight:var(--ts-font-weight-semi);color:var(--ts-color-text-primary)}:host(.ts-step--active) .step__label{color:var(--ts-stepper-active-color, var(--ts-color-interactive-primary))}:host(.ts-step--disabled) .step__label{color:var(--ts-color-text-tertiary)}.step__description{font-size:var(--ts-font-size-xs);color:var(--ts-color-text-tertiary)}.step__connector{display:flex;align-items:center;justify-content:center;flex:1}:host(.ts-step--horizontal) .step__connector{padding-inline:var(--ts-spacing-2);min-inline-size:var(--ts-spacing-4);padding-block-start:var(--ts-spacing-4)}:host(.ts-step--vertical) .step__connector{padding-block:var(--ts-spacing-2);min-block-size:var(--ts-spacing-4);margin-inline-start:calc(1rem - 1px)}.step__connector-line{background-color:var(--ts-stepper-connector-color, var(--ts-color-border-default));transition:background-color var(--ts-transition-fast)}:host(.ts-step--horizontal) .step__connector-line{block-size:2px;inline-size:100%}:host(.ts-step--vertical) .step__connector-line{inline-size:2px;block-size:100%;min-block-size:var(--ts-spacing-6)}.step__connector-line--completed{background-color:var(--ts-stepper-completed-color, var(--ts-color-success-600))}.step__content{padding-block-start:var(--ts-spacing-2)}.step__content:empty{display:none}:host(.ts-step--disabled){opacity:0.5}`;const i=class{constructor(e){t(this,e)}get hostEl(){return e(this)}label;description;completed=false;error=false;disabled=false;icon;get index(){return parseInt(this.hostEl.getAttribute("data-index")||"0",10)}get isActive(){return this.hostEl.hasAttribute("data-active")}get hasConnector(){return this.hostEl.hasAttribute("data-has-connector")}get orientation(){return this.hostEl.getAttribute("data-orientation")||"horizontal"}renderIndicatorContent(){if(this.completed){return s("svg",{viewBox:"0 0 24 24",fill:"none",stroke:"currentColor","stroke-width":"3","stroke-linecap":"round","stroke-linejoin":"round",class:"step__icon"},s("polyline",{points:"20 6 9 17 4 12"}))}if(this.error){return s("svg",{viewBox:"0 0 24 24",fill:"none",stroke:"currentColor","stroke-width":"3","stroke-linecap":"round","stroke-linejoin":"round",class:"step__icon"},s("line",{x1:"18",y1:"6",x2:"6",y2:"18"}),s("line",{x1:"6",y1:"6",x2:"18",y2:"18"}))}if(this.icon){return s("ts-icon",{name:this.icon,size:"sm"})}return s("span",null,this.index+1)}render(){return s(r,{key:"7746197313bcd00092bbd43bb8e590d9dc363b4e",class:{"ts-step":true,"ts-step--active":this.isActive,"ts-step--completed":this.completed,"ts-step--error":this.error,"ts-step--disabled":this.disabled,[`ts-step--${this.orientation}`]:true},role:"listitem","aria-current":this.isActive?"step":undefined,"aria-disabled":this.disabled?"true":undefined},s("div",{key:"b01e2dc30f9b3c4c5422fc9f58055b4e29e660c0",class:"step__wrapper",part:"step"},s("div",{key:"e8dc194bffaf1ad7dc73d0d7c3890059e39d23bc",class:"step__header"},s("div",{key:"b0b54d952b3882db999f62d04d942b9ff92f9566",class:{step__indicator:true,"step__indicator--active":this.isActive,"step__indicator--completed":this.completed,"step__indicator--error":this.error},part:"indicator"},this.renderIndicatorContent()),s("div",{key:"c634d466d5d1f6bab4a0f2a9dbe450d4b60a0c8b",class:"step__text"},this.label&&s("span",{key:"96dc52bcb324e4e2c96f5c09be2cebb0a4b0fdaf",class:"step__label",part:"label"},this.label),this.description&&s("span",{key:"863aac22befd3bb4f92c87ee7b5c24ab8d9c789a",class:"step__description",part:"description"},this.description))),this.hasConnector&&s("div",{key:"45ac15eac777bf1c38e0ffc3da8b667a55a584f7",class:"step__connector",part:"connector"},s("div",{key:"15375de53bfae186638eaa9af95574d7875868b8",class:{"step__connector-line":true,"step__connector-line--completed":this.completed}})),s("div",{key:"d5efc013d5b97850a2768464868eade08b953784",class:"step__content",part:"content"},s("slot",{key:"3b84a7d0ebe30fbce3cf5c16b7e515d33436d675"}))))}};i.style=o();export{i as ts_step};
|
|
2
|
+
//# sourceMappingURL=p-d5cbadd6.entry.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":["stepCss","TsStep","label","description","completed","error","disabled","icon","index","parseInt","this","hostEl","getAttribute","isActive","hasAttribute","hasConnector","orientation","renderIndicatorContent","h","viewBox","fill","stroke","class","points","x1","y1","x2","y2","name","size","render","Host","key","role","undefined","part","step__indicator"],"sources":["src/components/stepper/step.css?tag=ts-step&encapsulation=shadow","src/components/stepper/step.tsx"],"sourcesContent":["/* ==========================================================================\n ts-step — Shadow DOM Scoped Styles\n ========================================================================== */\n\n:host {\n display: flex;\n font-family: var(--ts-font-family-base);\n}\n\n/* ---- Horizontal layout ---- */\n:host(.ts-step--horizontal) {\n flex: 1;\n flex-direction: column;\n}\n\n/* ---- Vertical layout ---- */\n:host(.ts-step--vertical) {\n flex-direction: column;\n}\n\n.step__wrapper {\n display: flex;\n flex-direction: column;\n}\n\n:host(.ts-step--horizontal) .step__wrapper {\n flex-direction: column;\n align-items: center;\n}\n\n:host(.ts-step--vertical) .step__wrapper {\n flex-direction: row;\n align-items: flex-start;\n}\n\n.step__header {\n display: flex;\n align-items: center;\n gap: var(--ts-spacing-2);\n}\n\n:host(.ts-step--horizontal) .step__header {\n flex-direction: column;\n text-align: center;\n}\n\n:host(.ts-step--vertical) .step__header {\n flex-direction: row;\n}\n\n/* ---- Indicator ---- */\n.step__indicator {\n display: flex;\n align-items: center;\n justify-content: center;\n inline-size: 2rem;\n block-size: 2rem;\n border-radius: var(--ts-radius-full);\n border: 2px solid var(--ts-color-border-default);\n background-color: var(--ts-color-bg-elevated);\n color: var(--ts-color-text-tertiary);\n font-size: var(--ts-font-size-sm);\n font-weight: var(--ts-font-weight-semi);\n flex-shrink: 0;\n transition:\n background-color var(--ts-transition-fast),\n border-color var(--ts-transition-fast),\n color var(--ts-transition-fast);\n}\n\n.step__indicator--active {\n border-color: var(--ts-stepper-active-color, var(--ts-color-interactive-primary));\n background-color: var(--ts-stepper-active-color, var(--ts-color-interactive-primary));\n color: var(--ts-color-text-on-primary, #fff);\n}\n\n.step__indicator--completed {\n border-color: var(--ts-stepper-completed-color, var(--ts-color-success-600));\n background-color: var(--ts-stepper-completed-color, var(--ts-color-success-600));\n color: #ffffff;\n}\n\n.step__indicator--error {\n border-color: var(--ts-color-danger-500);\n background-color: var(--ts-color-danger-500);\n color: #ffffff;\n}\n\n.step__icon {\n inline-size: 1em;\n block-size: 1em;\n}\n\n/* ---- Text ---- */\n.step__text {\n display: flex;\n flex-direction: column;\n gap: var(--ts-spacing-0, 2px);\n}\n\n.step__label {\n font-size: var(--ts-font-size-sm);\n font-weight: var(--ts-font-weight-semi);\n color: var(--ts-color-text-primary);\n}\n\n:host(.ts-step--active) .step__label {\n color: var(--ts-stepper-active-color, var(--ts-color-interactive-primary));\n}\n\n:host(.ts-step--disabled) .step__label {\n color: var(--ts-color-text-tertiary);\n}\n\n.step__description {\n font-size: var(--ts-font-size-xs);\n color: var(--ts-color-text-tertiary);\n}\n\n/* ---- Connector ---- */\n.step__connector {\n display: flex;\n align-items: center;\n justify-content: center;\n flex: 1;\n}\n\n:host(.ts-step--horizontal) .step__connector {\n padding-inline: var(--ts-spacing-2);\n min-inline-size: var(--ts-spacing-4);\n padding-block-start: var(--ts-spacing-4);\n}\n\n:host(.ts-step--vertical) .step__connector {\n padding-block: var(--ts-spacing-2);\n min-block-size: var(--ts-spacing-4);\n margin-inline-start: calc(1rem - 1px);\n}\n\n.step__connector-line {\n background-color: var(--ts-stepper-connector-color, var(--ts-color-border-default));\n transition: background-color var(--ts-transition-fast);\n}\n\n:host(.ts-step--horizontal) .step__connector-line {\n block-size: 2px;\n inline-size: 100%;\n}\n\n:host(.ts-step--vertical) .step__connector-line {\n inline-size: 2px;\n block-size: 100%;\n min-block-size: var(--ts-spacing-6);\n}\n\n.step__connector-line--completed {\n background-color: var(--ts-stepper-completed-color, var(--ts-color-success-600));\n}\n\n/* ---- Content ---- */\n.step__content {\n padding-block-start: var(--ts-spacing-2);\n}\n\n.step__content:empty {\n display: none;\n}\n\n/* ---- Disabled ---- */\n:host(.ts-step--disabled) {\n opacity: 0.5;\n}\n","import { Component, Prop, h, Host, Element } from '@stencil/core';\n\n/**\n * @slot - Default slot for step content.\n *\n * @part step - The step wrapper.\n * @part indicator - The step number/icon circle.\n * @part label - The step label.\n * @part description - The step description.\n * @part connector - The connector line between steps.\n * @part content - The step content area.\n */\n@Component({\n tag: 'ts-step',\n styleUrl: 'step.css',\n shadow: true,\n})\nexport class TsStep {\n @Element() hostEl!: HTMLElement;\n\n /** The step label text. */\n @Prop() label?: string;\n\n /** Optional description text below the label. */\n @Prop() description?: string;\n\n /** Whether this step is completed. */\n @Prop({ reflect: true }) completed = false;\n\n /** Whether this step has an error. */\n @Prop({ reflect: true }) error = false;\n\n /** Whether this step is disabled. */\n @Prop({ reflect: true }) disabled = false;\n\n /** Optional custom icon name. */\n @Prop() icon?: string;\n\n private get index(): number {\n return parseInt(this.hostEl.getAttribute('data-index') || '0', 10);\n }\n\n private get isActive(): boolean {\n return this.hostEl.hasAttribute('data-active');\n }\n\n private get hasConnector(): boolean {\n return this.hostEl.hasAttribute('data-has-connector');\n }\n\n private get orientation(): string {\n return this.hostEl.getAttribute('data-orientation') || 'horizontal';\n }\n\n // eslint-disable-next-line @typescript-eslint/explicit-function-return-type\n private renderIndicatorContent() {\n if (this.completed) {\n return (\n <svg viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"3\" stroke-linecap=\"round\" stroke-linejoin=\"round\" class=\"step__icon\">\n <polyline points=\"20 6 9 17 4 12\" />\n </svg>\n );\n }\n if (this.error) {\n return (\n <svg viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"3\" stroke-linecap=\"round\" stroke-linejoin=\"round\" class=\"step__icon\">\n <line x1=\"18\" y1=\"6\" x2=\"6\" y2=\"18\" />\n <line x1=\"6\" y1=\"6\" x2=\"18\" y2=\"18\" />\n </svg>\n );\n }\n if (this.icon) {\n return <ts-icon name={this.icon} size=\"sm\" />;\n }\n return <span>{this.index + 1}</span>;\n }\n\n // eslint-disable-next-line @typescript-eslint/explicit-function-return-type\n render() {\n return (\n <Host\n class={{\n 'ts-step': true,\n 'ts-step--active': this.isActive,\n 'ts-step--completed': this.completed,\n 'ts-step--error': this.error,\n 'ts-step--disabled': this.disabled,\n [`ts-step--${this.orientation}`]: true,\n }}\n role=\"listitem\"\n aria-current={this.isActive ? 'step' : undefined}\n aria-disabled={this.disabled ? 'true' : undefined}\n >\n <div class=\"step__wrapper\" part=\"step\">\n <div class=\"step__header\">\n <div\n class={{\n 'step__indicator': true,\n 'step__indicator--active': this.isActive,\n 'step__indicator--completed': this.completed,\n 'step__indicator--error': this.error,\n }}\n part=\"indicator\"\n >\n {this.renderIndicatorContent()}\n </div>\n\n <div class=\"step__text\">\n {this.label && (\n <span class=\"step__label\" part=\"label\">\n {this.label}\n </span>\n )}\n {this.description && (\n <span class=\"step__description\" part=\"description\">\n {this.description}\n </span>\n )}\n </div>\n </div>\n\n {this.hasConnector && (\n <div class=\"step__connector\" part=\"connector\">\n <div\n class={{\n 'step__connector-line': true,\n 'step__connector-line--completed': this.completed,\n }}\n />\n </div>\n )}\n\n <div class=\"step__content\" part=\"content\">\n <slot />\n </div>\n </div>\n </Host>\n );\n }\n}\n"],"mappings":"yDAAA,MAAMA,EAAU,IAAM,6jG,MCiBTC,EAAM,M,qDAITC,MAGAC,YAGiBC,UAAY,MAGZC,MAAQ,MAGRC,SAAW,MAG5BC,KAER,SAAYC,GACV,OAAOC,SAASC,KAAKC,OAAOC,aAAa,eAAiB,IAAK,G,CAGjE,YAAYC,GACV,OAAOH,KAAKC,OAAOG,aAAa,c,CAGlC,gBAAYC,GACV,OAAOL,KAAKC,OAAOG,aAAa,qB,CAGlC,eAAYE,GACV,OAAON,KAAKC,OAAOC,aAAa,qBAAuB,Y,CAIjD,sBAAAK,GACN,GAAIP,KAAKN,UAAW,CAClB,OACEc,EAAA,OAAKC,QAAQ,YAAYC,KAAK,OAAOC,OAAO,eAAc,eAAc,IAAG,iBAAgB,QAAO,kBAAiB,QAAQC,MAAM,cAC/HJ,EAAA,YAAUK,OAAO,mB,CAIvB,GAAIb,KAAKL,MAAO,CACd,OACEa,EAAA,OAAKC,QAAQ,YAAYC,KAAK,OAAOC,OAAO,eAAc,eAAc,IAAG,iBAAgB,QAAO,kBAAiB,QAAQC,MAAM,cAC/HJ,EAAA,QAAMM,GAAG,KAAKC,GAAG,IAAIC,GAAG,IAAIC,GAAG,OAC/BT,EAAA,QAAMM,GAAG,IAAIC,GAAG,IAAIC,GAAG,KAAKC,GAAG,O,CAIrC,GAAIjB,KAAKH,KAAM,CACb,OAAOW,EAAA,WAASU,KAAMlB,KAAKH,KAAMsB,KAAK,M,CAExC,OAAOX,EAAA,YAAOR,KAAKF,MAAQ,E,CAI7B,MAAAsB,GACE,OACEZ,EAACa,EAAI,CAAAC,IAAA,2CACHV,MAAO,CACL,UAAW,KACX,kBAAmBZ,KAAKG,SACxB,qBAAsBH,KAAKN,UAC3B,iBAAkBM,KAAKL,MACvB,oBAAqBK,KAAKJ,SAC1B,CAAC,YAAYI,KAAKM,eAAgB,MAEpCiB,KAAK,WAAU,eACDvB,KAAKG,SAAW,OAASqB,UAAS,gBACjCxB,KAAKJ,SAAW,OAAS4B,WAExChB,EAAA,OAAAc,IAAA,2CAAKV,MAAM,gBAAgBa,KAAK,QAC9BjB,EAAA,OAAAc,IAAA,2CAAKV,MAAM,gBACTJ,EAAA,OAAAc,IAAA,2CACEV,MAAO,CACLc,gBAAmB,KACnB,0BAA2B1B,KAAKG,SAChC,6BAA8BH,KAAKN,UACnC,yBAA0BM,KAAKL,OAEjC8B,KAAK,aAEJzB,KAAKO,0BAGRC,EAAA,OAAAc,IAAA,2CAAKV,MAAM,cACRZ,KAAKR,OACJgB,EAAA,QAAAc,IAAA,2CAAMV,MAAM,cAAca,KAAK,SAC5BzB,KAAKR,OAGTQ,KAAKP,aACJe,EAAA,QAAAc,IAAA,2CAAMV,MAAM,oBAAoBa,KAAK,eAClCzB,KAAKP,eAMbO,KAAKK,cACJG,EAAA,OAAAc,IAAA,2CAAKV,MAAM,kBAAkBa,KAAK,aAChCjB,EAAA,OAAAc,IAAA,2CACEV,MAAO,CACL,uBAAwB,KACxB,kCAAmCZ,KAAKN,cAMhDc,EAAA,OAAAc,IAAA,2CAAKV,MAAM,gBAAgBa,KAAK,WAC9BjB,EAAA,QAAAc,IAAA,+C","ignoreList":[]}
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
import{r as t,h as e,H as s}from"./p-V8-ENixA.js";const a=()=>`:host{display:block;font-family:var(--ts-font-family-base);--ts-empty-state-icon-size:3rem;--ts-empty-state-icon-color:var(--ts-color-text-tertiary)}.empty-state__base{display:flex;flex-direction:column;align-items:center;text-align:center;padding-inline:var(--ts-spacing-6);padding-block:var(--ts-spacing-8);gap:var(--ts-spacing-3)}.empty-state__icon{display:flex;align-items:center;justify-content:center;color:var(--ts-empty-state-icon-color);font-size:var(--ts-empty-state-icon-size);margin-block-end:var(--ts-spacing-2)}.empty-state__icon:empty{display:none}.empty-state__heading{margin:0;font-size:var(--ts-font-size-lg);font-weight:var(--ts-font-weight-semi);color:var(--ts-color-text-primary);line-height:var(--ts-line-height-tight)}.empty-state__description{margin:0;font-size:var(--ts-font-size-sm);color:var(--ts-color-text-secondary);line-height:var(--ts-line-height-normal);max-inline-size:36ch}.empty-state__content:empty{display:none}.empty-state__action{display:flex;align-items:center;gap:var(--ts-spacing-2);margin-block-start:var(--ts-spacing-2)}.empty-state__action:empty{display:none}:host([size="sm"]) .empty-state__base{padding-inline:var(--ts-spacing-4);padding-block:var(--ts-spacing-4);gap:var(--ts-spacing-2)}:host([size="sm"]) .empty-state__icon{--ts-empty-state-icon-size:2rem}:host([size="sm"]) .empty-state__heading{font-size:var(--ts-font-size-md)}:host([size="sm"]) .empty-state__description{font-size:var(--ts-font-size-xs)}:host([size="lg"]) .empty-state__base{padding-inline:var(--ts-spacing-8);padding-block:var(--ts-spacing-12);gap:var(--ts-spacing-4)}:host([size="lg"]) .empty-state__icon{--ts-empty-state-icon-size:4.5rem}:host([size="lg"]) .empty-state__heading{font-size:var(--ts-font-size-xl)}:host([size="lg"]) .empty-state__description{font-size:var(--ts-font-size-md);max-inline-size:48ch}`;const i=class{constructor(e){t(this,e)}heading;description;icon;size="md";render(){return e(s,{key:"517bcb74b651797e31e8b631c88e6805493e85fc",class:{"ts-empty-state":true,[`ts-empty-state--${this.size}`]:true}},e("div",{key:"738a7d08d1657b83672a53d1dd8d07f174176739",class:"empty-state__base",part:"base"},e("div",{key:"bbc92546c5172180e64f817a8a0bd5c766d12869",class:"empty-state__icon",part:"icon"},e("slot",{key:"46be0b9827a41af2d05647dcc56ac19c5484a364",name:"icon"},this.icon&&e("ts-icon",{key:"14720f6e52094f08a79b067d228a35ff3d94ce66",name:this.icon}))),this.heading&&e("h3",{key:"88a6cad61c93cc07b274ea7f8bf4e0b4cb0eee57",class:"empty-state__heading",part:"heading"},this.heading),this.description&&e("p",{key:"a59a3db32e57a06c95174708cbd935288de9d3ae",class:"empty-state__description",part:"description"},this.description),e("div",{key:"183fb5fbc08a0bf80fe1dd14c31bc5c55ba14fb7",class:"empty-state__content",part:"content"},e("slot",{key:"e51960738181881636c7cb8a6c31d72d6213a026"})),e("div",{key:"5cb324a51b4a210952eba2e556a64f9bc39d8383",class:"empty-state__action",part:"action"},e("slot",{key:"173a07dc3546f213e3f5a3ed67d6ed94c3e34386",name:"action"}))))}};i.style=a();export{i as ts_empty_state};
|
|
2
|
+
//# sourceMappingURL=p-e1d2b141.entry.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":["emptyStateCss","TsEmptyState","heading","description","icon","size","render","h","Host","key","class","this","part","name"],"sources":["src/components/empty-state/empty-state.css?tag=ts-empty-state&encapsulation=shadow","src/components/empty-state/empty-state.tsx"],"sourcesContent":["/* ==========================================================================\n ts-empty-state — Shadow DOM Scoped Styles\n\n Component tokens (Tier 3):\n --ts-empty-state-icon-size Icon size\n --ts-empty-state-icon-color Icon color\n ========================================================================== */\n\n:host {\n display: block;\n font-family: var(--ts-font-family-base);\n\n --ts-empty-state-icon-size: 3rem;\n --ts-empty-state-icon-color: var(--ts-color-text-tertiary);\n}\n\n.empty-state__base {\n display: flex;\n flex-direction: column;\n align-items: center;\n text-align: center;\n padding-inline: var(--ts-spacing-6);\n padding-block: var(--ts-spacing-8);\n gap: var(--ts-spacing-3);\n}\n\n/* ---- Icon ---- */\n.empty-state__icon {\n display: flex;\n align-items: center;\n justify-content: center;\n color: var(--ts-empty-state-icon-color);\n font-size: var(--ts-empty-state-icon-size);\n margin-block-end: var(--ts-spacing-2);\n}\n\n.empty-state__icon:empty {\n display: none;\n}\n\n/* ---- Heading ---- */\n.empty-state__heading {\n margin: 0;\n font-size: var(--ts-font-size-lg);\n font-weight: var(--ts-font-weight-semi);\n color: var(--ts-color-text-primary);\n line-height: var(--ts-line-height-tight);\n}\n\n/* ---- Description ---- */\n.empty-state__description {\n margin: 0;\n font-size: var(--ts-font-size-sm);\n color: var(--ts-color-text-secondary);\n line-height: var(--ts-line-height-normal);\n max-inline-size: 36ch;\n}\n\n/* ---- Content ---- */\n.empty-state__content:empty {\n display: none;\n}\n\n/* ---- Action ---- */\n.empty-state__action {\n display: flex;\n align-items: center;\n gap: var(--ts-spacing-2);\n margin-block-start: var(--ts-spacing-2);\n}\n\n.empty-state__action:empty {\n display: none;\n}\n\n/* ---- Sizes ---- */\n:host([size=\"sm\"]) .empty-state__base {\n padding-inline: var(--ts-spacing-4);\n padding-block: var(--ts-spacing-4);\n gap: var(--ts-spacing-2);\n}\n\n:host([size=\"sm\"]) .empty-state__icon {\n --ts-empty-state-icon-size: 2rem;\n}\n\n:host([size=\"sm\"]) .empty-state__heading {\n font-size: var(--ts-font-size-md);\n}\n\n:host([size=\"sm\"]) .empty-state__description {\n font-size: var(--ts-font-size-xs);\n}\n\n:host([size=\"lg\"]) .empty-state__base {\n padding-inline: var(--ts-spacing-8);\n padding-block: var(--ts-spacing-12);\n gap: var(--ts-spacing-4);\n}\n\n:host([size=\"lg\"]) .empty-state__icon {\n --ts-empty-state-icon-size: 4.5rem;\n}\n\n:host([size=\"lg\"]) .empty-state__heading {\n font-size: var(--ts-font-size-xl);\n}\n\n:host([size=\"lg\"]) .empty-state__description {\n font-size: var(--ts-font-size-md);\n max-inline-size: 48ch;\n}\n","import { Component, Prop, h, Host } from '@stencil/core';\nimport type { TsSize } from '../../types';\n\n/**\n * @slot - Custom content below the description.\n * @slot action - CTA buttons.\n * @slot icon - Custom icon or illustration.\n *\n * @part base - The empty state container.\n * @part icon - The icon wrapper.\n * @part heading - The heading element.\n * @part description - The description text.\n * @part content - The custom content wrapper.\n * @part action - The action slot wrapper.\n */\n@Component({\n tag: 'ts-empty-state',\n styleUrl: 'empty-state.css',\n shadow: true,\n})\nexport class TsEmptyState {\n /** The heading text. */\n @Prop() heading?: string;\n\n /** The description text. */\n @Prop() description?: string;\n\n /** Lucide icon name displayed large. */\n @Prop() icon?: string;\n\n /** The size of the empty state. */\n @Prop({ reflect: true }) size: TsSize = 'md';\n\n // eslint-disable-next-line @typescript-eslint/explicit-function-return-type\n render() {\n return (\n <Host\n class={{\n 'ts-empty-state': true,\n [`ts-empty-state--${this.size}`]: true,\n }}\n >\n <div class=\"empty-state__base\" part=\"base\">\n <div class=\"empty-state__icon\" part=\"icon\">\n <slot name=\"icon\">\n {this.icon && <ts-icon name={this.icon} />}\n </slot>\n </div>\n\n {this.heading && (\n <h3 class=\"empty-state__heading\" part=\"heading\">\n {this.heading}\n </h3>\n )}\n\n {this.description && (\n <p class=\"empty-state__description\" part=\"description\">\n {this.description}\n </p>\n )}\n\n <div class=\"empty-state__content\" part=\"content\">\n <slot />\n </div>\n\n <div class=\"empty-state__action\" part=\"action\">\n <slot name=\"action\" />\n </div>\n </div>\n </Host>\n );\n }\n}\n"],"mappings":"kDAAA,MAAMA,EAAgB,IAAM,8yD,MCoBfC,EAAY,M,yBAEfC,QAGAC,YAGAC,KAGiBC,KAAe,KAGxC,MAAAC,GACE,OACEC,EAACC,EAAI,CAAAC,IAAA,2CACHC,MAAO,CACL,iBAAkB,KAClB,CAAC,mBAAmBC,KAAKN,QAAS,OAGpCE,EAAA,OAAAE,IAAA,2CAAKC,MAAM,oBAAoBE,KAAK,QAClCL,EAAA,OAAAE,IAAA,2CAAKC,MAAM,oBAAoBE,KAAK,QAClCL,EAAA,QAAAE,IAAA,2CAAMI,KAAK,QACRF,KAAKP,MAAQG,EAAA,WAAAE,IAAA,2CAASI,KAAMF,KAAKP,SAIrCO,KAAKT,SACJK,EAAA,MAAAE,IAAA,2CAAIC,MAAM,uBAAuBE,KAAK,WACnCD,KAAKT,SAITS,KAAKR,aACJI,EAAA,KAAAE,IAAA,2CAAGC,MAAM,2BAA2BE,KAAK,eACtCD,KAAKR,aAIVI,EAAA,OAAAE,IAAA,2CAAKC,MAAM,uBAAuBE,KAAK,WACrCL,EAAA,QAAAE,IAAA,8CAGFF,EAAA,OAAAE,IAAA,2CAAKC,MAAM,sBAAsBE,KAAK,UACpCL,EAAA,QAAAE,IAAA,2CAAMI,KAAK,a","ignoreList":[]}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":[],"sources":[],"mappings":"","ignoreList":[]}
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
import{r as a,h as t,H as s}from"./p-V8-ENixA.js";const o=()=>`:host{display:block;font-family:var(--ts-font-family-base);--ts-toolbar-bg:var(--ts-color-bg-surface);--ts-toolbar-border-color:var(--ts-color-border-subtle);--ts-toolbar-padding:var(--ts-spacing-3);--ts-toolbar-gap:var(--ts-spacing-2)}.toolbar__base{display:flex;align-items:center;gap:var(--ts-toolbar-gap);padding-inline:var(--ts-toolbar-padding);padding-block:var(--ts-toolbar-padding);background-color:var(--ts-toolbar-bg)}:host([variant="bordered"]) .toolbar__base{border-block-end:1px solid var(--ts-toolbar-border-color)}:host([variant="elevated"]) .toolbar__base{box-shadow:var(--ts-shadow-sm);border-radius:var(--ts-radius-md)}:host([size="sm"]) .toolbar__base{padding-inline:var(--ts-spacing-2);padding-block:var(--ts-spacing-1);gap:var(--ts-spacing-1);font-size:var(--ts-font-size-sm)}:host([size="md"]) .toolbar__base{padding-inline:var(--ts-spacing-3);padding-block:var(--ts-spacing-2);gap:var(--ts-spacing-2);font-size:var(--ts-font-size-md)}:host([size="lg"]) .toolbar__base{padding-inline:var(--ts-spacing-4);padding-block:var(--ts-spacing-3);gap:var(--ts-spacing-3);font-size:var(--ts-font-size-lg)}.toolbar__start{display:flex;align-items:center;gap:var(--ts-toolbar-gap);flex-shrink:0}.toolbar__center{display:flex;align-items:center;gap:var(--ts-toolbar-gap);flex:1;min-inline-size:0}.toolbar__end{display:flex;align-items:center;gap:var(--ts-toolbar-gap);flex-shrink:0;margin-inline-start:auto}.toolbar__start:empty,.toolbar__end:empty{display:none}`;const e=class{constructor(t){a(this,t)}variant="default";size="md";render(){return t(s,{key:"83f2c4baba0daca4e9ce04179c0a135ce7c015b9",class:{"ts-toolbar":true,[`ts-toolbar--${this.variant}`]:true,[`ts-toolbar--${this.size}`]:true},role:"toolbar","aria-orientation":"horizontal"},t("div",{key:"5c2b6c4b0050c0ca000aa475fedff456efee66c3",class:"toolbar__base",part:"base"},t("div",{key:"2e1e1f97c6ba0481cc039aee8c5407c2eb4b55b5",class:"toolbar__start",part:"start"},t("slot",{key:"e147cb24308e4bc2de5bcd2d6bd0dbbed48bb029",name:"start"})),t("div",{key:"727603e4bfed0642feeba89288c64315cc0b1dbf",class:"toolbar__center",part:"center"},t("slot",{key:"b323e21f9290c0b07e2dae640287aabb739b71b6"})),t("div",{key:"33040658c7a58b1df7b16c2c01bf8a8460307efe",class:"toolbar__end",part:"end"},t("slot",{key:"05209ec0a17ec31a4de2193d84456cdcb3207608",name:"end"}))))}};e.style=o();export{e as ts_toolbar};
|
|
2
|
+
//# sourceMappingURL=p-f639213a.entry.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":["toolbarCss","TsToolbar","variant","size","render","h","Host","key","class","this","role","part","name"],"sources":["src/components/toolbar/toolbar.css?tag=ts-toolbar&encapsulation=shadow","src/components/toolbar/toolbar.tsx"],"sourcesContent":["/* ==========================================================================\n ts-toolbar — Shadow DOM Scoped Styles\n\n Component tokens (Tier 3):\n --ts-toolbar-bg Background color\n --ts-toolbar-border-color Border color\n --ts-toolbar-padding Padding\n --ts-toolbar-gap Gap between items\n ========================================================================== */\n\n:host {\n display: block;\n font-family: var(--ts-font-family-base);\n\n --ts-toolbar-bg: var(--ts-color-bg-surface);\n --ts-toolbar-border-color: var(--ts-color-border-subtle);\n --ts-toolbar-padding: var(--ts-spacing-3);\n --ts-toolbar-gap: var(--ts-spacing-2);\n}\n\n.toolbar__base {\n display: flex;\n align-items: center;\n gap: var(--ts-toolbar-gap);\n padding-inline: var(--ts-toolbar-padding);\n padding-block: var(--ts-toolbar-padding);\n background-color: var(--ts-toolbar-bg);\n}\n\n/* ---- Variants ---- */\n:host([variant=\"bordered\"]) .toolbar__base {\n border-block-end: 1px solid var(--ts-toolbar-border-color);\n}\n\n:host([variant=\"elevated\"]) .toolbar__base {\n box-shadow: var(--ts-shadow-sm);\n border-radius: var(--ts-radius-md);\n}\n\n/* ---- Sizes ---- */\n:host([size=\"sm\"]) .toolbar__base {\n padding-inline: var(--ts-spacing-2);\n padding-block: var(--ts-spacing-1);\n gap: var(--ts-spacing-1);\n font-size: var(--ts-font-size-sm);\n}\n\n:host([size=\"md\"]) .toolbar__base {\n padding-inline: var(--ts-spacing-3);\n padding-block: var(--ts-spacing-2);\n gap: var(--ts-spacing-2);\n font-size: var(--ts-font-size-md);\n}\n\n:host([size=\"lg\"]) .toolbar__base {\n padding-inline: var(--ts-spacing-4);\n padding-block: var(--ts-spacing-3);\n gap: var(--ts-spacing-3);\n font-size: var(--ts-font-size-lg);\n}\n\n/* ---- Layout sections ---- */\n.toolbar__start {\n display: flex;\n align-items: center;\n gap: var(--ts-toolbar-gap);\n flex-shrink: 0;\n}\n\n.toolbar__center {\n display: flex;\n align-items: center;\n gap: var(--ts-toolbar-gap);\n flex: 1;\n min-inline-size: 0;\n}\n\n.toolbar__end {\n display: flex;\n align-items: center;\n gap: var(--ts-toolbar-gap);\n flex-shrink: 0;\n margin-inline-start: auto;\n}\n\n.toolbar__start:empty,\n.toolbar__end:empty {\n display: none;\n}\n","import { Component, Prop, h, Host } from '@stencil/core';\nimport type { TsSize } from '../../types';\n\n/**\n * @slot - Default slot for toolbar items (center).\n * @slot start - Left/start-aligned items.\n * @slot end - Right/end-aligned items.\n *\n * @part base - The toolbar container.\n * @part start - The start slot wrapper.\n * @part center - The center/default slot wrapper.\n * @part end - The end slot wrapper.\n */\n@Component({\n tag: 'ts-toolbar',\n styleUrl: 'toolbar.css',\n shadow: true,\n})\nexport class TsToolbar {\n /** The toolbar variant style. */\n @Prop({ reflect: true }) variant: 'default' | 'bordered' | 'elevated' = 'default';\n\n /** The toolbar size. */\n @Prop({ reflect: true }) size: TsSize = 'md';\n\n // eslint-disable-next-line @typescript-eslint/explicit-function-return-type\n render() {\n return (\n <Host\n class={{\n 'ts-toolbar': true,\n [`ts-toolbar--${this.variant}`]: true,\n [`ts-toolbar--${this.size}`]: true,\n }}\n role=\"toolbar\"\n aria-orientation=\"horizontal\"\n >\n <div class=\"toolbar__base\" part=\"base\">\n <div class=\"toolbar__start\" part=\"start\">\n <slot name=\"start\" />\n </div>\n\n <div class=\"toolbar__center\" part=\"center\">\n <slot />\n </div>\n\n <div class=\"toolbar__end\" part=\"end\">\n <slot name=\"end\" />\n </div>\n </div>\n </Host>\n );\n }\n}\n"],"mappings":"kDAAA,MAAMA,EAAa,IAAM,k8C,MCkBZC,EAAS,M,yBAEKC,QAA+C,UAG/CC,KAAe,KAGxC,MAAAC,GACE,OACEC,EAACC,EAAI,CAAAC,IAAA,2CACHC,MAAO,CACL,aAAc,KACd,CAAC,eAAeC,KAAKP,WAAY,KACjC,CAAC,eAAeO,KAAKN,QAAS,MAEhCO,KAAK,UAAS,mBACG,cAEjBL,EAAA,OAAAE,IAAA,2CAAKC,MAAM,gBAAgBG,KAAK,QAC9BN,EAAA,OAAAE,IAAA,2CAAKC,MAAM,iBAAiBG,KAAK,SAC/BN,EAAA,QAAAE,IAAA,2CAAMK,KAAK,WAGbP,EAAA,OAAAE,IAAA,2CAAKC,MAAM,kBAAkBG,KAAK,UAChCN,EAAA,QAAAE,IAAA,8CAGFF,EAAA,OAAAE,IAAA,2CAAKC,MAAM,eAAeG,KAAK,OAC7BN,EAAA,QAAAE,IAAA,2CAAMK,KAAK,U","ignoreList":[]}
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
import{r as t,c as i,h as a,H as n}from"./p-V8-ENixA.js";const o=()=>`:host{display:block;--ts-pagination-button-size:2.25rem;--ts-pagination-active-bg:var(--ts-color-interactive-primary);--ts-pagination-active-color:var(--ts-color-text-on-primary)}.pagination__nav{display:flex;align-items:center;gap:var(--ts-spacing-1)}.pagination__button{display:inline-flex;align-items:center;justify-content:center;min-inline-size:var(--ts-pagination-button-size);block-size:var(--ts-pagination-button-size);padding-inline:var(--ts-spacing-2);border:1px solid var(--ts-color-border-default);border-radius:var(--ts-radius-md);background:transparent;color:var(--ts-color-text-primary);font-family:var(--ts-font-family-base);font-size:var(--ts-font-size-sm);cursor:pointer;transition:background-color var(--ts-transition-fast), border-color var(--ts-transition-fast), color var(--ts-transition-fast);outline:none}.pagination__button:hover:not(:disabled):not(.pagination__button--active){background-color:var(--ts-color-bg-subtle);border-color:var(--ts-color-border-strong)}.pagination__button:focus-visible{box-shadow:var(--ts-focus-ring)}.pagination__button:disabled{opacity:0.5;cursor:not-allowed}.pagination__button--active{background-color:var(--ts-pagination-active-bg);border-color:var(--ts-pagination-active-bg);color:var(--ts-pagination-active-color);font-weight:var(--ts-font-weight-semi)}.pagination__prev svg,.pagination__next svg{inline-size:1em;block-size:1em}.pagination__ellipsis{display:inline-flex;align-items:center;justify-content:center;min-inline-size:var(--ts-pagination-button-size);block-size:var(--ts-pagination-button-size);color:var(--ts-color-text-tertiary);font-size:var(--ts-font-size-sm);user-select:none}:host([size="sm"]){--ts-pagination-button-size:1.75rem}:host([size="sm"]) .pagination__button{font-size:var(--ts-font-size-xs)}:host([size="lg"]){--ts-pagination-button-size:2.75rem}:host([size="lg"]) .pagination__button{font-size:var(--ts-font-size-md)}`;const e=class{constructor(a){t(this,a);this.tsChange=i(this,"tsChange")}total;pageSize=10;currentPage=1;siblingCount=1;size="md";tsChange;get totalPages(){return Math.max(1,Math.ceil(this.total/this.pageSize))}getPageRange(){const t=this.totalPages;const i=this.currentPage;const a=this.siblingCount;const n=[];const o=Math.max(i-a,2);const e=Math.min(i+a,t-1);const s=o>2;const r=e<t-1;n.push(1);if(s){n.push("ellipsis")}else{for(let t=2;t<o;t++){n.push(t)}}for(let t=o;t<=e;t++){n.push(t)}if(r){n.push("ellipsis")}else{for(let i=e+1;i<t;i++){n.push(i)}}if(t>1){n.push(t)}return n}handlePageClick=t=>{if(t<1||t>this.totalPages||t===this.currentPage)return;this.currentPage=t;this.tsChange.emit({page:t})};render(){const t=this.getPageRange();const i=this.currentPage<=1;const o=this.currentPage>=this.totalPages;return a(n,{key:"8ce453e001c6830299e02d8a83fed0d623328b9f",class:{"ts-pagination":true,[`ts-pagination--${this.size}`]:true}},a("nav",{key:"c9c0d1a1d80010cd7653363c45108a93189f993e",part:"nav","aria-label":"Pagination",class:"pagination__nav"},a("button",{key:"03fb8b5042561750aab8371cca844cd2373fa74a",class:"pagination__button pagination__prev",part:"prev",disabled:i,"aria-label":"Previous page",onClick:()=>this.handlePageClick(this.currentPage-1)},a("svg",{key:"a68fae5805dcffc8fca44ccaaea19b1dbecdb9cb",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor","stroke-width":"2","stroke-linecap":"round","stroke-linejoin":"round"},a("polyline",{key:"e186ca6298102fa64973edb8f566e87ed4474a22",points:"15 18 9 12 15 6"}))),t.map(((t,i)=>t==="ellipsis"?a("span",{class:"pagination__ellipsis",key:`ellipsis-${i}`,"aria-hidden":"true"},"..."):a("button",{class:{pagination__button:true,"pagination__button--active":t===this.currentPage},part:"button","aria-current":t===this.currentPage?"page":undefined,"aria-label":`Page ${t}`,onClick:()=>this.handlePageClick(t),key:t},t))),a("button",{key:"9fce8efe8707cadfc19d20418079cc631a1228a9",class:"pagination__button pagination__next",part:"next",disabled:o,"aria-label":"Next page",onClick:()=>this.handlePageClick(this.currentPage+1)},a("svg",{key:"57ca47eb763ab4adfb24deab8221a405fc2635e6",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor","stroke-width":"2","stroke-linecap":"round","stroke-linejoin":"round"},a("polyline",{key:"c0230ffe8334b72b783b939704dee4b705504dcb",points:"9 18 15 12 9 6"})))))}};e.style=o();export{e as ts_pagination};
|
|
2
|
+
//# sourceMappingURL=p-fd2376e0.entry.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":["paginationCss","TsPagination","total","pageSize","currentPage","siblingCount","size","tsChange","totalPages","Math","max","ceil","this","getPageRange","current","siblings","range","leftSibling","rightSibling","min","showLeftEllipsis","showRightEllipsis","push","i","handlePageClick","page","emit","render","pages","isFirstPage","isLastPage","h","Host","key","class","part","disabled","onClick","viewBox","fill","stroke","points","map","index","pagination__button","undefined"],"sources":["src/components/pagination/pagination.css?tag=ts-pagination&encapsulation=shadow","src/components/pagination/pagination.tsx"],"sourcesContent":["/* ==========================================================================\n ts-pagination — Shadow DOM Scoped Styles\n\n Component tokens (Tier 3):\n --ts-pagination-button-size Button dimensions\n --ts-pagination-active-bg Active page background\n --ts-pagination-active-color Active page text color\n ========================================================================== */\n\n:host {\n display: block;\n\n --ts-pagination-button-size: 2.25rem;\n --ts-pagination-active-bg: var(--ts-color-interactive-primary);\n --ts-pagination-active-color: var(--ts-color-text-on-primary);\n}\n\n.pagination__nav {\n display: flex;\n align-items: center;\n gap: var(--ts-spacing-1);\n}\n\n/* ---- Buttons ---- */\n.pagination__button {\n display: inline-flex;\n align-items: center;\n justify-content: center;\n min-inline-size: var(--ts-pagination-button-size);\n block-size: var(--ts-pagination-button-size);\n padding-inline: var(--ts-spacing-2);\n border: 1px solid var(--ts-color-border-default);\n border-radius: var(--ts-radius-md);\n background: transparent;\n color: var(--ts-color-text-primary);\n font-family: var(--ts-font-family-base);\n font-size: var(--ts-font-size-sm);\n cursor: pointer;\n transition:\n background-color var(--ts-transition-fast),\n border-color var(--ts-transition-fast),\n color var(--ts-transition-fast);\n outline: none;\n}\n\n.pagination__button:hover:not(:disabled):not(.pagination__button--active) {\n background-color: var(--ts-color-bg-subtle);\n border-color: var(--ts-color-border-strong);\n}\n\n.pagination__button:focus-visible {\n box-shadow: var(--ts-focus-ring);\n}\n\n.pagination__button:disabled {\n opacity: 0.5;\n cursor: not-allowed;\n}\n\n/* ---- Active page ---- */\n.pagination__button--active {\n background-color: var(--ts-pagination-active-bg);\n border-color: var(--ts-pagination-active-bg);\n color: var(--ts-pagination-active-color);\n font-weight: var(--ts-font-weight-semi);\n}\n\n/* ---- Prev/Next arrows ---- */\n.pagination__prev svg,\n.pagination__next svg {\n inline-size: 1em;\n block-size: 1em;\n}\n\n/* ---- Ellipsis ---- */\n.pagination__ellipsis {\n display: inline-flex;\n align-items: center;\n justify-content: center;\n min-inline-size: var(--ts-pagination-button-size);\n block-size: var(--ts-pagination-button-size);\n color: var(--ts-color-text-tertiary);\n font-size: var(--ts-font-size-sm);\n user-select: none;\n}\n\n/* ---- Sizes ---- */\n:host([size=\"sm\"]) {\n --ts-pagination-button-size: 1.75rem;\n}\n\n:host([size=\"sm\"]) .pagination__button {\n font-size: var(--ts-font-size-xs);\n}\n\n:host([size=\"lg\"]) {\n --ts-pagination-button-size: 2.75rem;\n}\n\n:host([size=\"lg\"]) .pagination__button {\n font-size: var(--ts-font-size-md);\n}\n","import { Component, Prop, Event, h, Host } from '@stencil/core';\nimport type { EventEmitter } from '@stencil/core';\nimport type { TsSize } from '../../types';\n\n/**\n * @part nav - The nav element.\n * @part button - Each page button.\n * @part prev - The previous button.\n * @part next - The next button.\n */\n@Component({\n tag: 'ts-pagination',\n styleUrl: 'pagination.css',\n shadow: true,\n})\nexport class TsPagination {\n /** Total number of items. */\n @Prop() total!: number;\n\n /** Number of items per page. */\n @Prop() pageSize = 10;\n\n /** The current active page (1-based). */\n @Prop({ mutable: true, reflect: true }) currentPage = 1;\n\n /** Number of sibling pages shown around the current page. */\n @Prop() siblingCount = 1;\n\n /** The size of the pagination buttons. */\n @Prop({ reflect: true }) size: TsSize = 'md';\n\n /** Emitted when the page changes. */\n @Event({ eventName: 'tsChange' }) tsChange!: EventEmitter<{ page: number }>;\n\n private get totalPages(): number {\n return Math.max(1, Math.ceil(this.total / this.pageSize));\n }\n\n private getPageRange(): (number | 'ellipsis')[] {\n const total = this.totalPages;\n const current = this.currentPage;\n const siblings = this.siblingCount;\n\n const range: (number | 'ellipsis')[] = [];\n\n const leftSibling = Math.max(current - siblings, 2);\n const rightSibling = Math.min(current + siblings, total - 1);\n\n const showLeftEllipsis = leftSibling > 2;\n const showRightEllipsis = rightSibling < total - 1;\n\n // Always show first page\n range.push(1);\n\n if (showLeftEllipsis) {\n range.push('ellipsis');\n } else {\n for (let i = 2; i < leftSibling; i++) {\n range.push(i);\n }\n }\n\n for (let i = leftSibling; i <= rightSibling; i++) {\n range.push(i);\n }\n\n if (showRightEllipsis) {\n range.push('ellipsis');\n } else {\n for (let i = rightSibling + 1; i < total; i++) {\n range.push(i);\n }\n }\n\n // Always show last page (if > 1)\n if (total > 1) {\n range.push(total);\n }\n\n return range;\n }\n\n private handlePageClick = (page: number): void => {\n if (page < 1 || page > this.totalPages || page === this.currentPage) return;\n this.currentPage = page;\n this.tsChange.emit({ page });\n };\n\n // eslint-disable-next-line @typescript-eslint/explicit-function-return-type\n render() {\n const pages = this.getPageRange();\n const isFirstPage = this.currentPage <= 1;\n const isLastPage = this.currentPage >= this.totalPages;\n\n return (\n <Host\n class={{\n 'ts-pagination': true,\n [`ts-pagination--${this.size}`]: true,\n }}\n >\n <nav part=\"nav\" aria-label=\"Pagination\" class=\"pagination__nav\">\n <button\n class=\"pagination__button pagination__prev\"\n part=\"prev\"\n disabled={isFirstPage}\n aria-label=\"Previous page\"\n onClick={() => this.handlePageClick(this.currentPage - 1)}\n >\n <svg viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\">\n <polyline points=\"15 18 9 12 15 6\" />\n </svg>\n </button>\n\n {pages.map((page, index) =>\n page === 'ellipsis' ? (\n <span class=\"pagination__ellipsis\" key={`ellipsis-${index}`} aria-hidden=\"true\">\n ...\n </span>\n ) : (\n <button\n class={{\n pagination__button: true,\n 'pagination__button--active': page === this.currentPage,\n }}\n part=\"button\"\n aria-current={page === this.currentPage ? 'page' : undefined}\n aria-label={`Page ${page}`}\n onClick={() => this.handlePageClick(page)}\n key={page}\n >\n {page}\n </button>\n ),\n )}\n\n <button\n class=\"pagination__button pagination__next\"\n part=\"next\"\n disabled={isLastPage}\n aria-label=\"Next page\"\n onClick={() => this.handlePageClick(this.currentPage + 1)}\n >\n <svg viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\">\n <polyline points=\"9 18 15 12 9 6\" />\n </svg>\n </button>\n </nav>\n </Host>\n );\n }\n}\n"],"mappings":"yDAAA,MAAMA,EAAgB,IAAM,63D,MCefC,EAAY,M,0DAEfC,MAGAC,SAAW,GAGqBC,YAAc,EAG9CC,aAAe,EAGEC,KAAe,KAGNC,SAElC,cAAYC,GACV,OAAOC,KAAKC,IAAI,EAAGD,KAAKE,KAAKC,KAAKV,MAAQU,KAAKT,U,CAGzC,YAAAU,GACN,MAAMX,EAAQU,KAAKJ,WACnB,MAAMM,EAAUF,KAAKR,YACrB,MAAMW,EAAWH,KAAKP,aAEtB,MAAMW,EAAiC,GAEvC,MAAMC,EAAcR,KAAKC,IAAII,EAAUC,EAAU,GACjD,MAAMG,EAAeT,KAAKU,IAAIL,EAAUC,EAAUb,EAAQ,GAE1D,MAAMkB,EAAmBH,EAAc,EACvC,MAAMI,EAAoBH,EAAehB,EAAQ,EAGjDc,EAAMM,KAAK,GAEX,GAAIF,EAAkB,CACpBJ,EAAMM,KAAK,W,KACN,CACL,IAAK,IAAIC,EAAI,EAAGA,EAAIN,EAAaM,IAAK,CACpCP,EAAMM,KAAKC,E,EAIf,IAAK,IAAIA,EAAIN,EAAaM,GAAKL,EAAcK,IAAK,CAChDP,EAAMM,KAAKC,E,CAGb,GAAIF,EAAmB,CACrBL,EAAMM,KAAK,W,KACN,CACL,IAAK,IAAIC,EAAIL,EAAe,EAAGK,EAAIrB,EAAOqB,IAAK,CAC7CP,EAAMM,KAAKC,E,EAKf,GAAIrB,EAAQ,EAAG,CACbc,EAAMM,KAAKpB,E,CAGb,OAAOc,C,CAGDQ,gBAAmBC,IACzB,GAAIA,EAAO,GAAKA,EAAOb,KAAKJ,YAAciB,IAASb,KAAKR,YAAa,OACrEQ,KAAKR,YAAcqB,EACnBb,KAAKL,SAASmB,KAAK,CAAED,QAAO,EAI9B,MAAAE,GACE,MAAMC,EAAQhB,KAAKC,eACnB,MAAMgB,EAAcjB,KAAKR,aAAe,EACxC,MAAM0B,EAAalB,KAAKR,aAAeQ,KAAKJ,WAE5C,OACEuB,EAACC,EAAI,CAAAC,IAAA,2CACHC,MAAO,CACL,gBAAiB,KACjB,CAAC,kBAAkBtB,KAAKN,QAAS,OAGnCyB,EAAA,OAAAE,IAAA,2CAAKE,KAAK,MAAK,aAAY,aAAaD,MAAM,mBAC5CH,EAAA,UAAAE,IAAA,2CACEC,MAAM,sCACNC,KAAK,OACLC,SAAUP,EAAW,aACV,gBACXQ,QAAS,IAAMzB,KAAKY,gBAAgBZ,KAAKR,YAAc,IAEvD2B,EAAA,OAAAE,IAAA,2CAAKK,QAAQ,YAAYC,KAAK,OAAOC,OAAO,eAAc,eAAc,IAAG,iBAAgB,QAAO,kBAAiB,SACjHT,EAAA,YAAAE,IAAA,2CAAUQ,OAAO,sBAIpBb,EAAMc,KAAI,CAACjB,EAAMkB,IAChBlB,IAAS,WACPM,EAAA,QAAMG,MAAM,uBAAuBD,IAAK,YAAYU,IAAO,cAAc,QAAM,OAI/EZ,EAAA,UACEG,MAAO,CACLU,mBAAoB,KACpB,6BAA8BnB,IAASb,KAAKR,aAE9C+B,KAAK,SAAQ,eACCV,IAASb,KAAKR,YAAc,OAASyC,UAAS,aAChD,QAAQpB,IACpBY,QAAS,IAAMzB,KAAKY,gBAAgBC,GACpCQ,IAAKR,GAEJA,KAKPM,EAAA,UAAAE,IAAA,2CACEC,MAAM,sCACNC,KAAK,OACLC,SAAUN,EAAU,aACT,YACXO,QAAS,IAAMzB,KAAKY,gBAAgBZ,KAAKR,YAAc,IAEvD2B,EAAA,OAAAE,IAAA,2CAAKK,QAAQ,YAAYC,KAAK,OAAOC,OAAO,eAAc,eAAc,IAAG,iBAAgB,QAAO,kBAAiB,SACjHT,EAAA,YAAAE,IAAA,2CAAUQ,OAAO,sB","ignoreList":[]}
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
import{r as a,c as t,a as s,h as i,H as o}from"./p-V8-ENixA.js";import{g as e,t as r}from"./p-lpqZSiIf.js";const l=()=>`:host{font-family:var(--ts-font-family-base);--ts-dialog-bg:var(--ts-color-bg-elevated);--ts-dialog-radius:var(--ts-shape-overlay);--ts-dialog-shadow:var(--ts-shadow-xl);--ts-dialog-overlay-bg:var(--ts-color-bg-overlay)}.dialog__overlay{position:fixed;inset:0;z-index:var(--ts-z-modal);display:flex;align-items:center;justify-content:center;padding:var(--ts-spacing-4);background-color:var(--ts-dialog-overlay-bg);animation:ts-dialog-fade-in 200ms ease-out}.dialog__panel{position:relative;background-color:var(--ts-dialog-bg);border-radius:var(--ts-dialog-radius);box-shadow:var(--ts-dialog-shadow);max-height:calc(100vh - var(--ts-spacing-16));overflow-y:auto;animation:ts-dialog-scale-in 250ms cubic-bezier(0.16, 1, 0.3, 1);outline:none}.dialog__panel--sm{width:100%;max-width:400px}.dialog__panel--md{width:100%;max-width:520px}.dialog__panel--lg{width:100%;max-width:680px}.dialog__close{position:absolute;inset-block-start:var(--ts-spacing-3);inset-inline-end:var(--ts-spacing-3);display:flex;align-items:center;justify-content:center;width:2rem;height:2rem;border:none;border-radius:var(--ts-radius-md);background:transparent;color:var(--ts-color-text-tertiary);font-size:var(--ts-font-size-md);cursor:pointer;transition:background-color var(--ts-transition-fast), color var(--ts-transition-fast);z-index:1;padding:0;line-height:1}.dialog__close:hover{background-color:var(--ts-color-bg-hover);color:var(--ts-color-text-secondary)}.dialog__close:focus-visible{box-shadow:var(--ts-focus-ring)}.dialog__header{padding:var(--ts-spacing-5) var(--ts-spacing-6) var(--ts-spacing-3);font-size:var(--ts-font-size-lg);font-weight:var(--ts-font-weight-semi);color:var(--ts-color-text-primary);padding-inline-end:var(--ts-spacing-10)}.dialog__body{padding:var(--ts-spacing-3) var(--ts-spacing-6);font-size:var(--ts-font-size-md);color:var(--ts-color-text-secondary);line-height:var(--ts-line-height-normal)}.dialog__footer{padding:var(--ts-spacing-3) var(--ts-spacing-6) var(--ts-spacing-5);display:flex;align-items:center;justify-content:flex-end;gap:var(--ts-spacing-2)}.dialog__footer:empty{display:none}@keyframes ts-dialog-fade-in{from{opacity:0}to{opacity:1}}@keyframes ts-dialog-scale-in{from{opacity:0;transform:scale(0.95) translateY(8px)}to{opacity:1;transform:scale(1) translateY(0)}}`;const n=class{constructor(s){a(this,s);this.tsClose=t(this,"tsClose")}get hostEl(){return s(this)}dialogEl;removeFocusTrap;previouslyFocused;dialogId=e("ts-dialog");open=false;heading;size="sm";dismissible=true;tsClose;isAnimating=false;handleOpenChange(a){if(a){this.openDialog()}else{this.closeDialog()}}async show(){this.open=true}async close(){this.open=false}openDialog(){this.previouslyFocused=document.activeElement;this.isAnimating=true;document.body.style.overflow="hidden";requestAnimationFrame((()=>{if(this.dialogEl){this.removeFocusTrap=r(this.dialogEl);this.dialogEl.focus()}}))}closeDialog(){this.isAnimating=false;this.tsClose.emit();document.body.style.overflow="";this.removeFocusTrap?.();this.previouslyFocused?.focus()}disconnectedCallback(){this.removeFocusTrap?.();document.body.style.overflow=""}handleOverlayClick=()=>{if(this.dismissible){this.close()}};handleDialogClick=a=>{a.stopPropagation()};handleKeydown=a=>{if(a.key==="Escape"&&this.dismissible){a.stopPropagation();this.close()}};handleCloseClick=()=>{this.close()};render(){if(!this.open)return null;const a=`${this.dialogId}-heading`;return i(o,{class:{"ts-dialog":true,"ts-dialog--open":this.open},onKeyDown:this.handleKeydown},i("div",{class:"dialog__overlay",part:"overlay",onClick:this.handleOverlayClick},i("div",{ref:a=>this.dialogEl=a,class:{dialog__panel:true,[`dialog__panel--${this.size}`]:true},part:"dialog",role:"dialog","aria-modal":"true","aria-labelledby":this.heading?a:undefined,tabindex:-1,onClick:this.handleDialogClick},this.dismissible&&i("button",{class:"dialog__close",part:"close",type:"button","aria-label":"Close dialog",onClick:this.handleCloseClick},"✕"),this.heading&&i("div",{class:"dialog__header",part:"header",id:a},this.heading),i("div",{class:"dialog__body",part:"body"},i("slot",null)),i("div",{class:"dialog__footer",part:"footer"},i("slot",{name:"footer"})))))}static get watchers(){return{open:[{handleOpenChange:0}]}}};n.style=l();export{n as ts_dialog};
|
|
2
|
+
//# sourceMappingURL=p-fef9a993.entry.js.map
|