@helixui/library 2.1.2-next.52 → 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 +1110 -1249
- 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 -4
- package/dist/components/hx-accordion/hx-accordion-item.d.ts.map +1 -1
- package/dist/components/hx-accordion/hx-accordion-item.styles.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/hx-accordion.styles.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/hx-alert.styles.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/hx-badge.styles.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/hx-banner.styles.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-item.styles.d.ts.map +1 -1
- package/dist/components/hx-breadcrumb/hx-breadcrumb.d.ts +9 -19
- 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 +31 -9
- package/dist/components/hx-button/hx-button.d.ts.map +1 -1
- package/dist/components/hx-button/hx-button.styles.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 +4 -6
- 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 +19 -2
- package/dist/components/hx-card/hx-card.d.ts.map +1 -1
- package/dist/components/hx-card/hx-card.styles.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/hx-carousel.styles.d.ts.map +1 -1
- package/dist/components/hx-carousel/index.js +1 -1
- package/dist/components/hx-checkbox/hx-checkbox.d.ts +52 -5
- package/dist/components/hx-checkbox/hx-checkbox.d.ts.map +1 -1
- package/dist/components/hx-checkbox/hx-checkbox.styles.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 +14 -20
- package/dist/components/hx-checkbox-group/hx-checkbox-group.d.ts.map +1 -1
- package/dist/components/hx-checkbox-group/hx-checkbox-group.styles.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/hx-clinical-status.styles.d.ts.map +1 -1
- package/dist/components/hx-clinical-status/index.js +1 -1
- package/dist/components/hx-code-snippet/hx-code-snippet.styles.d.ts.map +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 +45 -22
- 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/hx-copy-button.styles.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 +46 -2
- package/dist/components/hx-data-table/hx-data-table.d.ts.map +1 -1
- package/dist/components/hx-data-table/hx-data-table.styles.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 +35 -35
- 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 +44 -5
- package/dist/components/hx-dialog/hx-dialog.d.ts.map +1 -1
- package/dist/components/hx-dialog/hx-dialog.styles.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/hx-divider.styles.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 +39 -2
- package/dist/components/hx-drawer/hx-drawer.d.ts.map +1 -1
- package/dist/components/hx-drawer/hx-drawer.styles.d.ts.map +1 -1
- package/dist/components/hx-drawer/index.js +1 -1
- package/dist/components/hx-dropdown/hx-dropdown.d.ts +11 -7
- package/dist/components/hx-dropdown/hx-dropdown.d.ts.map +1 -1
- package/dist/components/hx-dropdown/hx-dropdown.styles.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/hx-field.styles.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/hx-field-label.styles.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 +39 -21
- 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/hx-help-text.styles.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/hx-icon.styles.d.ts.map +1 -1
- package/dist/components/hx-icon/index.js +1 -1
- package/dist/components/hx-icon-button/hx-icon-button.d.ts +10 -14
- package/dist/components/hx-icon-button/hx-icon-button.d.ts.map +1 -1
- package/dist/components/hx-icon-button/hx-icon-button.styles.d.ts.map +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/hx-image.styles.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/hx-link.styles.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-divider.styles.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 -4
- package/dist/components/hx-meter/hx-meter.d.ts.map +1 -1
- package/dist/components/hx-meter/hx-meter.styles.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 +14 -20
- package/dist/components/hx-number-input/hx-number-input.d.ts.map +1 -1
- package/dist/components/hx-number-input/hx-number-input.styles.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/hx-overflow-menu.styles.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/hx-patient-banner.styles.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 +4 -2
- package/dist/components/hx-popover/hx-popover.d.ts.map +1 -1
- package/dist/components/hx-popover/hx-popover.styles.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/hx-popup.styles.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 -4
- 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 +14 -39
- package/dist/components/hx-radio-group/hx-radio-group.d.ts.map +1 -1
- package/dist/components/hx-radio-group/hx-radio-group.styles.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/hx-radio.styles.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 +9 -20
- 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 -17
- package/dist/components/hx-select/hx-select.d.ts.map +1 -1
- package/dist/components/hx-select/hx-select.styles.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 -5
- 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/hx-skeleton.styles.d.ts.map +1 -1
- package/dist/components/hx-skeleton/index.js +1 -1
- package/dist/components/hx-slider/hx-slider.d.ts +18 -22
- 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/hx-spinner.styles.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/hx-split-button.styles.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/hx-split-panel.styles.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 +4 -3
- 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/hx-status-indicator.styles.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/hx-structured-list.styles.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 +25 -29
- package/dist/components/hx-switch/hx-switch.d.ts.map +1 -1
- package/dist/components/hx-switch/hx-switch.styles.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-table.styles.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-panel.styles.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 +14 -2
- package/dist/components/hx-tabs/hx-tabs.d.ts.map +1 -1
- package/dist/components/hx-tabs/hx-tabs.styles.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/hx-tag.styles.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 +34 -7
- package/dist/components/hx-text-input/hx-text-input.d.ts.map +1 -1
- package/dist/components/hx-text-input/hx-text-input.styles.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 +41 -25
- 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 +13 -31
- 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 +10 -13
- package/dist/components/hx-toggle-button/hx-toggle-button.d.ts.map +1 -1
- package/dist/components/hx-toggle-button/hx-toggle-button.styles.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/hx-tooltip.styles.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/hx-top-nav.styles.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 +3600 -790
- package/dist/css/helix-core.css +244 -50
- package/dist/css/helix-data.css +86 -7
- package/dist/css/helix-feedback.css +159 -61
- package/dist/css/helix-forms.css +2054 -105
- package/dist/css/helix-layout.css +53 -1
- package/dist/css/helix-media.css +40 -16
- package/dist/css/helix-navigation.css +209 -48
- package/dist/css/helix-overlay.css +99 -12
- package/dist/css/helix-tokens.css +30 -11
- package/dist/css/helix-utility.css +118 -9
- package/dist/css/hx-accordion.css +9 -1
- package/dist/css/hx-action-bar.css +17 -3
- package/dist/css/hx-alert.css +39 -18
- package/dist/css/hx-avatar.css +1 -1
- package/dist/css/hx-badge.css +31 -15
- package/dist/css/hx-banner.css +35 -18
- package/dist/css/hx-breadcrumb.css +27 -0
- package/dist/css/hx-button-group.css +13 -0
- package/dist/css/hx-button.css +6 -3
- package/dist/css/hx-card.css +18 -6
- package/dist/css/hx-carousel.css +40 -16
- package/dist/css/hx-checkbox-group.css +36 -4
- package/dist/css/hx-checkbox.css +74 -8
- package/dist/css/hx-clinical-status.css +46 -23
- package/dist/css/hx-code-snippet.css +25 -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 +31 -3
- package/dist/css/hx-counter.css +11 -1
- package/dist/css/hx-data-table.css +24 -1
- package/dist/css/hx-date-picker.css +437 -1
- package/dist/css/hx-dialog.css +23 -2
- package/dist/css/hx-divider.css +8 -0
- package/dist/css/hx-drawer.css +22 -1
- package/dist/css/hx-dropdown.css +10 -1
- package/dist/css/hx-field-label.css +18 -2
- package/dist/css/hx-field.css +39 -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 +25 -5
- package/dist/css/hx-icon-button.css +27 -0
- package/dist/css/hx-icon.css +8 -0
- package/dist/css/hx-image.css +11 -3
- package/dist/css/hx-link.css +23 -5
- package/dist/css/hx-list.css +10 -0
- package/dist/css/hx-menu.css +10 -2
- package/dist/css/hx-meter.css +22 -9
- package/dist/css/hx-nav.css +27 -12
- package/dist/css/hx-number-input.css +78 -0
- package/dist/css/hx-overflow-menu.css +41 -10
- package/dist/css/hx-pagination.css +13 -13
- package/dist/css/hx-patient-banner.css +30 -10
- package/dist/css/hx-phi-field.css +5 -2
- package/dist/css/hx-popover.css +16 -4
- package/dist/css/hx-popup.css +12 -0
- 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 +35 -3
- package/dist/css/hx-rating.css +45 -4
- package/dist/css/hx-select.css +89 -7
- package/dist/css/hx-side-nav.css +26 -0
- package/dist/css/hx-skeleton.css +12 -0
- package/dist/css/hx-slider.css +16 -11
- package/dist/css/hx-spinner.css +12 -0
- package/dist/css/hx-split-button.css +37 -2
- package/dist/css/hx-split-panel.css +14 -0
- package/dist/css/hx-stack.css +10 -0
- package/dist/css/hx-stat.css +5 -5
- package/dist/css/hx-status-indicator.css +15 -2
- package/dist/css/hx-steps.css +12 -0
- package/dist/css/hx-structured-list.css +18 -2
- package/dist/css/hx-style-scope.css +11 -0
- package/dist/css/hx-switch.css +66 -4
- package/dist/css/hx-table.css +9 -1
- package/dist/css/hx-tabs.css +15 -3
- package/dist/css/hx-tag.css +24 -12
- package/dist/css/hx-text-input.css +71 -9
- package/dist/css/hx-text.css +38 -5
- package/dist/css/hx-textarea.css +71 -15
- package/dist/css/hx-theme.css +11 -0
- package/dist/css/hx-time-picker.css +224 -1
- package/dist/css/hx-toast.css +19 -7
- package/dist/css/hx-toggle-button.css +41 -4
- package/dist/css/hx-tooltip.css +16 -4
- package/dist/css/hx-top-nav.css +29 -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 +42 -9
- 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 +1 -1
- 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-CBP9eQ0M.js → aria-delegation-Doq6RRUy.js} +6 -6
- package/dist/shared/aria-delegation-Doq6RRUy.js.map +1 -0
- package/dist/shared/{helix-element-CZvaIEQP.js → helix-element-BNEYeiys.js} +30 -27
- package/dist/shared/helix-element-BNEYeiys.js.map +1 -0
- package/dist/shared/{hx-accordion-CpfO0YQo.js → hx-accordion-Wt52OOZD.js} +127 -80
- 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-CHOjTBds.js → hx-alert-D7n94HwI.js} +47 -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-RPzd-t5l.js → hx-badge-CVCmMPyW.js} +43 -27
- package/dist/shared/hx-badge-CVCmMPyW.js.map +1 -0
- package/dist/shared/{hx-banner-B-WEDiq7.js → hx-banner-C_He7Tr4.js} +60 -43
- package/dist/shared/hx-banner-C_He7Tr4.js.map +1 -0
- package/dist/shared/{hx-breadcrumb-item-jLAKK038.js → hx-breadcrumb-item-CldCwD1d.js} +123 -83
- package/dist/shared/hx-breadcrumb-item-CldCwD1d.js.map +1 -0
- package/dist/shared/{hx-button-DoN8jjQT.js → hx-button-Ddl-T6T-.js} +117 -92
- package/dist/shared/hx-button-Ddl-T6T-.js.map +1 -0
- package/dist/shared/{hx-button-group-BXlMQTt_.js → hx-button-group-BJOGWoMa.js} +33 -21
- package/dist/shared/hx-button-group-BJOGWoMa.js.map +1 -0
- package/dist/shared/{hx-card-BgXZXDuc.js → hx-card-ycveujjL.js} +64 -38
- package/dist/shared/hx-card-ycveujjL.js.map +1 -0
- package/dist/shared/{hx-carousel-item-Dwt9Pphz.js → hx-carousel-item-D_dCv61-.js} +76 -41
- package/dist/shared/hx-carousel-item-D_dCv61-.js.map +1 -0
- package/dist/shared/{hx-checkbox-C82GjRXe.js → hx-checkbox-DkkoWoye.js} +163 -80
- package/dist/shared/hx-checkbox-DkkoWoye.js.map +1 -0
- package/dist/shared/{hx-checkbox-group-DThZeN5d.js → hx-checkbox-group-C3poJ-Zw.js} +105 -79
- package/dist/shared/hx-checkbox-group-C3poJ-Zw.js.map +1 -0
- package/dist/shared/{hx-clinical-status-BjtT5c0M.js → hx-clinical-status-BS5lcddT.js} +60 -38
- package/dist/shared/hx-clinical-status-BS5lcddT.js.map +1 -0
- package/dist/shared/{hx-code-snippet-DcVENSuC.js → hx-code-snippet-B7wUKzyb.js} +32 -11
- package/dist/shared/hx-code-snippet-B7wUKzyb.js.map +1 -0
- package/dist/shared/{hx-color-picker-C6EIuS9t.js → hx-color-picker-DBaKTVLr.js} +380 -119
- 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-BoM0WsMd.js → hx-copy-button-8deNUdwP.js} +68 -40
- package/dist/shared/hx-copy-button-8deNUdwP.js.map +1 -0
- package/dist/shared/{hx-counter-B5NgKlw4.js → hx-counter-CKfl_g8K.js} +32 -22
- package/dist/shared/hx-counter-CKfl_g8K.js.map +1 -0
- package/dist/shared/{hx-data-table-D5Ne-goy.js → hx-data-table-B6h0RPn0.js} +203 -132
- 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-D4ubstxx.js → hx-dialog-CvIlY0Tc.js} +85 -52
- package/dist/shared/hx-dialog-CvIlY0Tc.js.map +1 -0
- package/dist/shared/{hx-divider-BBtOLHRP.js → hx-divider-DwpOrzMW.js} +23 -15
- package/dist/shared/hx-divider-DwpOrzMW.js.map +1 -0
- package/dist/shared/{hx-drawer--WDLuWtS.js → hx-drawer-Cx2ZJhBe.js} +101 -66
- package/dist/shared/hx-drawer-Cx2ZJhBe.js.map +1 -0
- package/dist/shared/{hx-dropdown-n5-XSmiV.js → hx-dropdown-BjDrPUq5.js} +55 -46
- package/dist/shared/hx-dropdown-BjDrPUq5.js.map +1 -0
- package/dist/shared/{hx-field-CwT9tki1.js → hx-field-Dp3qQMut.js} +61 -25
- package/dist/shared/hx-field-Dp3qQMut.js.map +1 -0
- package/dist/shared/{hx-field-label-CcOK9VU3.js → hx-field-label-BC8QViXv.js} +41 -25
- package/dist/shared/hx-field-label-BC8QViXv.js.map +1 -0
- package/dist/shared/{hx-file-upload-Di_vpQaG.js → hx-file-upload-B6Yl1u0i.js} +110 -102
- 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-Bmb80bP4.js → hx-help-text-D7eytSim.js} +45 -25
- package/dist/shared/hx-help-text-D7eytSim.js.map +1 -0
- package/dist/shared/{hx-icon-BKHs3OLu.js → hx-icon-CcyDPDYY.js} +104 -62
- package/dist/shared/hx-icon-CcyDPDYY.js.map +1 -0
- package/dist/shared/{hx-icon-button-CJuy9xbw.js → hx-icon-button-BHneqPCU.js} +58 -42
- package/dist/shared/hx-icon-button-BHneqPCU.js.map +1 -0
- package/dist/shared/{hx-image-ztiXumZB.js → hx-image-2gt14zZd.js} +34 -26
- package/dist/shared/hx-image-2gt14zZd.js.map +1 -0
- package/dist/shared/{hx-link-CN7AvGOW.js → hx-link-BESrWK8M.js} +51 -33
- 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-DRT8yHRZ.js → hx-menu-divider-Ck-9Os1t.js} +103 -60
- package/dist/shared/hx-menu-divider-Ck-9Os1t.js.map +1 -0
- package/dist/shared/{hx-meter-BcVC9yrt.js → hx-meter-TbROk-dw.js} +57 -43
- package/dist/shared/hx-meter-TbROk-dw.js.map +1 -0
- package/dist/shared/{hx-nav-l0Rp7WPW.js → hx-nav-BcYDmjf7.js} +71 -56
- package/dist/shared/hx-nav-BcYDmjf7.js.map +1 -0
- package/dist/shared/{hx-nav-item-CJN4VDrf.js → hx-nav-item-pqPasRUm.js} +67 -23
- package/dist/shared/hx-nav-item-pqPasRUm.js.map +1 -0
- package/dist/shared/{hx-number-input-0Waw7Z7u.js → hx-number-input-mOIZ3-46.js} +169 -96
- package/dist/shared/hx-number-input-mOIZ3-46.js.map +1 -0
- package/dist/shared/{hx-overflow-menu-DElwFSCd.js → hx-overflow-menu-Dprb9lnT.js} +70 -38
- 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-BKiN7nIE.js → hx-patient-banner-uE6gqLpT.js} +67 -47
- 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-CydNuVkT.js → hx-popover-B2_203ct.js} +44 -30
- package/dist/shared/hx-popover-B2_203ct.js.map +1 -0
- package/dist/shared/{hx-popup-DbzezTOd.js → hx-popup-DZXpsJ1R.js} +89 -64
- package/dist/shared/hx-popup-DZXpsJ1R.js.map +1 -0
- package/dist/shared/{hx-progress-bar-Cm0VihTN.js → hx-progress-bar-KjEkEJLy.js} +21 -20
- 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-f8c5ggHG.js → hx-radio-BBC5qZgE.js} +202 -123
- package/dist/shared/hx-radio-BBC5qZgE.js.map +1 -0
- package/dist/shared/{hx-rating-qRJZXskm.js → hx-rating-C3E3ENJb.js} +92 -69
- package/dist/shared/hx-rating-C3E3ENJb.js.map +1 -0
- package/dist/shared/{hx-select-CgcgsHU5.js → hx-select-CixTo7jp.js} +206 -135
- package/dist/shared/hx-select-CixTo7jp.js.map +1 -0
- package/dist/shared/{hx-skeleton-tiYvKO-t.js → hx-skeleton-LxkI0pxr.js} +39 -27
- package/dist/shared/hx-skeleton-LxkI0pxr.js.map +1 -0
- package/dist/shared/{hx-slider-BvXtvxmN.js → hx-slider-DFHuzF3N.js} +79 -91
- package/dist/shared/hx-slider-DFHuzF3N.js.map +1 -0
- package/dist/shared/{hx-spinner-D6nzuGmj.js → hx-spinner-BKjuCdZB.js} +32 -20
- package/dist/shared/hx-spinner-BKjuCdZB.js.map +1 -0
- package/dist/shared/{hx-split-button-CPndTJlC.js → hx-split-button-CGcJMmCG.js} +59 -22
- package/dist/shared/hx-split-button-CGcJMmCG.js.map +1 -0
- package/dist/shared/{hx-split-panel-Dx72NaET.js → hx-split-panel-C-1R10Mc.js} +71 -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-ClWpK6zz.js → hx-status-indicator-X2QEWNFt.js} +36 -23
- package/dist/shared/hx-status-indicator-X2QEWNFt.js.map +1 -0
- package/dist/shared/{hx-step-C2Jk4mHa.js → hx-step-CRNQlmSo.js} +83 -32
- package/dist/shared/hx-step-CRNQlmSo.js.map +1 -0
- package/dist/shared/{hx-structured-list-DKlrv7kS.js → hx-structured-list-CqNbaEXg.js} +32 -16
- 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-BzMN37PV.js → hx-switch-DqOD9JR7.js} +122 -81
- package/dist/shared/hx-switch-DqOD9JR7.js.map +1 -0
- package/dist/shared/{hx-tab-panel-J58zOSjq.js → hx-tab-panel-BIzKfW5i.js} +156 -102
- package/dist/shared/hx-tab-panel-BIzKfW5i.js.map +1 -0
- package/dist/shared/{hx-tag-F0ZcYj9b.js → hx-tag-CgnrNnte.js} +30 -18
- package/dist/shared/hx-tag-CgnrNnte.js.map +1 -0
- package/dist/shared/{hx-td-CNCvzBwY.js → hx-td-Bra35cH4.js} +55 -47
- 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-Zuodg9s_.js → hx-text-input--q0GH78x.js} +123 -62
- package/dist/shared/hx-text-input--q0GH78x.js.map +1 -0
- package/dist/shared/{hx-textarea-BfSJJtA1.js → hx-textarea-CK621vSL.js} +124 -89
- 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-CZvmihHD.js → hx-time-picker-tPUfgElQ.js} +300 -82
- package/dist/shared/hx-time-picker-tPUfgElQ.js.map +1 -0
- package/dist/shared/{hx-toggle-button-BZUQUULm.js → hx-toggle-button-L-uBJr-a.js} +72 -42
- package/dist/shared/hx-toggle-button-L-uBJr-a.js.map +1 -0
- package/dist/shared/{hx-tooltip-Ny4i1Idj.js → hx-tooltip-B_zfKvwc.js} +44 -31
- package/dist/shared/hx-tooltip-B_zfKvwc.js.map +1 -0
- package/dist/shared/{hx-top-nav-CC4FW2Hp.js → hx-top-nav-CATbRvIv.js} +53 -30
- package/dist/shared/hx-top-nav-CATbRvIv.js.map +1 -0
- package/dist/shared/{hx-tree-item-CPQ9dJiK.js → hx-tree-item-A45WCiBu.js} +37 -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-CEMNOt1T.js → toast-factory-BPPnG3mM.js} +58 -46
- 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/aria-delegation-CBP9eQ0M.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-CZvaIEQP.js.map +0 -1
- package/dist/shared/hx-accordion-CpfO0YQo.js.map +0 -1
- package/dist/shared/hx-action-bar-CNLYufVd.js.map +0 -1
- package/dist/shared/hx-alert-CHOjTBds.js.map +0 -1
- package/dist/shared/hx-avatar-an-WsuLl.js.map +0 -1
- package/dist/shared/hx-badge-RPzd-t5l.js.map +0 -1
- package/dist/shared/hx-banner-B-WEDiq7.js.map +0 -1
- package/dist/shared/hx-breadcrumb-item-jLAKK038.js.map +0 -1
- package/dist/shared/hx-button-DoN8jjQT.js.map +0 -1
- package/dist/shared/hx-button-group-BXlMQTt_.js.map +0 -1
- package/dist/shared/hx-card-BgXZXDuc.js.map +0 -1
- package/dist/shared/hx-carousel-item-Dwt9Pphz.js.map +0 -1
- package/dist/shared/hx-checkbox-C82GjRXe.js.map +0 -1
- package/dist/shared/hx-checkbox-group-DThZeN5d.js.map +0 -1
- package/dist/shared/hx-clinical-status-BjtT5c0M.js.map +0 -1
- package/dist/shared/hx-code-snippet-DcVENSuC.js.map +0 -1
- package/dist/shared/hx-color-picker-C6EIuS9t.js.map +0 -1
- package/dist/shared/hx-combobox-BJ4lQocO.js +0 -544
- package/dist/shared/hx-combobox-BJ4lQocO.js.map +0 -1
- package/dist/shared/hx-container-BwWbMPTH.js.map +0 -1
- package/dist/shared/hx-copy-button-BoM0WsMd.js.map +0 -1
- package/dist/shared/hx-counter-B5NgKlw4.js.map +0 -1
- package/dist/shared/hx-data-table-D5Ne-goy.js.map +0 -1
- package/dist/shared/hx-date-picker-Cd3I3WkX.js +0 -627
- package/dist/shared/hx-date-picker-Cd3I3WkX.js.map +0 -1
- package/dist/shared/hx-dialog-D4ubstxx.js.map +0 -1
- package/dist/shared/hx-divider-BBtOLHRP.js.map +0 -1
- package/dist/shared/hx-drawer--WDLuWtS.js.map +0 -1
- package/dist/shared/hx-dropdown-n5-XSmiV.js.map +0 -1
- package/dist/shared/hx-field-CwT9tki1.js.map +0 -1
- package/dist/shared/hx-field-label-CcOK9VU3.js.map +0 -1
- package/dist/shared/hx-file-upload-Di_vpQaG.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-Bmb80bP4.js.map +0 -1
- package/dist/shared/hx-icon-BKHs3OLu.js.map +0 -1
- package/dist/shared/hx-icon-button-CJuy9xbw.js.map +0 -1
- package/dist/shared/hx-image-ztiXumZB.js.map +0 -1
- package/dist/shared/hx-link-CN7AvGOW.js.map +0 -1
- package/dist/shared/hx-list-Dnei26t4.js.map +0 -1
- package/dist/shared/hx-menu-divider-DRT8yHRZ.js.map +0 -1
- package/dist/shared/hx-meter-BcVC9yrt.js.map +0 -1
- package/dist/shared/hx-nav-item-CJN4VDrf.js.map +0 -1
- package/dist/shared/hx-nav-l0Rp7WPW.js.map +0 -1
- package/dist/shared/hx-number-input-0Waw7Z7u.js.map +0 -1
- package/dist/shared/hx-overflow-menu-DElwFSCd.js.map +0 -1
- package/dist/shared/hx-pagination-BNtx-LG6.js.map +0 -1
- package/dist/shared/hx-patient-banner-BKiN7nIE.js.map +0 -1
- package/dist/shared/hx-phi-field-DD1qcBSO.js.map +0 -1
- package/dist/shared/hx-popover-CydNuVkT.js.map +0 -1
- package/dist/shared/hx-popup-DbzezTOd.js.map +0 -1
- package/dist/shared/hx-progress-bar-Cm0VihTN.js.map +0 -1
- package/dist/shared/hx-progress-ring-Cs0WgWDJ.js.map +0 -1
- package/dist/shared/hx-radio-f8c5ggHG.js.map +0 -1
- package/dist/shared/hx-rating-qRJZXskm.js.map +0 -1
- package/dist/shared/hx-select-CgcgsHU5.js.map +0 -1
- package/dist/shared/hx-skeleton-tiYvKO-t.js.map +0 -1
- package/dist/shared/hx-slider-BvXtvxmN.js.map +0 -1
- package/dist/shared/hx-spinner-D6nzuGmj.js.map +0 -1
- package/dist/shared/hx-split-button-CPndTJlC.js.map +0 -1
- package/dist/shared/hx-split-panel-Dx72NaET.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-ClWpK6zz.js.map +0 -1
- package/dist/shared/hx-step-C2Jk4mHa.js.map +0 -1
- package/dist/shared/hx-structured-list-DKlrv7kS.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-BzMN37PV.js.map +0 -1
- package/dist/shared/hx-tab-panel-J58zOSjq.js.map +0 -1
- package/dist/shared/hx-tag-F0ZcYj9b.js.map +0 -1
- package/dist/shared/hx-td-CNCvzBwY.js.map +0 -1
- package/dist/shared/hx-text-DcWBqZwx.js.map +0 -1
- package/dist/shared/hx-text-input-Zuodg9s_.js.map +0 -1
- package/dist/shared/hx-textarea-BfSJJtA1.js.map +0 -1
- package/dist/shared/hx-theme-pc1V7dyL.js.map +0 -1
- package/dist/shared/hx-time-picker-CZvmihHD.js.map +0 -1
- package/dist/shared/hx-toggle-button-BZUQUULm.js.map +0 -1
- package/dist/shared/hx-tooltip-Ny4i1Idj.js.map +0 -1
- package/dist/shared/hx-top-nav-CC4FW2Hp.js.map +0 -1
- package/dist/shared/hx-tree-item-CPQ9dJiK.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-CEMNOt1T.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 @@
|
|
|
1
|
+
{"version":3,"file":"hx-divider-DwpOrzMW.js","sources":["../../src/components/hx-divider/hx-divider.styles.ts","../../src/components/hx-divider/hx-divider.ts"],"sourcesContent":["import { css } from 'lit';\n\nexport const helixDividerStyles = css`\n :host {\n display: block;\n --_divider-color: var(--hx-divider-color, var(--hx-color-neutral-200, #e2e8f0));\n --_divider-width: var(--hx-divider-width, var(--hx-border-width-thin, 1px));\n --_divider-label-color: var(--hx-divider-label-color, var(--hx-color-neutral-500, #64748b));\n --_divider-label-size: var(--hx-divider-label-font-size, var(--hx-font-size-sm, 0.875rem));\n --_divider-label-gap: var(--hx-divider-label-gap, var(--hx-space-3, 0.75rem));\n }\n\n /* ─── Spacing Variants ─── */\n\n :host([spacing='none']) {\n --_spacing: 0;\n }\n\n :host([spacing='sm']) {\n --_spacing: var(--hx-space-2, 0.5rem);\n }\n\n :host,\n :host([spacing='md']) {\n --_spacing: var(--hx-space-4, 1rem);\n }\n\n :host([spacing='lg']) {\n --_spacing: var(--hx-space-6, 1.5rem);\n }\n\n /* ─── Horizontal (default) ─── */\n\n :host([orientation='horizontal']) {\n margin-block: var(--_spacing);\n }\n\n /* ─── Vertical ─── */\n\n :host([orientation='vertical']) {\n display: inline-flex;\n align-self: stretch;\n margin-inline: var(--_spacing);\n }\n\n /* ─── Base (hr) — horizontal ─── */\n\n .divider {\n display: flex;\n align-items: center;\n gap: var(--_divider-label-gap);\n border: none;\n margin: 0;\n padding: 0;\n }\n\n /* ─── Base — vertical ─── */\n\n :host([orientation='vertical']) .divider {\n flex-direction: column;\n height: 100%;\n }\n\n /* ─── Lines flanking label ─── */\n\n .divider__line {\n flex: 1;\n background-color: var(--_divider-color);\n }\n\n :host(:not([orientation='vertical'])) .divider__line {\n height: var(--_divider-width);\n }\n\n :host([orientation='vertical']) .divider__line {\n width: var(--_divider-width);\n height: auto;\n min-height: 0;\n }\n\n /* ─── Label ─── */\n\n .divider__label {\n flex-shrink: 0;\n color: var(--_divider-label-color);\n font-size: var(--_divider-label-size);\n line-height: var(--hx-line-height-tight, 1.25);\n white-space: nowrap;\n }\n\n /* ─── Forced Colors (Windows High Contrast) ─── */\n\n @media (forced-colors: active) {\n .divider__line {\n background-color: CanvasText;\n }\n }\n`;\n","import { html, nothing, type PropertyValues } from 'lit';\nimport '../../utilities/document-token-adoption.js';\nimport { devWarn } from '../../utils/dev-warn.js';\nimport { customElement, property, state } from 'lit/decorators.js';\nimport { HelixElement } from '../../base/index.js';\nimport { helixDividerStyles } from './hx-divider.styles.js';\n\n/**\n * A visual separator element for dividing content sections. Supports\n * horizontal and vertical orientations, configurable spacing, and an optional\n * centered label rendered between two lines.\n *\n * @summary Horizontal or vertical separator line with optional label.\n *\n * @tag hx-divider\n *\n * @slot - Optional label text rendered centered between two lines.\n *\n * @csspart base - The root divider element.\n * @csspart label - The optional centered label wrapper.\n *\n * @cssprop [--hx-divider-color=var(--hx-color-neutral-200)] - Line color.\n * @cssprop [--hx-divider-width=var(--hx-border-width-thin)] - Line thickness.\n * @cssprop [--hx-divider-label-color=var(--hx-color-neutral-500)] - Label text color.\n * @cssprop [--hx-divider-label-font-size=var(--hx-font-size-sm)] - Label font size.\n * @cssprop [--hx-divider-label-gap=var(--hx-space-3)] - Gap between lines and label.\n */\n@customElement('hx-divider')\nexport class HelixDivider extends HelixElement {\n static override styles = [helixDividerStyles];\n\n /**\n * Orientation of the divider.\n * @attr orientation\n */\n @property({ type: String, reflect: true })\n orientation: 'horizontal' | 'vertical' = 'horizontal';\n\n /**\n * Spacing applied to the block axis (horizontal) or inline axis (vertical).\n * @attr spacing\n */\n @property({ type: String, reflect: true })\n spacing: 'none' | 'sm' | 'md' | 'lg' = 'md';\n\n /**\n * When true, renders the divider as decorative only (role=\"presentation\").\n * Screen readers will not announce decorative dividers.\n * @attr decorative\n */\n @property({ type: Boolean, reflect: true })\n decorative = false;\n\n /**\n * Optional text label rendered centered between the divider lines.\n * Also sets aria-label on the separator for assistive technologies.\n * @attr label\n */\n @property({ type: String, reflect: true })\n label?: string;\n\n /** @internal */\n @state()\n private _hasLabel = false;\n\n /** @internal */\n private _checkSlot(slot: HTMLSlotElement): void {\n const nodes = slot.assignedNodes({ flatten: true });\n this._hasLabel = nodes.some((node) =>\n node.nodeType === Node.TEXT_NODE\n ? (node.textContent ?? '').trim().length > 0\n : node.nodeType === Node.ELEMENT_NODE,\n );\n }\n\n /** @internal */\n private _slotChangeHandler = (e: Event): void => {\n this._checkSlot(e.target as HTMLSlotElement);\n };\n\n override firstUpdated(_changedProperties: PropertyValues<this>): void {\n super.firstUpdated(_changedProperties);\n const slot = this.shadowRoot?.querySelector<HTMLSlotElement>('slot:not([name])');\n if (slot) this._checkSlot(slot);\n if (!this.decorative && !this.label && !this._hasLabel) {\n devWarn(\n 'hx-divider',\n 'Non-decorative separator has no accessible name. Provide a `label` attribute or slot content, or set `decorative` to suppress this warning (WCAG 4.1.2).',\n );\n }\n }\n\n override render() {\n const isDecorative = this.decorative;\n const showLabel = this._hasLabel || !!this.label;\n\n return html`\n <div\n part=\"base\"\n class=\"divider${showLabel ? ' divider--labeled' : ''}\"\n role=\"${isDecorative ? 'presentation' : 'separator'}\"\n aria-orientation=\"${isDecorative ? nothing : this.orientation}\"\n aria-label=\"${!isDecorative && this.label ? this.label : nothing}\"\n >\n <span class=\"divider__line\"></span>\n ${showLabel\n ? html`<span part=\"label\" class=\"divider__label\">\n ${this.label ? html`${this.label}` : nothing}\n <slot @slotchange=${this._slotChangeHandler}></slot>\n </span>`\n : html`<slot @slotchange=${this._slotChangeHandler}></slot>`}\n <span class=\"divider__line\"></span>\n </div>\n `;\n }\n}\n\ndeclare global {\n interface HTMLElementTagNameMap {\n 'hx-divider': HelixDivider;\n }\n}\n\n/** Canonical type alias for the hx-divider component. */\nexport type HxDivider = HelixDivider;\n"],"names":["helixDividerStyles","css","HelixDivider","HelixElement","slot","nodes","node","_changedProperties","_a","isDecorative","showLabel","html","nothing","__decorateClass","property","state","customElement"],"mappings":";;;AAEO,MAAMA,IAAqBC;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;;;;;;AC0B3B,IAAMC,IAAN,cAA2BC,EAAa;AAAA,EAAxC,cAAA;AAAA,UAAA,GAAA,SAAA,GAQL,KAAA,cAAyC,cAOzC,KAAA,UAAuC,MAQvC,KAAA,aAAa,IAYb,KAAQ,YAAY,IAapB,KAAQ,qBAAqB,CAAC,MAAmB;AAC/C,WAAK,WAAW,EAAE,MAAyB;AAAA,IAC7C;AAAA,EAAA;AAAA;AAAA,EAZQ,WAAWC,GAA6B;AAC9C,UAAMC,IAAQD,EAAK,cAAc,EAAE,SAAS,IAAM;AAClD,SAAK,YAAYC,EAAM;AAAA,MAAK,CAACC,MAC3BA,EAAK,aAAa,KAAK,aAClBA,EAAK,eAAe,IAAI,OAAO,SAAS,IACzCA,EAAK,aAAa,KAAK;AAAA,IAAA;AAAA,EAE/B;AAAA,EAOS,aAAaC,GAAgD;;AACpE,UAAM,aAAaA,CAAkB;AACrC,UAAMH,KAAOI,IAAA,KAAK,eAAL,gBAAAA,EAAiB,cAA+B;AAC7D,IAAIJ,KAAM,KAAK,WAAWA,CAAI,GAC1B,CAAC,KAAK,cAAc,CAAC,KAAK,SAAU,KAAK;AAAA,EAM/C;AAAA,EAES,SAAS;AAChB,UAAMK,IAAe,KAAK,YACpBC,IAAY,KAAK,aAAa,CAAC,CAAC,KAAK;AAE3C,WAAOC;AAAA;AAAA;AAAA,wBAGaD,IAAY,sBAAsB,EAAE;AAAA,gBAC5CD,IAAe,iBAAiB,WAAW;AAAA,4BAC/BA,IAAeG,IAAU,KAAK,WAAW;AAAA,sBAC/C,CAACH,KAAgB,KAAK,QAAQ,KAAK,QAAQG,CAAO;AAAA;AAAA;AAAA,UAG9DF,IACEC;AAAA,gBACI,KAAK,QAAQA,IAAO,KAAK,KAAK,KAAKC,CAAO;AAAA,kCACxB,KAAK,kBAAkB;AAAA,uBAE7CD,sBAAyB,KAAK,kBAAkB,UAAU;AAAA;AAAA;AAAA;AAAA,EAIpE;AACF;AAvFaT,EACK,SAAS,CAACF,CAAkB;AAO5Ca,EAAA;AAAA,EADCC,EAAS,EAAE,MAAM,QAAQ,SAAS,IAAM;AAAA,GAP9BZ,EAQX,WAAA,eAAA,CAAA;AAOAW,EAAA;AAAA,EADCC,EAAS,EAAE,MAAM,QAAQ,SAAS,IAAM;AAAA,GAd9BZ,EAeX,WAAA,WAAA,CAAA;AAQAW,EAAA;AAAA,EADCC,EAAS,EAAE,MAAM,SAAS,SAAS,IAAM;AAAA,GAtB/BZ,EAuBX,WAAA,cAAA,CAAA;AAQAW,EAAA;AAAA,EADCC,EAAS,EAAE,MAAM,QAAQ,SAAS,IAAM;AAAA,GA9B9BZ,EA+BX,WAAA,SAAA,CAAA;AAIQW,EAAA;AAAA,EADPE,EAAA;AAAM,GAlCIb,EAmCH,WAAA,aAAA,CAAA;AAnCGA,IAANW,EAAA;AAAA,EADNG,EAAc,YAAY;AAAA,GACdd,CAAA;"}
|
|
@@ -1,10 +1,11 @@
|
|
|
1
|
-
import { css as b,
|
|
2
|
-
import "
|
|
3
|
-
import {
|
|
4
|
-
import { classMap as g } from "lit/directives/class-map.js";
|
|
1
|
+
import { css as b, html as h, nothing as v } from "lit";
|
|
2
|
+
import { query as m, state as c, property as d, customElement as w } from "lit/decorators.js";
|
|
3
|
+
import { classMap as x } from "lit/directives/class-map.js";
|
|
5
4
|
import { ifDefined as p } from "lit/directives/if-defined.js";
|
|
6
|
-
import { l as
|
|
7
|
-
|
|
5
|
+
import { l as y, u as _ } from "./body-scroll-lock-VBa5TFP-.js";
|
|
6
|
+
import { H as g } from "./helix-element-BNEYeiys.js";
|
|
7
|
+
import { c as E } from "./id-counter-DuX8vsui.js";
|
|
8
|
+
const S = b`
|
|
8
9
|
/* P2-03: Explicit [hidden] rule to survive CSS resets that may override the UA stylesheet. */
|
|
9
10
|
[hidden] {
|
|
10
11
|
display: none !important;
|
|
@@ -172,7 +173,7 @@ const E = b`
|
|
|
172
173
|
.drawer-title {
|
|
173
174
|
margin: 0;
|
|
174
175
|
flex: 1 1 auto;
|
|
175
|
-
font-family: var(--hx-font-family-sans);
|
|
176
|
+
font-family: var(--hx-drawer-font-family, var(--hx-font-family-sans));
|
|
176
177
|
font-size: var(--hx-font-size-lg);
|
|
177
178
|
font-weight: var(--hx-font-weight-semibold);
|
|
178
179
|
line-height: var(--hx-line-height-tight);
|
|
@@ -266,14 +267,34 @@ const E = b`
|
|
|
266
267
|
var(--hx-drawer-footer-border-color, var(--hx-color-neutral-200));
|
|
267
268
|
flex-shrink: 0;
|
|
268
269
|
}
|
|
270
|
+
|
|
271
|
+
/* ─── Forced Colors (Windows High Contrast) ─── */
|
|
272
|
+
|
|
273
|
+
@media (forced-colors: active) {
|
|
274
|
+
.drawer-panel {
|
|
275
|
+
border: 1px solid CanvasText;
|
|
276
|
+
}
|
|
277
|
+
|
|
278
|
+
.drawer-header {
|
|
279
|
+
border-bottom-color: CanvasText;
|
|
280
|
+
}
|
|
281
|
+
|
|
282
|
+
.drawer-footer {
|
|
283
|
+
border-top-color: CanvasText;
|
|
284
|
+
}
|
|
285
|
+
|
|
286
|
+
.drawer-close-button {
|
|
287
|
+
color: ButtonText;
|
|
288
|
+
border: 1px solid ButtonText;
|
|
289
|
+
}
|
|
290
|
+
}
|
|
269
291
|
`;
|
|
270
|
-
var
|
|
271
|
-
for (var
|
|
272
|
-
(l = e[n]) && (
|
|
273
|
-
return
|
|
292
|
+
var k = Object.defineProperty, C = Object.getOwnPropertyDescriptor, a = (e, t, r, i) => {
|
|
293
|
+
for (var s = i > 1 ? void 0 : i ? C(t, r) : t, n = e.length - 1, l; n >= 0; n--)
|
|
294
|
+
(l = e[n]) && (s = (i ? l(t, r, s) : l(s)) || s);
|
|
295
|
+
return i && s && k(t, r, s), s;
|
|
274
296
|
};
|
|
275
|
-
|
|
276
|
-
const A = {
|
|
297
|
+
const A = E("hx-drawer"), T = {
|
|
277
298
|
sm: "20rem",
|
|
278
299
|
md: "30rem",
|
|
279
300
|
lg: "40rem",
|
|
@@ -288,9 +309,9 @@ const A = {
|
|
|
288
309
|
'[tabindex]:not([tabindex="-1"])',
|
|
289
310
|
"details > summary"
|
|
290
311
|
].join(",");
|
|
291
|
-
let
|
|
312
|
+
let o = class extends g {
|
|
292
313
|
constructor() {
|
|
293
|
-
super(...arguments), this._isOpen = !1, this._hasHeaderActionsSlot = !1, this._hasFooterSlot = !1, this._hasLabelSlot = !1, this._cachedFocusableElements = [], this._triggerElement = null, this._animationTimeout = null, this._hasScrollLock = !1, this._siblingAriaHiddenElements = [], this._titleId =
|
|
314
|
+
super(...arguments), this._isOpen = !1, this._hasHeaderActionsSlot = !1, this._hasFooterSlot = !1, this._hasLabelSlot = !1, this._cachedFocusableElements = [], this._triggerElement = null, this._animationTimeout = null, this._hasScrollLock = !1, this._siblingAriaHiddenElements = [], this._titleId = `${A()}-title`, this.open = !1, this.placement = "end", this.size = "md", this.contained = !1, this.noHeader = !1, this.noFooter = !1, this.label = "", this.labelClose = "Close drawer", this._handleKeyDown = (e) => {
|
|
294
315
|
if (this._isOpen) {
|
|
295
316
|
if (e.key === "Escape") {
|
|
296
317
|
e.preventDefault(), this.open = !1;
|
|
@@ -327,38 +348,52 @@ let a = class extends v {
|
|
|
327
348
|
// ─── Private: Size CSS variable ───
|
|
328
349
|
/** @internal */
|
|
329
350
|
_applySizeVar() {
|
|
330
|
-
const e =
|
|
351
|
+
const e = T[this.size] ?? this.size;
|
|
331
352
|
this.style.setProperty("--_drawer-size", e);
|
|
332
353
|
}
|
|
333
354
|
// ─── Private: Open / Close ───
|
|
334
355
|
/** @internal */
|
|
335
356
|
_lockBodyScroll() {
|
|
336
|
-
this.contained || this._hasScrollLock || (
|
|
357
|
+
this.contained || this._hasScrollLock || (y(), this._hasScrollLock = !0);
|
|
337
358
|
}
|
|
338
359
|
/** @internal */
|
|
339
360
|
_restoreBodyScroll() {
|
|
340
|
-
this._hasScrollLock && (
|
|
361
|
+
this._hasScrollLock && (_(), this._hasScrollLock = !1);
|
|
341
362
|
}
|
|
342
363
|
/** @internal */
|
|
343
364
|
_openDrawer() {
|
|
344
365
|
const e = document.activeElement;
|
|
345
366
|
this._triggerElement = e instanceof HTMLElement ? e : null, this._animationTimeout !== null && (clearTimeout(this._animationTimeout), this._animationTimeout = null), this._applySizeVar(), this._lockBodyScroll(), this._hideBackgroundFromScreenReaders(), this.dispatchEvent(new CustomEvent("hx-show", { bubbles: !0, composed: !0 })), this.updateComplete.then(() => (this._isOpen = !0, this._addListeners(), this.updateComplete)).then(() => {
|
|
346
367
|
this._cachedFocusableElements = this._getFocusableElements(), this._setInitialFocus();
|
|
347
|
-
const t = this._getAnimationDuration();
|
|
348
|
-
|
|
368
|
+
const t = this._getAnimationDuration(), r = this._panelEl;
|
|
369
|
+
if (t === 0 || !r)
|
|
349
370
|
this.dispatchEvent(
|
|
350
371
|
new CustomEvent("hx-after-show", { bubbles: !0, composed: !0 })
|
|
351
372
|
);
|
|
352
|
-
|
|
373
|
+
else {
|
|
374
|
+
const i = () => {
|
|
375
|
+
this._animationTimeout !== null && (clearTimeout(this._animationTimeout), this._animationTimeout = null), this.dispatchEvent(
|
|
376
|
+
new CustomEvent("hx-after-show", { bubbles: !0, composed: !0 })
|
|
377
|
+
);
|
|
378
|
+
};
|
|
379
|
+
r.addEventListener("transitionend", i, { once: !0 }), this._animationTimeout = setTimeout(i, t + 50);
|
|
380
|
+
}
|
|
353
381
|
}).catch(console.error);
|
|
354
382
|
}
|
|
355
383
|
/** @internal */
|
|
356
384
|
_closeDrawer() {
|
|
357
385
|
this._animationTimeout !== null && (clearTimeout(this._animationTimeout), this._animationTimeout = null), this._isOpen = !1, this._removeListeners(), this._cachedFocusableElements = [], this._restoreBodyScroll(), this._restoreBackgroundForScreenReaders(), this.dispatchEvent(new CustomEvent("hx-hide", { bubbles: !0, composed: !0 })), this._triggerElement && typeof this._triggerElement.focus == "function" && this._triggerElement.focus(), this._triggerElement = null;
|
|
358
|
-
const e = this._getAnimationDuration();
|
|
359
|
-
|
|
386
|
+
const e = this._getAnimationDuration(), t = this._panelEl;
|
|
387
|
+
if (e === 0 || !t)
|
|
360
388
|
this.dispatchEvent(new CustomEvent("hx-after-hide", { bubbles: !0, composed: !0 }));
|
|
361
|
-
|
|
389
|
+
else {
|
|
390
|
+
const r = () => {
|
|
391
|
+
this._animationTimeout !== null && (clearTimeout(this._animationTimeout), this._animationTimeout = null), this.dispatchEvent(
|
|
392
|
+
new CustomEvent("hx-after-hide", { bubbles: !0, composed: !0 })
|
|
393
|
+
);
|
|
394
|
+
};
|
|
395
|
+
t.addEventListener("transitionend", r, { once: !0 }), this._animationTimeout = setTimeout(r, e + 50);
|
|
396
|
+
}
|
|
362
397
|
}
|
|
363
398
|
/** @internal */
|
|
364
399
|
_getAnimationDuration() {
|
|
@@ -407,10 +442,10 @@ let a = class extends v {
|
|
|
407
442
|
}
|
|
408
443
|
/** @internal */
|
|
409
444
|
_getFocusableElements() {
|
|
410
|
-
var
|
|
445
|
+
var i, s;
|
|
411
446
|
const e = Array.from(
|
|
412
|
-
((
|
|
413
|
-
), t = ((
|
|
447
|
+
((i = this.shadowRoot) == null ? void 0 : i.querySelectorAll(u)) ?? []
|
|
448
|
+
), t = ((s = this.shadowRoot) == null ? void 0 : s.querySelectorAll("slot")) ?? [], r = [];
|
|
414
449
|
return t.forEach((n) => {
|
|
415
450
|
n.assignedElements({ flatten: !0 }).forEach((l) => {
|
|
416
451
|
l instanceof HTMLElement && (l.matches(u) && r.push(l), l.querySelectorAll(u).forEach((f) => {
|
|
@@ -428,10 +463,10 @@ let a = class extends v {
|
|
|
428
463
|
e.preventDefault();
|
|
429
464
|
return;
|
|
430
465
|
}
|
|
431
|
-
const [r, ...
|
|
432
|
-
if (!r || !
|
|
466
|
+
const [r, ...i] = t, s = i.length > 0 ? i[i.length - 1] : r;
|
|
467
|
+
if (!r || !s) return;
|
|
433
468
|
const n = document.activeElement;
|
|
434
|
-
e.shiftKey ? n === r && (e.preventDefault(),
|
|
469
|
+
e.shiftKey ? n === r && (e.preventDefault(), s.focus()) : n === s && (e.preventDefault(), r.focus());
|
|
435
470
|
}
|
|
436
471
|
// ─── Slot change handlers ───
|
|
437
472
|
/** @internal */
|
|
@@ -505,7 +540,7 @@ let a = class extends v {
|
|
|
505
540
|
}
|
|
506
541
|
/** @internal */
|
|
507
542
|
_renderFooter() {
|
|
508
|
-
return this.noFooter ?
|
|
543
|
+
return this.noFooter ? v : h`
|
|
509
544
|
<div part="footer" class="drawer-footer" ?hidden=${!this._hasFooterSlot}>
|
|
510
545
|
<slot name="footer" @slotchange=${this._handleFooterSlotChange}></slot>
|
|
511
546
|
</div>
|
|
@@ -520,7 +555,7 @@ let a = class extends v {
|
|
|
520
555
|
return h`
|
|
521
556
|
<div
|
|
522
557
|
part="overlay"
|
|
523
|
-
class=${
|
|
558
|
+
class=${x(e)}
|
|
524
559
|
role="dialog"
|
|
525
560
|
aria-modal="true"
|
|
526
561
|
aria-labelledby=${p(t)}
|
|
@@ -540,53 +575,53 @@ let a = class extends v {
|
|
|
540
575
|
`;
|
|
541
576
|
}
|
|
542
577
|
};
|
|
543
|
-
|
|
544
|
-
|
|
578
|
+
o.styles = [S];
|
|
579
|
+
a([
|
|
545
580
|
m(".drawer-overlay")
|
|
546
|
-
],
|
|
547
|
-
|
|
581
|
+
], o.prototype, "_overlayEl", 2);
|
|
582
|
+
a([
|
|
548
583
|
m(".drawer-panel")
|
|
549
|
-
],
|
|
550
|
-
|
|
584
|
+
], o.prototype, "_panelEl", 2);
|
|
585
|
+
a([
|
|
551
586
|
c()
|
|
552
|
-
],
|
|
553
|
-
|
|
587
|
+
], o.prototype, "_isOpen", 2);
|
|
588
|
+
a([
|
|
554
589
|
c()
|
|
555
|
-
],
|
|
556
|
-
|
|
590
|
+
], o.prototype, "_hasHeaderActionsSlot", 2);
|
|
591
|
+
a([
|
|
557
592
|
c()
|
|
558
|
-
],
|
|
559
|
-
|
|
593
|
+
], o.prototype, "_hasFooterSlot", 2);
|
|
594
|
+
a([
|
|
560
595
|
c()
|
|
561
|
-
],
|
|
562
|
-
|
|
596
|
+
], o.prototype, "_hasLabelSlot", 2);
|
|
597
|
+
a([
|
|
563
598
|
d({ type: Boolean, reflect: !0 })
|
|
564
|
-
],
|
|
565
|
-
|
|
599
|
+
], o.prototype, "open", 2);
|
|
600
|
+
a([
|
|
566
601
|
d({ type: String, reflect: !0 })
|
|
567
|
-
],
|
|
568
|
-
|
|
602
|
+
], o.prototype, "placement", 2);
|
|
603
|
+
a([
|
|
569
604
|
d({ type: String, reflect: !0, attribute: "hx-size" })
|
|
570
|
-
],
|
|
571
|
-
|
|
605
|
+
], o.prototype, "size", 2);
|
|
606
|
+
a([
|
|
572
607
|
d({ type: Boolean, reflect: !0 })
|
|
573
|
-
],
|
|
574
|
-
|
|
608
|
+
], o.prototype, "contained", 2);
|
|
609
|
+
a([
|
|
575
610
|
d({ type: Boolean, reflect: !0, attribute: "no-header" })
|
|
576
|
-
],
|
|
577
|
-
|
|
611
|
+
], o.prototype, "noHeader", 2);
|
|
612
|
+
a([
|
|
578
613
|
d({ type: Boolean, reflect: !0, attribute: "no-footer" })
|
|
579
|
-
],
|
|
580
|
-
|
|
614
|
+
], o.prototype, "noFooter", 2);
|
|
615
|
+
a([
|
|
581
616
|
d({ type: String })
|
|
582
|
-
],
|
|
583
|
-
|
|
617
|
+
], o.prototype, "label", 2);
|
|
618
|
+
a([
|
|
584
619
|
d({ type: String, attribute: "label-close" })
|
|
585
|
-
],
|
|
586
|
-
|
|
587
|
-
|
|
588
|
-
],
|
|
620
|
+
], o.prototype, "labelClose", 2);
|
|
621
|
+
o = a([
|
|
622
|
+
w("hx-drawer")
|
|
623
|
+
], o);
|
|
589
624
|
export {
|
|
590
|
-
|
|
625
|
+
o as H
|
|
591
626
|
};
|
|
592
|
-
//# sourceMappingURL=hx-drawer
|
|
627
|
+
//# sourceMappingURL=hx-drawer-Cx2ZJhBe.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"hx-drawer-Cx2ZJhBe.js","sources":["../../src/components/hx-drawer/hx-drawer.styles.ts","../../src/components/hx-drawer/hx-drawer.ts"],"sourcesContent":["import { css } from 'lit';\n\nexport const helixDrawerStyles = css`\n /* P2-03: Explicit [hidden] rule to survive CSS resets that may override the UA stylesheet. */\n [hidden] {\n display: none !important;\n }\n\n :host {\n display: contents;\n }\n\n :host([contained]) {\n display: block;\n position: relative;\n overflow: hidden;\n }\n\n /* ─── Overlay ─── */\n\n .drawer-overlay {\n position: fixed;\n inset: 0;\n z-index: var(--hx-z-index-modal, 1400);\n display: flex;\n pointer-events: none;\n visibility: hidden;\n }\n\n :host([contained]) .drawer-overlay {\n position: absolute;\n }\n\n .drawer-overlay.is-open {\n pointer-events: auto;\n visibility: visible;\n }\n\n /* ─── Backdrop ─── */\n\n .drawer-backdrop {\n position: absolute;\n inset: 0;\n background-color: var(--hx-drawer-backdrop-color, var(--hx-color-neutral-900));\n opacity: 0;\n transition: opacity var(--hx-duration-slow, 300ms) var(--hx-easing-out, ease-out);\n }\n\n .drawer-overlay.is-open .drawer-backdrop {\n opacity: var(--hx-drawer-backdrop-opacity, 0.5);\n }\n\n @media (prefers-reduced-motion: reduce) {\n .drawer-backdrop {\n transition: none;\n }\n }\n\n /* ─── Panel ─── */\n\n .drawer-panel {\n position: absolute;\n display: flex;\n flex-direction: column;\n background-color: var(--hx-drawer-bg, var(--hx-color-neutral-0));\n color: var(--hx-drawer-color, var(--hx-color-neutral-900));\n box-shadow: var(--hx-drawer-shadow, var(--hx-shadow-xl));\n overflow: hidden;\n outline: none;\n z-index: 1; /* local stacking context: panel above backdrop within overlay container */\n transition:\n transform var(--hx-duration-slow, 300ms) var(--hx-easing-out, ease-out),\n opacity var(--hx-duration-slow, 300ms) var(--hx-easing-out, ease-out);\n opacity: 0;\n }\n\n @media (prefers-reduced-motion: reduce) {\n .drawer-panel {\n transition: none;\n }\n\n .drawer-close-button {\n transition: none;\n }\n }\n\n /* ─── Placement: end (default — right) ─── */\n\n :host([placement='end']) .drawer-panel,\n :host(:not([placement])) .drawer-panel {\n top: 0;\n inset-inline-end: 0;\n bottom: 0;\n width: var(--_drawer-size, var(--hx-drawer-size-md, 30rem));\n max-width: 100%;\n transform: translateX(100%);\n }\n\n :host([placement='end']) .drawer-overlay.is-open .drawer-panel,\n :host(:not([placement])) .drawer-overlay.is-open .drawer-panel {\n transform: translateX(0);\n opacity: 1;\n }\n\n /* ─── Placement: start (left) ─── */\n\n :host([placement='start']) .drawer-panel {\n top: 0;\n inset-inline-start: 0;\n bottom: 0;\n width: var(--_drawer-size, var(--hx-drawer-size-md, 30rem));\n max-width: 100%;\n transform: translateX(-100%);\n }\n\n :host([placement='start']) .drawer-overlay.is-open .drawer-panel {\n transform: translateX(0);\n opacity: 1;\n }\n\n /* ─── Placement: top ─── */\n\n :host([placement='top']) .drawer-panel {\n top: 0;\n inset-inline-start: 0;\n inset-inline-end: 0;\n height: var(--_drawer-size, var(--hx-drawer-size-md, 30rem));\n max-height: 100%;\n width: 100%;\n transform: translateY(-100%);\n }\n\n :host([placement='top']) .drawer-overlay.is-open .drawer-panel {\n transform: translateY(0);\n opacity: 1;\n }\n\n /* ─── Placement: bottom ─── */\n\n :host([placement='bottom']) .drawer-panel {\n bottom: 0;\n inset-inline-start: 0;\n inset-inline-end: 0;\n height: var(--_drawer-size, var(--hx-drawer-size-md, 30rem));\n max-height: 100%;\n width: 100%;\n transform: translateY(100%);\n }\n\n :host([placement='bottom']) .drawer-overlay.is-open .drawer-panel {\n transform: translateY(0);\n opacity: 1;\n }\n\n /* ─── Header ─── */\n\n .drawer-header {\n display: flex;\n align-items: center;\n justify-content: space-between;\n gap: var(--hx-space-4, 1rem);\n padding: var(--hx-drawer-header-padding, var(--hx-space-5, 1.25rem) var(--hx-space-6, 1.5rem));\n border-bottom: var(--hx-border-width-thin, 1px) solid\n var(--hx-drawer-header-border-color, var(--hx-color-neutral-200));\n flex-shrink: 0;\n }\n\n .drawer-title {\n margin: 0;\n flex: 1 1 auto;\n font-family: var(--hx-drawer-font-family, var(--hx-font-family-sans));\n font-size: var(--hx-font-size-lg);\n font-weight: var(--hx-font-weight-semibold);\n line-height: var(--hx-line-height-tight);\n color: var(--hx-drawer-title-color, var(--hx-color-neutral-900));\n }\n\n .drawer-header-actions {\n display: flex;\n align-items: center;\n gap: var(--hx-space-2, 0.5rem);\n flex-shrink: 0;\n }\n\n .drawer-close-button {\n display: inline-flex;\n align-items: center;\n justify-content: center;\n /* WCAG 2.5.5 (healthcare mandate): minimum 44x44px touch target */\n min-width: var(--hx-touch-target-min, 2.75rem);\n min-height: var(--hx-touch-target-min, 2.75rem);\n width: var(--hx-touch-target-min, 2.75rem);\n height: var(--hx-touch-target-min, 2.75rem);\n padding: 0;\n border: none;\n border-radius: var(--hx-border-radius-md, 0.375rem);\n background: transparent;\n color: var(--hx-color-neutral-500);\n cursor: pointer;\n flex-shrink: 0;\n transition: background-color var(--hx-duration-fast, 100ms) var(--hx-easing-default, ease);\n }\n\n .drawer-close-button:hover {\n background-color: var(--hx-color-neutral-100);\n color: var(--hx-color-neutral-900);\n }\n\n .drawer-close-button:focus-visible {\n outline: var(--hx-focus-ring-width, 2px) solid\n var(\n --hx-drawer-close-btn-focus-ring-color,\n var(--hx-focus-ring-color, var(--hx-color-primary-500))\n );\n outline-offset: var(--hx-focus-ring-offset, 2px);\n }\n\n /* ─── Visually-hidden close button (no-header mode, WCAG 4.1.2) ─── */\n /* Keeps the button reachable by keyboard/AT but invisible to sighted users. */\n\n .drawer-close-button--sr-only {\n position: absolute;\n width: 1px;\n height: 1px;\n padding: 0;\n margin: -1px;\n overflow: hidden;\n clip: rect(0, 0, 0, 0);\n white-space: nowrap;\n border: 0;\n }\n\n /* When focused via keyboard, restore visibility so users know where focus is. */\n .drawer-close-button--sr-only:focus-visible {\n position: static;\n width: auto;\n height: auto;\n clip: auto;\n white-space: normal;\n overflow: visible;\n margin: 0;\n }\n\n /* ─── Body ─── */\n\n .drawer-body {\n flex: 1 1 auto;\n padding: var(--hx-drawer-body-padding, var(--hx-space-6, 1.5rem));\n overflow-y: auto;\n overscroll-behavior: contain;\n }\n\n /* ─── Footer ─── */\n\n .drawer-footer {\n display: flex;\n align-items: center;\n justify-content: flex-end;\n gap: var(--hx-space-3, 0.75rem);\n padding: var(--hx-drawer-footer-padding, var(--hx-space-4, 1rem) var(--hx-space-6, 1.5rem));\n border-top: var(--hx-border-width-thin, 1px) solid\n var(--hx-drawer-footer-border-color, var(--hx-color-neutral-200));\n flex-shrink: 0;\n }\n\n /* ─── Forced Colors (Windows High Contrast) ─── */\n\n @media (forced-colors: active) {\n .drawer-panel {\n border: 1px solid CanvasText;\n }\n\n .drawer-header {\n border-bottom-color: CanvasText;\n }\n\n .drawer-footer {\n border-top-color: CanvasText;\n }\n\n .drawer-close-button {\n color: ButtonText;\n border: 1px solid ButtonText;\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 { lockBodyScroll, unlockBodyScroll } from '../../utils/body-scroll-lock.js';\nimport { devWarn } from '../../utils/dev-warn.js';\nimport { HelixElement, createIdCounter } from '../../base/index.js';\nimport { helixDrawerStyles } from './hx-drawer.styles.js';\n\nconst _nextDrawerId = createIdCounter('hx-drawer');\n\ntype DrawerSizePreset = 'sm' | 'md' | 'lg' | 'full';\ntype DrawerSize = DrawerSizePreset | (string & Record<never, never>);\n\nconst DRAWER_SIZE_MAP: Record<DrawerSizePreset, string> = {\n sm: '20rem',\n md: '30rem',\n lg: '40rem',\n full: '100%',\n};\n\nconst FOCUSABLE_SELECTORS = [\n 'a[href]',\n 'area[href]',\n 'button:not([disabled])',\n 'input:not([disabled])',\n 'select:not([disabled])',\n 'textarea:not([disabled])',\n '[tabindex]:not([tabindex=\"-1\"])',\n 'details > summary',\n].join(',');\n\n/**\n * A slide-in drawer panel that can appear from any edge of the viewport.\n * Supports focus trapping, overlay backdrop, keyboard navigation, and full\n * ARIA labelling for enterprise healthcare accessibility requirements.\n *\n * ## Architecture Note: Native `<dialog>` Migration\n *\n * This component currently uses `role=\"dialog\"` + `aria-modal=\"true\"` on a\n * `<div>` rather than the native `<dialog>` element. This is intentional for\n * the current release because:\n *\n * 1. **SSR compatibility**: Native `<dialog>` requires `showModal()` to activate\n * its modal behavior (focus trapping, backdrop, top-layer). This JavaScript\n * call is not available during server-side rendering, which is a primary\n * consumption pattern for Drupal/Twig templates.\n *\n * 2. **Contained mode**: The `contained` property constrains the drawer to a\n * positioned parent. Native `<dialog>` in modal mode renders in the top layer\n * and cannot be constrained to a parent element.\n *\n * 3. **Animation control**: The current CSS transition approach provides precise\n * control over slide-in/slide-out animations. Native `<dialog>` `::backdrop`\n * animations have inconsistent cross-browser support.\n *\n * Migration to native `<dialog>` is tracked as a future enhancement. When browser\n * support for `CloseWatcher`, `::backdrop` transitions, and declarative dialog\n * opening stabilizes, this component will be migrated to native semantics.\n *\n * @summary Slide-in panel overlay from any viewport edge.\n *\n * @tag hx-drawer\n *\n * @slot label - The drawer title text.\n * @slot header-actions - Action buttons displayed in the header near the close button.\n * @slot - Default slot for the drawer body content.\n * @slot footer - Action buttons or footer content.\n *\n * @fires {CustomEvent<void>} hx-show - Fired when the drawer begins to open.\n * @fires {CustomEvent<void>} hx-after-show - Fired after the drawer open animation completes.\n * @fires {CustomEvent<void>} hx-hide - Fired when the drawer begins to close.\n * @fires {CustomEvent<void>} hx-after-hide - Fired after the drawer close animation completes.\n * @fires {CustomEvent<void>} hx-initial-focus - Fired when initial focus is set inside the drawer. Cancelable to override focus behavior.\n *\n * **Event naming rationale:** hx-drawer uses the `hx-show`/`hx-hide`/`hx-after-show`/`hx-after-hide`\n * pattern shared by all overlay components (hx-popover, hx-tooltip, hx-dropdown). This differs from\n * hx-dialog's `hx-open`/`hx-close`/`hx-cancel` events, which align with native `<dialog>` semantics.\n * The distinction is intentional: overlays are transient visibility toggles, while dialog is a stateful\n * container with cancel semantics.\n *\n * @csspart overlay - The full-screen overlay container (includes backdrop and panel).\n * @csspart panel - The drawer panel itself.\n * @csspart header - The header region containing the title and actions.\n * @csspart title - The drawer title element.\n * @csspart close-button - The built-in close button.\n * @csspart close-btn - The visually-hidden close button rendered when noHeader is true.\n * @csspart body - The scrollable body region.\n * @csspart footer - The footer region.\n *\n * @attr [label] - Accessible label for the dialog when no visible label slot is provided.\n *\n * @cssprop [--hx-drawer-bg=var(--hx-color-neutral-0)] - Drawer panel background color.\n * @cssprop [--hx-drawer-color=var(--hx-color-neutral-900)] - Drawer panel text color.\n * @cssprop [--hx-drawer-shadow=var(--hx-shadow-xl)] - Drawer panel box shadow.\n * @cssprop [--hx-drawer-backdrop-color=var(--hx-color-neutral-900)] - Backdrop color.\n * @cssprop [--hx-drawer-backdrop-opacity=0.5] - Backdrop opacity.\n * @cssprop [--hx-drawer-header-padding] - Padding inside the header.\n * @cssprop [--hx-drawer-header-border-color=var(--hx-color-neutral-200)] - Header border color.\n * @cssprop [--hx-drawer-title-color=var(--hx-color-neutral-900)] - Title text color.\n * @cssprop [--hx-drawer-body-padding] - Padding inside the body.\n * @cssprop [--hx-drawer-footer-padding] - Padding inside the footer.\n * @cssprop [--hx-drawer-footer-border-color=var(--hx-color-neutral-200)] - Footer border color.\n */\n@customElement('hx-drawer')\nexport class HelixDrawer extends HelixElement {\n static override styles = [helixDrawerStyles];\n\n // ─── Queries ───\n\n /**\n * Reference to the overlay element that wraps the backdrop and panel.\n * @internal\n */\n @query('.drawer-overlay')\n private _overlayEl: HTMLElement | null | undefined;\n\n /**\n * Reference to the drawer panel element used for focus management.\n * @internal\n */\n @query('.drawer-panel')\n private _panelEl: HTMLElement | null | undefined;\n\n // ─── Internal state ───\n\n /**\n * Whether the drawer is in the open state and visible to the user.\n * @internal\n */\n @state()\n private _isOpen = false;\n\n /**\n * Whether the header-actions slot has any assigned content.\n * @internal\n */\n @state()\n private _hasHeaderActionsSlot = false;\n\n /**\n * Whether the footer slot has any assigned content.\n * @internal\n */\n @state()\n private _hasFooterSlot = false;\n\n /**\n * Whether the label slot has any assigned content.\n * @internal\n */\n @state()\n private _hasLabelSlot = false;\n\n /**\n * Cached list of focusable elements within the drawer, used for focus trapping.\n * @internal\n */\n private _cachedFocusableElements: HTMLElement[] = [];\n /**\n * The element that triggered the drawer to open, restored focus when the drawer closes.\n * @internal\n */\n private _triggerElement: HTMLElement | null = null;\n /**\n * Handle for the pending animation end timeout, cleared when the drawer opens or closes again.\n * @internal\n */\n private _animationTimeout: ReturnType<typeof setTimeout> | null = null;\n /** Whether this drawer instance currently holds a body-scroll lock. */\n /** @internal */\n private _hasScrollLock = false;\n /**\n * Elements outside the drawer that were given aria-hidden during open, restored on close.\n * @internal\n */\n private _siblingAriaHiddenElements: Element[] = [];\n\n /**\n * Unique ID for the title element, used by aria-labelledby to link the dialog to its label.\n * @internal\n */\n private readonly _titleId = `${_nextDrawerId()}-title`;\n\n // ─── Public Properties ───\n\n /**\n * Controls whether the drawer is open.\n * @attr open\n */\n @property({ type: Boolean, reflect: true })\n open = false;\n\n /**\n * Which edge of the viewport the drawer slides in from.\n * @attr placement\n */\n @property({ type: String, reflect: true })\n placement: 'start' | 'end' | 'top' | 'bottom' = 'end';\n\n /**\n * The size of the drawer panel. Use 'sm', 'md', 'lg', 'full', or any valid CSS length.\n * @attr hx-size\n */\n @property({ type: String, reflect: true, attribute: 'hx-size' })\n size: 'sm' | 'md' | 'lg' | 'full' | (string & Record<never, never>) = 'md';\n\n /**\n * When true, the drawer is constrained to its positioned parent instead of the viewport.\n * The host element must have `position: relative` (or the library handles it via :host).\n * @attr contained\n */\n @property({ type: Boolean, reflect: true })\n contained = false;\n\n /**\n * When true, the header (title, header-actions, close button) is hidden.\n * @attr no-header\n */\n @property({ type: Boolean, reflect: true, attribute: 'no-header' })\n noHeader = false;\n\n /**\n * When true, the footer slot is hidden.\n * @attr no-footer\n */\n @property({ type: Boolean, reflect: true, attribute: 'no-footer' })\n noFooter = false;\n\n /**\n * Accessible label for the dialog when the `label` slot is not populated.\n * When the `label` slot is used, `aria-labelledby` takes precedence.\n * @attr label\n */\n @property({ type: String })\n label = '';\n\n /** Accessible label for the built-in close button. Override for localized text. */\n @property({ type: String, attribute: 'label-close' })\n labelClose = 'Close drawer';\n\n // ─── Lifecycle ───\n\n override connectedCallback(): void {\n super.connectedCallback();\n // Backward compat: accept legacy `size` attribute. When present and `hx-size`\n // is not set, map the value and emit a deprecation warning.\n const legacySize = this.getAttribute('size');\n if (legacySize !== null && !this.hasAttribute('hx-size')) {\n devWarn('hx-drawer', 'The \"size\" attribute is deprecated. Use \"hx-size\" instead.');\n this.size = legacySize as DrawerSize;\n }\n }\n\n override disconnectedCallback(): void {\n super.disconnectedCallback();\n this._removeListeners();\n if (this._animationTimeout !== null) {\n clearTimeout(this._animationTimeout);\n }\n this._restoreBodyScroll();\n }\n\n override updated(changedProperties: PropertyValues<this>): void {\n super.updated(changedProperties);\n\n if (changedProperties.has('open')) {\n if (this.open) {\n this._openDrawer();\n } else {\n this._closeDrawer();\n }\n }\n\n if (changedProperties.has('size')) {\n this._applySizeVar();\n }\n }\n\n // ─── Public Methods ───\n\n /** Opens the drawer. */\n show(): void {\n this.open = true;\n }\n\n /** Closes the drawer. */\n hide(): void {\n this.open = false;\n }\n\n // ─── Private: Size CSS variable ───\n\n /** @internal */\n private _applySizeVar(): void {\n const resolvedSize = DRAWER_SIZE_MAP[this.size as DrawerSizePreset] ?? this.size;\n this.style.setProperty('--_drawer-size', resolvedSize);\n }\n\n // ─── Private: Open / Close ───\n\n /** @internal */\n private _lockBodyScroll(): void {\n if (this.contained || this._hasScrollLock) return;\n // Uses a shared reference-counted lock so that simultaneous hx-dialog / hx-drawer\n // instances don't clobber each other when one closes before the other\n // (see utils/body-scroll-lock.ts).\n lockBodyScroll();\n this._hasScrollLock = true;\n }\n\n /** @internal */\n private _restoreBodyScroll(): void {\n if (!this._hasScrollLock) return;\n unlockBodyScroll();\n this._hasScrollLock = false;\n }\n\n /** @internal */\n private _openDrawer(): void {\n // Capture trigger for focus restoration (P2-04: use instanceof guard)\n const active = document.activeElement;\n this._triggerElement = active instanceof HTMLElement ? active : null;\n\n // P1-05: clear any pending animation timeout before scheduling a new one\n if (this._animationTimeout !== null) {\n clearTimeout(this._animationTimeout);\n this._animationTimeout = null;\n }\n\n this._applySizeVar();\n this._lockBodyScroll();\n this._hideBackgroundFromScreenReaders();\n\n // Dispatch hx-show before visual update\n this.dispatchEvent(new CustomEvent<void>('hx-show', { bubbles: true, composed: true }));\n\n // Transition to open state\n void this.updateComplete\n .then(() => {\n this._isOpen = true;\n this._addListeners();\n\n // Set initial focus after next render\n return this.updateComplete;\n })\n .then(() => {\n this._cachedFocusableElements = this._getFocusableElements();\n this._setInitialFocus();\n\n // Dispatch hx-after-show when the panel's CSS transition completes.\n // If prefers-reduced-motion is active (duration === 0) or the element\n // is missing, fire immediately — transitionend will never fire.\n const duration = this._getAnimationDuration();\n const panel = this._panelEl;\n if (duration === 0 || !panel) {\n this.dispatchEvent(\n new CustomEvent<void>('hx-after-show', { bubbles: true, composed: true }),\n );\n } else {\n const emitAfterShow = () => {\n if (this._animationTimeout !== null) {\n clearTimeout(this._animationTimeout);\n this._animationTimeout = null;\n }\n this.dispatchEvent(\n new CustomEvent<void>('hx-after-show', { bubbles: true, composed: true }),\n );\n };\n panel.addEventListener('transitionend', emitAfterShow, { once: true });\n // Safety fallback: if transitionend never fires (e.g. transition\n // cancelled, element removed), ensure the event is still dispatched.\n this._animationTimeout = setTimeout(emitAfterShow, duration + 50);\n }\n })\n .catch(console.error);\n }\n\n /** @internal */\n private _closeDrawer(): void {\n // P1-05: clear any pending animation timeout before scheduling a new one\n if (this._animationTimeout !== null) {\n clearTimeout(this._animationTimeout);\n this._animationTimeout = null;\n }\n\n this._isOpen = false;\n this._removeListeners();\n this._cachedFocusableElements = [];\n this._restoreBodyScroll();\n this._restoreBackgroundForScreenReaders();\n\n this.dispatchEvent(new CustomEvent<void>('hx-hide', { bubbles: true, composed: true }));\n\n // Restore focus to the trigger immediately — before any animation timeout.\n // WCAG 2.4.3: focus must never remain on invisible or inert content.\n if (this._triggerElement && typeof this._triggerElement.focus === 'function') {\n this._triggerElement.focus();\n }\n this._triggerElement = null;\n\n // Dispatch hx-after-hide when the panel's CSS transition completes.\n // If prefers-reduced-motion is active (duration === 0) or the element\n // is missing, fire immediately — transitionend will never fire.\n const duration = this._getAnimationDuration();\n const panel = this._panelEl;\n if (duration === 0 || !panel) {\n this.dispatchEvent(new CustomEvent<void>('hx-after-hide', { bubbles: true, composed: true }));\n } else {\n const emitAfterHide = () => {\n if (this._animationTimeout !== null) {\n clearTimeout(this._animationTimeout);\n this._animationTimeout = null;\n }\n this.dispatchEvent(\n new CustomEvent<void>('hx-after-hide', { bubbles: true, composed: true }),\n );\n };\n panel.addEventListener('transitionend', emitAfterHide, { once: true });\n // Safety fallback: if transitionend never fires (e.g. transition\n // cancelled, element removed), ensure the event is still dispatched.\n this._animationTimeout = setTimeout(emitAfterHide, duration + 50);\n }\n }\n\n /** @internal */\n private _getAnimationDuration(): number {\n if (typeof window === 'undefined') return 0;\n if (window.matchMedia('(prefers-reduced-motion: reduce)').matches) return 0;\n return 300;\n }\n\n // ─── Background aria-hidden management (P1-03) ───\n\n /** @internal */\n private _hideBackgroundFromScreenReaders(): void {\n if (this.contained) return;\n this._siblingAriaHiddenElements = [];\n // Walk the parent chain once to find which body child is an ancestor of this component.\n // This avoids calling child.contains(this) in a loop (which is O(n * depth)).\n // Starting from parentElement avoids aliasing `this` to a local variable.\n let ancestorBodyChild: Element | null = null;\n let el: Element | null = this.parentElement;\n while (el && el.parentElement !== document.body) {\n el = el.parentElement;\n }\n if (el && el.parentElement === document.body) {\n ancestorBodyChild = el;\n }\n Array.from(document.body.children).forEach((child) => {\n if (child === this || child === ancestorBodyChild) return;\n if (!child.hasAttribute('aria-hidden')) {\n child.setAttribute('aria-hidden', 'true');\n this._siblingAriaHiddenElements.push(child);\n }\n });\n }\n\n /** @internal */\n private _restoreBackgroundForScreenReaders(): void {\n this._siblingAriaHiddenElements.forEach((el) => {\n el.removeAttribute('aria-hidden');\n });\n this._siblingAriaHiddenElements = [];\n }\n\n // ─── Event Listeners (P1-01: use only document listener, not overlay) ───\n\n /** @internal */\n private _addListeners(): void {\n document.addEventListener('keydown', this._handleKeyDown);\n }\n\n /** @internal */\n private _removeListeners(): void {\n document.removeEventListener('keydown', this._handleKeyDown);\n }\n\n // ─── Keyboard Handler ───\n\n /**\n * Handles keyboard events on the document to trap focus and close the drawer on Escape.\n * @internal\n */\n private _handleKeyDown = (e: KeyboardEvent): void => {\n if (!this._isOpen) return;\n\n if (e.key === 'Escape') {\n e.preventDefault();\n this.open = false;\n return;\n }\n\n if (e.key === 'Tab') {\n this._trapFocus(e);\n }\n };\n\n // ─── Focus ───\n\n /** @internal */\n private _setInitialFocus(): void {\n const event = new CustomEvent<void>('hx-initial-focus', {\n bubbles: true,\n composed: true,\n cancelable: true,\n });\n this.dispatchEvent(event);\n\n if (!event.defaultPrevented) {\n const focusable = this._cachedFocusableElements;\n if (focusable.length > 0 && focusable[0]) {\n focusable[0].focus();\n } else {\n this._panelEl?.focus();\n }\n }\n }\n\n /** @internal */\n private _getFocusableElements(): HTMLElement[] {\n const shadowFocusable = Array.from(\n this.shadowRoot?.querySelectorAll<HTMLElement>(FOCUSABLE_SELECTORS) ?? [],\n );\n\n const slots = this.shadowRoot?.querySelectorAll<HTMLSlotElement>('slot') ?? [];\n const lightFocusable: HTMLElement[] = [];\n\n slots.forEach((slot) => {\n slot.assignedElements({ flatten: true }).forEach((el) => {\n if (el instanceof HTMLElement) {\n if (el.matches(FOCUSABLE_SELECTORS)) {\n lightFocusable.push(el);\n }\n el.querySelectorAll<HTMLElement>(FOCUSABLE_SELECTORS).forEach((child) => {\n lightFocusable.push(child);\n });\n }\n });\n });\n\n return [...shadowFocusable, ...lightFocusable].filter(\n (el) => !el.hasAttribute('disabled') && el.getAttribute('tabindex') !== '-1',\n );\n }\n\n /** @internal */\n private _trapFocus(e: KeyboardEvent): void {\n const focusable =\n this._cachedFocusableElements.length > 0\n ? this._cachedFocusableElements\n : this._getFocusableElements();\n\n if (focusable.length === 0) {\n e.preventDefault();\n return;\n }\n\n const [first, ...rest] = focusable;\n const last = rest.length > 0 ? rest[rest.length - 1] : first;\n\n if (!first || !last) return;\n\n // P1-02: Use document.activeElement for reliable detection of slotted (light DOM) elements.\n // shadowRoot.activeElement returns the <slot> host for slotted content, not the actual element.\n const active = document.activeElement as HTMLElement | null;\n\n if (e.shiftKey) {\n if (active === first) {\n e.preventDefault();\n last.focus();\n }\n } else {\n if (active === last) {\n e.preventDefault();\n first.focus();\n }\n }\n }\n\n // ─── Overlay Click ───\n\n /**\n * Handles clicks on the overlay backdrop to close the drawer when the user clicks outside the panel.\n * @internal\n */\n private _handleOverlayClick = (e: MouseEvent): void => {\n // Only close when clicking the overlay itself (backdrop), not the panel\n const target = e.target as HTMLElement;\n if (target === this._overlayEl || target.classList.contains('drawer-backdrop')) {\n this.open = false;\n }\n };\n\n // ─── Slot change handlers ───\n\n /** @internal */\n private _handleHeaderActionsSlotChange(e: Event): void {\n const slot = e.target as HTMLSlotElement;\n this._hasHeaderActionsSlot = slot.assignedNodes({ flatten: true }).length > 0;\n }\n\n /** @internal */\n private _handleFooterSlotChange(e: Event): void {\n const slot = e.target as HTMLSlotElement;\n this._hasFooterSlot = slot.assignedNodes({ flatten: true }).length > 0;\n }\n\n /** @internal */\n private _handleLabelSlotChange(e: Event): void {\n const slot = e.target as HTMLSlotElement;\n this._hasLabelSlot = slot.assignedNodes({ flatten: true }).length > 0;\n }\n\n // ─── Render Helpers ───\n\n /** @internal */\n private _renderHeader() {\n if (this.noHeader) {\n // WCAG 4.1.2: When the header is hidden there must still be a reachable close\n // mechanism for keyboard and mouse/touch users. Render a visually-hidden close\n // button that is focusable and announced by screen readers.\n return html`\n <button\n part=\"close-btn\"\n class=\"drawer-close-button drawer-close-button--sr-only\"\n aria-label=${this.labelClose}\n @click=${() => {\n this.open = false;\n }}\n ></button>\n `;\n }\n\n return html`\n <div part=\"header\" class=\"drawer-header\">\n <h2 part=\"title\" id=${this._titleId} class=\"drawer-title\">\n <slot name=\"label\" @slotchange=${this._handleLabelSlotChange}></slot>\n </h2>\n <div class=\"drawer-header-actions\">\n ${this._hasHeaderActionsSlot\n ? html`<slot\n name=\"header-actions\"\n @slotchange=${this._handleHeaderActionsSlotChange}\n ></slot>`\n : html`<slot\n name=\"header-actions\"\n @slotchange=${this._handleHeaderActionsSlotChange}\n style=\"display:none\"\n ></slot>`}\n <button\n part=\"close-button\"\n class=\"drawer-close-button\"\n aria-label=${this.labelClose}\n @click=${() => {\n this.open = false;\n }}\n >\n <svg\n xmlns=\"http://www.w3.org/2000/svg\"\n width=\"16\"\n height=\"16\"\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n stroke=\"currentColor\"\n stroke-width=\"2\"\n stroke-linecap=\"round\"\n stroke-linejoin=\"round\"\n aria-hidden=\"true\"\n >\n <line x1=\"18\" y1=\"6\" x2=\"6\" y2=\"18\"></line>\n <line x1=\"6\" y1=\"6\" x2=\"18\" y2=\"18\"></line>\n </svg>\n </button>\n </div>\n </div>\n `;\n }\n\n /** @internal */\n private _renderFooter() {\n if (this.noFooter) return nothing;\n\n return html`\n <div part=\"footer\" class=\"drawer-footer\" ?hidden=${!this._hasFooterSlot}>\n <slot name=\"footer\" @slotchange=${this._handleFooterSlotChange}></slot>\n </div>\n `;\n }\n\n // ─── Render ───\n\n override render() {\n const overlayClasses = {\n 'drawer-overlay': true,\n 'is-open': this._isOpen,\n };\n\n // P1-06: ensure the dialog always has an accessible name.\n // Priority: aria-labelledby (slot) > aria-label (prop) > aria-label (fallback \"Drawer\")\n const ariaLabelledby = this._hasLabelSlot ? this._titleId : undefined;\n const ariaLabel = !this._hasLabelSlot ? this.label || 'Drawer' : undefined;\n\n return html`\n <div\n part=\"overlay\"\n class=${classMap(overlayClasses)}\n role=\"dialog\"\n aria-modal=\"true\"\n aria-labelledby=${ifDefined(ariaLabelledby)}\n aria-label=${ifDefined(ariaLabel)}\n tabindex=\"-1\"\n @click=${this._handleOverlayClick}\n >\n <div class=\"drawer-backdrop\" aria-hidden=\"true\"></div>\n <div part=\"panel\" class=\"drawer-panel\" tabindex=\"-1\">\n ${this._renderHeader()}\n <div part=\"body\" class=\"drawer-body\">\n <slot></slot>\n </div>\n ${this._renderFooter()}\n </div>\n </div>\n `;\n }\n}\n\ndeclare global {\n interface HTMLElementTagNameMap {\n 'hx-drawer': HelixDrawer;\n }\n interface HTMLElementEventMap {\n 'hx-show': CustomEvent<void>;\n 'hx-after-show': CustomEvent<void>;\n 'hx-hide': CustomEvent<void>;\n 'hx-after-hide': CustomEvent<void>;\n 'hx-initial-focus': CustomEvent<void>;\n }\n}\n"],"names":["helixDrawerStyles","css","_nextDrawerId","createIdCounter","DRAWER_SIZE_MAP","FOCUSABLE_SELECTORS","HelixDrawer","HelixElement","target","legacySize","changedProperties","resolvedSize","lockBodyScroll","unlockBodyScroll","active","duration","panel","emitAfterShow","emitAfterHide","ancestorBodyChild","el","child","event","focusable","_a","shadowFocusable","slots","_b","lightFocusable","slot","first","rest","last","html","nothing","overlayClasses","ariaLabelledby","ariaLabel","classMap","ifDefined","__decorateClass","query","state","property","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;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;;;;;;ACQjC,MAAMC,IAAgBC,EAAgB,WAAW,GAK3CC,IAAoD;AAAA,EACxD,IAAI;AAAA,EACJ,IAAI;AAAA,EACJ,IAAI;AAAA,EACJ,MAAM;AACR,GAEMC,IAAsB;AAAA,EAC1B;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AACF,EAAE,KAAK,GAAG;AA2EH,IAAMC,IAAN,cAA0BC,EAAa;AAAA,EAAvC,cAAA;AAAA,UAAA,GAAA,SAAA,GA0BL,KAAQ,UAAU,IAOlB,KAAQ,wBAAwB,IAOhC,KAAQ,iBAAiB,IAOzB,KAAQ,gBAAgB,IAMxB,KAAQ,2BAA0C,CAAA,GAKlD,KAAQ,kBAAsC,MAK9C,KAAQ,oBAA0D,MAGlE,KAAQ,iBAAiB,IAKzB,KAAQ,6BAAwC,CAAA,GAMhD,KAAiB,WAAW,GAAGL,EAAA,CAAe,UAS9C,KAAA,OAAO,IAOP,KAAA,YAAgD,OAOhD,KAAA,OAAsE,MAQtE,KAAA,YAAY,IAOZ,KAAA,WAAW,IAOX,KAAA,WAAW,IAQX,KAAA,QAAQ,IAIR,KAAA,aAAa,gBAqPb,KAAQ,iBAAiB,CAAC,MAA2B;AACnD,UAAK,KAAK,SAEV;AAAA,YAAI,EAAE,QAAQ,UAAU;AACtB,YAAE,eAAA,GACF,KAAK,OAAO;AACZ;AAAA,QACF;AAEA,QAAI,EAAE,QAAQ,SACZ,KAAK,WAAW,CAAC;AAAA;AAAA,IAErB,GA0FA,KAAQ,sBAAsB,CAAC,MAAwB;AAErD,YAAMM,IAAS,EAAE;AACjB,OAAIA,MAAW,KAAK,cAAcA,EAAO,UAAU,SAAS,iBAAiB,OAC3E,KAAK,OAAO;AAAA,IAEhB;AAAA,EAAA;AAAA;AAAA,EA7VS,oBAA0B;AACjC,UAAM,kBAAA;AAGN,UAAMC,IAAa,KAAK,aAAa,MAAM;AAC3C,IAAIA,MAAe,QAAQ,CAAC,KAAK,aAAa,SAAS,MAErD,KAAK,OAAOA;AAAA,EAEhB;AAAA,EAES,uBAA6B;AACpC,UAAM,qBAAA,GACN,KAAK,iBAAA,GACD,KAAK,sBAAsB,QAC7B,aAAa,KAAK,iBAAiB,GAErC,KAAK,mBAAA;AAAA,EACP;AAAA,EAES,QAAQC,GAA+C;AAC9D,UAAM,QAAQA,CAAiB,GAE3BA,EAAkB,IAAI,MAAM,MAC1B,KAAK,OACP,KAAK,YAAA,IAEL,KAAK,aAAA,IAILA,EAAkB,IAAI,MAAM,KAC9B,KAAK,cAAA;AAAA,EAET;AAAA;AAAA;AAAA,EAKA,OAAa;AACX,SAAK,OAAO;AAAA,EACd;AAAA;AAAA,EAGA,OAAa;AACX,SAAK,OAAO;AAAA,EACd;AAAA;AAAA;AAAA,EAKQ,gBAAsB;AAC5B,UAAMC,IAAeP,EAAgB,KAAK,IAAwB,KAAK,KAAK;AAC5E,SAAK,MAAM,YAAY,kBAAkBO,CAAY;AAAA,EACvD;AAAA;AAAA;AAAA,EAKQ,kBAAwB;AAC9B,IAAI,KAAK,aAAa,KAAK,mBAI3BC,EAAA,GACA,KAAK,iBAAiB;AAAA,EACxB;AAAA;AAAA,EAGQ,qBAA2B;AACjC,IAAK,KAAK,mBACVC,EAAA,GACA,KAAK,iBAAiB;AAAA,EACxB;AAAA;AAAA,EAGQ,cAAoB;AAE1B,UAAMC,IAAS,SAAS;AACxB,SAAK,kBAAkBA,aAAkB,cAAcA,IAAS,MAG5D,KAAK,sBAAsB,SAC7B,aAAa,KAAK,iBAAiB,GACnC,KAAK,oBAAoB,OAG3B,KAAK,cAAA,GACL,KAAK,gBAAA,GACL,KAAK,iCAAA,GAGL,KAAK,cAAc,IAAI,YAAkB,WAAW,EAAE,SAAS,IAAM,UAAU,GAAA,CAAM,CAAC,GAGjF,KAAK,eACP,KAAK,OACJ,KAAK,UAAU,IACf,KAAK,cAAA,GAGE,KAAK,eACb,EACA,KAAK,MAAM;AACV,WAAK,2BAA2B,KAAK,sBAAA,GACrC,KAAK,iBAAA;AAKL,YAAMC,IAAW,KAAK,sBAAA,GAChBC,IAAQ,KAAK;AACnB,UAAID,MAAa,KAAK,CAACC;AACrB,aAAK;AAAA,UACH,IAAI,YAAkB,iBAAiB,EAAE,SAAS,IAAM,UAAU,IAAM;AAAA,QAAA;AAAA,WAErE;AACL,cAAMC,IAAgB,MAAM;AAC1B,UAAI,KAAK,sBAAsB,SAC7B,aAAa,KAAK,iBAAiB,GACnC,KAAK,oBAAoB,OAE3B,KAAK;AAAA,YACH,IAAI,YAAkB,iBAAiB,EAAE,SAAS,IAAM,UAAU,IAAM;AAAA,UAAA;AAAA,QAE5E;AACA,QAAAD,EAAM,iBAAiB,iBAAiBC,GAAe,EAAE,MAAM,IAAM,GAGrE,KAAK,oBAAoB,WAAWA,GAAeF,IAAW,EAAE;AAAA,MAClE;AAAA,IACF,CAAC,EACA,MAAM,QAAQ,KAAK;AAAA,EACxB;AAAA;AAAA,EAGQ,eAAqB;AAE3B,IAAI,KAAK,sBAAsB,SAC7B,aAAa,KAAK,iBAAiB,GACnC,KAAK,oBAAoB,OAG3B,KAAK,UAAU,IACf,KAAK,iBAAA,GACL,KAAK,2BAA2B,CAAA,GAChC,KAAK,mBAAA,GACL,KAAK,mCAAA,GAEL,KAAK,cAAc,IAAI,YAAkB,WAAW,EAAE,SAAS,IAAM,UAAU,GAAA,CAAM,CAAC,GAIlF,KAAK,mBAAmB,OAAO,KAAK,gBAAgB,SAAU,cAChE,KAAK,gBAAgB,MAAA,GAEvB,KAAK,kBAAkB;AAKvB,UAAMA,IAAW,KAAK,sBAAA,GAChBC,IAAQ,KAAK;AACnB,QAAID,MAAa,KAAK,CAACC;AACrB,WAAK,cAAc,IAAI,YAAkB,iBAAiB,EAAE,SAAS,IAAM,UAAU,GAAA,CAAM,CAAC;AAAA,SACvF;AACL,YAAME,IAAgB,MAAM;AAC1B,QAAI,KAAK,sBAAsB,SAC7B,aAAa,KAAK,iBAAiB,GACnC,KAAK,oBAAoB,OAE3B,KAAK;AAAA,UACH,IAAI,YAAkB,iBAAiB,EAAE,SAAS,IAAM,UAAU,IAAM;AAAA,QAAA;AAAA,MAE5E;AACA,MAAAF,EAAM,iBAAiB,iBAAiBE,GAAe,EAAE,MAAM,IAAM,GAGrE,KAAK,oBAAoB,WAAWA,GAAeH,IAAW,EAAE;AAAA,IAClE;AAAA,EACF;AAAA;AAAA,EAGQ,wBAAgC;AAEtC,WADI,OAAO,SAAW,OAClB,OAAO,WAAW,kCAAkC,EAAE,UAAgB,IACnE;AAAA,EACT;AAAA;AAAA;AAAA,EAKQ,mCAAyC;AAC/C,QAAI,KAAK,UAAW;AACpB,SAAK,6BAA6B,CAAA;AAIlC,QAAII,IAAoC,MACpCC,IAAqB,KAAK;AAC9B,WAAOA,KAAMA,EAAG,kBAAkB,SAAS;AACzC,MAAAA,IAAKA,EAAG;AAEV,IAAIA,KAAMA,EAAG,kBAAkB,SAAS,SACtCD,IAAoBC,IAEtB,MAAM,KAAK,SAAS,KAAK,QAAQ,EAAE,QAAQ,CAACC,MAAU;AACpD,MAAIA,MAAU,QAAQA,MAAUF,KAC3BE,EAAM,aAAa,aAAa,MACnCA,EAAM,aAAa,eAAe,MAAM,GACxC,KAAK,2BAA2B,KAAKA,CAAK;AAAA,IAE9C,CAAC;AAAA,EACH;AAAA;AAAA,EAGQ,qCAA2C;AACjD,SAAK,2BAA2B,QAAQ,CAACD,MAAO;AAC9C,MAAAA,EAAG,gBAAgB,aAAa;AAAA,IAClC,CAAC,GACD,KAAK,6BAA6B,CAAA;AAAA,EACpC;AAAA;AAAA;AAAA,EAKQ,gBAAsB;AAC5B,aAAS,iBAAiB,WAAW,KAAK,cAAc;AAAA,EAC1D;AAAA;AAAA,EAGQ,mBAAyB;AAC/B,aAAS,oBAAoB,WAAW,KAAK,cAAc;AAAA,EAC7D;AAAA;AAAA;AAAA,EAyBQ,mBAAyB;;AAC/B,UAAME,IAAQ,IAAI,YAAkB,oBAAoB;AAAA,MACtD,SAAS;AAAA,MACT,UAAU;AAAA,MACV,YAAY;AAAA,IAAA,CACb;AAGD,QAFA,KAAK,cAAcA,CAAK,GAEpB,CAACA,EAAM,kBAAkB;AAC3B,YAAMC,IAAY,KAAK;AACvB,MAAIA,EAAU,SAAS,KAAKA,EAAU,CAAC,IACrCA,EAAU,CAAC,EAAE,MAAA,KAEbC,IAAA,KAAK,aAAL,QAAAA,EAAe;AAAA,IAEnB;AAAA,EACF;AAAA;AAAA,EAGQ,wBAAuC;;AAC7C,UAAMC,IAAkB,MAAM;AAAA,QAC5BD,IAAA,KAAK,eAAL,gBAAAA,EAAiB,iBAA8BnB,OAAwB,CAAA;AAAA,IAAC,GAGpEqB,MAAQC,IAAA,KAAK,eAAL,gBAAAA,EAAiB,iBAAkC,YAAW,CAAA,GACtEC,IAAgC,CAAA;AAEtC,WAAAF,EAAM,QAAQ,CAACG,MAAS;AACtB,MAAAA,EAAK,iBAAiB,EAAE,SAAS,GAAA,CAAM,EAAE,QAAQ,CAACT,MAAO;AACvD,QAAIA,aAAc,gBACZA,EAAG,QAAQf,CAAmB,KAChCuB,EAAe,KAAKR,CAAE,GAExBA,EAAG,iBAA8Bf,CAAmB,EAAE,QAAQ,CAACgB,MAAU;AACvE,UAAAO,EAAe,KAAKP,CAAK;AAAA,QAC3B,CAAC;AAAA,MAEL,CAAC;AAAA,IACH,CAAC,GAEM,CAAC,GAAGI,GAAiB,GAAGG,CAAc,EAAE;AAAA,MAC7C,CAACR,MAAO,CAACA,EAAG,aAAa,UAAU,KAAKA,EAAG,aAAa,UAAU,MAAM;AAAA,IAAA;AAAA,EAE5E;AAAA;AAAA,EAGQ,WAAW,GAAwB;AACzC,UAAMG,IACJ,KAAK,yBAAyB,SAAS,IACnC,KAAK,2BACL,KAAK,sBAAA;AAEX,QAAIA,EAAU,WAAW,GAAG;AAC1B,QAAE,eAAA;AACF;AAAA,IACF;AAEA,UAAM,CAACO,GAAO,GAAGC,CAAI,IAAIR,GACnBS,IAAOD,EAAK,SAAS,IAAIA,EAAKA,EAAK,SAAS,CAAC,IAAID;AAEvD,QAAI,CAACA,KAAS,CAACE,EAAM;AAIrB,UAAMlB,IAAS,SAAS;AAExB,IAAI,EAAE,WACAA,MAAWgB,MACb,EAAE,eAAA,GACFE,EAAK,MAAA,KAGHlB,MAAWkB,MACb,EAAE,eAAA,GACFF,EAAM,MAAA;AAAA,EAGZ;AAAA;AAAA;AAAA,EAmBQ,+BAA+B,GAAgB;AACrD,UAAMD,IAAO,EAAE;AACf,SAAK,wBAAwBA,EAAK,cAAc,EAAE,SAAS,GAAA,CAAM,EAAE,SAAS;AAAA,EAC9E;AAAA;AAAA,EAGQ,wBAAwB,GAAgB;AAC9C,UAAMA,IAAO,EAAE;AACf,SAAK,iBAAiBA,EAAK,cAAc,EAAE,SAAS,GAAA,CAAM,EAAE,SAAS;AAAA,EACvE;AAAA;AAAA,EAGQ,uBAAuB,GAAgB;AAC7C,UAAMA,IAAO,EAAE;AACf,SAAK,gBAAgBA,EAAK,cAAc,EAAE,SAAS,GAAA,CAAM,EAAE,SAAS;AAAA,EACtE;AAAA;AAAA;AAAA,EAKQ,gBAAgB;AACtB,WAAI,KAAK,WAIAI;AAAA;AAAA;AAAA;AAAA,uBAIU,KAAK,UAAU;AAAA,mBACnB,MAAM;AACb,WAAK,OAAO;AAAA,IACd,CAAC;AAAA;AAAA,UAKAA;AAAA;AAAA,8BAEmB,KAAK,QAAQ;AAAA,2CACA,KAAK,sBAAsB;AAAA;AAAA;AAAA,YAG1D,KAAK,wBACHA;AAAA;AAAA,8BAEgB,KAAK,8BAA8B;AAAA,0BAEnDA;AAAA;AAAA,8BAEgB,KAAK,8BAA8B;AAAA;AAAA,uBAE1C;AAAA;AAAA;AAAA;AAAA,yBAIE,KAAK,UAAU;AAAA,qBACnB,MAAM;AACb,WAAK,OAAO;AAAA,IACd,CAAC;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAqBX;AAAA;AAAA,EAGQ,gBAAgB;AACtB,WAAI,KAAK,WAAiBC,IAEnBD;AAAA,yDAC8C,CAAC,KAAK,cAAc;AAAA,0CACnC,KAAK,uBAAuB;AAAA;AAAA;AAAA,EAGpE;AAAA;AAAA,EAIS,SAAS;AAChB,UAAME,IAAiB;AAAA,MACrB,kBAAkB;AAAA,MAClB,WAAW,KAAK;AAAA,IAAA,GAKZC,IAAiB,KAAK,gBAAgB,KAAK,WAAW,QACtDC,IAAa,KAAK,gBAAyC,SAAzB,KAAK,SAAS;AAEtD,WAAOJ;AAAA;AAAA;AAAA,gBAGKK,EAASH,CAAc,CAAC;AAAA;AAAA;AAAA,0BAGdI,EAAUH,CAAc,CAAC;AAAA,qBAC9BG,EAAUF,CAAS,CAAC;AAAA;AAAA,iBAExB,KAAK,mBAAmB;AAAA;AAAA;AAAA;AAAA,YAI7B,KAAK,eAAe;AAAA;AAAA;AAAA;AAAA,YAIpB,KAAK,eAAe;AAAA;AAAA;AAAA;AAAA,EAI9B;AACF;AA5mBa/B,EACK,SAAS,CAACN,CAAiB;AASnCwC,EAAA;AAAA,EADPC,EAAM,iBAAiB;AAAA,GATbnC,EAUH,WAAA,cAAA,CAAA;AAOAkC,EAAA;AAAA,EADPC,EAAM,eAAe;AAAA,GAhBXnC,EAiBH,WAAA,YAAA,CAAA;AASAkC,EAAA;AAAA,EADPE,EAAA;AAAM,GAzBIpC,EA0BH,WAAA,WAAA,CAAA;AAOAkC,EAAA;AAAA,EADPE,EAAA;AAAM,GAhCIpC,EAiCH,WAAA,yBAAA,CAAA;AAOAkC,EAAA;AAAA,EADPE,EAAA;AAAM,GAvCIpC,EAwCH,WAAA,kBAAA,CAAA;AAOAkC,EAAA;AAAA,EADPE,EAAA;AAAM,GA9CIpC,EA+CH,WAAA,iBAAA,CAAA;AAuCRkC,EAAA;AAAA,EADCG,EAAS,EAAE,MAAM,SAAS,SAAS,IAAM;AAAA,GArF/BrC,EAsFX,WAAA,QAAA,CAAA;AAOAkC,EAAA;AAAA,EADCG,EAAS,EAAE,MAAM,QAAQ,SAAS,IAAM;AAAA,GA5F9BrC,EA6FX,WAAA,aAAA,CAAA;AAOAkC,EAAA;AAAA,EADCG,EAAS,EAAE,MAAM,QAAQ,SAAS,IAAM,WAAW,WAAW;AAAA,GAnGpDrC,EAoGX,WAAA,QAAA,CAAA;AAQAkC,EAAA;AAAA,EADCG,EAAS,EAAE,MAAM,SAAS,SAAS,IAAM;AAAA,GA3G/BrC,EA4GX,WAAA,aAAA,CAAA;AAOAkC,EAAA;AAAA,EADCG,EAAS,EAAE,MAAM,SAAS,SAAS,IAAM,WAAW,aAAa;AAAA,GAlHvDrC,EAmHX,WAAA,YAAA,CAAA;AAOAkC,EAAA;AAAA,EADCG,EAAS,EAAE,MAAM,SAAS,SAAS,IAAM,WAAW,aAAa;AAAA,GAzHvDrC,EA0HX,WAAA,YAAA,CAAA;AAQAkC,EAAA;AAAA,EADCG,EAAS,EAAE,MAAM,OAAA,CAAQ;AAAA,GAjIfrC,EAkIX,WAAA,SAAA,CAAA;AAIAkC,EAAA;AAAA,EADCG,EAAS,EAAE,MAAM,QAAQ,WAAW,eAAe;AAAA,GArIzCrC,EAsIX,WAAA,cAAA,CAAA;AAtIWA,IAANkC,EAAA;AAAA,EADNI,EAAc,WAAW;AAAA,GACbtC,CAAA;"}
|
|
@@ -1,9 +1,9 @@
|
|
|
1
|
-
import { css as
|
|
2
|
-
import "
|
|
3
|
-
import {
|
|
4
|
-
import {
|
|
5
|
-
import {
|
|
6
|
-
const
|
|
1
|
+
import { css as u, nothing as m, html as f } from "lit";
|
|
2
|
+
import { property as d, state as g, query as p, customElement as b } from "lit/decorators.js";
|
|
3
|
+
import { d as _ } from "./dev-warn-YlwPHjtX.js";
|
|
4
|
+
import { H as v } from "./helix-element-BNEYeiys.js";
|
|
5
|
+
import { c as y } from "./id-counter-DuX8vsui.js";
|
|
6
|
+
const w = u`
|
|
7
7
|
:host {
|
|
8
8
|
display: inline-block;
|
|
9
9
|
position: relative;
|
|
@@ -23,7 +23,7 @@ const x = h`
|
|
|
23
23
|
z-index: var(--hx-dropdown-panel-z-index, 1000);
|
|
24
24
|
min-width: var(--hx-dropdown-panel-min-width, 160px);
|
|
25
25
|
background: var(--hx-dropdown-panel-bg, var(--hx-color-neutral-0, #ffffff));
|
|
26
|
-
border: 1px solid var(--hx-dropdown-panel-border-color, var(--hx-color-neutral-200, #
|
|
26
|
+
border: 1px solid var(--hx-dropdown-panel-border-color, var(--hx-color-neutral-200, #e2e8f0));
|
|
27
27
|
border-radius: var(--hx-dropdown-panel-border-radius, var(--hx-border-radius-md, 0.375rem));
|
|
28
28
|
box-shadow: var(
|
|
29
29
|
--hx-dropdown-panel-shadow,
|
|
@@ -49,15 +49,25 @@ const x = h`
|
|
|
49
49
|
transition: none;
|
|
50
50
|
}
|
|
51
51
|
}
|
|
52
|
+
|
|
53
|
+
/* ─── High Contrast Mode (forced-colors) ─── */
|
|
54
|
+
|
|
55
|
+
@media (forced-colors: active) {
|
|
56
|
+
[part='panel'] {
|
|
57
|
+
background-color: Canvas;
|
|
58
|
+
border: 2px solid CanvasText;
|
|
59
|
+
}
|
|
60
|
+
}
|
|
52
61
|
`;
|
|
53
|
-
var
|
|
54
|
-
for (var s = i > 1 ? void 0 : i ?
|
|
55
|
-
(
|
|
56
|
-
return i && s &&
|
|
62
|
+
var x = Object.defineProperty, k = Object.getOwnPropertyDescriptor, a = (e, t, n, i) => {
|
|
63
|
+
for (var s = i > 1 ? void 0 : i ? k(t, n) : t, o = e.length - 1, l; o >= 0; o--)
|
|
64
|
+
(l = e[o]) && (s = (i ? l(t, n, s) : l(s)) || s);
|
|
65
|
+
return i && s && x(t, n, s), s;
|
|
57
66
|
};
|
|
58
|
-
|
|
67
|
+
const C = y("hx-dropdown");
|
|
68
|
+
let r = class extends v {
|
|
59
69
|
constructor() {
|
|
60
|
-
super(...arguments), this.open = !1, this.placement = "bottom-start", this.label = "Menu", this.disabled = !1, this.distance = 4, this._panelVisible = !1, this._documentListenerAttached = !1, this._panelId =
|
|
70
|
+
super(...arguments), this.open = !1, this.placement = "bottom-start", this.label = "Menu", this.disabled = !1, this.distance = 4, this._panelVisible = !1, this._documentListenerAttached = !1, this._panelId = `${C()}-panel`, this._handleKeydown = (e) => {
|
|
61
71
|
e.key === "Escape" && this.open ? (e.stopPropagation(), this._hide(!0)) : e.key === "Tab" && this.open ? this._hide(!1) : this.open && (e.key === "ArrowDown" || e.key === "ArrowUp" || e.key === "Home" || e.key === "End") && (e.preventDefault(), this._handleMenuNavigation(e.key));
|
|
62
72
|
}, this._handleOutsideClick = (e) => {
|
|
63
73
|
e.composedPath().includes(this) || this._hide();
|
|
@@ -94,14 +104,14 @@ let o = class extends c {
|
|
|
94
104
|
async _updatePosition() {
|
|
95
105
|
const e = this._triggerWrapper, t = this._panel;
|
|
96
106
|
if (!e || !t) return;
|
|
97
|
-
const n = this.placement.replace(/^start$/, "left").replace(/^end$/, "right"), {
|
|
107
|
+
const n = this.placement.replace(/^start$/, "left").replace(/^end$/, "right"), { computePosition: i, flip: s, shift: o, offset: l } = await import("@floating-ui/dom"), { x: c, y: h } = await i(e, t, {
|
|
98
108
|
placement: n,
|
|
99
109
|
strategy: "fixed",
|
|
100
|
-
middleware: [
|
|
110
|
+
middleware: [l(this.distance), s(), o({ padding: 8 })]
|
|
101
111
|
});
|
|
102
112
|
Object.assign(t.style, {
|
|
103
|
-
left: `${
|
|
104
|
-
top: `${
|
|
113
|
+
left: `${c}px`,
|
|
114
|
+
top: `${h}px`
|
|
105
115
|
});
|
|
106
116
|
}
|
|
107
117
|
// ─── Event Handlers ───
|
|
@@ -130,7 +140,7 @@ let o = class extends c {
|
|
|
130
140
|
if (!e) return [];
|
|
131
141
|
const t = e.querySelector("slot"), n = (t == null ? void 0 : t.assignedElements({ flatten: !0 })) ?? [], i = [];
|
|
132
142
|
for (const s of n)
|
|
133
|
-
s instanceof HTMLElement && (s.matches('[role="menuitem"]') ? i.push(s) : s.querySelectorAll('[role="menuitem"]').forEach((
|
|
143
|
+
s instanceof HTMLElement && (s.matches('[role="menuitem"]') ? i.push(s) : s.querySelectorAll('[role="menuitem"]').forEach((o) => i.push(o)));
|
|
134
144
|
return i;
|
|
135
145
|
}
|
|
136
146
|
// P0-01: Find the first focusable element in slotted panel content.
|
|
@@ -142,17 +152,17 @@ let o = class extends c {
|
|
|
142
152
|
for (const s of n) {
|
|
143
153
|
if (!(s instanceof HTMLElement)) continue;
|
|
144
154
|
if (s.matches(i)) return s;
|
|
145
|
-
const
|
|
146
|
-
if (
|
|
155
|
+
const o = s.querySelector(i);
|
|
156
|
+
if (o) return o;
|
|
147
157
|
}
|
|
148
158
|
return null;
|
|
149
159
|
}
|
|
150
160
|
/** @internal */
|
|
151
161
|
_handlePanelClick(e) {
|
|
152
|
-
var
|
|
162
|
+
var o;
|
|
153
163
|
const n = e.target.closest('[role="menuitem"], [data-value]');
|
|
154
164
|
if (!n) return;
|
|
155
|
-
const i = n.dataset.value ?? n.getAttribute("value") ?? null, s = ((
|
|
165
|
+
const i = n.dataset.value ?? n.getAttribute("value") ?? null, s = ((o = n.textContent) == null ? void 0 : o.trim()) ?? "";
|
|
156
166
|
this.dispatchEvent(
|
|
157
167
|
new CustomEvent("hx-select", {
|
|
158
168
|
bubbles: !0,
|
|
@@ -163,7 +173,7 @@ let o = class extends c {
|
|
|
163
173
|
}
|
|
164
174
|
// ─── Render ───
|
|
165
175
|
render() {
|
|
166
|
-
return
|
|
176
|
+
return f`
|
|
167
177
|
<div
|
|
168
178
|
part="trigger"
|
|
169
179
|
class="trigger-wrapper"
|
|
@@ -176,7 +186,7 @@ let o = class extends c {
|
|
|
176
186
|
part="panel"
|
|
177
187
|
id=${this._panelId}
|
|
178
188
|
role="menu"
|
|
179
|
-
aria-hidden=${this._panelVisible ?
|
|
189
|
+
aria-hidden=${this._panelVisible ? m : "true"}
|
|
180
190
|
aria-label=${this.label}
|
|
181
191
|
class=${this._panelVisible ? "panel panel--visible" : "panel"}
|
|
182
192
|
@click=${this._handlePanelClick}
|
|
@@ -189,7 +199,7 @@ let o = class extends c {
|
|
|
189
199
|
/** @internal */
|
|
190
200
|
_onPanelSlotChange(e) {
|
|
191
201
|
const i = e.target.assignedElements({ flatten: !0 }).filter((s) => s.tagName.toLowerCase() !== "hx-dropdown-item");
|
|
192
|
-
i.length > 0 &&
|
|
202
|
+
i.length > 0 && _(
|
|
193
203
|
"hx-dropdown",
|
|
194
204
|
`Default slot should contain only hx-dropdown-item elements. Found unexpected: ${i.map((s) => `<${s.tagName.toLowerCase()}>`).join(", ")}. Non-hx-dropdown-item children will be included in keyboard navigation incorrectly.`
|
|
195
205
|
);
|
|
@@ -218,36 +228,35 @@ let o = class extends c {
|
|
|
218
228
|
}
|
|
219
229
|
}
|
|
220
230
|
};
|
|
221
|
-
|
|
222
|
-
o._instanceCounter = 0;
|
|
231
|
+
r.styles = [w];
|
|
223
232
|
a([
|
|
224
|
-
|
|
225
|
-
],
|
|
233
|
+
d({ type: Boolean, reflect: !0 })
|
|
234
|
+
], r.prototype, "open", 2);
|
|
226
235
|
a([
|
|
227
|
-
|
|
228
|
-
],
|
|
236
|
+
d({ type: String, reflect: !0 })
|
|
237
|
+
], r.prototype, "placement", 2);
|
|
229
238
|
a([
|
|
230
|
-
|
|
231
|
-
],
|
|
239
|
+
d()
|
|
240
|
+
], r.prototype, "label", 2);
|
|
232
241
|
a([
|
|
233
|
-
|
|
234
|
-
],
|
|
242
|
+
d({ type: Boolean, reflect: !0 })
|
|
243
|
+
], r.prototype, "disabled", 2);
|
|
235
244
|
a([
|
|
236
|
-
|
|
237
|
-
],
|
|
245
|
+
d({ type: Number })
|
|
246
|
+
], r.prototype, "distance", 2);
|
|
238
247
|
a([
|
|
239
|
-
|
|
240
|
-
],
|
|
248
|
+
g()
|
|
249
|
+
], r.prototype, "_panelVisible", 2);
|
|
241
250
|
a([
|
|
242
251
|
p('[part="panel"]')
|
|
243
|
-
],
|
|
252
|
+
], r.prototype, "_panel", 2);
|
|
244
253
|
a([
|
|
245
254
|
p('[part="trigger"]')
|
|
246
|
-
],
|
|
247
|
-
|
|
248
|
-
|
|
249
|
-
],
|
|
255
|
+
], r.prototype, "_triggerWrapper", 2);
|
|
256
|
+
r = a([
|
|
257
|
+
b("hx-dropdown")
|
|
258
|
+
], r);
|
|
250
259
|
export {
|
|
251
|
-
|
|
260
|
+
r as H
|
|
252
261
|
};
|
|
253
|
-
//# sourceMappingURL=hx-dropdown-
|
|
262
|
+
//# sourceMappingURL=hx-dropdown-BjDrPUq5.js.map
|