@tessera-ui/core 0.4.0 → 0.5.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/README.md +21 -12
- package/dist/components/index.js +1 -1
- package/dist/components/{p-O8aQgWRZ.js → p-2ydrBbXU.js} +2 -2
- package/dist/components/p-A0saON5E.js +2 -0
- package/dist/components/p-B046Q9mB.js +2 -0
- package/dist/components/{p-C7JaUlNB.js → p-B4_cDa1A.js} +2 -2
- package/dist/components/{p-BdzH6wlc.js → p-BCv5H01l.js} +2 -2
- package/dist/components/p-BGnwokOT.js +2 -0
- package/dist/components/p-BMu62WKn.js +2 -0
- package/dist/components/p-BT1uIgln.js +2 -0
- package/dist/components/p-BUWioFPq.js +2 -0
- package/dist/components/{p-v-L32wKy.js → p-BdeYJARM.js} +2 -2
- package/dist/components/{p-DhQ7X_TL.js → p-BnX1KON4.js} +2 -2
- package/dist/components/{p-DwJ7Jt3k.js → p-BsX7YKf7.js} +2 -2
- package/dist/components/p-BzSptDZ8.js +2 -0
- package/dist/components/p-C4C_ntgI.js +2 -0
- package/dist/components/p-C4jvuley.js +2 -0
- package/dist/components/{p-BP-fZfRb.js → p-CGcBFblJ.js} +2 -2
- package/dist/components/p-CJvp9tpd.js +2 -0
- package/dist/components/{p-DD986daz.js → p-COpYtD-7.js} +2 -2
- package/dist/components/{p-C8wd1644.js → p-CV-_3uEV.js} +2 -2
- package/dist/components/p-CXpxj5LF.js +2 -0
- package/dist/components/{p-CEQXPxzU.js → p-Ccf23RDb.js} +2 -2
- package/dist/components/{p-SopsdO_f.js → p-Ccpbt1Ou.js} +2 -2
- package/dist/components/{p-DMPxu5Po.js → p-CgLMjfKE.js} +2 -2
- package/dist/components/p-D2rKVDAH.js +2 -0
- package/dist/components/{p-zveaarwa.js → p-D33ZtGZF.js} +2 -2
- package/dist/components/{p-Fot2uNwg.js → p-DHBR8Qn_.js} +2 -2
- package/dist/components/{p-faVXXwqR.js → p-DOtFbUdh.js} +2 -2
- package/dist/components/{p-BjiDgszq.js → p-DelBi-6m.js} +2 -2
- package/dist/components/{p-Cy_Ad-Jy.js → p-DgbNUE6a.js} +2 -2
- package/dist/components/{p-DTAVTqnc.js → p-I5_iFNxb.js} +2 -2
- package/dist/components/p-IZ8R1wr2.js +2 -0
- package/dist/components/{p-B_NL55YI.js → p-LcG5Mdyq.js} +2 -2
- package/dist/components/{p-BcoU0ISN.js → p-XuOQBHK0.js} +2 -2
- package/dist/components/p-_EbBBIv1.js +2 -0
- package/dist/components/p-_vCbug8y.js +2 -0
- package/dist/components/{p-B0ZXNFSa.js → p-b-zWbmXM.js} +2 -2
- package/dist/components/{p-DwUH8YQW.js → p-e-hrdd0t.js} +2 -2
- package/dist/components/p-gtluIo4p.js +2 -0
- package/dist/components/p-o-GUod2W.js +2 -0
- package/dist/components/{p-DooMF1E0.js → p-w9y5VC-3.js} +2 -2
- package/dist/components/ts-accordion-item.js +1 -1
- package/dist/components/ts-accordion.js +1 -1
- package/dist/components/ts-alert.js +1 -1
- package/dist/components/ts-avatar.js +1 -1
- package/dist/components/ts-badge.js +1 -1
- package/dist/components/ts-banner.js +1 -1
- package/dist/components/ts-breadcrumb-item.js +1 -1
- package/dist/components/ts-breadcrumb.js +1 -1
- package/dist/components/ts-button.js +1 -1
- package/dist/components/ts-card.js +1 -1
- package/dist/components/ts-checkbox.js +1 -1
- package/dist/components/ts-chip.js +1 -1
- package/dist/components/ts-container.js +1 -1
- package/dist/components/ts-date-picker.js +1 -1
- package/dist/components/ts-dialog.js +1 -1
- package/dist/components/ts-divider.js +1 -1
- package/dist/components/ts-drawer.js +1 -1
- package/dist/components/ts-empty-state.js +1 -1
- package/dist/components/ts-file-upload.js +1 -1
- package/dist/components/ts-grid.js +1 -1
- package/dist/components/ts-icon.js +1 -1
- package/dist/components/ts-input.js +1 -1
- package/dist/components/ts-menu-item.js +1 -1
- package/dist/components/ts-menu.js +1 -1
- package/dist/components/ts-modal.js +1 -1
- package/dist/components/ts-nav-item.js +1 -1
- package/dist/components/ts-nav.js +1 -1
- package/dist/components/ts-pagination.js +1 -1
- package/dist/components/ts-popover.js +1 -1
- package/dist/components/ts-progress.js +1 -1
- package/dist/components/ts-radio.js +1 -1
- package/dist/components/ts-row.js +1 -1
- package/dist/components/ts-select.js +1 -1
- package/dist/components/ts-skeleton.js +1 -1
- package/dist/components/ts-slider.js +1 -1
- package/dist/components/ts-spacer.js +1 -1
- package/dist/components/ts-spinner.js +1 -1
- package/dist/components/ts-stack.js +1 -1
- package/dist/components/ts-step.js +1 -1
- package/dist/components/ts-stepper.js +1 -1
- package/dist/components/ts-switch-group.js +1 -1
- package/dist/components/ts-switch-option.js +1 -1
- package/dist/components/ts-tab-panel.js +1 -1
- package/dist/components/ts-table.js +1 -1
- package/dist/components/ts-tabs.js +1 -1
- package/dist/components/ts-textarea.js +1 -1
- package/dist/components/ts-toast.js +1 -1
- package/dist/components/ts-toggle.js +1 -1
- package/dist/components/ts-toolbar.js +1 -1
- package/dist/components/ts-tooltip.js +1 -1
- package/dist/components/ts-tree-item.js +1 -1
- package/dist/components/ts-tree.js +1 -1
- package/package.json +24 -3
- package/dist/cjs/aria-CeYIvz3U.js.map +0 -1
- package/dist/cjs/index-Bel_x2OU.js.map +0 -1
- package/dist/cjs/index.cjs.js.map +0 -1
- package/dist/cjs/loader.cjs.js.map +0 -1
- package/dist/cjs/lucide-B1gCqJ3G.js.map +0 -1
- package/dist/cjs/tessera-ui.cjs.js.map +0 -1
- package/dist/cjs/ts-accordion-item.cjs.entry.js.map +0 -1
- package/dist/cjs/ts-accordion.cjs.entry.js.map +0 -1
- package/dist/cjs/ts-alert.cjs.entry.js.map +0 -1
- package/dist/cjs/ts-avatar.cjs.entry.js.map +0 -1
- package/dist/cjs/ts-badge.cjs.entry.js.map +0 -1
- package/dist/cjs/ts-banner.cjs.entry.js.map +0 -1
- package/dist/cjs/ts-breadcrumb-item.cjs.entry.js.map +0 -1
- package/dist/cjs/ts-breadcrumb.cjs.entry.js.map +0 -1
- package/dist/cjs/ts-button.cjs.entry.js.map +0 -1
- package/dist/cjs/ts-card.cjs.entry.js.map +0 -1
- package/dist/cjs/ts-checkbox.cjs.entry.js.map +0 -1
- package/dist/cjs/ts-chip.cjs.entry.js.map +0 -1
- package/dist/cjs/ts-container.cjs.entry.js.map +0 -1
- package/dist/cjs/ts-date-picker.cjs.entry.js.map +0 -1
- package/dist/cjs/ts-dialog.cjs.entry.js.map +0 -1
- package/dist/cjs/ts-divider.cjs.entry.js.map +0 -1
- package/dist/cjs/ts-drawer.cjs.entry.js.map +0 -1
- package/dist/cjs/ts-empty-state.cjs.entry.js.map +0 -1
- package/dist/cjs/ts-file-upload.cjs.entry.js.map +0 -1
- package/dist/cjs/ts-grid.cjs.entry.js.map +0 -1
- package/dist/cjs/ts-icon-CfbhgAgr.js.map +0 -1
- package/dist/cjs/ts-icon.cjs.entry.js.map +0 -1
- package/dist/cjs/ts-input.cjs.entry.js.map +0 -1
- package/dist/cjs/ts-menu-item.cjs.entry.js.map +0 -1
- package/dist/cjs/ts-menu.cjs.entry.js.map +0 -1
- package/dist/cjs/ts-modal.cjs.entry.js.map +0 -1
- package/dist/cjs/ts-nav-item.cjs.entry.js.map +0 -1
- package/dist/cjs/ts-nav.cjs.entry.js.map +0 -1
- package/dist/cjs/ts-pagination.cjs.entry.js.map +0 -1
- package/dist/cjs/ts-popover.cjs.entry.js.map +0 -1
- package/dist/cjs/ts-progress.cjs.entry.js.map +0 -1
- package/dist/cjs/ts-radio.cjs.entry.js.map +0 -1
- package/dist/cjs/ts-row.cjs.entry.js.map +0 -1
- package/dist/cjs/ts-select.cjs.entry.js.map +0 -1
- package/dist/cjs/ts-skeleton.cjs.entry.js.map +0 -1
- package/dist/cjs/ts-slider.cjs.entry.js.map +0 -1
- package/dist/cjs/ts-spacer.cjs.entry.js.map +0 -1
- package/dist/cjs/ts-spinner.cjs.entry.js.map +0 -1
- package/dist/cjs/ts-stack.cjs.entry.js.map +0 -1
- package/dist/cjs/ts-step.cjs.entry.js.map +0 -1
- package/dist/cjs/ts-stepper.cjs.entry.js.map +0 -1
- package/dist/cjs/ts-switch-group.cjs.entry.js.map +0 -1
- package/dist/cjs/ts-switch-option.cjs.entry.js.map +0 -1
- package/dist/cjs/ts-tab-panel.cjs.entry.js.map +0 -1
- package/dist/cjs/ts-table.cjs.entry.js.map +0 -1
- package/dist/cjs/ts-tabs.cjs.entry.js.map +0 -1
- package/dist/cjs/ts-textarea.cjs.entry.js.map +0 -1
- package/dist/cjs/ts-toast.cjs.entry.js.map +0 -1
- package/dist/cjs/ts-toggle.cjs.entry.js.map +0 -1
- package/dist/cjs/ts-toolbar.cjs.entry.js.map +0 -1
- package/dist/cjs/ts-tooltip.cjs.entry.js.map +0 -1
- package/dist/cjs/ts-tree-item.cjs.entry.js.map +0 -1
- package/dist/cjs/ts-tree.cjs.entry.js.map +0 -1
- package/dist/collection/components/accordion/accordion-item.js.map +0 -1
- package/dist/collection/components/accordion/accordion-item.stories.js +0 -4
- package/dist/collection/components/accordion/accordion-item.stories.js.map +0 -1
- package/dist/collection/components/accordion/accordion.js.map +0 -1
- package/dist/collection/components/accordion/accordion.stories.js +0 -90
- package/dist/collection/components/accordion/accordion.stories.js.map +0 -1
- package/dist/collection/components/alert/alert.js.map +0 -1
- package/dist/collection/components/alert/alert.stories.js +0 -128
- package/dist/collection/components/alert/alert.stories.js.map +0 -1
- package/dist/collection/components/avatar/avatar.js.map +0 -1
- package/dist/collection/components/avatar/avatar.stories.js +0 -138
- package/dist/collection/components/avatar/avatar.stories.js.map +0 -1
- package/dist/collection/components/badge/badge.js.map +0 -1
- package/dist/collection/components/badge/badge.stories.js +0 -193
- package/dist/collection/components/badge/badge.stories.js.map +0 -1
- package/dist/collection/components/banner/banner.js.map +0 -1
- package/dist/collection/components/banner/banner.stories.js +0 -92
- package/dist/collection/components/banner/banner.stories.js.map +0 -1
- package/dist/collection/components/breadcrumb/breadcrumb-item.js.map +0 -1
- package/dist/collection/components/breadcrumb/breadcrumb-item.stories.js +0 -4
- package/dist/collection/components/breadcrumb/breadcrumb-item.stories.js.map +0 -1
- package/dist/collection/components/breadcrumb/breadcrumb.js.map +0 -1
- package/dist/collection/components/breadcrumb/breadcrumb.stories.js +0 -88
- package/dist/collection/components/breadcrumb/breadcrumb.stories.js.map +0 -1
- package/dist/collection/components/button/button.js.map +0 -1
- package/dist/collection/components/button/button.stories.js +0 -219
- package/dist/collection/components/button/button.stories.js.map +0 -1
- package/dist/collection/components/card/card.js.map +0 -1
- package/dist/collection/components/card/card.stories.js +0 -221
- package/dist/collection/components/card/card.stories.js.map +0 -1
- package/dist/collection/components/checkbox/checkbox.js.map +0 -1
- package/dist/collection/components/checkbox/checkbox.stories.js +0 -90
- package/dist/collection/components/checkbox/checkbox.stories.js.map +0 -1
- package/dist/collection/components/chip/chip.js.map +0 -1
- package/dist/collection/components/chip/chip.stories.js +0 -139
- package/dist/collection/components/chip/chip.stories.js.map +0 -1
- package/dist/collection/components/container/container.js.map +0 -1
- package/dist/collection/components/container/container.stories.js +0 -138
- package/dist/collection/components/container/container.stories.js.map +0 -1
- package/dist/collection/components/date-picker/date-picker.js.map +0 -1
- package/dist/collection/components/date-picker/date-picker.stories.js +0 -119
- package/dist/collection/components/date-picker/date-picker.stories.js.map +0 -1
- package/dist/collection/components/dialog/dialog.js.map +0 -1
- package/dist/collection/components/dialog/dialog.stories.js +0 -147
- package/dist/collection/components/dialog/dialog.stories.js.map +0 -1
- package/dist/collection/components/divider/divider.js.map +0 -1
- package/dist/collection/components/divider/divider.stories.js +0 -94
- package/dist/collection/components/divider/divider.stories.js.map +0 -1
- package/dist/collection/components/drawer/drawer.js.map +0 -1
- package/dist/collection/components/drawer/drawer.stories.js +0 -143
- package/dist/collection/components/drawer/drawer.stories.js.map +0 -1
- package/dist/collection/components/empty-state/empty-state.js.map +0 -1
- package/dist/collection/components/empty-state/empty-state.stories.js +0 -113
- package/dist/collection/components/empty-state/empty-state.stories.js.map +0 -1
- package/dist/collection/components/file-upload/file-upload.js.map +0 -1
- package/dist/collection/components/file-upload/file-upload.stories.js +0 -107
- package/dist/collection/components/file-upload/file-upload.stories.js.map +0 -1
- package/dist/collection/components/grid/grid.js.map +0 -1
- package/dist/collection/components/grid/grid.stories.js +0 -134
- package/dist/collection/components/grid/grid.stories.js.map +0 -1
- package/dist/collection/components/icon/icon-registry.js.map +0 -1
- package/dist/collection/components/icon/icon.js.map +0 -1
- package/dist/collection/components/icon/icon.stories.js +0 -119
- package/dist/collection/components/icon/icon.stories.js.map +0 -1
- package/dist/collection/components/input/input.js.map +0 -1
- package/dist/collection/components/input/input.stories.js +0 -151
- package/dist/collection/components/input/input.stories.js.map +0 -1
- package/dist/collection/components/menu/menu-item.js.map +0 -1
- package/dist/collection/components/menu/menu-item.stories.js +0 -4
- package/dist/collection/components/menu/menu-item.stories.js.map +0 -1
- package/dist/collection/components/menu/menu.js.map +0 -1
- package/dist/collection/components/menu/menu.stories.js +0 -126
- package/dist/collection/components/menu/menu.stories.js.map +0 -1
- package/dist/collection/components/modal/modal.js.map +0 -1
- package/dist/collection/components/modal/modal.stories.js +0 -233
- package/dist/collection/components/modal/modal.stories.js.map +0 -1
- package/dist/collection/components/nav/nav-item.js.map +0 -1
- package/dist/collection/components/nav/nav-item.stories.js +0 -4
- package/dist/collection/components/nav/nav-item.stories.js.map +0 -1
- package/dist/collection/components/nav/nav.js.map +0 -1
- package/dist/collection/components/nav/nav.stories.js +0 -106
- package/dist/collection/components/nav/nav.stories.js.map +0 -1
- package/dist/collection/components/pagination/pagination.js.map +0 -1
- package/dist/collection/components/pagination/pagination.stories.js +0 -92
- package/dist/collection/components/pagination/pagination.stories.js.map +0 -1
- package/dist/collection/components/popover/popover.js.map +0 -1
- package/dist/collection/components/popover/popover.stories.js +0 -112
- package/dist/collection/components/popover/popover.stories.js.map +0 -1
- package/dist/collection/components/progress/progress.js.map +0 -1
- package/dist/collection/components/progress/progress.stories.js +0 -132
- package/dist/collection/components/progress/progress.stories.js.map +0 -1
- package/dist/collection/components/radio/radio.js.map +0 -1
- package/dist/collection/components/radio/radio.stories.js +0 -77
- package/dist/collection/components/radio/radio.stories.js.map +0 -1
- package/dist/collection/components/row/row.js.map +0 -1
- package/dist/collection/components/row/row.stories.js +0 -172
- package/dist/collection/components/row/row.stories.js.map +0 -1
- package/dist/collection/components/select/select.js.map +0 -1
- package/dist/collection/components/select/select.stories.js +0 -138
- package/dist/collection/components/select/select.stories.js.map +0 -1
- package/dist/collection/components/skeleton/skeleton.js.map +0 -1
- package/dist/collection/components/skeleton/skeleton.stories.js +0 -140
- package/dist/collection/components/skeleton/skeleton.stories.js.map +0 -1
- package/dist/collection/components/slider/slider.js.map +0 -1
- package/dist/collection/components/slider/slider.stories.js +0 -100
- package/dist/collection/components/slider/slider.stories.js.map +0 -1
- package/dist/collection/components/spacer/spacer.js.map +0 -1
- package/dist/collection/components/spacer/spacer.stories.js +0 -90
- package/dist/collection/components/spacer/spacer.stories.js.map +0 -1
- package/dist/collection/components/spinner/spinner.js.map +0 -1
- package/dist/collection/components/spinner/spinner.stories.js +0 -88
- package/dist/collection/components/spinner/spinner.stories.js.map +0 -1
- package/dist/collection/components/stack/stack.js.map +0 -1
- package/dist/collection/components/stack/stack.stories.js +0 -121
- package/dist/collection/components/stack/stack.stories.js.map +0 -1
- package/dist/collection/components/stepper/step.js.map +0 -1
- package/dist/collection/components/stepper/step.stories.js +0 -4
- package/dist/collection/components/stepper/step.stories.js.map +0 -1
- package/dist/collection/components/stepper/stepper.js.map +0 -1
- package/dist/collection/components/stepper/stepper.stories.js +0 -130
- package/dist/collection/components/stepper/stepper.stories.js.map +0 -1
- package/dist/collection/components/switch-group/switch-group.js.map +0 -1
- package/dist/collection/components/switch-group/switch-group.stories.js +0 -132
- package/dist/collection/components/switch-group/switch-group.stories.js.map +0 -1
- package/dist/collection/components/switch-group/switch-option.js.map +0 -1
- package/dist/collection/components/switch-group/switch-option.stories.js +0 -4
- package/dist/collection/components/switch-group/switch-option.stories.js.map +0 -1
- package/dist/collection/components/table/table.js.map +0 -1
- package/dist/collection/components/table/table.stories.js +0 -147
- package/dist/collection/components/table/table.stories.js.map +0 -1
- package/dist/collection/components/tabs/tab-panel.js.map +0 -1
- package/dist/collection/components/tabs/tab-panel.stories.js +0 -4
- package/dist/collection/components/tabs/tab-panel.stories.js.map +0 -1
- package/dist/collection/components/tabs/tabs.js.map +0 -1
- package/dist/collection/components/tabs/tabs.stories.js +0 -187
- package/dist/collection/components/tabs/tabs.stories.js.map +0 -1
- package/dist/collection/components/textarea/textarea.js.map +0 -1
- package/dist/collection/components/textarea/textarea.stories.js +0 -130
- package/dist/collection/components/textarea/textarea.stories.js.map +0 -1
- package/dist/collection/components/toast/toast.js.map +0 -1
- package/dist/collection/components/toast/toast.stories.js +0 -91
- package/dist/collection/components/toast/toast.stories.js.map +0 -1
- package/dist/collection/components/toggle/toggle.js.map +0 -1
- package/dist/collection/components/toggle/toggle.stories.js +0 -145
- package/dist/collection/components/toggle/toggle.stories.js.map +0 -1
- package/dist/collection/components/toolbar/toolbar.js.map +0 -1
- package/dist/collection/components/toolbar/toolbar.stories.js +0 -131
- package/dist/collection/components/toolbar/toolbar.stories.js.map +0 -1
- package/dist/collection/components/tooltip/tooltip.js.map +0 -1
- package/dist/collection/components/tooltip/tooltip.stories.js +0 -186
- package/dist/collection/components/tooltip/tooltip.stories.js.map +0 -1
- package/dist/collection/components/tree/tree-item.js.map +0 -1
- package/dist/collection/components/tree/tree-item.stories.js +0 -4
- package/dist/collection/components/tree/tree-item.stories.js.map +0 -1
- package/dist/collection/components/tree/tree.js.map +0 -1
- package/dist/collection/components/tree/tree.stories.js +0 -121
- package/dist/collection/components/tree/tree.stories.js.map +0 -1
- package/dist/collection/index.js.map +0 -1
- package/dist/collection/theme/tokens.js.map +0 -1
- package/dist/collection/types/index.js.map +0 -1
- package/dist/collection/utils/aria.js.map +0 -1
- package/dist/collection/utils/dom.js.map +0 -1
- package/dist/collection/utils/events.js.map +0 -1
- package/dist/components/index.js.map +0 -1
- package/dist/components/p-6RDSLDuS.js +0 -2
- package/dist/components/p-6RDSLDuS.js.map +0 -1
- package/dist/components/p-B0ZXNFSa.js.map +0 -1
- package/dist/components/p-BCgm2utU.js +0 -2
- package/dist/components/p-BCgm2utU.js.map +0 -1
- package/dist/components/p-BFN5hUo4.js +0 -2
- package/dist/components/p-BFN5hUo4.js.map +0 -1
- package/dist/components/p-BOxYojS-.js.map +0 -1
- package/dist/components/p-BP-fZfRb.js.map +0 -1
- package/dist/components/p-B_NL55YI.js.map +0 -1
- package/dist/components/p-BcoU0ISN.js.map +0 -1
- package/dist/components/p-BdzH6wlc.js.map +0 -1
- package/dist/components/p-BeErYjKz.js +0 -2
- package/dist/components/p-BeErYjKz.js.map +0 -1
- package/dist/components/p-BjiDgszq.js.map +0 -1
- package/dist/components/p-BjyTgfXe.js +0 -2
- package/dist/components/p-BjyTgfXe.js.map +0 -1
- package/dist/components/p-BlZHjan9.js +0 -2
- package/dist/components/p-BlZHjan9.js.map +0 -1
- package/dist/components/p-C7JaUlNB.js.map +0 -1
- package/dist/components/p-C8wd1644.js.map +0 -1
- package/dist/components/p-CEQXPxzU.js.map +0 -1
- package/dist/components/p-CGh7W07E.js +0 -2
- package/dist/components/p-CGh7W07E.js.map +0 -1
- package/dist/components/p-CHtE5caV.js +0 -2
- package/dist/components/p-CHtE5caV.js.map +0 -1
- package/dist/components/p-CSNeA_zh.js +0 -2
- package/dist/components/p-CSNeA_zh.js.map +0 -1
- package/dist/components/p-CbHlJvjF.js +0 -2
- package/dist/components/p-CbHlJvjF.js.map +0 -1
- package/dist/components/p-CkQOAizb.js +0 -2
- package/dist/components/p-CkQOAizb.js.map +0 -1
- package/dist/components/p-Cy_Ad-Jy.js.map +0 -1
- package/dist/components/p-DD986daz.js.map +0 -1
- package/dist/components/p-DFnNsZtI.js +0 -2
- package/dist/components/p-DFnNsZtI.js.map +0 -1
- package/dist/components/p-DMPxu5Po.js.map +0 -1
- package/dist/components/p-DMuI5d5r.js +0 -2
- package/dist/components/p-DMuI5d5r.js.map +0 -1
- package/dist/components/p-DPQ1o4MP.js +0 -2
- package/dist/components/p-DPQ1o4MP.js.map +0 -1
- package/dist/components/p-DTAVTqnc.js.map +0 -1
- package/dist/components/p-DhQ7X_TL.js.map +0 -1
- package/dist/components/p-DkpyRqHf.js.map +0 -1
- package/dist/components/p-DlB-KfKY.js +0 -2
- package/dist/components/p-DlB-KfKY.js.map +0 -1
- package/dist/components/p-DooMF1E0.js.map +0 -1
- package/dist/components/p-DwJ7Jt3k.js.map +0 -1
- package/dist/components/p-DwUH8YQW.js.map +0 -1
- package/dist/components/p-Fot2uNwg.js.map +0 -1
- package/dist/components/p-O8aQgWRZ.js.map +0 -1
- package/dist/components/p-SopsdO_f.js.map +0 -1
- package/dist/components/p-TFHAUMKT.js +0 -2
- package/dist/components/p-TFHAUMKT.js.map +0 -1
- package/dist/components/p-faVXXwqR.js.map +0 -1
- package/dist/components/p-lpqZSiIf.js.map +0 -1
- package/dist/components/p-mfB_pP4L.js +0 -2
- package/dist/components/p-mfB_pP4L.js.map +0 -1
- package/dist/components/p-v-L32wKy.js.map +0 -1
- package/dist/components/p-zveaarwa.js.map +0 -1
- package/dist/components/ts-accordion-item.js.map +0 -1
- package/dist/components/ts-accordion.js.map +0 -1
- package/dist/components/ts-alert.js.map +0 -1
- package/dist/components/ts-avatar.js.map +0 -1
- package/dist/components/ts-badge.js.map +0 -1
- package/dist/components/ts-banner.js.map +0 -1
- package/dist/components/ts-breadcrumb-item.js.map +0 -1
- package/dist/components/ts-breadcrumb.js.map +0 -1
- package/dist/components/ts-button.js.map +0 -1
- package/dist/components/ts-card.js.map +0 -1
- package/dist/components/ts-checkbox.js.map +0 -1
- package/dist/components/ts-chip.js.map +0 -1
- package/dist/components/ts-container.js.map +0 -1
- package/dist/components/ts-date-picker.js.map +0 -1
- package/dist/components/ts-dialog.js.map +0 -1
- package/dist/components/ts-divider.js.map +0 -1
- package/dist/components/ts-drawer.js.map +0 -1
- package/dist/components/ts-empty-state.js.map +0 -1
- package/dist/components/ts-file-upload.js.map +0 -1
- package/dist/components/ts-grid.js.map +0 -1
- package/dist/components/ts-icon.js.map +0 -1
- package/dist/components/ts-input.js.map +0 -1
- package/dist/components/ts-menu-item.js.map +0 -1
- package/dist/components/ts-menu.js.map +0 -1
- package/dist/components/ts-modal.js.map +0 -1
- package/dist/components/ts-nav-item.js.map +0 -1
- package/dist/components/ts-nav.js.map +0 -1
- package/dist/components/ts-pagination.js.map +0 -1
- package/dist/components/ts-popover.js.map +0 -1
- package/dist/components/ts-progress.js.map +0 -1
- package/dist/components/ts-radio.js.map +0 -1
- package/dist/components/ts-row.js.map +0 -1
- package/dist/components/ts-select.js.map +0 -1
- package/dist/components/ts-skeleton.js.map +0 -1
- package/dist/components/ts-slider.js.map +0 -1
- package/dist/components/ts-spacer.js.map +0 -1
- package/dist/components/ts-spinner.js.map +0 -1
- package/dist/components/ts-stack.js.map +0 -1
- package/dist/components/ts-step.js.map +0 -1
- package/dist/components/ts-stepper.js.map +0 -1
- package/dist/components/ts-switch-group.js.map +0 -1
- package/dist/components/ts-switch-option.js.map +0 -1
- package/dist/components/ts-tab-panel.js.map +0 -1
- package/dist/components/ts-table.js.map +0 -1
- package/dist/components/ts-tabs.js.map +0 -1
- package/dist/components/ts-textarea.js.map +0 -1
- package/dist/components/ts-toast.js.map +0 -1
- package/dist/components/ts-toggle.js.map +0 -1
- package/dist/components/ts-toolbar.js.map +0 -1
- package/dist/components/ts-tooltip.js.map +0 -1
- package/dist/components/ts-tree-item.js.map +0 -1
- package/dist/components/ts-tree.js.map +0 -1
- package/dist/components.json +0 -12678
- package/dist/esm/aria-lpqZSiIf.js.map +0 -1
- package/dist/esm/index-V8-ENixA.js.map +0 -1
- package/dist/esm/index.js.map +0 -1
- package/dist/esm/loader.js.map +0 -1
- package/dist/esm/lucide-BOxYojS-.js.map +0 -1
- package/dist/esm/tessera-ui.js.map +0 -1
- package/dist/esm/ts-accordion-item.entry.js.map +0 -1
- package/dist/esm/ts-accordion.entry.js.map +0 -1
- package/dist/esm/ts-alert.entry.js.map +0 -1
- package/dist/esm/ts-avatar.entry.js.map +0 -1
- package/dist/esm/ts-badge.entry.js.map +0 -1
- package/dist/esm/ts-banner.entry.js.map +0 -1
- package/dist/esm/ts-breadcrumb-item.entry.js.map +0 -1
- package/dist/esm/ts-breadcrumb.entry.js.map +0 -1
- package/dist/esm/ts-button.entry.js.map +0 -1
- package/dist/esm/ts-card.entry.js.map +0 -1
- package/dist/esm/ts-checkbox.entry.js.map +0 -1
- package/dist/esm/ts-chip.entry.js.map +0 -1
- package/dist/esm/ts-container.entry.js.map +0 -1
- package/dist/esm/ts-date-picker.entry.js.map +0 -1
- package/dist/esm/ts-dialog.entry.js.map +0 -1
- package/dist/esm/ts-divider.entry.js.map +0 -1
- package/dist/esm/ts-drawer.entry.js.map +0 -1
- package/dist/esm/ts-empty-state.entry.js.map +0 -1
- package/dist/esm/ts-file-upload.entry.js.map +0 -1
- package/dist/esm/ts-grid.entry.js.map +0 -1
- package/dist/esm/ts-icon-Jz9ioZag.js.map +0 -1
- package/dist/esm/ts-icon.entry.js.map +0 -1
- package/dist/esm/ts-input.entry.js.map +0 -1
- package/dist/esm/ts-menu-item.entry.js.map +0 -1
- package/dist/esm/ts-menu.entry.js.map +0 -1
- package/dist/esm/ts-modal.entry.js.map +0 -1
- package/dist/esm/ts-nav-item.entry.js.map +0 -1
- package/dist/esm/ts-nav.entry.js.map +0 -1
- package/dist/esm/ts-pagination.entry.js.map +0 -1
- package/dist/esm/ts-popover.entry.js.map +0 -1
- package/dist/esm/ts-progress.entry.js.map +0 -1
- package/dist/esm/ts-radio.entry.js.map +0 -1
- package/dist/esm/ts-row.entry.js.map +0 -1
- package/dist/esm/ts-select.entry.js.map +0 -1
- package/dist/esm/ts-skeleton.entry.js.map +0 -1
- package/dist/esm/ts-slider.entry.js.map +0 -1
- package/dist/esm/ts-spacer.entry.js.map +0 -1
- package/dist/esm/ts-spinner.entry.js.map +0 -1
- package/dist/esm/ts-stack.entry.js.map +0 -1
- package/dist/esm/ts-step.entry.js.map +0 -1
- package/dist/esm/ts-stepper.entry.js.map +0 -1
- package/dist/esm/ts-switch-group.entry.js.map +0 -1
- package/dist/esm/ts-switch-option.entry.js.map +0 -1
- package/dist/esm/ts-tab-panel.entry.js.map +0 -1
- package/dist/esm/ts-table.entry.js.map +0 -1
- package/dist/esm/ts-tabs.entry.js.map +0 -1
- package/dist/esm/ts-textarea.entry.js.map +0 -1
- package/dist/esm/ts-toast.entry.js.map +0 -1
- package/dist/esm/ts-toggle.entry.js.map +0 -1
- package/dist/esm/ts-toolbar.entry.js.map +0 -1
- package/dist/esm/ts-tooltip.entry.js.map +0 -1
- package/dist/esm/ts-tree-item.entry.js.map +0 -1
- package/dist/esm/ts-tree.entry.js.map +0 -1
- package/dist/tessera-ui/index.esm.js.map +0 -1
- package/dist/tessera-ui/p-0424cd55.entry.js.map +0 -1
- package/dist/tessera-ui/p-04522bf9.entry.js.map +0 -1
- package/dist/tessera-ui/p-04aa8b90.entry.js.map +0 -1
- package/dist/tessera-ui/p-080eaf89.entry.js.map +0 -1
- package/dist/tessera-ui/p-0ec061e5.entry.js.map +0 -1
- package/dist/tessera-ui/p-122e43b7.entry.js.map +0 -1
- package/dist/tessera-ui/p-16bb8ca8.entry.js.map +0 -1
- package/dist/tessera-ui/p-16fc632b.entry.js.map +0 -1
- package/dist/tessera-ui/p-1d73f6c9.entry.js.map +0 -1
- package/dist/tessera-ui/p-24305379.entry.js.map +0 -1
- package/dist/tessera-ui/p-25f77cc9.entry.js.map +0 -1
- package/dist/tessera-ui/p-35eb8496.entry.js.map +0 -1
- package/dist/tessera-ui/p-3aec66b4.entry.js.map +0 -1
- package/dist/tessera-ui/p-4277460b.entry.js.map +0 -1
- package/dist/tessera-ui/p-441310f7.entry.js.map +0 -1
- package/dist/tessera-ui/p-491e1a75.entry.js.map +0 -1
- package/dist/tessera-ui/p-50d092ce.entry.js.map +0 -1
- package/dist/tessera-ui/p-50efadf3.entry.js.map +0 -1
- package/dist/tessera-ui/p-53846d59.entry.js.map +0 -1
- package/dist/tessera-ui/p-56f2b070.entry.js.map +0 -1
- package/dist/tessera-ui/p-6760f922.entry.js.map +0 -1
- package/dist/tessera-ui/p-69bb11ed.entry.js.map +0 -1
- package/dist/tessera-ui/p-6d35a60c.entry.js.map +0 -1
- package/dist/tessera-ui/p-6ec285ad.entry.js.map +0 -1
- package/dist/tessera-ui/p-708d4eb5.entry.js.map +0 -1
- package/dist/tessera-ui/p-79ff8ceb.entry.js.map +0 -1
- package/dist/tessera-ui/p-7e531195.entry.js.map +0 -1
- package/dist/tessera-ui/p-7fa64f00.entry.js.map +0 -1
- package/dist/tessera-ui/p-829c4307.entry.js.map +0 -1
- package/dist/tessera-ui/p-91ccef3f.entry.js.map +0 -1
- package/dist/tessera-ui/p-9209e603.entry.js.map +0 -1
- package/dist/tessera-ui/p-97a9def7.entry.js.map +0 -1
- package/dist/tessera-ui/p-9b41b538.entry.js.map +0 -1
- package/dist/tessera-ui/p-9c0504fd.entry.js.map +0 -1
- package/dist/tessera-ui/p-BOxYojS-.js.map +0 -1
- package/dist/tessera-ui/p-StBQmS8h.js.map +0 -1
- package/dist/tessera-ui/p-V8-ENixA.js.map +0 -1
- package/dist/tessera-ui/p-a120b5d6.entry.js.map +0 -1
- package/dist/tessera-ui/p-a55a5695.entry.js.map +0 -1
- package/dist/tessera-ui/p-a83d903e.entry.js.map +0 -1
- package/dist/tessera-ui/p-adc807dc.entry.js.map +0 -1
- package/dist/tessera-ui/p-b09f202c.entry.js.map +0 -1
- package/dist/tessera-ui/p-b1182592.entry.js.map +0 -1
- package/dist/tessera-ui/p-b3f60955.entry.js.map +0 -1
- package/dist/tessera-ui/p-bb9ebbd8.entry.js.map +0 -1
- package/dist/tessera-ui/p-bce40715.entry.js.map +0 -1
- package/dist/tessera-ui/p-c35c7049.entry.js.map +0 -1
- package/dist/tessera-ui/p-c59ecffa.entry.js.map +0 -1
- package/dist/tessera-ui/p-d318774a.entry.js.map +0 -1
- package/dist/tessera-ui/p-d5cbadd6.entry.js.map +0 -1
- package/dist/tessera-ui/p-e1d2b141.entry.js.map +0 -1
- package/dist/tessera-ui/p-f0bf6408.entry.js.map +0 -1
- package/dist/tessera-ui/p-f639213a.entry.js.map +0 -1
- package/dist/tessera-ui/p-fd2376e0.entry.js.map +0 -1
- package/dist/tessera-ui/p-fef9a993.entry.js.map +0 -1
- package/dist/tessera-ui/p-lpqZSiIf.js.map +0 -1
- package/dist/tessera-ui/tessera-ui.esm.js.map +0 -1
- package/dist/types/components/accordion/accordion-item.stories.d.ts +0 -5
- package/dist/types/components/accordion/accordion.stories.d.ts +0 -21
- package/dist/types/components/alert/alert.stories.d.ts +0 -34
- package/dist/types/components/avatar/avatar.stories.d.ts +0 -51
- package/dist/types/components/badge/badge.stories.d.ts +0 -50
- package/dist/types/components/banner/banner.stories.d.ts +0 -40
- package/dist/types/components/breadcrumb/breadcrumb-item.stories.d.ts +0 -5
- package/dist/types/components/breadcrumb/breadcrumb.stories.d.ts +0 -20
- package/dist/types/components/button/button.stories.d.ts +0 -73
- package/dist/types/components/card/card.stories.d.ts +0 -46
- package/dist/types/components/checkbox/checkbox.stories.d.ts +0 -58
- package/dist/types/components/chip/chip.stories.d.ts +0 -54
- package/dist/types/components/container/container.stories.d.ts +0 -21
- package/dist/types/components/date-picker/date-picker.stories.d.ts +0 -62
- package/dist/types/components/dialog/dialog.stories.d.ts +0 -39
- package/dist/types/components/divider/divider.stories.d.ts +0 -33
- package/dist/types/components/drawer/drawer.stories.d.ts +0 -43
- package/dist/types/components/empty-state/empty-state.stories.d.ts +0 -37
- package/dist/types/components/file-upload/file-upload.stories.d.ts +0 -43
- package/dist/types/components/grid/grid.stories.d.ts +0 -30
- package/dist/types/components/icon/icon.stories.d.ts +0 -42
- package/dist/types/components/input/input.stories.d.ts +0 -77
- package/dist/types/components/menu/menu-item.stories.d.ts +0 -5
- package/dist/types/components/menu/menu.stories.d.ts +0 -36
- package/dist/types/components/modal/modal.stories.d.ts +0 -47
- package/dist/types/components/nav/nav-item.stories.d.ts +0 -5
- package/dist/types/components/nav/nav.stories.d.ts +0 -27
- package/dist/types/components/pagination/pagination.stories.d.ts +0 -42
- package/dist/types/components/popover/popover.stories.d.ts +0 -38
- package/dist/types/components/progress/progress.stories.d.ts +0 -59
- package/dist/types/components/radio/radio.stories.d.ts +0 -48
- package/dist/types/components/row/row.stories.d.ts +0 -52
- package/dist/types/components/select/select.stories.d.ts +0 -73
- package/dist/types/components/skeleton/skeleton.stories.d.ts +0 -44
- package/dist/types/components/slider/slider.stories.d.ts +0 -62
- package/dist/types/components/spacer/spacer.stories.d.ts +0 -28
- package/dist/types/components/spinner/spinner.stories.d.ts +0 -33
- package/dist/types/components/stack/stack.stories.d.ts +0 -28
- package/dist/types/components/stepper/step.stories.d.ts +0 -5
- package/dist/types/components/stepper/stepper.stories.d.ts +0 -36
- package/dist/types/components/switch-group/switch-group.stories.d.ts +0 -37
- package/dist/types/components/switch-group/switch-option.stories.d.ts +0 -5
- package/dist/types/components/table/table.stories.d.ts +0 -45
- package/dist/types/components/tabs/tab-panel.stories.d.ts +0 -5
- package/dist/types/components/tabs/tabs.stories.d.ts +0 -34
- package/dist/types/components/textarea/textarea.stories.d.ts +0 -88
- package/dist/types/components/toast/toast.stories.d.ts +0 -48
- package/dist/types/components/toggle/toggle.stories.d.ts +0 -46
- package/dist/types/components/toolbar/toolbar.stories.d.ts +0 -28
- package/dist/types/components/tooltip/tooltip.stories.d.ts +0 -43
- package/dist/types/components/tree/tree-item.stories.d.ts +0 -5
- package/dist/types/components/tree/tree.stories.d.ts +0 -21
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"names":["chipCss","TsChip","variant","size","removable","disabled","selected","outline","tsRemove","tsClick","handleClick","this","emit","handleRemove","event","stopPropagation","handleKeydown","key","preventDefault","handleRemoveKeydown","render","isInteractive","h","Host","class","part","role","tabindex","undefined","onClick","onKeyDown","name","type"],"sources":["src/components/chip/chip.css?tag=ts-chip&encapsulation=shadow","src/components/chip/chip.tsx"],"sourcesContent":["/* ==========================================================================\n ts-chip — Shadow DOM Scoped Styles\n\n Component tokens (Tier 3):\n --ts-chip-radius Border radius (pill shape)\n --ts-chip-height Chip height per size\n ========================================================================== */\n\n:host {\n display: inline-block;\n vertical-align: middle;\n font-family: var(--ts-font-family-base);\n\n --ts-chip-radius: var(--ts-radius-full, 9999px);\n --ts-chip-height: 2rem;\n}\n\n/* ---- Base ---- */\n.chip__base {\n display: inline-flex;\n align-items: center;\n gap: var(--ts-spacing-1);\n block-size: var(--ts-chip-height);\n padding-inline: var(--ts-spacing-3);\n border-radius: var(--ts-chip-radius);\n font-size: var(--ts-font-size-sm);\n font-weight: var(--ts-font-weight-medium);\n line-height: 1;\n cursor: pointer;\n user-select: none;\n border: 1px solid transparent;\n outline: none;\n transition:\n background-color var(--ts-transition-fast),\n border-color var(--ts-transition-fast),\n color var(--ts-transition-fast),\n box-shadow var(--ts-transition-fast);\n}\n\n.chip__base:focus-visible {\n box-shadow: var(--ts-focus-ring);\n}\n\n/* ---- Sizes ---- */\n:host([size=\"sm\"]) {\n --ts-chip-height: 1.5rem;\n}\n:host([size=\"sm\"]) .chip__base {\n padding-inline: var(--ts-spacing-2);\n font-size: var(--ts-font-size-xs);\n}\n\n:host([size=\"lg\"]) {\n --ts-chip-height: 2.5rem;\n}\n:host([size=\"lg\"]) .chip__base {\n padding-inline: var(--ts-spacing-4);\n font-size: var(--ts-font-size-md);\n}\n\n/* ---- Solid Variants ---- */\n:host([variant=\"neutral\"]:not([outline])) .chip__base {\n background-color: var(--ts-color-neutral-200);\n color: var(--ts-color-text-primary);\n}\n:host([variant=\"neutral\"]:not([outline])) .chip__base:hover {\n background-color: var(--ts-color-neutral-300);\n}\n\n:host([variant=\"primary\"]:not([outline])) .chip__base {\n background-color: var(--ts-color-primary-100, var(--ts-color-primary-500));\n color: var(--ts-color-primary-700, var(--ts-color-text-primary));\n}\n:host([variant=\"primary\"]:not([outline])) .chip__base:hover {\n background-color: var(--ts-color-primary-200, var(--ts-color-primary-600));\n}\n\n:host([variant=\"success\"]:not([outline])) .chip__base {\n background-color: var(--ts-color-success-bg);\n color: var(--ts-color-success-600);\n}\n\n:host([variant=\"warning\"]:not([outline])) .chip__base {\n background-color: var(--ts-color-warning-bg);\n color: var(--ts-color-warning-600);\n}\n\n:host([variant=\"danger\"]:not([outline])) .chip__base {\n background-color: var(--ts-color-danger-bg);\n color: var(--ts-color-danger-600);\n}\n\n:host([variant=\"info\"]:not([outline])) .chip__base {\n background-color: var(--ts-color-info-bg);\n color: var(--ts-color-info-600);\n}\n\n:host([variant=\"secondary\"]:not([outline])) .chip__base {\n background-color: var(--ts-color-neutral-100);\n color: var(--ts-color-text-secondary);\n}\n\n/* ---- Outline Variants ---- */\n:host([outline]) .chip__base {\n background-color: transparent;\n}\n\n:host([outline][variant=\"neutral\"]) .chip__base {\n border-color: var(--ts-color-border-strong);\n color: var(--ts-color-text-secondary);\n}\n:host([outline][variant=\"neutral\"]) .chip__base:hover {\n background-color: var(--ts-color-bg-subtle);\n}\n\n:host([outline][variant=\"primary\"]) .chip__base {\n border-color: var(--ts-color-primary-500);\n color: var(--ts-color-primary-600);\n}\n:host([outline][variant=\"primary\"]) .chip__base:hover {\n background-color: var(--ts-color-primary-100, var(--ts-color-interactive-primary-subtle));\n}\n\n:host([outline][variant=\"danger\"]) .chip__base {\n border-color: var(--ts-color-danger-500);\n color: var(--ts-color-danger-600);\n}\n\n:host([outline][variant=\"success\"]) .chip__base {\n border-color: var(--ts-color-success-500, var(--ts-color-success-border));\n color: var(--ts-color-success-600);\n}\n\n:host([outline][variant=\"warning\"]) .chip__base {\n border-color: var(--ts-color-warning-500, var(--ts-color-warning-border));\n color: var(--ts-color-warning-600);\n}\n\n:host([outline][variant=\"info\"]) .chip__base {\n border-color: var(--ts-color-info-500, var(--ts-color-info-border));\n color: var(--ts-color-info-600);\n}\n\n/* ---- Selected state ---- */\n:host([selected]) .chip__base {\n background-color: var(--ts-color-interactive-primary);\n color: var(--ts-color-text-on-primary);\n border-color: var(--ts-color-interactive-primary);\n}\n:host([selected]) .chip__base:hover {\n background-color: var(--ts-color-interactive-primary-hover);\n border-color: var(--ts-color-interactive-primary-hover);\n}\n\n/* ---- Disabled ---- */\n:host([disabled]) .chip__base {\n opacity: 0.5;\n cursor: not-allowed;\n pointer-events: none;\n}\n\n/* ---- Prefix ---- */\n.chip__prefix {\n display: inline-flex;\n align-items: center;\n}\n\n.chip__prefix:empty {\n display: none;\n}\n\n/* ---- Label ---- */\n.chip__label {\n display: inline-flex;\n align-items: center;\n}\n\n/* ---- Remove button ---- */\n.chip__remove {\n display: inline-flex;\n align-items: center;\n justify-content: center;\n inline-size: 1.1em;\n block-size: 1.1em;\n border: none;\n border-radius: 50%;\n background: transparent;\n color: currentColor;\n opacity: 0.6;\n cursor: pointer;\n font-size: 0.75em;\n padding: 0;\n margin-inline-start: var(--ts-spacing-1);\n line-height: 1;\n transition: opacity var(--ts-transition-fast);\n}\n\n.chip__remove:hover {\n opacity: 1;\n}\n\n.chip__remove:focus-visible {\n box-shadow: var(--ts-focus-ring);\n opacity: 1;\n}\n\n.chip__remove:disabled {\n cursor: not-allowed;\n pointer-events: none;\n}\n","import { Component, Prop, Event, h, Host } from '@stencil/core';\nimport type { EventEmitter } from '@stencil/core';\nimport type { TsVariant, TsSize } from '../../types';\n\n/**\n * @slot - Default slot for chip label.\n * @slot prefix - Icon or content before the label.\n *\n * @part base - The chip container.\n * @part label - The label wrapper.\n * @part prefix - The prefix slot wrapper.\n * @part remove - The remove button.\n */\n@Component({\n tag: 'ts-chip',\n styleUrl: 'chip.css',\n shadow: true,\n})\nexport class TsChip {\n /** The chip's semantic variant. */\n @Prop({ reflect: true }) variant: TsVariant = 'neutral';\n\n /** The chip's size. */\n @Prop({ reflect: true }) size: TsSize = 'md';\n\n /** Whether the chip shows a remove button. */\n @Prop({ reflect: true }) removable = false;\n\n /** Whether the chip is disabled. */\n @Prop({ reflect: true }) disabled = false;\n\n /** Whether the chip is selected. */\n @Prop({ reflect: true }) selected = false;\n\n /** Whether to render as outline style. */\n @Prop({ reflect: true }) outline = false;\n\n /** Emitted when the remove button is clicked. */\n @Event({ eventName: 'tsRemove' }) tsRemove!: EventEmitter<void>;\n\n /** Emitted when the chip body is clicked. */\n @Event({ eventName: 'tsClick' }) tsClick!: EventEmitter<void>;\n\n private handleClick = (): void => {\n if (this.disabled) return;\n this.tsClick.emit();\n };\n\n private handleRemove = (event: MouseEvent): void => {\n event.stopPropagation();\n if (this.disabled) return;\n this.tsRemove.emit();\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.tsClick.emit();\n }\n };\n\n private handleRemoveKeydown = (event: KeyboardEvent): void => {\n if (this.disabled) return;\n if (event.key === 'Enter' || event.key === ' ') {\n event.preventDefault();\n event.stopPropagation();\n this.tsRemove.emit();\n }\n };\n\n // eslint-disable-next-line @typescript-eslint/explicit-function-return-type\n render() {\n const isInteractive = !this.disabled;\n\n return (\n <Host\n class={{\n 'ts-chip': true,\n [`ts-chip--${this.variant}`]: true,\n [`ts-chip--${this.size}`]: true,\n 'ts-chip--selected': this.selected,\n 'ts-chip--outline': this.outline,\n 'ts-chip--disabled': this.disabled,\n 'ts-chip--removable': this.removable,\n }}\n >\n <span\n class=\"chip__base\"\n part=\"base\"\n role=\"button\"\n tabindex={isInteractive ? '0' : undefined}\n aria-disabled={this.disabled ? 'true' : undefined}\n aria-pressed={this.selected ? 'true' : undefined}\n onClick={this.handleClick}\n onKeyDown={this.handleKeydown}\n >\n <span class=\"chip__prefix\" part=\"prefix\">\n <slot name=\"prefix\" />\n </span>\n\n <span class=\"chip__label\" part=\"label\">\n <slot />\n </span>\n\n {this.removable && (\n <button\n class=\"chip__remove\"\n part=\"remove\"\n type=\"button\"\n aria-label=\"Remove\"\n disabled={this.disabled}\n onClick={this.handleRemove}\n onKeyDown={this.handleRemoveKeydown}\n >\n \\u2715\n </button>\n )}\n </span>\n </Host>\n );\n }\n}\n"],"mappings":"oDAAA,MAAMA,EAAU,IAAM,8yI,MCkBTC,EAAM,M,yFAEQC,QAAqB,UAGrBC,KAAe,KAGfC,UAAY,MAGZC,SAAW,MAGXC,SAAW,MAGXC,QAAU,MAGDC,SAGDC,QAEzBC,YAAc,KACpB,GAAIC,KAAKN,SAAU,OACnBM,KAAKF,QAAQG,MAAM,EAGbC,aAAgBC,IACtBA,EAAMC,kBACN,GAAIJ,KAAKN,SAAU,OACnBM,KAAKH,SAASI,MAAM,EAGdI,cAAiBF,IACvB,GAAIH,KAAKN,SAAU,OACnB,GAAIS,EAAMG,MAAQ,SAAWH,EAAMG,MAAQ,IAAK,CAC9CH,EAAMI,iBACNP,KAAKF,QAAQG,M,GAITO,oBAAuBL,IAC7B,GAAIH,KAAKN,SAAU,OACnB,GAAIS,EAAMG,MAAQ,SAAWH,EAAMG,MAAQ,IAAK,CAC9CH,EAAMI,iBACNJ,EAAMC,kBACNJ,KAAKH,SAASI,M,GAKlB,MAAAQ,GACE,MAAMC,GAAiBV,KAAKN,SAE5B,OACEiB,EAACC,EAAI,CAAAN,IAAA,2CACHO,MAAO,CACL,UAAW,KACX,CAAC,YAAYb,KAAKT,WAAY,KAC9B,CAAC,YAAYS,KAAKR,QAAS,KAC3B,oBAAqBQ,KAAKL,SAC1B,mBAAoBK,KAAKJ,QACzB,oBAAqBI,KAAKN,SAC1B,qBAAsBM,KAAKP,YAG7BkB,EAAA,QAAAL,IAAA,2CACEO,MAAM,aACNC,KAAK,OACLC,KAAK,SACLC,SAAUN,EAAgB,IAAMO,UAAS,gBAC1BjB,KAAKN,SAAW,OAASuB,UAAS,eACnCjB,KAAKL,SAAW,OAASsB,UACvCC,QAASlB,KAAKD,YACdoB,UAAWnB,KAAKK,eAEhBM,EAAA,QAAAL,IAAA,2CAAMO,MAAM,eAAeC,KAAK,UAC9BH,EAAA,QAAAL,IAAA,2CAAMc,KAAK,YAGbT,EAAA,QAAAL,IAAA,2CAAMO,MAAM,cAAcC,KAAK,SAC7BH,EAAA,QAAAL,IAAA,8CAGDN,KAAKP,WACJkB,EAAA,UAAAL,IAAA,2CACEO,MAAM,eACNC,KAAK,SACLO,KAAK,SAAQ,aACF,SACX3B,SAAUM,KAAKN,SACfwB,QAASlB,KAAKE,aACdiB,UAAWnB,KAAKQ,qBAAmB,Y","ignoreList":[]}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"names":["accordionItemCss","accordionItemId","TsAccordionItem","headerId","panelId","open","disabled","heading","tsToggle","internalOpen","onOpenChange","newVal","this","connectedCallback","id","handleClick","emit","handleKeyDown","event","key","preventDefault","render","h","Host","class","part","role","tabindex","undefined","onClick","onKeyDown","name","viewBox","fill","stroke","points","hidden"],"sources":["src/components/accordion/accordion-item.css?tag=ts-accordion-item&encapsulation=shadow","src/components/accordion/accordion-item.tsx"],"sourcesContent":["/* ==========================================================================\n ts-accordion-item — Shadow DOM Scoped Styles\n ========================================================================== */\n\n:host {\n display: block;\n}\n\n/* ---- Header ---- */\n.accordion-item__header {\n display: flex;\n align-items: center;\n justify-content: space-between;\n gap: var(--ts-spacing-2);\n padding-block: var(--ts-spacing-3);\n padding-inline: var(--ts-spacing-4);\n background: var(--ts-accordion-header-bg, transparent);\n border: none;\n cursor: pointer;\n font-family: var(--ts-font-family-base);\n font-size: var(--ts-font-size-md);\n font-weight: var(--ts-font-weight-semi);\n color: var(--ts-color-text-primary);\n outline: none;\n transition: background-color var(--ts-transition-fast);\n user-select: none;\n}\n\n.accordion-item__header:hover:not([aria-disabled=\"true\"]) {\n background-color: var(--ts-color-bg-subtle);\n}\n\n.accordion-item__header:focus-visible {\n box-shadow: var(--ts-focus-ring);\n}\n\n/* ---- Disabled ---- */\n:host([disabled]) .accordion-item__header {\n opacity: 0.5;\n cursor: not-allowed;\n}\n\n/* ---- Chevron icon ---- */\n.accordion-item__icon {\n display: inline-flex;\n align-items: center;\n transition: transform var(--ts-transition-fast);\n}\n\n.accordion-item__icon svg {\n inline-size: 1.25em;\n block-size: 1.25em;\n}\n\n:host(.ts-accordion-item--open) .accordion-item__icon {\n transform: rotate(180deg);\n}\n\n/* ---- Panel ---- */\n.accordion-item__panel {\n overflow: hidden;\n transition: max-block-size var(--ts-transition-normal);\n}\n\n.accordion-item__panel[hidden] {\n display: none;\n}\n\n.accordion-item__content {\n padding-block: var(--ts-spacing-2);\n padding-inline: var(--ts-spacing-4);\n padding-block-end: var(--ts-spacing-4);\n font-size: var(--ts-font-size-md);\n color: var(--ts-color-text-secondary);\n}\n","import { Component, Prop, Event, h, Host, State, Watch } from '@stencil/core';\nimport type { EventEmitter } from '@stencil/core';\n\nlet accordionItemId = 0;\n\n/**\n * @slot - Default slot for panel content.\n * @slot header - Custom header content (replaces heading text).\n *\n * @part header - The header button.\n * @part panel - The content panel.\n */\n@Component({\n tag: 'ts-accordion-item',\n styleUrl: 'accordion-item.css',\n shadow: true,\n})\nexport class TsAccordionItem {\n private headerId!: string;\n private panelId!: string;\n\n /** Whether the item is expanded. */\n @Prop({ mutable: true, reflect: true }) open = false;\n\n /** Disables toggling. */\n @Prop({ reflect: true }) disabled = false;\n\n /** Header text for the item. */\n @Prop() heading?: string;\n\n /** Emitted when the item is toggled. */\n @Event({ eventName: 'tsToggle' }) tsToggle!: EventEmitter<{ open: boolean }>;\n\n @State() internalOpen = false;\n\n @Watch('open')\n onOpenChange(newVal: boolean): void {\n this.internalOpen = newVal;\n }\n\n connectedCallback(): void {\n const id = accordionItemId++;\n this.headerId = `ts-accordion-header-${id}`;\n this.panelId = `ts-accordion-panel-${id}`;\n this.internalOpen = this.open;\n }\n\n private handleClick = (): void => {\n if (this.disabled) return;\n this.open = !this.open;\n this.internalOpen = this.open;\n this.tsToggle.emit({ open: this.open });\n };\n\n private handleKeyDown = (event: KeyboardEvent): void => {\n if (event.key === 'Enter' || event.key === ' ') {\n event.preventDefault();\n this.handleClick();\n }\n };\n\n // eslint-disable-next-line @typescript-eslint/explicit-function-return-type\n render() {\n return (\n <Host\n class={{\n 'ts-accordion-item': true,\n 'ts-accordion-item--open': this.internalOpen,\n 'ts-accordion-item--disabled': this.disabled,\n }}\n >\n <div\n class=\"accordion-item__header\"\n part=\"header\"\n id={this.headerId}\n role=\"button\"\n tabindex={this.disabled ? -1 : 0}\n aria-expanded={this.internalOpen ? 'true' : 'false'}\n aria-controls={this.panelId}\n aria-disabled={this.disabled ? 'true' : undefined}\n onClick={this.handleClick}\n onKeyDown={this.handleKeyDown}\n >\n <slot name=\"header\">\n <span class=\"accordion-item__heading\">{this.heading}</span>\n </slot>\n <span class=\"accordion-item__icon\" aria-hidden=\"true\">\n <svg viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\">\n <polyline points=\"6 9 12 15 18 9\" />\n </svg>\n </span>\n </div>\n <div\n class=\"accordion-item__panel\"\n part=\"panel\"\n id={this.panelId}\n role=\"region\"\n aria-labelledby={this.headerId}\n hidden={!this.internalOpen}\n >\n <div class=\"accordion-item__content\">\n <slot />\n </div>\n </div>\n </Host>\n );\n }\n}\n"],"mappings":"yDAAA,MAAMA,EAAmB,IAAM,k0CCG/B,IAAIC,EAAkB,E,MAcTC,EAAe,M,0DAClBC,SACAC,QAGgCC,KAAO,MAGtBC,SAAW,MAG5BC,QAG0BC,SAEzBC,aAAe,MAGxB,YAAAC,CAAaC,GACXC,KAAKH,aAAeE,C,CAGtB,iBAAAE,GACE,MAAMC,EAAKb,IACXW,KAAKT,SAAW,uBAAuBW,IACvCF,KAAKR,QAAU,sBAAsBU,IACrCF,KAAKH,aAAeG,KAAKP,I,CAGnBU,YAAc,KACpB,GAAIH,KAAKN,SAAU,OACnBM,KAAKP,MAAQO,KAAKP,KAClBO,KAAKH,aAAeG,KAAKP,KACzBO,KAAKJ,SAASQ,KAAK,CAAEX,KAAMO,KAAKP,MAAO,EAGjCY,cAAiBC,IACvB,GAAIA,EAAMC,MAAQ,SAAWD,EAAMC,MAAQ,IAAK,CAC9CD,EAAME,iBACNR,KAAKG,a,GAKT,MAAAM,GACE,OACEC,EAACC,EAAI,CAAAJ,IAAA,2CACHK,MAAO,CACL,oBAAqB,KACrB,0BAA2BZ,KAAKH,aAChC,8BAA+BG,KAAKN,WAGtCgB,EAAA,OAAAH,IAAA,2CACEK,MAAM,yBACNC,KAAK,SACLX,GAAIF,KAAKT,SACTuB,KAAK,SACLC,SAAUf,KAAKN,UAAW,EAAK,EAAC,gBACjBM,KAAKH,aAAe,OAAS,QAAO,gBACpCG,KAAKR,QAAO,gBACZQ,KAAKN,SAAW,OAASsB,UACxCC,QAASjB,KAAKG,YACde,UAAWlB,KAAKK,eAEhBK,EAAA,QAAAH,IAAA,2CAAMY,KAAK,UACTT,EAAA,QAAAH,IAAA,2CAAMK,MAAM,2BAA2BZ,KAAKL,UAE9Ce,EAAA,QAAAH,IAAA,2CAAMK,MAAM,uBAAsB,cAAa,QAC7CF,EAAA,OAAAH,IAAA,2CAAKa,QAAQ,YAAYC,KAAK,OAAOC,OAAO,eAAc,eAAc,IAAG,iBAAgB,QAAO,kBAAiB,SACjHZ,EAAA,YAAAH,IAAA,2CAAUgB,OAAO,sBAIvBb,EAAA,OAAAH,IAAA,2CACEK,MAAM,wBACNC,KAAK,QACLX,GAAIF,KAAKR,QACTsB,KAAK,SAAQ,kBACId,KAAKT,SACtBiC,QAASxB,KAAKH,cAEda,EAAA,OAAAH,IAAA,2CAAKK,MAAM,2BACTF,EAAA,QAAAH,IAAA,+C","ignoreList":[]}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"names":["checkboxCss","TsCheckbox","inputId","generateId","checked","indeterminate","disabled","value","name","label","size","error","tsChange","toggle","this","emit","handleClick","handleKeydown","event","key","preventDefault","render","ariaChecked","h","Host","class","part","role","undefined","tabindex","onClick","onKeyDown","viewBox","fill","d","stroke","id"],"sources":["src/components/checkbox/checkbox.css?tag=ts-checkbox&encapsulation=shadow","src/components/checkbox/checkbox.tsx"],"sourcesContent":["/* ==========================================================================\n ts-checkbox — Shadow DOM Scoped Styles\n\n Component tokens (Tier 3):\n --ts-checkbox-size Checkbox box size\n --ts-checkbox-color Checked background color\n --ts-checkbox-radius Border radius\n --ts-checkbox-border-color Default border color\n ========================================================================== */\n\n:host {\n display: inline-block;\n font-family: var(--ts-font-family-base);\n\n --ts-checkbox-size: 1.25rem;\n --ts-checkbox-color: var(--ts-color-interactive-primary);\n --ts-checkbox-radius: 4px;\n --ts-checkbox-border-color: var(--ts-color-border-default);\n}\n\n/* ---- Base container ---- */\n.checkbox__base {\n display: inline-flex;\n align-items: center;\n gap: var(--ts-spacing-2);\n cursor: pointer;\n outline: none;\n}\n\n.checkbox__base:focus-visible .checkbox__control {\n box-shadow: var(--ts-focus-ring);\n}\n\n/* ---- Control box ---- */\n.checkbox__control {\n display: inline-flex;\n align-items: center;\n justify-content: center;\n width: var(--ts-checkbox-size);\n height: var(--ts-checkbox-size);\n box-sizing: border-box;\n border: 2px solid var(--ts-checkbox-border-color);\n border-radius: var(--ts-checkbox-radius);\n background-color: var(--ts-color-bg-elevated);\n transition:\n background-color var(--ts-transition-fast),\n border-color var(--ts-transition-fast),\n box-shadow var(--ts-transition-fast);\n flex-shrink: 0;\n}\n\n/* ---- Checked & indeterminate states ---- */\n:host([checked]) .checkbox__control,\n:host([indeterminate]) .checkbox__control {\n background-color: var(--ts-checkbox-color);\n border-color: var(--ts-checkbox-color);\n color: var(--ts-color-text-on-primary);\n}\n\n/* ---- Hover ---- */\n.checkbox__base:hover:not([aria-disabled=\"true\"]) .checkbox__control {\n border-color: var(--ts-color-primary-500);\n}\n\n/* ---- Error state ---- */\n:host([error]) .checkbox__control {\n border-color: var(--ts-color-danger-500);\n}\n\n/* ---- Disabled state ---- */\n:host([disabled]) .checkbox__base {\n opacity: 0.5;\n cursor: not-allowed;\n pointer-events: none;\n}\n\n/* ---- Checkmark icon ---- */\n.checkbox__icon {\n width: 100%;\n height: 100%;\n transform: scale(1);\n transition: transform var(--ts-transition-fast);\n}\n\n:host([checked]) .checkbox__icon {\n animation: none;\n}\n\n/* ---- Sizes ---- */\n:host([size=\"sm\"]) {\n --ts-checkbox-size: 1rem;\n}\n\n:host([size=\"sm\"]) .checkbox__label {\n font-size: var(--ts-font-size-sm);\n}\n\n:host([size=\"md\"]) .checkbox__label {\n font-size: var(--ts-font-size-md);\n}\n\n:host([size=\"lg\"]) {\n --ts-checkbox-size: 1.5rem;\n}\n\n:host([size=\"lg\"]) .checkbox__label {\n font-size: var(--ts-font-size-lg);\n}\n\n/* ---- Label ---- */\n.checkbox__label {\n color: var(--ts-color-text-primary);\n line-height: var(--ts-line-height-normal);\n user-select: none;\n}\n","import { Component, Prop, Event, h, Host, Element, Method } from '@stencil/core';\nimport type { EventEmitter } from '@stencil/core';\nimport type { TsCheckboxChangeEventDetail } from '../../types';\nimport { generateId } from '../../utils/aria';\n\n/**\n * @slot - Default slot for the checkbox label.\n *\n * @part base - The checkbox container.\n * @part control - The visual checkbox box.\n * @part label - The label wrapper.\n */\n@Component({\n tag: 'ts-checkbox',\n styleUrl: 'checkbox.css',\n shadow: true,\n})\nexport class TsCheckbox {\n @Element() hostEl!: HTMLElement;\n\n private inputId = generateId('ts-checkbox');\n\n /** Whether the checkbox is checked. */\n @Prop({ mutable: true, reflect: true }) checked = false;\n\n /** Whether the checkbox is in an indeterminate state. */\n @Prop({ mutable: true, reflect: true }) indeterminate = false;\n\n /** Renders the checkbox as disabled. */\n @Prop({ reflect: true }) disabled = false;\n\n /** The value associated with this checkbox. */\n @Prop() value = '';\n\n /** Name attribute for form submission. */\n @Prop() name?: string;\n\n /** Label text. If omitted, use the default slot. */\n @Prop() label?: string;\n\n /** The checkbox size. */\n @Prop({ reflect: true }) size: 'sm' | 'md' | 'lg' = 'md';\n\n /** Renders the checkbox in an error state. */\n @Prop({ reflect: true }) error = false;\n\n /** Emitted when the checked state changes. */\n @Event({ eventName: 'tsChange' }) tsChange!: EventEmitter<TsCheckboxChangeEventDetail>;\n\n /** Programmatically toggle the checkbox. */\n @Method()\n async toggle(): Promise<void> {\n if (!this.disabled) {\n this.indeterminate = false;\n this.checked = !this.checked;\n this.tsChange.emit({ checked: this.checked, value: this.value });\n }\n }\n\n private handleClick = (): void => {\n this.toggle();\n };\n\n private handleKeydown = (event: KeyboardEvent): void => {\n if (event.key === ' ') {\n event.preventDefault();\n this.toggle();\n }\n };\n\n // eslint-disable-next-line @typescript-eslint/explicit-function-return-type\n render() {\n const ariaChecked = this.indeterminate ? 'mixed' : this.checked ? 'true' : 'false';\n\n return (\n <Host\n class={{\n 'ts-checkbox': true,\n [`ts-checkbox--${this.size}`]: true,\n 'ts-checkbox--checked': this.checked,\n 'ts-checkbox--indeterminate': this.indeterminate,\n 'ts-checkbox--disabled': this.disabled,\n 'ts-checkbox--error': this.error,\n }}\n >\n <div\n class=\"checkbox__base\"\n part=\"base\"\n role=\"checkbox\"\n aria-checked={ariaChecked}\n aria-disabled={this.disabled ? 'true' : undefined}\n tabindex={this.disabled ? -1 : 0}\n onClick={this.handleClick}\n onKeyDown={this.handleKeydown}\n >\n <div class=\"checkbox__control\" part=\"control\">\n {this.checked && !this.indeterminate && (\n <svg class=\"checkbox__icon\" viewBox=\"0 0 16 16\" fill=\"none\" aria-hidden=\"true\">\n <path\n d=\"M3.5 8L6.5 11L12.5 5\"\n stroke=\"currentColor\"\n stroke-width=\"2\"\n stroke-linecap=\"round\"\n stroke-linejoin=\"round\"\n />\n </svg>\n )}\n {this.indeterminate && (\n <svg class=\"checkbox__icon\" viewBox=\"0 0 16 16\" fill=\"none\" aria-hidden=\"true\">\n <path\n d=\"M4 8H12\"\n stroke=\"currentColor\"\n stroke-width=\"2\"\n stroke-linecap=\"round\"\n />\n </svg>\n )}\n </div>\n\n <label class=\"checkbox__label\" part=\"label\" id={`${this.inputId}-label`}>\n {this.label ? this.label : <slot />}\n </label>\n </div>\n </Host>\n );\n }\n}\n"],"mappings":"oGAAA,MAAMA,EAAc,IAAM,02D,MCiBbC,EAAU,M,sFAGbC,QAAUC,EAAW,eAGWC,QAAU,MAGVC,cAAgB,MAG/BC,SAAW,MAG5BC,MAAQ,GAGRC,KAGAC,MAGiBC,KAA2B,KAG3BC,MAAQ,MAGCC,SAIlC,YAAMC,GACJ,IAAKC,KAAKR,SAAU,CAClBQ,KAAKT,cAAgB,MACrBS,KAAKV,SAAWU,KAAKV,QACrBU,KAAKF,SAASG,KAAK,CAAEX,QAASU,KAAKV,QAASG,MAAOO,KAAKP,O,EAIpDS,YAAc,KACpBF,KAAKD,QAAQ,EAGPI,cAAiBC,IACvB,GAAIA,EAAMC,MAAQ,IAAK,CACrBD,EAAME,iBACNN,KAAKD,Q,GAKT,MAAAQ,GACE,MAAMC,EAAcR,KAAKT,cAAgB,QAAUS,KAAKV,QAAU,OAAS,QAE3E,OACEmB,EAACC,EAAI,CAAAL,IAAA,2CACHM,MAAO,CACL,cAAe,KACf,CAAC,gBAAgBX,KAAKJ,QAAS,KAC/B,uBAAwBI,KAAKV,QAC7B,6BAA8BU,KAAKT,cACnC,wBAAyBS,KAAKR,SAC9B,qBAAsBQ,KAAKH,QAG7BY,EAAA,OAAAJ,IAAA,2CACEM,MAAM,iBACNC,KAAK,OACLC,KAAK,WAAU,eACDL,EAAW,gBACVR,KAAKR,SAAW,OAASsB,UACxCC,SAAUf,KAAKR,UAAW,EAAK,EAC/BwB,QAAShB,KAAKE,YACde,UAAWjB,KAAKG,eAEhBM,EAAA,OAAAJ,IAAA,2CAAKM,MAAM,oBAAoBC,KAAK,WACjCZ,KAAKV,UAAYU,KAAKT,eACrBkB,EAAA,OAAAJ,IAAA,2CAAKM,MAAM,iBAAiBO,QAAQ,YAAYC,KAAK,OAAM,cAAa,QACtEV,EAAA,QAAAJ,IAAA,2CACEe,EAAE,uBACFC,OAAO,eAAc,eACR,IAAG,iBACD,QAAO,kBACN,WAIrBrB,KAAKT,eACJkB,EAAA,OAAAJ,IAAA,2CAAKM,MAAM,iBAAiBO,QAAQ,YAAYC,KAAK,OAAM,cAAa,QACtEV,EAAA,QAAAJ,IAAA,2CACEe,EAAE,UACFC,OAAO,eAAc,eACR,IAAG,iBACD,YAMvBZ,EAAA,SAAAJ,IAAA,2CAAOM,MAAM,kBAAkBC,KAAK,QAAQU,GAAI,GAAGtB,KAAKZ,iBACrDY,KAAKL,MAAQK,KAAKL,MAAQc,EAAA,e","ignoreList":[]}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"names":["menuCss","TsMenu","menuId","generateId","triggerEl","open","trigger","placement","tsOpen","tsClose","focusedIndex","handleOpenChange","isOpen","this","emit","requestAnimationFrame","focusFirstItem","handleDocumentClick","event","hostEl","contains","target","handleItemSelect","focus","handleKeydown","items","getMenuItems","length","key","preventDefault","focusItem","Array","from","querySelectorAll","el","item","setFocus","handleTriggerClick","handleTriggerKeydown","handleMouseEnter","handleMouseLeave","render","h","Host","class","onMouseEnter","onMouseLeave","ref","onClick","onKeyDown","name","menu__panel","part","id","role","undefined"],"sources":["src/components/menu/menu.css?tag=ts-menu&encapsulation=shadow","src/components/menu/menu.tsx"],"sourcesContent":["/* ==========================================================================\n ts-menu — Shadow DOM Scoped Styles\n\n Component tokens (Tier 3):\n --ts-menu-bg Menu panel background\n --ts-menu-radius Menu panel border radius\n --ts-menu-shadow Menu panel elevation shadow\n ========================================================================== */\n\n:host {\n display: inline-block;\n position: relative;\n font-family: var(--ts-font-family-base);\n\n --ts-menu-bg: var(--ts-color-bg-elevated);\n --ts-menu-radius: var(--ts-shape-overlay);\n --ts-menu-shadow: var(--ts-shadow-lg);\n}\n\n/* ---- Trigger ---- */\n.menu__trigger {\n display: inline-flex;\n}\n\n/* ---- Panel ---- */\n.menu__panel {\n position: absolute;\n z-index: var(--ts-z-tooltip);\n display: none;\n flex-direction: column;\n min-inline-size: 10rem;\n padding-block: var(--ts-spacing-1);\n background-color: var(--ts-menu-bg);\n border-radius: var(--ts-menu-radius);\n box-shadow: var(--ts-menu-shadow);\n border: 1px solid var(--ts-color-border-default);\n overflow-y: auto;\n max-block-size: 20rem;\n animation: ts-menu-fade-in 150ms ease-out;\n}\n\n.menu__panel--open {\n display: flex;\n}\n\n/* ---- Placement ---- */\n.menu__panel--bottom-start {\n inset-block-start: 100%;\n inset-inline-start: 0;\n margin-block-start: var(--ts-spacing-1);\n}\n\n.menu__panel--bottom-end {\n inset-block-start: 100%;\n inset-inline-end: 0;\n margin-block-start: var(--ts-spacing-1);\n}\n\n.menu__panel--top-start {\n inset-block-end: 100%;\n inset-inline-start: 0;\n margin-block-end: var(--ts-spacing-1);\n}\n\n.menu__panel--top-end {\n inset-block-end: 100%;\n inset-inline-end: 0;\n margin-block-end: var(--ts-spacing-1);\n}\n\n/* ---- Animation ---- */\n@keyframes ts-menu-fade-in {\n from {\n opacity: 0;\n transform: translateY(4px);\n }\n to {\n opacity: 1;\n transform: translateY(0);\n }\n}\n","import { Component, Prop, State, Event, h, Host, Element, Watch, Listen } from '@stencil/core';\nimport type { EventEmitter } from '@stencil/core';\nimport { generateId } from '../../utils/aria';\n\nexport type TsMenuPlacement = 'bottom-start' | 'bottom-end' | 'top-start' | 'top-end';\n\nexport type TsMenuTrigger = 'click' | 'hover';\n\n/**\n * @slot trigger - The element that opens the menu (e.g., a button).\n * @slot - Default slot for ts-menu-item children.\n *\n * @part panel - The dropdown panel container.\n */\n@Component({\n tag: 'ts-menu',\n styleUrl: 'menu.css',\n shadow: true,\n})\nexport class TsMenu {\n @Element() hostEl!: HTMLElement;\n\n private menuId = generateId('ts-menu');\n private triggerEl?: HTMLElement;\n\n /** Whether the menu dropdown is open. */\n @Prop({ mutable: true, reflect: true }) open = false;\n\n /** How the menu is triggered. */\n @Prop({ reflect: true }) trigger: TsMenuTrigger = 'click';\n\n /** Placement of the dropdown relative to the trigger. */\n @Prop({ reflect: true }) placement: TsMenuPlacement = 'bottom-start';\n\n /** Emitted when the menu opens. */\n @Event({ eventName: 'tsOpen' }) tsOpen!: EventEmitter<void>;\n\n /** Emitted when the menu closes. */\n @Event({ eventName: 'tsClose' }) tsClose!: EventEmitter<void>;\n\n /** Tracks the currently focused item index for keyboard navigation. */\n @State() focusedIndex = -1;\n\n @Watch('open')\n handleOpenChange(isOpen: boolean): void {\n if (isOpen) {\n this.tsOpen.emit();\n requestAnimationFrame(() => {\n this.focusFirstItem();\n });\n } else {\n this.focusedIndex = -1;\n this.tsClose.emit();\n }\n }\n\n @Listen('click', { target: 'document' })\n handleDocumentClick(event: MouseEvent): void {\n if (this.open && !this.hostEl.contains(event.target as Node)) {\n this.open = false;\n }\n }\n\n @Listen('tsSelect')\n handleItemSelect(): void {\n this.open = false;\n this.triggerEl?.focus();\n }\n\n @Listen('keydown')\n handleKeydown(event: KeyboardEvent): void {\n if (!this.open) return;\n\n const items = this.getMenuItems();\n if (items.length === 0) return;\n\n switch (event.key) {\n case 'ArrowDown': {\n event.preventDefault();\n this.focusedIndex = (this.focusedIndex + 1) % items.length;\n this.focusItem(items[this.focusedIndex]);\n break;\n }\n case 'ArrowUp': {\n event.preventDefault();\n this.focusedIndex = this.focusedIndex <= 0 ? items.length - 1 : this.focusedIndex - 1;\n this.focusItem(items[this.focusedIndex]);\n break;\n }\n case 'Home': {\n event.preventDefault();\n this.focusedIndex = 0;\n this.focusItem(items[0]);\n break;\n }\n case 'End': {\n event.preventDefault();\n this.focusedIndex = items.length - 1;\n this.focusItem(items[this.focusedIndex]);\n break;\n }\n case 'Escape': {\n event.preventDefault();\n this.open = false;\n this.triggerEl?.focus();\n break;\n }\n case 'Tab': {\n this.open = false;\n break;\n }\n }\n }\n\n private getMenuItems(): HTMLElement[] {\n return Array.from(this.hostEl.querySelectorAll<HTMLElement>('ts-menu-item:not([disabled])'));\n }\n\n private focusItem(el: HTMLElement): void {\n const item = el as HTMLElement & { setFocus?: () => Promise<void> };\n if (typeof item.setFocus === 'function') {\n item.setFocus();\n } else {\n el.focus();\n }\n }\n\n private focusFirstItem(): void {\n const items = this.getMenuItems();\n if (items.length > 0) {\n this.focusedIndex = 0;\n this.focusItem(items[0]);\n }\n }\n\n private handleTriggerClick = (): void => {\n if (this.trigger === 'click') {\n this.open = !this.open;\n }\n };\n\n private handleTriggerKeydown = (event: KeyboardEvent): void => {\n if (event.key === 'ArrowDown' || event.key === 'Enter' || event.key === ' ') {\n event.preventDefault();\n this.open = true;\n }\n };\n\n private handleMouseEnter = (): void => {\n if (this.trigger === 'hover') {\n this.open = true;\n }\n };\n\n private handleMouseLeave = (): void => {\n if (this.trigger === 'hover') {\n this.open = false;\n }\n };\n\n // eslint-disable-next-line @typescript-eslint/explicit-function-return-type\n render() {\n return (\n <Host\n class={{\n 'ts-menu': true,\n 'ts-menu--open': this.open,\n }}\n onMouseEnter={this.handleMouseEnter}\n onMouseLeave={this.handleMouseLeave}\n >\n <div\n class=\"menu__trigger\"\n ref={(el) => (this.triggerEl = el)}\n onClick={this.handleTriggerClick}\n onKeyDown={this.handleTriggerKeydown}\n aria-haspopup=\"true\"\n aria-expanded={this.open ? 'true' : 'false'}\n aria-controls={this.menuId}\n >\n <slot name=\"trigger\" />\n </div>\n\n <div\n class={{\n 'menu__panel': true,\n 'menu__panel--open': this.open,\n [`menu__panel--${this.placement}`]: true,\n }}\n part=\"panel\"\n id={this.menuId}\n role=\"menu\"\n aria-hidden={!this.open ? 'true' : undefined}\n >\n <slot />\n </div>\n </Host>\n );\n }\n}\n"],"mappings":"oGAAA,MAAMA,EAAU,IAAM,ypC,MCmBTC,EAAM,M,iHAGTC,OAASC,EAAW,WACpBC,UAGgCC,KAAO,MAGtBC,QAAyB,QAGzBC,UAA6B,eAGtBC,OAGCC,QAGxBC,cAAe,EAGxB,gBAAAC,CAAiBC,GACf,GAAIA,EAAQ,CACVC,KAAKL,OAAOM,OACZC,uBAAsB,KACpBF,KAAKG,gBAAgB,G,KAElB,CACLH,KAAKH,cAAe,EACpBG,KAAKJ,QAAQK,M,EAKjB,mBAAAG,CAAoBC,GAClB,GAAIL,KAAKR,OAASQ,KAAKM,OAAOC,SAASF,EAAMG,QAAiB,CAC5DR,KAAKR,KAAO,K,EAKhB,gBAAAiB,GACET,KAAKR,KAAO,MACZQ,KAAKT,WAAWmB,O,CAIlB,aAAAC,CAAcN,GACZ,IAAKL,KAAKR,KAAM,OAEhB,MAAMoB,EAAQZ,KAAKa,eACnB,GAAID,EAAME,SAAW,EAAG,OAExB,OAAQT,EAAMU,KACZ,IAAK,YAAa,CAChBV,EAAMW,iBACNhB,KAAKH,cAAgBG,KAAKH,aAAe,GAAKe,EAAME,OACpDd,KAAKiB,UAAUL,EAAMZ,KAAKH,eAC1B,K,CAEF,IAAK,UAAW,CACdQ,EAAMW,iBACNhB,KAAKH,aAAeG,KAAKH,cAAgB,EAAIe,EAAME,OAAS,EAAId,KAAKH,aAAe,EACpFG,KAAKiB,UAAUL,EAAMZ,KAAKH,eAC1B,K,CAEF,IAAK,OAAQ,CACXQ,EAAMW,iBACNhB,KAAKH,aAAe,EACpBG,KAAKiB,UAAUL,EAAM,IACrB,K,CAEF,IAAK,MAAO,CACVP,EAAMW,iBACNhB,KAAKH,aAAee,EAAME,OAAS,EACnCd,KAAKiB,UAAUL,EAAMZ,KAAKH,eAC1B,K,CAEF,IAAK,SAAU,CACbQ,EAAMW,iBACNhB,KAAKR,KAAO,MACZQ,KAAKT,WAAWmB,QAChB,K,CAEF,IAAK,MAAO,CACVV,KAAKR,KAAO,MACZ,K,GAKE,YAAAqB,GACN,OAAOK,MAAMC,KAAKnB,KAAKM,OAAOc,iBAA8B,gC,CAGtD,SAAAH,CAAUI,GAChB,MAAMC,EAAOD,EACb,UAAWC,EAAKC,WAAa,WAAY,CACvCD,EAAKC,U,KACA,CACLF,EAAGX,O,EAIC,cAAAP,GACN,MAAMS,EAAQZ,KAAKa,eACnB,GAAID,EAAME,OAAS,EAAG,CACpBd,KAAKH,aAAe,EACpBG,KAAKiB,UAAUL,EAAM,G,EAIjBY,mBAAqB,KAC3B,GAAIxB,KAAKP,UAAY,QAAS,CAC5BO,KAAKR,MAAQQ,KAAKR,I,GAIdiC,qBAAwBpB,IAC9B,GAAIA,EAAMU,MAAQ,aAAeV,EAAMU,MAAQ,SAAWV,EAAMU,MAAQ,IAAK,CAC3EV,EAAMW,iBACNhB,KAAKR,KAAO,I,GAIRkC,iBAAmB,KACzB,GAAI1B,KAAKP,UAAY,QAAS,CAC5BO,KAAKR,KAAO,I,GAIRmC,iBAAmB,KACzB,GAAI3B,KAAKP,UAAY,QAAS,CAC5BO,KAAKR,KAAO,K,GAKhB,MAAAoC,GACE,OACEC,EAACC,EAAI,CAAAf,IAAA,2CACHgB,MAAO,CACL,UAAW,KACX,gBAAiB/B,KAAKR,MAExBwC,aAAchC,KAAK0B,iBACnBO,aAAcjC,KAAK2B,kBAEnBE,EAAA,OAAAd,IAAA,2CACEgB,MAAM,gBACNG,IAAMb,GAAQrB,KAAKT,UAAY8B,EAC/Bc,QAASnC,KAAKwB,mBACdY,UAAWpC,KAAKyB,qBAAoB,gBACtB,OAAM,gBACLzB,KAAKR,KAAO,OAAS,QAAO,gBAC5BQ,KAAKX,QAEpBwC,EAAA,QAAAd,IAAA,2CAAMsB,KAAK,aAGbR,EAAA,OAAAd,IAAA,2CACEgB,MAAO,CACLO,YAAe,KACf,oBAAqBtC,KAAKR,KAC1B,CAAC,gBAAgBQ,KAAKN,aAAc,MAEtC6C,KAAK,QACLC,GAAIxC,KAAKX,OACToD,KAAK,OAAM,eACGzC,KAAKR,KAAO,OAASkD,WAEnCb,EAAA,QAAAd,IAAA,8C","ignoreList":[]}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"names":["fileUploadCss","TsFileUpload","fileInputEl","accept","multiple","maxSize","disabled","label","name","tsChange","isDragOver","handleClick","this","click","handleKeydown","event","key","preventDefault","handleFileChange","input","target","files","validateFiles","Array","from","length","emit","value","handleDragOver","stopPropagation","handleDragLeave","handleDrop","droppedFiles","dataTransfer","validFiles","acceptedTypes","split","map","t","trim","toLowerCase","filter","file","ext","pop","mime","type","some","accepted","endsWith","startsWith","replace","size","render","h","Host","class","part","role","tabindex","undefined","onClick","onKeyDown","onDragOver","onDragLeave","onDrop","ref","el","onChange"],"sources":["src/components/file-upload/file-upload.css?tag=ts-file-upload&encapsulation=shadow","src/components/file-upload/file-upload.tsx"],"sourcesContent":["/* ==========================================================================\n ts-file-upload — Shadow DOM Scoped Styles\n\n Component tokens (Tier 3):\n --ts-file-upload-border-color Dropzone border color\n --ts-file-upload-bg Dropzone background\n --ts-file-upload-radius Dropzone border radius\n ========================================================================== */\n\n:host {\n display: block;\n font-family: var(--ts-font-family-base);\n\n --ts-file-upload-border-color: var(--ts-color-border-default);\n --ts-file-upload-bg: var(--ts-color-bg-surface);\n --ts-file-upload-radius: var(--ts-radius-md);\n}\n\n/* ---- Dropzone ---- */\n.file-upload__dropzone {\n display: flex;\n align-items: center;\n justify-content: center;\n min-block-size: 120px;\n padding: var(--ts-spacing-6);\n border: 2px dashed var(--ts-file-upload-border-color);\n border-radius: var(--ts-file-upload-radius);\n background-color: var(--ts-file-upload-bg);\n cursor: pointer;\n outline: none;\n transition:\n border-color var(--ts-transition-fast),\n background-color var(--ts-transition-fast),\n box-shadow var(--ts-transition-fast);\n}\n\n.file-upload__dropzone:hover:not([aria-disabled=\"true\"]) {\n border-color: var(--ts-color-interactive-primary);\n background-color: var(--ts-color-interactive-primary-subtle, rgba(59, 130, 246, 0.05));\n}\n\n.file-upload__dropzone:focus-visible {\n box-shadow: var(--ts-focus-ring);\n border-color: var(--ts-color-interactive-primary);\n}\n\n/* ---- Drag over state ---- */\n.file-upload__dropzone--drag-over {\n border-color: var(--ts-color-interactive-primary);\n background-color: var(--ts-color-interactive-primary-subtle, rgba(59, 130, 246, 0.1));\n border-style: solid;\n}\n\n/* ---- Disabled ---- */\n:host([disabled]) .file-upload__dropzone {\n opacity: 0.5;\n cursor: not-allowed;\n pointer-events: none;\n}\n\n/* ---- Label ---- */\n.file-upload__label {\n display: flex;\n flex-direction: column;\n align-items: center;\n gap: var(--ts-spacing-2);\n font-size: var(--ts-font-size-sm);\n color: var(--ts-color-text-secondary);\n text-align: center;\n pointer-events: none;\n}\n\n/* ---- Hidden file input ---- */\n.file-upload__input {\n position: absolute;\n width: 1px;\n height: 1px;\n padding: 0;\n margin: -1px;\n overflow: hidden;\n clip: rect(0, 0, 0, 0);\n white-space: nowrap;\n border: 0;\n}\n","import { Component, Prop, State, Event, h, Host, Element } from '@stencil/core';\nimport type { EventEmitter } from '@stencil/core';\n\n/**\n * @slot - Default slot for custom dropzone content.\n *\n * @part dropzone - The dropzone area.\n * @part label - The label text.\n * @part input - The hidden file input.\n */\n@Component({\n tag: 'ts-file-upload',\n styleUrl: 'file-upload.css',\n shadow: true,\n})\nexport class TsFileUpload {\n @Element() hostEl!: HTMLElement;\n\n private fileInputEl?: HTMLInputElement;\n\n /** Accepted file types (e.g. '.jpg,.png'). */\n @Prop() accept?: string;\n\n /** Whether multiple files can be selected. */\n @Prop() multiple = false;\n\n /** Maximum file size in bytes. */\n @Prop() maxSize?: number;\n\n /** Whether the file upload is disabled. */\n @Prop({ reflect: true }) disabled = false;\n\n /** Label text for the dropzone. */\n @Prop() label = 'Drop files here or click to upload';\n\n /** Form field name. */\n @Prop() name?: string;\n\n /** Emitted when files are selected or dropped. */\n @Event({ eventName: 'tsChange' }) tsChange!: EventEmitter<{ files: File[] }>;\n\n /** Whether a drag operation is over the dropzone. */\n @State() isDragOver = false;\n\n private handleClick = (): void => {\n if (this.disabled) return;\n this.fileInputEl?.click();\n };\n\n private handleKeydown = (event: KeyboardEvent): void => {\n if (this.disabled) return;\n if (event.key === 'Enter' || event.key === ' ') {\n event.preventDefault();\n this.fileInputEl?.click();\n }\n };\n\n private handleFileChange = (event: Event): void => {\n const input = event.target as HTMLInputElement;\n if (input.files) {\n const files = this.validateFiles(Array.from(input.files));\n if (files.length > 0) {\n this.tsChange.emit({ files });\n }\n }\n // Reset input so the same file can be selected again\n if (this.fileInputEl) {\n this.fileInputEl.value = '';\n }\n };\n\n private handleDragOver = (event: DragEvent): void => {\n event.preventDefault();\n event.stopPropagation();\n if (!this.disabled) {\n this.isDragOver = true;\n }\n };\n\n private handleDragLeave = (event: DragEvent): void => {\n event.preventDefault();\n event.stopPropagation();\n this.isDragOver = false;\n };\n\n private handleDrop = (event: DragEvent): void => {\n event.preventDefault();\n event.stopPropagation();\n this.isDragOver = false;\n\n if (this.disabled) return;\n\n const droppedFiles = event.dataTransfer?.files;\n if (droppedFiles) {\n const files = this.validateFiles(Array.from(droppedFiles));\n if (files.length > 0) {\n this.tsChange.emit({ files });\n }\n }\n };\n\n private validateFiles(files: File[]): File[] {\n let validFiles = files;\n\n // Filter by accepted types\n if (this.accept) {\n const acceptedTypes = this.accept.split(',').map((t) => t.trim().toLowerCase());\n validFiles = validFiles.filter((file) => {\n const ext = '.' + file.name.split('.').pop()?.toLowerCase();\n const mime = file.type.toLowerCase();\n return acceptedTypes.some(\n (accepted) =>\n accepted === ext ||\n accepted === mime ||\n (accepted.endsWith('/*') && mime.startsWith(accepted.replace('/*', '/'))),\n );\n });\n }\n\n // Filter by max size\n if (this.maxSize) {\n validFiles = validFiles.filter((file) => file.size <= this.maxSize!);\n }\n\n // If not multiple, take only the first\n if (!this.multiple && validFiles.length > 1) {\n validFiles = [validFiles[0]];\n }\n\n return validFiles;\n }\n\n // eslint-disable-next-line @typescript-eslint/explicit-function-return-type\n render() {\n return (\n <Host\n class={{\n 'ts-file-upload': true,\n 'ts-file-upload--drag-over': this.isDragOver,\n 'ts-file-upload--disabled': this.disabled,\n }}\n >\n <div\n class={{\n 'file-upload__dropzone': true,\n 'file-upload__dropzone--drag-over': this.isDragOver,\n }}\n part=\"dropzone\"\n role=\"button\"\n tabindex={this.disabled ? -1 : 0}\n aria-disabled={this.disabled ? 'true' : undefined}\n aria-label={this.label}\n onClick={this.handleClick}\n onKeyDown={this.handleKeydown}\n onDragOver={this.handleDragOver}\n onDragLeave={this.handleDragLeave}\n onDrop={this.handleDrop}\n >\n <span class=\"file-upload__label\" part=\"label\">\n <slot>{this.label}</slot>\n </span>\n\n <input\n ref={(el) => (this.fileInputEl = el)}\n class=\"file-upload__input\"\n part=\"input\"\n type=\"file\"\n name={this.name}\n accept={this.accept}\n multiple={this.multiple}\n disabled={this.disabled}\n tabindex={-1}\n aria-hidden=\"true\"\n onChange={this.handleFileChange}\n />\n </div>\n </Host>\n );\n }\n}\n"],"mappings":"gEAAA,MAAMA,EAAgB,IAAM,qjD,MCefC,EAAY,M,sFAGfC,YAGAC,OAGAC,SAAW,MAGXC,QAGiBC,SAAW,MAG5BC,MAAQ,qCAGRC,KAG0BC,SAGzBC,WAAa,MAEdC,YAAc,KACpB,GAAIC,KAAKN,SAAU,OACnBM,KAAKV,aAAaW,OAAO,EAGnBC,cAAiBC,IACvB,GAAIH,KAAKN,SAAU,OACnB,GAAIS,EAAMC,MAAQ,SAAWD,EAAMC,MAAQ,IAAK,CAC9CD,EAAME,iBACNL,KAAKV,aAAaW,O,GAIdK,iBAAoBH,IAC1B,MAAMI,EAAQJ,EAAMK,OACpB,GAAID,EAAME,MAAO,CACf,MAAMA,EAAQT,KAAKU,cAAcC,MAAMC,KAAKL,EAAME,QAClD,GAAIA,EAAMI,OAAS,EAAG,CACpBb,KAAKH,SAASiB,KAAK,CAAEL,S,EAIzB,GAAIT,KAAKV,YAAa,CACpBU,KAAKV,YAAYyB,MAAQ,E,GAIrBC,eAAkBb,IACxBA,EAAME,iBACNF,EAAMc,kBACN,IAAKjB,KAAKN,SAAU,CAClBM,KAAKF,WAAa,I,GAIdoB,gBAAmBf,IACzBA,EAAME,iBACNF,EAAMc,kBACNjB,KAAKF,WAAa,KAAK,EAGjBqB,WAAchB,IACpBA,EAAME,iBACNF,EAAMc,kBACNjB,KAAKF,WAAa,MAElB,GAAIE,KAAKN,SAAU,OAEnB,MAAM0B,EAAejB,EAAMkB,cAAcZ,MACzC,GAAIW,EAAc,CAChB,MAAMX,EAAQT,KAAKU,cAAcC,MAAMC,KAAKQ,IAC5C,GAAIX,EAAMI,OAAS,EAAG,CACpBb,KAAKH,SAASiB,KAAK,CAAEL,S,IAKnB,aAAAC,CAAcD,GACpB,IAAIa,EAAab,EAGjB,GAAIT,KAAKT,OAAQ,CACf,MAAMgC,EAAgBvB,KAAKT,OAAOiC,MAAM,KAAKC,KAAKC,GAAMA,EAAEC,OAAOC,gBACjEN,EAAaA,EAAWO,QAAQC,IAC9B,MAAMC,EAAM,IAAMD,EAAKlC,KAAK4B,MAAM,KAAKQ,OAAOJ,cAC9C,MAAMK,EAAOH,EAAKI,KAAKN,cACvB,OAAOL,EAAcY,MAClBC,GACCA,IAAaL,GACbK,IAAaH,GACZG,EAASC,SAAS,OAASJ,EAAKK,WAAWF,EAASG,QAAQ,KAAM,OACtE,G,CAKL,GAAIvC,KAAKP,QAAS,CAChB6B,EAAaA,EAAWO,QAAQC,GAASA,EAAKU,MAAQxC,KAAKP,S,CAI7D,IAAKO,KAAKR,UAAY8B,EAAWT,OAAS,EAAG,CAC3CS,EAAa,CAACA,EAAW,G,CAG3B,OAAOA,C,CAIT,MAAAmB,GACE,OACEC,EAACC,EAAI,CAAAvC,IAAA,2CACHwC,MAAO,CACL,iBAAkB,KAClB,4BAA6B5C,KAAKF,WAClC,2BAA4BE,KAAKN,WAGnCgD,EAAA,OAAAtC,IAAA,2CACEwC,MAAO,CACL,wBAAyB,KACzB,mCAAoC5C,KAAKF,YAE3C+C,KAAK,WACLC,KAAK,SACLC,SAAU/C,KAAKN,UAAW,EAAK,EAAC,gBACjBM,KAAKN,SAAW,OAASsD,UAAS,aACrChD,KAAKL,MACjBsD,QAASjD,KAAKD,YACdmD,UAAWlD,KAAKE,cAChBiD,WAAYnD,KAAKgB,eACjBoC,YAAapD,KAAKkB,gBAClBmC,OAAQrD,KAAKmB,YAEbuB,EAAA,QAAAtC,IAAA,2CAAMwC,MAAM,qBAAqBC,KAAK,SACpCH,EAAA,QAAAtC,IAAA,4CAAOJ,KAAKL,QAGd+C,EAAA,SAAAtC,IAAA,2CACEkD,IAAMC,GAAQvD,KAAKV,YAAciE,EACjCX,MAAM,qBACNC,KAAK,QACLX,KAAK,OACLtC,KAAMI,KAAKJ,KACXL,OAAQS,KAAKT,OACbC,SAAUQ,KAAKR,SACfE,SAAUM,KAAKN,SACfqD,UAAU,EAAE,cACA,OACZS,SAAUxD,KAAKM,oB","ignoreList":[]}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"names":["gridCss","TsGrid","columns","gap","minColumnWidth","align","render","gridTemplateColumns","this","style","alignItems","h","Host","key"],"sources":["src/components/grid/grid.css?tag=ts-grid&encapsulation=shadow","src/components/grid/grid.tsx"],"sourcesContent":["/* ==========================================================================\n ts-grid — Shadow DOM Scoped Styles\n\n CSS Grid layout component with responsive auto-fill columns.\n ========================================================================== */\n\n:host {\n display: grid;\n width: 100%;\n box-sizing: border-box;\n}\n","import { Component, Prop, h, Host } from '@stencil/core';\n\n/**\n * @slot - Default slot for grid items.\n *\n * @part base - The grid container.\n */\n@Component({\n tag: 'ts-grid',\n styleUrl: 'grid.css',\n shadow: true,\n})\nexport class TsGrid {\n /** Number of columns or 'auto' for responsive auto-fill. */\n @Prop({ reflect: true }) columns: string = 'auto';\n\n /** Spacing token number for gap between items. */\n @Prop({ reflect: true }) gap: string = '4';\n\n /** Minimum column width when columns is 'auto'. */\n @Prop({ reflect: true }) minColumnWidth: string = '280px';\n\n /** Vertical alignment of grid items. */\n @Prop({ reflect: true }) align: 'start' | 'center' | 'end' | 'stretch' = 'stretch';\n\n // eslint-disable-next-line @typescript-eslint/explicit-function-return-type\n render() {\n const gridTemplateColumns =\n this.columns === 'auto'\n ? `repeat(auto-fill, minmax(${this.minColumnWidth}, 1fr))`\n : `repeat(${this.columns}, 1fr)`;\n\n const style = {\n gridTemplateColumns,\n gap: `var(--ts-spacing-${this.gap})`,\n alignItems: this.align,\n };\n\n return (\n <Host style={style}>\n <slot />\n </Host>\n );\n }\n}\n"],"mappings":"kDAAA,MAAMA,EAAU,IAAM,uD,MCYTC,EAAM,M,yBAEQC,QAAkB,OAGlBC,IAAc,IAGdC,eAAyB,QAGzBC,MAAgD,UAGzE,MAAAC,GACE,MAAMC,EACJC,KAAKN,UAAY,OACb,4BAA4BM,KAAKJ,wBACjC,UAAUI,KAAKN,gBAErB,MAAMO,EAAQ,CACZF,sBACAJ,IAAK,oBAAoBK,KAAKL,OAC9BO,WAAYF,KAAKH,OAGnB,OACEM,EAACC,EAAI,CAAAC,IAAA,2CAACJ,MAAOA,GACXE,EAAA,QAAAE,IAAA,6C","ignoreList":[]}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"names":["toggleCss","TsToggle","inputId","generateId","checked","size","disabled","name","value","tsChange","toggle","this","emit","handleClick","handleKeydown","event","key","preventDefault","render","h","Host","class","part","role","undefined","tabindex","onClick","onKeyDown","id"],"sources":["src/components/toggle/toggle.css?tag=ts-toggle&encapsulation=shadow","src/components/toggle/toggle.tsx"],"sourcesContent":["/* ==========================================================================\n ts-toggle — Shadow DOM Scoped Styles\n\n Component tokens (Tier 3):\n --ts-toggle-track-bg Unchecked track background\n --ts-toggle-track-bg-checked Checked track background\n --ts-toggle-thumb-bg Thumb background\n --ts-toggle-focus-ring Focus ring box-shadow\n ========================================================================== */\n\n:host {\n display: inline-block;\n font-family: var(--ts-font-family-base);\n\n --ts-toggle-track-bg: var(--ts-color-neutral-200);\n --ts-toggle-track-bg-checked: var(--ts-color-primary-600);\n --ts-toggle-thumb-bg: var(--ts-color-bg-elevated);\n --ts-toggle-focus-ring: var(--ts-focus-ring);\n}\n\n.toggle__base {\n display: inline-flex;\n align-items: center;\n gap: var(--ts-spacing-2);\n cursor: pointer;\n outline: none;\n}\n\n.toggle__base:focus-visible .toggle__track {\n box-shadow: var(--ts-toggle-focus-ring);\n}\n\n:host(.ts-toggle--disabled) .toggle__base {\n opacity: 0.5;\n cursor: not-allowed;\n}\n\n/* ---- Track (M3 — outlined when unchecked) ---- */\n.toggle__track {\n position: relative;\n background-color: var(--ts-toggle-track-bg);\n border-radius: var(--ts-radius-full);\n border: 2px solid var(--ts-color-border-default);\n box-shadow: none;\n transition:\n background-color var(--ts-transition-fast),\n border-color var(--ts-transition-fast),\n box-shadow var(--ts-transition-fast);\n flex-shrink: 0;\n}\n\n:host(.ts-toggle--checked) .toggle__track {\n background-color: var(--ts-toggle-track-bg-checked);\n border-color: var(--ts-toggle-track-bg-checked);\n box-shadow: none;\n}\n\n/* ---- Thumb ---- */\n.toggle__thumb {\n position: absolute;\n top: 50%;\n transform: translateY(-50%) scale(1);\n background-color: var(--ts-toggle-thumb-bg);\n border-radius: var(--ts-radius-full);\n box-shadow: 0 1px 2px 0 rgba(0, 0, 0, 0.06);\n transition:\n inset-inline-start var(--ts-transition-fast),\n transform var(--ts-transition-fast),\n box-shadow var(--ts-transition-fast);\n}\n\n:host(.ts-toggle--checked) .toggle__thumb {\n box-shadow: 0 1px 2px 0 rgba(0, 0, 0, 0.06);\n}\n\n/* ---- Sizes ---- */\n:host([size=\"sm\"]) .toggle__track { width: 32px; height: 18px; }\n:host([size=\"sm\"]) .toggle__thumb { width: 14px; height: 14px; inset-inline-start: 2px; }\n:host(.ts-toggle--checked[size=\"sm\"]) .toggle__thumb { inset-inline-start: 16px; }\n\n:host([size=\"md\"]) .toggle__track { width: 40px; height: 22px; }\n:host([size=\"md\"]) .toggle__thumb { width: 18px; height: 18px; inset-inline-start: 2px; }\n:host(.ts-toggle--checked[size=\"md\"]) .toggle__thumb { inset-inline-start: 20px; }\n\n:host([size=\"lg\"]) .toggle__track { width: 50px; height: 28px; }\n:host([size=\"lg\"]) .toggle__thumb { width: 24px; height: 24px; inset-inline-start: 2px; }\n:host(.ts-toggle--checked[size=\"lg\"]) .toggle__thumb { inset-inline-start: 24px; }\n\n/* ---- Label ---- */\n.toggle__label {\n font-size: var(--ts-font-size-sm);\n color: var(--ts-color-text-secondary);\n cursor: inherit;\n user-select: none;\n}\n\n:host([size=\"lg\"]) .toggle__label {\n font-size: var(--ts-font-size-md);\n}\n","import { Component, Prop, Event, h, Host, Element, Method } from '@stencil/core';\nimport type { EventEmitter } from '@stencil/core';\nimport type { TsSize, TsToggleEventDetail } from '../../types';\nimport { generateId } from '../../utils/aria';\n\n/**\n * @slot - Default slot for the toggle label.\n *\n * @part base - The toggle container.\n * @part track - The toggle track.\n * @part thumb - The toggle thumb/knob.\n * @part label - The label wrapper.\n */\n@Component({\n tag: 'ts-toggle',\n styleUrl: 'toggle.css',\n shadow: true,\n})\nexport class TsToggle {\n @Element() hostEl!: HTMLElement;\n\n private inputId = generateId('ts-toggle');\n\n /** Whether the toggle is checked. */\n @Prop({ mutable: true, reflect: true }) checked = false;\n\n /** The toggle's size. */\n @Prop({ reflect: true }) size: TsSize = 'md';\n\n /** Renders the toggle as disabled. */\n @Prop({ reflect: true }) disabled = false;\n\n /** Name for form submission. */\n @Prop() name?: string;\n\n /** Value for form submission. */\n @Prop() value?: string;\n\n /** Emitted when the toggle state changes. */\n @Event({ eventName: 'tsChange' }) tsChange!: EventEmitter<TsToggleEventDetail>;\n\n /** Programmatically toggle the checked state. */\n @Method()\n async toggle(): Promise<void> {\n if (!this.disabled) {\n this.checked = !this.checked;\n this.tsChange.emit({ checked: this.checked });\n }\n }\n\n private handleClick = (): void => {\n this.toggle();\n };\n\n private handleKeydown = (event: KeyboardEvent): void => {\n if (event.key === ' ' || event.key === 'Enter') {\n event.preventDefault();\n this.toggle();\n }\n };\n\n // eslint-disable-next-line @typescript-eslint/explicit-function-return-type\n render() {\n return (\n <Host\n class={{\n 'ts-toggle': true,\n [`ts-toggle--${this.size}`]: true,\n 'ts-toggle--checked': this.checked,\n 'ts-toggle--disabled': this.disabled,\n }}\n >\n <div\n class=\"toggle__base\"\n part=\"base\"\n role=\"switch\"\n aria-checked={this.checked ? 'true' : 'false'}\n aria-disabled={this.disabled ? 'true' : undefined}\n tabindex={this.disabled ? -1 : 0}\n onClick={this.handleClick}\n onKeyDown={this.handleKeydown}\n >\n <div class=\"toggle__track\" part=\"track\">\n <div class=\"toggle__thumb\" part=\"thumb\" />\n </div>\n\n <label class=\"toggle__label\" part=\"label\" id={`${this.inputId}-label`}>\n <slot />\n </label>\n </div>\n </Host>\n );\n }\n}\n"],"mappings":"oGAAA,MAAMA,EAAY,IAAM,utE,MCkBXC,EAAQ,M,sFAGXC,QAAUC,EAAW,aAGWC,QAAU,MAGzBC,KAAe,KAGfC,SAAW,MAG5BC,KAGAC,MAG0BC,SAIlC,YAAMC,GACJ,IAAKC,KAAKL,SAAU,CAClBK,KAAKP,SAAWO,KAAKP,QACrBO,KAAKF,SAASG,KAAK,CAAER,QAASO,KAAKP,S,EAI/BS,YAAc,KACpBF,KAAKD,QAAQ,EAGPI,cAAiBC,IACvB,GAAIA,EAAMC,MAAQ,KAAOD,EAAMC,MAAQ,QAAS,CAC9CD,EAAME,iBACNN,KAAKD,Q,GAKT,MAAAQ,GACE,OACEC,EAACC,EAAI,CAAAJ,IAAA,2CACHK,MAAO,CACL,YAAa,KACb,CAAC,cAAcV,KAAKN,QAAS,KAC7B,qBAAsBM,KAAKP,QAC3B,sBAAuBO,KAAKL,WAG9Ba,EAAA,OAAAH,IAAA,2CACEK,MAAM,eACNC,KAAK,OACLC,KAAK,SAAQ,eACCZ,KAAKP,QAAU,OAAS,QAAO,gBAC9BO,KAAKL,SAAW,OAASkB,UACxCC,SAAUd,KAAKL,UAAW,EAAK,EAC/BoB,QAASf,KAAKE,YACdc,UAAWhB,KAAKG,eAEhBK,EAAA,OAAAH,IAAA,2CAAKK,MAAM,gBAAgBC,KAAK,SAC9BH,EAAA,OAAAH,IAAA,2CAAKK,MAAM,gBAAgBC,KAAK,WAGlCH,EAAA,SAAAH,IAAA,2CAAOK,MAAM,gBAAgBC,KAAK,QAAQM,GAAI,GAAGjB,KAAKT,iBACpDiB,EAAA,QAAAH,IAAA,+C","ignoreList":[]}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"names":["dividerCss","TsDivider","orientation","variant","label","render","hasLabel","this","h","Host","key","class","role","part"],"sources":["src/components/divider/divider.css?tag=ts-divider&encapsulation=shadow","src/components/divider/divider.tsx"],"sourcesContent":["/* ==========================================================================\n ts-divider — Shadow DOM Scoped Styles\n\n Component tokens (Tier 3):\n --ts-divider-color Line color\n --ts-divider-spacing Spacing above/below (or left/right for vertical)\n ========================================================================== */\n\n:host {\n display: block;\n font-family: var(--ts-font-family-base);\n\n --ts-divider-color: var(--ts-color-border-subtle);\n --ts-divider-spacing: var(--ts-spacing-3);\n}\n\n/* ---- Horizontal ---- */\n:host([orientation=\"horizontal\"]) {\n inline-size: 100%;\n padding-block: var(--ts-divider-spacing);\n}\n\n:host([orientation=\"horizontal\"]) .divider__base {\n display: flex;\n align-items: center;\n inline-size: 100%;\n}\n\n:host([orientation=\"horizontal\"]:not([class*=\"has-label\"])) .divider__line {\n flex: 1;\n block-size: 0;\n border-block-start: 1px solid var(--ts-divider-color);\n}\n\n:host([orientation=\"horizontal\"]) .divider__line--start,\n:host([orientation=\"horizontal\"]) .divider__line--end {\n flex: 1;\n block-size: 0;\n border-block-start: 1px solid var(--ts-divider-color);\n}\n\n/* ---- Dashed ---- */\n:host([variant=\"dashed\"]) .divider__line,\n:host([variant=\"dashed\"]) .divider__line--start,\n:host([variant=\"dashed\"]) .divider__line--end {\n border-block-start-style: dashed;\n}\n\n/* ---- Dotted ---- */\n:host([variant=\"dotted\"]) .divider__line,\n:host([variant=\"dotted\"]) .divider__line--start,\n:host([variant=\"dotted\"]) .divider__line--end {\n border-block-start-style: dotted;\n}\n\n/* ---- Label ---- */\n.divider__label {\n padding-inline: var(--ts-spacing-3);\n font-size: var(--ts-font-size-xs);\n color: var(--ts-color-text-secondary);\n white-space: nowrap;\n line-height: 1;\n}\n\n/* ---- Vertical ---- */\n:host([orientation=\"vertical\"]) {\n display: inline-block;\n block-size: 100%;\n padding-inline: var(--ts-divider-spacing);\n}\n\n:host([orientation=\"vertical\"]) .divider__base {\n display: flex;\n block-size: 100%;\n}\n\n:host([orientation=\"vertical\"]) .divider__line {\n inline-size: 0;\n block-size: 100%;\n border-inline-start: 1px solid var(--ts-divider-color);\n}\n\n:host([orientation=\"vertical\"][variant=\"dashed\"]) .divider__line {\n border-inline-start-style: dashed;\n}\n\n:host([orientation=\"vertical\"][variant=\"dotted\"]) .divider__line {\n border-inline-start-style: dotted;\n}\n\n/* ---- Has-label class (for horizontal with text) ---- */\n.ts-divider--has-label .divider__line {\n /* overridden by --start/--end when label present */\n}\n","import { Component, Prop, h, Host } from '@stencil/core';\n\n/**\n * @part base - The divider line element.\n * @part label - The optional label text.\n */\n@Component({\n tag: 'ts-divider',\n styleUrl: 'divider.css',\n shadow: true,\n})\nexport class TsDivider {\n /** The divider orientation. */\n @Prop({ reflect: true }) orientation: 'horizontal' | 'vertical' = 'horizontal';\n\n /** The line style variant. */\n @Prop({ reflect: true }) variant: 'solid' | 'dashed' | 'dotted' = 'solid';\n\n /** Optional label text displayed in the center of the divider. */\n @Prop() label?: string;\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-divider': true,\n [`ts-divider--${this.orientation}`]: true,\n [`ts-divider--${this.variant}`]: true,\n 'ts-divider--has-label': hasLabel,\n }}\n role=\"separator\"\n aria-orientation={this.orientation}\n >\n {hasLabel && this.orientation === 'horizontal' ? (\n <div class=\"divider__base\" part=\"base\">\n <span class=\"divider__line divider__line--start\" />\n <span class=\"divider__label\" part=\"label\">{this.label}</span>\n <span class=\"divider__line divider__line--end\" />\n </div>\n ) : (\n <div class=\"divider__base\" part=\"base\">\n <span class=\"divider__line\" />\n </div>\n )}\n </Host>\n );\n }\n}\n"],"mappings":"kDAAA,MAAMA,EAAa,IAAM,grD,MCWZC,EAAS,M,yBAEKC,YAAyC,aAGzCC,QAAyC,QAG1DC,MAGR,MAAAC,GACE,MAAMC,IAAaC,KAAKH,MAExB,OACEI,EAACC,EAAI,CAAAC,IAAA,2CACHC,MAAO,CACL,aAAc,KACd,CAAC,eAAeJ,KAAKL,eAAgB,KACrC,CAAC,eAAeK,KAAKJ,WAAY,KACjC,wBAAyBG,GAE3BM,KAAK,YAAW,mBACEL,KAAKL,aAEtBI,GAAYC,KAAKL,cAAgB,aAChCM,EAAA,OAAKG,MAAM,gBAAgBE,KAAK,QAC9BL,EAAA,QAAMG,MAAM,uCACZH,EAAA,QAAMG,MAAM,iBAAiBE,KAAK,SAASN,KAAKH,OAChDI,EAAA,QAAMG,MAAM,sCAGdH,EAAA,OAAKG,MAAM,gBAAgBE,KAAK,QAC9BL,EAAA,QAAMG,MAAM,mB","ignoreList":[]}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"names":["tabPanelCss","TsTabPanel","tab","value","disabled","icon","render","h","Host","key","class","part","role"],"sources":["src/components/tabs/tab-panel.css?tag=ts-tab-panel&encapsulation=shadow","src/components/tabs/tab-panel.tsx"],"sourcesContent":["/* ==========================================================================\n ts-tab-panel — Shadow DOM Scoped Styles\n ========================================================================== */\n\n:host {\n display: block;\n}\n\n.tab-panel {\n outline: none;\n}\n","import { Component, Prop, h, Host, Element } from '@stencil/core';\n\n/**\n * @slot - Default slot for panel content.\n *\n * @part panel - The panel container element.\n */\n@Component({\n tag: 'ts-tab-panel',\n styleUrl: 'tab-panel.css',\n shadow: true,\n})\nexport class TsTabPanel {\n @Element() hostEl!: HTMLElement;\n\n /** The label text displayed in the tab button. */\n @Prop() tab!: string;\n\n /** Unique identifier for this tab panel. */\n @Prop({ reflect: true }) value!: string;\n\n /** Whether this tab is disabled. */\n @Prop({ reflect: true }) disabled = false;\n\n /** Optional icon name displayed before the tab label. */\n @Prop() icon?: string;\n\n // eslint-disable-next-line @typescript-eslint/explicit-function-return-type\n render() {\n return (\n <Host>\n <div class=\"tab-panel\" part=\"panel\" role=\"tabpanel\">\n <slot />\n </div>\n </Host>\n );\n }\n}\n"],"mappings":"oDAAA,MAAMA,EAAc,IAAM,+C,MCYbC,EAAU,M,qDAIbC,IAGiBC,MAGAC,SAAW,MAG5BC,KAGR,MAAAC,GACE,OACEC,EAACC,EAAI,CAAAC,IAAA,4CACHF,EAAA,OAAAE,IAAA,2CAAKC,MAAM,YAAYC,KAAK,QAAQC,KAAK,YACvCL,EAAA,QAAAE,IAAA,8C","ignoreList":[]}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"names":["spacerCss","TsSpacer","size","axis","render","style","this","width","height","h","Host","key"],"sources":["src/components/spacer/spacer.css?tag=ts-spacer&encapsulation=shadow","src/components/spacer/spacer.tsx"],"sourcesContent":["/* ==========================================================================\n ts-spacer — Shadow DOM Scoped Styles\n\n An explicit spacing element for vertical or horizontal space.\n ========================================================================== */\n\n:host {\n display: block;\n}\n\n:host([axis=\"horizontal\"]) {\n display: inline-block;\n}\n","import { Component, Prop, h, Host } from '@stencil/core';\n\n/**\n * An explicit spacing element for adding vertical or horizontal space.\n */\n@Component({\n tag: 'ts-spacer',\n styleUrl: 'spacer.css',\n shadow: true,\n})\nexport class TsSpacer {\n /** Spacing token number controlling the size of the spacer. */\n @Prop({ reflect: true }) size: string = '4';\n\n /** The axis along which the spacer adds space. */\n @Prop({ reflect: true }) axis: 'vertical' | 'horizontal' = 'vertical';\n\n // eslint-disable-next-line @typescript-eslint/explicit-function-return-type\n render() {\n const style =\n this.axis === 'horizontal'\n ? { width: `var(--ts-spacing-${this.size})`, height: '100%' }\n : { height: `var(--ts-spacing-${this.size})`, width: '100%' };\n\n return <Host style={style}></Host>;\n }\n}\n"],"mappings":"kDAAA,MAAMA,EAAY,IAAM,uE,MCUXC,EAAQ,M,yBAEMC,KAAe,IAGfC,KAAkC,WAG3D,MAAAC,GACE,MAAMC,EACJC,KAAKH,OAAS,aACV,CAAEI,MAAO,oBAAoBD,KAAKJ,QAASM,OAAQ,QACnD,CAAEA,OAAQ,oBAAoBF,KAAKJ,QAASK,MAAO,QAEzD,OAAOE,EAACC,EAAI,CAAAC,IAAA,2CAACN,MAAOA,G","ignoreList":[]}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"names":["treeItemCss","TsTreeItem","label","expanded","selected","disabled","icon","hasChildren","tsToggle","tsSelect","onExpandedChange","this","emit","componentDidLoad","checkForChildren","slot","hostEl","shadowRoot","querySelector","assigned","assignedElements","some","el","tagName","handleToggle","event","stopPropagation","handleSelect","tree","closest","selectable","value","handleKeyDown","key","preventDefault","handleSlotChange","render","h","Host","class","role","tabindex","String","undefined","onKeyDown","part","onClick","viewBox","fill","stroke","points","name","size","onSlotchange"],"sources":["src/components/tree/tree-item.css?tag=ts-tree-item&encapsulation=shadow","src/components/tree/tree-item.tsx"],"sourcesContent":["/* ==========================================================================\n ts-tree-item — Shadow DOM Scoped Styles\n ========================================================================== */\n\n:host {\n display: block;\n font-family: var(--ts-font-family-base);\n outline: none;\n}\n\n.tree-item__base {\n display: flex;\n align-items: center;\n gap: var(--ts-spacing-1);\n min-block-size: var(--ts-tree-item-height, 2rem);\n padding-inline: var(--ts-spacing-2);\n padding-block: var(--ts-spacing-1);\n border-radius: var(--ts-radius-sm);\n cursor: pointer;\n user-select: none;\n font-size: var(--ts-font-size-sm);\n line-height: var(--ts-line-height-tight);\n color: var(--ts-color-text-primary);\n transition:\n background-color var(--ts-transition-fast),\n color var(--ts-transition-fast);\n}\n\n.tree-item__base:hover {\n background-color: var(--ts-color-bg-subtle);\n}\n\n:host(:focus-visible) .tree-item__base {\n box-shadow: var(--ts-focus-ring);\n}\n\n/* ---- Selected ---- */\n:host([selected]) .tree-item__base {\n background-color: var(--ts-tree-active-bg, var(--ts-color-interactive-primary-subtle));\n color: var(--ts-color-interactive-primary);\n}\n\n/* ---- Disabled ---- */\n:host([disabled]) .tree-item__base {\n opacity: 0.5;\n cursor: not-allowed;\n pointer-events: none;\n}\n\n/* ---- Chevron ---- */\n.tree-item__chevron {\n display: inline-flex;\n align-items: center;\n justify-content: center;\n flex-shrink: 0;\n inline-size: 1.25rem;\n block-size: 1.25rem;\n transition: transform var(--ts-transition-fast);\n}\n\n.tree-item__chevron svg {\n inline-size: 0.875rem;\n block-size: 0.875rem;\n}\n\n:host(.ts-tree-item--expanded) .tree-item__chevron {\n transform: rotate(90deg);\n}\n\n.tree-item__chevron--hidden {\n visibility: hidden;\n}\n\n/* ---- Icon ---- */\n.tree-item__icon {\n display: inline-flex;\n align-items: center;\n flex-shrink: 0;\n}\n\n/* ---- Label ---- */\n.tree-item__label {\n flex: 1;\n min-inline-size: 0;\n overflow: hidden;\n text-overflow: ellipsis;\n white-space: nowrap;\n}\n\n/* ---- Children ---- */\n.tree-item__children {\n padding-inline-start: var(--ts-tree-indent, var(--ts-spacing-5));\n}\n\n.tree-item__children--collapsed {\n display: none;\n}\n","import { Component, Prop, Event, State, h, Host, Element, Watch } from '@stencil/core';\nimport type { EventEmitter } from '@stencil/core';\n\n/**\n * @slot - Default slot for nested ts-tree-item children.\n * @slot label - Custom label content.\n *\n * @part base - The tree item container.\n * @part label - The label wrapper.\n * @part chevron - The expand/collapse chevron.\n * @part icon - The icon wrapper.\n */\n@Component({\n tag: 'ts-tree-item',\n styleUrl: 'tree-item.css',\n shadow: true,\n})\nexport class TsTreeItem {\n @Element() hostEl!: HTMLElement;\n\n /** The item label. */\n @Prop() label?: string;\n\n /** Whether the item is expanded (has children). */\n @Prop({ reflect: true, mutable: true }) expanded = false;\n\n /** Whether the item is selected. */\n @Prop({ reflect: true, mutable: true }) selected = false;\n\n /** Whether the item is disabled. */\n @Prop({ reflect: true }) disabled = false;\n\n /** Optional Lucide icon name. */\n @Prop() icon?: string;\n\n /** Whether this item has slotted children (expandable). */\n @State() hasChildren = false;\n\n /** Emitted when expand/collapse is toggled. */\n @Event({ eventName: 'tsToggle' }) tsToggle!: EventEmitter<{ expanded: boolean }>;\n\n /** Emitted when the item is selected. */\n @Event({ eventName: 'tsSelect' }) tsSelect!: EventEmitter<{ selected: boolean; value: string }>;\n\n @Watch('expanded')\n onExpandedChange(): void {\n this.tsToggle.emit({ expanded: this.expanded });\n }\n\n componentDidLoad(): void {\n this.checkForChildren();\n }\n\n private checkForChildren(): void {\n const slot = this.hostEl.shadowRoot?.querySelector('slot:not([name])') as HTMLSlotElement;\n if (slot) {\n const assigned = slot.assignedElements();\n this.hasChildren = assigned.some(el => el.tagName === 'TS-TREE-ITEM');\n }\n }\n\n private handleToggle = (event: MouseEvent): void => {\n event.stopPropagation();\n if (this.disabled) return;\n this.expanded = !this.expanded;\n };\n\n private handleSelect = (): void => {\n if (this.disabled) return;\n const tree = this.hostEl.closest('ts-tree');\n if (tree && (tree as unknown as { selectable: boolean }).selectable) {\n this.selected = !this.selected;\n this.tsSelect.emit({ selected: this.selected, value: this.label || '' });\n }\n };\n\n private handleKeyDown = (event: KeyboardEvent): void => {\n if (event.key === 'Enter' || event.key === ' ') {\n event.preventDefault();\n this.handleSelect();\n }\n };\n\n private handleSlotChange = (): void => {\n this.checkForChildren();\n };\n\n // eslint-disable-next-line @typescript-eslint/explicit-function-return-type\n render() {\n return (\n <Host\n class={{\n 'ts-tree-item': true,\n 'ts-tree-item--expanded': this.expanded,\n 'ts-tree-item--selected': this.selected,\n 'ts-tree-item--disabled': this.disabled,\n 'ts-tree-item--has-children': this.hasChildren,\n }}\n role=\"treeitem\"\n tabindex={this.disabled ? -1 : 0}\n aria-expanded={this.hasChildren ? String(this.expanded) : undefined}\n aria-selected={String(this.selected)}\n aria-disabled={this.disabled ? 'true' : undefined}\n onKeyDown={this.handleKeyDown}\n >\n <div class=\"tree-item__base\" part=\"base\" onClick={this.handleSelect}>\n <span\n class={{\n 'tree-item__chevron': true,\n 'tree-item__chevron--hidden': !this.hasChildren,\n }}\n part=\"chevron\"\n onClick={this.handleToggle}\n aria-hidden=\"true\"\n >\n <svg viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\">\n <polyline points=\"9 18 15 12 9 6\" />\n </svg>\n </span>\n\n {this.icon && (\n <span class=\"tree-item__icon\" part=\"icon\" aria-hidden=\"true\">\n <ts-icon name={this.icon} size=\"sm\" />\n </span>\n )}\n\n <span class=\"tree-item__label\" part=\"label\">\n <slot name=\"label\">{this.label}</slot>\n </span>\n </div>\n\n <div\n class={{\n 'tree-item__children': true,\n 'tree-item__children--collapsed': !this.expanded,\n }}\n role=\"group\"\n >\n <slot onSlotchange={this.handleSlotChange} />\n </div>\n </Host>\n );\n }\n}\n"],"mappings":"gEAAA,MAAMA,EAAc,IAAM,ijD,MCiBbC,EAAU,M,uHAIbC,MAGgCC,SAAW,MAGXC,SAAW,MAG1BC,SAAW,MAG5BC,KAGCC,YAAc,MAGWC,SAGAC,SAGlC,gBAAAC,GACEC,KAAKH,SAASI,KAAK,CAAET,SAAUQ,KAAKR,U,CAGtC,gBAAAU,GACEF,KAAKG,kB,CAGC,gBAAAA,GACN,MAAMC,EAAOJ,KAAKK,OAAOC,YAAYC,cAAc,oBACnD,GAAIH,EAAM,CACR,MAAMI,EAAWJ,EAAKK,mBACtBT,KAAKJ,YAAcY,EAASE,MAAKC,GAAMA,EAAGC,UAAY,gB,EAIlDC,aAAgBC,IACtBA,EAAMC,kBACN,GAAIf,KAAKN,SAAU,OACnBM,KAAKR,UAAYQ,KAAKR,QAAQ,EAGxBwB,aAAe,KACrB,GAAIhB,KAAKN,SAAU,OACnB,MAAMuB,EAAOjB,KAAKK,OAAOa,QAAQ,WACjC,GAAID,GAASA,EAA4CE,WAAY,CACnEnB,KAAKP,UAAYO,KAAKP,SACtBO,KAAKF,SAASG,KAAK,CAAER,SAAUO,KAAKP,SAAU2B,MAAOpB,KAAKT,OAAS,I,GAI/D8B,cAAiBP,IACvB,GAAIA,EAAMQ,MAAQ,SAAWR,EAAMQ,MAAQ,IAAK,CAC9CR,EAAMS,iBACNvB,KAAKgB,c,GAIDQ,iBAAmB,KACzBxB,KAAKG,kBAAkB,EAIzB,MAAAsB,GACE,OACEC,EAACC,EAAI,CAAAL,IAAA,2CACHM,MAAO,CACL,eAAgB,KAChB,yBAA0B5B,KAAKR,SAC/B,yBAA0BQ,KAAKP,SAC/B,yBAA0BO,KAAKN,SAC/B,6BAA8BM,KAAKJ,aAErCiC,KAAK,WACLC,SAAU9B,KAAKN,UAAW,EAAK,EAAC,gBACjBM,KAAKJ,YAAcmC,OAAO/B,KAAKR,UAAYwC,UAAS,gBACpDD,OAAO/B,KAAKP,UAAS,gBACrBO,KAAKN,SAAW,OAASsC,UACxCC,UAAWjC,KAAKqB,eAEhBK,EAAA,OAAAJ,IAAA,2CAAKM,MAAM,kBAAkBM,KAAK,OAAOC,QAASnC,KAAKgB,cACrDU,EAAA,QAAAJ,IAAA,2CACEM,MAAO,CACL,qBAAsB,KACtB,8BAA+B5B,KAAKJ,aAEtCsC,KAAK,UACLC,QAASnC,KAAKa,aAAY,cACd,QAEZa,EAAA,OAAAJ,IAAA,2CAAKc,QAAQ,YAAYC,KAAK,OAAOC,OAAO,eAAc,eAAc,IAAG,iBAAgB,QAAO,kBAAiB,SACjHZ,EAAA,YAAAJ,IAAA,2CAAUiB,OAAO,qBAIpBvC,KAAKL,MACJ+B,EAAA,QAAAJ,IAAA,2CAAMM,MAAM,kBAAkBM,KAAK,OAAM,cAAa,QACpDR,EAAA,WAAAJ,IAAA,2CAASkB,KAAMxC,KAAKL,KAAM8C,KAAK,QAInCf,EAAA,QAAAJ,IAAA,2CAAMM,MAAM,mBAAmBM,KAAK,SAClCR,EAAA,QAAAJ,IAAA,2CAAMkB,KAAK,SAASxC,KAAKT,SAI7BmC,EAAA,OAAAJ,IAAA,2CACEM,MAAO,CACL,sBAAuB,KACvB,kCAAmC5B,KAAKR,UAE1CqC,KAAK,SAELH,EAAA,QAAAJ,IAAA,2CAAMoB,aAAc1C,KAAKwB,oB","ignoreList":[]}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"names":["menuItemCss","TsMenuItem","disabled","value","href","tsSelect","baseEl","setFocus","this","focus","connectedCallback","hostEl","addEventListener","handleClick","emit","handleKeydown","event","key","preventDefault","render","isLink","Tag","linkAttrs","undefined","h","Host","class","ref","el","part","role","tabindex","onClick","onKeyDown","name"],"sources":["src/components/menu/menu-item.css?tag=ts-menu-item&encapsulation=shadow","src/components/menu/menu-item.tsx"],"sourcesContent":["/* ==========================================================================\n ts-menu-item — Shadow DOM Scoped Styles\n\n Component tokens (Tier 3):\n --ts-menu-item-height Item minimum height\n ========================================================================== */\n\n:host {\n display: block;\n font-family: var(--ts-font-family-base);\n\n --ts-menu-item-height: 2.25rem;\n}\n\n/* ---- Base ---- */\n.menu-item__base {\n display: flex;\n align-items: center;\n gap: var(--ts-spacing-2);\n min-block-size: var(--ts-menu-item-height);\n padding-inline: var(--ts-spacing-3);\n padding-block: var(--ts-spacing-1);\n font-size: var(--ts-font-size-sm);\n color: var(--ts-color-text-primary);\n text-decoration: none;\n cursor: pointer;\n transition:\n background-color var(--ts-transition-fast),\n color var(--ts-transition-fast);\n outline: none;\n border: none;\n background: none;\n width: 100%;\n white-space: nowrap;\n}\n\n.menu-item__base:hover:not([aria-disabled=\"true\"]) {\n background-color: var(--ts-color-bg-hover);\n}\n\n.menu-item__base:focus-visible {\n background-color: var(--ts-color-bg-hover);\n box-shadow: inset 0 0 0 2px var(--ts-color-interactive-primary);\n}\n\n/* ---- Disabled ---- */\n:host([disabled]) .menu-item__base {\n opacity: 0.5;\n cursor: not-allowed;\n pointer-events: none;\n}\n\n/* ---- Slot wrappers ---- */\n.menu-item__prefix,\n.menu-item__suffix {\n display: inline-flex;\n align-items: center;\n flex-shrink: 0;\n}\n\n.menu-item__prefix:empty,\n.menu-item__suffix:empty {\n display: none;\n}\n\n.menu-item__label {\n display: inline-flex;\n align-items: center;\n flex-grow: 1;\n}\n\n.menu-item__suffix {\n margin-inline-start: auto;\n padding-inline-start: var(--ts-spacing-3);\n color: var(--ts-color-text-tertiary);\n font-size: var(--ts-font-size-xs);\n}\n","import { Component, Prop, Event, h, Host, Element, Method } from '@stencil/core';\nimport type { EventEmitter } from '@stencil/core';\n\n/**\n * @slot - Default slot for menu item label content.\n * @slot prefix - Content before the label (e.g., icon).\n * @slot suffix - Content after the label (e.g., shortcut or badge).\n *\n * @part base - The menu item container element.\n * @part prefix - The prefix slot wrapper.\n * @part label - The label wrapper.\n * @part suffix - The suffix slot wrapper.\n */\n@Component({\n tag: 'ts-menu-item',\n styleUrl: 'menu-item.css',\n shadow: true,\n})\nexport class TsMenuItem {\n @Element() hostEl!: HTMLElement;\n\n /** Disables the menu item. */\n @Prop({ reflect: true }) disabled = false;\n\n /** The value associated with this menu item. */\n @Prop({ reflect: true }) value = '';\n\n /** If provided, renders the item as a link. */\n @Prop() href?: string;\n\n /** Emitted when the menu item is selected. */\n @Event({ eventName: 'tsSelect' }) tsSelect!: EventEmitter<{ value: string }>;\n\n private baseEl?: HTMLElement;\n\n /** Focus the menu item. */\n @Method()\n async setFocus(): Promise<void> {\n this.baseEl?.focus();\n }\n\n connectedCallback(): void {\n // Allow the host element to delegate focus to the inner element\n this.hostEl.addEventListener('focus', () => {\n this.baseEl?.focus();\n });\n }\n\n private handleClick = (): void => {\n if (this.disabled) return;\n this.tsSelect.emit({ value: this.value });\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.tsSelect.emit({ value: this.value });\n }\n };\n\n // eslint-disable-next-line @typescript-eslint/explicit-function-return-type\n render() {\n const isLink = !!this.href;\n const Tag = isLink ? 'a' : 'div';\n\n const linkAttrs = isLink\n ? {\n href: this.disabled ? undefined : this.href,\n }\n : {};\n\n return (\n <Host\n class={{\n 'ts-menu-item': true,\n 'ts-menu-item--disabled': this.disabled,\n }}\n >\n <Tag\n {...linkAttrs}\n ref={(el) => (this.baseEl = el as HTMLElement)}\n class=\"menu-item__base\"\n part=\"base\"\n role=\"menuitem\"\n tabindex={this.disabled ? -1 : 0}\n aria-disabled={this.disabled ? 'true' : undefined}\n onClick={this.handleClick}\n onKeyDown={this.handleKeydown}\n >\n <span class=\"menu-item__prefix\" part=\"prefix\">\n <slot name=\"prefix\" />\n </span>\n\n <span class=\"menu-item__label\" part=\"label\">\n <slot />\n </span>\n\n <span class=\"menu-item__suffix\" part=\"suffix\">\n <slot name=\"suffix\" />\n </span>\n </Tag>\n </Host>\n );\n }\n}\n"],"mappings":"gEAAA,MAAMA,EAAc,IAAM,ktC,MCkBbC,EAAU,M,sFAIIC,SAAW,MAGXC,MAAQ,GAGzBC,KAG0BC,SAE1BC,OAIR,cAAMC,GACJC,KAAKF,QAAQG,O,CAGf,iBAAAC,GAEEF,KAAKG,OAAOC,iBAAiB,SAAS,KACpCJ,KAAKF,QAAQG,OAAO,G,CAIhBI,YAAc,KACpB,GAAIL,KAAKN,SAAU,OACnBM,KAAKH,SAASS,KAAK,CAAEX,MAAOK,KAAKL,OAAQ,EAGnCY,cAAiBC,IACvB,GAAIR,KAAKN,SAAU,OACnB,GAAIc,EAAMC,MAAQ,SAAWD,EAAMC,MAAQ,IAAK,CAC9CD,EAAME,iBACNV,KAAKH,SAASS,KAAK,CAAEX,MAAOK,KAAKL,O,GAKrC,MAAAgB,GACE,MAAMC,IAAWZ,KAAKJ,KACtB,MAAMiB,EAAMD,EAAS,IAAM,MAE3B,MAAME,EAAYF,EACd,CACEhB,KAAMI,KAAKN,SAAWqB,UAAYf,KAAKJ,MAEzC,GAEJ,OACEoB,EAACC,EAAI,CAAAR,IAAA,2CACHS,MAAO,CACL,eAAgB,KAChB,yBAA0BlB,KAAKN,WAGjCsB,EAACH,EAAG,CAAAJ,IAAA,8CACEK,EACJK,IAAMC,GAAQpB,KAAKF,OAASsB,EAC5BF,MAAM,kBACNG,KAAK,OACLC,KAAK,WACLC,SAAUvB,KAAKN,UAAW,EAAK,EAAC,gBACjBM,KAAKN,SAAW,OAASqB,UACxCS,QAASxB,KAAKK,YACdoB,UAAWzB,KAAKO,eAEhBS,EAAA,QAAAP,IAAA,2CAAMS,MAAM,oBAAoBG,KAAK,UACnCL,EAAA,QAAAP,IAAA,2CAAMiB,KAAK,YAGbV,EAAA,QAAAP,IAAA,2CAAMS,MAAM,mBAAmBG,KAAK,SAClCL,EAAA,QAAAP,IAAA,8CAGFO,EAAA,QAAAP,IAAA,2CAAMS,MAAM,oBAAoBG,KAAK,UACnCL,EAAA,QAAAP,IAAA,2CAAMiB,KAAK,a","ignoreList":[]}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"names":["avatarCss","TsAvatar","src","alt","name","size","variant","color","hasError","handleError","this","getInitials","words","trim","split","length","charAt","toUpperCase","render","showImage","initials","showInitials","h","Host","key","class","part","role","style","backgroundColor","undefined","onError"],"sources":["src/components/avatar/avatar.css?tag=ts-avatar&encapsulation=shadow","src/components/avatar/avatar.tsx"],"sourcesContent":["/* ==========================================================================\n ts-avatar — Shadow DOM Scoped Styles\n\n Component tokens (Tier 3):\n --ts-avatar-size Avatar dimensions\n --ts-avatar-bg Background color for initials/slot\n --ts-avatar-color Text color for initials\n --ts-avatar-radius Border radius\n ========================================================================== */\n\n:host {\n display: inline-flex;\n vertical-align: middle;\n\n --ts-avatar-size: 2.5rem;\n --ts-avatar-bg: var(--ts-color-neutral-200);\n --ts-avatar-color: var(--ts-color-text-primary);\n --ts-avatar-radius: var(--ts-shape-full);\n}\n\n/* ---- Sizes ---- */\n:host([size=\"xs\"]) { --ts-avatar-size: 1.5rem; font-size: var(--ts-font-size-xs); }\n:host([size=\"sm\"]) { --ts-avatar-size: 2rem; font-size: var(--ts-font-size-sm); }\n:host([size=\"md\"]) { --ts-avatar-size: 2.5rem; font-size: var(--ts-font-size-md); }\n:host([size=\"lg\"]) { --ts-avatar-size: 3rem; font-size: var(--ts-font-size-lg); }\n:host([size=\"xl\"]) { --ts-avatar-size: 4rem; font-size: var(--ts-font-size-xl); }\n\n/* ---- Variant: square ---- */\n:host([variant=\"square\"]) {\n --ts-avatar-radius: var(--ts-radius-full);\n}\n\n/* ---- Base container ---- */\n.avatar__base {\n display: inline-flex;\n align-items: center;\n justify-content: center;\n width: var(--ts-avatar-size);\n height: var(--ts-avatar-size);\n border-radius: var(--ts-avatar-radius);\n background-color: var(--ts-avatar-bg);\n color: var(--ts-avatar-color);\n overflow: hidden;\n user-select: none;\n flex-shrink: 0;\n}\n\n/* ---- Image ---- */\n.avatar__image {\n width: 100%;\n height: 100%;\n object-fit: cover;\n border-radius: inherit;\n}\n\n/* ---- Initials ---- */\n.avatar__initials {\n font-family: var(--ts-font-family-base);\n font-weight: var(--ts-font-weight-semi);\n font-size: inherit;\n line-height: 1;\n text-transform: uppercase;\n}\n","import { Component, Prop, State, h, Host } from '@stencil/core';\n\n/**\n * @slot - Default slot for custom content (e.g., icon).\n *\n * @part base - The avatar container.\n * @part image - The avatar image element.\n * @part initials - The initials text element.\n */\n@Component({\n tag: 'ts-avatar',\n styleUrl: 'avatar.css',\n shadow: true,\n})\nexport class TsAvatar {\n /** Image URL for the avatar. */\n @Prop() src?: string;\n\n /** Alt text for the avatar image. */\n @Prop() alt?: string;\n\n /** Name used to generate initials fallback. */\n @Prop() name?: string;\n\n /** The size of the avatar. */\n @Prop({ reflect: true }) size: 'xs' | 'sm' | 'md' | 'lg' | 'xl' = 'md';\n\n /** Shape variant of the avatar. */\n @Prop({ reflect: true }) variant: 'circle' | 'square' = 'circle';\n\n /** Background color for the initials fallback. */\n @Prop() color?: string;\n\n /** Whether the image failed to load. */\n @State() hasError = false;\n\n private handleError = (): void => {\n this.hasError = true;\n };\n\n private getInitials(): string {\n if (!this.name) return '';\n const words = this.name.trim().split(/\\s+/);\n if (words.length === 1) {\n return words[0].charAt(0).toUpperCase();\n }\n return (words[0].charAt(0) + words[words.length - 1].charAt(0)).toUpperCase();\n }\n\n // eslint-disable-next-line @typescript-eslint/explicit-function-return-type\n render() {\n const showImage = this.src && !this.hasError;\n const initials = this.getInitials();\n const showInitials = !showImage && initials;\n\n return (\n <Host\n class={{\n 'ts-avatar': true,\n [`ts-avatar--${this.size}`]: true,\n [`ts-avatar--${this.variant}`]: true,\n }}\n >\n <div\n class=\"avatar__base\"\n part=\"base\"\n role=\"img\"\n aria-label={this.alt || this.name || 'Avatar'}\n style={this.color && !showImage ? { backgroundColor: this.color } : undefined}\n >\n {showImage && (\n <img\n class=\"avatar__image\"\n part=\"image\"\n src={this.src}\n alt={this.alt || this.name || ''}\n onError={this.handleError}\n />\n )}\n {showInitials && (\n <span class=\"avatar__initials\" part=\"initials\" aria-hidden=\"true\">\n {initials}\n </span>\n )}\n {!showImage && !showInitials && <slot />}\n </div>\n </Host>\n );\n }\n}\n"],"mappings":"kDAAA,MAAMA,EAAY,IAAM,woC,MCcXC,EAAQ,M,yBAEXC,IAGAC,IAGAC,KAGiBC,KAAyC,KAGzCC,QAA+B,SAGhDC,MAGCC,SAAW,MAEZC,YAAc,KACpBC,KAAKF,SAAW,IAAI,EAGd,WAAAG,GACN,IAAKD,KAAKN,KAAM,MAAO,GACvB,MAAMQ,EAAQF,KAAKN,KAAKS,OAAOC,MAAM,OACrC,GAAIF,EAAMG,SAAW,EAAG,CACtB,OAAOH,EAAM,GAAGI,OAAO,GAAGC,a,CAE5B,OAAQL,EAAM,GAAGI,OAAO,GAAKJ,EAAMA,EAAMG,OAAS,GAAGC,OAAO,IAAIC,a,CAIlE,MAAAC,GACE,MAAMC,EAAYT,KAAKR,MAAQQ,KAAKF,SACpC,MAAMY,EAAWV,KAAKC,cACtB,MAAMU,GAAgBF,GAAaC,EAEnC,OACEE,EAACC,EAAI,CAAAC,IAAA,2CACHC,MAAO,CACL,YAAa,KACb,CAAC,cAAcf,KAAKL,QAAS,KAC7B,CAAC,cAAcK,KAAKJ,WAAY,OAGlCgB,EAAA,OAAAE,IAAA,2CACEC,MAAM,eACNC,KAAK,OACLC,KAAK,MAAK,aACEjB,KAAKP,KAAOO,KAAKN,MAAQ,SACrCwB,MAAOlB,KAAKH,QAAUY,EAAY,CAAEU,gBAAiBnB,KAAKH,OAAUuB,WAEnEX,GACCG,EAAA,OAAAE,IAAA,2CACEC,MAAM,gBACNC,KAAK,QACLxB,IAAKQ,KAAKR,IACVC,IAAKO,KAAKP,KAAOO,KAAKN,MAAQ,GAC9B2B,QAASrB,KAAKD,cAGjBY,GACCC,EAAA,QAAAE,IAAA,2CAAMC,MAAM,mBAAmBC,KAAK,WAAU,cAAa,QACxDN,IAGHD,IAAcE,GAAgBC,EAAA,QAAAE,IAAA,8C","ignoreList":[]}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"names":["drawerCss","TsDrawer","panelEl","removeFocusTrap","previouslyFocused","drawerId","generateId","open","placement","size","dismissible","heading","tsClose","isAnimating","handleOpenChange","isOpen","this","openDrawer","closeDrawer","show","close","document","activeElement","body","style","overflow","requestAnimationFrame","trapFocus","focus","emit","disconnectedCallback","handleOverlayClick","handlePanelClick","event","stopPropagation","handleKeydown","key","handleCloseClick","render","h","Host","class","onKeyDown","part","onClick","ref","el","drawer__panel","role","undefined","tabindex","id","type","name"],"sources":["src/components/drawer/drawer.css?tag=ts-drawer&encapsulation=shadow","src/components/drawer/drawer.tsx"],"sourcesContent":["/* ==========================================================================\n ts-drawer — Shadow DOM Scoped Styles\n\n Component tokens (Tier 3):\n --ts-drawer-bg Panel background\n --ts-drawer-shadow Panel box-shadow\n --ts-drawer-overlay-bg Overlay background\n ========================================================================== */\n\n:host {\n font-family: var(--ts-font-family-base);\n\n --ts-drawer-bg: var(--ts-color-bg-elevated);\n --ts-drawer-shadow: var(--ts-shadow-xl);\n --ts-drawer-overlay-bg: var(--ts-color-bg-overlay);\n}\n\n/* ---- Overlay ---- */\n.drawer__overlay {\n position: fixed;\n inset: 0;\n z-index: var(--ts-z-modal);\n background-color: var(--ts-drawer-overlay-bg);\n animation: ts-drawer-fade-in 200ms ease-out;\n}\n\n/* ---- Panel ---- */\n.drawer__panel {\n position: fixed;\n display: flex;\n flex-direction: column;\n background-color: var(--ts-drawer-bg);\n box-shadow: var(--ts-drawer-shadow);\n outline: none;\n overflow-y: auto;\n}\n\n/* ---- Placement ---- */\n.drawer__panel--start {\n inset-block-start: 0;\n inset-block-end: 0;\n inset-inline-start: 0;\n animation: ts-drawer-slide-start 250ms cubic-bezier(0.16, 1, 0.3, 1);\n}\n\n.drawer__panel--end {\n inset-block-start: 0;\n inset-block-end: 0;\n inset-inline-end: 0;\n animation: ts-drawer-slide-end 250ms cubic-bezier(0.16, 1, 0.3, 1);\n}\n\n.drawer__panel--top {\n inset-block-start: 0;\n inset-inline-start: 0;\n inset-inline-end: 0;\n animation: ts-drawer-slide-top 250ms cubic-bezier(0.16, 1, 0.3, 1);\n}\n\n.drawer__panel--bottom {\n inset-block-end: 0;\n inset-inline-start: 0;\n inset-inline-end: 0;\n animation: ts-drawer-slide-bottom 250ms cubic-bezier(0.16, 1, 0.3, 1);\n}\n\n/* ---- Sizes — horizontal placement (start/end) ---- */\n.drawer__panel--start.drawer__panel--sm,\n.drawer__panel--end.drawer__panel--sm {\n inline-size: 320px;\n}\n\n.drawer__panel--start.drawer__panel--md,\n.drawer__panel--end.drawer__panel--md {\n inline-size: 440px;\n}\n\n.drawer__panel--start.drawer__panel--lg,\n.drawer__panel--end.drawer__panel--lg {\n inline-size: 640px;\n}\n\n.drawer__panel--start.drawer__panel--full,\n.drawer__panel--end.drawer__panel--full {\n inline-size: 100%;\n}\n\n/* ---- Sizes — vertical placement (top/bottom) ---- */\n.drawer__panel--top.drawer__panel--sm,\n.drawer__panel--bottom.drawer__panel--sm {\n block-size: 320px;\n}\n\n.drawer__panel--top.drawer__panel--md,\n.drawer__panel--bottom.drawer__panel--md {\n block-size: 440px;\n}\n\n.drawer__panel--top.drawer__panel--lg,\n.drawer__panel--bottom.drawer__panel--lg {\n block-size: 640px;\n}\n\n.drawer__panel--top.drawer__panel--full,\n.drawer__panel--bottom.drawer__panel--full {\n block-size: 100%;\n}\n\n/* ---- Header ---- */\n.drawer__header {\n display: flex;\n align-items: center;\n justify-content: space-between;\n padding: var(--ts-spacing-4) var(--ts-spacing-5);\n border-block-end: 1px solid var(--ts-color-border-default);\n}\n\n.drawer__title {\n font-size: var(--ts-font-size-lg);\n font-weight: var(--ts-font-weight-semi);\n color: var(--ts-color-text-primary);\n}\n\n/* ---- Close Button ---- */\n.drawer__close {\n display: flex;\n align-items: center;\n justify-content: center;\n width: 2rem;\n height: 2rem;\n border: none;\n border-radius: var(--ts-radius-md);\n background: transparent;\n color: var(--ts-color-text-tertiary);\n font-size: var(--ts-font-size-md);\n cursor: pointer;\n padding: 0;\n line-height: 1;\n margin-inline-start: auto;\n transition:\n background-color var(--ts-transition-fast),\n color var(--ts-transition-fast);\n}\n\n.drawer__close:hover {\n background-color: var(--ts-color-bg-hover);\n color: var(--ts-color-text-secondary);\n}\n\n.drawer__close:focus-visible {\n box-shadow: var(--ts-focus-ring);\n}\n\n/* ---- Body ---- */\n.drawer__body {\n flex: 1;\n padding: var(--ts-spacing-4) var(--ts-spacing-5);\n font-size: var(--ts-font-size-md);\n color: var(--ts-color-text-secondary);\n line-height: var(--ts-line-height-normal);\n overflow-y: auto;\n}\n\n/* ---- Footer ---- */\n.drawer__footer {\n padding: var(--ts-spacing-4) var(--ts-spacing-5);\n border-block-start: 1px solid var(--ts-color-border-default);\n display: flex;\n align-items: center;\n justify-content: flex-end;\n gap: var(--ts-spacing-2);\n}\n\n.drawer__footer:empty {\n display: none;\n}\n\n/* ---- Animations ---- */\n@keyframes ts-drawer-fade-in {\n from { opacity: 0; }\n to { opacity: 1; }\n}\n\n@keyframes ts-drawer-slide-start {\n from { transform: translateX(-100%); }\n to { transform: translateX(0); }\n}\n\n@keyframes ts-drawer-slide-end {\n from { transform: translateX(100%); }\n to { transform: translateX(0); }\n}\n\n@keyframes ts-drawer-slide-top {\n from { transform: translateY(-100%); }\n to { transform: translateY(0); }\n}\n\n@keyframes ts-drawer-slide-bottom {\n from { transform: translateY(100%); }\n to { transform: translateY(0); }\n}\n","import { Component, Prop, State, Event, h, Host, Element, Method, Watch } from '@stencil/core';\nimport type { EventEmitter } from '@stencil/core';\nimport { generateId, trapFocus } from '../../utils/aria';\n\n/**\n * @slot - Default slot for drawer body content.\n * @slot footer - Drawer footer content (e.g., action buttons).\n *\n * @part overlay - The backdrop overlay.\n * @part panel - The slide-in panel container.\n * @part header - The header wrapper.\n * @part body - The body wrapper.\n * @part footer - The footer wrapper.\n * @part close - The close button.\n */\n@Component({\n tag: 'ts-drawer',\n styleUrl: 'drawer.css',\n shadow: true,\n})\nexport class TsDrawer {\n @Element() hostEl!: HTMLElement;\n\n private panelEl?: HTMLElement;\n private removeFocusTrap?: () => void;\n private previouslyFocused?: HTMLElement;\n private drawerId = generateId('ts-drawer');\n\n /** Whether the drawer is open. */\n @Prop({ mutable: true, reflect: true }) open = false;\n\n /** Which edge the drawer slides in from. */\n @Prop({ reflect: true }) placement: 'start' | 'end' | 'top' | 'bottom' = 'end';\n\n /** The drawer's width/height preset. */\n @Prop({ reflect: true }) size: 'sm' | 'md' | 'lg' | 'full' = 'md';\n\n /** Whether clicking the overlay or pressing Escape closes the drawer. */\n @Prop() dismissible = true;\n\n /** Accessible heading for the drawer. */\n @Prop() heading?: string;\n\n /** Emitted when the drawer closes. */\n @Event({ eventName: 'tsClose' }) tsClose!: EventEmitter<void>;\n\n /** Internal animation state. */\n @State() isAnimating = false;\n\n @Watch('open')\n handleOpenChange(isOpen: boolean): void {\n if (isOpen) {\n this.openDrawer();\n } else {\n this.closeDrawer();\n }\n }\n\n /** Programmatically open the drawer. */\n @Method()\n async show(): Promise<void> {\n this.open = true;\n }\n\n /** Programmatically close the drawer. */\n @Method()\n async close(): Promise<void> {\n this.open = false;\n }\n\n private openDrawer(): void {\n this.previouslyFocused = document.activeElement as HTMLElement;\n this.isAnimating = true;\n\n document.body.style.overflow = 'hidden';\n\n requestAnimationFrame(() => {\n if (this.panelEl) {\n this.removeFocusTrap = trapFocus(this.panelEl);\n this.panelEl.focus();\n }\n });\n }\n\n private closeDrawer(): void {\n this.isAnimating = false;\n this.tsClose.emit();\n\n document.body.style.overflow = '';\n this.removeFocusTrap?.();\n this.previouslyFocused?.focus();\n }\n\n disconnectedCallback(): void {\n this.removeFocusTrap?.();\n document.body.style.overflow = '';\n }\n\n private handleOverlayClick = (): void => {\n if (this.dismissible) {\n this.close();\n }\n };\n\n private handlePanelClick = (event: MouseEvent): void => {\n event.stopPropagation();\n };\n\n private handleKeydown = (event: KeyboardEvent): void => {\n if (event.key === 'Escape' && this.dismissible) {\n event.stopPropagation();\n this.close();\n }\n };\n\n private handleCloseClick = (): void => {\n this.close();\n };\n\n // eslint-disable-next-line @typescript-eslint/explicit-function-return-type\n render() {\n if (!this.open) return null;\n\n return (\n <Host\n class={{\n 'ts-drawer': true,\n 'ts-drawer--open': this.open,\n [`ts-drawer--${this.placement}`]: true,\n [`ts-drawer--${this.size}`]: true,\n }}\n onKeyDown={this.handleKeydown}\n >\n <div class=\"drawer__overlay\" part=\"overlay\" onClick={this.handleOverlayClick}>\n <div\n ref={(el) => (this.panelEl = el)}\n class={{\n 'drawer__panel': true,\n [`drawer__panel--${this.placement}`]: true,\n [`drawer__panel--${this.size}`]: true,\n }}\n part=\"panel\"\n role=\"dialog\"\n aria-modal=\"true\"\n aria-label={this.heading}\n aria-labelledby={!this.heading ? `${this.drawerId}-header` : undefined}\n tabindex={-1}\n onClick={this.handlePanelClick}\n >\n <div class=\"drawer__header\" part=\"header\" id={`${this.drawerId}-header`}>\n {this.heading && <span class=\"drawer__title\">{this.heading}</span>}\n {this.dismissible && (\n <button\n class=\"drawer__close\"\n part=\"close\"\n type=\"button\"\n aria-label=\"Close drawer\"\n onClick={this.handleCloseClick}\n >\n ✕\n </button>\n )}\n </div>\n\n <div class=\"drawer__body\" part=\"body\">\n <slot />\n </div>\n\n <div class=\"drawer__footer\" part=\"footer\">\n <slot name=\"footer\" />\n </div>\n </div>\n </div>\n </Host>\n );\n }\n}\n"],"mappings":"sGAAA,MAAMA,EAAY,IAAM,4/G,MCoBXC,EAAQ,M,oFAGXC,QACAC,gBACAC,kBACAC,SAAWC,EAAW,aAGUC,KAAO,MAGtBC,UAAgD,MAGhDC,KAAoC,KAGrDC,YAAc,KAGdC,QAGyBC,QAGxBC,YAAc,MAGvB,gBAAAC,CAAiBC,GACf,GAAIA,EAAQ,CACVC,KAAKC,Y,KACA,CACLD,KAAKE,a,EAMT,UAAMC,GACJH,KAAKT,KAAO,I,CAKd,WAAMa,GACJJ,KAAKT,KAAO,K,CAGN,UAAAU,GACND,KAAKZ,kBAAoBiB,SAASC,cAClCN,KAAKH,YAAc,KAEnBQ,SAASE,KAAKC,MAAMC,SAAW,SAE/BC,uBAAsB,KACpB,GAAIV,KAAKd,QAAS,CAChBc,KAAKb,gBAAkBwB,EAAUX,KAAKd,SACtCc,KAAKd,QAAQ0B,O,KAKX,WAAAV,GACNF,KAAKH,YAAc,MACnBG,KAAKJ,QAAQiB,OAEbR,SAASE,KAAKC,MAAMC,SAAW,GAC/BT,KAAKb,oBACLa,KAAKZ,mBAAmBwB,O,CAG1B,oBAAAE,GACEd,KAAKb,oBACLkB,SAASE,KAAKC,MAAMC,SAAW,E,CAGzBM,mBAAqB,KAC3B,GAAIf,KAAKN,YAAa,CACpBM,KAAKI,O,GAIDY,iBAAoBC,IAC1BA,EAAMC,iBAAiB,EAGjBC,cAAiBF,IACvB,GAAIA,EAAMG,MAAQ,UAAYpB,KAAKN,YAAa,CAC9CuB,EAAMC,kBACNlB,KAAKI,O,GAIDiB,iBAAmB,KACzBrB,KAAKI,OAAO,EAId,MAAAkB,GACE,IAAKtB,KAAKT,KAAM,OAAO,KAEvB,OACEgC,EAACC,EAAI,CACHC,MAAO,CACL,YAAa,KACb,kBAAmBzB,KAAKT,KACxB,CAAC,cAAcS,KAAKR,aAAc,KAClC,CAAC,cAAcQ,KAAKP,QAAS,MAE/BiC,UAAW1B,KAAKmB,eAEhBI,EAAA,OAAKE,MAAM,kBAAkBE,KAAK,UAAUC,QAAS5B,KAAKe,oBACxDQ,EAAA,OACEM,IAAMC,GAAQ9B,KAAKd,QAAU4C,EAC7BL,MAAO,CACLM,cAAiB,KACjB,CAAC,kBAAkB/B,KAAKR,aAAc,KACtC,CAAC,kBAAkBQ,KAAKP,QAAS,MAEnCkC,KAAK,QACLK,KAAK,SAAQ,aACF,OAAM,aACLhC,KAAKL,QAAO,mBACNK,KAAKL,QAAU,GAAGK,KAAKX,kBAAoB4C,UAC7DC,UAAU,EACVN,QAAS5B,KAAKgB,kBAEdO,EAAA,OAAKE,MAAM,iBAAiBE,KAAK,SAASQ,GAAI,GAAGnC,KAAKX,mBACnDW,KAAKL,SAAW4B,EAAA,QAAME,MAAM,iBAAiBzB,KAAKL,SAClDK,KAAKN,aACJ6B,EAAA,UACEE,MAAM,gBACNE,KAAK,QACLS,KAAK,SAAQ,aACF,eACXR,QAAS5B,KAAKqB,kBAAgB,MAOpCE,EAAA,OAAKE,MAAM,eAAeE,KAAK,QAC7BJ,EAAA,cAGFA,EAAA,OAAKE,MAAM,iBAAiBE,KAAK,UAC/BJ,EAAA,QAAMc,KAAK,c","ignoreList":[]}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"names":["badgeCss","TsBadge","variant","size","pill","dot","outline","render","h","Host","key","class","this","part"],"sources":["src/components/badge/badge.css?tag=ts-badge&encapsulation=shadow","src/components/badge/badge.tsx"],"sourcesContent":["/* ==========================================================================\n ts-badge — Shadow DOM Scoped Styles\n\n Component tokens (Tier 3):\n --ts-badge-radius Border radius\n --ts-badge-font-weight Label font weight\n ========================================================================== */\n\n:host {\n display: inline-flex;\n vertical-align: middle;\n font-family: var(--ts-font-family-base);\n\n --ts-badge-radius: var(--ts-shape-badge);\n --ts-badge-font-weight: var(--ts-font-weight-medium);\n}\n\n.badge__base {\n display: inline-flex;\n align-items: center;\n justify-content: center;\n font-weight: var(--ts-badge-font-weight);\n letter-spacing: 0;\n line-height: 1;\n white-space: nowrap;\n border-radius: var(--ts-badge-radius);\n border: 1px solid transparent;\n}\n\n/* ---- Sizes ---- */\n:host([size=\"xs\"]) .badge__base { padding: 2px var(--ts-spacing-1); font-size: 0.625rem; }\n:host([size=\"sm\"]) .badge__base { padding: 3px var(--ts-spacing-2); font-size: var(--ts-font-size-xs); }\n:host([size=\"md\"]) .badge__base { padding: var(--ts-spacing-1) var(--ts-spacing-3); font-size: var(--ts-font-size-xs); }\n:host([size=\"lg\"]) .badge__base { padding: var(--ts-spacing-2) var(--ts-spacing-3); font-size: var(--ts-font-size-sm); }\n:host([size=\"xl\"]) .badge__base { padding: var(--ts-spacing-2) var(--ts-spacing-4); font-size: var(--ts-font-size-md); }\n\n/* ---- Pill ---- */\n:host([pill]) .badge__base {\n border-radius: var(--ts-radius-full);\n}\n\n/* ---- Dot ---- */\n:host([dot]) .badge__base {\n width: 8px;\n height: 8px;\n padding: 0;\n border-radius: var(--ts-radius-full);\n}\n\n:host([dot][size=\"lg\"]) .badge__base { width: 10px; height: 10px; }\n:host([dot][size=\"xl\"]) .badge__base { width: 12px; height: 12px; }\n\n/* ---- Solid Variants ---- */\n:host([variant=\"primary\"]:not([outline])) .badge__base { background: var(--ts-color-primary-500); color: var(--ts-color-text-on-primary); }\n:host([variant=\"success\"]:not([outline])) .badge__base { background: var(--ts-color-success-500); color: var(--ts-color-text-on-success); }\n:host([variant=\"warning\"]:not([outline])) .badge__base { background: var(--ts-color-warning-500); color: var(--ts-color-text-on-warning); }\n:host([variant=\"danger\"]:not([outline])) .badge__base { background: var(--ts-color-danger-500); color: var(--ts-color-text-on-danger); }\n:host([variant=\"info\"]:not([outline])) .badge__base { background: var(--ts-color-info-500); color: var(--ts-color-text-on-info); }\n:host([variant=\"neutral\"]:not([outline])) .badge__base { background: var(--ts-color-neutral-200); color: var(--ts-color-text-secondary); }\n:host([variant=\"secondary\"]:not([outline])) .badge__base { background: var(--ts-color-neutral-100); color: var(--ts-color-text-tertiary); }\n\n/* ---- Outline Variants ---- */\n:host([outline][variant=\"primary\"]) .badge__base { border-color: var(--ts-color-primary-500); color: var(--ts-color-primary-600); background: transparent; }\n:host([outline][variant=\"success\"]) .badge__base { border-color: var(--ts-color-success-500); color: var(--ts-color-success-600); background: transparent; }\n:host([outline][variant=\"danger\"]) .badge__base { border-color: var(--ts-color-danger-500); color: var(--ts-color-danger-600); background: transparent; }\n:host([outline][variant=\"warning\"]) .badge__base { border-color: var(--ts-color-warning-500); color: var(--ts-color-warning-600); background: transparent; }\n:host([outline][variant=\"neutral\"]) .badge__base { border-color: var(--ts-color-border-strong); color: var(--ts-color-text-tertiary); background: transparent; }\n","import { Component, Prop, h, Host } from '@stencil/core';\nimport type { TsSize, TsVariant } from '../../types';\n\n/**\n * @slot - Default slot for badge content.\n *\n * @part base - The badge element.\n */\n@Component({\n tag: 'ts-badge',\n styleUrl: 'badge.css',\n shadow: true,\n})\nexport class TsBadge {\n /** The badge's color variant. */\n @Prop({ reflect: true }) variant: TsVariant = 'primary';\n\n /** The badge's size. */\n @Prop({ reflect: true }) size: TsSize = 'md';\n\n /** Renders the badge with rounded-pill shape. */\n @Prop({ reflect: true }) pill = false;\n\n /** Renders the badge as a small dot indicator (content is hidden). */\n @Prop({ reflect: true }) dot = false;\n\n /** Renders an outlined style instead of solid. */\n @Prop({ reflect: true }) outline = false;\n\n // eslint-disable-next-line @typescript-eslint/explicit-function-return-type\n render() {\n return (\n <Host\n class={{\n 'ts-badge': true,\n [`ts-badge--${this.variant}`]: true,\n [`ts-badge--${this.size}`]: true,\n 'ts-badge--pill': this.pill,\n 'ts-badge--dot': this.dot,\n 'ts-badge--outline': this.outline,\n }}\n >\n <span class=\"badge__base\" part=\"base\">\n {!this.dot && <slot />}\n </span>\n </Host>\n );\n }\n}\n"],"mappings":"kDAAA,MAAMA,EAAW,IAAM,uyF,MCaVC,EAAO,M,yBAEOC,QAAqB,UAGrBC,KAAe,KAGfC,KAAO,MAGPC,IAAM,MAGNC,QAAU,MAGnC,MAAAC,GACE,OACEC,EAACC,EAAI,CAAAC,IAAA,2CACHC,MAAO,CACL,WAAY,KACZ,CAAC,aAAaC,KAAKV,WAAY,KAC/B,CAAC,aAAaU,KAAKT,QAAS,KAC5B,iBAAkBS,KAAKR,KACvB,gBAAiBQ,KAAKP,IACtB,oBAAqBO,KAAKN,UAG5BE,EAAA,QAAAE,IAAA,2CAAMC,MAAM,cAAcE,KAAK,SAC3BD,KAAKP,KAAOG,EAAA,QAAAE,IAAA,8C","ignoreList":[]}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"names":["progressCss","TsProgress","value","max","variant","size","indeterminate","label","showValue","percentage","this","Math","min","render","percent","h","Host","key","class","part","role","undefined","style","width","round"],"sources":["src/components/progress/progress.css?tag=ts-progress&encapsulation=shadow","src/components/progress/progress.tsx"],"sourcesContent":["/* ==========================================================================\n ts-progress — Shadow DOM Scoped Styles\n\n Component tokens (Tier 3):\n --ts-progress-track-bg Track background color\n --ts-progress-fill-bg Fill bar background color\n --ts-progress-radius Border radius\n --ts-progress-height Track height\n ========================================================================== */\n\n:host {\n display: flex;\n align-items: center;\n gap: var(--ts-spacing-2);\n\n --ts-progress-track-bg: var(--ts-color-neutral-200);\n --ts-progress-fill-bg: var(--ts-color-interactive-primary);\n --ts-progress-radius: var(--ts-radius-full);\n --ts-progress-height: 0.5rem;\n}\n\n/* ---- Track ---- */\n.progress__track {\n flex: 1;\n block-size: var(--ts-progress-height);\n background-color: var(--ts-progress-track-bg);\n border-radius: var(--ts-progress-radius);\n overflow: hidden;\n position: relative;\n}\n\n/* ---- Fill ---- */\n.progress__fill {\n block-size: 100%;\n background-color: var(--ts-progress-fill-bg);\n border-radius: var(--ts-progress-radius);\n transition: width var(--ts-transition-normal);\n}\n\n/* ---- Label ---- */\n.progress__label {\n font-family: var(--ts-font-family-base);\n font-size: var(--ts-font-size-sm);\n font-weight: var(--ts-font-weight-semi);\n color: var(--ts-color-text-secondary);\n min-inline-size: 3ch;\n text-align: end;\n}\n\n/* ---- Sizes ---- */\n:host([size=\"sm\"]) {\n --ts-progress-height: 0.25rem;\n}\n\n:host([size=\"lg\"]) {\n --ts-progress-height: 0.75rem;\n}\n\n/* ---- Variants ---- */\n:host([variant=\"success\"]) {\n --ts-progress-fill-bg: var(--ts-color-success-600);\n}\n\n:host([variant=\"warning\"]) {\n --ts-progress-fill-bg: var(--ts-color-warning-600);\n}\n\n:host([variant=\"danger\"]) {\n --ts-progress-fill-bg: var(--ts-color-danger-500);\n}\n\n:host([variant=\"info\"]) {\n --ts-progress-fill-bg: var(--ts-color-info-500);\n}\n\n/* ---- Indeterminate animation ---- */\n:host([indeterminate]) .progress__fill {\n width: 40%;\n animation: ts-progress-slide 1.5s ease-in-out infinite;\n}\n\n@keyframes ts-progress-slide {\n 0% {\n transform: translateX(-100%);\n }\n 100% {\n transform: translateX(350%);\n }\n}\n","import { Component, Prop, h, Host } from '@stencil/core';\nimport type { TsSize } from '../../types';\n\ntype TsProgressVariant = 'primary' | 'success' | 'warning' | 'danger' | 'info';\n\n/**\n * @part track - The progress track.\n * @part fill - The progress fill bar.\n * @part label - The value label text.\n */\n@Component({\n tag: 'ts-progress',\n styleUrl: 'progress.css',\n shadow: true,\n})\nexport class TsProgress {\n /** Current progress value (0 to max). */\n @Prop() value = 0;\n\n /** Maximum value. */\n @Prop() max = 100;\n\n /** The color variant. */\n @Prop({ reflect: true }) variant: TsProgressVariant = 'primary';\n\n /** The size of the progress bar. */\n @Prop({ reflect: true }) size: TsSize = 'md';\n\n /** Whether the progress is indeterminate. */\n @Prop({ reflect: true }) indeterminate = false;\n\n /** Accessible label for the progress bar. */\n @Prop() label?: string;\n\n /** Whether to display the percentage value. */\n @Prop({ reflect: true }) showValue = false;\n\n private get percentage(): number {\n if (this.max <= 0) return 0;\n return Math.min(100, Math.max(0, (this.value / this.max) * 100));\n }\n\n // eslint-disable-next-line @typescript-eslint/explicit-function-return-type\n render() {\n const percent = this.percentage;\n\n return (\n <Host\n class={{\n 'ts-progress': true,\n [`ts-progress--${this.variant}`]: true,\n [`ts-progress--${this.size}`]: true,\n 'ts-progress--indeterminate': this.indeterminate,\n }}\n >\n <div\n class=\"progress__track\"\n part=\"track\"\n role=\"progressbar\"\n aria-valuenow={this.indeterminate ? undefined : this.value}\n aria-valuemin={0}\n aria-valuemax={this.max}\n aria-label={this.label || undefined}\n >\n <div\n class=\"progress__fill\"\n part=\"fill\"\n style={this.indeterminate ? undefined : { width: `${percent}%` }}\n />\n </div>\n {this.showValue && !this.indeterminate && (\n <span class=\"progress__label\" part=\"label\" aria-hidden=\"true\">\n {Math.round(percent)}%\n </span>\n )}\n </Host>\n );\n }\n}\n"],"mappings":"kDAAA,MAAMA,EAAc,IAAM,k2C,MCebC,EAAU,M,yBAEbC,MAAQ,EAGRC,IAAM,IAGWC,QAA6B,UAG7BC,KAAe,KAGfC,cAAgB,MAGjCC,MAGiBC,UAAY,MAErC,cAAYC,GACV,GAAIC,KAAKP,KAAO,EAAG,OAAO,EAC1B,OAAOQ,KAAKC,IAAI,IAAKD,KAAKR,IAAI,EAAIO,KAAKR,MAAQQ,KAAKP,IAAO,K,CAI7D,MAAAU,GACE,MAAMC,EAAUJ,KAAKD,WAErB,OACEM,EAACC,EAAI,CAAAC,IAAA,2CACHC,MAAO,CACL,cAAe,KACf,CAAC,gBAAgBR,KAAKN,WAAY,KAClC,CAAC,gBAAgBM,KAAKL,QAAS,KAC/B,6BAA8BK,KAAKJ,gBAGrCS,EAAA,OAAAE,IAAA,2CACEC,MAAM,kBACNC,KAAK,QACLC,KAAK,cAAa,gBACHV,KAAKJ,cAAgBe,UAAYX,KAAKR,MAAK,gBAC3C,EAAC,gBACDQ,KAAKP,IAAG,aACXO,KAAKH,OAASc,WAE1BN,EAAA,OAAAE,IAAA,2CACEC,MAAM,iBACNC,KAAK,OACLG,MAAOZ,KAAKJ,cAAgBe,UAAY,CAAEE,MAAO,GAAGT,SAGvDJ,KAAKF,YAAcE,KAAKJ,eACvBS,EAAA,QAAAE,IAAA,2CAAMC,MAAM,kBAAkBC,KAAK,QAAO,cAAa,QACpDR,KAAKa,MAAMV,GAAQ,K","ignoreList":[]}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"names":["skeletonCss","TsSkeleton","variant","width","height","lines","animation","render","style","this","lineElements","i","isLast","push","h","class","skeleton__line","part","Host"],"sources":["src/components/skeleton/skeleton.css?tag=ts-skeleton&encapsulation=shadow","src/components/skeleton/skeleton.tsx"],"sourcesContent":["/* ==========================================================================\n ts-skeleton — Shadow DOM Scoped Styles\n\n Component tokens (Tier 3):\n --ts-skeleton-radius Border radius\n --ts-skeleton-height Default line height\n ========================================================================== */\n\n:host {\n display: block;\n font-family: var(--ts-font-family-base);\n\n --ts-skeleton-radius: var(--ts-radius-sm);\n --ts-skeleton-height: 1em;\n --ts-color-skeleton-base: var(--ts-color-neutral-200);\n --ts-color-skeleton-pulse: var(--ts-color-neutral-300);\n}\n\n.skeleton__base {\n display: flex;\n flex-direction: column;\n gap: var(--ts-spacing-2);\n width: 100%;\n height: 100%;\n}\n\n/* ---- Line (text variant) ---- */\n.skeleton__line {\n block-size: var(--ts-skeleton-height);\n inline-size: 100%;\n border-radius: var(--ts-skeleton-radius);\n background-color: var(--ts-color-skeleton-base);\n}\n\n.skeleton__line--last {\n inline-size: 75%;\n}\n\n/* ---- Circular variant ---- */\n:host([variant=\"circular\"]) .skeleton__base {\n border-radius: 50%;\n background-color: var(--ts-color-skeleton-base);\n aspect-ratio: 1;\n}\n\n/* ---- Rectangular variant ---- */\n:host([variant=\"rectangular\"]) .skeleton__base {\n border-radius: var(--ts-skeleton-radius);\n background-color: var(--ts-color-skeleton-base);\n min-block-size: var(--ts-skeleton-height);\n}\n\n/* ---- Pulse animation ---- */\n:host([animation=\"pulse\"]) .skeleton__line,\n:host([animation=\"pulse\"][variant=\"circular\"]) .skeleton__base,\n:host([animation=\"pulse\"][variant=\"rectangular\"]) .skeleton__base {\n animation: ts-skeleton-pulse 1.5s ease-in-out infinite;\n}\n\n@keyframes ts-skeleton-pulse {\n 0%, 100% { background-color: var(--ts-color-skeleton-base); }\n 50% { background-color: var(--ts-color-skeleton-pulse); }\n}\n\n/* ---- Wave animation ---- */\n:host([animation=\"wave\"]) .skeleton__line,\n:host([animation=\"wave\"][variant=\"circular\"]) .skeleton__base,\n:host([animation=\"wave\"][variant=\"rectangular\"]) .skeleton__base {\n background: linear-gradient(\n 90deg,\n var(--ts-color-skeleton-base) 25%,\n var(--ts-color-skeleton-pulse) 50%,\n var(--ts-color-skeleton-base) 75%\n );\n background-size: 200% 100%;\n animation: ts-skeleton-wave 1.5s ease-in-out infinite;\n}\n\n@keyframes ts-skeleton-wave {\n 0% { background-position: 200% 0; }\n 100% { background-position: -200% 0; }\n}\n\n/* ---- No animation ---- */\n:host([animation=\"none\"]) .skeleton__line,\n:host([animation=\"none\"][variant=\"circular\"]) .skeleton__base,\n:host([animation=\"none\"][variant=\"rectangular\"]) .skeleton__base {\n animation: none;\n}\n","import { Component, Prop, h, Host } from '@stencil/core';\n\n/**\n * @part base - The skeleton element container.\n * @part line - Individual skeleton line (text variant).\n */\n@Component({\n tag: 'ts-skeleton',\n styleUrl: 'skeleton.css',\n shadow: true,\n})\nexport class TsSkeleton {\n /** The skeleton shape variant. */\n @Prop({ reflect: true }) variant: 'text' | 'circular' | 'rectangular' = 'text';\n\n /** CSS width of the skeleton. */\n @Prop() width = '100%';\n\n /** CSS height of the skeleton. */\n @Prop() height?: string;\n\n /** Number of lines to render (text variant only). */\n @Prop() lines = 1;\n\n /** Animation style. */\n @Prop({ reflect: true }) animation: 'pulse' | 'wave' | 'none' = 'pulse';\n\n // eslint-disable-next-line @typescript-eslint/explicit-function-return-type\n render() {\n const style: Record<string, string> = {};\n if (this.width) style['width'] = this.width;\n if (this.height) style['height'] = this.height;\n\n if (this.variant === 'text') {\n const lineElements = [];\n for (let i = 0; i < this.lines; i++) {\n const isLast = i === this.lines - 1 && this.lines > 1;\n lineElements.push(\n <div\n class={{\n 'skeleton__line': true,\n 'skeleton__line--last': isLast,\n }}\n part=\"line\"\n />,\n );\n }\n\n return (\n <Host\n class={{\n 'ts-skeleton': true,\n [`ts-skeleton--${this.variant}`]: true,\n [`ts-skeleton--${this.animation}`]: true,\n }}\n style={style}\n aria-hidden=\"true\"\n >\n <div class=\"skeleton__base\" part=\"base\">\n {lineElements}\n </div>\n </Host>\n );\n }\n\n return (\n <Host\n class={{\n 'ts-skeleton': true,\n [`ts-skeleton--${this.variant}`]: true,\n [`ts-skeleton--${this.animation}`]: true,\n }}\n style={style}\n aria-hidden=\"true\"\n >\n <div class=\"skeleton__base\" part=\"base\" />\n </Host>\n );\n }\n}\n"],"mappings":"kDAAA,MAAMA,EAAc,IAAM,k1D,MCWbC,EAAU,M,yBAEIC,QAA+C,OAGhEC,MAAQ,OAGRC,OAGAC,MAAQ,EAGSC,UAAuC,QAGhE,MAAAC,GACE,MAAMC,EAAgC,GACtC,GAAIC,KAAKN,MAAOK,EAAM,SAAWC,KAAKN,MACtC,GAAIM,KAAKL,OAAQI,EAAM,UAAYC,KAAKL,OAExC,GAAIK,KAAKP,UAAY,OAAQ,CAC3B,MAAMQ,EAAe,GACrB,IAAK,IAAIC,EAAI,EAAGA,EAAIF,KAAKJ,MAAOM,IAAK,CACnC,MAAMC,EAASD,IAAMF,KAAKJ,MAAQ,GAAKI,KAAKJ,MAAQ,EACpDK,EAAaG,KACXC,EAAA,OACEC,MAAO,CACLC,eAAkB,KAClB,uBAAwBJ,GAE1BK,KAAK,S,CAKX,OACEH,EAACI,EAAI,CACHH,MAAO,CACL,cAAe,KACf,CAAC,gBAAgBN,KAAKP,WAAY,KAClC,CAAC,gBAAgBO,KAAKH,aAAc,MAEtCE,MAAOA,EAAK,cACA,QAEZM,EAAA,OAAKC,MAAM,iBAAiBE,KAAK,QAC9BP,G,CAMT,OACEI,EAACI,EAAI,CACHH,MAAO,CACL,cAAe,KACf,CAAC,gBAAgBN,KAAKP,WAAY,KAClC,CAAC,gBAAgBO,KAAKH,aAAc,MAEtCE,MAAOA,EAAK,cACA,QAEZM,EAAA,OAAKC,MAAM,iBAAiBE,KAAK,S","ignoreList":[]}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"names":["rowCss","TsRow","gap","align","justify","wrap","reverse","stackAt","render","alignMap","start","center","end","stretch","baseline","justifyMap","between","around","evenly","h","Host","key","style","this","alignItems","justifyContent","flexWrap"],"sources":["src/components/row/row.css?tag=ts-row&encapsulation=shadow","src/components/row/row.tsx"],"sourcesContent":["/* ==========================================================================\n ts-row — Shadow DOM Scoped Styles\n\n A horizontal flex row layout primitive with wrap and responsive stacking.\n ========================================================================== */\n\n:host {\n display: flex;\n flex-direction: row;\n}\n\n:host([reverse]) {\n flex-direction: row-reverse;\n}\n\n/* ---- Responsive stacking ---- */\n@media (max-width: 639px) {\n :host([stack-at=\"sm\"]) {\n flex-direction: column;\n }\n :host([stack-at=\"sm\"][reverse]) {\n flex-direction: column-reverse;\n }\n}\n\n@media (max-width: 767px) {\n :host([stack-at=\"md\"]) {\n flex-direction: column;\n }\n :host([stack-at=\"md\"][reverse]) {\n flex-direction: column-reverse;\n }\n}\n\n@media (max-width: 1023px) {\n :host([stack-at=\"lg\"]) {\n flex-direction: column;\n }\n :host([stack-at=\"lg\"][reverse]) {\n flex-direction: column-reverse;\n }\n}\n","import { Component, Prop, h, Host } from '@stencil/core';\n\n/**\n * @slot - Default slot for row content.\n */\n@Component({\n tag: 'ts-row',\n styleUrl: 'row.css',\n shadow: true,\n})\nexport class TsRow {\n /** Spacing token number controlling the gap between items. */\n @Prop({ reflect: true }) gap: string = '2';\n\n /** Cross-axis alignment of items. */\n @Prop({ reflect: true }) align: 'start' | 'center' | 'end' | 'stretch' | 'baseline' = 'center';\n\n /** Main-axis alignment of items. */\n @Prop({ reflect: true }) justify: 'start' | 'center' | 'end' | 'between' | 'around' | 'evenly' = 'start';\n\n /** Whether items should wrap to the next line. */\n @Prop({ reflect: true }) wrap: boolean = true;\n\n /** Reverse the row direction. */\n @Prop({ reflect: true }) reverse: boolean = false;\n\n /** Breakpoint at which the row stacks vertically. */\n @Prop({ reflect: true, attribute: 'stack-at' }) stackAt: 'sm' | 'md' | 'lg' | 'never' = 'never';\n\n // eslint-disable-next-line @typescript-eslint/explicit-function-return-type\n render() {\n const alignMap: Record<string, string> = {\n start: 'flex-start',\n center: 'center',\n end: 'flex-end',\n stretch: 'stretch',\n baseline: 'baseline',\n };\n\n const justifyMap: Record<string, string> = {\n start: 'flex-start',\n center: 'center',\n end: 'flex-end',\n between: 'space-between',\n around: 'space-around',\n evenly: 'space-evenly',\n };\n\n return (\n <Host\n style={{\n gap: `var(--ts-spacing-${this.gap})`,\n alignItems: alignMap[this.align] || 'center',\n justifyContent: justifyMap[this.justify] || 'flex-start',\n flexWrap: this.wrap ? 'wrap' : 'nowrap',\n }}\n >\n <slot />\n </Host>\n );\n }\n}\n"],"mappings":"kDAAA,MAAMA,EAAS,IAAM,we,MCURC,EAAK,M,yBAESC,IAAc,IAGdC,MAA6D,SAG7DC,QAAwE,QAGxEC,KAAgB,KAGhBC,QAAmB,MAGIC,QAAwC,QAGxF,MAAAC,GACE,MAAMC,EAAmC,CACvCC,MAAO,aACPC,OAAQ,SACRC,IAAK,WACLC,QAAS,UACTC,SAAU,YAGZ,MAAMC,EAAqC,CACzCL,MAAO,aACPC,OAAQ,SACRC,IAAK,WACLI,QAAS,gBACTC,OAAQ,eACRC,OAAQ,gBAGV,OACEC,EAACC,EAAI,CAAAC,IAAA,2CACHC,MAAO,CACLpB,IAAK,oBAAoBqB,KAAKrB,OAC9BsB,WAAYf,EAASc,KAAKpB,QAAU,SACpCsB,eAAgBV,EAAWQ,KAAKnB,UAAY,aAC5CsB,SAAUH,KAAKlB,KAAO,OAAS,WAGjCc,EAAA,QAAAE,IAAA,6C","ignoreList":[]}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"names":["tableCss","TsTable","striped","bordered","hoverable","compact","stickyHeader","render","h","Host","key","class","this","role","tabindex"],"sources":["src/components/table/table.css?tag=ts-table","src/components/table/table.tsx"],"sourcesContent":["/* ==========================================================================\n ts-table — Light DOM Styles\n\n Uses light DOM (no Shadow DOM) so nested <table>, <th>, <td>, <tr>\n elements can be styled directly.\n\n Component tokens (Tier 3):\n --ts-table-bg Table background color\n --ts-table-border-color Border color for cells and edges\n --ts-table-header-bg Header row background\n --ts-table-header-color Header text color\n --ts-table-row-hover-bg Row hover background\n --ts-table-stripe-bg Alternating row background\n --ts-table-cell-padding Cell padding\n ========================================================================== */\n\nts-table {\n display: block;\n font-family: var(--ts-font-family-base);\n\n --ts-table-bg: var(--ts-color-bg-surface);\n --ts-table-border-color: var(--ts-color-border-subtle);\n --ts-table-header-bg: var(--ts-color-bg-subtle);\n --ts-table-header-color: var(--ts-color-text-primary);\n --ts-table-row-hover-bg: var(--ts-color-bg-hover);\n --ts-table-stripe-bg: var(--ts-color-bg-subtle);\n --ts-table-cell-padding: var(--ts-spacing-3) var(--ts-spacing-4);\n}\n\nts-table[compact] {\n --ts-table-cell-padding: var(--ts-spacing-1) var(--ts-spacing-2);\n}\n\n/* ---- Scrollable Wrapper ---- */\nts-table .table__wrapper {\n overflow-x: auto;\n background-color: var(--ts-table-bg);\n border-radius: var(--ts-shape-container);\n border: 1px solid var(--ts-table-border-color);\n}\n\nts-table .table__wrapper:focus-visible {\n box-shadow: var(--ts-focus-ring);\n outline: none;\n}\n\n/* ---- Table ---- */\nts-table table {\n width: 100%;\n border-collapse: collapse;\n border-spacing: 0;\n font-size: var(--ts-font-size-sm);\n color: var(--ts-color-text-secondary);\n}\n\n/* ---- Header ---- */\nts-table th {\n padding: var(--ts-table-cell-padding);\n text-align: start;\n font-weight: var(--ts-font-weight-medium);\n font-size: var(--ts-font-size-xs);\n color: var(--ts-table-header-color);\n background-color: var(--ts-table-header-bg);\n border-bottom: 1px solid var(--ts-table-border-color);\n white-space: nowrap;\n letter-spacing: var(--ts-letter-spacing-wide);\n text-transform: uppercase;\n}\n\n/* ---- Cells ---- */\nts-table td {\n padding: var(--ts-table-cell-padding);\n border-bottom: 1px solid var(--ts-table-border-color);\n vertical-align: middle;\n}\n\n/* ---- Last row — no bottom border ---- */\nts-table tbody tr:last-child td {\n border-bottom: none;\n}\n\n/* ---- Striped ---- */\nts-table.ts-table--striped tbody tr:nth-child(even) {\n background-color: var(--ts-table-stripe-bg);\n}\n\n/* ---- Hoverable ---- */\nts-table.ts-table--hoverable tbody tr {\n transition: background-color var(--ts-transition-fast);\n}\n\nts-table.ts-table--hoverable tbody tr:hover {\n background-color: var(--ts-table-row-hover-bg);\n}\n\n/* ---- Bordered ---- */\nts-table.ts-table--bordered th,\nts-table.ts-table--bordered td {\n border: 1px solid var(--ts-table-border-color);\n}\n\n/* ---- Sticky header ---- */\nts-table.ts-table--sticky-header .table__wrapper {\n max-block-size: 24rem;\n overflow-y: auto;\n}\n\nts-table.ts-table--sticky-header th {\n position: sticky;\n top: 0;\n z-index: 1;\n}\n","import { Component, Prop, h, Host, Element } from '@stencil/core';\n\n/**\n * A styled wrapper for native HTML tables. Consumers place standard\n * `<table>`, `<thead>`, `<tbody>`, `<tr>`, `<th>`, `<td>` elements inside.\n *\n * Uses light DOM (no Shadow DOM) so nested table elements can be\n * styled directly via the component's CSS.\n *\n * @slot - Default slot for the native `<table>` element.\n */\n@Component({\n tag: 'ts-table',\n styleUrl: 'table.css',\n shadow: false,\n})\nexport class TsTable {\n @Element() hostEl!: HTMLElement;\n\n /** Applies alternating row background colors. */\n @Prop({ reflect: true }) striped = false;\n\n /** Adds borders to all cells. */\n @Prop({ reflect: true }) bordered = false;\n\n /** Highlights rows on hover. */\n @Prop({ reflect: true }) hoverable = false;\n\n /** Reduces cell padding for denser display. */\n @Prop({ reflect: true }) compact = false;\n\n /** Makes the table header stick to the top on scroll. */\n @Prop({ reflect: true }) stickyHeader = false;\n\n // eslint-disable-next-line @typescript-eslint/explicit-function-return-type\n render() {\n return (\n <Host\n class={{\n 'ts-table': true,\n 'ts-table--striped': this.striped,\n 'ts-table--bordered': this.bordered,\n 'ts-table--hoverable': this.hoverable,\n 'ts-table--compact': this.compact,\n 'ts-table--sticky-header': this.stickyHeader,\n }}\n >\n <div class=\"table__wrapper\" role=\"region\" tabindex={0}>\n <slot />\n </div>\n </Host>\n );\n }\n}\n"],"mappings":"yDAAA,MAAMA,EAAW,IAAM,y6D,MCgBVC,EAAO,M,qDAIOC,QAAU,MAGVC,SAAW,MAGXC,UAAY,MAGZC,QAAU,MAGVC,aAAe,MAGxC,MAAAC,GACE,OACEC,EAACC,EAAI,CAAAC,IAAA,2CACHC,MAAO,CACL,WAAY,KACZ,oBAAqBC,KAAKV,QAC1B,qBAAsBU,KAAKT,SAC3B,sBAAuBS,KAAKR,UAC5B,oBAAqBQ,KAAKP,QAC1B,0BAA2BO,KAAKN,eAGlCE,EAAA,OAAAE,IAAA,2CAAKC,MAAM,iBAAiBE,KAAK,SAASC,SAAU,GAClDN,EAAA,QAAAE,IAAA,8C","ignoreList":[]}
|