@tessera-ui/core 0.4.1 → 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":[],"sources":[],"mappings":"","ignoreList":[]}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"names":[],"sources":[],"mappings":"","ignoreList":[]}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"names":[],"sources":[],"mappings":"","ignoreList":[]}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"names":[],"sources":[],"mappings":"","ignoreList":[]}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"names":[],"sources":[],"mappings":"","ignoreList":[]}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"names":["inputCss","TsInput","__stencil_proxyCustomElement","HTMLElement","inputEl","inputId","generateId","value","type","size","label","placeholder","helpText","error","required","disabled","readonly","maxlength","minlength","pattern","autocomplete","name","hasFocus","tsInput","tsChange","tsFocus","tsBlur","tsValidate","handleValueChange","newValue","oldValue","this","setFocus","focus","selectText","select","handleInput","event","target","previousValue","emit","handleChange","valid","checkValidity","message","validationMessage","handleFocus","handleBlur","render","hasError","labelId","helpId","errorId","h","Host","key","class","part","id","htmlFor","input__wrapper","ref","el","readOnly","autoComplete","undefined","onInput","onChange","onFocus","onBlur","role"],"sources":["src/components/input/input.css?tag=ts-input&encapsulation=shadow","src/components/input/input.tsx"],"sourcesContent":["/* ==========================================================================\n ts-input — Shadow DOM Scoped Styles\n\n Component tokens (Tier 3):\n --ts-input-bg Input background\n --ts-input-color Input text color\n --ts-input-border-color Default border color\n --ts-input-radius Border radius\n --ts-input-focus-ring Focus ring box-shadow\n ========================================================================== */\n\n:host {\n display: block;\n font-family: var(--ts-font-family-base);\n\n --ts-input-bg: var(--ts-color-neutral-50);\n --ts-input-color: var(--ts-color-text-primary);\n --ts-input-border-color: var(--ts-color-border-default);\n --ts-input-radius: var(--ts-radius-md);\n --ts-input-focus-ring: var(--ts-focus-ring);\n}\n\n/* ---- Label ---- */\n.input__label {\n display: block;\n margin-bottom: var(--ts-spacing-1);\n font-size: var(--ts-font-size-sm);\n font-weight: var(--ts-font-weight-medium);\n color: var(--ts-color-text-secondary);\n line-height: var(--ts-line-height-normal);\n}\n\n.input__required {\n color: var(--ts-color-danger-500);\n}\n\n/* ---- Wrapper ---- */\n.input__wrapper {\n display: flex;\n align-items: center;\n gap: var(--ts-spacing-2);\n border: 1px solid var(--ts-input-border-color);\n border-radius: var(--ts-input-radius);\n background-color: var(--ts-input-bg);\n box-shadow: none;\n transition:\n border-color var(--ts-transition-fast),\n box-shadow var(--ts-transition-fast),\n background-color var(--ts-transition-fast);\n overflow: hidden;\n}\n\n.input__wrapper--focused {\n border-color: var(--ts-color-primary-500);\n box-shadow: var(--ts-input-focus-ring);\n}\n\n.input__wrapper--error {\n border-color: var(--ts-color-danger-500);\n}\n\n.input__wrapper--error.input__wrapper--focused {\n box-shadow: 0 0 0 3px var(--ts-color-focus-ring-danger);\n}\n\n.input__wrapper--disabled {\n background-color: var(--ts-color-bg-disabled);\n opacity: 0.6;\n cursor: not-allowed;\n}\n\n/* ---- Native Input ---- */\n.input__native {\n flex: 1;\n border: none;\n outline: none;\n background: transparent;\n font-family: inherit;\n color: var(--ts-input-color);\n width: 100%;\n min-width: 0;\n}\n\n.input__native::placeholder {\n color: var(--ts-color-text-tertiary);\n}\n\n.input__native:disabled {\n cursor: not-allowed;\n}\n\n/* ---- Sizes ---- */\n:host([size=\"sm\"]) .input__wrapper {\n border-radius: var(--ts-radius-sm);\n}\n:host([size=\"sm\"]) .input__native {\n padding: var(--ts-spacing-1) var(--ts-spacing-2);\n font-size: var(--ts-font-size-sm);\n}\n\n:host([size=\"md\"]) .input__native {\n padding: var(--ts-spacing-2) var(--ts-spacing-3);\n font-size: var(--ts-font-size-md);\n}\n\n:host([size=\"lg\"]) .input__native {\n padding: var(--ts-spacing-3) var(--ts-spacing-4);\n font-size: var(--ts-font-size-lg);\n}\n\n:host([size=\"xl\"]) .input__wrapper {\n border-radius: var(--ts-radius-lg);\n}\n:host([size=\"xl\"]) .input__native {\n padding: var(--ts-spacing-4) var(--ts-spacing-5);\n font-size: var(--ts-font-size-xl);\n}\n\n/* ---- Prefix / Suffix ---- */\n.input__prefix,\n.input__suffix {\n display: inline-flex;\n align-items: center;\n color: var(--ts-color-text-tertiary);\n}\n\n.input__prefix {\n padding-inline-start: var(--ts-spacing-3);\n}\n\n.input__suffix {\n padding-inline-end: var(--ts-spacing-3);\n}\n\n.input__prefix:empty,\n.input__suffix:empty {\n display: none;\n}\n\n/* ---- Help & Error Text ---- */\n.input__help,\n.input__error {\n margin-top: var(--ts-spacing-1);\n font-size: var(--ts-font-size-xs);\n line-height: var(--ts-line-height-normal);\n}\n\n.input__help {\n color: var(--ts-color-text-tertiary);\n}\n\n.input__error {\n color: var(--ts-color-danger-600);\n font-weight: var(--ts-font-weight-medium);\n}\n","import {\n Component,\n Prop,\n State,\n Event,\n Watch,\n h,\n Host,\n Element,\n Method,\n} from '@stencil/core';\nimport type { EventEmitter } from '@stencil/core';\nimport type { TsSize, TsChangeEventDetail, TsValidationEventDetail } from '../../types';\nimport { generateId } from '../../utils/aria';\n\n/**\n * @slot prefix - Content before the input (e.g., icon or currency symbol).\n * @slot suffix - Content after the input (e.g., icon or clear button).\n * @slot help-text - Help text displayed below the input.\n *\n * @part base - The outer wrapper.\n * @part label - The label element.\n * @part input - The native input element.\n * @part prefix - The prefix slot wrapper.\n * @part suffix - The suffix slot wrapper.\n * @part help-text - The help text wrapper.\n * @part error-text - The error message wrapper.\n */\n@Component({\n tag: 'ts-input',\n styleUrl: 'input.css',\n shadow: true,\n})\nexport class TsInput {\n @Element() hostEl!: HTMLElement;\n\n private inputEl?: HTMLInputElement;\n private inputId = generateId('ts-input');\n\n /** The input's value. */\n @Prop({ mutable: true, reflect: true }) value = '';\n\n /** The input type. */\n @Prop({ reflect: true }) type:\n | 'text'\n | 'email'\n | 'password'\n | 'number'\n | 'tel'\n | 'url'\n | 'search' = 'text';\n\n /** The input's size. */\n @Prop({ reflect: true }) size: TsSize = 'md';\n\n /** Label text displayed above the input. */\n @Prop() label?: string;\n\n /** Placeholder text. */\n @Prop() placeholder?: string;\n\n /** Help text displayed below the input. */\n @Prop() helpText?: string;\n\n /** Renders the input in an error state with an error message. */\n @Prop() error?: string;\n\n /** Makes the input required. */\n @Prop({ reflect: true }) required = false;\n\n /** Renders the input as disabled. */\n @Prop({ reflect: true }) disabled = false;\n\n /** Renders the input as readonly. */\n @Prop({ reflect: true }) readonly = false;\n\n /** Maximum character length. */\n @Prop() maxlength?: number;\n\n /** Minimum character length. */\n @Prop() minlength?: number;\n\n /** Pattern for validation (regex string). */\n @Prop() pattern?: string;\n\n /** Autocomplete attribute. */\n @Prop() autocomplete?: string;\n\n /** Name attribute for form submission. */\n @Prop() name?: string;\n\n /** Whether the input is currently focused. */\n @State() hasFocus = false;\n\n /** Emitted when the value changes (on input). */\n @Event({ eventName: 'tsInput' }) tsInput!: EventEmitter<TsChangeEventDetail<string>>;\n\n /** Emitted when the value changes (on blur / commit). */\n @Event({ eventName: 'tsChange' }) tsChange!: EventEmitter<TsChangeEventDetail<string>>;\n\n /** Emitted when the input gains focus. */\n @Event({ eventName: 'tsFocus' }) tsFocus!: EventEmitter<void>;\n\n /** Emitted when the input loses focus. */\n @Event({ eventName: 'tsBlur' }) tsBlur!: EventEmitter<void>;\n\n /** Emitted on validation. */\n @Event({ eventName: 'tsValidate' }) tsValidate!: EventEmitter<TsValidationEventDetail>;\n\n @Watch('value')\n handleValueChange(newValue: string, oldValue: string): void {\n if (newValue !== oldValue && this.inputEl) {\n this.inputEl.value = newValue;\n }\n }\n\n /** Programmatically focus the input. */\n @Method()\n async setFocus(): Promise<void> {\n this.inputEl?.focus();\n }\n\n /** Programmatically select the input text. */\n @Method()\n async selectText(): Promise<void> {\n this.inputEl?.select();\n }\n\n private handleInput = (event: Event): void => {\n const target = event.target as HTMLInputElement;\n const previousValue = this.value;\n this.value = target.value;\n this.tsInput.emit({ value: this.value, previousValue });\n };\n\n private handleChange = (): void => {\n this.tsChange.emit({ value: this.value, previousValue: this.value });\n\n // Run native validation\n if (this.inputEl) {\n const valid = this.inputEl.checkValidity();\n this.tsValidate.emit({\n valid,\n message: this.inputEl.validationMessage,\n });\n }\n };\n\n private handleFocus = (): void => {\n this.hasFocus = true;\n this.tsFocus.emit();\n };\n\n private handleBlur = (): void => {\n this.hasFocus = false;\n this.tsBlur.emit();\n };\n\n // eslint-disable-next-line @typescript-eslint/explicit-function-return-type\n render() {\n const hasError = !!this.error;\n const labelId = `${this.inputId}-label`;\n const helpId = `${this.inputId}-help`;\n const errorId = `${this.inputId}-error`;\n\n return (\n <Host\n class={{\n 'ts-input': true,\n [`ts-input--${this.size}`]: true,\n 'ts-input--focused': this.hasFocus,\n 'ts-input--disabled': this.disabled,\n 'ts-input--error': hasError,\n }}\n >\n {this.label && (\n <label class=\"input__label\" part=\"label\" id={labelId} htmlFor={this.inputId}>\n {this.label}\n {this.required && <span class=\"input__required\" aria-hidden=\"true\"> *</span>}\n </label>\n )}\n\n <div\n class={{\n 'input__wrapper': true,\n 'input__wrapper--focused': this.hasFocus,\n 'input__wrapper--error': hasError,\n 'input__wrapper--disabled': this.disabled,\n }}\n part=\"base\"\n >\n <span class=\"input__prefix\" part=\"prefix\">\n <slot name=\"prefix\" />\n </span>\n\n <input\n ref={(el) => (this.inputEl = el)}\n id={this.inputId}\n class=\"input__native\"\n part=\"input\"\n type={this.type}\n value={this.value}\n placeholder={this.placeholder}\n disabled={this.disabled}\n readOnly={this.readonly}\n required={this.required}\n maxlength={this.maxlength}\n minlength={this.minlength}\n pattern={this.pattern}\n autoComplete={this.autocomplete}\n name={this.name}\n aria-labelledby={this.label ? labelId : undefined}\n aria-describedby={hasError ? errorId : this.helpText ? helpId : undefined}\n aria-invalid={hasError ? 'true' : undefined}\n aria-required={this.required ? 'true' : undefined}\n onInput={this.handleInput}\n onChange={this.handleChange}\n onFocus={this.handleFocus}\n onBlur={this.handleBlur}\n />\n\n <span class=\"input__suffix\" part=\"suffix\">\n <slot name=\"suffix\" />\n </span>\n </div>\n\n {hasError && (\n <div class=\"input__error\" part=\"error-text\" id={errorId} role=\"alert\">\n {this.error}\n </div>\n )}\n\n {!hasError && this.helpText && (\n <div class=\"input__help\" part=\"help-text\" id={helpId}>\n {this.helpText}\n </div>\n )}\n </Host>\n );\n }\n}\n"],"mappings":"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","ignoreList":[]}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"names":[],"sources":[],"mappings":"","ignoreList":[]}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"names":[],"sources":[],"mappings":"","ignoreList":[]}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"names":["modalCss","TsModal","__stencil_proxyCustomElement","HTMLElement","dialogEl","removeFocusTrap","previouslyFocused","modalId","generateId","open","size","label","closeOnOverlay","closeOnEscape","showClose","tsOpen","tsClose","isAnimating","handleOpenChange","isOpen","this","openModal","closeModal","show","close","document","activeElement","emit","body","style","overflow","requestAnimationFrame","trapFocus","focus","disconnectedCallback","handleOverlayClick","handleDialogClick","event","stopPropagation","handleKeydown","key","handleCloseClick","render","h","Host","class","onKeyDown","part","onClick","ref","el","modal__dialog","role","undefined","tabindex","type","id","name"],"sources":["src/components/modal/modal.css?tag=ts-modal&encapsulation=shadow","src/components/modal/modal.tsx"],"sourcesContent":["/* ==========================================================================\n ts-modal — Shadow DOM Scoped Styles\n\n Component tokens (Tier 3):\n --ts-modal-bg Dialog background\n --ts-modal-overlay-bg Overlay background\n --ts-modal-radius Dialog border radius\n --ts-modal-shadow Dialog box-shadow\n ========================================================================== */\n\n:host {\n font-family: var(--ts-font-family-base);\n\n --ts-modal-bg: var(--ts-color-bg-elevated);\n --ts-modal-overlay-bg: var(--ts-color-bg-overlay);\n --ts-modal-radius: var(--ts-shape-overlay);\n --ts-modal-shadow: var(--ts-shadow-xl);\n}\n\n/* ---- Overlay ---- */\n.modal__overlay {\n position: fixed;\n inset: 0;\n z-index: var(--ts-z-modal);\n display: flex;\n align-items: center;\n justify-content: center;\n padding: var(--ts-spacing-4);\n background-color: var(--ts-modal-overlay-bg);\n animation: ts-fade-in 240ms cubic-bezier(0.25, 0.1, 0.25, 1);\n}\n\n/* ---- Dialog ---- */\n.modal__dialog {\n position: relative;\n background-color: var(--ts-modal-bg);\n border-radius: var(--ts-modal-radius);\n box-shadow: var(--ts-modal-shadow);\n max-height: calc(100vh - var(--ts-spacing-16));\n overflow-y: auto;\n animation: ts-scale-in 280ms cubic-bezier(0.16, 1, 0.3, 1);\n outline: none;\n}\n\n/* ---- Sizes ---- */\n.modal__dialog--xs { width: 100%; max-width: 320px; }\n.modal__dialog--sm { width: 100%; max-width: 440px; }\n.modal__dialog--md { width: 100%; max-width: 560px; }\n.modal__dialog--lg { width: 100%; max-width: 720px; }\n.modal__dialog--xl { width: 100%; max-width: 960px; }\n\n/* ---- Close Button ---- */\n.modal__close {\n position: absolute;\n top: var(--ts-spacing-3);\n inset-inline-end: var(--ts-spacing-3);\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 transition:\n background-color var(--ts-transition-fast),\n color var(--ts-transition-fast);\n z-index: 1;\n padding: 0;\n line-height: 1;\n}\n\n.modal__close:hover {\n background-color: var(--ts-color-bg-hover);\n color: var(--ts-color-text-secondary);\n}\n\n.modal__close:focus-visible {\n box-shadow: var(--ts-focus-ring);\n}\n\n/* ---- Sections ---- */\n.modal__header {\n padding: var(--ts-spacing-5) var(--ts-spacing-6) var(--ts-spacing-3);\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.modal__header:empty {\n display: none;\n}\n\n.modal__body {\n padding: var(--ts-spacing-3) var(--ts-spacing-6);\n font-size: var(--ts-font-size-md);\n color: var(--ts-color-text-secondary);\n line-height: var(--ts-line-height-normal);\n}\n\n.modal__footer {\n padding: var(--ts-spacing-3) var(--ts-spacing-6) var(--ts-spacing-5);\n display: flex;\n align-items: center;\n justify-content: flex-end;\n gap: var(--ts-spacing-2);\n}\n\n.modal__footer:empty {\n display: none;\n}\n\n/* ---- Animations ---- */\n@keyframes ts-fade-in {\n from { opacity: 0; }\n to { opacity: 1; }\n}\n\n@keyframes ts-scale-in {\n from {\n opacity: 0;\n transform: scale(0.95) translateY(8px);\n }\n to {\n opacity: 1;\n transform: scale(1) translateY(0);\n }\n}\n","import {\n Component,\n Prop,\n State,\n Event,\n h,\n Host,\n Element,\n Method,\n Watch,\n} from '@stencil/core';\nimport type { EventEmitter } from '@stencil/core';\nimport type { TsSize } from '../../types';\nimport { generateId, trapFocus } from '../../utils/aria';\n\n/**\n * @slot - Default slot for modal body content.\n * @slot header - Modal header content.\n * @slot footer - Modal footer content (e.g., action buttons).\n *\n * @part overlay - The backdrop overlay.\n * @part dialog - The dialog 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-modal',\n styleUrl: 'modal.css',\n shadow: true,\n})\nexport class TsModal {\n @Element() hostEl!: HTMLElement;\n\n private dialogEl?: HTMLElement;\n private removeFocusTrap?: () => void;\n private previouslyFocused?: HTMLElement;\n private modalId = generateId('ts-modal');\n\n /** Whether the modal is open. */\n @Prop({ mutable: true, reflect: true }) open = false;\n\n /** The modal's width size preset. */\n @Prop({ reflect: true }) size: TsSize = 'md';\n\n /** Label for accessibility (used as aria-label). */\n @Prop() label?: string;\n\n /** Whether clicking the overlay closes the modal. */\n @Prop() closeOnOverlay = true;\n\n /** Whether pressing Escape closes the modal. */\n @Prop() closeOnEscape = true;\n\n /** Whether to show the close button. */\n @Prop() showClose = true;\n\n /** Emitted when the modal opens. */\n @Event({ eventName: 'tsOpen' }) tsOpen!: EventEmitter<void>;\n\n /** Emitted when the modal 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.openModal();\n } else {\n this.closeModal();\n }\n }\n\n /** Programmatically open the modal. */\n @Method()\n async show(): Promise<void> {\n this.open = true;\n }\n\n /** Programmatically close the modal. */\n @Method()\n async close(): Promise<void> {\n this.open = false;\n }\n\n private openModal(): void {\n this.previouslyFocused = document.activeElement as HTMLElement;\n this.isAnimating = true;\n this.tsOpen.emit();\n\n // Prevent body scroll\n document.body.style.overflow = 'hidden';\n\n requestAnimationFrame(() => {\n if (this.dialogEl) {\n this.removeFocusTrap = trapFocus(this.dialogEl);\n // Focus the dialog itself\n this.dialogEl.focus();\n }\n });\n }\n\n private closeModal(): void {\n this.isAnimating = false;\n this.tsClose.emit();\n\n // Restore body scroll\n document.body.style.overflow = '';\n\n // Clean up focus trap\n this.removeFocusTrap?.();\n\n // Restore focus\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.closeOnOverlay) {\n this.close();\n }\n };\n\n private handleDialogClick = (event: MouseEvent): void => {\n // Prevent overlay click from firing when clicking inside the dialog\n event.stopPropagation();\n };\n\n private handleKeydown = (event: KeyboardEvent): void => {\n if (event.key === 'Escape' && this.closeOnEscape) {\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-modal': true,\n 'ts-modal--open': this.open,\n }}\n onKeyDown={this.handleKeydown}\n >\n <div class=\"modal__overlay\" part=\"overlay\" onClick={this.handleOverlayClick}>\n <div\n ref={(el) => (this.dialogEl = el)}\n class={{\n 'modal__dialog': true,\n [`modal__dialog--${this.size}`]: true,\n }}\n part=\"dialog\"\n role=\"dialog\"\n aria-modal=\"true\"\n aria-label={this.label}\n aria-labelledby={!this.label ? `${this.modalId}-header` : undefined}\n tabindex={-1}\n onClick={this.handleDialogClick}\n >\n {this.showClose && (\n <button\n class=\"modal__close\"\n part=\"close\"\n type=\"button\"\n aria-label=\"Close modal\"\n onClick={this.handleCloseClick}\n >\n ✕\n </button>\n )}\n\n <div class=\"modal__header\" part=\"header\" id={`${this.modalId}-header`}>\n <slot name=\"header\" />\n </div>\n\n <div class=\"modal__body\" part=\"body\">\n <slot />\n </div>\n\n <div class=\"modal__footer\" part=\"footer\">\n <slot name=\"footer\" />\n </div>\n </div>\n </div>\n </Host>\n );\n }\n}\n"],"mappings":"kHAAA,MAAMA,EAAW,IAAM,8yE,MCgCVC,EAAOC,EAAA,MAAAD,UAAAE,E,sKAGVC,SACAC,gBACAC,kBACAC,QAAUC,EAAW,YAGWC,KAAO,MAGtBC,KAAe,KAGhCC,MAGAC,eAAiB,KAGjBC,cAAgB,KAGhBC,UAAY,KAGYC,OAGCC,QAGxBC,YAAc,MAGvB,gBAAAC,CAAiBC,GACf,GAAIA,EAAQ,CACVC,KAAKC,W,KACA,CACLD,KAAKE,Y,EAMT,UAAMC,GACJH,KAAKX,KAAO,I,CAKd,WAAMe,GACJJ,KAAKX,KAAO,K,CAGN,SAAAY,GACND,KAAKd,kBAAoBmB,SAASC,cAClCN,KAAKH,YAAc,KACnBG,KAAKL,OAAOY,OAGZF,SAASG,KAAKC,MAAMC,SAAW,SAE/BC,uBAAsB,KACpB,GAAIX,KAAKhB,SAAU,CACjBgB,KAAKf,gBAAkB2B,EAAUZ,KAAKhB,UAEtCgB,KAAKhB,SAAS6B,O,KAKZ,UAAAX,GACNF,KAAKH,YAAc,MACnBG,KAAKJ,QAAQW,OAGbF,SAASG,KAAKC,MAAMC,SAAW,GAG/BV,KAAKf,oBAGLe,KAAKd,mBAAmB2B,O,CAG1B,oBAAAC,GACEd,KAAKf,oBACLoB,SAASG,KAAKC,MAAMC,SAAW,E,CAGzBK,mBAAqB,KAC3B,GAAIf,KAAKR,eAAgB,CACvBQ,KAAKI,O,GAIDY,kBAAqBC,IAE3BA,EAAMC,iBAAiB,EAGjBC,cAAiBF,IACvB,GAAIA,EAAMG,MAAQ,UAAYpB,KAAKP,cAAe,CAChDwB,EAAMC,kBACNlB,KAAKI,O,GAIDiB,iBAAmB,KACzBrB,KAAKI,OAAO,EAId,MAAAkB,GACE,IAAKtB,KAAKX,KAAM,OAAO,KAEvB,OACEkC,EAACC,EAAI,CACHC,MAAO,CACL,WAAY,KACZ,iBAAkBzB,KAAKX,MAEzBqC,UAAW1B,KAAKmB,eAEhBI,EAAA,OAAKE,MAAM,iBAAiBE,KAAK,UAAUC,QAAS5B,KAAKe,oBACvDQ,EAAA,OACEM,IAAMC,GAAQ9B,KAAKhB,SAAW8C,EAC9BL,MAAO,CACLM,cAAiB,KACjB,CAAC,kBAAkB/B,KAAKV,QAAS,MAEnCqC,KAAK,SACLK,KAAK,SAAQ,aACF,OAAM,aACLhC,KAAKT,MAAK,mBACJS,KAAKT,MAAQ,GAAGS,KAAKb,iBAAmB8C,UAC1DC,UAAU,EACVN,QAAS5B,KAAKgB,mBAEbhB,KAAKN,WACJ6B,EAAA,UACEE,MAAM,eACNE,KAAK,QACLQ,KAAK,SAAQ,aACF,cACXP,QAAS5B,KAAKqB,kBAAgB,KAMlCE,EAAA,OAAKE,MAAM,gBAAgBE,KAAK,SAASS,GAAI,GAAGpC,KAAKb,kBACnDoC,EAAA,QAAMc,KAAK,YAGbd,EAAA,OAAKE,MAAM,cAAcE,KAAK,QAC5BJ,EAAA,cAGFA,EAAA,OAAKE,MAAM,gBAAgBE,KAAK,UAC9BJ,EAAA,QAAMc,KAAK,c","ignoreList":[]}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"names":[],"sources":[],"mappings":"","ignoreList":[]}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"names":[],"sources":[],"mappings":"","ignoreList":[]}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"names":[],"sources":[],"mappings":"","ignoreList":[]}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"names":[],"sources":[],"mappings":"","ignoreList":[]}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"names":[],"sources":[],"mappings":"","ignoreList":[]}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"names":["radioCss","TsRadio","__stencil_proxyCustomElement","HTMLElement","inputId","generateId","checked","disabled","value","name","label","size","tsChange","select","this","emit","handleClick","handleKeydown","event","key","preventDefault","render","h","Host","class","part","role","undefined","tabindex","onClick","onKeyDown","id"],"sources":["src/components/radio/radio.css?tag=ts-radio&encapsulation=shadow","src/components/radio/radio.tsx"],"sourcesContent":["/* ==========================================================================\n ts-radio — Shadow DOM Scoped Styles\n\n Component tokens (Tier 3):\n --ts-radio-size Radio circle size\n --ts-radio-color Selected color\n --ts-radio-border-color Default border color\n ========================================================================== */\n\n:host {\n display: inline-block;\n font-family: var(--ts-font-family-base);\n\n --ts-radio-size: 1.25rem;\n --ts-radio-color: var(--ts-color-interactive-primary);\n --ts-radio-border-color: var(--ts-color-border-default);\n}\n\n/* ---- Base container ---- */\n.radio__base {\n display: inline-flex;\n align-items: center;\n gap: var(--ts-spacing-2);\n cursor: pointer;\n outline: none;\n}\n\n.radio__base:focus-visible .radio__control {\n box-shadow: var(--ts-focus-ring);\n}\n\n/* ---- Control circle ---- */\n.radio__control {\n display: inline-flex;\n align-items: center;\n justify-content: center;\n width: var(--ts-radio-size);\n height: var(--ts-radio-size);\n box-sizing: border-box;\n border: 2px solid var(--ts-radio-border-color);\n border-radius: 50%;\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/* ---- Inner dot ---- */\n.radio__dot {\n width: 0;\n height: 0;\n border-radius: 50%;\n background-color: var(--ts-color-text-on-primary);\n transition:\n width var(--ts-transition-fast),\n height var(--ts-transition-fast);\n}\n\n/* ---- Checked state ---- */\n:host([checked]) .radio__control {\n background-color: var(--ts-radio-color);\n border-color: var(--ts-radio-color);\n}\n\n:host([checked]) .radio__dot {\n width: 40%;\n height: 40%;\n}\n\n/* ---- Hover ---- */\n.radio__base:hover:not([aria-disabled=\"true\"]) .radio__control {\n border-color: var(--ts-color-primary-500);\n}\n\n/* ---- Disabled state ---- */\n:host([disabled]) .radio__base {\n opacity: 0.5;\n cursor: not-allowed;\n pointer-events: none;\n}\n\n/* ---- Sizes ---- */\n:host([size=\"sm\"]) {\n --ts-radio-size: 1rem;\n}\n\n:host([size=\"sm\"]) .radio__label {\n font-size: var(--ts-font-size-sm);\n}\n\n:host([size=\"md\"]) .radio__label {\n font-size: var(--ts-font-size-md);\n}\n\n:host([size=\"lg\"]) {\n --ts-radio-size: 1.5rem;\n}\n\n:host([size=\"lg\"]) .radio__label {\n font-size: var(--ts-font-size-lg);\n}\n\n/* ---- Label ---- */\n.radio__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 radio label.\n *\n * @part base - The radio container.\n * @part control - The visual radio circle.\n * @part label - The label wrapper.\n */\n@Component({\n tag: 'ts-radio',\n styleUrl: 'radio.css',\n shadow: true,\n})\nexport class TsRadio {\n @Element() hostEl!: HTMLElement;\n\n private inputId = generateId('ts-radio');\n\n /** Whether the radio is checked. */\n @Prop({ mutable: true, reflect: true }) checked = false;\n\n /** Renders the radio as disabled. */\n @Prop({ reflect: true }) disabled = false;\n\n /** The value associated with this radio. */\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 radio size. */\n @Prop({ reflect: true }) size: 'sm' | 'md' | 'lg' = 'md';\n\n /** Emitted when the radio is selected. */\n @Event({ eventName: 'tsChange' }) tsChange!: EventEmitter<TsCheckboxChangeEventDetail>;\n\n /** Programmatically select the radio. */\n @Method()\n async select(): Promise<void> {\n if (!this.disabled && !this.checked) {\n this.checked = true;\n this.tsChange.emit({ checked: this.checked, value: this.value });\n }\n }\n\n private handleClick = (): void => {\n this.select();\n };\n\n private handleKeydown = (event: KeyboardEvent): void => {\n if (event.key === ' ') {\n event.preventDefault();\n this.select();\n }\n };\n\n // eslint-disable-next-line @typescript-eslint/explicit-function-return-type\n render() {\n return (\n <Host\n class={{\n 'ts-radio': true,\n [`ts-radio--${this.size}`]: true,\n 'ts-radio--checked': this.checked,\n 'ts-radio--disabled': this.disabled,\n }}\n >\n <div\n class=\"radio__base\"\n part=\"base\"\n role=\"radio\"\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=\"radio__control\" part=\"control\">\n <div class=\"radio__dot\" />\n </div>\n\n <label class=\"radio__label\" part=\"label\" id={`${this.inputId}-label`}>\n {this.label ? this.label : <slot />}\n </label>\n </div>\n </Host>\n );\n }\n}\n"],"mappings":"sGAAA,MAAMA,EAAW,IAAM,yqD,MCiBVC,EAAOC,EAAA,MAAAD,UAAAE,E,2IAGVC,QAAUC,EAAW,YAGWC,QAAU,MAGzBC,SAAW,MAG5BC,MAAQ,GAGRC,KAGAC,MAGiBC,KAA2B,KAGlBC,SAIlC,YAAMC,GACJ,IAAKC,KAAKP,WAAaO,KAAKR,QAAS,CACnCQ,KAAKR,QAAU,KACfQ,KAAKF,SAASG,KAAK,CAAET,QAASQ,KAAKR,QAASE,MAAOM,KAAKN,O,EAIpDQ,YAAc,KACpBF,KAAKD,QAAQ,EAGPI,cAAiBC,IACvB,GAAIA,EAAMC,MAAQ,IAAK,CACrBD,EAAME,iBACNN,KAAKD,Q,GAKT,MAAAQ,GACE,OACEC,EAACC,EAAI,CAAAJ,IAAA,2CACHK,MAAO,CACL,WAAY,KACZ,CAAC,aAAaV,KAAKH,QAAS,KAC5B,oBAAqBG,KAAKR,QAC1B,qBAAsBQ,KAAKP,WAG7Be,EAAA,OAAAH,IAAA,2CACEK,MAAM,cACNC,KAAK,OACLC,KAAK,QAAO,eACEZ,KAAKR,QAAU,OAAS,QAAO,gBAC9BQ,KAAKP,SAAW,OAASoB,UACxCC,SAAUd,KAAKP,UAAW,EAAK,EAC/BsB,QAASf,KAAKE,YACdc,UAAWhB,KAAKG,eAEhBK,EAAA,OAAAH,IAAA,2CAAKK,MAAM,iBAAiBC,KAAK,WAC/BH,EAAA,OAAAH,IAAA,2CAAKK,MAAM,gBAGbF,EAAA,SAAAH,IAAA,2CAAOK,MAAM,eAAeC,KAAK,QAAQM,GAAI,GAAGjB,KAAKV,iBAClDU,KAAKJ,MAAQI,KAAKJ,MAAQY,EAAA,e","ignoreList":[]}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"names":[],"sources":[],"mappings":"","ignoreList":[]}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"names":["selectCss","TsSelect","__stencil_proxyCustomElement","HTMLElement","inputId","generateId","triggerEl","value","placeholder","disabled","size","label","helpText","error","errorMessage","required","name","multiple","isOpen","focusedIndex","options","tsChange","tsFocus","tsBlur","handleValueChange","handleDocumentClick","event","this","hostEl","contains","target","close","componentWillLoad","parseOptions","componentDidLoad","slot","shadowRoot","querySelector","addEventListener","slottedOptions","querySelectorAll","Array","from","map","opt","textContent","trim","open","findIndex","o","focus","selectOption","option","emit","handleTriggerClick","handleTriggerKeydown","key","preventDefault","handleDropdownKeydown","enabledOptions","filter","moveFocus","length","indexOf","direction","next","handleFocus","handleBlur","getDisplayText","selected","find","render","hasError","labelId","helpId","errorId","listboxId","displayText","h","Host","class","part","id","ref","el","select__trigger","type","role","undefined","onClick","onKeyDown","onFocus","onBlur","select__display","viewBox","fill","d","stroke","index","select__option"],"sources":["src/components/select/select.css?tag=ts-select&encapsulation=shadow","src/components/select/select.tsx"],"sourcesContent":["/* ==========================================================================\n ts-select — Shadow DOM Scoped Styles\n\n Component tokens (Tier 3):\n --ts-select-bg Select background\n --ts-select-border-color Default border color\n --ts-select-radius Border radius\n --ts-select-focus-ring Focus ring box-shadow\n ========================================================================== */\n\n:host {\n display: block;\n font-family: var(--ts-font-family-base);\n\n --ts-select-bg: var(--ts-color-neutral-50);\n --ts-select-border-color: var(--ts-color-border-default);\n --ts-select-radius: var(--ts-radius-md);\n --ts-select-focus-ring: var(--ts-focus-ring);\n}\n\n/* ---- Label ---- */\n.select__label {\n display: block;\n margin-block-end: var(--ts-spacing-1);\n font-size: var(--ts-font-size-sm);\n font-weight: var(--ts-font-weight-medium);\n color: var(--ts-color-text-secondary);\n line-height: var(--ts-line-height-normal);\n}\n\n.select__required {\n color: var(--ts-color-danger-500);\n}\n\n/* ---- Container ---- */\n.select__container {\n position: relative;\n}\n\n/* ---- Trigger button ---- */\n.select__trigger {\n display: flex;\n align-items: center;\n justify-content: space-between;\n gap: var(--ts-spacing-2);\n width: 100%;\n border: 1px solid var(--ts-select-border-color);\n border-radius: var(--ts-select-radius);\n background-color: var(--ts-select-bg);\n font-family: inherit;\n color: var(--ts-color-text-primary);\n cursor: pointer;\n outline: none;\n transition:\n border-color var(--ts-transition-fast),\n box-shadow var(--ts-transition-fast);\n text-align: start;\n appearance: none;\n}\n\n.select__trigger:focus-visible {\n border-color: var(--ts-color-primary-500);\n box-shadow: var(--ts-select-focus-ring);\n}\n\n.select__trigger--error {\n border-color: var(--ts-color-danger-500);\n}\n\n.select__trigger--error:focus-visible {\n box-shadow: 0 0 0 3px var(--ts-color-focus-ring-danger);\n}\n\n.select__trigger--disabled {\n background-color: var(--ts-color-bg-disabled);\n opacity: 0.6;\n cursor: not-allowed;\n}\n\n.select__trigger--open {\n border-color: var(--ts-color-primary-500);\n box-shadow: var(--ts-select-focus-ring);\n}\n\n/* ---- Display text ---- */\n.select__display {\n flex: 1;\n overflow: hidden;\n text-overflow: ellipsis;\n white-space: nowrap;\n}\n\n.select__display--placeholder {\n color: var(--ts-color-text-tertiary);\n}\n\n/* ---- Chevron ---- */\n.select__chevron {\n width: 1em;\n height: 1em;\n flex-shrink: 0;\n transition: transform var(--ts-transition-fast);\n color: var(--ts-color-text-tertiary);\n}\n\n:host(.ts-select--open) .select__chevron {\n transform: rotate(180deg);\n}\n\n/* ---- Dropdown ---- */\n.select__dropdown {\n position: absolute;\n inset-inline-start: 0;\n inset-inline-end: 0;\n top: calc(100% + var(--ts-spacing-1));\n z-index: 1000;\n background-color: var(--ts-color-bg-elevated);\n border: 1px solid var(--ts-color-border-default);\n border-radius: var(--ts-radius-md);\n box-shadow: var(--ts-shadow-lg);\n max-height: 15rem;\n overflow-y: auto;\n padding-block: var(--ts-spacing-1);\n}\n\n/* ---- Option ---- */\n.select__option {\n display: flex;\n align-items: center;\n padding: var(--ts-spacing-2) var(--ts-spacing-3);\n cursor: pointer;\n transition:\n background-color var(--ts-transition-fast),\n color var(--ts-transition-fast);\n color: var(--ts-color-text-primary);\n font-size: inherit;\n}\n\n.select__option:hover:not(.select__option--disabled) {\n background-color: var(--ts-color-interactive-primary-subtle);\n}\n\n.select__option--focused {\n background-color: var(--ts-color-bg-subtle);\n}\n\n.select__option--selected {\n color: var(--ts-color-interactive-primary);\n font-weight: var(--ts-font-weight-medium);\n}\n\n.select__option--disabled {\n opacity: 0.5;\n cursor: not-allowed;\n}\n\n/* ---- Sizes ---- */\n:host([size=\"sm\"]) .select__trigger {\n padding: var(--ts-spacing-1) var(--ts-spacing-2);\n font-size: var(--ts-font-size-sm);\n border-radius: var(--ts-radius-sm);\n}\n\n:host([size=\"md\"]) .select__trigger {\n padding: var(--ts-spacing-2) var(--ts-spacing-3);\n font-size: var(--ts-font-size-md);\n}\n\n:host([size=\"lg\"]) .select__trigger {\n padding: var(--ts-spacing-3) var(--ts-spacing-4);\n font-size: var(--ts-font-size-lg);\n}\n\n:host([size=\"xl\"]) .select__trigger {\n padding: var(--ts-spacing-4) var(--ts-spacing-5);\n font-size: var(--ts-font-size-xl);\n border-radius: var(--ts-radius-lg);\n}\n\n/* ---- Hidden slot ---- */\n.select__hidden-slot {\n display: none;\n}\n\n/* ---- Help & Error Text ---- */\n.select__help,\n.select__error {\n margin-block-start: var(--ts-spacing-1);\n font-size: var(--ts-font-size-xs);\n line-height: var(--ts-line-height-normal);\n}\n\n.select__help {\n color: var(--ts-color-text-tertiary);\n}\n\n.select__error {\n color: var(--ts-color-danger-600);\n font-weight: var(--ts-font-weight-medium);\n}\n","import { Component, Prop, State, Event, Watch, h, Host, Element, Listen } from '@stencil/core';\nimport type { EventEmitter } from '@stencil/core';\nimport type { TsSize, TsSelectChangeEventDetail } from '../../types';\nimport { generateId } from '../../utils/aria';\n\ninterface SelectOption {\n value: string;\n label: string;\n disabled: boolean;\n}\n\n/**\n * @slot - Default slot for `<option>` elements.\n *\n * @part base - The outer wrapper.\n * @part label - The label element.\n * @part trigger - The select trigger button.\n * @part dropdown - The dropdown panel.\n * @part option - An option in the dropdown list.\n * @part help-text - The help text wrapper.\n * @part error-text - The error message wrapper.\n */\n@Component({\n tag: 'ts-select',\n styleUrl: 'select.css',\n shadow: true,\n})\nexport class TsSelect {\n @Element() hostEl!: HTMLElement;\n\n private inputId = generateId('ts-select');\n private triggerEl?: HTMLElement;\n\n /** The current value. */\n @Prop({ mutable: true, reflect: true }) value = '';\n\n /** Placeholder text when no value is selected. */\n @Prop() placeholder?: string;\n\n /** Renders the select as disabled. */\n @Prop({ reflect: true }) disabled = false;\n\n /** The select size. */\n @Prop({ reflect: true }) size: TsSize = 'md';\n\n /** Label text displayed above the select. */\n @Prop() label?: string;\n\n /** Help text displayed below the select. */\n @Prop() helpText?: string;\n\n /** Renders the select in an error state. */\n @Prop({ reflect: true }) error = false;\n\n /** Error message displayed below the select. */\n @Prop() errorMessage?: string;\n\n /** Makes the select required. */\n @Prop({ reflect: true }) required = false;\n\n /** Name attribute for form submission. */\n @Prop() name?: string;\n\n /** Allow multiple selections. */\n @Prop({ reflect: true }) multiple = false;\n\n /** Whether the dropdown is open. */\n @State() isOpen = false;\n\n /** The index of the currently focused option. */\n @State() focusedIndex = -1;\n\n /** Parsed options from slotted <option> elements. */\n @State() options: SelectOption[] = [];\n\n /** Emitted when the value changes. */\n @Event({ eventName: 'tsChange' }) tsChange!: EventEmitter<TsSelectChangeEventDetail>;\n\n /** Emitted when the select gains focus. */\n @Event({ eventName: 'tsFocus' }) tsFocus!: EventEmitter<void>;\n\n /** Emitted when the select loses focus. */\n @Event({ eventName: 'tsBlur' }) tsBlur!: EventEmitter<void>;\n\n @Watch('value')\n handleValueChange(): void {\n // Value was changed externally; ensure UI is in sync\n }\n\n @Listen('click', { target: 'document' })\n handleDocumentClick(event: MouseEvent): void {\n if (this.isOpen && !this.hostEl.contains(event.target as Node)) {\n this.close();\n }\n }\n\n componentWillLoad(): void {\n this.parseOptions();\n }\n\n componentDidLoad(): void {\n // Observe slot changes to re-parse options\n const slot = this.hostEl.shadowRoot?.querySelector('.select__hidden-slot slot');\n slot?.addEventListener('slotchange', () => this.parseOptions());\n }\n\n private parseOptions(): void {\n const slottedOptions = this.hostEl.querySelectorAll('option');\n this.options = Array.from(slottedOptions).map((opt) => ({\n value: opt.value,\n label: opt.textContent?.trim() ?? opt.value,\n disabled: opt.disabled,\n }));\n }\n\n private open(): void {\n if (this.disabled) return;\n this.isOpen = true;\n this.focusedIndex = this.options.findIndex((o) => o.value === this.value);\n if (this.focusedIndex < 0) this.focusedIndex = 0;\n }\n\n private close(): void {\n this.isOpen = false;\n this.focusedIndex = -1;\n this.triggerEl?.focus();\n }\n\n private selectOption(option: SelectOption): void {\n if (option.disabled) return;\n this.value = option.value;\n this.tsChange.emit({ value: this.value });\n this.close();\n }\n\n private handleTriggerClick = (): void => {\n if (this.isOpen) {\n this.close();\n } else {\n this.open();\n }\n };\n\n private handleTriggerKeydown = (event: KeyboardEvent): void => {\n switch (event.key) {\n case 'Enter':\n case ' ':\n case 'ArrowDown':\n event.preventDefault();\n if (!this.isOpen) {\n this.open();\n } else if (event.key === 'Enter' || event.key === ' ') {\n if (this.focusedIndex >= 0 && this.options[this.focusedIndex]) {\n this.selectOption(this.options[this.focusedIndex]);\n }\n }\n break;\n case 'ArrowUp':\n event.preventDefault();\n if (!this.isOpen) {\n this.open();\n }\n break;\n case 'Escape':\n if (this.isOpen) {\n event.preventDefault();\n this.close();\n }\n break;\n }\n };\n\n private handleDropdownKeydown = (event: KeyboardEvent): void => {\n const enabledOptions = this.options.filter((o) => !o.disabled);\n switch (event.key) {\n case 'ArrowDown':\n event.preventDefault();\n this.moveFocus(1);\n break;\n case 'ArrowUp':\n event.preventDefault();\n this.moveFocus(-1);\n break;\n case 'Enter':\n case ' ':\n event.preventDefault();\n if (this.focusedIndex >= 0 && this.options[this.focusedIndex] && !this.options[this.focusedIndex].disabled) {\n this.selectOption(this.options[this.focusedIndex]);\n }\n break;\n case 'Escape':\n event.preventDefault();\n this.close();\n break;\n case 'Home':\n event.preventDefault();\n this.focusedIndex = enabledOptions.length > 0 ? this.options.indexOf(enabledOptions[0]) : 0;\n break;\n case 'End':\n event.preventDefault();\n this.focusedIndex = enabledOptions.length > 0 ? this.options.indexOf(enabledOptions[enabledOptions.length - 1]) : this.options.length - 1;\n break;\n }\n };\n\n private moveFocus(direction: number): void {\n let next = this.focusedIndex + direction;\n while (next >= 0 && next < this.options.length && this.options[next].disabled) {\n next += direction;\n }\n if (next >= 0 && next < this.options.length) {\n this.focusedIndex = next;\n }\n }\n\n private handleFocus = (): void => {\n this.tsFocus.emit();\n };\n\n private handleBlur = (): void => {\n this.tsBlur.emit();\n };\n\n private getDisplayText(): string {\n const selected = this.options.find((o) => o.value === this.value);\n return selected?.label ?? '';\n }\n\n // eslint-disable-next-line @typescript-eslint/explicit-function-return-type\n render() {\n const hasError = this.error && !!this.errorMessage;\n const labelId = `${this.inputId}-label`;\n const helpId = `${this.inputId}-help`;\n const errorId = `${this.inputId}-error`;\n const listboxId = `${this.inputId}-listbox`;\n const displayText = this.getDisplayText();\n\n return (\n <Host\n class={{\n 'ts-select': true,\n [`ts-select--${this.size}`]: true,\n 'ts-select--open': this.isOpen,\n 'ts-select--disabled': this.disabled,\n 'ts-select--error': this.error,\n }}\n >\n {this.label && (\n <label class=\"select__label\" part=\"label\" id={labelId}>\n {this.label}\n {this.required && <span class=\"select__required\" aria-hidden=\"true\"> *</span>}\n </label>\n )}\n\n <div class=\"select__container\">\n <button\n ref={(el) => (this.triggerEl = el)}\n class={{\n 'select__trigger': true,\n 'select__trigger--open': this.isOpen,\n 'select__trigger--error': this.error,\n 'select__trigger--disabled': this.disabled,\n }}\n part=\"trigger\"\n type=\"button\"\n role=\"combobox\"\n aria-expanded={this.isOpen ? 'true' : 'false'}\n aria-haspopup=\"listbox\"\n aria-controls={listboxId}\n aria-labelledby={this.label ? labelId : undefined}\n aria-invalid={this.error ? 'true' : undefined}\n aria-required={this.required ? 'true' : undefined}\n disabled={this.disabled}\n onClick={this.handleTriggerClick}\n onKeyDown={this.handleTriggerKeydown}\n onFocus={this.handleFocus}\n onBlur={this.handleBlur}\n >\n <span class={{ 'select__display': true, 'select__display--placeholder': !displayText }}>\n {displayText || this.placeholder || '\\u00A0'}\n </span>\n <svg class=\"select__chevron\" viewBox=\"0 0 16 16\" fill=\"none\" aria-hidden=\"true\">\n <path d=\"M4 6L8 10L12 6\" stroke=\"currentColor\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\n </svg>\n </button>\n\n {this.isOpen && (\n <div\n class=\"select__dropdown\"\n part=\"dropdown\"\n role=\"listbox\"\n id={listboxId}\n aria-labelledby={this.label ? labelId : undefined}\n onKeyDown={this.handleDropdownKeydown}\n >\n {this.options.map((option, index) => (\n <div\n class={{\n 'select__option': true,\n 'select__option--selected': option.value === this.value,\n 'select__option--focused': index === this.focusedIndex,\n 'select__option--disabled': option.disabled,\n }}\n part=\"option\"\n role=\"option\"\n aria-selected={option.value === this.value ? 'true' : 'false'}\n aria-disabled={option.disabled ? 'true' : undefined}\n onClick={() => this.selectOption(option)}\n >\n {option.label}\n </div>\n ))}\n </div>\n )}\n </div>\n\n {/* Hidden slot to capture <option> elements */}\n <div class=\"select__hidden-slot\">\n <slot />\n </div>\n\n {hasError && (\n <div class=\"select__error\" part=\"error-text\" id={errorId} role=\"alert\">\n {this.errorMessage}\n </div>\n )}\n\n {!hasError && this.helpText && (\n <div class=\"select__help\" part=\"help-text\" id={helpId}>\n {this.helpText}\n </div>\n )}\n </Host>\n );\n }\n}\n"],"mappings":"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","ignoreList":[]}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"names":[],"sources":[],"mappings":"","ignoreList":[]}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"names":[],"sources":[],"mappings":"","ignoreList":[]}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"names":[],"sources":[],"mappings":"","ignoreList":[]}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"names":[],"sources":[],"mappings":"","ignoreList":[]}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"names":[],"sources":[],"mappings":"","ignoreList":[]}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"names":[],"sources":[],"mappings":"","ignoreList":[]}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"names":[],"sources":[],"mappings":"","ignoreList":[]}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"names":[],"sources":[],"mappings":"","ignoreList":[]}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"names":[],"sources":[],"mappings":"","ignoreList":[]}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"names":[],"sources":[],"mappings":"","ignoreList":[]}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"names":[],"sources":[],"mappings":"","ignoreList":[]}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"names":[],"sources":[],"mappings":"","ignoreList":[]}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"names":["textareaCss","TsTextarea","__stencil_proxyCustomElement","HTMLElement","textareaEl","inputId","generateId","value","placeholder","disabled","readonly","size","label","helpText","error","errorMessage","required","name","rows","resize","maxlength","hasFocus","tsInput","tsChange","tsFocus","tsBlur","handleValueChange","newValue","oldValue","this","setFocus","focus","selectText","select","handleInput","event","target","previousValue","emit","handleChange","handleFocus","handleBlur","render","hasError","labelId","helpId","errorId","h","Host","key","class","part","id","htmlFor","textarea__wrapper","ref","el","readOnly","undefined","onInput","onChange","onFocus","onBlur","role"],"sources":["src/components/textarea/textarea.css?tag=ts-textarea&encapsulation=shadow","src/components/textarea/textarea.tsx"],"sourcesContent":["/* ==========================================================================\n ts-textarea — Shadow DOM Scoped Styles\n\n Component tokens (Tier 3):\n --ts-textarea-bg Textarea background\n --ts-textarea-border-color Default border color\n --ts-textarea-radius Border radius\n --ts-textarea-focus-ring Focus ring box-shadow\n ========================================================================== */\n\n:host {\n display: block;\n font-family: var(--ts-font-family-base);\n\n --ts-textarea-bg: var(--ts-color-bg-surface);\n --ts-textarea-border-color: var(--ts-color-border-default);\n --ts-textarea-radius: var(--ts-radius-md);\n --ts-textarea-focus-ring: var(--ts-focus-ring);\n}\n\n/* ---- Label ---- */\n.textarea__label {\n display: block;\n margin-block-end: var(--ts-spacing-1);\n font-size: var(--ts-font-size-sm);\n font-weight: var(--ts-font-weight-medium);\n color: var(--ts-color-text-secondary);\n line-height: var(--ts-line-height-normal);\n}\n\n.textarea__required {\n color: var(--ts-color-danger-500);\n}\n\n/* ---- Wrapper ---- */\n.textarea__wrapper {\n display: flex;\n border: 2px solid var(--ts-textarea-border-color);\n border-radius: var(--ts-textarea-radius);\n background-color: var(--ts-textarea-bg);\n transition:\n border-color var(--ts-transition-fast),\n box-shadow var(--ts-transition-fast);\n overflow: hidden;\n}\n\n.textarea__wrapper--focused {\n border-color: var(--ts-color-primary-500);\n box-shadow: var(--ts-textarea-focus-ring);\n}\n\n.textarea__wrapper--error {\n border-color: var(--ts-color-danger-500);\n}\n\n.textarea__wrapper--error.textarea__wrapper--focused {\n box-shadow: 0 0 0 3px var(--ts-color-focus-ring-danger);\n}\n\n.textarea__wrapper--disabled {\n background-color: var(--ts-color-bg-disabled);\n opacity: 0.6;\n cursor: not-allowed;\n}\n\n/* ---- Native Textarea ---- */\n.textarea__native {\n flex: 1;\n border: none;\n outline: none;\n background: transparent;\n font-family: inherit;\n color: var(--ts-color-text-primary);\n width: 100%;\n min-width: 0;\n line-height: var(--ts-line-height-normal);\n}\n\n.textarea__native::placeholder {\n color: var(--ts-color-text-tertiary);\n}\n\n.textarea__native:disabled {\n cursor: not-allowed;\n}\n\n/* ---- Resize ---- */\n:host([resize=\"none\"]) .textarea__native {\n resize: none;\n}\n\n:host([resize=\"vertical\"]) .textarea__native {\n resize: vertical;\n}\n\n:host([resize=\"horizontal\"]) .textarea__native {\n resize: horizontal;\n}\n\n:host([resize=\"both\"]) .textarea__native {\n resize: both;\n}\n\n/* ---- Sizes ---- */\n:host([size=\"sm\"]) .textarea__wrapper {\n border-radius: var(--ts-radius-sm);\n}\n:host([size=\"sm\"]) .textarea__native {\n padding: var(--ts-spacing-1) var(--ts-spacing-2);\n font-size: var(--ts-font-size-sm);\n}\n\n:host([size=\"md\"]) .textarea__native {\n padding: var(--ts-spacing-2) var(--ts-spacing-3);\n font-size: var(--ts-font-size-md);\n}\n\n:host([size=\"lg\"]) .textarea__native {\n padding: var(--ts-spacing-3) var(--ts-spacing-4);\n font-size: var(--ts-font-size-lg);\n}\n\n:host([size=\"xl\"]) .textarea__wrapper {\n border-radius: var(--ts-radius-lg);\n}\n:host([size=\"xl\"]) .textarea__native {\n padding: var(--ts-spacing-4) var(--ts-spacing-5);\n font-size: var(--ts-font-size-xl);\n}\n\n/* ---- Help & Error Text ---- */\n.textarea__help,\n.textarea__error {\n margin-block-start: var(--ts-spacing-1);\n font-size: var(--ts-font-size-xs);\n line-height: var(--ts-line-height-normal);\n}\n\n.textarea__help {\n color: var(--ts-color-text-tertiary);\n}\n\n.textarea__error {\n color: var(--ts-color-danger-600);\n font-weight: var(--ts-font-weight-medium);\n}\n","import { Component, Prop, State, Event, Watch, h, Host, Element, Method } from '@stencil/core';\nimport type { EventEmitter } from '@stencil/core';\nimport type { TsSize, TsChangeEventDetail } from '../../types';\nimport { generateId } from '../../utils/aria';\n\n/**\n * @part base - The outer wrapper.\n * @part label - The label element.\n * @part textarea - The native textarea element.\n * @part help-text - The help text wrapper.\n * @part error-text - The error message wrapper.\n */\n@Component({\n tag: 'ts-textarea',\n styleUrl: 'textarea.css',\n shadow: true,\n})\nexport class TsTextarea {\n @Element() hostEl!: HTMLElement;\n\n private textareaEl?: HTMLTextAreaElement;\n private inputId = generateId('ts-textarea');\n\n /** The textarea's value. */\n @Prop({ mutable: true, reflect: true }) value = '';\n\n /** Placeholder text. */\n @Prop() placeholder?: string;\n\n /** Renders the textarea as disabled. */\n @Prop({ reflect: true }) disabled = false;\n\n /** Renders the textarea as readonly. */\n @Prop({ reflect: true }) readonly = false;\n\n /** The textarea size. */\n @Prop({ reflect: true }) size: TsSize = 'md';\n\n /** Label text displayed above the textarea. */\n @Prop() label?: string;\n\n /** Help text displayed below the textarea. */\n @Prop() helpText?: string;\n\n /** Renders the textarea in an error state. */\n @Prop({ reflect: true }) error = false;\n\n /** Error message displayed below the textarea. */\n @Prop() errorMessage?: string;\n\n /** Makes the textarea required. */\n @Prop({ reflect: true }) required = false;\n\n /** Name attribute for form submission. */\n @Prop() name?: string;\n\n /** Number of visible text rows. */\n @Prop() rows = 3;\n\n /** Resize behavior. */\n @Prop({ reflect: true }) resize: 'none' | 'vertical' | 'horizontal' | 'both' = 'vertical';\n\n /** Maximum character length. */\n @Prop() maxlength?: number;\n\n /** Whether the textarea is currently focused. */\n @State() hasFocus = false;\n\n /** Emitted on every keystroke. */\n @Event({ eventName: 'tsInput' }) tsInput!: EventEmitter<TsChangeEventDetail<string>>;\n\n /** Emitted when the value changes (on blur / commit). */\n @Event({ eventName: 'tsChange' }) tsChange!: EventEmitter<TsChangeEventDetail<string>>;\n\n /** Emitted when the textarea gains focus. */\n @Event({ eventName: 'tsFocus' }) tsFocus!: EventEmitter<void>;\n\n /** Emitted when the textarea loses focus. */\n @Event({ eventName: 'tsBlur' }) tsBlur!: EventEmitter<void>;\n\n @Watch('value')\n handleValueChange(newValue: string, oldValue: string): void {\n if (newValue !== oldValue && this.textareaEl) {\n this.textareaEl.value = newValue;\n }\n }\n\n /** Programmatically focus the textarea. */\n @Method()\n async setFocus(): Promise<void> {\n this.textareaEl?.focus();\n }\n\n /** Programmatically select the textarea text. */\n @Method()\n async selectText(): Promise<void> {\n this.textareaEl?.select();\n }\n\n private handleInput = (event: Event): void => {\n const target = event.target as HTMLTextAreaElement;\n const previousValue = this.value;\n this.value = target.value;\n this.tsInput.emit({ value: this.value, previousValue });\n };\n\n private handleChange = (): void => {\n this.tsChange.emit({ value: this.value, previousValue: this.value });\n };\n\n private handleFocus = (): void => {\n this.hasFocus = true;\n this.tsFocus.emit();\n };\n\n private handleBlur = (): void => {\n this.hasFocus = false;\n this.tsBlur.emit();\n };\n\n // eslint-disable-next-line @typescript-eslint/explicit-function-return-type\n render() {\n const hasError = this.error && !!this.errorMessage;\n const labelId = `${this.inputId}-label`;\n const helpId = `${this.inputId}-help`;\n const errorId = `${this.inputId}-error`;\n\n return (\n <Host\n class={{\n 'ts-textarea': true,\n [`ts-textarea--${this.size}`]: true,\n 'ts-textarea--focused': this.hasFocus,\n 'ts-textarea--disabled': this.disabled,\n 'ts-textarea--error': this.error,\n }}\n >\n {this.label && (\n <label class=\"textarea__label\" part=\"label\" id={labelId} htmlFor={this.inputId}>\n {this.label}\n {this.required && <span class=\"textarea__required\" aria-hidden=\"true\"> *</span>}\n </label>\n )}\n\n <div\n class={{\n 'textarea__wrapper': true,\n 'textarea__wrapper--focused': this.hasFocus,\n 'textarea__wrapper--error': this.error,\n 'textarea__wrapper--disabled': this.disabled,\n }}\n part=\"base\"\n >\n <textarea\n ref={(el) => (this.textareaEl = el)}\n id={this.inputId}\n class=\"textarea__native\"\n part=\"textarea\"\n value={this.value}\n placeholder={this.placeholder}\n disabled={this.disabled}\n readOnly={this.readonly}\n required={this.required}\n maxlength={this.maxlength}\n name={this.name}\n rows={this.rows}\n aria-labelledby={this.label ? labelId : undefined}\n aria-describedby={hasError ? errorId : this.helpText ? helpId : undefined}\n aria-invalid={this.error ? 'true' : undefined}\n aria-required={this.required ? 'true' : undefined}\n onInput={this.handleInput}\n onChange={this.handleChange}\n onFocus={this.handleFocus}\n onBlur={this.handleBlur}\n />\n </div>\n\n {hasError && (\n <div class=\"textarea__error\" part=\"error-text\" id={errorId} role=\"alert\">\n {this.errorMessage}\n </div>\n )}\n\n {!hasError && this.helpText && (\n <div class=\"textarea__help\" part=\"help-text\" id={helpId}>\n {this.helpText}\n </div>\n )}\n </Host>\n );\n }\n}\n"],"mappings":"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","ignoreList":[]}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"names":[],"sources":[],"mappings":"","ignoreList":[]}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"names":["toggleCss","TsToggle","__stencil_proxyCustomElement","HTMLElement","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":"sGAAA,MAAMA,EAAY,IAAM,utE,MCkBXC,EAAQC,EAAA,MAAAD,UAAAE,E,2IAGXC,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":[],"sources":[],"mappings":"","ignoreList":[]}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"names":["tooltipCss","TsTooltip","__stencil_proxyCustomElement","HTMLElement","tooltipId","generateId","content","placement","showDelay","hideDelay","disabled","isVisible","showTimeout","hideTimeout","show","this","clearTimeout","setTimeout","hide","disconnectedCallback","handleMouseEnter","handleMouseLeave","handleFocusIn","handleFocusOut","handleKeydown","event","key","render","h","Host","class","onMouseEnter","onMouseLeave","onFocusin","onFocusout","onKeyDown","undefined","tooltip__popup","part","id","role"],"sources":["src/components/tooltip/tooltip.css?tag=ts-tooltip&encapsulation=shadow","src/components/tooltip/tooltip.tsx"],"sourcesContent":["/* ==========================================================================\n ts-tooltip — Shadow DOM Scoped Styles\n\n Component tokens (Tier 3):\n --ts-tooltip-bg Popup background\n --ts-tooltip-color Popup text color\n --ts-tooltip-radius Popup border radius\n ========================================================================== */\n\n:host {\n display: inline-block;\n position: relative;\n font-family: var(--ts-font-family-base);\n\n --ts-tooltip-bg: var(--ts-ref-neutral-900);\n --ts-tooltip-color: #ffffff;\n --ts-tooltip-radius: var(--ts-shape-badge);\n}\n\n.tooltip__trigger {\n display: inline-block;\n}\n\n/* ---- Popup ---- */\n.tooltip__popup {\n position: absolute;\n z-index: var(--ts-z-tooltip);\n padding: var(--ts-spacing-1) var(--ts-spacing-2);\n background-color: var(--ts-tooltip-bg);\n color: var(--ts-tooltip-color);\n font-size: var(--ts-font-size-xs);\n font-weight: var(--ts-font-weight-medium);\n line-height: var(--ts-line-height-normal);\n border-radius: var(--ts-tooltip-radius);\n white-space: nowrap;\n pointer-events: none;\n opacity: 0;\n transform: scale(0.95);\n transition:\n opacity var(--ts-transition-fast),\n transform var(--ts-transition-fast);\n}\n\n.tooltip__popup--visible {\n opacity: 1;\n transform: scale(1);\n}\n\n/* ---- Placements ---- */\n.tooltip__popup--top {\n bottom: calc(100% + 8px);\n left: 50%;\n transform-origin: bottom center;\n}\n.tooltip__popup--top,\n.tooltip__popup--top-start,\n.tooltip__popup--top-end {\n bottom: calc(100% + 8px);\n}\n.tooltip__popup--top { left: 50%; margin-left: -50%; }\n.tooltip__popup--top-start { inset-inline-start: 0; }\n.tooltip__popup--top-end { inset-inline-end: 0; }\n\n.tooltip__popup--bottom,\n.tooltip__popup--bottom-start,\n.tooltip__popup--bottom-end {\n top: calc(100% + 8px);\n}\n.tooltip__popup--bottom { left: 50%; margin-left: -50%; }\n.tooltip__popup--bottom-start { inset-inline-start: 0; }\n.tooltip__popup--bottom-end { inset-inline-end: 0; }\n\n.tooltip__popup--left,\n.tooltip__popup--left-start,\n.tooltip__popup--left-end {\n inset-inline-end: calc(100% + 8px);\n}\n.tooltip__popup--left { top: 50%; transform: translateY(-50%) scale(0.95); }\n.tooltip__popup--left.tooltip__popup--visible { transform: translateY(-50%) scale(1); }\n\n.tooltip__popup--right,\n.tooltip__popup--right-start,\n.tooltip__popup--right-end {\n inset-inline-start: calc(100% + 8px);\n}\n.tooltip__popup--right { top: 50%; transform: translateY(-50%) scale(0.95); }\n.tooltip__popup--right.tooltip__popup--visible { transform: translateY(-50%) scale(1); }\n\n/* ---- Arrow ---- */\n.tooltip__arrow {\n position: absolute;\n width: 8px;\n height: 8px;\n background: var(--ts-tooltip-bg);\n transform: rotate(45deg);\n}\n\n.tooltip__popup--top .tooltip__arrow,\n.tooltip__popup--top-start .tooltip__arrow,\n.tooltip__popup--top-end .tooltip__arrow {\n bottom: -4px;\n left: 50%;\n margin-left: -4px;\n}\n\n.tooltip__popup--bottom .tooltip__arrow,\n.tooltip__popup--bottom-start .tooltip__arrow,\n.tooltip__popup--bottom-end .tooltip__arrow {\n top: -4px;\n left: 50%;\n margin-left: -4px;\n}\n\n.tooltip__popup--left .tooltip__arrow {\n inset-inline-end: -4px;\n top: 50%;\n margin-top: -4px;\n}\n\n.tooltip__popup--right .tooltip__arrow {\n inset-inline-start: -4px;\n top: 50%;\n margin-top: -4px;\n}\n","import { Component, Prop, State, h, Host, Element, Method } from '@stencil/core';\nimport type { TsPlacement } from '../../types';\nimport { generateId } from '../../utils/aria';\n\n/**\n * @slot - Default slot for the trigger element.\n *\n * @part base - The tooltip popup container.\n * @part arrow - The tooltip arrow element.\n */\n@Component({\n tag: 'ts-tooltip',\n styleUrl: 'tooltip.css',\n shadow: true,\n})\nexport class TsTooltip {\n @Element() hostEl!: HTMLElement;\n\n private tooltipId = generateId('ts-tooltip');\n\n /** The tooltip text content. */\n @Prop() content = '';\n\n /** Placement of the tooltip relative to the trigger. */\n @Prop({ reflect: true }) placement: TsPlacement = 'top';\n\n /** Delay in ms before showing the tooltip. */\n @Prop() showDelay = 200;\n\n /** Delay in ms before hiding the tooltip. */\n @Prop() hideDelay = 0;\n\n /** Disables the tooltip. */\n @Prop({ reflect: true }) disabled = false;\n\n /** Whether the tooltip is currently visible. */\n @State() isVisible = false;\n\n private showTimeout?: ReturnType<typeof setTimeout>;\n private hideTimeout?: ReturnType<typeof setTimeout>;\n\n /** Programmatically show the tooltip. */\n @Method()\n async show(): Promise<void> {\n if (this.disabled) return;\n clearTimeout(this.hideTimeout);\n this.showTimeout = setTimeout(() => {\n this.isVisible = true;\n }, this.showDelay);\n }\n\n /** Programmatically hide the tooltip. */\n @Method()\n async hide(): Promise<void> {\n clearTimeout(this.showTimeout);\n this.hideTimeout = setTimeout(() => {\n this.isVisible = false;\n }, this.hideDelay);\n }\n\n disconnectedCallback(): void {\n clearTimeout(this.showTimeout);\n clearTimeout(this.hideTimeout);\n }\n\n private handleMouseEnter = (): void => {\n this.show();\n };\n\n private handleMouseLeave = (): void => {\n this.hide();\n };\n\n private handleFocusIn = (): void => {\n this.show();\n };\n\n private handleFocusOut = (): void => {\n this.hide();\n };\n\n private handleKeydown = (event: KeyboardEvent): void => {\n if (event.key === 'Escape' && this.isVisible) {\n this.hide();\n }\n };\n\n // eslint-disable-next-line @typescript-eslint/explicit-function-return-type\n render() {\n return (\n <Host\n class={{\n 'ts-tooltip': true,\n 'ts-tooltip--visible': this.isVisible,\n }}\n onMouseEnter={this.handleMouseEnter}\n onMouseLeave={this.handleMouseLeave}\n onFocusin={this.handleFocusIn}\n onFocusout={this.handleFocusOut}\n onKeyDown={this.handleKeydown}\n >\n <span class=\"tooltip__trigger\" aria-describedby={this.isVisible ? this.tooltipId : undefined}>\n <slot />\n </span>\n\n <div\n class={{\n 'tooltip__popup': true,\n [`tooltip__popup--${this.placement}`]: true,\n 'tooltip__popup--visible': this.isVisible,\n }}\n part=\"base\"\n id={this.tooltipId}\n role=\"tooltip\"\n aria-hidden={!this.isVisible ? 'true' : undefined}\n >\n {this.content}\n <div class=\"tooltip__arrow\" part=\"arrow\" />\n </div>\n </Host>\n );\n }\n}\n"],"mappings":"+FAAA,MAAMA,EAAa,IAAM,u7E,MCeZC,EAASC,EAAA,MAAAD,UAAAE,E,0GAGZC,UAAYC,EAAW,cAGvBC,QAAU,GAGOC,UAAyB,MAG1CC,UAAY,IAGZC,UAAY,EAGKC,SAAW,MAG3BC,UAAY,MAEbC,YACAC,YAIR,UAAMC,GACJ,GAAIC,KAAKL,SAAU,OACnBM,aAAaD,KAAKF,aAClBE,KAAKH,YAAcK,YAAW,KAC5BF,KAAKJ,UAAY,IAAI,GACpBI,KAAKP,U,CAKV,UAAMU,GACJF,aAAaD,KAAKH,aAClBG,KAAKF,YAAcI,YAAW,KAC5BF,KAAKJ,UAAY,KAAK,GACrBI,KAAKN,U,CAGV,oBAAAU,GACEH,aAAaD,KAAKH,aAClBI,aAAaD,KAAKF,Y,CAGZO,iBAAmB,KACzBL,KAAKD,MAAM,EAGLO,iBAAmB,KACzBN,KAAKG,MAAM,EAGLI,cAAgB,KACtBP,KAAKD,MAAM,EAGLS,eAAiB,KACvBR,KAAKG,MAAM,EAGLM,cAAiBC,IACvB,GAAIA,EAAMC,MAAQ,UAAYX,KAAKJ,UAAW,CAC5CI,KAAKG,M,GAKT,MAAAS,GACE,OACEC,EAACC,EAAI,CAAAH,IAAA,2CACHI,MAAO,CACL,aAAc,KACd,sBAAuBf,KAAKJ,WAE9BoB,aAAchB,KAAKK,iBACnBY,aAAcjB,KAAKM,iBACnBY,UAAWlB,KAAKO,cAChBY,WAAYnB,KAAKQ,eACjBY,UAAWpB,KAAKS,eAEhBI,EAAA,QAAAF,IAAA,2CAAMI,MAAM,mBAAkB,mBAAmBf,KAAKJ,UAAYI,KAAKX,UAAYgC,WACjFR,EAAA,QAAAF,IAAA,8CAGFE,EAAA,OAAAF,IAAA,2CACEI,MAAO,CACLO,eAAkB,KAClB,CAAC,mBAAmBtB,KAAKR,aAAc,KACvC,0BAA2BQ,KAAKJ,WAElC2B,KAAK,OACLC,GAAIxB,KAAKX,UACToC,KAAK,UAAS,eACAzB,KAAKJ,UAAY,OAASyB,WAEvCrB,KAAKT,QACNsB,EAAA,OAAAF,IAAA,2CAAKI,MAAM,iBAAiBQ,KAAK,W","ignoreList":[]}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"names":[],"sources":[],"mappings":"","ignoreList":[]}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"names":[],"sources":[],"mappings":"","ignoreList":[]}
|