@helixui/library 1.1.2 → 2.0.0-next.30
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 +2962 -1965
- package/dist/base/helix-element.d.ts +134 -0
- package/dist/base/helix-element.d.ts.map +1 -0
- package/dist/base/id-counter.d.ts +32 -0
- package/dist/base/id-counter.d.ts.map +1 -0
- package/dist/base/index.d.ts +4 -0
- package/dist/base/index.d.ts.map +1 -0
- package/dist/base/styles.d.ts +19 -0
- package/dist/base/styles.d.ts.map +1 -0
- package/dist/components/hx-accordion/hx-accordion-item.d.ts +3 -0
- package/dist/components/hx-accordion/hx-accordion-item.d.ts.map +1 -1
- package/dist/components/hx-accordion/hx-accordion.d.ts +4 -1
- package/dist/components/hx-accordion/hx-accordion.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 +1 -1
- package/dist/components/hx-action-bar/hx-action-bar.d.ts.map +1 -1
- package/dist/components/hx-action-bar/index.js +1 -1
- package/dist/components/hx-alert/hx-alert.d.ts +10 -5
- 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.js +1 -1
- package/dist/components/hx-avatar/hx-avatar.d.ts.map +1 -1
- package/dist/components/hx-avatar/hx-avatar.styles.d.ts.map +1 -1
- package/dist/components/hx-avatar/index.js +1 -1
- 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.js +1 -1
- package/dist/components/hx-banner/hx-banner.d.ts +15 -5
- 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 +1 -0
- package/dist/components/hx-breadcrumb/hx-breadcrumb-item.d.ts.map +1 -1
- package/dist/components/hx-breadcrumb/hx-breadcrumb.d.ts +42 -11
- package/dist/components/hx-breadcrumb/hx-breadcrumb.d.ts.map +1 -1
- package/dist/components/hx-breadcrumb/index.js +1 -1
- package/dist/components/hx-button/hx-button.d.ts +22 -13
- 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.js +1 -1
- package/dist/components/hx-button-group/hx-button-group.d.ts +3 -6
- package/dist/components/hx-button-group/hx-button-group.d.ts.map +1 -1
- package/dist/components/hx-button-group/index.js +1 -1
- package/dist/components/hx-card/hx-card.d.ts +7 -7
- package/dist/components/hx-card/hx-card.d.ts.map +1 -1
- package/dist/components/hx-card/index.js +1 -1
- package/dist/components/hx-carousel/hx-carousel-item.d.ts.map +1 -1
- package/dist/components/hx-carousel/hx-carousel.d.ts +2 -2
- package/dist/components/hx-carousel/hx-carousel.d.ts.map +1 -1
- package/dist/components/hx-carousel/index.js +1 -1
- package/dist/components/hx-checkbox/hx-checkbox.d.ts +18 -18
- 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.js +1 -1
- package/dist/components/hx-checkbox-group/hx-checkbox-group.d.ts +8 -3
- package/dist/components/hx-checkbox-group/hx-checkbox-group.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 +134 -0
- package/dist/components/hx-clinical-status/hx-clinical-status.d.ts.map +1 -0
- package/dist/components/hx-clinical-status/hx-clinical-status.styles.d.ts +2 -0
- package/dist/components/hx-clinical-status/hx-clinical-status.styles.d.ts.map +1 -0
- package/dist/components/hx-clinical-status/index.d.ts +3 -0
- package/dist/components/hx-clinical-status/index.d.ts.map +1 -0
- package/dist/components/hx-clinical-status/index.js +5 -0
- package/dist/components/hx-clinical-status/index.js.map +1 -0
- package/dist/components/hx-code-snippet/hx-code-snippet.d.ts.map +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/color-utils.d.ts +27 -0
- package/dist/components/hx-color-picker/color-utils.d.ts.map +1 -0
- package/dist/components/hx-color-picker/hx-color-picker.d.ts +16 -4
- package/dist/components/hx-color-picker/hx-color-picker.d.ts.map +1 -1
- package/dist/components/hx-color-picker/index.js +1 -1
- package/dist/components/hx-combobox/hx-combobox.d.ts +9 -4
- 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.js +1 -1
- package/dist/components/hx-container/hx-container.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 +6 -1
- package/dist/components/hx-copy-button/hx-copy-button.d.ts.map +1 -1
- package/dist/components/hx-copy-button/index.js +1 -1
- package/dist/components/hx-counter/hx-counter.d.ts +20 -3
- 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 +8 -0
- 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.js +1 -1
- package/dist/components/hx-date-picker/hx-date-picker.d.ts +40 -3
- 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.js +1 -1
- package/dist/components/hx-dialog/hx-dialog.d.ts +4 -1
- package/dist/components/hx-dialog/hx-dialog.d.ts.map +1 -1
- package/dist/components/hx-dialog/index.js +1 -1
- package/dist/components/hx-divider/hx-divider.d.ts.map +1 -1
- package/dist/components/hx-divider/index.js +1 -1
- package/dist/components/hx-drawer/hx-drawer.d.ts +5 -8
- 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 +14 -1
- package/dist/components/hx-dropdown/hx-dropdown.d.ts.map +1 -1
- package/dist/components/hx-dropdown/index.js +1 -1
- package/dist/components/hx-field/hx-field.d.ts +1 -1
- package/dist/components/hx-field/hx-field.d.ts.map +1 -1
- package/dist/components/hx-field/index.js +1 -1
- package/dist/components/hx-field-label/hx-field-label.d.ts.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 +8 -9
- package/dist/components/hx-file-upload/hx-file-upload.d.ts.map +1 -1
- package/dist/components/hx-file-upload/index.js +1 -1
- package/dist/components/hx-form/hx-form.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.map +1 -1
- package/dist/components/hx-format-date/index.js +1 -1
- package/dist/components/hx-grid/hx-grid.d.ts +5 -9
- package/dist/components/hx-grid/hx-grid.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.map +1 -1
- package/dist/components/hx-help-text/index.js +1 -1
- package/dist/components/hx-icon/hx-icon.d.ts.map +1 -1
- package/dist/components/hx-icon/index.js +1 -1
- package/dist/components/hx-icon-button/hx-icon-button.d.ts +4 -3
- package/dist/components/hx-icon-button/hx-icon-button.d.ts.map +1 -1
- package/dist/components/hx-icon-button/index.js +1 -1
- package/dist/components/hx-image/hx-image.d.ts.map +1 -1
- package/dist/components/hx-image/index.js +1 -1
- package/dist/components/hx-link/hx-link.d.ts +1 -1
- 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.map +1 -1
- package/dist/components/hx-list/hx-list.d.ts.map +1 -1
- package/dist/components/hx-list/index.js +1 -1
- package/dist/components/hx-menu/hx-menu-divider.d.ts.map +1 -1
- package/dist/components/hx-menu/hx-menu-item.d.ts +5 -0
- package/dist/components/hx-menu/hx-menu-item.d.ts.map +1 -1
- package/dist/components/hx-menu/hx-menu.d.ts +1 -0
- 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 +2 -2
- package/dist/components/hx-meter/hx-meter.d.ts.map +1 -1
- package/dist/components/hx-meter/index.js +1 -1
- package/dist/components/hx-nav/hx-nav.d.ts +10 -0
- package/dist/components/hx-nav/hx-nav.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 +4 -3
- package/dist/components/hx-number-input/hx-number-input.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 +3 -3
- 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 +8 -0
- package/dist/components/hx-pagination/hx-pagination.d.ts.map +1 -1
- package/dist/components/hx-pagination/hx-pagination.styles.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 +113 -0
- package/dist/components/hx-patient-banner/hx-patient-banner.d.ts.map +1 -0
- package/dist/components/hx-patient-banner/hx-patient-banner.styles.d.ts +2 -0
- package/dist/components/hx-patient-banner/hx-patient-banner.styles.d.ts.map +1 -0
- package/dist/components/hx-patient-banner/index.d.ts +3 -0
- package/dist/components/hx-patient-banner/index.d.ts.map +1 -0
- package/dist/components/hx-patient-banner/index.js +5 -0
- package/dist/components/hx-patient-banner/index.js.map +1 -0
- package/dist/components/hx-phi-field/hx-phi-field.d.ts +97 -0
- package/dist/components/hx-phi-field/hx-phi-field.d.ts.map +1 -0
- package/dist/components/hx-phi-field/hx-phi-field.styles.d.ts +2 -0
- package/dist/components/hx-phi-field/hx-phi-field.styles.d.ts.map +1 -0
- package/dist/components/hx-phi-field/index.d.ts +3 -0
- package/dist/components/hx-phi-field/index.d.ts.map +1 -0
- package/dist/components/hx-phi-field/index.js +5 -0
- package/dist/components/hx-phi-field/index.js.map +1 -0
- package/dist/components/hx-popover/hx-popover.d.ts +25 -9
- package/dist/components/hx-popover/hx-popover.d.ts.map +1 -1
- package/dist/components/hx-popover/index.js +1 -1
- package/dist/components/hx-popup/hx-popup.d.ts +5 -8
- package/dist/components/hx-popup/hx-popup.d.ts.map +1 -1
- package/dist/components/hx-popup/index.js +1 -1
- package/dist/components/hx-progress-bar/hx-progress-bar.d.ts +2 -0
- package/dist/components/hx-progress-bar/hx-progress-bar.d.ts.map +1 -1
- package/dist/components/hx-progress-bar/hx-progress-bar.styles.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.map +1 -1
- package/dist/components/hx-progress-ring/index.js +1 -1
- package/dist/components/hx-prose/hx-prose.d.ts +1 -0
- package/dist/components/hx-prose/hx-prose.d.ts.map +1 -1
- package/dist/components/hx-radio-group/hx-radio-group.d.ts +3 -7
- package/dist/components/hx-radio-group/hx-radio-group.d.ts.map +1 -1
- 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.js +1 -1
- package/dist/components/hx-rating/hx-rating.d.ts +3 -3
- 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.js +1 -1
- package/dist/components/hx-select/hx-select.d.ts +17 -11
- 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.js +1 -1
- package/dist/components/hx-side-nav/hx-nav-item.d.ts +12 -0
- 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.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 +2 -2
- package/dist/components/hx-skeleton/hx-skeleton.d.ts.map +1 -1
- package/dist/components/hx-skeleton/index.js +1 -1
- package/dist/components/hx-slider/hx-slider.d.ts +5 -8
- 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.js +1 -1
- package/dist/components/hx-spinner/hx-spinner.d.ts +14 -1
- 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.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.map +1 -1
- package/dist/components/hx-stack/index.js +1 -1
- package/dist/components/hx-stat/hx-stat.d.ts +7 -2
- package/dist/components/hx-stat/hx-stat.d.ts.map +1 -1
- package/dist/components/hx-stat/index.js +1 -1
- package/dist/components/hx-status-indicator/hx-status-indicator.d.ts +19 -3
- 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 +7 -0
- 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.map +1 -1
- package/dist/components/hx-steps/index.js +1 -1
- package/dist/components/hx-structured-list/hx-structured-list.d.ts +10 -3
- package/dist/components/hx-structured-list/hx-structured-list.d.ts.map +1 -1
- package/dist/components/hx-structured-list/index.js +1 -1
- package/dist/components/hx-style-scope/hx-style-scope.d.ts +71 -0
- package/dist/components/hx-style-scope/hx-style-scope.d.ts.map +1 -0
- package/dist/components/hx-style-scope/hx-style-scope.styles.d.ts +10 -0
- package/dist/components/hx-style-scope/hx-style-scope.styles.d.ts.map +1 -0
- package/dist/components/hx-style-scope/index.d.ts +2 -0
- package/dist/components/hx-style-scope/index.d.ts.map +1 -0
- package/dist/components/hx-style-scope/index.js +5 -0
- package/dist/components/hx-style-scope/index.js.map +1 -0
- package/dist/components/hx-switch/hx-switch.d.ts +4 -4
- 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.js +1 -1
- package/dist/components/hx-table/hx-table.d.ts +1 -0
- package/dist/components/hx-table/hx-table.d.ts.map +1 -1
- package/dist/components/hx-table/hx-tbody.d.ts.map +1 -1
- package/dist/components/hx-table/hx-td.d.ts.map +1 -1
- package/dist/components/hx-table/hx-tfoot.d.ts.map +1 -1
- package/dist/components/hx-table/hx-th.d.ts.map +1 -1
- package/dist/components/hx-table/hx-thead.d.ts.map +1 -1
- 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.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 +1 -0
- 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 +12 -2
- package/dist/components/hx-tabs/hx-tabs.d.ts.map +1 -1
- package/dist/components/hx-tabs/index.js +1 -1
- 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.js +1 -1
- package/dist/components/hx-text/hx-text.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 +16 -15
- 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.js +1 -1
- package/dist/components/hx-textarea/hx-textarea.d.ts +4 -4
- 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.js +1 -1
- package/dist/components/hx-theme/hx-theme.d.ts +82 -3
- package/dist/components/hx-theme/hx-theme.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 +6 -1
- package/dist/components/hx-time-picker/hx-time-picker.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 +1 -1
- package/dist/components/hx-toast/hx-toast-stack.d.ts.map +1 -1
- package/dist/components/hx-toast/hx-toast.d.ts +9 -5
- 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-toast/toast-factory.d.ts.map +1 -1
- package/dist/components/hx-toggle-button/hx-toggle-button.d.ts +4 -3
- 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.js +1 -1
- package/dist/components/hx-tooltip/hx-tooltip.d.ts +1 -2
- package/dist/components/hx-tooltip/hx-tooltip.d.ts.map +1 -1
- package/dist/components/hx-tooltip/index.js +1 -1
- package/dist/components/hx-top-nav/hx-top-nav.d.ts.map +1 -1
- package/dist/components/hx-top-nav/index.js +1 -1
- package/dist/components/hx-tree-view/hx-tree-item.d.ts +12 -0
- package/dist/components/hx-tree-view/hx-tree-item.d.ts.map +1 -1
- package/dist/components/hx-tree-view/hx-tree-view.d.ts +27 -2
- 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.js +1 -1
- package/dist/components/hx-visually-hidden/hx-visually-hidden.d.ts.map +1 -1
- package/dist/components/hx-visually-hidden/index.js +1 -1
- package/dist/controllers/helix-audit-controller.d.ts +71 -0
- package/dist/controllers/helix-audit-controller.d.ts.map +1 -0
- package/dist/css/helix-all.css +9743 -0
- package/dist/css/helix-core.css +1839 -0
- package/dist/css/helix-data.css +639 -0
- package/dist/css/helix-feedback.css +1268 -0
- package/dist/css/helix-forms.css +2525 -0
- package/dist/css/helix-layout.css +380 -0
- package/dist/css/helix-media.css +213 -0
- package/dist/css/helix-navigation.css +1131 -0
- package/dist/css/helix-overlay.css +643 -0
- package/dist/css/helix-tokens.css +432 -0
- package/dist/css/helix-utility.css +633 -0
- package/dist/css/hx-accordion.css +10 -0
- package/dist/css/hx-action-bar.css +117 -0
- package/dist/css/hx-alert.css +213 -0
- package/dist/css/hx-avatar.css +134 -0
- package/dist/css/hx-badge.css +178 -0
- package/dist/css/hx-banner.css +203 -0
- package/dist/css/hx-breadcrumb.css +36 -0
- package/dist/css/hx-button-group.css +91 -0
- package/dist/css/hx-button.css +296 -0
- package/dist/css/hx-card.css +161 -0
- package/dist/css/hx-carousel.css +211 -0
- package/dist/css/hx-checkbox-group.css +77 -0
- package/dist/css/hx-checkbox.css +219 -0
- package/dist/css/hx-clinical-status.css +248 -0
- package/dist/css/hx-code-snippet.css +179 -0
- package/dist/css/hx-color-picker.css +2 -0
- package/dist/css/hx-combobox.css +2 -0
- package/dist/css/hx-container.css +82 -0
- package/dist/css/hx-copy-button.css +121 -0
- package/dist/css/hx-counter.css +51 -0
- package/dist/css/hx-data-table.css +207 -0
- package/dist/css/hx-date-picker.css +2 -0
- package/dist/css/hx-dialog.css +190 -0
- package/dist/css/hx-divider.css +87 -0
- package/dist/css/hx-drawer.css +262 -0
- package/dist/css/hx-dropdown.css +46 -0
- package/dist/css/hx-field-label.css +38 -0
- package/dist/css/hx-field.css +119 -0
- package/dist/css/hx-file-upload.css +241 -0
- package/dist/css/hx-form.css +2 -0
- package/dist/css/hx-format-date.css +10 -0
- package/dist/css/hx-grid.css +14 -0
- package/dist/css/hx-help-text.css +50 -0
- package/dist/css/hx-icon-button.css +152 -0
- package/dist/css/hx-icon.css +73 -0
- package/dist/css/hx-image.css +41 -0
- package/dist/css/hx-link.css +105 -0
- package/dist/css/hx-list.css +48 -0
- package/dist/css/hx-menu.css +23 -0
- package/dist/css/hx-meter.css +113 -0
- package/dist/css/hx-nav.css +242 -0
- package/dist/css/hx-number-input.css +246 -0
- package/dist/css/hx-overflow-menu.css +133 -0
- package/dist/css/hx-pagination.css +193 -0
- package/dist/css/hx-patient-banner.css +139 -0
- package/dist/css/hx-phi-field.css +97 -0
- package/dist/css/hx-popover.css +61 -0
- package/dist/css/hx-popup.css +31 -0
- package/dist/css/hx-progress-bar.css +133 -0
- package/dist/css/hx-progress-ring.css +142 -0
- package/dist/css/hx-prose.css +2 -0
- package/dist/css/hx-radio-group.css +77 -0
- package/dist/css/hx-rating.css +96 -0
- package/dist/css/hx-select.css +295 -0
- package/dist/css/hx-side-nav.css +149 -0
- package/dist/css/hx-skeleton.css +82 -0
- package/dist/css/hx-slider.css +287 -0
- package/dist/css/hx-spinner.css +116 -0
- package/dist/css/hx-split-button.css +309 -0
- package/dist/css/hx-split-panel.css +168 -0
- package/dist/css/hx-stack.css +104 -0
- package/dist/css/hx-stat.css +106 -0
- package/dist/css/hx-status-indicator.css +126 -0
- package/dist/css/hx-steps.css +52 -0
- package/dist/css/hx-structured-list.css +75 -0
- package/dist/css/hx-style-scope.css +4 -0
- package/dist/css/hx-switch.css +169 -0
- package/dist/css/hx-table.css +128 -0
- package/dist/css/hx-tabs.css +76 -0
- package/dist/css/hx-tag.css +146 -0
- package/dist/css/hx-text-input.css +214 -0
- package/dist/css/hx-text.css +149 -0
- package/dist/css/hx-textarea.css +180 -0
- package/dist/css/hx-theme.css +23 -0
- package/dist/css/hx-time-picker.css +2 -0
- package/dist/css/hx-toast.css +230 -0
- package/dist/css/hx-toggle-button.css +207 -0
- package/dist/css/hx-tooltip.css +51 -0
- package/dist/css/hx-top-nav.css +203 -0
- package/dist/css/hx-tree-view.css +22 -0
- package/dist/css/hx-visually-hidden.css +26 -0
- package/dist/css/index.css +84 -0
- package/dist/css/manifest.json +2704 -0
- package/dist/index.d.ts +15 -9
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +268 -176
- package/dist/index.js.map +1 -1
- package/dist/mixins/FocusMixin.d.ts +49 -0
- package/dist/mixins/FocusMixin.d.ts.map +1 -0
- package/dist/mixins/FormMixin.d.ts +69 -0
- package/dist/mixins/FormMixin.d.ts.map +1 -0
- package/dist/mixins/aria-delegation.d.ts +97 -0
- package/dist/mixins/aria-delegation.d.ts.map +1 -0
- package/dist/mixins/index.d.ts +5 -0
- package/dist/mixins/index.d.ts.map +1 -0
- package/dist/shared/FormMixin-Bjvw20G5.js +88 -0
- package/dist/shared/FormMixin-Bjvw20G5.js.map +1 -0
- package/dist/shared/aria-delegation-CBP9eQ0M.js +107 -0
- package/dist/shared/aria-delegation-CBP9eQ0M.js.map +1 -0
- package/dist/shared/document-token-adoption-Dym9ALA4.js +15 -0
- package/dist/shared/document-token-adoption-Dym9ALA4.js.map +1 -0
- package/dist/shared/{hx-accordion-D1kFhdeQ.js → hx-accordion-Cvs-uzZq.js} +86 -58
- package/dist/shared/hx-accordion-Cvs-uzZq.js.map +1 -0
- package/dist/shared/{hx-action-bar-D4bulGQP.js → hx-action-bar-B2BNlKQv.js} +34 -35
- package/dist/shared/hx-action-bar-B2BNlKQv.js.map +1 -0
- package/dist/shared/{hx-alert-CSxCF2rr.js → hx-alert-CnDlZO6m.js} +38 -34
- package/dist/shared/hx-alert-CnDlZO6m.js.map +1 -0
- package/dist/shared/{hx-avatar-Cun-O99h.js → hx-avatar-C68g1G2e.js} +32 -15
- package/dist/shared/hx-avatar-C68g1G2e.js.map +1 -0
- package/dist/shared/{hx-badge-CsFd2xtw.js → hx-badge-D5vy_5BO.js} +49 -40
- package/dist/shared/hx-badge-D5vy_5BO.js.map +1 -0
- package/dist/shared/{hx-banner-BTV-X2xF.js → hx-banner-Ccif-GaB.js} +95 -60
- package/dist/shared/hx-banner-Ccif-GaB.js.map +1 -0
- package/dist/shared/{hx-breadcrumb-item-4IwaLgaO.js → hx-breadcrumb-item-DhxDZI3r.js} +92 -89
- package/dist/shared/hx-breadcrumb-item-DhxDZI3r.js.map +1 -0
- package/dist/shared/{hx-button-7k-KeCYU.js → hx-button-BF3VwcOJ.js} +128 -63
- package/dist/shared/hx-button-BF3VwcOJ.js.map +1 -0
- package/dist/shared/{hx-button-group-CWjWv-wS.js → hx-button-group-B8u25JjV.js} +9 -9
- package/dist/shared/hx-button-group-B8u25JjV.js.map +1 -0
- package/dist/shared/{hx-card-0hT3G5hi.js → hx-card-Dps4jvG9.js} +34 -34
- package/dist/shared/hx-card-Dps4jvG9.js.map +1 -0
- package/dist/shared/{hx-carousel-item-DgeYyYZJ.js → hx-carousel-item-Dmo9pGFm.js} +25 -25
- package/dist/shared/hx-carousel-item-Dmo9pGFm.js.map +1 -0
- package/dist/shared/{hx-checkbox-BvjO-O41.js → hx-checkbox-99zyEKj7.js} +67 -70
- package/dist/shared/hx-checkbox-99zyEKj7.js.map +1 -0
- package/dist/shared/{hx-checkbox-group-Z5VvWzcj.js → hx-checkbox-group-J2CGHDwY.js} +48 -42
- package/dist/shared/hx-checkbox-group-J2CGHDwY.js.map +1 -0
- package/dist/shared/hx-clinical-status-CGx5q5PL.js +469 -0
- package/dist/shared/hx-clinical-status-CGx5q5PL.js.map +1 -0
- package/dist/shared/{hx-code-snippet-DqzPkH4K.js → hx-code-snippet-vAzJjm2O.js} +57 -48
- package/dist/shared/hx-code-snippet-vAzJjm2O.js.map +1 -0
- package/dist/shared/{hx-color-picker-Da8z6AlQ.js → hx-color-picker-CzMu9Fzw.js} +153 -137
- package/dist/shared/hx-color-picker-CzMu9Fzw.js.map +1 -0
- package/dist/shared/{hx-combobox-CivfelTS.js → hx-combobox-Dhw33U40.js} +17 -17
- package/dist/shared/hx-combobox-Dhw33U40.js.map +1 -0
- package/dist/shared/{hx-container-DLUKnTi9.js → hx-container-Dz4v6FSd.js} +15 -15
- package/dist/shared/hx-container-Dz4v6FSd.js.map +1 -0
- package/dist/shared/{hx-copy-button--0dymSvw.js → hx-copy-button-Dcul7VwZ.js} +52 -45
- package/dist/shared/hx-copy-button-Dcul7VwZ.js.map +1 -0
- package/dist/shared/hx-counter-czWWvciz.js +185 -0
- package/dist/shared/hx-counter-czWWvciz.js.map +1 -0
- package/dist/shared/{hx-data-table-BWvd5NNx.js → hx-data-table-CAVgT4JG.js} +89 -53
- package/dist/shared/hx-data-table-CAVgT4JG.js.map +1 -0
- package/dist/shared/{hx-date-picker-6voxxxNE.js → hx-date-picker-Be8lTTO7.js} +105 -92
- package/dist/shared/hx-date-picker-Be8lTTO7.js.map +1 -0
- package/dist/shared/{hx-dialog-DkUSnVgw.js → hx-dialog-DTGX2FbP.js} +98 -89
- package/dist/shared/hx-dialog-DTGX2FbP.js.map +1 -0
- package/dist/shared/{hx-divider-DNNs4e8q.js → hx-divider-BJjarZ9z.js} +15 -15
- package/dist/shared/hx-divider-BJjarZ9z.js.map +1 -0
- package/dist/shared/{hx-drawer-CJcRZcns.js → hx-drawer-C5qI7jf1.js} +87 -47
- package/dist/shared/hx-drawer-C5qI7jf1.js.map +1 -0
- package/dist/shared/{hx-dropdown-Bo0KTM1A.js → hx-dropdown-BxNnUDyD.js} +56 -41
- package/dist/shared/hx-dropdown-BxNnUDyD.js.map +1 -0
- package/dist/shared/{hx-field-3MmzJ4kZ.js → hx-field-J1IUbQ8n.js} +21 -21
- package/dist/shared/hx-field-J1IUbQ8n.js.map +1 -0
- package/dist/shared/{hx-field-label-Bg-EWvqF.js → hx-field-label-DhVdkhCN.js} +11 -14
- package/dist/shared/hx-field-label-DhVdkhCN.js.map +1 -0
- package/dist/shared/{hx-file-upload-ByjAgfNy.js → hx-file-upload-79nMhnM_.js} +79 -88
- package/dist/shared/hx-file-upload-79nMhnM_.js.map +1 -0
- package/dist/shared/{hx-form-BpS6v3Iu.js → hx-form-fJE-FJQV.js} +36 -32
- package/dist/shared/{hx-form-BpS6v3Iu.js.map → hx-form-fJE-FJQV.js.map} +1 -1
- package/dist/shared/{hx-format-date-BdnWV2kX.js → hx-format-date-BMukpO2t.js} +19 -17
- package/dist/shared/hx-format-date-BMukpO2t.js.map +1 -0
- package/dist/shared/{hx-grid-gEjuF0cR.js → hx-grid-CO6JZ6Kn.js} +12 -12
- package/dist/shared/hx-grid-CO6JZ6Kn.js.map +1 -0
- package/dist/shared/{hx-help-text-BAcEGRUE.js → hx-help-text-CYGvBLET.js} +13 -13
- package/dist/shared/hx-help-text-CYGvBLET.js.map +1 -0
- package/dist/shared/{hx-icon-CP6OnLoM.js → hx-icon-C1hDsw-b.js} +15 -15
- package/dist/shared/hx-icon-C1hDsw-b.js.map +1 -0
- package/dist/shared/{hx-icon-button-DzH_bRtC.js → hx-icon-button-DOWKUs0-.js} +10 -10
- package/dist/shared/hx-icon-button-DOWKUs0-.js.map +1 -0
- package/dist/shared/{hx-image-C6pGiI6c.js → hx-image-BqABFHGZ.js} +21 -21
- package/dist/shared/hx-image-BqABFHGZ.js.map +1 -0
- package/dist/shared/{hx-link-Tmk_YPvW.js → hx-link-CAFRuAKJ.js} +27 -25
- package/dist/shared/hx-link-CAFRuAKJ.js.map +1 -0
- package/dist/shared/{hx-list-DwInEX2H.js → hx-list-zbgO-9Xe.js} +12 -12
- package/dist/shared/hx-list-zbgO-9Xe.js.map +1 -0
- package/dist/shared/{hx-menu-divider-DR4G_rqw.js → hx-menu-divider-B1TIKAaq.js} +50 -30
- package/dist/shared/hx-menu-divider-B1TIKAaq.js.map +1 -0
- package/dist/shared/{hx-meter-uXkTZq-W.js → hx-meter-BWNeWrg2.js} +18 -18
- package/dist/shared/hx-meter-BWNeWrg2.js.map +1 -0
- package/dist/shared/{hx-nav-3JsN2Oak.js → hx-nav-DqNzqH2s.js} +119 -107
- package/dist/shared/hx-nav-DqNzqH2s.js.map +1 -0
- package/dist/shared/{hx-nav-item-D3EJatzc.js → hx-nav-item-D-9uG-Tt.js} +181 -115
- package/dist/shared/hx-nav-item-D-9uG-Tt.js.map +1 -0
- package/dist/shared/{hx-number-input-CIpL2BEh.js → hx-number-input-D7Jczm0J.js} +42 -41
- package/dist/shared/hx-number-input-D7Jczm0J.js.map +1 -0
- package/dist/shared/{hx-overflow-menu-2kgOJ_ht.js → hx-overflow-menu-UvSgk7yV.js} +20 -16
- package/dist/shared/hx-overflow-menu-UvSgk7yV.js.map +1 -0
- package/dist/shared/{hx-pagination-Blt-fFqV.js → hx-pagination-DBovb97q.js} +91 -75
- package/dist/shared/hx-pagination-DBovb97q.js.map +1 -0
- package/dist/shared/hx-patient-banner-DLeU2pC2.js +297 -0
- package/dist/shared/hx-patient-banner-DLeU2pC2.js.map +1 -0
- package/dist/shared/hx-phi-field-BwlVKfHI.js +295 -0
- package/dist/shared/hx-phi-field-BwlVKfHI.js.map +1 -0
- package/dist/shared/{hx-popover-DxE67miP.js → hx-popover-DdjLdSr8.js} +96 -69
- package/dist/shared/hx-popover-DdjLdSr8.js.map +1 -0
- package/dist/shared/{hx-popup-Dg6n_PbY.js → hx-popup-DEYZKeH1.js} +15 -15
- package/dist/shared/hx-popup-DEYZKeH1.js.map +1 -0
- package/dist/shared/{hx-progress-bar-Dm_EHyng.js → hx-progress-bar-CdbFsimb.js} +44 -42
- package/dist/shared/hx-progress-bar-CdbFsimb.js.map +1 -0
- package/dist/shared/{hx-progress-ring-DpxBDD5d.js → hx-progress-ring-3YcGRxes.js} +8 -8
- package/dist/shared/hx-progress-ring-3YcGRxes.js.map +1 -0
- package/dist/shared/hx-prose-Ml_L2zje.js.map +1 -1
- package/dist/shared/{hx-radio-BywgVSEu.js → hx-radio-BCEpX1tj.js} +40 -39
- package/dist/shared/hx-radio-BCEpX1tj.js.map +1 -0
- package/dist/shared/{hx-rating-CUWBQ0fZ.js → hx-rating-BXnSN-Ln.js} +92 -96
- package/dist/shared/hx-rating-BXnSN-Ln.js.map +1 -0
- package/dist/shared/{hx-select-BwDwxk-M.js → hx-select-vzsOOYNx.js} +137 -98
- package/dist/shared/hx-select-vzsOOYNx.js.map +1 -0
- package/dist/shared/{hx-skeleton-BHvALyd7.js → hx-skeleton-Dikv9b7p.js} +6 -6
- package/dist/shared/hx-skeleton-Dikv9b7p.js.map +1 -0
- package/dist/shared/{hx-slider-D_0EKJyk.js → hx-slider-DnncjdOT.js} +31 -26
- package/dist/shared/hx-slider-DnncjdOT.js.map +1 -0
- package/dist/shared/{hx-spinner-DMn4SChS.js → hx-spinner-B52nJ4Vt.js} +15 -14
- package/dist/shared/hx-spinner-B52nJ4Vt.js.map +1 -0
- package/dist/shared/{hx-split-button-CypgLXw1.js → hx-split-button-BJHIszDb.js} +44 -35
- package/dist/shared/hx-split-button-BJHIszDb.js.map +1 -0
- package/dist/shared/{hx-split-panel-CV_Kr4EK.js → hx-split-panel-uNW9xrA3.js} +18 -15
- package/dist/shared/hx-split-panel-uNW9xrA3.js.map +1 -0
- package/dist/shared/{hx-stack-BStY1RmV.js → hx-stack-BHc4gVv_.js} +9 -9
- package/dist/shared/hx-stack-BHc4gVv_.js.map +1 -0
- package/dist/shared/{hx-stat-CHntLHJM.js → hx-stat-BfgKgBeq.js} +43 -35
- package/dist/shared/hx-stat-BfgKgBeq.js.map +1 -0
- package/dist/shared/{hx-status-indicator-C1BwEvUw.js → hx-status-indicator-C146uMF0.js} +81 -40
- package/dist/shared/hx-status-indicator-C146uMF0.js.map +1 -0
- package/dist/shared/{hx-step-BIVWSPxd.js → hx-step-C0Unvyen.js} +48 -84
- package/dist/shared/hx-step-C0Unvyen.js.map +1 -0
- package/dist/shared/{hx-structured-list-CMWllxGg.js → hx-structured-list-3R69RETR.js} +25 -22
- package/dist/shared/hx-structured-list-3R69RETR.js.map +1 -0
- package/dist/shared/hx-style-scope-D3dsKS58.js +126 -0
- package/dist/shared/hx-style-scope-D3dsKS58.js.map +1 -0
- package/dist/shared/{hx-switch-BgX8kuWt.js → hx-switch-BCNpbuk-.js} +14 -11
- package/dist/shared/hx-switch-BCNpbuk-.js.map +1 -0
- package/dist/shared/{hx-tab-panel-DhOq67jj.js → hx-tab-panel-D7BTBgDQ.js} +165 -126
- package/dist/shared/hx-tab-panel-D7BTBgDQ.js.map +1 -0
- package/dist/shared/{hx-tag-CzOTDcXI.js → hx-tag-C2E-6fJ3.js} +20 -19
- package/dist/shared/hx-tag-C2E-6fJ3.js.map +1 -0
- package/dist/shared/{hx-td-h6oeW6YC.js → hx-td-DWcp2XDO.js} +49 -46
- package/dist/shared/hx-td-DWcp2XDO.js.map +1 -0
- package/dist/shared/{hx-text-DTXjiviE.js → hx-text-DxyBxz25.js} +27 -27
- package/dist/shared/hx-text-DxyBxz25.js.map +1 -0
- package/dist/shared/hx-text-input-2LTGt0vQ.js +576 -0
- package/dist/shared/hx-text-input-2LTGt0vQ.js.map +1 -0
- package/dist/shared/{hx-textarea-BgX7rxyo.js → hx-textarea-BZspivFK.js} +23 -23
- package/dist/shared/hx-textarea-BZspivFK.js.map +1 -0
- package/dist/shared/hx-theme-J2YEpSIL.js +300 -0
- package/dist/shared/hx-theme-J2YEpSIL.js.map +1 -0
- package/dist/shared/{hx-time-picker-DmLu7WUC.js → hx-time-picker-CVrw4tju.js} +89 -88
- package/dist/shared/hx-time-picker-CVrw4tju.js.map +1 -0
- package/dist/shared/{hx-toggle-button-D1jpDvSA.js → hx-toggle-button-Ss7Gppx3.js} +14 -11
- package/dist/shared/hx-toggle-button-Ss7Gppx3.js.map +1 -0
- package/dist/shared/{hx-tooltip-kh7QFPKu.js → hx-tooltip-xRNjEX7_.js} +26 -21
- package/dist/shared/hx-tooltip-xRNjEX7_.js.map +1 -0
- package/dist/shared/{hx-top-nav-DYlnzDaU.js → hx-top-nav-28mxYGuj.js} +7 -7
- package/dist/shared/hx-top-nav-28mxYGuj.js.map +1 -0
- package/dist/shared/{hx-tree-item-BP6UF_H1.js → hx-tree-item-C-cRw_ZA.js} +170 -106
- package/dist/shared/hx-tree-item-C-cRw_ZA.js.map +1 -0
- package/dist/shared/{hx-visually-hidden-CCTQTjbR.js → hx-visually-hidden-D6Dv2l8l.js} +13 -13
- package/dist/shared/hx-visually-hidden-D6Dv2l8l.js.map +1 -0
- package/dist/shared/id-counter-JhvVCnjh.js +143 -0
- package/dist/shared/id-counter-JhvVCnjh.js.map +1 -0
- package/dist/shared/{toast-factory-DTy-qN8r.js → toast-factory-oPHbhMZI.js} +58 -46
- package/dist/shared/toast-factory-oPHbhMZI.js.map +1 -0
- package/dist/utilities/adoptedStylesheetRegistry.d.ts +47 -0
- package/dist/utilities/adoptedStylesheetRegistry.d.ts.map +1 -0
- package/dist/utilities/document-token-adoption.d.ts +10 -0
- package/dist/utilities/document-token-adoption.d.ts.map +1 -0
- package/dist/utilities/generateScopedSelectors.d.ts +30 -0
- package/dist/utilities/generateScopedSelectors.d.ts.map +1 -0
- package/dist/utilities/injectLightStyles.d.ts +37 -0
- package/dist/utilities/injectLightStyles.d.ts.map +1 -0
- package/dist/utilities/lightStyleRegistry.d.ts +41 -0
- package/dist/utilities/lightStyleRegistry.d.ts.map +1 -0
- package/dist/utilities/sheetManager.d.ts +62 -0
- package/dist/utilities/sheetManager.d.ts.map +1 -0
- package/dist/utils/contrast-checker.d.ts +86 -0
- package/dist/utils/contrast-checker.d.ts.map +1 -0
- package/dist/utils/token-merger.d.ts +24 -0
- package/dist/utils/token-merger.d.ts.map +1 -0
- package/fouc.css +37 -0
- package/package.json +28 -6
- package/dist/shared/hx-accordion-D1kFhdeQ.js.map +0 -1
- package/dist/shared/hx-action-bar-D4bulGQP.js.map +0 -1
- package/dist/shared/hx-alert-CSxCF2rr.js.map +0 -1
- package/dist/shared/hx-avatar-Cun-O99h.js.map +0 -1
- package/dist/shared/hx-badge-CsFd2xtw.js.map +0 -1
- package/dist/shared/hx-banner-BTV-X2xF.js.map +0 -1
- package/dist/shared/hx-breadcrumb-item-4IwaLgaO.js.map +0 -1
- package/dist/shared/hx-button-7k-KeCYU.js.map +0 -1
- package/dist/shared/hx-button-group-CWjWv-wS.js.map +0 -1
- package/dist/shared/hx-card-0hT3G5hi.js.map +0 -1
- package/dist/shared/hx-carousel-item-DgeYyYZJ.js.map +0 -1
- package/dist/shared/hx-checkbox-BvjO-O41.js.map +0 -1
- package/dist/shared/hx-checkbox-group-Z5VvWzcj.js.map +0 -1
- package/dist/shared/hx-code-snippet-DqzPkH4K.js.map +0 -1
- package/dist/shared/hx-color-picker-Da8z6AlQ.js.map +0 -1
- package/dist/shared/hx-combobox-CivfelTS.js.map +0 -1
- package/dist/shared/hx-container-DLUKnTi9.js.map +0 -1
- package/dist/shared/hx-copy-button--0dymSvw.js.map +0 -1
- package/dist/shared/hx-counter-Duf00H7p.js +0 -147
- package/dist/shared/hx-counter-Duf00H7p.js.map +0 -1
- package/dist/shared/hx-data-table-BWvd5NNx.js.map +0 -1
- package/dist/shared/hx-date-picker-6voxxxNE.js.map +0 -1
- package/dist/shared/hx-dialog-DkUSnVgw.js.map +0 -1
- package/dist/shared/hx-divider-DNNs4e8q.js.map +0 -1
- package/dist/shared/hx-drawer-CJcRZcns.js.map +0 -1
- package/dist/shared/hx-dropdown-Bo0KTM1A.js.map +0 -1
- package/dist/shared/hx-field-3MmzJ4kZ.js.map +0 -1
- package/dist/shared/hx-field-label-Bg-EWvqF.js.map +0 -1
- package/dist/shared/hx-file-upload-ByjAgfNy.js.map +0 -1
- package/dist/shared/hx-format-date-BdnWV2kX.js.map +0 -1
- package/dist/shared/hx-grid-gEjuF0cR.js.map +0 -1
- package/dist/shared/hx-help-text-BAcEGRUE.js.map +0 -1
- package/dist/shared/hx-icon-CP6OnLoM.js.map +0 -1
- package/dist/shared/hx-icon-button-DzH_bRtC.js.map +0 -1
- package/dist/shared/hx-image-C6pGiI6c.js.map +0 -1
- package/dist/shared/hx-link-Tmk_YPvW.js.map +0 -1
- package/dist/shared/hx-list-DwInEX2H.js.map +0 -1
- package/dist/shared/hx-menu-divider-DR4G_rqw.js.map +0 -1
- package/dist/shared/hx-meter-uXkTZq-W.js.map +0 -1
- package/dist/shared/hx-nav-3JsN2Oak.js.map +0 -1
- package/dist/shared/hx-nav-item-D3EJatzc.js.map +0 -1
- package/dist/shared/hx-number-input-CIpL2BEh.js.map +0 -1
- package/dist/shared/hx-overflow-menu-2kgOJ_ht.js.map +0 -1
- package/dist/shared/hx-pagination-Blt-fFqV.js.map +0 -1
- package/dist/shared/hx-popover-DxE67miP.js.map +0 -1
- package/dist/shared/hx-popup-Dg6n_PbY.js.map +0 -1
- package/dist/shared/hx-progress-bar-Dm_EHyng.js.map +0 -1
- package/dist/shared/hx-progress-ring-DpxBDD5d.js.map +0 -1
- package/dist/shared/hx-radio-BywgVSEu.js.map +0 -1
- package/dist/shared/hx-rating-CUWBQ0fZ.js.map +0 -1
- package/dist/shared/hx-select-BwDwxk-M.js.map +0 -1
- package/dist/shared/hx-skeleton-BHvALyd7.js.map +0 -1
- package/dist/shared/hx-slider-D_0EKJyk.js.map +0 -1
- package/dist/shared/hx-spinner-DMn4SChS.js.map +0 -1
- package/dist/shared/hx-split-button-CypgLXw1.js.map +0 -1
- package/dist/shared/hx-split-panel-CV_Kr4EK.js.map +0 -1
- package/dist/shared/hx-stack-BStY1RmV.js.map +0 -1
- package/dist/shared/hx-stat-CHntLHJM.js.map +0 -1
- package/dist/shared/hx-status-indicator-C1BwEvUw.js.map +0 -1
- package/dist/shared/hx-step-BIVWSPxd.js.map +0 -1
- package/dist/shared/hx-structured-list-CMWllxGg.js.map +0 -1
- package/dist/shared/hx-switch-BgX8kuWt.js.map +0 -1
- package/dist/shared/hx-tab-panel-DhOq67jj.js.map +0 -1
- package/dist/shared/hx-tag-CzOTDcXI.js.map +0 -1
- package/dist/shared/hx-td-h6oeW6YC.js.map +0 -1
- package/dist/shared/hx-text-DTXjiviE.js.map +0 -1
- package/dist/shared/hx-text-input-CqEdDHMU.js +0 -461
- package/dist/shared/hx-text-input-CqEdDHMU.js.map +0 -1
- package/dist/shared/hx-textarea-BgX7rxyo.js.map +0 -1
- package/dist/shared/hx-theme-6GDoUG8j.js +0 -176
- package/dist/shared/hx-theme-6GDoUG8j.js.map +0 -1
- package/dist/shared/hx-time-picker-DmLu7WUC.js.map +0 -1
- package/dist/shared/hx-toggle-button-D1jpDvSA.js.map +0 -1
- package/dist/shared/hx-tooltip-kh7QFPKu.js.map +0 -1
- package/dist/shared/hx-top-nav-DYlnzDaU.js.map +0 -1
- package/dist/shared/hx-tree-item-BP6UF_H1.js.map +0 -1
- package/dist/shared/hx-visually-hidden-CCTQTjbR.js.map +0 -1
- package/dist/shared/toast-factory-DTy-qN8r.js.map +0 -1
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"hx-visually-hidden-D6Dv2l8l.js","sources":["../../src/components/hx-visually-hidden/hx-visually-hidden.styles.ts","../../src/components/hx-visually-hidden/hx-visually-hidden.ts"],"sourcesContent":["import { css } from 'lit';\n\nexport const helixVisuallyHiddenStyles = css`\n :host {\n position: absolute !important;\n width: 1px !important;\n height: 1px !important;\n padding: 0 !important;\n margin: -1px !important;\n overflow: hidden !important;\n clip: rect(0, 0, 0, 0) !important;\n clip-path: inset(50%) !important;\n white-space: nowrap !important;\n border: 0 !important;\n }\n\n :host([focusable]:focus-within) {\n position: static !important;\n width: auto !important;\n height: auto !important;\n padding: 0 !important;\n margin: 0 !important;\n overflow: visible !important;\n clip: auto !important;\n clip-path: none !important;\n white-space: normal !important;\n border: 0 !important;\n }\n`;\n","import { LitElement, html } from 'lit';\nimport '../../utilities/document-token-adoption.js';\nimport { customElement, property } from 'lit/decorators.js';\nimport { helixVisuallyHiddenStyles } from './hx-visually-hidden.styles.js';\n\n/**\n * A utility component that hides content visually while keeping it\n * accessible to screen readers. Uses the standard visually-hidden CSS\n * technique — does NOT use `visibility: hidden` or `display: none`,\n * which would also hide content from assistive technologies.\n *\n * @summary Hides content visually while keeping it accessible to screen readers.\n *\n * @tag hx-visually-hidden\n *\n * @slot - The content to hide visually but expose to screen readers.\n *\n * @csspart base - The inner wrapper element containing the slotted content.\n *\n * @example Basic usage — accessible label for an icon button\n * ```html\n * <button>\n * <hx-icon name=\"close\"></hx-icon>\n * <hx-visually-hidden>Close dialog</hx-visually-hidden>\n * </button>\n * ```\n *\n * @example Skip link — becomes visible when focused\n * ```html\n * <hx-visually-hidden focusable>\n * <a href=\"#main-content\">Skip to main content</a>\n * </hx-visually-hidden>\n * ```\n */\n@customElement('hx-visually-hidden')\nexport class HelixVisuallyHidden extends LitElement {\n static override styles = [helixVisuallyHiddenStyles];\n\n /**\n * When true, the component becomes visible when a focusable child\n * (such as a skip link) receives focus. This enables the standard\n * \"skip to content\" accessibility pattern.\n */\n @property({ type: Boolean, reflect: true })\n focusable = false;\n\n override render() {\n return html`<span part=\"base\"><slot></slot></span>`;\n }\n}\n\ndeclare global {\n interface HTMLElementTagNameMap {\n 'hx-visually-hidden': HelixVisuallyHidden;\n }\n}\n"],"names":["helixVisuallyHiddenStyles","css","HelixVisuallyHidden","LitElement","html","__decorateClass","property","customElement"],"mappings":";;;AAEO,MAAMA,IAA4BC;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;;;;;;ACiClC,IAAMC,IAAN,cAAkCC,EAAW;AAAA,EAA7C,cAAA;AAAA,UAAA,GAAA,SAAA,GASL,KAAA,YAAY;AAAA,EAAA;AAAA,EAEH,SAAS;AAChB,WAAOC;AAAA,EACT;AACF;AAdaF,EACK,SAAS,CAACF,CAAyB;AAQnDK,EAAA;AAAA,EADCC,EAAS,EAAE,MAAM,SAAS,SAAS,IAAM;AAAA,GAR/BJ,EASX,WAAA,aAAA,CAAA;AATWA,IAANG,EAAA;AAAA,EADNE,EAAc,oBAAoB;AAAA,GACtBL,CAAA;"}
|
|
@@ -0,0 +1,143 @@
|
|
|
1
|
+
var c = (s) => {
|
|
2
|
+
throw TypeError(s);
|
|
3
|
+
};
|
|
4
|
+
var l = (s, e, t) => e.has(s) || c("Cannot " + t);
|
|
5
|
+
var n = (s, e, t) => (l(s, e, "read from private field"), t ? t.call(s) : e.get(s)), d = (s, e, t) => e.has(s) ? c("Cannot add the same private member more than once") : e instanceof WeakSet ? e.add(s) : e.set(s, t), u = (s, e, t, r) => (l(s, e, "write to private field"), r ? r.call(s, t) : e.set(s, t), t);
|
|
6
|
+
import { LitElement as h } from "lit";
|
|
7
|
+
var o;
|
|
8
|
+
const a = class a extends h {
|
|
9
|
+
constructor() {
|
|
10
|
+
super(...arguments);
|
|
11
|
+
d(this, o);
|
|
12
|
+
}
|
|
13
|
+
/**
|
|
14
|
+
* Lazy accessor for `ElementInternals`. Calls `attachInternals()` on first
|
|
15
|
+
* access and caches the result.
|
|
16
|
+
*
|
|
17
|
+
* Only valid when `static formAssociated = true` is declared on the subclass.
|
|
18
|
+
* Accessing this on a non-form-associated component throws a descriptive error.
|
|
19
|
+
*
|
|
20
|
+
* @throws {Error} If accessed on a component where `formAssociated` is `false`
|
|
21
|
+
* @internal
|
|
22
|
+
*/
|
|
23
|
+
get _internals() {
|
|
24
|
+
if (!this.constructor.formAssociated)
|
|
25
|
+
throw new Error(
|
|
26
|
+
`[HelixElement] _internals accessed on <${this.tagName.toLowerCase()}> but static formAssociated is not set to true on ${this.constructor.name}.`
|
|
27
|
+
);
|
|
28
|
+
const t = n(this, o);
|
|
29
|
+
if (t !== void 0)
|
|
30
|
+
return t;
|
|
31
|
+
const r = this.attachInternals();
|
|
32
|
+
return u(this, o, r), r;
|
|
33
|
+
}
|
|
34
|
+
// ─── Browser Form Callbacks (delegate to hook methods) ───
|
|
35
|
+
/**
|
|
36
|
+
* Called by the browser when the element's form-associated disabled state
|
|
37
|
+
* changes (e.g., a parent `<fieldset disabled>` is toggled).
|
|
38
|
+
*
|
|
39
|
+
* Delegates to `_onFormDisabled`. Override that method in subclasses.
|
|
40
|
+
* @internal
|
|
41
|
+
*/
|
|
42
|
+
formDisabledCallback(t) {
|
|
43
|
+
this._onFormDisabled(t);
|
|
44
|
+
}
|
|
45
|
+
/**
|
|
46
|
+
* Called by the browser when the owning form is reset.
|
|
47
|
+
*
|
|
48
|
+
* Delegates to `_onFormReset`. Override that method in subclasses.
|
|
49
|
+
* @internal
|
|
50
|
+
*/
|
|
51
|
+
formResetCallback() {
|
|
52
|
+
this._onFormReset();
|
|
53
|
+
}
|
|
54
|
+
/**
|
|
55
|
+
* Called by the browser to restore form state (e.g., back/forward cache).
|
|
56
|
+
*
|
|
57
|
+
* Delegates to `_onFormStateRestore`. Override that method in subclasses.
|
|
58
|
+
* @internal
|
|
59
|
+
*/
|
|
60
|
+
formStateRestoreCallback(t, r) {
|
|
61
|
+
this._onFormStateRestore(t, r);
|
|
62
|
+
}
|
|
63
|
+
// ─── Hook Methods (override in subclasses) ───
|
|
64
|
+
/**
|
|
65
|
+
* Override in subclass to react to the element being disabled or enabled
|
|
66
|
+
* via a parent `<fieldset>`.
|
|
67
|
+
*
|
|
68
|
+
* @param _disabled - `true` when the element is being disabled
|
|
69
|
+
* @internal
|
|
70
|
+
*/
|
|
71
|
+
_onFormDisabled(t) {
|
|
72
|
+
}
|
|
73
|
+
/**
|
|
74
|
+
* Override in subclass to reset component state when the owning form resets.
|
|
75
|
+
* @internal
|
|
76
|
+
*/
|
|
77
|
+
_onFormReset() {
|
|
78
|
+
}
|
|
79
|
+
/**
|
|
80
|
+
* Override in subclass to restore component state from saved form state.
|
|
81
|
+
*
|
|
82
|
+
* @param _state - The saved state value, or `null` if none
|
|
83
|
+
* @param _mode - `'restore'` for bfcache navigation, `'autocomplete'` for autofill
|
|
84
|
+
* @internal
|
|
85
|
+
*/
|
|
86
|
+
_onFormStateRestore(t, r) {
|
|
87
|
+
}
|
|
88
|
+
// ─── Convenience Getters ───
|
|
89
|
+
/**
|
|
90
|
+
* The associated form element, or `null` if not form-associated or not yet
|
|
91
|
+
* connected to a form.
|
|
92
|
+
*
|
|
93
|
+
* Form-associated subclasses that need a guaranteed non-null return type
|
|
94
|
+
* should redeclare this getter and delegate to `this._internals.form`.
|
|
95
|
+
*
|
|
96
|
+
* @internal
|
|
97
|
+
*/
|
|
98
|
+
get form() {
|
|
99
|
+
const t = n(this, o);
|
|
100
|
+
return !this.constructor.formAssociated || t === void 0 ? null : t.form;
|
|
101
|
+
}
|
|
102
|
+
/**
|
|
103
|
+
* The current `ValidityState` for this element, or `null` if not
|
|
104
|
+
* form-associated.
|
|
105
|
+
*
|
|
106
|
+
* Form-associated subclasses that need a guaranteed `ValidityState` return
|
|
107
|
+
* should redeclare this getter and delegate to `this._internals.validity`.
|
|
108
|
+
*
|
|
109
|
+
* @internal
|
|
110
|
+
*/
|
|
111
|
+
get validity() {
|
|
112
|
+
const t = n(this, o);
|
|
113
|
+
return !this.constructor.formAssociated || t === void 0 ? null : t.validity;
|
|
114
|
+
}
|
|
115
|
+
/**
|
|
116
|
+
* The current validation message, or an empty string if not form-associated
|
|
117
|
+
* or if the element is valid.
|
|
118
|
+
*
|
|
119
|
+
* @internal
|
|
120
|
+
*/
|
|
121
|
+
get validationMessage() {
|
|
122
|
+
const t = n(this, o);
|
|
123
|
+
return !this.constructor.formAssociated || t === void 0 ? "" : t.validationMessage;
|
|
124
|
+
}
|
|
125
|
+
};
|
|
126
|
+
o = new WeakMap(), a.formAssociated = !1;
|
|
127
|
+
let f = a;
|
|
128
|
+
const i = /* @__PURE__ */ new Map();
|
|
129
|
+
function v(s) {
|
|
130
|
+
return () => {
|
|
131
|
+
const e = i.get(s) ?? 0;
|
|
132
|
+
return i.set(s, e + 1), `${s}-${e}`;
|
|
133
|
+
};
|
|
134
|
+
}
|
|
135
|
+
function b(s) {
|
|
136
|
+
s !== void 0 ? i.delete(s) : i.clear();
|
|
137
|
+
}
|
|
138
|
+
export {
|
|
139
|
+
f as H,
|
|
140
|
+
v as c,
|
|
141
|
+
b as r
|
|
142
|
+
};
|
|
143
|
+
//# sourceMappingURL=id-counter-JhvVCnjh.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"id-counter-JhvVCnjh.js","sources":["../../src/base/helix-element.ts","../../src/base/id-counter.ts"],"sourcesContent":["import { LitElement } from 'lit';\n\n/**\n * `HelixElement` extends `LitElement` with shared infrastructure for all HELiX\n * components: lazy `ElementInternals` access, form lifecycle hook delegation,\n * and convenience validity getters.\n *\n * Form association is opt-in via `static formAssociated = true` on the subclass.\n * When set, `HelixElement` provides a lazy `_internals` accessor that calls\n * `attachInternals()` on first access — eliminating constructor boilerplate.\n *\n * Form components should also override the `_onForm*` hook methods rather than\n * re-declaring the raw browser callbacks (`formResetCallback`, etc.).\n *\n * @example Non-form component — no configuration required:\n * ```ts\n * class HxCard extends HelixElement {\n * // no formAssociated needed\n * }\n * ```\n *\n * @example Form-associated component:\n * ```ts\n * class HxTextInput extends HelixElement {\n * static override formAssociated = true;\n *\n * override _onFormReset(): void {\n * this.value = '';\n * this._internals.setFormValue('');\n * }\n *\n * override _onFormDisabled(disabled: boolean): void {\n * this.disabled = disabled;\n * }\n * }\n * ```\n *\n * @public\n */\nexport class HelixElement extends LitElement {\n /**\n * Set to `true` on the subclass to enable ElementInternals form association.\n *\n * IMPORTANT: This MUST be redeclared as `static override formAssociated = true`\n * on each form-associated subclass. The browser's form association mechanism\n * inspects `formAssociated` on the *registered* custom element class, not\n * on ancestor classes.\n *\n * @internal\n */\n static formAssociated = false;\n\n #internals: ElementInternals | undefined;\n\n /**\n * Lazy accessor for `ElementInternals`. Calls `attachInternals()` on first\n * access and caches the result.\n *\n * Only valid when `static formAssociated = true` is declared on the subclass.\n * Accessing this on a non-form-associated component throws a descriptive error.\n *\n * @throws {Error} If accessed on a component where `formAssociated` is `false`\n * @internal\n */\n get _internals(): ElementInternals {\n if (!(this.constructor as typeof HelixElement).formAssociated) {\n throw new Error(\n `[HelixElement] _internals accessed on <${this.tagName.toLowerCase()}> but ` +\n `static formAssociated is not set to true on ${this.constructor.name}.`,\n );\n }\n const cached = this.#internals;\n if (cached !== undefined) {\n return cached;\n }\n const internals = this.attachInternals();\n this.#internals = internals;\n return internals;\n }\n\n // ─── Browser Form Callbacks (delegate to hook methods) ───\n\n /**\n * Called by the browser when the element's form-associated disabled state\n * changes (e.g., a parent `<fieldset disabled>` is toggled).\n *\n * Delegates to `_onFormDisabled`. Override that method in subclasses.\n * @internal\n */\n formDisabledCallback(disabled: boolean): void {\n this._onFormDisabled(disabled);\n }\n\n /**\n * Called by the browser when the owning form is reset.\n *\n * Delegates to `_onFormReset`. Override that method in subclasses.\n * @internal\n */\n formResetCallback(): void {\n this._onFormReset();\n }\n\n /**\n * Called by the browser to restore form state (e.g., back/forward cache).\n *\n * Delegates to `_onFormStateRestore`. Override that method in subclasses.\n * @internal\n */\n formStateRestoreCallback(\n state: File | string | FormData | null,\n mode: 'restore' | 'autocomplete',\n ): void {\n this._onFormStateRestore(state, mode);\n }\n\n // ─── Hook Methods (override in subclasses) ───\n\n /**\n * Override in subclass to react to the element being disabled or enabled\n * via a parent `<fieldset>`.\n *\n * @param _disabled - `true` when the element is being disabled\n * @internal\n */\n protected _onFormDisabled(_disabled: boolean): void {}\n\n /**\n * Override in subclass to reset component state when the owning form resets.\n * @internal\n */\n protected _onFormReset(): void {}\n\n /**\n * Override in subclass to restore component state from saved form state.\n *\n * @param _state - The saved state value, or `null` if none\n * @param _mode - `'restore'` for bfcache navigation, `'autocomplete'` for autofill\n * @internal\n */\n protected _onFormStateRestore(\n _state: File | string | FormData | null,\n _mode: 'restore' | 'autocomplete',\n ): void {}\n\n // ─── Convenience Getters ───\n\n /**\n * The associated form element, or `null` if not form-associated or not yet\n * connected to a form.\n *\n * Form-associated subclasses that need a guaranteed non-null return type\n * should redeclare this getter and delegate to `this._internals.form`.\n *\n * @internal\n */\n get form(): HTMLFormElement | null {\n const internals = this.#internals;\n if (!(this.constructor as typeof HelixElement).formAssociated || internals === undefined) {\n return null;\n }\n return internals.form;\n }\n\n /**\n * The current `ValidityState` for this element, or `null` if not\n * form-associated.\n *\n * Form-associated subclasses that need a guaranteed `ValidityState` return\n * should redeclare this getter and delegate to `this._internals.validity`.\n *\n * @internal\n */\n get validity(): ValidityState | null {\n const internals = this.#internals;\n if (!(this.constructor as typeof HelixElement).formAssociated || internals === undefined) {\n return null;\n }\n return internals.validity;\n }\n\n /**\n * The current validation message, or an empty string if not form-associated\n * or if the element is valid.\n *\n * @internal\n */\n get validationMessage(): string {\n const internals = this.#internals;\n if (!(this.constructor as typeof HelixElement).formAssociated || internals === undefined) {\n return '';\n }\n return internals.validationMessage;\n }\n}\n","/**\n * Module-level monotonic ID counter factory.\n *\n * Provides collision-free, deterministic, SSR-safe IDs for components that\n * need stable element IDs (for ARIA relationships, label associations, etc.)\n * without relying on Math.random() which causes hydration mismatches.\n *\n * @public\n */\n\nconst counters = new Map<string, number>();\n\n/**\n * Creates a monotonic ID generator for the given namespace.\n *\n * @param namespace - Component namespace (e.g. 'hx-text-input')\n * @returns A function that returns the next unique ID string\n * @public\n *\n * @example\n * ```ts\n * const nextId = createIdCounter('hx-text-input');\n * private _id = nextId(); // 'hx-text-input-0', 'hx-text-input-1', ...\n * ```\n */\nexport function createIdCounter(namespace: string): () => string {\n return () => {\n const current = counters.get(namespace) ?? 0;\n counters.set(namespace, current + 1);\n return `${namespace}-${current}`;\n };\n}\n\n/**\n * Resets the counter for the given namespace (or all namespaces if omitted).\n * Use in test `beforeEach()` for counter isolation between tests.\n *\n * @param namespace - Optional namespace to reset. If omitted, resets all counters.\n * @public\n */\nexport function resetIdCounter(namespace?: string): void {\n if (namespace !== undefined) {\n counters.delete(namespace);\n } else {\n counters.clear();\n }\n}\n"],"names":["_HelixElement","LitElement","__privateAdd","_internals","cached","__privateGet","internals","__privateSet","disabled","state","mode","_disabled","_state","_mode","HelixElement","counters","createIdCounter","namespace","current","resetIdCounter"],"mappings":";;;;;;;AAuCO,MAAMA,IAAN,MAAMA,UAAqBC,EAAW;AAAA,EAAtC;AAAA;AAaL,IAAAC,EAAA,MAAAC;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAYA,IAAI,aAA+B;AACjC,QAAI,CAAE,KAAK,YAAoC;AAC7C,YAAM,IAAI;AAAA,QACR,0CAA0C,KAAK,QAAQ,YAAA,CAAa,qDACnB,KAAK,YAAY,IAAI;AAAA,MAAA;AAG1E,UAAMC,IAASC,EAAA,MAAKF;AACpB,QAAIC,MAAW;AACb,aAAOA;AAET,UAAME,IAAY,KAAK,gBAAA;AACvB,WAAAC,EAAA,MAAKJ,GAAaG,IACXA;AAAA,EACT;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAWA,qBAAqBE,GAAyB;AAC5C,SAAK,gBAAgBA,CAAQ;AAAA,EAC/B;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAQA,oBAA0B;AACxB,SAAK,aAAA;AAAA,EACP;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAQA,yBACEC,GACAC,GACM;AACN,SAAK,oBAAoBD,GAAOC,CAAI;AAAA,EACtC;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAWU,gBAAgBC,GAA0B;AAAA,EAAC;AAAA;AAAA;AAAA;AAAA;AAAA,EAM3C,eAAqB;AAAA,EAAC;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAStB,oBACRC,GACAC,GACM;AAAA,EAAC;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAaT,IAAI,OAA+B;AACjC,UAAMP,IAAYD,EAAA,MAAKF;AACvB,WAAI,CAAE,KAAK,YAAoC,kBAAkBG,MAAc,SACtE,OAEFA,EAAU;AAAA,EACnB;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAWA,IAAI,WAAiC;AACnC,UAAMA,IAAYD,EAAA,MAAKF;AACvB,WAAI,CAAE,KAAK,YAAoC,kBAAkBG,MAAc,SACtE,OAEFA,EAAU;AAAA,EACnB;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAQA,IAAI,oBAA4B;AAC9B,UAAMA,IAAYD,EAAA,MAAKF;AACvB,WAAI,CAAE,KAAK,YAAoC,kBAAkBG,MAAc,SACtE,KAEFA,EAAU;AAAA,EACnB;AACF;AA9IEH,IAAA,eAFAH,EAAO,iBAAiB;AAXnB,IAAMc,IAANd;AC7BP,MAAMe,wBAAe,IAAA;AAed,SAASC,EAAgBC,GAAiC;AAC/D,SAAO,MAAM;AACX,UAAMC,IAAUH,EAAS,IAAIE,CAAS,KAAK;AAC3C,WAAAF,EAAS,IAAIE,GAAWC,IAAU,CAAC,GAC5B,GAAGD,CAAS,IAAIC,CAAO;AAAA,EAChC;AACF;AASO,SAASC,EAAeF,GAA0B;AACvD,EAAIA,MAAc,SAChBF,EAAS,OAAOE,CAAS,IAEzBF,EAAS,MAAA;AAEb;"}
|
|
@@ -1,8 +1,8 @@
|
|
|
1
|
-
import { css as
|
|
2
|
-
import
|
|
1
|
+
import { css as p, LitElement as f, html as l, nothing as u } from "lit";
|
|
2
|
+
import "./document-token-adoption-Dym9ALA4.js";
|
|
3
|
+
import { property as c, query as g, state as b, customElement as v } from "lit/decorators.js";
|
|
3
4
|
import { classMap as _ } from "lit/directives/class-map.js";
|
|
4
|
-
|
|
5
|
-
const y = m`
|
|
5
|
+
const y = p`
|
|
6
6
|
/* ─── hx-toast host ─── */
|
|
7
7
|
|
|
8
8
|
:host {
|
|
@@ -124,13 +124,16 @@ const y = m`
|
|
|
124
124
|
display: inline-flex;
|
|
125
125
|
align-items: center;
|
|
126
126
|
justify-content: center;
|
|
127
|
+
/* WCAG 2.5.5: minimum 44×44px touch target */
|
|
128
|
+
min-width: var(--hx-touch-target-min, 2.75rem);
|
|
129
|
+
min-height: var(--hx-touch-target-min, 2.75rem);
|
|
127
130
|
padding: var(--hx-space-1, 0.25rem);
|
|
128
131
|
background: transparent;
|
|
129
132
|
border: none;
|
|
130
133
|
border-radius: var(--hx-border-radius-sm, 0.25rem);
|
|
131
134
|
color: inherit;
|
|
132
135
|
cursor: pointer;
|
|
133
|
-
opacity: 0.
|
|
136
|
+
opacity: var(--hx-opacity-75, 0.75);
|
|
134
137
|
transition: opacity var(--hx-transition-fast, 150ms ease);
|
|
135
138
|
}
|
|
136
139
|
|
|
@@ -154,11 +157,11 @@ const y = m`
|
|
|
154
157
|
transition: none;
|
|
155
158
|
}
|
|
156
159
|
}
|
|
157
|
-
`, w =
|
|
160
|
+
`, w = p`
|
|
158
161
|
:host {
|
|
159
162
|
display: block;
|
|
160
163
|
position: fixed;
|
|
161
|
-
z-index: var(--hx-z-index-toast,
|
|
164
|
+
z-index: var(--hx-z-index-toast, 1700);
|
|
162
165
|
pointer-events: none;
|
|
163
166
|
}
|
|
164
167
|
|
|
@@ -228,14 +231,14 @@ const y = m`
|
|
|
228
231
|
--hx-toast-enter-translate: calc(var(--hx-space-2, 0.5rem) * -1);
|
|
229
232
|
}
|
|
230
233
|
`;
|
|
231
|
-
var
|
|
232
|
-
for (var
|
|
233
|
-
(
|
|
234
|
-
return s &&
|
|
234
|
+
var C = Object.defineProperty, S = Object.getOwnPropertyDescriptor, h = (t, a, r, s) => {
|
|
235
|
+
for (var e = s > 1 ? void 0 : s ? S(a, r) : a, n = t.length - 1, i; n >= 0; n--)
|
|
236
|
+
(i = t[n]) && (e = (s ? i(a, r, e) : i(e)) || e);
|
|
237
|
+
return s && e && C(a, r, e), e;
|
|
235
238
|
};
|
|
236
239
|
let o = class extends f {
|
|
237
240
|
constructor() {
|
|
238
|
-
super(...arguments), this.variant = "default", this.duration =
|
|
241
|
+
super(...arguments), this.variant = "default", this.duration = 5e3, this.closable = !1, this.open = !1, this.labelClose = "Dismiss notification", this._hasActionContent = !1, this._timer = null, this._timerStartedAt = null, this._timerRemaining = null;
|
|
239
242
|
}
|
|
240
243
|
// ─── Reduced Motion ───
|
|
241
244
|
/** @internal Returns true when the user has opted into reduced motion. */
|
|
@@ -243,8 +246,8 @@ let o = class extends f {
|
|
|
243
246
|
return typeof window > "u" ? !1 : window.matchMedia("(prefers-reduced-motion: reduce)").matches;
|
|
244
247
|
}
|
|
245
248
|
// ─── Lifecycle ───
|
|
246
|
-
updated(
|
|
247
|
-
super.updated(
|
|
249
|
+
updated(t) {
|
|
250
|
+
super.updated(t), t.has("open") && (this.open ? (this.removeAttribute("aria-hidden"), this._emitShow(), this.duration > 0 && !this._reducedMotion && !this._hasActionContent && this._startTimer()) : (this.setAttribute("aria-hidden", "true"), this._clearTimer(), this._emitHide()));
|
|
248
251
|
}
|
|
249
252
|
disconnectedCallback() {
|
|
250
253
|
super.disconnectedCallback(), this._clearTimer();
|
|
@@ -260,9 +263,9 @@ let o = class extends f {
|
|
|
260
263
|
}
|
|
261
264
|
// ─── Private Helpers ───
|
|
262
265
|
/** @internal */
|
|
263
|
-
_startTimer(
|
|
266
|
+
_startTimer(t) {
|
|
264
267
|
this._clearTimerHandle();
|
|
265
|
-
const a =
|
|
268
|
+
const a = t ?? this.duration;
|
|
266
269
|
this._timerStartedAt = Date.now(), this._timerRemaining = a, this._timer = setTimeout(() => {
|
|
267
270
|
this.open = !1;
|
|
268
271
|
}, a);
|
|
@@ -271,8 +274,8 @@ let o = class extends f {
|
|
|
271
274
|
_pauseTimer() {
|
|
272
275
|
if (this._timer === null || this._timerStartedAt === null || this._timerRemaining === null)
|
|
273
276
|
return;
|
|
274
|
-
const
|
|
275
|
-
this._timerRemaining = Math.max(0, this._timerRemaining -
|
|
277
|
+
const t = Date.now() - this._timerStartedAt;
|
|
278
|
+
this._timerRemaining = Math.max(0, this._timerRemaining - t), this._clearTimerHandle();
|
|
276
279
|
}
|
|
277
280
|
/** @internal */
|
|
278
281
|
_clearTimerHandle() {
|
|
@@ -289,9 +292,9 @@ let o = class extends f {
|
|
|
289
292
|
/** @internal */
|
|
290
293
|
_emitHide() {
|
|
291
294
|
this.dispatchEvent(new CustomEvent("hx-hide", { bubbles: !0, composed: !0 }));
|
|
292
|
-
let
|
|
295
|
+
let t = !1;
|
|
293
296
|
const a = () => {
|
|
294
|
-
|
|
297
|
+
t || (t = !0, this.dispatchEvent(new CustomEvent("hx-after-hide", { bubbles: !0, composed: !0 })));
|
|
295
298
|
}, r = this._toastEl;
|
|
296
299
|
r && r.addEventListener("transitionend", a, { once: !0 }), setTimeout(a, 300);
|
|
297
300
|
}
|
|
@@ -316,6 +319,11 @@ let o = class extends f {
|
|
|
316
319
|
_handleClose() {
|
|
317
320
|
this.hide();
|
|
318
321
|
}
|
|
322
|
+
/** @internal */
|
|
323
|
+
_handleActionSlotChange(t) {
|
|
324
|
+
const a = t.target;
|
|
325
|
+
this._hasActionContent = a.assignedNodes({ flatten: !0 }).length > 0, this._hasActionContent && this.open && this._pauseTimer();
|
|
326
|
+
}
|
|
319
327
|
// ─── ARIA Helpers ───
|
|
320
328
|
/** @internal */
|
|
321
329
|
get _role() {
|
|
@@ -385,7 +393,7 @@ let o = class extends f {
|
|
|
385
393
|
}
|
|
386
394
|
// ─── Render ───
|
|
387
395
|
render() {
|
|
388
|
-
const
|
|
396
|
+
const t = this._severityLabel;
|
|
389
397
|
return l`
|
|
390
398
|
<div
|
|
391
399
|
part="base"
|
|
@@ -402,7 +410,7 @@ let o = class extends f {
|
|
|
402
410
|
@focusout=${this._handleFocusOut}
|
|
403
411
|
>
|
|
404
412
|
${this.open ? l`
|
|
405
|
-
${
|
|
413
|
+
${t ? l`<span class="toast__severity-label">${t}: </span>` : u}
|
|
406
414
|
<span part="icon" class="toast__icon">
|
|
407
415
|
<slot name="icon">${this._defaultIcon}</slot>
|
|
408
416
|
</span>
|
|
@@ -410,13 +418,13 @@ let o = class extends f {
|
|
|
410
418
|
<slot></slot>
|
|
411
419
|
</span>
|
|
412
420
|
<span part="action" class="toast__action">
|
|
413
|
-
<slot name="action"></slot>
|
|
421
|
+
<slot name="action" @slotchange=${this._handleActionSlotChange}></slot>
|
|
414
422
|
</span>
|
|
415
423
|
${this.closable ? l`
|
|
416
424
|
<button
|
|
417
425
|
part="close-button"
|
|
418
426
|
class="toast__close"
|
|
419
|
-
aria-label=${this.
|
|
427
|
+
aria-label=${this.labelClose}
|
|
420
428
|
@click=${this._handleClose}
|
|
421
429
|
>
|
|
422
430
|
<svg
|
|
@@ -439,7 +447,7 @@ let o = class extends f {
|
|
|
439
447
|
`;
|
|
440
448
|
}
|
|
441
449
|
};
|
|
442
|
-
o.styles = [
|
|
450
|
+
o.styles = [y];
|
|
443
451
|
o._SEVERITY_LABELS = {
|
|
444
452
|
success: "Success",
|
|
445
453
|
warning: "Warning",
|
|
@@ -459,18 +467,21 @@ h([
|
|
|
459
467
|
c({ type: Boolean, reflect: !0 })
|
|
460
468
|
], o.prototype, "open", 2);
|
|
461
469
|
h([
|
|
462
|
-
c({ attribute: "close
|
|
463
|
-
], o.prototype, "
|
|
470
|
+
c({ attribute: "label-close" })
|
|
471
|
+
], o.prototype, "labelClose", 2);
|
|
464
472
|
h([
|
|
465
473
|
g(".toast")
|
|
466
474
|
], o.prototype, "_toastEl", 2);
|
|
475
|
+
h([
|
|
476
|
+
b()
|
|
477
|
+
], o.prototype, "_hasActionContent", 2);
|
|
467
478
|
o = h([
|
|
468
479
|
v("hx-toast")
|
|
469
480
|
], o);
|
|
470
|
-
var E = Object.defineProperty,
|
|
471
|
-
for (var
|
|
472
|
-
(
|
|
473
|
-
return s &&
|
|
481
|
+
var E = Object.defineProperty, L = Object.getOwnPropertyDescriptor, m = (t, a, r, s) => {
|
|
482
|
+
for (var e = s > 1 ? void 0 : s ? L(a, r) : a, n = t.length - 1, i; n >= 0; n--)
|
|
483
|
+
(i = t[n]) && (e = (s ? i(a, r, e) : i(e)) || e);
|
|
484
|
+
return s && e && E(a, r, e), e;
|
|
474
485
|
};
|
|
475
486
|
let d = class extends f {
|
|
476
487
|
constructor() {
|
|
@@ -490,32 +501,33 @@ let d = class extends f {
|
|
|
490
501
|
`;
|
|
491
502
|
}
|
|
492
503
|
};
|
|
493
|
-
d.styles = [
|
|
494
|
-
|
|
504
|
+
d.styles = [w];
|
|
505
|
+
m([
|
|
495
506
|
c({ type: String, reflect: !0 })
|
|
496
507
|
], d.prototype, "placement", 2);
|
|
497
|
-
|
|
508
|
+
m([
|
|
498
509
|
c({ type: Number, attribute: "stack-limit" })
|
|
499
510
|
], d.prototype, "stackLimit", 2);
|
|
500
|
-
d =
|
|
511
|
+
d = m([
|
|
501
512
|
v("hx-toast-stack")
|
|
502
513
|
], d);
|
|
503
|
-
function
|
|
504
|
-
var
|
|
505
|
-
|
|
514
|
+
function I(t) {
|
|
515
|
+
var n;
|
|
516
|
+
if (typeof document > "u") throw new Error("toast() requires a browser environment");
|
|
517
|
+
const a = t.placement ?? "bottom-end", r = `hx-toast-stack[placement="${a}"]`;
|
|
506
518
|
let s = document.querySelector(r);
|
|
507
519
|
if (s || (s = document.createElement("hx-toast-stack"), s.placement = a, document.body.appendChild(s)), s.stackLimit > 0) {
|
|
508
|
-
const
|
|
509
|
-
|
|
520
|
+
const i = [...s.querySelectorAll("hx-toast")].filter((x) => x.open);
|
|
521
|
+
i.length >= s.stackLimit && ((n = i[0]) == null || n.hide());
|
|
510
522
|
}
|
|
511
|
-
const
|
|
512
|
-
return
|
|
513
|
-
|
|
514
|
-
}), s.appendChild(
|
|
523
|
+
const e = document.createElement("hx-toast");
|
|
524
|
+
return e.variant = t.variant ?? "default", e.duration = t.duration ?? 3e3, e.closable = !0, e.textContent = t.message, e.addEventListener("hx-after-hide", () => {
|
|
525
|
+
e.remove();
|
|
526
|
+
}), s.appendChild(e), e.show(), e;
|
|
515
527
|
}
|
|
516
528
|
export {
|
|
517
529
|
o as H,
|
|
518
530
|
d as a,
|
|
519
|
-
|
|
531
|
+
I as t
|
|
520
532
|
};
|
|
521
|
-
//# sourceMappingURL=toast-factory-
|
|
533
|
+
//# sourceMappingURL=toast-factory-oPHbhMZI.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"toast-factory-oPHbhMZI.js","sources":["../../src/components/hx-toast/hx-toast.styles.ts","../../src/components/hx-toast/hx-toast.ts","../../src/components/hx-toast/hx-toast-stack.ts","../../src/components/hx-toast/toast-factory.ts"],"sourcesContent":["import { css } from 'lit';\n\nexport const helixToastStyles = css`\n /* ─── hx-toast host ─── */\n\n :host {\n display: block;\n pointer-events: none;\n }\n\n :host([open]) {\n pointer-events: auto;\n }\n\n /* ─── Toast base ─── */\n\n .toast {\n display: flex;\n align-items: flex-start;\n gap: var(--hx-space-3, 0.75rem);\n padding: var(--hx-space-3, 0.75rem) var(--hx-space-4, 1rem);\n border-radius: var(--hx-toast-border-radius, var(--hx-border-radius-md, 0.375rem));\n background-color: var(--hx-toast-bg, var(--hx-color-neutral-900, #0f172a));\n color: var(--hx-toast-color, var(--hx-color-neutral-0, #ffffff));\n font-family: var(--hx-font-family-sans, sans-serif);\n font-size: var(--hx-font-size-sm, 0.875rem);\n line-height: var(--hx-line-height-normal, 1.5);\n box-shadow: var(\n --hx-toast-shadow,\n 0 4px 6px -1px rgb(0 0 0 / 0.1),\n 0 2px 4px -2px rgb(0 0 0 / 0.1)\n );\n opacity: 0;\n transform: translateY(var(--hx-toast-enter-translate, var(--hx-space-2, 0.5rem)));\n transition:\n opacity var(--hx-transition-normal, 250ms ease),\n transform var(--hx-transition-normal, 250ms ease);\n width: var(--hx-toast-width, 20rem);\n max-width: 100%;\n pointer-events: auto;\n }\n\n :host([open]) .toast {\n opacity: 1;\n transform: translateY(0);\n }\n\n /* ─── Variant overrides ─── */\n\n .toast--success {\n --hx-toast-bg: var(--hx-color-success-600, #16a34a);\n --hx-toast-color: var(--hx-color-neutral-0, #ffffff);\n }\n\n .toast--warning {\n --hx-toast-bg: var(--hx-color-warning-500, #f59e0b);\n --hx-toast-color: var(--hx-color-neutral-900, #0f172a);\n }\n\n .toast--danger {\n --hx-toast-bg: var(--hx-color-error-600, #dc2626);\n --hx-toast-color: var(--hx-color-neutral-0, #ffffff);\n }\n\n .toast--info {\n --hx-toast-bg: var(--hx-color-primary-600, #2563eb);\n --hx-toast-color: var(--hx-color-neutral-0, #ffffff);\n }\n\n /* ─── Severity Label (WCAG 1.4.1) ─── */\n /* Visually hidden — non-color cue for severity variants (success/warning/danger/info). */\n /* Ensures variant is not conveyed by color alone for color-blind users. */\n\n .toast__severity-label {\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 /* ─── Icon ─── */\n\n .toast__icon {\n flex-shrink: 0;\n display: inline-flex;\n align-items: center;\n line-height: 1;\n }\n\n .toast__icon:empty {\n display: none;\n }\n\n /* ─── Message ─── */\n\n .toast__message {\n flex: 1 1 auto;\n min-width: 0;\n }\n\n /* ─── Action slot ─── */\n\n .toast__action {\n flex-shrink: 0;\n display: inline-flex;\n align-items: center;\n }\n\n .toast__action:empty {\n display: none;\n }\n\n /* ─── Close button ─── */\n\n .toast__close {\n flex-shrink: 0;\n display: inline-flex;\n align-items: center;\n justify-content: center;\n /* WCAG 2.5.5: minimum 44×44px touch target */\n min-width: var(--hx-touch-target-min, 2.75rem);\n min-height: var(--hx-touch-target-min, 2.75rem);\n padding: var(--hx-space-1, 0.25rem);\n background: transparent;\n border: none;\n border-radius: var(--hx-border-radius-sm, 0.25rem);\n color: inherit;\n cursor: pointer;\n opacity: var(--hx-opacity-75, 0.75);\n transition: opacity var(--hx-transition-fast, 150ms ease);\n }\n\n .toast__close:hover {\n opacity: 1;\n }\n\n .toast__close:focus-visible {\n outline: var(--hx-focus-ring-width, 2px) solid currentColor;\n outline-offset: var(--hx-focus-ring-offset, 2px);\n }\n\n /* ─── Reduced motion ─── */\n\n @media (prefers-reduced-motion: reduce) {\n .toast {\n transition: none;\n }\n\n .toast__close {\n transition: none;\n }\n }\n`;\n\nexport const helixToastStackStyles = css`\n :host {\n display: block;\n position: fixed;\n z-index: var(--hx-z-index-toast, 1700);\n pointer-events: none;\n }\n\n .toast-stack {\n display: flex;\n flex-direction: column;\n gap: var(--hx-space-3, 0.75rem);\n padding: var(--hx-space-4, 1rem);\n pointer-events: none;\n }\n\n /* ─── Placements ─── */\n\n :host([placement='top-start']) {\n top: 0;\n inset-inline-start: 0;\n inset-inline-end: auto;\n bottom: auto;\n }\n\n :host([placement='top-center']) {\n top: 0;\n inset-inline-start: 50%;\n transform: translateX(-50%);\n inset-inline-end: auto;\n bottom: auto;\n }\n\n :host([placement='top-end']) {\n top: 0;\n inset-inline-end: 0;\n inset-inline-start: auto;\n bottom: auto;\n }\n\n :host([placement='bottom-start']) {\n bottom: 0;\n inset-inline-start: 0;\n inset-inline-end: auto;\n top: auto;\n }\n\n :host([placement='bottom-center']) {\n bottom: 0;\n inset-inline-start: 50%;\n transform: translateX(-50%);\n inset-inline-end: auto;\n top: auto;\n }\n\n :host([placement='bottom-end']) {\n bottom: 0;\n inset-inline-end: 0;\n inset-inline-start: auto;\n top: auto;\n }\n\n /* ─── Bottom placements: reverse order so newest is on top ─── */\n\n :host([placement^='bottom']) .toast-stack {\n flex-direction: column-reverse;\n }\n\n /* ─── Slide direction by placement ─── */\n\n :host([placement^='top']) ::slotted(hx-toast) {\n --hx-toast-enter-translate: calc(var(--hx-space-2, 0.5rem) * -1);\n }\n`;\n","import { LitElement, 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 { helixToastStyles } from './hx-toast.styles.js';\n\nexport type ToastVariant = 'default' | 'success' | 'warning' | 'danger' | 'info';\n\n/**\n * A transient notification message that auto-dismisses after a configurable duration.\n * Supports multiple visual variants, a closable button, icon/action slots, and full\n * ARIA live region semantics for screen readers.\n *\n * @summary Transient notification toast component.\n *\n * @tag hx-toast\n *\n * @slot - Default slot for the notification message.\n * @slot icon - Optional icon rendered before the message.\n * @slot action - Optional action button rendered after the message.\n *\n * @fires {CustomEvent} hx-show - Dispatched when the toast becomes visible.\n * @fires {CustomEvent} hx-hide - Dispatched when the toast begins hiding.\n * @fires {CustomEvent} hx-after-hide - Dispatched after the hide animation completes.\n *\n * @csspart base - The inner toast container div.\n * @csspart icon - The icon slot wrapper.\n * @csspart message - The message slot wrapper.\n * @csspart close-button - The dismiss button (only when closable).\n * @csspart action - The action slot wrapper.\n *\n * @cssprop [--hx-toast-bg=var(--hx-color-neutral-900)] - Toast background color.\n * @cssprop [--hx-toast-color=var(--hx-color-neutral-0)] - Toast text color.\n * @cssprop [--hx-toast-border-radius=var(--hx-border-radius-md)] - Toast border radius.\n * @cssprop [--hx-toast-shadow] - Toast box shadow.\n * @cssprop [--hx-toast-width=20rem] - Toast width.\n */\n@customElement('hx-toast')\nexport class HelixToast extends LitElement {\n static override styles = [helixToastStyles];\n\n // ─── Public Properties ───\n\n /**\n * Visual style variant.\n * @attr variant\n */\n @property({ type: String, reflect: true })\n variant: 'default' | 'success' | 'warning' | 'danger' | 'info' = 'default';\n\n /**\n * Auto-dismiss duration in milliseconds. Set to 0 for persistent toasts.\n * @attr duration\n */\n @property({ type: Number })\n duration = 5000;\n\n /**\n * Whether to show a close button.\n * @attr closable\n */\n @property({ type: Boolean, reflect: true })\n closable = false;\n\n /**\n * Whether the toast is currently visible.\n * @attr open\n */\n @property({ type: Boolean, reflect: true })\n open = false;\n\n /**\n * Accessible label for the close button. Override for localization.\n * @attr label-close\n */\n @property({ attribute: 'label-close' })\n labelClose = 'Dismiss notification';\n\n // ─── Private State ───\n\n /** @internal */\n @query('.toast') private _toastEl!: HTMLElement | null;\n\n /** @internal Tracks whether the action slot has slotted content. */\n @state() private _hasActionContent = false;\n\n /** @internal */\n private _timer: ReturnType<typeof setTimeout> | null = null;\n\n // ─── Reduced Motion ───\n\n /** @internal Returns true when the user has opted into reduced motion. */\n private get _reducedMotion(): boolean {\n // Guard for SSR — window.matchMedia is unavailable server-side\n if (typeof window === 'undefined') return false;\n return window.matchMedia('(prefers-reduced-motion: reduce)').matches;\n }\n\n /** @internal */\n private _timerStartedAt: number | null = null;\n\n /** @internal */\n private _timerRemaining: number | null = null;\n\n // ─── Lifecycle ───\n\n override updated(changedProperties: PropertyValues<this>): void {\n super.updated(changedProperties);\n if (changedProperties.has('open')) {\n if (this.open) {\n this.removeAttribute('aria-hidden');\n this._emitShow();\n if (this.duration > 0 && !this._reducedMotion && !this._hasActionContent) {\n this._startTimer();\n }\n } else {\n this.setAttribute('aria-hidden', 'true');\n this._clearTimer();\n this._emitHide();\n }\n }\n }\n\n override disconnectedCallback(): void {\n super.disconnectedCallback();\n this._clearTimer();\n }\n\n // ─── Public API ───\n\n /** Show the toast. */\n show(): void {\n if (!this.open) {\n this.open = true;\n }\n }\n\n /** Hide the toast. */\n hide(): void {\n if (this.open) {\n this.open = false;\n }\n }\n\n // ─── Private Helpers ───\n\n /** @internal */\n private _startTimer(remaining?: number): void {\n this._clearTimerHandle();\n const delay = remaining ?? this.duration;\n this._timerStartedAt = Date.now();\n this._timerRemaining = delay;\n this._timer = setTimeout(() => {\n this.open = false;\n }, delay);\n }\n\n /** @internal */\n private _pauseTimer(): void {\n if (this._timer === null || this._timerStartedAt === null || this._timerRemaining === null) {\n return;\n }\n const elapsed = Date.now() - this._timerStartedAt;\n this._timerRemaining = Math.max(0, this._timerRemaining - elapsed);\n this._clearTimerHandle();\n }\n\n /** @internal */\n private _clearTimerHandle(): void {\n if (this._timer !== null) {\n clearTimeout(this._timer);\n this._timer = null;\n }\n }\n\n /** @internal */\n private _clearTimer(): void {\n this._clearTimerHandle();\n this._timerStartedAt = null;\n this._timerRemaining = null;\n }\n\n /** @internal */\n private _emitShow(): void {\n this.dispatchEvent(new CustomEvent<void>('hx-show', { bubbles: true, composed: true }));\n }\n\n /** @internal */\n private _emitHide(): void {\n this.dispatchEvent(new CustomEvent<void>('hx-hide', { bubbles: true, composed: true }));\n\n let fired = false;\n const fireAfterHide = () => {\n if (fired) return;\n fired = true;\n this.dispatchEvent(new CustomEvent<void>('hx-after-hide', { bubbles: true, composed: true }));\n };\n\n // Fire on transitionend if available; fallback ensures it fires in test environments\n // and when transitions are disabled (prefers-reduced-motion, no CSS transitions).\n const base = this._toastEl;\n if (base) {\n base.addEventListener('transitionend', fireAfterHide, { once: true });\n }\n // Fallback fires after the CSS transition duration (250ms) plus a small buffer.\n setTimeout(fireAfterHide, 300);\n }\n\n // ─── Event Handlers ───\n\n /** @internal */\n private _handleMouseEnter(): void {\n this._pauseTimer();\n }\n\n /** @internal */\n private _handleMouseLeave(): void {\n if (this.open && this.duration > 0) {\n this._startTimer(this._timerRemaining ?? undefined);\n }\n }\n\n /** @internal */\n private _handleFocusIn(): void {\n this._pauseTimer();\n }\n\n /** @internal */\n private _handleFocusOut(): void {\n if (this.open && this.duration > 0) {\n this._startTimer(this._timerRemaining ?? undefined);\n }\n }\n\n /** @internal */\n private _handleClose(): void {\n this.hide();\n }\n\n /** @internal */\n private _handleActionSlotChange(e: Event): void {\n const slot = e.target as HTMLSlotElement;\n this._hasActionContent = slot.assignedNodes({ flatten: true }).length > 0;\n if (this._hasActionContent && this.open) {\n this._pauseTimer();\n }\n }\n\n // ─── ARIA Helpers ───\n\n /** @internal */\n private get _role(): 'alert' | 'status' {\n return this.variant === 'danger' ? 'alert' : 'status';\n }\n\n /** @internal */\n private get _ariaLive(): 'assertive' | 'polite' {\n return this.variant === 'danger' ? 'assertive' : 'polite';\n }\n\n // ─── WCAG 1.4.1: Default Icons ───\n // Each semantic variant renders a default icon when no icon is slotted,\n // ensuring the severity is not conveyed by color alone.\n\n /** @internal */\n private _renderSuccessIcon() {\n return html`<svg viewBox=\"0 0 20 20\" aria-hidden=\"true\" width=\"16\" height=\"16\">\n <path\n fill=\"currentColor\"\n d=\"M10 2a8 8 0 100 16 8 8 0 000-16zm3.03 6.28a.75.75 0 00-1.06-1.06L9 10.19 7.78 8.97a.75.75 0 00-1.06 1.06l1.75 1.75a.75.75 0 001.06 0l3.5-3.5z\"\n />\n </svg>`;\n }\n\n /** @internal */\n private _renderWarningIcon() {\n return html`<svg viewBox=\"0 0 20 20\" aria-hidden=\"true\" width=\"16\" height=\"16\">\n <path\n fill=\"currentColor\"\n d=\"M8.49 2.92a1.75 1.75 0 013.02 0l6.25 10.83A1.75 1.75 0 0116.25 16H3.75a1.75 1.75 0 01-1.51-2.25L8.49 2.92zM10 7a.75.75 0 01.75.75v3a.75.75 0 01-1.5 0v-3A.75.75 0 0110 7zm0 7.5a.75.75 0 100-1.5.75.75 0 000 1.5z\"\n />\n </svg>`;\n }\n\n /** @internal */\n private _renderDangerIcon() {\n return html`<svg viewBox=\"0 0 20 20\" aria-hidden=\"true\" width=\"16\" height=\"16\">\n <path\n fill=\"currentColor\"\n d=\"M10 2a8 8 0 100 16 8 8 0 000-16zm-1.72 5.22a.75.75 0 011.06 0L10 7.94l.66-.72a.75.75 0 111.06 1.06L11.06 9l.66.72a.75.75 0 11-1.06 1.06L10 10.06l-.66.72a.75.75 0 01-1.06-1.06L8.94 9l-.66-.72a.75.75 0 010-1.06z\"\n />\n </svg>`;\n }\n\n /** @internal */\n private _renderInfoIcon() {\n return html`<svg viewBox=\"0 0 20 20\" aria-hidden=\"true\" width=\"16\" height=\"16\">\n <path\n fill=\"currentColor\"\n d=\"M10 2a8 8 0 100 16 8 8 0 000-16zm.75 4.75a.75.75 0 11-1.5 0 .75.75 0 011.5 0zM9.25 9a.75.75 0 011.5 0v4a.75.75 0 01-1.5 0V9z\"\n />\n </svg>`;\n }\n\n /** @internal Returns the default icon for the current variant, or nothing for 'default'. */\n private get _defaultIcon() {\n switch (this.variant) {\n case 'success':\n return this._renderSuccessIcon();\n case 'warning':\n return this._renderWarningIcon();\n case 'danger':\n return this._renderDangerIcon();\n case 'info':\n return this._renderInfoIcon();\n default:\n return nothing;\n }\n }\n\n // ─── WCAG 1.4.1: Severity label map ───\n\n /** @internal */\n private static readonly _SEVERITY_LABELS: Partial<Record<ToastVariant, string>> = {\n success: 'Success',\n warning: 'Warning',\n danger: 'Error',\n info: 'Info',\n };\n\n /** @internal */\n private get _severityLabel(): string {\n return HelixToast._SEVERITY_LABELS[this.variant] ?? '';\n }\n\n // ─── Render ───\n\n override render() {\n const severityLabel = this._severityLabel;\n\n return html`\n <div\n part=\"base\"\n class=${classMap({\n toast: true,\n [`toast--${this.variant}`]: true,\n })}\n role=${this._role}\n aria-live=${this._ariaLive}\n aria-atomic=\"true\"\n @mouseenter=${this._handleMouseEnter}\n @mouseleave=${this._handleMouseLeave}\n @focusin=${this._handleFocusIn}\n @focusout=${this._handleFocusOut}\n >\n ${this.open\n ? html`\n ${severityLabel\n ? html`<span class=\"toast__severity-label\">${severityLabel}: </span>`\n : nothing}\n <span part=\"icon\" class=\"toast__icon\">\n <slot name=\"icon\">${this._defaultIcon}</slot>\n </span>\n <span part=\"message\" class=\"toast__message\">\n <slot></slot>\n </span>\n <span part=\"action\" class=\"toast__action\">\n <slot name=\"action\" @slotchange=${this._handleActionSlotChange}></slot>\n </span>\n ${this.closable\n ? html`\n <button\n part=\"close-button\"\n class=\"toast__close\"\n aria-label=${this.labelClose}\n @click=${this._handleClose}\n >\n <svg\n aria-hidden=\"true\"\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 >\n <path d=\"M18 6L6 18M6 6l12 12\" />\n </svg>\n </button>\n `\n : nothing}\n `\n : nothing}\n </div>\n `;\n }\n}\n\n// ─── Declarative Global Types ───\n\ndeclare global {\n interface HTMLElementTagNameMap {\n 'hx-toast': HelixToast;\n }\n}\n","import { LitElement, html } from 'lit';\nimport '../../utilities/document-token-adoption.js';\nimport { customElement, property } from 'lit/decorators.js';\nimport { classMap } from 'lit/directives/class-map.js';\nimport { helixToastStackStyles } from './hx-toast.styles.js';\n\nexport type ToastStackPlacement =\n | 'top-start'\n | 'top-center'\n | 'top-end'\n | 'bottom-start'\n | 'bottom-center'\n | 'bottom-end';\n\n/**\n * A fixed-position container that stacks `hx-toast` elements at the specified\n * corner of the viewport. Enforces a maximum visible toast count via `stack-limit`.\n *\n * @summary Toast stack container managing position and count limits.\n *\n * @tag hx-toast-stack\n *\n * @slot - Accepts `hx-toast` elements.\n *\n * @csspart base - The inner stack container div.\n *\n * @cssprop [--hx-z-index-toast=9000] - Z-index for the fixed stack.\n */\n@customElement('hx-toast-stack')\nexport class HelixToastStack extends LitElement {\n static override styles = [helixToastStackStyles];\n\n /**\n * Corner of the viewport where toasts appear.\n * @attr placement\n */\n @property({ type: String, reflect: true })\n placement:\n | 'top-start'\n | 'top-center'\n | 'top-end'\n | 'bottom-start'\n | 'bottom-center'\n | 'bottom-end' = 'bottom-end';\n\n /**\n * Maximum number of simultaneously visible toasts. 0 = unlimited.\n * @attr stack-limit\n */\n @property({ type: Number, attribute: 'stack-limit' })\n stackLimit = 3;\n\n override render() {\n return html`\n <div\n part=\"base\"\n class=${classMap({\n 'toast-stack': true,\n [`toast-stack--${this.placement}`]: true,\n })}\n >\n <slot></slot>\n </div>\n `;\n }\n}\n\n// ─── Declarative Global Types ───\n\ndeclare global {\n interface HTMLElementTagNameMap {\n 'hx-toast-stack': HelixToastStack;\n }\n}\n","import { HelixToast } from './hx-toast.js';\nimport { HelixToastStack } from './hx-toast-stack.js';\nimport type { ToastVariant } from './hx-toast.js';\nimport type { ToastStackPlacement } from './hx-toast-stack.js';\n\nexport interface ToastOptions {\n /** The notification message text. */\n message: string;\n /** Visual variant. Defaults to 'default'. */\n variant?: ToastVariant;\n /** Auto-dismiss duration in ms. 0 = persistent. Defaults to 3000. */\n duration?: number;\n /** Placement of the shared stack. Defaults to 'bottom-end'. */\n placement?: ToastStackPlacement;\n}\n\n/**\n * Imperatively create and display a toast notification.\n *\n * Creates a shared `hx-toast-stack` on `document.body` if one does not exist,\n * then appends a new `hx-toast` with the given options. Respects the stack's\n * `stackLimit` by hiding the oldest visible toast when the limit is exceeded.\n *\n * @example\n * import { toast } from '@helixui/library/components/hx-toast/index.js';\n * toast({ message: 'Patient record saved.', variant: 'success' });\n */\nexport function toast(options: ToastOptions): HelixToast {\n if (typeof document === 'undefined') throw new Error('toast() requires a browser environment');\n const placement = options.placement ?? 'bottom-end';\n\n // Find or create a dedicated stack for this placement\n const stackSelector = `hx-toast-stack[placement=\"${placement}\"]`;\n let stack = document.querySelector<HelixToastStack>(stackSelector);\n if (!stack) {\n stack = document.createElement('hx-toast-stack');\n stack.placement = placement;\n // Intentional design decision: the toast stack is appended to document.body rather\n // than inserted near the caller. This is required so that the fixed-position overlay\n // is not clipped by an ancestor with `overflow: hidden`, `transform`, or `filter`\n // (all of which create a new stacking context and break fixed positioning).\n // Drupal compatibility note: Drupal's BigPipe / AJAX behaviors can re-attach the\n // document body without removing these stacks. The selector check above\n // (`document.querySelector`) ensures only one stack per placement is ever created,\n // preventing duplicates on re-attach cycles.\n document.body.appendChild(stack);\n }\n\n // Enforce stack limit: hide oldest open toast if at capacity\n if (stack.stackLimit > 0) {\n const openToasts = [...stack.querySelectorAll<HelixToast>('hx-toast')].filter((t) => t.open);\n if (openToasts.length >= stack.stackLimit) {\n openToasts[0]?.hide();\n }\n }\n\n // Create toast element\n const toastEl = document.createElement('hx-toast');\n toastEl.variant = options.variant ?? 'default';\n toastEl.duration = options.duration ?? 3000;\n toastEl.closable = true;\n toastEl.textContent = options.message;\n\n // Remove from DOM after hiding\n toastEl.addEventListener('hx-after-hide', () => {\n toastEl.remove();\n });\n\n stack.appendChild(toastEl);\n toastEl.show();\n\n return toastEl;\n}\n"],"names":["helixToastStyles","css","helixToastStackStyles","HelixToast","LitElement","changedProperties","remaining","delay","elapsed","fired","fireAfterHide","base","e","slot","html","nothing","severityLabel","classMap","__decorateClass","property","query","state","customElement","HelixToastStack","toast","options","placement","stackSelector","stack","openToasts","t","_a","toastEl"],"mappings":";;;;AAEO,MAAMA,IAAmBC;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,GA6JnBC,IAAwBD;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;;;;;;ACzH9B,IAAME,IAAN,cAAyBC,EAAW;AAAA,EAApC,cAAA;AAAA,UAAA,GAAA,SAAA,GAUL,KAAA,UAAiE,WAOjE,KAAA,WAAW,KAOX,KAAA,WAAW,IAOX,KAAA,OAAO,IAOP,KAAA,aAAa,wBAQJ,KAAQ,oBAAoB,IAGrC,KAAQ,SAA+C,MAYvD,KAAQ,kBAAiC,MAGzC,KAAQ,kBAAiC;AAAA,EAAA;AAAA;AAAA;AAAA,EAVzC,IAAY,iBAA0B;AAEpC,WAAI,OAAO,SAAW,MAAoB,KACnC,OAAO,WAAW,kCAAkC,EAAE;AAAA,EAC/D;AAAA;AAAA,EAUS,QAAQC,GAA+C;AAC9D,UAAM,QAAQA,CAAiB,GAC3BA,EAAkB,IAAI,MAAM,MAC1B,KAAK,QACP,KAAK,gBAAgB,aAAa,GAClC,KAAK,UAAA,GACD,KAAK,WAAW,KAAK,CAAC,KAAK,kBAAkB,CAAC,KAAK,qBACrD,KAAK,YAAA,MAGP,KAAK,aAAa,eAAe,MAAM,GACvC,KAAK,YAAA,GACL,KAAK,UAAA;AAAA,EAGX;AAAA,EAES,uBAA6B;AACpC,UAAM,qBAAA,GACN,KAAK,YAAA;AAAA,EACP;AAAA;AAAA;AAAA,EAKA,OAAa;AACX,IAAK,KAAK,SACR,KAAK,OAAO;AAAA,EAEhB;AAAA;AAAA,EAGA,OAAa;AACX,IAAI,KAAK,SACP,KAAK,OAAO;AAAA,EAEhB;AAAA;AAAA;AAAA,EAKQ,YAAYC,GAA0B;AAC5C,SAAK,kBAAA;AACL,UAAMC,IAAQD,KAAa,KAAK;AAChC,SAAK,kBAAkB,KAAK,IAAA,GAC5B,KAAK,kBAAkBC,GACvB,KAAK,SAAS,WAAW,MAAM;AAC7B,WAAK,OAAO;AAAA,IACd,GAAGA,CAAK;AAAA,EACV;AAAA;AAAA,EAGQ,cAAoB;AAC1B,QAAI,KAAK,WAAW,QAAQ,KAAK,oBAAoB,QAAQ,KAAK,oBAAoB;AACpF;AAEF,UAAMC,IAAU,KAAK,IAAA,IAAQ,KAAK;AAClC,SAAK,kBAAkB,KAAK,IAAI,GAAG,KAAK,kBAAkBA,CAAO,GACjE,KAAK,kBAAA;AAAA,EACP;AAAA;AAAA,EAGQ,oBAA0B;AAChC,IAAI,KAAK,WAAW,SAClB,aAAa,KAAK,MAAM,GACxB,KAAK,SAAS;AAAA,EAElB;AAAA;AAAA,EAGQ,cAAoB;AAC1B,SAAK,kBAAA,GACL,KAAK,kBAAkB,MACvB,KAAK,kBAAkB;AAAA,EACzB;AAAA;AAAA,EAGQ,YAAkB;AACxB,SAAK,cAAc,IAAI,YAAkB,WAAW,EAAE,SAAS,IAAM,UAAU,GAAA,CAAM,CAAC;AAAA,EACxF;AAAA;AAAA,EAGQ,YAAkB;AACxB,SAAK,cAAc,IAAI,YAAkB,WAAW,EAAE,SAAS,IAAM,UAAU,GAAA,CAAM,CAAC;AAEtF,QAAIC,IAAQ;AACZ,UAAMC,IAAgB,MAAM;AAC1B,MAAID,MACJA,IAAQ,IACR,KAAK,cAAc,IAAI,YAAkB,iBAAiB,EAAE,SAAS,IAAM,UAAU,GAAA,CAAM,CAAC;AAAA,IAC9F,GAIME,IAAO,KAAK;AAClB,IAAIA,KACFA,EAAK,iBAAiB,iBAAiBD,GAAe,EAAE,MAAM,IAAM,GAGtE,WAAWA,GAAe,GAAG;AAAA,EAC/B;AAAA;AAAA;AAAA,EAKQ,oBAA0B;AAChC,SAAK,YAAA;AAAA,EACP;AAAA;AAAA,EAGQ,oBAA0B;AAChC,IAAI,KAAK,QAAQ,KAAK,WAAW,KAC/B,KAAK,YAAY,KAAK,mBAAmB,MAAS;AAAA,EAEtD;AAAA;AAAA,EAGQ,iBAAuB;AAC7B,SAAK,YAAA;AAAA,EACP;AAAA;AAAA,EAGQ,kBAAwB;AAC9B,IAAI,KAAK,QAAQ,KAAK,WAAW,KAC/B,KAAK,YAAY,KAAK,mBAAmB,MAAS;AAAA,EAEtD;AAAA;AAAA,EAGQ,eAAqB;AAC3B,SAAK,KAAA;AAAA,EACP;AAAA;AAAA,EAGQ,wBAAwBE,GAAgB;AAC9C,UAAMC,IAAOD,EAAE;AACf,SAAK,oBAAoBC,EAAK,cAAc,EAAE,SAAS,GAAA,CAAM,EAAE,SAAS,GACpE,KAAK,qBAAqB,KAAK,QACjC,KAAK,YAAA;AAAA,EAET;AAAA;AAAA;AAAA,EAKA,IAAY,QAA4B;AACtC,WAAO,KAAK,YAAY,WAAW,UAAU;AAAA,EAC/C;AAAA;AAAA,EAGA,IAAY,YAAoC;AAC9C,WAAO,KAAK,YAAY,WAAW,cAAc;AAAA,EACnD;AAAA;AAAA;AAAA;AAAA;AAAA,EAOQ,qBAAqB;AAC3B,WAAOC;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAMT;AAAA;AAAA,EAGQ,qBAAqB;AAC3B,WAAOA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAMT;AAAA;AAAA,EAGQ,oBAAoB;AAC1B,WAAOA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAMT;AAAA;AAAA,EAGQ,kBAAkB;AACxB,WAAOA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAMT;AAAA;AAAA,EAGA,IAAY,eAAe;AACzB,YAAQ,KAAK,SAAA;AAAA,MACX,KAAK;AACH,eAAO,KAAK,mBAAA;AAAA,MACd,KAAK;AACH,eAAO,KAAK,mBAAA;AAAA,MACd,KAAK;AACH,eAAO,KAAK,kBAAA;AAAA,MACd,KAAK;AACH,eAAO,KAAK,gBAAA;AAAA,MACd;AACE,eAAOC;AAAA,IAAA;AAAA,EAEb;AAAA;AAAA,EAaA,IAAY,iBAAyB;AACnC,WAAOZ,EAAW,iBAAiB,KAAK,OAAO,KAAK;AAAA,EACtD;AAAA;AAAA,EAIS,SAAS;AAChB,UAAMa,IAAgB,KAAK;AAE3B,WAAOF;AAAA;AAAA;AAAA,gBAGKG,EAAS;AAAA,MACf,OAAO;AAAA,MACP,CAAC,UAAU,KAAK,OAAO,EAAE,GAAG;AAAA,IAAA,CAC7B,CAAC;AAAA,eACK,KAAK,KAAK;AAAA,oBACL,KAAK,SAAS;AAAA;AAAA,sBAEZ,KAAK,iBAAiB;AAAA,sBACtB,KAAK,iBAAiB;AAAA,mBACzB,KAAK,cAAc;AAAA,oBAClB,KAAK,eAAe;AAAA;AAAA,UAE9B,KAAK,OACHH;AAAA,gBACIE,IACEF,wCAA2CE,CAAa,cACxDD,CAAO;AAAA;AAAA,oCAEW,KAAK,YAAY;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,kDAMH,KAAK,uBAAuB;AAAA;AAAA,gBAE9D,KAAK,WACHD;AAAA;AAAA;AAAA;AAAA,mCAIiB,KAAK,UAAU;AAAA,+BACnB,KAAK,YAAY;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,sBAiB9BC,CAAO;AAAA,gBAEbA,CAAO;AAAA;AAAA;AAAA,EAGjB;AACF;AAxWaZ,EACK,SAAS,CAACH,CAAgB;AAD/BG,EA6Ra,mBAA0D;AAAA,EAChF,SAAS;AAAA,EACT,SAAS;AAAA,EACT,QAAQ;AAAA,EACR,MAAM;AACR;AAxRAe,EAAA;AAAA,EADCC,EAAS,EAAE,MAAM,QAAQ,SAAS,IAAM;AAAA,GAT9BhB,EAUX,WAAA,WAAA,CAAA;AAOAe,EAAA;AAAA,EADCC,EAAS,EAAE,MAAM,OAAA,CAAQ;AAAA,GAhBfhB,EAiBX,WAAA,YAAA,CAAA;AAOAe,EAAA;AAAA,EADCC,EAAS,EAAE,MAAM,SAAS,SAAS,IAAM;AAAA,GAvB/BhB,EAwBX,WAAA,YAAA,CAAA;AAOAe,EAAA;AAAA,EADCC,EAAS,EAAE,MAAM,SAAS,SAAS,IAAM;AAAA,GA9B/BhB,EA+BX,WAAA,QAAA,CAAA;AAOAe,EAAA;AAAA,EADCC,EAAS,EAAE,WAAW,cAAA,CAAe;AAAA,GArC3BhB,EAsCX,WAAA,cAAA,CAAA;AAKyBe,EAAA;AAAA,EAAxBE,EAAM,QAAQ;AAAA,GA3CJjB,EA2Cc,WAAA,YAAA,CAAA;AAGRe,EAAA;AAAA,EAAhBG,EAAA;AAAM,GA9CIlB,EA8CM,WAAA,qBAAA,CAAA;AA9CNA,IAANe,EAAA;AAAA,EADNI,EAAc,UAAU;AAAA,GACZnB,CAAA;;;;;;ACTN,IAAMoB,IAAN,cAA8BnB,EAAW;AAAA,EAAzC,cAAA;AAAA,UAAA,GAAA,SAAA,GAQL,KAAA,YAMmB,cAOnB,KAAA,aAAa;AAAA,EAAA;AAAA,EAEJ,SAAS;AAChB,WAAOU;AAAA;AAAA;AAAA,gBAGKG,EAAS;AAAA,MACf,eAAe;AAAA,MACf,CAAC,gBAAgB,KAAK,SAAS,EAAE,GAAG;AAAA,IAAA,CACrC,CAAC;AAAA;AAAA;AAAA;AAAA;AAAA,EAKR;AACF;AApCaM,EACK,SAAS,CAACrB,CAAqB;AAO/CgB,EAAA;AAAA,EADCC,EAAS,EAAE,MAAM,QAAQ,SAAS,IAAM;AAAA,GAP9BI,EAQX,WAAA,aAAA,CAAA;AAaAL,EAAA;AAAA,EADCC,EAAS,EAAE,MAAM,QAAQ,WAAW,eAAe;AAAA,GApBzCI,EAqBX,WAAA,cAAA,CAAA;AArBWA,IAANL,EAAA;AAAA,EADNI,EAAc,gBAAgB;AAAA,GAClBC,CAAA;ACFN,SAASC,EAAMC,GAAmC;;AACvD,MAAI,OAAO,WAAa,IAAa,OAAM,IAAI,MAAM,wCAAwC;AAC7F,QAAMC,IAAYD,EAAQ,aAAa,cAGjCE,IAAgB,6BAA6BD,CAAS;AAC5D,MAAIE,IAAQ,SAAS,cAA+BD,CAAa;AAgBjE,MAfKC,MACHA,IAAQ,SAAS,cAAc,gBAAgB,GAC/CA,EAAM,YAAYF,GASlB,SAAS,KAAK,YAAYE,CAAK,IAI7BA,EAAM,aAAa,GAAG;AACxB,UAAMC,IAAa,CAAC,GAAGD,EAAM,iBAA6B,UAAU,CAAC,EAAE,OAAO,CAACE,MAAMA,EAAE,IAAI;AAC3F,IAAID,EAAW,UAAUD,EAAM,gBAC7BG,IAAAF,EAAW,CAAC,MAAZ,QAAAE,EAAe;AAAA,EAEnB;AAGA,QAAMC,IAAU,SAAS,cAAc,UAAU;AACjD,SAAAA,EAAQ,UAAUP,EAAQ,WAAW,WACrCO,EAAQ,WAAWP,EAAQ,YAAY,KACvCO,EAAQ,WAAW,IACnBA,EAAQ,cAAcP,EAAQ,SAG9BO,EAAQ,iBAAiB,iBAAiB,MAAM;AAC9C,IAAAA,EAAQ,OAAA;AAAA,EACV,CAAC,GAEDJ,EAAM,YAAYI,CAAO,GACzBA,EAAQ,KAAA,GAEDA;AACT;"}
|
|
@@ -0,0 +1,47 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @module adoptedStylesheetRegistry
|
|
3
|
+
*
|
|
4
|
+
* A registry that integrates with the `@helixui/adopted-stylesheets` package
|
|
5
|
+
* when available, falling back to the `lightStyleRegistry` pattern for
|
|
6
|
+
* environments that do not support the Constructable Stylesheets API or where
|
|
7
|
+
* the adopted-stylesheets package is not installed.
|
|
8
|
+
*
|
|
9
|
+
* This module provides a unified `register` API so call sites do not need to
|
|
10
|
+
* branch on capability detection.
|
|
11
|
+
*
|
|
12
|
+
* @example
|
|
13
|
+
* ```ts
|
|
14
|
+
* import { adoptedStylesheetRegistry } from '../../utilities/adoptedStylesheetRegistry.js';
|
|
15
|
+
*
|
|
16
|
+
* // Registers via adopted stylesheets when available, falls back to <style> injection.
|
|
17
|
+
* adoptedStylesheetRegistry.register('hx-card', 'p { font-size: var(--hx-font-size-md); }');
|
|
18
|
+
* ```
|
|
19
|
+
*/
|
|
20
|
+
/**
|
|
21
|
+
* Registers a stylesheet for the given component, using the most capable
|
|
22
|
+
* available mechanism:
|
|
23
|
+
*
|
|
24
|
+
* 1. **Constructable Stylesheets** (`document.adoptedStyleSheets`) — preferred;
|
|
25
|
+
* zero-duplication via `CSSStyleSheet` identity.
|
|
26
|
+
* 2. **`<style>` injection** — fallback for older browsers or SSR-hydrated pages
|
|
27
|
+
* that do not support Constructable Stylesheets. Delegates to `injectLightStyles`
|
|
28
|
+
* which scopes selectors via `[data-hx-styled="componentName"]`.
|
|
29
|
+
*
|
|
30
|
+
* Calling `register` multiple times with the same `componentName` is safe —
|
|
31
|
+
* the implementation deduplicates at the sheet level.
|
|
32
|
+
*
|
|
33
|
+
* @param componentName - The component tag name (e.g. `'hx-card'`).
|
|
34
|
+
* @param css - The CSS string to register. For fallback mode, selectors will be
|
|
35
|
+
* scoped under `[data-hx-styled="componentName"]`.
|
|
36
|
+
*/
|
|
37
|
+
declare function register(componentName: string, css: string): void;
|
|
38
|
+
/**
|
|
39
|
+
* The unified registry object for light DOM stylesheet management.
|
|
40
|
+
* Consumers should use this rather than calling `injectLightStyles` directly
|
|
41
|
+
* when they want automatic capability detection.
|
|
42
|
+
*/
|
|
43
|
+
export declare const adoptedStylesheetRegistry: {
|
|
44
|
+
register: typeof register;
|
|
45
|
+
};
|
|
46
|
+
export {};
|
|
47
|
+
//# sourceMappingURL=adoptedStylesheetRegistry.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"adoptedStylesheetRegistry.d.ts","sourceRoot":"","sources":["../../src/utilities/adoptedStylesheetRegistry.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;GAkBG;AAgBH;;;;;;;;;;;;;;;;GAgBG;AACH,iBAAS,QAAQ,CAAC,aAAa,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,GAAG,IAAI,CAiB1D;AAED;;;;GAIG;AACH,eAAO,MAAM,yBAAyB;;CAAe,CAAC"}
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Adopts the full set of HELiX design tokens into `document.adoptedStyleSheets`.
|
|
3
|
+
* Safe to call multiple times — only the first invocation has any effect.
|
|
4
|
+
* Uses a document-level marker to survive multiple bundled copies of the library.
|
|
5
|
+
*
|
|
6
|
+
* The tokens are declared on `:root` so they participate in CSS inheritance
|
|
7
|
+
* and can be overridden by `hx-theme` (which declares on its `:host`).
|
|
8
|
+
*/
|
|
9
|
+
export declare function ensureDocumentTokens(): void;
|
|
10
|
+
//# sourceMappingURL=document-token-adoption.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"document-token-adoption.d.ts","sourceRoot":"","sources":["../../src/utilities/document-token-adoption.ts"],"names":[],"mappings":"AA4BA;;;;;;;GAOG;AACH,wBAAgB,oBAAoB,IAAI,IAAI,CAkB3C"}
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @module generateScopedSelectors
|
|
3
|
+
*
|
|
4
|
+
* Generates CSS with all selectors scoped under a `[data-hx-styled="componentName"]`
|
|
5
|
+
* attribute selector. This ensures injected light DOM styles only apply to content
|
|
6
|
+
* wrapped in `<hx-style-scope component="...">` and do not leak to the rest of the page.
|
|
7
|
+
*
|
|
8
|
+
* @example
|
|
9
|
+
* ```ts
|
|
10
|
+
* import { generateScopedSelectors } from './generateScopedSelectors.js';
|
|
11
|
+
*
|
|
12
|
+
* const scoped = generateScopedSelectors('hx-card', 'p { color: red; }');
|
|
13
|
+
* // '[data-hx-styled="hx-card"] p { color: red; }'
|
|
14
|
+
* ```
|
|
15
|
+
*/
|
|
16
|
+
/**
|
|
17
|
+
* Wraps all CSS selectors to be scoped under `[data-hx-styled="componentName"]`.
|
|
18
|
+
*
|
|
19
|
+
* Handles:
|
|
20
|
+
* - Standard selectors: `p { ... }` → `[data-hx-styled="hx-card"] p { ... }`
|
|
21
|
+
* - `::slotted(*)` patterns: `::slotted(p) { ... }` → `[data-hx-styled="hx-card"] p { ... }`
|
|
22
|
+
* - At-rules (`@media`, `@supports`, etc.) are preserved with their inner rules scoped
|
|
23
|
+
* - `:host` selectors are replaced with the scope attribute selector
|
|
24
|
+
*
|
|
25
|
+
* @param componentName - The component tag name used as the scope identifier.
|
|
26
|
+
* @param css - The CSS string to transform.
|
|
27
|
+
* @returns The transformed CSS with all selectors scoped.
|
|
28
|
+
*/
|
|
29
|
+
export declare function generateScopedSelectors(componentName: string, css: string): string;
|
|
30
|
+
//# sourceMappingURL=generateScopedSelectors.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"generateScopedSelectors.d.ts","sourceRoot":"","sources":["../../src/utilities/generateScopedSelectors.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AAEH;;;;;;;;;;;;GAYG;AACH,wBAAgB,uBAAuB,CAAC,aAAa,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,GAAG,MAAM,CAGlF"}
|
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @module injectLightStyles
|
|
3
|
+
*
|
|
4
|
+
* Core utility for injecting scoped `<style>` elements into `document.head`
|
|
5
|
+
* to style light DOM slotted content in HELiX components. Uses the
|
|
6
|
+
* `lightStyleRegistry` to deduplicate — each component type is injected at
|
|
7
|
+
* most once per page lifetime.
|
|
8
|
+
*
|
|
9
|
+
* This is the primary mechanism for ensuring Drupal-slotted content inherits
|
|
10
|
+
* proper typography and spacing when rendered into HELiX components.
|
|
11
|
+
*
|
|
12
|
+
* @example
|
|
13
|
+
* ```ts
|
|
14
|
+
* import { injectLightStyles } from '../../utilities/injectLightStyles.js';
|
|
15
|
+
*
|
|
16
|
+
* // In connectedCallback:
|
|
17
|
+
* injectLightStyles('hx-card', 'p { font-size: var(--hx-font-size-md); }');
|
|
18
|
+
* ```
|
|
19
|
+
*/
|
|
20
|
+
/**
|
|
21
|
+
* Injects a scoped `<style>` element into `document.head` for light DOM content
|
|
22
|
+
* belonging to `componentName`. The CSS is automatically scoped via
|
|
23
|
+
* `generateScopedSelectors` so styles only apply inside
|
|
24
|
+
* `[data-hx-styled="componentName"]` wrappers.
|
|
25
|
+
*
|
|
26
|
+
* Safe to call multiple times — subsequent calls for the same `componentName`
|
|
27
|
+
* are no-ops (deduplication via `lightStyleRegistry`).
|
|
28
|
+
*
|
|
29
|
+
* No-op in SSR environments where `document` is not defined.
|
|
30
|
+
*
|
|
31
|
+
* @param componentName - The component tag name used as the scope identifier
|
|
32
|
+
* (e.g. `'hx-card'`). Must be unique per component type.
|
|
33
|
+
* @param css - The raw CSS to scope and inject. Selectors will be prefixed with
|
|
34
|
+
* `[data-hx-styled="componentName"]`.
|
|
35
|
+
*/
|
|
36
|
+
export declare function injectLightStyles(componentName: string, css: string): void;
|
|
37
|
+
//# sourceMappingURL=injectLightStyles.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"injectLightStyles.d.ts","sourceRoot":"","sources":["../../src/utilities/injectLightStyles.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;GAkBG;AAKH;;;;;;;;;;;;;;;GAeG;AACH,wBAAgB,iBAAiB,CAAC,aAAa,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,GAAG,IAAI,CAa1E"}
|