@tessera-ui/core 0.4.0 → 0.5.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +21 -12
- package/dist/components/index.js +1 -1
- package/dist/components/{p-O8aQgWRZ.js → p-2ydrBbXU.js} +2 -2
- package/dist/components/p-A0saON5E.js +2 -0
- package/dist/components/p-B046Q9mB.js +2 -0
- package/dist/components/{p-C7JaUlNB.js → p-B4_cDa1A.js} +2 -2
- package/dist/components/{p-BdzH6wlc.js → p-BCv5H01l.js} +2 -2
- package/dist/components/p-BGnwokOT.js +2 -0
- package/dist/components/p-BMu62WKn.js +2 -0
- package/dist/components/p-BT1uIgln.js +2 -0
- package/dist/components/p-BUWioFPq.js +2 -0
- package/dist/components/{p-v-L32wKy.js → p-BdeYJARM.js} +2 -2
- package/dist/components/{p-DhQ7X_TL.js → p-BnX1KON4.js} +2 -2
- package/dist/components/{p-DwJ7Jt3k.js → p-BsX7YKf7.js} +2 -2
- package/dist/components/p-BzSptDZ8.js +2 -0
- package/dist/components/p-C4C_ntgI.js +2 -0
- package/dist/components/p-C4jvuley.js +2 -0
- package/dist/components/{p-BP-fZfRb.js → p-CGcBFblJ.js} +2 -2
- package/dist/components/p-CJvp9tpd.js +2 -0
- package/dist/components/{p-DD986daz.js → p-COpYtD-7.js} +2 -2
- package/dist/components/{p-C8wd1644.js → p-CV-_3uEV.js} +2 -2
- package/dist/components/p-CXpxj5LF.js +2 -0
- package/dist/components/{p-CEQXPxzU.js → p-Ccf23RDb.js} +2 -2
- package/dist/components/{p-SopsdO_f.js → p-Ccpbt1Ou.js} +2 -2
- package/dist/components/{p-DMPxu5Po.js → p-CgLMjfKE.js} +2 -2
- package/dist/components/p-D2rKVDAH.js +2 -0
- package/dist/components/{p-zveaarwa.js → p-D33ZtGZF.js} +2 -2
- package/dist/components/{p-Fot2uNwg.js → p-DHBR8Qn_.js} +2 -2
- package/dist/components/{p-faVXXwqR.js → p-DOtFbUdh.js} +2 -2
- package/dist/components/{p-BjiDgszq.js → p-DelBi-6m.js} +2 -2
- package/dist/components/{p-Cy_Ad-Jy.js → p-DgbNUE6a.js} +2 -2
- package/dist/components/{p-DTAVTqnc.js → p-I5_iFNxb.js} +2 -2
- package/dist/components/p-IZ8R1wr2.js +2 -0
- package/dist/components/{p-B_NL55YI.js → p-LcG5Mdyq.js} +2 -2
- package/dist/components/{p-BcoU0ISN.js → p-XuOQBHK0.js} +2 -2
- package/dist/components/p-_EbBBIv1.js +2 -0
- package/dist/components/p-_vCbug8y.js +2 -0
- package/dist/components/{p-B0ZXNFSa.js → p-b-zWbmXM.js} +2 -2
- package/dist/components/{p-DwUH8YQW.js → p-e-hrdd0t.js} +2 -2
- package/dist/components/p-gtluIo4p.js +2 -0
- package/dist/components/p-o-GUod2W.js +2 -0
- package/dist/components/{p-DooMF1E0.js → p-w9y5VC-3.js} +2 -2
- package/dist/components/ts-accordion-item.js +1 -1
- package/dist/components/ts-accordion.js +1 -1
- package/dist/components/ts-alert.js +1 -1
- package/dist/components/ts-avatar.js +1 -1
- package/dist/components/ts-badge.js +1 -1
- package/dist/components/ts-banner.js +1 -1
- package/dist/components/ts-breadcrumb-item.js +1 -1
- package/dist/components/ts-breadcrumb.js +1 -1
- package/dist/components/ts-button.js +1 -1
- package/dist/components/ts-card.js +1 -1
- package/dist/components/ts-checkbox.js +1 -1
- package/dist/components/ts-chip.js +1 -1
- package/dist/components/ts-container.js +1 -1
- package/dist/components/ts-date-picker.js +1 -1
- package/dist/components/ts-dialog.js +1 -1
- package/dist/components/ts-divider.js +1 -1
- package/dist/components/ts-drawer.js +1 -1
- package/dist/components/ts-empty-state.js +1 -1
- package/dist/components/ts-file-upload.js +1 -1
- package/dist/components/ts-grid.js +1 -1
- package/dist/components/ts-icon.js +1 -1
- package/dist/components/ts-input.js +1 -1
- package/dist/components/ts-menu-item.js +1 -1
- package/dist/components/ts-menu.js +1 -1
- package/dist/components/ts-modal.js +1 -1
- package/dist/components/ts-nav-item.js +1 -1
- package/dist/components/ts-nav.js +1 -1
- package/dist/components/ts-pagination.js +1 -1
- package/dist/components/ts-popover.js +1 -1
- package/dist/components/ts-progress.js +1 -1
- package/dist/components/ts-radio.js +1 -1
- package/dist/components/ts-row.js +1 -1
- package/dist/components/ts-select.js +1 -1
- package/dist/components/ts-skeleton.js +1 -1
- package/dist/components/ts-slider.js +1 -1
- package/dist/components/ts-spacer.js +1 -1
- package/dist/components/ts-spinner.js +1 -1
- package/dist/components/ts-stack.js +1 -1
- package/dist/components/ts-step.js +1 -1
- package/dist/components/ts-stepper.js +1 -1
- package/dist/components/ts-switch-group.js +1 -1
- package/dist/components/ts-switch-option.js +1 -1
- package/dist/components/ts-tab-panel.js +1 -1
- package/dist/components/ts-table.js +1 -1
- package/dist/components/ts-tabs.js +1 -1
- package/dist/components/ts-textarea.js +1 -1
- package/dist/components/ts-toast.js +1 -1
- package/dist/components/ts-toggle.js +1 -1
- package/dist/components/ts-toolbar.js +1 -1
- package/dist/components/ts-tooltip.js +1 -1
- package/dist/components/ts-tree-item.js +1 -1
- package/dist/components/ts-tree.js +1 -1
- package/package.json +24 -3
- package/dist/cjs/aria-CeYIvz3U.js.map +0 -1
- package/dist/cjs/index-Bel_x2OU.js.map +0 -1
- package/dist/cjs/index.cjs.js.map +0 -1
- package/dist/cjs/loader.cjs.js.map +0 -1
- package/dist/cjs/lucide-B1gCqJ3G.js.map +0 -1
- package/dist/cjs/tessera-ui.cjs.js.map +0 -1
- package/dist/cjs/ts-accordion-item.cjs.entry.js.map +0 -1
- package/dist/cjs/ts-accordion.cjs.entry.js.map +0 -1
- package/dist/cjs/ts-alert.cjs.entry.js.map +0 -1
- package/dist/cjs/ts-avatar.cjs.entry.js.map +0 -1
- package/dist/cjs/ts-badge.cjs.entry.js.map +0 -1
- package/dist/cjs/ts-banner.cjs.entry.js.map +0 -1
- package/dist/cjs/ts-breadcrumb-item.cjs.entry.js.map +0 -1
- package/dist/cjs/ts-breadcrumb.cjs.entry.js.map +0 -1
- package/dist/cjs/ts-button.cjs.entry.js.map +0 -1
- package/dist/cjs/ts-card.cjs.entry.js.map +0 -1
- package/dist/cjs/ts-checkbox.cjs.entry.js.map +0 -1
- package/dist/cjs/ts-chip.cjs.entry.js.map +0 -1
- package/dist/cjs/ts-container.cjs.entry.js.map +0 -1
- package/dist/cjs/ts-date-picker.cjs.entry.js.map +0 -1
- package/dist/cjs/ts-dialog.cjs.entry.js.map +0 -1
- package/dist/cjs/ts-divider.cjs.entry.js.map +0 -1
- package/dist/cjs/ts-drawer.cjs.entry.js.map +0 -1
- package/dist/cjs/ts-empty-state.cjs.entry.js.map +0 -1
- package/dist/cjs/ts-file-upload.cjs.entry.js.map +0 -1
- package/dist/cjs/ts-grid.cjs.entry.js.map +0 -1
- package/dist/cjs/ts-icon-CfbhgAgr.js.map +0 -1
- package/dist/cjs/ts-icon.cjs.entry.js.map +0 -1
- package/dist/cjs/ts-input.cjs.entry.js.map +0 -1
- package/dist/cjs/ts-menu-item.cjs.entry.js.map +0 -1
- package/dist/cjs/ts-menu.cjs.entry.js.map +0 -1
- package/dist/cjs/ts-modal.cjs.entry.js.map +0 -1
- package/dist/cjs/ts-nav-item.cjs.entry.js.map +0 -1
- package/dist/cjs/ts-nav.cjs.entry.js.map +0 -1
- package/dist/cjs/ts-pagination.cjs.entry.js.map +0 -1
- package/dist/cjs/ts-popover.cjs.entry.js.map +0 -1
- package/dist/cjs/ts-progress.cjs.entry.js.map +0 -1
- package/dist/cjs/ts-radio.cjs.entry.js.map +0 -1
- package/dist/cjs/ts-row.cjs.entry.js.map +0 -1
- package/dist/cjs/ts-select.cjs.entry.js.map +0 -1
- package/dist/cjs/ts-skeleton.cjs.entry.js.map +0 -1
- package/dist/cjs/ts-slider.cjs.entry.js.map +0 -1
- package/dist/cjs/ts-spacer.cjs.entry.js.map +0 -1
- package/dist/cjs/ts-spinner.cjs.entry.js.map +0 -1
- package/dist/cjs/ts-stack.cjs.entry.js.map +0 -1
- package/dist/cjs/ts-step.cjs.entry.js.map +0 -1
- package/dist/cjs/ts-stepper.cjs.entry.js.map +0 -1
- package/dist/cjs/ts-switch-group.cjs.entry.js.map +0 -1
- package/dist/cjs/ts-switch-option.cjs.entry.js.map +0 -1
- package/dist/cjs/ts-tab-panel.cjs.entry.js.map +0 -1
- package/dist/cjs/ts-table.cjs.entry.js.map +0 -1
- package/dist/cjs/ts-tabs.cjs.entry.js.map +0 -1
- package/dist/cjs/ts-textarea.cjs.entry.js.map +0 -1
- package/dist/cjs/ts-toast.cjs.entry.js.map +0 -1
- package/dist/cjs/ts-toggle.cjs.entry.js.map +0 -1
- package/dist/cjs/ts-toolbar.cjs.entry.js.map +0 -1
- package/dist/cjs/ts-tooltip.cjs.entry.js.map +0 -1
- package/dist/cjs/ts-tree-item.cjs.entry.js.map +0 -1
- package/dist/cjs/ts-tree.cjs.entry.js.map +0 -1
- package/dist/collection/components/accordion/accordion-item.js.map +0 -1
- package/dist/collection/components/accordion/accordion-item.stories.js +0 -4
- package/dist/collection/components/accordion/accordion-item.stories.js.map +0 -1
- package/dist/collection/components/accordion/accordion.js.map +0 -1
- package/dist/collection/components/accordion/accordion.stories.js +0 -90
- package/dist/collection/components/accordion/accordion.stories.js.map +0 -1
- package/dist/collection/components/alert/alert.js.map +0 -1
- package/dist/collection/components/alert/alert.stories.js +0 -128
- package/dist/collection/components/alert/alert.stories.js.map +0 -1
- package/dist/collection/components/avatar/avatar.js.map +0 -1
- package/dist/collection/components/avatar/avatar.stories.js +0 -138
- package/dist/collection/components/avatar/avatar.stories.js.map +0 -1
- package/dist/collection/components/badge/badge.js.map +0 -1
- package/dist/collection/components/badge/badge.stories.js +0 -193
- package/dist/collection/components/badge/badge.stories.js.map +0 -1
- package/dist/collection/components/banner/banner.js.map +0 -1
- package/dist/collection/components/banner/banner.stories.js +0 -92
- package/dist/collection/components/banner/banner.stories.js.map +0 -1
- package/dist/collection/components/breadcrumb/breadcrumb-item.js.map +0 -1
- package/dist/collection/components/breadcrumb/breadcrumb-item.stories.js +0 -4
- package/dist/collection/components/breadcrumb/breadcrumb-item.stories.js.map +0 -1
- package/dist/collection/components/breadcrumb/breadcrumb.js.map +0 -1
- package/dist/collection/components/breadcrumb/breadcrumb.stories.js +0 -88
- package/dist/collection/components/breadcrumb/breadcrumb.stories.js.map +0 -1
- package/dist/collection/components/button/button.js.map +0 -1
- package/dist/collection/components/button/button.stories.js +0 -219
- package/dist/collection/components/button/button.stories.js.map +0 -1
- package/dist/collection/components/card/card.js.map +0 -1
- package/dist/collection/components/card/card.stories.js +0 -221
- package/dist/collection/components/card/card.stories.js.map +0 -1
- package/dist/collection/components/checkbox/checkbox.js.map +0 -1
- package/dist/collection/components/checkbox/checkbox.stories.js +0 -90
- package/dist/collection/components/checkbox/checkbox.stories.js.map +0 -1
- package/dist/collection/components/chip/chip.js.map +0 -1
- package/dist/collection/components/chip/chip.stories.js +0 -139
- package/dist/collection/components/chip/chip.stories.js.map +0 -1
- package/dist/collection/components/container/container.js.map +0 -1
- package/dist/collection/components/container/container.stories.js +0 -138
- package/dist/collection/components/container/container.stories.js.map +0 -1
- package/dist/collection/components/date-picker/date-picker.js.map +0 -1
- package/dist/collection/components/date-picker/date-picker.stories.js +0 -119
- package/dist/collection/components/date-picker/date-picker.stories.js.map +0 -1
- package/dist/collection/components/dialog/dialog.js.map +0 -1
- package/dist/collection/components/dialog/dialog.stories.js +0 -147
- package/dist/collection/components/dialog/dialog.stories.js.map +0 -1
- package/dist/collection/components/divider/divider.js.map +0 -1
- package/dist/collection/components/divider/divider.stories.js +0 -94
- package/dist/collection/components/divider/divider.stories.js.map +0 -1
- package/dist/collection/components/drawer/drawer.js.map +0 -1
- package/dist/collection/components/drawer/drawer.stories.js +0 -143
- package/dist/collection/components/drawer/drawer.stories.js.map +0 -1
- package/dist/collection/components/empty-state/empty-state.js.map +0 -1
- package/dist/collection/components/empty-state/empty-state.stories.js +0 -113
- package/dist/collection/components/empty-state/empty-state.stories.js.map +0 -1
- package/dist/collection/components/file-upload/file-upload.js.map +0 -1
- package/dist/collection/components/file-upload/file-upload.stories.js +0 -107
- package/dist/collection/components/file-upload/file-upload.stories.js.map +0 -1
- package/dist/collection/components/grid/grid.js.map +0 -1
- package/dist/collection/components/grid/grid.stories.js +0 -134
- package/dist/collection/components/grid/grid.stories.js.map +0 -1
- package/dist/collection/components/icon/icon-registry.js.map +0 -1
- package/dist/collection/components/icon/icon.js.map +0 -1
- package/dist/collection/components/icon/icon.stories.js +0 -119
- package/dist/collection/components/icon/icon.stories.js.map +0 -1
- package/dist/collection/components/input/input.js.map +0 -1
- package/dist/collection/components/input/input.stories.js +0 -151
- package/dist/collection/components/input/input.stories.js.map +0 -1
- package/dist/collection/components/menu/menu-item.js.map +0 -1
- package/dist/collection/components/menu/menu-item.stories.js +0 -4
- package/dist/collection/components/menu/menu-item.stories.js.map +0 -1
- package/dist/collection/components/menu/menu.js.map +0 -1
- package/dist/collection/components/menu/menu.stories.js +0 -126
- package/dist/collection/components/menu/menu.stories.js.map +0 -1
- package/dist/collection/components/modal/modal.js.map +0 -1
- package/dist/collection/components/modal/modal.stories.js +0 -233
- package/dist/collection/components/modal/modal.stories.js.map +0 -1
- package/dist/collection/components/nav/nav-item.js.map +0 -1
- package/dist/collection/components/nav/nav-item.stories.js +0 -4
- package/dist/collection/components/nav/nav-item.stories.js.map +0 -1
- package/dist/collection/components/nav/nav.js.map +0 -1
- package/dist/collection/components/nav/nav.stories.js +0 -106
- package/dist/collection/components/nav/nav.stories.js.map +0 -1
- package/dist/collection/components/pagination/pagination.js.map +0 -1
- package/dist/collection/components/pagination/pagination.stories.js +0 -92
- package/dist/collection/components/pagination/pagination.stories.js.map +0 -1
- package/dist/collection/components/popover/popover.js.map +0 -1
- package/dist/collection/components/popover/popover.stories.js +0 -112
- package/dist/collection/components/popover/popover.stories.js.map +0 -1
- package/dist/collection/components/progress/progress.js.map +0 -1
- package/dist/collection/components/progress/progress.stories.js +0 -132
- package/dist/collection/components/progress/progress.stories.js.map +0 -1
- package/dist/collection/components/radio/radio.js.map +0 -1
- package/dist/collection/components/radio/radio.stories.js +0 -77
- package/dist/collection/components/radio/radio.stories.js.map +0 -1
- package/dist/collection/components/row/row.js.map +0 -1
- package/dist/collection/components/row/row.stories.js +0 -172
- package/dist/collection/components/row/row.stories.js.map +0 -1
- package/dist/collection/components/select/select.js.map +0 -1
- package/dist/collection/components/select/select.stories.js +0 -138
- package/dist/collection/components/select/select.stories.js.map +0 -1
- package/dist/collection/components/skeleton/skeleton.js.map +0 -1
- package/dist/collection/components/skeleton/skeleton.stories.js +0 -140
- package/dist/collection/components/skeleton/skeleton.stories.js.map +0 -1
- package/dist/collection/components/slider/slider.js.map +0 -1
- package/dist/collection/components/slider/slider.stories.js +0 -100
- package/dist/collection/components/slider/slider.stories.js.map +0 -1
- package/dist/collection/components/spacer/spacer.js.map +0 -1
- package/dist/collection/components/spacer/spacer.stories.js +0 -90
- package/dist/collection/components/spacer/spacer.stories.js.map +0 -1
- package/dist/collection/components/spinner/spinner.js.map +0 -1
- package/dist/collection/components/spinner/spinner.stories.js +0 -88
- package/dist/collection/components/spinner/spinner.stories.js.map +0 -1
- package/dist/collection/components/stack/stack.js.map +0 -1
- package/dist/collection/components/stack/stack.stories.js +0 -121
- package/dist/collection/components/stack/stack.stories.js.map +0 -1
- package/dist/collection/components/stepper/step.js.map +0 -1
- package/dist/collection/components/stepper/step.stories.js +0 -4
- package/dist/collection/components/stepper/step.stories.js.map +0 -1
- package/dist/collection/components/stepper/stepper.js.map +0 -1
- package/dist/collection/components/stepper/stepper.stories.js +0 -130
- package/dist/collection/components/stepper/stepper.stories.js.map +0 -1
- package/dist/collection/components/switch-group/switch-group.js.map +0 -1
- package/dist/collection/components/switch-group/switch-group.stories.js +0 -132
- package/dist/collection/components/switch-group/switch-group.stories.js.map +0 -1
- package/dist/collection/components/switch-group/switch-option.js.map +0 -1
- package/dist/collection/components/switch-group/switch-option.stories.js +0 -4
- package/dist/collection/components/switch-group/switch-option.stories.js.map +0 -1
- package/dist/collection/components/table/table.js.map +0 -1
- package/dist/collection/components/table/table.stories.js +0 -147
- package/dist/collection/components/table/table.stories.js.map +0 -1
- package/dist/collection/components/tabs/tab-panel.js.map +0 -1
- package/dist/collection/components/tabs/tab-panel.stories.js +0 -4
- package/dist/collection/components/tabs/tab-panel.stories.js.map +0 -1
- package/dist/collection/components/tabs/tabs.js.map +0 -1
- package/dist/collection/components/tabs/tabs.stories.js +0 -187
- package/dist/collection/components/tabs/tabs.stories.js.map +0 -1
- package/dist/collection/components/textarea/textarea.js.map +0 -1
- package/dist/collection/components/textarea/textarea.stories.js +0 -130
- package/dist/collection/components/textarea/textarea.stories.js.map +0 -1
- package/dist/collection/components/toast/toast.js.map +0 -1
- package/dist/collection/components/toast/toast.stories.js +0 -91
- package/dist/collection/components/toast/toast.stories.js.map +0 -1
- package/dist/collection/components/toggle/toggle.js.map +0 -1
- package/dist/collection/components/toggle/toggle.stories.js +0 -145
- package/dist/collection/components/toggle/toggle.stories.js.map +0 -1
- package/dist/collection/components/toolbar/toolbar.js.map +0 -1
- package/dist/collection/components/toolbar/toolbar.stories.js +0 -131
- package/dist/collection/components/toolbar/toolbar.stories.js.map +0 -1
- package/dist/collection/components/tooltip/tooltip.js.map +0 -1
- package/dist/collection/components/tooltip/tooltip.stories.js +0 -186
- package/dist/collection/components/tooltip/tooltip.stories.js.map +0 -1
- package/dist/collection/components/tree/tree-item.js.map +0 -1
- package/dist/collection/components/tree/tree-item.stories.js +0 -4
- package/dist/collection/components/tree/tree-item.stories.js.map +0 -1
- package/dist/collection/components/tree/tree.js.map +0 -1
- package/dist/collection/components/tree/tree.stories.js +0 -121
- package/dist/collection/components/tree/tree.stories.js.map +0 -1
- package/dist/collection/index.js.map +0 -1
- package/dist/collection/theme/tokens.js.map +0 -1
- package/dist/collection/types/index.js.map +0 -1
- package/dist/collection/utils/aria.js.map +0 -1
- package/dist/collection/utils/dom.js.map +0 -1
- package/dist/collection/utils/events.js.map +0 -1
- package/dist/components/index.js.map +0 -1
- package/dist/components/p-6RDSLDuS.js +0 -2
- package/dist/components/p-6RDSLDuS.js.map +0 -1
- package/dist/components/p-B0ZXNFSa.js.map +0 -1
- package/dist/components/p-BCgm2utU.js +0 -2
- package/dist/components/p-BCgm2utU.js.map +0 -1
- package/dist/components/p-BFN5hUo4.js +0 -2
- package/dist/components/p-BFN5hUo4.js.map +0 -1
- package/dist/components/p-BOxYojS-.js.map +0 -1
- package/dist/components/p-BP-fZfRb.js.map +0 -1
- package/dist/components/p-B_NL55YI.js.map +0 -1
- package/dist/components/p-BcoU0ISN.js.map +0 -1
- package/dist/components/p-BdzH6wlc.js.map +0 -1
- package/dist/components/p-BeErYjKz.js +0 -2
- package/dist/components/p-BeErYjKz.js.map +0 -1
- package/dist/components/p-BjiDgszq.js.map +0 -1
- package/dist/components/p-BjyTgfXe.js +0 -2
- package/dist/components/p-BjyTgfXe.js.map +0 -1
- package/dist/components/p-BlZHjan9.js +0 -2
- package/dist/components/p-BlZHjan9.js.map +0 -1
- package/dist/components/p-C7JaUlNB.js.map +0 -1
- package/dist/components/p-C8wd1644.js.map +0 -1
- package/dist/components/p-CEQXPxzU.js.map +0 -1
- package/dist/components/p-CGh7W07E.js +0 -2
- package/dist/components/p-CGh7W07E.js.map +0 -1
- package/dist/components/p-CHtE5caV.js +0 -2
- package/dist/components/p-CHtE5caV.js.map +0 -1
- package/dist/components/p-CSNeA_zh.js +0 -2
- package/dist/components/p-CSNeA_zh.js.map +0 -1
- package/dist/components/p-CbHlJvjF.js +0 -2
- package/dist/components/p-CbHlJvjF.js.map +0 -1
- package/dist/components/p-CkQOAizb.js +0 -2
- package/dist/components/p-CkQOAizb.js.map +0 -1
- package/dist/components/p-Cy_Ad-Jy.js.map +0 -1
- package/dist/components/p-DD986daz.js.map +0 -1
- package/dist/components/p-DFnNsZtI.js +0 -2
- package/dist/components/p-DFnNsZtI.js.map +0 -1
- package/dist/components/p-DMPxu5Po.js.map +0 -1
- package/dist/components/p-DMuI5d5r.js +0 -2
- package/dist/components/p-DMuI5d5r.js.map +0 -1
- package/dist/components/p-DPQ1o4MP.js +0 -2
- package/dist/components/p-DPQ1o4MP.js.map +0 -1
- package/dist/components/p-DTAVTqnc.js.map +0 -1
- package/dist/components/p-DhQ7X_TL.js.map +0 -1
- package/dist/components/p-DkpyRqHf.js.map +0 -1
- package/dist/components/p-DlB-KfKY.js +0 -2
- package/dist/components/p-DlB-KfKY.js.map +0 -1
- package/dist/components/p-DooMF1E0.js.map +0 -1
- package/dist/components/p-DwJ7Jt3k.js.map +0 -1
- package/dist/components/p-DwUH8YQW.js.map +0 -1
- package/dist/components/p-Fot2uNwg.js.map +0 -1
- package/dist/components/p-O8aQgWRZ.js.map +0 -1
- package/dist/components/p-SopsdO_f.js.map +0 -1
- package/dist/components/p-TFHAUMKT.js +0 -2
- package/dist/components/p-TFHAUMKT.js.map +0 -1
- package/dist/components/p-faVXXwqR.js.map +0 -1
- package/dist/components/p-lpqZSiIf.js.map +0 -1
- package/dist/components/p-mfB_pP4L.js +0 -2
- package/dist/components/p-mfB_pP4L.js.map +0 -1
- package/dist/components/p-v-L32wKy.js.map +0 -1
- package/dist/components/p-zveaarwa.js.map +0 -1
- package/dist/components/ts-accordion-item.js.map +0 -1
- package/dist/components/ts-accordion.js.map +0 -1
- package/dist/components/ts-alert.js.map +0 -1
- package/dist/components/ts-avatar.js.map +0 -1
- package/dist/components/ts-badge.js.map +0 -1
- package/dist/components/ts-banner.js.map +0 -1
- package/dist/components/ts-breadcrumb-item.js.map +0 -1
- package/dist/components/ts-breadcrumb.js.map +0 -1
- package/dist/components/ts-button.js.map +0 -1
- package/dist/components/ts-card.js.map +0 -1
- package/dist/components/ts-checkbox.js.map +0 -1
- package/dist/components/ts-chip.js.map +0 -1
- package/dist/components/ts-container.js.map +0 -1
- package/dist/components/ts-date-picker.js.map +0 -1
- package/dist/components/ts-dialog.js.map +0 -1
- package/dist/components/ts-divider.js.map +0 -1
- package/dist/components/ts-drawer.js.map +0 -1
- package/dist/components/ts-empty-state.js.map +0 -1
- package/dist/components/ts-file-upload.js.map +0 -1
- package/dist/components/ts-grid.js.map +0 -1
- package/dist/components/ts-icon.js.map +0 -1
- package/dist/components/ts-input.js.map +0 -1
- package/dist/components/ts-menu-item.js.map +0 -1
- package/dist/components/ts-menu.js.map +0 -1
- package/dist/components/ts-modal.js.map +0 -1
- package/dist/components/ts-nav-item.js.map +0 -1
- package/dist/components/ts-nav.js.map +0 -1
- package/dist/components/ts-pagination.js.map +0 -1
- package/dist/components/ts-popover.js.map +0 -1
- package/dist/components/ts-progress.js.map +0 -1
- package/dist/components/ts-radio.js.map +0 -1
- package/dist/components/ts-row.js.map +0 -1
- package/dist/components/ts-select.js.map +0 -1
- package/dist/components/ts-skeleton.js.map +0 -1
- package/dist/components/ts-slider.js.map +0 -1
- package/dist/components/ts-spacer.js.map +0 -1
- package/dist/components/ts-spinner.js.map +0 -1
- package/dist/components/ts-stack.js.map +0 -1
- package/dist/components/ts-step.js.map +0 -1
- package/dist/components/ts-stepper.js.map +0 -1
- package/dist/components/ts-switch-group.js.map +0 -1
- package/dist/components/ts-switch-option.js.map +0 -1
- package/dist/components/ts-tab-panel.js.map +0 -1
- package/dist/components/ts-table.js.map +0 -1
- package/dist/components/ts-tabs.js.map +0 -1
- package/dist/components/ts-textarea.js.map +0 -1
- package/dist/components/ts-toast.js.map +0 -1
- package/dist/components/ts-toggle.js.map +0 -1
- package/dist/components/ts-toolbar.js.map +0 -1
- package/dist/components/ts-tooltip.js.map +0 -1
- package/dist/components/ts-tree-item.js.map +0 -1
- package/dist/components/ts-tree.js.map +0 -1
- package/dist/components.json +0 -12678
- package/dist/esm/aria-lpqZSiIf.js.map +0 -1
- package/dist/esm/index-V8-ENixA.js.map +0 -1
- package/dist/esm/index.js.map +0 -1
- package/dist/esm/loader.js.map +0 -1
- package/dist/esm/lucide-BOxYojS-.js.map +0 -1
- package/dist/esm/tessera-ui.js.map +0 -1
- package/dist/esm/ts-accordion-item.entry.js.map +0 -1
- package/dist/esm/ts-accordion.entry.js.map +0 -1
- package/dist/esm/ts-alert.entry.js.map +0 -1
- package/dist/esm/ts-avatar.entry.js.map +0 -1
- package/dist/esm/ts-badge.entry.js.map +0 -1
- package/dist/esm/ts-banner.entry.js.map +0 -1
- package/dist/esm/ts-breadcrumb-item.entry.js.map +0 -1
- package/dist/esm/ts-breadcrumb.entry.js.map +0 -1
- package/dist/esm/ts-button.entry.js.map +0 -1
- package/dist/esm/ts-card.entry.js.map +0 -1
- package/dist/esm/ts-checkbox.entry.js.map +0 -1
- package/dist/esm/ts-chip.entry.js.map +0 -1
- package/dist/esm/ts-container.entry.js.map +0 -1
- package/dist/esm/ts-date-picker.entry.js.map +0 -1
- package/dist/esm/ts-dialog.entry.js.map +0 -1
- package/dist/esm/ts-divider.entry.js.map +0 -1
- package/dist/esm/ts-drawer.entry.js.map +0 -1
- package/dist/esm/ts-empty-state.entry.js.map +0 -1
- package/dist/esm/ts-file-upload.entry.js.map +0 -1
- package/dist/esm/ts-grid.entry.js.map +0 -1
- package/dist/esm/ts-icon-Jz9ioZag.js.map +0 -1
- package/dist/esm/ts-icon.entry.js.map +0 -1
- package/dist/esm/ts-input.entry.js.map +0 -1
- package/dist/esm/ts-menu-item.entry.js.map +0 -1
- package/dist/esm/ts-menu.entry.js.map +0 -1
- package/dist/esm/ts-modal.entry.js.map +0 -1
- package/dist/esm/ts-nav-item.entry.js.map +0 -1
- package/dist/esm/ts-nav.entry.js.map +0 -1
- package/dist/esm/ts-pagination.entry.js.map +0 -1
- package/dist/esm/ts-popover.entry.js.map +0 -1
- package/dist/esm/ts-progress.entry.js.map +0 -1
- package/dist/esm/ts-radio.entry.js.map +0 -1
- package/dist/esm/ts-row.entry.js.map +0 -1
- package/dist/esm/ts-select.entry.js.map +0 -1
- package/dist/esm/ts-skeleton.entry.js.map +0 -1
- package/dist/esm/ts-slider.entry.js.map +0 -1
- package/dist/esm/ts-spacer.entry.js.map +0 -1
- package/dist/esm/ts-spinner.entry.js.map +0 -1
- package/dist/esm/ts-stack.entry.js.map +0 -1
- package/dist/esm/ts-step.entry.js.map +0 -1
- package/dist/esm/ts-stepper.entry.js.map +0 -1
- package/dist/esm/ts-switch-group.entry.js.map +0 -1
- package/dist/esm/ts-switch-option.entry.js.map +0 -1
- package/dist/esm/ts-tab-panel.entry.js.map +0 -1
- package/dist/esm/ts-table.entry.js.map +0 -1
- package/dist/esm/ts-tabs.entry.js.map +0 -1
- package/dist/esm/ts-textarea.entry.js.map +0 -1
- package/dist/esm/ts-toast.entry.js.map +0 -1
- package/dist/esm/ts-toggle.entry.js.map +0 -1
- package/dist/esm/ts-toolbar.entry.js.map +0 -1
- package/dist/esm/ts-tooltip.entry.js.map +0 -1
- package/dist/esm/ts-tree-item.entry.js.map +0 -1
- package/dist/esm/ts-tree.entry.js.map +0 -1
- package/dist/tessera-ui/index.esm.js.map +0 -1
- package/dist/tessera-ui/p-0424cd55.entry.js.map +0 -1
- package/dist/tessera-ui/p-04522bf9.entry.js.map +0 -1
- package/dist/tessera-ui/p-04aa8b90.entry.js.map +0 -1
- package/dist/tessera-ui/p-080eaf89.entry.js.map +0 -1
- package/dist/tessera-ui/p-0ec061e5.entry.js.map +0 -1
- package/dist/tessera-ui/p-122e43b7.entry.js.map +0 -1
- package/dist/tessera-ui/p-16bb8ca8.entry.js.map +0 -1
- package/dist/tessera-ui/p-16fc632b.entry.js.map +0 -1
- package/dist/tessera-ui/p-1d73f6c9.entry.js.map +0 -1
- package/dist/tessera-ui/p-24305379.entry.js.map +0 -1
- package/dist/tessera-ui/p-25f77cc9.entry.js.map +0 -1
- package/dist/tessera-ui/p-35eb8496.entry.js.map +0 -1
- package/dist/tessera-ui/p-3aec66b4.entry.js.map +0 -1
- package/dist/tessera-ui/p-4277460b.entry.js.map +0 -1
- package/dist/tessera-ui/p-441310f7.entry.js.map +0 -1
- package/dist/tessera-ui/p-491e1a75.entry.js.map +0 -1
- package/dist/tessera-ui/p-50d092ce.entry.js.map +0 -1
- package/dist/tessera-ui/p-50efadf3.entry.js.map +0 -1
- package/dist/tessera-ui/p-53846d59.entry.js.map +0 -1
- package/dist/tessera-ui/p-56f2b070.entry.js.map +0 -1
- package/dist/tessera-ui/p-6760f922.entry.js.map +0 -1
- package/dist/tessera-ui/p-69bb11ed.entry.js.map +0 -1
- package/dist/tessera-ui/p-6d35a60c.entry.js.map +0 -1
- package/dist/tessera-ui/p-6ec285ad.entry.js.map +0 -1
- package/dist/tessera-ui/p-708d4eb5.entry.js.map +0 -1
- package/dist/tessera-ui/p-79ff8ceb.entry.js.map +0 -1
- package/dist/tessera-ui/p-7e531195.entry.js.map +0 -1
- package/dist/tessera-ui/p-7fa64f00.entry.js.map +0 -1
- package/dist/tessera-ui/p-829c4307.entry.js.map +0 -1
- package/dist/tessera-ui/p-91ccef3f.entry.js.map +0 -1
- package/dist/tessera-ui/p-9209e603.entry.js.map +0 -1
- package/dist/tessera-ui/p-97a9def7.entry.js.map +0 -1
- package/dist/tessera-ui/p-9b41b538.entry.js.map +0 -1
- package/dist/tessera-ui/p-9c0504fd.entry.js.map +0 -1
- package/dist/tessera-ui/p-BOxYojS-.js.map +0 -1
- package/dist/tessera-ui/p-StBQmS8h.js.map +0 -1
- package/dist/tessera-ui/p-V8-ENixA.js.map +0 -1
- package/dist/tessera-ui/p-a120b5d6.entry.js.map +0 -1
- package/dist/tessera-ui/p-a55a5695.entry.js.map +0 -1
- package/dist/tessera-ui/p-a83d903e.entry.js.map +0 -1
- package/dist/tessera-ui/p-adc807dc.entry.js.map +0 -1
- package/dist/tessera-ui/p-b09f202c.entry.js.map +0 -1
- package/dist/tessera-ui/p-b1182592.entry.js.map +0 -1
- package/dist/tessera-ui/p-b3f60955.entry.js.map +0 -1
- package/dist/tessera-ui/p-bb9ebbd8.entry.js.map +0 -1
- package/dist/tessera-ui/p-bce40715.entry.js.map +0 -1
- package/dist/tessera-ui/p-c35c7049.entry.js.map +0 -1
- package/dist/tessera-ui/p-c59ecffa.entry.js.map +0 -1
- package/dist/tessera-ui/p-d318774a.entry.js.map +0 -1
- package/dist/tessera-ui/p-d5cbadd6.entry.js.map +0 -1
- package/dist/tessera-ui/p-e1d2b141.entry.js.map +0 -1
- package/dist/tessera-ui/p-f0bf6408.entry.js.map +0 -1
- package/dist/tessera-ui/p-f639213a.entry.js.map +0 -1
- package/dist/tessera-ui/p-fd2376e0.entry.js.map +0 -1
- package/dist/tessera-ui/p-fef9a993.entry.js.map +0 -1
- package/dist/tessera-ui/p-lpqZSiIf.js.map +0 -1
- package/dist/tessera-ui/tessera-ui.esm.js.map +0 -1
- package/dist/types/components/accordion/accordion-item.stories.d.ts +0 -5
- package/dist/types/components/accordion/accordion.stories.d.ts +0 -21
- package/dist/types/components/alert/alert.stories.d.ts +0 -34
- package/dist/types/components/avatar/avatar.stories.d.ts +0 -51
- package/dist/types/components/badge/badge.stories.d.ts +0 -50
- package/dist/types/components/banner/banner.stories.d.ts +0 -40
- package/dist/types/components/breadcrumb/breadcrumb-item.stories.d.ts +0 -5
- package/dist/types/components/breadcrumb/breadcrumb.stories.d.ts +0 -20
- package/dist/types/components/button/button.stories.d.ts +0 -73
- package/dist/types/components/card/card.stories.d.ts +0 -46
- package/dist/types/components/checkbox/checkbox.stories.d.ts +0 -58
- package/dist/types/components/chip/chip.stories.d.ts +0 -54
- package/dist/types/components/container/container.stories.d.ts +0 -21
- package/dist/types/components/date-picker/date-picker.stories.d.ts +0 -62
- package/dist/types/components/dialog/dialog.stories.d.ts +0 -39
- package/dist/types/components/divider/divider.stories.d.ts +0 -33
- package/dist/types/components/drawer/drawer.stories.d.ts +0 -43
- package/dist/types/components/empty-state/empty-state.stories.d.ts +0 -37
- package/dist/types/components/file-upload/file-upload.stories.d.ts +0 -43
- package/dist/types/components/grid/grid.stories.d.ts +0 -30
- package/dist/types/components/icon/icon.stories.d.ts +0 -42
- package/dist/types/components/input/input.stories.d.ts +0 -77
- package/dist/types/components/menu/menu-item.stories.d.ts +0 -5
- package/dist/types/components/menu/menu.stories.d.ts +0 -36
- package/dist/types/components/modal/modal.stories.d.ts +0 -47
- package/dist/types/components/nav/nav-item.stories.d.ts +0 -5
- package/dist/types/components/nav/nav.stories.d.ts +0 -27
- package/dist/types/components/pagination/pagination.stories.d.ts +0 -42
- package/dist/types/components/popover/popover.stories.d.ts +0 -38
- package/dist/types/components/progress/progress.stories.d.ts +0 -59
- package/dist/types/components/radio/radio.stories.d.ts +0 -48
- package/dist/types/components/row/row.stories.d.ts +0 -52
- package/dist/types/components/select/select.stories.d.ts +0 -73
- package/dist/types/components/skeleton/skeleton.stories.d.ts +0 -44
- package/dist/types/components/slider/slider.stories.d.ts +0 -62
- package/dist/types/components/spacer/spacer.stories.d.ts +0 -28
- package/dist/types/components/spinner/spinner.stories.d.ts +0 -33
- package/dist/types/components/stack/stack.stories.d.ts +0 -28
- package/dist/types/components/stepper/step.stories.d.ts +0 -5
- package/dist/types/components/stepper/stepper.stories.d.ts +0 -36
- package/dist/types/components/switch-group/switch-group.stories.d.ts +0 -37
- package/dist/types/components/switch-group/switch-option.stories.d.ts +0 -5
- package/dist/types/components/table/table.stories.d.ts +0 -45
- package/dist/types/components/tabs/tab-panel.stories.d.ts +0 -5
- package/dist/types/components/tabs/tabs.stories.d.ts +0 -34
- package/dist/types/components/textarea/textarea.stories.d.ts +0 -88
- package/dist/types/components/toast/toast.stories.d.ts +0 -48
- package/dist/types/components/toggle/toggle.stories.d.ts +0 -46
- package/dist/types/components/toolbar/toolbar.stories.d.ts +0 -28
- package/dist/types/components/tooltip/tooltip.stories.d.ts +0 -43
- package/dist/types/components/tree/tree-item.stories.d.ts +0 -5
- package/dist/types/components/tree/tree.stories.d.ts +0 -21
|
@@ -1,151 +0,0 @@
|
|
|
1
|
-
// Hand-written stories for ts-input
|
|
2
|
-
export default {
|
|
3
|
-
title: 'Components/Input',
|
|
4
|
-
tags: ['autodocs'],
|
|
5
|
-
argTypes: {
|
|
6
|
-
value: { control: 'text', description: 'The input\'s value.' },
|
|
7
|
-
type: {
|
|
8
|
-
control: 'select',
|
|
9
|
-
options: ['text', 'email', 'password', 'number', 'tel', 'url', 'search'],
|
|
10
|
-
description: 'The input type.',
|
|
11
|
-
},
|
|
12
|
-
size: {
|
|
13
|
-
control: 'select',
|
|
14
|
-
options: ['xs', 'sm', 'md', 'lg', 'xl'],
|
|
15
|
-
description: 'The input\'s size.',
|
|
16
|
-
},
|
|
17
|
-
label: { control: 'text', description: 'Label text displayed above the input.' },
|
|
18
|
-
placeholder: { control: 'text', description: 'Placeholder text.' },
|
|
19
|
-
helpText: { control: 'text', description: 'Help text displayed below the input.' },
|
|
20
|
-
error: { control: 'text', description: 'Renders the input in an error state with an error message.' },
|
|
21
|
-
required: { control: 'boolean', description: 'Makes the input required.' },
|
|
22
|
-
disabled: { control: 'boolean', description: 'Renders the input as disabled.' },
|
|
23
|
-
readonly: { control: 'boolean', description: 'Renders the input as readonly.' },
|
|
24
|
-
maxlength: { control: 'number', description: 'Maximum character length.' },
|
|
25
|
-
name: { control: 'text', description: 'Name attribute for form submission.' },
|
|
26
|
-
},
|
|
27
|
-
};
|
|
28
|
-
const Template = (args) => {
|
|
29
|
-
const attrs = [];
|
|
30
|
-
if (args.value !== undefined && args.value !== null && args.value !== '')
|
|
31
|
-
attrs.push(`value="${args.value}"`);
|
|
32
|
-
if (args.type !== undefined && args.type !== null)
|
|
33
|
-
attrs.push(`type="${args.type}"`);
|
|
34
|
-
if (args.size !== undefined && args.size !== null)
|
|
35
|
-
attrs.push(`size="${args.size}"`);
|
|
36
|
-
if (args.label !== undefined && args.label !== null && args.label !== '')
|
|
37
|
-
attrs.push(`label="${args.label}"`);
|
|
38
|
-
if (args.placeholder !== undefined && args.placeholder !== null && args.placeholder !== '')
|
|
39
|
-
attrs.push(`placeholder="${args.placeholder}"`);
|
|
40
|
-
if (args.helpText !== undefined && args.helpText !== null && args.helpText !== '')
|
|
41
|
-
attrs.push(`help-text="${args.helpText}"`);
|
|
42
|
-
if (args.error !== undefined && args.error !== null && args.error !== '')
|
|
43
|
-
attrs.push(`error="${args.error}"`);
|
|
44
|
-
if (args.required)
|
|
45
|
-
attrs.push('required');
|
|
46
|
-
if (args.disabled)
|
|
47
|
-
attrs.push('disabled');
|
|
48
|
-
if (args.readonly)
|
|
49
|
-
attrs.push('readonly');
|
|
50
|
-
if (args.maxlength !== undefined && args.maxlength !== null)
|
|
51
|
-
attrs.push(`maxlength="${args.maxlength}"`);
|
|
52
|
-
if (args.name !== undefined && args.name !== null && args.name !== '')
|
|
53
|
-
attrs.push(`name="${args.name}"`);
|
|
54
|
-
return `<div style="max-width: 400px;"><ts-input ${attrs.join(' ')}></ts-input></div>`;
|
|
55
|
-
};
|
|
56
|
-
export const Default = Object.assign(Template.bind({}), {
|
|
57
|
-
args: {
|
|
58
|
-
value: '',
|
|
59
|
-
type: 'text',
|
|
60
|
-
size: 'md',
|
|
61
|
-
label: 'Full Name',
|
|
62
|
-
placeholder: 'Enter your full name',
|
|
63
|
-
helpText: 'As it appears on your government ID.',
|
|
64
|
-
disabled: false,
|
|
65
|
-
readonly: false,
|
|
66
|
-
required: false,
|
|
67
|
-
},
|
|
68
|
-
});
|
|
69
|
-
export const Sizes = () => `
|
|
70
|
-
<ts-stack gap="3" style="max-width: 400px;">
|
|
71
|
-
<ts-input size="xs" label="Extra Small" placeholder="xs input"></ts-input>
|
|
72
|
-
<ts-input size="sm" label="Small" placeholder="sm input"></ts-input>
|
|
73
|
-
<ts-input size="md" label="Medium" placeholder="md input"></ts-input>
|
|
74
|
-
<ts-input size="lg" label="Large" placeholder="lg input"></ts-input>
|
|
75
|
-
<ts-input size="xl" label="Extra Large" placeholder="xl input"></ts-input>
|
|
76
|
-
</ts-stack>
|
|
77
|
-
`;
|
|
78
|
-
export const Types = () => `
|
|
79
|
-
<ts-stack gap="3" style="max-width: 400px;">
|
|
80
|
-
<ts-input type="text" label="Username" placeholder="johndoe"></ts-input>
|
|
81
|
-
<ts-input type="email" label="Email Address" placeholder="john@example.com"></ts-input>
|
|
82
|
-
<ts-input type="password" label="Password" placeholder="Enter password"></ts-input>
|
|
83
|
-
<ts-input type="number" label="Quantity" placeholder="0"></ts-input>
|
|
84
|
-
<ts-input type="tel" label="Phone Number" placeholder="+1 (555) 000-0000"></ts-input>
|
|
85
|
-
<ts-input type="url" label="Website" placeholder="https://example.com"></ts-input>
|
|
86
|
-
<ts-input type="search" label="Search" placeholder="Search products..."></ts-input>
|
|
87
|
-
</ts-stack>
|
|
88
|
-
`;
|
|
89
|
-
export const States = () => `
|
|
90
|
-
<ts-stack gap="3" style="max-width: 400px;">
|
|
91
|
-
<ts-input label="Default" placeholder="Editable input"></ts-input>
|
|
92
|
-
<ts-input label="With Value" value="jane@example.com" placeholder="Email"></ts-input>
|
|
93
|
-
<ts-input label="Disabled" placeholder="Cannot edit" disabled></ts-input>
|
|
94
|
-
<ts-input label="Read Only" value="Read-only content" readonly></ts-input>
|
|
95
|
-
<ts-input label="Required" placeholder="This field is required" required></ts-input>
|
|
96
|
-
<ts-input label="With Help Text" placeholder="Choose a username" help-text="Must be 3-20 characters, letters and numbers only."></ts-input>
|
|
97
|
-
<ts-input label="Error State" value="invalid-email" error="Please enter a valid email address."></ts-input>
|
|
98
|
-
</ts-stack>
|
|
99
|
-
`;
|
|
100
|
-
export const WithIcons = () => `
|
|
101
|
-
<ts-stack gap="3" style="max-width: 400px;">
|
|
102
|
-
<ts-input label="Search" placeholder="Search files...">
|
|
103
|
-
<ts-icon slot="prefix" name="search" size="sm"></ts-icon>
|
|
104
|
-
</ts-input>
|
|
105
|
-
<ts-input label="Email" placeholder="you@company.com">
|
|
106
|
-
<ts-icon slot="prefix" name="mail" size="sm"></ts-icon>
|
|
107
|
-
</ts-input>
|
|
108
|
-
<ts-input label="Website" placeholder="https://example.com">
|
|
109
|
-
<ts-icon slot="prefix" name="globe" size="sm"></ts-icon>
|
|
110
|
-
</ts-input>
|
|
111
|
-
<ts-input label="Amount" placeholder="0.00">
|
|
112
|
-
<span slot="prefix" style="font-weight: 600; color: var(--ts-color-text-secondary); padding-left: 4px;">$</span>
|
|
113
|
-
<span slot="suffix" style="color: var(--ts-color-text-secondary); padding-right: 4px;">USD</span>
|
|
114
|
-
</ts-input>
|
|
115
|
-
<ts-input label="Password" type="password" placeholder="Enter password">
|
|
116
|
-
<ts-icon slot="prefix" name="lock" size="sm"></ts-icon>
|
|
117
|
-
<ts-icon slot="suffix" name="eye" size="sm"></ts-icon>
|
|
118
|
-
</ts-input>
|
|
119
|
-
</ts-stack>
|
|
120
|
-
`;
|
|
121
|
-
export const Composition = () => `
|
|
122
|
-
<ts-stack gap="4" style="max-width: 400px;">
|
|
123
|
-
<ts-card bordered padding="lg">
|
|
124
|
-
<span slot="header"><h3 style="margin: 0;">Sign In</h3></span>
|
|
125
|
-
<ts-stack gap="3">
|
|
126
|
-
<ts-input label="Email" type="email" placeholder="john@example.com" required>
|
|
127
|
-
<ts-icon slot="prefix" name="mail" size="sm"></ts-icon>
|
|
128
|
-
</ts-input>
|
|
129
|
-
<ts-input label="Password" type="password" placeholder="Enter your password" required>
|
|
130
|
-
<ts-icon slot="prefix" name="lock" size="sm"></ts-icon>
|
|
131
|
-
</ts-input>
|
|
132
|
-
</ts-stack>
|
|
133
|
-
<span slot="footer">
|
|
134
|
-
<ts-stack gap="2" style="padding-top: 8px;">
|
|
135
|
-
<ts-button block variant="primary">Sign In</ts-button>
|
|
136
|
-
<ts-button appearance="link" variant="primary">Forgot your password?</ts-button>
|
|
137
|
-
</ts-stack>
|
|
138
|
-
</span>
|
|
139
|
-
</ts-card>
|
|
140
|
-
|
|
141
|
-
<ts-row gap="2" align="end">
|
|
142
|
-
<div style="flex: 1;">
|
|
143
|
-
<ts-input placeholder="Enter invite code" label="Invite Code">
|
|
144
|
-
<ts-icon slot="prefix" name="ticket" size="sm"></ts-icon>
|
|
145
|
-
</ts-input>
|
|
146
|
-
</div>
|
|
147
|
-
<ts-button variant="primary">Redeem</ts-button>
|
|
148
|
-
</ts-row>
|
|
149
|
-
</ts-stack>
|
|
150
|
-
`;
|
|
151
|
-
//# sourceMappingURL=input.stories.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"input.stories.js","sourceRoot":"","sources":["../../../src/components/input/input.stories.ts"],"names":[],"mappings":"AAAA,oCAAoC;AAEpC,eAAe;IACb,KAAK,EAAE,kBAAkB;IACzB,IAAI,EAAE,CAAC,UAAU,CAAC;IAClB,QAAQ,EAAE;QACR,KAAK,EAAE,EAAE,OAAO,EAAE,MAAM,EAAE,WAAW,EAAE,qBAAqB,EAAE;QAC9D,IAAI,EAAE;YACJ,OAAO,EAAE,QAAQ;YACjB,OAAO,EAAE,CAAC,MAAM,EAAE,OAAO,EAAE,UAAU,EAAE,QAAQ,EAAE,KAAK,EAAE,KAAK,EAAE,QAAQ,CAAC;YACxE,WAAW,EAAE,iBAAiB;SAC/B;QACD,IAAI,EAAE;YACJ,OAAO,EAAE,QAAQ;YACjB,OAAO,EAAE,CAAC,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,CAAC;YACvC,WAAW,EAAE,oBAAoB;SAClC;QACD,KAAK,EAAE,EAAE,OAAO,EAAE,MAAM,EAAE,WAAW,EAAE,uCAAuC,EAAE;QAChF,WAAW,EAAE,EAAE,OAAO,EAAE,MAAM,EAAE,WAAW,EAAE,mBAAmB,EAAE;QAClE,QAAQ,EAAE,EAAE,OAAO,EAAE,MAAM,EAAE,WAAW,EAAE,sCAAsC,EAAE;QAClF,KAAK,EAAE,EAAE,OAAO,EAAE,MAAM,EAAE,WAAW,EAAE,4DAA4D,EAAE;QACrG,QAAQ,EAAE,EAAE,OAAO,EAAE,SAAS,EAAE,WAAW,EAAE,2BAA2B,EAAE;QAC1E,QAAQ,EAAE,EAAE,OAAO,EAAE,SAAS,EAAE,WAAW,EAAE,gCAAgC,EAAE;QAC/E,QAAQ,EAAE,EAAE,OAAO,EAAE,SAAS,EAAE,WAAW,EAAE,gCAAgC,EAAE;QAC/E,SAAS,EAAE,EAAE,OAAO,EAAE,QAAQ,EAAE,WAAW,EAAE,2BAA2B,EAAE;QAC1E,IAAI,EAAE,EAAE,OAAO,EAAE,MAAM,EAAE,WAAW,EAAE,qCAAqC,EAAE;KAC9E;CACF,CAAC;AAEF,MAAM,QAAQ,GAAG,CAAC,IAA6B,EAAU,EAAE;IACzD,MAAM,KAAK,GAAa,EAAE,CAAC;IAC3B,IAAI,IAAI,CAAC,KAAK,KAAK,SAAS,IAAI,IAAI,CAAC,KAAK,KAAK,IAAI,IAAI,IAAI,CAAC,KAAK,KAAK,EAAE;QAAE,KAAK,CAAC,IAAI,CAAC,UAAU,IAAI,CAAC,KAAK,GAAG,CAAC,CAAC;IAC9G,IAAI,IAAI,CAAC,IAAI,KAAK,SAAS,IAAI,IAAI,CAAC,IAAI,KAAK,IAAI;QAAE,KAAK,CAAC,IAAI,CAAC,SAAS,IAAI,CAAC,IAAI,GAAG,CAAC,CAAC;IACrF,IAAI,IAAI,CAAC,IAAI,KAAK,SAAS,IAAI,IAAI,CAAC,IAAI,KAAK,IAAI;QAAE,KAAK,CAAC,IAAI,CAAC,SAAS,IAAI,CAAC,IAAI,GAAG,CAAC,CAAC;IACrF,IAAI,IAAI,CAAC,KAAK,KAAK,SAAS,IAAI,IAAI,CAAC,KAAK,KAAK,IAAI,IAAI,IAAI,CAAC,KAAK,KAAK,EAAE;QAAE,KAAK,CAAC,IAAI,CAAC,UAAU,IAAI,CAAC,KAAK,GAAG,CAAC,CAAC;IAC9G,IAAI,IAAI,CAAC,WAAW,KAAK,SAAS,IAAI,IAAI,CAAC,WAAW,KAAK,IAAI,IAAI,IAAI,CAAC,WAAW,KAAK,EAAE;QAAE,KAAK,CAAC,IAAI,CAAC,gBAAgB,IAAI,CAAC,WAAW,GAAG,CAAC,CAAC;IAC5I,IAAI,IAAI,CAAC,QAAQ,KAAK,SAAS,IAAI,IAAI,CAAC,QAAQ,KAAK,IAAI,IAAI,IAAI,CAAC,QAAQ,KAAK,EAAE;QAAE,KAAK,CAAC,IAAI,CAAC,cAAc,IAAI,CAAC,QAAQ,GAAG,CAAC,CAAC;IAC9H,IAAI,IAAI,CAAC,KAAK,KAAK,SAAS,IAAI,IAAI,CAAC,KAAK,KAAK,IAAI,IAAI,IAAI,CAAC,KAAK,KAAK,EAAE;QAAE,KAAK,CAAC,IAAI,CAAC,UAAU,IAAI,CAAC,KAAK,GAAG,CAAC,CAAC;IAC9G,IAAI,IAAI,CAAC,QAAQ;QAAE,KAAK,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;IAC1C,IAAI,IAAI,CAAC,QAAQ;QAAE,KAAK,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;IAC1C,IAAI,IAAI,CAAC,QAAQ;QAAE,KAAK,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;IAC1C,IAAI,IAAI,CAAC,SAAS,KAAK,SAAS,IAAI,IAAI,CAAC,SAAS,KAAK,IAAI;QAAE,KAAK,CAAC,IAAI,CAAC,cAAc,IAAI,CAAC,SAAS,GAAG,CAAC,CAAC;IACzG,IAAI,IAAI,CAAC,IAAI,KAAK,SAAS,IAAI,IAAI,CAAC,IAAI,KAAK,IAAI,IAAI,IAAI,CAAC,IAAI,KAAK,EAAE;QAAE,KAAK,CAAC,IAAI,CAAC,SAAS,IAAI,CAAC,IAAI,GAAG,CAAC,CAAC;IACzG,OAAO,4CAA4C,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,oBAAoB,CAAC;AACzF,CAAC,CAAC;AAEF,MAAM,CAAC,MAAM,OAAO,GAAG,MAAM,CAAC,MAAM,CAAC,QAAQ,CAAC,IAAI,CAAC,EAAE,CAAwD,EAAE;IAC7G,IAAI,EAAE;QACJ,KAAK,EAAE,EAAE;QACT,IAAI,EAAE,MAAM;QACZ,IAAI,EAAE,IAAI;QACV,KAAK,EAAE,WAAW;QAClB,WAAW,EAAE,sBAAsB;QACnC,QAAQ,EAAE,sCAAsC;QAChD,QAAQ,EAAE,KAAK;QACf,QAAQ,EAAE,KAAK;QACf,QAAQ,EAAE,KAAK;KAChB;CACF,CAAC,CAAC;AAEH,MAAM,CAAC,MAAM,KAAK,GAAG,GAAW,EAAE,CAAC;;;;;;;;CAQlC,CAAC;AAEF,MAAM,CAAC,MAAM,KAAK,GAAG,GAAW,EAAE,CAAC;;;;;;;;;;CAUlC,CAAC;AAEF,MAAM,CAAC,MAAM,MAAM,GAAG,GAAW,EAAE,CAAC;;;;;;;;;;CAUnC,CAAC;AAEF,MAAM,CAAC,MAAM,SAAS,GAAG,GAAW,EAAE,CAAC;;;;;;;;;;;;;;;;;;;;CAoBtC,CAAC;AAEF,MAAM,CAAC,MAAM,WAAW,GAAG,GAAW,EAAE,CAAC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CA6BxC,CAAC","sourcesContent":["// Hand-written stories for ts-input\n\nexport default {\n title: 'Components/Input',\n tags: ['autodocs'],\n argTypes: {\n value: { control: 'text', description: 'The input\\'s value.' },\n type: {\n control: 'select',\n options: ['text', 'email', 'password', 'number', 'tel', 'url', 'search'],\n description: 'The input type.',\n },\n size: {\n control: 'select',\n options: ['xs', 'sm', 'md', 'lg', 'xl'],\n description: 'The input\\'s size.',\n },\n label: { control: 'text', description: 'Label text displayed above the input.' },\n placeholder: { control: 'text', description: 'Placeholder text.' },\n helpText: { control: 'text', description: 'Help text displayed below the input.' },\n error: { control: 'text', description: 'Renders the input in an error state with an error message.' },\n required: { control: 'boolean', description: 'Makes the input required.' },\n disabled: { control: 'boolean', description: 'Renders the input as disabled.' },\n readonly: { control: 'boolean', description: 'Renders the input as readonly.' },\n maxlength: { control: 'number', description: 'Maximum character length.' },\n name: { control: 'text', description: 'Name attribute for form submission.' },\n },\n};\n\nconst Template = (args: Record<string, unknown>): string => {\n const attrs: string[] = [];\n if (args.value !== undefined && args.value !== null && args.value !== '') attrs.push(`value=\"${args.value}\"`);\n if (args.type !== undefined && args.type !== null) attrs.push(`type=\"${args.type}\"`);\n if (args.size !== undefined && args.size !== null) attrs.push(`size=\"${args.size}\"`);\n if (args.label !== undefined && args.label !== null && args.label !== '') attrs.push(`label=\"${args.label}\"`);\n if (args.placeholder !== undefined && args.placeholder !== null && args.placeholder !== '') attrs.push(`placeholder=\"${args.placeholder}\"`);\n if (args.helpText !== undefined && args.helpText !== null && args.helpText !== '') attrs.push(`help-text=\"${args.helpText}\"`);\n if (args.error !== undefined && args.error !== null && args.error !== '') attrs.push(`error=\"${args.error}\"`);\n if (args.required) attrs.push('required');\n if (args.disabled) attrs.push('disabled');\n if (args.readonly) attrs.push('readonly');\n if (args.maxlength !== undefined && args.maxlength !== null) attrs.push(`maxlength=\"${args.maxlength}\"`);\n if (args.name !== undefined && args.name !== null && args.name !== '') attrs.push(`name=\"${args.name}\"`);\n return `<div style=\"max-width: 400px;\"><ts-input ${attrs.join(' ')}></ts-input></div>`;\n};\n\nexport const Default = Object.assign(Template.bind({}) as typeof Template & { args: Record<string, unknown> }, {\n args: {\n value: '',\n type: 'text',\n size: 'md',\n label: 'Full Name',\n placeholder: 'Enter your full name',\n helpText: 'As it appears on your government ID.',\n disabled: false,\n readonly: false,\n required: false,\n },\n});\n\nexport const Sizes = (): string => `\n <ts-stack gap=\"3\" style=\"max-width: 400px;\">\n <ts-input size=\"xs\" label=\"Extra Small\" placeholder=\"xs input\"></ts-input>\n <ts-input size=\"sm\" label=\"Small\" placeholder=\"sm input\"></ts-input>\n <ts-input size=\"md\" label=\"Medium\" placeholder=\"md input\"></ts-input>\n <ts-input size=\"lg\" label=\"Large\" placeholder=\"lg input\"></ts-input>\n <ts-input size=\"xl\" label=\"Extra Large\" placeholder=\"xl input\"></ts-input>\n </ts-stack>\n`;\n\nexport const Types = (): string => `\n <ts-stack gap=\"3\" style=\"max-width: 400px;\">\n <ts-input type=\"text\" label=\"Username\" placeholder=\"johndoe\"></ts-input>\n <ts-input type=\"email\" label=\"Email Address\" placeholder=\"john@example.com\"></ts-input>\n <ts-input type=\"password\" label=\"Password\" placeholder=\"Enter password\"></ts-input>\n <ts-input type=\"number\" label=\"Quantity\" placeholder=\"0\"></ts-input>\n <ts-input type=\"tel\" label=\"Phone Number\" placeholder=\"+1 (555) 000-0000\"></ts-input>\n <ts-input type=\"url\" label=\"Website\" placeholder=\"https://example.com\"></ts-input>\n <ts-input type=\"search\" label=\"Search\" placeholder=\"Search products...\"></ts-input>\n </ts-stack>\n`;\n\nexport const States = (): string => `\n <ts-stack gap=\"3\" style=\"max-width: 400px;\">\n <ts-input label=\"Default\" placeholder=\"Editable input\"></ts-input>\n <ts-input label=\"With Value\" value=\"jane@example.com\" placeholder=\"Email\"></ts-input>\n <ts-input label=\"Disabled\" placeholder=\"Cannot edit\" disabled></ts-input>\n <ts-input label=\"Read Only\" value=\"Read-only content\" readonly></ts-input>\n <ts-input label=\"Required\" placeholder=\"This field is required\" required></ts-input>\n <ts-input label=\"With Help Text\" placeholder=\"Choose a username\" help-text=\"Must be 3-20 characters, letters and numbers only.\"></ts-input>\n <ts-input label=\"Error State\" value=\"invalid-email\" error=\"Please enter a valid email address.\"></ts-input>\n </ts-stack>\n`;\n\nexport const WithIcons = (): string => `\n <ts-stack gap=\"3\" style=\"max-width: 400px;\">\n <ts-input label=\"Search\" placeholder=\"Search files...\">\n <ts-icon slot=\"prefix\" name=\"search\" size=\"sm\"></ts-icon>\n </ts-input>\n <ts-input label=\"Email\" placeholder=\"you@company.com\">\n <ts-icon slot=\"prefix\" name=\"mail\" size=\"sm\"></ts-icon>\n </ts-input>\n <ts-input label=\"Website\" placeholder=\"https://example.com\">\n <ts-icon slot=\"prefix\" name=\"globe\" size=\"sm\"></ts-icon>\n </ts-input>\n <ts-input label=\"Amount\" placeholder=\"0.00\">\n <span slot=\"prefix\" style=\"font-weight: 600; color: var(--ts-color-text-secondary); padding-left: 4px;\">$</span>\n <span slot=\"suffix\" style=\"color: var(--ts-color-text-secondary); padding-right: 4px;\">USD</span>\n </ts-input>\n <ts-input label=\"Password\" type=\"password\" placeholder=\"Enter password\">\n <ts-icon slot=\"prefix\" name=\"lock\" size=\"sm\"></ts-icon>\n <ts-icon slot=\"suffix\" name=\"eye\" size=\"sm\"></ts-icon>\n </ts-input>\n </ts-stack>\n`;\n\nexport const Composition = (): string => `\n <ts-stack gap=\"4\" style=\"max-width: 400px;\">\n <ts-card bordered padding=\"lg\">\n <span slot=\"header\"><h3 style=\"margin: 0;\">Sign In</h3></span>\n <ts-stack gap=\"3\">\n <ts-input label=\"Email\" type=\"email\" placeholder=\"john@example.com\" required>\n <ts-icon slot=\"prefix\" name=\"mail\" size=\"sm\"></ts-icon>\n </ts-input>\n <ts-input label=\"Password\" type=\"password\" placeholder=\"Enter your password\" required>\n <ts-icon slot=\"prefix\" name=\"lock\" size=\"sm\"></ts-icon>\n </ts-input>\n </ts-stack>\n <span slot=\"footer\">\n <ts-stack gap=\"2\" style=\"padding-top: 8px;\">\n <ts-button block variant=\"primary\">Sign In</ts-button>\n <ts-button appearance=\"link\" variant=\"primary\">Forgot your password?</ts-button>\n </ts-stack>\n </span>\n </ts-card>\n\n <ts-row gap=\"2\" align=\"end\">\n <div style=\"flex: 1;\">\n <ts-input placeholder=\"Enter invite code\" label=\"Invite Code\">\n <ts-icon slot=\"prefix\" name=\"ticket\" size=\"sm\"></ts-icon>\n </ts-input>\n </div>\n <ts-button variant=\"primary\">Redeem</ts-button>\n </ts-row>\n </ts-stack>\n`;\n"]}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"menu-item.js","sourceRoot":"","sources":["../../../src/components/menu/menu-item.tsx"],"names":[],"mappings":"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","sourcesContent":["import { Component, Prop, Event, h, Host, Element, Method } from '@stencil/core';\nimport type { EventEmitter } from '@stencil/core';\n\n/**\n * @slot - Default slot for menu item label content.\n * @slot prefix - Content before the label (e.g., icon).\n * @slot suffix - Content after the label (e.g., shortcut or badge).\n *\n * @part base - The menu item container element.\n * @part prefix - The prefix slot wrapper.\n * @part label - The label wrapper.\n * @part suffix - The suffix slot wrapper.\n */\n@Component({\n tag: 'ts-menu-item',\n styleUrl: 'menu-item.css',\n shadow: true,\n})\nexport class TsMenuItem {\n @Element() hostEl!: HTMLElement;\n\n /** Disables the menu item. */\n @Prop({ reflect: true }) disabled = false;\n\n /** The value associated with this menu item. */\n @Prop({ reflect: true }) value = '';\n\n /** If provided, renders the item as a link. */\n @Prop() href?: string;\n\n /** Emitted when the menu item is selected. */\n @Event({ eventName: 'tsSelect' }) tsSelect!: EventEmitter<{ value: string }>;\n\n private baseEl?: HTMLElement;\n\n /** Focus the menu item. */\n @Method()\n async setFocus(): Promise<void> {\n this.baseEl?.focus();\n }\n\n connectedCallback(): void {\n // Allow the host element to delegate focus to the inner element\n this.hostEl.addEventListener('focus', () => {\n this.baseEl?.focus();\n });\n }\n\n private handleClick = (): void => {\n if (this.disabled) return;\n this.tsSelect.emit({ value: this.value });\n };\n\n private handleKeydown = (event: KeyboardEvent): void => {\n if (this.disabled) return;\n if (event.key === 'Enter' || event.key === ' ') {\n event.preventDefault();\n this.tsSelect.emit({ value: this.value });\n }\n };\n\n // eslint-disable-next-line @typescript-eslint/explicit-function-return-type\n render() {\n const isLink = !!this.href;\n const Tag = isLink ? 'a' : 'div';\n\n const linkAttrs = isLink\n ? {\n href: this.disabled ? undefined : this.href,\n }\n : {};\n\n return (\n <Host\n class={{\n 'ts-menu-item': true,\n 'ts-menu-item--disabled': this.disabled,\n }}\n >\n <Tag\n {...linkAttrs}\n ref={(el) => (this.baseEl = el as HTMLElement)}\n class=\"menu-item__base\"\n part=\"base\"\n role=\"menuitem\"\n tabindex={this.disabled ? -1 : 0}\n aria-disabled={this.disabled ? 'true' : undefined}\n onClick={this.handleClick}\n onKeyDown={this.handleKeydown}\n >\n <span class=\"menu-item__prefix\" part=\"prefix\">\n <slot name=\"prefix\" />\n </span>\n\n <span class=\"menu-item__label\" part=\"label\">\n <slot />\n </span>\n\n <span class=\"menu-item__suffix\" part=\"suffix\">\n <slot name=\"suffix\" />\n </span>\n </Tag>\n </Host>\n );\n }\n}\n"]}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"menu-item.stories.js","sourceRoot":"","sources":["../../../src/components/menu/menu-item.stories.ts"],"names":[],"mappings":"AAAA,sEAAsE;AACtE,mDAAmD;AAEnD,eAAe,EAAE,KAAK,EAAE,oBAAoB,EAAE,IAAI,EAAE,CAAC,WAAW,CAAC,EAAE,CAAC","sourcesContent":["// Stories for ts-menu-item are in the parent component's stories file\n// This file exists only to prevent auto-generation\n\nexport default { title: 'Internal/menu-item', tags: ['!autodocs'] };\n"]}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"menu.js","sourceRoot":"","sources":["../../../src/components/menu/menu.tsx"],"names":[],"mappings":"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","sourcesContent":["import { Component, Prop, State, Event, h, Host, Element, Watch, Listen } from '@stencil/core';\nimport type { EventEmitter } from '@stencil/core';\nimport { generateId } from '../../utils/aria';\n\nexport type TsMenuPlacement = 'bottom-start' | 'bottom-end' | 'top-start' | 'top-end';\n\nexport type TsMenuTrigger = 'click' | 'hover';\n\n/**\n * @slot trigger - The element that opens the menu (e.g., a button).\n * @slot - Default slot for ts-menu-item children.\n *\n * @part panel - The dropdown panel container.\n */\n@Component({\n tag: 'ts-menu',\n styleUrl: 'menu.css',\n shadow: true,\n})\nexport class TsMenu {\n @Element() hostEl!: HTMLElement;\n\n private menuId = generateId('ts-menu');\n private triggerEl?: HTMLElement;\n\n /** Whether the menu dropdown is open. */\n @Prop({ mutable: true, reflect: true }) open = false;\n\n /** How the menu is triggered. */\n @Prop({ reflect: true }) trigger: TsMenuTrigger = 'click';\n\n /** Placement of the dropdown relative to the trigger. */\n @Prop({ reflect: true }) placement: TsMenuPlacement = 'bottom-start';\n\n /** Emitted when the menu opens. */\n @Event({ eventName: 'tsOpen' }) tsOpen!: EventEmitter<void>;\n\n /** Emitted when the menu closes. */\n @Event({ eventName: 'tsClose' }) tsClose!: EventEmitter<void>;\n\n /** Tracks the currently focused item index for keyboard navigation. */\n @State() focusedIndex = -1;\n\n @Watch('open')\n handleOpenChange(isOpen: boolean): void {\n if (isOpen) {\n this.tsOpen.emit();\n requestAnimationFrame(() => {\n this.focusFirstItem();\n });\n } else {\n this.focusedIndex = -1;\n this.tsClose.emit();\n }\n }\n\n @Listen('click', { target: 'document' })\n handleDocumentClick(event: MouseEvent): void {\n if (this.open && !this.hostEl.contains(event.target as Node)) {\n this.open = false;\n }\n }\n\n @Listen('tsSelect')\n handleItemSelect(): void {\n this.open = false;\n this.triggerEl?.focus();\n }\n\n @Listen('keydown')\n handleKeydown(event: KeyboardEvent): void {\n if (!this.open) return;\n\n const items = this.getMenuItems();\n if (items.length === 0) return;\n\n switch (event.key) {\n case 'ArrowDown': {\n event.preventDefault();\n this.focusedIndex = (this.focusedIndex + 1) % items.length;\n this.focusItem(items[this.focusedIndex]);\n break;\n }\n case 'ArrowUp': {\n event.preventDefault();\n this.focusedIndex = this.focusedIndex <= 0 ? items.length - 1 : this.focusedIndex - 1;\n this.focusItem(items[this.focusedIndex]);\n break;\n }\n case 'Home': {\n event.preventDefault();\n this.focusedIndex = 0;\n this.focusItem(items[0]);\n break;\n }\n case 'End': {\n event.preventDefault();\n this.focusedIndex = items.length - 1;\n this.focusItem(items[this.focusedIndex]);\n break;\n }\n case 'Escape': {\n event.preventDefault();\n this.open = false;\n this.triggerEl?.focus();\n break;\n }\n case 'Tab': {\n this.open = false;\n break;\n }\n }\n }\n\n private getMenuItems(): HTMLElement[] {\n return Array.from(this.hostEl.querySelectorAll<HTMLElement>('ts-menu-item:not([disabled])'));\n }\n\n private focusItem(el: HTMLElement): void {\n const item = el as HTMLElement & { setFocus?: () => Promise<void> };\n if (typeof item.setFocus === 'function') {\n item.setFocus();\n } else {\n el.focus();\n }\n }\n\n private focusFirstItem(): void {\n const items = this.getMenuItems();\n if (items.length > 0) {\n this.focusedIndex = 0;\n this.focusItem(items[0]);\n }\n }\n\n private handleTriggerClick = (): void => {\n if (this.trigger === 'click') {\n this.open = !this.open;\n }\n };\n\n private handleTriggerKeydown = (event: KeyboardEvent): void => {\n if (event.key === 'ArrowDown' || event.key === 'Enter' || event.key === ' ') {\n event.preventDefault();\n this.open = true;\n }\n };\n\n private handleMouseEnter = (): void => {\n if (this.trigger === 'hover') {\n this.open = true;\n }\n };\n\n private handleMouseLeave = (): void => {\n if (this.trigger === 'hover') {\n this.open = false;\n }\n };\n\n // eslint-disable-next-line @typescript-eslint/explicit-function-return-type\n render() {\n return (\n <Host\n class={{\n 'ts-menu': true,\n 'ts-menu--open': this.open,\n }}\n onMouseEnter={this.handleMouseEnter}\n onMouseLeave={this.handleMouseLeave}\n >\n <div\n class=\"menu__trigger\"\n ref={(el) => (this.triggerEl = el)}\n onClick={this.handleTriggerClick}\n onKeyDown={this.handleTriggerKeydown}\n aria-haspopup=\"true\"\n aria-expanded={this.open ? 'true' : 'false'}\n aria-controls={this.menuId}\n >\n <slot name=\"trigger\" />\n </div>\n\n <div\n class={{\n 'menu__panel': true,\n 'menu__panel--open': this.open,\n [`menu__panel--${this.placement}`]: true,\n }}\n part=\"panel\"\n id={this.menuId}\n role=\"menu\"\n aria-hidden={!this.open ? 'true' : undefined}\n >\n <slot />\n </div>\n </Host>\n );\n }\n}\n"]}
|
|
@@ -1,126 +0,0 @@
|
|
|
1
|
-
// Hand-written stories for ts-menu
|
|
2
|
-
export default {
|
|
3
|
-
title: 'Components/Menu',
|
|
4
|
-
tags: ['autodocs'],
|
|
5
|
-
argTypes: {
|
|
6
|
-
open: { control: 'boolean', description: 'Whether the menu dropdown is open.' },
|
|
7
|
-
trigger: {
|
|
8
|
-
control: 'select',
|
|
9
|
-
options: ['click', 'hover'],
|
|
10
|
-
description: 'How the menu is triggered.',
|
|
11
|
-
},
|
|
12
|
-
placement: {
|
|
13
|
-
control: 'select',
|
|
14
|
-
options: ['bottom-start', 'bottom-end', 'top-start', 'top-end'],
|
|
15
|
-
description: 'Placement of the dropdown relative to the trigger.',
|
|
16
|
-
},
|
|
17
|
-
},
|
|
18
|
-
};
|
|
19
|
-
const Template = (args) => {
|
|
20
|
-
const attrs = [];
|
|
21
|
-
if (args.open)
|
|
22
|
-
attrs.push('open');
|
|
23
|
-
if (args.trigger !== undefined && args.trigger !== null)
|
|
24
|
-
attrs.push(`trigger="${args.trigger}"`);
|
|
25
|
-
if (args.placement !== undefined && args.placement !== null)
|
|
26
|
-
attrs.push(`placement="${args.placement}"`);
|
|
27
|
-
return `
|
|
28
|
-
<ts-menu ${attrs.join(' ')}>
|
|
29
|
-
<ts-button slot="trigger">Actions</ts-button>
|
|
30
|
-
<ts-menu-item value="edit">Edit</ts-menu-item>
|
|
31
|
-
<ts-menu-item value="duplicate">Duplicate</ts-menu-item>
|
|
32
|
-
<ts-menu-item value="archive">Archive</ts-menu-item>
|
|
33
|
-
<ts-menu-item value="delete">Delete</ts-menu-item>
|
|
34
|
-
</ts-menu>
|
|
35
|
-
`;
|
|
36
|
-
};
|
|
37
|
-
export const Default = Object.assign(Template.bind({}), {
|
|
38
|
-
args: {
|
|
39
|
-
open: false,
|
|
40
|
-
trigger: 'click',
|
|
41
|
-
placement: 'bottom-start',
|
|
42
|
-
},
|
|
43
|
-
});
|
|
44
|
-
export const Placements = () => `
|
|
45
|
-
<div style="display: flex; gap: 24px; flex-wrap: wrap; padding: 80px 20px;">
|
|
46
|
-
<ts-menu placement="bottom-start">
|
|
47
|
-
<ts-button slot="trigger">Bottom Start</ts-button>
|
|
48
|
-
<ts-menu-item value="one">Option One</ts-menu-item>
|
|
49
|
-
<ts-menu-item value="two">Option Two</ts-menu-item>
|
|
50
|
-
<ts-menu-item value="three">Option Three</ts-menu-item>
|
|
51
|
-
</ts-menu>
|
|
52
|
-
<ts-menu placement="bottom-end">
|
|
53
|
-
<ts-button slot="trigger">Bottom End</ts-button>
|
|
54
|
-
<ts-menu-item value="one">Option One</ts-menu-item>
|
|
55
|
-
<ts-menu-item value="two">Option Two</ts-menu-item>
|
|
56
|
-
<ts-menu-item value="three">Option Three</ts-menu-item>
|
|
57
|
-
</ts-menu>
|
|
58
|
-
<ts-menu placement="top-start">
|
|
59
|
-
<ts-button slot="trigger">Top Start</ts-button>
|
|
60
|
-
<ts-menu-item value="one">Option One</ts-menu-item>
|
|
61
|
-
<ts-menu-item value="two">Option Two</ts-menu-item>
|
|
62
|
-
<ts-menu-item value="three">Option Three</ts-menu-item>
|
|
63
|
-
</ts-menu>
|
|
64
|
-
<ts-menu placement="top-end">
|
|
65
|
-
<ts-button slot="trigger">Top End</ts-button>
|
|
66
|
-
<ts-menu-item value="one">Option One</ts-menu-item>
|
|
67
|
-
<ts-menu-item value="two">Option Two</ts-menu-item>
|
|
68
|
-
<ts-menu-item value="three">Option Three</ts-menu-item>
|
|
69
|
-
</ts-menu>
|
|
70
|
-
</div>
|
|
71
|
-
`;
|
|
72
|
-
export const WithDisabledItems = () => `
|
|
73
|
-
<ts-menu>
|
|
74
|
-
<ts-button slot="trigger">File Actions</ts-button>
|
|
75
|
-
<ts-menu-item value="edit">Edit</ts-menu-item>
|
|
76
|
-
<ts-menu-item value="duplicate">Duplicate</ts-menu-item>
|
|
77
|
-
<ts-menu-item value="move" disabled>Move (no permission)</ts-menu-item>
|
|
78
|
-
<ts-menu-item value="archive">Archive</ts-menu-item>
|
|
79
|
-
<ts-menu-item value="delete" disabled>Delete (locked)</ts-menu-item>
|
|
80
|
-
</ts-menu>
|
|
81
|
-
`;
|
|
82
|
-
export const HoverTrigger = () => `
|
|
83
|
-
<ts-menu trigger="hover">
|
|
84
|
-
<ts-button slot="trigger">Hover Me</ts-button>
|
|
85
|
-
<ts-menu-item value="profile">Profile</ts-menu-item>
|
|
86
|
-
<ts-menu-item value="settings">Settings</ts-menu-item>
|
|
87
|
-
<ts-menu-item value="help">Help Center</ts-menu-item>
|
|
88
|
-
<ts-menu-item value="logout">Log Out</ts-menu-item>
|
|
89
|
-
</ts-menu>
|
|
90
|
-
`;
|
|
91
|
-
export const WithLinks = () => `
|
|
92
|
-
<ts-menu>
|
|
93
|
-
<ts-button slot="trigger">Navigate</ts-button>
|
|
94
|
-
<ts-menu-item value="docs" href="https://example.com/docs">Documentation</ts-menu-item>
|
|
95
|
-
<ts-menu-item value="api" href="https://example.com/api">API Reference</ts-menu-item>
|
|
96
|
-
<ts-menu-item value="changelog" href="https://example.com/changelog">Changelog</ts-menu-item>
|
|
97
|
-
<ts-menu-item value="support" href="https://example.com/support">Support</ts-menu-item>
|
|
98
|
-
</ts-menu>
|
|
99
|
-
`;
|
|
100
|
-
export const ContextMenu = () => `
|
|
101
|
-
<div style="display: flex; gap: 16px;">
|
|
102
|
-
<ts-menu placement="bottom-end">
|
|
103
|
-
<ts-button slot="trigger" appearance="ghost" size="sm">...</ts-button>
|
|
104
|
-
<ts-menu-item value="edit">Edit</ts-menu-item>
|
|
105
|
-
<ts-menu-item value="duplicate">Duplicate</ts-menu-item>
|
|
106
|
-
<ts-menu-item value="archive">Archive</ts-menu-item>
|
|
107
|
-
<ts-menu-item value="delete">Delete</ts-menu-item>
|
|
108
|
-
</ts-menu>
|
|
109
|
-
</div>
|
|
110
|
-
`;
|
|
111
|
-
export const UserMenu = () => `
|
|
112
|
-
<ts-menu placement="bottom-end">
|
|
113
|
-
<ts-button slot="trigger" appearance="ghost">
|
|
114
|
-
<div style="display: flex; align-items: center; gap: 8px;">
|
|
115
|
-
<ts-avatar name="James Kennedy" color="#6366f1" size="xs"></ts-avatar>
|
|
116
|
-
<span>James Kennedy</span>
|
|
117
|
-
</div>
|
|
118
|
-
</ts-button>
|
|
119
|
-
<ts-menu-item value="profile">My Profile</ts-menu-item>
|
|
120
|
-
<ts-menu-item value="settings">Account Settings</ts-menu-item>
|
|
121
|
-
<ts-menu-item value="billing">Billing</ts-menu-item>
|
|
122
|
-
<ts-menu-item value="team">Team Management</ts-menu-item>
|
|
123
|
-
<ts-menu-item value="logout">Sign Out</ts-menu-item>
|
|
124
|
-
</ts-menu>
|
|
125
|
-
`;
|
|
126
|
-
//# sourceMappingURL=menu.stories.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"menu.stories.js","sourceRoot":"","sources":["../../../src/components/menu/menu.stories.ts"],"names":[],"mappings":"AAAA,mCAAmC;AAEnC,eAAe;IACb,KAAK,EAAE,iBAAiB;IACxB,IAAI,EAAE,CAAC,UAAU,CAAC;IAClB,QAAQ,EAAE;QACR,IAAI,EAAE,EAAE,OAAO,EAAE,SAAS,EAAE,WAAW,EAAE,oCAAoC,EAAE;QAC/E,OAAO,EAAE;YACP,OAAO,EAAE,QAAQ;YACjB,OAAO,EAAE,CAAC,OAAO,EAAE,OAAO,CAAC;YAC3B,WAAW,EAAE,4BAA4B;SAC1C;QACD,SAAS,EAAE;YACT,OAAO,EAAE,QAAQ;YACjB,OAAO,EAAE,CAAC,cAAc,EAAE,YAAY,EAAE,WAAW,EAAE,SAAS,CAAC;YAC/D,WAAW,EAAE,oDAAoD;SAClE;KACF;CACF,CAAC;AAEF,MAAM,QAAQ,GAAG,CAAC,IAA6B,EAAU,EAAE;IACzD,MAAM,KAAK,GAAa,EAAE,CAAC;IAC3B,IAAI,IAAI,CAAC,IAAI;QAAE,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;IAClC,IAAI,IAAI,CAAC,OAAO,KAAK,SAAS,IAAI,IAAI,CAAC,OAAO,KAAK,IAAI;QAAE,KAAK,CAAC,IAAI,CAAC,YAAY,IAAI,CAAC,OAAO,GAAG,CAAC,CAAC;IACjG,IAAI,IAAI,CAAC,SAAS,KAAK,SAAS,IAAI,IAAI,CAAC,SAAS,KAAK,IAAI;QAAE,KAAK,CAAC,IAAI,CAAC,cAAc,IAAI,CAAC,SAAS,GAAG,CAAC,CAAC;IACzG,OAAO;eACM,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC;;;;;;;GAO3B,CAAC;AACJ,CAAC,CAAC;AAEF,MAAM,CAAC,MAAM,OAAO,GAAG,MAAM,CAAC,MAAM,CAAC,QAAQ,CAAC,IAAI,CAAC,EAAE,CAAwD,EAAE;IAC7G,IAAI,EAAE;QACJ,IAAI,EAAE,KAAK;QACX,OAAO,EAAE,OAAO;QAChB,SAAS,EAAE,cAAc;KAC1B;CACF,CAAC,CAAC;AAEH,MAAM,CAAC,MAAM,UAAU,GAAG,GAAW,EAAE,CAAC;;;;;;;;;;;;;;;;;;;;;;;;;;;CA2BvC,CAAC;AAEF,MAAM,CAAC,MAAM,iBAAiB,GAAG,GAAW,EAAE,CAAC;;;;;;;;;CAS9C,CAAC;AAEF,MAAM,CAAC,MAAM,YAAY,GAAG,GAAW,EAAE,CAAC;;;;;;;;CAQzC,CAAC;AAEF,MAAM,CAAC,MAAM,SAAS,GAAG,GAAW,EAAE,CAAC;;;;;;;;CAQtC,CAAC;AAEF,MAAM,CAAC,MAAM,WAAW,GAAG,GAAW,EAAE,CAAC;;;;;;;;;;CAUxC,CAAC;AAEF,MAAM,CAAC,MAAM,QAAQ,GAAG,GAAW,EAAE,CAAC;;;;;;;;;;;;;;CAcrC,CAAC","sourcesContent":["// Hand-written stories for ts-menu\n\nexport default {\n title: 'Components/Menu',\n tags: ['autodocs'],\n argTypes: {\n open: { control: 'boolean', description: 'Whether the menu dropdown is open.' },\n trigger: {\n control: 'select',\n options: ['click', 'hover'],\n description: 'How the menu is triggered.',\n },\n placement: {\n control: 'select',\n options: ['bottom-start', 'bottom-end', 'top-start', 'top-end'],\n description: 'Placement of the dropdown relative to the trigger.',\n },\n },\n};\n\nconst Template = (args: Record<string, unknown>): string => {\n const attrs: string[] = [];\n if (args.open) attrs.push('open');\n if (args.trigger !== undefined && args.trigger !== null) attrs.push(`trigger=\"${args.trigger}\"`);\n if (args.placement !== undefined && args.placement !== null) attrs.push(`placement=\"${args.placement}\"`);\n return `\n <ts-menu ${attrs.join(' ')}>\n <ts-button slot=\"trigger\">Actions</ts-button>\n <ts-menu-item value=\"edit\">Edit</ts-menu-item>\n <ts-menu-item value=\"duplicate\">Duplicate</ts-menu-item>\n <ts-menu-item value=\"archive\">Archive</ts-menu-item>\n <ts-menu-item value=\"delete\">Delete</ts-menu-item>\n </ts-menu>\n `;\n};\n\nexport const Default = Object.assign(Template.bind({}) as typeof Template & { args: Record<string, unknown> }, {\n args: {\n open: false,\n trigger: 'click',\n placement: 'bottom-start',\n },\n});\n\nexport const Placements = (): string => `\n <div style=\"display: flex; gap: 24px; flex-wrap: wrap; padding: 80px 20px;\">\n <ts-menu placement=\"bottom-start\">\n <ts-button slot=\"trigger\">Bottom Start</ts-button>\n <ts-menu-item value=\"one\">Option One</ts-menu-item>\n <ts-menu-item value=\"two\">Option Two</ts-menu-item>\n <ts-menu-item value=\"three\">Option Three</ts-menu-item>\n </ts-menu>\n <ts-menu placement=\"bottom-end\">\n <ts-button slot=\"trigger\">Bottom End</ts-button>\n <ts-menu-item value=\"one\">Option One</ts-menu-item>\n <ts-menu-item value=\"two\">Option Two</ts-menu-item>\n <ts-menu-item value=\"three\">Option Three</ts-menu-item>\n </ts-menu>\n <ts-menu placement=\"top-start\">\n <ts-button slot=\"trigger\">Top Start</ts-button>\n <ts-menu-item value=\"one\">Option One</ts-menu-item>\n <ts-menu-item value=\"two\">Option Two</ts-menu-item>\n <ts-menu-item value=\"three\">Option Three</ts-menu-item>\n </ts-menu>\n <ts-menu placement=\"top-end\">\n <ts-button slot=\"trigger\">Top End</ts-button>\n <ts-menu-item value=\"one\">Option One</ts-menu-item>\n <ts-menu-item value=\"two\">Option Two</ts-menu-item>\n <ts-menu-item value=\"three\">Option Three</ts-menu-item>\n </ts-menu>\n </div>\n`;\n\nexport const WithDisabledItems = (): string => `\n <ts-menu>\n <ts-button slot=\"trigger\">File Actions</ts-button>\n <ts-menu-item value=\"edit\">Edit</ts-menu-item>\n <ts-menu-item value=\"duplicate\">Duplicate</ts-menu-item>\n <ts-menu-item value=\"move\" disabled>Move (no permission)</ts-menu-item>\n <ts-menu-item value=\"archive\">Archive</ts-menu-item>\n <ts-menu-item value=\"delete\" disabled>Delete (locked)</ts-menu-item>\n </ts-menu>\n`;\n\nexport const HoverTrigger = (): string => `\n <ts-menu trigger=\"hover\">\n <ts-button slot=\"trigger\">Hover Me</ts-button>\n <ts-menu-item value=\"profile\">Profile</ts-menu-item>\n <ts-menu-item value=\"settings\">Settings</ts-menu-item>\n <ts-menu-item value=\"help\">Help Center</ts-menu-item>\n <ts-menu-item value=\"logout\">Log Out</ts-menu-item>\n </ts-menu>\n`;\n\nexport const WithLinks = (): string => `\n <ts-menu>\n <ts-button slot=\"trigger\">Navigate</ts-button>\n <ts-menu-item value=\"docs\" href=\"https://example.com/docs\">Documentation</ts-menu-item>\n <ts-menu-item value=\"api\" href=\"https://example.com/api\">API Reference</ts-menu-item>\n <ts-menu-item value=\"changelog\" href=\"https://example.com/changelog\">Changelog</ts-menu-item>\n <ts-menu-item value=\"support\" href=\"https://example.com/support\">Support</ts-menu-item>\n </ts-menu>\n`;\n\nexport const ContextMenu = (): string => `\n <div style=\"display: flex; gap: 16px;\">\n <ts-menu placement=\"bottom-end\">\n <ts-button slot=\"trigger\" appearance=\"ghost\" size=\"sm\">...</ts-button>\n <ts-menu-item value=\"edit\">Edit</ts-menu-item>\n <ts-menu-item value=\"duplicate\">Duplicate</ts-menu-item>\n <ts-menu-item value=\"archive\">Archive</ts-menu-item>\n <ts-menu-item value=\"delete\">Delete</ts-menu-item>\n </ts-menu>\n </div>\n`;\n\nexport const UserMenu = (): string => `\n <ts-menu placement=\"bottom-end\">\n <ts-button slot=\"trigger\" appearance=\"ghost\">\n <div style=\"display: flex; align-items: center; gap: 8px;\">\n <ts-avatar name=\"James Kennedy\" color=\"#6366f1\" size=\"xs\"></ts-avatar>\n <span>James Kennedy</span>\n </div>\n </ts-button>\n <ts-menu-item value=\"profile\">My Profile</ts-menu-item>\n <ts-menu-item value=\"settings\">Account Settings</ts-menu-item>\n <ts-menu-item value=\"billing\">Billing</ts-menu-item>\n <ts-menu-item value=\"team\">Team Management</ts-menu-item>\n <ts-menu-item value=\"logout\">Sign Out</ts-menu-item>\n </ts-menu>\n`;\n"]}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"modal.js","sourceRoot":"","sources":["../../../src/components/modal/modal.tsx"],"names":[],"mappings":"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","sourcesContent":["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"]}
|