@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,30 @@
|
|
|
1
|
+
import { r as registerInstance, h, H as Host } from './index-V8-ENixA.js';
|
|
2
|
+
|
|
3
|
+
const emptyStateCss = () => `: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}`;
|
|
4
|
+
|
|
5
|
+
const TsEmptyState = class {
|
|
6
|
+
constructor(hostRef) {
|
|
7
|
+
registerInstance(this, hostRef);
|
|
8
|
+
}
|
|
9
|
+
/** The heading text. */
|
|
10
|
+
heading;
|
|
11
|
+
/** The description text. */
|
|
12
|
+
description;
|
|
13
|
+
/** Lucide icon name displayed large. */
|
|
14
|
+
icon;
|
|
15
|
+
/** The size of the empty state. */
|
|
16
|
+
size = 'md';
|
|
17
|
+
// eslint-disable-next-line @typescript-eslint/explicit-function-return-type
|
|
18
|
+
render() {
|
|
19
|
+
return (h(Host, { key: '517bcb74b651797e31e8b631c88e6805493e85fc', class: {
|
|
20
|
+
'ts-empty-state': true,
|
|
21
|
+
[`ts-empty-state--${this.size}`]: true,
|
|
22
|
+
} }, h("div", { key: '738a7d08d1657b83672a53d1dd8d07f174176739', class: "empty-state__base", part: "base" }, h("div", { key: 'bbc92546c5172180e64f817a8a0bd5c766d12869', class: "empty-state__icon", part: "icon" }, h("slot", { key: '46be0b9827a41af2d05647dcc56ac19c5484a364', name: "icon" }, this.icon && h("ts-icon", { key: '14720f6e52094f08a79b067d228a35ff3d94ce66', name: this.icon }))), this.heading && (h("h3", { key: '88a6cad61c93cc07b274ea7f8bf4e0b4cb0eee57', class: "empty-state__heading", part: "heading" }, this.heading)), this.description && (h("p", { key: 'a59a3db32e57a06c95174708cbd935288de9d3ae', class: "empty-state__description", part: "description" }, this.description)), h("div", { key: '183fb5fbc08a0bf80fe1dd14c31bc5c55ba14fb7', class: "empty-state__content", part: "content" }, h("slot", { key: 'e51960738181881636c7cb8a6c31d72d6213a026' })), h("div", { key: '5cb324a51b4a210952eba2e556a64f9bc39d8383', class: "empty-state__action", part: "action" }, h("slot", { key: '173a07dc3546f213e3f5a3ed67d6ed94c3e34386', name: "action" })))));
|
|
23
|
+
}
|
|
24
|
+
};
|
|
25
|
+
TsEmptyState.style = emptyStateCss();
|
|
26
|
+
|
|
27
|
+
export { TsEmptyState as ts_empty_state };
|
|
28
|
+
//# sourceMappingURL=ts-empty-state.entry.js.map
|
|
29
|
+
|
|
30
|
+
//# sourceMappingURL=ts-empty-state.entry.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ts-empty-state.entry.js","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"],"names":[],"mappings":";;AAAA,MAAM,aAAa,GAAG,MAAM,CAAC,2yDAA2yD,CAAC;;MCoB5zD,YAAY,GAAA,MAAA;;;;;AAEf,IAAA,OAAO;;AAGP,IAAA,WAAW;;AAGX,IAAA,IAAI;;IAGa,IAAI,GAAW,IAAI;;IAG5C,MAAM,GAAA;QACJ,QACE,CAAA,CAAC,IAAI,EAAA,EAAA,GAAA,EAAA,0CAAA,EACH,KAAK,EAAE;AACL,gBAAA,gBAAgB,EAAE,IAAI;AACtB,gBAAA,CAAC,mBAAmB,IAAI,CAAC,IAAI,CAAA,CAAE,GAAG,IAAI;aACvC,EAAA,EAED,CAAA,CAAA,KAAA,EAAA,EAAA,GAAA,EAAA,0CAAA,EAAK,KAAK,EAAC,mBAAmB,EAAC,IAAI,EAAC,MAAM,EAAA,EACxC,CAAA,CAAA,KAAA,EAAA,EAAA,GAAA,EAAA,0CAAA,EAAK,KAAK,EAAC,mBAAmB,EAAC,IAAI,EAAC,MAAM,EAAA,EACxC,CAAA,CAAA,MAAA,EAAA,EAAA,GAAA,EAAA,0CAAA,EAAM,IAAI,EAAC,MAAM,EAAA,EACd,IAAI,CAAC,IAAI,IAAI,CAAA,CAAA,SAAA,EAAA,EAAA,GAAA,EAAA,0CAAA,EAAS,IAAI,EAAE,IAAI,CAAC,IAAI,EAAA,CAAI,CACrC,CACH,EAEL,IAAI,CAAC,OAAO,KACX,CAAA,CAAA,IAAA,EAAA,EAAA,GAAA,EAAA,0CAAA,EAAI,KAAK,EAAC,sBAAsB,EAAC,IAAI,EAAC,SAAS,EAAA,EAC5C,IAAI,CAAC,OAAO,CACV,CACN,EAEA,IAAI,CAAC,WAAW,KACf,CAAA,CAAA,GAAA,EAAA,EAAA,GAAA,EAAA,0CAAA,EAAG,KAAK,EAAC,0BAA0B,EAAC,IAAI,EAAC,aAAa,EAAA,EACnD,IAAI,CAAC,WAAW,CACf,CACL,EAED,CAAA,CAAA,KAAA,EAAA,EAAA,GAAA,EAAA,0CAAA,EAAK,KAAK,EAAC,sBAAsB,EAAC,IAAI,EAAC,SAAS,EAAA,EAC9C,CAAA,CAAA,MAAA,EAAA,EAAA,GAAA,EAAA,0CAAA,EAAA,CAAQ,CACJ,EAEN,CAAA,CAAA,KAAA,EAAA,EAAA,GAAA,EAAA,0CAAA,EAAK,KAAK,EAAC,qBAAqB,EAAC,IAAI,EAAC,QAAQ,EAAA,EAC5C,CAAA,CAAA,MAAA,EAAA,EAAA,GAAA,EAAA,0CAAA,EAAM,IAAI,EAAC,QAAQ,EAAA,CAAG,CAClB,CACF,CACD;;;;;;;"}
|
|
@@ -0,0 +1,120 @@
|
|
|
1
|
+
import { r as registerInstance, c as createEvent, a as getElement, h, H as Host } from './index-V8-ENixA.js';
|
|
2
|
+
|
|
3
|
+
const fileUploadCss = () => `: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}`;
|
|
4
|
+
|
|
5
|
+
const TsFileUpload = class {
|
|
6
|
+
constructor(hostRef) {
|
|
7
|
+
registerInstance(this, hostRef);
|
|
8
|
+
this.tsChange = createEvent(this, "tsChange");
|
|
9
|
+
}
|
|
10
|
+
get hostEl() { return getElement(this); }
|
|
11
|
+
fileInputEl;
|
|
12
|
+
/** Accepted file types (e.g. '.jpg,.png'). */
|
|
13
|
+
accept;
|
|
14
|
+
/** Whether multiple files can be selected. */
|
|
15
|
+
multiple = false;
|
|
16
|
+
/** Maximum file size in bytes. */
|
|
17
|
+
maxSize;
|
|
18
|
+
/** Whether the file upload is disabled. */
|
|
19
|
+
disabled = false;
|
|
20
|
+
/** Label text for the dropzone. */
|
|
21
|
+
label = 'Drop files here or click to upload';
|
|
22
|
+
/** Form field name. */
|
|
23
|
+
name;
|
|
24
|
+
/** Emitted when files are selected or dropped. */
|
|
25
|
+
tsChange;
|
|
26
|
+
/** Whether a drag operation is over the dropzone. */
|
|
27
|
+
isDragOver = false;
|
|
28
|
+
handleClick = () => {
|
|
29
|
+
if (this.disabled)
|
|
30
|
+
return;
|
|
31
|
+
this.fileInputEl?.click();
|
|
32
|
+
};
|
|
33
|
+
handleKeydown = (event) => {
|
|
34
|
+
if (this.disabled)
|
|
35
|
+
return;
|
|
36
|
+
if (event.key === 'Enter' || event.key === ' ') {
|
|
37
|
+
event.preventDefault();
|
|
38
|
+
this.fileInputEl?.click();
|
|
39
|
+
}
|
|
40
|
+
};
|
|
41
|
+
handleFileChange = (event) => {
|
|
42
|
+
const input = event.target;
|
|
43
|
+
if (input.files) {
|
|
44
|
+
const files = this.validateFiles(Array.from(input.files));
|
|
45
|
+
if (files.length > 0) {
|
|
46
|
+
this.tsChange.emit({ files });
|
|
47
|
+
}
|
|
48
|
+
}
|
|
49
|
+
// Reset input so the same file can be selected again
|
|
50
|
+
if (this.fileInputEl) {
|
|
51
|
+
this.fileInputEl.value = '';
|
|
52
|
+
}
|
|
53
|
+
};
|
|
54
|
+
handleDragOver = (event) => {
|
|
55
|
+
event.preventDefault();
|
|
56
|
+
event.stopPropagation();
|
|
57
|
+
if (!this.disabled) {
|
|
58
|
+
this.isDragOver = true;
|
|
59
|
+
}
|
|
60
|
+
};
|
|
61
|
+
handleDragLeave = (event) => {
|
|
62
|
+
event.preventDefault();
|
|
63
|
+
event.stopPropagation();
|
|
64
|
+
this.isDragOver = false;
|
|
65
|
+
};
|
|
66
|
+
handleDrop = (event) => {
|
|
67
|
+
event.preventDefault();
|
|
68
|
+
event.stopPropagation();
|
|
69
|
+
this.isDragOver = false;
|
|
70
|
+
if (this.disabled)
|
|
71
|
+
return;
|
|
72
|
+
const droppedFiles = event.dataTransfer?.files;
|
|
73
|
+
if (droppedFiles) {
|
|
74
|
+
const files = this.validateFiles(Array.from(droppedFiles));
|
|
75
|
+
if (files.length > 0) {
|
|
76
|
+
this.tsChange.emit({ files });
|
|
77
|
+
}
|
|
78
|
+
}
|
|
79
|
+
};
|
|
80
|
+
validateFiles(files) {
|
|
81
|
+
let validFiles = files;
|
|
82
|
+
// Filter by accepted types
|
|
83
|
+
if (this.accept) {
|
|
84
|
+
const acceptedTypes = this.accept.split(',').map((t) => t.trim().toLowerCase());
|
|
85
|
+
validFiles = validFiles.filter((file) => {
|
|
86
|
+
const ext = '.' + file.name.split('.').pop()?.toLowerCase();
|
|
87
|
+
const mime = file.type.toLowerCase();
|
|
88
|
+
return acceptedTypes.some((accepted) => accepted === ext ||
|
|
89
|
+
accepted === mime ||
|
|
90
|
+
(accepted.endsWith('/*') && mime.startsWith(accepted.replace('/*', '/'))));
|
|
91
|
+
});
|
|
92
|
+
}
|
|
93
|
+
// Filter by max size
|
|
94
|
+
if (this.maxSize) {
|
|
95
|
+
validFiles = validFiles.filter((file) => file.size <= this.maxSize);
|
|
96
|
+
}
|
|
97
|
+
// If not multiple, take only the first
|
|
98
|
+
if (!this.multiple && validFiles.length > 1) {
|
|
99
|
+
validFiles = [validFiles[0]];
|
|
100
|
+
}
|
|
101
|
+
return validFiles;
|
|
102
|
+
}
|
|
103
|
+
// eslint-disable-next-line @typescript-eslint/explicit-function-return-type
|
|
104
|
+
render() {
|
|
105
|
+
return (h(Host, { key: '8f52d515a31a1def7761e0a5e9537de64a6c5658', class: {
|
|
106
|
+
'ts-file-upload': true,
|
|
107
|
+
'ts-file-upload--drag-over': this.isDragOver,
|
|
108
|
+
'ts-file-upload--disabled': this.disabled,
|
|
109
|
+
} }, h("div", { key: '297acea91c7ad20eab02c5266f197ca0f7fe9c49', class: {
|
|
110
|
+
'file-upload__dropzone': true,
|
|
111
|
+
'file-upload__dropzone--drag-over': this.isDragOver,
|
|
112
|
+
}, 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 }, h("span", { key: 'ad3d90ac4f39ae38ab6d484c1f4841a0e70e7269', class: "file-upload__label", part: "label" }, h("slot", { key: '04a7a2073171d48adb57339477f51d28f0379612' }, this.label)), h("input", { key: '93051be2348247796ffd11d02723b400c969054e', ref: (el) => (this.fileInputEl = el), 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 }))));
|
|
113
|
+
}
|
|
114
|
+
};
|
|
115
|
+
TsFileUpload.style = fileUploadCss();
|
|
116
|
+
|
|
117
|
+
export { TsFileUpload as ts_file_upload };
|
|
118
|
+
//# sourceMappingURL=ts-file-upload.entry.js.map
|
|
119
|
+
|
|
120
|
+
//# sourceMappingURL=ts-file-upload.entry.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ts-file-upload.entry.js","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"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
import { r as registerInstance, h, H as Host } from './index-V8-ENixA.js';
|
|
2
|
+
|
|
3
|
+
const gridCss = () => `:host{display:grid;width:100%;box-sizing:border-box}`;
|
|
4
|
+
|
|
5
|
+
const TsGrid = class {
|
|
6
|
+
constructor(hostRef) {
|
|
7
|
+
registerInstance(this, hostRef);
|
|
8
|
+
}
|
|
9
|
+
/** Number of columns or 'auto' for responsive auto-fill. */
|
|
10
|
+
columns = 'auto';
|
|
11
|
+
/** Spacing token number for gap between items. */
|
|
12
|
+
gap = '4';
|
|
13
|
+
/** Minimum column width when columns is 'auto'. */
|
|
14
|
+
minColumnWidth = '280px';
|
|
15
|
+
/** Vertical alignment of grid items. */
|
|
16
|
+
align = 'stretch';
|
|
17
|
+
// eslint-disable-next-line @typescript-eslint/explicit-function-return-type
|
|
18
|
+
render() {
|
|
19
|
+
const gridTemplateColumns = this.columns === 'auto'
|
|
20
|
+
? `repeat(auto-fill, minmax(${this.minColumnWidth}, 1fr))`
|
|
21
|
+
: `repeat(${this.columns}, 1fr)`;
|
|
22
|
+
const style = {
|
|
23
|
+
gridTemplateColumns,
|
|
24
|
+
gap: `var(--ts-spacing-${this.gap})`,
|
|
25
|
+
alignItems: this.align,
|
|
26
|
+
};
|
|
27
|
+
return (h(Host, { key: 'f2d1238a19d2235c676d1fd08f045b18dc3b40fa', style: style }, h("slot", { key: '3c454fc9910bcf8960b4a2833f82e91eb6d5be03' })));
|
|
28
|
+
}
|
|
29
|
+
};
|
|
30
|
+
TsGrid.style = gridCss();
|
|
31
|
+
|
|
32
|
+
export { TsGrid as ts_grid };
|
|
33
|
+
//# sourceMappingURL=ts-grid.entry.js.map
|
|
34
|
+
|
|
35
|
+
//# sourceMappingURL=ts-grid.entry.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ts-grid.entry.js","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"],"names":[],"mappings":";;AAAA,MAAM,OAAO,GAAG,MAAM,CAAC,oDAAoD,CAAC;;MCY/D,MAAM,GAAA,MAAA;;;;;IAEQ,OAAO,GAAW,MAAM;;IAGxB,GAAG,GAAW,GAAG;;IAGjB,cAAc,GAAW,OAAO;;IAGhC,KAAK,GAA2C,SAAS;;IAGlF,MAAM,GAAA;AACJ,QAAA,MAAM,mBAAmB,GACvB,IAAI,CAAC,OAAO,KAAK;AACf,cAAE,CAAA,yBAAA,EAA4B,IAAI,CAAC,cAAc,CAAA,OAAA;AACjD,cAAE,CAAA,OAAA,EAAU,IAAI,CAAC,OAAO,QAAQ;AAEpC,QAAA,MAAM,KAAK,GAAG;YACZ,mBAAmB;AACnB,YAAA,GAAG,EAAE,CAAA,iBAAA,EAAoB,IAAI,CAAC,GAAG,CAAA,CAAA,CAAG;YACpC,UAAU,EAAE,IAAI,CAAC,KAAK;SACvB;QAED,QACE,CAAA,CAAC,IAAI,EAAA,EAAA,GAAA,EAAA,0CAAA,EAAC,KAAK,EAAE,KAAK,EAAA,EAChB,CAAA,CAAA,MAAA,EAAA,EAAA,GAAA,EAAA,0CAAA,EAAA,CAAQ,CACH;;;;;;;"}
|
|
@@ -0,0 +1,155 @@
|
|
|
1
|
+
import { r as registerInstance, a as getElement, h, H as Host } from './index-V8-ENixA.js';
|
|
2
|
+
|
|
3
|
+
/**
|
|
4
|
+
* Icon Registry
|
|
5
|
+
*
|
|
6
|
+
* A global registry for SVG icon strings. Components look up icons by name
|
|
7
|
+
* from this registry. Works with any icon library — register SVG strings
|
|
8
|
+
* directly or use the Lucide helper (`registerLucideIcons`).
|
|
9
|
+
*/
|
|
10
|
+
const registry = new Map();
|
|
11
|
+
/**
|
|
12
|
+
* Register multiple icons at once.
|
|
13
|
+
* @param icons - A map of icon name to SVG string.
|
|
14
|
+
*/
|
|
15
|
+
function registerIcons(icons) {
|
|
16
|
+
for (const [name, svg] of Object.entries(icons)) {
|
|
17
|
+
registry.set(name, svg);
|
|
18
|
+
}
|
|
19
|
+
}
|
|
20
|
+
/**
|
|
21
|
+
* Register a single icon.
|
|
22
|
+
* @param name - The icon name used in `<ts-icon name="...">`.
|
|
23
|
+
* @param svg - The full SVG markup string.
|
|
24
|
+
*/
|
|
25
|
+
function registerIcon(name, svg) {
|
|
26
|
+
registry.set(name, svg);
|
|
27
|
+
}
|
|
28
|
+
/**
|
|
29
|
+
* Retrieve an icon's SVG string by name.
|
|
30
|
+
* @returns The SVG string, or `undefined` if the icon is not registered.
|
|
31
|
+
*/
|
|
32
|
+
function getIcon(name) {
|
|
33
|
+
return registry.get(name);
|
|
34
|
+
}
|
|
35
|
+
/**
|
|
36
|
+
* List all registered icon names.
|
|
37
|
+
*/
|
|
38
|
+
function getRegisteredIconNames() {
|
|
39
|
+
return Array.from(registry.keys());
|
|
40
|
+
}
|
|
41
|
+
|
|
42
|
+
const iconCss = () => `:host{display:inline-flex;align-items:center;justify-content:center;vertical-align:middle;--ts-icon-size:1em;--ts-icon-color:currentColor;width:var(--ts-icon-size);height:var(--ts-icon-size);color:var(--ts-icon-color);line-height:0}:host([size="xs"]){--ts-icon-size:12px}:host([size="sm"]){--ts-icon-size:14px}:host([size="md"]){--ts-icon-size:16px}:host([size="lg"]){--ts-icon-size:18px}:host([size="xl"]){--ts-icon-size:20px}::slotted(svg){width:100%;height:100%;fill:currentColor}span{display:contents}span>svg{width:100%;height:100%;fill:none;stroke:currentColor}img{width:100%;height:100%}`;
|
|
43
|
+
|
|
44
|
+
/** Cached reference to the Lucide icons map — loaded lazily on first use. */
|
|
45
|
+
let lucideCache = null;
|
|
46
|
+
/**
|
|
47
|
+
* Converts a PascalCase or kebab-case icon name to the PascalCase key used by Lucide.
|
|
48
|
+
* e.g. "search" → "Search", "arrow-left" → "ArrowLeft"
|
|
49
|
+
*/
|
|
50
|
+
function toLucideKey(name) {
|
|
51
|
+
return name
|
|
52
|
+
.split('-')
|
|
53
|
+
.map((part) => part.charAt(0).toUpperCase() + part.slice(1))
|
|
54
|
+
.join('');
|
|
55
|
+
}
|
|
56
|
+
/**
|
|
57
|
+
* Renders a Lucide icon node array to an SVG string.
|
|
58
|
+
*/
|
|
59
|
+
function renderLucideSvg(nodes) {
|
|
60
|
+
const children = nodes
|
|
61
|
+
.map(([tag, attrs]) => {
|
|
62
|
+
const attrStr = Object.entries(attrs)
|
|
63
|
+
.map(([k, v]) => `${k}="${v}"`)
|
|
64
|
+
.join(' ');
|
|
65
|
+
return `<${tag} ${attrStr}/>`;
|
|
66
|
+
})
|
|
67
|
+
.join('');
|
|
68
|
+
return `<svg xmlns="http://www.w3.org/2000/svg" width="100%" height="100%" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round">${children}</svg>`;
|
|
69
|
+
}
|
|
70
|
+
const TsIcon = class {
|
|
71
|
+
constructor(hostRef) {
|
|
72
|
+
registerInstance(this, hostRef);
|
|
73
|
+
}
|
|
74
|
+
get el() { return getElement(this); }
|
|
75
|
+
/** Icon name — resolves from custom registry first, then built-in Lucide icons. Accepts kebab-case or PascalCase. */
|
|
76
|
+
name;
|
|
77
|
+
/** URL to an external SVG icon file. */
|
|
78
|
+
src;
|
|
79
|
+
/** The icon's size. */
|
|
80
|
+
size = 'md';
|
|
81
|
+
/** Accessible label. When set, applies role="img" and aria-label. When absent, sets aria-hidden="true". */
|
|
82
|
+
label;
|
|
83
|
+
/** CSS color value applied to the icon. */
|
|
84
|
+
color = 'currentColor';
|
|
85
|
+
svgContent;
|
|
86
|
+
nameChanged() {
|
|
87
|
+
this.loadIcon();
|
|
88
|
+
}
|
|
89
|
+
componentWillLoad() {
|
|
90
|
+
return this.loadIcon();
|
|
91
|
+
}
|
|
92
|
+
/**
|
|
93
|
+
* Checks whether built-in Lucide icons are disabled via data-icons="none"
|
|
94
|
+
* on any ancestor element.
|
|
95
|
+
*/
|
|
96
|
+
isBuiltInDisabled() {
|
|
97
|
+
return this.el.closest('[data-icons="none"]') !== null;
|
|
98
|
+
}
|
|
99
|
+
async loadIcon() {
|
|
100
|
+
if (this.name && !this.src) {
|
|
101
|
+
// 1. Check custom registry first (allows overrides)
|
|
102
|
+
const registered = getIcon(this.name);
|
|
103
|
+
if (registered) {
|
|
104
|
+
this.svgContent = registered;
|
|
105
|
+
return;
|
|
106
|
+
}
|
|
107
|
+
// 2. If built-in icons are disabled via data-icons="none", stop here
|
|
108
|
+
if (this.isBuiltInDisabled()) {
|
|
109
|
+
this.svgContent = undefined;
|
|
110
|
+
return;
|
|
111
|
+
}
|
|
112
|
+
// 3. Lazy-load Lucide icons (only fetched on first name lookup)
|
|
113
|
+
if (!lucideCache) {
|
|
114
|
+
try {
|
|
115
|
+
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
116
|
+
const mod = await import('./lucide-BOxYojS-.js');
|
|
117
|
+
lucideCache = mod.icons;
|
|
118
|
+
}
|
|
119
|
+
catch {
|
|
120
|
+
this.svgContent = undefined;
|
|
121
|
+
return;
|
|
122
|
+
}
|
|
123
|
+
}
|
|
124
|
+
const key = toLucideKey(this.name);
|
|
125
|
+
const lucideIcon = lucideCache[key];
|
|
126
|
+
if (lucideIcon) {
|
|
127
|
+
this.svgContent = renderLucideSvg(lucideIcon);
|
|
128
|
+
return;
|
|
129
|
+
}
|
|
130
|
+
this.svgContent = undefined;
|
|
131
|
+
}
|
|
132
|
+
else {
|
|
133
|
+
this.svgContent = undefined;
|
|
134
|
+
}
|
|
135
|
+
}
|
|
136
|
+
// eslint-disable-next-line @typescript-eslint/explicit-function-return-type
|
|
137
|
+
render() {
|
|
138
|
+
const hasLabel = !!this.label;
|
|
139
|
+
return (h(Host, { key: 'f1a6c10915bf60ee50be384b8b879a73a1bf73e7', class: {
|
|
140
|
+
'ts-icon': true,
|
|
141
|
+
[`ts-icon--${this.size}`]: true,
|
|
142
|
+
}, role: hasLabel ? 'img' : undefined, "aria-label": hasLabel ? this.label : undefined, "aria-hidden": hasLabel ? undefined : 'true', style: { '--ts-icon-color': this.color } }, this.src ? (h("img", { src: this.src, alt: "", part: "img" })) : this.svgContent ? (h("span", { part: "svg", innerHTML: this.svgContent })) : (h("slot", null))));
|
|
143
|
+
}
|
|
144
|
+
static get watchers() { return {
|
|
145
|
+
"name": [{
|
|
146
|
+
"nameChanged": 0
|
|
147
|
+
}]
|
|
148
|
+
}; }
|
|
149
|
+
};
|
|
150
|
+
TsIcon.style = iconCss();
|
|
151
|
+
|
|
152
|
+
export { TsIcon as T, registerIcon as a, getRegisteredIconNames as b, getIcon as g, registerIcons as r };
|
|
153
|
+
//# sourceMappingURL=ts-icon-Jz9ioZag.js.map
|
|
154
|
+
|
|
155
|
+
//# sourceMappingURL=ts-icon-Jz9ioZag.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ts-icon-Jz9ioZag.js","sources":["src/components/icon/icon-registry.ts","src/components/icon/icon.css?tag=ts-icon&encapsulation=shadow","src/components/icon/icon.tsx"],"sourcesContent":["/**\n * Icon Registry\n *\n * A global registry for SVG icon strings. Components look up icons by name\n * from this registry. Works with any icon library — register SVG strings\n * directly or use the Lucide helper (`registerLucideIcons`).\n */\n\nconst registry = new Map<string, string>();\n\n/**\n * Register multiple icons at once.\n * @param icons - A map of icon name to SVG string.\n */\nexport function registerIcons(icons: Record<string, string>): void {\n for (const [name, svg] of Object.entries(icons)) {\n registry.set(name, svg);\n }\n}\n\n/**\n * Register a single icon.\n * @param name - The icon name used in `<ts-icon name=\"...\">`.\n * @param svg - The full SVG markup string.\n */\nexport function registerIcon(name: string, svg: string): void {\n registry.set(name, svg);\n}\n\n/**\n * Retrieve an icon's SVG string by name.\n * @returns The SVG string, or `undefined` if the icon is not registered.\n */\nexport function getIcon(name: string): string | undefined {\n return registry.get(name);\n}\n\n/**\n * List all registered icon names.\n */\nexport function getRegisteredIconNames(): string[] {\n return Array.from(registry.keys());\n}\n","/* ==========================================================================\n ts-icon — Shadow DOM Scoped Styles\n\n Component tokens (Tier 3):\n --ts-icon-size Width & height of the icon\n --ts-icon-color Fill / stroke color\n ========================================================================== */\n\n:host {\n display: inline-flex;\n align-items: center;\n justify-content: center;\n vertical-align: middle;\n\n --ts-icon-size: 1em;\n --ts-icon-color: currentColor;\n\n width: var(--ts-icon-size);\n height: var(--ts-icon-size);\n color: var(--ts-icon-color);\n line-height: 0;\n}\n\n/* ---- Sizes ---- */\n:host([size=\"xs\"]) { --ts-icon-size: 12px; }\n:host([size=\"sm\"]) { --ts-icon-size: 14px; }\n:host([size=\"md\"]) { --ts-icon-size: 16px; }\n:host([size=\"lg\"]) { --ts-icon-size: 18px; }\n:host([size=\"xl\"]) { --ts-icon-size: 20px; }\n\n/* ---- Slotted SVG ---- */\n::slotted(svg) {\n width: 100%;\n height: 100%;\n fill: currentColor;\n}\n\n/* ---- Registry SVG ---- */\nspan {\n display: contents;\n}\n\nspan > svg {\n width: 100%;\n height: 100%;\n fill: none;\n stroke: currentColor;\n}\n\n/* ---- External image ---- */\nimg {\n width: 100%;\n height: 100%;\n}\n","import { Component, Prop, h, Host, Element, Watch, State } from '@stencil/core';\nimport type { TsSize } from '../../types';\nimport { getIcon } from './icon-registry';\n\ntype LucideNode = [string, Record<string, string>][];\n\n/** Cached reference to the Lucide icons map — loaded lazily on first use. */\nlet lucideCache: Record<string, LucideNode> | null = null;\n\n/**\n * Converts a PascalCase or kebab-case icon name to the PascalCase key used by Lucide.\n * e.g. \"search\" → \"Search\", \"arrow-left\" → \"ArrowLeft\"\n */\nfunction toLucideKey(name: string): string {\n return name\n .split('-')\n .map((part: string) => part.charAt(0).toUpperCase() + part.slice(1))\n .join('');\n}\n\n/**\n * Renders a Lucide icon node array to an SVG string.\n */\nfunction renderLucideSvg(nodes: LucideNode): string {\n const children = nodes\n .map(([tag, attrs]: [string, Record<string, string>]) => {\n const attrStr = Object.entries(attrs)\n .map(([k, v]: [string, string]) => `${k}=\"${v}\"`)\n .join(' ');\n return `<${tag} ${attrStr}/>`;\n })\n .join('');\n return `<svg xmlns=\"http://www.w3.org/2000/svg\" width=\"100%\" height=\"100%\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\">${children}</svg>`;\n}\n\n/**\n * @slot - Default slot for inline SVG content.\n *\n * @part img - The img element (when using src prop).\n * @part svg - The container for resolved SVG content (when using name prop).\n */\n@Component({\n tag: 'ts-icon',\n styleUrl: 'icon.css',\n shadow: true,\n})\nexport class TsIcon {\n @Element() el!: HTMLElement;\n\n /** Icon name — resolves from custom registry first, then built-in Lucide icons. Accepts kebab-case or PascalCase. */\n @Prop({ reflect: true }) name?: string;\n\n /** URL to an external SVG icon file. */\n @Prop() src?: string;\n\n /** The icon's size. */\n @Prop({ reflect: true }) size: TsSize = 'md';\n\n /** Accessible label. When set, applies role=\"img\" and aria-label. When absent, sets aria-hidden=\"true\". */\n @Prop() label?: string;\n\n /** CSS color value applied to the icon. */\n @Prop({ reflect: true }) color: string = 'currentColor';\n\n @State() private svgContent?: string;\n\n @Watch('name')\n nameChanged(): void {\n this.loadIcon();\n }\n\n componentWillLoad(): void {\n return this.loadIcon() as unknown as void;\n }\n\n /**\n * Checks whether built-in Lucide icons are disabled via data-icons=\"none\"\n * on any ancestor element.\n */\n private isBuiltInDisabled(): boolean {\n return this.el.closest('[data-icons=\"none\"]') !== null;\n }\n\n private async loadIcon(): Promise<void> {\n if (this.name && !this.src) {\n // 1. Check custom registry first (allows overrides)\n const registered = getIcon(this.name);\n if (registered) {\n this.svgContent = registered;\n return;\n }\n\n // 2. If built-in icons are disabled via data-icons=\"none\", stop here\n if (this.isBuiltInDisabled()) {\n this.svgContent = undefined;\n return;\n }\n\n // 3. Lazy-load Lucide icons (only fetched on first name lookup)\n if (!lucideCache) {\n try {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n const mod: { icons: Record<string, LucideNode> } = await import('lucide') as any;\n lucideCache = mod.icons;\n } catch {\n this.svgContent = undefined;\n return;\n }\n }\n\n const key = toLucideKey(this.name);\n const lucideIcon = lucideCache[key];\n if (lucideIcon) {\n this.svgContent = renderLucideSvg(lucideIcon);\n return;\n }\n\n this.svgContent = undefined;\n } else {\n this.svgContent = undefined;\n }\n }\n\n // eslint-disable-next-line @typescript-eslint/explicit-function-return-type\n render() {\n const hasLabel = !!this.label;\n\n return (\n <Host\n class={{\n 'ts-icon': true,\n [`ts-icon--${this.size}`]: true,\n }}\n role={hasLabel ? 'img' : undefined}\n aria-label={hasLabel ? this.label : undefined}\n aria-hidden={hasLabel ? undefined : 'true'}\n style={{ '--ts-icon-color': this.color }}\n >\n {this.src ? (\n <img src={this.src} alt=\"\" part=\"img\" />\n ) : this.svgContent ? (\n <span part=\"svg\" innerHTML={this.svgContent}></span>\n ) : (\n <slot />\n )}\n </Host>\n );\n }\n}\n"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ts-icon.entry.js","sources":[],"sourcesContent":[],"names":[],"mappings":";"}
|
|
@@ -0,0 +1,128 @@
|
|
|
1
|
+
import { r as registerInstance, c as createEvent, a as getElement, h, H as Host } from './index-V8-ENixA.js';
|
|
2
|
+
import { g as generateId } from './aria-lpqZSiIf.js';
|
|
3
|
+
|
|
4
|
+
const inputCss = () => `:host{display:block;font-family:var(--ts-font-family-base);--ts-input-bg:var(--ts-color-neutral-50);--ts-input-color:var(--ts-color-text-primary);--ts-input-border-color:var(--ts-color-border-default);--ts-input-radius:var(--ts-radius-md);--ts-input-focus-ring:var(--ts-focus-ring)}.input__label{display:block;margin-bottom:var(--ts-spacing-1);font-size:var(--ts-font-size-sm);font-weight:var(--ts-font-weight-medium);color:var(--ts-color-text-secondary);line-height:var(--ts-line-height-normal)}.input__required{color:var(--ts-color-danger-500)}.input__wrapper{display:flex;align-items:center;gap:var(--ts-spacing-2);border:1px solid var(--ts-input-border-color);border-radius:var(--ts-input-radius);background-color:var(--ts-input-bg);box-shadow:none;transition:border-color var(--ts-transition-fast), box-shadow var(--ts-transition-fast), background-color var(--ts-transition-fast);overflow:hidden}.input__wrapper--focused{border-color:var(--ts-color-primary-500);box-shadow:var(--ts-input-focus-ring)}.input__wrapper--error{border-color:var(--ts-color-danger-500)}.input__wrapper--error.input__wrapper--focused{box-shadow:0 0 0 3px var(--ts-color-focus-ring-danger)}.input__wrapper--disabled{background-color:var(--ts-color-bg-disabled);opacity:0.6;cursor:not-allowed}.input__native{flex:1;border:none;outline:none;background:transparent;font-family:inherit;color:var(--ts-input-color);width:100%;min-width:0}.input__native::placeholder{color:var(--ts-color-text-tertiary)}.input__native:disabled{cursor:not-allowed}:host([size="sm"]) .input__wrapper{border-radius:var(--ts-radius-sm)}:host([size="sm"]) .input__native{padding:var(--ts-spacing-1) var(--ts-spacing-2);font-size:var(--ts-font-size-sm)}:host([size="md"]) .input__native{padding:var(--ts-spacing-2) var(--ts-spacing-3);font-size:var(--ts-font-size-md)}:host([size="lg"]) .input__native{padding:var(--ts-spacing-3) var(--ts-spacing-4);font-size:var(--ts-font-size-lg)}:host([size="xl"]) .input__wrapper{border-radius:var(--ts-radius-lg)}:host([size="xl"]) .input__native{padding:var(--ts-spacing-4) var(--ts-spacing-5);font-size:var(--ts-font-size-xl)}.input__prefix,.input__suffix{display:inline-flex;align-items:center;color:var(--ts-color-text-tertiary)}.input__prefix{padding-inline-start:var(--ts-spacing-3)}.input__suffix{padding-inline-end:var(--ts-spacing-3)}.input__prefix:empty,.input__suffix:empty{display:none}.input__help,.input__error{margin-top:var(--ts-spacing-1);font-size:var(--ts-font-size-xs);line-height:var(--ts-line-height-normal)}.input__help{color:var(--ts-color-text-tertiary)}.input__error{color:var(--ts-color-danger-600);font-weight:var(--ts-font-weight-medium)}`;
|
|
5
|
+
|
|
6
|
+
const TsInput = class {
|
|
7
|
+
constructor(hostRef) {
|
|
8
|
+
registerInstance(this, hostRef);
|
|
9
|
+
this.tsInput = createEvent(this, "tsInput");
|
|
10
|
+
this.tsChange = createEvent(this, "tsChange");
|
|
11
|
+
this.tsFocus = createEvent(this, "tsFocus");
|
|
12
|
+
this.tsBlur = createEvent(this, "tsBlur");
|
|
13
|
+
this.tsValidate = createEvent(this, "tsValidate");
|
|
14
|
+
}
|
|
15
|
+
get hostEl() { return getElement(this); }
|
|
16
|
+
inputEl;
|
|
17
|
+
inputId = generateId('ts-input');
|
|
18
|
+
/** The input's value. */
|
|
19
|
+
value = '';
|
|
20
|
+
/** The input type. */
|
|
21
|
+
type = 'text';
|
|
22
|
+
/** The input's size. */
|
|
23
|
+
size = 'md';
|
|
24
|
+
/** Label text displayed above the input. */
|
|
25
|
+
label;
|
|
26
|
+
/** Placeholder text. */
|
|
27
|
+
placeholder;
|
|
28
|
+
/** Help text displayed below the input. */
|
|
29
|
+
helpText;
|
|
30
|
+
/** Renders the input in an error state with an error message. */
|
|
31
|
+
error;
|
|
32
|
+
/** Makes the input required. */
|
|
33
|
+
required = false;
|
|
34
|
+
/** Renders the input as disabled. */
|
|
35
|
+
disabled = false;
|
|
36
|
+
/** Renders the input as readonly. */
|
|
37
|
+
readonly = false;
|
|
38
|
+
/** Maximum character length. */
|
|
39
|
+
maxlength;
|
|
40
|
+
/** Minimum character length. */
|
|
41
|
+
minlength;
|
|
42
|
+
/** Pattern for validation (regex string). */
|
|
43
|
+
pattern;
|
|
44
|
+
/** Autocomplete attribute. */
|
|
45
|
+
autocomplete;
|
|
46
|
+
/** Name attribute for form submission. */
|
|
47
|
+
name;
|
|
48
|
+
/** Whether the input is currently focused. */
|
|
49
|
+
hasFocus = false;
|
|
50
|
+
/** Emitted when the value changes (on input). */
|
|
51
|
+
tsInput;
|
|
52
|
+
/** Emitted when the value changes (on blur / commit). */
|
|
53
|
+
tsChange;
|
|
54
|
+
/** Emitted when the input gains focus. */
|
|
55
|
+
tsFocus;
|
|
56
|
+
/** Emitted when the input loses focus. */
|
|
57
|
+
tsBlur;
|
|
58
|
+
/** Emitted on validation. */
|
|
59
|
+
tsValidate;
|
|
60
|
+
handleValueChange(newValue, oldValue) {
|
|
61
|
+
if (newValue !== oldValue && this.inputEl) {
|
|
62
|
+
this.inputEl.value = newValue;
|
|
63
|
+
}
|
|
64
|
+
}
|
|
65
|
+
/** Programmatically focus the input. */
|
|
66
|
+
async setFocus() {
|
|
67
|
+
this.inputEl?.focus();
|
|
68
|
+
}
|
|
69
|
+
/** Programmatically select the input text. */
|
|
70
|
+
async selectText() {
|
|
71
|
+
this.inputEl?.select();
|
|
72
|
+
}
|
|
73
|
+
handleInput = (event) => {
|
|
74
|
+
const target = event.target;
|
|
75
|
+
const previousValue = this.value;
|
|
76
|
+
this.value = target.value;
|
|
77
|
+
this.tsInput.emit({ value: this.value, previousValue });
|
|
78
|
+
};
|
|
79
|
+
handleChange = () => {
|
|
80
|
+
this.tsChange.emit({ value: this.value, previousValue: this.value });
|
|
81
|
+
// Run native validation
|
|
82
|
+
if (this.inputEl) {
|
|
83
|
+
const valid = this.inputEl.checkValidity();
|
|
84
|
+
this.tsValidate.emit({
|
|
85
|
+
valid,
|
|
86
|
+
message: this.inputEl.validationMessage,
|
|
87
|
+
});
|
|
88
|
+
}
|
|
89
|
+
};
|
|
90
|
+
handleFocus = () => {
|
|
91
|
+
this.hasFocus = true;
|
|
92
|
+
this.tsFocus.emit();
|
|
93
|
+
};
|
|
94
|
+
handleBlur = () => {
|
|
95
|
+
this.hasFocus = false;
|
|
96
|
+
this.tsBlur.emit();
|
|
97
|
+
};
|
|
98
|
+
// eslint-disable-next-line @typescript-eslint/explicit-function-return-type
|
|
99
|
+
render() {
|
|
100
|
+
const hasError = !!this.error;
|
|
101
|
+
const labelId = `${this.inputId}-label`;
|
|
102
|
+
const helpId = `${this.inputId}-help`;
|
|
103
|
+
const errorId = `${this.inputId}-error`;
|
|
104
|
+
return (h(Host, { key: 'dad72942d32c6df8756d8c42b238364799a9df83', class: {
|
|
105
|
+
'ts-input': true,
|
|
106
|
+
[`ts-input--${this.size}`]: true,
|
|
107
|
+
'ts-input--focused': this.hasFocus,
|
|
108
|
+
'ts-input--disabled': this.disabled,
|
|
109
|
+
'ts-input--error': hasError,
|
|
110
|
+
} }, this.label && (h("label", { key: 'a012025c350bd6f593d19477793263b79a68a4f7', class: "input__label", part: "label", id: labelId, htmlFor: this.inputId }, this.label, this.required && h("span", { key: '71316213839857560e4ed37950985196d17242e4', class: "input__required", "aria-hidden": "true" }, " *"))), h("div", { key: '098dd8b4dcaadf87798307b14c2c5def6fc4359e', class: {
|
|
111
|
+
'input__wrapper': true,
|
|
112
|
+
'input__wrapper--focused': this.hasFocus,
|
|
113
|
+
'input__wrapper--error': hasError,
|
|
114
|
+
'input__wrapper--disabled': this.disabled,
|
|
115
|
+
}, part: "base" }, h("span", { key: 'c2b7252cde16f5a08ca6e4beeb88fb9e4a48fc32', class: "input__prefix", part: "prefix" }, h("slot", { key: 'adf46d466d45c9937406846ed3762b0ed41a04db', name: "prefix" })), h("input", { key: 'e0649a147ae0ef54e497443f0cd9e607b87a0ffb', ref: (el) => (this.inputEl = el), id: this.inputId, class: "input__native", part: "input", type: this.type, value: this.value, placeholder: this.placeholder, disabled: this.disabled, readOnly: this.readonly, required: this.required, maxlength: this.maxlength, minlength: this.minlength, pattern: this.pattern, autoComplete: this.autocomplete, name: this.name, "aria-labelledby": this.label ? labelId : undefined, "aria-describedby": hasError ? errorId : this.helpText ? helpId : undefined, "aria-invalid": hasError ? 'true' : undefined, "aria-required": this.required ? 'true' : undefined, onInput: this.handleInput, onChange: this.handleChange, onFocus: this.handleFocus, onBlur: this.handleBlur }), h("span", { key: 'bec3bfcd47130f240d609f461f74140a970fa7cb', class: "input__suffix", part: "suffix" }, h("slot", { key: '1ddd5c810ab5542a019a842a4bb3c725877ac1b0', name: "suffix" }))), hasError && (h("div", { key: '0e9e25e65ced8ee9ddf5091aa8e32408a6489f17', class: "input__error", part: "error-text", id: errorId, role: "alert" }, this.error)), !hasError && this.helpText && (h("div", { key: 'b28ff0b6e908edd201e17b4da927685f2fa77943', class: "input__help", part: "help-text", id: helpId }, this.helpText))));
|
|
116
|
+
}
|
|
117
|
+
static get watchers() { return {
|
|
118
|
+
"value": [{
|
|
119
|
+
"handleValueChange": 0
|
|
120
|
+
}]
|
|
121
|
+
}; }
|
|
122
|
+
};
|
|
123
|
+
TsInput.style = inputCss();
|
|
124
|
+
|
|
125
|
+
export { TsInput as ts_input };
|
|
126
|
+
//# sourceMappingURL=ts-input.entry.js.map
|
|
127
|
+
|
|
128
|
+
//# sourceMappingURL=ts-input.entry.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ts-input.entry.js","sources":["src/components/input/input.css?tag=ts-input&encapsulation=shadow","src/components/input/input.tsx"],"sourcesContent":["/* ==========================================================================\n ts-input — Shadow DOM Scoped Styles\n\n Component tokens (Tier 3):\n --ts-input-bg Input background\n --ts-input-color Input text color\n --ts-input-border-color Default border color\n --ts-input-radius Border radius\n --ts-input-focus-ring Focus ring box-shadow\n ========================================================================== */\n\n:host {\n display: block;\n font-family: var(--ts-font-family-base);\n\n --ts-input-bg: var(--ts-color-neutral-50);\n --ts-input-color: var(--ts-color-text-primary);\n --ts-input-border-color: var(--ts-color-border-default);\n --ts-input-radius: var(--ts-radius-md);\n --ts-input-focus-ring: var(--ts-focus-ring);\n}\n\n/* ---- Label ---- */\n.input__label {\n display: block;\n margin-bottom: var(--ts-spacing-1);\n font-size: var(--ts-font-size-sm);\n font-weight: var(--ts-font-weight-medium);\n color: var(--ts-color-text-secondary);\n line-height: var(--ts-line-height-normal);\n}\n\n.input__required {\n color: var(--ts-color-danger-500);\n}\n\n/* ---- Wrapper ---- */\n.input__wrapper {\n display: flex;\n align-items: center;\n gap: var(--ts-spacing-2);\n border: 1px solid var(--ts-input-border-color);\n border-radius: var(--ts-input-radius);\n background-color: var(--ts-input-bg);\n box-shadow: none;\n transition:\n border-color var(--ts-transition-fast),\n box-shadow var(--ts-transition-fast),\n background-color var(--ts-transition-fast);\n overflow: hidden;\n}\n\n.input__wrapper--focused {\n border-color: var(--ts-color-primary-500);\n box-shadow: var(--ts-input-focus-ring);\n}\n\n.input__wrapper--error {\n border-color: var(--ts-color-danger-500);\n}\n\n.input__wrapper--error.input__wrapper--focused {\n box-shadow: 0 0 0 3px var(--ts-color-focus-ring-danger);\n}\n\n.input__wrapper--disabled {\n background-color: var(--ts-color-bg-disabled);\n opacity: 0.6;\n cursor: not-allowed;\n}\n\n/* ---- Native Input ---- */\n.input__native {\n flex: 1;\n border: none;\n outline: none;\n background: transparent;\n font-family: inherit;\n color: var(--ts-input-color);\n width: 100%;\n min-width: 0;\n}\n\n.input__native::placeholder {\n color: var(--ts-color-text-tertiary);\n}\n\n.input__native:disabled {\n cursor: not-allowed;\n}\n\n/* ---- Sizes ---- */\n:host([size=\"sm\"]) .input__wrapper {\n border-radius: var(--ts-radius-sm);\n}\n:host([size=\"sm\"]) .input__native {\n padding: var(--ts-spacing-1) var(--ts-spacing-2);\n font-size: var(--ts-font-size-sm);\n}\n\n:host([size=\"md\"]) .input__native {\n padding: var(--ts-spacing-2) var(--ts-spacing-3);\n font-size: var(--ts-font-size-md);\n}\n\n:host([size=\"lg\"]) .input__native {\n padding: var(--ts-spacing-3) var(--ts-spacing-4);\n font-size: var(--ts-font-size-lg);\n}\n\n:host([size=\"xl\"]) .input__wrapper {\n border-radius: var(--ts-radius-lg);\n}\n:host([size=\"xl\"]) .input__native {\n padding: var(--ts-spacing-4) var(--ts-spacing-5);\n font-size: var(--ts-font-size-xl);\n}\n\n/* ---- Prefix / Suffix ---- */\n.input__prefix,\n.input__suffix {\n display: inline-flex;\n align-items: center;\n color: var(--ts-color-text-tertiary);\n}\n\n.input__prefix {\n padding-inline-start: var(--ts-spacing-3);\n}\n\n.input__suffix {\n padding-inline-end: var(--ts-spacing-3);\n}\n\n.input__prefix:empty,\n.input__suffix:empty {\n display: none;\n}\n\n/* ---- Help & Error Text ---- */\n.input__help,\n.input__error {\n margin-top: var(--ts-spacing-1);\n font-size: var(--ts-font-size-xs);\n line-height: var(--ts-line-height-normal);\n}\n\n.input__help {\n color: var(--ts-color-text-tertiary);\n}\n\n.input__error {\n color: var(--ts-color-danger-600);\n font-weight: var(--ts-font-weight-medium);\n}\n","import {\n Component,\n Prop,\n State,\n Event,\n Watch,\n h,\n Host,\n Element,\n Method,\n} from '@stencil/core';\nimport type { EventEmitter } from '@stencil/core';\nimport type { TsSize, TsChangeEventDetail, TsValidationEventDetail } from '../../types';\nimport { generateId } from '../../utils/aria';\n\n/**\n * @slot prefix - Content before the input (e.g., icon or currency symbol).\n * @slot suffix - Content after the input (e.g., icon or clear button).\n * @slot help-text - Help text displayed below the input.\n *\n * @part base - The outer wrapper.\n * @part label - The label element.\n * @part input - The native input element.\n * @part prefix - The prefix slot wrapper.\n * @part suffix - The suffix slot wrapper.\n * @part help-text - The help text wrapper.\n * @part error-text - The error message wrapper.\n */\n@Component({\n tag: 'ts-input',\n styleUrl: 'input.css',\n shadow: true,\n})\nexport class TsInput {\n @Element() hostEl!: HTMLElement;\n\n private inputEl?: HTMLInputElement;\n private inputId = generateId('ts-input');\n\n /** The input's value. */\n @Prop({ mutable: true, reflect: true }) value = '';\n\n /** The input type. */\n @Prop({ reflect: true }) type:\n | 'text'\n | 'email'\n | 'password'\n | 'number'\n | 'tel'\n | 'url'\n | 'search' = 'text';\n\n /** The input's size. */\n @Prop({ reflect: true }) size: TsSize = 'md';\n\n /** Label text displayed above the input. */\n @Prop() label?: string;\n\n /** Placeholder text. */\n @Prop() placeholder?: string;\n\n /** Help text displayed below the input. */\n @Prop() helpText?: string;\n\n /** Renders the input in an error state with an error message. */\n @Prop() error?: string;\n\n /** Makes the input required. */\n @Prop({ reflect: true }) required = false;\n\n /** Renders the input as disabled. */\n @Prop({ reflect: true }) disabled = false;\n\n /** Renders the input as readonly. */\n @Prop({ reflect: true }) readonly = false;\n\n /** Maximum character length. */\n @Prop() maxlength?: number;\n\n /** Minimum character length. */\n @Prop() minlength?: number;\n\n /** Pattern for validation (regex string). */\n @Prop() pattern?: string;\n\n /** Autocomplete attribute. */\n @Prop() autocomplete?: string;\n\n /** Name attribute for form submission. */\n @Prop() name?: string;\n\n /** Whether the input is currently focused. */\n @State() hasFocus = false;\n\n /** Emitted when the value changes (on input). */\n @Event({ eventName: 'tsInput' }) tsInput!: EventEmitter<TsChangeEventDetail<string>>;\n\n /** Emitted when the value changes (on blur / commit). */\n @Event({ eventName: 'tsChange' }) tsChange!: EventEmitter<TsChangeEventDetail<string>>;\n\n /** Emitted when the input gains focus. */\n @Event({ eventName: 'tsFocus' }) tsFocus!: EventEmitter<void>;\n\n /** Emitted when the input loses focus. */\n @Event({ eventName: 'tsBlur' }) tsBlur!: EventEmitter<void>;\n\n /** Emitted on validation. */\n @Event({ eventName: 'tsValidate' }) tsValidate!: EventEmitter<TsValidationEventDetail>;\n\n @Watch('value')\n handleValueChange(newValue: string, oldValue: string): void {\n if (newValue !== oldValue && this.inputEl) {\n this.inputEl.value = newValue;\n }\n }\n\n /** Programmatically focus the input. */\n @Method()\n async setFocus(): Promise<void> {\n this.inputEl?.focus();\n }\n\n /** Programmatically select the input text. */\n @Method()\n async selectText(): Promise<void> {\n this.inputEl?.select();\n }\n\n private handleInput = (event: Event): void => {\n const target = event.target as HTMLInputElement;\n const previousValue = this.value;\n this.value = target.value;\n this.tsInput.emit({ value: this.value, previousValue });\n };\n\n private handleChange = (): void => {\n this.tsChange.emit({ value: this.value, previousValue: this.value });\n\n // Run native validation\n if (this.inputEl) {\n const valid = this.inputEl.checkValidity();\n this.tsValidate.emit({\n valid,\n message: this.inputEl.validationMessage,\n });\n }\n };\n\n private handleFocus = (): void => {\n this.hasFocus = true;\n this.tsFocus.emit();\n };\n\n private handleBlur = (): void => {\n this.hasFocus = false;\n this.tsBlur.emit();\n };\n\n // eslint-disable-next-line @typescript-eslint/explicit-function-return-type\n render() {\n const hasError = !!this.error;\n const labelId = `${this.inputId}-label`;\n const helpId = `${this.inputId}-help`;\n const errorId = `${this.inputId}-error`;\n\n return (\n <Host\n class={{\n 'ts-input': true,\n [`ts-input--${this.size}`]: true,\n 'ts-input--focused': this.hasFocus,\n 'ts-input--disabled': this.disabled,\n 'ts-input--error': hasError,\n }}\n >\n {this.label && (\n <label class=\"input__label\" part=\"label\" id={labelId} htmlFor={this.inputId}>\n {this.label}\n {this.required && <span class=\"input__required\" aria-hidden=\"true\"> *</span>}\n </label>\n )}\n\n <div\n class={{\n 'input__wrapper': true,\n 'input__wrapper--focused': this.hasFocus,\n 'input__wrapper--error': hasError,\n 'input__wrapper--disabled': this.disabled,\n }}\n part=\"base\"\n >\n <span class=\"input__prefix\" part=\"prefix\">\n <slot name=\"prefix\" />\n </span>\n\n <input\n ref={(el) => (this.inputEl = el)}\n id={this.inputId}\n class=\"input__native\"\n part=\"input\"\n type={this.type}\n value={this.value}\n placeholder={this.placeholder}\n disabled={this.disabled}\n readOnly={this.readonly}\n required={this.required}\n maxlength={this.maxlength}\n minlength={this.minlength}\n pattern={this.pattern}\n autoComplete={this.autocomplete}\n name={this.name}\n aria-labelledby={this.label ? labelId : undefined}\n aria-describedby={hasError ? errorId : this.helpText ? helpId : undefined}\n aria-invalid={hasError ? 'true' : undefined}\n aria-required={this.required ? 'true' : undefined}\n onInput={this.handleInput}\n onChange={this.handleChange}\n onFocus={this.handleFocus}\n onBlur={this.handleBlur}\n />\n\n <span class=\"input__suffix\" part=\"suffix\">\n <slot name=\"suffix\" />\n </span>\n </div>\n\n {hasError && (\n <div class=\"input__error\" part=\"error-text\" id={errorId} role=\"alert\">\n {this.error}\n </div>\n )}\n\n {!hasError && this.helpText && (\n <div class=\"input__help\" part=\"help-text\" id={helpId}>\n {this.helpText}\n </div>\n )}\n </Host>\n );\n }\n}\n"],"names":[],"mappings":"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"}
|