@helixui/library 0.3.4 → 1.0.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/custom-elements.json +13562 -12579
- package/dist/components/hx-accordion/hx-accordion-item.d.ts +2 -0
- package/dist/components/hx-accordion/hx-accordion-item.d.ts.map +1 -1
- package/dist/components/hx-accordion/hx-accordion.d.ts +8 -0
- 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.map +1 -1
- package/dist/components/hx-action-bar/index.js +1 -1
- package/dist/components/hx-alert/hx-alert.d.ts +2 -5
- package/dist/components/hx-alert/hx-alert.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/index.js +1 -1
- package/dist/components/hx-banner/hx-banner.d.ts +99 -0
- package/dist/components/hx-banner/hx-banner.d.ts.map +1 -0
- package/dist/components/hx-banner/hx-banner.styles.d.ts +2 -0
- package/dist/components/hx-banner/hx-banner.styles.d.ts.map +1 -0
- package/dist/components/hx-banner/index.d.ts +3 -0
- package/dist/components/hx-banner/index.d.ts.map +1 -0
- package/dist/components/hx-banner/index.js +5 -0
- package/dist/components/hx-banner/index.js.map +1 -0
- package/dist/components/hx-breadcrumb/hx-breadcrumb.d.ts +5 -0
- 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 +17 -0
- 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 +8 -0
- 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 +16 -0
- package/dist/components/hx-card/hx-card.d.ts.map +1 -1
- package/dist/components/hx-card/hx-card.styles.d.ts.map +1 -1
- package/dist/components/hx-card/index.js +1 -1
- package/dist/components/hx-carousel/hx-carousel.d.ts +122 -0
- 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 +3 -1
- package/dist/components/hx-checkbox/hx-checkbox.d.ts.map +1 -1
- package/dist/components/hx-checkbox-group/hx-checkbox-group.d.ts +5 -1
- 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-code-snippet/hx-code-snippet.d.ts +21 -6
- package/dist/components/hx-code-snippet/hx-code-snippet.d.ts.map +1 -1
- package/dist/components/hx-code-snippet/index.js +1 -1
- package/dist/components/hx-color-picker/hx-color-picker.d.ts +13 -0
- package/dist/components/hx-color-picker/hx-color-picker.d.ts.map +1 -1
- package/dist/components/hx-color-picker/hx-color-picker.styles.d.ts.map +1 -1
- package/dist/components/hx-color-picker/index.js +1 -1
- package/dist/components/hx-combobox/hx-combobox.d.ts +24 -0
- 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 +3 -1
- package/dist/components/hx-container/hx-container.d.ts.map +1 -1
- package/dist/components/hx-copy-button/hx-copy-button.d.ts +6 -0
- 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 +79 -0
- package/dist/components/hx-counter/hx-counter.d.ts.map +1 -0
- package/dist/components/hx-counter/hx-counter.styles.d.ts +2 -0
- package/dist/components/hx-counter/hx-counter.styles.d.ts.map +1 -0
- package/dist/components/hx-counter/index.d.ts +3 -0
- package/dist/components/hx-counter/index.d.ts.map +1 -0
- package/dist/components/hx-counter/index.js +5 -0
- package/dist/components/hx-counter/index.js.map +1 -0
- package/dist/components/hx-data-table/hx-data-table.d.ts +6 -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 +124 -0
- package/dist/components/hx-date-picker/hx-date-picker.d.ts.map +1 -1
- package/dist/components/hx-date-picker/index.js +1 -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 +3 -0
- package/dist/components/hx-divider/hx-divider.d.ts.map +1 -1
- package/dist/components/hx-drawer/hx-drawer.d.ts +54 -1
- package/dist/components/hx-drawer/hx-drawer.d.ts.map +1 -1
- package/dist/components/hx-drawer/index.js +1 -1
- package/dist/components/hx-dropdown/hx-dropdown.d.ts +5 -0
- package/dist/components/hx-dropdown/hx-dropdown.d.ts.map +1 -1
- package/dist/components/hx-field/hx-field.d.ts +31 -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-file-upload/hx-file-upload.d.ts +12 -0
- 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 +24 -0
- 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-help-text/hx-help-text.d.ts +3 -0
- package/dist/components/hx-help-text/hx-help-text.d.ts.map +1 -1
- 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-list/hx-list.d.ts.map +1 -1
- package/dist/components/hx-list/index.js +1 -1
- package/dist/components/hx-menu/hx-menu.d.ts +12 -0
- package/dist/components/hx-menu/hx-menu.d.ts.map +1 -1
- package/dist/components/hx-menu/index.js +1 -1
- package/dist/components/hx-meter/hx-meter.d.ts +2 -0
- 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 +15 -1
- 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 +2 -0
- 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 +14 -0
- package/dist/components/hx-overflow-menu/hx-overflow-menu.d.ts.map +1 -1
- package/dist/components/hx-overflow-menu/index.js +1 -1
- package/dist/components/hx-pagination/hx-pagination.d.ts +5 -0
- package/dist/components/hx-pagination/hx-pagination.d.ts.map +1 -1
- package/dist/components/hx-pagination/index.js +1 -1
- package/dist/components/hx-popover/hx-popover.d.ts +10 -38
- 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-progress-bar/hx-progress-bar.d.ts +10 -0
- package/dist/components/hx-progress-bar/hx-progress-bar.d.ts.map +1 -1
- package/dist/components/hx-progress-bar/index.js +1 -1
- package/dist/components/hx-progress-ring/hx-progress-ring.d.ts.map +1 -1
- package/dist/components/hx-progress-ring/index.js +1 -1
- package/dist/components/hx-radio-group/hx-radio-group.d.ts +75 -3
- package/dist/components/hx-radio-group/hx-radio-group.d.ts.map +1 -1
- package/dist/components/hx-radio-group/hx-radio.d.ts +3 -1
- package/dist/components/hx-radio-group/hx-radio.d.ts.map +1 -1
- package/dist/components/hx-radio-group/index.js +1 -1
- package/dist/components/hx-rating/hx-rating.d.ts +18 -3
- package/dist/components/hx-rating/hx-rating.d.ts.map +1 -1
- package/dist/components/hx-rating/index.js +1 -1
- package/dist/components/hx-select/hx-select.d.ts +9 -0
- package/dist/components/hx-select/hx-select.d.ts.map +1 -1
- package/dist/components/hx-select/index.js +1 -1
- package/dist/components/hx-side-nav/hx-side-nav.d.ts.map +1 -1
- package/dist/components/hx-side-nav/index.js +1 -1
- package/dist/components/hx-slider/hx-slider.d.ts +2 -0
- package/dist/components/hx-slider/hx-slider.d.ts.map +1 -1
- package/dist/components/hx-slider/index.js +1 -1
- package/dist/components/hx-split-button/hx-split-button.d.ts +16 -0
- package/dist/components/hx-split-button/hx-split-button.d.ts.map +1 -1
- package/dist/components/hx-split-button/index.js +1 -1
- package/dist/components/hx-split-panel/hx-split-panel.d.ts +11 -0
- package/dist/components/hx-split-panel/hx-split-panel.d.ts.map +1 -1
- package/dist/components/hx-stat/hx-stat.d.ts +71 -0
- package/dist/components/hx-stat/hx-stat.d.ts.map +1 -0
- package/dist/components/hx-stat/hx-stat.styles.d.ts +2 -0
- package/dist/components/hx-stat/hx-stat.styles.d.ts.map +1 -0
- package/dist/components/hx-stat/index.d.ts +3 -0
- package/dist/components/hx-stat/index.d.ts.map +1 -0
- package/dist/components/hx-stat/index.js +5 -0
- package/dist/components/hx-stat/index.js.map +1 -0
- package/dist/components/hx-steps/hx-steps.d.ts +5 -0
- 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 +2 -0
- 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-switch/hx-switch.d.ts +2 -0
- package/dist/components/hx-switch/hx-switch.d.ts.map +1 -1
- package/dist/components/hx-switch/index.js +1 -1
- package/dist/components/hx-table/hx-table.d.ts +60 -0
- package/dist/components/hx-table/hx-table.d.ts.map +1 -0
- package/dist/components/hx-table/hx-table.styles.d.ts +9 -0
- package/dist/components/hx-table/hx-table.styles.d.ts.map +1 -0
- package/dist/components/hx-table/hx-tbody.d.ts +23 -0
- package/dist/components/hx-table/hx-tbody.d.ts.map +1 -0
- package/dist/components/hx-table/hx-td.d.ts +46 -0
- package/dist/components/hx-table/hx-td.d.ts.map +1 -0
- package/dist/components/hx-table/hx-tfoot.d.ts +23 -0
- package/dist/components/hx-table/hx-tfoot.d.ts.map +1 -0
- package/dist/components/hx-table/hx-th.d.ts +61 -0
- package/dist/components/hx-table/hx-th.d.ts.map +1 -0
- package/dist/components/hx-table/hx-thead.d.ts +23 -0
- package/dist/components/hx-table/hx-thead.d.ts.map +1 -0
- package/dist/components/hx-table/hx-tr.d.ts +33 -0
- package/dist/components/hx-table/hx-tr.d.ts.map +1 -0
- package/dist/components/hx-table/index.d.ts +9 -0
- package/dist/components/hx-table/index.d.ts.map +1 -0
- package/dist/components/hx-table/index.js +11 -0
- package/dist/components/hx-table/index.js.map +1 -0
- 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-text-input/hx-text-input.d.ts +1 -0
- package/dist/components/hx-text-input/hx-text-input.d.ts.map +1 -1
- package/dist/components/hx-text-input/index.js +1 -1
- package/dist/components/hx-textarea/hx-textarea.d.ts +14 -0
- 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-time-picker/hx-time-picker.d.ts +22 -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 +36 -0
- package/dist/components/hx-toast/hx-toast-stack.d.ts.map +1 -0
- package/dist/components/hx-toast/hx-toast.d.ts +0 -52
- package/dist/components/hx-toast/hx-toast.d.ts.map +1 -1
- package/dist/components/hx-toast/index.d.ts +6 -2
- package/dist/components/hx-toast/index.d.ts.map +1 -1
- package/dist/components/hx-toast/index.js +1 -1
- package/dist/components/hx-toast/toast-factory.d.ts +25 -0
- package/dist/components/hx-toast/toast-factory.d.ts.map +1 -0
- package/dist/components/hx-toggle-button/hx-toggle-button.d.ts +1 -0
- package/dist/components/hx-toggle-button/hx-toggle-button.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 -45
- 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 +50 -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 +15 -0
- package/dist/components/hx-tree-view/hx-tree-view.d.ts.map +1 -1
- package/dist/components/hx-tree-view/index.js +1 -1
- package/dist/index.d.ts +20 -2
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +168 -154
- package/dist/index.js.map +1 -1
- package/dist/shared/body-scroll-lock-VBa5TFP-.js +12 -0
- package/dist/shared/body-scroll-lock-VBa5TFP-.js.map +1 -0
- package/dist/shared/dev-warn-YlwPHjtX.js +6 -0
- package/dist/shared/dev-warn-YlwPHjtX.js.map +1 -0
- package/dist/shared/{hx-accordion-D95XSAft.js → hx-accordion-Cyswa6J3.js} +46 -43
- package/dist/shared/hx-accordion-Cyswa6J3.js.map +1 -0
- package/dist/shared/{hx-action-bar-B4i9tBCP.js → hx-action-bar-we_WJety.js} +41 -40
- package/dist/shared/hx-action-bar-we_WJety.js.map +1 -0
- package/dist/shared/{hx-alert-BQpT4gL3.js → hx-alert-Cg-zxRiU.js} +2 -2
- package/dist/shared/hx-alert-Cg-zxRiU.js.map +1 -0
- package/dist/shared/{hx-avatar-yHjmNdtf.js → hx-avatar-Cep6Urm3.js} +62 -65
- package/dist/shared/hx-avatar-Cep6Urm3.js.map +1 -0
- package/dist/shared/hx-banner-lxAIJ2kR.js +349 -0
- package/dist/shared/hx-banner-lxAIJ2kR.js.map +1 -0
- package/dist/shared/{hx-breadcrumb-item-DtSxRZ_W.js → hx-breadcrumb-item-C0rz0fzV.js} +46 -44
- package/dist/shared/hx-breadcrumb-item-C0rz0fzV.js.map +1 -0
- package/dist/shared/{hx-button-CtiJsmOg.js → hx-button-Cbhqpm5i.js} +111 -28
- package/dist/shared/hx-button-Cbhqpm5i.js.map +1 -0
- package/dist/shared/{hx-button-group-BMV5qFs4.js → hx-button-group-CWjWv-wS.js} +10 -10
- package/dist/shared/hx-button-group-CWjWv-wS.js.map +1 -0
- package/dist/shared/{hx-card-DAkEfpJd.js → hx-card-Bg4W4uXC.js} +16 -16
- package/dist/shared/hx-card-Bg4W4uXC.js.map +1 -0
- package/dist/shared/{hx-carousel-item-C2yBnM0r.js → hx-carousel-item-BKpmFbUT.js} +101 -63
- package/dist/shared/hx-carousel-item-BKpmFbUT.js.map +1 -0
- package/dist/shared/hx-checkbox-BMayOpAM.js.map +1 -1
- package/dist/shared/{hx-checkbox-group-DTS9iT4b.js → hx-checkbox-group-ydUdV9Sx.js} +7 -7
- package/dist/shared/hx-checkbox-group-ydUdV9Sx.js.map +1 -0
- package/dist/shared/{hx-code-snippet-DdEqy-1B.js → hx-code-snippet-B4hV7rWG.js} +65 -53
- package/dist/shared/hx-code-snippet-B4hV7rWG.js.map +1 -0
- package/dist/shared/{hx-color-picker-K2x_dyeG.js → hx-color-picker-BvfJ_h16.js} +100 -90
- package/dist/shared/hx-color-picker-BvfJ_h16.js.map +1 -0
- package/dist/shared/{hx-combobox-DjMigccw.js → hx-combobox-BBi3izKJ.js} +80 -44
- package/dist/shared/hx-combobox-BBi3izKJ.js.map +1 -0
- package/dist/shared/hx-container-DLUKnTi9.js.map +1 -1
- package/dist/shared/{hx-copy-button-BXL1xkxb.js → hx-copy-button-CLBA31to.js} +45 -50
- package/dist/shared/hx-copy-button-CLBA31to.js.map +1 -0
- package/dist/shared/hx-counter-D-1NXzGs.js +138 -0
- package/dist/shared/hx-counter-D-1NXzGs.js.map +1 -0
- package/dist/shared/{hx-data-table-D3NZvc3P.js → hx-data-table-DNiDVWR2.js} +100 -95
- package/dist/shared/hx-data-table-DNiDVWR2.js.map +1 -0
- package/dist/shared/{hx-date-picker-CIHwx9b3.js → hx-date-picker-D7yCK0nk.js} +17 -12
- package/dist/shared/hx-date-picker-D7yCK0nk.js.map +1 -0
- package/dist/shared/{hx-dialog-e4CSD8xX.js → hx-dialog-Z7Ou_AZ9.js} +37 -36
- package/dist/shared/hx-dialog-Z7Ou_AZ9.js.map +1 -0
- package/dist/shared/hx-divider-XgWIz4Mr.js.map +1 -1
- package/dist/shared/{hx-drawer-bTF0nbrg.js → hx-drawer-Dk-_xzy0.js} +59 -58
- package/dist/shared/hx-drawer-Dk-_xzy0.js.map +1 -0
- package/dist/shared/hx-dropdown-DnjLnkTj.js.map +1 -1
- package/dist/shared/{hx-field-Dz-7M_SC.js → hx-field-CDP8EXuj.js} +22 -19
- package/dist/shared/hx-field-CDP8EXuj.js.map +1 -0
- package/dist/shared/{hx-file-upload-DnYiIhyN.js → hx-file-upload-CUORgnKc.js} +17 -14
- package/dist/shared/hx-file-upload-CUORgnKc.js.map +1 -0
- package/dist/shared/{hx-form-BJeLK34m.js → hx-form-BFv_N1dm.js} +9 -1
- package/dist/shared/{hx-form-BJeLK34m.js.map → hx-form-BFv_N1dm.js.map} +1 -1
- package/dist/shared/hx-help-text-DaOPN1iB.js.map +1 -1
- package/dist/shared/{hx-icon-button-C_fsUJW4.js → hx-icon-button-C83bCR0K.js} +2 -4
- package/dist/shared/hx-icon-button-C83bCR0K.js.map +1 -0
- package/dist/shared/{hx-list-CF-AAnp-.js → hx-list-CdRNgeoP.js} +7 -9
- package/dist/shared/{hx-list-CF-AAnp-.js.map → hx-list-CdRNgeoP.js.map} +1 -1
- package/dist/shared/{hx-menu-divider-Buc5XA9E.js → hx-menu-divider-11Dp2VfM.js} +50 -48
- package/dist/shared/hx-menu-divider-11Dp2VfM.js.map +1 -0
- package/dist/shared/{hx-meter-qcXl0zCL.js → hx-meter-UinDQjl6.js} +43 -37
- package/dist/shared/hx-meter-UinDQjl6.js.map +1 -0
- package/dist/shared/{hx-nav-CWwByFdq.js → hx-nav-DSpwWYUX.js} +81 -81
- package/dist/shared/hx-nav-DSpwWYUX.js.map +1 -0
- package/dist/shared/{hx-nav-item-DItaMWl0.js → hx-nav-item-D54-5eUM.js} +12 -12
- package/dist/shared/hx-nav-item-D54-5eUM.js.map +1 -0
- package/dist/shared/{hx-number-input-CS6_w1lT.js → hx-number-input-BP6TIA92.js} +5 -1
- package/dist/shared/hx-number-input-BP6TIA92.js.map +1 -0
- package/dist/shared/{hx-overflow-menu-CAS1Mlus.js → hx-overflow-menu-C7k5wlZy.js} +39 -34
- package/dist/shared/hx-overflow-menu-C7k5wlZy.js.map +1 -0
- package/dist/shared/{hx-pagination-DNFgXQm3.js → hx-pagination-BQ0cLTuB.js} +65 -62
- package/dist/shared/hx-pagination-BQ0cLTuB.js.map +1 -0
- package/dist/shared/{hx-popover-BjAyLbzp.js → hx-popover-BQsgrJCW.js} +7 -7
- package/dist/shared/hx-popover-BQsgrJCW.js.map +1 -0
- package/dist/shared/{hx-progress-bar-b3_m1hna.js → hx-progress-bar-C_mdPVF-.js} +61 -52
- package/dist/shared/hx-progress-bar-C_mdPVF-.js.map +1 -0
- package/dist/shared/{hx-progress-ring-wOSv2y_I.js → hx-progress-ring-BHJBaXNk.js} +2 -4
- package/dist/shared/hx-progress-ring-BHJBaXNk.js.map +1 -0
- package/dist/shared/{hx-radio-CGtFKls2.js → hx-radio-Bqyi8re3.js} +44 -12
- package/dist/shared/hx-radio-Bqyi8re3.js.map +1 -0
- package/dist/shared/{hx-rating-C4kTOyHF.js → hx-rating-Y_t7Z4qb.js} +104 -67
- package/dist/shared/hx-rating-Y_t7Z4qb.js.map +1 -0
- package/dist/shared/{hx-select-D9bYJcDv.js → hx-select-BBae2LqN.js} +16 -10
- package/dist/shared/hx-select-BBae2LqN.js.map +1 -0
- package/dist/shared/{hx-slider-Duzmuid9.js → hx-slider-CpnxH2UP.js} +9 -5
- package/dist/shared/{hx-slider-Duzmuid9.js.map → hx-slider-CpnxH2UP.js.map} +1 -1
- package/dist/shared/{hx-split-button-DhncgAtZ.js → hx-split-button-BvwoG8h2.js} +14 -13
- package/dist/shared/hx-split-button-BvwoG8h2.js.map +1 -0
- package/dist/shared/hx-split-panel-Cxkeauwe.js.map +1 -1
- package/dist/shared/hx-stat-C2wfph8W.js +212 -0
- package/dist/shared/hx-stat-C2wfph8W.js.map +1 -0
- package/dist/shared/{hx-step-nMT0fHEn.js → hx-step-DYoIumpR.js} +29 -29
- package/dist/shared/hx-step-DYoIumpR.js.map +1 -0
- package/dist/shared/{hx-structured-list-CMja1VXz.js → hx-structured-list-CMWllxGg.js} +23 -17
- package/dist/shared/{hx-structured-list-CMja1VXz.js.map → hx-structured-list-CMWllxGg.js.map} +1 -1
- package/dist/shared/{hx-switch-BPvIcDpM.js → hx-switch-DkKchcuP.js} +8 -3
- package/dist/shared/{hx-switch-BPvIcDpM.js.map → hx-switch-DkKchcuP.js.map} +1 -1
- package/dist/shared/{hx-tab-panel-C7h5lRpw.js → hx-tab-panel-CHB0u1zF.js} +91 -85
- package/dist/shared/hx-tab-panel-CHB0u1zF.js.map +1 -0
- package/dist/shared/hx-td-CVwCGBYf.js +604 -0
- package/dist/shared/hx-td-CVwCGBYf.js.map +1 -0
- package/dist/shared/{hx-text-input-BUMgOQHX.js → hx-text-input-BrCjo4fJ.js} +5 -1
- package/dist/shared/hx-text-input-BrCjo4fJ.js.map +1 -0
- package/dist/shared/{hx-textarea-B_nmxzhC.js → hx-textarea-BsQdB1Rk.js} +51 -18
- package/dist/shared/hx-textarea-BsQdB1Rk.js.map +1 -0
- package/dist/shared/{hx-time-picker-a-BCkecJ.js → hx-time-picker-DRRAFuVd.js} +62 -54
- package/dist/shared/hx-time-picker-DRRAFuVd.js.map +1 -0
- package/dist/shared/{hx-toggle-button--xCXWRJW.js → hx-toggle-button-D4F1soEM.js} +34 -22
- package/dist/shared/{hx-toggle-button--xCXWRJW.js.map → hx-toggle-button-D4F1soEM.js.map} +1 -1
- package/dist/shared/{hx-tooltip-DN6lMlP5.js → hx-tooltip-Bk1iQRHs.js} +23 -23
- package/dist/shared/hx-tooltip-Bk1iQRHs.js.map +1 -0
- package/dist/shared/{hx-top-nav-8lDKNZUj.js → hx-top-nav-DzW7XLv-.js} +42 -29
- package/dist/shared/{hx-top-nav-8lDKNZUj.js.map → hx-top-nav-DzW7XLv-.js.map} +1 -1
- package/dist/shared/{hx-tree-item-Cesh_du5.js → hx-tree-item-DdH6RbMs.js} +170 -111
- package/dist/shared/hx-tree-item-DdH6RbMs.js.map +1 -0
- package/dist/shared/{hx-toast-ikwh9Y03.js → toast-factory-B8jicczW.js} +69 -66
- package/dist/shared/toast-factory-B8jicczW.js.map +1 -0
- package/dist/tools/cem-a11y-analyzer/analyzers/aria-analyzer.d.ts +12 -0
- package/dist/tools/cem-a11y-analyzer/analyzers/aria-analyzer.d.ts.map +1 -0
- package/dist/tools/cem-a11y-analyzer/analyzers/focus-analyzer.d.ts +13 -0
- package/dist/tools/cem-a11y-analyzer/analyzers/focus-analyzer.d.ts.map +1 -0
- package/dist/tools/cem-a11y-analyzer/analyzers/form-analyzer.d.ts +13 -0
- package/dist/tools/cem-a11y-analyzer/analyzers/form-analyzer.d.ts.map +1 -0
- package/dist/tools/cem-a11y-analyzer/analyzers/keyboard-analyzer.d.ts +12 -0
- package/dist/tools/cem-a11y-analyzer/analyzers/keyboard-analyzer.d.ts.map +1 -0
- package/dist/tools/cem-a11y-analyzer/analyzers/label-analyzer.d.ts +13 -0
- package/dist/tools/cem-a11y-analyzer/analyzers/label-analyzer.d.ts.map +1 -0
- package/dist/tools/cem-a11y-analyzer/analyzers/motion-analyzer.d.ts +12 -0
- package/dist/tools/cem-a11y-analyzer/analyzers/motion-analyzer.d.ts.map +1 -0
- package/dist/tools/cem-a11y-analyzer/index.d.ts +14 -0
- package/dist/tools/cem-a11y-analyzer/index.d.ts.map +1 -0
- package/dist/tools/cem-a11y-analyzer/reporter.d.ts +6 -0
- package/dist/tools/cem-a11y-analyzer/reporter.d.ts.map +1 -0
- package/dist/tools/cem-a11y-analyzer/scorer.d.ts +22 -0
- package/dist/tools/cem-a11y-analyzer/scorer.d.ts.map +1 -0
- package/dist/tools/cem-a11y-analyzer/types.d.ts +171 -0
- package/dist/tools/cem-a11y-analyzer/types.d.ts.map +1 -0
- package/dist/utils/body-scroll-lock.d.ts +34 -0
- package/dist/utils/body-scroll-lock.d.ts.map +1 -0
- package/dist/utils/dev-warn.d.ts +19 -0
- package/dist/utils/dev-warn.d.ts.map +1 -0
- package/package.json +1 -1
- package/dist/shared/hx-accordion-D95XSAft.js.map +0 -1
- package/dist/shared/hx-action-bar-B4i9tBCP.js.map +0 -1
- package/dist/shared/hx-alert-BQpT4gL3.js.map +0 -1
- package/dist/shared/hx-avatar-yHjmNdtf.js.map +0 -1
- package/dist/shared/hx-breadcrumb-item-DtSxRZ_W.js.map +0 -1
- package/dist/shared/hx-button-CtiJsmOg.js.map +0 -1
- package/dist/shared/hx-button-group-BMV5qFs4.js.map +0 -1
- package/dist/shared/hx-card-DAkEfpJd.js.map +0 -1
- package/dist/shared/hx-carousel-item-C2yBnM0r.js.map +0 -1
- package/dist/shared/hx-checkbox-group-DTS9iT4b.js.map +0 -1
- package/dist/shared/hx-code-snippet-DdEqy-1B.js.map +0 -1
- package/dist/shared/hx-color-picker-K2x_dyeG.js.map +0 -1
- package/dist/shared/hx-combobox-DjMigccw.js.map +0 -1
- package/dist/shared/hx-copy-button-BXL1xkxb.js.map +0 -1
- package/dist/shared/hx-data-table-D3NZvc3P.js.map +0 -1
- package/dist/shared/hx-date-picker-CIHwx9b3.js.map +0 -1
- package/dist/shared/hx-dialog-e4CSD8xX.js.map +0 -1
- package/dist/shared/hx-drawer-bTF0nbrg.js.map +0 -1
- package/dist/shared/hx-field-Dz-7M_SC.js.map +0 -1
- package/dist/shared/hx-file-upload-DnYiIhyN.js.map +0 -1
- package/dist/shared/hx-icon-button-C_fsUJW4.js.map +0 -1
- package/dist/shared/hx-menu-divider-Buc5XA9E.js.map +0 -1
- package/dist/shared/hx-meter-qcXl0zCL.js.map +0 -1
- package/dist/shared/hx-nav-CWwByFdq.js.map +0 -1
- package/dist/shared/hx-nav-item-DItaMWl0.js.map +0 -1
- package/dist/shared/hx-number-input-CS6_w1lT.js.map +0 -1
- package/dist/shared/hx-overflow-menu-CAS1Mlus.js.map +0 -1
- package/dist/shared/hx-pagination-DNFgXQm3.js.map +0 -1
- package/dist/shared/hx-popover-BjAyLbzp.js.map +0 -1
- package/dist/shared/hx-progress-bar-b3_m1hna.js.map +0 -1
- package/dist/shared/hx-progress-ring-wOSv2y_I.js.map +0 -1
- package/dist/shared/hx-radio-CGtFKls2.js.map +0 -1
- package/dist/shared/hx-rating-C4kTOyHF.js.map +0 -1
- package/dist/shared/hx-select-D9bYJcDv.js.map +0 -1
- package/dist/shared/hx-split-button-DhncgAtZ.js.map +0 -1
- package/dist/shared/hx-step-nMT0fHEn.js.map +0 -1
- package/dist/shared/hx-tab-panel-C7h5lRpw.js.map +0 -1
- package/dist/shared/hx-text-input-BUMgOQHX.js.map +0 -1
- package/dist/shared/hx-textarea-B_nmxzhC.js.map +0 -1
- package/dist/shared/hx-time-picker-a-BCkecJ.js.map +0 -1
- package/dist/shared/hx-toast-ikwh9Y03.js.map +0 -1
- package/dist/shared/hx-tooltip-DN6lMlP5.js.map +0 -1
- package/dist/shared/hx-tree-item-Cesh_du5.js.map +0 -1
|
@@ -1,9 +1,9 @@
|
|
|
1
|
-
import { css as
|
|
2
|
-
import { property as h, state as
|
|
1
|
+
import { css as f, LitElement as x, html as g } from "lit";
|
|
2
|
+
import { property as h, state as _, customElement as b } from "lit/decorators.js";
|
|
3
3
|
import { ifDefined as m } from "lit/directives/if-defined.js";
|
|
4
|
-
import { styleMap as
|
|
5
|
-
import { tokenStyles as
|
|
6
|
-
const
|
|
4
|
+
import { styleMap as w } from "lit/directives/style-map.js";
|
|
5
|
+
import { tokenStyles as $ } from "@helixui/tokens/lit";
|
|
6
|
+
const y = f`
|
|
7
7
|
:host {
|
|
8
8
|
display: block;
|
|
9
9
|
width: 100%;
|
|
@@ -78,14 +78,14 @@ const w = p`
|
|
|
78
78
|
border: 0;
|
|
79
79
|
}
|
|
80
80
|
`;
|
|
81
|
-
var
|
|
82
|
-
for (var
|
|
83
|
-
(l = r[
|
|
84
|
-
return s &&
|
|
81
|
+
var S = Object.defineProperty, V = Object.getOwnPropertyDescriptor, n = (r, t, i, s) => {
|
|
82
|
+
for (var a = s > 1 ? void 0 : s ? V(t, i) : t, o = r.length - 1, l; o >= 0; o--)
|
|
83
|
+
(l = r[o]) && (a = (s ? l(t, i, a) : l(a)) || a);
|
|
84
|
+
return s && a && S(t, i, a), a;
|
|
85
85
|
};
|
|
86
|
-
let
|
|
86
|
+
let e = class extends x {
|
|
87
87
|
constructor() {
|
|
88
|
-
super(...arguments), this.value = 0, this.min = 0, this.max = 100, this._hasSlotContent = !1;
|
|
88
|
+
super(...arguments), this._uid = `hx-meter-${++e._counter}`, this.value = 0, this.min = 0, this.max = 100, this._hasSlotContent = !1;
|
|
89
89
|
}
|
|
90
90
|
_clampedValue() {
|
|
91
91
|
return Math.min(Math.max(this.value, this.min), this.max);
|
|
@@ -97,11 +97,11 @@ let o = class extends v {
|
|
|
97
97
|
_resolveState() {
|
|
98
98
|
const r = this._clampedValue(), t = this.low !== void 0, i = this.high !== void 0, s = this.optimum !== void 0;
|
|
99
99
|
if (!t && !i && !s) return "default";
|
|
100
|
-
const
|
|
100
|
+
const a = this.low ?? 0, o = this.high ?? this.max, l = t && r < a, c = i && r > o, u = !l && !c;
|
|
101
101
|
if (!s)
|
|
102
|
-
return
|
|
103
|
-
const
|
|
104
|
-
return !
|
|
102
|
+
return l || c ? "warning" : "optimum";
|
|
103
|
+
const d = this.optimum ?? this.min, p = t && d < a, v = i && d > o;
|
|
104
|
+
return !p && !v ? u ? "optimum" : "warning" : p ? l ? "optimum" : u ? "warning" : "danger" : c ? "optimum" : u ? "warning" : "danger";
|
|
105
105
|
}
|
|
106
106
|
_onLabelSlotChange(r) {
|
|
107
107
|
const t = r.target;
|
|
@@ -111,8 +111,8 @@ let o = class extends v {
|
|
|
111
111
|
this.dataset.state = this._resolveState();
|
|
112
112
|
}
|
|
113
113
|
render() {
|
|
114
|
-
const r = this._percentage(), t = this._resolveState(), i = this._clampedValue(), s = t !== "default" ? ` — ${t}` : "",
|
|
115
|
-
return
|
|
114
|
+
const r = this._percentage(), t = this._resolveState(), i = this._clampedValue(), s = t !== "default" ? ` — ${t}` : "", a = `${i} of ${this.max}${s}`, o = this.label !== void 0 || this._hasSlotContent;
|
|
115
|
+
return g`
|
|
116
116
|
<div
|
|
117
117
|
part="base"
|
|
118
118
|
class="meter"
|
|
@@ -121,18 +121,23 @@ let o = class extends v {
|
|
|
121
121
|
aria-valuenow=${i}
|
|
122
122
|
aria-valuemin=${this.min}
|
|
123
123
|
aria-valuemax=${this.max}
|
|
124
|
-
aria-valuetext=${
|
|
125
|
-
aria-label=${m(
|
|
126
|
-
aria-labelledby=${m(
|
|
124
|
+
aria-valuetext=${a}
|
|
125
|
+
aria-label=${m(o ? void 0 : `${i} of ${this.max}`)}
|
|
126
|
+
aria-labelledby=${m(o ? `${this._uid}-label` : void 0)}
|
|
127
127
|
>
|
|
128
|
-
<span
|
|
128
|
+
<span
|
|
129
|
+
id=${`${this._uid}-label`}
|
|
130
|
+
part="label"
|
|
131
|
+
class="meter__label"
|
|
132
|
+
?hidden=${!o}
|
|
133
|
+
>
|
|
129
134
|
<slot name="label" @slotchange=${this._onLabelSlotChange}>${this.label ?? ""}</slot>
|
|
130
135
|
</span>
|
|
131
136
|
<div class="meter__track" part="track">
|
|
132
137
|
<div
|
|
133
138
|
part="indicator"
|
|
134
139
|
class="meter__indicator"
|
|
135
|
-
style=${
|
|
140
|
+
style=${w({ width: `${r}%` })}
|
|
136
141
|
></div>
|
|
137
142
|
</div>
|
|
138
143
|
<meter
|
|
@@ -150,35 +155,36 @@ let o = class extends v {
|
|
|
150
155
|
`;
|
|
151
156
|
}
|
|
152
157
|
};
|
|
153
|
-
|
|
158
|
+
e.styles = [$, y];
|
|
159
|
+
e._counter = 0;
|
|
154
160
|
n([
|
|
155
161
|
h({ type: Number, reflect: !0 })
|
|
156
|
-
],
|
|
162
|
+
], e.prototype, "value", 2);
|
|
157
163
|
n([
|
|
158
164
|
h({ type: Number, reflect: !0 })
|
|
159
|
-
],
|
|
165
|
+
], e.prototype, "min", 2);
|
|
160
166
|
n([
|
|
161
167
|
h({ type: Number, reflect: !0 })
|
|
162
|
-
],
|
|
168
|
+
], e.prototype, "max", 2);
|
|
163
169
|
n([
|
|
164
170
|
h({ type: Number, reflect: !0 })
|
|
165
|
-
],
|
|
171
|
+
], e.prototype, "low", 2);
|
|
166
172
|
n([
|
|
167
173
|
h({ type: Number, reflect: !0 })
|
|
168
|
-
],
|
|
174
|
+
], e.prototype, "high", 2);
|
|
169
175
|
n([
|
|
170
176
|
h({ type: Number, reflect: !0 })
|
|
171
|
-
],
|
|
177
|
+
], e.prototype, "optimum", 2);
|
|
172
178
|
n([
|
|
173
179
|
h({ type: String })
|
|
174
|
-
],
|
|
180
|
+
], e.prototype, "label", 2);
|
|
175
181
|
n([
|
|
176
|
-
|
|
177
|
-
],
|
|
178
|
-
|
|
179
|
-
|
|
180
|
-
],
|
|
182
|
+
_()
|
|
183
|
+
], e.prototype, "_hasSlotContent", 2);
|
|
184
|
+
e = n([
|
|
185
|
+
b("hx-meter")
|
|
186
|
+
], e);
|
|
181
187
|
export {
|
|
182
|
-
|
|
188
|
+
e as H
|
|
183
189
|
};
|
|
184
|
-
//# sourceMappingURL=hx-meter-
|
|
190
|
+
//# sourceMappingURL=hx-meter-UinDQjl6.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"hx-meter-UinDQjl6.js","sources":["../../src/components/hx-meter/hx-meter.styles.ts","../../src/components/hx-meter/hx-meter.ts"],"sourcesContent":["import { css } from 'lit';\n\nexport const helixMeterStyles = css`\n :host {\n display: block;\n width: 100%;\n }\n\n .meter {\n display: flex;\n flex-direction: column;\n gap: var(--hx-space-2, 0.5rem);\n width: 100%;\n }\n\n .meter__label {\n font-size: var(--hx-font-size-sm, 0.875rem);\n font-weight: var(--hx-font-weight-medium, 500);\n color: var(--hx-meter-label-color, var(--hx-color-neutral-700, #374151));\n line-height: var(--hx-line-height-normal, 1.5);\n }\n\n .meter__track {\n position: relative;\n width: 100%;\n height: var(--hx-meter-track-height, var(--hx-size-2, 0.5rem));\n background-color: var(--hx-meter-track-color, var(--hx-color-neutral-200, #e5e7eb));\n border-radius: var(--hx-meter-track-radius, var(--hx-radius-full, 9999px));\n overflow: hidden;\n }\n\n .meter__indicator {\n position: absolute;\n inset-block: 0;\n inset-inline-start: 0;\n height: 100%;\n border-radius: inherit;\n background-color: var(--_indicator-color);\n transition:\n width var(--hx-duration-fast, 150ms) ease,\n background-color var(--hx-duration-fast, 150ms) ease;\n }\n\n /* ─── Default (no thresholds configured) ─── */\n\n :host {\n --_indicator-color: var(--hx-meter-indicator-color, var(--hx-color-primary-500, #3b82f6));\n }\n\n /* ─── Semantic state colors ─── */\n\n :host([data-state='optimum']) {\n --_indicator-color: var(--hx-meter-color-optimum, var(--hx-color-success-500, #22c55e));\n }\n\n :host([data-state='warning']) {\n --_indicator-color: var(--hx-meter-color-warning, var(--hx-color-warning-500, #f59e0b));\n }\n\n :host([data-state='danger']) {\n --_indicator-color: var(--hx-meter-color-danger, var(--hx-color-danger-500, #ef4444));\n }\n\n /* ─── Native meter hidden (we use custom rendering) ─── */\n\n .meter__native {\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","import { LitElement, html } from 'lit';\nimport { customElement, property, state } from 'lit/decorators.js';\nimport { ifDefined } from 'lit/directives/if-defined.js';\nimport { styleMap } from 'lit/directives/style-map.js';\nimport { tokenStyles } from '@helixui/tokens/lit';\nimport { helixMeterStyles } from './hx-meter.styles.js';\n\ntype MeterState = 'optimum' | 'warning' | 'danger' | 'default';\n\n/**\n * A scalar measurement within a known range — e.g., disk usage, health score,\n * or any numeric value with defined min/max bounds. Supports low/high/optimum\n * threshold markers for semantic color feedback.\n *\n * @summary Scalar measurement gauge within a defined range.\n *\n * @tag hx-meter\n *\n * @slot label - Visible label rendered above the meter track. When using this\n * slot without the `label` attribute, the accessible name is derived from the\n * slot content via `aria-labelledby`. The `label` attribute is NOT required\n * when slot content is provided — the component detects slot content and\n * switches to `aria-labelledby` automatically.\n *\n * @csspart base - The outer wrapper element.\n * @csspart track - The unfilled track bar element.\n * @csspart indicator - The filled bar indicating the current value.\n * @csspart label - The label wrapper element.\n *\n * @cssprop [--hx-meter-track-height] - Height of the track bar.\n * @cssprop [--hx-meter-track-color] - Background color of the unfilled track.\n * @cssprop [--hx-meter-track-radius] - Border radius of the track.\n * @cssprop [--hx-meter-indicator-color] - Default filled bar color (no thresholds).\n * @cssprop [--hx-meter-color-optimum] - Color when value is in the optimum zone.\n * @cssprop [--hx-meter-color-warning] - Color when value is in a warning zone.\n * @cssprop [--hx-meter-color-danger] - Color when value is in the danger zone.\n * @cssprop [--hx-meter-label-color] - Label text color.\n */\n@customElement('hx-meter')\nexport class HelixMeter extends LitElement {\n static override styles = [tokenStyles, helixMeterStyles];\n\n private static _counter = 0;\n private _uid = `hx-meter-${++HelixMeter._counter}`;\n\n /**\n * Current value of the meter.\n * @attr value\n */\n @property({ type: Number, reflect: true })\n value = 0;\n\n /**\n * Minimum value of the range.\n * @attr min\n */\n @property({ type: Number, reflect: true })\n min = 0;\n\n /**\n * Maximum value of the range.\n * @attr max\n */\n @property({ type: Number, reflect: true })\n max = 100;\n\n /**\n * Threshold below which the value is considered suboptimal (lower range warning).\n * @attr low\n */\n @property({ type: Number, reflect: true })\n low?: number;\n\n /**\n * Threshold above which the value is considered suboptimal (upper range warning).\n * @attr high\n */\n @property({ type: Number, reflect: true })\n high?: number;\n\n /**\n * The optimal value within the range. Used to determine which zone is \"good\".\n * @attr optimum\n */\n @property({ type: Number, reflect: true })\n optimum?: number;\n\n /**\n * Accessible label for the meter. Used as the visible label text and as\n * the source for `aria-labelledby`. When only slot content is provided\n * (no `label` attribute), the slot content is used for the accessible name.\n * @attr label\n */\n @property({ type: String })\n label?: string;\n\n @state()\n private _hasSlotContent = false;\n\n private _clampedValue(): number {\n return Math.min(Math.max(this.value, this.min), this.max);\n }\n\n private _percentage(): number {\n const range = this.max - this.min;\n if (range === 0) return 0;\n return ((this._clampedValue() - this.min) / range) * 100;\n }\n\n private _resolveState(): MeterState {\n const v = this._clampedValue();\n const hasLow = this.low !== undefined;\n const hasHigh = this.high !== undefined;\n const hasOptimum = this.optimum !== undefined;\n\n if (!hasLow && !hasHigh && !hasOptimum) return 'default';\n\n // When hasLow/hasHigh/hasOptimum are true, the corresponding property is defined.\n // Use nullish coalescing to satisfy the type checker while preserving the runtime logic.\n const lowVal = this.low ?? 0;\n const highVal = this.high ?? this.max;\n const inLowZone = hasLow && v < lowVal;\n const inHighZone = hasHigh && v > highVal;\n const inMiddleZone = !inLowZone && !inHighZone;\n\n if (!hasOptimum) {\n if (inLowZone || inHighZone) return 'warning';\n return 'optimum';\n }\n\n const opt = this.optimum ?? this.min;\n const optimumInLow = hasLow && opt < lowVal;\n const optimumInHigh = hasHigh && opt > highVal;\n const optimumInMiddle = !optimumInLow && !optimumInHigh;\n\n if (optimumInMiddle) {\n if (inMiddleZone) return 'optimum';\n return 'warning';\n } else if (optimumInLow) {\n if (inLowZone) return 'optimum';\n if (inMiddleZone) return 'warning';\n return 'danger';\n } else {\n // optimumInHigh\n if (inHighZone) return 'optimum';\n if (inMiddleZone) return 'warning';\n return 'danger';\n }\n }\n\n private _onLabelSlotChange(e: Event) {\n const slot = e.target as HTMLSlotElement;\n this._hasSlotContent = slot.assignedNodes({ flatten: true }).length > 0;\n }\n\n override updated() {\n // Set data-state on host so :host([data-state]) CSS selectors work\n this.dataset['state'] = this._resolveState();\n }\n\n override render() {\n const pct = this._percentage();\n const state = this._resolveState();\n const clampedValue = this._clampedValue();\n const stateLabel = state !== 'default' ? ` — ${state}` : '';\n const ariaValuetext = `${clampedValue} of ${this.max}${stateLabel}`;\n const hasVisibleLabel = this.label !== undefined || this._hasSlotContent;\n\n return html`\n <div\n part=\"base\"\n class=\"meter\"\n role=\"meter\"\n tabindex=\"0\"\n aria-valuenow=${clampedValue}\n aria-valuemin=${this.min}\n aria-valuemax=${this.max}\n aria-valuetext=${ariaValuetext}\n aria-label=${ifDefined(!hasVisibleLabel ? `${clampedValue} of ${this.max}` : undefined)}\n aria-labelledby=${ifDefined(hasVisibleLabel ? `${this._uid}-label` : undefined)}\n >\n <span\n id=${`${this._uid}-label`}\n part=\"label\"\n class=\"meter__label\"\n ?hidden=${!hasVisibleLabel}\n >\n <slot name=\"label\" @slotchange=${this._onLabelSlotChange}>${this.label ?? ''}</slot>\n </span>\n <div class=\"meter__track\" part=\"track\">\n <div\n part=\"indicator\"\n class=\"meter__indicator\"\n style=${styleMap({ width: `${pct}%` })}\n ></div>\n </div>\n <meter\n class=\"meter__native\"\n value=${clampedValue}\n min=${this.min}\n max=${this.max}\n low=${ifDefined(this.low)}\n high=${ifDefined(this.high)}\n optimum=${ifDefined(this.optimum)}\n aria-hidden=\"true\"\n tabindex=\"-1\"\n ></meter>\n </div>\n `;\n }\n}\n\ndeclare global {\n interface HTMLElementTagNameMap {\n 'hx-meter': HelixMeter;\n }\n}\n"],"names":["helixMeterStyles","css","HelixMeter","LitElement","range","v","hasLow","hasHigh","hasOptimum","lowVal","highVal","inLowZone","inHighZone","inMiddleZone","opt","optimumInLow","optimumInHigh","e","slot","pct","state","clampedValue","stateLabel","ariaValuetext","hasVisibleLabel","html","ifDefined","styleMap","tokenStyles","__decorateClass","property","customElement"],"mappings":"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"}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { css as g, LitElement as k, svg as _, html as
|
|
1
|
+
import { css as g, LitElement as k, svg as _, html as c, nothing as f } from "lit";
|
|
2
2
|
import { property as x, state as b, customElement as y } from "lit/decorators.js";
|
|
3
3
|
import { classMap as v } from "lit/directives/class-map.js";
|
|
4
4
|
import { repeat as w } from "lit/directives/repeat.js";
|
|
@@ -244,12 +244,12 @@ const C = g`
|
|
|
244
244
|
}
|
|
245
245
|
}
|
|
246
246
|
`;
|
|
247
|
-
var I = Object.defineProperty, O = Object.getOwnPropertyDescriptor, p = (e, n,
|
|
248
|
-
for (var
|
|
249
|
-
(
|
|
250
|
-
return
|
|
247
|
+
var I = Object.defineProperty, O = Object.getOwnPropertyDescriptor, p = (e, n, i, a) => {
|
|
248
|
+
for (var t = a > 1 ? void 0 : a ? O(n, i) : n, o = e.length - 1, l; o >= 0; o--)
|
|
249
|
+
(l = e[o]) && (t = (a ? l(n, i, t) : l(t)) || t);
|
|
250
|
+
return a && t && I(n, i, t), t;
|
|
251
251
|
};
|
|
252
|
-
let
|
|
252
|
+
let d = class extends k {
|
|
253
253
|
constructor() {
|
|
254
254
|
super(...arguments), this.items = [], this.orientation = "horizontal", this.label = "Main navigation", this._mobileOpen = !1, this._expandedIndex = null, this._boundOutsideClick = this._handleOutsideClick.bind(this);
|
|
255
255
|
}
|
|
@@ -273,9 +273,9 @@ let h = class extends k {
|
|
|
273
273
|
_handleToggle() {
|
|
274
274
|
this._mobileOpen = !this._mobileOpen, this._mobileOpen || (this._expandedIndex = null);
|
|
275
275
|
}
|
|
276
|
-
_handleItemClick(e, n,
|
|
277
|
-
var
|
|
278
|
-
|
|
276
|
+
_handleItemClick(e, n, i) {
|
|
277
|
+
var a;
|
|
278
|
+
i.preventDefault(), (a = e.children) != null && a.length ? this._expandedIndex = this._expandedIndex === n ? null : n : (this._mobileOpen = !1, this._expandedIndex = null, this.dispatchEvent(
|
|
279
279
|
new CustomEvent("hx-nav-select", {
|
|
280
280
|
bubbles: !0,
|
|
281
281
|
composed: !0,
|
|
@@ -292,52 +292,52 @@ let h = class extends k {
|
|
|
292
292
|
})
|
|
293
293
|
);
|
|
294
294
|
}
|
|
295
|
-
_handleKeydown(e, n,
|
|
296
|
-
var
|
|
297
|
-
const
|
|
298
|
-
'
|
|
295
|
+
_handleKeydown(e, n, i) {
|
|
296
|
+
var l, s, u;
|
|
297
|
+
const a = (l = this.shadowRoot) == null ? void 0 : l.querySelectorAll(
|
|
298
|
+
'[part="list"] > [part="item"] > [part="link"]'
|
|
299
299
|
);
|
|
300
|
-
if (!
|
|
301
|
-
const
|
|
300
|
+
if (!a) return;
|
|
301
|
+
const t = Array.from(a), o = t[n];
|
|
302
302
|
switch (e.key) {
|
|
303
303
|
case "ArrowRight":
|
|
304
304
|
case "ArrowDown": {
|
|
305
|
-
if (e.preventDefault(), (
|
|
305
|
+
if (e.preventDefault(), (s = i.children) != null && s.length && e.key === "ArrowDown" && this.orientation === "horizontal")
|
|
306
306
|
this._expandedIndex = n, this.updateComplete.then(() => {
|
|
307
|
-
var
|
|
308
|
-
const
|
|
307
|
+
var h;
|
|
308
|
+
const r = (h = this.shadowRoot) == null ? void 0 : h.querySelector(
|
|
309
309
|
'.nav__submenu [part="link"]'
|
|
310
310
|
);
|
|
311
|
-
|
|
311
|
+
r == null || r.focus();
|
|
312
312
|
});
|
|
313
313
|
else {
|
|
314
|
-
const
|
|
315
|
-
|
|
314
|
+
const r = t[n + 1] ?? t[0];
|
|
315
|
+
r == null || r.focus();
|
|
316
316
|
}
|
|
317
317
|
break;
|
|
318
318
|
}
|
|
319
319
|
case "ArrowLeft":
|
|
320
320
|
case "ArrowUp": {
|
|
321
321
|
e.preventDefault();
|
|
322
|
-
const
|
|
323
|
-
|
|
322
|
+
const r = t[n - 1] ?? t[t.length - 1];
|
|
323
|
+
r == null || r.focus();
|
|
324
324
|
break;
|
|
325
325
|
}
|
|
326
326
|
case "Escape": {
|
|
327
|
-
this._expandedIndex = null,
|
|
327
|
+
this._expandedIndex = null, o == null || o.focus();
|
|
328
328
|
break;
|
|
329
329
|
}
|
|
330
330
|
case "Enter":
|
|
331
331
|
case " ": {
|
|
332
|
-
if ((u =
|
|
332
|
+
if ((u = i.children) != null && u.length) {
|
|
333
333
|
e.preventDefault();
|
|
334
|
-
const
|
|
335
|
-
this._expandedIndex =
|
|
334
|
+
const r = this._expandedIndex === n;
|
|
335
|
+
this._expandedIndex = r ? null : n, r || this.updateComplete.then(() => {
|
|
336
336
|
var m;
|
|
337
|
-
const
|
|
337
|
+
const h = (m = this.shadowRoot) == null ? void 0 : m.querySelector(
|
|
338
338
|
'.nav__submenu:not([hidden]) [part="link"]'
|
|
339
339
|
);
|
|
340
|
-
|
|
340
|
+
h == null || h.focus();
|
|
341
341
|
});
|
|
342
342
|
}
|
|
343
343
|
break;
|
|
@@ -345,31 +345,31 @@ let h = class extends k {
|
|
|
345
345
|
}
|
|
346
346
|
}
|
|
347
347
|
_handleSubKeydown(e, n) {
|
|
348
|
-
var
|
|
349
|
-
const
|
|
348
|
+
var l, s, u;
|
|
349
|
+
const i = (l = this.shadowRoot) == null ? void 0 : l.querySelectorAll(
|
|
350
350
|
'.nav__submenu:not([hidden]) [part="link"]'
|
|
351
351
|
);
|
|
352
|
-
if (!
|
|
353
|
-
const
|
|
352
|
+
if (!i) return;
|
|
353
|
+
const a = Array.from(i), t = e.currentTarget ?? e.target, o = a.indexOf(t);
|
|
354
354
|
switch (e.key) {
|
|
355
355
|
case "ArrowDown": {
|
|
356
356
|
e.preventDefault();
|
|
357
|
-
const
|
|
358
|
-
|
|
357
|
+
const r = a[o + 1] ?? a[0];
|
|
358
|
+
r == null || r.focus();
|
|
359
359
|
break;
|
|
360
360
|
}
|
|
361
361
|
case "ArrowUp": {
|
|
362
362
|
e.preventDefault();
|
|
363
|
-
const
|
|
364
|
-
|
|
363
|
+
const r = a[o - 1] ?? a[a.length - 1];
|
|
364
|
+
r == null || r.focus();
|
|
365
365
|
break;
|
|
366
366
|
}
|
|
367
367
|
case "Escape": {
|
|
368
368
|
e.preventDefault(), this._expandedIndex = null;
|
|
369
|
-
const
|
|
370
|
-
'
|
|
369
|
+
const r = (s = this.shadowRoot) == null ? void 0 : s.querySelectorAll(
|
|
370
|
+
'[part="list"] > [part="item"] > [part="link"]'
|
|
371
371
|
);
|
|
372
|
-
(
|
|
372
|
+
(u = r == null ? void 0 : r[n]) == null || u.focus();
|
|
373
373
|
break;
|
|
374
374
|
}
|
|
375
375
|
}
|
|
@@ -386,7 +386,7 @@ let h = class extends k {
|
|
|
386
386
|
}
|
|
387
387
|
// ─── Render Helpers ───
|
|
388
388
|
_renderHamburgerIcon() {
|
|
389
|
-
return
|
|
389
|
+
return c`<svg
|
|
390
390
|
width="24"
|
|
391
391
|
height="24"
|
|
392
392
|
viewBox="0 0 24 24"
|
|
@@ -403,7 +403,7 @@ let h = class extends k {
|
|
|
403
403
|
</svg>`;
|
|
404
404
|
}
|
|
405
405
|
_renderChevronIcon() {
|
|
406
|
-
return
|
|
406
|
+
return c`<svg
|
|
407
407
|
class="nav__chevron"
|
|
408
408
|
width="16"
|
|
409
409
|
height="16"
|
|
@@ -421,30 +421,30 @@ let h = class extends k {
|
|
|
421
421
|
/>
|
|
422
422
|
</svg>`;
|
|
423
423
|
}
|
|
424
|
-
_renderSubMenu(e, n,
|
|
425
|
-
const
|
|
426
|
-
return
|
|
424
|
+
_renderSubMenu(e, n, i) {
|
|
425
|
+
const a = this._expandedIndex === n;
|
|
426
|
+
return c`
|
|
427
427
|
<ul
|
|
428
428
|
class="nav__submenu"
|
|
429
429
|
role="list"
|
|
430
|
-
aria-label="${
|
|
431
|
-
?hidden=${!
|
|
430
|
+
aria-label="${i} submenu"
|
|
431
|
+
?hidden=${!a}
|
|
432
432
|
>
|
|
433
433
|
${e.map(
|
|
434
|
-
(
|
|
434
|
+
(t) => c`
|
|
435
435
|
<li class="nav__submenu-item">
|
|
436
436
|
<a
|
|
437
437
|
part="link"
|
|
438
|
-
href=${this._sanitizeHref(
|
|
438
|
+
href=${this._sanitizeHref(t.href)}
|
|
439
439
|
class=${v({
|
|
440
440
|
nav__link: !0,
|
|
441
|
-
"nav__link--active": !!
|
|
441
|
+
"nav__link--active": !!t.current
|
|
442
442
|
})}
|
|
443
|
-
aria-current=${
|
|
444
|
-
@click=${(
|
|
445
|
-
@keydown=${(
|
|
443
|
+
aria-current=${t.current ? "page" : f}
|
|
444
|
+
@click=${(o) => this._handleSubItemClick(t, o)}
|
|
445
|
+
@keydown=${(o) => this._handleSubKeydown(o, n)}
|
|
446
446
|
>
|
|
447
|
-
${
|
|
447
|
+
${t.label}
|
|
448
448
|
</a>
|
|
449
449
|
</li>
|
|
450
450
|
`
|
|
@@ -453,36 +453,36 @@ let h = class extends k {
|
|
|
453
453
|
`;
|
|
454
454
|
}
|
|
455
455
|
_renderItem(e, n) {
|
|
456
|
-
var
|
|
457
|
-
const
|
|
456
|
+
var l;
|
|
457
|
+
const i = !!((l = e.children) != null && l.length), a = this._expandedIndex === n, t = {
|
|
458
458
|
nav__link: !0,
|
|
459
459
|
"nav__link--active": !!e.current,
|
|
460
|
-
"nav__link--has-submenu":
|
|
461
|
-
"nav__link--expanded":
|
|
462
|
-
},
|
|
460
|
+
"nav__link--has-submenu": i,
|
|
461
|
+
"nav__link--expanded": a
|
|
462
|
+
}, o = i ? c`
|
|
463
463
|
<button
|
|
464
464
|
part="link"
|
|
465
|
-
class=${v(
|
|
466
|
-
aria-expanded=${
|
|
467
|
-
@click=${(
|
|
468
|
-
@keydown=${(
|
|
465
|
+
class=${v(t)}
|
|
466
|
+
aria-expanded=${a ? "true" : "false"}
|
|
467
|
+
@click=${(s) => this._handleItemClick(e, n, s)}
|
|
468
|
+
@keydown=${(s) => this._handleKeydown(s, n, e)}
|
|
469
469
|
>
|
|
470
470
|
${e.label} ${this._renderChevronIcon()}
|
|
471
471
|
</button>
|
|
472
472
|
${this._renderSubMenu(e.children ?? [], n, e.label)}
|
|
473
|
-
` :
|
|
473
|
+
` : c`
|
|
474
474
|
<a
|
|
475
475
|
part="link"
|
|
476
476
|
href=${this._sanitizeHref(e.href)}
|
|
477
|
-
class=${v(
|
|
477
|
+
class=${v(t)}
|
|
478
478
|
aria-current=${e.current ? "page" : f}
|
|
479
|
-
@click=${(
|
|
480
|
-
@keydown=${(
|
|
479
|
+
@click=${(s) => this._handleItemClick(e, n, s)}
|
|
480
|
+
@keydown=${(s) => this._handleKeydown(s, n, e)}
|
|
481
481
|
>
|
|
482
482
|
${e.label}
|
|
483
483
|
</a>
|
|
484
484
|
`;
|
|
485
|
-
return
|
|
485
|
+
return c` <li part="item" class="nav__item">${o}</li> `;
|
|
486
486
|
}
|
|
487
487
|
// ─── Render ───
|
|
488
488
|
render() {
|
|
@@ -490,7 +490,7 @@ let h = class extends k {
|
|
|
490
490
|
nav__list: !0,
|
|
491
491
|
"nav__list--open": this._mobileOpen
|
|
492
492
|
};
|
|
493
|
-
return
|
|
493
|
+
return c`
|
|
494
494
|
<nav part="nav" aria-label=${this.label}>
|
|
495
495
|
<button
|
|
496
496
|
part="toggle"
|
|
@@ -506,15 +506,15 @@ let h = class extends k {
|
|
|
506
506
|
<ul part="list" id="nav-list" class=${v(e)} role="list">
|
|
507
507
|
${w(
|
|
508
508
|
this.items,
|
|
509
|
-
(n,
|
|
510
|
-
(n,
|
|
509
|
+
(n, i) => i,
|
|
510
|
+
(n, i) => this._renderItem(n, i)
|
|
511
511
|
)}
|
|
512
512
|
</ul>
|
|
513
513
|
</nav>
|
|
514
514
|
`;
|
|
515
515
|
}
|
|
516
516
|
};
|
|
517
|
-
|
|
517
|
+
d.styles = [$, C];
|
|
518
518
|
p([
|
|
519
519
|
x({
|
|
520
520
|
type: Array,
|
|
@@ -530,23 +530,23 @@ p([
|
|
|
530
530
|
}
|
|
531
531
|
}
|
|
532
532
|
})
|
|
533
|
-
],
|
|
533
|
+
], d.prototype, "items", 2);
|
|
534
534
|
p([
|
|
535
535
|
x({ type: String, reflect: !0 })
|
|
536
|
-
],
|
|
536
|
+
], d.prototype, "orientation", 2);
|
|
537
537
|
p([
|
|
538
538
|
x({ type: String })
|
|
539
|
-
],
|
|
539
|
+
], d.prototype, "label", 2);
|
|
540
540
|
p([
|
|
541
541
|
b()
|
|
542
|
-
],
|
|
542
|
+
], d.prototype, "_mobileOpen", 2);
|
|
543
543
|
p([
|
|
544
544
|
b()
|
|
545
|
-
],
|
|
546
|
-
|
|
545
|
+
], d.prototype, "_expandedIndex", 2);
|
|
546
|
+
d = p([
|
|
547
547
|
y("hx-nav")
|
|
548
|
-
],
|
|
548
|
+
], d);
|
|
549
549
|
export {
|
|
550
|
-
|
|
550
|
+
d as H
|
|
551
551
|
};
|
|
552
|
-
//# sourceMappingURL=hx-nav-
|
|
552
|
+
//# sourceMappingURL=hx-nav-DSpwWYUX.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"hx-nav-DSpwWYUX.js","sources":["../../src/components/hx-nav/hx-nav.styles.ts","../../src/components/hx-nav/hx-nav.ts"],"sourcesContent":["import { css } from 'lit';\n\nexport const helixNavStyles = css`\n :host {\n display: block;\n font-family: var(--hx-nav-font-family, var(--hx-font-family-sans, sans-serif));\n font-size: var(--hx-nav-font-size, var(--hx-font-size-sm, 0.875rem));\n }\n\n * {\n box-sizing: border-box;\n }\n\n /* ─── Nav Container ─── */\n\n [part='nav'] {\n position: relative;\n background-color: var(--hx-nav-bg, var(--hx-color-neutral-900, #111827));\n color: var(--hx-nav-color, var(--hx-color-neutral-100, #f3f4f6));\n padding: var(--hx-nav-padding, var(--hx-space-2, 0.5rem) var(--hx-space-4, 1rem));\n }\n\n /* ─── Hamburger Toggle ─── */\n\n [part='toggle'] {\n display: none;\n align-items: center;\n justify-content: center;\n padding: var(--hx-space-2, 0.5rem);\n background: transparent;\n border: none;\n border-radius: var(--hx-nav-border-radius, var(--hx-border-radius-sm, 0.25rem));\n color: var(--hx-nav-color, var(--hx-color-neutral-100, #f3f4f6));\n cursor: pointer;\n transition: background-color var(--hx-transition-fast, 150ms) ease;\n line-height: 0;\n }\n\n [part='toggle']:hover {\n background-color: var(--hx-nav-link-hover-bg, var(--hx-color-neutral-700, #374151));\n }\n\n [part='toggle']:focus-visible {\n outline: var(--hx-focus-ring-width, 2px) solid var(--hx-focus-ring-color, #2563eb);\n outline-offset: var(--hx-focus-ring-offset, 2px);\n }\n\n /* ─── Navigation List ─── */\n\n [part='list'] {\n display: flex;\n flex-direction: row;\n flex-wrap: wrap;\n list-style: none;\n margin: 0;\n padding: 0;\n gap: var(--hx-space-1, 0.25rem);\n align-items: center;\n }\n\n /* ─── Nav Item ─── */\n\n [part='item'] {\n position: relative;\n }\n\n /* ─── Nav Link / Button ─── */\n\n .nav__link {\n display: inline-flex;\n align-items: center;\n gap: var(--hx-space-1, 0.25rem);\n padding: var(--hx-nav-item-padding, var(--hx-space-2, 0.5rem) var(--hx-space-3, 0.75rem));\n color: var(--hx-nav-link-color, var(--hx-color-neutral-100, #f3f4f6));\n text-decoration: none;\n border-radius: var(--hx-nav-border-radius, var(--hx-border-radius-sm, 0.25rem));\n border: none;\n background: transparent;\n cursor: pointer;\n font-family: inherit;\n font-size: inherit;\n font-weight: var(--hx-font-weight-medium, 500);\n line-height: var(--hx-line-height-normal, 1.5);\n white-space: nowrap;\n transition:\n background-color var(--hx-transition-fast, 150ms) ease,\n color var(--hx-transition-fast, 150ms) ease;\n }\n\n .nav__link:hover {\n background-color: var(--hx-nav-link-hover-bg, var(--hx-color-neutral-700, #374151));\n color: var(--hx-nav-link-hover-color, var(--hx-color-white, #ffffff));\n }\n\n .nav__link:focus-visible {\n outline: var(--hx-focus-ring-width, 2px) solid var(--hx-focus-ring-color, #2563eb);\n outline-offset: var(--hx-focus-ring-offset, 2px);\n }\n\n .nav__link--active {\n background-color: var(--hx-nav-link-active-bg, var(--hx-color-primary-600, #2563eb));\n color: var(--hx-nav-link-active-color, var(--hx-color-white, #ffffff));\n }\n\n /* ─── Chevron Icon ─── */\n\n .nav__chevron {\n transition: transform var(--hx-transition-normal, 200ms) ease;\n flex-shrink: 0;\n }\n\n .nav__link--expanded .nav__chevron {\n transform: rotate(180deg);\n }\n\n /* ─── Submenu ─── */\n\n .nav__submenu {\n position: absolute;\n top: calc(100% + var(--hx-space-1, 0.25rem));\n left: 0;\n min-width: var(--hx-nav-submenu-min-width, 12rem);\n list-style: none;\n margin: 0;\n padding: var(--hx-space-1, 0.25rem) 0;\n background-color: var(--hx-nav-submenu-bg, var(--hx-color-neutral-800, #1f2937));\n border-radius: var(--hx-border-radius-md, 0.375rem);\n box-shadow: var(\n --hx-shadow-md,\n 0 4px 6px -1px rgb(0 0 0 / 0.1),\n 0 2px 4px -2px rgb(0 0 0 / 0.1)\n );\n z-index: var(--hx-z-index-dropdown, 100);\n }\n\n .nav__submenu[hidden] {\n display: none;\n }\n\n .nav__submenu .nav__link {\n display: block;\n width: 100%;\n text-align: left;\n border-radius: 0;\n padding: var(--hx-space-2, 0.5rem) var(--hx-space-4, 1rem);\n }\n\n /* ─── Vertical / Sidebar Orientation ─── */\n\n :host([orientation='vertical']) [part='nav'] {\n padding: var(--hx-space-4, 1rem) var(--hx-space-2, 0.5rem);\n }\n\n :host([orientation='vertical']) [part='list'] {\n flex-direction: column;\n align-items: stretch;\n gap: var(--hx-space-1, 0.25rem);\n }\n\n :host([orientation='vertical']) .nav__link {\n width: 100%;\n justify-content: flex-start;\n }\n\n :host([orientation='vertical']) .nav__submenu {\n position: static;\n box-shadow: none;\n border-radius: 0;\n background-color: transparent;\n padding: 0;\n padding-left: var(--hx-space-4, 1rem);\n }\n\n :host([orientation='vertical']) .nav__submenu[hidden] {\n display: none;\n }\n\n :host([orientation='vertical']) .nav__submenu .nav__link {\n padding: var(--hx-space-1-5, 0.375rem) var(--hx-space-3, 0.75rem);\n font-size: var(--hx-font-size-xs, 0.75rem);\n color: var(--hx-nav-link-color, var(--hx-color-neutral-300, #d1d5db));\n }\n\n /* ─── Mobile Responsive ─── */\n\n @media (max-width: 768px) {\n [part='nav'] {\n display: flex;\n flex-direction: column;\n padding: var(--hx-space-2, 0.5rem);\n }\n\n [part='toggle'] {\n display: inline-flex;\n align-self: flex-end;\n }\n\n [part='list'] {\n display: none;\n flex-direction: column;\n align-items: stretch;\n width: 100%;\n margin-top: var(--hx-space-2, 0.5rem);\n gap: var(--hx-space-1, 0.25rem);\n }\n\n [part='list'].nav__list--open {\n display: flex;\n }\n\n [part='item'] {\n width: 100%;\n }\n\n .nav__link {\n width: 100%;\n justify-content: flex-start;\n }\n\n .nav__submenu {\n position: static;\n box-shadow: none;\n border-radius: 0;\n padding-left: var(--hx-space-4, 1rem);\n background-color: transparent;\n }\n\n .nav__submenu .nav__link {\n padding: var(--hx-space-1-5, 0.375rem) var(--hx-space-3, 0.75rem);\n }\n }\n\n /* ─── Reduced Motion ─── */\n\n @media (prefers-reduced-motion: reduce) {\n .nav__link,\n .nav__chevron,\n [part='toggle'] {\n transition: none;\n animation: none;\n }\n }\n`;\n","import { LitElement, html, nothing, svg } from 'lit';\nimport { customElement, property, state } from 'lit/decorators.js';\nimport { classMap } from 'lit/directives/class-map.js';\nimport { repeat } from 'lit/directives/repeat.js';\nimport { tokenStyles } from '@helixui/tokens/lit';\nimport { helixNavStyles } from './hx-nav.styles.js';\n\n/** A single navigation item, optionally with nested children. */\nexport interface NavItem {\n /** Display label for the item. */\n label: string;\n /** Href for the item link. Required unless children are provided. */\n href?: string;\n /** Whether this item represents the current page. */\n current?: boolean;\n /** Nested sub-menu items. */\n children?: NavItem[];\n}\n\n/** Layout orientation for the navigation. */\ntype NavOrientation = 'horizontal' | 'vertical';\n\n/**\n * Primary and secondary navigation component.\n * Supports horizontal menu bar and vertical sidebar patterns.\n * Mobile responsive with hamburger toggle.\n *\n * @summary Navigation bar supporting horizontal and vertical layouts with nested submenus.\n *\n * @tag hx-nav\n *\n * @fires {CustomEvent<{item: NavItem}>} hx-nav-select - Dispatched when a nav item is activated.\n *\n * @csspart nav - The nav landmark element.\n * @csspart list - The top-level list element.\n * @csspart item - Each list item wrapper.\n * @csspart link - The anchor or button element inside each item.\n * @csspart toggle - The mobile hamburger toggle button.\n *\n * @cssprop [--hx-nav-bg=var(--hx-color-neutral-900)] - Navigation background color.\n * @cssprop [--hx-nav-color=var(--hx-color-neutral-100)] - Navigation text color.\n * @cssprop [--hx-nav-font-family=var(--hx-font-family-sans)] - Navigation font family.\n * @cssprop [--hx-nav-link-color=var(--hx-color-neutral-100)] - Link text color.\n * @cssprop [--hx-nav-link-hover-bg=var(--hx-color-neutral-700)] - Link hover background.\n * @cssprop [--hx-nav-link-hover-color=var(--hx-color-white)] - Link hover text color.\n * @cssprop [--hx-nav-link-active-bg=var(--hx-color-primary-600)] - Active link background.\n * @cssprop [--hx-nav-link-active-color=var(--hx-color-white)] - Active link text color.\n * @cssprop [--hx-nav-submenu-bg=var(--hx-color-neutral-800)] - Submenu background color.\n * @cssprop [--hx-nav-submenu-min-width=12rem] - Submenu minimum width.\n * @cssprop [--hx-nav-font-size=var(--hx-font-size-sm)] - Navigation font size.\n * @cssprop [--hx-nav-padding=var(--hx-space-2) var(--hx-space-4)] - Navigation padding.\n * @cssprop [--hx-nav-item-padding=var(--hx-space-2) var(--hx-space-3)] - Item padding.\n * @cssprop [--hx-nav-border-radius=var(--hx-border-radius-sm)] - Item border radius.\n */\n@customElement('hx-nav')\nexport class HelixNav extends LitElement {\n static override styles = [tokenStyles, helixNavStyles];\n\n // ─── Properties ───\n\n /**\n * Navigation items array.\n * @attr items\n */\n @property({\n type: Array,\n converter: {\n fromAttribute(value: string | null): NavItem[] {\n if (!value) return [];\n try {\n const parsed: unknown = JSON.parse(value);\n return Array.isArray(parsed) ? (parsed as NavItem[]) : [];\n } catch {\n return [];\n }\n },\n },\n })\n items: NavItem[] = [];\n\n /**\n * Layout orientation: 'horizontal' (menu bar) or 'vertical' (sidebar).\n * @attr orientation\n */\n @property({ type: String, reflect: true })\n orientation: NavOrientation = 'horizontal';\n\n /**\n * Accessible label for the nav landmark.\n * @attr label\n */\n @property({ type: String })\n label = 'Main navigation';\n\n // ─── State ───\n\n /**\n * Tracks whether the mobile navigation menu is currently expanded.\n * @internal\n */\n @state() private _mobileOpen = false;\n /**\n * Index of the currently expanded top-level nav item with a submenu, or null if none is expanded.\n * @internal\n */\n @state() private _expandedIndex: number | null = null;\n\n // ─── Private: bound event handler reference ───\n\n /**\n * Stable bound reference to the outside-click handler, stored for addEventListener/removeEventListener symmetry.\n * @internal\n */\n private _boundOutsideClick: (e: MouseEvent) => void = this._handleOutsideClick.bind(this);\n\n /**\n * Sanitizes a URL to prevent XSS via javascript: or data: URIs.\n * Only allows http:, https:, relative paths, and fragment-only links.\n */\n private _sanitizeHref(href: string | undefined): string {\n if (!href || href === '#') return '#';\n // Allow relative paths, fragments, and http(s)\n if (\n href.startsWith('/') ||\n href.startsWith('./') ||\n href.startsWith('../') ||\n href.startsWith('#')\n ) {\n return href;\n }\n try {\n const url = new URL(href, window.location.href);\n if (url.protocol === 'http:' || url.protocol === 'https:') {\n return href;\n }\n } catch {\n // Invalid URL — fall through to safe default\n }\n return '#';\n }\n\n // ─── Event Handling ───\n\n private _handleToggle(): void {\n this._mobileOpen = !this._mobileOpen;\n if (!this._mobileOpen) {\n this._expandedIndex = null;\n }\n }\n\n private _handleItemClick(item: NavItem, index: number, e: Event): void {\n e.preventDefault();\n if (item.children?.length) {\n this._expandedIndex = this._expandedIndex === index ? null : index;\n } else {\n this._mobileOpen = false;\n this._expandedIndex = null;\n this.dispatchEvent(\n new CustomEvent('hx-nav-select', {\n bubbles: true,\n composed: true,\n detail: { item },\n }),\n );\n }\n }\n\n private _handleSubItemClick(item: NavItem, e: Event): void {\n e.preventDefault();\n this._mobileOpen = false;\n this._expandedIndex = null;\n this.dispatchEvent(\n new CustomEvent('hx-nav-select', {\n bubbles: true,\n composed: true,\n detail: { item },\n }),\n );\n }\n\n private _handleKeydown(e: KeyboardEvent, index: number, item: NavItem): void {\n const items = this.shadowRoot?.querySelectorAll<HTMLElement>(\n '[part=\"list\"] > [part=\"item\"] > [part=\"link\"]',\n );\n if (!items) return;\n const itemsArr = Array.from(items);\n const current = itemsArr[index];\n\n switch (e.key) {\n case 'ArrowRight':\n case 'ArrowDown': {\n e.preventDefault();\n if (item.children?.length && e.key === 'ArrowDown' && this.orientation === 'horizontal') {\n // open submenu and focus first item\n this._expandedIndex = index;\n this.updateComplete.then(() => {\n const firstSub = this.shadowRoot?.querySelector<HTMLElement>(\n `.nav__submenu [part=\"link\"]`,\n );\n firstSub?.focus();\n });\n } else {\n const next = itemsArr[index + 1] ?? itemsArr[0];\n next?.focus();\n }\n break;\n }\n case 'ArrowLeft':\n case 'ArrowUp': {\n e.preventDefault();\n const prev = itemsArr[index - 1] ?? itemsArr[itemsArr.length - 1];\n prev?.focus();\n break;\n }\n case 'Escape': {\n this._expandedIndex = null;\n current?.focus();\n break;\n }\n case 'Enter':\n case ' ': {\n if (item.children?.length) {\n e.preventDefault();\n const wasExpanded = this._expandedIndex === index;\n this._expandedIndex = wasExpanded ? null : index;\n if (!wasExpanded) {\n this.updateComplete.then(() => {\n const firstSub = this.shadowRoot?.querySelector<HTMLElement>(\n `.nav__submenu:not([hidden]) [part=\"link\"]`,\n );\n firstSub?.focus();\n });\n }\n }\n break;\n }\n }\n }\n\n private _handleSubKeydown(e: KeyboardEvent, parentIndex: number): void {\n const subItems = this.shadowRoot?.querySelectorAll<HTMLElement>(\n `.nav__submenu:not([hidden]) [part=\"link\"]`,\n );\n if (!subItems) return;\n const arr = Array.from(subItems);\n const focused = (e.currentTarget ?? e.target) as HTMLElement;\n const currentIdx = arr.indexOf(focused);\n\n switch (e.key) {\n case 'ArrowDown': {\n e.preventDefault();\n const next = arr[currentIdx + 1] ?? arr[0];\n next?.focus();\n break;\n }\n case 'ArrowUp': {\n e.preventDefault();\n const prev = arr[currentIdx - 1] ?? arr[arr.length - 1];\n prev?.focus();\n break;\n }\n case 'Escape': {\n e.preventDefault();\n this._expandedIndex = null;\n const parentLinks = this.shadowRoot?.querySelectorAll<HTMLElement>(\n '[part=\"list\"] > [part=\"item\"] > [part=\"link\"]',\n );\n parentLinks?.[parentIndex]?.focus();\n break;\n }\n }\n }\n\n private _handleOutsideClick(e: MouseEvent): void {\n const path = e.composedPath();\n if (!path.includes(this)) {\n this._expandedIndex = null;\n }\n }\n\n // ─── Lifecycle ───\n\n override connectedCallback(): void {\n super.connectedCallback();\n document.addEventListener('click', this._boundOutsideClick);\n }\n\n override disconnectedCallback(): void {\n super.disconnectedCallback();\n document.removeEventListener('click', this._boundOutsideClick);\n }\n\n // ─── Render Helpers ───\n\n private _renderHamburgerIcon() {\n return html`<svg\n width=\"24\"\n height=\"24\"\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n stroke=\"currentColor\"\n stroke-width=\"2\"\n stroke-linecap=\"round\"\n aria-hidden=\"true\"\n >\n ${this._mobileOpen\n ? svg`<line x1=\"18\" y1=\"6\" x2=\"6\" y2=\"18\"></line>\n <line x1=\"6\" y1=\"6\" x2=\"18\" y2=\"18\"></line>`\n : svg`<line x1=\"3\" y1=\"12\" x2=\"21\" y2=\"12\"></line>\n <line x1=\"3\" y1=\"6\" x2=\"21\" y2=\"6\"></line>\n <line x1=\"3\" y1=\"18\" x2=\"21\" y2=\"18\"></line>`}\n </svg>`;\n }\n\n private _renderChevronIcon() {\n return html`<svg\n class=\"nav__chevron\"\n width=\"16\"\n height=\"16\"\n viewBox=\"0 0 16 16\"\n fill=\"currentColor\"\n aria-hidden=\"true\"\n >\n <path\n d=\"M4.5 6L8 9.5 11.5 6\"\n stroke=\"currentColor\"\n stroke-width=\"1.5\"\n fill=\"none\"\n stroke-linecap=\"round\"\n stroke-linejoin=\"round\"\n />\n </svg>`;\n }\n\n private _renderSubMenu(children: NavItem[], parentIndex: number, parentLabel: string) {\n const isExpanded = this._expandedIndex === parentIndex;\n return html`\n <ul\n class=\"nav__submenu\"\n role=\"list\"\n aria-label=\"${parentLabel} submenu\"\n ?hidden=${!isExpanded}\n >\n ${children.map(\n (child) => html`\n <li class=\"nav__submenu-item\">\n <a\n part=\"link\"\n href=${this._sanitizeHref(child.href)}\n class=${classMap({\n nav__link: true,\n 'nav__link--active': !!child.current,\n })}\n aria-current=${child.current ? 'page' : nothing}\n @click=${(e: Event) => this._handleSubItemClick(child, e)}\n @keydown=${(e: KeyboardEvent) => this._handleSubKeydown(e, parentIndex)}\n >\n ${child.label}\n </a>\n </li>\n `,\n )}\n </ul>\n `;\n }\n\n private _renderItem(item: NavItem, index: number) {\n const hasChildren = !!item.children?.length;\n const isExpanded = this._expandedIndex === index;\n\n const linkClasses = {\n nav__link: true,\n 'nav__link--active': !!item.current,\n 'nav__link--has-submenu': hasChildren,\n 'nav__link--expanded': isExpanded,\n };\n\n const content = hasChildren\n ? html`\n <button\n part=\"link\"\n class=${classMap(linkClasses)}\n aria-expanded=${isExpanded ? 'true' : 'false'}\n @click=${(e: Event) => this._handleItemClick(item, index, e)}\n @keydown=${(e: KeyboardEvent) => this._handleKeydown(e, index, item)}\n >\n ${item.label} ${this._renderChevronIcon()}\n </button>\n ${this._renderSubMenu(item.children ?? [], index, item.label)}\n `\n : html`\n <a\n part=\"link\"\n href=${this._sanitizeHref(item.href)}\n class=${classMap(linkClasses)}\n aria-current=${item.current ? 'page' : nothing}\n @click=${(e: Event) => this._handleItemClick(item, index, e)}\n @keydown=${(e: KeyboardEvent) => this._handleKeydown(e, index, item)}\n >\n ${item.label}\n </a>\n `;\n\n return html` <li part=\"item\" class=\"nav__item\">${content}</li> `;\n }\n\n // ─── Render ───\n\n override render() {\n const listClasses = {\n nav__list: true,\n 'nav__list--open': this._mobileOpen,\n };\n\n return html`\n <nav part=\"nav\" aria-label=${this.label}>\n <button\n part=\"toggle\"\n class=\"nav__toggle\"\n aria-expanded=${this._mobileOpen ? 'true' : 'false'}\n aria-controls=\"nav-list\"\n aria-label=${this._mobileOpen ? 'Close navigation menu' : 'Open navigation menu'}\n @click=${this._handleToggle}\n >\n ${this._renderHamburgerIcon()}\n </button>\n\n <ul part=\"list\" id=\"nav-list\" class=${classMap(listClasses)} role=\"list\">\n ${repeat(\n this.items,\n (_item, i) => i,\n (item, i) => this._renderItem(item, i),\n )}\n </ul>\n </nav>\n `;\n }\n}\n\n/** Canonical type alias for the hx-nav component. */\nexport type HxNav = HelixNav;\n\n/** @deprecated Use {@link HxNav} instead. The `Wc` prefix was a legacy naming convention. */\nexport type WcNav = HelixNav;\n\ndeclare global {\n interface HTMLElementTagNameMap {\n 'hx-nav': HelixNav;\n }\n}\n"],"names":["helixNavStyles","css","HelixNav","LitElement","href","url","item","index","e","_a","items","itemsArr","current","_b","firstSub","next","prev","_c","wasExpanded","parentIndex","subItems","arr","focused","currentIdx","parentLinks","html","svg","children","parentLabel","isExpanded","child","classMap","nothing","hasChildren","linkClasses","content","listClasses","repeat","_item","tokenStyles","__decorateClass","property","value","parsed","state","customElement"],"mappings":";;;;;AAEO,MAAMA,IAAiBC;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AA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"}
|