@vielzeug/buildit 2.0.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 +124 -0
- package/dist/accordion-item.cjs +32 -0
- package/dist/accordion-item.cjs.map +1 -0
- package/dist/accordion-item.js +72 -0
- package/dist/accordion-item.js.map +1 -0
- package/dist/accordion.cjs +2 -0
- package/dist/accordion.cjs.map +1 -0
- package/dist/accordion.js +37 -0
- package/dist/accordion.js.map +1 -0
- package/dist/alert.cjs +31 -0
- package/dist/alert.cjs.map +1 -0
- package/dist/alert.js +85 -0
- package/dist/alert.js.map +1 -0
- package/dist/avatar.cjs +37 -0
- package/dist/avatar.cjs.map +1 -0
- package/dist/avatar.js +123 -0
- package/dist/avatar.js.map +1 -0
- package/dist/badge.cjs +7 -0
- package/dist/badge.cjs.map +1 -0
- package/dist/badge.js +60 -0
- package/dist/badge.js.map +1 -0
- package/dist/box.cjs +2 -0
- package/dist/box.cjs.map +1 -0
- package/dist/box.js +22 -0
- package/dist/box.js.map +1 -0
- package/dist/breadcrumb.cjs +21 -0
- package/dist/breadcrumb.cjs.map +1 -0
- package/dist/breadcrumb.js +58 -0
- package/dist/breadcrumb.js.map +1 -0
- package/dist/buildit.cjs +1892 -0
- package/dist/buildit.cjs.map +1 -0
- package/dist/buildit.js +1892 -0
- package/dist/buildit.js.map +1 -0
- package/dist/button-group.cjs +6 -0
- package/dist/button-group.cjs.map +1 -0
- package/dist/button-group.js +31 -0
- package/dist/button-group.js.map +1 -0
- package/dist/button.cjs +30 -0
- package/dist/button.cjs.map +1 -0
- package/dist/button.js +115 -0
- package/dist/button.js.map +1 -0
- package/dist/card.cjs +23 -0
- package/dist/card.cjs.map +1 -0
- package/dist/card.js +99 -0
- package/dist/card.js.map +1 -0
- package/dist/checkbox-group.cjs +20 -0
- package/dist/checkbox-group.cjs.map +1 -0
- package/dist/checkbox-group.js +88 -0
- package/dist/checkbox-group.js.map +1 -0
- package/dist/checkbox.cjs +37 -0
- package/dist/checkbox.cjs.map +1 -0
- package/dist/checkbox.js +115 -0
- package/dist/checkbox.js.map +1 -0
- package/dist/chip.cjs +56 -0
- package/dist/chip.cjs.map +1 -0
- package/dist/chip.js +140 -0
- package/dist/chip.js.map +1 -0
- package/dist/combobox.cjs +93 -0
- package/dist/combobox.cjs.map +1 -0
- package/dist/combobox.js +401 -0
- package/dist/combobox.js.map +1 -0
- package/dist/content/avatar/avatar-group.css?inline.cjs +2 -0
- package/dist/content/avatar/avatar-group.css?inline.cjs.map +1 -0
- package/dist/content/avatar/avatar-group.css?inline.js +6 -0
- package/dist/content/avatar/avatar-group.css?inline.js.map +1 -0
- package/dist/content/avatar/avatar.css?inline.cjs +2 -0
- package/dist/content/avatar/avatar.css?inline.cjs.map +1 -0
- package/dist/content/avatar/avatar.css?inline.js +6 -0
- package/dist/content/avatar/avatar.css?inline.js.map +1 -0
- package/dist/content/avatar/avatar.d.ts +78 -0
- package/dist/content/avatar/avatar.d.ts.map +1 -0
- package/dist/content/breadcrumb/breadcrumb-item.css?inline.cjs +2 -0
- package/dist/content/breadcrumb/breadcrumb-item.css?inline.cjs.map +1 -0
- package/dist/content/breadcrumb/breadcrumb-item.css?inline.js +6 -0
- package/dist/content/breadcrumb/breadcrumb-item.css?inline.js.map +1 -0
- package/dist/content/breadcrumb/breadcrumb.css?inline.cjs +2 -0
- package/dist/content/breadcrumb/breadcrumb.css?inline.cjs.map +1 -0
- package/dist/content/breadcrumb/breadcrumb.css?inline.js +6 -0
- package/dist/content/breadcrumb/breadcrumb.css?inline.js.map +1 -0
- package/dist/content/breadcrumb/breadcrumb.d.ts +36 -0
- package/dist/content/breadcrumb/breadcrumb.d.ts.map +1 -0
- package/dist/content/card/card.css?inline.cjs +2 -0
- package/dist/content/card/card.css?inline.cjs.map +1 -0
- package/dist/content/card/card.css?inline.js +6 -0
- package/dist/content/card/card.css?inline.js.map +1 -0
- package/dist/content/card/card.d.ts +66 -0
- package/dist/content/card/card.d.ts.map +1 -0
- package/dist/content/index.cjs +1 -0
- package/dist/content/index.d.ts +15 -0
- package/dist/content/index.d.ts.map +1 -0
- package/dist/content/index.js +7 -0
- package/dist/content/pagination/pagination.css?inline.cjs +2 -0
- package/dist/content/pagination/pagination.css?inline.cjs.map +1 -0
- package/dist/content/pagination/pagination.css?inline.js +6 -0
- package/dist/content/pagination/pagination.css?inline.js.map +1 -0
- package/dist/content/pagination/pagination.d.ts +56 -0
- package/dist/content/pagination/pagination.d.ts.map +1 -0
- package/dist/content/separator/separator.css?inline.cjs +2 -0
- package/dist/content/separator/separator.css?inline.cjs.map +1 -0
- package/dist/content/separator/separator.css?inline.js +6 -0
- package/dist/content/separator/separator.css?inline.js.map +1 -0
- package/dist/content/separator/separator.d.ts +35 -0
- package/dist/content/separator/separator.d.ts.map +1 -0
- package/dist/content/table/table.css?inline.cjs +2 -0
- package/dist/content/table/table.css?inline.cjs.map +1 -0
- package/dist/content/table/table.css?inline.js +6 -0
- package/dist/content/table/table.css?inline.js.map +1 -0
- package/dist/content/table/table.d.ts +69 -0
- package/dist/content/table/table.d.ts.map +1 -0
- package/dist/content/text/text.css?inline.cjs +2 -0
- package/dist/content/text/text.css?inline.cjs.map +1 -0
- package/dist/content/text/text.css?inline.js +6 -0
- package/dist/content/text/text.css?inline.js.map +1 -0
- package/dist/content/text/text.d.ts +55 -0
- package/dist/content/text/text.d.ts.map +1 -0
- package/dist/craftit/dist/core/internal.cjs +2 -0
- package/dist/craftit/dist/core/internal.cjs.map +1 -0
- package/dist/craftit/dist/core/internal.js +25 -0
- package/dist/craftit/dist/core/internal.js.map +1 -0
- package/dist/craftit/dist/core/runtime-bindings.cjs +2 -0
- package/dist/craftit/dist/core/runtime-bindings.cjs.map +1 -0
- package/dist/craftit/dist/core/runtime-bindings.js +38 -0
- package/dist/craftit/dist/core/runtime-bindings.js.map +1 -0
- package/dist/craftit/dist/core/runtime-lifecycle.cjs +2 -0
- package/dist/craftit/dist/core/runtime-lifecycle.cjs.map +1 -0
- package/dist/craftit/dist/core/runtime-lifecycle.js +68 -0
- package/dist/craftit/dist/core/runtime-lifecycle.js.map +1 -0
- package/dist/craftit/dist/core/runtime.cjs +1 -0
- package/dist/craftit/dist/core/runtime.js +2 -0
- package/dist/craftit/dist/core/utilities.cjs +2 -0
- package/dist/craftit/dist/core/utilities.cjs.map +1 -0
- package/dist/craftit/dist/core/utilities.js +12 -0
- package/dist/craftit/dist/core/utilities.js.map +1 -0
- package/dist/craftit/dist/directives/attr.cjs +2 -0
- package/dist/craftit/dist/directives/attr.cjs.map +1 -0
- package/dist/craftit/dist/directives/attr.js +13 -0
- package/dist/craftit/dist/directives/attr.js.map +1 -0
- package/dist/craftit/dist/directives/bind.cjs +1 -0
- package/dist/craftit/dist/directives/bind.js +3 -0
- package/dist/craftit/dist/directives/choose.cjs +1 -0
- package/dist/craftit/dist/directives/choose.js +1 -0
- package/dist/craftit/dist/directives/classes.cjs +2 -0
- package/dist/craftit/dist/directives/classes.cjs.map +1 -0
- package/dist/craftit/dist/directives/classes.js +12 -0
- package/dist/craftit/dist/directives/classes.js.map +1 -0
- package/dist/craftit/dist/directives/each.cjs +2 -0
- package/dist/craftit/dist/directives/each.cjs.map +1 -0
- package/dist/craftit/dist/directives/each.js +96 -0
- package/dist/craftit/dist/directives/each.js.map +1 -0
- package/dist/craftit/dist/directives/index.cjs +1 -0
- package/dist/craftit/dist/directives/index.js +12 -0
- package/dist/craftit/dist/directives/match.cjs +1 -0
- package/dist/craftit/dist/directives/match.js +1 -0
- package/dist/craftit/dist/directives/memo.cjs +1 -0
- package/dist/craftit/dist/directives/memo.js +1 -0
- package/dist/craftit/dist/directives/raw.cjs +1 -0
- package/dist/craftit/dist/directives/raw.js +2 -0
- package/dist/craftit/dist/directives/spread.cjs +2 -0
- package/dist/craftit/dist/directives/spread.cjs.map +1 -0
- package/dist/craftit/dist/directives/spread.js +30 -0
- package/dist/craftit/dist/directives/spread.js.map +1 -0
- package/dist/craftit/dist/directives/style.cjs +1 -0
- package/dist/craftit/dist/directives/style.js +1 -0
- package/dist/craftit/dist/directives/until.cjs +1 -0
- package/dist/craftit/dist/directives/until.js +1 -0
- package/dist/craftit/dist/directives/when.cjs +2 -0
- package/dist/craftit/dist/directives/when.cjs.map +1 -0
- package/dist/craftit/dist/directives/when.js +14 -0
- package/dist/craftit/dist/directives/when.js.map +1 -0
- package/dist/craftit/dist/labs/a11y.cjs +2 -0
- package/dist/craftit/dist/labs/a11y.cjs.map +1 -0
- package/dist/craftit/dist/labs/a11y.js +38 -0
- package/dist/craftit/dist/labs/a11y.js.map +1 -0
- package/dist/craftit/dist/labs/list.cjs +2 -0
- package/dist/craftit/dist/labs/list.cjs.map +1 -0
- package/dist/craftit/dist/labs/list.js +87 -0
- package/dist/craftit/dist/labs/list.js.map +1 -0
- package/dist/craftit/dist/labs/observers.cjs +2 -0
- package/dist/craftit/dist/labs/observers.cjs.map +1 -0
- package/dist/craftit/dist/labs/observers.js +28 -0
- package/dist/craftit/dist/labs/observers.js.map +1 -0
- package/dist/craftit/dist/labs/overlay.cjs +2 -0
- package/dist/craftit/dist/labs/overlay.cjs.map +1 -0
- package/dist/craftit/dist/labs/overlay.js +49 -0
- package/dist/craftit/dist/labs/overlay.js.map +1 -0
- package/dist/craftit/dist/labs/selectable.cjs +2 -0
- package/dist/craftit/dist/labs/selectable.cjs.map +1 -0
- package/dist/craftit/dist/labs/selectable.js +29 -0
- package/dist/craftit/dist/labs/selectable.js.map +1 -0
- package/dist/craftit/dist/labs/selection.cjs +2 -0
- package/dist/craftit/dist/labs/selection.cjs.map +1 -0
- package/dist/craftit/dist/labs/selection.js +42 -0
- package/dist/craftit/dist/labs/selection.js.map +1 -0
- package/dist/craftit/dist/labs.cjs +1 -0
- package/dist/craftit/dist/labs.js +6 -0
- package/dist/custom-elements.json +2321 -0
- package/dist/dialog.cjs +33 -0
- package/dist/dialog.cjs.map +1 -0
- package/dist/dialog.js +94 -0
- package/dist/dialog.js.map +1 -0
- package/dist/disclosure/accordion/accordion.css?inline.cjs +2 -0
- package/dist/disclosure/accordion/accordion.css?inline.cjs.map +1 -0
- package/dist/disclosure/accordion/accordion.css?inline.js +6 -0
- package/dist/disclosure/accordion/accordion.css?inline.js.map +1 -0
- package/dist/disclosure/accordion/accordion.d.ts +47 -0
- package/dist/disclosure/accordion/accordion.d.ts.map +1 -0
- package/dist/disclosure/accordion-item/accordion-item.css?inline.cjs +2 -0
- package/dist/disclosure/accordion-item/accordion-item.css?inline.cjs.map +1 -0
- package/dist/disclosure/accordion-item/accordion-item.css?inline.js +6 -0
- package/dist/disclosure/accordion-item/accordion-item.css?inline.js.map +1 -0
- package/dist/disclosure/accordion-item/accordion-item.d.ts +62 -0
- package/dist/disclosure/accordion-item/accordion-item.d.ts.map +1 -0
- package/dist/disclosure/index.cjs +1 -0
- package/dist/disclosure/index.d.ts +11 -0
- package/dist/disclosure/index.d.ts.map +1 -0
- package/dist/disclosure/index.js +5 -0
- package/dist/disclosure/tab-item/tab-item.css?inline.cjs +2 -0
- package/dist/disclosure/tab-item/tab-item.css?inline.cjs.map +1 -0
- package/dist/disclosure/tab-item/tab-item.css?inline.js +6 -0
- package/dist/disclosure/tab-item/tab-item.css?inline.js.map +1 -0
- package/dist/disclosure/tab-item/tab-item.d.ts +39 -0
- package/dist/disclosure/tab-item/tab-item.d.ts.map +1 -0
- package/dist/disclosure/tab-panel/tab-panel.css?inline.cjs +2 -0
- package/dist/disclosure/tab-panel/tab-panel.css?inline.cjs.map +1 -0
- package/dist/disclosure/tab-panel/tab-panel.css?inline.js +6 -0
- package/dist/disclosure/tab-panel/tab-panel.css?inline.js.map +1 -0
- package/dist/disclosure/tab-panel/tab-panel.d.ts +30 -0
- package/dist/disclosure/tab-panel/tab-panel.d.ts.map +1 -0
- package/dist/disclosure/tabs/tabs.css?inline.cjs +2 -0
- package/dist/disclosure/tabs/tabs.css?inline.cjs.map +1 -0
- package/dist/disclosure/tabs/tabs.css?inline.js +6 -0
- package/dist/disclosure/tabs/tabs.css?inline.js.map +1 -0
- package/dist/disclosure/tabs/tabs.d.ts +64 -0
- package/dist/disclosure/tabs/tabs.d.ts.map +1 -0
- package/dist/drawer.cjs +31 -0
- package/dist/drawer.cjs.map +1 -0
- package/dist/drawer.js +98 -0
- package/dist/drawer.js.map +1 -0
- package/dist/feedback/alert/alert.css?inline.cjs +2 -0
- package/dist/feedback/alert/alert.css?inline.cjs.map +1 -0
- package/dist/feedback/alert/alert.css?inline.js +6 -0
- package/dist/feedback/alert/alert.css?inline.js.map +1 -0
- package/dist/feedback/alert/alert.d.ts +63 -0
- package/dist/feedback/alert/alert.d.ts.map +1 -0
- package/dist/feedback/badge/badge.css?inline.cjs +2 -0
- package/dist/feedback/badge/badge.css?inline.cjs.map +1 -0
- package/dist/feedback/badge/badge.css?inline.js +6 -0
- package/dist/feedback/badge/badge.css?inline.js.map +1 -0
- package/dist/feedback/badge/badge.d.ts +67 -0
- package/dist/feedback/badge/badge.d.ts.map +1 -0
- package/dist/feedback/chip/chip.css?inline.cjs +2 -0
- package/dist/feedback/chip/chip.css?inline.cjs.map +1 -0
- package/dist/feedback/chip/chip.css?inline.js +6 -0
- package/dist/feedback/chip/chip.css?inline.js.map +1 -0
- package/dist/feedback/chip/chip.d.ts +124 -0
- package/dist/feedback/chip/chip.d.ts.map +1 -0
- package/dist/feedback/index.cjs +1 -0
- package/dist/feedback/index.d.ts +13 -0
- package/dist/feedback/index.d.ts.map +1 -0
- package/dist/feedback/index.js +6 -0
- package/dist/feedback/progress/progress.css?inline.cjs +2 -0
- package/dist/feedback/progress/progress.css?inline.cjs.map +1 -0
- package/dist/feedback/progress/progress.css?inline.js +6 -0
- package/dist/feedback/progress/progress.css?inline.js.map +1 -0
- package/dist/feedback/progress/progress.d.ts +64 -0
- package/dist/feedback/progress/progress.d.ts.map +1 -0
- package/dist/feedback/skeleton/skeleton.css?inline.cjs +2 -0
- package/dist/feedback/skeleton/skeleton.css?inline.cjs.map +1 -0
- package/dist/feedback/skeleton/skeleton.css?inline.js +6 -0
- package/dist/feedback/skeleton/skeleton.css?inline.js.map +1 -0
- package/dist/feedback/skeleton/skeleton.d.ts +61 -0
- package/dist/feedback/skeleton/skeleton.d.ts.map +1 -0
- package/dist/feedback/toast/index.d.ts +2 -0
- package/dist/feedback/toast/index.d.ts.map +1 -0
- package/dist/feedback/toast/toast.css?inline.cjs +2 -0
- package/dist/feedback/toast/toast.css?inline.cjs.map +1 -0
- package/dist/feedback/toast/toast.css?inline.js +6 -0
- package/dist/feedback/toast/toast.css?inline.js.map +1 -0
- package/dist/feedback/toast/toast.d.ts +95 -0
- package/dist/feedback/toast/toast.d.ts.map +1 -0
- package/dist/file-input.cjs +66 -0
- package/dist/file-input.cjs.map +1 -0
- package/dist/file-input.js +210 -0
- package/dist/file-input.js.map +1 -0
- package/dist/form.cjs +11 -0
- package/dist/form.cjs.map +1 -0
- package/dist/form.js +49 -0
- package/dist/form.js.map +1 -0
- package/dist/grid-item.cjs +2 -0
- package/dist/grid-item.cjs.map +1 -0
- package/dist/grid-item.js +28 -0
- package/dist/grid-item.js.map +1 -0
- package/dist/grid.cjs +2 -0
- package/dist/grid.cjs.map +1 -0
- package/dist/grid.js +90 -0
- package/dist/grid.js.map +1 -0
- package/dist/icons.cjs +176 -0
- package/dist/icons.cjs.map +1 -0
- package/dist/icons.d.ts +15 -0
- package/dist/icons.d.ts.map +1 -0
- package/dist/icons.js +181 -0
- package/dist/icons.js.map +1 -0
- package/dist/index.cjs +1 -0
- package/dist/index.d.ts +9 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +53 -0
- package/dist/input.cjs +48 -0
- package/dist/input.cjs.map +1 -0
- package/dist/input.js +182 -0
- package/dist/input.js.map +1 -0
- package/dist/inputs/button/button.css?inline.cjs +2 -0
- package/dist/inputs/button/button.css?inline.cjs.map +1 -0
- package/dist/inputs/button/button.css?inline.js +6 -0
- package/dist/inputs/button/button.css?inline.js.map +1 -0
- package/dist/inputs/button/button.d.ts +73 -0
- package/dist/inputs/button/button.d.ts.map +1 -0
- package/dist/inputs/button-group/button-group.css?inline.cjs +2 -0
- package/dist/inputs/button-group/button-group.css?inline.cjs.map +1 -0
- package/dist/inputs/button-group/button-group.css?inline.js +6 -0
- package/dist/inputs/button-group/button-group.css?inline.js.map +1 -0
- package/dist/inputs/button-group/button-group.d.ts +52 -0
- package/dist/inputs/button-group/button-group.d.ts.map +1 -0
- package/dist/inputs/checkbox/checkbox.css?inline.cjs +2 -0
- package/dist/inputs/checkbox/checkbox.css?inline.cjs.map +1 -0
- package/dist/inputs/checkbox/checkbox.css?inline.js +6 -0
- package/dist/inputs/checkbox/checkbox.css?inline.js.map +1 -0
- package/dist/inputs/checkbox/checkbox.d.ts +43 -0
- package/dist/inputs/checkbox/checkbox.d.ts.map +1 -0
- package/dist/inputs/checkbox-group/checkbox-group.css?inline.cjs +2 -0
- package/dist/inputs/checkbox-group/checkbox-group.css?inline.cjs.map +1 -0
- package/dist/inputs/checkbox-group/checkbox-group.css?inline.js +6 -0
- package/dist/inputs/checkbox-group/checkbox-group.css?inline.js.map +1 -0
- package/dist/inputs/checkbox-group/checkbox-group.d.ts +56 -0
- package/dist/inputs/checkbox-group/checkbox-group.d.ts.map +1 -0
- package/dist/inputs/combobox/combobox-options.cjs +2 -0
- package/dist/inputs/combobox/combobox-options.cjs.map +1 -0
- package/dist/inputs/combobox/combobox-options.d.ts +7 -0
- package/dist/inputs/combobox/combobox-options.d.ts.map +1 -0
- package/dist/inputs/combobox/combobox-options.js +36 -0
- package/dist/inputs/combobox/combobox-options.js.map +1 -0
- package/dist/inputs/combobox/combobox-virtualizer.cjs +2 -0
- package/dist/inputs/combobox/combobox-virtualizer.cjs.map +1 -0
- package/dist/inputs/combobox/combobox-virtualizer.d.ts +20 -0
- package/dist/inputs/combobox/combobox-virtualizer.d.ts.map +1 -0
- package/dist/inputs/combobox/combobox-virtualizer.js +71 -0
- package/dist/inputs/combobox/combobox-virtualizer.js.map +1 -0
- package/dist/inputs/combobox/combobox.css?inline.cjs +2 -0
- package/dist/inputs/combobox/combobox.css?inline.cjs.map +1 -0
- package/dist/inputs/combobox/combobox.css?inline.js +6 -0
- package/dist/inputs/combobox/combobox.css?inline.js.map +1 -0
- package/dist/inputs/combobox/combobox.d.ts +28 -0
- package/dist/inputs/combobox/combobox.d.ts.map +1 -0
- package/dist/inputs/combobox/combobox.types.d.ts +36 -0
- package/dist/inputs/combobox/combobox.types.d.ts.map +1 -0
- package/dist/inputs/file-input/file-input.css?inline.cjs +2 -0
- package/dist/inputs/file-input/file-input.css?inline.cjs.map +1 -0
- package/dist/inputs/file-input/file-input.css?inline.js +6 -0
- package/dist/inputs/file-input/file-input.css?inline.js.map +1 -0
- package/dist/inputs/file-input/file-input.d.ts +94 -0
- package/dist/inputs/file-input/file-input.d.ts.map +1 -0
- package/dist/inputs/form/form.css?inline.cjs +2 -0
- package/dist/inputs/form/form.css?inline.cjs.map +1 -0
- package/dist/inputs/form/form.css?inline.js +6 -0
- package/dist/inputs/form/form.css?inline.js.map +1 -0
- package/dist/inputs/form/form.d.ts +61 -0
- package/dist/inputs/form/form.d.ts.map +1 -0
- package/dist/inputs/index.cjs +1 -0
- package/dist/inputs/index.d.ts +38 -0
- package/dist/inputs/index.d.ts.map +1 -0
- package/dist/inputs/index.js +18 -0
- package/dist/inputs/input/input.css?inline.cjs +2 -0
- package/dist/inputs/input/input.css?inline.cjs.map +1 -0
- package/dist/inputs/input/input.css?inline.js +6 -0
- package/dist/inputs/input/input.css?inline.js.map +1 -0
- package/dist/inputs/input/input.d.ts +82 -0
- package/dist/inputs/input/input.d.ts.map +1 -0
- package/dist/inputs/number-input/number-input.css?inline.cjs +2 -0
- package/dist/inputs/number-input/number-input.css?inline.cjs.map +1 -0
- package/dist/inputs/number-input/number-input.css?inline.js +6 -0
- package/dist/inputs/number-input/number-input.css?inline.js.map +1 -0
- package/dist/inputs/number-input/number-input.d.ts +76 -0
- package/dist/inputs/number-input/number-input.d.ts.map +1 -0
- package/dist/inputs/otp-input/otp-input.css?inline.cjs +2 -0
- package/dist/inputs/otp-input/otp-input.css?inline.cjs.map +1 -0
- package/dist/inputs/otp-input/otp-input.css?inline.js +6 -0
- package/dist/inputs/otp-input/otp-input.css?inline.js.map +1 -0
- package/dist/inputs/otp-input/otp-input.d.ts +71 -0
- package/dist/inputs/otp-input/otp-input.d.ts.map +1 -0
- package/dist/inputs/radio/radio.css?inline.cjs +2 -0
- package/dist/inputs/radio/radio.css?inline.cjs.map +1 -0
- package/dist/inputs/radio/radio.css?inline.js +6 -0
- package/dist/inputs/radio/radio.css?inline.js.map +1 -0
- package/dist/inputs/radio/radio.d.ts +41 -0
- package/dist/inputs/radio/radio.d.ts.map +1 -0
- package/dist/inputs/radio-group/radio-group.css?inline.cjs +2 -0
- package/dist/inputs/radio-group/radio-group.css?inline.cjs.map +1 -0
- package/dist/inputs/radio-group/radio-group.css?inline.js +6 -0
- package/dist/inputs/radio-group/radio-group.css?inline.js.map +1 -0
- package/dist/inputs/radio-group/radio-group.d.ts +61 -0
- package/dist/inputs/radio-group/radio-group.d.ts.map +1 -0
- package/dist/inputs/rating/rating.css?inline.cjs +2 -0
- package/dist/inputs/rating/rating.css?inline.cjs.map +1 -0
- package/dist/inputs/rating/rating.css?inline.js +6 -0
- package/dist/inputs/rating/rating.css?inline.js.map +1 -0
- package/dist/inputs/rating/rating.d.ts +48 -0
- package/dist/inputs/rating/rating.d.ts.map +1 -0
- package/dist/inputs/select/select.css?inline.cjs +2 -0
- package/dist/inputs/select/select.css?inline.cjs.map +1 -0
- package/dist/inputs/select/select.css?inline.js +6 -0
- package/dist/inputs/select/select.css?inline.js.map +1 -0
- package/dist/inputs/select/select.d.ts +79 -0
- package/dist/inputs/select/select.d.ts.map +1 -0
- package/dist/inputs/shared/base-props.d.ts +39 -0
- package/dist/inputs/shared/base-props.d.ts.map +1 -0
- package/dist/inputs/shared/composables/index.cjs +1 -0
- package/dist/inputs/shared/composables/index.d.ts +3 -0
- package/dist/inputs/shared/composables/index.d.ts.map +1 -0
- package/dist/inputs/shared/composables/index.js +2 -0
- package/dist/inputs/shared/composables/use-text-field.cjs +2 -0
- package/dist/inputs/shared/composables/use-text-field.cjs.map +1 -0
- package/dist/inputs/shared/composables/use-text-field.d.ts +33 -0
- package/dist/inputs/shared/composables/use-text-field.d.ts.map +1 -0
- package/dist/inputs/shared/composables/use-text-field.js +41 -0
- package/dist/inputs/shared/composables/use-text-field.js.map +1 -0
- package/dist/inputs/shared/composables/use-toggle-field.cjs +2 -0
- package/dist/inputs/shared/composables/use-toggle-field.cjs.map +1 -0
- package/dist/inputs/shared/composables/use-toggle-field.d.ts +18 -0
- package/dist/inputs/shared/composables/use-toggle-field.d.ts.map +1 -0
- package/dist/inputs/shared/composables/use-toggle-field.js +26 -0
- package/dist/inputs/shared/composables/use-toggle-field.js.map +1 -0
- package/dist/inputs/shared/design-presets.cjs +2 -0
- package/dist/inputs/shared/design-presets.cjs.map +1 -0
- package/dist/inputs/shared/design-presets.d.ts +97 -0
- package/dist/inputs/shared/design-presets.d.ts.map +1 -0
- package/dist/inputs/shared/design-presets.js +92 -0
- package/dist/inputs/shared/design-presets.js.map +1 -0
- package/dist/inputs/shared/dom-sync/dropdown.cjs +2 -0
- package/dist/inputs/shared/dom-sync/dropdown.cjs.map +1 -0
- package/dist/inputs/shared/dom-sync/dropdown.d.ts +7 -0
- package/dist/inputs/shared/dom-sync/dropdown.d.ts.map +1 -0
- package/dist/inputs/shared/dom-sync/dropdown.js +30 -0
- package/dist/inputs/shared/dom-sync/dropdown.js.map +1 -0
- package/dist/inputs/shared/dom-sync/field-sync.cjs +2 -0
- package/dist/inputs/shared/dom-sync/field-sync.cjs.map +1 -0
- package/dist/inputs/shared/dom-sync/field-sync.d.ts +36 -0
- package/dist/inputs/shared/dom-sync/field-sync.d.ts.map +1 -0
- package/dist/inputs/shared/dom-sync/field-sync.js +37 -0
- package/dist/inputs/shared/dom-sync/field-sync.js.map +1 -0
- package/dist/inputs/shared/dom-sync/form-context.cjs +2 -0
- package/dist/inputs/shared/dom-sync/form-context.cjs.map +1 -0
- package/dist/inputs/shared/dom-sync/form-context.d.ts +18 -0
- package/dist/inputs/shared/dom-sync/form-context.d.ts.map +1 -0
- package/dist/inputs/shared/dom-sync/form-context.js +20 -0
- package/dist/inputs/shared/dom-sync/form-context.js.map +1 -0
- package/dist/inputs/shared/dom-sync/index.cjs +1 -0
- package/dist/inputs/shared/dom-sync/index.d.ts +5 -0
- package/dist/inputs/shared/dom-sync/index.d.ts.map +1 -0
- package/dist/inputs/shared/dom-sync/index.js +4 -0
- package/dist/inputs/shared/dom-sync/label-sync.cjs +2 -0
- package/dist/inputs/shared/dom-sync/label-sync.cjs.map +1 -0
- package/dist/inputs/shared/dom-sync/label-sync.d.ts +16 -0
- package/dist/inputs/shared/dom-sync/label-sync.d.ts.map +1 -0
- package/dist/inputs/shared/dom-sync/label-sync.js +12 -0
- package/dist/inputs/shared/dom-sync/label-sync.js.map +1 -0
- package/dist/inputs/shared/form-context.cjs +2 -0
- package/dist/inputs/shared/form-context.cjs.map +1 -0
- package/dist/inputs/shared/form-context.d.ts +19 -0
- package/dist/inputs/shared/form-context.d.ts.map +1 -0
- package/dist/inputs/shared/form-context.js +7 -0
- package/dist/inputs/shared/form-context.js.map +1 -0
- package/dist/inputs/shared/utils/assistive-text.cjs +2 -0
- package/dist/inputs/shared/utils/assistive-text.cjs.map +1 -0
- package/dist/inputs/shared/utils/assistive-text.d.ts +24 -0
- package/dist/inputs/shared/utils/assistive-text.d.ts.map +1 -0
- package/dist/inputs/shared/utils/assistive-text.js +37 -0
- package/dist/inputs/shared/utils/assistive-text.js.map +1 -0
- package/dist/inputs/shared/utils/choice-change.cjs +2 -0
- package/dist/inputs/shared/utils/choice-change.cjs.map +1 -0
- package/dist/inputs/shared/utils/choice-change.d.ts +8 -0
- package/dist/inputs/shared/utils/choice-change.d.ts.map +1 -0
- package/dist/inputs/shared/utils/choice-change.js +13 -0
- package/dist/inputs/shared/utils/choice-change.js.map +1 -0
- package/dist/inputs/shared/utils/controlled-csv.cjs +2 -0
- package/dist/inputs/shared/utils/controlled-csv.cjs.map +1 -0
- package/dist/inputs/shared/utils/controlled-csv.d.ts +8 -0
- package/dist/inputs/shared/utils/controlled-csv.d.ts.map +1 -0
- package/dist/inputs/shared/utils/controlled-csv.js +15 -0
- package/dist/inputs/shared/utils/controlled-csv.js.map +1 -0
- package/dist/inputs/shared/utils/field-values.cjs +2 -0
- package/dist/inputs/shared/utils/field-values.cjs.map +1 -0
- package/dist/inputs/shared/utils/field-values.d.ts +5 -0
- package/dist/inputs/shared/utils/field-values.d.ts.map +1 -0
- package/dist/inputs/shared/utils/field-values.js +13 -0
- package/dist/inputs/shared/utils/field-values.js.map +1 -0
- package/dist/inputs/shared/utils/index.d.ts +5 -0
- package/dist/inputs/shared/utils/index.d.ts.map +1 -0
- package/dist/inputs/shared/validation/index.cjs +2 -0
- package/dist/inputs/shared/validation/index.cjs.map +1 -0
- package/dist/inputs/shared/validation/index.d.ts +14 -0
- package/dist/inputs/shared/validation/index.d.ts.map +1 -0
- package/dist/inputs/shared/validation/index.js +13 -0
- package/dist/inputs/shared/validation/index.js.map +1 -0
- package/dist/inputs/slider/slider.css?inline.cjs +2 -0
- package/dist/inputs/slider/slider.css?inline.cjs.map +1 -0
- package/dist/inputs/slider/slider.css?inline.js +6 -0
- package/dist/inputs/slider/slider.css?inline.js.map +1 -0
- package/dist/inputs/slider/slider.d.ts +82 -0
- package/dist/inputs/slider/slider.d.ts.map +1 -0
- package/dist/inputs/switch/switch.css?inline.cjs +2 -0
- package/dist/inputs/switch/switch.css?inline.cjs.map +1 -0
- package/dist/inputs/switch/switch.css?inline.js +6 -0
- package/dist/inputs/switch/switch.css?inline.js.map +1 -0
- package/dist/inputs/switch/switch.d.ts +40 -0
- package/dist/inputs/switch/switch.d.ts.map +1 -0
- package/dist/inputs/textarea/textarea.css?inline.cjs +2 -0
- package/dist/inputs/textarea/textarea.css?inline.cjs.map +1 -0
- package/dist/inputs/textarea/textarea.css?inline.js +6 -0
- package/dist/inputs/textarea/textarea.css?inline.js.map +1 -0
- package/dist/inputs/textarea/textarea.d.ts +57 -0
- package/dist/inputs/textarea/textarea.d.ts.map +1 -0
- package/dist/layout/box/box.css?inline.cjs +2 -0
- package/dist/layout/box/box.css?inline.cjs.map +1 -0
- package/dist/layout/box/box.css?inline.js +6 -0
- package/dist/layout/box/box.css?inline.js.map +1 -0
- package/dist/layout/box/box.d.ts +52 -0
- package/dist/layout/box/box.d.ts.map +1 -0
- package/dist/layout/grid/grid.css?inline.cjs +2 -0
- package/dist/layout/grid/grid.css?inline.cjs.map +1 -0
- package/dist/layout/grid/grid.css?inline.js +6 -0
- package/dist/layout/grid/grid.css?inline.js.map +1 -0
- package/dist/layout/grid/grid.d.ts +105 -0
- package/dist/layout/grid/grid.d.ts.map +1 -0
- package/dist/layout/grid-item/grid-item.css?inline.cjs +2 -0
- package/dist/layout/grid-item/grid-item.css?inline.cjs.map +1 -0
- package/dist/layout/grid-item/grid-item.css?inline.js +6 -0
- package/dist/layout/grid-item/grid-item.css?inline.js.map +1 -0
- package/dist/layout/grid-item/grid-item.d.ts +47 -0
- package/dist/layout/grid-item/grid-item.d.ts.map +1 -0
- package/dist/layout/index.cjs +1 -0
- package/dist/layout/index.d.ts +9 -0
- package/dist/layout/index.d.ts.map +1 -0
- package/dist/layout/index.js +4 -0
- package/dist/layout/sidebar/sidebar-group.css?inline.cjs +2 -0
- package/dist/layout/sidebar/sidebar-group.css?inline.cjs.map +1 -0
- package/dist/layout/sidebar/sidebar-group.css?inline.js +6 -0
- package/dist/layout/sidebar/sidebar-group.css?inline.js.map +1 -0
- package/dist/layout/sidebar/sidebar-item.css?inline.cjs +2 -0
- package/dist/layout/sidebar/sidebar-item.css?inline.cjs.map +1 -0
- package/dist/layout/sidebar/sidebar-item.css?inline.js +6 -0
- package/dist/layout/sidebar/sidebar-item.css?inline.js.map +1 -0
- package/dist/layout/sidebar/sidebar.css?inline.cjs +2 -0
- package/dist/layout/sidebar/sidebar.css?inline.cjs.map +1 -0
- package/dist/layout/sidebar/sidebar.css?inline.js +6 -0
- package/dist/layout/sidebar/sidebar.css?inline.js.map +1 -0
- package/dist/layout/sidebar/sidebar.d.ts +190 -0
- package/dist/layout/sidebar/sidebar.d.ts.map +1 -0
- package/dist/menu.cjs +133 -0
- package/dist/menu.cjs.map +1 -0
- package/dist/menu.js +296 -0
- package/dist/menu.js.map +1 -0
- package/dist/number-input.cjs +55 -0
- package/dist/number-input.cjs.map +1 -0
- package/dist/number-input.js +158 -0
- package/dist/number-input.js.map +1 -0
- package/dist/otp-input.cjs +22 -0
- package/dist/otp-input.cjs.map +1 -0
- package/dist/otp-input.js +120 -0
- package/dist/otp-input.js.map +1 -0
- package/dist/overlay/dialog/dialog.css?inline.cjs +2 -0
- package/dist/overlay/dialog/dialog.css?inline.cjs.map +1 -0
- package/dist/overlay/dialog/dialog.css?inline.js +6 -0
- package/dist/overlay/dialog/dialog.css?inline.js.map +1 -0
- package/dist/overlay/dialog/dialog.d.ts +98 -0
- package/dist/overlay/dialog/dialog.d.ts.map +1 -0
- package/dist/overlay/drawer/drawer.css?inline.cjs +2 -0
- package/dist/overlay/drawer/drawer.css?inline.cjs.map +1 -0
- package/dist/overlay/drawer/drawer.css?inline.js +6 -0
- package/dist/overlay/drawer/drawer.css?inline.js.map +1 -0
- package/dist/overlay/drawer/drawer.d.ts +98 -0
- package/dist/overlay/drawer/drawer.d.ts.map +1 -0
- package/dist/overlay/index.cjs +1 -0
- package/dist/overlay/index.d.ts +11 -0
- package/dist/overlay/index.d.ts.map +1 -0
- package/dist/overlay/index.js +5 -0
- package/dist/overlay/menu/menu.css?inline.cjs +2 -0
- package/dist/overlay/menu/menu.css?inline.cjs.map +1 -0
- package/dist/overlay/menu/menu.css?inline.js +6 -0
- package/dist/overlay/menu/menu.css?inline.js.map +1 -0
- package/dist/overlay/menu/menu.d.ts +45 -0
- package/dist/overlay/menu/menu.d.ts.map +1 -0
- package/dist/overlay/popover/popover.css?inline.cjs +2 -0
- package/dist/overlay/popover/popover.css?inline.cjs.map +1 -0
- package/dist/overlay/popover/popover.css?inline.js +6 -0
- package/dist/overlay/popover/popover.css?inline.js.map +1 -0
- package/dist/overlay/popover/popover.d.ts +56 -0
- package/dist/overlay/popover/popover.d.ts.map +1 -0
- package/dist/overlay/tooltip/tooltip.css?inline.cjs +2 -0
- package/dist/overlay/tooltip/tooltip.css?inline.cjs.map +1 -0
- package/dist/overlay/tooltip/tooltip.css?inline.js +6 -0
- package/dist/overlay/tooltip/tooltip.css?inline.js.map +1 -0
- package/dist/overlay/tooltip/tooltip.d.ts +55 -0
- package/dist/overlay/tooltip/tooltip.d.ts.map +1 -0
- package/dist/pagination.cjs +102 -0
- package/dist/pagination.cjs.map +1 -0
- package/dist/pagination.js +168 -0
- package/dist/pagination.js.map +1 -0
- package/dist/popover.cjs +16 -0
- package/dist/popover.cjs.map +1 -0
- package/dist/popover.js +110 -0
- package/dist/popover.js.map +1 -0
- package/dist/progress.cjs +51 -0
- package/dist/progress.cjs.map +1 -0
- package/dist/progress.js +90 -0
- package/dist/progress.js.map +1 -0
- package/dist/radio-group.cjs +20 -0
- package/dist/radio-group.cjs.map +1 -0
- package/dist/radio-group.js +104 -0
- package/dist/radio-group.js.map +1 -0
- package/dist/radio.cjs +16 -0
- package/dist/radio.cjs.map +1 -0
- package/dist/radio.js +135 -0
- package/dist/radio.js.map +1 -0
- package/dist/rating.cjs +37 -0
- package/dist/rating.cjs.map +1 -0
- package/dist/rating.js +123 -0
- package/dist/rating.js.map +1 -0
- package/dist/select.cjs +77 -0
- package/dist/select.cjs.map +1 -0
- package/dist/select.js +317 -0
- package/dist/select.js.map +1 -0
- package/dist/separator.cjs +26 -0
- package/dist/separator.cjs.map +1 -0
- package/dist/separator.js +46 -0
- package/dist/separator.js.map +1 -0
- package/dist/sidebar.cjs +69 -0
- package/dist/sidebar.cjs.map +1 -0
- package/dist/sidebar.js +202 -0
- package/dist/sidebar.js.map +1 -0
- package/dist/skeleton.cjs +10 -0
- package/dist/skeleton.cjs.map +1 -0
- package/dist/skeleton.js +56 -0
- package/dist/skeleton.js.map +1 -0
- package/dist/slider.cjs +24 -0
- package/dist/slider.cjs.map +1 -0
- package/dist/slider.js +209 -0
- package/dist/slider.js.map +1 -0
- package/dist/stateit/dist/computed.cjs +2 -0
- package/dist/stateit/dist/computed.cjs.map +1 -0
- package/dist/stateit/dist/computed.js +65 -0
- package/dist/stateit/dist/computed.js.map +1 -0
- package/dist/stateit/dist/effect.cjs +2 -0
- package/dist/stateit/dist/effect.cjs.map +1 -0
- package/dist/stateit/dist/effect.js +53 -0
- package/dist/stateit/dist/effect.js.map +1 -0
- package/dist/stateit/dist/index.cjs +1 -0
- package/dist/stateit/dist/index.js +5 -0
- package/dist/stateit/dist/runtime.cjs +2 -0
- package/dist/stateit/dist/runtime.cjs.map +1 -0
- package/dist/stateit/dist/runtime.js +43 -0
- package/dist/stateit/dist/runtime.js.map +1 -0
- package/dist/stateit/dist/signal.cjs +2 -0
- package/dist/stateit/dist/signal.cjs.map +1 -0
- package/dist/stateit/dist/signal.js +27 -0
- package/dist/stateit/dist/signal.js.map +1 -0
- package/dist/stateit/dist/store.cjs +2 -0
- package/dist/stateit/dist/store.cjs.map +1 -0
- package/dist/stateit/dist/store.js +17 -0
- package/dist/stateit/dist/store.js.map +1 -0
- package/dist/stateit/dist/types.cjs +2 -0
- package/dist/stateit/dist/types.cjs.map +1 -0
- package/dist/stateit/dist/types.js +6 -0
- package/dist/stateit/dist/types.js.map +1 -0
- package/dist/styles/animation.css +87 -0
- package/dist/styles/index.cjs +2 -0
- package/dist/styles/index.cjs.map +1 -0
- package/dist/styles/index.d.ts +48 -0
- package/dist/styles/index.d.ts.map +1 -0
- package/dist/styles/index.js +26 -0
- package/dist/styles/index.js.map +1 -0
- package/dist/styles/layer.css +18 -0
- package/dist/styles/mixins/accessibility.css.cjs +15 -0
- package/dist/styles/mixins/accessibility.css.cjs.map +1 -0
- package/dist/styles/mixins/accessibility.css.d.ts +46 -0
- package/dist/styles/mixins/accessibility.css.d.ts.map +1 -0
- package/dist/styles/mixins/accessibility.css.js +20 -0
- package/dist/styles/mixins/accessibility.css.js.map +1 -0
- package/dist/styles/mixins/animation.css.cjs +71 -0
- package/dist/styles/mixins/animation.css.cjs.map +1 -0
- package/dist/styles/mixins/animation.css.d.ts +22 -0
- package/dist/styles/mixins/animation.css.d.ts.map +1 -0
- package/dist/styles/mixins/animation.css.js +90 -0
- package/dist/styles/mixins/animation.css.js.map +1 -0
- package/dist/styles/mixins/shape.css.cjs +72 -0
- package/dist/styles/mixins/shape.css.cjs.map +1 -0
- package/dist/styles/mixins/shape.css.d.ts +97 -0
- package/dist/styles/mixins/shape.css.d.ts.map +1 -0
- package/dist/styles/mixins/shape.css.js +104 -0
- package/dist/styles/mixins/shape.css.js.map +1 -0
- package/dist/styles/mixins/states.css.cjs +18 -0
- package/dist/styles/mixins/states.css.cjs.map +1 -0
- package/dist/styles/mixins/states.css.d.ts +61 -0
- package/dist/styles/mixins/states.css.d.ts.map +1 -0
- package/dist/styles/mixins/states.css.js +26 -0
- package/dist/styles/mixins/states.css.js.map +1 -0
- package/dist/styles/mixins/theme.css.cjs +146 -0
- package/dist/styles/mixins/theme.css.cjs.map +1 -0
- package/dist/styles/mixins/theme.css.d.ts +93 -0
- package/dist/styles/mixins/theme.css.d.ts.map +1 -0
- package/dist/styles/mixins/theme.css.js +151 -0
- package/dist/styles/mixins/theme.css.js.map +1 -0
- package/dist/styles/mixins/variants.css.cjs +84 -0
- package/dist/styles/mixins/variants.css.cjs.map +1 -0
- package/dist/styles/mixins/variants.css.d.ts +22 -0
- package/dist/styles/mixins/variants.css.d.ts.map +1 -0
- package/dist/styles/mixins/variants.css.js +89 -0
- package/dist/styles/mixins/variants.css.js.map +1 -0
- package/dist/styles/preflight.css +237 -0
- package/dist/styles/styles.css +5 -0
- package/dist/styles/theme.css +457 -0
- package/dist/switch.cjs +16 -0
- package/dist/switch.cjs.map +1 -0
- package/dist/switch.js +82 -0
- package/dist/switch.js.map +1 -0
- package/dist/tab-item.cjs +17 -0
- package/dist/tab-item.cjs.map +1 -0
- package/dist/tab-item.js +57 -0
- package/dist/tab-item.js.map +1 -0
- package/dist/tab-panel.cjs +14 -0
- package/dist/tab-panel.cjs.map +1 -0
- package/dist/tab-panel.js +51 -0
- package/dist/tab-panel.js.map +1 -0
- package/dist/table.cjs +2 -0
- package/dist/table.cjs.map +1 -0
- package/dist/table.js +101 -0
- package/dist/table.js.map +1 -0
- package/dist/tabs.cjs +17 -0
- package/dist/tabs.cjs.map +1 -0
- package/dist/tabs.js +98 -0
- package/dist/tabs.js.map +1 -0
- package/dist/text.cjs +2 -0
- package/dist/text.cjs.map +1 -0
- package/dist/text.js +30 -0
- package/dist/text.js.map +1 -0
- package/dist/textarea.cjs +16 -0
- package/dist/textarea.cjs.map +1 -0
- package/dist/textarea.js +122 -0
- package/dist/textarea.js.map +1 -0
- package/dist/toast.cjs +63 -0
- package/dist/toast.cjs.map +1 -0
- package/dist/toast.js +221 -0
- package/dist/toast.js.map +1 -0
- package/dist/tooltip.cjs +15 -0
- package/dist/tooltip.cjs.map +1 -0
- package/dist/tooltip.js +111 -0
- package/dist/tooltip.js.map +1 -0
- package/dist/types/index.d.ts +7 -0
- package/dist/types/index.d.ts.map +1 -0
- package/dist/types/shared.d.ts +120 -0
- package/dist/types/shared.d.ts.map +1 -0
- package/dist/utils/animation.cjs +2 -0
- package/dist/utils/animation.cjs.map +1 -0
- package/dist/utils/animation.d.ts +2 -0
- package/dist/utils/animation.d.ts.map +1 -0
- package/dist/utils/animation.js +29 -0
- package/dist/utils/animation.js.map +1 -0
- package/dist/utils/background-lock.cjs +2 -0
- package/dist/utils/background-lock.cjs.map +1 -0
- package/dist/utils/background-lock.d.ts +20 -0
- package/dist/utils/background-lock.d.ts.map +1 -0
- package/dist/utils/background-lock.js +21 -0
- package/dist/utils/background-lock.js.map +1 -0
- package/dist/utils/index.cjs +1 -0
- package/dist/utils/index.d.ts +4 -0
- package/dist/utils/index.d.ts.map +1 -0
- package/dist/utils/index.js +3 -0
- package/dist/utils/use-overlay.cjs +2 -0
- package/dist/utils/use-overlay.cjs.map +1 -0
- package/dist/utils/use-overlay.d.ts +26 -0
- package/dist/utils/use-overlay.d.ts.map +1 -0
- package/dist/utils/use-overlay.js +34 -0
- package/dist/utils/use-overlay.js.map +1 -0
- package/dist/virtualit/dist/dom/dom.cjs +2 -0
- package/dist/virtualit/dist/dom/dom.cjs.map +1 -0
- package/dist/virtualit/dist/dom/dom.js +47 -0
- package/dist/virtualit/dist/dom/dom.js.map +1 -0
- package/dist/virtualit/dist/dom.cjs +1 -0
- package/dist/virtualit/dist/dom.js +2 -0
- package/dist/virtualit/dist/virtualit.cjs +2 -0
- package/dist/virtualit/dist/virtualit.cjs.map +1 -0
- package/dist/virtualit/dist/virtualit.js +129 -0
- package/dist/virtualit/dist/virtualit.js.map +1 -0
- package/package.json +282 -0
package/dist/dialog.cjs
ADDED
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
Object.defineProperty(exports,Symbol.toStringTag,{value:`Module`});const e=require(`./styles/mixins/accessibility.css.cjs`),t=require(`./styles/mixins/shape.css.cjs`),n=require(`./styles/mixins/theme.css.cjs`);require(`./styles/index.cjs`);const r=require(`./icons.cjs`),i=require(`./utils/animation.cjs`),a=require(`./utils/background-lock.cjs`),o=require(`./utils/use-overlay.cjs`),s=require(`./overlay/dialog/dialog.css?inline.cjs`);let c=require(`@vielzeug/craftit`);var l=(0,c.defineComponent)({props:{backdrop:{default:void 0},dismissible:{default:!1},elevation:{default:void 0},"initial-focus":{default:void 0},label:{default:``},open:{default:!1},padding:{default:void 0},persistent:{default:!1},"return-focus":{default:!0},rounded:{default:void 0},size:{default:`md`}},setup({emit:e,host:t,props:n,slots:s}){let l=(0,c.ref)(),u=(0,c.computed)(()=>s.has(`header`).value||!!n.label.value||n.dismissible.value),d=(0,c.computed)(()=>s.has(`footer`).value),{applyInitialFocus:f,captureReturnFocus:p,closeWithAnimation:m,restoreFocus:h}=o.useOverlay(t,l,()=>l.value?.querySelector(`.panel`),n);return(0,c.onMount)(()=>{let r=l.value;return r?((0,c.watch)(n.open,n=>{n?r.open||(p(),r.showModal(),f(),a.lockBackground(t),e(`open`)):m()},{immediate:!0}),(0,c.handle)(r,`close`,()=>{a.unlockBackground(),t.removeAttribute(`open`),h(),e(`close`)}),(0,c.handle)(r,`click`,e=>{n.persistent.value||e.target===r&&m()}),(0,c.handle)(r,`keydown`,e=>{e.key===`Escape`&&(e.preventDefault(),n.persistent.value||m())}),()=>{r.open&&r.close(),a.unlockBackground()}):void 0}),c.html`
|
|
2
|
+
<dialog
|
|
3
|
+
ref=${l}
|
|
4
|
+
class="dialog"
|
|
5
|
+
part="dialog"
|
|
6
|
+
:aria-label="${()=>n.label.value||null}"
|
|
7
|
+
aria-modal="true">
|
|
8
|
+
<div class="overlay" part="overlay" aria-hidden="true"></div>
|
|
9
|
+
<div class="panel" part="panel" :data-size="${n.size}">
|
|
10
|
+
<div class="header" part="header" ?hidden=${()=>!u.value}>
|
|
11
|
+
<slot name="header">
|
|
12
|
+
<span class="title" part="title">${()=>n.label.value}</span>
|
|
13
|
+
</slot>
|
|
14
|
+
<button
|
|
15
|
+
class="close"
|
|
16
|
+
part="close"
|
|
17
|
+
type="button"
|
|
18
|
+
aria-label="Close dialog"
|
|
19
|
+
?hidden=${()=>!n.dismissible.value}
|
|
20
|
+
@click=${()=>{let e=l.value;if(!e)return;c.fire.custom(e,`close-request`),e.classList.add(`closing`);let t=e.querySelector(`.panel`),n=()=>{e.classList.remove(`closing`),e.close()};t?i.awaitExit(t,n,`transition`):n()}}>
|
|
21
|
+
${r.closeIcon}
|
|
22
|
+
</button>
|
|
23
|
+
</div>
|
|
24
|
+
<div class="body" part="body">
|
|
25
|
+
<slot></slot>
|
|
26
|
+
</div>
|
|
27
|
+
<div class="footer" part="footer" ?hidden=${()=>!d.value}>
|
|
28
|
+
<slot name="footer"></slot>
|
|
29
|
+
</div>
|
|
30
|
+
</div>
|
|
31
|
+
</dialog>
|
|
32
|
+
`},styles:[n.elevationMixin,t.roundedVariantMixin,e.coarsePointerMixin,e.reducedMotionMixin,s.default],tag:`bit-dialog`});exports.DIALOG_TAG=l;
|
|
33
|
+
//# sourceMappingURL=dialog.cjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"dialog.cjs","names":[],"sources":["../src/overlay/dialog/dialog.ts"],"sourcesContent":["import { computed, defineComponent, handle, html, onMount, ref, watch, fire } from '@vielzeug/craftit';\n\nimport type { PaddingSize, RoundedSize } from '../../types';\n\nimport { closeIcon } from '../../icons';\nimport { coarsePointerMixin, elevationMixin, reducedMotionMixin, roundedVariantMixin } from '../../styles';\nimport { awaitExit } from '../../utils/animation';\nimport { lockBackground, unlockBackground } from '../../utils/background-lock';\nimport { useOverlay } from '../../utils/use-overlay';\nimport componentStyles from './dialog.css?inline';\n\ntype DialogSize = 'sm' | 'md' | 'lg' | 'xl' | 'full';\ntype DialogBackdrop = 'opaque' | 'blur' | 'transparent';\ntype DialogElevation = 'none' | 'sm' | 'md' | 'lg' | 'xl' | '2xl';\n\n/** Dialog component properties */\n\nexport type BitDialogEvents = {\n close: undefined;\n open: undefined;\n};\n\nexport type BitDialogProps = {\n /** Backdrop style — 'blur' (default): dark overlay + blur; 'opaque': dark overlay only; 'transparent': no overlay */\n backdrop?: DialogBackdrop;\n /** Show a close (×) button in the header */\n dismissible?: boolean;\n /** Panel shadow elevation — defaults to 'xl' */\n elevation?: DialogElevation;\n /**\n * CSS selector for the element inside the dialog that should receive focus when the dialog opens.\n * Defaults to the first focusable element (browser default).\n * @example 'input[name=\"email\"]' | '#confirm-btn'\n */\n 'initial-focus'?: string;\n /** Dialog title shown in the header (used as aria-label when no header slot) */\n label?: string;\n /** Controls the open state of the dialog */\n open?: boolean;\n /** Internal padding size */\n padding?: PaddingSize;\n /** When true, clicking the backdrop does not close the dialog */\n persistent?: boolean;\n /**\n * When true (default), focus returns to the element that triggered the dialog after it closes.\n * Set to false if you want to manage focus manually.\n */\n 'return-focus'?: boolean;\n /** Border radius */\n rounded?: RoundedSize | '';\n /** Dialog size */\n size?: DialogSize;\n};\n\n/**\n * A modal dialog that traps focus, blocks page interaction, and dismisses on\n * `Escape`. Built on the native `<dialog>` element for correct top-layer stacking\n * and browser-managed accessibility.\n *\n * @element bit-dialog\n *\n * @attr {boolean} open - Open/close the dialog\n * @attr {string} label - Dialog title (also used as aria-label)\n * @attr {string} size - Size: 'sm' | 'md' | 'lg' | 'xl' | 'full'\n * @attr {boolean} dismissible - Show a close (×) button in the header\n * @attr {boolean} persistent - Prevent backdrop-click from closing\n * @attr {string} rounded - Border radius size\n * @attr {string} backdrop - Backdrop style: 'opaque' (default) | 'blur' | 'transparent'\n * @attr {string} elevation - Panel shadow: 'none' | 'sm' | 'md' | 'lg' | 'xl' | '2xl'\n * @attr {string} padding - Padding: 'none' | 'sm' | 'md' | 'lg' | 'xl'\n *\n * @fires open - Fired when the dialog opens\n * @fires close - Fired when the dialog closes (any trigger)\n *\n * @slot - Dialog body content\n * @slot header - Custom header content (replaces the default title + close layout)\n * @slot footer - Action buttons or additional content at the bottom\n *\n * @cssprop --dialog-bg - Panel background color\n * @cssprop --dialog-border-color - Panel border color\n * @cssprop --dialog-radius - Panel border radius\n * @cssprop --dialog-shadow - Panel drop shadow\n * @cssprop --dialog-padding - Padding for header, body, and footer sections\n * @cssprop --dialog-gap - Gap between footer action buttons\n * @cssprop --dialog-backdrop - Backdrop overlay color\n * @cssprop --dialog-max-width - Maximum panel width (overridden by size prop)\n *\n * @example\n * ```html\n * <bit-dialog label=\"Confirm action\" dismissible>\n * <p>Are you sure you want to delete this item?</p>\n * <div slot=\"footer\">\n * <bit-button variant=\"ghost\" id=\"cancel\">Cancel</bit-button>\n * <bit-button color=\"error\" id=\"confirm\">Delete</bit-button>\n * </div>\n * </bit-dialog>\n *\n * <script type=\"module\">\n * import '@vielzeug/buildit/dialog';\n * const dialog = document.querySelector('bit-dialog');\n * document.querySelector('#open-btn').addEventListener('click', () => {\n * dialog.setAttribute('open', '');\n * });\n * document.querySelector('#cancel').addEventListener('click', () => {\n * dialog.removeAttribute('open');\n * });\n * </script>\n * ```\n */\nexport const DIALOG_TAG = defineComponent<BitDialogProps, BitDialogEvents>({\n props: {\n backdrop: { default: undefined },\n dismissible: { default: false },\n elevation: { default: undefined },\n 'initial-focus': { default: undefined },\n label: { default: '' },\n open: { default: false },\n padding: { default: undefined },\n persistent: { default: false },\n 'return-focus': { default: true },\n rounded: { default: undefined },\n size: { default: 'md' },\n },\n setup({ emit, host, props, slots }) {\n const dialogRef = ref<HTMLDialogElement>();\n const hasHeader = computed(() => slots.has('header').value || !!props.label.value || props.dismissible.value);\n const hasFooter = computed(() => slots.has('footer').value);\n const { applyInitialFocus, captureReturnFocus, closeWithAnimation, restoreFocus } = useOverlay(\n host,\n dialogRef,\n () => dialogRef.value?.querySelector<HTMLElement>('.panel'),\n props,\n );\n\n onMount(() => {\n const dialog = dialogRef.value;\n\n if (!dialog) return;\n\n // Sync prop changes → native dialog\n watch(\n props.open,\n (open) => {\n if (open) {\n if (!dialog.open) {\n captureReturnFocus();\n dialog.showModal();\n applyInitialFocus();\n lockBackground(host);\n emit('open');\n }\n } else {\n closeWithAnimation();\n }\n },\n { immediate: true },\n );\n\n // Native dialog 'close' fires after animation finishes or on programmatic .close()\n const handleNativeClose = () => {\n unlockBackground();\n // Sync the open prop back to the host attribute if closed externally\n host.removeAttribute('open');\n // Return focus to the triggering element unless opted out\n restoreFocus();\n emit('close');\n };\n // Intercept Escape to play exit animation first; also enforce persistent mode\n const handleKeydown = (e: KeyboardEvent) => {\n if (e.key === 'Escape') {\n e.preventDefault();\n\n if (!props.persistent.value) {\n closeWithAnimation();\n }\n }\n };\n // Backdrop click: the click target is the <dialog> element itself (not the panel)\n const handleBackdropClick = (e: MouseEvent) => {\n if (props.persistent.value) return;\n\n // When clicking the backdrop, the event target is the <dialog> element itself.\n // Clicks inside the panel bubble up with a more specific target.\n if (e.target === dialog) {\n closeWithAnimation();\n }\n };\n\n handle(dialog, 'close', handleNativeClose);\n handle(dialog, 'click', handleBackdropClick);\n handle(dialog, 'keydown', handleKeydown);\n\n return () => {\n // Ensure the native dialog is closed on unmount to release top-layer\n if (dialog.open) dialog.close();\n\n unlockBackground();\n };\n });\n\n const handleDismiss = () => {\n const dialog = dialogRef.value;\n\n if (!dialog) return;\n\n fire.custom(dialog, 'close-request');\n dialog.classList.add('closing');\n\n const panel = dialog.querySelector<HTMLElement>('.panel');\n const finish = () => {\n dialog.classList.remove('closing');\n dialog.close();\n };\n\n if (panel) {\n awaitExit(panel, finish, 'transition');\n } else {\n finish();\n }\n };\n\n return html`\n <dialog\n ref=${dialogRef}\n class=\"dialog\"\n part=\"dialog\"\n :aria-label=\"${() => props.label.value || null}\"\n aria-modal=\"true\">\n <div class=\"overlay\" part=\"overlay\" aria-hidden=\"true\"></div>\n <div class=\"panel\" part=\"panel\" :data-size=\"${props.size}\">\n <div class=\"header\" part=\"header\" ?hidden=${() => !hasHeader.value}>\n <slot name=\"header\">\n <span class=\"title\" part=\"title\">${() => props.label.value}</span>\n </slot>\n <button\n class=\"close\"\n part=\"close\"\n type=\"button\"\n aria-label=\"Close dialog\"\n ?hidden=${() => !props.dismissible.value}\n @click=${handleDismiss}>\n ${closeIcon}\n </button>\n </div>\n <div class=\"body\" part=\"body\">\n <slot></slot>\n </div>\n <div class=\"footer\" part=\"footer\" ?hidden=${() => !hasFooter.value}>\n <slot name=\"footer\"></slot>\n </div>\n </div>\n </dialog>\n `;\n },\n styles: [elevationMixin, roundedVariantMixin, coarsePointerMixin, reducedMotionMixin, componentStyles],\n tag: 'bit-dialog',\n});\n"],"mappings":"udA6GA,IAAa,GAAA,EAAA,EAAA,iBAA8D,CACzE,MAAO,CACL,SAAU,CAAE,QAAS,IAAA,GAAW,CAChC,YAAa,CAAE,QAAS,GAAO,CAC/B,UAAW,CAAE,QAAS,IAAA,GAAW,CACjC,gBAAiB,CAAE,QAAS,IAAA,GAAW,CACvC,MAAO,CAAE,QAAS,GAAI,CACtB,KAAM,CAAE,QAAS,GAAO,CACxB,QAAS,CAAE,QAAS,IAAA,GAAW,CAC/B,WAAY,CAAE,QAAS,GAAO,CAC9B,eAAgB,CAAE,QAAS,GAAM,CACjC,QAAS,CAAE,QAAS,IAAA,GAAW,CAC/B,KAAM,CAAE,QAAS,KAAM,CACxB,CACD,MAAM,CAAE,OAAM,OAAM,QAAO,SAAS,CAClC,IAAM,GAAA,EAAA,EAAA,MAAoC,CACpC,GAAA,EAAA,EAAA,cAA2B,EAAM,IAAI,SAAS,CAAC,OAAS,CAAC,CAAC,EAAM,MAAM,OAAS,EAAM,YAAY,MAAM,CACvG,GAAA,EAAA,EAAA,cAA2B,EAAM,IAAI,SAAS,CAAC,MAAM,CACrD,CAAE,oBAAmB,qBAAoB,qBAAoB,gBAAiB,EAAA,WAClF,EACA,MACM,EAAU,OAAO,cAA2B,SAAS,CAC3D,EACD,CAyFD,OAvFA,EAAA,EAAA,aAAc,CACZ,IAAM,EAAS,EAAU,MAyDzB,OAvDK,IAGL,EAAA,EAAA,OACE,EAAM,KACL,GAAS,CACJ,EACG,EAAO,OACV,GAAoB,CACpB,EAAO,WAAW,CAClB,GAAmB,CACnB,EAAA,eAAe,EAAK,CACpB,EAAK,OAAO,EAGd,GAAoB,EAGxB,CAAE,UAAW,GAAM,CACpB,EAgCD,EAAA,EAAA,QAAO,EAAQ,YA7BiB,CAC9B,EAAA,kBAAkB,CAElB,EAAK,gBAAgB,OAAO,CAE5B,GAAc,CACd,EAAK,QAAQ,EAuB2B,EAC1C,EAAA,EAAA,QAAO,EAAQ,QAXc,GAAkB,CACzC,EAAM,WAAW,OAIjB,EAAE,SAAW,GACf,GAAoB,EAKoB,EAC5C,EAAA,EAAA,QAAO,EAAQ,UAtBQ,GAAqB,CACtC,EAAE,MAAQ,WACZ,EAAE,gBAAgB,CAEb,EAAM,WAAW,OACpB,GAAoB,GAiBc,KAE3B,CAEP,EAAO,MAAM,EAAO,OAAO,CAE/B,EAAA,kBAAkB,GA3DP,QA6Db,CAuBK,EAAA,IAAI;;cAED,EAAU;;;2BAGK,EAAM,MAAM,OAAS,KAAK;;;sDAGD,EAAM,KAAK;0DACL,CAAC,EAAU,MAAM;;qDAEtB,EAAM,MAAM,MAAM;;;;;;;4BAO3C,CAAC,EAAM,YAAY,MAAM;2BAvCvB,CAC1B,IAAM,EAAS,EAAU,MAEzB,GAAI,CAAC,EAAQ,OAEb,EAAA,KAAK,OAAO,EAAQ,gBAAgB,CACpC,EAAO,UAAU,IAAI,UAAU,CAE/B,IAAM,EAAQ,EAAO,cAA2B,SAAS,CACnD,MAAe,CACnB,EAAO,UAAU,OAAO,UAAU,CAClC,EAAO,OAAO,EAGZ,EACF,EAAA,UAAU,EAAO,EAAQ,aAAa,CAEtC,GAAQ,EAuBqB;gBACrB,EAAA,UAAU;;;;;;0DAMkC,CAAC,EAAU,MAAM;;;;;OAO3E,OAAQ,CAAC,EAAA,eAAgB,EAAA,oBAAqB,EAAA,mBAAoB,EAAA,mBAAoB,EAAA,QAAgB,CACtG,IAAK,aACN,CAAC"}
|
package/dist/dialog.js
ADDED
|
@@ -0,0 +1,94 @@
|
|
|
1
|
+
import { coarsePointerMixin as e, reducedMotionMixin as t } from "./styles/mixins/accessibility.css.js";
|
|
2
|
+
import { roundedVariantMixin as n } from "./styles/mixins/shape.css.js";
|
|
3
|
+
import { elevationMixin as r } from "./styles/mixins/theme.css.js";
|
|
4
|
+
import "./styles/index.js";
|
|
5
|
+
import { closeIcon as i } from "./icons.js";
|
|
6
|
+
import { awaitExit as a } from "./utils/animation.js";
|
|
7
|
+
import { lockBackground as o, unlockBackground as s } from "./utils/background-lock.js";
|
|
8
|
+
import { useOverlay as c } from "./utils/use-overlay.js";
|
|
9
|
+
import l from "./overlay/dialog/dialog.css?inline.js";
|
|
10
|
+
import { computed as u, defineComponent as d, fire as f, handle as p, html as m, onMount as h, ref as g, watch as _ } from "@vielzeug/craftit";
|
|
11
|
+
//#region src/overlay/dialog/dialog.ts
|
|
12
|
+
var v = d({
|
|
13
|
+
props: {
|
|
14
|
+
backdrop: { default: void 0 },
|
|
15
|
+
dismissible: { default: !1 },
|
|
16
|
+
elevation: { default: void 0 },
|
|
17
|
+
"initial-focus": { default: void 0 },
|
|
18
|
+
label: { default: "" },
|
|
19
|
+
open: { default: !1 },
|
|
20
|
+
padding: { default: void 0 },
|
|
21
|
+
persistent: { default: !1 },
|
|
22
|
+
"return-focus": { default: !0 },
|
|
23
|
+
rounded: { default: void 0 },
|
|
24
|
+
size: { default: "md" }
|
|
25
|
+
},
|
|
26
|
+
setup({ emit: e, host: t, props: n, slots: r }) {
|
|
27
|
+
let l = g(), d = u(() => r.has("header").value || !!n.label.value || n.dismissible.value), v = u(() => r.has("footer").value), { applyInitialFocus: y, captureReturnFocus: b, closeWithAnimation: x, restoreFocus: S } = c(t, l, () => l.value?.querySelector(".panel"), n);
|
|
28
|
+
return h(() => {
|
|
29
|
+
let r = l.value;
|
|
30
|
+
return r ? (_(n.open, (n) => {
|
|
31
|
+
n ? r.open || (b(), r.showModal(), y(), o(t), e("open")) : x();
|
|
32
|
+
}, { immediate: !0 }), p(r, "close", () => {
|
|
33
|
+
s(), t.removeAttribute("open"), S(), e("close");
|
|
34
|
+
}), p(r, "click", (e) => {
|
|
35
|
+
n.persistent.value || e.target === r && x();
|
|
36
|
+
}), p(r, "keydown", (e) => {
|
|
37
|
+
e.key === "Escape" && (e.preventDefault(), n.persistent.value || x());
|
|
38
|
+
}), () => {
|
|
39
|
+
r.open && r.close(), s();
|
|
40
|
+
}) : void 0;
|
|
41
|
+
}), m`
|
|
42
|
+
<dialog
|
|
43
|
+
ref=${l}
|
|
44
|
+
class="dialog"
|
|
45
|
+
part="dialog"
|
|
46
|
+
:aria-label="${() => n.label.value || null}"
|
|
47
|
+
aria-modal="true">
|
|
48
|
+
<div class="overlay" part="overlay" aria-hidden="true"></div>
|
|
49
|
+
<div class="panel" part="panel" :data-size="${n.size}">
|
|
50
|
+
<div class="header" part="header" ?hidden=${() => !d.value}>
|
|
51
|
+
<slot name="header">
|
|
52
|
+
<span class="title" part="title">${() => n.label.value}</span>
|
|
53
|
+
</slot>
|
|
54
|
+
<button
|
|
55
|
+
class="close"
|
|
56
|
+
part="close"
|
|
57
|
+
type="button"
|
|
58
|
+
aria-label="Close dialog"
|
|
59
|
+
?hidden=${() => !n.dismissible.value}
|
|
60
|
+
@click=${() => {
|
|
61
|
+
let e = l.value;
|
|
62
|
+
if (!e) return;
|
|
63
|
+
f.custom(e, "close-request"), e.classList.add("closing");
|
|
64
|
+
let t = e.querySelector(".panel"), n = () => {
|
|
65
|
+
e.classList.remove("closing"), e.close();
|
|
66
|
+
};
|
|
67
|
+
t ? a(t, n, "transition") : n();
|
|
68
|
+
}}>
|
|
69
|
+
${i}
|
|
70
|
+
</button>
|
|
71
|
+
</div>
|
|
72
|
+
<div class="body" part="body">
|
|
73
|
+
<slot></slot>
|
|
74
|
+
</div>
|
|
75
|
+
<div class="footer" part="footer" ?hidden=${() => !v.value}>
|
|
76
|
+
<slot name="footer"></slot>
|
|
77
|
+
</div>
|
|
78
|
+
</div>
|
|
79
|
+
</dialog>
|
|
80
|
+
`;
|
|
81
|
+
},
|
|
82
|
+
styles: [
|
|
83
|
+
r,
|
|
84
|
+
n,
|
|
85
|
+
e,
|
|
86
|
+
t,
|
|
87
|
+
l
|
|
88
|
+
],
|
|
89
|
+
tag: "bit-dialog"
|
|
90
|
+
});
|
|
91
|
+
//#endregion
|
|
92
|
+
export { v as DIALOG_TAG };
|
|
93
|
+
|
|
94
|
+
//# sourceMappingURL=dialog.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"dialog.js","names":[],"sources":["../src/overlay/dialog/dialog.ts"],"sourcesContent":["import { computed, defineComponent, handle, html, onMount, ref, watch, fire } from '@vielzeug/craftit';\n\nimport type { PaddingSize, RoundedSize } from '../../types';\n\nimport { closeIcon } from '../../icons';\nimport { coarsePointerMixin, elevationMixin, reducedMotionMixin, roundedVariantMixin } from '../../styles';\nimport { awaitExit } from '../../utils/animation';\nimport { lockBackground, unlockBackground } from '../../utils/background-lock';\nimport { useOverlay } from '../../utils/use-overlay';\nimport componentStyles from './dialog.css?inline';\n\ntype DialogSize = 'sm' | 'md' | 'lg' | 'xl' | 'full';\ntype DialogBackdrop = 'opaque' | 'blur' | 'transparent';\ntype DialogElevation = 'none' | 'sm' | 'md' | 'lg' | 'xl' | '2xl';\n\n/** Dialog component properties */\n\nexport type BitDialogEvents = {\n close: undefined;\n open: undefined;\n};\n\nexport type BitDialogProps = {\n /** Backdrop style — 'blur' (default): dark overlay + blur; 'opaque': dark overlay only; 'transparent': no overlay */\n backdrop?: DialogBackdrop;\n /** Show a close (×) button in the header */\n dismissible?: boolean;\n /** Panel shadow elevation — defaults to 'xl' */\n elevation?: DialogElevation;\n /**\n * CSS selector for the element inside the dialog that should receive focus when the dialog opens.\n * Defaults to the first focusable element (browser default).\n * @example 'input[name=\"email\"]' | '#confirm-btn'\n */\n 'initial-focus'?: string;\n /** Dialog title shown in the header (used as aria-label when no header slot) */\n label?: string;\n /** Controls the open state of the dialog */\n open?: boolean;\n /** Internal padding size */\n padding?: PaddingSize;\n /** When true, clicking the backdrop does not close the dialog */\n persistent?: boolean;\n /**\n * When true (default), focus returns to the element that triggered the dialog after it closes.\n * Set to false if you want to manage focus manually.\n */\n 'return-focus'?: boolean;\n /** Border radius */\n rounded?: RoundedSize | '';\n /** Dialog size */\n size?: DialogSize;\n};\n\n/**\n * A modal dialog that traps focus, blocks page interaction, and dismisses on\n * `Escape`. Built on the native `<dialog>` element for correct top-layer stacking\n * and browser-managed accessibility.\n *\n * @element bit-dialog\n *\n * @attr {boolean} open - Open/close the dialog\n * @attr {string} label - Dialog title (also used as aria-label)\n * @attr {string} size - Size: 'sm' | 'md' | 'lg' | 'xl' | 'full'\n * @attr {boolean} dismissible - Show a close (×) button in the header\n * @attr {boolean} persistent - Prevent backdrop-click from closing\n * @attr {string} rounded - Border radius size\n * @attr {string} backdrop - Backdrop style: 'opaque' (default) | 'blur' | 'transparent'\n * @attr {string} elevation - Panel shadow: 'none' | 'sm' | 'md' | 'lg' | 'xl' | '2xl'\n * @attr {string} padding - Padding: 'none' | 'sm' | 'md' | 'lg' | 'xl'\n *\n * @fires open - Fired when the dialog opens\n * @fires close - Fired when the dialog closes (any trigger)\n *\n * @slot - Dialog body content\n * @slot header - Custom header content (replaces the default title + close layout)\n * @slot footer - Action buttons or additional content at the bottom\n *\n * @cssprop --dialog-bg - Panel background color\n * @cssprop --dialog-border-color - Panel border color\n * @cssprop --dialog-radius - Panel border radius\n * @cssprop --dialog-shadow - Panel drop shadow\n * @cssprop --dialog-padding - Padding for header, body, and footer sections\n * @cssprop --dialog-gap - Gap between footer action buttons\n * @cssprop --dialog-backdrop - Backdrop overlay color\n * @cssprop --dialog-max-width - Maximum panel width (overridden by size prop)\n *\n * @example\n * ```html\n * <bit-dialog label=\"Confirm action\" dismissible>\n * <p>Are you sure you want to delete this item?</p>\n * <div slot=\"footer\">\n * <bit-button variant=\"ghost\" id=\"cancel\">Cancel</bit-button>\n * <bit-button color=\"error\" id=\"confirm\">Delete</bit-button>\n * </div>\n * </bit-dialog>\n *\n * <script type=\"module\">\n * import '@vielzeug/buildit/dialog';\n * const dialog = document.querySelector('bit-dialog');\n * document.querySelector('#open-btn').addEventListener('click', () => {\n * dialog.setAttribute('open', '');\n * });\n * document.querySelector('#cancel').addEventListener('click', () => {\n * dialog.removeAttribute('open');\n * });\n * </script>\n * ```\n */\nexport const DIALOG_TAG = defineComponent<BitDialogProps, BitDialogEvents>({\n props: {\n backdrop: { default: undefined },\n dismissible: { default: false },\n elevation: { default: undefined },\n 'initial-focus': { default: undefined },\n label: { default: '' },\n open: { default: false },\n padding: { default: undefined },\n persistent: { default: false },\n 'return-focus': { default: true },\n rounded: { default: undefined },\n size: { default: 'md' },\n },\n setup({ emit, host, props, slots }) {\n const dialogRef = ref<HTMLDialogElement>();\n const hasHeader = computed(() => slots.has('header').value || !!props.label.value || props.dismissible.value);\n const hasFooter = computed(() => slots.has('footer').value);\n const { applyInitialFocus, captureReturnFocus, closeWithAnimation, restoreFocus } = useOverlay(\n host,\n dialogRef,\n () => dialogRef.value?.querySelector<HTMLElement>('.panel'),\n props,\n );\n\n onMount(() => {\n const dialog = dialogRef.value;\n\n if (!dialog) return;\n\n // Sync prop changes → native dialog\n watch(\n props.open,\n (open) => {\n if (open) {\n if (!dialog.open) {\n captureReturnFocus();\n dialog.showModal();\n applyInitialFocus();\n lockBackground(host);\n emit('open');\n }\n } else {\n closeWithAnimation();\n }\n },\n { immediate: true },\n );\n\n // Native dialog 'close' fires after animation finishes or on programmatic .close()\n const handleNativeClose = () => {\n unlockBackground();\n // Sync the open prop back to the host attribute if closed externally\n host.removeAttribute('open');\n // Return focus to the triggering element unless opted out\n restoreFocus();\n emit('close');\n };\n // Intercept Escape to play exit animation first; also enforce persistent mode\n const handleKeydown = (e: KeyboardEvent) => {\n if (e.key === 'Escape') {\n e.preventDefault();\n\n if (!props.persistent.value) {\n closeWithAnimation();\n }\n }\n };\n // Backdrop click: the click target is the <dialog> element itself (not the panel)\n const handleBackdropClick = (e: MouseEvent) => {\n if (props.persistent.value) return;\n\n // When clicking the backdrop, the event target is the <dialog> element itself.\n // Clicks inside the panel bubble up with a more specific target.\n if (e.target === dialog) {\n closeWithAnimation();\n }\n };\n\n handle(dialog, 'close', handleNativeClose);\n handle(dialog, 'click', handleBackdropClick);\n handle(dialog, 'keydown', handleKeydown);\n\n return () => {\n // Ensure the native dialog is closed on unmount to release top-layer\n if (dialog.open) dialog.close();\n\n unlockBackground();\n };\n });\n\n const handleDismiss = () => {\n const dialog = dialogRef.value;\n\n if (!dialog) return;\n\n fire.custom(dialog, 'close-request');\n dialog.classList.add('closing');\n\n const panel = dialog.querySelector<HTMLElement>('.panel');\n const finish = () => {\n dialog.classList.remove('closing');\n dialog.close();\n };\n\n if (panel) {\n awaitExit(panel, finish, 'transition');\n } else {\n finish();\n }\n };\n\n return html`\n <dialog\n ref=${dialogRef}\n class=\"dialog\"\n part=\"dialog\"\n :aria-label=\"${() => props.label.value || null}\"\n aria-modal=\"true\">\n <div class=\"overlay\" part=\"overlay\" aria-hidden=\"true\"></div>\n <div class=\"panel\" part=\"panel\" :data-size=\"${props.size}\">\n <div class=\"header\" part=\"header\" ?hidden=${() => !hasHeader.value}>\n <slot name=\"header\">\n <span class=\"title\" part=\"title\">${() => props.label.value}</span>\n </slot>\n <button\n class=\"close\"\n part=\"close\"\n type=\"button\"\n aria-label=\"Close dialog\"\n ?hidden=${() => !props.dismissible.value}\n @click=${handleDismiss}>\n ${closeIcon}\n </button>\n </div>\n <div class=\"body\" part=\"body\">\n <slot></slot>\n </div>\n <div class=\"footer\" part=\"footer\" ?hidden=${() => !hasFooter.value}>\n <slot name=\"footer\"></slot>\n </div>\n </div>\n </dialog>\n `;\n },\n styles: [elevationMixin, roundedVariantMixin, coarsePointerMixin, reducedMotionMixin, componentStyles],\n tag: 'bit-dialog',\n});\n"],"mappings":";;;;;;;;;;;AA6GA,IAAa,IAAa,EAAiD;CACzE,OAAO;EACL,UAAU,EAAE,SAAS,KAAA,GAAW;EAChC,aAAa,EAAE,SAAS,IAAO;EAC/B,WAAW,EAAE,SAAS,KAAA,GAAW;EACjC,iBAAiB,EAAE,SAAS,KAAA,GAAW;EACvC,OAAO,EAAE,SAAS,IAAI;EACtB,MAAM,EAAE,SAAS,IAAO;EACxB,SAAS,EAAE,SAAS,KAAA,GAAW;EAC/B,YAAY,EAAE,SAAS,IAAO;EAC9B,gBAAgB,EAAE,SAAS,IAAM;EACjC,SAAS,EAAE,SAAS,KAAA,GAAW;EAC/B,MAAM,EAAE,SAAS,MAAM;EACxB;CACD,MAAM,EAAE,SAAM,SAAM,UAAO,YAAS;EAClC,IAAM,IAAY,GAAwB,EACpC,IAAY,QAAe,EAAM,IAAI,SAAS,CAAC,SAAS,CAAC,CAAC,EAAM,MAAM,SAAS,EAAM,YAAY,MAAM,EACvG,IAAY,QAAe,EAAM,IAAI,SAAS,CAAC,MAAM,EACrD,EAAE,sBAAmB,uBAAoB,uBAAoB,oBAAiB,EAClF,GACA,SACM,EAAU,OAAO,cAA2B,SAAS,EAC3D,EACD;AAyFD,SAvFA,QAAc;GACZ,IAAM,IAAS,EAAU;AAyDzB,UAvDK,KAGL,EACE,EAAM,OACL,MAAS;AACR,IAAI,IACG,EAAO,SACV,GAAoB,EACpB,EAAO,WAAW,EAClB,GAAmB,EACnB,EAAe,EAAK,EACpB,EAAK,OAAO,IAGd,GAAoB;MAGxB,EAAE,WAAW,IAAM,CACpB,EAgCD,EAAO,GAAQ,eA7BiB;AAM9B,IALA,GAAkB,EAElB,EAAK,gBAAgB,OAAO,EAE5B,GAAc,EACd,EAAK,QAAQ;KAuB2B,EAC1C,EAAO,GAAQ,UAXc,MAAkB;AACzC,MAAM,WAAW,SAIjB,EAAE,WAAW,KACf,GAAoB;KAKoB,EAC5C,EAAO,GAAQ,YAtBQ,MAAqB;AAC1C,IAAI,EAAE,QAAQ,aACZ,EAAE,gBAAgB,EAEb,EAAM,WAAW,SACpB,GAAoB;KAiBc,QAE3B;AAIX,IAFI,EAAO,QAAM,EAAO,OAAO,EAE/B,GAAkB;QA3DP;IA6Db,EAuBK,CAAI;;cAED,EAAU;;;6BAGK,EAAM,MAAM,SAAS,KAAK;;;sDAGD,EAAM,KAAK;4DACL,CAAC,EAAU,MAAM;;uDAEtB,EAAM,MAAM,MAAM;;;;;;;8BAO3C,CAAC,EAAM,YAAY,MAAM;6BAvCvB;GAC1B,IAAM,IAAS,EAAU;AAEzB,OAAI,CAAC,EAAQ;AAGb,GADA,EAAK,OAAO,GAAQ,gBAAgB,EACpC,EAAO,UAAU,IAAI,UAAU;GAE/B,IAAM,IAAQ,EAAO,cAA2B,SAAS,EACnD,UAAe;AAEnB,IADA,EAAO,UAAU,OAAO,UAAU,EAClC,EAAO,OAAO;;AAGhB,GAAI,IACF,EAAU,GAAO,GAAQ,aAAa,GAEtC,GAAQ;IAuBqB;gBACrB,EAAU;;;;;;4DAMkC,CAAC,EAAU,MAAM;;;;;;;CAO3E,QAAQ;EAAC;EAAgB;EAAqB;EAAoB;EAAoB;EAAgB;CACtG,KAAK;CACN,CAAC"}
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
var e=`@layer buildit.base{:host{gap:var(--size-2);flex-direction:column;width:100%;display:flex}::slotted(bit-accordion-item){width:100%}}@layer buildit.variants{:host([variant=bordered]){gap:var(--size-2)}:host([variant=text]){gap:0}:host([variant=text]) ::slotted(bit-accordion-item:not(:last-child)){border-bottom:1px solid var(--color-contrast-200)}:host([variant=solid]),:host([variant=flat]),:host([variant=glass]),:host([variant=frost]){padding:var(--size-2);border-radius:var(--rounded-lg);gap:0}:host([variant=solid]){background:var(--color-contrast-50);border:var(--border) solid var(--color-contrast-200);box-shadow:var(--shadow-xs)}:host([variant=flat]){background:var(--color-contrast-100);border:var(--border) solid var(--color-contrast-200);box-shadow:var(--inset-shadow-xs)}:host([variant=glass]),:host([variant=frost]){box-shadow:var(--shadow-md), var(--inset-shadow-xs);-webkit-backdrop-filter:blur(var(--blur-lg)) saturate(180%) brightness(1.05);backdrop-filter:blur(var(--blur-lg)) saturate(180%) brightness(1.05)}:host([variant=glass]){background:color-mix(in srgb, var(--color-secondary) 30%, var(--color-contrast) 10%)}:host([variant=frost]){background:color-mix(in srgb, var(--color-canvas) 55%, transparent)}:host(:is([variant=glass],[variant=frost])) ::slotted(bit-accordion-item){border-radius:0}:host(:is([variant=glass],[variant=frost])) ::slotted(bit-accordion-item:first-child){border-radius:var(--rounded-lg) var(--rounded-lg) 0 0}:host(:is([variant=glass],[variant=frost])) ::slotted(bit-accordion-item:last-child){border-radius:0 0 var(--rounded-lg) var(--rounded-lg)}:host(:is([variant=glass],[variant=frost])) ::slotted(bit-accordion-item:only-child){border-radius:var(--rounded-lg)}}`;exports.default=e;
|
|
2
|
+
//# sourceMappingURL=accordion.css?inline.cjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"accordion.css?inline.cjs","names":[],"sources":["../../../src/disclosure/accordion/accordion.css?inline"],"sourcesContent":["@layer buildit.base {\n :host {\n display: flex;\n flex-direction: column;\n gap: var(--size-2);\n width: 100%;\n }\n\n ::slotted(bit-accordion-item) {\n width: 100%;\n }\n}\n\n@layer buildit.variants {\n /* ========================================\n Visual Variants\n ======================================== */\n\n /* Bordered variant */\n :host([variant='bordered']) {\n gap: var(--size-2);\n }\n\n /* Text variant - borderless with dividers */\n :host([variant='text']) {\n gap: 0;\n }\n\n :host([variant='text']) ::slotted(bit-accordion-item:not(:last-child)) {\n border-bottom: 1px solid var(--color-contrast-200);\n }\n\n /* Contained variants - grouped appearance */\n :host([variant='solid']),\n :host([variant='flat']),\n :host([variant='glass']),\n :host([variant='frost']) {\n gap: 0;\n padding: var(--size-2);\n border-radius: var(--rounded-lg);\n }\n\n /* Solid variant (default) */\n :host([variant='solid']) {\n background: var(--color-contrast-50);\n border: var(--border) solid var(--color-contrast-200);\n box-shadow: var(--shadow-xs);\n }\n\n /* Flat variant */\n :host([variant='flat']) {\n background: var(--color-contrast-100);\n border: var(--border) solid var(--color-contrast-200);\n box-shadow: var(--inset-shadow-xs);\n }\n\n /* Glass & Frost - Shared styles */\n :host([variant='glass']),\n :host([variant='frost']) {\n box-shadow: var(--shadow-md), var(--inset-shadow-xs);\n backdrop-filter: blur(var(--blur-lg)) saturate(180%) brightness(1.05);\n }\n\n /* Glass variant - translucent with blur */\n :host([variant='glass']) {\n background: color-mix(in srgb, var(--color-secondary) 30%, var(--color-contrast) 10%);\n }\n\n /* Frost variant - canvas-based transparency */\n :host([variant='frost']) {\n background: color-mix(in srgb, var(--color-canvas) 55%, transparent);\n }\n\n /* Nested item border radius for glass and frost variants */\n :host(:is([variant='glass'], [variant='frost'])) ::slotted(bit-accordion-item) {\n border-radius: 0;\n }\n\n :host(:is([variant='glass'], [variant='frost'])) ::slotted(bit-accordion-item:first-child) {\n border-radius: var(--rounded-lg) var(--rounded-lg) 0 0;\n }\n\n :host(:is([variant='glass'], [variant='frost'])) ::slotted(bit-accordion-item:last-child) {\n border-radius: 0 0 var(--rounded-lg) var(--rounded-lg);\n }\n\n :host(:is([variant='glass'], [variant='frost'])) ::slotted(bit-accordion-item:only-child) {\n border-radius: var(--rounded-lg);\n }\n}\n"],"mappings":""}
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
//#region src/disclosure/accordion/accordion.css?inline
|
|
2
|
+
var e = "@layer buildit.base{:host{gap:var(--size-2);flex-direction:column;width:100%;display:flex}::slotted(bit-accordion-item){width:100%}}@layer buildit.variants{:host([variant=bordered]){gap:var(--size-2)}:host([variant=text]){gap:0}:host([variant=text]) ::slotted(bit-accordion-item:not(:last-child)){border-bottom:1px solid var(--color-contrast-200)}:host([variant=solid]),:host([variant=flat]),:host([variant=glass]),:host([variant=frost]){padding:var(--size-2);border-radius:var(--rounded-lg);gap:0}:host([variant=solid]){background:var(--color-contrast-50);border:var(--border) solid var(--color-contrast-200);box-shadow:var(--shadow-xs)}:host([variant=flat]){background:var(--color-contrast-100);border:var(--border) solid var(--color-contrast-200);box-shadow:var(--inset-shadow-xs)}:host([variant=glass]),:host([variant=frost]){box-shadow:var(--shadow-md), var(--inset-shadow-xs);-webkit-backdrop-filter:blur(var(--blur-lg)) saturate(180%) brightness(1.05);backdrop-filter:blur(var(--blur-lg)) saturate(180%) brightness(1.05)}:host([variant=glass]){background:color-mix(in srgb, var(--color-secondary) 30%, var(--color-contrast) 10%)}:host([variant=frost]){background:color-mix(in srgb, var(--color-canvas) 55%, transparent)}:host(:is([variant=glass],[variant=frost])) ::slotted(bit-accordion-item){border-radius:0}:host(:is([variant=glass],[variant=frost])) ::slotted(bit-accordion-item:first-child){border-radius:var(--rounded-lg) var(--rounded-lg) 0 0}:host(:is([variant=glass],[variant=frost])) ::slotted(bit-accordion-item:last-child){border-radius:0 0 var(--rounded-lg) var(--rounded-lg)}:host(:is([variant=glass],[variant=frost])) ::slotted(bit-accordion-item:only-child){border-radius:var(--rounded-lg)}}";
|
|
3
|
+
//#endregion
|
|
4
|
+
export { e as default };
|
|
5
|
+
|
|
6
|
+
//# sourceMappingURL=accordion.css?inline.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"accordion.css?inline.js","names":[],"sources":["../../../src/disclosure/accordion/accordion.css?inline"],"sourcesContent":["@layer buildit.base {\n :host {\n display: flex;\n flex-direction: column;\n gap: var(--size-2);\n width: 100%;\n }\n\n ::slotted(bit-accordion-item) {\n width: 100%;\n }\n}\n\n@layer buildit.variants {\n /* ========================================\n Visual Variants\n ======================================== */\n\n /* Bordered variant */\n :host([variant='bordered']) {\n gap: var(--size-2);\n }\n\n /* Text variant - borderless with dividers */\n :host([variant='text']) {\n gap: 0;\n }\n\n :host([variant='text']) ::slotted(bit-accordion-item:not(:last-child)) {\n border-bottom: 1px solid var(--color-contrast-200);\n }\n\n /* Contained variants - grouped appearance */\n :host([variant='solid']),\n :host([variant='flat']),\n :host([variant='glass']),\n :host([variant='frost']) {\n gap: 0;\n padding: var(--size-2);\n border-radius: var(--rounded-lg);\n }\n\n /* Solid variant (default) */\n :host([variant='solid']) {\n background: var(--color-contrast-50);\n border: var(--border) solid var(--color-contrast-200);\n box-shadow: var(--shadow-xs);\n }\n\n /* Flat variant */\n :host([variant='flat']) {\n background: var(--color-contrast-100);\n border: var(--border) solid var(--color-contrast-200);\n box-shadow: var(--inset-shadow-xs);\n }\n\n /* Glass & Frost - Shared styles */\n :host([variant='glass']),\n :host([variant='frost']) {\n box-shadow: var(--shadow-md), var(--inset-shadow-xs);\n backdrop-filter: blur(var(--blur-lg)) saturate(180%) brightness(1.05);\n }\n\n /* Glass variant - translucent with blur */\n :host([variant='glass']) {\n background: color-mix(in srgb, var(--color-secondary) 30%, var(--color-contrast) 10%);\n }\n\n /* Frost variant - canvas-based transparency */\n :host([variant='frost']) {\n background: color-mix(in srgb, var(--color-canvas) 55%, transparent);\n }\n\n /* Nested item border radius for glass and frost variants */\n :host(:is([variant='glass'], [variant='frost'])) ::slotted(bit-accordion-item) {\n border-radius: 0;\n }\n\n :host(:is([variant='glass'], [variant='frost'])) ::slotted(bit-accordion-item:first-child) {\n border-radius: var(--rounded-lg) var(--rounded-lg) 0 0;\n }\n\n :host(:is([variant='glass'], [variant='frost'])) ::slotted(bit-accordion-item:last-child) {\n border-radius: 0 0 var(--rounded-lg) var(--rounded-lg);\n }\n\n :host(:is([variant='glass'], [variant='frost'])) ::slotted(bit-accordion-item:only-child) {\n border-radius: var(--rounded-lg);\n }\n}\n"],"mappings":""}
|
|
@@ -0,0 +1,47 @@
|
|
|
1
|
+
import { type ReadonlySignal } from '@vielzeug/craftit';
|
|
2
|
+
import type { ComponentSize, VisualVariant } from '../../types';
|
|
3
|
+
/** Context provided by bit-accordion to its bit-accordion-item children. */
|
|
4
|
+
export type AccordionContext = {
|
|
5
|
+
notifyExpand: (expandedItem: HTMLElement) => void;
|
|
6
|
+
selectionMode: ReadonlySignal<'single' | 'multiple' | undefined>;
|
|
7
|
+
size: ReadonlySignal<ComponentSize | undefined>;
|
|
8
|
+
variant: ReadonlySignal<VisualVariant | undefined>;
|
|
9
|
+
};
|
|
10
|
+
/** Injection key for the accordion context. */
|
|
11
|
+
export declare const ACCORDION_CTX: import("@vielzeug/craftit").InjectionKey<AccordionContext>;
|
|
12
|
+
/** Accordion component properties */
|
|
13
|
+
export type BitAccordionEvents = {
|
|
14
|
+
change: {
|
|
15
|
+
expandedItem: HTMLElement;
|
|
16
|
+
};
|
|
17
|
+
};
|
|
18
|
+
export type BitAccordionProps = {
|
|
19
|
+
/** Selection mode (single = only one opens, multiple = multiple can be open) */
|
|
20
|
+
selectionMode?: 'single' | 'multiple';
|
|
21
|
+
/** Size for all items (propagated via context) */
|
|
22
|
+
size?: ComponentSize;
|
|
23
|
+
/** Visual variant for all items (propagated via context) */
|
|
24
|
+
variant?: VisualVariant;
|
|
25
|
+
};
|
|
26
|
+
/**
|
|
27
|
+
* A container for accordion items with single or multiple selection modes.
|
|
28
|
+
*
|
|
29
|
+
* @element bit-accordion
|
|
30
|
+
*
|
|
31
|
+
* @attr {string} selection-mode - Selection mode: 'single' | 'multiple'
|
|
32
|
+
* @attr {string} size - Size for all items: 'sm' | 'md' | 'lg' (propagated to children)
|
|
33
|
+
* @attr {string} variant - Visual variant: 'solid' | 'flat' | 'bordered' | 'text' | 'glass' | 'frost' (propagated to children)
|
|
34
|
+
*
|
|
35
|
+
* @fires expand - Emitted when an item expands
|
|
36
|
+
* @fires change - Emitted when selection changes (single mode)
|
|
37
|
+
*
|
|
38
|
+
* @slot - Accordion item elements (bit-accordion-item)
|
|
39
|
+
*
|
|
40
|
+
* @example
|
|
41
|
+
* ```html
|
|
42
|
+
* <bit-accordion selection-mode="single"><bit-accordion-item>...</bit-accordion-item></bit-accordion>
|
|
43
|
+
* <bit-accordion variant="frost" size="lg"><bit-accordion-item>...</bit-accordion-item></bit-accordion>
|
|
44
|
+
* ```
|
|
45
|
+
*/
|
|
46
|
+
export declare const ACCORDION_TAG: string;
|
|
47
|
+
//# sourceMappingURL=accordion.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"accordion.d.ts","sourceRoot":"","sources":["../../../src/disclosure/accordion/accordion.ts"],"names":[],"mappings":"AAAA,OAAO,EAQL,KAAK,cAAc,EACpB,MAAM,mBAAmB,CAAC;AAE3B,OAAO,KAAK,EAAE,aAAa,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AAEhE,4EAA4E;AAC5E,MAAM,MAAM,gBAAgB,GAAG;IAC7B,YAAY,EAAE,CAAC,YAAY,EAAE,WAAW,KAAK,IAAI,CAAC;IAClD,aAAa,EAAE,cAAc,CAAC,QAAQ,GAAG,UAAU,GAAG,SAAS,CAAC,CAAC;IACjE,IAAI,EAAE,cAAc,CAAC,aAAa,GAAG,SAAS,CAAC,CAAC;IAChD,OAAO,EAAE,cAAc,CAAC,aAAa,GAAG,SAAS,CAAC,CAAC;CACpD,CAAC;AACF,+CAA+C;AAC/C,eAAO,MAAM,aAAa,4DAAsD,CAAC;AAIjF,qCAAqC;AAErC,MAAM,MAAM,kBAAkB,GAAG;IAC/B,MAAM,EAAE;QAAE,YAAY,EAAE,WAAW,CAAA;KAAE,CAAC;CACvC,CAAC;AAEF,MAAM,MAAM,iBAAiB,GAAG;IAC9B,gFAAgF;IAChF,aAAa,CAAC,EAAE,QAAQ,GAAG,UAAU,CAAC;IACtC,kDAAkD;IAClD,IAAI,CAAC,EAAE,aAAa,CAAC;IACrB,4DAA4D;IAC5D,OAAO,CAAC,EAAE,aAAa,CAAC;CACzB,CAAC;AAEF;;;;;;;;;;;;;;;;;;;GAmBG;AAEH,eAAO,MAAM,aAAa,QA4DxB,CAAC"}
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
var e=`@layer buildit.base{:host{color:var(--accordion-item-body-color,var(--text-color-body));--accordion-details-radius:var(--rounded-lg);--accordion-item-transition:var(--transition-normal);display:block}details{border-radius:var(--accordion-item-radius);width:100%;transition:all var(--accordion-item-transition);overflow:hidden}summary{gap:var(--size-4);min-height:var(--_touch-target);padding:var(--accordion-item-details-padding,var(--size-3) var(--size-4));font-size:var(--accordion-item-title);cursor:pointer;-webkit-user-select:none;user-select:none;background:var(--accordion-item-bg);border:var(--border) solid var(--accordion-item-border-color);border-radius:var(--accordion-details-radius);transition:all var(--accordion-item-transition);outline:none;align-items:center;list-style:none;display:flex;position:relative}summary::-webkit-details-marker{display:none}summary:focus{outline:none}summary:focus-visible{outline:var(--border-2) solid currentcolor;outline-offset:var(--border-2);box-shadow:0 0 0 3px color-mix(in srgb, currentcolor 20%, transparent)}.header-content{flex-direction:column;flex:1;min-width:0;display:flex}.subtitle{font-size:var(--accordion-item-subtitle-size);line-height:var(--leading-normal);color:var(--accordion-item-subtitle-color,var(--text-color-secondary))}.title{text-overflow:ellipsis;font-weight:var(--font-medium);color:var(--accordion-item-title-color,var(--text-color-heading));white-space:nowrap;overflow:hidden}.content-wrapper{font-size:var(--accordion-item-body);background:var(--accordion-item-bg);border-inline:1px solid var(--accordion-item-border-color);border-bottom:1px solid var(--accordion-item-border-color);border-radius:var(--accordion-summary-radius);transition:grid-template-rows var(--accordion-item-transition);grid-template-rows:0fr;display:grid}details[open] .content-wrapper{grid-template-rows:1fr}.content-inner{padding:var(--accordion-item-summary-padding,var(--size-2) var(--size-4));overflow:hidden}}@layer buildit.variants{:host,:host([variant=solid]){--accordion-item-bg:var(--color-contrast-50);--accordion-item-border-color:transparent}:host summary:hover,:host([variant=solid]) summary:hover{--accordion-item-bg:var(--color-contrast-200)}:host([variant=flat]){--accordion-item-bg:var(--color-contrast-100)}:host([variant=flat]) summary:hover{--accordion-item-bg:var(--color-contrast-200)}:host([variant=bordered]){--accordion-item-bg:var(--color-contrast-100);--accordion-item-border-color:var(--color-contrast-300);box-shadow:var(--inset-shadow-xs), var(--shadow-2xs)}:host([variant=bordered]) summary:hover{background:var(--color-contrast-200)}:host([variant=outline]){--accordion-item-bg:transparent;--accordion-item-border-color:var(--color-contrast-300)}:host([variant=outline]) summary:hover{background:var(--color-contrast-300)}:host([variant=ghost]){--accordion-item-bg:transparent;--accordion-item-border-color:transparent}:host([variant=ghost]) summary:hover{background:var(--color-contrast-200)}:host([variant=text]){--accordion-item-bg:transparent;--accordion-item-border-color:transparent}:host([variant=text]) summary:hover{background:0 0}:host([variant=glass]) details,:host([variant=frost]) details{border-radius:inherit}:host([variant=glass]) summary,:host([variant=frost]) summary{border-radius:inherit;-webkit-backdrop-filter:blur(var(--blur-lg)) saturate(180%);backdrop-filter:blur(var(--blur-lg)) saturate(180%)}:host([variant=glass]) .content-wrapper,:host([variant=frost]) .content-wrapper{-webkit-backdrop-filter:blur(var(--blur-lg)) saturate(180%);backdrop-filter:blur(var(--blur-lg)) saturate(180%);border-radius:0}:host([variant=glass]){--accordion-item-bg:color-mix(in srgb, var(--color-secondary) 30%, var(--color-contrast) 10%);--accordion-item-border-color:transparent;--accordion-item-title-color:color-mix(in srgb, var(--color-secondary-contrast) 100%, transparent);--accordion-item-subtitle-color:color-mix(in srgb, var(--color-secondary-contrast) 60%, transparent);--accordion-item-body-color:color-mix(in srgb, var(--color-secondary-contrast) 80%, transparent)}:host([variant=glass]) summary{text-shadow:var(--text-shadow-xs)}:host([variant=glass]) summary:hover{background:color-mix(in srgb, var(--color-secondary) 20%, transparent)}:host([variant=glass]) .content-wrapper{filter:brightness(1.05)}:host([variant=frost]){--accordion-item-bg:color-mix(in srgb, var(--color-canvas) 55%, transparent);--accordion-item-border-color:transparent}:host([variant=frost]) summary{text-shadow:var(--text-shadow-2xs)}:host([variant=frost]) summary:hover{background:color-mix(in srgb, var(--color-canvas) 20%, transparent)}:host([size=sm]){--accordion-item-details-padding:var(--size-2) var(--size-4);--accordion-item-summary-padding:var(--size-1) var(--size-5);--accordion-item-title:var(--text-sm);--accordion-item-subtitle-size:var(--text-xs);--accordion-item-body:var(--text-xs)}:host(:not([size])),:host([size=md]){--accordion-item-details-padding:var(--size-3) var(--size-4);--accordion-item-summary-padding:var(--size-1) var(--size-5);--accordion-item-title:var(--text-base);--accordion-item-subtitle-size:var(--text-sm);--accordion-item-body:var(--text-sm)}:host([size=lg]){--accordion-item-details-padding:var(--size-4) var(--size-4);--accordion-item-summary-padding:var(--size-1) var(--size-5);--accordion-item-title:var(--text-lg);--accordion-item-subtitle-size:var(--text-base);--accordion-item-body:var(--text-base)}:host([disabled]){pointer-events:none;opacity:.6}.chevron{width:var(--size-5);height:var(--size-5);transition:transform var(--accordion-item-transition)}.chevron:not(:is(:lang(ae),:lang(ar),:lang(arc),:lang(bcc),:lang(bqi),:lang(ckb),:lang(dv),:lang(fa),:lang(glk),:lang(he),:lang(ku),:lang(mzn),:lang(nqo),:lang(pnb),:lang(ps),:lang(sd),:lang(ug),:lang(ur),:lang(yi))){margin-left:auto}.chevron:is(:lang(ae),:lang(ar),:lang(arc),:lang(bcc),:lang(bqi),:lang(ckb),:lang(dv),:lang(fa),:lang(glk),:lang(he),:lang(ku),:lang(mzn),:lang(nqo),:lang(pnb),:lang(ps),:lang(sd),:lang(ug),:lang(ur),:lang(yi)){margin-right:auto}details[open] .chevron{transform:rotate(-90deg)}:host([expanded]){--accordion-details-radius:var(--rounded-lg) var(--rounded-lg) 0 0;--accordion-summary-radius:0 0 var(--rounded-lg) var(--rounded-lg)}@media (forced-colors:active){summary{border-color:buttontext}}}`;exports.default=e;
|
|
2
|
+
//# sourceMappingURL=accordion-item.css?inline.cjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"accordion-item.css?inline.cjs","names":[],"sources":["../../../src/disclosure/accordion-item/accordion-item.css?inline"],"sourcesContent":["@layer buildit.base {\n /* ========================================\n Base Styles & Defaults\n ======================================== */\n\n :host {\n display: block;\n color: var(--accordion-item-body-color, var(--text-color-body));\n\n --accordion-details-radius: var(--rounded-lg);\n --accordion-item-transition: var(--transition-normal);\n }\n\n details {\n width: 100%;\n overflow: hidden;\n border-radius: var(--accordion-item-radius);\n transition: all var(--accordion-item-transition);\n }\n\n summary {\n position: relative;\n display: flex;\n gap: var(--size-4);\n align-items: center;\n min-height: var(--_touch-target);\n padding: var(--accordion-item-details-padding, var(--size-3) var(--size-4));\n font-size: var(--accordion-item-title);\n cursor: pointer;\n user-select: none;\n outline: none;\n list-style: none;\n background: var(--accordion-item-bg);\n border: var(--border) solid var(--accordion-item-border-color);\n border-radius: var(--accordion-details-radius);\n transition: all var(--accordion-item-transition);\n }\n\n summary::-webkit-details-marker {\n display: none;\n }\n\n summary:focus {\n outline: none;\n }\n\n summary:focus-visible {\n outline: var(--border-2) solid currentcolor;\n outline-offset: var(--border-2);\n box-shadow: 0 0 0 3px color-mix(in srgb, currentcolor 20%, transparent);\n }\n\n .header-content {\n display: flex;\n flex: 1;\n flex-direction: column;\n min-width: 0;\n }\n\n .subtitle {\n font-size: var(--accordion-item-subtitle-size);\n line-height: var(--leading-normal);\n color: var(--accordion-item-subtitle-color, var(--text-color-secondary));\n }\n\n .title {\n overflow: hidden;\n text-overflow: ellipsis;\n font-weight: var(--font-medium);\n color: var(--accordion-item-title-color, var(--text-color-heading));\n white-space: nowrap;\n }\n\n .content-wrapper {\n display: grid;\n grid-template-rows: 0fr;\n font-size: var(--accordion-item-body);\n background: var(--accordion-item-bg);\n border-inline: 1px solid var(--accordion-item-border-color);\n border-bottom: 1px solid var(--accordion-item-border-color);\n border-radius: var(--accordion-summary-radius);\n transition: grid-template-rows var(--accordion-item-transition);\n }\n\n details[open] .content-wrapper {\n grid-template-rows: 1fr;\n }\n\n .content-inner {\n padding: var(--accordion-item-summary-padding, var(--size-2) var(--size-4));\n overflow: hidden;\n }\n}\n\n@layer buildit.variants {\n /* ========================================\n Visual Variants\n ======================================== */\n\n :host,\n :host([variant='solid']) {\n --accordion-item-bg: var(--color-contrast-50);\n --accordion-item-border-color: transparent;\n }\n\n :host summary:hover,\n :host([variant='solid']) summary:hover {\n --accordion-item-bg: var(--color-contrast-200);\n }\n\n :host([variant='flat']) {\n --accordion-item-bg: var(--color-contrast-100);\n }\n\n :host([variant='flat']) summary:hover {\n --accordion-item-bg: var(--color-contrast-200);\n }\n\n :host([variant='bordered']) {\n --accordion-item-bg: var(--color-contrast-100);\n --accordion-item-border-color: var(--color-contrast-300);\n\n box-shadow: var(--inset-shadow-xs), var(--shadow-2xs);\n }\n\n :host([variant='bordered']) summary:hover {\n background: var(--color-contrast-200);\n }\n\n :host([variant='outline']) {\n --accordion-item-bg: transparent;\n --accordion-item-border-color: var(--color-contrast-300);\n }\n\n :host([variant='outline']) summary:hover {\n background: var(--color-contrast-300);\n }\n\n :host([variant='ghost']) {\n --accordion-item-bg: transparent;\n --accordion-item-border-color: transparent;\n }\n\n :host([variant='ghost']) summary:hover {\n background: var(--color-contrast-200);\n }\n\n :host([variant='text']) {\n --accordion-item-bg: transparent;\n --accordion-item-border-color: transparent;\n }\n\n :host([variant='text']) summary:hover {\n background: transparent;\n }\n\n /* Glass & Frost - Shared Styles */\n :host([variant='glass']) details,\n :host([variant='frost']) details {\n border-radius: inherit;\n }\n\n :host([variant='glass']) summary,\n :host([variant='frost']) summary {\n border-radius: inherit;\n backdrop-filter: blur(var(--blur-lg)) saturate(180%);\n }\n\n :host([variant='glass']) .content-wrapper,\n :host([variant='frost']) .content-wrapper {\n border-radius: 0;\n backdrop-filter: blur(var(--blur-lg)) saturate(180%);\n }\n\n /* Glass */\n :host([variant='glass']) {\n --accordion-item-bg: color-mix(in srgb, var(--color-secondary) 30%, var(--color-contrast) 10%);\n --accordion-item-border-color: transparent;\n --accordion-item-title-color: color-mix(in srgb, var(--color-secondary-contrast) 100%, transparent);\n --accordion-item-subtitle-color: color-mix(in srgb, var(--color-secondary-contrast) 60%, transparent);\n --accordion-item-body-color: color-mix(in srgb, var(--color-secondary-contrast) 80%, transparent);\n }\n\n :host([variant='glass']) summary {\n text-shadow: var(--text-shadow-xs);\n }\n\n :host([variant='glass']) summary:hover {\n background: color-mix(in srgb, var(--color-secondary) 20%, transparent);\n }\n\n :host([variant='glass']) .content-wrapper {\n filter: brightness(1.05);\n }\n\n /* Frost */\n :host([variant='frost']) {\n --accordion-item-bg: color-mix(in srgb, var(--color-canvas) 55%, transparent);\n --accordion-item-border-color: transparent;\n }\n\n :host([variant='frost']) summary {\n text-shadow: var(--text-shadow-2xs);\n }\n\n :host([variant='frost']) summary:hover {\n background: color-mix(in srgb, var(--color-canvas) 20%, transparent);\n }\n\n /* ========================================\n Size Variants\n ======================================== */\n\n :host([size='sm']) {\n --accordion-item-details-padding: var(--size-2) var(--size-4);\n --accordion-item-summary-padding: var(--size-1) var(--size-5);\n --accordion-item-title: var(--text-sm);\n --accordion-item-subtitle-size: var(--text-xs);\n --accordion-item-body: var(--text-xs);\n }\n\n :host(:not([size])),\n :host([size='md']) {\n --accordion-item-details-padding: var(--size-3) var(--size-4);\n --accordion-item-summary-padding: var(--size-1) var(--size-5);\n --accordion-item-title: var(--text-base);\n --accordion-item-subtitle-size: var(--text-sm);\n --accordion-item-body: var(--text-sm);\n }\n\n :host([size='lg']) {\n --accordion-item-details-padding: var(--size-4) var(--size-4);\n --accordion-item-summary-padding: var(--size-1) var(--size-5);\n --accordion-item-title: var(--text-lg);\n --accordion-item-subtitle-size: var(--text-base);\n --accordion-item-body: var(--text-base);\n }\n\n /* ========================================\n States\n ======================================== */\n\n :host([disabled]) {\n pointer-events: none;\n opacity: 0.6;\n }\n\n /* ========================================\n Chevron Animation\n ======================================== */\n\n .chevron {\n width: var(--size-5);\n height: var(--size-5);\n margin-inline-start: auto;\n transition: transform var(--accordion-item-transition);\n }\n\n details[open] .chevron {\n transform: rotate(-90deg);\n }\n\n /* Expanded state - adjust border radius */\n :host([expanded]) {\n --accordion-details-radius: var(--rounded-lg) var(--rounded-lg) 0 0;\n --accordion-summary-radius: 0 0 var(--rounded-lg) var(--rounded-lg);\n }\n\n @media (forced-colors: active) {\n /* Default variant uses a transparent border — ensure a visible border\n renders in HCM so the summary is distinguishable from the body */\n summary {\n border-color: ButtonText;\n }\n }\n}\n"],"mappings":""}
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
//#region src/disclosure/accordion-item/accordion-item.css?inline
|
|
2
|
+
var e = "@layer buildit.base{:host{color:var(--accordion-item-body-color,var(--text-color-body));--accordion-details-radius:var(--rounded-lg);--accordion-item-transition:var(--transition-normal);display:block}details{border-radius:var(--accordion-item-radius);width:100%;transition:all var(--accordion-item-transition);overflow:hidden}summary{gap:var(--size-4);min-height:var(--_touch-target);padding:var(--accordion-item-details-padding,var(--size-3) var(--size-4));font-size:var(--accordion-item-title);cursor:pointer;-webkit-user-select:none;user-select:none;background:var(--accordion-item-bg);border:var(--border) solid var(--accordion-item-border-color);border-radius:var(--accordion-details-radius);transition:all var(--accordion-item-transition);outline:none;align-items:center;list-style:none;display:flex;position:relative}summary::-webkit-details-marker{display:none}summary:focus{outline:none}summary:focus-visible{outline:var(--border-2) solid currentcolor;outline-offset:var(--border-2);box-shadow:0 0 0 3px color-mix(in srgb, currentcolor 20%, transparent)}.header-content{flex-direction:column;flex:1;min-width:0;display:flex}.subtitle{font-size:var(--accordion-item-subtitle-size);line-height:var(--leading-normal);color:var(--accordion-item-subtitle-color,var(--text-color-secondary))}.title{text-overflow:ellipsis;font-weight:var(--font-medium);color:var(--accordion-item-title-color,var(--text-color-heading));white-space:nowrap;overflow:hidden}.content-wrapper{font-size:var(--accordion-item-body);background:var(--accordion-item-bg);border-inline:1px solid var(--accordion-item-border-color);border-bottom:1px solid var(--accordion-item-border-color);border-radius:var(--accordion-summary-radius);transition:grid-template-rows var(--accordion-item-transition);grid-template-rows:0fr;display:grid}details[open] .content-wrapper{grid-template-rows:1fr}.content-inner{padding:var(--accordion-item-summary-padding,var(--size-2) var(--size-4));overflow:hidden}}@layer buildit.variants{:host,:host([variant=solid]){--accordion-item-bg:var(--color-contrast-50);--accordion-item-border-color:transparent}:host summary:hover,:host([variant=solid]) summary:hover{--accordion-item-bg:var(--color-contrast-200)}:host([variant=flat]){--accordion-item-bg:var(--color-contrast-100)}:host([variant=flat]) summary:hover{--accordion-item-bg:var(--color-contrast-200)}:host([variant=bordered]){--accordion-item-bg:var(--color-contrast-100);--accordion-item-border-color:var(--color-contrast-300);box-shadow:var(--inset-shadow-xs), var(--shadow-2xs)}:host([variant=bordered]) summary:hover{background:var(--color-contrast-200)}:host([variant=outline]){--accordion-item-bg:transparent;--accordion-item-border-color:var(--color-contrast-300)}:host([variant=outline]) summary:hover{background:var(--color-contrast-300)}:host([variant=ghost]){--accordion-item-bg:transparent;--accordion-item-border-color:transparent}:host([variant=ghost]) summary:hover{background:var(--color-contrast-200)}:host([variant=text]){--accordion-item-bg:transparent;--accordion-item-border-color:transparent}:host([variant=text]) summary:hover{background:0 0}:host([variant=glass]) details,:host([variant=frost]) details{border-radius:inherit}:host([variant=glass]) summary,:host([variant=frost]) summary{border-radius:inherit;-webkit-backdrop-filter:blur(var(--blur-lg)) saturate(180%);backdrop-filter:blur(var(--blur-lg)) saturate(180%)}:host([variant=glass]) .content-wrapper,:host([variant=frost]) .content-wrapper{-webkit-backdrop-filter:blur(var(--blur-lg)) saturate(180%);backdrop-filter:blur(var(--blur-lg)) saturate(180%);border-radius:0}:host([variant=glass]){--accordion-item-bg:color-mix(in srgb, var(--color-secondary) 30%, var(--color-contrast) 10%);--accordion-item-border-color:transparent;--accordion-item-title-color:color-mix(in srgb, var(--color-secondary-contrast) 100%, transparent);--accordion-item-subtitle-color:color-mix(in srgb, var(--color-secondary-contrast) 60%, transparent);--accordion-item-body-color:color-mix(in srgb, var(--color-secondary-contrast) 80%, transparent)}:host([variant=glass]) summary{text-shadow:var(--text-shadow-xs)}:host([variant=glass]) summary:hover{background:color-mix(in srgb, var(--color-secondary) 20%, transparent)}:host([variant=glass]) .content-wrapper{filter:brightness(1.05)}:host([variant=frost]){--accordion-item-bg:color-mix(in srgb, var(--color-canvas) 55%, transparent);--accordion-item-border-color:transparent}:host([variant=frost]) summary{text-shadow:var(--text-shadow-2xs)}:host([variant=frost]) summary:hover{background:color-mix(in srgb, var(--color-canvas) 20%, transparent)}:host([size=sm]){--accordion-item-details-padding:var(--size-2) var(--size-4);--accordion-item-summary-padding:var(--size-1) var(--size-5);--accordion-item-title:var(--text-sm);--accordion-item-subtitle-size:var(--text-xs);--accordion-item-body:var(--text-xs)}:host(:not([size])),:host([size=md]){--accordion-item-details-padding:var(--size-3) var(--size-4);--accordion-item-summary-padding:var(--size-1) var(--size-5);--accordion-item-title:var(--text-base);--accordion-item-subtitle-size:var(--text-sm);--accordion-item-body:var(--text-sm)}:host([size=lg]){--accordion-item-details-padding:var(--size-4) var(--size-4);--accordion-item-summary-padding:var(--size-1) var(--size-5);--accordion-item-title:var(--text-lg);--accordion-item-subtitle-size:var(--text-base);--accordion-item-body:var(--text-base)}:host([disabled]){pointer-events:none;opacity:.6}.chevron{width:var(--size-5);height:var(--size-5);transition:transform var(--accordion-item-transition)}.chevron:not(:is(:lang(ae),:lang(ar),:lang(arc),:lang(bcc),:lang(bqi),:lang(ckb),:lang(dv),:lang(fa),:lang(glk),:lang(he),:lang(ku),:lang(mzn),:lang(nqo),:lang(pnb),:lang(ps),:lang(sd),:lang(ug),:lang(ur),:lang(yi))){margin-left:auto}.chevron:is(:lang(ae),:lang(ar),:lang(arc),:lang(bcc),:lang(bqi),:lang(ckb),:lang(dv),:lang(fa),:lang(glk),:lang(he),:lang(ku),:lang(mzn),:lang(nqo),:lang(pnb),:lang(ps),:lang(sd),:lang(ug),:lang(ur),:lang(yi)){margin-right:auto}details[open] .chevron{transform:rotate(-90deg)}:host([expanded]){--accordion-details-radius:var(--rounded-lg) var(--rounded-lg) 0 0;--accordion-summary-radius:0 0 var(--rounded-lg) var(--rounded-lg)}@media (forced-colors:active){summary{border-color:buttontext}}}";
|
|
3
|
+
//#endregion
|
|
4
|
+
export { e as default };
|
|
5
|
+
|
|
6
|
+
//# sourceMappingURL=accordion-item.css?inline.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"accordion-item.css?inline.js","names":[],"sources":["../../../src/disclosure/accordion-item/accordion-item.css?inline"],"sourcesContent":["@layer buildit.base {\n /* ========================================\n Base Styles & Defaults\n ======================================== */\n\n :host {\n display: block;\n color: var(--accordion-item-body-color, var(--text-color-body));\n\n --accordion-details-radius: var(--rounded-lg);\n --accordion-item-transition: var(--transition-normal);\n }\n\n details {\n width: 100%;\n overflow: hidden;\n border-radius: var(--accordion-item-radius);\n transition: all var(--accordion-item-transition);\n }\n\n summary {\n position: relative;\n display: flex;\n gap: var(--size-4);\n align-items: center;\n min-height: var(--_touch-target);\n padding: var(--accordion-item-details-padding, var(--size-3) var(--size-4));\n font-size: var(--accordion-item-title);\n cursor: pointer;\n user-select: none;\n outline: none;\n list-style: none;\n background: var(--accordion-item-bg);\n border: var(--border) solid var(--accordion-item-border-color);\n border-radius: var(--accordion-details-radius);\n transition: all var(--accordion-item-transition);\n }\n\n summary::-webkit-details-marker {\n display: none;\n }\n\n summary:focus {\n outline: none;\n }\n\n summary:focus-visible {\n outline: var(--border-2) solid currentcolor;\n outline-offset: var(--border-2);\n box-shadow: 0 0 0 3px color-mix(in srgb, currentcolor 20%, transparent);\n }\n\n .header-content {\n display: flex;\n flex: 1;\n flex-direction: column;\n min-width: 0;\n }\n\n .subtitle {\n font-size: var(--accordion-item-subtitle-size);\n line-height: var(--leading-normal);\n color: var(--accordion-item-subtitle-color, var(--text-color-secondary));\n }\n\n .title {\n overflow: hidden;\n text-overflow: ellipsis;\n font-weight: var(--font-medium);\n color: var(--accordion-item-title-color, var(--text-color-heading));\n white-space: nowrap;\n }\n\n .content-wrapper {\n display: grid;\n grid-template-rows: 0fr;\n font-size: var(--accordion-item-body);\n background: var(--accordion-item-bg);\n border-inline: 1px solid var(--accordion-item-border-color);\n border-bottom: 1px solid var(--accordion-item-border-color);\n border-radius: var(--accordion-summary-radius);\n transition: grid-template-rows var(--accordion-item-transition);\n }\n\n details[open] .content-wrapper {\n grid-template-rows: 1fr;\n }\n\n .content-inner {\n padding: var(--accordion-item-summary-padding, var(--size-2) var(--size-4));\n overflow: hidden;\n }\n}\n\n@layer buildit.variants {\n /* ========================================\n Visual Variants\n ======================================== */\n\n :host,\n :host([variant='solid']) {\n --accordion-item-bg: var(--color-contrast-50);\n --accordion-item-border-color: transparent;\n }\n\n :host summary:hover,\n :host([variant='solid']) summary:hover {\n --accordion-item-bg: var(--color-contrast-200);\n }\n\n :host([variant='flat']) {\n --accordion-item-bg: var(--color-contrast-100);\n }\n\n :host([variant='flat']) summary:hover {\n --accordion-item-bg: var(--color-contrast-200);\n }\n\n :host([variant='bordered']) {\n --accordion-item-bg: var(--color-contrast-100);\n --accordion-item-border-color: var(--color-contrast-300);\n\n box-shadow: var(--inset-shadow-xs), var(--shadow-2xs);\n }\n\n :host([variant='bordered']) summary:hover {\n background: var(--color-contrast-200);\n }\n\n :host([variant='outline']) {\n --accordion-item-bg: transparent;\n --accordion-item-border-color: var(--color-contrast-300);\n }\n\n :host([variant='outline']) summary:hover {\n background: var(--color-contrast-300);\n }\n\n :host([variant='ghost']) {\n --accordion-item-bg: transparent;\n --accordion-item-border-color: transparent;\n }\n\n :host([variant='ghost']) summary:hover {\n background: var(--color-contrast-200);\n }\n\n :host([variant='text']) {\n --accordion-item-bg: transparent;\n --accordion-item-border-color: transparent;\n }\n\n :host([variant='text']) summary:hover {\n background: transparent;\n }\n\n /* Glass & Frost - Shared Styles */\n :host([variant='glass']) details,\n :host([variant='frost']) details {\n border-radius: inherit;\n }\n\n :host([variant='glass']) summary,\n :host([variant='frost']) summary {\n border-radius: inherit;\n backdrop-filter: blur(var(--blur-lg)) saturate(180%);\n }\n\n :host([variant='glass']) .content-wrapper,\n :host([variant='frost']) .content-wrapper {\n border-radius: 0;\n backdrop-filter: blur(var(--blur-lg)) saturate(180%);\n }\n\n /* Glass */\n :host([variant='glass']) {\n --accordion-item-bg: color-mix(in srgb, var(--color-secondary) 30%, var(--color-contrast) 10%);\n --accordion-item-border-color: transparent;\n --accordion-item-title-color: color-mix(in srgb, var(--color-secondary-contrast) 100%, transparent);\n --accordion-item-subtitle-color: color-mix(in srgb, var(--color-secondary-contrast) 60%, transparent);\n --accordion-item-body-color: color-mix(in srgb, var(--color-secondary-contrast) 80%, transparent);\n }\n\n :host([variant='glass']) summary {\n text-shadow: var(--text-shadow-xs);\n }\n\n :host([variant='glass']) summary:hover {\n background: color-mix(in srgb, var(--color-secondary) 20%, transparent);\n }\n\n :host([variant='glass']) .content-wrapper {\n filter: brightness(1.05);\n }\n\n /* Frost */\n :host([variant='frost']) {\n --accordion-item-bg: color-mix(in srgb, var(--color-canvas) 55%, transparent);\n --accordion-item-border-color: transparent;\n }\n\n :host([variant='frost']) summary {\n text-shadow: var(--text-shadow-2xs);\n }\n\n :host([variant='frost']) summary:hover {\n background: color-mix(in srgb, var(--color-canvas) 20%, transparent);\n }\n\n /* ========================================\n Size Variants\n ======================================== */\n\n :host([size='sm']) {\n --accordion-item-details-padding: var(--size-2) var(--size-4);\n --accordion-item-summary-padding: var(--size-1) var(--size-5);\n --accordion-item-title: var(--text-sm);\n --accordion-item-subtitle-size: var(--text-xs);\n --accordion-item-body: var(--text-xs);\n }\n\n :host(:not([size])),\n :host([size='md']) {\n --accordion-item-details-padding: var(--size-3) var(--size-4);\n --accordion-item-summary-padding: var(--size-1) var(--size-5);\n --accordion-item-title: var(--text-base);\n --accordion-item-subtitle-size: var(--text-sm);\n --accordion-item-body: var(--text-sm);\n }\n\n :host([size='lg']) {\n --accordion-item-details-padding: var(--size-4) var(--size-4);\n --accordion-item-summary-padding: var(--size-1) var(--size-5);\n --accordion-item-title: var(--text-lg);\n --accordion-item-subtitle-size: var(--text-base);\n --accordion-item-body: var(--text-base);\n }\n\n /* ========================================\n States\n ======================================== */\n\n :host([disabled]) {\n pointer-events: none;\n opacity: 0.6;\n }\n\n /* ========================================\n Chevron Animation\n ======================================== */\n\n .chevron {\n width: var(--size-5);\n height: var(--size-5);\n margin-inline-start: auto;\n transition: transform var(--accordion-item-transition);\n }\n\n details[open] .chevron {\n transform: rotate(-90deg);\n }\n\n /* Expanded state - adjust border radius */\n :host([expanded]) {\n --accordion-details-radius: var(--rounded-lg) var(--rounded-lg) 0 0;\n --accordion-summary-radius: 0 0 var(--rounded-lg) var(--rounded-lg);\n }\n\n @media (forced-colors: active) {\n /* Default variant uses a transparent border — ensure a visible border\n renders in HCM so the summary is distinguishable from the body */\n summary {\n border-color: ButtonText;\n }\n }\n}\n"],"mappings":""}
|
|
@@ -0,0 +1,62 @@
|
|
|
1
|
+
import type { ComponentSize, VisualVariant } from '../../types';
|
|
2
|
+
/** Accordion item component properties */
|
|
3
|
+
export type BitAccordionItemEvents = {
|
|
4
|
+
collapse: {
|
|
5
|
+
expanded: boolean;
|
|
6
|
+
item: HTMLElement;
|
|
7
|
+
};
|
|
8
|
+
expand: {
|
|
9
|
+
expanded: boolean;
|
|
10
|
+
item: HTMLElement;
|
|
11
|
+
};
|
|
12
|
+
};
|
|
13
|
+
export type BitAccordionItemProps = {
|
|
14
|
+
/** Disable accordion item interaction */
|
|
15
|
+
disabled?: boolean;
|
|
16
|
+
/** Whether the item is expanded/open */
|
|
17
|
+
expanded?: boolean;
|
|
18
|
+
/** Item size */
|
|
19
|
+
size?: ComponentSize;
|
|
20
|
+
/** Visual style variant */
|
|
21
|
+
variant?: VisualVariant;
|
|
22
|
+
};
|
|
23
|
+
/**
|
|
24
|
+
* An individual accordion item with expand/collapse functionality using native details/summary.
|
|
25
|
+
*
|
|
26
|
+
* @element bit-accordion-item
|
|
27
|
+
*
|
|
28
|
+
* @attr {boolean} expanded - Whether the item is expanded/open
|
|
29
|
+
* @attr {boolean} disabled - Disable accordion item interaction
|
|
30
|
+
* @attr {string} size - Item size: 'sm' | 'md' | 'lg'
|
|
31
|
+
* @attr {string} variant - Visual variant: 'solid' | 'flat' | 'bordered' | 'outline' | 'ghost' | 'text' | 'glass' | 'frost'
|
|
32
|
+
*
|
|
33
|
+
* @fires expand - Emitted when item expands
|
|
34
|
+
* @fires collapse - Emitted when item collapses
|
|
35
|
+
*
|
|
36
|
+
* @slot prefix - Content before the title (e.g., icons)
|
|
37
|
+
* @slot title - Main accordion item title
|
|
38
|
+
* @slot subtitle - Optional subtitle text
|
|
39
|
+
* @slot suffix - Content after the title (e.g., badges)
|
|
40
|
+
* @slot - Accordion item content (shown when expanded)
|
|
41
|
+
*
|
|
42
|
+
* @cssprop --accordion-item-bg - Background color
|
|
43
|
+
* @cssprop --accordion-item-border-color - Border color
|
|
44
|
+
* @cssprop --accordion-item-title-color - Title text color
|
|
45
|
+
* @cssprop --accordion-item-subtitle-color - Subtitle text color
|
|
46
|
+
* @cssprop --accordion-item-body-color - Body text color
|
|
47
|
+
* @cssprop --accordion-item-radius - Border radius
|
|
48
|
+
* @cssprop --accordion-item-transition - Transition duration
|
|
49
|
+
* @cssprop --accordion-item-title - Title font size
|
|
50
|
+
* @cssprop --accordion-item-subtitle-size - Subtitle font size
|
|
51
|
+
* @cssprop --accordion-item-body - Body font size
|
|
52
|
+
* @cssprop --accordion-item-details-padding - Summary/header padding
|
|
53
|
+
* @cssprop --accordion-item-summary-padding - Content padding
|
|
54
|
+
*
|
|
55
|
+
* @example
|
|
56
|
+
* ```html
|
|
57
|
+
* <bit-accordion-item><span slot="title">Click to expand</span><p>Content</p></bit-accordion-item>
|
|
58
|
+
* <bit-accordion-item expanded variant="bordered"><span slot="title">Title</span><p>Content</p></bit-accordion-item>
|
|
59
|
+
* ```
|
|
60
|
+
*/
|
|
61
|
+
export declare const ACCORDION_ITEM_TAG: string;
|
|
62
|
+
//# sourceMappingURL=accordion-item.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"accordion-item.d.ts","sourceRoot":"","sources":["../../../src/disclosure/accordion-item/accordion-item.ts"],"names":[],"mappings":"AAaA,OAAO,KAAK,EAAE,aAAa,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AAMhE,0CAA0C;AAE1C,MAAM,MAAM,sBAAsB,GAAG;IACnC,QAAQ,EAAE;QAAE,QAAQ,EAAE,OAAO,CAAC;QAAC,IAAI,EAAE,WAAW,CAAA;KAAE,CAAC;IACnD,MAAM,EAAE;QAAE,QAAQ,EAAE,OAAO,CAAC;QAAC,IAAI,EAAE,WAAW,CAAA;KAAE,CAAC;CAClD,CAAC;AAEF,MAAM,MAAM,qBAAqB,GAAG;IAClC,yCAAyC;IACzC,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,wCAAwC;IACxC,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,gBAAgB;IAChB,IAAI,CAAC,EAAE,aAAa,CAAC;IACrB,2BAA2B;IAC3B,OAAO,CAAC,EAAE,aAAa,CAAC;CACzB,CAAC;AAEF;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAqCG;AAEH,eAAO,MAAM,kBAAkB,QAsF7B,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
require(`../accordion.cjs`),require(`../tabs.cjs`),require(`../accordion-item.cjs`),require(`../tab-item.cjs`),require(`../tab-panel.cjs`);
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
export { ACCORDION_CTX, ACCORDION_TAG } from './accordion/accordion';
|
|
2
|
+
export type { AccordionContext, BitAccordionEvents, BitAccordionProps } from './accordion/accordion';
|
|
3
|
+
export { TABS_CTX, TABS_TAG } from './tabs/tabs';
|
|
4
|
+
export type { BitTabsEvents, BitTabsProps, TabsContext } from './tabs/tabs';
|
|
5
|
+
export { ACCORDION_ITEM_TAG } from './accordion-item/accordion-item';
|
|
6
|
+
export type { BitAccordionItemEvents, BitAccordionItemProps } from './accordion-item/accordion-item';
|
|
7
|
+
export { TAB_ITEM_TAG } from './tab-item/tab-item';
|
|
8
|
+
export type { BitTabItemProps } from './tab-item/tab-item';
|
|
9
|
+
export { TAB_PANEL_TAG } from './tab-panel/tab-panel';
|
|
10
|
+
export type { BitTabPanelProps } from './tab-panel/tab-panel';
|
|
11
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/disclosure/index.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,aAAa,EAAE,aAAa,EAAE,MAAM,uBAAuB,CAAC;AACrE,YAAY,EAAE,gBAAgB,EAAE,kBAAkB,EAAE,iBAAiB,EAAE,MAAM,uBAAuB,CAAC;AACrG,OAAO,EAAE,QAAQ,EAAE,QAAQ,EAAE,MAAM,aAAa,CAAC;AACjD,YAAY,EAAE,aAAa,EAAE,YAAY,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AAC5E,OAAO,EAAE,kBAAkB,EAAE,MAAM,iCAAiC,CAAC;AACrE,YAAY,EAAE,sBAAsB,EAAE,qBAAqB,EAAE,MAAM,iCAAiC,CAAC;AACrG,OAAO,EAAE,YAAY,EAAE,MAAM,qBAAqB,CAAC;AACnD,YAAY,EAAE,eAAe,EAAE,MAAM,qBAAqB,CAAC;AAC3D,OAAO,EAAE,aAAa,EAAE,MAAM,uBAAuB,CAAC;AACtD,YAAY,EAAE,gBAAgB,EAAE,MAAM,uBAAuB,CAAC"}
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
var e=`@layer buildit.base{:host{--tab-item-transition:var(--transition-normal);--tab-item-radius:var(--rounded-lg);outline:none;display:inline-flex}button{gap:var(--size-2);width:100%;min-height:var(--_touch-target);padding:var(--tab-item-padding,var(--size-1-5) var(--size-4));font-family:inherit;font-size:var(--tab-item-font-size,var(--text-sm));font-weight:var(--font-medium);color:var(--tab-item-color,var(--text-color-secondary));white-space:nowrap;cursor:pointer;-webkit-user-select:none;user-select:none;border-radius:var(--tab-item-radius);transition:background var(--tab-item-transition), color var(--tab-item-transition), box-shadow var(--tab-item-transition);background:0 0;border:none;justify-content:center;align-items:center;display:inline-flex;position:relative}button:focus{outline:none}:host(:focus-visible) button,button:focus-visible{outline:var(--border-2) solid var(--_theme-focus);outline-offset:2px;box-shadow:0 0 0 3px var(--_theme-shadow)}}@layer buildit.variants{:host button:hover,:host([variant=solid]) button:hover{color:var(--text-color-heading);background:var(--color-contrast-200)}:host([active]) button,:host([variant=solid][active]) button{color:var(--text-color-heading);background:var(--color-contrast-0,var(--color-canvas));box-shadow:var(--shadow-xs), var(--inset-shadow-xs)}:host([variant=flat]) button:hover{color:var(--text-color-heading);background:var(--color-contrast-200)}:host([variant=flat][active]) button{color:var(--text-color-heading);background:var(--color-contrast-0,var(--color-canvas));box-shadow:var(--shadow-xs), var(--inset-shadow-xs)}:host([variant=bordered]) button:hover{color:var(--text-color-heading);background:var(--color-contrast-200)}:host([variant=bordered][active]) button{color:var(--text-color-heading);background:var(--color-contrast-0,var(--color-canvas));box-shadow:var(--shadow-xs)}:host([variant=ghost]) button:hover{color:var(--text-color-heading);background:var(--color-contrast-100)}:host([variant=ghost][active]) button{color:var(--_theme-contrast);background:var(--_theme-base)}:host([variant=glass]) button{color:color-mix(in srgb, var(--color-secondary-contrast) 70%, transparent);text-shadow:var(--text-shadow-2xs)}:host([variant=glass]) button:hover{color:var(--color-secondary-contrast);background:color-mix(in srgb, var(--color-secondary-contrast) 10%, transparent)}:host([variant=glass][active]) button{color:var(--color-secondary-contrast);background:color-mix(in srgb, var(--color-secondary-contrast) 15%, transparent);box-shadow:var(--shadow-xs), var(--inset-shadow-xs)}:host([variant=frost]) button{color:var(--text-color-secondary)}:host([variant=frost]) button:hover{color:var(--text-color-heading);background:color-mix(in srgb, var(--color-contrast) 10%, transparent)}:host([variant=frost][active]) button{color:var(--text-color-heading);background:color-mix(in srgb, var(--color-canvas) 60%, transparent);box-shadow:var(--shadow-xs), var(--inset-shadow-xs)}:host([size=sm]){--tab-item-font-size:var(--text-xs);--tab-item-padding:var(--size-1) var(--size-3)}:host(:not([size])),:host([size=md]){--tab-item-font-size:var(--text-sm);--tab-item-padding:var(--size-1-5) var(--size-4)}:host([size=lg]){--tab-item-font-size:var(--text-base);--tab-item-padding:var(--size-2) var(--size-5)}:host([disabled]){pointer-events:none;opacity:.5}@media (forced-colors:active){button:focus-visible{box-shadow:none;outline:2px solid highlight}:host([active]) button{outline-offset:-2px;outline:2px solid highlight}}}`;exports.default=e;
|
|
2
|
+
//# sourceMappingURL=tab-item.css?inline.cjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"tab-item.css?inline.cjs","names":[],"sources":["../../../src/disclosure/tab-item/tab-item.css?inline"],"sourcesContent":["@layer buildit.base {\n :host {\n display: inline-flex;\n outline: none;\n\n --tab-item-transition: var(--transition-normal);\n --tab-item-radius: var(--rounded-lg);\n }\n\n button {\n position: relative;\n display: inline-flex;\n gap: var(--size-2);\n align-items: center;\n justify-content: center;\n width: 100%;\n min-height: var(--_touch-target);\n padding: var(--tab-item-padding, var(--size-1-5) var(--size-4));\n font-family: inherit;\n font-size: var(--tab-item-font-size, var(--text-sm));\n font-weight: var(--font-medium);\n color: var(--tab-item-color, var(--text-color-secondary));\n white-space: nowrap;\n cursor: pointer;\n user-select: none;\n background: transparent;\n border: none;\n border-radius: var(--tab-item-radius);\n transition:\n background var(--tab-item-transition),\n color var(--tab-item-transition),\n box-shadow var(--tab-item-transition);\n }\n\n button:focus {\n outline: none;\n }\n\n :host(:focus-visible) button,\n button:focus-visible {\n outline: var(--border-2) solid var(--_theme-focus);\n outline-offset: 2px;\n box-shadow: 0 0 0 3px var(--_theme-shadow);\n }\n}\n\n@layer buildit.variants {\n /* ─── solid / default ─── */\n :host button:hover,\n :host([variant='solid']) button:hover {\n color: var(--text-color-heading);\n background: var(--color-contrast-200);\n }\n\n :host([active]) button,\n :host([variant='solid'][active]) button {\n color: var(--text-color-heading);\n background: var(--color-contrast-0, var(--color-canvas));\n box-shadow: var(--shadow-xs), var(--inset-shadow-xs);\n }\n\n /* ─── flat ─── */\n :host([variant='flat']) button:hover {\n color: var(--text-color-heading);\n background: var(--color-contrast-200);\n }\n\n :host([variant='flat'][active]) button {\n color: var(--text-color-heading);\n background: var(--color-contrast-0, var(--color-canvas));\n box-shadow: var(--shadow-xs), var(--inset-shadow-xs);\n }\n\n /* ─── bordered ─── */\n :host([variant='bordered']) button:hover {\n color: var(--text-color-heading);\n background: var(--color-contrast-200);\n }\n\n :host([variant='bordered'][active]) button {\n color: var(--text-color-heading);\n background: var(--color-contrast-0, var(--color-canvas));\n box-shadow: var(--shadow-xs);\n }\n\n /* ─── ghost ─── */\n :host([variant='ghost']) button:hover {\n color: var(--text-color-heading);\n background: var(--color-contrast-100);\n }\n\n :host([variant='ghost'][active]) button {\n color: var(--_theme-contrast);\n background: var(--_theme-base);\n }\n\n /* ─── glass ─── */\n :host([variant='glass']) button {\n color: color-mix(in srgb, var(--color-secondary-contrast) 70%, transparent);\n text-shadow: var(--text-shadow-2xs);\n }\n\n :host([variant='glass']) button:hover {\n color: var(--color-secondary-contrast);\n background: color-mix(in srgb, var(--color-secondary-contrast) 10%, transparent);\n }\n\n :host([variant='glass'][active]) button {\n color: var(--color-secondary-contrast);\n background: color-mix(in srgb, var(--color-secondary-contrast) 15%, transparent);\n box-shadow: var(--shadow-xs), var(--inset-shadow-xs);\n }\n\n /* ─── frost ─── */\n :host([variant='frost']) button {\n color: var(--text-color-secondary);\n }\n\n :host([variant='frost']) button:hover {\n color: var(--text-color-heading);\n background: color-mix(in srgb, var(--color-contrast) 10%, transparent);\n }\n\n :host([variant='frost'][active]) button {\n color: var(--text-color-heading);\n background: color-mix(in srgb, var(--color-canvas) 60%, transparent);\n box-shadow: var(--shadow-xs), var(--inset-shadow-xs);\n }\n\n /* ─── sizes ─── */\n :host([size='sm']) {\n --tab-item-font-size: var(--text-xs);\n --tab-item-padding: var(--size-1) var(--size-3);\n }\n\n :host(:not([size])),\n :host([size='md']) {\n --tab-item-font-size: var(--text-sm);\n --tab-item-padding: var(--size-1-5) var(--size-4);\n }\n\n :host([size='lg']) {\n --tab-item-font-size: var(--text-base);\n --tab-item-padding: var(--size-2) var(--size-5);\n }\n\n /* ─── disabled ─── */\n :host([disabled]) {\n pointer-events: none;\n opacity: 0.5;\n }\n\n @media (forced-colors: active) {\n /* Ensure focus ring is visible regardless of variant theme color */\n button:focus-visible {\n outline: 2px solid Highlight;\n box-shadow: none;\n }\n\n /* Active tab: box-shadow raised indicator is stripped; use outline inste\n ad so the selected tab remains distinguishable */\n :host([active]) button {\n outline: 2px solid Highlight;\n outline-offset: -2px;\n }\n }\n}\n"],"mappings":""}
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
//#region src/disclosure/tab-item/tab-item.css?inline
|
|
2
|
+
var e = "@layer buildit.base{:host{--tab-item-transition:var(--transition-normal);--tab-item-radius:var(--rounded-lg);outline:none;display:inline-flex}button{gap:var(--size-2);width:100%;min-height:var(--_touch-target);padding:var(--tab-item-padding,var(--size-1-5) var(--size-4));font-family:inherit;font-size:var(--tab-item-font-size,var(--text-sm));font-weight:var(--font-medium);color:var(--tab-item-color,var(--text-color-secondary));white-space:nowrap;cursor:pointer;-webkit-user-select:none;user-select:none;border-radius:var(--tab-item-radius);transition:background var(--tab-item-transition), color var(--tab-item-transition), box-shadow var(--tab-item-transition);background:0 0;border:none;justify-content:center;align-items:center;display:inline-flex;position:relative}button:focus{outline:none}:host(:focus-visible) button,button:focus-visible{outline:var(--border-2) solid var(--_theme-focus);outline-offset:2px;box-shadow:0 0 0 3px var(--_theme-shadow)}}@layer buildit.variants{:host button:hover,:host([variant=solid]) button:hover{color:var(--text-color-heading);background:var(--color-contrast-200)}:host([active]) button,:host([variant=solid][active]) button{color:var(--text-color-heading);background:var(--color-contrast-0,var(--color-canvas));box-shadow:var(--shadow-xs), var(--inset-shadow-xs)}:host([variant=flat]) button:hover{color:var(--text-color-heading);background:var(--color-contrast-200)}:host([variant=flat][active]) button{color:var(--text-color-heading);background:var(--color-contrast-0,var(--color-canvas));box-shadow:var(--shadow-xs), var(--inset-shadow-xs)}:host([variant=bordered]) button:hover{color:var(--text-color-heading);background:var(--color-contrast-200)}:host([variant=bordered][active]) button{color:var(--text-color-heading);background:var(--color-contrast-0,var(--color-canvas));box-shadow:var(--shadow-xs)}:host([variant=ghost]) button:hover{color:var(--text-color-heading);background:var(--color-contrast-100)}:host([variant=ghost][active]) button{color:var(--_theme-contrast);background:var(--_theme-base)}:host([variant=glass]) button{color:color-mix(in srgb, var(--color-secondary-contrast) 70%, transparent);text-shadow:var(--text-shadow-2xs)}:host([variant=glass]) button:hover{color:var(--color-secondary-contrast);background:color-mix(in srgb, var(--color-secondary-contrast) 10%, transparent)}:host([variant=glass][active]) button{color:var(--color-secondary-contrast);background:color-mix(in srgb, var(--color-secondary-contrast) 15%, transparent);box-shadow:var(--shadow-xs), var(--inset-shadow-xs)}:host([variant=frost]) button{color:var(--text-color-secondary)}:host([variant=frost]) button:hover{color:var(--text-color-heading);background:color-mix(in srgb, var(--color-contrast) 10%, transparent)}:host([variant=frost][active]) button{color:var(--text-color-heading);background:color-mix(in srgb, var(--color-canvas) 60%, transparent);box-shadow:var(--shadow-xs), var(--inset-shadow-xs)}:host([size=sm]){--tab-item-font-size:var(--text-xs);--tab-item-padding:var(--size-1) var(--size-3)}:host(:not([size])),:host([size=md]){--tab-item-font-size:var(--text-sm);--tab-item-padding:var(--size-1-5) var(--size-4)}:host([size=lg]){--tab-item-font-size:var(--text-base);--tab-item-padding:var(--size-2) var(--size-5)}:host([disabled]){pointer-events:none;opacity:.5}@media (forced-colors:active){button:focus-visible{box-shadow:none;outline:2px solid highlight}:host([active]) button{outline-offset:-2px;outline:2px solid highlight}}}";
|
|
3
|
+
//#endregion
|
|
4
|
+
export { e as default };
|
|
5
|
+
|
|
6
|
+
//# sourceMappingURL=tab-item.css?inline.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"tab-item.css?inline.js","names":[],"sources":["../../../src/disclosure/tab-item/tab-item.css?inline"],"sourcesContent":["@layer buildit.base {\n :host {\n display: inline-flex;\n outline: none;\n\n --tab-item-transition: var(--transition-normal);\n --tab-item-radius: var(--rounded-lg);\n }\n\n button {\n position: relative;\n display: inline-flex;\n gap: var(--size-2);\n align-items: center;\n justify-content: center;\n width: 100%;\n min-height: var(--_touch-target);\n padding: var(--tab-item-padding, var(--size-1-5) var(--size-4));\n font-family: inherit;\n font-size: var(--tab-item-font-size, var(--text-sm));\n font-weight: var(--font-medium);\n color: var(--tab-item-color, var(--text-color-secondary));\n white-space: nowrap;\n cursor: pointer;\n user-select: none;\n background: transparent;\n border: none;\n border-radius: var(--tab-item-radius);\n transition:\n background var(--tab-item-transition),\n color var(--tab-item-transition),\n box-shadow var(--tab-item-transition);\n }\n\n button:focus {\n outline: none;\n }\n\n :host(:focus-visible) button,\n button:focus-visible {\n outline: var(--border-2) solid var(--_theme-focus);\n outline-offset: 2px;\n box-shadow: 0 0 0 3px var(--_theme-shadow);\n }\n}\n\n@layer buildit.variants {\n /* ─── solid / default ─── */\n :host button:hover,\n :host([variant='solid']) button:hover {\n color: var(--text-color-heading);\n background: var(--color-contrast-200);\n }\n\n :host([active]) button,\n :host([variant='solid'][active]) button {\n color: var(--text-color-heading);\n background: var(--color-contrast-0, var(--color-canvas));\n box-shadow: var(--shadow-xs), var(--inset-shadow-xs);\n }\n\n /* ─── flat ─── */\n :host([variant='flat']) button:hover {\n color: var(--text-color-heading);\n background: var(--color-contrast-200);\n }\n\n :host([variant='flat'][active]) button {\n color: var(--text-color-heading);\n background: var(--color-contrast-0, var(--color-canvas));\n box-shadow: var(--shadow-xs), var(--inset-shadow-xs);\n }\n\n /* ─── bordered ─── */\n :host([variant='bordered']) button:hover {\n color: var(--text-color-heading);\n background: var(--color-contrast-200);\n }\n\n :host([variant='bordered'][active]) button {\n color: var(--text-color-heading);\n background: var(--color-contrast-0, var(--color-canvas));\n box-shadow: var(--shadow-xs);\n }\n\n /* ─── ghost ─── */\n :host([variant='ghost']) button:hover {\n color: var(--text-color-heading);\n background: var(--color-contrast-100);\n }\n\n :host([variant='ghost'][active]) button {\n color: var(--_theme-contrast);\n background: var(--_theme-base);\n }\n\n /* ─── glass ─── */\n :host([variant='glass']) button {\n color: color-mix(in srgb, var(--color-secondary-contrast) 70%, transparent);\n text-shadow: var(--text-shadow-2xs);\n }\n\n :host([variant='glass']) button:hover {\n color: var(--color-secondary-contrast);\n background: color-mix(in srgb, var(--color-secondary-contrast) 10%, transparent);\n }\n\n :host([variant='glass'][active]) button {\n color: var(--color-secondary-contrast);\n background: color-mix(in srgb, var(--color-secondary-contrast) 15%, transparent);\n box-shadow: var(--shadow-xs), var(--inset-shadow-xs);\n }\n\n /* ─── frost ─── */\n :host([variant='frost']) button {\n color: var(--text-color-secondary);\n }\n\n :host([variant='frost']) button:hover {\n color: var(--text-color-heading);\n background: color-mix(in srgb, var(--color-contrast) 10%, transparent);\n }\n\n :host([variant='frost'][active]) button {\n color: var(--text-color-heading);\n background: color-mix(in srgb, var(--color-canvas) 60%, transparent);\n box-shadow: var(--shadow-xs), var(--inset-shadow-xs);\n }\n\n /* ─── sizes ─── */\n :host([size='sm']) {\n --tab-item-font-size: var(--text-xs);\n --tab-item-padding: var(--size-1) var(--size-3);\n }\n\n :host(:not([size])),\n :host([size='md']) {\n --tab-item-font-size: var(--text-sm);\n --tab-item-padding: var(--size-1-5) var(--size-4);\n }\n\n :host([size='lg']) {\n --tab-item-font-size: var(--text-base);\n --tab-item-padding: var(--size-2) var(--size-5);\n }\n\n /* ─── disabled ─── */\n :host([disabled]) {\n pointer-events: none;\n opacity: 0.5;\n }\n\n @media (forced-colors: active) {\n /* Ensure focus ring is visible regardless of variant theme color */\n button:focus-visible {\n outline: 2px solid Highlight;\n box-shadow: none;\n }\n\n /* Active tab: box-shadow raised indicator is stripped; use outline inste\n ad so the selected tab remains distinguishable */\n :host([active]) button {\n outline: 2px solid Highlight;\n outline-offset: -2px;\n }\n }\n}\n"],"mappings":""}
|
|
@@ -0,0 +1,39 @@
|
|
|
1
|
+
import type { ComponentSize, ThemeColor, VisualVariant } from '../../types';
|
|
2
|
+
export type BitTabItemProps = {
|
|
3
|
+
/** Whether this tab is currently selected (set by bit-tabs) */
|
|
4
|
+
active?: boolean;
|
|
5
|
+
/** Theme color (inherited from bit-tabs) */
|
|
6
|
+
color?: ThemeColor;
|
|
7
|
+
/** Disable this tab */
|
|
8
|
+
disabled?: boolean;
|
|
9
|
+
/** Size (inherited from bit-tabs) */
|
|
10
|
+
size?: ComponentSize;
|
|
11
|
+
/** Unique value identifier — must match a bit-tab-panel value */
|
|
12
|
+
value: string;
|
|
13
|
+
/** Visual variant (inherited from bit-tabs) */
|
|
14
|
+
variant?: VisualVariant;
|
|
15
|
+
};
|
|
16
|
+
/**
|
|
17
|
+
* Individual tab trigger. Must be placed in the `tabs` slot of `bit-tabs`.
|
|
18
|
+
*
|
|
19
|
+
* @element bit-tab-item
|
|
20
|
+
*
|
|
21
|
+
* @attr {string} value - Unique identifier, matches the corresponding bit-tab-panel value
|
|
22
|
+
* @attr {boolean} active - Set by the parent bit-tabs when this tab is selected
|
|
23
|
+
* @attr {boolean} disabled - Prevents selection
|
|
24
|
+
* @attr {string} size - 'sm' | 'md' | 'lg'
|
|
25
|
+
* @attr {string} variant - Inherited from bit-tabs
|
|
26
|
+
* @attr {string} color - Inherited from bit-tabs: 'primary' | 'secondary' | 'info' | 'success' | 'warning' | 'error'
|
|
27
|
+
*
|
|
28
|
+
* @slot prefix - Icon or content before the label
|
|
29
|
+
* @slot - Tab label
|
|
30
|
+
* @slot suffix - Badge or count after the label
|
|
31
|
+
*
|
|
32
|
+
* @example
|
|
33
|
+
* ```html
|
|
34
|
+
* <bit-tab-item slot="tabs" value="overview">Overview</bit-tab-item>
|
|
35
|
+
* <bit-tab-item slot="tabs" value="settings" disabled>Settings</bit-tab-item>
|
|
36
|
+
* ```
|
|
37
|
+
*/
|
|
38
|
+
export declare const TAB_ITEM_TAG: string;
|
|
39
|
+
//# sourceMappingURL=tab-item.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"tab-item.d.ts","sourceRoot":"","sources":["../../../src/disclosure/tab-item/tab-item.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,aAAa,EAAE,UAAU,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AAM5E,MAAM,MAAM,eAAe,GAAG;IAC5B,+DAA+D;IAC/D,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,4CAA4C;IAC5C,KAAK,CAAC,EAAE,UAAU,CAAC;IACnB,uBAAuB;IACvB,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,qCAAqC;IACrC,IAAI,CAAC,EAAE,aAAa,CAAC;IACrB,iEAAiE;IACjE,KAAK,EAAE,MAAM,CAAC;IACd,+CAA+C;IAC/C,OAAO,CAAC,EAAE,aAAa,CAAC;CACzB,CAAC;AAEF;;;;;;;;;;;;;;;;;;;;;GAqBG;AACH,eAAO,MAAM,YAAY,QAmDvB,CAAC"}
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
var e=`@layer buildit.base{:host{width:100%;display:none}:host([active]){flex-direction:column;flex:1;min-height:0;display:flex}.panel{box-sizing:border-box;height:100%;min-height:0;padding:var(--tab-panel-padding,var(--size-4));font-size:var(--tab-panel-font-size,var(--text-sm));color:var(--text-color-body);animation:var(--_motion-animation,tab-panel-in var(--transition-normal) var(--ease-out) both);flex:1;overflow:auto}}@layer buildit.variants{@keyframes tab-panel-in{0%{opacity:0;translate:0 4px}to{opacity:1;translate:0}}}`;exports.default=e;
|
|
2
|
+
//# sourceMappingURL=tab-panel.css?inline.cjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"tab-panel.css?inline.cjs","names":[],"sources":["../../../src/disclosure/tab-panel/tab-panel.css?inline"],"sourcesContent":["@layer buildit.base {\n :host {\n display: none;\n width: 100%;\n }\n\n :host([active]) {\n display: flex;\n flex: 1;\n flex-direction: column;\n min-height: 0;\n }\n\n .panel {\n box-sizing: border-box;\n flex: 1;\n height: 100%;\n min-height: 0;\n padding: var(--tab-panel-padding, var(--size-4));\n overflow: auto;\n font-size: var(--tab-panel-font-size, var(--text-sm));\n color: var(--text-color-body);\n animation: var(--_motion-animation, tab-panel-in var(--transition-normal) var(--ease-out) both);\n }\n}\n\n@layer buildit.variants {\n @keyframes tab-panel-in {\n from {\n opacity: 0;\n translate: 0 4px;\n }\n\n to {\n opacity: 1;\n translate: 0 0;\n }\n }\n}\n"],"mappings":""}
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
//#region src/disclosure/tab-panel/tab-panel.css?inline
|
|
2
|
+
var e = "@layer buildit.base{:host{width:100%;display:none}:host([active]){flex-direction:column;flex:1;min-height:0;display:flex}.panel{box-sizing:border-box;height:100%;min-height:0;padding:var(--tab-panel-padding,var(--size-4));font-size:var(--tab-panel-font-size,var(--text-sm));color:var(--text-color-body);animation:var(--_motion-animation,tab-panel-in var(--transition-normal) var(--ease-out) both);flex:1;overflow:auto}}@layer buildit.variants{@keyframes tab-panel-in{0%{opacity:0;translate:0 4px}to{opacity:1;translate:0}}}";
|
|
3
|
+
//#endregion
|
|
4
|
+
export { e as default };
|
|
5
|
+
|
|
6
|
+
//# sourceMappingURL=tab-panel.css?inline.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"tab-panel.css?inline.js","names":[],"sources":["../../../src/disclosure/tab-panel/tab-panel.css?inline"],"sourcesContent":["@layer buildit.base {\n :host {\n display: none;\n width: 100%;\n }\n\n :host([active]) {\n display: flex;\n flex: 1;\n flex-direction: column;\n min-height: 0;\n }\n\n .panel {\n box-sizing: border-box;\n flex: 1;\n height: 100%;\n min-height: 0;\n padding: var(--tab-panel-padding, var(--size-4));\n overflow: auto;\n font-size: var(--tab-panel-font-size, var(--text-sm));\n color: var(--text-color-body);\n animation: var(--_motion-animation, tab-panel-in var(--transition-normal) var(--ease-out) both);\n }\n}\n\n@layer buildit.variants {\n @keyframes tab-panel-in {\n from {\n opacity: 0;\n translate: 0 4px;\n }\n\n to {\n opacity: 1;\n translate: 0 0;\n }\n }\n}\n"],"mappings":""}
|