@helixui/library 2.1.2-next.53 → 2.1.2-next.54
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/custom-elements.json +637 -828
- package/dist/base/helix-element.d.ts +20 -8
- package/dist/base/helix-element.d.ts.map +1 -1
- package/dist/components/hx-accordion/hx-accordion-item.d.ts +7 -2
- package/dist/components/hx-accordion/hx-accordion-item.d.ts.map +1 -1
- package/dist/components/hx-accordion/hx-accordion.d.ts +3 -2
- package/dist/components/hx-accordion/hx-accordion.d.ts.map +1 -1
- package/dist/components/hx-accordion/index.d.ts +1 -0
- package/dist/components/hx-accordion/index.d.ts.map +1 -1
- package/dist/components/hx-accordion/index.js +1 -1
- package/dist/components/hx-action-bar/hx-action-bar.d.ts +2 -11
- package/dist/components/hx-action-bar/hx-action-bar.d.ts.map +1 -1
- package/dist/components/hx-action-bar/hx-action-bar.styles.d.ts.map +1 -1
- package/dist/components/hx-action-bar/index.js +1 -1
- package/dist/components/hx-alert/hx-alert.d.ts +7 -2
- package/dist/components/hx-alert/hx-alert.d.ts.map +1 -1
- package/dist/components/hx-alert/index.d.ts +1 -0
- package/dist/components/hx-alert/index.d.ts.map +1 -1
- package/dist/components/hx-alert/index.js +1 -1
- package/dist/components/hx-avatar/hx-avatar.d.ts +3 -2
- package/dist/components/hx-avatar/hx-avatar.d.ts.map +1 -1
- package/dist/components/hx-avatar/index.js +1 -1
- package/dist/components/hx-badge/hx-badge.d.ts +2 -9
- package/dist/components/hx-badge/hx-badge.d.ts.map +1 -1
- package/dist/components/hx-badge/index.d.ts +1 -1
- package/dist/components/hx-badge/index.d.ts.map +1 -1
- package/dist/components/hx-badge/index.js +1 -1
- package/dist/components/hx-banner/hx-banner.d.ts +3 -2
- package/dist/components/hx-banner/hx-banner.d.ts.map +1 -1
- package/dist/components/hx-banner/index.js +1 -1
- package/dist/components/hx-breadcrumb/hx-breadcrumb-item.d.ts +2 -2
- package/dist/components/hx-breadcrumb/hx-breadcrumb-item.d.ts.map +1 -1
- package/dist/components/hx-breadcrumb/hx-breadcrumb.d.ts +9 -12
- package/dist/components/hx-breadcrumb/hx-breadcrumb.d.ts.map +1 -1
- package/dist/components/hx-breadcrumb/hx-breadcrumb.styles.d.ts.map +1 -1
- package/dist/components/hx-breadcrumb/index.js +1 -1
- package/dist/components/hx-button/hx-button.d.ts +22 -0
- package/dist/components/hx-button/hx-button.d.ts.map +1 -1
- package/dist/components/hx-button/index.d.ts +1 -0
- package/dist/components/hx-button/index.d.ts.map +1 -1
- package/dist/components/hx-button/index.js +1 -1
- package/dist/components/hx-button-group/hx-button-group.d.ts +3 -2
- package/dist/components/hx-button-group/hx-button-group.d.ts.map +1 -1
- package/dist/components/hx-button-group/hx-button-group.styles.d.ts.map +1 -1
- package/dist/components/hx-button-group/index.js +1 -1
- package/dist/components/hx-card/hx-card.d.ts +3 -2
- package/dist/components/hx-card/hx-card.d.ts.map +1 -1
- package/dist/components/hx-card/index.js +1 -1
- package/dist/components/hx-carousel/hx-carousel-item.d.ts +2 -2
- package/dist/components/hx-carousel/hx-carousel-item.d.ts.map +1 -1
- package/dist/components/hx-carousel/hx-carousel-item.styles.d.ts.map +1 -1
- package/dist/components/hx-carousel/hx-carousel.d.ts +2 -2
- package/dist/components/hx-carousel/hx-carousel.d.ts.map +1 -1
- package/dist/components/hx-carousel/index.js +1 -1
- package/dist/components/hx-checkbox/hx-checkbox.d.ts +44 -5
- package/dist/components/hx-checkbox/hx-checkbox.d.ts.map +1 -1
- package/dist/components/hx-checkbox/index.d.ts +1 -0
- package/dist/components/hx-checkbox/index.d.ts.map +1 -1
- package/dist/components/hx-checkbox/index.js +1 -1
- package/dist/components/hx-checkbox-group/hx-checkbox-group.d.ts +9 -13
- package/dist/components/hx-checkbox-group/hx-checkbox-group.d.ts.map +1 -1
- package/dist/components/hx-checkbox-group/index.d.ts +1 -0
- package/dist/components/hx-checkbox-group/index.d.ts.map +1 -1
- package/dist/components/hx-checkbox-group/index.js +1 -1
- package/dist/components/hx-clinical-status/hx-clinical-status.d.ts +0 -7
- package/dist/components/hx-clinical-status/hx-clinical-status.d.ts.map +1 -1
- package/dist/components/hx-clinical-status/index.js +1 -1
- package/dist/components/hx-code-snippet/index.js +1 -1
- package/dist/components/hx-color-picker/hx-color-picker.d.ts +8 -11
- package/dist/components/hx-color-picker/hx-color-picker.d.ts.map +1 -1
- package/dist/components/hx-color-picker/hx-color-picker.styles.d.ts.map +1 -1
- package/dist/components/hx-color-picker/index.d.ts +1 -0
- package/dist/components/hx-color-picker/index.d.ts.map +1 -1
- package/dist/components/hx-color-picker/index.js +1 -1
- package/dist/components/hx-combobox/hx-combobox.d.ts +32 -15
- package/dist/components/hx-combobox/hx-combobox.d.ts.map +1 -1
- package/dist/components/hx-combobox/hx-combobox.styles.d.ts.map +1 -1
- package/dist/components/hx-combobox/index.d.ts +1 -0
- package/dist/components/hx-combobox/index.d.ts.map +1 -1
- package/dist/components/hx-combobox/index.js +1 -1
- package/dist/components/hx-container/hx-container.d.ts +2 -4
- package/dist/components/hx-container/hx-container.d.ts.map +1 -1
- package/dist/components/hx-container/hx-container.styles.d.ts.map +1 -1
- package/dist/components/hx-container/index.d.ts +0 -1
- package/dist/components/hx-container/index.d.ts.map +1 -1
- package/dist/components/hx-container/index.js +1 -1
- package/dist/components/hx-copy-button/hx-copy-button.d.ts +2 -2
- package/dist/components/hx-copy-button/hx-copy-button.d.ts.map +1 -1
- package/dist/components/hx-copy-button/index.js +1 -1
- package/dist/components/hx-counter/hx-counter.d.ts +3 -2
- package/dist/components/hx-counter/hx-counter.d.ts.map +1 -1
- package/dist/components/hx-counter/hx-counter.styles.d.ts.map +1 -1
- package/dist/components/hx-counter/index.js +1 -1
- package/dist/components/hx-data-table/hx-data-table.d.ts +26 -2
- package/dist/components/hx-data-table/hx-data-table.d.ts.map +1 -1
- package/dist/components/hx-data-table/index.d.ts +1 -0
- package/dist/components/hx-data-table/index.d.ts.map +1 -1
- package/dist/components/hx-data-table/index.js +1 -1
- package/dist/components/hx-date-picker/hx-date-picker.d.ts +30 -19
- package/dist/components/hx-date-picker/hx-date-picker.d.ts.map +1 -1
- package/dist/components/hx-date-picker/hx-date-picker.styles.d.ts.map +1 -1
- package/dist/components/hx-date-picker/index.d.ts +1 -0
- package/dist/components/hx-date-picker/index.d.ts.map +1 -1
- package/dist/components/hx-date-picker/index.js +1 -1
- package/dist/components/hx-dialog/hx-dialog.d.ts +37 -5
- package/dist/components/hx-dialog/hx-dialog.d.ts.map +1 -1
- package/dist/components/hx-dialog/index.js +1 -1
- package/dist/components/hx-divider/hx-divider.d.ts +3 -4
- package/dist/components/hx-divider/hx-divider.d.ts.map +1 -1
- package/dist/components/hx-divider/index.d.ts +0 -1
- package/dist/components/hx-divider/index.d.ts.map +1 -1
- package/dist/components/hx-divider/index.js +1 -1
- package/dist/components/hx-drawer/hx-drawer.d.ts +32 -2
- package/dist/components/hx-drawer/hx-drawer.d.ts.map +1 -1
- package/dist/components/hx-drawer/index.js +1 -1
- package/dist/components/hx-dropdown/hx-dropdown.d.ts +3 -2
- package/dist/components/hx-dropdown/hx-dropdown.d.ts.map +1 -1
- package/dist/components/hx-dropdown/index.js +1 -1
- package/dist/components/hx-field/hx-field.d.ts +4 -3
- package/dist/components/hx-field/hx-field.d.ts.map +1 -1
- package/dist/components/hx-field/index.js +1 -1
- package/dist/components/hx-field-label/hx-field-label.d.ts +2 -2
- package/dist/components/hx-field-label/hx-field-label.d.ts.map +1 -1
- package/dist/components/hx-field-label/index.js +1 -1
- package/dist/components/hx-file-upload/hx-file-upload.d.ts +31 -5
- package/dist/components/hx-file-upload/hx-file-upload.d.ts.map +1 -1
- package/dist/components/hx-file-upload/index.d.ts +1 -0
- package/dist/components/hx-file-upload/index.d.ts.map +1 -1
- package/dist/components/hx-file-upload/index.js +1 -1
- package/dist/components/hx-form/hx-form.d.ts +2 -2
- package/dist/components/hx-form/hx-form.d.ts.map +1 -1
- package/dist/components/hx-form/hx-form.styles.d.ts +8 -0
- package/dist/components/hx-form/hx-form.styles.d.ts.map +1 -1
- package/dist/components/hx-form/index.js +1 -1
- package/dist/components/hx-format-date/hx-format-date.d.ts +2 -2
- package/dist/components/hx-format-date/hx-format-date.d.ts.map +1 -1
- package/dist/components/hx-format-date/hx-format-date.styles.d.ts.map +1 -1
- package/dist/components/hx-format-date/index.js +1 -1
- package/dist/components/hx-grid/hx-grid.d.ts +4 -3
- package/dist/components/hx-grid/hx-grid.d.ts.map +1 -1
- package/dist/components/hx-grid/hx-grid.styles.d.ts.map +1 -1
- package/dist/components/hx-grid/index.js +1 -1
- package/dist/components/hx-help-text/hx-help-text.d.ts +2 -4
- package/dist/components/hx-help-text/hx-help-text.d.ts.map +1 -1
- package/dist/components/hx-help-text/index.js +1 -1
- package/dist/components/hx-icon/hx-icon.d.ts +17 -2
- package/dist/components/hx-icon/hx-icon.d.ts.map +1 -1
- package/dist/components/hx-icon/index.js +1 -1
- package/dist/components/hx-icon-button/index.js +1 -1
- package/dist/components/hx-image/hx-image.d.ts +2 -2
- package/dist/components/hx-image/hx-image.d.ts.map +1 -1
- package/dist/components/hx-image/index.js +1 -1
- package/dist/components/hx-link/hx-link.d.ts +2 -2
- package/dist/components/hx-link/hx-link.d.ts.map +1 -1
- package/dist/components/hx-link/index.js +1 -1
- package/dist/components/hx-list/hx-list-item.d.ts +3 -2
- package/dist/components/hx-list/hx-list-item.d.ts.map +1 -1
- package/dist/components/hx-list/hx-list.d.ts +3 -2
- package/dist/components/hx-list/hx-list.d.ts.map +1 -1
- package/dist/components/hx-list/hx-list.styles.d.ts.map +1 -1
- package/dist/components/hx-list/index.js +1 -1
- package/dist/components/hx-menu/hx-menu-divider.d.ts +2 -2
- package/dist/components/hx-menu/hx-menu-divider.d.ts.map +1 -1
- package/dist/components/hx-menu/hx-menu-item.d.ts +2 -2
- package/dist/components/hx-menu/hx-menu-item.d.ts.map +1 -1
- package/dist/components/hx-menu/hx-menu-item.styles.d.ts.map +1 -1
- package/dist/components/hx-menu/hx-menu.d.ts +2 -2
- package/dist/components/hx-menu/hx-menu.d.ts.map +1 -1
- package/dist/components/hx-menu/hx-menu.styles.d.ts.map +1 -1
- package/dist/components/hx-menu/index.js +1 -1
- package/dist/components/hx-meter/hx-meter.d.ts +3 -2
- package/dist/components/hx-meter/hx-meter.d.ts.map +1 -1
- package/dist/components/hx-meter/index.js +1 -1
- package/dist/components/hx-nav/hx-nav.d.ts +2 -4
- package/dist/components/hx-nav/hx-nav.d.ts.map +1 -1
- package/dist/components/hx-nav/hx-nav.styles.d.ts.map +1 -1
- package/dist/components/hx-nav/index.d.ts +1 -1
- package/dist/components/hx-nav/index.d.ts.map +1 -1
- package/dist/components/hx-nav/index.js +1 -1
- package/dist/components/hx-number-input/hx-number-input.d.ts +9 -13
- package/dist/components/hx-number-input/hx-number-input.d.ts.map +1 -1
- package/dist/components/hx-number-input/index.d.ts +1 -0
- package/dist/components/hx-number-input/index.d.ts.map +1 -1
- package/dist/components/hx-number-input/index.js +1 -1
- package/dist/components/hx-overflow-menu/hx-overflow-menu.d.ts +2 -2
- package/dist/components/hx-overflow-menu/hx-overflow-menu.d.ts.map +1 -1
- package/dist/components/hx-overflow-menu/index.js +1 -1
- package/dist/components/hx-pagination/hx-pagination.d.ts +10 -2
- package/dist/components/hx-pagination/hx-pagination.d.ts.map +1 -1
- package/dist/components/hx-pagination/index.d.ts +1 -0
- package/dist/components/hx-pagination/index.d.ts.map +1 -1
- package/dist/components/hx-pagination/index.js +1 -1
- package/dist/components/hx-patient-banner/hx-patient-banner.d.ts +47 -5
- package/dist/components/hx-patient-banner/hx-patient-banner.d.ts.map +1 -1
- package/dist/components/hx-patient-banner/index.js +1 -1
- package/dist/components/hx-phi-field/hx-phi-field.d.ts +85 -5
- package/dist/components/hx-phi-field/hx-phi-field.d.ts.map +1 -1
- package/dist/components/hx-phi-field/hx-phi-field.styles.d.ts.map +1 -1
- package/dist/components/hx-phi-field/index.js +1 -1
- package/dist/components/hx-popover/hx-popover.d.ts +3 -2
- package/dist/components/hx-popover/hx-popover.d.ts.map +1 -1
- package/dist/components/hx-popover/index.js +1 -1
- package/dist/components/hx-popup/hx-popup.d.ts +7 -2
- package/dist/components/hx-popup/hx-popup.d.ts.map +1 -1
- package/dist/components/hx-popup/index.js +1 -1
- package/dist/components/hx-progress-bar/hx-progress-bar.d.ts +3 -2
- package/dist/components/hx-progress-bar/hx-progress-bar.d.ts.map +1 -1
- package/dist/components/hx-progress-bar/index.js +1 -1
- package/dist/components/hx-progress-ring/hx-progress-ring.d.ts +3 -2
- package/dist/components/hx-progress-ring/hx-progress-ring.d.ts.map +1 -1
- package/dist/components/hx-progress-ring/hx-progress-ring.styles.d.ts.map +1 -1
- package/dist/components/hx-progress-ring/index.js +1 -1
- package/dist/components/hx-prose/hx-prose.d.ts +3 -2
- package/dist/components/hx-prose/hx-prose.d.ts.map +1 -1
- package/dist/components/hx-prose/hx-prose.styles.d.ts +8 -0
- package/dist/components/hx-prose/hx-prose.styles.d.ts.map +1 -1
- package/dist/components/hx-prose/index.js +1 -1
- package/dist/components/hx-radio-group/hx-radio-group.d.ts +9 -29
- package/dist/components/hx-radio-group/hx-radio-group.d.ts.map +1 -1
- package/dist/components/hx-radio-group/hx-radio.d.ts +19 -4
- package/dist/components/hx-radio-group/hx-radio.d.ts.map +1 -1
- package/dist/components/hx-radio-group/index.d.ts +1 -0
- package/dist/components/hx-radio-group/index.d.ts.map +1 -1
- package/dist/components/hx-radio-group/index.js +1 -1
- package/dist/components/hx-rating/hx-rating.d.ts +4 -10
- package/dist/components/hx-rating/hx-rating.d.ts.map +1 -1
- package/dist/components/hx-rating/hx-rating.styles.d.ts.map +1 -1
- package/dist/components/hx-rating/index.d.ts +1 -0
- package/dist/components/hx-rating/index.d.ts.map +1 -1
- package/dist/components/hx-rating/index.js +1 -1
- package/dist/components/hx-select/hx-select.d.ts +26 -25
- package/dist/components/hx-select/hx-select.d.ts.map +1 -1
- package/dist/components/hx-select/index.d.ts +1 -0
- package/dist/components/hx-select/index.d.ts.map +1 -1
- package/dist/components/hx-select/index.js +1 -1
- package/dist/components/hx-side-nav/hx-nav-item.d.ts +2 -2
- package/dist/components/hx-side-nav/hx-nav-item.d.ts.map +1 -1
- package/dist/components/hx-side-nav/hx-nav-item.styles.d.ts.map +1 -1
- package/dist/components/hx-side-nav/hx-side-nav.d.ts +3 -2
- package/dist/components/hx-side-nav/hx-side-nav.d.ts.map +1 -1
- package/dist/components/hx-side-nav/hx-side-nav.styles.d.ts.map +1 -1
- package/dist/components/hx-side-nav/index.js +1 -1
- package/dist/components/hx-skeleton/hx-skeleton.d.ts +3 -2
- package/dist/components/hx-skeleton/hx-skeleton.d.ts.map +1 -1
- package/dist/components/hx-skeleton/index.js +1 -1
- package/dist/components/hx-slider/hx-slider.d.ts +7 -11
- package/dist/components/hx-slider/hx-slider.d.ts.map +1 -1
- package/dist/components/hx-slider/hx-slider.styles.d.ts.map +1 -1
- package/dist/components/hx-slider/index.d.ts +1 -0
- package/dist/components/hx-slider/index.d.ts.map +1 -1
- package/dist/components/hx-slider/index.js +1 -1
- package/dist/components/hx-spinner/hx-spinner.d.ts +2 -2
- package/dist/components/hx-spinner/hx-spinner.d.ts.map +1 -1
- package/dist/components/hx-spinner/index.js +1 -1
- package/dist/components/hx-split-button/hx-split-button.d.ts +10 -4
- package/dist/components/hx-split-button/hx-split-button.d.ts.map +1 -1
- package/dist/components/hx-split-button/index.js +1 -1
- package/dist/components/hx-split-panel/hx-split-panel.d.ts +12 -2
- package/dist/components/hx-split-panel/hx-split-panel.d.ts.map +1 -1
- package/dist/components/hx-split-panel/index.js +1 -1
- package/dist/components/hx-stack/hx-stack.d.ts +2 -2
- package/dist/components/hx-stack/hx-stack.d.ts.map +1 -1
- package/dist/components/hx-stack/hx-stack.styles.d.ts.map +1 -1
- package/dist/components/hx-stack/index.js +1 -1
- package/dist/components/hx-stat/hx-stat.d.ts +3 -2
- package/dist/components/hx-stat/hx-stat.d.ts.map +1 -1
- package/dist/components/hx-stat/index.js +1 -1
- package/dist/components/hx-status-indicator/hx-status-indicator.d.ts +3 -2
- package/dist/components/hx-status-indicator/hx-status-indicator.d.ts.map +1 -1
- package/dist/components/hx-status-indicator/index.js +1 -1
- package/dist/components/hx-steps/hx-step.d.ts +3 -2
- package/dist/components/hx-steps/hx-step.d.ts.map +1 -1
- package/dist/components/hx-steps/hx-step.styles.d.ts.map +1 -1
- package/dist/components/hx-steps/hx-steps.d.ts +11 -4
- package/dist/components/hx-steps/hx-steps.d.ts.map +1 -1
- package/dist/components/hx-steps/hx-steps.styles.d.ts.map +1 -1
- package/dist/components/hx-steps/index.js +1 -1
- package/dist/components/hx-structured-list/hx-structured-list.d.ts +3 -3
- package/dist/components/hx-structured-list/hx-structured-list.d.ts.map +1 -1
- package/dist/components/hx-structured-list/index.js +1 -1
- package/dist/components/hx-style-scope/hx-style-scope.d.ts +3 -2
- package/dist/components/hx-style-scope/hx-style-scope.d.ts.map +1 -1
- package/dist/components/hx-style-scope/hx-style-scope.styles.d.ts.map +1 -1
- package/dist/components/hx-style-scope/index.js +1 -1
- package/dist/components/hx-switch/hx-switch.d.ts +20 -21
- package/dist/components/hx-switch/hx-switch.d.ts.map +1 -1
- package/dist/components/hx-switch/index.d.ts +2 -1
- package/dist/components/hx-switch/index.d.ts.map +1 -1
- package/dist/components/hx-switch/index.js +1 -1
- package/dist/components/hx-table/hx-table.d.ts +3 -2
- package/dist/components/hx-table/hx-table.d.ts.map +1 -1
- package/dist/components/hx-table/hx-tbody.d.ts +2 -2
- package/dist/components/hx-table/hx-tbody.d.ts.map +1 -1
- package/dist/components/hx-table/hx-td.d.ts +2 -2
- package/dist/components/hx-table/hx-td.d.ts.map +1 -1
- package/dist/components/hx-table/hx-tfoot.d.ts +2 -2
- package/dist/components/hx-table/hx-tfoot.d.ts.map +1 -1
- package/dist/components/hx-table/hx-th.d.ts +2 -2
- package/dist/components/hx-table/hx-th.d.ts.map +1 -1
- package/dist/components/hx-table/hx-thead.d.ts +2 -2
- package/dist/components/hx-table/hx-thead.d.ts.map +1 -1
- package/dist/components/hx-table/hx-tr.d.ts +2 -2
- package/dist/components/hx-table/hx-tr.d.ts.map +1 -1
- package/dist/components/hx-table/index.js +1 -1
- package/dist/components/hx-tabs/hx-tab-panel.d.ts +2 -2
- package/dist/components/hx-tabs/hx-tab-panel.d.ts.map +1 -1
- package/dist/components/hx-tabs/hx-tab.d.ts +2 -2
- package/dist/components/hx-tabs/hx-tab.d.ts.map +1 -1
- package/dist/components/hx-tabs/hx-tab.styles.d.ts.map +1 -1
- package/dist/components/hx-tabs/hx-tabs.d.ts +8 -2
- package/dist/components/hx-tabs/hx-tabs.d.ts.map +1 -1
- package/dist/components/hx-tabs/index.d.ts +1 -0
- package/dist/components/hx-tabs/index.d.ts.map +1 -1
- package/dist/components/hx-tabs/index.js +1 -1
- package/dist/components/hx-tag/hx-tag.d.ts +2 -4
- package/dist/components/hx-tag/hx-tag.d.ts.map +1 -1
- package/dist/components/hx-tag/index.d.ts +0 -2
- package/dist/components/hx-tag/index.d.ts.map +1 -1
- package/dist/components/hx-tag/index.js +1 -1
- package/dist/components/hx-text/hx-text.d.ts +2 -2
- package/dist/components/hx-text/hx-text.d.ts.map +1 -1
- package/dist/components/hx-text/hx-text.styles.d.ts.map +1 -1
- package/dist/components/hx-text/index.js +1 -1
- package/dist/components/hx-text-input/hx-text-input.d.ts +29 -13
- package/dist/components/hx-text-input/hx-text-input.d.ts.map +1 -1
- package/dist/components/hx-text-input/index.d.ts +1 -0
- package/dist/components/hx-text-input/index.d.ts.map +1 -1
- package/dist/components/hx-text-input/index.js +1 -1
- package/dist/components/hx-textarea/hx-textarea.d.ts +32 -24
- package/dist/components/hx-textarea/hx-textarea.d.ts.map +1 -1
- package/dist/components/hx-textarea/hx-textarea.styles.d.ts.map +1 -1
- package/dist/components/hx-textarea/index.d.ts +1 -0
- package/dist/components/hx-textarea/index.d.ts.map +1 -1
- package/dist/components/hx-textarea/index.js +1 -1
- package/dist/components/hx-theme/hx-theme.d.ts +3 -11
- package/dist/components/hx-theme/hx-theme.d.ts.map +1 -1
- package/dist/components/hx-theme/hx-theme.styles.d.ts.map +1 -1
- package/dist/components/hx-theme/index.d.ts +0 -2
- package/dist/components/hx-theme/index.d.ts.map +1 -1
- package/dist/components/hx-theme/index.js +1 -1
- package/dist/components/hx-time-picker/hx-time-picker.d.ts +8 -15
- package/dist/components/hx-time-picker/hx-time-picker.d.ts.map +1 -1
- package/dist/components/hx-time-picker/hx-time-picker.styles.d.ts.map +1 -1
- package/dist/components/hx-time-picker/index.d.ts +1 -0
- package/dist/components/hx-time-picker/index.d.ts.map +1 -1
- package/dist/components/hx-time-picker/index.js +1 -1
- package/dist/components/hx-toast/hx-toast-stack.d.ts +2 -2
- package/dist/components/hx-toast/hx-toast-stack.d.ts.map +1 -1
- package/dist/components/hx-toast/hx-toast.d.ts +3 -2
- package/dist/components/hx-toast/hx-toast.d.ts.map +1 -1
- package/dist/components/hx-toast/hx-toast.styles.d.ts.map +1 -1
- package/dist/components/hx-toast/index.js +1 -1
- package/dist/components/hx-toggle-button/hx-toggle-button.d.ts +4 -0
- package/dist/components/hx-toggle-button/hx-toggle-button.d.ts.map +1 -1
- package/dist/components/hx-toggle-button/index.d.ts +1 -0
- package/dist/components/hx-toggle-button/index.d.ts.map +1 -1
- package/dist/components/hx-toggle-button/index.js +1 -1
- package/dist/components/hx-tooltip/hx-tooltip.d.ts +2 -2
- package/dist/components/hx-tooltip/hx-tooltip.d.ts.map +1 -1
- package/dist/components/hx-tooltip/index.js +1 -1
- package/dist/components/hx-top-nav/hx-top-nav.d.ts +2 -2
- package/dist/components/hx-top-nav/hx-top-nav.d.ts.map +1 -1
- package/dist/components/hx-top-nav/index.js +1 -1
- package/dist/components/hx-tree-view/hx-tree-item.d.ts +2 -4
- package/dist/components/hx-tree-view/hx-tree-item.d.ts.map +1 -1
- package/dist/components/hx-tree-view/hx-tree-item.styles.d.ts.map +1 -1
- package/dist/components/hx-tree-view/hx-tree-view.d.ts +2 -4
- package/dist/components/hx-tree-view/hx-tree-view.d.ts.map +1 -1
- package/dist/components/hx-tree-view/hx-tree-view.styles.d.ts.map +1 -1
- package/dist/components/hx-tree-view/index.d.ts +0 -4
- package/dist/components/hx-tree-view/index.d.ts.map +1 -1
- package/dist/components/hx-tree-view/index.js +1 -1
- package/dist/components/hx-visually-hidden/hx-visually-hidden.d.ts +2 -2
- package/dist/components/hx-visually-hidden/hx-visually-hidden.d.ts.map +1 -1
- package/dist/components/hx-visually-hidden/hx-visually-hidden.styles.d.ts.map +1 -1
- package/dist/components/hx-visually-hidden/index.js +1 -1
- package/dist/css/helix-all.css +2232 -680
- package/dist/css/helix-core.css +107 -49
- package/dist/css/helix-data.css +17 -7
- package/dist/css/helix-feedback.css +82 -61
- package/dist/css/helix-forms.css +1456 -131
- package/dist/css/helix-layout.css +31 -1
- package/dist/css/helix-media.css +16 -16
- package/dist/css/helix-navigation.css +99 -48
- package/dist/css/helix-overlay.css +12 -12
- package/dist/css/helix-tokens.css +30 -11
- package/dist/css/helix-utility.css +53 -10
- package/dist/css/hx-accordion.css +1 -1
- package/dist/css/hx-action-bar.css +17 -3
- package/dist/css/hx-alert.css +18 -18
- package/dist/css/hx-avatar.css +1 -1
- package/dist/css/hx-badge.css +15 -15
- package/dist/css/hx-banner.css +18 -18
- package/dist/css/hx-breadcrumb.css +27 -0
- package/dist/css/hx-button-group.css +13 -0
- package/dist/css/hx-button.css +2 -2
- package/dist/css/hx-card.css +6 -6
- package/dist/css/hx-carousel.css +16 -16
- package/dist/css/hx-checkbox-group.css +4 -4
- package/dist/css/hx-checkbox.css +8 -8
- package/dist/css/hx-clinical-status.css +23 -23
- package/dist/css/hx-code-snippet.css +3 -3
- package/dist/css/hx-color-picker.css +276 -1
- package/dist/css/hx-combobox.css +391 -1
- package/dist/css/hx-container.css +10 -0
- package/dist/css/hx-copy-button.css +3 -3
- package/dist/css/hx-counter.css +9 -2
- package/dist/css/hx-data-table.css +1 -1
- package/dist/css/hx-date-picker.css +437 -1
- package/dist/css/hx-dialog.css +2 -2
- package/dist/css/hx-drawer.css +1 -1
- package/dist/css/hx-dropdown.css +1 -1
- package/dist/css/hx-field-label.css +2 -2
- package/dist/css/hx-field.css +3 -3
- package/dist/css/hx-file-upload.css +12 -12
- package/dist/css/hx-format-date.css +11 -0
- package/dist/css/hx-grid.css +10 -0
- package/dist/css/hx-help-text.css +5 -5
- package/dist/css/hx-image.css +3 -3
- package/dist/css/hx-link.css +5 -5
- package/dist/css/hx-list.css +10 -0
- package/dist/css/hx-menu.css +1 -2
- package/dist/css/hx-meter.css +9 -9
- package/dist/css/hx-nav.css +11 -12
- package/dist/css/hx-overflow-menu.css +10 -10
- package/dist/css/hx-pagination.css +13 -13
- package/dist/css/hx-patient-banner.css +10 -10
- package/dist/css/hx-phi-field.css +5 -2
- package/dist/css/hx-popover.css +4 -4
- package/dist/css/hx-progress-bar.css +1 -1
- package/dist/css/hx-progress-ring.css +23 -1
- package/dist/css/hx-radio-group.css +3 -3
- package/dist/css/hx-rating.css +6 -4
- package/dist/css/hx-select.css +7 -7
- package/dist/css/hx-side-nav.css +5 -0
- package/dist/css/hx-slider.css +16 -11
- package/dist/css/hx-split-button.css +2 -2
- package/dist/css/hx-stack.css +10 -0
- package/dist/css/hx-stat.css +5 -5
- package/dist/css/hx-status-indicator.css +2 -2
- package/dist/css/hx-steps.css +12 -0
- package/dist/css/hx-structured-list.css +2 -2
- package/dist/css/hx-style-scope.css +11 -0
- package/dist/css/hx-switch.css +4 -4
- package/dist/css/hx-table.css +1 -1
- package/dist/css/hx-tabs.css +3 -3
- package/dist/css/hx-tag.css +12 -12
- package/dist/css/hx-text-input.css +9 -9
- package/dist/css/hx-text.css +38 -5
- package/dist/css/hx-textarea.css +9 -15
- package/dist/css/hx-theme.css +11 -0
- package/dist/css/hx-time-picker.css +224 -1
- package/dist/css/hx-toast.css +6 -7
- package/dist/css/hx-toggle-button.css +3 -3
- package/dist/css/hx-tooltip.css +4 -4
- package/dist/css/hx-top-nav.css +8 -8
- package/dist/css/hx-tree-view.css +9 -0
- package/dist/css/hx-visually-hidden.css +12 -0
- package/dist/css/index.css +1 -1
- package/dist/css/manifest.json +39 -7
- package/dist/form-test-utils.d.ts +45 -0
- package/dist/form-test-utils.d.ts.map +1 -0
- package/dist/index.d.ts +28 -14
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +189 -177
- package/dist/index.js.map +1 -1
- package/dist/mixins/FormMixin.d.ts +24 -5
- package/dist/mixins/FormMixin.d.ts.map +1 -1
- package/dist/mixins/aria-delegation.d.ts +0 -2
- package/dist/mixins/aria-delegation.d.ts.map +1 -1
- package/dist/mixins/index.d.ts +3 -1
- package/dist/mixins/index.d.ts.map +1 -1
- package/dist/shared/{FormMixin-Bjvw20G5.js → FormMixin-B8PXk5RQ.js} +31 -14
- package/dist/shared/FormMixin-B8PXk5RQ.js.map +1 -0
- package/dist/shared/aria-delegation-Doq6RRUy.js.map +1 -1
- package/dist/shared/{helix-element-BJh1Ffvi.js → helix-element-BNEYeiys.js} +30 -24
- package/dist/shared/helix-element-BNEYeiys.js.map +1 -0
- package/dist/shared/{hx-accordion-SlwR2C6S.js → hx-accordion-Wt52OOZD.js} +49 -49
- package/dist/shared/hx-accordion-Wt52OOZD.js.map +1 -0
- package/dist/shared/{hx-action-bar-CNLYufVd.js → hx-action-bar-BKMADbHj.js} +89 -85
- package/dist/shared/hx-action-bar-BKMADbHj.js.map +1 -0
- package/dist/shared/{hx-alert-DdlSyJGk.js → hx-alert-D7n94HwI.js} +26 -26
- package/dist/shared/hx-alert-D7n94HwI.js.map +1 -0
- package/dist/shared/{hx-avatar-an-WsuLl.js → hx-avatar-iLYzu8MJ.js} +10 -10
- package/dist/shared/hx-avatar-iLYzu8MJ.js.map +1 -0
- package/dist/shared/{hx-badge-B_PzGlUo.js → hx-badge-CVCmMPyW.js} +27 -27
- package/dist/shared/hx-badge-CVCmMPyW.js.map +1 -0
- package/dist/shared/{hx-banner-D8AxkCfc.js → hx-banner-C_He7Tr4.js} +51 -51
- package/dist/shared/hx-banner-C_He7Tr4.js.map +1 -0
- package/dist/shared/{hx-breadcrumb-item-BCUIvpYX.js → hx-breadcrumb-item-CldCwD1d.js} +105 -82
- package/dist/shared/hx-breadcrumb-item-CldCwD1d.js.map +1 -0
- package/dist/shared/{hx-button-BzqsDHmZ.js → hx-button-Ddl-T6T-.js} +110 -84
- package/dist/shared/hx-button-Ddl-T6T-.js.map +1 -0
- package/dist/shared/{hx-button-group-a5Pb_9fU.js → hx-button-group-BJOGWoMa.js} +30 -17
- package/dist/shared/hx-button-group-BJOGWoMa.js.map +1 -0
- package/dist/shared/{hx-card-DYlaxQy0.js → hx-card-ycveujjL.js} +13 -13
- package/dist/shared/hx-card-ycveujjL.js.map +1 -0
- package/dist/shared/{hx-carousel-item-KQfCekKF.js → hx-carousel-item-D_dCv61-.js} +37 -28
- package/dist/shared/hx-carousel-item-D_dCv61-.js.map +1 -0
- package/dist/shared/{hx-checkbox-DyDbR1B9.js → hx-checkbox-DkkoWoye.js} +77 -60
- package/dist/shared/hx-checkbox-DkkoWoye.js.map +1 -0
- package/dist/shared/{hx-checkbox-group-C8TaFqy0.js → hx-checkbox-group-C3poJ-Zw.js} +55 -64
- package/dist/shared/hx-checkbox-group-C3poJ-Zw.js.map +1 -0
- package/dist/shared/{hx-clinical-status-dDyk5oj1.js → hx-clinical-status-BS5lcddT.js} +52 -53
- package/dist/shared/hx-clinical-status-BS5lcddT.js.map +1 -0
- package/dist/shared/{hx-code-snippet-DasrRF9k.js → hx-code-snippet-B7wUKzyb.js} +12 -13
- package/dist/shared/hx-code-snippet-B7wUKzyb.js.map +1 -0
- package/dist/shared/{hx-color-picker-zv6wtok4.js → hx-color-picker-DBaKTVLr.js} +318 -57
- package/dist/shared/hx-color-picker-DBaKTVLr.js.map +1 -0
- package/dist/shared/hx-combobox-BmgYT7Ar.js +929 -0
- package/dist/shared/hx-combobox-BmgYT7Ar.js.map +1 -0
- package/dist/shared/{hx-container-BwWbMPTH.js → hx-container-DVI7sxfX.js} +25 -15
- package/dist/shared/hx-container-DVI7sxfX.js.map +1 -0
- package/dist/shared/{hx-copy-button-DikpbhWY.js → hx-copy-button-8deNUdwP.js} +20 -20
- package/dist/shared/hx-copy-button-8deNUdwP.js.map +1 -0
- package/dist/shared/{hx-counter-_m4cq45V.js → hx-counter-CKfl_g8K.js} +36 -29
- package/dist/shared/hx-counter-CKfl_g8K.js.map +1 -0
- package/dist/shared/{hx-data-table-609C-e9w.js → hx-data-table-B6h0RPn0.js} +107 -101
- package/dist/shared/hx-data-table-B6h0RPn0.js.map +1 -0
- package/dist/shared/hx-date-picker-Dq2Nb68_.js +1077 -0
- package/dist/shared/hx-date-picker-Dq2Nb68_.js.map +1 -0
- package/dist/shared/{hx-dialog-D_DeqcNS.js → hx-dialog-CvIlY0Tc.js} +66 -54
- package/dist/shared/hx-dialog-CvIlY0Tc.js.map +1 -0
- package/dist/shared/{hx-divider-lfOMElo2.js → hx-divider-DwpOrzMW.js} +7 -7
- package/dist/shared/hx-divider-DwpOrzMW.js.map +1 -0
- package/dist/shared/{hx-drawer-NleCbKuN.js → hx-drawer-Cx2ZJhBe.js} +14 -14
- package/dist/shared/hx-drawer-Cx2ZJhBe.js.map +1 -0
- package/dist/shared/{hx-dropdown-CA9WYdhm.js → hx-dropdown-BjDrPUq5.js} +30 -31
- package/dist/shared/hx-dropdown-BjDrPUq5.js.map +1 -0
- package/dist/shared/{hx-field-Duiib9Bj.js → hx-field-Dp3qQMut.js} +15 -15
- package/dist/shared/hx-field-Dp3qQMut.js.map +1 -0
- package/dist/shared/{hx-field-label-Dud-psvE.js → hx-field-label-BC8QViXv.js} +8 -8
- package/dist/shared/hx-field-label-BC8QViXv.js.map +1 -0
- package/dist/shared/{hx-file-upload-CmCCAvej.js → hx-file-upload-B6Yl1u0i.js} +101 -84
- package/dist/shared/hx-file-upload-B6Yl1u0i.js.map +1 -0
- package/dist/shared/{hx-form-BM6PHsw3.js → hx-form-ButQFt9A.js} +12 -11
- package/dist/shared/hx-form-ButQFt9A.js.map +1 -0
- package/dist/shared/{hx-format-date-B7L9odbA.js → hx-format-date-CKnlQOmV.js} +20 -9
- package/dist/shared/hx-format-date-CKnlQOmV.js.map +1 -0
- package/dist/shared/{hx-grid-BIAR5h9m.js → hx-grid-CXZf3jeK.js} +28 -18
- package/dist/shared/hx-grid-CXZf3jeK.js.map +1 -0
- package/dist/shared/{hx-help-text-DARi-Pfp.js → hx-help-text-D7eytSim.js} +12 -12
- package/dist/shared/hx-help-text-D7eytSim.js.map +1 -0
- package/dist/shared/{hx-icon-jWcGmn66.js → hx-icon-CcyDPDYY.js} +96 -62
- package/dist/shared/hx-icon-CcyDPDYY.js.map +1 -0
- package/dist/shared/{hx-icon-button-BcZtVVtH.js → hx-icon-button-BHneqPCU.js} +2 -3
- package/dist/shared/{hx-icon-button-BcZtVVtH.js.map → hx-icon-button-BHneqPCU.js.map} +1 -1
- package/dist/shared/{hx-image-DOjPp-K5.js → hx-image-2gt14zZd.js} +9 -9
- package/dist/shared/hx-image-2gt14zZd.js.map +1 -0
- package/dist/shared/{hx-link-DCBct0f4.js → hx-link-BESrWK8M.js} +17 -17
- package/dist/shared/hx-link-BESrWK8M.js.map +1 -0
- package/dist/shared/{hx-list-Dnei26t4.js → hx-list-_9qVv02L.js} +32 -22
- package/dist/shared/hx-list-_9qVv02L.js.map +1 -0
- package/dist/shared/{hx-menu-divider-DVWER7iT.js → hx-menu-divider-Ck-9Os1t.js} +19 -19
- package/dist/shared/hx-menu-divider-Ck-9Os1t.js.map +1 -0
- package/dist/shared/{hx-meter-ChZdWNF2.js → hx-meter-TbROk-dw.js} +18 -18
- package/dist/shared/hx-meter-TbROk-dw.js.map +1 -0
- package/dist/shared/{hx-nav-CHX1JOWB.js → hx-nav-BcYDmjf7.js} +59 -60
- package/dist/shared/hx-nav-BcYDmjf7.js.map +1 -0
- package/dist/shared/{hx-nav-item-CRAESq9s.js → hx-nav-item-pqPasRUm.js} +33 -23
- package/dist/shared/hx-nav-item-pqPasRUm.js.map +1 -0
- package/dist/shared/{hx-number-input-Cm682AVP.js → hx-number-input-mOIZ3-46.js} +57 -66
- package/dist/shared/hx-number-input-mOIZ3-46.js.map +1 -0
- package/dist/shared/{hx-overflow-menu-BDl6QfUD.js → hx-overflow-menu-Dprb9lnT.js} +46 -47
- package/dist/shared/hx-overflow-menu-Dprb9lnT.js.map +1 -0
- package/dist/shared/{hx-pagination-BNtx-LG6.js → hx-pagination-AguTQjYC.js} +35 -35
- package/dist/shared/hx-pagination-AguTQjYC.js.map +1 -0
- package/dist/shared/{hx-patient-banner-B4IjHeTx.js → hx-patient-banner-uE6gqLpT.js} +16 -16
- package/dist/shared/hx-patient-banner-uE6gqLpT.js.map +1 -0
- package/dist/shared/{hx-phi-field-DD1qcBSO.js → hx-phi-field-BC_XowhC.js} +138 -56
- package/dist/shared/hx-phi-field-BC_XowhC.js.map +1 -0
- package/dist/shared/{hx-popover-ZGRFgBbx.js → hx-popover-B2_203ct.js} +25 -25
- package/dist/shared/hx-popover-B2_203ct.js.map +1 -0
- package/dist/shared/{hx-popup-Cc4qz89i.js → hx-popup-DZXpsJ1R.js} +77 -64
- package/dist/shared/hx-popup-DZXpsJ1R.js.map +1 -0
- package/dist/shared/{hx-progress-bar-BY1uE6bN.js → hx-progress-bar-KjEkEJLy.js} +19 -19
- package/dist/shared/hx-progress-bar-KjEkEJLy.js.map +1 -0
- package/dist/shared/{hx-progress-ring-Cs0WgWDJ.js → hx-progress-ring-3zMwvrwD.js} +53 -31
- package/dist/shared/hx-progress-ring-3zMwvrwD.js.map +1 -0
- package/dist/shared/{hx-prose-Ml_L2zje.js → hx-prose-BCtK7YL6.js} +48 -15
- package/dist/shared/{hx-prose-Ml_L2zje.js.map → hx-prose-BCtK7YL6.js.map} +1 -1
- package/dist/shared/{hx-radio-YEEsbUPN.js → hx-radio-BBC5qZgE.js} +99 -105
- package/dist/shared/hx-radio-BBC5qZgE.js.map +1 -0
- package/dist/shared/{hx-rating-DjUJTT0M.js → hx-rating-C3E3ENJb.js} +42 -56
- package/dist/shared/hx-rating-C3E3ENJb.js.map +1 -0
- package/dist/shared/{hx-select-DZ7wfcJx.js → hx-select-CixTo7jp.js} +105 -116
- package/dist/shared/hx-select-CixTo7jp.js.map +1 -0
- package/dist/shared/{hx-skeleton-aqa-gr1S.js → hx-skeleton-LxkI0pxr.js} +15 -15
- package/dist/shared/hx-skeleton-LxkI0pxr.js.map +1 -0
- package/dist/shared/{hx-slider-DAilFrR_.js → hx-slider-DFHuzF3N.js} +74 -89
- package/dist/shared/hx-slider-DFHuzF3N.js.map +1 -0
- package/dist/shared/{hx-spinner-Dw3cRY-9.js → hx-spinner-BKjuCdZB.js} +9 -9
- package/dist/shared/hx-spinner-BKjuCdZB.js.map +1 -0
- package/dist/shared/{hx-split-button-Dk-zMDDo.js → hx-split-button-CGcJMmCG.js} +14 -14
- package/dist/shared/hx-split-button-CGcJMmCG.js.map +1 -0
- package/dist/shared/{hx-split-panel-Kdp4BiLz.js → hx-split-panel-C-1R10Mc.js} +57 -47
- package/dist/shared/hx-split-panel-C-1R10Mc.js.map +1 -0
- package/dist/shared/{hx-stack-B76_1O6g.js → hx-stack-DGfcOfWJ.js} +21 -11
- package/dist/shared/hx-stack-DGfcOfWJ.js.map +1 -0
- package/dist/shared/{hx-stat-DKlyBL_K.js → hx-stat-BTpykQAt.js} +14 -14
- package/dist/shared/hx-stat-BTpykQAt.js.map +1 -0
- package/dist/shared/{hx-status-indicator-DWSM0Ctm.js → hx-status-indicator-X2QEWNFt.js} +13 -13
- package/dist/shared/hx-status-indicator-X2QEWNFt.js.map +1 -0
- package/dist/shared/{hx-step-CuoOvcI8.js → hx-step-CRNQlmSo.js} +47 -30
- package/dist/shared/hx-step-CRNQlmSo.js.map +1 -0
- package/dist/shared/{hx-structured-list-CQCD7bCT.js → hx-structured-list-CqNbaEXg.js} +12 -12
- package/dist/shared/hx-structured-list-CqNbaEXg.js.map +1 -0
- package/dist/shared/hx-style-scope-TDnR8H4O.js +251 -0
- package/dist/shared/hx-style-scope-TDnR8H4O.js.map +1 -0
- package/dist/shared/{hx-switch-BdxKN9WM.js → hx-switch-DqOD9JR7.js} +56 -72
- package/dist/shared/hx-switch-DqOD9JR7.js.map +1 -0
- package/dist/shared/{hx-tab-panel-CwClQoWP.js → hx-tab-panel-BIzKfW5i.js} +29 -28
- package/dist/shared/hx-tab-panel-BIzKfW5i.js.map +1 -0
- package/dist/shared/{hx-tag-BL5qJJCN.js → hx-tag-CgnrNnte.js} +23 -23
- package/dist/shared/hx-tag-CgnrNnte.js.map +1 -0
- package/dist/shared/{hx-td-CzSvVKdp.js → hx-td-Bra35cH4.js} +37 -37
- package/dist/shared/hx-td-Bra35cH4.js.map +1 -0
- package/dist/shared/{hx-text-DcWBqZwx.js → hx-text-DMC2CPlL.js} +74 -41
- package/dist/shared/hx-text-DMC2CPlL.js.map +1 -0
- package/dist/shared/{hx-text-input-BfMrvN9N.js → hx-text-input--q0GH78x.js} +19 -20
- package/dist/shared/hx-text-input--q0GH78x.js.map +1 -0
- package/dist/shared/{hx-textarea-C-i_Vam6.js → hx-textarea-CK621vSL.js} +28 -54
- package/dist/shared/hx-textarea-CK621vSL.js.map +1 -0
- package/dist/shared/{hx-theme-pc1V7dyL.js → hx-theme-DfEy-SJA.js} +72 -64
- package/dist/shared/hx-theme-DfEy-SJA.js.map +1 -0
- package/dist/shared/{hx-time-picker-MZyLQPW9.js → hx-time-picker-tPUfgElQ.js} +264 -35
- package/dist/shared/hx-time-picker-tPUfgElQ.js.map +1 -0
- package/dist/shared/{hx-toggle-button-ClyNYNVI.js → hx-toggle-button-L-uBJr-a.js} +9 -10
- package/dist/shared/hx-toggle-button-L-uBJr-a.js.map +1 -0
- package/dist/shared/{hx-tooltip-ByWT987R.js → hx-tooltip-B_zfKvwc.js} +22 -23
- package/dist/shared/hx-tooltip-B_zfKvwc.js.map +1 -0
- package/dist/shared/{hx-top-nav-k7hY78kt.js → hx-top-nav-CATbRvIv.js} +24 -22
- package/dist/shared/hx-top-nav-CATbRvIv.js.map +1 -0
- package/dist/shared/{hx-tree-item-D0ZphA45.js → hx-tree-item-A45WCiBu.js} +29 -9
- package/dist/shared/hx-tree-item-A45WCiBu.js.map +1 -0
- package/dist/shared/hx-visually-hidden-0bZKOWgT.js +66 -0
- package/dist/shared/hx-visually-hidden-0bZKOWgT.js.map +1 -0
- package/dist/shared/id-counter-DuX8vsui.js +11 -0
- package/dist/shared/{id-counter-PTgF-zcG.js.map → id-counter-DuX8vsui.js.map} +1 -1
- package/dist/shared/{toast-factory-Cwd0PihS.js → toast-factory-BPPnG3mM.js} +23 -24
- package/dist/shared/toast-factory-BPPnG3mM.js.map +1 -0
- package/dist/utilities/injectLightStyles.d.ts.map +1 -1
- package/dist/utilities/sanitizeCss.d.ts +43 -0
- package/dist/utilities/sanitizeCss.d.ts.map +1 -0
- package/package.json +29 -13
- package/dist/shared/FormMixin-Bjvw20G5.js.map +0 -1
- package/dist/shared/document-token-adoption-DuYNKd4k.js +0 -21
- package/dist/shared/document-token-adoption-DuYNKd4k.js.map +0 -1
- package/dist/shared/helix-element-BJh1Ffvi.js.map +0 -1
- package/dist/shared/hx-accordion-SlwR2C6S.js.map +0 -1
- package/dist/shared/hx-action-bar-CNLYufVd.js.map +0 -1
- package/dist/shared/hx-alert-DdlSyJGk.js.map +0 -1
- package/dist/shared/hx-avatar-an-WsuLl.js.map +0 -1
- package/dist/shared/hx-badge-B_PzGlUo.js.map +0 -1
- package/dist/shared/hx-banner-D8AxkCfc.js.map +0 -1
- package/dist/shared/hx-breadcrumb-item-BCUIvpYX.js.map +0 -1
- package/dist/shared/hx-button-BzqsDHmZ.js.map +0 -1
- package/dist/shared/hx-button-group-a5Pb_9fU.js.map +0 -1
- package/dist/shared/hx-card-DYlaxQy0.js.map +0 -1
- package/dist/shared/hx-carousel-item-KQfCekKF.js.map +0 -1
- package/dist/shared/hx-checkbox-DyDbR1B9.js.map +0 -1
- package/dist/shared/hx-checkbox-group-C8TaFqy0.js.map +0 -1
- package/dist/shared/hx-clinical-status-dDyk5oj1.js.map +0 -1
- package/dist/shared/hx-code-snippet-DasrRF9k.js.map +0 -1
- package/dist/shared/hx-color-picker-zv6wtok4.js.map +0 -1
- package/dist/shared/hx-combobox-C-DVLFpu.js +0 -535
- package/dist/shared/hx-combobox-C-DVLFpu.js.map +0 -1
- package/dist/shared/hx-container-BwWbMPTH.js.map +0 -1
- package/dist/shared/hx-copy-button-DikpbhWY.js.map +0 -1
- package/dist/shared/hx-counter-_m4cq45V.js.map +0 -1
- package/dist/shared/hx-data-table-609C-e9w.js.map +0 -1
- package/dist/shared/hx-date-picker-Bh8410Sf.js +0 -618
- package/dist/shared/hx-date-picker-Bh8410Sf.js.map +0 -1
- package/dist/shared/hx-dialog-D_DeqcNS.js.map +0 -1
- package/dist/shared/hx-divider-lfOMElo2.js.map +0 -1
- package/dist/shared/hx-drawer-NleCbKuN.js.map +0 -1
- package/dist/shared/hx-dropdown-CA9WYdhm.js.map +0 -1
- package/dist/shared/hx-field-Duiib9Bj.js.map +0 -1
- package/dist/shared/hx-field-label-Dud-psvE.js.map +0 -1
- package/dist/shared/hx-file-upload-CmCCAvej.js.map +0 -1
- package/dist/shared/hx-form-BM6PHsw3.js.map +0 -1
- package/dist/shared/hx-format-date-B7L9odbA.js.map +0 -1
- package/dist/shared/hx-grid-BIAR5h9m.js.map +0 -1
- package/dist/shared/hx-help-text-DARi-Pfp.js.map +0 -1
- package/dist/shared/hx-icon-jWcGmn66.js.map +0 -1
- package/dist/shared/hx-image-DOjPp-K5.js.map +0 -1
- package/dist/shared/hx-link-DCBct0f4.js.map +0 -1
- package/dist/shared/hx-list-Dnei26t4.js.map +0 -1
- package/dist/shared/hx-menu-divider-DVWER7iT.js.map +0 -1
- package/dist/shared/hx-meter-ChZdWNF2.js.map +0 -1
- package/dist/shared/hx-nav-CHX1JOWB.js.map +0 -1
- package/dist/shared/hx-nav-item-CRAESq9s.js.map +0 -1
- package/dist/shared/hx-number-input-Cm682AVP.js.map +0 -1
- package/dist/shared/hx-overflow-menu-BDl6QfUD.js.map +0 -1
- package/dist/shared/hx-pagination-BNtx-LG6.js.map +0 -1
- package/dist/shared/hx-patient-banner-B4IjHeTx.js.map +0 -1
- package/dist/shared/hx-phi-field-DD1qcBSO.js.map +0 -1
- package/dist/shared/hx-popover-ZGRFgBbx.js.map +0 -1
- package/dist/shared/hx-popup-Cc4qz89i.js.map +0 -1
- package/dist/shared/hx-progress-bar-BY1uE6bN.js.map +0 -1
- package/dist/shared/hx-progress-ring-Cs0WgWDJ.js.map +0 -1
- package/dist/shared/hx-radio-YEEsbUPN.js.map +0 -1
- package/dist/shared/hx-rating-DjUJTT0M.js.map +0 -1
- package/dist/shared/hx-select-DZ7wfcJx.js.map +0 -1
- package/dist/shared/hx-skeleton-aqa-gr1S.js.map +0 -1
- package/dist/shared/hx-slider-DAilFrR_.js.map +0 -1
- package/dist/shared/hx-spinner-Dw3cRY-9.js.map +0 -1
- package/dist/shared/hx-split-button-Dk-zMDDo.js.map +0 -1
- package/dist/shared/hx-split-panel-Kdp4BiLz.js.map +0 -1
- package/dist/shared/hx-stack-B76_1O6g.js.map +0 -1
- package/dist/shared/hx-stat-DKlyBL_K.js.map +0 -1
- package/dist/shared/hx-status-indicator-DWSM0Ctm.js.map +0 -1
- package/dist/shared/hx-step-CuoOvcI8.js.map +0 -1
- package/dist/shared/hx-structured-list-CQCD7bCT.js.map +0 -1
- package/dist/shared/hx-style-scope-CsQ2Phf_.js +0 -126
- package/dist/shared/hx-style-scope-CsQ2Phf_.js.map +0 -1
- package/dist/shared/hx-switch-BdxKN9WM.js.map +0 -1
- package/dist/shared/hx-tab-panel-CwClQoWP.js.map +0 -1
- package/dist/shared/hx-tag-BL5qJJCN.js.map +0 -1
- package/dist/shared/hx-td-CzSvVKdp.js.map +0 -1
- package/dist/shared/hx-text-DcWBqZwx.js.map +0 -1
- package/dist/shared/hx-text-input-BfMrvN9N.js.map +0 -1
- package/dist/shared/hx-textarea-C-i_Vam6.js.map +0 -1
- package/dist/shared/hx-theme-pc1V7dyL.js.map +0 -1
- package/dist/shared/hx-time-picker-MZyLQPW9.js.map +0 -1
- package/dist/shared/hx-toggle-button-ClyNYNVI.js.map +0 -1
- package/dist/shared/hx-tooltip-ByWT987R.js.map +0 -1
- package/dist/shared/hx-top-nav-k7hY78kt.js.map +0 -1
- package/dist/shared/hx-tree-item-D0ZphA45.js.map +0 -1
- package/dist/shared/hx-visually-hidden-vKX8QjeX.js +0 -54
- package/dist/shared/hx-visually-hidden-vKX8QjeX.js.map +0 -1
- package/dist/shared/id-counter-PTgF-zcG.js +0 -15
- package/dist/shared/toast-factory-Cwd0PihS.js.map +0 -1
- package/dist/tools/cem-a11y-analyzer/analyzers/aria-analyzer.d.ts +0 -12
- package/dist/tools/cem-a11y-analyzer/analyzers/aria-analyzer.d.ts.map +0 -1
- package/dist/tools/cem-a11y-analyzer/analyzers/focus-analyzer.d.ts +0 -13
- package/dist/tools/cem-a11y-analyzer/analyzers/focus-analyzer.d.ts.map +0 -1
- package/dist/tools/cem-a11y-analyzer/analyzers/form-analyzer.d.ts +0 -13
- package/dist/tools/cem-a11y-analyzer/analyzers/form-analyzer.d.ts.map +0 -1
- package/dist/tools/cem-a11y-analyzer/analyzers/keyboard-analyzer.d.ts +0 -12
- package/dist/tools/cem-a11y-analyzer/analyzers/keyboard-analyzer.d.ts.map +0 -1
- package/dist/tools/cem-a11y-analyzer/analyzers/label-analyzer.d.ts +0 -13
- package/dist/tools/cem-a11y-analyzer/analyzers/label-analyzer.d.ts.map +0 -1
- package/dist/tools/cem-a11y-analyzer/analyzers/motion-analyzer.d.ts +0 -12
- package/dist/tools/cem-a11y-analyzer/analyzers/motion-analyzer.d.ts.map +0 -1
- package/dist/tools/cem-a11y-analyzer/index.d.ts +0 -14
- package/dist/tools/cem-a11y-analyzer/index.d.ts.map +0 -1
- package/dist/tools/cem-a11y-analyzer/reporter.d.ts +0 -6
- package/dist/tools/cem-a11y-analyzer/reporter.d.ts.map +0 -1
- package/dist/tools/cem-a11y-analyzer/scorer.d.ts +0 -22
- package/dist/tools/cem-a11y-analyzer/scorer.d.ts.map +0 -1
- package/dist/tools/cem-a11y-analyzer/types.d.ts +0 -171
- package/dist/tools/cem-a11y-analyzer/types.d.ts.map +0 -1
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
function
|
|
2
|
-
class
|
|
1
|
+
function d(e) {
|
|
2
|
+
class i extends e {
|
|
3
3
|
constructor() {
|
|
4
4
|
super(...arguments), this._dirty = !1, this._touched = !1;
|
|
5
5
|
}
|
|
@@ -44,45 +44,62 @@ function s(t) {
|
|
|
44
44
|
* Calls `_updateValidity()` after every Lit update cycle.
|
|
45
45
|
* @internal
|
|
46
46
|
*/
|
|
47
|
-
updated(
|
|
48
|
-
super.updated(
|
|
47
|
+
updated(t) {
|
|
48
|
+
super.updated(t), this._updateValidity();
|
|
49
49
|
}
|
|
50
50
|
// ─── Hook Methods ────────────────────────────────────────────────────────
|
|
51
51
|
/**
|
|
52
52
|
* Override in the host component to run constraint validation logic.
|
|
53
53
|
* Called automatically by `updated()`. Use `this._internals.setValidity()`
|
|
54
54
|
* inside this method.
|
|
55
|
-
*
|
|
55
|
+
*
|
|
56
|
+
* Part of the FormMixin subclassing contract — compiler-enforced protected;
|
|
57
|
+
* do not call from outside a subclass.
|
|
56
58
|
*/
|
|
57
59
|
_updateValidity() {
|
|
58
60
|
}
|
|
59
61
|
// ─── Interaction State Helpers ───────────────────────────────────────────
|
|
60
62
|
/**
|
|
61
63
|
* Advance `dirty` state. Call from the native input's `input` event.
|
|
62
|
-
*
|
|
64
|
+
*
|
|
65
|
+
* Part of the FormMixin subclassing contract — compiler-enforced protected;
|
|
66
|
+
* do not call from outside a subclass.
|
|
63
67
|
*/
|
|
64
68
|
_handleInteractionInput() {
|
|
65
|
-
|
|
69
|
+
if (!this._dirty) {
|
|
70
|
+
const t = this._dirty;
|
|
71
|
+
this._dirty = !0, this.requestUpdate("_dirty", t);
|
|
72
|
+
}
|
|
66
73
|
}
|
|
67
74
|
/**
|
|
68
75
|
* Advance `touched` state. Call from the native input's `blur` event.
|
|
69
|
-
*
|
|
76
|
+
*
|
|
77
|
+
* Part of the FormMixin subclassing contract — compiler-enforced protected;
|
|
78
|
+
* do not call from outside a subclass.
|
|
70
79
|
*/
|
|
71
80
|
_handleInteractionBlur() {
|
|
72
|
-
|
|
81
|
+
if (!this._touched) {
|
|
82
|
+
const t = this._touched;
|
|
83
|
+
this._touched = !0, this.requestUpdate("_touched", t);
|
|
84
|
+
}
|
|
73
85
|
}
|
|
74
86
|
/**
|
|
75
87
|
* Reset interaction state to initial values.
|
|
76
88
|
* Call from `_onFormReset()` in the host component.
|
|
77
|
-
*
|
|
89
|
+
*
|
|
90
|
+
* Part of the FormMixin subclassing contract — compiler-enforced protected;
|
|
91
|
+
* do not call from outside a subclass.
|
|
78
92
|
*/
|
|
79
93
|
_resetInteractionState() {
|
|
80
|
-
(this._dirty || this._touched)
|
|
94
|
+
if (this._dirty || this._touched) {
|
|
95
|
+
const t = this._dirty, r = this._touched;
|
|
96
|
+
this._dirty = !1, this._touched = !1, this.requestUpdate("_dirty", t), this.requestUpdate("_touched", r);
|
|
97
|
+
}
|
|
81
98
|
}
|
|
82
99
|
}
|
|
83
|
-
return
|
|
100
|
+
return i;
|
|
84
101
|
}
|
|
85
102
|
export {
|
|
86
|
-
|
|
103
|
+
d as F
|
|
87
104
|
};
|
|
88
|
-
//# sourceMappingURL=FormMixin-
|
|
105
|
+
//# sourceMappingURL=FormMixin-B8PXk5RQ.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"FormMixin-B8PXk5RQ.js","sources":["../../src/mixins/FormMixin.ts"],"sourcesContent":["import type { PropertyValues } from 'lit';\nimport { HelixElement } from '../base/helix-element.js';\n\n/**\n * Constructor type for the mixin pattern.\n * @internal\n */\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\ntype Constructor<T = object> = new (...args: any[]) => T;\n\n/**\n * The public interface that FormMixin adds to any host element.\n * Contains only the API that external consumers may access.\n *\n * @public\n */\nexport interface FormMixinInterface {\n /** True after the user has modified the field value at least once. */\n readonly dirty: boolean;\n /** True after the field has received and lost focus at least once. */\n readonly touched: boolean;\n /** True while the field has never been modified (opposite of dirty). */\n readonly pristine: boolean;\n\n /** Delegates to ElementInternals.checkValidity(). */\n checkValidity(): boolean;\n /** Delegates to ElementInternals.reportValidity(). */\n reportValidity(): boolean;\n}\n\n/**\n * Protected subclassing hooks provided by FormMixin.\n *\n * These are part of the stable subclassing contract (breaking changes gated\n * to major releases) but are NOT exposed as public consumer API.\n * They are accessible only from within FormMixin subclasses.\n *\n * @protected\n */\nexport interface FormMixinProtectedHooks {\n /**\n * Advance `dirty` state. Call from the native input's `input` event handler.\n * @protected\n */\n _handleInteractionInput(): void;\n\n /**\n * Advance `touched` state. Call from the native input's `blur` event handler.\n * @protected\n */\n _handleInteractionBlur(): void;\n\n /**\n * Reset interaction flags. Call from `_onFormReset()` in the host component.\n * @protected\n */\n _resetInteractionState(): void;\n\n /**\n * Override in the host component to run constraint validation logic.\n * Called automatically by `updated()`. Use `this._internals.setValidity()`\n * inside this method.\n * @protected\n */\n _updateValidity(...args: unknown[]): void;\n}\n\n/**\n * FormMixin adds shared form infrastructure to any HelixElement subclass:\n *\n * - Interaction state tracking: `dirty`, `touched`, `pristine`\n * - `checkValidity()` / `reportValidity()` delegation to `ElementInternals`\n * - A `_updateValidity()` lifecycle hook called automatically after every\n * `updated()` cycle — subclasses override this to run constraint checks\n * - `_handleInteractionBlur()` and `_handleInteractionInput()` helpers that\n * components wire to their native inputs to advance interaction state\n *\n * @example\n * ```ts\n * class HxTextInput extends FormMixin(HelixElement) {\n * override _updateValidity(): void {\n * if (this.required && !this.value) {\n * this._internals.setValidity({ valueMissing: true }, 'Required', this._inputEl);\n * } else {\n * this._internals.setValidity({});\n * }\n * }\n * }\n * ```\n *\n * @param superClass - A HelixElement-derived constructor to mix into\n * @returns The mixed class constructor with form interaction state tracking\n *\n * @public\n */\nexport function FormMixin<TBase extends Constructor<HelixElement>>(\n superClass: TBase,\n): TBase & Constructor<FormMixinInterface & FormMixinProtectedHooks> {\n class FormMixinClass extends (superClass as Constructor<HelixElement>) {\n // ─── Interaction State ───────────────────────────────────────────────────\n\n /** @internal */\n private _dirty = false;\n\n /** @internal */\n private _touched = false;\n\n // ─── Public Getters ──────────────────────────────────────────────────────\n\n /**\n * True after the user has modified the field value at least once.\n * Resets to false on form reset.\n */\n get dirty(): boolean {\n return this._dirty;\n }\n\n /**\n * True after the field has received and lost focus at least once.\n * Resets to false on form reset.\n */\n get touched(): boolean {\n return this._touched;\n }\n\n /**\n * True while the field has never been modified. Opposite of `dirty`.\n */\n get pristine(): boolean {\n return !this._dirty;\n }\n\n // ─── Validity Delegation ─────────────────────────────────────────────────\n\n /**\n * Delegates to `ElementInternals.checkValidity()`.\n * The host element must have `static formAssociated = true`.\n */\n checkValidity(): boolean {\n return this._internals.checkValidity();\n }\n\n /**\n * Delegates to `ElementInternals.reportValidity()`.\n * The host element must have `static formAssociated = true`.\n */\n reportValidity(): boolean {\n return this._internals.reportValidity();\n }\n\n // ─── Lifecycle ───────────────────────────────────────────────────────────\n\n /**\n * Calls `_updateValidity()` after every Lit update cycle.\n * @internal\n */\n override updated(changedProperties: PropertyValues): void {\n super.updated(changedProperties);\n this._updateValidity();\n }\n\n // ─── Hook Methods ────────────────────────────────────────────────────────\n\n /**\n * Override in the host component to run constraint validation logic.\n * Called automatically by `updated()`. Use `this._internals.setValidity()`\n * inside this method.\n *\n * Part of the FormMixin subclassing contract — compiler-enforced protected;\n * do not call from outside a subclass.\n */\n protected _updateValidity(): void {\n // Default: valid. Subclasses override to apply constraints.\n }\n\n // ─── Interaction State Helpers ───────────────────────────────────────────\n\n /**\n * Advance `dirty` state. Call from the native input's `input` event.\n *\n * Part of the FormMixin subclassing contract — compiler-enforced protected;\n * do not call from outside a subclass.\n */\n protected _handleInteractionInput(): void {\n if (!this._dirty) {\n const prev = this._dirty;\n this._dirty = true;\n this.requestUpdate('_dirty', prev);\n }\n }\n\n /**\n * Advance `touched` state. Call from the native input's `blur` event.\n *\n * Part of the FormMixin subclassing contract — compiler-enforced protected;\n * do not call from outside a subclass.\n */\n protected _handleInteractionBlur(): void {\n if (!this._touched) {\n const prev = this._touched;\n this._touched = true;\n this.requestUpdate('_touched', prev);\n }\n }\n\n /**\n * Reset interaction state to initial values.\n * Call from `_onFormReset()` in the host component.\n *\n * Part of the FormMixin subclassing contract — compiler-enforced protected;\n * do not call from outside a subclass.\n */\n protected _resetInteractionState(): void {\n if (this._dirty || this._touched) {\n const prevDirty = this._dirty;\n const prevTouched = this._touched;\n this._dirty = false;\n this._touched = false;\n this.requestUpdate('_dirty', prevDirty);\n this.requestUpdate('_touched', prevTouched);\n }\n }\n }\n\n return FormMixinClass as unknown as TBase &\n Constructor<FormMixinInterface & FormMixinProtectedHooks>;\n}\n"],"names":["FormMixin","superClass","FormMixinClass","changedProperties","prev","prevDirty","prevTouched"],"mappings":"AA+FO,SAASA,EACdC,GACmE;AAAA,EACnE,MAAMC,UAAwBD,EAAyC;AAAA,IAAvE,cAAA;AAAA,YAAA,GAAA,SAAA,GAIE,KAAQ,SAAS,IAGjB,KAAQ,WAAW;AAAA,IAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,IAQnB,IAAI,QAAiB;AACnB,aAAO,KAAK;AAAA,IACd;AAAA;AAAA;AAAA;AAAA;AAAA,IAMA,IAAI,UAAmB;AACrB,aAAO,KAAK;AAAA,IACd;AAAA;AAAA;AAAA;AAAA,IAKA,IAAI,WAAoB;AACtB,aAAO,CAAC,KAAK;AAAA,IACf;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,IAQA,gBAAyB;AACvB,aAAO,KAAK,WAAW,cAAA;AAAA,IACzB;AAAA;AAAA;AAAA;AAAA;AAAA,IAMA,iBAA0B;AACxB,aAAO,KAAK,WAAW,eAAA;AAAA,IACzB;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,IAQS,QAAQE,GAAyC;AACxD,YAAM,QAAQA,CAAiB,GAC/B,KAAK,gBAAA;AAAA,IACP;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,IAYU,kBAAwB;AAAA,IAElC;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,IAUU,0BAAgC;AACxC,UAAI,CAAC,KAAK,QAAQ;AAChB,cAAMC,IAAO,KAAK;AAClB,aAAK,SAAS,IACd,KAAK,cAAc,UAAUA,CAAI;AAAA,MACnC;AAAA,IACF;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,IAQU,yBAA+B;AACvC,UAAI,CAAC,KAAK,UAAU;AAClB,cAAMA,IAAO,KAAK;AAClB,aAAK,WAAW,IAChB,KAAK,cAAc,YAAYA,CAAI;AAAA,MACrC;AAAA,IACF;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,IASU,yBAA+B;AACvC,UAAI,KAAK,UAAU,KAAK,UAAU;AAChC,cAAMC,IAAY,KAAK,QACjBC,IAAc,KAAK;AACzB,aAAK,SAAS,IACd,KAAK,WAAW,IAChB,KAAK,cAAc,UAAUD,CAAS,GACtC,KAAK,cAAc,YAAYC,CAAW;AAAA,MAC5C;AAAA,IACF;AAAA,EAAA;AAGF,SAAOJ;AAET;"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"aria-delegation-Doq6RRUy.js","sources":["../../src/mixins/aria-delegation.ts"],"sourcesContent":["import type { LitElement } from 'lit';\n\n/**\n * All standard ARIA attributes intercepted by this mixin.\n * Extend as needed, but keep the list minimal.\n */\nconst ARIA_ATTRIBUTES = [\n 'aria-activedescendant',\n 'aria-atomic',\n 'aria-autocomplete',\n 'aria-braillelabel',\n 'aria-brailleroledescription',\n 'aria-busy',\n 'aria-checked',\n 'aria-colcount',\n 'aria-colindex',\n 'aria-colindextext',\n 'aria-colspan',\n 'aria-controls',\n 'aria-current',\n 'aria-describedby',\n 'aria-description',\n 'aria-details',\n 'aria-disabled',\n 'aria-errormessage',\n 'aria-expanded',\n 'aria-flowto',\n 'aria-haspopup',\n 'aria-hidden',\n 'aria-invalid',\n 'aria-keyshortcuts',\n 'aria-label',\n 'aria-labelledby',\n 'aria-level',\n 'aria-live',\n 'aria-modal',\n 'aria-multiline',\n 'aria-multiselectable',\n 'aria-orientation',\n 'aria-owns',\n 'aria-placeholder',\n 'aria-posinset',\n 'aria-pressed',\n 'aria-readonly',\n 'aria-relevant',\n 'aria-required',\n 'aria-roledescription',\n 'aria-rowcount',\n 'aria-rowindex',\n 'aria-rowindextext',\n 'aria-rowspan',\n 'aria-selected',\n 'aria-setsize',\n 'aria-sort',\n 'aria-valuemax',\n 'aria-valuemin',\n 'aria-valuenow',\n 'aria-valuetext',\n 'role',\n] as const;\n\n/** Union type of all intercepted ARIA attribute names. */\nexport type AriaAttribute = (typeof ARIA_ATTRIBUTES)[number];\n\n// TypeScript mixin constraint: constructors must accept `any[]`.\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\ntype LitElementConstructor = new (...args: any[]) => LitElement;\n\n/**\n * The public interface added to any class by `mixinDelegatesAria`.\n * JS property accessors for all intercepted ARIA attributes, reading from\n * `data-aria-*` storage rather than `aria-*` attributes on the host.\n */\n/** @deprecated Use AriaDelegationMixinInterface instead */\nexport type AriadDelegationMixinInterface = AriaDelegationMixinInterface;\n\nexport interface AriaDelegationMixinInterface {\n ariaActiveDescendant: string | null;\n ariaAtomic: string | null;\n ariaAutoComplete: string | null;\n ariaBrailleLabel: string | null;\n ariaBrailleRoleDescription: string | null;\n ariaBusy: string | null;\n ariaChecked: string | null;\n ariaColCount: string | null;\n ariaColIndex: string | null;\n ariaColIndexText: string | null;\n ariaColSpan: string | null;\n ariaControls: string | null;\n ariaCurrent: string | null;\n ariaDescribedBy: string | null;\n ariaDescription: string | null;\n ariaDetails: string | null;\n ariaDisabled: string | null;\n ariaErrorMessage: string | null;\n ariaExpanded: string | null;\n ariaFlowTo: string | null;\n ariaHasPopup: string | null;\n ariaHidden: string | null;\n ariaInvalid: string | null;\n ariaKeyShortcuts: string | null;\n ariaLabel: string | null;\n ariaLabelledBy: string | null;\n ariaLevel: string | null;\n ariaLive: string | null;\n ariaModal: string | null;\n ariaMultiLine: string | null;\n ariaMultiSelectable: string | null;\n ariaOrientation: string | null;\n ariaOwns: string | null;\n ariaPlaceholder: string | null;\n ariaPosInSet: string | null;\n ariaPressed: string | null;\n ariaReadOnly: string | null;\n ariaRelevant: string | null;\n ariaRequired: string | null;\n ariaRoleDescription: string | null;\n ariaRowCount: string | null;\n ariaRowIndex: string | null;\n ariaRowIndexText: string | null;\n ariaRowSpan: string | null;\n ariaSelected: string | null;\n ariaSetSize: string | null;\n ariaSort: string | null;\n ariaValueMax: string | null;\n ariaValueMin: string | null;\n ariaValueNow: string | null;\n ariaValueText: string | null;\n role: string | null;\n}\n\n/**\n * Mixin that delegates ARIA attributes from the host element to data-aria-* storage,\n * preventing Shadow DOM double-announcement by screen readers.\n *\n * When a custom element uses `delegatesFocus: true`, the focus delegate (inner element)\n * and the host are both in the a11y tree. Setting `aria-label` on the host causes the\n * label to be announced twice — once for the host, once for the focused inner element.\n *\n * This mixin intercepts `attributeChangedCallback` for all ARIA attributes:\n * - Shifts the value from `aria-*` to `data-aria-*` on the host\n * - Provides JS property accessors that read from `data-aria-*`\n * - The host element no longer has `aria-*` attributes visible in the a11y tree\n * - Components read ARIA values via property accessors and apply them to inner elements\n *\n * @example\n * ```ts\n * class HxButton extends mixinDelegatesAria(LitElement) {\n * render() {\n * return html`<button aria-label=${this.ariaLabel ?? nothing}></button>`;\n * }\n * }\n * ```\n *\n * @param Base - A LitElement subclass constructor\n * @returns A new constructor extending Base with ARIA delegation behaviour\n */\nexport function mixinDelegatesAria<T extends LitElementConstructor>(Base: T): T {\n class AriaDelegationMixin extends Base {\n // Per-instance guard: tracks which aria attributes are mid-processing so\n // that the recursive attributeChangedCallback triggered by our own\n // removeAttribute(name) call does not erroneously clear data-aria-*.\n #processingAria = new Set<string>();\n\n static get observedAttributes(): string[] {\n // Reflect.get with `this` as the receiver passes the concrete subclass\n // (e.g. HelixButton) through to Lit's ReactiveElement getter, so it\n // returns @property attribute names for that specific class.\n // TypeScript cannot infer static members on `T`, so we use Reflect.get\n // rather than `super.observedAttributes` to avoid TS2339.\n const parent: object = Object.getPrototypeOf(AriaDelegationMixin);\n const superAttrs: string[] =\n (Reflect.get(parent, 'observedAttributes', this) as string[] | undefined) ?? [];\n // Append any ARIA attributes not already in the list.\n const ariaAttrs = ARIA_ATTRIBUTES.filter((a) => !superAttrs.includes(a));\n return [...superAttrs, ...ariaAttrs];\n }\n\n attributeChangedCallback(name: string, old: string | null, next: string | null): void {\n if ((ARIA_ATTRIBUTES as readonly string[]).includes(name)) {\n // Guard: if we're already processing this attribute, we're in the\n // recursive callback triggered by our own removeAttribute(name) below.\n // Do not process it again — that would clear data-aria-* incorrectly.\n if (this.#processingAria.has(name)) return;\n\n // Intercept: store as data-aria-*, do not propagate aria-* to the host.\n if (next !== null) {\n // data-aria-* is not in observedAttributes — no recursive loop here.\n this.setAttribute(`data-${name}`, next);\n } else {\n this.removeAttribute(`data-${name}`);\n }\n\n // Remove the aria-* attribute from the host so it is absent from the\n // a11y tree and cannot cause double announcements. Guard while doing so.\n this.#processingAria.add(name);\n if (this.hasAttribute(name)) {\n this.removeAttribute(name); // synchronously re-enters attributeChangedCallback; guard catches it\n }\n this.#processingAria.delete(name);\n\n // Trigger Lit update so render() re-reads the delegated value.\n this.requestUpdate();\n return;\n }\n super.attributeChangedCallback(name, old, next);\n }\n }\n\n // Add JS property accessors for each ARIA attribute, reading from data-aria-*\n for (const attr of ARIA_ATTRIBUTES) {\n // Convert 'aria-label' → 'ariaLabel', 'role' → 'role'\n const propName: string = attr === 'role' ? 'role' : ariaAttrToProp(attr);\n const dataAttr = `data-${attr}`;\n\n Object.defineProperty(AriaDelegationMixin.prototype, propName, {\n get(this: Element): string | null {\n return this.getAttribute(dataAttr);\n },\n set(this: LitElement, value: string | null) {\n if (value === null || value === undefined) {\n this.removeAttribute(dataAttr);\n this.removeAttribute(attr);\n } else {\n this.setAttribute(dataAttr, value);\n // Ensure aria-* is NOT present on the host.\n if (this.hasAttribute(attr)) {\n this.removeAttribute(attr);\n }\n }\n // Trigger Lit reactive update.\n this.requestUpdate();\n },\n configurable: true,\n enumerable: false,\n });\n }\n\n // Cast to T to satisfy the declared return type. The AriaDelegationMixinInterface\n // instance members are added at runtime via Object.defineProperty above; callers\n // that need the typed accessors should cast the instance or use the interface directly.\n return AriaDelegationMixin as unknown as T;\n}\n\n/**\n * Converts 'aria-label' → 'ariaLabel', 'aria-busy' → 'ariaBusy', etc.\n * Removes the 'aria-' prefix, capitalizes the first letter of the remainder,\n * then camelCases any additional hyphen-separated segments.\n */\nfunction ariaAttrToProp(attr: string): string {\n const rest = attr.replace(/^aria-/, '');\n return (\n 'aria' +\n rest.charAt(0).toUpperCase() +\n rest.slice(1).replace(/-([a-z])/g, (_, c: string) => c.toUpperCase())\n );\n}\n"],"names":["ARIA_ATTRIBUTES","mixinDelegatesAria","Base","_processingAria","_AriaDelegationMixin","__privateAdd","parent","superAttrs","ariaAttrs","a","name","old","next","__privateGet","AriaDelegationMixin","attr","propName","ariaAttrToProp","dataAttr","value","rest","_","c"],"mappings":";;;;;AAMA,MAAMA,IAAkB;AAAA,EACtB;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AACF;AAkGO,SAASC,EAAoDC,GAAY;AAvJhF,MAAAC;AAwJE,QAAMC,IAAN,MAAMA,UAA4BF,EAAK;AAAA,IAAvC;AAAA;AAIE;AAAA;AAAA;AAAA,MAAAG,EAAA,MAAAF,uBAAsB,IAAA;AAAA;AAAA,IAEtB,WAAW,qBAA+B;AAMxC,YAAMG,IAAiB,OAAO,eAAeF,CAAmB,GAC1DG,IACH,QAAQ,IAAID,GAAQ,sBAAsB,IAAI,KAA8B,CAAA,GAEzEE,IAAYR,EAAgB,OAAO,CAACS,MAAM,CAACF,EAAW,SAASE,CAAC,CAAC;AACvE,aAAO,CAAC,GAAGF,GAAY,GAAGC,CAAS;AAAA,IACrC;AAAA,IAEA,yBAAyBE,GAAcC,GAAoBC,GAA2B;AACpF,UAAKZ,EAAsC,SAASU,CAAI,GAAG;AAIzD,YAAIG,EAAA,MAAKV,GAAgB,IAAIO,CAAI,EAAG;AAGpC,QAAIE,MAAS,OAEX,KAAK,aAAa,QAAQF,CAAI,IAAIE,CAAI,IAEtC,KAAK,gBAAgB,QAAQF,CAAI,EAAE,GAKrCG,EAAA,MAAKV,GAAgB,IAAIO,CAAI,GACzB,KAAK,aAAaA,CAAI,KACxB,KAAK,gBAAgBA,CAAI,GAE3BG,EAAA,MAAKV,GAAgB,OAAOO,CAAI,GAGhC,KAAK,cAAA;AACL;AAAA,MACF;AACA,YAAM,yBAAyBA,GAAMC,GAAKC,CAAI;AAAA,IAChD;AAAA,EAAA;AA5CA,EAAAT,IAAA;AAJF,MAAMW,IAANV;AAoDA,aAAWW,KAAQf,GAAiB;AAElC,UAAMgB,IAAmBD,MAAS,SAAS,SAASE,EAAeF,CAAI,GACjEG,IAAW,QAAQH,CAAI;AAE7B,WAAO,eAAeD,EAAoB,WAAWE,GAAU;AAAA,MAC7D,MAAkC;AAChC,eAAO,KAAK,aAAaE,CAAQ;AAAA,MACnC;AAAA,MACA,IAAsBC,GAAsB;AAC1C,QAAIA,KAAU,QACZ,KAAK,gBAAgBD,CAAQ,GAC7B,KAAK,gBAAgBH,CAAI,MAEzB,KAAK,aAAaG,GAAUC,CAAK,GAE7B,KAAK,aAAaJ,CAAI,KACxB,KAAK,gBAAgBA,CAAI,IAI7B,KAAK,cAAA;AAAA,MACP;AAAA,MACA,cAAc;AAAA,MACd,YAAY;AAAA,IAAA,CACb;AAAA,EACH;AAKA,SAAOD;AACT;AAOA,SAASG,EAAeF,GAAsB;AAC5C,QAAMK,IAAOL,EAAK,QAAQ,UAAU,EAAE;AACtC,SACE,SACAK,EAAK,OAAO,CAAC,EAAE,YAAA,IACfA,EAAK,MAAM,CAAC,EAAE,QAAQ,aAAa,CAACC,GAAGC,MAAcA,EAAE,aAAa;AAExE;"}
|
|
1
|
+
{"version":3,"file":"aria-delegation-Doq6RRUy.js","sources":["../../src/mixins/aria-delegation.ts"],"sourcesContent":["import type { LitElement } from 'lit';\n\n/**\n * All standard ARIA attributes intercepted by this mixin.\n * Extend as needed, but keep the list minimal.\n */\nconst ARIA_ATTRIBUTES = [\n 'aria-activedescendant',\n 'aria-atomic',\n 'aria-autocomplete',\n 'aria-braillelabel',\n 'aria-brailleroledescription',\n 'aria-busy',\n 'aria-checked',\n 'aria-colcount',\n 'aria-colindex',\n 'aria-colindextext',\n 'aria-colspan',\n 'aria-controls',\n 'aria-current',\n 'aria-describedby',\n 'aria-description',\n 'aria-details',\n 'aria-disabled',\n 'aria-errormessage',\n 'aria-expanded',\n 'aria-flowto',\n 'aria-haspopup',\n 'aria-hidden',\n 'aria-invalid',\n 'aria-keyshortcuts',\n 'aria-label',\n 'aria-labelledby',\n 'aria-level',\n 'aria-live',\n 'aria-modal',\n 'aria-multiline',\n 'aria-multiselectable',\n 'aria-orientation',\n 'aria-owns',\n 'aria-placeholder',\n 'aria-posinset',\n 'aria-pressed',\n 'aria-readonly',\n 'aria-relevant',\n 'aria-required',\n 'aria-roledescription',\n 'aria-rowcount',\n 'aria-rowindex',\n 'aria-rowindextext',\n 'aria-rowspan',\n 'aria-selected',\n 'aria-setsize',\n 'aria-sort',\n 'aria-valuemax',\n 'aria-valuemin',\n 'aria-valuenow',\n 'aria-valuetext',\n 'role',\n] as const;\n\n/** Union type of all intercepted ARIA attribute names. */\nexport type AriaAttribute = (typeof ARIA_ATTRIBUTES)[number];\n\n// TypeScript mixin constraint: constructors must accept `any[]`.\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\ntype LitElementConstructor = new (...args: any[]) => LitElement;\n\n/**\n * The public interface added to any class by `mixinDelegatesAria`.\n * JS property accessors for all intercepted ARIA attributes, reading from\n * `data-aria-*` storage rather than `aria-*` attributes on the host.\n */\n\nexport interface AriaDelegationMixinInterface {\n ariaActiveDescendant: string | null;\n ariaAtomic: string | null;\n ariaAutoComplete: string | null;\n ariaBrailleLabel: string | null;\n ariaBrailleRoleDescription: string | null;\n ariaBusy: string | null;\n ariaChecked: string | null;\n ariaColCount: string | null;\n ariaColIndex: string | null;\n ariaColIndexText: string | null;\n ariaColSpan: string | null;\n ariaControls: string | null;\n ariaCurrent: string | null;\n ariaDescribedBy: string | null;\n ariaDescription: string | null;\n ariaDetails: string | null;\n ariaDisabled: string | null;\n ariaErrorMessage: string | null;\n ariaExpanded: string | null;\n ariaFlowTo: string | null;\n ariaHasPopup: string | null;\n ariaHidden: string | null;\n ariaInvalid: string | null;\n ariaKeyShortcuts: string | null;\n ariaLabel: string | null;\n ariaLabelledBy: string | null;\n ariaLevel: string | null;\n ariaLive: string | null;\n ariaModal: string | null;\n ariaMultiLine: string | null;\n ariaMultiSelectable: string | null;\n ariaOrientation: string | null;\n ariaOwns: string | null;\n ariaPlaceholder: string | null;\n ariaPosInSet: string | null;\n ariaPressed: string | null;\n ariaReadOnly: string | null;\n ariaRelevant: string | null;\n ariaRequired: string | null;\n ariaRoleDescription: string | null;\n ariaRowCount: string | null;\n ariaRowIndex: string | null;\n ariaRowIndexText: string | null;\n ariaRowSpan: string | null;\n ariaSelected: string | null;\n ariaSetSize: string | null;\n ariaSort: string | null;\n ariaValueMax: string | null;\n ariaValueMin: string | null;\n ariaValueNow: string | null;\n ariaValueText: string | null;\n role: string | null;\n}\n\n/**\n * Mixin that delegates ARIA attributes from the host element to data-aria-* storage,\n * preventing Shadow DOM double-announcement by screen readers.\n *\n * When a custom element uses `delegatesFocus: true`, the focus delegate (inner element)\n * and the host are both in the a11y tree. Setting `aria-label` on the host causes the\n * label to be announced twice — once for the host, once for the focused inner element.\n *\n * This mixin intercepts `attributeChangedCallback` for all ARIA attributes:\n * - Shifts the value from `aria-*` to `data-aria-*` on the host\n * - Provides JS property accessors that read from `data-aria-*`\n * - The host element no longer has `aria-*` attributes visible in the a11y tree\n * - Components read ARIA values via property accessors and apply them to inner elements\n *\n * @example\n * ```ts\n * class HxButton extends mixinDelegatesAria(LitElement) {\n * render() {\n * return html`<button aria-label=${this.ariaLabel ?? nothing}></button>`;\n * }\n * }\n * ```\n *\n * @param Base - A LitElement subclass constructor\n * @returns A new constructor extending Base with ARIA delegation behaviour\n */\nexport function mixinDelegatesAria<T extends LitElementConstructor>(Base: T): T {\n class AriaDelegationMixin extends Base {\n // Per-instance guard: tracks which aria attributes are mid-processing so\n // that the recursive attributeChangedCallback triggered by our own\n // removeAttribute(name) call does not erroneously clear data-aria-*.\n #processingAria = new Set<string>();\n\n static get observedAttributes(): string[] {\n // Reflect.get with `this` as the receiver passes the concrete subclass\n // (e.g. HelixButton) through to Lit's ReactiveElement getter, so it\n // returns @property attribute names for that specific class.\n // TypeScript cannot infer static members on `T`, so we use Reflect.get\n // rather than `super.observedAttributes` to avoid TS2339.\n const parent: object = Object.getPrototypeOf(AriaDelegationMixin);\n const superAttrs: string[] =\n (Reflect.get(parent, 'observedAttributes', this) as string[] | undefined) ?? [];\n // Append any ARIA attributes not already in the list.\n const ariaAttrs = ARIA_ATTRIBUTES.filter((a) => !superAttrs.includes(a));\n return [...superAttrs, ...ariaAttrs];\n }\n\n attributeChangedCallback(name: string, old: string | null, next: string | null): void {\n if ((ARIA_ATTRIBUTES as readonly string[]).includes(name)) {\n // Guard: if we're already processing this attribute, we're in the\n // recursive callback triggered by our own removeAttribute(name) below.\n // Do not process it again — that would clear data-aria-* incorrectly.\n if (this.#processingAria.has(name)) return;\n\n // Intercept: store as data-aria-*, do not propagate aria-* to the host.\n if (next !== null) {\n // data-aria-* is not in observedAttributes — no recursive loop here.\n this.setAttribute(`data-${name}`, next);\n } else {\n this.removeAttribute(`data-${name}`);\n }\n\n // Remove the aria-* attribute from the host so it is absent from the\n // a11y tree and cannot cause double announcements. Guard while doing so.\n this.#processingAria.add(name);\n if (this.hasAttribute(name)) {\n this.removeAttribute(name); // synchronously re-enters attributeChangedCallback; guard catches it\n }\n this.#processingAria.delete(name);\n\n // Trigger Lit update so render() re-reads the delegated value.\n this.requestUpdate();\n return;\n }\n super.attributeChangedCallback(name, old, next);\n }\n }\n\n // Add JS property accessors for each ARIA attribute, reading from data-aria-*\n for (const attr of ARIA_ATTRIBUTES) {\n // Convert 'aria-label' → 'ariaLabel', 'role' → 'role'\n const propName: string = attr === 'role' ? 'role' : ariaAttrToProp(attr);\n const dataAttr = `data-${attr}`;\n\n Object.defineProperty(AriaDelegationMixin.prototype, propName, {\n get(this: Element): string | null {\n return this.getAttribute(dataAttr);\n },\n set(this: LitElement, value: string | null) {\n if (value === null || value === undefined) {\n this.removeAttribute(dataAttr);\n this.removeAttribute(attr);\n } else {\n this.setAttribute(dataAttr, value);\n // Ensure aria-* is NOT present on the host.\n if (this.hasAttribute(attr)) {\n this.removeAttribute(attr);\n }\n }\n // Trigger Lit reactive update.\n this.requestUpdate();\n },\n configurable: true,\n enumerable: false,\n });\n }\n\n // Cast to T to satisfy the declared return type. The AriaDelegationMixinInterface\n // instance members are added at runtime via Object.defineProperty above; callers\n // that need the typed accessors should cast the instance or use the interface directly.\n return AriaDelegationMixin as unknown as T;\n}\n\n/**\n * Converts 'aria-label' → 'ariaLabel', 'aria-busy' → 'ariaBusy', etc.\n * Removes the 'aria-' prefix, capitalizes the first letter of the remainder,\n * then camelCases any additional hyphen-separated segments.\n */\nfunction ariaAttrToProp(attr: string): string {\n const rest = attr.replace(/^aria-/, '');\n return (\n 'aria' +\n rest.charAt(0).toUpperCase() +\n rest.slice(1).replace(/-([a-z])/g, (_, c: string) => c.toUpperCase())\n );\n}\n"],"names":["ARIA_ATTRIBUTES","mixinDelegatesAria","Base","_processingAria","_AriaDelegationMixin","__privateAdd","parent","superAttrs","ariaAttrs","a","name","old","next","__privateGet","AriaDelegationMixin","attr","propName","ariaAttrToProp","dataAttr","value","rest","_","c"],"mappings":";;;;;AAMA,MAAMA,IAAkB;AAAA,EACtB;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AACF;AAgGO,SAASC,EAAoDC,GAAY;AArJhF,MAAAC;AAsJE,QAAMC,IAAN,MAAMA,UAA4BF,EAAK;AAAA,IAAvC;AAAA;AAIE;AAAA;AAAA;AAAA,MAAAG,EAAA,MAAAF,uBAAsB,IAAA;AAAA;AAAA,IAEtB,WAAW,qBAA+B;AAMxC,YAAMG,IAAiB,OAAO,eAAeF,CAAmB,GAC1DG,IACH,QAAQ,IAAID,GAAQ,sBAAsB,IAAI,KAA8B,CAAA,GAEzEE,IAAYR,EAAgB,OAAO,CAACS,MAAM,CAACF,EAAW,SAASE,CAAC,CAAC;AACvE,aAAO,CAAC,GAAGF,GAAY,GAAGC,CAAS;AAAA,IACrC;AAAA,IAEA,yBAAyBE,GAAcC,GAAoBC,GAA2B;AACpF,UAAKZ,EAAsC,SAASU,CAAI,GAAG;AAIzD,YAAIG,EAAA,MAAKV,GAAgB,IAAIO,CAAI,EAAG;AAGpC,QAAIE,MAAS,OAEX,KAAK,aAAa,QAAQF,CAAI,IAAIE,CAAI,IAEtC,KAAK,gBAAgB,QAAQF,CAAI,EAAE,GAKrCG,EAAA,MAAKV,GAAgB,IAAIO,CAAI,GACzB,KAAK,aAAaA,CAAI,KACxB,KAAK,gBAAgBA,CAAI,GAE3BG,EAAA,MAAKV,GAAgB,OAAOO,CAAI,GAGhC,KAAK,cAAA;AACL;AAAA,MACF;AACA,YAAM,yBAAyBA,GAAMC,GAAKC,CAAI;AAAA,IAChD;AAAA,EAAA;AA5CA,EAAAT,IAAA;AAJF,MAAMW,IAANV;AAoDA,aAAWW,KAAQf,GAAiB;AAElC,UAAMgB,IAAmBD,MAAS,SAAS,SAASE,EAAeF,CAAI,GACjEG,IAAW,QAAQH,CAAI;AAE7B,WAAO,eAAeD,EAAoB,WAAWE,GAAU;AAAA,MAC7D,MAAkC;AAChC,eAAO,KAAK,aAAaE,CAAQ;AAAA,MACnC;AAAA,MACA,IAAsBC,GAAsB;AAC1C,QAAIA,KAAU,QACZ,KAAK,gBAAgBD,CAAQ,GAC7B,KAAK,gBAAgBH,CAAI,MAEzB,KAAK,aAAaG,GAAUC,CAAK,GAE7B,KAAK,aAAaJ,CAAI,KACxB,KAAK,gBAAgBA,CAAI,IAI7B,KAAK,cAAA;AAAA,MACP;AAAA,MACA,cAAc;AAAA,MACd,YAAY;AAAA,IAAA,CACb;AAAA,EACH;AAKA,SAAOD;AACT;AAOA,SAASG,EAAeF,GAAsB;AAC5C,QAAMK,IAAOL,EAAK,QAAQ,UAAU,EAAE;AACtC,SACE,SACAK,EAAK,OAAO,CAAC,EAAE,YAAA,IACfA,EAAK,MAAM,CAAC,EAAE,QAAQ,aAAa,CAACC,GAAGC,MAAcA,EAAE,aAAa;AAExE;"}
|
|
@@ -1,35 +1,31 @@
|
|
|
1
1
|
var a = (s) => {
|
|
2
2
|
throw TypeError(s);
|
|
3
3
|
};
|
|
4
|
-
var n = (s,
|
|
5
|
-
var
|
|
6
|
-
import { LitElement as
|
|
4
|
+
var n = (s, r, t) => r.has(s) || a("Cannot " + t);
|
|
5
|
+
var l = (s, r, t) => (n(s, r, "read from private field"), t ? t.call(s) : r.get(s)), c = (s, r, t) => r.has(s) ? a("Cannot add the same private member more than once") : r instanceof WeakSet ? r.add(s) : r.set(s, t), d = (s, r, t, e) => (n(s, r, "write to private field"), e ? e.call(s, t) : r.set(s, t), t);
|
|
6
|
+
import { LitElement as f } from "lit";
|
|
7
7
|
var o;
|
|
8
|
-
const i = class i extends
|
|
8
|
+
const i = class i extends f {
|
|
9
9
|
constructor() {
|
|
10
10
|
super(...arguments);
|
|
11
|
-
|
|
11
|
+
c(this, o);
|
|
12
12
|
}
|
|
13
13
|
/**
|
|
14
14
|
* Lazy accessor for `ElementInternals`. Calls `attachInternals()` on first
|
|
15
15
|
* access and caches the result.
|
|
16
16
|
*
|
|
17
|
-
*
|
|
18
|
-
*
|
|
17
|
+
* Available to ALL components — not just form-associated ones.
|
|
18
|
+
* `ElementInternals` is also the standard mechanism for setting ARIA roles,
|
|
19
|
+
* states, and properties from within Shadow DOM (e.g., `this._internals.role`).
|
|
19
20
|
*
|
|
20
|
-
* @throws {Error} If accessed on a component where `formAssociated` is `false`
|
|
21
21
|
* @internal
|
|
22
22
|
*/
|
|
23
23
|
get _internals() {
|
|
24
|
-
|
|
25
|
-
throw new Error(
|
|
26
|
-
`[HelixElement] _internals accessed on <${this.tagName.toLowerCase()}> but static formAssociated is not set to true on ${this.constructor.name}.`
|
|
27
|
-
);
|
|
28
|
-
const t = c(this, o);
|
|
24
|
+
const t = l(this, o);
|
|
29
25
|
if (t !== void 0)
|
|
30
26
|
return t;
|
|
31
|
-
const
|
|
32
|
-
return
|
|
27
|
+
const e = this.attachInternals();
|
|
28
|
+
return d(this, o, e), e;
|
|
33
29
|
}
|
|
34
30
|
// ─── Browser Form Callbacks (delegate to hook methods) ───
|
|
35
31
|
/**
|
|
@@ -57,33 +53,43 @@ const i = class i extends h {
|
|
|
57
53
|
* Delegates to `_onFormStateRestore`. Override that method in subclasses.
|
|
58
54
|
* @internal
|
|
59
55
|
*/
|
|
60
|
-
formStateRestoreCallback(t,
|
|
61
|
-
this._onFormStateRestore(t,
|
|
56
|
+
formStateRestoreCallback(t, e) {
|
|
57
|
+
this._onFormStateRestore(t, e);
|
|
62
58
|
}
|
|
63
59
|
// ─── Hook Methods (override in subclasses) ───
|
|
64
60
|
/**
|
|
65
61
|
* Override in subclass to react to the element being disabled or enabled
|
|
66
62
|
* via a parent `<fieldset>`.
|
|
67
63
|
*
|
|
64
|
+
* Part of the HelixElement subclassing contract (stable across minor/patch
|
|
65
|
+
* releases; breaking changes gated to major releases).
|
|
66
|
+
*
|
|
68
67
|
* @param _disabled - `true` when the element is being disabled
|
|
69
|
-
* @
|
|
68
|
+
* @protected
|
|
70
69
|
*/
|
|
71
70
|
_onFormDisabled(t) {
|
|
72
71
|
}
|
|
73
72
|
/**
|
|
74
73
|
* Override in subclass to reset component state when the owning form resets.
|
|
75
|
-
*
|
|
74
|
+
*
|
|
75
|
+
* Part of the HelixElement subclassing contract (stable across minor/patch
|
|
76
|
+
* releases; breaking changes gated to major releases).
|
|
77
|
+
*
|
|
78
|
+
* @protected
|
|
76
79
|
*/
|
|
77
80
|
_onFormReset() {
|
|
78
81
|
}
|
|
79
82
|
/**
|
|
80
83
|
* Override in subclass to restore component state from saved form state.
|
|
81
84
|
*
|
|
85
|
+
* Part of the HelixElement subclassing contract (stable across minor/patch
|
|
86
|
+
* releases; breaking changes gated to major releases).
|
|
87
|
+
*
|
|
82
88
|
* @param _state - The saved state value, or `null` if none
|
|
83
89
|
* @param _mode - `'restore'` for bfcache navigation, `'autocomplete'` for autofill
|
|
84
|
-
* @
|
|
90
|
+
* @protected
|
|
85
91
|
*/
|
|
86
|
-
_onFormStateRestore(t,
|
|
92
|
+
_onFormStateRestore(t, e) {
|
|
87
93
|
}
|
|
88
94
|
// ─── Convenience Getters ───
|
|
89
95
|
/**
|
|
@@ -121,8 +127,8 @@ const i = class i extends h {
|
|
|
121
127
|
}
|
|
122
128
|
};
|
|
123
129
|
o = new WeakMap(), i.formAssociated = !1;
|
|
124
|
-
let
|
|
130
|
+
let m = i;
|
|
125
131
|
export {
|
|
126
|
-
|
|
132
|
+
m as H
|
|
127
133
|
};
|
|
128
|
-
//# sourceMappingURL=helix-element-
|
|
134
|
+
//# sourceMappingURL=helix-element-BNEYeiys.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"helix-element-BNEYeiys.js","sources":["../../src/base/helix-element.ts"],"sourcesContent":["import { LitElement } from 'lit';\n\n/**\n * `HelixElement` extends `LitElement` with shared infrastructure for all HELiX\n * components: lazy `ElementInternals` access, form lifecycle hook delegation,\n * and convenience validity getters.\n *\n * All subclasses get a lazy `_internals` accessor that calls\n * `attachInternals()` on first access — useful for both form participation\n * and ARIA role/state management via `ElementInternals`.\n *\n * Form association is opt-in via `static formAssociated = true` on the subclass.\n *\n * Form components should also override the `_onForm*` hook methods rather than\n * re-declaring the raw browser callbacks (`formResetCallback`, etc.).\n *\n * @example Non-form component — no configuration required:\n * ```ts\n * class HxCard extends HelixElement {\n * // no formAssociated needed\n * }\n * ```\n *\n * @example Form-associated component:\n * ```ts\n * class HxTextInput extends HelixElement {\n * static override formAssociated = true;\n *\n * override _onFormReset(): void {\n * this.value = '';\n * this._internals.setFormValue('');\n * }\n *\n * override _onFormDisabled(disabled: boolean): void {\n * this.disabled = disabled;\n * }\n * }\n * ```\n *\n * @public\n */\nexport class HelixElement extends LitElement {\n /**\n * Set to `true` on the subclass to enable ElementInternals form association.\n *\n * IMPORTANT: This MUST be redeclared as `static override formAssociated = true`\n * on each form-associated subclass. The browser's form association mechanism\n * inspects `formAssociated` on the *registered* custom element class, not\n * on ancestor classes.\n *\n * @internal\n */\n static formAssociated = false;\n\n #internals: ElementInternals | undefined;\n\n /**\n * Lazy accessor for `ElementInternals`. Calls `attachInternals()` on first\n * access and caches the result.\n *\n * Available to ALL components — not just form-associated ones.\n * `ElementInternals` is also the standard mechanism for setting ARIA roles,\n * states, and properties from within Shadow DOM (e.g., `this._internals.role`).\n *\n * @internal\n */\n get _internals(): ElementInternals {\n const cached = this.#internals;\n if (cached !== undefined) {\n return cached;\n }\n const internals = this.attachInternals();\n this.#internals = internals;\n return internals;\n }\n\n // ─── Browser Form Callbacks (delegate to hook methods) ───\n\n /**\n * Called by the browser when the element's form-associated disabled state\n * changes (e.g., a parent `<fieldset disabled>` is toggled).\n *\n * Delegates to `_onFormDisabled`. Override that method in subclasses.\n * @internal\n */\n formDisabledCallback(disabled: boolean): void {\n this._onFormDisabled(disabled);\n }\n\n /**\n * Called by the browser when the owning form is reset.\n *\n * Delegates to `_onFormReset`. Override that method in subclasses.\n * @internal\n */\n formResetCallback(): void {\n this._onFormReset();\n }\n\n /**\n * Called by the browser to restore form state (e.g., back/forward cache).\n *\n * Delegates to `_onFormStateRestore`. Override that method in subclasses.\n * @internal\n */\n formStateRestoreCallback(\n state: File | string | FormData | null,\n mode: 'restore' | 'autocomplete',\n ): void {\n this._onFormStateRestore(state, mode);\n }\n\n // ─── Hook Methods (override in subclasses) ───\n\n /**\n * Override in subclass to react to the element being disabled or enabled\n * via a parent `<fieldset>`.\n *\n * Part of the HelixElement subclassing contract (stable across minor/patch\n * releases; breaking changes gated to major releases).\n *\n * @param _disabled - `true` when the element is being disabled\n * @protected\n */\n protected _onFormDisabled(_disabled: boolean): void {}\n\n /**\n * Override in subclass to reset component state when the owning form resets.\n *\n * Part of the HelixElement subclassing contract (stable across minor/patch\n * releases; breaking changes gated to major releases).\n *\n * @protected\n */\n protected _onFormReset(): void {}\n\n /**\n * Override in subclass to restore component state from saved form state.\n *\n * Part of the HelixElement subclassing contract (stable across minor/patch\n * releases; breaking changes gated to major releases).\n *\n * @param _state - The saved state value, or `null` if none\n * @param _mode - `'restore'` for bfcache navigation, `'autocomplete'` for autofill\n * @protected\n */\n protected _onFormStateRestore(\n _state: File | string | FormData | null,\n _mode: 'restore' | 'autocomplete',\n ): void {}\n\n // ─── Convenience Getters ───\n\n /**\n * The associated form element, or `null` if not form-associated or not yet\n * connected to a form.\n *\n * Form-associated subclasses that need a guaranteed non-null return type\n * should redeclare this getter and delegate to `this._internals.form`.\n *\n * @internal\n */\n get form(): HTMLFormElement | null {\n if (!(this.constructor as typeof HelixElement).formAssociated) {\n return null;\n }\n return this._internals.form;\n }\n\n /**\n * The current `ValidityState` for this element, or `null` if not\n * form-associated.\n *\n * Form-associated subclasses that need a guaranteed `ValidityState` return\n * should redeclare this getter and delegate to `this._internals.validity`.\n *\n * @internal\n */\n get validity(): ValidityState | null {\n if (!(this.constructor as typeof HelixElement).formAssociated) {\n return null;\n }\n return this._internals.validity;\n }\n\n /**\n * The current validation message, or an empty string if not form-associated\n * or if the element is valid.\n *\n * @internal\n */\n get validationMessage(): string {\n if (!(this.constructor as typeof HelixElement).formAssociated) {\n return '';\n }\n return this._internals.validationMessage;\n }\n}\n"],"names":["_HelixElement","LitElement","__privateAdd","_internals","cached","__privateGet","internals","__privateSet","disabled","state","mode","_disabled","_state","_mode","HelixElement"],"mappings":";;;;;;;AAyCO,MAAMA,IAAN,MAAMA,UAAqBC,EAAW;AAAA,EAAtC;AAAA;AAaL,IAAAC,EAAA,MAAAC;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAYA,IAAI,aAA+B;AACjC,UAAMC,IAASC,EAAA,MAAKF;AACpB,QAAIC,MAAW;AACb,aAAOA;AAET,UAAME,IAAY,KAAK,gBAAA;AACvB,WAAAC,EAAA,MAAKJ,GAAaG,IACXA;AAAA,EACT;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAWA,qBAAqBE,GAAyB;AAC5C,SAAK,gBAAgBA,CAAQ;AAAA,EAC/B;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAQA,oBAA0B;AACxB,SAAK,aAAA;AAAA,EACP;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAQA,yBACEC,GACAC,GACM;AACN,SAAK,oBAAoBD,GAAOC,CAAI;AAAA,EACtC;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAcU,gBAAgBC,GAA0B;AAAA,EAAC;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAU3C,eAAqB;AAAA,EAAC;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAYtB,oBACRC,GACAC,GACM;AAAA,EAAC;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAaT,IAAI,OAA+B;AACjC,WAAM,KAAK,YAAoC,iBAGxC,KAAK,WAAW,OAFd;AAAA,EAGX;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAWA,IAAI,WAAiC;AACnC,WAAM,KAAK,YAAoC,iBAGxC,KAAK,WAAW,WAFd;AAAA,EAGX;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAQA,IAAI,oBAA4B;AAC9B,WAAM,KAAK,YAAoC,iBAGxC,KAAK,WAAW,oBAFd;AAAA,EAGX;AACF;AA/IEV,IAAA,eAFAH,EAAO,iBAAiB;AAXnB,IAAMc,IAANd;"}
|
|
@@ -1,13 +1,13 @@
|
|
|
1
|
-
import { css as _,
|
|
2
|
-
import "
|
|
3
|
-
import { property as h, customElement as $ } from "lit/decorators.js";
|
|
1
|
+
import { css as _, nothing as y, html as C, svg as S } from "lit";
|
|
2
|
+
import { property as h, customElement as E } from "lit/decorators.js";
|
|
4
3
|
import { classMap as O } from "lit/directives/class-map.js";
|
|
5
|
-
import {
|
|
4
|
+
import { H as $ } from "./helix-element-BNEYeiys.js";
|
|
5
|
+
import { c as D } from "./id-counter-DuX8vsui.js";
|
|
6
6
|
import { d as w } from "./dev-warn-YlwPHjtX.js";
|
|
7
7
|
const I = _`
|
|
8
8
|
:host {
|
|
9
9
|
display: block;
|
|
10
|
-
font-family: var(--hx-font-family-sans, sans-serif);
|
|
10
|
+
font-family: var(--hx-accordion-font-family, var(--hx-font-family-sans, sans-serif));
|
|
11
11
|
}
|
|
12
12
|
|
|
13
13
|
.accordion {
|
|
@@ -29,13 +29,13 @@ const I = _`
|
|
|
29
29
|
|
|
30
30
|
.item {
|
|
31
31
|
border-bottom: var(--hx-border-width-thin, 1px) solid
|
|
32
|
-
var(--hx-accordion-border-color, var(--hx-color-neutral-200, #
|
|
33
|
-
font-family: var(--hx-font-family-sans, sans-serif);
|
|
32
|
+
var(--hx-accordion-border-color, var(--hx-color-neutral-200, #e2e8f0));
|
|
33
|
+
font-family: var(--hx-accordion-item-font-family, var(--hx-font-family-sans, sans-serif));
|
|
34
34
|
}
|
|
35
35
|
|
|
36
36
|
:host(:first-child) .item {
|
|
37
37
|
border-top: var(--hx-border-width-thin, 1px) solid
|
|
38
|
-
var(--hx-accordion-border-color, var(--hx-color-neutral-200, #
|
|
38
|
+
var(--hx-accordion-border-color, var(--hx-color-neutral-200, #e2e8f0));
|
|
39
39
|
}
|
|
40
40
|
|
|
41
41
|
/* Remove native details marker */
|
|
@@ -49,7 +49,7 @@ const I = _`
|
|
|
49
49
|
list-style: none;
|
|
50
50
|
font-size: var(--hx-font-size-md, 1rem);
|
|
51
51
|
font-weight: var(--hx-font-weight-semibold, 600);
|
|
52
|
-
color: var(--hx-accordion-trigger-color, var(--hx-color-neutral-800, #
|
|
52
|
+
color: var(--hx-accordion-trigger-color, var(--hx-color-neutral-800, #1e293b));
|
|
53
53
|
background-color: var(--hx-accordion-trigger-bg, transparent);
|
|
54
54
|
user-select: none;
|
|
55
55
|
transition: background-color var(--hx-transition-fast, 150ms ease);
|
|
@@ -69,7 +69,7 @@ const I = _`
|
|
|
69
69
|
}
|
|
70
70
|
|
|
71
71
|
:host(:not([disabled])) .trigger:hover {
|
|
72
|
-
background-color: var(--hx-accordion-trigger-hover-bg, var(--hx-color-neutral-50, #
|
|
72
|
+
background-color: var(--hx-accordion-trigger-hover-bg, var(--hx-color-neutral-50, #f8fafc));
|
|
73
73
|
}
|
|
74
74
|
|
|
75
75
|
.trigger:focus-visible {
|
|
@@ -87,7 +87,7 @@ const I = _`
|
|
|
87
87
|
display: flex;
|
|
88
88
|
align-items: center;
|
|
89
89
|
justify-content: center;
|
|
90
|
-
color: var(--hx-accordion-icon-color, var(--hx-color-neutral-500, #
|
|
90
|
+
color: var(--hx-accordion-icon-color, var(--hx-color-neutral-500, #64748b));
|
|
91
91
|
transition: transform var(--hx-transition-normal, 250ms ease);
|
|
92
92
|
}
|
|
93
93
|
|
|
@@ -117,7 +117,7 @@ const I = _`
|
|
|
117
117
|
padding: var(--hx-accordion-content-padding, 0 var(--hx-space-4, 1rem) var(--hx-space-4, 1rem));
|
|
118
118
|
font-size: var(--hx-font-size-md, 1rem);
|
|
119
119
|
line-height: var(--hx-line-height-normal, 1.5);
|
|
120
|
-
color: var(--hx-accordion-content-color, var(--hx-color-neutral-600, #
|
|
120
|
+
color: var(--hx-accordion-content-color, var(--hx-color-neutral-600, #475569));
|
|
121
121
|
}
|
|
122
122
|
|
|
123
123
|
/* ─── Disabled host ─── */
|
|
@@ -182,12 +182,12 @@ const I = _`
|
|
|
182
182
|
}
|
|
183
183
|
}
|
|
184
184
|
`;
|
|
185
|
-
var M = Object.defineProperty, A = Object.getOwnPropertyDescriptor,
|
|
186
|
-
for (var i = t > 1 ? void 0 : t ? A(o, r) : o, n = e.length - 1,
|
|
187
|
-
(
|
|
185
|
+
var M = Object.defineProperty, A = Object.getOwnPropertyDescriptor, m = (e, o, r, t) => {
|
|
186
|
+
for (var i = t > 1 ? void 0 : t ? A(o, r) : o, n = e.length - 1, a; n >= 0; n--)
|
|
187
|
+
(a = e[n]) && (i = (t ? a(o, r, i) : a(i)) || i);
|
|
188
188
|
return t && i && M(o, r, i), i;
|
|
189
189
|
};
|
|
190
|
-
const
|
|
190
|
+
const H = S`
|
|
191
191
|
<svg
|
|
192
192
|
xmlns="http://www.w3.org/2000/svg"
|
|
193
193
|
width="16"
|
|
@@ -202,10 +202,10 @@ const L = S`
|
|
|
202
202
|
>
|
|
203
203
|
<polyline points="6 9 12 15 18 9"></polyline>
|
|
204
204
|
</svg>
|
|
205
|
-
`,
|
|
206
|
-
let
|
|
205
|
+
`, L = D("hx-accordion-item");
|
|
206
|
+
let s = class extends $ {
|
|
207
207
|
constructor() {
|
|
208
|
-
super(...arguments), this._uid =
|
|
208
|
+
super(...arguments), this._uid = L(), this.expanded = !1, this.disabled = !1, this.level = 3;
|
|
209
209
|
}
|
|
210
210
|
// ─── Lifecycle ───
|
|
211
211
|
connectedCallback() {
|
|
@@ -261,7 +261,7 @@ let a = class extends C {
|
|
|
261
261
|
"item--expanded": this.expanded,
|
|
262
262
|
"item--disabled": this.disabled
|
|
263
263
|
};
|
|
264
|
-
return
|
|
264
|
+
return C`
|
|
265
265
|
<details part="item" class=${O(e)} ?open=${this.expanded}>
|
|
266
266
|
<summary
|
|
267
267
|
id=${`${this._uid}-trigger`}
|
|
@@ -277,7 +277,7 @@ let a = class extends C {
|
|
|
277
277
|
@keydown=${this._handleKeyDown}
|
|
278
278
|
>
|
|
279
279
|
<slot name="trigger" @slotchange=${this._handleTriggerSlotChange}></slot>
|
|
280
|
-
<span part="icon" class="icon">${
|
|
280
|
+
<span part="icon" class="icon">${H}</span>
|
|
281
281
|
</summary>
|
|
282
282
|
<div class="content-wrapper">
|
|
283
283
|
<div class="content-inner">
|
|
@@ -297,25 +297,25 @@ let a = class extends C {
|
|
|
297
297
|
`;
|
|
298
298
|
}
|
|
299
299
|
};
|
|
300
|
-
|
|
301
|
-
|
|
300
|
+
s.styles = [T];
|
|
301
|
+
m([
|
|
302
302
|
h({ type: Boolean, reflect: !0 })
|
|
303
|
-
],
|
|
304
|
-
|
|
303
|
+
], s.prototype, "expanded", 2);
|
|
304
|
+
m([
|
|
305
305
|
h({ type: Boolean, reflect: !0 })
|
|
306
|
-
],
|
|
307
|
-
|
|
306
|
+
], s.prototype, "disabled", 2);
|
|
307
|
+
m([
|
|
308
308
|
h({ type: Number })
|
|
309
|
-
],
|
|
310
|
-
|
|
311
|
-
|
|
312
|
-
],
|
|
313
|
-
var
|
|
314
|
-
for (var i = t > 1 ? void 0 : t ? z(o, r) : o, n = e.length - 1,
|
|
315
|
-
(
|
|
316
|
-
return t && i &&
|
|
309
|
+
], s.prototype, "level", 2);
|
|
310
|
+
s = m([
|
|
311
|
+
E("hx-accordion-item")
|
|
312
|
+
], s);
|
|
313
|
+
var j = Object.defineProperty, z = Object.getOwnPropertyDescriptor, k = (e, o, r, t) => {
|
|
314
|
+
for (var i = t > 1 ? void 0 : t ? z(o, r) : o, n = e.length - 1, a; n >= 0; n--)
|
|
315
|
+
(a = e[n]) && (i = (t ? a(o, r, i) : a(i)) || i);
|
|
316
|
+
return t && i && j(o, r, i), i;
|
|
317
317
|
};
|
|
318
|
-
let c = class extends
|
|
318
|
+
let c = class extends $ {
|
|
319
319
|
constructor() {
|
|
320
320
|
super(...arguments), this.mode = "single", this._mutationObserver = null, this._handleChildExpand = (e) => {
|
|
321
321
|
if (this.mode !== "single") return;
|
|
@@ -324,28 +324,28 @@ let c = class extends C {
|
|
|
324
324
|
t !== o && t.expanded && (t.expanded = !1, t._dispatchToggleEvent(!1));
|
|
325
325
|
});
|
|
326
326
|
}, this._handleKeyDown = (e) => {
|
|
327
|
-
var
|
|
327
|
+
var f, u, v, x;
|
|
328
328
|
if (this._getTriggers().length === 0) return;
|
|
329
|
-
const r = ((
|
|
329
|
+
const r = ((f = this.shadowRoot) == null ? void 0 : f.activeElement) ?? document.activeElement;
|
|
330
330
|
let t = null;
|
|
331
331
|
const i = Array.from(this.querySelectorAll("hx-accordion-item"));
|
|
332
332
|
for (const l of i) {
|
|
333
|
-
const b = (
|
|
333
|
+
const b = (u = l.shadowRoot) == null ? void 0 : u.querySelector('[part="trigger"]');
|
|
334
334
|
if (b === r || ((v = l.shadowRoot) == null ? void 0 : v.activeElement) === b) {
|
|
335
335
|
t = l;
|
|
336
336
|
break;
|
|
337
337
|
}
|
|
338
338
|
}
|
|
339
339
|
if (!t) return;
|
|
340
|
-
const n = i.filter((l) => !l.disabled),
|
|
341
|
-
if (
|
|
340
|
+
const n = i.filter((l) => !l.disabled), a = n.indexOf(t);
|
|
341
|
+
if (a === -1) return;
|
|
342
342
|
let d = -1;
|
|
343
343
|
switch (e.key) {
|
|
344
344
|
case "ArrowDown":
|
|
345
|
-
d = (
|
|
345
|
+
d = (a + 1) % n.length;
|
|
346
346
|
break;
|
|
347
347
|
case "ArrowUp":
|
|
348
|
-
d = (
|
|
348
|
+
d = (a - 1 + n.length) % n.length;
|
|
349
349
|
break;
|
|
350
350
|
case "Home":
|
|
351
351
|
d = 0;
|
|
@@ -357,8 +357,8 @@ let c = class extends C {
|
|
|
357
357
|
return;
|
|
358
358
|
}
|
|
359
359
|
e.preventDefault();
|
|
360
|
-
const
|
|
361
|
-
|
|
360
|
+
const g = n[d], p = (x = g == null ? void 0 : g.shadowRoot) == null ? void 0 : x.querySelector('[part="trigger"]');
|
|
361
|
+
p == null || p.focus();
|
|
362
362
|
};
|
|
363
363
|
}
|
|
364
364
|
connectedCallback() {
|
|
@@ -422,7 +422,7 @@ let c = class extends C {
|
|
|
422
422
|
}
|
|
423
423
|
// ─── Render ───
|
|
424
424
|
render() {
|
|
425
|
-
return
|
|
425
|
+
return C`
|
|
426
426
|
<div part="accordion" class="accordion">
|
|
427
427
|
<slot @slotchange=${this._handleSlotChange}></slot>
|
|
428
428
|
</div>
|
|
@@ -434,10 +434,10 @@ k([
|
|
|
434
434
|
h({ type: String, reflect: !0 })
|
|
435
435
|
], c.prototype, "mode", 2);
|
|
436
436
|
c = k([
|
|
437
|
-
|
|
437
|
+
E("hx-accordion")
|
|
438
438
|
], c);
|
|
439
439
|
export {
|
|
440
440
|
c as H,
|
|
441
|
-
a
|
|
441
|
+
s as a
|
|
442
442
|
};
|
|
443
|
-
//# sourceMappingURL=hx-accordion-
|
|
443
|
+
//# sourceMappingURL=hx-accordion-Wt52OOZD.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"hx-accordion-Wt52OOZD.js","sources":["../../src/components/hx-accordion/hx-accordion.styles.ts","../../src/components/hx-accordion/hx-accordion-item.styles.ts","../../src/components/hx-accordion/hx-accordion-item.ts","../../src/components/hx-accordion/hx-accordion.ts"],"sourcesContent":["import { css } from 'lit';\n\nexport const helixAccordionStyles = css`\n :host {\n display: block;\n font-family: var(--hx-accordion-font-family, var(--hx-font-family-sans, sans-serif));\n }\n\n .accordion {\n border-radius: var(--hx-accordion-border-radius, var(--hx-border-radius-md, 0.375rem));\n overflow: hidden;\n }\n\n /* ─── High Contrast Mode (forced-colors) ─── */\n\n @media (forced-colors: active) {\n .accordion {\n border: 2px solid CanvasText;\n }\n }\n`;\n","import { css } from 'lit';\n\nexport const helixAccordionItemStyles = css`\n :host {\n display: block;\n }\n\n .item {\n border-bottom: var(--hx-border-width-thin, 1px) solid\n var(--hx-accordion-border-color, var(--hx-color-neutral-200, #e2e8f0));\n font-family: var(--hx-accordion-item-font-family, var(--hx-font-family-sans, sans-serif));\n }\n\n :host(:first-child) .item {\n border-top: var(--hx-border-width-thin, 1px) solid\n var(--hx-accordion-border-color, var(--hx-color-neutral-200, #e2e8f0));\n }\n\n /* Remove native details marker */\n .trigger {\n display: flex;\n align-items: center;\n justify-content: space-between;\n gap: var(--hx-space-3, 0.75rem);\n padding: var(--hx-accordion-trigger-padding, var(--hx-space-4, 1rem));\n cursor: pointer;\n list-style: none;\n font-size: var(--hx-font-size-md, 1rem);\n font-weight: var(--hx-font-weight-semibold, 600);\n color: var(--hx-accordion-trigger-color, var(--hx-color-neutral-800, #1e293b));\n background-color: var(--hx-accordion-trigger-bg, transparent);\n user-select: none;\n transition: background-color var(--hx-transition-fast, 150ms ease);\n }\n\n /* Hide the native details disclosure triangle */\n .trigger::-webkit-details-marker {\n display: none;\n }\n\n .trigger::marker {\n display: none;\n }\n\n .item--disabled .trigger {\n cursor: not-allowed;\n }\n\n :host(:not([disabled])) .trigger:hover {\n background-color: var(--hx-accordion-trigger-hover-bg, var(--hx-color-neutral-50, #f8fafc));\n }\n\n .trigger:focus-visible {\n outline: var(--hx-focus-ring-width, 2px) solid\n var(--hx-focus-ring-color, var(--hx-color-primary-500, #2563eb));\n outline-offset: var(--hx-focus-ring-offset, -2px);\n }\n\n /* ─── Icon ─── */\n\n .icon {\n flex-shrink: 0;\n width: var(--hx-accordion-icon-size, var(--hx-size-5, 1.25rem));\n height: var(--hx-accordion-icon-size, var(--hx-size-5, 1.25rem));\n display: flex;\n align-items: center;\n justify-content: center;\n color: var(--hx-accordion-icon-color, var(--hx-color-neutral-500, #64748b));\n transition: transform var(--hx-transition-normal, 250ms ease);\n }\n\n .item--expanded .icon {\n transform: rotate(180deg);\n }\n\n /* ─── Content animation via CSS grid trick ─── */\n\n .content-wrapper {\n display: grid;\n grid-template-rows: 0fr;\n transition: grid-template-rows var(--hx-transition-normal, 250ms ease);\n overflow: hidden;\n }\n\n .item--expanded .content-wrapper,\n details[open]:not(.item--expanded) .content-wrapper {\n grid-template-rows: 1fr;\n }\n\n .content-inner {\n overflow: hidden;\n }\n\n .content {\n padding: var(--hx-accordion-content-padding, 0 var(--hx-space-4, 1rem) var(--hx-space-4, 1rem));\n font-size: var(--hx-font-size-md, 1rem);\n line-height: var(--hx-line-height-normal, 1.5);\n color: var(--hx-accordion-content-color, var(--hx-color-neutral-600, #475569));\n }\n\n /* ─── Disabled host ─── */\n\n :host([disabled]) {\n pointer-events: none;\n opacity: var(--hx-opacity-disabled, 0.5);\n }\n\n /* ─── Reduced motion ─── */\n\n @media (prefers-reduced-motion: reduce) {\n .trigger {\n transition: none;\n }\n\n .icon {\n transition: none;\n }\n\n .content-wrapper {\n transition: none;\n }\n }\n\n /* ─── High Contrast Mode (forced-colors) ─── */\n\n @media (forced-colors: active) {\n .trigger {\n forced-color-adjust: none;\n color: ButtonText;\n background-color: ButtonFace;\n }\n\n .trigger:focus-visible {\n outline: 3px solid Highlight;\n outline-offset: -2px;\n }\n\n .item {\n border-bottom-color: CanvasText;\n }\n\n :host(:first-child) .item {\n border-top-color: CanvasText;\n }\n\n .item--disabled .trigger {\n color: GrayText;\n }\n\n :host([disabled]) {\n opacity: 1;\n }\n\n .icon {\n color: ButtonText;\n }\n\n .content {\n color: CanvasText;\n }\n }\n`;\n","import { html, svg, nothing } from 'lit';\nimport '../../utilities/document-token-adoption.js';\nimport { customElement, property } from 'lit/decorators.js';\nimport { classMap } from 'lit/directives/class-map.js';\nimport { HelixElement, createIdCounter } from '../../base/index.js';\nimport { helixAccordionItemStyles } from './hx-accordion-item.styles.js';\nimport { devWarn } from '../../utils/dev-warn.js';\n\nconst chevronIcon = svg`\n <svg\n xmlns=\"http://www.w3.org/2000/svg\"\n width=\"16\"\n height=\"16\"\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n stroke=\"currentColor\"\n stroke-width=\"2\"\n stroke-linecap=\"round\"\n stroke-linejoin=\"round\"\n aria-hidden=\"true\"\n >\n <polyline points=\"6 9 12 15 18 9\"></polyline>\n </svg>\n`;\n\nconst _nextAccordionItemId = createIdCounter('hx-accordion-item');\n\n/** Detail for hx-expand and hx-collapse events dispatched by hx-accordion-item. */\nexport interface HxAccordionToggleDetail {\n expanded: boolean;\n itemId: string;\n}\n\n/**\n * An individual accordion item with collapsible content.\n *\n * @summary Collapsible panel that can be expanded or collapsed.\n *\n * @tag hx-accordion-item\n *\n * @slot trigger - The heading/trigger content for this item.\n * @slot - Default slot for the collapsible body content.\n *\n * @attr {number} level - Heading level (1–6) for the trigger via `role=\"heading\" aria-level`.\n * Defaults to 3. Set this to match the document outline — e.g., use `level=\"2\"` when the\n * accordion appears under an `<h1>` landmark.\n *\n * @fires {CustomEvent<{expanded: boolean, itemId: string}>} hx-expand - Dispatched when the item is expanded.\n * @fires {CustomEvent<{expanded: boolean, itemId: string}>} hx-collapse - Dispatched when the item is collapsed.\n *\n * @csspart item - The outer details element container.\n * @csspart trigger - The summary/trigger element.\n * @csspart content - The collapsible content area.\n * @csspart icon - The expand/collapse icon.\n *\n * @cssprop [--hx-accordion-border-color=var(--hx-color-neutral-200)] - Border color between items.\n * @cssprop [--hx-accordion-trigger-padding=var(--hx-space-4)] - Trigger padding.\n * @cssprop [--hx-accordion-trigger-color=var(--hx-color-neutral-800)] - Trigger text color.\n * @cssprop [--hx-accordion-trigger-bg=transparent] - Trigger background color.\n * @cssprop [--hx-accordion-trigger-hover-bg=var(--hx-color-neutral-50)] - Trigger hover background.\n * @cssprop [--hx-accordion-icon-color=var(--hx-color-neutral-500)] - Icon color.\n * @cssprop [--hx-accordion-content-padding=0 var(--hx-space-4) var(--hx-space-4)] - Content padding.\n * @cssprop [--hx-accordion-content-color=var(--hx-color-neutral-600)] - Content text color.\n */\n@customElement('hx-accordion-item')\nexport class HelixAccordionItem extends HelixElement {\n static override styles = [helixAccordionItemStyles];\n\n /** @internal */\n private _uid = _nextAccordionItemId();\n\n /**\n * Whether this item is expanded.\n * @attr expanded\n */\n @property({ type: Boolean, reflect: true })\n expanded = false;\n\n /**\n * Whether this item is disabled (cannot be toggled).\n * @attr disabled\n */\n @property({ type: Boolean, reflect: true })\n disabled = false;\n\n /**\n * Heading level (1–6) applied via `role=\"heading\" aria-level` on the summary\n * trigger. Defaults to 3. Set to match the document outline around the\n * accordion so screen readers surface accordion items in the heading list.\n * @attr level\n */\n @property({ type: Number })\n level: 1 | 2 | 3 | 4 | 5 | 6 = 3;\n\n // ─── Lifecycle ───\n\n override connectedCallback(): void {\n super.connectedCallback();\n if (!this.closest('hx-accordion')) {\n devWarn(\n 'hx-accordion-item',\n 'Used outside hx-accordion. Single-expand coordination will not function.',\n );\n }\n }\n\n // ─── Slot Handlers ───\n\n /** @internal */\n private _handleTriggerSlotChange(e: Event): void {\n const slot = e.target as HTMLSlotElement;\n const hasContent = slot.assignedNodes({ flatten: true }).length > 0;\n if (!hasContent) {\n devWarn(\n 'hx-accordion-item',\n 'trigger slot is empty — provide a visible label for keyboard and screen reader users.',\n );\n }\n }\n\n // ─── Heading Level Helper ───\n\n /**\n * Returns a clamped heading level (1–6) for use as `aria-level` on the\n * `<summary>` element. Per the WAI-ARIA APG Accordion pattern, the\n * `<summary>` must be a **direct child** of `<details>` for native\n * disclosure behaviour to work. Instead of wrapping `<summary>` inside\n * an `<h3>` (which breaks the native toggle), we apply\n * `role=\"heading\" aria-level=\"N\"` directly on `<summary>`.\n */\n /** @internal */\n private get _headingLevel(): number {\n return Math.max(1, Math.min(6, this.level));\n }\n\n // ─── Toggle Logic ───\n\n /** @internal */\n private _toggle(): void {\n if (this.disabled) return;\n\n const willExpand = !this.expanded;\n this.expanded = willExpand;\n\n this._dispatchToggleEvent(willExpand);\n }\n\n /** @internal */\n _dispatchToggleEvent(expanded: boolean): void {\n const detail = { expanded, itemId: this.id || '' };\n const options = { bubbles: true, composed: true, detail };\n\n if (expanded) {\n this.dispatchEvent(\n new CustomEvent<{ expanded: boolean; itemId: string }>('hx-expand', options),\n );\n } else {\n this.dispatchEvent(\n new CustomEvent<{ expanded: boolean; itemId: string }>('hx-collapse', options),\n );\n }\n }\n\n // ─── Event Handlers ───\n\n /** @internal */\n private _handleSummaryClick(e: MouseEvent): void {\n e.preventDefault();\n this._toggle();\n }\n\n /** @internal */\n private _handleKeyDown(e: KeyboardEvent): void {\n if (e.key === 'Enter' || e.key === ' ') {\n e.preventDefault();\n this._toggle();\n }\n }\n\n // ─── Render ───\n\n override render() {\n const itemClasses = {\n item: true,\n 'item--expanded': this.expanded,\n 'item--disabled': this.disabled,\n };\n\n return html`\n <details part=\"item\" class=${classMap(itemClasses)} ?open=${this.expanded}>\n <summary\n id=${`${this._uid}-trigger`}\n part=\"trigger\"\n class=\"trigger\"\n role=\"heading\"\n aria-level=${this._headingLevel}\n tabindex=${this.disabled ? '-1' : '0'}\n aria-expanded=${this.expanded ? 'true' : 'false'}\n aria-disabled=${this.disabled ? 'true' : nothing}\n aria-controls=${`${this._uid}-content`}\n @click=${this._handleSummaryClick}\n @keydown=${this._handleKeyDown}\n >\n <slot name=\"trigger\" @slotchange=${this._handleTriggerSlotChange}></slot>\n <span part=\"icon\" class=\"icon\">${chevronIcon}</span>\n </summary>\n <div class=\"content-wrapper\">\n <div class=\"content-inner\">\n <div\n id=${`${this._uid}-content`}\n part=\"content\"\n class=\"content\"\n role=\"region\"\n aria-labelledby=${`${this._uid}-trigger`}\n aria-hidden=${this.expanded ? nothing : 'true'}\n >\n <slot></slot>\n </div>\n </div>\n </div>\n </details>\n `;\n }\n}\n\ndeclare global {\n interface HTMLElementTagNameMap {\n 'hx-accordion-item': HelixAccordionItem;\n }\n}\n","import { html, type PropertyValues } from 'lit';\nimport '../../utilities/document-token-adoption.js';\nimport { customElement, property } from 'lit/decorators.js';\nimport { HelixElement } from '../../base/index.js';\nimport { helixAccordionStyles } from './hx-accordion.styles.js';\nimport './hx-accordion-item.js';\nimport type { HelixAccordionItem } from './hx-accordion-item.js';\nimport { devWarn } from '../../utils/dev-warn.js';\n\n/**\n * An accordion container that manages collapsible content sections.\n *\n * @summary Collapsible content sections with single or multi-expand modes.\n *\n * @tag hx-accordion\n *\n * @slot - Default slot for hx-accordion-item elements.\n *\n * @csspart accordion - The outer container wrapping all accordion items.\n *\n * @cssprop [--hx-accordion-border-radius=var(--hx-border-radius-md)] - Outer border radius.\n *\n * @example\n * ```html\n * <hx-accordion mode=\"single\">\n * <hx-accordion-item>\n * <span slot=\"trigger\">What is this?</span>\n * <p>Answer content here.</p>\n * </hx-accordion-item>\n * </hx-accordion>\n * ```\n */\n@customElement('hx-accordion')\nexport class HelixAccordion extends HelixElement {\n static override styles = [helixAccordionStyles];\n\n /**\n * Expansion mode: 'single' collapses all other items when one expands.\n * 'multi' allows multiple items open simultaneously.\n * @attr mode\n */\n @property({ type: String, reflect: true })\n mode: 'single' | 'multi' = 'single';\n\n // ─── Lifecycle ───\n\n /** @internal */\n private _mutationObserver: MutationObserver | null = null;\n\n override connectedCallback(): void {\n super.connectedCallback();\n this.addEventListener('hx-expand', this._handleChildExpand);\n this.addEventListener('keydown', this._handleKeyDown);\n // Re-enforce single mode when reconnected with pre-expanded items\n this._enforceSingleMode();\n // Watch for dynamically added accordion items that may violate single-expand\n if (typeof MutationObserver !== 'undefined') {\n this._mutationObserver = new MutationObserver((mutations) => {\n const hasNewItems = mutations.some((m) =>\n Array.from(m.addedNodes).some(\n (n) => n instanceof Element && n.tagName.toLowerCase() === 'hx-accordion-item',\n ),\n );\n if (hasNewItems) {\n this._enforceSingleMode();\n }\n });\n this._mutationObserver.observe(this, { childList: true });\n }\n }\n\n override disconnectedCallback(): void {\n super.disconnectedCallback();\n this.removeEventListener('hx-expand', this._handleChildExpand);\n this.removeEventListener('keydown', this._handleKeyDown);\n this._mutationObserver?.disconnect();\n this._mutationObserver = null;\n }\n\n protected override firstUpdated(): void {\n this._enforceSingleMode();\n }\n\n override updated(changedProperties: PropertyValues<this>): void {\n super.updated(changedProperties);\n if (changedProperties.has('mode')) {\n const validModes: string[] = ['single', 'multi'];\n if (!validModes.includes(this.mode)) {\n devWarn(\n 'hx-accordion',\n `Invalid mode \"${this.mode}\". Expected one of: ${validModes.join(', ')}. Clamping to \"single\".`,\n );\n this.mode = 'single';\n return;\n }\n // When switching from multi to single, enforce single-expand immediately\n this._enforceSingleMode();\n }\n }\n\n // ─── Single-expand coordination ───\n\n /** @internal */\n private _enforceSingleMode(): void {\n if (this.mode !== 'single') return;\n\n const items = this.querySelectorAll<HelixAccordionItem>('hx-accordion-item');\n let foundExpanded = false;\n\n items.forEach((item) => {\n if (item.expanded) {\n if (foundExpanded) {\n item.expanded = false;\n } else {\n foundExpanded = true;\n }\n }\n });\n }\n\n /**\n * Handles expand events from child accordion items to enforce single-expand mode.\n * @internal\n */\n private _handleChildExpand = (e: Event): void => {\n if (this.mode !== 'single') return;\n\n const expandedItem = e.composedPath()[0] as HelixAccordionItem;\n const items = this.querySelectorAll<HelixAccordionItem>('hx-accordion-item');\n\n items.forEach((item) => {\n if (item !== expandedItem && item.expanded) {\n item.expanded = false;\n item._dispatchToggleEvent(false);\n }\n });\n };\n\n // ─── Arrow key navigation (ARIA APG Accordion pattern) ───\n\n /**\n * Handles keyboard navigation between accordion triggers using arrow, Home, and End keys.\n * @internal\n */\n private _handleKeyDown = (e: KeyboardEvent): void => {\n const triggers = this._getTriggers();\n if (triggers.length === 0) return;\n\n const activeEl = this.shadowRoot?.activeElement ?? document.activeElement;\n let currentItem: HelixAccordionItem | null = null;\n\n const items = Array.from(this.querySelectorAll<HelixAccordionItem>('hx-accordion-item'));\n for (const item of items) {\n const summary = item.shadowRoot?.querySelector('[part=\"trigger\"]');\n if (summary === activeEl || item.shadowRoot?.activeElement === summary) {\n currentItem = item;\n break;\n }\n }\n\n if (!currentItem) return;\n\n const enabledItems = items.filter((item) => !item.disabled);\n const currentIndex = enabledItems.indexOf(currentItem);\n if (currentIndex === -1) return;\n\n let targetIndex = -1;\n\n switch (e.key) {\n case 'ArrowDown':\n targetIndex = (currentIndex + 1) % enabledItems.length;\n break;\n case 'ArrowUp':\n targetIndex = (currentIndex - 1 + enabledItems.length) % enabledItems.length;\n break;\n case 'Home':\n targetIndex = 0;\n break;\n case 'End':\n targetIndex = enabledItems.length - 1;\n break;\n default:\n return;\n }\n\n e.preventDefault();\n const targetItem = enabledItems[targetIndex];\n const targetSummary = targetItem?.shadowRoot?.querySelector<HTMLElement>('[part=\"trigger\"]');\n targetSummary?.focus();\n };\n\n /** @internal */\n private _getTriggers(): HTMLElement[] {\n const items = this.querySelectorAll<HelixAccordionItem>('hx-accordion-item');\n const triggers: HTMLElement[] = [];\n items.forEach((item) => {\n const summary = item.shadowRoot?.querySelector<HTMLElement>('[part=\"trigger\"]');\n if (summary) triggers.push(summary);\n });\n return triggers;\n }\n\n // ─── Slot validation ───\n\n /** @internal */\n private _handleSlotChange(e: Event): void {\n const slot = e.target;\n if (!(slot instanceof HTMLSlotElement)) return;\n const invalid = slot\n .assignedElements()\n .filter((el) => el.tagName.toLowerCase() !== 'hx-accordion-item');\n if (invalid.length > 0) {\n devWarn(\n 'hx-accordion',\n `Default slot expects <hx-accordion-item> elements. Found unexpected: ${invalid.map((el) => `<${el.tagName.toLowerCase()}>`).join(', ')}`,\n );\n }\n }\n\n // ─── Render ───\n\n override render() {\n return html`\n <div part=\"accordion\" class=\"accordion\">\n <slot @slotchange=${this._handleSlotChange}></slot>\n </div>\n `;\n }\n}\n\ndeclare global {\n interface HTMLElementTagNameMap {\n 'hx-accordion': HelixAccordion;\n }\n}\n"],"names":["helixAccordionStyles","css","helixAccordionItemStyles","chevronIcon","svg","_nextAccordionItemId","createIdCounter","HelixAccordionItem","HelixElement","willExpand","expanded","options","itemClasses","html","classMap","nothing","__decorateClass","property","customElement","HelixAccordion","expandedItem","item","activeEl","_a","currentItem","items","summary","_b","_c","enabledItems","currentIndex","targetIndex","targetItem","targetSummary","_d","mutations","m","n","changedProperties","validModes","devWarn","foundExpanded","triggers","slot","invalid","el"],"mappings":"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"}
|