@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{t as a,p as t,H as s,h as e,c as n}from"./p-DkpyRqHf.js";const i=()=>`:host{display:block;font-family:var(--ts-font-family-base);--ts-nav-bg:transparent;--ts-nav-active-bg:var(--ts-color-interactive-primary-subtle);--ts-nav-active-color:var(--ts-color-interactive-primary);--ts-nav-width:240px}.nav__native{background-color:var(--ts-nav-bg)}.nav__list{list-style:none;margin:0;padding:0;display:flex}:host([variant="sidebar"]) .nav__list{flex-direction:column;gap:var(--ts-spacing-1);inline-size:var(--ts-nav-width)}:host([variant="sidebar"][collapsed]) .nav__list{inline-size:auto}:host([variant="horizontal"]) .nav__list{flex-direction:row;gap:var(--ts-spacing-1);align-items:center}`;const r=t(class a extends s{constructor(a){super();if(a!==false){this.__registerHost()}this.__attachShadow()}variant="sidebar";collapsed=false;render(){return e(n,{key:"dcfbdce63e36faf81a1e4967837da40c9059530a",class:{"ts-nav":true,[`ts-nav--${this.variant}`]:true,"ts-nav--collapsed":this.collapsed}},e("nav",{key:"f8c05146a0c6435b7382e12ce8c0b2c5a27a962a",class:"nav__native",part:"nav","aria-label":"Navigation"},e("ul",{key:"dbd02ae09363b4c03832e5a8d5f60cc465626c55",class:"nav__list",part:"list",role:"list"},e("slot",{key:"2b1aa23209f60b7bc382a630d910e4bada9c6adc"}))))}static get style(){return i()}},[769,"ts-nav",{variant:[513],collapsed:[516]}]);function c(){if(typeof customElements==="undefined"){return}const t=["ts-nav"];t.forEach((t=>{switch(t){case"ts-nav":if(!customElements.get(a(t))){customElements.define(a(t),r)}break}}))}c();export{r as T,c as d};
|
|
2
|
+
//# sourceMappingURL=p-BP-fZfRb.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":["navCss","TsNav","__stencil_proxyCustomElement","HTMLElement","variant","collapsed","render","h","Host","key","class","this","part","role"],"sources":["src/components/nav/nav.css?tag=ts-nav&encapsulation=shadow","src/components/nav/nav.tsx"],"sourcesContent":["/* ==========================================================================\n ts-nav — Shadow DOM Scoped Styles\n\n Component tokens (Tier 3):\n --ts-nav-bg Navigation background\n --ts-nav-active-bg Active item background\n --ts-nav-active-color Active item text color\n --ts-nav-width Sidebar width\n ========================================================================== */\n\n:host {\n display: block;\n font-family: var(--ts-font-family-base);\n\n --ts-nav-bg: transparent;\n --ts-nav-active-bg: var(--ts-color-interactive-primary-subtle);\n --ts-nav-active-color: var(--ts-color-interactive-primary);\n --ts-nav-width: 240px;\n}\n\n.nav__native {\n background-color: var(--ts-nav-bg);\n}\n\n.nav__list {\n list-style: none;\n margin: 0;\n padding: 0;\n display: flex;\n}\n\n/* ---- Sidebar variant ---- */\n:host([variant=\"sidebar\"]) .nav__list {\n flex-direction: column;\n gap: var(--ts-spacing-1);\n inline-size: var(--ts-nav-width);\n}\n\n:host([variant=\"sidebar\"][collapsed]) .nav__list {\n inline-size: auto;\n}\n\n/* ---- Horizontal variant ---- */\n:host([variant=\"horizontal\"]) .nav__list {\n flex-direction: row;\n gap: var(--ts-spacing-1);\n align-items: center;\n}\n","import { Component, Prop, h, Host } from '@stencil/core';\n\n/**\n * @slot - Default slot for ts-nav-item children.\n *\n * @part nav - The native nav element.\n * @part list - The list container.\n */\n@Component({\n tag: 'ts-nav',\n styleUrl: 'nav.css',\n shadow: true,\n})\nexport class TsNav {\n /** The navigation layout variant. */\n @Prop({ reflect: true }) variant: 'sidebar' | 'horizontal' = 'sidebar';\n\n /** Whether the sidebar nav is collapsed (icons only). */\n @Prop({ reflect: true }) collapsed = false;\n\n // eslint-disable-next-line @typescript-eslint/explicit-function-return-type\n render() {\n return (\n <Host\n class={{\n 'ts-nav': true,\n [`ts-nav--${this.variant}`]: true,\n 'ts-nav--collapsed': this.collapsed,\n }}\n >\n <nav class=\"nav__native\" part=\"nav\" aria-label=\"Navigation\">\n <ul class=\"nav__list\" part=\"list\" role=\"list\">\n <slot />\n </ul>\n </nav>\n </Host>\n );\n }\n}\n"],"mappings":"gEAAA,MAAMA,EAAS,IAAM,0mB,MCaRC,EAAKC,EAAA,MAAAD,UAAAE,E,iFAESC,QAAoC,UAGpCC,UAAY,MAGrC,MAAAC,GACE,OACEC,EAACC,EAAI,CAAAC,IAAA,2CACHC,MAAO,CACL,SAAU,KACV,CAAC,WAAWC,KAAKP,WAAY,KAC7B,oBAAqBO,KAAKN,YAG5BE,EAAA,OAAAE,IAAA,2CAAKC,MAAM,cAAcE,KAAK,MAAK,aAAY,cAC7CL,EAAA,MAAAE,IAAA,2CAAIC,MAAM,YAAYE,KAAK,OAAOC,KAAK,QACrCN,EAAA,QAAAE,IAAA,+C","ignoreList":[]}
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
import{t as e,p as r,H as a,d as t,h as s,c as n}from"./p-DkpyRqHf.js";import{g as i,t as o}from"./p-lpqZSiIf.js";const l=()=>`:host{font-family:var(--ts-font-family-base);--ts-drawer-bg:var(--ts-color-bg-elevated);--ts-drawer-shadow:var(--ts-shadow-xl);--ts-drawer-overlay-bg:var(--ts-color-bg-overlay)}.drawer__overlay{position:fixed;inset:0;z-index:var(--ts-z-modal);background-color:var(--ts-drawer-overlay-bg);animation:ts-drawer-fade-in 200ms ease-out}.drawer__panel{position:fixed;display:flex;flex-direction:column;background-color:var(--ts-drawer-bg);box-shadow:var(--ts-drawer-shadow);outline:none;overflow-y:auto}.drawer__panel--start{inset-block-start:0;inset-block-end:0;inset-inline-start:0;animation:ts-drawer-slide-start 250ms cubic-bezier(0.16, 1, 0.3, 1)}.drawer__panel--end{inset-block-start:0;inset-block-end:0;inset-inline-end:0;animation:ts-drawer-slide-end 250ms cubic-bezier(0.16, 1, 0.3, 1)}.drawer__panel--top{inset-block-start:0;inset-inline-start:0;inset-inline-end:0;animation:ts-drawer-slide-top 250ms cubic-bezier(0.16, 1, 0.3, 1)}.drawer__panel--bottom{inset-block-end:0;inset-inline-start:0;inset-inline-end:0;animation:ts-drawer-slide-bottom 250ms cubic-bezier(0.16, 1, 0.3, 1)}.drawer__panel--start.drawer__panel--sm,.drawer__panel--end.drawer__panel--sm{inline-size:320px}.drawer__panel--start.drawer__panel--md,.drawer__panel--end.drawer__panel--md{inline-size:440px}.drawer__panel--start.drawer__panel--lg,.drawer__panel--end.drawer__panel--lg{inline-size:640px}.drawer__panel--start.drawer__panel--full,.drawer__panel--end.drawer__panel--full{inline-size:100%}.drawer__panel--top.drawer__panel--sm,.drawer__panel--bottom.drawer__panel--sm{block-size:320px}.drawer__panel--top.drawer__panel--md,.drawer__panel--bottom.drawer__panel--md{block-size:440px}.drawer__panel--top.drawer__panel--lg,.drawer__panel--bottom.drawer__panel--lg{block-size:640px}.drawer__panel--top.drawer__panel--full,.drawer__panel--bottom.drawer__panel--full{block-size:100%}.drawer__header{display:flex;align-items:center;justify-content:space-between;padding:var(--ts-spacing-4) var(--ts-spacing-5);border-block-end:1px solid var(--ts-color-border-default)}.drawer__title{font-size:var(--ts-font-size-lg);font-weight:var(--ts-font-weight-semi);color:var(--ts-color-text-primary)}.drawer__close{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;padding:0;line-height:1;margin-inline-start:auto;transition:background-color var(--ts-transition-fast), color var(--ts-transition-fast)}.drawer__close:hover{background-color:var(--ts-color-bg-hover);color:var(--ts-color-text-secondary)}.drawer__close:focus-visible{box-shadow:var(--ts-focus-ring)}.drawer__body{flex:1;padding:var(--ts-spacing-4) var(--ts-spacing-5);font-size:var(--ts-font-size-md);color:var(--ts-color-text-secondary);line-height:var(--ts-line-height-normal);overflow-y:auto}.drawer__footer{padding:var(--ts-spacing-4) var(--ts-spacing-5);border-block-start:1px solid var(--ts-color-border-default);display:flex;align-items:center;justify-content:flex-end;gap:var(--ts-spacing-2)}.drawer__footer:empty{display:none}@keyframes ts-drawer-fade-in{from{opacity:0}to{opacity:1}}@keyframes ts-drawer-slide-start{from{transform:translateX(-100%)}to{transform:translateX(0)}}@keyframes ts-drawer-slide-end{from{transform:translateX(100%)}to{transform:translateX(0)}}@keyframes ts-drawer-slide-top{from{transform:translateY(-100%)}to{transform:translateY(0)}}@keyframes ts-drawer-slide-bottom{from{transform:translateY(100%)}to{transform:translateY(0)}}`;const d=r(class e extends a{constructor(e){super();if(e!==false){this.__registerHost()}this.__attachShadow();this.tsClose=t(this,"tsClose")}get hostEl(){return this}panelEl;removeFocusTrap;previouslyFocused;drawerId=i("ts-drawer");open=false;placement="end";size="md";dismissible=true;heading;tsClose;isAnimating=false;handleOpenChange(e){if(e){this.openDrawer()}else{this.closeDrawer()}}async show(){this.open=true}async close(){this.open=false}openDrawer(){this.previouslyFocused=document.activeElement;this.isAnimating=true;document.body.style.overflow="hidden";requestAnimationFrame((()=>{if(this.panelEl){this.removeFocusTrap=o(this.panelEl);this.panelEl.focus()}}))}closeDrawer(){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()}};handlePanelClick=e=>{e.stopPropagation()};handleKeydown=e=>{if(e.key==="Escape"&&this.dismissible){e.stopPropagation();this.close()}};handleCloseClick=()=>{this.close()};render(){if(!this.open)return null;return s(n,{class:{"ts-drawer":true,"ts-drawer--open":this.open,[`ts-drawer--${this.placement}`]:true,[`ts-drawer--${this.size}`]:true},onKeyDown:this.handleKeydown},s("div",{class:"drawer__overlay",part:"overlay",onClick:this.handleOverlayClick},s("div",{ref:e=>this.panelEl=e,class:{drawer__panel:true,[`drawer__panel--${this.placement}`]:true,[`drawer__panel--${this.size}`]:true},part:"panel",role:"dialog","aria-modal":"true","aria-label":this.heading,"aria-labelledby":!this.heading?`${this.drawerId}-header`:undefined,tabindex:-1,onClick:this.handlePanelClick},s("div",{class:"drawer__header",part:"header",id:`${this.drawerId}-header`},this.heading&&s("span",{class:"drawer__title"},this.heading),this.dismissible&&s("button",{class:"drawer__close",part:"close",type:"button","aria-label":"Close drawer",onClick:this.handleCloseClick},"✕")),s("div",{class:"drawer__body",part:"body"},s("slot",null)),s("div",{class:"drawer__footer",part:"footer"},s("slot",{name:"footer"})))))}static get watchers(){return{open:[{handleOpenChange:0}]}}static get style(){return l()}},[769,"ts-drawer",{open:[1540],placement:[513],size:[513],dismissible:[4],heading:[1],isAnimating:[32],show:[64],close:[64]},undefined,{open:[{handleOpenChange:0}]}]);function c(){if(typeof customElements==="undefined"){return}const r=["ts-drawer"];r.forEach((r=>{switch(r){case"ts-drawer":if(!customElements.get(e(r))){customElements.define(e(r),d)}break}}))}c();export{d as T,c as d};
|
|
2
|
+
//# sourceMappingURL=p-B_NL55YI.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":["drawerCss","TsDrawer","__stencil_proxyCustomElement","HTMLElement","panelEl","removeFocusTrap","previouslyFocused","drawerId","generateId","open","placement","size","dismissible","heading","tsClose","isAnimating","handleOpenChange","isOpen","this","openDrawer","closeDrawer","show","close","document","activeElement","body","style","overflow","requestAnimationFrame","trapFocus","focus","emit","disconnectedCallback","handleOverlayClick","handlePanelClick","event","stopPropagation","handleKeydown","key","handleCloseClick","render","h","Host","class","onKeyDown","part","onClick","ref","el","drawer__panel","role","undefined","tabindex","id","type","name"],"sources":["src/components/drawer/drawer.css?tag=ts-drawer&encapsulation=shadow","src/components/drawer/drawer.tsx"],"sourcesContent":["/* ==========================================================================\n ts-drawer — Shadow DOM Scoped Styles\n\n Component tokens (Tier 3):\n --ts-drawer-bg Panel background\n --ts-drawer-shadow Panel box-shadow\n --ts-drawer-overlay-bg Overlay background\n ========================================================================== */\n\n:host {\n font-family: var(--ts-font-family-base);\n\n --ts-drawer-bg: var(--ts-color-bg-elevated);\n --ts-drawer-shadow: var(--ts-shadow-xl);\n --ts-drawer-overlay-bg: var(--ts-color-bg-overlay);\n}\n\n/* ---- Overlay ---- */\n.drawer__overlay {\n position: fixed;\n inset: 0;\n z-index: var(--ts-z-modal);\n background-color: var(--ts-drawer-overlay-bg);\n animation: ts-drawer-fade-in 200ms ease-out;\n}\n\n/* ---- Panel ---- */\n.drawer__panel {\n position: fixed;\n display: flex;\n flex-direction: column;\n background-color: var(--ts-drawer-bg);\n box-shadow: var(--ts-drawer-shadow);\n outline: none;\n overflow-y: auto;\n}\n\n/* ---- Placement ---- */\n.drawer__panel--start {\n inset-block-start: 0;\n inset-block-end: 0;\n inset-inline-start: 0;\n animation: ts-drawer-slide-start 250ms cubic-bezier(0.16, 1, 0.3, 1);\n}\n\n.drawer__panel--end {\n inset-block-start: 0;\n inset-block-end: 0;\n inset-inline-end: 0;\n animation: ts-drawer-slide-end 250ms cubic-bezier(0.16, 1, 0.3, 1);\n}\n\n.drawer__panel--top {\n inset-block-start: 0;\n inset-inline-start: 0;\n inset-inline-end: 0;\n animation: ts-drawer-slide-top 250ms cubic-bezier(0.16, 1, 0.3, 1);\n}\n\n.drawer__panel--bottom {\n inset-block-end: 0;\n inset-inline-start: 0;\n inset-inline-end: 0;\n animation: ts-drawer-slide-bottom 250ms cubic-bezier(0.16, 1, 0.3, 1);\n}\n\n/* ---- Sizes — horizontal placement (start/end) ---- */\n.drawer__panel--start.drawer__panel--sm,\n.drawer__panel--end.drawer__panel--sm {\n inline-size: 320px;\n}\n\n.drawer__panel--start.drawer__panel--md,\n.drawer__panel--end.drawer__panel--md {\n inline-size: 440px;\n}\n\n.drawer__panel--start.drawer__panel--lg,\n.drawer__panel--end.drawer__panel--lg {\n inline-size: 640px;\n}\n\n.drawer__panel--start.drawer__panel--full,\n.drawer__panel--end.drawer__panel--full {\n inline-size: 100%;\n}\n\n/* ---- Sizes — vertical placement (top/bottom) ---- */\n.drawer__panel--top.drawer__panel--sm,\n.drawer__panel--bottom.drawer__panel--sm {\n block-size: 320px;\n}\n\n.drawer__panel--top.drawer__panel--md,\n.drawer__panel--bottom.drawer__panel--md {\n block-size: 440px;\n}\n\n.drawer__panel--top.drawer__panel--lg,\n.drawer__panel--bottom.drawer__panel--lg {\n block-size: 640px;\n}\n\n.drawer__panel--top.drawer__panel--full,\n.drawer__panel--bottom.drawer__panel--full {\n block-size: 100%;\n}\n\n/* ---- Header ---- */\n.drawer__header {\n display: flex;\n align-items: center;\n justify-content: space-between;\n padding: var(--ts-spacing-4) var(--ts-spacing-5);\n border-block-end: 1px solid var(--ts-color-border-default);\n}\n\n.drawer__title {\n font-size: var(--ts-font-size-lg);\n font-weight: var(--ts-font-weight-semi);\n color: var(--ts-color-text-primary);\n}\n\n/* ---- Close Button ---- */\n.drawer__close {\n display: flex;\n align-items: center;\n justify-content: center;\n width: 2rem;\n height: 2rem;\n border: none;\n border-radius: var(--ts-radius-md);\n background: transparent;\n color: var(--ts-color-text-tertiary);\n font-size: var(--ts-font-size-md);\n cursor: pointer;\n padding: 0;\n line-height: 1;\n margin-inline-start: auto;\n transition:\n background-color var(--ts-transition-fast),\n color var(--ts-transition-fast);\n}\n\n.drawer__close:hover {\n background-color: var(--ts-color-bg-hover);\n color: var(--ts-color-text-secondary);\n}\n\n.drawer__close:focus-visible {\n box-shadow: var(--ts-focus-ring);\n}\n\n/* ---- Body ---- */\n.drawer__body {\n flex: 1;\n padding: var(--ts-spacing-4) var(--ts-spacing-5);\n font-size: var(--ts-font-size-md);\n color: var(--ts-color-text-secondary);\n line-height: var(--ts-line-height-normal);\n overflow-y: auto;\n}\n\n/* ---- Footer ---- */\n.drawer__footer {\n padding: var(--ts-spacing-4) var(--ts-spacing-5);\n border-block-start: 1px solid var(--ts-color-border-default);\n display: flex;\n align-items: center;\n justify-content: flex-end;\n gap: var(--ts-spacing-2);\n}\n\n.drawer__footer:empty {\n display: none;\n}\n\n/* ---- Animations ---- */\n@keyframes ts-drawer-fade-in {\n from { opacity: 0; }\n to { opacity: 1; }\n}\n\n@keyframes ts-drawer-slide-start {\n from { transform: translateX(-100%); }\n to { transform: translateX(0); }\n}\n\n@keyframes ts-drawer-slide-end {\n from { transform: translateX(100%); }\n to { transform: translateX(0); }\n}\n\n@keyframes ts-drawer-slide-top {\n from { transform: translateY(-100%); }\n to { transform: translateY(0); }\n}\n\n@keyframes ts-drawer-slide-bottom {\n from { transform: translateY(100%); }\n to { transform: translateY(0); }\n}\n","import { Component, Prop, State, Event, h, Host, Element, Method, Watch } from '@stencil/core';\nimport type { EventEmitter } from '@stencil/core';\nimport { generateId, trapFocus } from '../../utils/aria';\n\n/**\n * @slot - Default slot for drawer body content.\n * @slot footer - Drawer footer content (e.g., action buttons).\n *\n * @part overlay - The backdrop overlay.\n * @part panel - The slide-in panel container.\n * @part header - The header wrapper.\n * @part body - The body wrapper.\n * @part footer - The footer wrapper.\n * @part close - The close button.\n */\n@Component({\n tag: 'ts-drawer',\n styleUrl: 'drawer.css',\n shadow: true,\n})\nexport class TsDrawer {\n @Element() hostEl!: HTMLElement;\n\n private panelEl?: HTMLElement;\n private removeFocusTrap?: () => void;\n private previouslyFocused?: HTMLElement;\n private drawerId = generateId('ts-drawer');\n\n /** Whether the drawer is open. */\n @Prop({ mutable: true, reflect: true }) open = false;\n\n /** Which edge the drawer slides in from. */\n @Prop({ reflect: true }) placement: 'start' | 'end' | 'top' | 'bottom' = 'end';\n\n /** The drawer's width/height preset. */\n @Prop({ reflect: true }) size: 'sm' | 'md' | 'lg' | 'full' = 'md';\n\n /** Whether clicking the overlay or pressing Escape closes the drawer. */\n @Prop() dismissible = true;\n\n /** Accessible heading for the drawer. */\n @Prop() heading?: string;\n\n /** Emitted when the drawer closes. */\n @Event({ eventName: 'tsClose' }) tsClose!: EventEmitter<void>;\n\n /** Internal animation state. */\n @State() isAnimating = false;\n\n @Watch('open')\n handleOpenChange(isOpen: boolean): void {\n if (isOpen) {\n this.openDrawer();\n } else {\n this.closeDrawer();\n }\n }\n\n /** Programmatically open the drawer. */\n @Method()\n async show(): Promise<void> {\n this.open = true;\n }\n\n /** Programmatically close the drawer. */\n @Method()\n async close(): Promise<void> {\n this.open = false;\n }\n\n private openDrawer(): void {\n this.previouslyFocused = document.activeElement as HTMLElement;\n this.isAnimating = true;\n\n document.body.style.overflow = 'hidden';\n\n requestAnimationFrame(() => {\n if (this.panelEl) {\n this.removeFocusTrap = trapFocus(this.panelEl);\n this.panelEl.focus();\n }\n });\n }\n\n private closeDrawer(): void {\n this.isAnimating = false;\n this.tsClose.emit();\n\n document.body.style.overflow = '';\n this.removeFocusTrap?.();\n this.previouslyFocused?.focus();\n }\n\n disconnectedCallback(): void {\n this.removeFocusTrap?.();\n document.body.style.overflow = '';\n }\n\n private handleOverlayClick = (): void => {\n if (this.dismissible) {\n this.close();\n }\n };\n\n private handlePanelClick = (event: MouseEvent): void => {\n event.stopPropagation();\n };\n\n private handleKeydown = (event: KeyboardEvent): void => {\n if (event.key === 'Escape' && this.dismissible) {\n event.stopPropagation();\n this.close();\n }\n };\n\n private handleCloseClick = (): void => {\n this.close();\n };\n\n // eslint-disable-next-line @typescript-eslint/explicit-function-return-type\n render() {\n if (!this.open) return null;\n\n return (\n <Host\n class={{\n 'ts-drawer': true,\n 'ts-drawer--open': this.open,\n [`ts-drawer--${this.placement}`]: true,\n [`ts-drawer--${this.size}`]: true,\n }}\n onKeyDown={this.handleKeydown}\n >\n <div class=\"drawer__overlay\" part=\"overlay\" onClick={this.handleOverlayClick}>\n <div\n ref={(el) => (this.panelEl = el)}\n class={{\n 'drawer__panel': true,\n [`drawer__panel--${this.placement}`]: true,\n [`drawer__panel--${this.size}`]: true,\n }}\n part=\"panel\"\n role=\"dialog\"\n aria-modal=\"true\"\n aria-label={this.heading}\n aria-labelledby={!this.heading ? `${this.drawerId}-header` : undefined}\n tabindex={-1}\n onClick={this.handlePanelClick}\n >\n <div class=\"drawer__header\" part=\"header\" id={`${this.drawerId}-header`}>\n {this.heading && <span class=\"drawer__title\">{this.heading}</span>}\n {this.dismissible && (\n <button\n class=\"drawer__close\"\n part=\"close\"\n type=\"button\"\n aria-label=\"Close drawer\"\n onClick={this.handleCloseClick}\n >\n ✕\n </button>\n )}\n </div>\n\n <div class=\"drawer__body\" part=\"body\">\n <slot />\n </div>\n\n <div class=\"drawer__footer\" part=\"footer\">\n <slot name=\"footer\" />\n </div>\n </div>\n </div>\n </Host>\n );\n }\n}\n"],"mappings":"kHAAA,MAAMA,EAAY,IAAM,4/G,MCoBXC,EAAQC,EAAA,MAAAD,UAAAE,E,yIAGXC,QACAC,gBACAC,kBACAC,SAAWC,EAAW,aAGUC,KAAO,MAGtBC,UAAgD,MAGhDC,KAAoC,KAGrDC,YAAc,KAGdC,QAGyBC,QAGxBC,YAAc,MAGvB,gBAAAC,CAAiBC,GACf,GAAIA,EAAQ,CACVC,KAAKC,Y,KACA,CACLD,KAAKE,a,EAMT,UAAMC,GACJH,KAAKT,KAAO,I,CAKd,WAAMa,GACJJ,KAAKT,KAAO,K,CAGN,UAAAU,GACND,KAAKZ,kBAAoBiB,SAASC,cAClCN,KAAKH,YAAc,KAEnBQ,SAASE,KAAKC,MAAMC,SAAW,SAE/BC,uBAAsB,KACpB,GAAIV,KAAKd,QAAS,CAChBc,KAAKb,gBAAkBwB,EAAUX,KAAKd,SACtCc,KAAKd,QAAQ0B,O,KAKX,WAAAV,GACNF,KAAKH,YAAc,MACnBG,KAAKJ,QAAQiB,OAEbR,SAASE,KAAKC,MAAMC,SAAW,GAC/BT,KAAKb,oBACLa,KAAKZ,mBAAmBwB,O,CAG1B,oBAAAE,GACEd,KAAKb,oBACLkB,SAASE,KAAKC,MAAMC,SAAW,E,CAGzBM,mBAAqB,KAC3B,GAAIf,KAAKN,YAAa,CACpBM,KAAKI,O,GAIDY,iBAAoBC,IAC1BA,EAAMC,iBAAiB,EAGjBC,cAAiBF,IACvB,GAAIA,EAAMG,MAAQ,UAAYpB,KAAKN,YAAa,CAC9CuB,EAAMC,kBACNlB,KAAKI,O,GAIDiB,iBAAmB,KACzBrB,KAAKI,OAAO,EAId,MAAAkB,GACE,IAAKtB,KAAKT,KAAM,OAAO,KAEvB,OACEgC,EAACC,EAAI,CACHC,MAAO,CACL,YAAa,KACb,kBAAmBzB,KAAKT,KACxB,CAAC,cAAcS,KAAKR,aAAc,KAClC,CAAC,cAAcQ,KAAKP,QAAS,MAE/BiC,UAAW1B,KAAKmB,eAEhBI,EAAA,OAAKE,MAAM,kBAAkBE,KAAK,UAAUC,QAAS5B,KAAKe,oBACxDQ,EAAA,OACEM,IAAMC,GAAQ9B,KAAKd,QAAU4C,EAC7BL,MAAO,CACLM,cAAiB,KACjB,CAAC,kBAAkB/B,KAAKR,aAAc,KACtC,CAAC,kBAAkBQ,KAAKP,QAAS,MAEnCkC,KAAK,QACLK,KAAK,SAAQ,aACF,OAAM,aACLhC,KAAKL,QAAO,mBACNK,KAAKL,QAAU,GAAGK,KAAKX,kBAAoB4C,UAC7DC,UAAU,EACVN,QAAS5B,KAAKgB,kBAEdO,EAAA,OAAKE,MAAM,iBAAiBE,KAAK,SAASQ,GAAI,GAAGnC,KAAKX,mBACnDW,KAAKL,SAAW4B,EAAA,QAAME,MAAM,iBAAiBzB,KAAKL,SAClDK,KAAKN,aACJ6B,EAAA,UACEE,MAAM,gBACNE,KAAK,QACLS,KAAK,SAAQ,aACF,eACXR,QAAS5B,KAAKqB,kBAAgB,MAOpCE,EAAA,OAAKE,MAAM,eAAeE,KAAK,QAC7BJ,EAAA,cAGFA,EAAA,OAAKE,MAAM,iBAAiBE,KAAK,UAC/BJ,EAAA,QAAMc,KAAK,c","ignoreList":[]}
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
import{t as e,p as t,H as r,h as s,c as a}from"./p-DkpyRqHf.js";const c=()=>`: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 o=t(class e extends r{constructor(e){super();if(e!==false){this.__registerHost()}this.__attachShadow()}get hostEl(){return this}separator="/";componentDidRender(){const e=this.hostEl.querySelectorAll("ts-breadcrumb-item");e.forEach(((t,r)=>{if(r<e.length-1){t.setAttribute("separator",this.separator)}else{t.removeAttribute("separator")}}))}render(){return s(a,{key:"c11ecfd52a2cdd8782fcb6015b3cefbda9739af0",class:"ts-breadcrumb"},s("nav",{key:"70b0109d5706643be765d9e73559c6bb9447da81",part:"nav","aria-label":"Breadcrumb"},s("ol",{key:"ebca2980c9c6376bdeb44b7743f7894355f2e9c4",part:"list",class:"breadcrumb__list"},s("slot",{key:"876f0e6f5b11df1e4b5145676adf16f5462c0e72"}))))}static get style(){return c()}},[769,"ts-breadcrumb",{separator:[1]}]);function i(){if(typeof customElements==="undefined"){return}const t=["ts-breadcrumb"];t.forEach((t=>{switch(t){case"ts-breadcrumb":if(!customElements.get(e(t))){customElements.define(e(t),o)}break}}))}i();export{o as T,i as d};
|
|
2
|
+
//# sourceMappingURL=p-BcoU0ISN.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":["breadcrumbCss","TsBreadcrumb","__stencil_proxyCustomElement","HTMLElement","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":"gEAAA,MAAMA,EAAgB,IAAM,wV,MCafC,EAAYC,EAAA,MAAAD,UAAAE,E,0GAIfC,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{t as e,p as t,H as s,h as r,c as a}from"./p-DkpyRqHf.js";const n=()=>`: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 c=t(class e extends s{constructor(e){super();if(e!==false){this.__registerHost()}this.__attachShadow()}get hostEl(){return this}selectable=false;handleKeyDown(e){const t=this.getVisibleItems();if(t.length===0)return;const s=document.activeElement;const r=t.indexOf(s);if(r===-1)return;const a=t[r];switch(e.key){case"ArrowDown":e.preventDefault();if(r<t.length-1){t[r+1].focus()}break;case"ArrowUp":e.preventDefault();if(r>0){t[r-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(a,{key:"f19d8e0e243df40456f96dd89eb81fd4b1c68e8e",class:{"ts-tree":true},role:"tree"},r("div",{key:"2cfd542f7681b88563f5ad92f14a807cbb33b590",class:"tree__base",part:"base"},r("slot",{key:"b08eef0089c0e9b5c1d84def2fc17be9be57e3ba"})))}static get style(){return n()}},[769,"ts-tree",{selectable:[516]},[[0,"keydown","handleKeyDown"]]]);function i(){if(typeof customElements==="undefined"){return}const t=["ts-tree"];t.forEach((t=>{switch(t){case"ts-tree":if(!customElements.get(e(t))){customElements.define(e(t),c)}break}}))}i();export{c as T,i as d};
|
|
2
|
+
//# sourceMappingURL=p-BdzH6wlc.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":["treeCss","TsTree","__stencil_proxyCustomElement","HTMLElement","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":"gEAAA,MAAMA,EAAU,IAAM,4O,MCYTC,EAAMC,EAAA,MAAAD,UAAAE,E,0GAIQC,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{t,p as s,H as e,h as i,c as n}from"./p-DkpyRqHf.js";const a=()=>`:host{display:grid;width:100%;box-sizing:border-box}`;const o=s(class t extends e{constructor(t){super();if(t!==false){this.__registerHost()}this.__attachShadow()}columns="auto";gap="4";minColumnWidth="280px";align="stretch";render(){const t=this.columns==="auto"?`repeat(auto-fill, minmax(${this.minColumnWidth}, 1fr))`:`repeat(${this.columns}, 1fr)`;const s={gridTemplateColumns:t,gap:`var(--ts-spacing-${this.gap})`,alignItems:this.align};return i(n,{key:"f2d1238a19d2235c676d1fd08f045b18dc3b40fa",style:s},i("slot",{key:"3c454fc9910bcf8960b4a2833f82e91eb6d5be03"}))}static get style(){return a()}},[769,"ts-grid",{columns:[513],gap:[513],minColumnWidth:[513,"min-column-width"],align:[513]}]);function r(){if(typeof customElements==="undefined"){return}const s=["ts-grid"];s.forEach((s=>{switch(s){case"ts-grid":if(!customElements.get(t(s))){customElements.define(t(s),o)}break}}))}r();export{o as T,r as d};
|
|
2
|
+
//# sourceMappingURL=p-BeErYjKz.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":["gridCss","TsGrid","__stencil_proxyCustomElement","HTMLElement","columns","gap","minColumnWidth","align","render","gridTemplateColumns","this","style","alignItems","h","Host","key"],"sources":["src/components/grid/grid.css?tag=ts-grid&encapsulation=shadow","src/components/grid/grid.tsx"],"sourcesContent":["/* ==========================================================================\n ts-grid — Shadow DOM Scoped Styles\n\n CSS Grid layout component with responsive auto-fill columns.\n ========================================================================== */\n\n:host {\n display: grid;\n width: 100%;\n box-sizing: border-box;\n}\n","import { Component, Prop, h, Host } from '@stencil/core';\n\n/**\n * @slot - Default slot for grid items.\n *\n * @part base - The grid container.\n */\n@Component({\n tag: 'ts-grid',\n styleUrl: 'grid.css',\n shadow: true,\n})\nexport class TsGrid {\n /** Number of columns or 'auto' for responsive auto-fill. */\n @Prop({ reflect: true }) columns: string = 'auto';\n\n /** Spacing token number for gap between items. */\n @Prop({ reflect: true }) gap: string = '4';\n\n /** Minimum column width when columns is 'auto'. */\n @Prop({ reflect: true }) minColumnWidth: string = '280px';\n\n /** Vertical alignment of grid 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 gridTemplateColumns =\n this.columns === 'auto'\n ? `repeat(auto-fill, minmax(${this.minColumnWidth}, 1fr))`\n : `repeat(${this.columns}, 1fr)`;\n\n const style = {\n gridTemplateColumns,\n gap: `var(--ts-spacing-${this.gap})`,\n alignItems: this.align,\n };\n\n return (\n <Host style={style}>\n <slot />\n </Host>\n );\n }\n}\n"],"mappings":"2DAAA,MAAMA,EAAU,IAAM,uD,MCYTC,EAAMC,EAAA,MAAAD,UAAAE,E,iFAEQC,QAAkB,OAGlBC,IAAc,IAGdC,eAAyB,QAGzBC,MAAgD,UAGzE,MAAAC,GACE,MAAMC,EACJC,KAAKN,UAAY,OACb,4BAA4BM,KAAKJ,wBACjC,UAAUI,KAAKN,gBAErB,MAAMO,EAAQ,CACZF,sBACAJ,IAAK,oBAAoBK,KAAKL,OAC9BO,WAAYF,KAAKH,OAGnB,OACEM,EAACC,EAAI,CAAAC,IAAA,2CAACJ,MAAOA,GACXE,EAAA,QAAAE,IAAA,6C","ignoreList":[]}
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
import{t as e,p as t,H as i,d as n,h as a,c as o}from"./p-DkpyRqHf.js";const s=()=>`:host{display:block}.accordion-item__header{display:flex;align-items:center;justify-content:space-between;gap:var(--ts-spacing-2);padding-block:var(--ts-spacing-3);padding-inline:var(--ts-spacing-4);background:var(--ts-accordion-header-bg, transparent);border:none;cursor:pointer;font-family:var(--ts-font-family-base);font-size:var(--ts-font-size-md);font-weight:var(--ts-font-weight-semi);color:var(--ts-color-text-primary);outline:none;transition:background-color var(--ts-transition-fast);user-select:none}.accordion-item__header:hover:not([aria-disabled="true"]){background-color:var(--ts-color-bg-subtle)}.accordion-item__header:focus-visible{box-shadow:var(--ts-focus-ring)}:host([disabled]) .accordion-item__header{opacity:0.5;cursor:not-allowed}.accordion-item__icon{display:inline-flex;align-items:center;transition:transform var(--ts-transition-fast)}.accordion-item__icon svg{inline-size:1.25em;block-size:1.25em}:host(.ts-accordion-item--open) .accordion-item__icon{transform:rotate(180deg)}.accordion-item__panel{overflow:hidden;transition:max-block-size var(--ts-transition-normal)}.accordion-item__panel[hidden]{display:none}.accordion-item__content{padding-block:var(--ts-spacing-2);padding-inline:var(--ts-spacing-4);padding-block-end:var(--ts-spacing-4);font-size:var(--ts-font-size-md);color:var(--ts-color-text-secondary)}`;let r=0;const c=t(class e extends i{constructor(e){super();if(e!==false){this.__registerHost()}this.__attachShadow();this.tsToggle=n(this,"tsToggle")}headerId;panelId;open=false;disabled=false;heading;tsToggle;internalOpen=false;onOpenChange(e){this.internalOpen=e}connectedCallback(){const e=r++;this.headerId=`ts-accordion-header-${e}`;this.panelId=`ts-accordion-panel-${e}`;this.internalOpen=this.open}handleClick=()=>{if(this.disabled)return;this.open=!this.open;this.internalOpen=this.open;this.tsToggle.emit({open:this.open})};handleKeyDown=e=>{if(e.key==="Enter"||e.key===" "){e.preventDefault();this.handleClick()}};render(){return a(o,{key:"aa3316d5e46a7c4e7c055497e52db820e2eb2804",class:{"ts-accordion-item":true,"ts-accordion-item--open":this.internalOpen,"ts-accordion-item--disabled":this.disabled}},a("div",{key:"27e63690847de4d816057891141402f51375a179",class:"accordion-item__header",part:"header",id:this.headerId,role:"button",tabindex:this.disabled?-1:0,"aria-expanded":this.internalOpen?"true":"false","aria-controls":this.panelId,"aria-disabled":this.disabled?"true":undefined,onClick:this.handleClick,onKeyDown:this.handleKeyDown},a("slot",{key:"fd3c289960510c7953c1853a10dd4b544e361d0c",name:"header"},a("span",{key:"8cd789055352fb8f0773511985e2a27cfb92551b",class:"accordion-item__heading"},this.heading)),a("span",{key:"2f33c59115a23e86e92fb0e3dcbc6098718e16e1",class:"accordion-item__icon","aria-hidden":"true"},a("svg",{key:"632affef71463346f8ff771cfd58db096675d532",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor","stroke-width":"2","stroke-linecap":"round","stroke-linejoin":"round"},a("polyline",{key:"ee66ca775b9f9081cd9a6c265aee0e075e12f2cb",points:"6 9 12 15 18 9"})))),a("div",{key:"aa58f91f91dba2000579597767d33fdd10c52547",class:"accordion-item__panel",part:"panel",id:this.panelId,role:"region","aria-labelledby":this.headerId,hidden:!this.internalOpen},a("div",{key:"980de82df6259725bf743a22734cb9be96f0a01b",class:"accordion-item__content"},a("slot",{key:"ae98ce52f3686885e61b7fdf4a8b6c60f0cebd72"}))))}static get watchers(){return{open:[{onOpenChange:0}]}}static get style(){return s()}},[769,"ts-accordion-item",{open:[1540],disabled:[516],heading:[1],internalOpen:[32]},undefined,{open:[{onOpenChange:0}]}]);function d(){if(typeof customElements==="undefined"){return}const t=["ts-accordion-item"];t.forEach((t=>{switch(t){case"ts-accordion-item":if(!customElements.get(e(t))){customElements.define(e(t),c)}break}}))}d();export{c as T,d};
|
|
2
|
+
//# sourceMappingURL=p-BjiDgszq.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":["accordionItemCss","accordionItemId","TsAccordionItem","__stencil_proxyCustomElement","HTMLElement","headerId","panelId","open","disabled","heading","tsToggle","internalOpen","onOpenChange","newVal","this","connectedCallback","id","handleClick","emit","handleKeyDown","event","key","preventDefault","render","h","Host","class","part","role","tabindex","undefined","onClick","onKeyDown","name","viewBox","fill","stroke","points","hidden"],"sources":["src/components/accordion/accordion-item.css?tag=ts-accordion-item&encapsulation=shadow","src/components/accordion/accordion-item.tsx"],"sourcesContent":["/* ==========================================================================\n ts-accordion-item — Shadow DOM Scoped Styles\n ========================================================================== */\n\n:host {\n display: block;\n}\n\n/* ---- Header ---- */\n.accordion-item__header {\n display: flex;\n align-items: center;\n justify-content: space-between;\n gap: var(--ts-spacing-2);\n padding-block: var(--ts-spacing-3);\n padding-inline: var(--ts-spacing-4);\n background: var(--ts-accordion-header-bg, transparent);\n border: none;\n cursor: pointer;\n font-family: var(--ts-font-family-base);\n font-size: var(--ts-font-size-md);\n font-weight: var(--ts-font-weight-semi);\n color: var(--ts-color-text-primary);\n outline: none;\n transition: background-color var(--ts-transition-fast);\n user-select: none;\n}\n\n.accordion-item__header:hover:not([aria-disabled=\"true\"]) {\n background-color: var(--ts-color-bg-subtle);\n}\n\n.accordion-item__header:focus-visible {\n box-shadow: var(--ts-focus-ring);\n}\n\n/* ---- Disabled ---- */\n:host([disabled]) .accordion-item__header {\n opacity: 0.5;\n cursor: not-allowed;\n}\n\n/* ---- Chevron icon ---- */\n.accordion-item__icon {\n display: inline-flex;\n align-items: center;\n transition: transform var(--ts-transition-fast);\n}\n\n.accordion-item__icon svg {\n inline-size: 1.25em;\n block-size: 1.25em;\n}\n\n:host(.ts-accordion-item--open) .accordion-item__icon {\n transform: rotate(180deg);\n}\n\n/* ---- Panel ---- */\n.accordion-item__panel {\n overflow: hidden;\n transition: max-block-size var(--ts-transition-normal);\n}\n\n.accordion-item__panel[hidden] {\n display: none;\n}\n\n.accordion-item__content {\n padding-block: var(--ts-spacing-2);\n padding-inline: var(--ts-spacing-4);\n padding-block-end: var(--ts-spacing-4);\n font-size: var(--ts-font-size-md);\n color: var(--ts-color-text-secondary);\n}\n","import { Component, Prop, Event, h, Host, State, Watch } from '@stencil/core';\nimport type { EventEmitter } from '@stencil/core';\n\nlet accordionItemId = 0;\n\n/**\n * @slot - Default slot for panel content.\n * @slot header - Custom header content (replaces heading text).\n *\n * @part header - The header button.\n * @part panel - The content panel.\n */\n@Component({\n tag: 'ts-accordion-item',\n styleUrl: 'accordion-item.css',\n shadow: true,\n})\nexport class TsAccordionItem {\n private headerId!: string;\n private panelId!: string;\n\n /** Whether the item is expanded. */\n @Prop({ mutable: true, reflect: true }) open = false;\n\n /** Disables toggling. */\n @Prop({ reflect: true }) disabled = false;\n\n /** Header text for the item. */\n @Prop() heading?: string;\n\n /** Emitted when the item is toggled. */\n @Event({ eventName: 'tsToggle' }) tsToggle!: EventEmitter<{ open: boolean }>;\n\n @State() internalOpen = false;\n\n @Watch('open')\n onOpenChange(newVal: boolean): void {\n this.internalOpen = newVal;\n }\n\n connectedCallback(): void {\n const id = accordionItemId++;\n this.headerId = `ts-accordion-header-${id}`;\n this.panelId = `ts-accordion-panel-${id}`;\n this.internalOpen = this.open;\n }\n\n private handleClick = (): void => {\n if (this.disabled) return;\n this.open = !this.open;\n this.internalOpen = this.open;\n this.tsToggle.emit({ open: this.open });\n };\n\n private handleKeyDown = (event: KeyboardEvent): void => {\n if (event.key === 'Enter' || event.key === ' ') {\n event.preventDefault();\n this.handleClick();\n }\n };\n\n // eslint-disable-next-line @typescript-eslint/explicit-function-return-type\n render() {\n return (\n <Host\n class={{\n 'ts-accordion-item': true,\n 'ts-accordion-item--open': this.internalOpen,\n 'ts-accordion-item--disabled': this.disabled,\n }}\n >\n <div\n class=\"accordion-item__header\"\n part=\"header\"\n id={this.headerId}\n role=\"button\"\n tabindex={this.disabled ? -1 : 0}\n aria-expanded={this.internalOpen ? 'true' : 'false'}\n aria-controls={this.panelId}\n aria-disabled={this.disabled ? 'true' : undefined}\n onClick={this.handleClick}\n onKeyDown={this.handleKeyDown}\n >\n <slot name=\"header\">\n <span class=\"accordion-item__heading\">{this.heading}</span>\n </slot>\n <span class=\"accordion-item__icon\" aria-hidden=\"true\">\n <svg viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\">\n <polyline points=\"6 9 12 15 18 9\" />\n </svg>\n </span>\n </div>\n <div\n class=\"accordion-item__panel\"\n part=\"panel\"\n id={this.panelId}\n role=\"region\"\n aria-labelledby={this.headerId}\n hidden={!this.internalOpen}\n >\n <div class=\"accordion-item__content\">\n <slot />\n </div>\n </div>\n </Host>\n );\n }\n}\n"],"mappings":"uEAAA,MAAMA,EAAmB,IAAM,k0CCG/B,IAAIC,EAAkB,E,MAcTC,EAAeC,EAAA,MAAAD,UAAAE,E,kHAClBC,SACAC,QAGgCC,KAAO,MAGtBC,SAAW,MAG5BC,QAG0BC,SAEzBC,aAAe,MAGxB,YAAAC,CAAaC,GACXC,KAAKH,aAAeE,C,CAGtB,iBAAAE,GACE,MAAMC,EAAKf,IACXa,KAAKT,SAAW,uBAAuBW,IACvCF,KAAKR,QAAU,sBAAsBU,IACrCF,KAAKH,aAAeG,KAAKP,I,CAGnBU,YAAc,KACpB,GAAIH,KAAKN,SAAU,OACnBM,KAAKP,MAAQO,KAAKP,KAClBO,KAAKH,aAAeG,KAAKP,KACzBO,KAAKJ,SAASQ,KAAK,CAAEX,KAAMO,KAAKP,MAAO,EAGjCY,cAAiBC,IACvB,GAAIA,EAAMC,MAAQ,SAAWD,EAAMC,MAAQ,IAAK,CAC9CD,EAAME,iBACNR,KAAKG,a,GAKT,MAAAM,GACE,OACEC,EAACC,EAAI,CAAAJ,IAAA,2CACHK,MAAO,CACL,oBAAqB,KACrB,0BAA2BZ,KAAKH,aAChC,8BAA+BG,KAAKN,WAGtCgB,EAAA,OAAAH,IAAA,2CACEK,MAAM,yBACNC,KAAK,SACLX,GAAIF,KAAKT,SACTuB,KAAK,SACLC,SAAUf,KAAKN,UAAW,EAAK,EAAC,gBACjBM,KAAKH,aAAe,OAAS,QAAO,gBACpCG,KAAKR,QAAO,gBACZQ,KAAKN,SAAW,OAASsB,UACxCC,QAASjB,KAAKG,YACde,UAAWlB,KAAKK,eAEhBK,EAAA,QAAAH,IAAA,2CAAMY,KAAK,UACTT,EAAA,QAAAH,IAAA,2CAAMK,MAAM,2BAA2BZ,KAAKL,UAE9Ce,EAAA,QAAAH,IAAA,2CAAMK,MAAM,uBAAsB,cAAa,QAC7CF,EAAA,OAAAH,IAAA,2CAAKa,QAAQ,YAAYC,KAAK,OAAOC,OAAO,eAAc,eAAc,IAAG,iBAAgB,QAAO,kBAAiB,SACjHZ,EAAA,YAAAH,IAAA,2CAAUgB,OAAO,sBAIvBb,EAAA,OAAAH,IAAA,2CACEK,MAAM,wBACNC,KAAK,QACLX,GAAIF,KAAKR,QACTsB,KAAK,SAAQ,kBACId,KAAKT,SACtBiC,QAASxB,KAAKH,cAEda,EAAA,OAAAH,IAAA,2CAAKK,MAAM,2BACTF,EAAA,QAAAH,IAAA,+C","ignoreList":[]}
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
import{t,p as i,H as a,d as n,h as e,c as s}from"./p-DkpyRqHf.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 r=i(class t extends a{constructor(t){super();if(t!==false){this.__registerHost()}this.__attachShadow();this.tsChange=n(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 e=Math.max(i-a,2);const s=Math.min(i+a,t-1);const o=e>2;const r=s<t-1;n.push(1);if(o){n.push("ellipsis")}else{for(let t=2;t<e;t++){n.push(t)}}for(let t=e;t<=s;t++){n.push(t)}if(r){n.push("ellipsis")}else{for(let i=s+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 a=this.currentPage>=this.totalPages;return e(s,{key:"8ce453e001c6830299e02d8a83fed0d623328b9f",class:{"ts-pagination":true,[`ts-pagination--${this.size}`]:true}},e("nav",{key:"c9c0d1a1d80010cd7653363c45108a93189f993e",part:"nav","aria-label":"Pagination",class:"pagination__nav"},e("button",{key:"03fb8b5042561750aab8371cca844cd2373fa74a",class:"pagination__button pagination__prev",part:"prev",disabled:i,"aria-label":"Previous page",onClick:()=>this.handlePageClick(this.currentPage-1)},e("svg",{key:"a68fae5805dcffc8fca44ccaaea19b1dbecdb9cb",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor","stroke-width":"2","stroke-linecap":"round","stroke-linejoin":"round"},e("polyline",{key:"e186ca6298102fa64973edb8f566e87ed4474a22",points:"15 18 9 12 15 6"}))),t.map(((t,i)=>t==="ellipsis"?e("span",{class:"pagination__ellipsis",key:`ellipsis-${i}`,"aria-hidden":"true"},"..."):e("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))),e("button",{key:"9fce8efe8707cadfc19d20418079cc631a1228a9",class:"pagination__button pagination__next",part:"next",disabled:a,"aria-label":"Next page",onClick:()=>this.handlePageClick(this.currentPage+1)},e("svg",{key:"57ca47eb763ab4adfb24deab8221a405fc2635e6",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor","stroke-width":"2","stroke-linecap":"round","stroke-linejoin":"round"},e("polyline",{key:"c0230ffe8334b72b783b939704dee4b705504dcb",points:"9 18 15 12 9 6"})))))}static get style(){return o()}},[513,"ts-pagination",{total:[2],pageSize:[2,"page-size"],currentPage:[1538,"current-page"],siblingCount:[2,"sibling-count"],size:[513]}]);function c(){if(typeof customElements==="undefined"){return}const i=["ts-pagination"];i.forEach((i=>{switch(i){case"ts-pagination":if(!customElements.get(t(i))){customElements.define(t(i),r)}break}}))}c();export{r as T,c as d};
|
|
2
|
+
//# sourceMappingURL=p-BjyTgfXe.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":["paginationCss","TsPagination","__stencil_proxyCustomElement","HTMLElement","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":"kEAAA,MAAMA,EAAgB,IAAM,63D,MCefC,EAAYC,EAAA,MAAAD,UAAAE,E,kHAEfC,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{t,p as e,H as s,h as a,c as i}from"./p-DkpyRqHf.js";import{d as n}from"./p-TFHAUMKT.js";const c=()=>`: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 o=e(class t extends s{constructor(t){super();if(t!==false){this.__registerHost()}this.__attachShadow()}heading;description;icon;size="md";render(){return a(i,{key:"517bcb74b651797e31e8b631c88e6805493e85fc",class:{"ts-empty-state":true,[`ts-empty-state--${this.size}`]:true}},a("div",{key:"738a7d08d1657b83672a53d1dd8d07f174176739",class:"empty-state__base",part:"base"},a("div",{key:"bbc92546c5172180e64f817a8a0bd5c766d12869",class:"empty-state__icon",part:"icon"},a("slot",{key:"46be0b9827a41af2d05647dcc56ac19c5484a364",name:"icon"},this.icon&&a("ts-icon",{key:"14720f6e52094f08a79b067d228a35ff3d94ce66",name:this.icon}))),this.heading&&a("h3",{key:"88a6cad61c93cc07b274ea7f8bf4e0b4cb0eee57",class:"empty-state__heading",part:"heading"},this.heading),this.description&&a("p",{key:"a59a3db32e57a06c95174708cbd935288de9d3ae",class:"empty-state__description",part:"description"},this.description),a("div",{key:"183fb5fbc08a0bf80fe1dd14c31bc5c55ba14fb7",class:"empty-state__content",part:"content"},a("slot",{key:"e51960738181881636c7cb8a6c31d72d6213a026"})),a("div",{key:"5cb324a51b4a210952eba2e556a64f9bc39d8383",class:"empty-state__action",part:"action"},a("slot",{key:"173a07dc3546f213e3f5a3ed67d6ed94c3e34386",name:"action"}))))}static get style(){return c()}},[769,"ts-empty-state",{heading:[1],description:[1],icon:[1],size:[513]}]);function p(){if(typeof customElements==="undefined"){return}const e=["ts-empty-state","ts-icon"];e.forEach((e=>{switch(e){case"ts-empty-state":if(!customElements.get(t(e))){customElements.define(t(e),o)}break;case"ts-icon":if(!customElements.get(t(e))){n()}break}}))}p();export{o as T,p as d};
|
|
2
|
+
//# sourceMappingURL=p-BlZHjan9.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":["emptyStateCss","TsEmptyState","__stencil_proxyCustomElement","HTMLElement","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":"+FAAA,MAAMA,EAAgB,IAAM,8yD,MCoBfC,EAAYC,EAAA,MAAAD,UAAAE,E,iFAEfC,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,2 @@
|
|
|
1
|
+
import{t as s,p as e,H as r,h as t,c as n}from"./p-DkpyRqHf.js";const i=()=>`:host{display:inline-flex;align-items:center;justify-content:center;--ts-spinner-size:1.5rem;--ts-spinner-color:var(--ts-color-interactive-primary);--ts-spinner-track-color:var(--ts-color-neutral-200)}:host([size="xs"]){--ts-spinner-size:0.875rem}:host([size="sm"]){--ts-spinner-size:1.125rem}:host([size="md"]){--ts-spinner-size:1.5rem}:host([size="lg"]){--ts-spinner-size:2rem}:host([size="xl"]){--ts-spinner-size:3rem}.spinner__svg{width:var(--ts-spinner-size);height:var(--ts-spinner-size);animation:ts-spinner-rotate 0.75s linear infinite}.spinner__track{stroke:var(--ts-spinner-track-color)}.spinner__indicator{stroke:var(--ts-spinner-color)}@keyframes ts-spinner-rotate{to{transform:rotate(360deg)}}`;const a=e(class s extends r{constructor(s){super();if(s!==false){this.__registerHost()}this.__attachShadow()}size="md";color="currentColor";label="Loading";render(){return t(n,{key:"6d0183cc6a829afd067c51502cbc119cf8e89c23",class:{"ts-spinner":true,[`ts-spinner--${this.size}`]:true},role:"status","aria-label":this.label},t("svg",{key:"0bb8dc344532457d26f820a6761aba232ad7ed3f",class:"spinner__svg",part:"svg",viewBox:"0 0 32 32",fill:"none",xmlns:"http://www.w3.org/2000/svg"},t("circle",{key:"3431186c9235e4538634217cc4652e5c5d4e2959",class:"spinner__track",part:"track",cx:"16",cy:"16",r:"13","stroke-width":"3"}),t("circle",{key:"b2c69fc866b5d17de8664a8be40750c5a541a374",class:"spinner__indicator",part:"indicator",cx:"16",cy:"16",r:"13","stroke-width":"3","stroke-linecap":"round","stroke-dasharray":"20 61.68",style:{stroke:this.color!=="currentColor"?this.color:undefined}})))}static get style(){return i()}},[513,"ts-spinner",{size:[513],color:[1],label:[1]}]);function c(){if(typeof customElements==="undefined"){return}const e=["ts-spinner"];e.forEach((e=>{switch(e){case"ts-spinner":if(!customElements.get(s(e))){customElements.define(s(e),a)}break}}))}c();export{a as T,c as d};
|
|
2
|
+
//# sourceMappingURL=p-C7JaUlNB.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":["spinnerCss","TsSpinner","__stencil_proxyCustomElement","HTMLElement","size","color","label","render","h","Host","key","class","this","role","part","viewBox","fill","xmlns","cx","cy","r","style","stroke","undefined"],"sources":["src/components/spinner/spinner.css?tag=ts-spinner&encapsulation=shadow","src/components/spinner/spinner.tsx"],"sourcesContent":["/* ==========================================================================\n ts-spinner — Shadow DOM Scoped Styles\n\n Component tokens (Tier 3):\n --ts-spinner-size Spinner dimensions\n --ts-spinner-color Spinning indicator color\n --ts-spinner-track-color Background track color\n ========================================================================== */\n\n:host {\n display: inline-flex;\n align-items: center;\n justify-content: center;\n\n --ts-spinner-size: 1.5rem;\n --ts-spinner-color: var(--ts-color-interactive-primary);\n --ts-spinner-track-color: var(--ts-color-neutral-200);\n}\n\n/* ---- Sizes ---- */\n:host([size=\"xs\"]) { --ts-spinner-size: 0.875rem; }\n:host([size=\"sm\"]) { --ts-spinner-size: 1.125rem; }\n:host([size=\"md\"]) { --ts-spinner-size: 1.5rem; }\n:host([size=\"lg\"]) { --ts-spinner-size: 2rem; }\n:host([size=\"xl\"]) { --ts-spinner-size: 3rem; }\n\n/* ---- SVG ---- */\n.spinner__svg {\n width: var(--ts-spinner-size);\n height: var(--ts-spinner-size);\n animation: ts-spinner-rotate 0.75s linear infinite;\n}\n\n/* ---- Track ---- */\n.spinner__track {\n stroke: var(--ts-spinner-track-color);\n}\n\n/* ---- Indicator ---- */\n.spinner__indicator {\n stroke: var(--ts-spinner-color);\n}\n\n/* ---- Animation ---- */\n@keyframes ts-spinner-rotate {\n to {\n transform: rotate(360deg);\n }\n}\n","import { Component, Prop, h, Host } from '@stencil/core';\n\n/**\n * @part svg - The SVG element.\n * @part track - The background track circle.\n * @part indicator - The spinning indicator arc.\n */\n@Component({\n tag: 'ts-spinner',\n styleUrl: 'spinner.css',\n shadow: true,\n})\nexport class TsSpinner {\n /** The size of the spinner. */\n @Prop({ reflect: true }) size: 'xs' | 'sm' | 'md' | 'lg' | 'xl' = 'md';\n\n /** The color of the spinning indicator. */\n @Prop() color: string = 'currentColor';\n\n /** Accessible label for screen readers. */\n @Prop() label: string = 'Loading';\n\n // eslint-disable-next-line @typescript-eslint/explicit-function-return-type\n render() {\n return (\n <Host\n class={{\n 'ts-spinner': true,\n [`ts-spinner--${this.size}`]: true,\n }}\n role=\"status\"\n aria-label={this.label}\n >\n <svg class=\"spinner__svg\" part=\"svg\" viewBox=\"0 0 32 32\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n <circle\n class=\"spinner__track\"\n part=\"track\"\n cx=\"16\"\n cy=\"16\"\n r=\"13\"\n stroke-width=\"3\"\n />\n <circle\n class=\"spinner__indicator\"\n part=\"indicator\"\n cx=\"16\"\n cy=\"16\"\n r=\"13\"\n stroke-width=\"3\"\n stroke-linecap=\"round\"\n stroke-dasharray=\"20 61.68\"\n style={{ stroke: this.color !== 'currentColor' ? this.color : undefined }}\n />\n </svg>\n </Host>\n );\n }\n}\n"],"mappings":"gEAAA,MAAMA,EAAa,IAAM,qsB,MCYZC,EAASC,EAAA,MAAAD,UAAAE,E,iFAEKC,KAAyC,KAG1DC,MAAgB,eAGhBC,MAAgB,UAGxB,MAAAC,GACE,OACEC,EAACC,EAAI,CAAAC,IAAA,2CACHC,MAAO,CACL,aAAc,KACd,CAAC,eAAeC,KAAKR,QAAS,MAEhCS,KAAK,SAAQ,aACDD,KAAKN,OAEjBE,EAAA,OAAAE,IAAA,2CAAKC,MAAM,eAAeG,KAAK,MAAMC,QAAQ,YAAYC,KAAK,OAAOC,MAAM,8BACzET,EAAA,UAAAE,IAAA,2CACEC,MAAM,iBACNG,KAAK,QACLI,GAAG,KACHC,GAAG,KACHC,EAAE,KAAI,eACO,MAEfZ,EAAA,UAAAE,IAAA,2CACEC,MAAM,qBACNG,KAAK,YACLI,GAAG,KACHC,GAAG,KACHC,EAAE,KAAI,eACO,IAAG,iBACD,QAAO,mBACL,WACjBC,MAAO,CAAEC,OAAQV,KAAKP,QAAU,eAAiBO,KAAKP,MAAQkB,c","ignoreList":[]}
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
import{t as a,p as t,H as s,h as r,c as e}from"./p-DkpyRqHf.js";const i=()=>`:host{display:inline-flex;vertical-align:middle;--ts-avatar-size:2.5rem;--ts-avatar-bg:var(--ts-color-neutral-200);--ts-avatar-color:var(--ts-color-text-primary);--ts-avatar-radius:var(--ts-shape-full)}:host([size="xs"]){--ts-avatar-size:1.5rem;font-size:var(--ts-font-size-xs)}:host([size="sm"]){--ts-avatar-size:2rem;font-size:var(--ts-font-size-sm)}:host([size="md"]){--ts-avatar-size:2.5rem;font-size:var(--ts-font-size-md)}:host([size="lg"]){--ts-avatar-size:3rem;font-size:var(--ts-font-size-lg)}:host([size="xl"]){--ts-avatar-size:4rem;font-size:var(--ts-font-size-xl)}:host([variant="square"]){--ts-avatar-radius:var(--ts-radius-full)}.avatar__base{display:inline-flex;align-items:center;justify-content:center;width:var(--ts-avatar-size);height:var(--ts-avatar-size);border-radius:var(--ts-avatar-radius);background-color:var(--ts-avatar-bg);color:var(--ts-avatar-color);overflow:hidden;user-select:none;flex-shrink:0}.avatar__image{width:100%;height:100%;object-fit:cover;border-radius:inherit}.avatar__initials{font-family:var(--ts-font-family-base);font-weight:var(--ts-font-weight-semi);font-size:inherit;line-height:1;text-transform:uppercase}`;const o=t(class a extends s{constructor(a){super();if(a!==false){this.__registerHost()}this.__attachShadow()}src;alt;name;size="md";variant="circle";color;hasError=false;handleError=()=>{this.hasError=true};getInitials(){if(!this.name)return"";const a=this.name.trim().split(/\s+/);if(a.length===1){return a[0].charAt(0).toUpperCase()}return(a[0].charAt(0)+a[a.length-1].charAt(0)).toUpperCase()}render(){const a=this.src&&!this.hasError;const t=this.getInitials();const s=!a&&t;return r(e,{key:"11d72d9cc86c6f14c01ac01a6f37736b8e1872bd",class:{"ts-avatar":true,[`ts-avatar--${this.size}`]:true,[`ts-avatar--${this.variant}`]:true}},r("div",{key:"74c5395cc637d642bc0e53fa3a19315e9a6be2cb",class:"avatar__base",part:"base",role:"img","aria-label":this.alt||this.name||"Avatar",style:this.color&&!a?{backgroundColor:this.color}:undefined},a&&r("img",{key:"7544f0a8907645da2334e8d5f55eab475488299d",class:"avatar__image",part:"image",src:this.src,alt:this.alt||this.name||"",onError:this.handleError}),s&&r("span",{key:"4425c8f4dc882b10e7c54b3c53d3cbc37a410c2f",class:"avatar__initials",part:"initials","aria-hidden":"true"},t),!a&&!s&&r("slot",{key:"a1ea8a822e01d541c135b4fc4aba9f25c117beb8"})))}static get style(){return i()}},[769,"ts-avatar",{src:[1],alt:[1],name:[1],size:[513],variant:[513],color:[1],hasError:[32]}]);function n(){if(typeof customElements==="undefined"){return}const t=["ts-avatar"];t.forEach((t=>{switch(t){case"ts-avatar":if(!customElements.get(a(t))){customElements.define(a(t),o)}break}}))}n();export{o as T,n as d};
|
|
2
|
+
//# sourceMappingURL=p-C8wd1644.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":["avatarCss","TsAvatar","__stencil_proxyCustomElement","HTMLElement","src","alt","name","size","variant","color","hasError","handleError","this","getInitials","words","trim","split","length","charAt","toUpperCase","render","showImage","initials","showInitials","h","Host","key","class","part","role","style","backgroundColor","undefined","onError"],"sources":["src/components/avatar/avatar.css?tag=ts-avatar&encapsulation=shadow","src/components/avatar/avatar.tsx"],"sourcesContent":["/* ==========================================================================\n ts-avatar — Shadow DOM Scoped Styles\n\n Component tokens (Tier 3):\n --ts-avatar-size Avatar dimensions\n --ts-avatar-bg Background color for initials/slot\n --ts-avatar-color Text color for initials\n --ts-avatar-radius Border radius\n ========================================================================== */\n\n:host {\n display: inline-flex;\n vertical-align: middle;\n\n --ts-avatar-size: 2.5rem;\n --ts-avatar-bg: var(--ts-color-neutral-200);\n --ts-avatar-color: var(--ts-color-text-primary);\n --ts-avatar-radius: var(--ts-shape-full);\n}\n\n/* ---- Sizes ---- */\n:host([size=\"xs\"]) { --ts-avatar-size: 1.5rem; font-size: var(--ts-font-size-xs); }\n:host([size=\"sm\"]) { --ts-avatar-size: 2rem; font-size: var(--ts-font-size-sm); }\n:host([size=\"md\"]) { --ts-avatar-size: 2.5rem; font-size: var(--ts-font-size-md); }\n:host([size=\"lg\"]) { --ts-avatar-size: 3rem; font-size: var(--ts-font-size-lg); }\n:host([size=\"xl\"]) { --ts-avatar-size: 4rem; font-size: var(--ts-font-size-xl); }\n\n/* ---- Variant: square ---- */\n:host([variant=\"square\"]) {\n --ts-avatar-radius: var(--ts-radius-full);\n}\n\n/* ---- Base container ---- */\n.avatar__base {\n display: inline-flex;\n align-items: center;\n justify-content: center;\n width: var(--ts-avatar-size);\n height: var(--ts-avatar-size);\n border-radius: var(--ts-avatar-radius);\n background-color: var(--ts-avatar-bg);\n color: var(--ts-avatar-color);\n overflow: hidden;\n user-select: none;\n flex-shrink: 0;\n}\n\n/* ---- Image ---- */\n.avatar__image {\n width: 100%;\n height: 100%;\n object-fit: cover;\n border-radius: inherit;\n}\n\n/* ---- Initials ---- */\n.avatar__initials {\n font-family: var(--ts-font-family-base);\n font-weight: var(--ts-font-weight-semi);\n font-size: inherit;\n line-height: 1;\n text-transform: uppercase;\n}\n","import { Component, Prop, State, h, Host } from '@stencil/core';\n\n/**\n * @slot - Default slot for custom content (e.g., icon).\n *\n * @part base - The avatar container.\n * @part image - The avatar image element.\n * @part initials - The initials text element.\n */\n@Component({\n tag: 'ts-avatar',\n styleUrl: 'avatar.css',\n shadow: true,\n})\nexport class TsAvatar {\n /** Image URL for the avatar. */\n @Prop() src?: string;\n\n /** Alt text for the avatar image. */\n @Prop() alt?: string;\n\n /** Name used to generate initials fallback. */\n @Prop() name?: string;\n\n /** The size of the avatar. */\n @Prop({ reflect: true }) size: 'xs' | 'sm' | 'md' | 'lg' | 'xl' = 'md';\n\n /** Shape variant of the avatar. */\n @Prop({ reflect: true }) variant: 'circle' | 'square' = 'circle';\n\n /** Background color for the initials fallback. */\n @Prop() color?: string;\n\n /** Whether the image failed to load. */\n @State() hasError = false;\n\n private handleError = (): void => {\n this.hasError = true;\n };\n\n private getInitials(): string {\n if (!this.name) return '';\n const words = this.name.trim().split(/\\s+/);\n if (words.length === 1) {\n return words[0].charAt(0).toUpperCase();\n }\n return (words[0].charAt(0) + words[words.length - 1].charAt(0)).toUpperCase();\n }\n\n // eslint-disable-next-line @typescript-eslint/explicit-function-return-type\n render() {\n const showImage = this.src && !this.hasError;\n const initials = this.getInitials();\n const showInitials = !showImage && initials;\n\n return (\n <Host\n class={{\n 'ts-avatar': true,\n [`ts-avatar--${this.size}`]: true,\n [`ts-avatar--${this.variant}`]: true,\n }}\n >\n <div\n class=\"avatar__base\"\n part=\"base\"\n role=\"img\"\n aria-label={this.alt || this.name || 'Avatar'}\n style={this.color && !showImage ? { backgroundColor: this.color } : undefined}\n >\n {showImage && (\n <img\n class=\"avatar__image\"\n part=\"image\"\n src={this.src}\n alt={this.alt || this.name || ''}\n onError={this.handleError}\n />\n )}\n {showInitials && (\n <span class=\"avatar__initials\" part=\"initials\" aria-hidden=\"true\">\n {initials}\n </span>\n )}\n {!showImage && !showInitials && <slot />}\n </div>\n </Host>\n );\n }\n}\n"],"mappings":"gEAAA,MAAMA,EAAY,IAAM,woC,MCcXC,EAAQC,EAAA,MAAAD,UAAAE,E,iFAEXC,IAGAC,IAGAC,KAGiBC,KAAyC,KAGzCC,QAA+B,SAGhDC,MAGCC,SAAW,MAEZC,YAAc,KACpBC,KAAKF,SAAW,IAAI,EAGd,WAAAG,GACN,IAAKD,KAAKN,KAAM,MAAO,GACvB,MAAMQ,EAAQF,KAAKN,KAAKS,OAAOC,MAAM,OACrC,GAAIF,EAAMG,SAAW,EAAG,CACtB,OAAOH,EAAM,GAAGI,OAAO,GAAGC,a,CAE5B,OAAQL,EAAM,GAAGI,OAAO,GAAKJ,EAAMA,EAAMG,OAAS,GAAGC,OAAO,IAAIC,a,CAIlE,MAAAC,GACE,MAAMC,EAAYT,KAAKR,MAAQQ,KAAKF,SACpC,MAAMY,EAAWV,KAAKC,cACtB,MAAMU,GAAgBF,GAAaC,EAEnC,OACEE,EAACC,EAAI,CAAAC,IAAA,2CACHC,MAAO,CACL,YAAa,KACb,CAAC,cAAcf,KAAKL,QAAS,KAC7B,CAAC,cAAcK,KAAKJ,WAAY,OAGlCgB,EAAA,OAAAE,IAAA,2CACEC,MAAM,eACNC,KAAK,OACLC,KAAK,MAAK,aACEjB,KAAKP,KAAOO,KAAKN,MAAQ,SACrCwB,MAAOlB,KAAKH,QAAUY,EAAY,CAAEU,gBAAiBnB,KAAKH,OAAUuB,WAEnEX,GACCG,EAAA,OAAAE,IAAA,2CACEC,MAAM,gBACNC,KAAK,QACLxB,IAAKQ,KAAKR,IACVC,IAAKO,KAAKP,KAAOO,KAAKN,MAAQ,GAC9B2B,QAASrB,KAAKD,cAGjBY,GACCC,EAAA,QAAAE,IAAA,2CAAMC,MAAM,mBAAmBC,KAAK,WAAU,cAAa,QACxDN,IAGHD,IAAcE,GAAgBC,EAAA,QAAAE,IAAA,8C","ignoreList":[]}
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
import{t as s,p as r,H as e,h as t,c as a}from"./p-DkpyRqHf.js";const i=()=>`:host{display:flex;align-items:center;gap:var(--ts-spacing-2);--ts-progress-track-bg:var(--ts-color-neutral-200);--ts-progress-fill-bg:var(--ts-color-interactive-primary);--ts-progress-radius:var(--ts-radius-full);--ts-progress-height:0.5rem}.progress__track{flex:1;block-size:var(--ts-progress-height);background-color:var(--ts-progress-track-bg);border-radius:var(--ts-progress-radius);overflow:hidden;position:relative}.progress__fill{block-size:100%;background-color:var(--ts-progress-fill-bg);border-radius:var(--ts-progress-radius);transition:width var(--ts-transition-normal)}.progress__label{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);min-inline-size:3ch;text-align:end}:host([size="sm"]){--ts-progress-height:0.25rem}:host([size="lg"]){--ts-progress-height:0.75rem}:host([variant="success"]){--ts-progress-fill-bg:var(--ts-color-success-600)}:host([variant="warning"]){--ts-progress-fill-bg:var(--ts-color-warning-600)}:host([variant="danger"]){--ts-progress-fill-bg:var(--ts-color-danger-500)}:host([variant="info"]){--ts-progress-fill-bg:var(--ts-color-info-500)}:host([indeterminate]) .progress__fill{width:40%;animation:ts-progress-slide 1.5s ease-in-out infinite}@keyframes ts-progress-slide{0%{transform:translateX(-100%)}100%{transform:translateX(350%)}}`;const o=r(class s extends e{constructor(s){super();if(s!==false){this.__registerHost()}this.__attachShadow()}value=0;max=100;variant="primary";size="md";indeterminate=false;label;showValue=false;get percentage(){if(this.max<=0)return 0;return Math.min(100,Math.max(0,this.value/this.max*100))}render(){const s=this.percentage;return t(a,{key:"d74892b8e752c9a837c01ef147ae83a53d4460d4",class:{"ts-progress":true,[`ts-progress--${this.variant}`]:true,[`ts-progress--${this.size}`]:true,"ts-progress--indeterminate":this.indeterminate}},t("div",{key:"2a43e6036aa6709d3880f07a7f0598a6ade68268",class:"progress__track",part:"track",role:"progressbar","aria-valuenow":this.indeterminate?undefined:this.value,"aria-valuemin":0,"aria-valuemax":this.max,"aria-label":this.label||undefined},t("div",{key:"09f9f244e037a34024a1dacb8beacd8be9cb9de9",class:"progress__fill",part:"fill",style:this.indeterminate?undefined:{width:`${s}%`}})),this.showValue&&!this.indeterminate&&t("span",{key:"795864d0e9d184c7c354179e845e954aca3d7113",class:"progress__label",part:"label","aria-hidden":"true"},Math.round(s),"%"))}static get style(){return i()}},[513,"ts-progress",{value:[2],max:[2],variant:[513],size:[513],indeterminate:[516],label:[1],showValue:[516,"show-value"]}]);function n(){if(typeof customElements==="undefined"){return}const r=["ts-progress"];r.forEach((r=>{switch(r){case"ts-progress":if(!customElements.get(s(r))){customElements.define(s(r),o)}break}}))}n();export{o as T,n as d};
|
|
2
|
+
//# sourceMappingURL=p-CEQXPxzU.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":["progressCss","TsProgress","__stencil_proxyCustomElement","HTMLElement","value","max","variant","size","indeterminate","label","showValue","percentage","this","Math","min","render","percent","h","Host","key","class","part","role","undefined","style","width","round"],"sources":["src/components/progress/progress.css?tag=ts-progress&encapsulation=shadow","src/components/progress/progress.tsx"],"sourcesContent":["/* ==========================================================================\n ts-progress — Shadow DOM Scoped Styles\n\n Component tokens (Tier 3):\n --ts-progress-track-bg Track background color\n --ts-progress-fill-bg Fill bar background color\n --ts-progress-radius Border radius\n --ts-progress-height Track height\n ========================================================================== */\n\n:host {\n display: flex;\n align-items: center;\n gap: var(--ts-spacing-2);\n\n --ts-progress-track-bg: var(--ts-color-neutral-200);\n --ts-progress-fill-bg: var(--ts-color-interactive-primary);\n --ts-progress-radius: var(--ts-radius-full);\n --ts-progress-height: 0.5rem;\n}\n\n/* ---- Track ---- */\n.progress__track {\n flex: 1;\n block-size: var(--ts-progress-height);\n background-color: var(--ts-progress-track-bg);\n border-radius: var(--ts-progress-radius);\n overflow: hidden;\n position: relative;\n}\n\n/* ---- Fill ---- */\n.progress__fill {\n block-size: 100%;\n background-color: var(--ts-progress-fill-bg);\n border-radius: var(--ts-progress-radius);\n transition: width var(--ts-transition-normal);\n}\n\n/* ---- Label ---- */\n.progress__label {\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 min-inline-size: 3ch;\n text-align: end;\n}\n\n/* ---- Sizes ---- */\n:host([size=\"sm\"]) {\n --ts-progress-height: 0.25rem;\n}\n\n:host([size=\"lg\"]) {\n --ts-progress-height: 0.75rem;\n}\n\n/* ---- Variants ---- */\n:host([variant=\"success\"]) {\n --ts-progress-fill-bg: var(--ts-color-success-600);\n}\n\n:host([variant=\"warning\"]) {\n --ts-progress-fill-bg: var(--ts-color-warning-600);\n}\n\n:host([variant=\"danger\"]) {\n --ts-progress-fill-bg: var(--ts-color-danger-500);\n}\n\n:host([variant=\"info\"]) {\n --ts-progress-fill-bg: var(--ts-color-info-500);\n}\n\n/* ---- Indeterminate animation ---- */\n:host([indeterminate]) .progress__fill {\n width: 40%;\n animation: ts-progress-slide 1.5s ease-in-out infinite;\n}\n\n@keyframes ts-progress-slide {\n 0% {\n transform: translateX(-100%);\n }\n 100% {\n transform: translateX(350%);\n }\n}\n","import { Component, Prop, h, Host } from '@stencil/core';\nimport type { TsSize } from '../../types';\n\ntype TsProgressVariant = 'primary' | 'success' | 'warning' | 'danger' | 'info';\n\n/**\n * @part track - The progress track.\n * @part fill - The progress fill bar.\n * @part label - The value label text.\n */\n@Component({\n tag: 'ts-progress',\n styleUrl: 'progress.css',\n shadow: true,\n})\nexport class TsProgress {\n /** Current progress value (0 to max). */\n @Prop() value = 0;\n\n /** Maximum value. */\n @Prop() max = 100;\n\n /** The color variant. */\n @Prop({ reflect: true }) variant: TsProgressVariant = 'primary';\n\n /** The size of the progress bar. */\n @Prop({ reflect: true }) size: TsSize = 'md';\n\n /** Whether the progress is indeterminate. */\n @Prop({ reflect: true }) indeterminate = false;\n\n /** Accessible label for the progress bar. */\n @Prop() label?: string;\n\n /** Whether to display the percentage value. */\n @Prop({ reflect: true }) showValue = false;\n\n private get percentage(): number {\n if (this.max <= 0) return 0;\n return Math.min(100, Math.max(0, (this.value / this.max) * 100));\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-progress': true,\n [`ts-progress--${this.variant}`]: true,\n [`ts-progress--${this.size}`]: true,\n 'ts-progress--indeterminate': this.indeterminate,\n }}\n >\n <div\n class=\"progress__track\"\n part=\"track\"\n role=\"progressbar\"\n aria-valuenow={this.indeterminate ? undefined : this.value}\n aria-valuemin={0}\n aria-valuemax={this.max}\n aria-label={this.label || undefined}\n >\n <div\n class=\"progress__fill\"\n part=\"fill\"\n style={this.indeterminate ? undefined : { width: `${percent}%` }}\n />\n </div>\n {this.showValue && !this.indeterminate && (\n <span class=\"progress__label\" part=\"label\" aria-hidden=\"true\">\n {Math.round(percent)}%\n </span>\n )}\n </Host>\n );\n }\n}\n"],"mappings":"gEAAA,MAAMA,EAAc,IAAM,k2C,MCebC,EAAUC,EAAA,MAAAD,UAAAE,E,iFAEbC,MAAQ,EAGRC,IAAM,IAGWC,QAA6B,UAG7BC,KAAe,KAGfC,cAAgB,MAGjCC,MAGiBC,UAAY,MAErC,cAAYC,GACV,GAAIC,KAAKP,KAAO,EAAG,OAAO,EAC1B,OAAOQ,KAAKC,IAAI,IAAKD,KAAKR,IAAI,EAAIO,KAAKR,MAAQQ,KAAKP,IAAO,K,CAI7D,MAAAU,GACE,MAAMC,EAAUJ,KAAKD,WAErB,OACEM,EAACC,EAAI,CAAAC,IAAA,2CACHC,MAAO,CACL,cAAe,KACf,CAAC,gBAAgBR,KAAKN,WAAY,KAClC,CAAC,gBAAgBM,KAAKL,QAAS,KAC/B,6BAA8BK,KAAKJ,gBAGrCS,EAAA,OAAAE,IAAA,2CACEC,MAAM,kBACNC,KAAK,QACLC,KAAK,cAAa,gBACHV,KAAKJ,cAAgBe,UAAYX,KAAKR,MAAK,gBAC3C,EAAC,gBACDQ,KAAKP,IAAG,aACXO,KAAKH,OAASc,WAE1BN,EAAA,OAAAE,IAAA,2CACEC,MAAM,iBACNC,KAAK,OACLG,MAAOZ,KAAKJ,cAAgBe,UAAY,CAAEE,MAAO,GAAGT,SAGvDJ,KAAKF,YAAcE,KAAKJ,eACvBS,EAAA,QAAAE,IAAA,2CAAMC,MAAM,kBAAkBC,KAAK,QAAO,cAAa,QACpDR,KAAKa,MAAMV,GAAQ,K","ignoreList":[]}
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
import{t,p as s,H as r,h as o,c as e}from"./p-DkpyRqHf.js";const a=()=>`:host{display:block;--ts-accordion-border-color:var(--ts-color-border-default);--ts-accordion-header-bg:transparent;--ts-accordion-radius:var(--ts-radius-lg)}::slotted(ts-accordion-item){border-block-end:1px solid var(--ts-accordion-border-color)}::slotted(ts-accordion-item:first-child){border-start-start-radius:var(--ts-accordion-radius);border-start-end-radius:var(--ts-accordion-radius)}::slotted(ts-accordion-item:last-child){border-end-start-radius:var(--ts-accordion-radius);border-end-end-radius:var(--ts-accordion-radius);border-block-end:none}`;const d=s(class t extends r{constructor(t){super();if(t!==false){this.__registerHost()}this.__attachShadow()}get hostEl(){return this}multiple=false;handleToggle(t){if(!this.multiple&&t.detail.open){const s=t.target;const r=this.hostEl.querySelectorAll("ts-accordion-item");r.forEach((t=>{if(t!==s){t.setAttribute("open","false");t.removeAttribute("open")}}))}}render(){return o(e,{key:"737635093f0c31076c08a6fb2a88804604b1b77e",class:"ts-accordion"},o("slot",{key:"9daa06ca9dd44478594e686792da9529637f69a3"}))}static get style(){return a()}},[769,"ts-accordion",{multiple:[4]},[[0,"tsToggle","handleToggle"]]]);function c(){if(typeof customElements==="undefined"){return}const s=["ts-accordion"];s.forEach((s=>{switch(s){case"ts-accordion":if(!customElements.get(t(s))){customElements.define(t(s),d)}break}}))}c();export{d as T,c as d};
|
|
2
|
+
//# sourceMappingURL=p-CGh7W07E.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":["accordionCss","TsAccordion","__stencil_proxyCustomElement","HTMLElement","multiple","handleToggle","event","this","detail","open","target","items","hostEl","querySelectorAll","forEach","item","setAttribute","removeAttribute","render","h","Host","key","class"],"sources":["src/components/accordion/accordion.css?tag=ts-accordion&encapsulation=shadow","src/components/accordion/accordion.tsx"],"sourcesContent":["/* ==========================================================================\n ts-accordion — Shadow DOM Scoped Styles\n\n Component tokens (Tier 3):\n --ts-accordion-border-color Border color between items\n --ts-accordion-header-bg Header background color\n --ts-accordion-radius Border radius\n ========================================================================== */\n\n:host {\n display: block;\n\n --ts-accordion-border-color: var(--ts-color-border-default);\n --ts-accordion-header-bg: transparent;\n --ts-accordion-radius: var(--ts-radius-lg);\n}\n\n::slotted(ts-accordion-item) {\n border-block-end: 1px solid var(--ts-accordion-border-color);\n}\n\n::slotted(ts-accordion-item:first-child) {\n border-start-start-radius: var(--ts-accordion-radius);\n border-start-end-radius: var(--ts-accordion-radius);\n}\n\n::slotted(ts-accordion-item:last-child) {\n border-end-start-radius: var(--ts-accordion-radius);\n border-end-end-radius: var(--ts-accordion-radius);\n border-block-end: none;\n}\n","import { Component, Prop, h, Host, Element, Listen } from '@stencil/core';\n\n/**\n * @slot - Default slot for ts-accordion-item children.\n */\n@Component({\n tag: 'ts-accordion',\n styleUrl: 'accordion.css',\n shadow: true,\n})\nexport class TsAccordion {\n @Element() hostEl!: HTMLElement;\n\n /** Allow multiple items to be open simultaneously. */\n @Prop() multiple = false;\n\n @Listen('tsToggle')\n handleToggle(event: CustomEvent<{ open: boolean }>): void {\n if (!this.multiple && event.detail.open) {\n const target = event.target as HTMLElement;\n const items = this.hostEl.querySelectorAll('ts-accordion-item');\n items.forEach((item) => {\n if (item !== target) {\n item.setAttribute('open', 'false');\n item.removeAttribute('open');\n }\n });\n }\n }\n\n // eslint-disable-next-line @typescript-eslint/explicit-function-return-type\n render() {\n return (\n <Host class=\"ts-accordion\">\n <slot />\n </Host>\n );\n }\n}\n"],"mappings":"2DAAA,MAAMA,EAAe,IAAM,6iB,MCUdC,EAAWC,EAAA,MAAAD,UAAAE,E,0GAIdC,SAAW,MAGnB,YAAAC,CAAaC,GACX,IAAKC,KAAKH,UAAYE,EAAME,OAAOC,KAAM,CACvC,MAAMC,EAASJ,EAAMI,OACrB,MAAMC,EAAQJ,KAAKK,OAAOC,iBAAiB,qBAC3CF,EAAMG,SAASC,IACb,GAAIA,IAASL,EAAQ,CACnBK,EAAKC,aAAa,OAAQ,SAC1BD,EAAKE,gBAAgB,O,MAO7B,MAAAC,GACE,OACEC,EAACC,EAAI,CAAAC,IAAA,2CAACC,MAAM,gBACVH,EAAA,QAAAE,IAAA,6C","ignoreList":[]}
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
import{t,p as e,H as a,d as i,h as s,c as n}from"./p-DkpyRqHf.js";import{d as r}from"./p-TFHAUMKT.js";const o=()=>`: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 c=e(class t extends a{constructor(t){super();if(t!==false){this.__registerHost()}this.__attachShadow();this.tsSelect=i(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 e=this.href?{href:this.disabled?undefined:this.href}:{type:"button",disabled:this.disabled};return s(n,{key:"edc70c61d701ba9765e37d18e49f1f9d198dde85",class:{"ts-nav-item":true,"ts-nav-item--active":this.active,"ts-nav-item--disabled":this.disabled}},s("li",{key:"fa4090e6dd631e6caaf89c84b7735c64f25d46d0",class:"nav-item__wrapper",part:"item",role:"listitem"},s(t,{key:"eb44e83812a47b281719155a49633de0e960a19e",...e,class:"nav-item__link",part:"link","aria-current":this.active?"page":undefined,"aria-disabled":this.disabled?"true":undefined,onClick:this.handleClick},this.icon&&s("span",{key:"a12ec79c7dc7d7a1bf53c4d0c25fc7ed8c4d1fcc",class:"nav-item__icon",part:"icon","aria-hidden":"true"},s("ts-icon",{key:"5268366fada499e81d589b4b21c08065b6d83dd4",name:this.icon,size:"sm"})),s("span",{key:"bef8a388eab007fa739025fbb242f490204cad1f",class:"nav-item__label",part:"label"},s("slot",{key:"9154d4a5f1075ecaa077998198bf6cd0258449d3"})))))}static get style(){return o()}},[769,"ts-nav-item",{href:[1],active:[516],disabled:[516],icon:[1]}]);function l(){if(typeof customElements==="undefined"){return}const e=["ts-nav-item","ts-icon"];e.forEach((e=>{switch(e){case"ts-nav-item":if(!customElements.get(t(e))){customElements.define(t(e),c)}break;case"ts-icon":if(!customElements.get(t(e))){r()}break}}))}l();export{c as T,l as d};
|
|
2
|
+
//# sourceMappingURL=p-CHtE5caV.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":["navItemCss","TsNavItem","__stencil_proxyCustomElement","HTMLElement","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":"sGAAA,MAAMA,EAAa,IAAM,uuC,MCgBZC,EAASC,EAAA,MAAAD,UAAAE,E,kHAEZC,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{t as s,p as n,H as r,d as e,h as a,c as t}from"./p-DkpyRqHf.js";import{d as o}from"./p-TFHAUMKT.js";const i=()=>`: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 c=n(class s extends r{constructor(s){super();if(s!==false){this.__registerHost()}this.__attachShadow();this.tsClose=e(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 s={info:"ℹ",success:"✓",warning:"⚠",danger:"✕",primary:"ℹ",secondary:"ℹ",neutral:"ℹ"};return a("span",{"aria-hidden":"true"},s[this.variant]||"ℹ")}render(){if(!this.isVisible)return null;const s=this.variant==="danger"?"alert":"banner";const n=this.variant==="danger"?"assertive":"polite";return a(t,{class:{"ts-banner":true,[`ts-banner--${this.variant}`]:true,"ts-banner--sticky":this.sticky},role:s,"aria-live":n},a("div",{class:"banner__base",part:"base"},a("div",{class:"banner__icon",part:"icon"},this.icon?a("ts-icon",{name:this.icon}):this.renderDefaultIcon()),a("div",{class:"banner__message",part:"message"},a("slot",null)),a("div",{class:"banner__action",part:"action"},a("slot",{name:"action"})),this.dismissible&&a("button",{class:"banner__close",part:"close",type:"button","aria-label":"Dismiss banner",onClick:this.handleClose},"\\u2715")))}static get style(){return i()}},[769,"ts-banner",{variant:[513],dismissible:[516],icon:[1],sticky:[516],isVisible:[32],close:[64],show:[64]}]);function l(){if(typeof customElements==="undefined"){return}const n=["ts-banner","ts-icon"];n.forEach((n=>{switch(n){case"ts-banner":if(!customElements.get(s(n))){customElements.define(s(n),c)}break;case"ts-icon":if(!customElements.get(s(n))){o()}break}}))}l();export{c as T,l as d};
|
|
2
|
+
//# sourceMappingURL=p-CSNeA_zh.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":["bannerCss","TsBanner","__stencil_proxyCustomElement","HTMLElement","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":"2GAAA,MAAMA,EAAY,IAAM,soE,MCmBXC,EAAQC,EAAA,MAAAD,UAAAE,E,gHAEMC,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{t,p as s,H as n,h as i,c as e}from"./p-DkpyRqHf.js";const a=()=>`: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 o=s(class t extends n{constructor(t){super();if(t!==false){this.__registerHost()}this.__attachShadow()}size="lg";padding=true;render(){return i(e,{key:"45f43cf6088754adc81c04a59249361ee1484d73",class:{"ts-container":true,"ts-container--no-padding":!this.padding}},i("slot",{key:"1b302d969a21f7c35bfa8e54523df064171fdaa5"}))}static get style(){return a()}},[769,"ts-container",{size:[513],padding:[516]}]);function d(){if(typeof customElements==="undefined"){return}const s=["ts-container"];s.forEach((s=>{switch(s){case"ts-container":if(!customElements.get(t(s))){customElements.define(t(s),o)}break}}))}d();export{o as T,d};
|
|
2
|
+
//# sourceMappingURL=p-CbHlJvjF.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":["containerCss","TsContainer","__stencil_proxyCustomElement","HTMLElement","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":"2DAAA,MAAMA,EAAe,IAAM,8a,MCYdC,EAAWC,EAAA,MAAAD,UAAAE,E,iFAEGC,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{t,p as e,H as s,h as a,c as i}from"./p-DkpyRqHf.js";const r=()=>`:host{display:block;font-family:var(--ts-font-family-base);--ts-stepper-active-color:var(--ts-color-interactive-primary);--ts-stepper-completed-color:var(--ts-color-success-600);--ts-stepper-connector-color:var(--ts-color-border-default)}.stepper__container{display:flex}:host([orientation="horizontal"]) .stepper__container{flex-direction:row;align-items:flex-start}:host([orientation="vertical"]) .stepper__container{flex-direction:column}`;const o=e(class t extends s{constructor(t){super();if(t!==false){this.__registerHost()}this.__attachShadow()}get hostEl(){return this}activeStep=0;orientation="horizontal";linear=false;handleActiveStepChange(){this.updateStepStates()}componentDidLoad(){this.updateStepStates()}updateStepStates(){const t=Array.from(this.hostEl.querySelectorAll("ts-step"));t.forEach(((e,s)=>{e.setAttribute("data-index",String(s));e.setAttribute("data-orientation",this.orientation);if(s===this.activeStep){e.setAttribute("data-active","")}else{e.removeAttribute("data-active")}if(this.linear&&s>this.activeStep){e.setAttribute("disabled","")}else if(this.linear){e.removeAttribute("disabled")}if(s<t.length-1){e.setAttribute("data-has-connector","")}else{e.removeAttribute("data-has-connector")}}))}render(){return a(i,{key:"202c3f1869c3010f5c6f8b5ee52850bcbbce5891",class:{"ts-stepper":true,[`ts-stepper--${this.orientation}`]:true}},a("div",{key:"32b8444cf38f04152a1e288241d703aa5e483379",class:"stepper__container",part:"container",role:"list"},a("slot",{key:"399b699aa4133bb1bb6d93fdc56b45d9bffb234d"})))}static get watchers(){return{activeStep:[{handleActiveStepChange:0}]}}static get style(){return r()}},[769,"ts-stepper",{activeStep:[514,"active-step"],orientation:[513],linear:[4]},undefined,{activeStep:[{handleActiveStepChange:0}]}]);function n(){if(typeof customElements==="undefined"){return}const e=["ts-stepper"];e.forEach((e=>{switch(e){case"ts-stepper":if(!customElements.get(t(e))){customElements.define(t(e),o)}break}}))}n();export{o as T,n as d};
|
|
2
|
+
//# sourceMappingURL=p-CkQOAizb.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":["stepperCss","TsStepper","__stencil_proxyCustomElement","HTMLElement","activeStep","orientation","linear","handleActiveStepChange","this","updateStepStates","componentDidLoad","steps","Array","from","hostEl","querySelectorAll","forEach","step","index","setAttribute","String","removeAttribute","length","render","h","Host","key","class","part","role"],"sources":["src/components/stepper/stepper.css?tag=ts-stepper&encapsulation=shadow","src/components/stepper/stepper.tsx"],"sourcesContent":["/* ==========================================================================\n ts-stepper — Shadow DOM Scoped Styles\n\n Component tokens (Tier 3):\n --ts-stepper-active-color Active step indicator color\n --ts-stepper-completed-color Completed step indicator color\n --ts-stepper-connector-color Connector line color\n ========================================================================== */\n\n:host {\n display: block;\n font-family: var(--ts-font-family-base);\n\n --ts-stepper-active-color: var(--ts-color-interactive-primary);\n --ts-stepper-completed-color: var(--ts-color-success-600);\n --ts-stepper-connector-color: var(--ts-color-border-default);\n}\n\n.stepper__container {\n display: flex;\n}\n\n/* ---- Horizontal ---- */\n:host([orientation=\"horizontal\"]) .stepper__container {\n flex-direction: row;\n align-items: flex-start;\n}\n\n/* ---- Vertical ---- */\n:host([orientation=\"vertical\"]) .stepper__container {\n flex-direction: column;\n}\n","import { Component, Prop, h, Host, Element, Watch } from '@stencil/core';\n\n/**\n * @slot - Default slot for ts-step children.\n *\n * @part container - The stepper container.\n */\n@Component({\n tag: 'ts-stepper',\n styleUrl: 'stepper.css',\n shadow: true,\n})\nexport class TsStepper {\n @Element() hostEl!: HTMLElement;\n\n /** The index of the currently active step (0-based). */\n @Prop({ reflect: true }) activeStep = 0;\n\n /** The layout orientation. */\n @Prop({ reflect: true }) orientation: 'horizontal' | 'vertical' = 'horizontal';\n\n /** If true, steps must be completed in order. */\n @Prop() linear = false;\n\n @Watch('activeStep')\n handleActiveStepChange(): void {\n this.updateStepStates();\n }\n\n componentDidLoad(): void {\n this.updateStepStates();\n }\n\n private updateStepStates(): void {\n const steps = Array.from(this.hostEl.querySelectorAll('ts-step'));\n steps.forEach((step, index) => {\n step.setAttribute('data-index', String(index));\n step.setAttribute('data-orientation', this.orientation);\n if (index === this.activeStep) {\n step.setAttribute('data-active', '');\n } else {\n step.removeAttribute('data-active');\n }\n if (this.linear && index > this.activeStep) {\n step.setAttribute('disabled', '');\n } else if (this.linear) {\n step.removeAttribute('disabled');\n }\n if (index < steps.length - 1) {\n step.setAttribute('data-has-connector', '');\n } else {\n step.removeAttribute('data-has-connector');\n }\n });\n }\n\n // eslint-disable-next-line @typescript-eslint/explicit-function-return-type\n render() {\n return (\n <Host\n class={{\n 'ts-stepper': true,\n [`ts-stepper--${this.orientation}`]: true,\n }}\n >\n <div class=\"stepper__container\" part=\"container\" role=\"list\">\n <slot />\n </div>\n </Host>\n );\n }\n}\n"],"mappings":"2DAAA,MAAMA,EAAa,IAAM,4b,MCYZC,EAASC,EAAA,MAAAD,UAAAE,E,0GAIKC,WAAa,EAGbC,YAAyC,aAG1DC,OAAS,MAGjB,sBAAAC,GACEC,KAAKC,kB,CAGP,gBAAAC,GACEF,KAAKC,kB,CAGC,gBAAAA,GACN,MAAME,EAAQC,MAAMC,KAAKL,KAAKM,OAAOC,iBAAiB,YACtDJ,EAAMK,SAAQ,CAACC,EAAMC,KACnBD,EAAKE,aAAa,aAAcC,OAAOF,IACvCD,EAAKE,aAAa,mBAAoBX,KAAKH,aAC3C,GAAIa,IAAUV,KAAKJ,WAAY,CAC7Ba,EAAKE,aAAa,cAAe,G,KAC5B,CACLF,EAAKI,gBAAgB,c,CAEvB,GAAIb,KAAKF,QAAUY,EAAQV,KAAKJ,WAAY,CAC1Ca,EAAKE,aAAa,WAAY,G,MACzB,GAAIX,KAAKF,OAAQ,CACtBW,EAAKI,gBAAgB,W,CAEvB,GAAIH,EAAQP,EAAMW,OAAS,EAAG,CAC5BL,EAAKE,aAAa,qBAAsB,G,KACnC,CACLF,EAAKI,gBAAgB,qB,KAM3B,MAAAE,GACE,OACEC,EAACC,EAAI,CAAAC,IAAA,2CACHC,MAAO,CACL,aAAc,KACd,CAAC,eAAenB,KAAKH,eAAgB,OAGvCmB,EAAA,OAAAE,IAAA,2CAAKC,MAAM,qBAAqBC,KAAK,YAAYC,KAAK,QACpDL,EAAA,QAAAE,IAAA,8C","ignoreList":[]}
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
import{t as e,p as t,H as s,d as n,h as i,c as a}from"./p-DkpyRqHf.js";import{g as r}from"./p-lpqZSiIf.js";const o=()=>`:host{display:inline-block;position:relative;font-family:var(--ts-font-family-base);--ts-menu-bg:var(--ts-color-bg-elevated);--ts-menu-radius:var(--ts-shape-overlay);--ts-menu-shadow:var(--ts-shadow-lg)}.menu__trigger{display:inline-flex}.menu__panel{position:absolute;z-index:var(--ts-z-tooltip);display:none;flex-direction:column;min-inline-size:10rem;padding-block:var(--ts-spacing-1);background-color:var(--ts-menu-bg);border-radius:var(--ts-menu-radius);box-shadow:var(--ts-menu-shadow);border:1px solid var(--ts-color-border-default);overflow-y:auto;max-block-size:20rem;animation:ts-menu-fade-in 150ms ease-out}.menu__panel--open{display:flex}.menu__panel--bottom-start{inset-block-start:100%;inset-inline-start:0;margin-block-start:var(--ts-spacing-1)}.menu__panel--bottom-end{inset-block-start:100%;inset-inline-end:0;margin-block-start:var(--ts-spacing-1)}.menu__panel--top-start{inset-block-end:100%;inset-inline-start:0;margin-block-end:var(--ts-spacing-1)}.menu__panel--top-end{inset-block-end:100%;inset-inline-end:0;margin-block-end:var(--ts-spacing-1)}@keyframes ts-menu-fade-in{from{opacity:0;transform:translateY(4px)}to{opacity:1;transform:translateY(0)}}`;const l=t(class e extends s{constructor(e){super();if(e!==false){this.__registerHost()}this.__attachShadow();this.tsOpen=n(this,"tsOpen");this.tsClose=n(this,"tsClose")}get hostEl(){return this}menuId=r("ts-menu");triggerEl;open=false;trigger="click";placement="bottom-start";tsOpen;tsClose;focusedIndex=-1;handleOpenChange(e){if(e){this.tsOpen.emit();requestAnimationFrame((()=>{this.focusFirstItem()}))}else{this.focusedIndex=-1;this.tsClose.emit()}}handleDocumentClick(e){if(this.open&&!this.hostEl.contains(e.target)){this.open=false}}handleItemSelect(){this.open=false;this.triggerEl?.focus()}handleKeydown(e){if(!this.open)return;const t=this.getMenuItems();if(t.length===0)return;switch(e.key){case"ArrowDown":{e.preventDefault();this.focusedIndex=(this.focusedIndex+1)%t.length;this.focusItem(t[this.focusedIndex]);break}case"ArrowUp":{e.preventDefault();this.focusedIndex=this.focusedIndex<=0?t.length-1:this.focusedIndex-1;this.focusItem(t[this.focusedIndex]);break}case"Home":{e.preventDefault();this.focusedIndex=0;this.focusItem(t[0]);break}case"End":{e.preventDefault();this.focusedIndex=t.length-1;this.focusItem(t[this.focusedIndex]);break}case"Escape":{e.preventDefault();this.open=false;this.triggerEl?.focus();break}case"Tab":{this.open=false;break}}}getMenuItems(){return Array.from(this.hostEl.querySelectorAll("ts-menu-item:not([disabled])"))}focusItem(e){const t=e;if(typeof t.setFocus==="function"){t.setFocus()}else{e.focus()}}focusFirstItem(){const e=this.getMenuItems();if(e.length>0){this.focusedIndex=0;this.focusItem(e[0])}}handleTriggerClick=()=>{if(this.trigger==="click"){this.open=!this.open}};handleTriggerKeydown=e=>{if(e.key==="ArrowDown"||e.key==="Enter"||e.key===" "){e.preventDefault();this.open=true}};handleMouseEnter=()=>{if(this.trigger==="hover"){this.open=true}};handleMouseLeave=()=>{if(this.trigger==="hover"){this.open=false}};render(){return i(a,{key:"779dbf74095a42f69a4e9c044423cb04ec19cd41",class:{"ts-menu":true,"ts-menu--open":this.open},onMouseEnter:this.handleMouseEnter,onMouseLeave:this.handleMouseLeave},i("div",{key:"6116720d4806a302576a65a88877f70c7be6d6a0",class:"menu__trigger",ref:e=>this.triggerEl=e,onClick:this.handleTriggerClick,onKeyDown:this.handleTriggerKeydown,"aria-haspopup":"true","aria-expanded":this.open?"true":"false","aria-controls":this.menuId},i("slot",{key:"e0dbd29ac0e2eec75047ff0c6c48c1f8d1df0b22",name:"trigger"})),i("div",{key:"8f137fbe94c1793bd670cc473c062b7e60e60f8b",class:{menu__panel:true,"menu__panel--open":this.open,[`menu__panel--${this.placement}`]:true},part:"panel",id:this.menuId,role:"menu","aria-hidden":!this.open?"true":undefined},i("slot",{key:"4d9d31af73853300a50781b82b31764f6d6529b5"})))}static get watchers(){return{open:[{handleOpenChange:0}]}}static get style(){return o()}},[769,"ts-menu",{open:[1540],trigger:[513],placement:[513],focusedIndex:[32]},[[4,"click","handleDocumentClick"],[0,"tsSelect","handleItemSelect"],[0,"keydown","handleKeydown"]],{open:[{handleOpenChange:0}]}]);function c(){if(typeof customElements==="undefined"){return}const t=["ts-menu"];t.forEach((t=>{switch(t){case"ts-menu":if(!customElements.get(e(t))){customElements.define(e(t),l)}break}}))}c();export{l as T,c as d};
|
|
2
|
+
//# sourceMappingURL=p-Cy_Ad-Jy.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":["menuCss","TsMenu","__stencil_proxyCustomElement","HTMLElement","menuId","generateId","triggerEl","open","trigger","placement","tsOpen","tsClose","focusedIndex","handleOpenChange","isOpen","this","emit","requestAnimationFrame","focusFirstItem","handleDocumentClick","event","hostEl","contains","target","handleItemSelect","focus","handleKeydown","items","getMenuItems","length","key","preventDefault","focusItem","Array","from","querySelectorAll","el","item","setFocus","handleTriggerClick","handleTriggerKeydown","handleMouseEnter","handleMouseLeave","render","h","Host","class","onMouseEnter","onMouseLeave","ref","onClick","onKeyDown","name","menu__panel","part","id","role","undefined"],"sources":["src/components/menu/menu.css?tag=ts-menu&encapsulation=shadow","src/components/menu/menu.tsx"],"sourcesContent":["/* ==========================================================================\n ts-menu — Shadow DOM Scoped Styles\n\n Component tokens (Tier 3):\n --ts-menu-bg Menu panel background\n --ts-menu-radius Menu panel border radius\n --ts-menu-shadow Menu panel elevation shadow\n ========================================================================== */\n\n:host {\n display: inline-block;\n position: relative;\n font-family: var(--ts-font-family-base);\n\n --ts-menu-bg: var(--ts-color-bg-elevated);\n --ts-menu-radius: var(--ts-shape-overlay);\n --ts-menu-shadow: var(--ts-shadow-lg);\n}\n\n/* ---- Trigger ---- */\n.menu__trigger {\n display: inline-flex;\n}\n\n/* ---- Panel ---- */\n.menu__panel {\n position: absolute;\n z-index: var(--ts-z-tooltip);\n display: none;\n flex-direction: column;\n min-inline-size: 10rem;\n padding-block: var(--ts-spacing-1);\n background-color: var(--ts-menu-bg);\n border-radius: var(--ts-menu-radius);\n box-shadow: var(--ts-menu-shadow);\n border: 1px solid var(--ts-color-border-default);\n overflow-y: auto;\n max-block-size: 20rem;\n animation: ts-menu-fade-in 150ms ease-out;\n}\n\n.menu__panel--open {\n display: flex;\n}\n\n/* ---- Placement ---- */\n.menu__panel--bottom-start {\n inset-block-start: 100%;\n inset-inline-start: 0;\n margin-block-start: var(--ts-spacing-1);\n}\n\n.menu__panel--bottom-end {\n inset-block-start: 100%;\n inset-inline-end: 0;\n margin-block-start: var(--ts-spacing-1);\n}\n\n.menu__panel--top-start {\n inset-block-end: 100%;\n inset-inline-start: 0;\n margin-block-end: var(--ts-spacing-1);\n}\n\n.menu__panel--top-end {\n inset-block-end: 100%;\n inset-inline-end: 0;\n margin-block-end: var(--ts-spacing-1);\n}\n\n/* ---- Animation ---- */\n@keyframes ts-menu-fade-in {\n from {\n opacity: 0;\n transform: translateY(4px);\n }\n to {\n opacity: 1;\n transform: translateY(0);\n }\n}\n","import { Component, Prop, State, Event, h, Host, Element, Watch, Listen } from '@stencil/core';\nimport type { EventEmitter } from '@stencil/core';\nimport { generateId } from '../../utils/aria';\n\nexport type TsMenuPlacement = 'bottom-start' | 'bottom-end' | 'top-start' | 'top-end';\n\nexport type TsMenuTrigger = 'click' | 'hover';\n\n/**\n * @slot trigger - The element that opens the menu (e.g., a button).\n * @slot - Default slot for ts-menu-item children.\n *\n * @part panel - The dropdown panel container.\n */\n@Component({\n tag: 'ts-menu',\n styleUrl: 'menu.css',\n shadow: true,\n})\nexport class TsMenu {\n @Element() hostEl!: HTMLElement;\n\n private menuId = generateId('ts-menu');\n private triggerEl?: HTMLElement;\n\n /** Whether the menu dropdown is open. */\n @Prop({ mutable: true, reflect: true }) open = false;\n\n /** How the menu is triggered. */\n @Prop({ reflect: true }) trigger: TsMenuTrigger = 'click';\n\n /** Placement of the dropdown relative to the trigger. */\n @Prop({ reflect: true }) placement: TsMenuPlacement = 'bottom-start';\n\n /** Emitted when the menu opens. */\n @Event({ eventName: 'tsOpen' }) tsOpen!: EventEmitter<void>;\n\n /** Emitted when the menu closes. */\n @Event({ eventName: 'tsClose' }) tsClose!: EventEmitter<void>;\n\n /** Tracks the currently focused item index for keyboard navigation. */\n @State() focusedIndex = -1;\n\n @Watch('open')\n handleOpenChange(isOpen: boolean): void {\n if (isOpen) {\n this.tsOpen.emit();\n requestAnimationFrame(() => {\n this.focusFirstItem();\n });\n } else {\n this.focusedIndex = -1;\n this.tsClose.emit();\n }\n }\n\n @Listen('click', { target: 'document' })\n handleDocumentClick(event: MouseEvent): void {\n if (this.open && !this.hostEl.contains(event.target as Node)) {\n this.open = false;\n }\n }\n\n @Listen('tsSelect')\n handleItemSelect(): void {\n this.open = false;\n this.triggerEl?.focus();\n }\n\n @Listen('keydown')\n handleKeydown(event: KeyboardEvent): void {\n if (!this.open) return;\n\n const items = this.getMenuItems();\n if (items.length === 0) return;\n\n switch (event.key) {\n case 'ArrowDown': {\n event.preventDefault();\n this.focusedIndex = (this.focusedIndex + 1) % items.length;\n this.focusItem(items[this.focusedIndex]);\n break;\n }\n case 'ArrowUp': {\n event.preventDefault();\n this.focusedIndex = this.focusedIndex <= 0 ? items.length - 1 : this.focusedIndex - 1;\n this.focusItem(items[this.focusedIndex]);\n break;\n }\n case 'Home': {\n event.preventDefault();\n this.focusedIndex = 0;\n this.focusItem(items[0]);\n break;\n }\n case 'End': {\n event.preventDefault();\n this.focusedIndex = items.length - 1;\n this.focusItem(items[this.focusedIndex]);\n break;\n }\n case 'Escape': {\n event.preventDefault();\n this.open = false;\n this.triggerEl?.focus();\n break;\n }\n case 'Tab': {\n this.open = false;\n break;\n }\n }\n }\n\n private getMenuItems(): HTMLElement[] {\n return Array.from(this.hostEl.querySelectorAll<HTMLElement>('ts-menu-item:not([disabled])'));\n }\n\n private focusItem(el: HTMLElement): void {\n const item = el as HTMLElement & { setFocus?: () => Promise<void> };\n if (typeof item.setFocus === 'function') {\n item.setFocus();\n } else {\n el.focus();\n }\n }\n\n private focusFirstItem(): void {\n const items = this.getMenuItems();\n if (items.length > 0) {\n this.focusedIndex = 0;\n this.focusItem(items[0]);\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 (event.key === 'ArrowDown' || event.key === 'Enter' || event.key === ' ') {\n event.preventDefault();\n this.open = true;\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-menu': true,\n 'ts-menu--open': this.open,\n }}\n onMouseEnter={this.handleMouseEnter}\n onMouseLeave={this.handleMouseLeave}\n >\n <div\n class=\"menu__trigger\"\n ref={(el) => (this.triggerEl = el)}\n onClick={this.handleTriggerClick}\n onKeyDown={this.handleTriggerKeydown}\n aria-haspopup=\"true\"\n aria-expanded={this.open ? 'true' : 'false'}\n aria-controls={this.menuId}\n >\n <slot name=\"trigger\" />\n </div>\n\n <div\n class={{\n 'menu__panel': true,\n 'menu__panel--open': this.open,\n [`menu__panel--${this.placement}`]: true,\n }}\n part=\"panel\"\n id={this.menuId}\n role=\"menu\"\n aria-hidden={!this.open ? 'true' : undefined}\n >\n <slot />\n </div>\n </Host>\n );\n }\n}\n"],"mappings":"2GAAA,MAAMA,EAAU,IAAM,ypC,MCmBTC,EAAMC,EAAA,MAAAD,UAAAE,E,sKAGTC,OAASC,EAAW,WACpBC,UAGgCC,KAAO,MAGtBC,QAAyB,QAGzBC,UAA6B,eAGtBC,OAGCC,QAGxBC,cAAe,EAGxB,gBAAAC,CAAiBC,GACf,GAAIA,EAAQ,CACVC,KAAKL,OAAOM,OACZC,uBAAsB,KACpBF,KAAKG,gBAAgB,G,KAElB,CACLH,KAAKH,cAAe,EACpBG,KAAKJ,QAAQK,M,EAKjB,mBAAAG,CAAoBC,GAClB,GAAIL,KAAKR,OAASQ,KAAKM,OAAOC,SAASF,EAAMG,QAAiB,CAC5DR,KAAKR,KAAO,K,EAKhB,gBAAAiB,GACET,KAAKR,KAAO,MACZQ,KAAKT,WAAWmB,O,CAIlB,aAAAC,CAAcN,GACZ,IAAKL,KAAKR,KAAM,OAEhB,MAAMoB,EAAQZ,KAAKa,eACnB,GAAID,EAAME,SAAW,EAAG,OAExB,OAAQT,EAAMU,KACZ,IAAK,YAAa,CAChBV,EAAMW,iBACNhB,KAAKH,cAAgBG,KAAKH,aAAe,GAAKe,EAAME,OACpDd,KAAKiB,UAAUL,EAAMZ,KAAKH,eAC1B,K,CAEF,IAAK,UAAW,CACdQ,EAAMW,iBACNhB,KAAKH,aAAeG,KAAKH,cAAgB,EAAIe,EAAME,OAAS,EAAId,KAAKH,aAAe,EACpFG,KAAKiB,UAAUL,EAAMZ,KAAKH,eAC1B,K,CAEF,IAAK,OAAQ,CACXQ,EAAMW,iBACNhB,KAAKH,aAAe,EACpBG,KAAKiB,UAAUL,EAAM,IACrB,K,CAEF,IAAK,MAAO,CACVP,EAAMW,iBACNhB,KAAKH,aAAee,EAAME,OAAS,EACnCd,KAAKiB,UAAUL,EAAMZ,KAAKH,eAC1B,K,CAEF,IAAK,SAAU,CACbQ,EAAMW,iBACNhB,KAAKR,KAAO,MACZQ,KAAKT,WAAWmB,QAChB,K,CAEF,IAAK,MAAO,CACVV,KAAKR,KAAO,MACZ,K,GAKE,YAAAqB,GACN,OAAOK,MAAMC,KAAKnB,KAAKM,OAAOc,iBAA8B,gC,CAGtD,SAAAH,CAAUI,GAChB,MAAMC,EAAOD,EACb,UAAWC,EAAKC,WAAa,WAAY,CACvCD,EAAKC,U,KACA,CACLF,EAAGX,O,EAIC,cAAAP,GACN,MAAMS,EAAQZ,KAAKa,eACnB,GAAID,EAAME,OAAS,EAAG,CACpBd,KAAKH,aAAe,EACpBG,KAAKiB,UAAUL,EAAM,G,EAIjBY,mBAAqB,KAC3B,GAAIxB,KAAKP,UAAY,QAAS,CAC5BO,KAAKR,MAAQQ,KAAKR,I,GAIdiC,qBAAwBpB,IAC9B,GAAIA,EAAMU,MAAQ,aAAeV,EAAMU,MAAQ,SAAWV,EAAMU,MAAQ,IAAK,CAC3EV,EAAMW,iBACNhB,KAAKR,KAAO,I,GAIRkC,iBAAmB,KACzB,GAAI1B,KAAKP,UAAY,QAAS,CAC5BO,KAAKR,KAAO,I,GAIRmC,iBAAmB,KACzB,GAAI3B,KAAKP,UAAY,QAAS,CAC5BO,KAAKR,KAAO,K,GAKhB,MAAAoC,GACE,OACEC,EAACC,EAAI,CAAAf,IAAA,2CACHgB,MAAO,CACL,UAAW,KACX,gBAAiB/B,KAAKR,MAExBwC,aAAchC,KAAK0B,iBACnBO,aAAcjC,KAAK2B,kBAEnBE,EAAA,OAAAd,IAAA,2CACEgB,MAAM,gBACNG,IAAMb,GAAQrB,KAAKT,UAAY8B,EAC/Bc,QAASnC,KAAKwB,mBACdY,UAAWpC,KAAKyB,qBAAoB,gBACtB,OAAM,gBACLzB,KAAKR,KAAO,OAAS,QAAO,gBAC5BQ,KAAKX,QAEpBwC,EAAA,QAAAd,IAAA,2CAAMsB,KAAK,aAGbR,EAAA,OAAAd,IAAA,2CACEgB,MAAO,CACLO,YAAe,KACf,oBAAqBtC,KAAKR,KAC1B,CAAC,gBAAgBQ,KAAKN,aAAc,MAEtC6C,KAAK,QACLC,GAAIxC,KAAKX,OACToD,KAAK,OAAM,eACGzC,KAAKR,KAAO,OAASkD,WAEnCb,EAAA,QAAAd,IAAA,8C","ignoreList":[]}
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
import{t as s,p as t,H as e,h as i,c as a}from"./p-DkpyRqHf.js";const c=()=>`:host{display:block}:host([axis="horizontal"]){display:inline-block}`;const n=t(class s extends e{constructor(s){super();if(s!==false){this.__registerHost()}this.__attachShadow()}size="4";axis="vertical";render(){const s=this.axis==="horizontal"?{width:`var(--ts-spacing-${this.size})`,height:"100%"}:{height:`var(--ts-spacing-${this.size})`,width:"100%"};return i(a,{key:"967b57ba1224c79cd338795ec7fb5fe4008f4f5f",style:s})}static get style(){return c()}},[513,"ts-spacer",{size:[513],axis:[513]}]);function r(){if(typeof customElements==="undefined"){return}const t=["ts-spacer"];t.forEach((t=>{switch(t){case"ts-spacer":if(!customElements.get(s(t))){customElements.define(s(t),n)}break}}))}r();export{n as T,r as d};
|
|
2
|
+
//# sourceMappingURL=p-DD986daz.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":["spacerCss","TsSpacer","__stencil_proxyCustomElement","HTMLElement","size","axis","render","style","this","width","height","h","Host","key"],"sources":["src/components/spacer/spacer.css?tag=ts-spacer&encapsulation=shadow","src/components/spacer/spacer.tsx"],"sourcesContent":["/* ==========================================================================\n ts-spacer — Shadow DOM Scoped Styles\n\n An explicit spacing element for vertical or horizontal space.\n ========================================================================== */\n\n:host {\n display: block;\n}\n\n:host([axis=\"horizontal\"]) {\n display: inline-block;\n}\n","import { Component, Prop, h, Host } from '@stencil/core';\n\n/**\n * An explicit spacing element for adding vertical or horizontal space.\n */\n@Component({\n tag: 'ts-spacer',\n styleUrl: 'spacer.css',\n shadow: true,\n})\nexport class TsSpacer {\n /** Spacing token number controlling the size of the spacer. */\n @Prop({ reflect: true }) size: string = '4';\n\n /** The axis along which the spacer adds space. */\n @Prop({ reflect: true }) axis: 'vertical' | 'horizontal' = 'vertical';\n\n // eslint-disable-next-line @typescript-eslint/explicit-function-return-type\n render() {\n const style =\n this.axis === 'horizontal'\n ? { width: `var(--ts-spacing-${this.size})`, height: '100%' }\n : { height: `var(--ts-spacing-${this.size})`, width: '100%' };\n\n return <Host style={style}></Host>;\n }\n}\n"],"mappings":"gEAAA,MAAMA,EAAY,IAAM,uE,MCUXC,EAAQC,EAAA,MAAAD,UAAAE,E,iFAEMC,KAAe,IAGfC,KAAkC,WAG3D,MAAAC,GACE,MAAMC,EACJC,KAAKH,OAAS,aACV,CAAEI,MAAO,oBAAoBD,KAAKJ,QAASM,OAAQ,QACnD,CAAEA,OAAQ,oBAAoBF,KAAKJ,QAASK,MAAO,QAEzD,OAAOE,EAACC,EAAI,CAAAC,IAAA,2CAACN,MAAOA,G","ignoreList":[]}
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
import{t as e,p as t,H as s,h as a,c as n}from"./p-DkpyRqHf.js";const c=()=>`:host{display:block}.tab-panel{outline:none}`;const d=t(class e extends s{constructor(e){super();if(e!==false){this.__registerHost()}this.__attachShadow()}get hostEl(){return this}tab;value;disabled=false;icon;render(){return a(n,{key:"dec8c9d7d1f32e6f5aef0d4bfbde8d62dd91d865"},a("div",{key:"14de5c9f6ff8c8d56733fc53088da96064e6bdc6",class:"tab-panel",part:"panel",role:"tabpanel"},a("slot",{key:"9a715c140d76ef238952f5b399cb1443af399432"})))}static get style(){return c()}},[769,"ts-tab-panel",{tab:[1],value:[513],disabled:[516],icon:[1]}]);function l(){if(typeof customElements==="undefined"){return}const t=["ts-tab-panel"];t.forEach((t=>{switch(t){case"ts-tab-panel":if(!customElements.get(e(t))){customElements.define(e(t),d)}break}}))}l();export{d as T,l as d};
|
|
2
|
+
//# sourceMappingURL=p-DFnNsZtI.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":["tabPanelCss","TsTabPanel","__stencil_proxyCustomElement","HTMLElement","tab","value","disabled","icon","render","h","Host","key","class","part","role"],"sources":["src/components/tabs/tab-panel.css?tag=ts-tab-panel&encapsulation=shadow","src/components/tabs/tab-panel.tsx"],"sourcesContent":["/* ==========================================================================\n ts-tab-panel — Shadow DOM Scoped Styles\n ========================================================================== */\n\n:host {\n display: block;\n}\n\n.tab-panel {\n outline: none;\n}\n","import { Component, Prop, h, Host, Element } from '@stencil/core';\n\n/**\n * @slot - Default slot for panel content.\n *\n * @part panel - The panel container element.\n */\n@Component({\n tag: 'ts-tab-panel',\n styleUrl: 'tab-panel.css',\n shadow: true,\n})\nexport class TsTabPanel {\n @Element() hostEl!: HTMLElement;\n\n /** The label text displayed in the tab button. */\n @Prop() tab!: string;\n\n /** Unique identifier for this tab panel. */\n @Prop({ reflect: true }) value!: string;\n\n /** Whether this tab is disabled. */\n @Prop({ reflect: true }) disabled = false;\n\n /** Optional icon name displayed before the tab label. */\n @Prop() icon?: string;\n\n // eslint-disable-next-line @typescript-eslint/explicit-function-return-type\n render() {\n return (\n <Host>\n <div class=\"tab-panel\" part=\"panel\" role=\"tabpanel\">\n <slot />\n </div>\n </Host>\n );\n }\n}\n"],"mappings":"gEAAA,MAAMA,EAAc,IAAM,+C,MCYbC,EAAUC,EAAA,MAAAD,UAAAE,E,0GAIbC,IAGiBC,MAGAC,SAAW,MAG5BC,KAGR,MAAAC,GACE,OACEC,EAACC,EAAI,CAAAC,IAAA,4CACHF,EAAA,OAAAE,IAAA,2CAAKC,MAAM,YAAYC,KAAK,QAAQC,KAAK,YACvCL,EAAA,QAAAE,IAAA,8C","ignoreList":[]}
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
import{t as e,p as t,H as a,d as i,h as r,c as s}from"./p-DkpyRqHf.js";const o=()=>`:host{display:block;font-family:var(--ts-font-family-base);--ts-file-upload-border-color:var(--ts-color-border-default);--ts-file-upload-bg:var(--ts-color-bg-surface);--ts-file-upload-radius:var(--ts-radius-md)}.file-upload__dropzone{display:flex;align-items:center;justify-content:center;min-block-size:120px;padding:var(--ts-spacing-6);border:2px dashed var(--ts-file-upload-border-color);border-radius:var(--ts-file-upload-radius);background-color:var(--ts-file-upload-bg);cursor:pointer;outline:none;transition:border-color var(--ts-transition-fast), background-color var(--ts-transition-fast), box-shadow var(--ts-transition-fast)}.file-upload__dropzone:hover:not([aria-disabled="true"]){border-color:var(--ts-color-interactive-primary);background-color:var(--ts-color-interactive-primary-subtle, rgba(59, 130, 246, 0.05))}.file-upload__dropzone:focus-visible{box-shadow:var(--ts-focus-ring);border-color:var(--ts-color-interactive-primary)}.file-upload__dropzone--drag-over{border-color:var(--ts-color-interactive-primary);background-color:var(--ts-color-interactive-primary-subtle, rgba(59, 130, 246, 0.1));border-style:solid}:host([disabled]) .file-upload__dropzone{opacity:0.5;cursor:not-allowed;pointer-events:none}.file-upload__label{display:flex;flex-direction:column;align-items:center;gap:var(--ts-spacing-2);font-size:var(--ts-font-size-sm);color:var(--ts-color-text-secondary);text-align:center;pointer-events:none}.file-upload__input{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0, 0, 0, 0);white-space:nowrap;border:0}`;const l=t(class e extends a{constructor(e){super();if(e!==false){this.__registerHost()}this.__attachShadow();this.tsChange=i(this,"tsChange")}get hostEl(){return this}fileInputEl;accept;multiple=false;maxSize;disabled=false;label="Drop files here or click to upload";name;tsChange;isDragOver=false;handleClick=()=>{if(this.disabled)return;this.fileInputEl?.click()};handleKeydown=e=>{if(this.disabled)return;if(e.key==="Enter"||e.key===" "){e.preventDefault();this.fileInputEl?.click()}};handleFileChange=e=>{const t=e.target;if(t.files){const e=this.validateFiles(Array.from(t.files));if(e.length>0){this.tsChange.emit({files:e})}}if(this.fileInputEl){this.fileInputEl.value=""}};handleDragOver=e=>{e.preventDefault();e.stopPropagation();if(!this.disabled){this.isDragOver=true}};handleDragLeave=e=>{e.preventDefault();e.stopPropagation();this.isDragOver=false};handleDrop=e=>{e.preventDefault();e.stopPropagation();this.isDragOver=false;if(this.disabled)return;const t=e.dataTransfer?.files;if(t){const e=this.validateFiles(Array.from(t));if(e.length>0){this.tsChange.emit({files:e})}}};validateFiles(e){let t=e;if(this.accept){const e=this.accept.split(",").map((e=>e.trim().toLowerCase()));t=t.filter((t=>{const a="."+t.name.split(".").pop()?.toLowerCase();const i=t.type.toLowerCase();return e.some((e=>e===a||e===i||e.endsWith("/*")&&i.startsWith(e.replace("/*","/"))))}))}if(this.maxSize){t=t.filter((e=>e.size<=this.maxSize))}if(!this.multiple&&t.length>1){t=[t[0]]}return t}render(){return r(s,{key:"8f52d515a31a1def7761e0a5e9537de64a6c5658",class:{"ts-file-upload":true,"ts-file-upload--drag-over":this.isDragOver,"ts-file-upload--disabled":this.disabled}},r("div",{key:"297acea91c7ad20eab02c5266f197ca0f7fe9c49",class:{"file-upload__dropzone":true,"file-upload__dropzone--drag-over":this.isDragOver},part:"dropzone",role:"button",tabindex:this.disabled?-1:0,"aria-disabled":this.disabled?"true":undefined,"aria-label":this.label,onClick:this.handleClick,onKeyDown:this.handleKeydown,onDragOver:this.handleDragOver,onDragLeave:this.handleDragLeave,onDrop:this.handleDrop},r("span",{key:"ad3d90ac4f39ae38ab6d484c1f4841a0e70e7269",class:"file-upload__label",part:"label"},r("slot",{key:"04a7a2073171d48adb57339477f51d28f0379612"},this.label)),r("input",{key:"93051be2348247796ffd11d02723b400c969054e",ref:e=>this.fileInputEl=e,class:"file-upload__input",part:"input",type:"file",name:this.name,accept:this.accept,multiple:this.multiple,disabled:this.disabled,tabindex:-1,"aria-hidden":"true",onChange:this.handleFileChange})))}static get style(){return o()}},[769,"ts-file-upload",{accept:[1],multiple:[4],maxSize:[2,"max-size"],disabled:[516],label:[1],name:[1],isDragOver:[32]}]);function n(){if(typeof customElements==="undefined"){return}const t=["ts-file-upload"];t.forEach((t=>{switch(t){case"ts-file-upload":if(!customElements.get(e(t))){customElements.define(e(t),l)}break}}))}n();export{l as T,n as d};
|
|
2
|
+
//# sourceMappingURL=p-DMPxu5Po.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":["fileUploadCss","TsFileUpload","__stencil_proxyCustomElement","HTMLElement","fileInputEl","accept","multiple","maxSize","disabled","label","name","tsChange","isDragOver","handleClick","this","click","handleKeydown","event","key","preventDefault","handleFileChange","input","target","files","validateFiles","Array","from","length","emit","value","handleDragOver","stopPropagation","handleDragLeave","handleDrop","droppedFiles","dataTransfer","validFiles","acceptedTypes","split","map","t","trim","toLowerCase","filter","file","ext","pop","mime","type","some","accepted","endsWith","startsWith","replace","size","render","h","Host","class","part","role","tabindex","undefined","onClick","onKeyDown","onDragOver","onDragLeave","onDrop","ref","el","onChange"],"sources":["src/components/file-upload/file-upload.css?tag=ts-file-upload&encapsulation=shadow","src/components/file-upload/file-upload.tsx"],"sourcesContent":["/* ==========================================================================\n ts-file-upload — Shadow DOM Scoped Styles\n\n Component tokens (Tier 3):\n --ts-file-upload-border-color Dropzone border color\n --ts-file-upload-bg Dropzone background\n --ts-file-upload-radius Dropzone border radius\n ========================================================================== */\n\n:host {\n display: block;\n font-family: var(--ts-font-family-base);\n\n --ts-file-upload-border-color: var(--ts-color-border-default);\n --ts-file-upload-bg: var(--ts-color-bg-surface);\n --ts-file-upload-radius: var(--ts-radius-md);\n}\n\n/* ---- Dropzone ---- */\n.file-upload__dropzone {\n display: flex;\n align-items: center;\n justify-content: center;\n min-block-size: 120px;\n padding: var(--ts-spacing-6);\n border: 2px dashed var(--ts-file-upload-border-color);\n border-radius: var(--ts-file-upload-radius);\n background-color: var(--ts-file-upload-bg);\n cursor: pointer;\n outline: none;\n transition:\n border-color var(--ts-transition-fast),\n background-color var(--ts-transition-fast),\n box-shadow var(--ts-transition-fast);\n}\n\n.file-upload__dropzone:hover:not([aria-disabled=\"true\"]) {\n border-color: var(--ts-color-interactive-primary);\n background-color: var(--ts-color-interactive-primary-subtle, rgba(59, 130, 246, 0.05));\n}\n\n.file-upload__dropzone:focus-visible {\n box-shadow: var(--ts-focus-ring);\n border-color: var(--ts-color-interactive-primary);\n}\n\n/* ---- Drag over state ---- */\n.file-upload__dropzone--drag-over {\n border-color: var(--ts-color-interactive-primary);\n background-color: var(--ts-color-interactive-primary-subtle, rgba(59, 130, 246, 0.1));\n border-style: solid;\n}\n\n/* ---- Disabled ---- */\n:host([disabled]) .file-upload__dropzone {\n opacity: 0.5;\n cursor: not-allowed;\n pointer-events: none;\n}\n\n/* ---- Label ---- */\n.file-upload__label {\n display: flex;\n flex-direction: column;\n align-items: center;\n gap: var(--ts-spacing-2);\n font-size: var(--ts-font-size-sm);\n color: var(--ts-color-text-secondary);\n text-align: center;\n pointer-events: none;\n}\n\n/* ---- Hidden file input ---- */\n.file-upload__input {\n position: absolute;\n width: 1px;\n height: 1px;\n padding: 0;\n margin: -1px;\n overflow: hidden;\n clip: rect(0, 0, 0, 0);\n white-space: nowrap;\n border: 0;\n}\n","import { Component, Prop, State, Event, h, Host, Element } from '@stencil/core';\nimport type { EventEmitter } from '@stencil/core';\n\n/**\n * @slot - Default slot for custom dropzone content.\n *\n * @part dropzone - The dropzone area.\n * @part label - The label text.\n * @part input - The hidden file input.\n */\n@Component({\n tag: 'ts-file-upload',\n styleUrl: 'file-upload.css',\n shadow: true,\n})\nexport class TsFileUpload {\n @Element() hostEl!: HTMLElement;\n\n private fileInputEl?: HTMLInputElement;\n\n /** Accepted file types (e.g. '.jpg,.png'). */\n @Prop() accept?: string;\n\n /** Whether multiple files can be selected. */\n @Prop() multiple = false;\n\n /** Maximum file size in bytes. */\n @Prop() maxSize?: number;\n\n /** Whether the file upload is disabled. */\n @Prop({ reflect: true }) disabled = false;\n\n /** Label text for the dropzone. */\n @Prop() label = 'Drop files here or click to upload';\n\n /** Form field name. */\n @Prop() name?: string;\n\n /** Emitted when files are selected or dropped. */\n @Event({ eventName: 'tsChange' }) tsChange!: EventEmitter<{ files: File[] }>;\n\n /** Whether a drag operation is over the dropzone. */\n @State() isDragOver = false;\n\n private handleClick = (): void => {\n if (this.disabled) return;\n this.fileInputEl?.click();\n };\n\n private handleKeydown = (event: KeyboardEvent): void => {\n if (this.disabled) return;\n if (event.key === 'Enter' || event.key === ' ') {\n event.preventDefault();\n this.fileInputEl?.click();\n }\n };\n\n private handleFileChange = (event: Event): void => {\n const input = event.target as HTMLInputElement;\n if (input.files) {\n const files = this.validateFiles(Array.from(input.files));\n if (files.length > 0) {\n this.tsChange.emit({ files });\n }\n }\n // Reset input so the same file can be selected again\n if (this.fileInputEl) {\n this.fileInputEl.value = '';\n }\n };\n\n private handleDragOver = (event: DragEvent): void => {\n event.preventDefault();\n event.stopPropagation();\n if (!this.disabled) {\n this.isDragOver = true;\n }\n };\n\n private handleDragLeave = (event: DragEvent): void => {\n event.preventDefault();\n event.stopPropagation();\n this.isDragOver = false;\n };\n\n private handleDrop = (event: DragEvent): void => {\n event.preventDefault();\n event.stopPropagation();\n this.isDragOver = false;\n\n if (this.disabled) return;\n\n const droppedFiles = event.dataTransfer?.files;\n if (droppedFiles) {\n const files = this.validateFiles(Array.from(droppedFiles));\n if (files.length > 0) {\n this.tsChange.emit({ files });\n }\n }\n };\n\n private validateFiles(files: File[]): File[] {\n let validFiles = files;\n\n // Filter by accepted types\n if (this.accept) {\n const acceptedTypes = this.accept.split(',').map((t) => t.trim().toLowerCase());\n validFiles = validFiles.filter((file) => {\n const ext = '.' + file.name.split('.').pop()?.toLowerCase();\n const mime = file.type.toLowerCase();\n return acceptedTypes.some(\n (accepted) =>\n accepted === ext ||\n accepted === mime ||\n (accepted.endsWith('/*') && mime.startsWith(accepted.replace('/*', '/'))),\n );\n });\n }\n\n // Filter by max size\n if (this.maxSize) {\n validFiles = validFiles.filter((file) => file.size <= this.maxSize!);\n }\n\n // If not multiple, take only the first\n if (!this.multiple && validFiles.length > 1) {\n validFiles = [validFiles[0]];\n }\n\n return validFiles;\n }\n\n // eslint-disable-next-line @typescript-eslint/explicit-function-return-type\n render() {\n return (\n <Host\n class={{\n 'ts-file-upload': true,\n 'ts-file-upload--drag-over': this.isDragOver,\n 'ts-file-upload--disabled': this.disabled,\n }}\n >\n <div\n class={{\n 'file-upload__dropzone': true,\n 'file-upload__dropzone--drag-over': this.isDragOver,\n }}\n part=\"dropzone\"\n role=\"button\"\n tabindex={this.disabled ? -1 : 0}\n aria-disabled={this.disabled ? 'true' : undefined}\n aria-label={this.label}\n onClick={this.handleClick}\n onKeyDown={this.handleKeydown}\n onDragOver={this.handleDragOver}\n onDragLeave={this.handleDragLeave}\n onDrop={this.handleDrop}\n >\n <span class=\"file-upload__label\" part=\"label\">\n <slot>{this.label}</slot>\n </span>\n\n <input\n ref={(el) => (this.fileInputEl = el)}\n class=\"file-upload__input\"\n part=\"input\"\n type=\"file\"\n name={this.name}\n accept={this.accept}\n multiple={this.multiple}\n disabled={this.disabled}\n tabindex={-1}\n aria-hidden=\"true\"\n onChange={this.handleFileChange}\n />\n </div>\n </Host>\n );\n }\n}\n"],"mappings":"uEAAA,MAAMA,EAAgB,IAAM,qjD,MCefC,EAAYC,EAAA,MAAAD,UAAAE,E,2IAGfC,YAGAC,OAGAC,SAAW,MAGXC,QAGiBC,SAAW,MAG5BC,MAAQ,qCAGRC,KAG0BC,SAGzBC,WAAa,MAEdC,YAAc,KACpB,GAAIC,KAAKN,SAAU,OACnBM,KAAKV,aAAaW,OAAO,EAGnBC,cAAiBC,IACvB,GAAIH,KAAKN,SAAU,OACnB,GAAIS,EAAMC,MAAQ,SAAWD,EAAMC,MAAQ,IAAK,CAC9CD,EAAME,iBACNL,KAAKV,aAAaW,O,GAIdK,iBAAoBH,IAC1B,MAAMI,EAAQJ,EAAMK,OACpB,GAAID,EAAME,MAAO,CACf,MAAMA,EAAQT,KAAKU,cAAcC,MAAMC,KAAKL,EAAME,QAClD,GAAIA,EAAMI,OAAS,EAAG,CACpBb,KAAKH,SAASiB,KAAK,CAAEL,S,EAIzB,GAAIT,KAAKV,YAAa,CACpBU,KAAKV,YAAYyB,MAAQ,E,GAIrBC,eAAkBb,IACxBA,EAAME,iBACNF,EAAMc,kBACN,IAAKjB,KAAKN,SAAU,CAClBM,KAAKF,WAAa,I,GAIdoB,gBAAmBf,IACzBA,EAAME,iBACNF,EAAMc,kBACNjB,KAAKF,WAAa,KAAK,EAGjBqB,WAAchB,IACpBA,EAAME,iBACNF,EAAMc,kBACNjB,KAAKF,WAAa,MAElB,GAAIE,KAAKN,SAAU,OAEnB,MAAM0B,EAAejB,EAAMkB,cAAcZ,MACzC,GAAIW,EAAc,CAChB,MAAMX,EAAQT,KAAKU,cAAcC,MAAMC,KAAKQ,IAC5C,GAAIX,EAAMI,OAAS,EAAG,CACpBb,KAAKH,SAASiB,KAAK,CAAEL,S,IAKnB,aAAAC,CAAcD,GACpB,IAAIa,EAAab,EAGjB,GAAIT,KAAKT,OAAQ,CACf,MAAMgC,EAAgBvB,KAAKT,OAAOiC,MAAM,KAAKC,KAAKC,GAAMA,EAAEC,OAAOC,gBACjEN,EAAaA,EAAWO,QAAQC,IAC9B,MAAMC,EAAM,IAAMD,EAAKlC,KAAK4B,MAAM,KAAKQ,OAAOJ,cAC9C,MAAMK,EAAOH,EAAKI,KAAKN,cACvB,OAAOL,EAAcY,MAClBC,GACCA,IAAaL,GACbK,IAAaH,GACZG,EAASC,SAAS,OAASJ,EAAKK,WAAWF,EAASG,QAAQ,KAAM,OACtE,G,CAKL,GAAIvC,KAAKP,QAAS,CAChB6B,EAAaA,EAAWO,QAAQC,GAASA,EAAKU,MAAQxC,KAAKP,S,CAI7D,IAAKO,KAAKR,UAAY8B,EAAWT,OAAS,EAAG,CAC3CS,EAAa,CAACA,EAAW,G,CAG3B,OAAOA,C,CAIT,MAAAmB,GACE,OACEC,EAACC,EAAI,CAAAvC,IAAA,2CACHwC,MAAO,CACL,iBAAkB,KAClB,4BAA6B5C,KAAKF,WAClC,2BAA4BE,KAAKN,WAGnCgD,EAAA,OAAAtC,IAAA,2CACEwC,MAAO,CACL,wBAAyB,KACzB,mCAAoC5C,KAAKF,YAE3C+C,KAAK,WACLC,KAAK,SACLC,SAAU/C,KAAKN,UAAW,EAAK,EAAC,gBACjBM,KAAKN,SAAW,OAASsD,UAAS,aACrChD,KAAKL,MACjBsD,QAASjD,KAAKD,YACdmD,UAAWlD,KAAKE,cAChBiD,WAAYnD,KAAKgB,eACjBoC,YAAapD,KAAKkB,gBAClBmC,OAAQrD,KAAKmB,YAEbuB,EAAA,QAAAtC,IAAA,2CAAMwC,MAAM,qBAAqBC,KAAK,SACpCH,EAAA,QAAAtC,IAAA,4CAAOJ,KAAKL,QAGd+C,EAAA,SAAAtC,IAAA,2CACEkD,IAAMC,GAAQvD,KAAKV,YAAciE,EACjCX,MAAM,qBACNC,KAAK,QACLX,KAAK,OACLtC,KAAMI,KAAKJ,KACXL,OAAQS,KAAKT,OACbC,SAAUQ,KAAKR,SACfE,SAAUM,KAAKN,SACfqD,UAAU,EAAE,cACA,OACZS,SAAUxD,KAAKM,oB","ignoreList":[]}
|