@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
|
@@ -0,0 +1,251 @@
|
|
|
1
|
+
import { css as C, html as E } from "lit";
|
|
2
|
+
import { property as m, customElement as w } from "lit/decorators.js";
|
|
3
|
+
import { H as _ } from "./helix-element-BNEYeiys.js";
|
|
4
|
+
const v = C`
|
|
5
|
+
:host {
|
|
6
|
+
display: contents;
|
|
7
|
+
}
|
|
8
|
+
|
|
9
|
+
/* ─── High Contrast Mode (forced-colors) ─── */
|
|
10
|
+
|
|
11
|
+
/* hx-style-scope is a transparent layout wrapper (display: contents).
|
|
12
|
+
It has no visual output of its own. forced-color-adjust: auto (default)
|
|
13
|
+
is sufficient. */
|
|
14
|
+
@media (forced-colors: active) {
|
|
15
|
+
:host {
|
|
16
|
+
forced-color-adjust: auto;
|
|
17
|
+
}
|
|
18
|
+
}
|
|
19
|
+
`, y = /* @__PURE__ */ new Map();
|
|
20
|
+
function j(t) {
|
|
21
|
+
return y.has(t);
|
|
22
|
+
}
|
|
23
|
+
function $(t, i) {
|
|
24
|
+
y.set(t, i);
|
|
25
|
+
}
|
|
26
|
+
function A(t, i) {
|
|
27
|
+
const e = `[data-hx-styled="${t}"]`;
|
|
28
|
+
return g(i, e);
|
|
29
|
+
}
|
|
30
|
+
function u(t, i) {
|
|
31
|
+
return t[i] ?? "";
|
|
32
|
+
}
|
|
33
|
+
function g(t, i) {
|
|
34
|
+
const e = [];
|
|
35
|
+
let n = 0;
|
|
36
|
+
const r = t.length;
|
|
37
|
+
for (; n < r; ) {
|
|
38
|
+
for (; n < r && /\s/.test(u(t, n)); )
|
|
39
|
+
e.push(u(t, n)), n++;
|
|
40
|
+
if (n >= r) break;
|
|
41
|
+
if (u(t, n) === "@") {
|
|
42
|
+
const d = L(t, n);
|
|
43
|
+
e.push(P(d.text, i)), n = d.end;
|
|
44
|
+
continue;
|
|
45
|
+
}
|
|
46
|
+
const o = t.indexOf("{", n);
|
|
47
|
+
if (o === -1) break;
|
|
48
|
+
const c = t.slice(n, o), s = o + 1, f = b(t, o);
|
|
49
|
+
if (f === -1) break;
|
|
50
|
+
const l = t.slice(s, f), x = O(c, i);
|
|
51
|
+
e.push(`${x}{${l}}`), n = f + 1;
|
|
52
|
+
}
|
|
53
|
+
return e.join("");
|
|
54
|
+
}
|
|
55
|
+
function O(t, i) {
|
|
56
|
+
return t.split(",").map((e) => {
|
|
57
|
+
const n = e.trim();
|
|
58
|
+
if (n.startsWith("::slotted(") && n.endsWith(")")) {
|
|
59
|
+
const r = n.slice(10, -1).trim();
|
|
60
|
+
return `${i} ${r}`;
|
|
61
|
+
}
|
|
62
|
+
return n === ":host" || n.startsWith(":host(") || n.startsWith(":host ") ? n.replace(/^:host(\([^)]*\))?/, i) : `${i} ${n}`;
|
|
63
|
+
}).join(", ");
|
|
64
|
+
}
|
|
65
|
+
function P(t, i) {
|
|
66
|
+
const e = /^@(media|supports|layer|container|document)\b/, n = t.indexOf("{");
|
|
67
|
+
if (n === -1 || !e.test(t.trim()))
|
|
68
|
+
return t;
|
|
69
|
+
const r = t.slice(0, n + 1), o = t.lastIndexOf("}"), c = t.slice(n + 1, o), s = t.slice(o);
|
|
70
|
+
return `${r}${g(c, i)}${s}`;
|
|
71
|
+
}
|
|
72
|
+
function L(t, i) {
|
|
73
|
+
let e = i;
|
|
74
|
+
for (; e < t.length && u(t, e) !== "{" && u(t, e) !== ";"; )
|
|
75
|
+
e++;
|
|
76
|
+
if (e >= t.length)
|
|
77
|
+
return { text: t.slice(i), end: t.length };
|
|
78
|
+
if (u(t, e) === ";")
|
|
79
|
+
return { text: t.slice(i, e + 1), end: e + 1 };
|
|
80
|
+
const n = b(t, e);
|
|
81
|
+
return n === -1 ? { text: t.slice(i), end: t.length } : { text: t.slice(i, n + 1), end: n + 1 };
|
|
82
|
+
}
|
|
83
|
+
function b(t, i) {
|
|
84
|
+
let e = 0;
|
|
85
|
+
for (let n = i; n < t.length; n++) {
|
|
86
|
+
const r = u(t, n);
|
|
87
|
+
if (r === "{") e++;
|
|
88
|
+
else if (r === "}" && (e--, e === 0))
|
|
89
|
+
return n;
|
|
90
|
+
}
|
|
91
|
+
return -1;
|
|
92
|
+
}
|
|
93
|
+
const W = [
|
|
94
|
+
{ pattern: /expression\s*\(/i, label: "CSS expression()" },
|
|
95
|
+
{ pattern: /-moz-binding\s*:/i, label: "-moz-binding (XBL injection)" },
|
|
96
|
+
{ pattern: /behavior\s*:/i, label: "behavior: (HTC injection)" },
|
|
97
|
+
{ pattern: /@import\b/i, label: "@import rule" }
|
|
98
|
+
], p = /url\(\s*(['"]?)(.*?)\1\s*\)/gis, B = [
|
|
99
|
+
"data:",
|
|
100
|
+
"blob:",
|
|
101
|
+
"#"
|
|
102
|
+
// fragment references (e.g. SVG filters)
|
|
103
|
+
];
|
|
104
|
+
function S(t) {
|
|
105
|
+
let i = "", e = 0;
|
|
106
|
+
const n = t.length;
|
|
107
|
+
for (; e < n; ) {
|
|
108
|
+
const r = t[e];
|
|
109
|
+
if (r !== "\\") {
|
|
110
|
+
i += r, e++;
|
|
111
|
+
continue;
|
|
112
|
+
}
|
|
113
|
+
if (e + 1 >= n) {
|
|
114
|
+
i += r, e++;
|
|
115
|
+
continue;
|
|
116
|
+
}
|
|
117
|
+
const o = t[e + 1];
|
|
118
|
+
if (o === `
|
|
119
|
+
` || o === "\f") {
|
|
120
|
+
e += 2;
|
|
121
|
+
continue;
|
|
122
|
+
}
|
|
123
|
+
if (o === "\r") {
|
|
124
|
+
t[e + 2] === `
|
|
125
|
+
` ? e += 3 : e += 2;
|
|
126
|
+
continue;
|
|
127
|
+
}
|
|
128
|
+
if (o !== void 0 && /[0-9a-fA-F]/.test(o)) {
|
|
129
|
+
let c = "", s = e + 1;
|
|
130
|
+
for (; s < n && c.length < 6; ) {
|
|
131
|
+
const l = t[s];
|
|
132
|
+
if (l === void 0 || !/[0-9a-fA-F]/.test(l)) break;
|
|
133
|
+
c += l, s++;
|
|
134
|
+
}
|
|
135
|
+
if (s < n) {
|
|
136
|
+
const l = t[s];
|
|
137
|
+
l === "\r" && t[s + 1] === `
|
|
138
|
+
` ? s += 2 : (l === " " || l === " " || l === `
|
|
139
|
+
` || l === "\r" || l === "\f") && s++;
|
|
140
|
+
}
|
|
141
|
+
const f = parseInt(c, 16);
|
|
142
|
+
!Number.isFinite(f) || f === 0 || f >= 55296 && f <= 57343 || f > 1114111 ? i += "�" : i += String.fromCodePoint(f), e = s;
|
|
143
|
+
continue;
|
|
144
|
+
}
|
|
145
|
+
i += o, e += 2;
|
|
146
|
+
}
|
|
147
|
+
return i;
|
|
148
|
+
}
|
|
149
|
+
function H(t) {
|
|
150
|
+
const i = t.trim();
|
|
151
|
+
if (i === "") return !0;
|
|
152
|
+
const e = S(i).trim();
|
|
153
|
+
if (e === "") return !0;
|
|
154
|
+
if (e.startsWith("//")) return !1;
|
|
155
|
+
for (const n of B)
|
|
156
|
+
if (e.startsWith(n)) return !0;
|
|
157
|
+
return !/^[a-z][a-z0-9+\-.]*:/i.test(e);
|
|
158
|
+
}
|
|
159
|
+
function I(t) {
|
|
160
|
+
let i = 0, e = null, n = !1;
|
|
161
|
+
for (let r = 0; r < t.length; r++) {
|
|
162
|
+
const o = t[r];
|
|
163
|
+
if (n) {
|
|
164
|
+
o === "*" && t[r + 1] === "/" && (n = !1, r++);
|
|
165
|
+
continue;
|
|
166
|
+
}
|
|
167
|
+
if (e !== null) {
|
|
168
|
+
if (o === "\\") {
|
|
169
|
+
r++;
|
|
170
|
+
continue;
|
|
171
|
+
}
|
|
172
|
+
o === e && (e = null);
|
|
173
|
+
continue;
|
|
174
|
+
}
|
|
175
|
+
if (o === "/" && t[r + 1] === "*") {
|
|
176
|
+
n = !0, r++;
|
|
177
|
+
continue;
|
|
178
|
+
}
|
|
179
|
+
if (o === '"' || o === "'") {
|
|
180
|
+
e = o;
|
|
181
|
+
continue;
|
|
182
|
+
}
|
|
183
|
+
if (o === "{")
|
|
184
|
+
i++;
|
|
185
|
+
else if (o === "}" && (i--, i < 0))
|
|
186
|
+
return !1;
|
|
187
|
+
}
|
|
188
|
+
return i === 0;
|
|
189
|
+
}
|
|
190
|
+
function R(t, i) {
|
|
191
|
+
if (!I(t))
|
|
192
|
+
return null;
|
|
193
|
+
const e = S(t);
|
|
194
|
+
for (const { pattern: r, label: o } of W)
|
|
195
|
+
if (r.test(e))
|
|
196
|
+
return null;
|
|
197
|
+
let n;
|
|
198
|
+
for (p.lastIndex = 0; (n = p.exec(e)) !== null; ) {
|
|
199
|
+
const r = n[2] ?? "";
|
|
200
|
+
if (!H(r))
|
|
201
|
+
return null;
|
|
202
|
+
}
|
|
203
|
+
return t;
|
|
204
|
+
}
|
|
205
|
+
function z(t, i) {
|
|
206
|
+
if (typeof document > "u" || j(t)) return;
|
|
207
|
+
const e = R(i);
|
|
208
|
+
if (e === null) return;
|
|
209
|
+
const n = A(t, e), r = document.createElement("style");
|
|
210
|
+
r.setAttribute("data-hx-light-styles", t), r.textContent = n, document.head.appendChild(r), $(t, r);
|
|
211
|
+
}
|
|
212
|
+
var D = Object.defineProperty, F = Object.getOwnPropertyDescriptor, h = (t, i, e, n) => {
|
|
213
|
+
for (var r = n > 1 ? void 0 : n ? F(i, e) : i, o = t.length - 1, c; o >= 0; o--)
|
|
214
|
+
(c = t[o]) && (r = (n ? c(i, e, r) : c(r)) || r);
|
|
215
|
+
return n && r && D(i, e, r), r;
|
|
216
|
+
};
|
|
217
|
+
let a = class extends _ {
|
|
218
|
+
constructor() {
|
|
219
|
+
super(...arguments), this.component = "", this.lightCss = "";
|
|
220
|
+
}
|
|
221
|
+
connectedCallback() {
|
|
222
|
+
super.connectedCallback(), this._applyScope();
|
|
223
|
+
}
|
|
224
|
+
updated(t) {
|
|
225
|
+
(t.has("component") || t.has("lightCss")) && this._applyScope();
|
|
226
|
+
}
|
|
227
|
+
/**
|
|
228
|
+
* Applies the `data-hx-styled` attribute and triggers style injection.
|
|
229
|
+
* Called on connect and whenever `component` or `lightCss` changes.
|
|
230
|
+
*/
|
|
231
|
+
_applyScope() {
|
|
232
|
+
this.component && (this.setAttribute("data-hx-styled", this.component), this.lightCss && z(this.component, this.lightCss));
|
|
233
|
+
}
|
|
234
|
+
render() {
|
|
235
|
+
return E`<slot></slot>`;
|
|
236
|
+
}
|
|
237
|
+
};
|
|
238
|
+
a.styles = [v];
|
|
239
|
+
h([
|
|
240
|
+
m({ type: String, reflect: !0 })
|
|
241
|
+
], a.prototype, "component", 2);
|
|
242
|
+
h([
|
|
243
|
+
m({ type: String, attribute: "light-css" })
|
|
244
|
+
], a.prototype, "lightCss", 2);
|
|
245
|
+
a = h([
|
|
246
|
+
w("hx-style-scope")
|
|
247
|
+
], a);
|
|
248
|
+
export {
|
|
249
|
+
a as H
|
|
250
|
+
};
|
|
251
|
+
//# sourceMappingURL=hx-style-scope-TDnR8H4O.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"hx-style-scope-TDnR8H4O.js","sources":["../../src/components/hx-style-scope/hx-style-scope.styles.ts","../../src/utilities/lightStyleRegistry.ts","../../src/utilities/generateScopedSelectors.ts","../../src/utilities/sanitizeCss.ts","../../src/utilities/injectLightStyles.ts","../../src/components/hx-style-scope/hx-style-scope.ts"],"sourcesContent":["import { css } from 'lit';\n\n/**\n * Styles for hx-style-scope.\n *\n * The element acts as a transparent wrapper — `display: contents` removes it\n * from the layout box model so slotted children lay out as if the wrapper\n * were absent. This prevents hx-style-scope from introducing unexpected\n * layout shifts or block-formatting-context changes.\n */\nexport const hxStyleScopeStyles = css`\n :host {\n display: contents;\n }\n\n /* ─── High Contrast Mode (forced-colors) ─── */\n\n /* hx-style-scope is a transparent layout wrapper (display: contents).\n It has no visual output of its own. forced-color-adjust: auto (default)\n is sufficient. */\n @media (forced-colors: active) {\n :host {\n forced-color-adjust: auto;\n }\n }\n`;\n","/**\n * @module lightStyleRegistry\n *\n * A Map-based registry that tracks which component stylesheets have been\n * injected into the document's light DOM. Used by injectLightStyles to\n * deduplicate style injection — each component type is injected at most once\n * per page load.\n *\n * @example\n * ```ts\n * import { isStyleRegistered, registerStyle } from './lightStyleRegistry.js';\n *\n * if (!isStyleRegistered('hx-card')) {\n * const el = document.createElement('style');\n * el.textContent = css;\n * document.head.appendChild(el);\n * registerStyle('hx-card', el);\n * }\n * ```\n */\n\n/**\n * Primary registry mapping component names to their injected HTMLStyleElement.\n * Keyed by component tag name (e.g. `'hx-card'`).\n */\nexport const lightStyleRegistry: Map<string, HTMLStyleElement> = new Map();\n\n/**\n * Returns true if a stylesheet for the given component has already been\n * injected into the document.\n *\n * @param componentName - The component tag name (e.g. `'hx-card'`).\n */\nexport function isStyleRegistered(componentName: string): boolean {\n return lightStyleRegistry.has(componentName);\n}\n\n/**\n * Records a stylesheet element in the registry for the given component.\n * Called after the element has been appended to the document.\n *\n * @param componentName - The component tag name (e.g. `'hx-card'`).\n * @param el - The HTMLStyleElement that was injected.\n */\nexport function registerStyle(componentName: string, el: HTMLStyleElement): void {\n lightStyleRegistry.set(componentName, el);\n}\n","/**\n * @module generateScopedSelectors\n *\n * Generates CSS with all selectors scoped under a `[data-hx-styled=\"componentName\"]`\n * attribute selector. This ensures injected light DOM styles only apply to content\n * wrapped in `<hx-style-scope component=\"...\">` and do not leak to the rest of the page.\n *\n * @example\n * ```ts\n * import { generateScopedSelectors } from './generateScopedSelectors.js';\n *\n * const scoped = generateScopedSelectors('hx-card', 'p { color: red; }');\n * // '[data-hx-styled=\"hx-card\"] p { color: red; }'\n * ```\n */\n\n/**\n * Wraps all CSS selectors to be scoped under `[data-hx-styled=\"componentName\"]`.\n *\n * Handles:\n * - Standard selectors: `p { ... }` → `[data-hx-styled=\"hx-card\"] p { ... }`\n * - `::slotted(*)` patterns: `::slotted(p) { ... }` → `[data-hx-styled=\"hx-card\"] p { ... }`\n * - At-rules (`@media`, `@supports`, etc.) are preserved with their inner rules scoped\n * - `:host` selectors are replaced with the scope attribute selector\n *\n * @param componentName - The component tag name used as the scope identifier.\n * @param css - The CSS string to transform.\n * @returns The transformed CSS with all selectors scoped.\n */\nexport function generateScopedSelectors(componentName: string, css: string): string {\n const scopeAttr = `[data-hx-styled=\"${componentName}\"]`;\n return transformCss(css, scopeAttr);\n}\n\n/**\n * Returns the character at position `i` in `str`, or an empty string if out of bounds.\n * Avoids the `string | undefined` issue from `noUncheckedIndexedAccess`.\n */\nfunction charAt(str: string, i: number): string {\n return str[i] ?? '';\n}\n\n/**\n * Recursively transforms CSS text, scoping all selectors under the given\n * attribute selector prefix.\n *\n * @param css - The CSS text to transform.\n * @param scopeAttr - The attribute selector to prepend (e.g. `[data-hx-styled=\"hx-card\"]`).\n * @returns The scoped CSS string.\n */\nfunction transformCss(css: string, scopeAttr: string): string {\n const result: string[] = [];\n let i = 0;\n const len = css.length;\n\n while (i < len) {\n // Skip whitespace\n while (i < len && /\\s/.test(charAt(css, i))) {\n result.push(charAt(css, i));\n i++;\n }\n\n if (i >= len) break;\n\n // Check for at-rule (e.g. @media, @supports, @keyframes)\n if (charAt(css, i) === '@') {\n const atBlock = extractAtRule(css, i);\n result.push(transformAtRule(atBlock.text, scopeAttr));\n i = atBlock.end;\n continue;\n }\n\n // Extract a selector block up to the opening brace\n const selectorEnd = css.indexOf('{', i);\n if (selectorEnd === -1) break;\n\n const selectorRaw = css.slice(i, selectorEnd);\n const bodyStart = selectorEnd + 1;\n const bodyEnd = findMatchingBrace(css, selectorEnd);\n\n if (bodyEnd === -1) break;\n\n const body = css.slice(bodyStart, bodyEnd);\n const scopedSelector = scopeSelector(selectorRaw, scopeAttr);\n result.push(`${scopedSelector}{${body}}`);\n i = bodyEnd + 1;\n }\n\n return result.join('');\n}\n\n/**\n * Scopes a raw selector string under the given attribute selector.\n * Handles comma-separated selectors, `::slotted()`, and `:host`.\n *\n * @param selectorRaw - The raw selector string (may be comma-separated).\n * @param scopeAttr - The attribute selector prefix.\n * @returns The scoped selector string.\n */\nfunction scopeSelector(selectorRaw: string, scopeAttr: string): string {\n return selectorRaw\n .split(',')\n .map((part) => {\n const trimmed = part.trim();\n\n // Replace ::slotted(*) with a direct descendant selector\n if (trimmed.startsWith('::slotted(') && trimmed.endsWith(')')) {\n const inner = trimmed.slice('::slotted('.length, -1).trim();\n return `${scopeAttr} ${inner}`;\n }\n\n // Replace :host with the scope attribute selector\n if (trimmed === ':host' || trimmed.startsWith(':host(') || trimmed.startsWith(':host ')) {\n return trimmed.replace(/^:host(\\([^)]*\\))?/, scopeAttr);\n }\n\n // Standard selector — prepend scope\n return `${scopeAttr} ${trimmed}`;\n })\n .join(', ');\n}\n\n/**\n * Handles transformation of an at-rule block. For container at-rules\n * (`@media`, `@supports`, `@layer`, `@container`) the inner rules are scoped.\n * Non-container at-rules (e.g. `@keyframes`, `@charset`) are passed through unchanged.\n *\n * @param atRuleText - The full at-rule text including its block.\n * @param scopeAttr - The attribute selector prefix.\n * @returns The transformed at-rule text.\n */\nfunction transformAtRule(atRuleText: string, scopeAttr: string): string {\n const containerAtRules = /^@(media|supports|layer|container|document)\\b/;\n const braceIndex = atRuleText.indexOf('{');\n\n if (braceIndex === -1 || !containerAtRules.test(atRuleText.trim())) {\n return atRuleText;\n }\n\n const head = atRuleText.slice(0, braceIndex + 1);\n const innerEnd = atRuleText.lastIndexOf('}');\n const inner = atRuleText.slice(braceIndex + 1, innerEnd);\n const tail = atRuleText.slice(innerEnd);\n\n return `${head}${transformCss(inner, scopeAttr)}${tail}`;\n}\n\n/**\n * Extracts a complete at-rule (potentially with a block) starting at index `start`.\n * Returns the text and the end index.\n */\nfunction extractAtRule(css: string, start: number): { text: string; end: number } {\n // Find either ';' (simple at-rule) or the matching '{...}' (block at-rule)\n let i = start;\n while (i < css.length && charAt(css, i) !== '{' && charAt(css, i) !== ';') {\n i++;\n }\n\n if (i >= css.length) {\n return { text: css.slice(start), end: css.length };\n }\n\n if (charAt(css, i) === ';') {\n return { text: css.slice(start, i + 1), end: i + 1 };\n }\n\n // Block at-rule — find matching closing brace\n const end = findMatchingBrace(css, i);\n if (end === -1) {\n return { text: css.slice(start), end: css.length };\n }\n\n return { text: css.slice(start, end + 1), end: end + 1 };\n}\n\n/**\n * Finds the index of the closing `}` that matches the `{` at `openIndex`.\n * Returns -1 if no matching brace is found.\n */\nfunction findMatchingBrace(css: string, openIndex: number): number {\n let depth = 0;\n for (let i = openIndex; i < css.length; i++) {\n const ch = charAt(css, i);\n if (ch === '{') depth++;\n else if (ch === '}') {\n depth--;\n if (depth === 0) return i;\n }\n }\n return -1;\n}\n","/**\n * @module sanitizeCss\n *\n * Validates and sanitizes a CSS string before injection into the document.\n * Prevents CSS injection attacks including scope escape via unbalanced braces,\n * external resource loading via `url()` / `@import`, and legacy browser\n * exploits (`expression()`, `-moz-binding`, `behavior:`).\n *\n * Returns the CSS string unchanged if it passes all checks, or `null` if\n * the input is rejected. Callers should treat a `null` return as a hard\n * rejection — the CSS must NOT be injected.\n */\n\nimport { devWarn } from '../utils/dev-warn.js';\n\n/** Patterns that are never allowed in injected CSS. */\nconst BLOCKED_PATTERNS: ReadonlyArray<{ pattern: RegExp; label: string }> = [\n { pattern: /expression\\s*\\(/i, label: 'CSS expression()' },\n { pattern: /-moz-binding\\s*:/i, label: '-moz-binding (XBL injection)' },\n { pattern: /behavior\\s*:/i, label: 'behavior: (HTC injection)' },\n { pattern: /@import\\b/i, label: '@import rule' },\n];\n\n/**\n * Matches `url(...)` values. Captures the content inside the parens.\n * Handles both quoted and unquoted forms. The `s` (dotAll) flag allows the\n * content to span newlines so CSS line-continuation escapes (`\\<LF>`) inside\n * `url()` do not slip past the matcher entirely — those continuations are\n * part of the url payload the CSS parser will still evaluate.\n */\nconst URL_PATTERN = /url\\(\\s*(['\"]?)(.*?)\\1\\s*\\)/gis;\n\n/**\n * Allowed URI schemes inside `url()`. Relative paths (no scheme) are also\n * allowed — only explicit external schemes are blocked.\n */\nconst ALLOWED_URL_PREFIXES: ReadonlyArray<string> = [\n 'data:',\n 'blob:',\n '#', // fragment references (e.g. SVG filters)\n];\n\n/**\n * Decodes CSS escape sequences found inside `url()` payloads to defeat\n * encoding-based bypasses of the scheme check.\n *\n * Three escape forms per CSS Syntax Level 3 are handled:\n *\n * 1. Hex escape: `\\` followed by 1-6 hex digits, optionally terminated by a\n * single whitespace character. Decodes to the codepoint\n * (e.g. `\\3a` → `:`, `\\2f\\2f` → `//`, `\\68\\74\\74\\70\\3a` → `http:`).\n * 2. Line continuation: `\\` followed by a newline (`\\n`, `\\r\\n`, `\\r`, or\n * `\\f`). Decodes to the empty string — the browser strips these and the\n * remaining characters are concatenated, so `http\\<LF>:xyz` becomes\n * `http:xyz`.\n * 3. Identity escape: `\\` followed by any other character. Decodes to the\n * literal character (e.g. `\\:` → `:`).\n *\n * This intentionally implements only the subset of CSS escape handling that\n * the parser applies to `url()` token contents. It is not a full CSS lexer.\n */\nfunction decodeCssEscapes(input: string): string {\n let out = '';\n let i = 0;\n const len = input.length;\n\n while (i < len) {\n const ch = input[i];\n\n if (ch !== '\\\\') {\n out += ch;\n i++;\n continue;\n }\n\n // Trailing lone backslash — keep it literal.\n if (i + 1 >= len) {\n out += ch;\n i++;\n continue;\n }\n\n const next = input[i + 1];\n\n // Line continuation: \\\\r\\n, \\\\n, \\\\r, \\\\f all decode to empty string.\n if (next === '\\n' || next === '\\f') {\n i += 2;\n continue;\n }\n if (next === '\\r') {\n // Handle CRLF as a single continuation.\n if (input[i + 2] === '\\n') {\n i += 3;\n } else {\n i += 2;\n }\n continue;\n }\n\n // Hex escape: up to 6 hex digits, optional single whitespace terminator.\n if (next !== undefined && /[0-9a-fA-F]/.test(next)) {\n let hex = '';\n let j = i + 1;\n while (j < len && hex.length < 6) {\n const hexCh = input[j];\n if (hexCh === undefined || !/[0-9a-fA-F]/.test(hexCh)) break;\n hex += hexCh;\n j++;\n }\n // Consume a single optional whitespace terminator per CSS spec.\n // CRLF is treated as one whitespace token.\n if (j < len) {\n const term = input[j];\n if (term === '\\r' && input[j + 1] === '\\n') {\n j += 2;\n } else if (\n term === ' ' ||\n term === '\\t' ||\n term === '\\n' ||\n term === '\\r' ||\n term === '\\f'\n ) {\n j++;\n }\n }\n const codepoint = parseInt(hex, 16);\n // Spec: a codepoint of 0 or a surrogate or above max Unicode is replaced\n // with U+FFFD. We replicate that defensively.\n if (\n !Number.isFinite(codepoint) ||\n codepoint === 0 ||\n (codepoint >= 0xd800 && codepoint <= 0xdfff) ||\n codepoint > 0x10ffff\n ) {\n out += '\\uFFFD';\n } else {\n out += String.fromCodePoint(codepoint);\n }\n i = j;\n continue;\n }\n\n // Identity escape: \\X decodes to literal X (for any non-hex, non-newline X).\n out += next;\n i += 2;\n }\n\n return out;\n}\n\n/**\n * Returns true if a `url()` value is safe for injection.\n * Safe values are: relative paths, data: URIs, blob: URIs, and fragment refs.\n * Anything with an explicit protocol scheme (http:, https:, ftp:, etc.) is blocked.\n *\n * The payload is CSS-escape-decoded before any scheme / prefix check is\n * applied. `sanitizeCss` pre-decodes the full stylesheet so this decode is\n * normally idempotent, but the defense is retained here so `isUrlSafe` remains\n * correct in isolation and survives any future caller that passes raw payloads.\n */\nfunction isUrlSafe(urlValue: string): boolean {\n const trimmedRaw = urlValue.trim();\n\n // Empty url() is harmless. Check this on the raw (pre-decode) value so a\n // string consisting only of whitespace escapes still short-circuits cleanly\n // after decoding — see below.\n if (trimmedRaw === '') return true;\n\n // Decode CSS escapes first so the scheme / prefix checks run against the\n // same string the browser's CSS parser will materialize.\n const decoded = decodeCssEscapes(trimmedRaw).trim();\n\n // A url() that decodes to empty (e.g. only line-continuations) is harmless.\n if (decoded === '') return true;\n\n // Protocol-relative URLs (//host/path) resolve against the page's current\n // protocol and load from an external host — same risk as explicit http://.\n // Must reject before the allow-prefix / scheme checks, since they have no colon.\n if (decoded.startsWith('//')) return false;\n\n // Allow explicitly safe prefixes\n for (const prefix of ALLOWED_URL_PREFIXES) {\n if (decoded.startsWith(prefix)) return true;\n }\n\n // Block any value containing a protocol scheme (e.g. http://, https://, ftp://)\n if (/^[a-z][a-z0-9+\\-.]*:/i.test(decoded)) {\n return false;\n }\n\n // No scheme — treat as relative path, which is safe\n return true;\n}\n\n/**\n * Checks whether braces in the CSS string are balanced.\n * Unbalanced braces can be used to escape scoped selectors and inject global\n * styles into the document. Braces inside strings (`\"...\"`, `'...'`) and block\n * comments are ignored so legitimate content like `content: \"}\"` or SVG data\n * URIs (`url(\"data:image/svg+xml,<svg>{...}</svg>\")`) does not trigger a false\n * rejection.\n */\nfunction areBracesBalanced(css: string): boolean {\n let depth = 0;\n let quote: '\"' | \"'\" | null = null;\n let inComment = false;\n\n for (let i = 0; i < css.length; i++) {\n const ch = css[i];\n\n if (inComment) {\n if (ch === '*' && css[i + 1] === '/') {\n inComment = false;\n i++;\n }\n continue;\n }\n\n if (quote !== null) {\n if (ch === '\\\\') {\n // Skip the escaped character (including an escaped quote).\n i++;\n continue;\n }\n if (ch === quote) {\n quote = null;\n }\n continue;\n }\n\n if (ch === '/' && css[i + 1] === '*') {\n inComment = true;\n i++;\n continue;\n }\n\n if (ch === '\"' || ch === \"'\") {\n quote = ch;\n continue;\n }\n\n if (ch === '{') {\n depth++;\n } else if (ch === '}') {\n depth--;\n // A negative depth means a closing brace appeared before its opener,\n // which is a clear scope-escape attempt.\n if (depth < 0) return false;\n }\n }\n return depth === 0;\n}\n\n/**\n * Sanitizes a CSS string for safe injection into `document.head`.\n *\n * Rejects CSS that contains:\n * - Unbalanced braces (scope escape)\n * - `url()` values pointing to external domains\n * - `@import` rules\n * - `expression()` (IE CSS expressions)\n * - `-moz-binding` (XBL injection)\n * - `behavior:` (HTC injection)\n *\n * ## Decode asymmetry\n *\n * Brace balance runs on the raw input (its scanner is string / escape aware).\n * `BLOCKED_PATTERNS` and `URL_PATTERN` run on a post-decode copy so that\n * escape-encoded idents (`@\\69mport`, `u\\72l(...)`) cannot smuggle a token\n * past a literal-byte regex. The decode is deliberately context-blind — the\n * tradeoff is a narrow false-positive surface: legitimate CSS that\n * hex-escapes one of the blocked sequences inside a string or comment\n * (e.g. `content: \"\\40 import notes\"` decodes to `content: \"@import notes\"`)\n * will be rejected even though the browser's tokenizer would never promote\n * it to an at-rule. This is intentional and accepted — the security gain\n * from closing the ident-escape bypass vastly outweighs the cost of a\n * vanishingly rare user-authored escape-encoded blocked string.\n *\n * @param css - The raw CSS string to validate.\n * @param componentName - The component name, used in dev warnings.\n * @returns The original CSS if safe, or `null` if rejected.\n */\nexport function sanitizeCss(css: string, componentName: string): string | null {\n // Check brace balance on the raw input — the balance scanner already tracks\n // string quoting and backslash escapes, so it does not need pre-decoded CSS\n // and is safer run against the source bytes.\n if (!areBracesBalanced(css)) {\n devWarn(\n componentName,\n 'light-css rejected: unbalanced braces detected. ' +\n 'This may indicate a CSS injection attempt.',\n );\n return null;\n }\n\n // Decode CSS escape sequences before the token-level checks.\n // The CSS tokenizer decodes escapes inside <ident-token>, <at-keyword-token>,\n // and <url-token> before comparing against rule/function names (CSS Syntax\n // Level 3 §4.3.3–§4.3.7). So `@\\69mport` tokenizes as `@import` and\n // `u\\72l(http://evil/x)` tokenizes as `url(http://evil/x)` — both would slip\n // past regex checks that match only the literal bytes. Decoding first forces\n // our patterns to see what the browser will actually tokenize.\n const decoded = decodeCssEscapes(css);\n\n // Check for blocked patterns against the decoded CSS.\n for (const { pattern, label } of BLOCKED_PATTERNS) {\n if (pattern.test(decoded)) {\n devWarn(componentName, `light-css rejected: ${label} is not allowed in injected styles.`);\n return null;\n }\n }\n\n // Validate all url() values on the decoded CSS — block external domains.\n let urlMatch: RegExpExecArray | null;\n URL_PATTERN.lastIndex = 0;\n while ((urlMatch = URL_PATTERN.exec(decoded)) !== null) {\n const urlValue = urlMatch[2] ?? '';\n if (!isUrlSafe(urlValue)) {\n devWarn(\n componentName,\n 'light-css rejected: url() with external domain detected. ' +\n 'Only relative paths, data:, and blob: URIs are allowed.',\n );\n return null;\n }\n }\n\n return css;\n}\n","/**\n * @module injectLightStyles\n *\n * Core utility for injecting scoped `<style>` elements into `document.head`\n * to style light DOM slotted content in HELiX components. Uses the\n * `lightStyleRegistry` to deduplicate — each component type is injected at\n * most once per page lifetime.\n *\n * This is the primary mechanism for ensuring Drupal-slotted content inherits\n * proper typography and spacing when rendered into HELiX components.\n *\n * @example\n * ```ts\n * import { injectLightStyles } from '../../utilities/injectLightStyles.js';\n *\n * // In connectedCallback:\n * injectLightStyles('hx-card', 'p { font-size: var(--hx-font-size-md); }');\n * ```\n */\n\nimport { isStyleRegistered, registerStyle } from './lightStyleRegistry.js';\nimport { generateScopedSelectors } from './generateScopedSelectors.js';\nimport { sanitizeCss } from './sanitizeCss.js';\n\n/**\n * Injects a scoped `<style>` element into `document.head` for light DOM content\n * belonging to `componentName`. The CSS is automatically scoped via\n * `generateScopedSelectors` so styles only apply inside\n * `[data-hx-styled=\"componentName\"]` wrappers.\n *\n * Safe to call multiple times — subsequent calls for the same `componentName`\n * are no-ops (deduplication via `lightStyleRegistry`).\n *\n * No-op in SSR environments where `document` is not defined.\n *\n * @param componentName - The component tag name used as the scope identifier\n * (e.g. `'hx-card'`). Must be unique per component type.\n * @param css - The raw CSS to scope and inject. Selectors will be prefixed with\n * `[data-hx-styled=\"componentName\"]`.\n */\nexport function injectLightStyles(componentName: string, css: string): void {\n if (typeof document === 'undefined') return;\n\n if (isStyleRegistered(componentName)) return;\n\n const safeCss = sanitizeCss(css, componentName);\n if (safeCss === null) return;\n\n const scopedCss = generateScopedSelectors(componentName, safeCss);\n\n const styleEl = document.createElement('style');\n styleEl.setAttribute('data-hx-light-styles', componentName);\n styleEl.textContent = scopedCss;\n\n document.head.appendChild(styleEl);\n registerStyle(componentName, styleEl);\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 { hxStyleScopeStyles } from './hx-style-scope.styles.js';\nimport { injectLightStyles } from '../../utilities/injectLightStyles.js';\n\n/**\n * A transparent wrapper component that injects scoped light DOM styles for its\n * slotted children. Designed for use in Drupal Twig templates where slotted\n * content lives in the light DOM and cannot inherit Shadow DOM styles.\n *\n * On connection, the component:\n * 1. Sets `data-hx-styled` on itself so scoped CSS selectors resolve correctly.\n * 2. Calls `injectLightStyles` to inject a `<style>` into `document.head` — once\n * per component type, deduplicated via `lightStyleRegistry`.\n *\n * The element renders as `display: contents` so it does not affect layout.\n *\n * @summary Scoped light DOM style injection wrapper for Drupal-slotted content.\n *\n * @tag hx-style-scope\n *\n * @slot - Default slot for any light DOM content that should receive scoped styles.\n *\n * @example\n * ```html\n * <hx-style-scope component=\"hx-card\">\n * <p>This paragraph will receive hx-card light DOM styles.</p>\n * </hx-style-scope>\n * ```\n *\n * @example Drupal Twig usage via macro\n * ```twig\n * {% import '@helix/hx-style-scope.macro.twig' as hx %}\n * {{ hx.scope('hx-card', content) }}\n * ```\n */\n@customElement('hx-style-scope')\nexport class HxStyleScope extends HelixElement {\n static override styles = [hxStyleScopeStyles];\n\n /**\n * The component tag name whose light DOM styles should be injected.\n * Must match a registered component name (e.g. `'hx-card'`).\n *\n * When set, the element also applies `data-hx-styled` to itself so that\n * scoped CSS selectors generated by `generateScopedSelectors` resolve\n * correctly against slotted child elements.\n *\n * @attr component\n */\n @property({ type: String, reflect: true })\n component: string = '';\n\n /**\n * The CSS to inject as scoped light DOM styles. When provided alongside\n * `component`, this CSS will be scoped under `[data-hx-styled=\"component\"]`\n * and injected into `document.head` (once per component type).\n *\n * If omitted, `injectLightStyles` is still called but with an empty string,\n * which is a no-op for actual style injection.\n *\n * @attr light-css\n */\n @property({ type: String, attribute: 'light-css' })\n lightCss: string = '';\n\n override connectedCallback(): void {\n super.connectedCallback();\n this._applyScope();\n }\n\n protected override updated(changed: PropertyValues<this>): void {\n if (changed.has('component') || changed.has('lightCss')) {\n this._applyScope();\n }\n }\n\n /**\n * Applies the `data-hx-styled` attribute and triggers style injection.\n * Called on connect and whenever `component` or `lightCss` changes.\n */\n private _applyScope(): void {\n if (!this.component) return;\n\n // Set the scoping attribute so CSS selectors from generateScopedSelectors work.\n this.setAttribute('data-hx-styled', this.component);\n\n if (this.lightCss) {\n injectLightStyles(this.component, this.lightCss);\n }\n }\n\n override render() {\n return html`<slot></slot>`;\n }\n}\n\ndeclare global {\n interface HTMLElementTagNameMap {\n 'hx-style-scope': HxStyleScope;\n }\n}\n"],"names":["hxStyleScopeStyles","css","lightStyleRegistry","isStyleRegistered","componentName","registerStyle","el","generateScopedSelectors","scopeAttr","transformCss","charAt","str","result","i","len","atBlock","extractAtRule","transformAtRule","selectorEnd","selectorRaw","bodyStart","bodyEnd","findMatchingBrace","body","scopedSelector","scopeSelector","part","trimmed","inner","atRuleText","containerAtRules","braceIndex","head","innerEnd","tail","start","end","openIndex","depth","ch","BLOCKED_PATTERNS","URL_PATTERN","ALLOWED_URL_PREFIXES","decodeCssEscapes","input","out","next","hex","j","hexCh","term","codepoint","isUrlSafe","urlValue","trimmedRaw","decoded","prefix","areBracesBalanced","quote","inComment","sanitizeCss","pattern","label","urlMatch","injectLightStyles","safeCss","scopedCss","styleEl","HxStyleScope","HelixElement","changed","html","__decorateClass","property","customElement"],"mappings":"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"}
|
|
@@ -1,11 +1,11 @@
|
|
|
1
|
-
import { css as x, nothing as
|
|
2
|
-
import "
|
|
3
|
-
import {
|
|
4
|
-
import { classMap as w } from "lit/directives/class-map.js";
|
|
1
|
+
import { css as x, nothing as c, html as l } from "lit";
|
|
2
|
+
import { property as i, query as _, state as m, customElement as w } from "lit/decorators.js";
|
|
3
|
+
import { classMap as p } from "lit/directives/class-map.js";
|
|
5
4
|
import { ifDefined as u } from "lit/directives/if-defined.js";
|
|
6
|
-
import {
|
|
7
|
-
import {
|
|
8
|
-
|
|
5
|
+
import { F as b } from "./FormMixin-B8PXk5RQ.js";
|
|
6
|
+
import { H as f } from "./helix-element-BNEYeiys.js";
|
|
7
|
+
import { c as v } from "./id-counter-DuX8vsui.js";
|
|
8
|
+
const g = x`
|
|
9
9
|
:host {
|
|
10
10
|
display: block;
|
|
11
11
|
}
|
|
@@ -25,7 +25,7 @@ const f = x`
|
|
|
25
25
|
display: flex;
|
|
26
26
|
flex-direction: column;
|
|
27
27
|
gap: var(--hx-space-1, 0.25rem);
|
|
28
|
-
font-family: var(--hx-font-family-sans, sans-serif);
|
|
28
|
+
font-family: var(--hx-switch-font-family, var(--hx-font-family-sans, sans-serif));
|
|
29
29
|
}
|
|
30
30
|
|
|
31
31
|
/* WCAG 2.5.5 (healthcare mandate): minimum 44px touch target height.
|
|
@@ -48,7 +48,7 @@ const f = x`
|
|
|
48
48
|
border: none;
|
|
49
49
|
padding: 0;
|
|
50
50
|
border-radius: var(--hx-border-radius-full, 9999px);
|
|
51
|
-
background-color: var(--hx-switch-track-bg, var(--hx-color-neutral-300, #
|
|
51
|
+
background-color: var(--hx-switch-track-bg, var(--hx-color-neutral-300, #cbd5e1));
|
|
52
52
|
cursor: pointer;
|
|
53
53
|
transition: background-color var(--hx-transition-fast, 150ms ease);
|
|
54
54
|
outline: none;
|
|
@@ -144,7 +144,7 @@ const f = x`
|
|
|
144
144
|
.switch__label {
|
|
145
145
|
font-size: var(--hx-font-size-sm, 0.875rem);
|
|
146
146
|
font-weight: var(--hx-font-weight-medium, 500);
|
|
147
|
-
color: var(--hx-switch-label-color, var(--hx-color-neutral-700, #
|
|
147
|
+
color: var(--hx-switch-label-color, var(--hx-color-neutral-700, #334155));
|
|
148
148
|
line-height: var(--hx-line-height-normal, 1.5);
|
|
149
149
|
cursor: pointer;
|
|
150
150
|
user-select: none;
|
|
@@ -160,7 +160,7 @@ const f = x`
|
|
|
160
160
|
|
|
161
161
|
.switch__help-text {
|
|
162
162
|
font-size: var(--hx-font-size-xs, 0.75rem);
|
|
163
|
-
color: var(--hx-switch-help-text-color, var(--hx-color-neutral-500, #
|
|
163
|
+
color: var(--hx-switch-help-text-color, var(--hx-color-neutral-500, #64748b));
|
|
164
164
|
line-height: var(--hx-line-height-normal, 1.5);
|
|
165
165
|
}
|
|
166
166
|
|
|
@@ -237,37 +237,21 @@ const f = x`
|
|
|
237
237
|
}
|
|
238
238
|
}
|
|
239
239
|
`;
|
|
240
|
-
var
|
|
241
|
-
for (var h = a > 1 ? void 0 : a ?
|
|
240
|
+
var k = Object.defineProperty, y = Object.getOwnPropertyDescriptor, s = (t, r, o, a) => {
|
|
241
|
+
for (var h = a > 1 ? void 0 : a ? y(r, o) : r, n = t.length - 1, d; n >= 0; n--)
|
|
242
242
|
(d = t[n]) && (h = (a ? d(r, o, h) : d(h)) || h);
|
|
243
|
-
return a && h &&
|
|
243
|
+
return a && h && k(r, o, h), h;
|
|
244
244
|
};
|
|
245
|
-
const
|
|
246
|
-
let e = class extends b {
|
|
245
|
+
const z = v("hx-switch");
|
|
246
|
+
let e = class extends b(f) {
|
|
247
247
|
constructor() {
|
|
248
|
-
super(...arguments), this.checked = !1, this.disabled = !1, this.required = !1, this.name = "", this.value = "on", this.label = "", this.size = "md", this.error = "", this.helpText = "", this.requiredMessage = "This field is required.", this._hasErrorSlot = !1, this._hasDefaultSlot = !1, this._switchId =
|
|
248
|
+
super(...arguments), this.checked = !1, this.disabled = !1, this.required = !1, this.name = "", this.value = "on", this.label = "", this.size = "md", this.error = "", this.helpText = "", this.requiredMessage = "This field is required.", this._hasErrorSlot = !1, this._hasDefaultSlot = !1, this._switchId = z(), this._labelId = `${this._switchId}-label`, this._helpTextId = `${this._switchId}-help`, this._errorId = `${this._switchId}-error`;
|
|
249
249
|
}
|
|
250
250
|
// ─── Lifecycle ───
|
|
251
251
|
updated(t) {
|
|
252
|
-
super.updated(t), (t.has("checked") || t.has("value")) &&
|
|
252
|
+
super.updated(t), (t.has("checked") || t.has("value")) && this._internals.setFormValue(this.checked ? this.value : null);
|
|
253
253
|
}
|
|
254
254
|
// ─── Form Integration ───
|
|
255
|
-
/** Returns the validation message. */
|
|
256
|
-
get validationMessage() {
|
|
257
|
-
return this._internals.validationMessage;
|
|
258
|
-
}
|
|
259
|
-
/** Returns the ValidityState object. */
|
|
260
|
-
get validity() {
|
|
261
|
-
return this._internals.validity;
|
|
262
|
-
}
|
|
263
|
-
/** Checks whether the switch satisfies its constraints. */
|
|
264
|
-
checkValidity() {
|
|
265
|
-
return this._internals.checkValidity();
|
|
266
|
-
}
|
|
267
|
-
/** Reports validity and shows the browser's constraint validation UI. */
|
|
268
|
-
reportValidity() {
|
|
269
|
-
return this._internals.reportValidity();
|
|
270
|
-
}
|
|
271
255
|
/** Recalculates and sets the validity state based on required and checked. */
|
|
272
256
|
/** @internal */
|
|
273
257
|
_updateValidity() {
|
|
@@ -278,7 +262,7 @@ let e = class extends b {
|
|
|
278
262
|
) : this._internals.setValidity({});
|
|
279
263
|
}
|
|
280
264
|
_onFormReset() {
|
|
281
|
-
this.checked = !1, this._internals.setFormValue(null);
|
|
265
|
+
this.checked = !1, this._internals.setFormValue(null), this._resetInteractionState();
|
|
282
266
|
}
|
|
283
267
|
_onFormStateRestore(t, r) {
|
|
284
268
|
typeof t == "string" && (this.checked = t === this.value);
|
|
@@ -303,7 +287,7 @@ let e = class extends b {
|
|
|
303
287
|
/** Toggles checked state and dispatches hx-change event. */
|
|
304
288
|
/** @internal */
|
|
305
289
|
_toggle() {
|
|
306
|
-
this.disabled || (this.checked = !this.checked, this.dispatchEvent(
|
|
290
|
+
this.disabled || (this.checked = !this.checked, this._handleInteractionInput(), this.dispatchEvent(
|
|
307
291
|
new CustomEvent("hx-change", {
|
|
308
292
|
bubbles: !0,
|
|
309
293
|
composed: !0,
|
|
@@ -339,8 +323,8 @@ let e = class extends b {
|
|
|
339
323
|
t || this._hasErrorSlot ? this._errorId : null,
|
|
340
324
|
this.helpText && !t ? this._helpTextId : null
|
|
341
325
|
].filter(Boolean).join(" ") || void 0;
|
|
342
|
-
return
|
|
343
|
-
<div part="switch" class=${
|
|
326
|
+
return l`
|
|
327
|
+
<div part="switch" class=${p(o)}>
|
|
344
328
|
<div class="switch__control-row">
|
|
345
329
|
<button
|
|
346
330
|
part="track"
|
|
@@ -351,8 +335,8 @@ let e = class extends b {
|
|
|
351
335
|
aria-checked=${this.checked ? "true" : "false"}
|
|
352
336
|
aria-labelledby=${u(r ? this._labelId : void 0)}
|
|
353
337
|
aria-describedby=${u(a)}
|
|
354
|
-
aria-invalid=${t ? "true" :
|
|
355
|
-
aria-required=${this.required ? "true" :
|
|
338
|
+
aria-invalid=${t ? "true" : c}
|
|
339
|
+
aria-required=${this.required ? "true" : c}
|
|
356
340
|
?disabled=${this.disabled}
|
|
357
341
|
@click=${this._handleClick}
|
|
358
342
|
@keydown=${this._handleKeyDown}
|
|
@@ -361,70 +345,70 @@ let e = class extends b {
|
|
|
361
345
|
</button>
|
|
362
346
|
|
|
363
347
|
<label part="label" class="switch__label" id=${this._labelId} for=${this._switchId}>
|
|
364
|
-
<slot @slotchange=${this._handleDefaultSlotChange}>${this.label}</slot>${this.required ?
|
|
348
|
+
<slot @slotchange=${this._handleDefaultSlotChange}>${this.label}</slot>${this.required ? l`<span class="switch__required-marker" aria-hidden="true">*</span>` : c}
|
|
365
349
|
</label>
|
|
366
350
|
</div>
|
|
367
351
|
|
|
368
352
|
<slot name="error" @slotchange=${this._handleErrorSlotChange}>
|
|
369
|
-
${t ?
|
|
353
|
+
${t ? l`<div part="error" class="switch__error" id=${this._errorId} role="alert">
|
|
370
354
|
${this.error}
|
|
371
|
-
</div>` :
|
|
355
|
+
</div>` : c}
|
|
372
356
|
</slot>
|
|
373
357
|
|
|
374
|
-
${this.helpText && !t ?
|
|
358
|
+
${this.helpText && !t ? l`
|
|
375
359
|
<div part="help-text" class="switch__help-text" id=${this._helpTextId}>
|
|
376
360
|
<slot name="help-text">${this.helpText}</slot>
|
|
377
361
|
</div>
|
|
378
|
-
` :
|
|
362
|
+
` : c}
|
|
379
363
|
</div>
|
|
380
364
|
`;
|
|
381
365
|
}
|
|
382
366
|
};
|
|
383
|
-
e.styles = [
|
|
367
|
+
e.styles = [g];
|
|
384
368
|
e.formAssociated = !0;
|
|
385
|
-
|
|
386
|
-
|
|
369
|
+
s([
|
|
370
|
+
i({ type: Boolean, reflect: !0 })
|
|
387
371
|
], e.prototype, "checked", 2);
|
|
388
|
-
|
|
389
|
-
|
|
372
|
+
s([
|
|
373
|
+
i({ type: Boolean, reflect: !0 })
|
|
390
374
|
], e.prototype, "disabled", 2);
|
|
391
|
-
|
|
392
|
-
|
|
375
|
+
s([
|
|
376
|
+
i({ type: Boolean, reflect: !0 })
|
|
393
377
|
], e.prototype, "required", 2);
|
|
394
|
-
|
|
395
|
-
|
|
378
|
+
s([
|
|
379
|
+
i({ type: String, reflect: !0 })
|
|
396
380
|
], e.prototype, "name", 2);
|
|
397
|
-
|
|
398
|
-
|
|
381
|
+
s([
|
|
382
|
+
i({ type: String, reflect: !0 })
|
|
399
383
|
], e.prototype, "value", 2);
|
|
400
|
-
|
|
401
|
-
|
|
384
|
+
s([
|
|
385
|
+
i({ type: String })
|
|
402
386
|
], e.prototype, "label", 2);
|
|
403
|
-
|
|
404
|
-
|
|
387
|
+
s([
|
|
388
|
+
i({ type: String, reflect: !0, attribute: "hx-size" })
|
|
405
389
|
], e.prototype, "size", 2);
|
|
406
|
-
|
|
407
|
-
|
|
390
|
+
s([
|
|
391
|
+
i({ type: String })
|
|
408
392
|
], e.prototype, "error", 2);
|
|
409
|
-
|
|
410
|
-
|
|
393
|
+
s([
|
|
394
|
+
i({ type: String, attribute: "help-text" })
|
|
411
395
|
], e.prototype, "helpText", 2);
|
|
412
|
-
|
|
413
|
-
|
|
396
|
+
s([
|
|
397
|
+
i({ attribute: "required-message" })
|
|
414
398
|
], e.prototype, "requiredMessage", 2);
|
|
415
|
-
|
|
399
|
+
s([
|
|
416
400
|
_(".switch__track")
|
|
417
401
|
], e.prototype, "_trackEl", 2);
|
|
418
|
-
|
|
402
|
+
s([
|
|
419
403
|
m()
|
|
420
404
|
], e.prototype, "_hasErrorSlot", 2);
|
|
421
|
-
|
|
405
|
+
s([
|
|
422
406
|
m()
|
|
423
407
|
], e.prototype, "_hasDefaultSlot", 2);
|
|
424
|
-
e =
|
|
425
|
-
|
|
408
|
+
e = s([
|
|
409
|
+
w("hx-switch")
|
|
426
410
|
], e);
|
|
427
411
|
export {
|
|
428
412
|
e as H
|
|
429
413
|
};
|
|
430
|
-
//# sourceMappingURL=hx-switch-
|
|
414
|
+
//# sourceMappingURL=hx-switch-DqOD9JR7.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"hx-switch-DqOD9JR7.js","sources":["../../src/components/hx-switch/hx-switch.styles.ts","../../src/components/hx-switch/hx-switch.ts"],"sourcesContent":["import { css } from 'lit';\n\nexport const helixSwitchStyles = css`\n :host {\n display: block;\n }\n\n :host([disabled]) {\n opacity: var(--hx-opacity-disabled, 0.5);\n pointer-events: none;\n }\n\n * {\n box-sizing: border-box;\n }\n\n /* --- Layout --- */\n\n .switch {\n display: flex;\n flex-direction: column;\n gap: var(--hx-space-1, 0.25rem);\n font-family: var(--hx-switch-font-family, var(--hx-font-family-sans, sans-serif));\n }\n\n /* WCAG 2.5.5 (healthcare mandate): minimum 44px touch target height.\n The track itself is smaller visually, but the row must meet the\n interactive touch target threshold for all size variants. */\n .switch__control-row {\n display: flex;\n align-items: center;\n gap: var(--hx-space-2, 0.5rem);\n min-height: var(--hx-touch-target-min, 2.75rem);\n }\n\n /* --- Track --- */\n\n .switch__track {\n position: relative;\n display: inline-flex;\n align-items: center;\n flex-shrink: 0;\n border: none;\n padding: 0;\n border-radius: var(--hx-border-radius-full, 9999px);\n background-color: var(--hx-switch-track-bg, var(--hx-color-neutral-300, #cbd5e1));\n cursor: pointer;\n transition: background-color var(--hx-transition-fast, 150ms ease);\n outline: none;\n -webkit-appearance: none;\n appearance: none;\n }\n\n .switch__track:focus-visible {\n outline: var(--hx-focus-ring-width, 2px) solid\n var(\n --hx-switch-focus-ring-color,\n var(--hx-focus-ring-color, var(--hx-color-primary-400, #60a5fa))\n );\n outline-offset: var(--hx-focus-ring-offset, 2px);\n }\n\n .switch--checked .switch__track {\n background-color: var(--hx-switch-track-checked-bg, var(--hx-color-primary-500, #2563eb));\n }\n\n /* --- Thumb --- */\n\n .switch__thumb {\n position: absolute;\n border-radius: var(--hx-border-radius-full, 9999px);\n background-color: var(--hx-switch-thumb-bg, var(--hx-color-neutral-0, #ffffff));\n box-shadow: var(--hx-switch-thumb-shadow, var(--hx-shadow-sm, 0 1px 2px 0 rgb(0 0 0 / 0.05)));\n transition: transform var(--hx-transition-fast, 150ms ease);\n }\n\n /* --- Size: sm (track 32x18, thumb 14px) --- */\n\n .switch--sm .switch__track {\n width: var(--hx-switch-track-width-sm, var(--hx-size-8, 2rem));\n height: var(--hx-switch-track-height-sm, var(--hx-size-4-5, 1.125rem));\n }\n\n .switch--sm .switch__thumb {\n width: var(--hx-switch-thumb-size-sm, var(--hx-size-3-5, 0.875rem));\n height: var(--hx-switch-thumb-size-sm, var(--hx-size-3-5, 0.875rem));\n top: 50%;\n left: var(--hx-switch-thumb-offset, var(--hx-space-0-5, 0.125rem));\n transform: translateY(-50%);\n }\n\n .switch--sm.switch--checked .switch__thumb {\n transform: translateY(-50%)\n translateX(var(--hx-switch-thumb-size-sm, var(--hx-size-3-5, 0.875rem)));\n }\n\n /* --- Size: md (track 40x22, thumb 18px) --- */\n\n .switch--md .switch__track {\n width: var(--hx-switch-track-width-md, var(--hx-size-10, 2.5rem));\n height: var(--hx-switch-track-height-md, var(--hx-size-5-5, 1.375rem));\n }\n\n .switch--md .switch__thumb {\n width: var(--hx-switch-thumb-size-md, var(--hx-size-4-5, 1.125rem));\n height: var(--hx-switch-thumb-size-md, var(--hx-size-4-5, 1.125rem));\n top: 50%;\n left: var(--hx-switch-thumb-offset, var(--hx-space-0-5, 0.125rem));\n transform: translateY(-50%);\n }\n\n .switch--md.switch--checked .switch__thumb {\n transform: translateY(-50%)\n translateX(var(--hx-switch-thumb-size-md, var(--hx-size-4-5, 1.125rem)));\n }\n\n /* --- Size: lg (track 48x26, thumb 22px) --- */\n\n .switch--lg .switch__track {\n width: var(--hx-switch-track-width-lg, var(--hx-size-12, 3rem));\n height: var(--hx-switch-track-height-lg, var(--hx-size-6-5, 1.625rem));\n }\n\n .switch--lg .switch__thumb {\n width: var(--hx-switch-thumb-size-lg, var(--hx-size-5-5, 1.375rem));\n height: var(--hx-switch-thumb-size-lg, var(--hx-size-5-5, 1.375rem));\n top: 50%;\n left: var(--hx-switch-thumb-offset, var(--hx-space-0-5, 0.125rem));\n transform: translateY(-50%);\n }\n\n .switch--lg.switch--checked .switch__thumb {\n transform: translateY(-50%)\n translateX(var(--hx-switch-thumb-size-lg, var(--hx-size-5-5, 1.375rem)));\n }\n\n /* --- Label --- */\n\n .switch__label {\n font-size: var(--hx-font-size-sm, 0.875rem);\n font-weight: var(--hx-font-weight-medium, 500);\n color: var(--hx-switch-label-color, var(--hx-color-neutral-700, #334155));\n line-height: var(--hx-line-height-normal, 1.5);\n cursor: pointer;\n user-select: none;\n -webkit-user-select: none;\n }\n\n .switch__required-marker {\n color: var(--hx-switch-error-color, var(--hx-color-error-text, #b91c1c));\n font-weight: var(--hx-font-weight-bold, 700);\n }\n\n /* --- Help Text & Error --- */\n\n .switch__help-text {\n font-size: var(--hx-font-size-xs, 0.75rem);\n color: var(--hx-switch-help-text-color, var(--hx-color-neutral-500, #64748b));\n line-height: var(--hx-line-height-normal, 1.5);\n }\n\n .switch__error {\n font-size: var(--hx-font-size-xs, 0.75rem);\n color: var(--hx-switch-error-color, var(--hx-color-error-text, #b91c1c));\n line-height: var(--hx-line-height-normal, 1.5);\n }\n\n /* --- Reduced Motion --- */\n\n @media (prefers-reduced-motion: reduce) {\n .switch__track,\n .switch__thumb {\n transition: none;\n }\n }\n\n /* ─── High Contrast Mode (forced-colors) ─── */\n\n @media (forced-colors: active) {\n .switch__track {\n forced-color-adjust: none;\n background-color: ButtonFace;\n border: 2px solid ButtonText;\n }\n\n .switch__track:focus-visible {\n outline: 3px solid Highlight;\n outline-offset: 2px;\n }\n\n .switch__thumb {\n background-color: ButtonText;\n box-shadow: none;\n }\n\n .switch--checked .switch__track {\n background-color: Highlight;\n border-color: Highlight;\n }\n\n .switch--checked .switch__thumb {\n background-color: HighlightText;\n }\n\n :host([disabled]) {\n opacity: 1;\n }\n\n :host([disabled]) .switch__track {\n border-color: GrayText;\n background-color: ButtonFace;\n }\n\n :host([disabled]) .switch__thumb {\n background-color: GrayText;\n }\n\n :host([disabled]) .switch__label {\n color: GrayText;\n }\n\n .switch__label {\n color: CanvasText;\n }\n\n .switch__help-text {\n color: GrayText;\n }\n\n .switch__error {\n color: LinkText;\n }\n }\n`;\n","import { html, nothing, type PropertyValues } from 'lit';\nimport '../../utilities/document-token-adoption.js';\nimport { customElement, property, query, state } from 'lit/decorators.js';\nimport { classMap } from 'lit/directives/class-map.js';\nimport { ifDefined } from 'lit/directives/if-defined.js';\nimport { HelixElement, createIdCounter } from '../../base/index.js';\nimport { FormMixin } from '../../mixins/FormMixin.js';\nimport { helixSwitchStyles } from './hx-switch.styles.js';\n\nconst _nextSwitchId = createIdCounter('hx-switch');\n\n/** Detail for the hx-change event dispatched by hx-switch. */\nexport interface HxSwitchChangeDetail {\n checked: boolean;\n value: string;\n}\n\n/**\n * A toggle switch component for on/off states.\n *\n * Uses `role=\"switch\"` with `aria-checked` to convey toggle state.\n * Supports keyboard activation via Space key (per ARIA APG switch pattern).\n * Label association is handled through `aria-labelledby`, and\n * error/help text are linked via `aria-describedby`.\n *\n * @summary Form-associated toggle switch with label, error, and help text.\n *\n * @tag hx-switch\n *\n * @slot - Custom label content (overrides the label property).\n * @slot error - Custom error content (overrides the error property).\n * @slot help-text - Custom help text content (overrides the helpText property).\n *\n * @fires {CustomEvent<{checked: boolean, value: string}>} hx-change - Dispatched when the switch is toggled. Boolean-selection controls (`hx-switch`, `hx-checkbox`) include both `checked` (boolean state) and `value` (form value) in the detail; text-value controls (`hx-text-input`, `hx-combobox`, `hx-select`) emit only `{value}`.\n *\n * @csspart switch - The switch container (track + thumb wrapper).\n * @csspart track - The track background element.\n * @csspart thumb - The sliding thumb element.\n * @csspart label - The label text element.\n * @csspart help-text - The help text container.\n * @csspart error - The error message container.\n *\n * @cssprop [--hx-switch-track-bg=var(--hx-color-neutral-300)] - Track background color.\n * @cssprop [--hx-switch-track-checked-bg=var(--hx-color-primary-500)] - Track background when checked.\n * @cssprop [--hx-switch-thumb-bg=var(--hx-color-neutral-0)] - Thumb background color.\n * @cssprop [--hx-switch-thumb-shadow=var(--hx-shadow-sm)] - Thumb box shadow.\n * @cssprop [--hx-switch-focus-ring-color=var(--hx-focus-ring-color)] - Focus ring color.\n * @cssprop [--hx-switch-label-color=var(--hx-color-neutral-700)] - Label text color.\n * @cssprop [--hx-switch-error-color=var(--hx-color-error-500)] - Error message color.\n * @cssprop [--hx-switch-help-text-color=var(--hx-color-neutral-500)] - Help text color.\n */\n@customElement('hx-switch')\nexport class HelixSwitch extends FormMixin(HelixElement) {\n static override styles = [helixSwitchStyles];\n\n // ─── Form Association ───\n\n /** @internal */\n static override formAssociated = true;\n\n // ─── Properties ───\n\n /**\n * Whether the switch is toggled on.\n * @attr checked\n */\n @property({ type: Boolean, reflect: true })\n checked = false;\n\n /**\n * Whether the switch is disabled.\n * @attr disabled\n */\n @property({ type: Boolean, reflect: true })\n disabled = false;\n\n /**\n * Whether the switch is required for form submission.\n * @attr required\n */\n @property({ type: Boolean, reflect: true })\n required = false;\n\n /**\n * The name of the switch, used for form submission.\n * @attr name\n */\n @property({ type: String, reflect: true })\n name = '';\n\n /**\n * The value submitted when the switch is checked.\n * @attr value\n */\n @property({ type: String, reflect: true })\n value = 'on';\n\n /**\n * The visible label text for the switch.\n * @attr label\n */\n @property({ type: String })\n label = '';\n\n /**\n * Size variant of the switch.\n * @attr hx-size\n */\n @property({ type: String, reflect: true, attribute: 'hx-size' })\n size: 'sm' | 'md' | 'lg' = 'md';\n\n /**\n * Error message to display. When set, the switch enters an error state.\n * @attr error\n */\n @property({ type: String })\n error = '';\n\n /**\n * Help text displayed below the switch for guidance.\n * @attr help-text\n */\n @property({ type: String, attribute: 'help-text' })\n helpText = '';\n\n /**\n * Validation message shown when the field is required but empty.\n * @attr required-message\n */\n @property({ attribute: 'required-message' })\n requiredMessage = 'This field is required.';\n\n // ─── Lifecycle ───\n\n override updated(changedProperties: PropertyValues<this>): void {\n super.updated(changedProperties);\n if (changedProperties.has('checked') || changedProperties.has('value')) {\n this._internals.setFormValue(this.checked ? this.value : null);\n }\n }\n\n // ─── Form Integration ───\n\n /** Recalculates and sets the validity state based on required and checked. */\n /** @internal */\n override _updateValidity(): void {\n if (this.required && !this.checked) {\n this._internals.setValidity(\n { valueMissing: true },\n this.error || this.requiredMessage,\n this._trackEl ?? undefined,\n );\n } else {\n this._internals.setValidity({});\n }\n }\n\n protected override _onFormReset(): void {\n this.checked = false;\n this._internals.setFormValue(null);\n this._resetInteractionState();\n }\n\n protected override _onFormStateRestore(\n state: File | string | FormData | null,\n _mode: 'restore' | 'autocomplete',\n ): void {\n if (typeof state === 'string') {\n this.checked = state === this.value;\n }\n }\n\n protected override _onFormDisabled(disabled: boolean): void {\n this.disabled = disabled;\n }\n\n /** Reference to the native button element acting as the switch track. * @internal\n */\n @query('.switch__track')\n private _trackEl: HTMLButtonElement | null | undefined;\n\n /** Whether the error slot has assigned content. */\n /** @internal */\n @state() private _hasErrorSlot = false;\n\n /** Whether the default slot has assigned content (slotted label). */\n /** @internal */\n @state() private _hasDefaultSlot = false;\n\n // ─── Slot Handlers ───\n\n /** Updates _hasErrorSlot when error slot content changes. */\n /** @internal */\n private _handleErrorSlotChange(e: Event): void {\n const slot = e.target as HTMLSlotElement;\n this._hasErrorSlot = slot.assignedNodes({ flatten: true }).length > 0;\n }\n\n /** Updates _hasDefaultSlot when default slot content changes. */\n /** @internal */\n private _handleDefaultSlotChange(e: Event): void {\n const slot = e.target as HTMLSlotElement;\n this._hasDefaultSlot = slot.assignedNodes({ flatten: true }).length > 0;\n }\n\n // ─── Event Handling ───\n\n /** Toggles checked state and dispatches hx-change event. */\n /** @internal */\n private _toggle(): void {\n if (this.disabled) return;\n this.checked = !this.checked;\n this._handleInteractionInput();\n\n this.dispatchEvent(\n new CustomEvent<{ checked: boolean; value: string }>('hx-change', {\n bubbles: true,\n composed: true,\n detail: { checked: this.checked, value: this.value },\n }),\n );\n }\n\n /** Handles click events on the track. */\n /** @internal */\n private _handleClick(): void {\n this._toggle();\n }\n\n /** Handles keydown events — Space toggles the switch per ARIA APG. */\n /** @internal */\n private _handleKeyDown(e: KeyboardEvent): void {\n if (e.key === ' ') {\n e.preventDefault();\n this._toggle();\n }\n }\n\n // ─── Public Methods ───\n\n /** Moves focus to the switch track element. */\n override focus(options?: FocusOptions): void {\n this._trackEl?.focus(options);\n }\n\n // ─── Render ───\n\n /** Unique ID for this switch instance, used for ARIA associations. */\n /** @internal */\n private _switchId = _nextSwitchId();\n /** ID for the label element, referenced by aria-labelledby. */\n /** @internal */\n private _labelId = `${this._switchId}-label`;\n /** ID for the help text element, referenced by aria-describedby. */\n /** @internal */\n private _helpTextId = `${this._switchId}-help`;\n /** ID for the error element, referenced by aria-describedby. */\n /** @internal */\n private _errorId = `${this._switchId}-error`;\n\n override render() {\n const hasError = !!this.error;\n const hasLabel = !!this.label || this._hasDefaultSlot;\n\n const containerClasses = {\n switch: true,\n 'switch--checked': this.checked,\n 'switch--disabled': this.disabled,\n 'switch--required': this.required,\n 'switch--error': hasError,\n [`switch--${this.size}`]: true,\n };\n\n const describedBy =\n [\n hasError || this._hasErrorSlot ? this._errorId : null,\n this.helpText && !hasError ? this._helpTextId : null,\n ]\n .filter(Boolean)\n .join(' ') || undefined;\n\n return html`\n <div part=\"switch\" class=${classMap(containerClasses)}>\n <div class=\"switch__control-row\">\n <button\n part=\"track\"\n class=\"switch__track\"\n id=${this._switchId}\n type=\"button\"\n role=\"switch\"\n aria-checked=${this.checked ? 'true' : 'false'}\n aria-labelledby=${ifDefined(hasLabel ? this._labelId : undefined)}\n aria-describedby=${ifDefined(describedBy)}\n aria-invalid=${hasError ? 'true' : nothing}\n aria-required=${this.required ? 'true' : nothing}\n ?disabled=${this.disabled}\n @click=${this._handleClick}\n @keydown=${this._handleKeyDown}\n >\n <span part=\"thumb\" class=\"switch__thumb\"></span>\n </button>\n\n <label part=\"label\" class=\"switch__label\" id=${this._labelId} for=${this._switchId}>\n <slot @slotchange=${this._handleDefaultSlotChange}>${this.label}</slot>${this.required\n ? html`<span class=\"switch__required-marker\" aria-hidden=\"true\">*</span>`\n : nothing}\n </label>\n </div>\n\n <slot name=\"error\" @slotchange=${this._handleErrorSlotChange}>\n ${hasError\n ? html`<div part=\"error\" class=\"switch__error\" id=${this._errorId} role=\"alert\">\n ${this.error}\n </div>`\n : nothing}\n </slot>\n\n ${this.helpText && !hasError\n ? html`\n <div part=\"help-text\" class=\"switch__help-text\" id=${this._helpTextId}>\n <slot name=\"help-text\">${this.helpText}</slot>\n </div>\n `\n : nothing}\n </div>\n `;\n }\n}\n\n/**\n * Per-component event map for type-safe addEventListener on hx-switch.\n * The `hx-change` detail always includes both `checked` and `value` for this component.\n */\nexport interface HxSwitchEventMap {\n 'hx-change': CustomEvent<{ checked: boolean; value: string }>;\n}\n\ndeclare global {\n interface HTMLElementTagNameMap {\n 'hx-switch': HelixSwitch;\n }\n}\n\nexport type HxSwitch = HelixSwitch;\n"],"names":["helixSwitchStyles","css","_nextSwitchId","createIdCounter","HelixSwitch","FormMixin","HelixElement","changedProperties","state","_mode","disabled","e","slot","options","_a","hasError","hasLabel","containerClasses","describedBy","html","classMap","ifDefined","nothing","__decorateClass","property","query","customElement"],"mappings":";;;;;;;AAEO,MAAMA,IAAoBC;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;;;;;;ACOjC,MAAMC,IAA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"}
|