@purpur/library 9.10.1 → 10.0.1
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/CHANGELOG.json +118 -0
- package/CHANGELOG.md +51 -1
- package/dist/LICENSE.txt +234 -179
- package/dist/{RichText-IejAKqm2.js → RichText-B865Qkzj.js} +2 -2
- package/dist/{RichText-IejAKqm2.js.map → RichText-B865Qkzj.js.map} +1 -1
- package/dist/{RichText-2_z57EYi.mjs → RichText-CPkBwXNI.mjs} +2 -2
- package/dist/{RichText-2_z57EYi.mjs.map → RichText-CPkBwXNI.mjs.map} +1 -1
- package/dist/accordion-aEZas0k1.mjs +122 -0
- package/dist/accordion-aEZas0k1.mjs.map +1 -0
- package/dist/accordion-zwsF1oUj.js +2 -0
- package/dist/accordion-zwsF1oUj.js.map +1 -0
- package/dist/accordion.cjs.js +1 -1
- package/dist/accordion.es.js +1 -1
- package/dist/button-C5CYysw5.js +2 -0
- package/dist/button-C5CYysw5.js.map +1 -0
- package/dist/button-mHw_J7JU.mjs +106 -0
- package/dist/button-mHw_J7JU.mjs.map +1 -0
- package/dist/button.cjs.js +1 -1
- package/dist/button.es.js +1 -1
- package/dist/{calendar-CTWhxuS4.mjs → calendar-DTL_g0ue.mjs} +4 -14
- package/dist/{calendar-CTWhxuS4.mjs.map → calendar-DTL_g0ue.mjs.map} +1 -1
- package/dist/{calendar-Cwzqytai.js → calendar-DVOrK53J.js} +2 -2
- package/dist/{calendar-Cwzqytai.js.map → calendar-DVOrK53J.js.map} +1 -1
- package/dist/calendar.cjs.js +1 -1
- package/dist/calendar.es.js +1 -1
- package/dist/{card-t2ZkZ82G.mjs → card-C0yhMN5d.mjs} +3 -3
- package/dist/card-C0yhMN5d.mjs.map +1 -0
- package/dist/{card-pdsBEJif.js → card-CIlY38WI.js} +2 -2
- package/dist/card-CIlY38WI.js.map +1 -0
- package/dist/card.cjs.js +1 -1
- package/dist/card.es.js +1 -1
- package/dist/{carousel-DiKGSL-7.mjs → carousel-Dq9yzk_-.mjs} +2 -2
- package/dist/{carousel-DiKGSL-7.mjs.map → carousel-Dq9yzk_-.mjs.map} +1 -1
- package/dist/{carousel-Dz_bUGo4.js → carousel-j-s6M1hu.js} +2 -2
- package/dist/{carousel-Dz_bUGo4.js.map → carousel-j-s6M1hu.js.map} +1 -1
- package/dist/carousel.cjs.js +1 -1
- package/dist/carousel.es.js +1 -1
- package/dist/{chat-field-B2jmpVNr.js → chat-field-CLAjIHlM.js} +2 -2
- package/dist/{chat-field-B2jmpVNr.js.map → chat-field-CLAjIHlM.js.map} +1 -1
- package/dist/{chat-field-8cKqYcKi.mjs → chat-field-nxFRXoQx.mjs} +2 -2
- package/dist/{chat-field-8cKqYcKi.mjs.map → chat-field-nxFRXoQx.mjs.map} +1 -1
- package/dist/chat-field.cjs.js +1 -1
- package/dist/chat-field.es.js +1 -1
- package/dist/{chip-group-B775zvKD.js → chip-group-BLuG0MC6.js} +2 -2
- package/dist/{chip-group-B775zvKD.js.map → chip-group-BLuG0MC6.js.map} +1 -1
- package/dist/{chip-group-xuOe7nL3.mjs → chip-group-Bo4kJ8Vq.mjs} +2 -2
- package/dist/{chip-group-xuOe7nL3.mjs.map → chip-group-Bo4kJ8Vq.mjs.map} +1 -1
- package/dist/chip-group.cjs.js +1 -1
- package/dist/chip-group.es.js +1 -1
- package/dist/color-dot-BEE5rKco.js.map +1 -1
- package/dist/color-dot-Dz9yzVX3.mjs.map +1 -1
- package/dist/{comparison-table-N5G3k2kr.js → comparison-table-CRWRijfG.js} +2 -2
- package/dist/{comparison-table-N5G3k2kr.js.map → comparison-table-CRWRijfG.js.map} +1 -1
- package/dist/{comparison-table-CmtSOUfK.mjs → comparison-table-DYaRaP9Z.mjs} +3 -3
- package/dist/{comparison-table-CmtSOUfK.mjs.map → comparison-table-DYaRaP9Z.mjs.map} +1 -1
- package/dist/comparison-table.cjs.js +1 -1
- package/dist/comparison-table.es.js +1 -1
- package/dist/components/accordion/src/accordion-item.d.ts +5 -5
- package/dist/components/accordion/src/accordion-item.d.ts.map +1 -1
- package/dist/components/accordion/src/accordion.d.ts +2 -6
- package/dist/components/accordion/src/accordion.d.ts.map +1 -1
- package/dist/components/accordion/src/accordion.visual.fixtures.d.ts.map +1 -1
- package/dist/components/alert-badge/src/alert-badge.d.ts +1 -1
- package/dist/components/badge/src/badge.d.ts +1 -1
- package/dist/components/button/src/button.d.ts +3 -4
- package/dist/components/button/src/button.d.ts.map +1 -1
- package/dist/components/button/src/button.visual.fixtures.d.ts +1 -1
- package/dist/components/calendar/src/calendar.d.ts.map +1 -1
- package/dist/components/card/src/card-badge.d.ts +1 -1
- package/dist/components/card/src/card-content-container.d.ts +1 -1
- package/dist/components/card/src/card-content.d.ts +1 -1
- package/dist/components/card/src/card-heading.d.ts +5 -5
- package/dist/components/card/src/card-heading.d.ts.map +1 -1
- package/dist/components/card/src/card-root.d.ts +1 -1
- package/dist/components/color-dot/src/color-dot.d.ts +2 -1
- package/dist/components/color-dot/src/color-dot.d.ts.map +1 -1
- package/dist/components/comparison-table/src/components/OptionCard/option-card.d.ts +1 -1
- package/dist/components/content-block/src/content-block-group.d.ts +1 -1
- package/dist/components/content-block/src/content-block.d.ts +2 -2
- package/dist/components/content-block/src/content-block.d.ts.map +1 -1
- package/dist/components/counter-badge/src/counter-badge.d.ts +1 -1
- package/dist/components/country-flag-icon/src/all-country-flag-assets.d.ts +0 -1
- package/dist/components/country-flag-icon/src/all-country-flag-assets.d.ts.map +1 -1
- package/dist/components/country-flag-icon/src/country-flag-icon.d.ts +1 -1
- package/dist/components/cta-link/src/cta-link.d.ts +10 -10
- package/dist/components/date-field/src/date-field.d.ts +1 -1
- package/dist/components/date-picker/src/date-picker.d.ts +1 -1
- package/dist/components/date-range-field/src/date-range-field.d.ts +2 -2
- package/dist/components/date-range-field/src/date-range-field.d.ts.map +1 -1
- package/dist/components/dismissable-chip-group/src/dismissable-chip-group.d.ts +2 -2
- package/dist/components/dismissable-chip-group/src/dismissable-chip-group.d.ts.map +1 -1
- package/dist/components/drawer/src/drawer-container.d.ts +1 -1
- package/dist/components/drawer/src/drawer-container.d.ts.map +1 -1
- package/dist/components/drawer/src/drawer-frame.d.ts +2 -2
- package/dist/components/drawer/src/drawer-handle.d.ts +1 -1
- package/dist/components/drawer/src/drawer-header.d.ts +1 -1
- package/dist/components/drawer/src/drawer-scroll-area.d.ts +1 -1
- package/dist/components/drawer/src/drawer-trigger.d.ts +1 -1
- package/dist/components/drawer/src/drawer.context.d.ts +2 -0
- package/dist/components/drawer/src/drawer.context.d.ts.map +1 -1
- package/dist/components/drawer/src/drawer.d.ts +2 -0
- package/dist/components/drawer/src/drawer.d.ts.map +1 -1
- package/dist/components/dropdown/src/dropdown-combobox.d.ts +2 -34
- package/dist/components/dropdown/src/dropdown-combobox.d.ts.map +1 -1
- package/dist/components/dropdown/src/dropdown-select.d.ts +2 -34
- package/dist/components/dropdown/src/dropdown-select.d.ts.map +1 -1
- package/dist/components/dropdown/src/dropdown-shared.d.ts +2 -1
- package/dist/components/dropdown/src/dropdown-shared.d.ts.map +1 -1
- package/dist/components/dropdown/src/dropdown.types.d.ts +24 -13
- package/dist/components/dropdown/src/dropdown.types.d.ts.map +1 -1
- package/dist/components/dropdown/src/useDropdown.d.ts +1 -1
- package/dist/components/dropdown/src/useDropdown.d.ts.map +1 -1
- package/dist/components/dropdown/src/useDropdownFilter.d.ts.map +1 -1
- package/dist/components/dropdown/src/useDropdownInput.d.ts.map +1 -1
- package/dist/components/field-helper-text/src/field-helper-text.d.ts +1 -1
- package/dist/components/file-upload/src/file-upload-button.d.ts +22 -0
- package/dist/components/file-upload/src/file-upload-button.d.ts.map +1 -0
- package/dist/components/file-upload/src/file-upload-drag-and-drop.d.ts +10 -0
- package/dist/components/file-upload/src/file-upload-drag-and-drop.d.ts.map +1 -0
- package/dist/components/file-upload/src/file-upload-file-name-label.d.ts +8 -0
- package/dist/components/file-upload/src/file-upload-file-name-label.d.ts.map +1 -0
- package/dist/components/file-upload/src/file-upload-icon.d.ts +8 -0
- package/dist/components/file-upload/src/file-upload-icon.d.ts.map +1 -0
- package/dist/components/file-upload/src/file-upload-types.d.ts +82 -0
- package/dist/components/file-upload/src/file-upload-types.d.ts.map +1 -0
- package/dist/components/file-upload/src/file-upload-utils.d.ts +7 -0
- package/dist/components/file-upload/src/file-upload-utils.d.ts.map +1 -0
- package/dist/components/file-upload/src/file-upload.d.ts +6 -0
- package/dist/components/file-upload/src/file-upload.d.ts.map +1 -0
- package/dist/components/file-upload/src/file-upload.visual.fixtures.d.ts +14 -0
- package/dist/components/file-upload/src/file-upload.visual.fixtures.d.ts.map +1 -0
- package/dist/components/footer/src/footer-social-link.d.ts +3 -3
- package/dist/components/heading/src/heading.d.ts +22 -4
- package/dist/components/heading/src/heading.d.ts.map +1 -1
- package/dist/components/hero-banner/src/hero-banner-types.d.ts +4 -4
- package/dist/components/hero-banner/src/hero-banner-types.d.ts.map +1 -1
- package/dist/components/hero-banner/src/hero-banner.d.ts +1 -1
- package/dist/components/hero-banner/src/hero-banner.d.ts.map +1 -1
- package/dist/components/icon/src/icon.d.ts +2 -2
- package/dist/components/illustrative-icon/src/static-illustrative-icon.d.ts +2 -2
- package/dist/components/label/src/label.d.ts +1 -1
- package/dist/components/listbox/src/listbox.d.ts +1 -1
- package/dist/components/loading/src/loading-illustrative.d.ts +1 -1
- package/dist/components/logo/src/logo.types.d.ts +1 -1
- package/dist/components/modal/src/modal-content.d.ts +1 -1
- package/dist/components/modal/src/modal-content.d.ts.map +1 -1
- package/dist/components/notification-banner/src/notification-banner.d.ts +3 -3
- package/dist/components/notification-banner/src/notification-banner.d.ts.map +1 -1
- package/dist/components/pagination/src/pagination-page-size-selector.d.ts +2 -2
- package/dist/components/pagination/src/pagination-page-trigger.d.ts +1 -1
- package/dist/components/pagination/src/pagination-pages.d.ts +2 -2
- package/dist/components/pagination/src/pagination-step-trigger.d.ts +2 -2
- package/dist/components/pagination/src/pagination-truncation-separator.d.ts +1 -1
- package/dist/components/pagination/src/types.d.ts +1 -1
- package/dist/components/pagination/src/use-page-options.hook.d.ts +1 -1
- package/dist/components/pagination/src/use-page-size-options.hook.d.ts +1 -1
- package/dist/components/paragraph/src/paragraph.d.ts +1 -1
- package/dist/components/password-field/src/password-strength-indicator.d.ts +1 -1
- package/dist/components/popover/src/popover-button.d.ts +2 -2
- package/dist/components/product-card/src/product-card.d.ts +1 -1
- package/dist/components/promotion-card/src/promotion-card.d.ts +10 -10
- package/dist/components/promotion-card/src/promotion-card.d.ts.map +1 -1
- package/dist/components/quantity-selector/src/quantity-selector-button.d.ts +2 -3
- package/dist/components/quantity-selector/src/quantity-selector-button.d.ts.map +1 -1
- package/dist/components/quantity-selector/src/quantity-selector.d.ts +3 -6
- package/dist/components/quantity-selector/src/quantity-selector.d.ts.map +1 -1
- package/dist/components/radio-button-group/src/radio-button-group-root.d.ts +1 -1
- package/dist/components/radio-card-group/src/radio-card-item.d.ts +1 -1
- package/dist/components/rich-text/src/types.d.ts +3 -3
- package/dist/components/search-field/src/search-field-autocomplete.d.ts +1 -1
- package/dist/components/search-field/src/search-field-base.d.ts +1 -1
- package/dist/components/select/src/select.d.ts +1 -1
- package/dist/components/skeleton/src/skeleton.d.ts +1 -1
- package/dist/components/spacer/src/spacer.d.ts +2 -2
- package/dist/components/spinner/src/spinner.d.ts +3 -3
- package/dist/components/stepper/src/stepper-container.d.ts +1 -1
- package/dist/components/stepper/src/{stepper-button.d.ts → stepper-link.d.ts} +5 -4
- package/dist/components/stepper/src/stepper-link.d.ts.map +1 -0
- package/dist/components/stepper/src/stepper-nav-items.d.ts +1 -0
- package/dist/components/stepper/src/stepper-nav-items.d.ts.map +1 -1
- package/dist/components/stepper/src/stepper.d.ts +2 -2
- package/dist/components/stepper/src/stepper.d.ts.map +1 -1
- package/dist/components/stepper/src/types.d.ts +2 -2
- package/dist/components/stepper/src/types.d.ts.map +1 -1
- package/dist/components/stepper/src/use-content-focus.hook.d.ts.map +1 -1
- package/dist/components/table/src/cell-types/button-group-cell.d.ts +2 -2
- package/dist/components/table/src/draggable-table.d.ts.map +1 -1
- package/dist/components/table/src/empty-table.d.ts +2 -2
- package/dist/components/table/src/table-column-header-cell.d.ts +1 -2
- package/dist/components/table/src/table-column-header-cell.d.ts.map +1 -1
- package/dist/components/table/src/table-content.d.ts +1 -1
- package/dist/components/table/src/table-headers.d.ts +2 -3
- package/dist/components/table/src/table-headers.d.ts.map +1 -1
- package/dist/components/table/src/table-settings-drawer.d.ts +11 -20
- package/dist/components/table/src/table-settings-drawer.d.ts.map +1 -1
- package/dist/components/table/src/table.d.ts +1 -8
- package/dist/components/table/src/table.d.ts.map +1 -1
- package/dist/components/table/src/test-utils/helpers.d.ts +10 -19
- package/dist/components/table/src/test-utils/helpers.d.ts.map +1 -1
- package/dist/components/tabs/src/tab-content.d.ts +4 -2
- package/dist/components/tabs/src/tab-content.d.ts.map +1 -1
- package/dist/components/text-field/src/text-field-ai.d.ts +4 -4
- package/dist/components/text-field/src/text-field-base.d.ts +4 -4
- package/dist/components/text-field/src/text-field.d.ts +5 -5
- package/dist/components/text-spacing/src/text-spacing.d.ts +1 -1
- package/dist/components/toggle/src/toggle.d.ts +1 -1
- package/dist/components/tooltip/src/tooltip.d.ts +4 -6
- package/dist/components/tooltip/src/tooltip.d.ts.map +1 -1
- package/dist/components-metadata.js +20 -10
- package/dist/{content-block-CDMrz41K.mjs → content-block-BCM0I3Y2.mjs} +2 -2
- package/dist/content-block-BCM0I3Y2.mjs.map +1 -0
- package/dist/{content-block-DyYAnL2e.js → content-block-DQppQumZ.js} +2 -2
- package/dist/content-block-DQppQumZ.js.map +1 -0
- package/dist/content-block.cjs.js +1 -1
- package/dist/content-block.es.js +1 -1
- package/dist/core.esm-BmIwrKkJ.js +6 -0
- package/dist/core.esm-BmIwrKkJ.js.map +1 -0
- package/dist/core.esm-CKGHpLM_.mjs +2892 -0
- package/dist/core.esm-CKGHpLM_.mjs.map +1 -0
- package/dist/country-flag-icon/LICENSE.txt +11 -0
- package/dist/country-flag-icon/all-country-flag-assets.cjs.js +1 -1
- package/dist/country-flag-icon/all-country-flag-assets.cjs.js.map +1 -1
- package/dist/country-flag-icon/all-country-flag-assets.d.ts +0 -1
- package/dist/country-flag-icon/all-country-flag-assets.d.ts.map +1 -1
- package/dist/country-flag-icon/all-country-flag-assets.es.js +0 -1
- package/dist/country-flag-icon/all-country-flag-assets.es.js.map +1 -1
- package/dist/country-flag-icon/dynamic-country-flag-icon.cjs.js +2 -0
- package/dist/country-flag-icon/dynamic-country-flag-icon.cjs.js.map +1 -0
- package/dist/country-flag-icon/dynamic-country-flag-icon.es.js +366 -0
- package/dist/country-flag-icon/dynamic-country-flag-icon.es.js.map +1 -0
- package/dist/{date-field-CwZ64buh.js → date-field-CtpWDaSh.js} +2 -2
- package/dist/{date-field-CwZ64buh.js.map → date-field-CtpWDaSh.js.map} +1 -1
- package/dist/{date-field-ChYx0N2j.mjs → date-field-_rCuf15v.mjs} +2 -2
- package/dist/{date-field-ChYx0N2j.mjs.map → date-field-_rCuf15v.mjs.map} +1 -1
- package/dist/date-field.cjs.js +1 -1
- package/dist/date-field.es.js +1 -1
- package/dist/{date-picker-BWMKTOq6.js → date-picker-BYlszX1W.js} +2 -2
- package/dist/{date-picker-BWMKTOq6.js.map → date-picker-BYlszX1W.js.map} +1 -1
- package/dist/{date-picker-CTyqgBRB.mjs → date-picker-sqcNAplg.mjs} +6 -6
- package/dist/{date-picker-CTyqgBRB.mjs.map → date-picker-sqcNAplg.mjs.map} +1 -1
- package/dist/date-picker.cjs.js +1 -1
- package/dist/date-picker.es.js +1 -1
- package/dist/date-range-field-B33XeBW8.js +2 -0
- package/dist/date-range-field-B33XeBW8.js.map +1 -0
- package/dist/{date-range-field-DDr-qEGX.mjs → date-range-field-BmjQeiOv.mjs} +23 -23
- package/dist/date-range-field-BmjQeiOv.mjs.map +1 -0
- package/dist/date-range-field.cjs.js +1 -1
- package/dist/date-range-field.es.js +1 -1
- package/dist/{dismissable-chip-group-2updhyuR.js → dismissable-chip-group-5ALErhD2.js} +2 -2
- package/dist/dismissable-chip-group-5ALErhD2.js.map +1 -0
- package/dist/{dismissable-chip-group-Cfs2s2BH.mjs → dismissable-chip-group-DMNU7g5e.mjs} +3 -3
- package/dist/dismissable-chip-group-DMNU7g5e.mjs.map +1 -0
- package/dist/dismissable-chip-group.cjs.js +1 -1
- package/dist/dismissable-chip-group.es.js +1 -1
- package/dist/{drawer-Cnk2OKgi.mjs → drawer-Chx3H8EU.mjs} +241 -233
- package/dist/drawer-Chx3H8EU.mjs.map +1 -0
- package/dist/drawer-oFJcxW58.js +2 -0
- package/dist/drawer-oFJcxW58.js.map +1 -0
- package/dist/drawer.cjs.js +1 -1
- package/dist/drawer.es.js +1 -1
- package/dist/dropdown-Bn7WvsL2.js +2 -0
- package/dist/dropdown-Bn7WvsL2.js.map +1 -0
- package/dist/dropdown-CrufJnb4.mjs +945 -0
- package/dist/dropdown-CrufJnb4.mjs.map +1 -0
- package/dist/dropdown.cjs.js +1 -1
- package/dist/dropdown.es.js +1 -1
- package/dist/file-upload-Ctw6LCTU.mjs +589 -0
- package/dist/file-upload-Ctw6LCTU.mjs.map +1 -0
- package/dist/file-upload-MvNuX4ks.js +2 -0
- package/dist/file-upload-MvNuX4ks.js.map +1 -0
- package/dist/file-upload.cjs.js +2 -0
- package/dist/file-upload.cjs.js.map +1 -0
- package/dist/file-upload.es.js +5 -0
- package/dist/file-upload.es.js.map +1 -0
- package/dist/{floating-ui.react-dom-EredA301.mjs → floating-ui.react-dom-1kwKo24Z.mjs} +15 -15
- package/dist/{floating-ui.react-dom-EredA301.mjs.map → floating-ui.react-dom-1kwKo24Z.mjs.map} +1 -1
- package/dist/footer-Bbemct3Z.js +2 -0
- package/dist/footer-Bbemct3Z.js.map +1 -0
- package/dist/{footer-D5YkHmCo.mjs → footer-DkVmTd-f.mjs} +24 -24
- package/dist/footer-DkVmTd-f.mjs.map +1 -0
- package/dist/footer.cjs.js +1 -1
- package/dist/footer.es.js +1 -1
- package/dist/{heading-xwBuT_-9.mjs → heading-BG7JTFO1.mjs} +25 -24
- package/dist/heading-BG7JTFO1.mjs.map +1 -0
- package/dist/{heading-drD5ugCC.js → heading-BPeRwNYu.js} +2 -2
- package/dist/heading-BPeRwNYu.js.map +1 -0
- package/dist/heading.cjs.js +1 -1
- package/dist/heading.es.js +6 -5
- package/dist/{hero-banner-BXRArPWP.mjs → hero-banner-ChDoFRhq.mjs} +4 -4
- package/dist/hero-banner-ChDoFRhq.mjs.map +1 -0
- package/dist/{hero-banner-CW7DIEZe.js → hero-banner-Mag1OwL4.js} +2 -2
- package/dist/hero-banner-Mag1OwL4.js.map +1 -0
- package/dist/hero-banner.cjs.js +1 -1
- package/dist/hero-banner.es.js +1 -1
- package/dist/index-BPY_9ddu.js +2 -0
- package/dist/index-BPY_9ddu.js.map +1 -0
- package/dist/index-Fewa56cA.mjs +440 -0
- package/dist/index-Fewa56cA.mjs.map +1 -0
- package/dist/libraries/library/src/calendar.d.ts +1 -1
- package/dist/libraries/library/src/card.d.ts +1 -1
- package/dist/libraries/library/src/container.d.ts +1 -1
- package/dist/libraries/library/src/content-block.d.ts +1 -1
- package/dist/libraries/library/src/dismissable-chip-group.d.ts +1 -1
- package/dist/libraries/library/src/drawer.d.ts +1 -1
- package/dist/libraries/library/src/file-upload.d.ts +6 -0
- package/dist/libraries/library/src/file-upload.d.ts.map +1 -0
- package/dist/libraries/library/src/library.d.ts +1 -1
- package/dist/libraries/library/src/library.d.ts.map +1 -1
- package/dist/libraries/library/src/notification-banner.d.ts +1 -1
- package/dist/libraries/library/src/notification.d.ts +1 -1
- package/dist/libraries/theme/src/ThemeProvider.d.ts +1 -1
- package/dist/library.cjs.js +1 -1
- package/dist/library.es.js +595 -596
- package/dist/{modal-CnC4Zyjk.js → modal-CXOYUsJm.js} +2 -2
- package/dist/modal-CXOYUsJm.js.map +1 -0
- package/dist/{modal-BuUQrUYJ.mjs → modal-Pwvhrzn-.mjs} +31 -31
- package/dist/modal-Pwvhrzn-.mjs.map +1 -0
- package/dist/modal.cjs.js +1 -1
- package/dist/modal.es.js +1 -1
- package/dist/{notification-CeoAXDXq.js → notification-BkM2vLzI.js} +2 -2
- package/dist/{notification-CeoAXDXq.js.map → notification-BkM2vLzI.js.map} +1 -1
- package/dist/{notification-C3f3N1K1.mjs → notification-Cbn0UN1p.mjs} +3 -3
- package/dist/{notification-C3f3N1K1.mjs.map → notification-Cbn0UN1p.mjs.map} +1 -1
- package/dist/notification-banner-B9RhXAZ8.js +2 -0
- package/dist/notification-banner-B9RhXAZ8.js.map +1 -0
- package/dist/{notification-banner-BvAy8dlg.mjs → notification-banner-C4NVekCZ.mjs} +5 -5
- package/dist/notification-banner-C4NVekCZ.mjs.map +1 -0
- package/dist/notification-banner.cjs.js +1 -1
- package/dist/notification-banner.es.js +1 -1
- package/dist/notification.cjs.js +1 -1
- package/dist/notification.es.js +1 -1
- package/dist/{password-field-C_E4563x.mjs → password-field-Cy_E-D_G.mjs} +29 -29
- package/dist/{password-field-C_E4563x.mjs.map → password-field-Cy_E-D_G.mjs.map} +1 -1
- package/dist/{password-field-BjKdBoIK.js → password-field-lKyWHjQS.js} +2 -2
- package/dist/{password-field-BjKdBoIK.js.map → password-field-lKyWHjQS.js.map} +1 -1
- package/dist/password-field.cjs.js +1 -1
- package/dist/password-field.es.js +1 -1
- package/dist/popover-B6ntmuEK.mjs +614 -0
- package/dist/popover-B6ntmuEK.mjs.map +1 -0
- package/dist/popover-DJHMEFXP.js +2 -0
- package/dist/popover-DJHMEFXP.js.map +1 -0
- package/dist/popover.cjs.js +1 -1
- package/dist/popover.es.js +1 -1
- package/dist/{product-card-CxfHfJVV.mjs → product-card-BMseoNrG.mjs} +3 -3
- package/dist/{product-card-CxfHfJVV.mjs.map → product-card-BMseoNrG.mjs.map} +1 -1
- package/dist/{product-card-XxBwuxM-.js → product-card-D0jX5-up.js} +2 -2
- package/dist/{product-card-XxBwuxM-.js.map → product-card-D0jX5-up.js.map} +1 -1
- package/dist/product-card.cjs.js +1 -1
- package/dist/product-card.es.js +1 -1
- package/dist/{promotion-card-C1UoxzcV.js → promotion-card-B3mz__m7.js} +2 -2
- package/dist/promotion-card-B3mz__m7.js.map +1 -0
- package/dist/{promotion-card-CooYPpFo.mjs → promotion-card-Co6qAkTZ.mjs} +5 -5
- package/dist/promotion-card-Co6qAkTZ.mjs.map +1 -0
- package/dist/promotion-card.cjs.js +1 -1
- package/dist/promotion-card.es.js +1 -1
- package/dist/purpur.css +1 -1
- package/dist/quantity-selector-Cy0aJGGX.js +2 -0
- package/dist/quantity-selector-Cy0aJGGX.js.map +1 -0
- package/dist/quantity-selector-k6ZaVrk1.mjs +162 -0
- package/dist/quantity-selector-k6ZaVrk1.mjs.map +1 -0
- package/dist/quantity-selector.cjs.js +1 -1
- package/dist/quantity-selector.es.js +2 -3
- package/dist/{radio-button-group-D_F6kWD6.mjs → radio-button-group-DjiTo3b1.mjs} +2 -2
- package/dist/{radio-button-group-D_F6kWD6.mjs.map → radio-button-group-DjiTo3b1.mjs.map} +1 -1
- package/dist/{radio-button-group-CdUrC7h9.js → radio-button-group-uCRGh1H5.js} +2 -2
- package/dist/{radio-button-group-CdUrC7h9.js.map → radio-button-group-uCRGh1H5.js.map} +1 -1
- package/dist/radio-button-group.cjs.js +1 -1
- package/dist/radio-button-group.es.js +1 -1
- package/dist/{radio-card-group-B9_jOJnM.mjs → radio-card-group-DoM7qYO1.mjs} +2 -2
- package/dist/{radio-card-group-B9_jOJnM.mjs.map → radio-card-group-DoM7qYO1.mjs.map} +1 -1
- package/dist/{radio-card-group-DcdGkfOp.js → radio-card-group-_9wJC-s3.js} +2 -2
- package/dist/{radio-card-group-DcdGkfOp.js.map → radio-card-group-_9wJC-s3.js.map} +1 -1
- package/dist/radio-card-group.cjs.js +1 -1
- package/dist/radio-card-group.es.js +1 -1
- package/dist/rich-text.cjs.js +1 -1
- package/dist/rich-text.es.js +1 -1
- package/dist/{search-field-BTqVE1-l.mjs → search-field-BTJtRyw5.mjs} +3 -3
- package/dist/{search-field-BTqVE1-l.mjs.map → search-field-BTJtRyw5.mjs.map} +1 -1
- package/dist/{search-field-DkJrwzJB.js → search-field-nzVXak1a.js} +2 -2
- package/dist/{search-field-DkJrwzJB.js.map → search-field-nzVXak1a.js.map} +1 -1
- package/dist/search-field.cjs.js +1 -1
- package/dist/search-field.es.js +1 -1
- package/dist/stepper-D59T-Y2_.mjs +469 -0
- package/dist/stepper-D59T-Y2_.mjs.map +1 -0
- package/dist/stepper-Dao4XaDV.js +2 -0
- package/dist/stepper-Dao4XaDV.js.map +1 -0
- package/dist/stepper.cjs.js +1 -1
- package/dist/stepper.es.js +1 -1
- package/dist/table-DRSgesQ4.mjs +4545 -0
- package/dist/table-DRSgesQ4.mjs.map +1 -0
- package/dist/table-zBs9JALh.js +5 -0
- package/dist/table-zBs9JALh.js.map +1 -0
- package/dist/table.cjs.js +1 -1
- package/dist/table.es.js +1 -1
- package/dist/tabs-D2__wbCs.js +2 -0
- package/dist/tabs-D2__wbCs.js.map +1 -0
- package/dist/tabs-DOG5g2wf.mjs +440 -0
- package/dist/tabs-DOG5g2wf.mjs.map +1 -0
- package/dist/tabs.cjs.js +1 -1
- package/dist/tabs.es.js +1 -1
- package/dist/{text-field-CS0PT5T6.js → text-field-BSgqJjpv.js} +2 -2
- package/dist/text-field-BSgqJjpv.js.map +1 -0
- package/dist/{text-field-C9LX7LBf.mjs → text-field-MQHeITxy.mjs} +3 -3
- package/dist/text-field-MQHeITxy.mjs.map +1 -0
- package/dist/text-field.cjs.js +1 -1
- package/dist/text-field.es.js +1 -1
- package/dist/tooltip-DeP1UsPW.js +2 -0
- package/dist/{tooltip-COFCRUKv.js.map → tooltip-DeP1UsPW.js.map} +1 -1
- package/dist/{tooltip-FH9R2MAA.mjs → tooltip-bqdd2lJL.mjs} +347 -309
- package/dist/{tooltip-FH9R2MAA.mjs.map → tooltip-bqdd2lJL.mjs.map} +1 -1
- package/dist/tooltip.cjs.js +1 -1
- package/dist/tooltip.es.js +1 -1
- package/package.json +25 -25
- package/src/aliases.ts +4 -4
- package/src/entries.js +1 -1
- package/src/{autocomplete.ts → file-upload.ts} +1 -1
- package/src/library.ts +1 -1
- package/src/purpur.css +4 -0
- package/dist/accordion-B6OoQ4uZ.mjs +0 -128
- package/dist/accordion-B6OoQ4uZ.mjs.map +0 -1
- package/dist/accordion-BfpN5h4C.js +0 -2
- package/dist/accordion-BfpN5h4C.js.map +0 -1
- package/dist/autocomplete-C6AqdYaZ.mjs +0 -228
- package/dist/autocomplete-C6AqdYaZ.mjs.map +0 -1
- package/dist/autocomplete-yrPbF5gq.js +0 -2
- package/dist/autocomplete-yrPbF5gq.js.map +0 -1
- package/dist/autocomplete.cjs.js +0 -2
- package/dist/autocomplete.cjs.js.map +0 -1
- package/dist/autocomplete.es.js +0 -6
- package/dist/autocomplete.es.js.map +0 -1
- package/dist/button-DZgtrGqN.js +0 -2
- package/dist/button-DZgtrGqN.js.map +0 -1
- package/dist/button-EVRfctR8.mjs +0 -109
- package/dist/button-EVRfctR8.mjs.map +0 -1
- package/dist/card-pdsBEJif.js.map +0 -1
- package/dist/card-t2ZkZ82G.mjs.map +0 -1
- package/dist/components/autocomplete/src/autocomplete.d.ts +0 -18
- package/dist/components/autocomplete/src/autocomplete.d.ts.map +0 -1
- package/dist/components/autocomplete/src/useAutocomplete.d.ts +0 -59
- package/dist/components/autocomplete/src/useAutocomplete.d.ts.map +0 -1
- package/dist/components/autocomplete/src/utils.d.ts +0 -7
- package/dist/components/autocomplete/src/utils.d.ts.map +0 -1
- package/dist/components/stepper/src/stepper-button.d.ts.map +0 -1
- package/dist/content-block-CDMrz41K.mjs.map +0 -1
- package/dist/content-block-DyYAnL2e.js.map +0 -1
- package/dist/date-range-field-CvzOl-eC.js +0 -2
- package/dist/date-range-field-CvzOl-eC.js.map +0 -1
- package/dist/date-range-field-DDr-qEGX.mjs.map +0 -1
- package/dist/dismissable-chip-group-2updhyuR.js.map +0 -1
- package/dist/dismissable-chip-group-Cfs2s2BH.mjs.map +0 -1
- package/dist/drawer-BnqxUIPM.js +0 -2
- package/dist/drawer-BnqxUIPM.js.map +0 -1
- package/dist/drawer-Cnk2OKgi.mjs.map +0 -1
- package/dist/dropdown-C8VsfTQw.mjs +0 -936
- package/dist/dropdown-C8VsfTQw.mjs.map +0 -1
- package/dist/dropdown-p4R2yCnJ.js +0 -2
- package/dist/dropdown-p4R2yCnJ.js.map +0 -1
- package/dist/footer-B8rzVSrZ.js +0 -2
- package/dist/footer-B8rzVSrZ.js.map +0 -1
- package/dist/footer-D5YkHmCo.mjs.map +0 -1
- package/dist/heading-drD5ugCC.js.map +0 -1
- package/dist/heading-xwBuT_-9.mjs.map +0 -1
- package/dist/hero-banner-BXRArPWP.mjs.map +0 -1
- package/dist/hero-banner-CW7DIEZe.js.map +0 -1
- package/dist/libraries/library/src/autocomplete.d.ts +0 -6
- package/dist/libraries/library/src/autocomplete.d.ts.map +0 -1
- package/dist/modal-BuUQrUYJ.mjs.map +0 -1
- package/dist/modal-CnC4Zyjk.js.map +0 -1
- package/dist/notification-banner-BvAy8dlg.mjs.map +0 -1
- package/dist/notification-banner-DUe4fT1r.js +0 -2
- package/dist/notification-banner-DUe4fT1r.js.map +0 -1
- package/dist/popover-4phnhJLj.js +0 -2
- package/dist/popover-4phnhJLj.js.map +0 -1
- package/dist/popover-DhObSx97.mjs +0 -1043
- package/dist/popover-DhObSx97.mjs.map +0 -1
- package/dist/promotion-card-C1UoxzcV.js.map +0 -1
- package/dist/promotion-card-CooYPpFo.mjs.map +0 -1
- package/dist/quantity-selector-Ds7d4MnV.js +0 -2
- package/dist/quantity-selector-Ds7d4MnV.js.map +0 -1
- package/dist/quantity-selector-DwkKKmFy.mjs +0 -172
- package/dist/quantity-selector-DwkKKmFy.mjs.map +0 -1
- package/dist/stepper-5rQ3cK18.js +0 -2
- package/dist/stepper-5rQ3cK18.js.map +0 -1
- package/dist/stepper-B3p9r3gv.mjs +0 -449
- package/dist/stepper-B3p9r3gv.mjs.map +0 -1
- package/dist/table-BIyaTsOh.js +0 -9
- package/dist/table-BIyaTsOh.js.map +0 -1
- package/dist/table-BtymEUG4.mjs +0 -7428
- package/dist/table-BtymEUG4.mjs.map +0 -1
- package/dist/tabs-Bye5lgZ1.mjs +0 -424
- package/dist/tabs-Bye5lgZ1.mjs.map +0 -1
- package/dist/tabs-D-nfZHIA.js +0 -2
- package/dist/tabs-D-nfZHIA.js.map +0 -1
- package/dist/text-field-C9LX7LBf.mjs.map +0 -1
- package/dist/text-field-CS0PT5T6.js.map +0 -1
- package/dist/tooltip-COFCRUKv.js +0 -2
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"radio-button-group-D_F6kWD6.mjs","sources":["../../../common/temp/node_modules/.pnpm/@base-ui+utils@0.3.2_@types+react@19.2.14_react-dom@19.2.4_react@19.2.4__react@19.2.4/node_modules/@base-ui/utils/useIsoLayoutEffect.mjs","../../../common/temp/node_modules/.pnpm/@base-ui+utils@0.3.2_@types+react@19.2.14_react-dom@19.2.4_react@19.2.4__react@19.2.4/node_modules/@base-ui/utils/safeReact.mjs","../../../common/temp/node_modules/.pnpm/@base-ui+utils@0.3.2_@types+react@19.2.14_react-dom@19.2.4_react@19.2.4__react@19.2.4/node_modules/@base-ui/utils/useRefWithInit.mjs","../../../common/temp/node_modules/.pnpm/@base-ui+utils@0.3.2_@types+react@19.2.14_react-dom@19.2.4_react@19.2.4__react@19.2.4/node_modules/@base-ui/utils/useStableCallback.mjs","../../../common/temp/node_modules/.pnpm/@base-ui+utils@0.3.2_@types+react@19.2.14_react-dom@19.2.4_react@19.2.4__react@19.2.4/node_modules/@base-ui/utils/formatErrorMessage.mjs","../../../common/temp/node_modules/.pnpm/@base-ui+utils@0.3.2_@types+react@19.2.14_react-dom@19.2.4_react@19.2.4__react@19.2.4/node_modules/@base-ui/utils/empty.mjs","../../../common/temp/node_modules/.pnpm/@base-ui+react@1.7.0_@date-fns+tz@1.5.0_@types+react@19.2.14_date-fns@4.1.0_react-dom@19.2.4_react@19.2.4__react@19.2.4/node_modules/@base-ui/react/internals/field-constants/constants.mjs","../../../common/temp/node_modules/.pnpm/@base-ui+react@1.7.0_@date-fns+tz@1.5.0_@types+react@19.2.14_date-fns@4.1.0_react-dom@19.2.4_react@19.2.4__react@19.2.4/node_modules/@base-ui/react/internals/field-root-context/FieldRootContext.mjs","../../../common/temp/node_modules/.pnpm/@base-ui+react@1.7.0_@date-fns+tz@1.5.0_@types+react@19.2.14_date-fns@4.1.0_react-dom@19.2.4_react@19.2.4__react@19.2.4/node_modules/@base-ui/react/fieldset/root/FieldsetRootContext.mjs","../../../common/temp/node_modules/.pnpm/@base-ui+react@1.7.0_@date-fns+tz@1.5.0_@types+react@19.2.14_date-fns@4.1.0_react-dom@19.2.4_react@19.2.4__react@19.2.4/node_modules/@base-ui/react/internals/form-context/FormContext.mjs","../../../common/temp/node_modules/.pnpm/@base-ui+utils@0.3.2_@types+react@19.2.14_react-dom@19.2.4_react@19.2.4__react@19.2.4/node_modules/@base-ui/utils/useId.mjs","../../../common/temp/node_modules/.pnpm/@base-ui+react@1.7.0_@date-fns+tz@1.5.0_@types+react@19.2.14_date-fns@4.1.0_react-dom@19.2.4_react@19.2.4__react@19.2.4/node_modules/@base-ui/react/internals/useBaseUiId.mjs","../../../common/temp/node_modules/.pnpm/@base-ui+react@1.7.0_@date-fns+tz@1.5.0_@types+react@19.2.14_date-fns@4.1.0_react-dom@19.2.4_react@19.2.4__react@19.2.4/node_modules/@base-ui/react/internals/labelable-provider/LabelableContext.mjs","../../../common/temp/node_modules/.pnpm/@base-ui+react@1.7.0_@date-fns+tz@1.5.0_@types+react@19.2.14_date-fns@4.1.0_react-dom@19.2.4_react@19.2.4__react@19.2.4/node_modules/@base-ui/react/internals/labelable-provider/LabelableProvider.mjs","../../../common/temp/node_modules/.pnpm/@base-ui+react@1.7.0_@date-fns+tz@1.5.0_@types+react@19.2.14_date-fns@4.1.0_react-dom@19.2.4_react@19.2.4__react@19.2.4/node_modules/@base-ui/react/internals/labelable-provider/useAriaLabelledBy.mjs","../../../common/temp/node_modules/.pnpm/@floating-ui+utils@0.2.12/node_modules/@floating-ui/utils/dist/floating-ui.utils.dom.mjs","../../../common/temp/node_modules/.pnpm/@base-ui+react@1.7.0_@date-fns+tz@1.5.0_@types+react@19.2.14_date-fns@4.1.0_react-dom@19.2.4_react@19.2.4__react@19.2.4/node_modules/@base-ui/react/internals/labelable-provider/useLabelableId.mjs","../../../common/temp/node_modules/.pnpm/@base-ui+utils@0.3.2_@types+react@19.2.14_react-dom@19.2.4_react@19.2.4__react@19.2.4/node_modules/@base-ui/utils/owner.mjs","../../../common/temp/node_modules/.pnpm/@base-ui+react@1.7.0_@date-fns+tz@1.5.0_@types+react@19.2.14_date-fns@4.1.0_react-dom@19.2.4_react@19.2.4__react@19.2.4/node_modules/@base-ui/react/internals/shadowDom.mjs","../../../common/temp/node_modules/.pnpm/@base-ui+react@1.7.0_@date-fns+tz@1.5.0_@types+react@19.2.14_date-fns@4.1.0_react-dom@19.2.4_react@19.2.4__react@19.2.4/node_modules/@base-ui/react/floating-ui-react/utils/composite.mjs","../../../common/temp/node_modules/.pnpm/@base-ui+react@1.7.0_@date-fns+tz@1.5.0_@types+react@19.2.14_date-fns@4.1.0_react-dom@19.2.4_react@19.2.4__react@19.2.4/node_modules/@base-ui/react/utils/useRegisteredLabelId.mjs","../../../common/temp/node_modules/.pnpm/@base-ui+react@1.7.0_@date-fns+tz@1.5.0_@types+react@19.2.14_date-fns@4.1.0_react-dom@19.2.4_react@19.2.4__react@19.2.4/node_modules/@base-ui/react/internals/labelable-provider/useLabel.mjs","../../../common/temp/node_modules/.pnpm/@base-ui+utils@0.3.2_@types+react@19.2.14_react-dom@19.2.4_react@19.2.4__react@19.2.4/node_modules/@base-ui/utils/useMergedRefs.mjs","../../../common/temp/node_modules/.pnpm/@base-ui+utils@0.3.2_@types+react@19.2.14_react-dom@19.2.4_react@19.2.4__react@19.2.4/node_modules/@base-ui/utils/reactVersion.mjs","../../../common/temp/node_modules/.pnpm/@base-ui+utils@0.3.2_@types+react@19.2.14_react-dom@19.2.4_react@19.2.4__react@19.2.4/node_modules/@base-ui/utils/getReactElementRef.mjs","../../../common/temp/node_modules/.pnpm/@base-ui+utils@0.3.2_@types+react@19.2.14_react-dom@19.2.4_react@19.2.4__react@19.2.4/node_modules/@base-ui/utils/mergeObjects.mjs","../../../common/temp/node_modules/.pnpm/@base-ui+utils@0.3.2_@types+react@19.2.14_react-dom@19.2.4_react@19.2.4__react@19.2.4/node_modules/@base-ui/utils/warn.mjs","../../../common/temp/node_modules/.pnpm/@base-ui+react@1.7.0_@date-fns+tz@1.5.0_@types+react@19.2.14_date-fns@4.1.0_react-dom@19.2.4_react@19.2.4__react@19.2.4/node_modules/@base-ui/react/internals/getStateAttributesProps.mjs","../../../common/temp/node_modules/.pnpm/@base-ui+react@1.7.0_@date-fns+tz@1.5.0_@types+react@19.2.14_date-fns@4.1.0_react-dom@19.2.4_react@19.2.4__react@19.2.4/node_modules/@base-ui/react/utils/resolveClassName.mjs","../../../common/temp/node_modules/.pnpm/@base-ui+react@1.7.0_@date-fns+tz@1.5.0_@types+react@19.2.14_date-fns@4.1.0_react-dom@19.2.4_react@19.2.4__react@19.2.4/node_modules/@base-ui/react/utils/resolveStyle.mjs","../../../common/temp/node_modules/.pnpm/@base-ui+react@1.7.0_@date-fns+tz@1.5.0_@types+react@19.2.14_date-fns@4.1.0_react-dom@19.2.4_react@19.2.4__react@19.2.4/node_modules/@base-ui/react/merge-props/mergeProps.mjs","../../../common/temp/node_modules/.pnpm/@base-ui+react@1.7.0_@date-fns+tz@1.5.0_@types+react@19.2.14_date-fns@4.1.0_react-dom@19.2.4_react@19.2.4__react@19.2.4/node_modules/@base-ui/react/internals/useRenderElement.mjs","../../../common/temp/node_modules/.pnpm/@base-ui+utils@0.3.2_@types+react@19.2.14_react-dom@19.2.4_react@19.2.4__react@19.2.4/node_modules/@base-ui/utils/useOnMount.mjs","../../../common/temp/node_modules/.pnpm/@base-ui+utils@0.3.2_@types+react@19.2.14_react-dom@19.2.4_react@19.2.4__react@19.2.4/node_modules/@base-ui/utils/useTimeout.mjs","../../../common/temp/node_modules/.pnpm/@base-ui+react@1.7.0_@date-fns+tz@1.5.0_@types+react@19.2.14_date-fns@4.1.0_react-dom@19.2.4_react@19.2.4__react@19.2.4/node_modules/@base-ui/react/field/utils/getCombinedFieldValidityData.mjs","../../../common/temp/node_modules/.pnpm/@base-ui+react@1.7.0_@date-fns+tz@1.5.0_@types+react@19.2.14_date-fns@4.1.0_react-dom@19.2.4_react@19.2.4__react@19.2.4/node_modules/@base-ui/react/field/root/useFieldValidation.mjs","../../../common/temp/node_modules/.pnpm/@base-ui+react@1.7.0_@date-fns+tz@1.5.0_@types+react@19.2.14_date-fns@4.1.0_react-dom@19.2.4_react@19.2.4__react@19.2.4/node_modules/@base-ui/react/internals/field-register-control/useFieldControlRegistration.mjs","../../../common/temp/node_modules/.pnpm/@base-ui+react@1.7.0_@date-fns+tz@1.5.0_@types+react@19.2.14_date-fns@4.1.0_react-dom@19.2.4_react@19.2.4__react@19.2.4/node_modules/@base-ui/react/field/root/FieldRoot.mjs","../../../common/temp/node_modules/.pnpm/@base-ui+utils@0.3.2_@types+react@19.2.14_react-dom@19.2.4_react@19.2.4__react@19.2.4/node_modules/@base-ui/utils/error.mjs","../../../common/temp/node_modules/.pnpm/@base-ui+react@1.7.0_@date-fns+tz@1.5.0_@types+react@19.2.14_date-fns@4.1.0_react-dom@19.2.4_react@19.2.4__react@19.2.4/node_modules/@base-ui/react/field/item/FieldItemContext.mjs","../../../common/temp/node_modules/.pnpm/@base-ui+react@1.7.0_@date-fns+tz@1.5.0_@types+react@19.2.14_date-fns@4.1.0_react-dom@19.2.4_react@19.2.4__react@19.2.4/node_modules/@base-ui/react/field/label/FieldLabel.mjs","../../../common/temp/node_modules/.pnpm/@base-ui+utils@0.3.2_@types+react@19.2.14_react-dom@19.2.4_react@19.2.4__react@19.2.4/node_modules/@base-ui/utils/useAnimationFrame.mjs","../../../common/temp/node_modules/.pnpm/@base-ui+react@1.7.0_@date-fns+tz@1.5.0_@types+react@19.2.14_date-fns@4.1.0_react-dom@19.2.4_react@19.2.4__react@19.2.4/node_modules/@base-ui/react/utils/resolveRef.mjs","../../../common/temp/node_modules/.pnpm/@base-ui+react@1.7.0_@date-fns+tz@1.5.0_@types+react@19.2.14_date-fns@4.1.0_react-dom@19.2.4_react@19.2.4__react@19.2.4/node_modules/@base-ui/react/internals/useAnimationsFinished.mjs","../../../common/temp/node_modules/.pnpm/@base-ui+react@1.7.0_@date-fns+tz@1.5.0_@types+react@19.2.14_date-fns@4.1.0_react-dom@19.2.4_react@19.2.4__react@19.2.4/node_modules/@base-ui/react/internals/useOpenChangeComplete.mjs","../../../common/temp/node_modules/.pnpm/@base-ui+react@1.7.0_@date-fns+tz@1.5.0_@types+react@19.2.14_date-fns@4.1.0_react-dom@19.2.4_react@19.2.4__react@19.2.4/node_modules/@base-ui/react/internals/stateAttributesMapping.mjs","../../../common/temp/node_modules/.pnpm/@base-ui+react@1.7.0_@date-fns+tz@1.5.0_@types+react@19.2.14_date-fns@4.1.0_react-dom@19.2.4_react@19.2.4__react@19.2.4/node_modules/@base-ui/react/internals/useTransitionStatus.mjs","../../../common/temp/node_modules/.pnpm/@base-ui+react@1.7.0_@date-fns+tz@1.5.0_@types+react@19.2.14_date-fns@4.1.0_react-dom@19.2.4_react@19.2.4__react@19.2.4/node_modules/@base-ui/react/field/description/FieldDescription.mjs","../../../common/temp/node_modules/.pnpm/@base-ui+utils@0.3.2_@types+react@19.2.14_react-dom@19.2.4_react@19.2.4__react@19.2.4/node_modules/@base-ui/utils/useControlled.mjs","../../../common/temp/node_modules/.pnpm/@base-ui+react@1.7.0_@date-fns+tz@1.5.0_@types+react@19.2.14_date-fns@4.1.0_react-dom@19.2.4_react@19.2.4__react@19.2.4/node_modules/@base-ui/react/internals/field-register-control/useRegisterFieldControl.mjs","../../../common/temp/node_modules/.pnpm/@base-ui+react@1.7.0_@date-fns+tz@1.5.0_@types+react@19.2.14_date-fns@4.1.0_react-dom@19.2.4_react@19.2.4__react@19.2.4/node_modules/@base-ui/react/internals/reason-parts.mjs","../../../common/temp/node_modules/.pnpm/@base-ui+react@1.7.0_@date-fns+tz@1.5.0_@types+react@19.2.14_date-fns@4.1.0_react-dom@19.2.4_react@19.2.4__react@19.2.4/node_modules/@base-ui/react/internals/createBaseUIEventDetails.mjs","../../../common/temp/node_modules/.pnpm/@base-ui+react@1.7.0_@date-fns+tz@1.5.0_@types+react@19.2.14_date-fns@4.1.0_react-dom@19.2.4_react@19.2.4__react@19.2.4/node_modules/@base-ui/react/field/item/FieldItem.mjs","../../../common/temp/node_modules/.pnpm/@base-ui+utils@0.3.2_@types+react@19.2.14_react-dom@19.2.4_react@19.2.4__react@19.2.4/node_modules/@base-ui/utils/visuallyHidden.mjs","../../../common/temp/node_modules/.pnpm/@base-ui+react@1.7.0_@date-fns+tz@1.5.0_@types+react@19.2.14_date-fns@4.1.0_react-dom@19.2.4_react@19.2.4__react@19.2.4/node_modules/@base-ui/react/radio/utils/stateAttributesMapping.mjs","../../../common/temp/node_modules/.pnpm/@base-ui+react@1.7.0_@date-fns+tz@1.5.0_@types+react@19.2.14_date-fns@4.1.0_react-dom@19.2.4_react@19.2.4__react@19.2.4/node_modules/@base-ui/react/utils/dispatchClickWithModifiers.mjs","../../../common/temp/node_modules/.pnpm/@base-ui+react@1.7.0_@date-fns+tz@1.5.0_@types+react@19.2.14_date-fns@4.1.0_react-dom@19.2.4_react@19.2.4__react@19.2.4/node_modules/@base-ui/react/internals/composite/root/CompositeRootContext.mjs","../../../common/temp/node_modules/.pnpm/@base-ui+react@1.7.0_@date-fns+tz@1.5.0_@types+react@19.2.14_date-fns@4.1.0_react-dom@19.2.4_react@19.2.4__react@19.2.4/node_modules/@base-ui/react/utils/useFocusableWhenDisabled.mjs","../../../common/temp/node_modules/.pnpm/@base-ui+react@1.7.0_@date-fns+tz@1.5.0_@types+react@19.2.14_date-fns@4.1.0_react-dom@19.2.4_react@19.2.4__react@19.2.4/node_modules/@base-ui/react/internals/use-button/useButton.mjs","../../../common/temp/node_modules/.pnpm/@base-ui+react@1.7.0_@date-fns+tz@1.5.0_@types+react@19.2.14_date-fns@4.1.0_react-dom@19.2.4_react@19.2.4__react@19.2.4/node_modules/@base-ui/react/internals/composite/constants.mjs","../../../common/temp/node_modules/.pnpm/@base-ui+react@1.7.0_@date-fns+tz@1.5.0_@types+react@19.2.14_date-fns@4.1.0_react-dom@19.2.4_react@19.2.4__react@19.2.4/node_modules/@base-ui/react/internals/composite/list/CompositeListContext.mjs","../../../common/temp/node_modules/.pnpm/@base-ui+react@1.7.0_@date-fns+tz@1.5.0_@types+react@19.2.14_date-fns@4.1.0_react-dom@19.2.4_react@19.2.4__react@19.2.4/node_modules/@base-ui/react/internals/composite/list/useCompositeListItem.mjs","../../../common/temp/node_modules/.pnpm/@base-ui+react@1.7.0_@date-fns+tz@1.5.0_@types+react@19.2.14_date-fns@4.1.0_react-dom@19.2.4_react@19.2.4__react@19.2.4/node_modules/@base-ui/react/internals/composite/item/useCompositeItem.mjs","../../../common/temp/node_modules/.pnpm/@base-ui+react@1.7.0_@date-fns+tz@1.5.0_@types+react@19.2.14_date-fns@4.1.0_react-dom@19.2.4_react@19.2.4__react@19.2.4/node_modules/@base-ui/react/internals/composite/item/CompositeItem.mjs","../../../common/temp/node_modules/.pnpm/@base-ui+react@1.7.0_@date-fns+tz@1.5.0_@types+react@19.2.14_date-fns@4.1.0_react-dom@19.2.4_react@19.2.4__react@19.2.4/node_modules/@base-ui/react/radio-group/RadioGroupContext.mjs","../../../common/temp/node_modules/.pnpm/@base-ui+react@1.7.0_@date-fns+tz@1.5.0_@types+react@19.2.14_date-fns@4.1.0_react-dom@19.2.4_react@19.2.4__react@19.2.4/node_modules/@base-ui/react/internals/serializeValue.mjs","../../../common/temp/node_modules/.pnpm/@base-ui+react@1.7.0_@date-fns+tz@1.5.0_@types+react@19.2.14_date-fns@4.1.0_react-dom@19.2.4_react@19.2.4__react@19.2.4/node_modules/@base-ui/react/radio/root/RadioRootContext.mjs","../../../common/temp/node_modules/.pnpm/@base-ui+react@1.7.0_@date-fns+tz@1.5.0_@types+react@19.2.14_date-fns@4.1.0_react-dom@19.2.4_react@19.2.4__react@19.2.4/node_modules/@base-ui/react/radio/root/RadioRoot.mjs","../../../common/temp/node_modules/.pnpm/@base-ui+react@1.7.0_@date-fns+tz@1.5.0_@types+react@19.2.14_date-fns@4.1.0_react-dom@19.2.4_react@19.2.4__react@19.2.4/node_modules/@base-ui/react/radio/indicator/RadioIndicator.mjs","../../../components/radio-button-group/src/radio-button-group.context.ts","../../../components/radio-button-group/src/radio-button-group-item.tsx","../../../common/temp/node_modules/.pnpm/@base-ui+react@1.7.0_@date-fns+tz@1.5.0_@types+react@19.2.14_date-fns@4.1.0_react-dom@19.2.4_react@19.2.4__react@19.2.4/node_modules/@base-ui/react/fieldset/root/FieldsetRoot.mjs","../../../common/temp/node_modules/.pnpm/@base-ui+react@1.7.0_@date-fns+tz@1.5.0_@types+react@19.2.14_date-fns@4.1.0_react-dom@19.2.4_react@19.2.4__react@19.2.4/node_modules/@base-ui/react/fieldset/legend/FieldsetLegend.mjs","../../../common/temp/node_modules/.pnpm/@base-ui+react@1.7.0_@date-fns+tz@1.5.0_@types+react@19.2.14_date-fns@4.1.0_react-dom@19.2.4_react@19.2.4__react@19.2.4/node_modules/@base-ui/react/internals/composite/composite.mjs","../../../common/temp/node_modules/.pnpm/@base-ui+react@1.7.0_@date-fns+tz@1.5.0_@types+react@19.2.14_date-fns@4.1.0_react-dom@19.2.4_react@19.2.4__react@19.2.4/node_modules/@base-ui/react/internals/composite/list/CompositeList.mjs","../../../common/temp/node_modules/.pnpm/@base-ui+utils@0.3.2_@types+react@19.2.14_react-dom@19.2.4_react@19.2.4__react@19.2.4/node_modules/@base-ui/utils/isElementDisabled.mjs","../../../common/temp/node_modules/.pnpm/@base-ui+react@1.7.0_@date-fns+tz@1.5.0_@types+react@19.2.14_date-fns@4.1.0_react-dom@19.2.4_react@19.2.4__react@19.2.4/node_modules/@base-ui/react/internals/composite/root/useCompositeRoot.mjs","../../../common/temp/node_modules/.pnpm/@base-ui+react@1.7.0_@date-fns+tz@1.5.0_@types+react@19.2.14_date-fns@4.1.0_react-dom@19.2.4_react@19.2.4__react@19.2.4/node_modules/@base-ui/react/internals/direction-context/DirectionContext.mjs","../../../common/temp/node_modules/.pnpm/@base-ui+react@1.7.0_@date-fns+tz@1.5.0_@types+react@19.2.14_date-fns@4.1.0_react-dom@19.2.4_react@19.2.4__react@19.2.4/node_modules/@base-ui/react/internals/composite/root/CompositeRoot.mjs","../../../common/temp/node_modules/.pnpm/@base-ui+react@1.7.0_@date-fns+tz@1.5.0_@types+react@19.2.14_date-fns@4.1.0_react-dom@19.2.4_react@19.2.4__react@19.2.4/node_modules/@base-ui/react/internals/useValueChanged.mjs","../../../common/temp/node_modules/.pnpm/@base-ui+react@1.7.0_@date-fns+tz@1.5.0_@types+react@19.2.14_date-fns@4.1.0_react-dom@19.2.4_react@19.2.4__react@19.2.4/node_modules/@base-ui/react/radio-group/RadioGroup.mjs","../../../components/radio-button-group/src/radio-button-group-root.tsx","../../../components/radio-button-group/src/constants.ts","../../../components/radio-button-group/src/radio-button-group.tsx"],"sourcesContent":["'use client';\n\nimport * as React from 'react';\nconst noop = () => {};\nexport const useIsoLayoutEffect = typeof document !== 'undefined' ? React.useLayoutEffect : noop;","import * as React from 'react';\n\n/**\n * A clone of the React namespace for reading APIs that may be missing in older\n * supported React versions. Bundlers can rewrite direct `React.someNewApi`\n * reads into named imports, which breaks React 17. Reading from this cloned\n * object keeps those lookups optional.\n *\n * @see https://github.com/mui/material-ui/issues/41190#issuecomment-2040873379\n */\nexport const SafeReact = {\n ...React\n};","'use client';\n\nimport * as React from 'react';\nconst UNINITIALIZED = {};\n\n/**\n * A React.useRef() that is initialized with a function. Note that it accepts an optional\n * initialization argument, so the initialization function doesn't need to be an inline closure.\n *\n * @usage\n * const ref = useRefWithInit(sortColumns, columns)\n */\n\nexport function useRefWithInit(init, initArg) {\n const ref = React.useRef(UNINITIALIZED);\n if (ref.current === UNINITIALIZED) {\n ref.current = init(initArg);\n }\n return ref;\n}","'use client';\n\nimport { SafeReact } from \"./safeReact.mjs\";\nimport { useRefWithInit } from \"./useRefWithInit.mjs\";\nconst useInsertionEffect = SafeReact.useInsertionEffect;\nconst useSafeInsertionEffect =\n// React 17 doesn't have useInsertionEffect.\nuseInsertionEffect &&\n// Preact replaces useInsertionEffect with useLayoutEffect and fires too late.\nuseInsertionEffect !== SafeReact.useLayoutEffect ? useInsertionEffect : fn => fn();\n/**\n * Stabilizes the function passed so it's always the same between renders.\n *\n * The function becomes non-reactive to any values it captures.\n * It can safely be passed as a dependency of `React.useMemo` and `React.useEffect` without re-triggering them if its captured values change.\n *\n * The function must only be called inside effects and event handlers, never during render (which throws an error).\n *\n * This hook is a more permissive version of React 19.2's `React.useEffectEvent` in that it can be passed through contexts and called in event handler props, not just effects.\n */\nexport function useStableCallback(callback) {\n const stable = useRefWithInit(createStableCallback).current;\n stable.next = callback;\n useSafeInsertionEffect(stable.effect);\n return stable.trampoline;\n}\nfunction createStableCallback() {\n const stable = {\n next: undefined,\n callback: assertNotCalled,\n trampoline: (...args) => stable.callback?.(...args),\n effect: () => {\n stable.callback = stable.next;\n }\n };\n return stable;\n}\nfunction assertNotCalled() {\n if (process.env.NODE_ENV !== 'production') {\n // TODO: fix mui/no-guarded-throw\n // eslint-disable-next-line mui/no-guarded-throw\n throw /* minify-error-disabled */new Error('Base UI: Cannot call an event handler while rendering.');\n }\n}","/**\n * Creates a formatErrorMessage function with a custom URL and prefix.\n * @param baseUrl - The base URL for the error page (e.g., 'https://base-ui.com/production-error')\n * @param prefix - The prefix for the error message (e.g., 'Base UI')\n * @returns A function that formats error messages with the given URL and prefix\n */\nexport function createFormatErrorMessage(baseUrl, prefix) {\n return function formatErrorMessage(code, ...args) {\n const url = new URL(baseUrl);\n url.searchParams.set('code', code.toString());\n args.forEach(arg => url.searchParams.append('args[]', arg));\n return `${prefix} error #${code}; visit ${url} for the full message.`;\n };\n}\n\n/**\n * WARNING: Don't import this directly. It's imported by the code generated by\n * `@mui/internal-babel-plugin-minify-errors`. Make sure to always use string literals in `Error`\n * constructors to ensure the plugin works as expected. Supported patterns include:\n * throw new Error('My message');\n * throw new Error(`My message: ${foo}`);\n * throw new Error(`My message: ${foo}` + 'another string');\n * ...\n */\nconst formatErrorMessage = createFormatErrorMessage('https://base-ui.com/production-error', 'Base UI');\nexport default formatErrorMessage;","export function NOOP() {}\nexport const EMPTY_ARRAY = Object.freeze([]);\nexport const EMPTY_OBJECT = Object.freeze({});","export const DEFAULT_VALIDITY_STATE = {\n badInput: false,\n customError: false,\n patternMismatch: false,\n rangeOverflow: false,\n rangeUnderflow: false,\n stepMismatch: false,\n tooLong: false,\n tooShort: false,\n typeMismatch: false,\n valid: null,\n valueMissing: false\n};\nexport const DEFAULT_FIELD_STATE_ATTRIBUTES = {\n valid: null,\n touched: false,\n dirty: false,\n filled: false,\n focused: false\n};\nexport const DEFAULT_FIELD_ROOT_STATE = {\n disabled: false,\n ...DEFAULT_FIELD_STATE_ATTRIBUTES\n};\nexport const fieldValidityMapping = {\n valid(value) {\n if (value === null) {\n return null;\n }\n if (value) {\n return {\n 'data-valid': ''\n };\n }\n return {\n 'data-invalid': ''\n };\n }\n};","'use client';\n\nimport _formatErrorMessage from \"@base-ui/utils/formatErrorMessage\";\nimport * as React from 'react';\nimport { EMPTY_OBJECT } from '@base-ui/utils/empty';\nimport { NOOP } from \"../noop.mjs\";\nimport { DEFAULT_FIELD_ROOT_STATE, DEFAULT_VALIDITY_STATE } from \"../field-constants/constants.mjs\";\nexport const DEFAULT_FIELD_ROOT_CONTEXT = {\n invalid: undefined,\n name: undefined,\n validityData: {\n state: DEFAULT_VALIDITY_STATE,\n errors: [],\n error: '',\n value: '',\n initialValue: null\n },\n setValidityData: NOOP,\n disabled: undefined,\n setTouched: NOOP,\n setDirty: NOOP,\n setFilled: NOOP,\n setFocused: NOOP,\n validationMode: 'onSubmit',\n shouldValidateOnChange: () => false,\n state: DEFAULT_FIELD_ROOT_STATE,\n registerFieldControl: NOOP,\n validation: {\n getValidationProps: (_disabled, props = EMPTY_OBJECT) => props,\n inputRef: {\n current: null\n },\n registeredInputs: new Map(),\n registerInput: NOOP,\n getInputControl: () => null,\n commit: async () => {},\n change: NOOP\n }\n};\nexport const FieldRootContext = /*#__PURE__*/React.createContext(DEFAULT_FIELD_ROOT_CONTEXT);\nif (process.env.NODE_ENV !== \"production\") FieldRootContext.displayName = \"FieldRootContext\";\nexport function useFieldRootContext(optional = true) {\n const context = React.useContext(FieldRootContext);\n if (context.setValidityData === NOOP && !optional) {\n throw new Error(process.env.NODE_ENV !== \"production\" ? 'Base UI: FieldRootContext is missing. Field parts must be placed within <Field.Root>.' : _formatErrorMessage(28));\n }\n return context;\n}","'use client';\n\nimport _formatErrorMessage from \"@base-ui/utils/formatErrorMessage\";\nimport * as React from 'react';\nexport const FieldsetRootContext = /*#__PURE__*/React.createContext(undefined);\nif (process.env.NODE_ENV !== \"production\") FieldsetRootContext.displayName = \"FieldsetRootContext\";\nexport function useFieldsetRootContext(optional = false) {\n const context = React.useContext(FieldsetRootContext);\n if (!context && !optional) {\n throw new Error(process.env.NODE_ENV !== \"production\" ? 'Base UI: FieldsetRootContext is missing. Fieldset parts must be placed within <Fieldset.Root>.' : _formatErrorMessage(86));\n }\n return context;\n}","'use client';\n\nimport * as React from 'react';\nimport { NOOP } from \"../noop.mjs\";\nexport const FormContext = /*#__PURE__*/React.createContext({\n elementRef: {\n current: null\n },\n formRef: {\n current: {\n fields: new Map()\n }\n },\n errors: {},\n clearErrors: NOOP,\n validationMode: 'onSubmit',\n submitAttemptedRef: {\n current: false\n }\n});\nif (process.env.NODE_ENV !== \"production\") FormContext.displayName = \"FormContext\";\nexport function useFormContext() {\n return React.useContext(FormContext);\n}","'use client';\n\nimport * as React from 'react';\nimport { SafeReact } from \"./safeReact.mjs\";\nlet globalId = 0;\n\n// TODO React 17: Remove `useGlobalId` once React 17 support is removed\nfunction useGlobalId(idOverride, prefix = 'mui') {\n const [defaultId, setDefaultId] = React.useState(idOverride);\n const id = idOverride || defaultId;\n React.useEffect(() => {\n if (defaultId == null) {\n // Fallback to this default id when possible.\n // Use the incrementing value for client-side rendering only.\n // We can't use it server-side.\n // If you want to use random values please consider the Birthday Problem: https://en.wikipedia.org/wiki/Birthday_problem\n globalId += 1;\n setDefaultId(`${prefix}-${globalId}`);\n }\n }, [defaultId, prefix]);\n return id;\n}\nconst maybeReactUseId = SafeReact.useId;\n\n/**\n *\n * @example <div id={useId()} />\n * @param idOverride\n * @returns {string}\n */\nexport function useId(idOverride, prefix) {\n // React.useId() is only available from React 17.0.0.\n if (maybeReactUseId !== undefined) {\n const reactId = maybeReactUseId();\n return idOverride ?? (prefix ? `${prefix}-${reactId}` : reactId);\n }\n\n // TODO: uncomment once we enable eslint-plugin-react-compiler // eslint-disable-next-line react-compiler/react-compiler\n // eslint-disable-next-line react-hooks/rules-of-hooks -- `React.useId` is invariant at runtime.\n return useGlobalId(idOverride, prefix);\n}","'use client';\n\nimport { useId } from '@base-ui/utils/useId';\n\n/**\n * Wraps `useId` and prefixes generated `id`s with `base-ui-`\n * @param {string | undefined} idOverride overrides the generated id when provided\n * @returns {string | undefined}\n */\nexport function useBaseUiId(idOverride) {\n return useId(idOverride, 'base-ui');\n}","'use client';\n\nimport * as React from 'react';\nimport { NOOP } from \"../noop.mjs\";\n/**\n * A context for providing [labelable elements](https://html.spec.whatwg.org/multipage/forms.html#category-label)\\\n * with an accessible name (label) and description.\n */\nexport const LabelableContext = /*#__PURE__*/React.createContext({\n controlId: undefined,\n registerControlId: NOOP,\n labelId: undefined,\n setLabelId: NOOP,\n messageIds: [],\n setMessageIds: NOOP,\n getDescriptionProps: externalProps => externalProps\n});\nif (process.env.NODE_ENV !== \"production\") LabelableContext.displayName = \"LabelableContext\";\nexport function useLabelableContext() {\n return React.useContext(LabelableContext);\n}","'use client';\n\nimport * as React from 'react';\nimport { useStableCallback } from '@base-ui/utils/useStableCallback';\nimport { useRefWithInit } from '@base-ui/utils/useRefWithInit';\nimport { useBaseUiId } from \"../useBaseUiId.mjs\";\nimport { LabelableContext, useLabelableContext } from \"./LabelableContext.mjs\";\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nexport const LabelableProvider = function LabelableProvider(props) {\n const defaultId = useBaseUiId();\n const initialControlId = props.controlId === undefined ? defaultId : props.controlId;\n const [controlId, setControlIdState] = React.useState(initialControlId);\n const [labelId, setLabelId] = React.useState(props.labelId);\n const [messageIds, setMessageIds] = React.useState([]);\n const registrationsRef = useRefWithInit(() => new Map());\n const {\n messageIds: parentMessageIds\n } = useLabelableContext();\n const registerControlId = useStableCallback((source, nextId) => {\n const registrations = registrationsRef.current;\n if (nextId === undefined) {\n registrations.delete(source);\n return;\n }\n registrations.set(source, nextId);\n\n // Only flush when registering, not when unregistering.\n // This prevents loops during rapid unmount/remount cycles (e.g. React Activity).\n // The next registration will pick up the correct state.\n setControlIdState(prev => {\n if (registrations.size === 0) {\n return undefined;\n }\n let nextControlId;\n for (const id of registrations.values()) {\n if (prev !== undefined && id === prev) {\n return prev;\n }\n if (nextControlId === undefined) {\n nextControlId = id;\n }\n }\n return nextControlId;\n });\n });\n const getDescriptionProps = React.useCallback(externalProps => {\n const ids = externalProps['aria-describedby'] ? externalProps['aria-describedby'].split(' ') : [];\n ids.push(...parentMessageIds, ...messageIds);\n return {\n ...externalProps,\n 'aria-describedby': Array.from(new Set(ids)).join(' ') || undefined\n };\n }, [parentMessageIds, messageIds]);\n const contextValue = React.useMemo(() => ({\n controlId,\n registerControlId,\n labelId,\n setLabelId,\n messageIds,\n setMessageIds,\n getDescriptionProps\n }), [controlId, registerControlId, labelId, setLabelId, messageIds, setMessageIds, getDescriptionProps]);\n return /*#__PURE__*/_jsx(LabelableContext.Provider, {\n value: contextValue,\n children: props.children\n });\n};\nif (process.env.NODE_ENV !== \"production\") LabelableProvider.displayName = \"LabelableProvider\";","'use client';\n\nimport * as React from 'react';\nimport { useIsoLayoutEffect } from '@base-ui/utils/useIsoLayoutEffect';\nimport { useBaseUiId } from \"../useBaseUiId.mjs\";\nexport function useAriaLabelledBy(explicitAriaLabelledBy, labelId, labelSourceRef, enableFallback = true, labelSourceId) {\n const [fallbackAriaLabelledBy, setFallbackAriaLabelledBy] = React.useState();\n const generatedLabelId = useBaseUiId(labelSourceId ? `${labelSourceId}-label` : undefined);\n const ariaLabelledBy = explicitAriaLabelledBy ?? labelId ?? fallbackAriaLabelledBy;\n\n // Fallback for <span> controls labelled by wrapping/sibling native <label>.\n // Run after every commit so DOM association changes (e.g. label mount/unmount)\n // are reflected even when props/state deps are unchanged.\n // eslint-disable-next-line react-hooks/exhaustive-deps\n useIsoLayoutEffect(() => {\n const nextAriaLabelledBy = explicitAriaLabelledBy || labelId || !enableFallback ? undefined : getAriaLabelledBy(labelSourceRef.current, generatedLabelId);\n if (fallbackAriaLabelledBy !== nextAriaLabelledBy) {\n setFallbackAriaLabelledBy(nextAriaLabelledBy);\n }\n });\n return ariaLabelledBy;\n}\nfunction getAriaLabelledBy(labelSource, generatedLabelId) {\n const label = findAssociatedLabel(labelSource);\n if (!label) {\n return undefined;\n }\n if (!label.id && generatedLabelId) {\n label.id = generatedLabelId;\n }\n return label.id || undefined;\n}\nfunction findAssociatedLabel(labelSource) {\n if (!labelSource) {\n return undefined;\n }\n\n // Fast path before the expensive `.labels` read.\n const parent = labelSource.parentElement;\n if (parent && parent.tagName === 'LABEL') {\n return parent;\n }\n const controlId = labelSource.id;\n if (controlId) {\n const nextSibling = labelSource.nextElementSibling;\n if (nextSibling && nextSibling.htmlFor === controlId) {\n return nextSibling;\n }\n }\n const labels = labelSource.labels;\n return labels && labels[0];\n}","function hasWindow() {\n return typeof window !== 'undefined';\n}\nfunction getNodeName(node) {\n if (isNode(node)) {\n return (node.nodeName || '').toLowerCase();\n }\n // Mocked nodes in testing environments may not be instances of Node. By\n // returning `#document` an infinite loop won't occur.\n // https://github.com/floating-ui/floating-ui/issues/2317\n return '#document';\n}\nfunction getWindow(node) {\n var _node$ownerDocument;\n return (node == null || (_node$ownerDocument = node.ownerDocument) == null ? void 0 : _node$ownerDocument.defaultView) || window;\n}\nfunction getDocumentElement(node) {\n var _ref;\n return (_ref = (isNode(node) ? node.ownerDocument : node.document) || window.document) == null ? void 0 : _ref.documentElement;\n}\nfunction isNode(value) {\n if (!hasWindow()) {\n return false;\n }\n return value instanceof Node || value instanceof getWindow(value).Node;\n}\nfunction isElement(value) {\n if (!hasWindow()) {\n return false;\n }\n return value instanceof Element || value instanceof getWindow(value).Element;\n}\nfunction isHTMLElement(value) {\n if (!hasWindow()) {\n return false;\n }\n return value instanceof HTMLElement || value instanceof getWindow(value).HTMLElement;\n}\nfunction isShadowRoot(value) {\n if (!hasWindow() || typeof ShadowRoot === 'undefined') {\n return false;\n }\n return value instanceof ShadowRoot || value instanceof getWindow(value).ShadowRoot;\n}\nfunction isOverflowElement(element) {\n const {\n overflow,\n overflowX,\n overflowY,\n display\n } = getComputedStyle(element);\n return /auto|scroll|overlay|hidden|clip/.test(overflow + overflowY + overflowX) && display !== 'inline' && display !== 'contents';\n}\nfunction isTableElement(element) {\n return /^(table|td|th)$/.test(getNodeName(element));\n}\nfunction isTopLayer(element) {\n try {\n if (element.matches(':popover-open')) {\n return true;\n }\n } catch (_e) {\n // no-op\n }\n try {\n return element.matches(':modal');\n } catch (_e) {\n return false;\n }\n}\nconst willChangeRe = /transform|translate|scale|rotate|perspective|filter/;\nconst containRe = /paint|layout|strict|content/;\nconst isNotNone = value => !!value && value !== 'none';\nlet isWebKitValue;\nfunction isContainingBlock(elementOrCss) {\n const css = isElement(elementOrCss) ? getComputedStyle(elementOrCss) : elementOrCss;\n\n // https://developer.mozilla.org/en-US/docs/Web/CSS/Containing_block#identifying_the_containing_block\n // https://drafts.csswg.org/css-transforms-2/#individual-transforms\n return isNotNone(css.transform) || isNotNone(css.translate) || isNotNone(css.scale) || isNotNone(css.rotate) || isNotNone(css.perspective) || !isWebKit() && (isNotNone(css.backdropFilter) || isNotNone(css.filter)) || willChangeRe.test(css.willChange || '') || containRe.test(css.contain || '');\n}\nfunction getContainingBlock(element) {\n let currentNode = getParentNode(element);\n while (isHTMLElement(currentNode) && !isLastTraversableNode(currentNode)) {\n if (isContainingBlock(currentNode)) {\n return currentNode;\n } else if (isTopLayer(currentNode)) {\n return null;\n }\n currentNode = getParentNode(currentNode);\n }\n return null;\n}\nfunction isWebKit() {\n if (isWebKitValue == null) {\n isWebKitValue = typeof CSS !== 'undefined' && CSS.supports && CSS.supports('-webkit-backdrop-filter', 'none');\n }\n return isWebKitValue;\n}\nfunction isLastTraversableNode(node) {\n return /^(html|body|#document)$/.test(getNodeName(node));\n}\nfunction getComputedStyle(element) {\n return getWindow(element).getComputedStyle(element);\n}\nfunction getNodeScroll(element) {\n if (isElement(element)) {\n return {\n scrollLeft: element.scrollLeft,\n scrollTop: element.scrollTop\n };\n }\n return {\n scrollLeft: element.scrollX,\n scrollTop: element.scrollY\n };\n}\nfunction getParentNode(node) {\n if (getNodeName(node) === 'html') {\n return node;\n }\n const result =\n // Step into the shadow DOM of the parent of a slotted node.\n node.assignedSlot ||\n // DOM Element detected.\n node.parentNode ||\n // ShadowRoot detected.\n isShadowRoot(node) && node.host ||\n // Fallback.\n getDocumentElement(node);\n return isShadowRoot(result) ? result.host : result;\n}\nfunction getNearestOverflowAncestor(node) {\n const parentNode = getParentNode(node);\n if (isLastTraversableNode(parentNode)) {\n return (node.ownerDocument || node).body;\n }\n if (isHTMLElement(parentNode) && isOverflowElement(parentNode)) {\n return parentNode;\n }\n return getNearestOverflowAncestor(parentNode);\n}\nfunction getOverflowAncestors(node, list, traverseIframes) {\n var _node$ownerDocument2;\n if (list === void 0) {\n list = [];\n }\n if (traverseIframes === void 0) {\n traverseIframes = true;\n }\n const scrollableAncestor = getNearestOverflowAncestor(node);\n const isBody = scrollableAncestor === ((_node$ownerDocument2 = node.ownerDocument) == null ? void 0 : _node$ownerDocument2.body);\n const win = getWindow(scrollableAncestor);\n if (isBody) {\n const frameElement = getFrameElement(win);\n return list.concat(win, win.visualViewport || [], isOverflowElement(scrollableAncestor) ? scrollableAncestor : [], frameElement && traverseIframes ? getOverflowAncestors(frameElement) : []);\n } else {\n return list.concat(scrollableAncestor, getOverflowAncestors(scrollableAncestor, [], traverseIframes));\n }\n}\nfunction getFrameElement(win) {\n return win.parent && Object.getPrototypeOf(win.parent) ? win.frameElement : null;\n}\n\nexport { getComputedStyle, getContainingBlock, getDocumentElement, getFrameElement, getNearestOverflowAncestor, getNodeName, getNodeScroll, getOverflowAncestors, getParentNode, getWindow, isContainingBlock, isElement, isHTMLElement, isLastTraversableNode, isNode, isOverflowElement, isShadowRoot, isTableElement, isTopLayer, isWebKit };\n","'use client';\n\nimport * as React from 'react';\nimport { useIsoLayoutEffect } from '@base-ui/utils/useIsoLayoutEffect';\nimport { useStableCallback } from '@base-ui/utils/useStableCallback';\nimport { useRefWithInit } from '@base-ui/utils/useRefWithInit';\nimport { isElement } from '@floating-ui/utils/dom';\nimport { NOOP } from \"../noop.mjs\";\nimport { useBaseUiId } from \"../useBaseUiId.mjs\";\nimport { useLabelableContext } from \"./LabelableContext.mjs\";\nexport function useLabelableId(params = {}) {\n const {\n id,\n implicit = false,\n controlRef\n } = params;\n const {\n controlId,\n registerControlId\n } = useLabelableContext();\n const defaultId = useBaseUiId(id);\n const controlIdForEffect = implicit ? controlId : undefined;\n const controlSourceRef = useRefWithInit(() => Symbol());\n const hasRegisteredRef = React.useRef(false);\n const hadExplicitIdRef = React.useRef(id != null);\n const unregisterControlId = useStableCallback(() => {\n if (!hasRegisteredRef.current || registerControlId === NOOP) {\n return;\n }\n hasRegisteredRef.current = false;\n registerControlId(controlSourceRef.current, undefined);\n });\n useIsoLayoutEffect(() => {\n if (registerControlId === NOOP) {\n return undefined;\n }\n let nextId;\n if (implicit) {\n const elem = controlRef?.current;\n if (isElement(elem) && elem.closest('label') != null) {\n nextId = id ?? null;\n } else {\n nextId = controlIdForEffect ?? defaultId;\n }\n } else if (id != null) {\n hadExplicitIdRef.current = true;\n nextId = id;\n } else if (hadExplicitIdRef.current) {\n nextId = defaultId;\n } else {\n unregisterControlId();\n return undefined;\n }\n if (nextId === undefined) {\n unregisterControlId();\n return undefined;\n }\n hasRegisteredRef.current = true;\n registerControlId(controlSourceRef.current, nextId);\n return undefined;\n }, [id, controlRef, controlIdForEffect, registerControlId, implicit, defaultId, controlSourceRef, unregisterControlId]);\n React.useEffect(() => {\n return unregisterControlId;\n }, [unregisterControlId]);\n return controlId ?? defaultId;\n}","export { getWindow as ownerWindow } from '@floating-ui/utils/dom';\nexport function ownerDocument(node) {\n return node?.ownerDocument || document;\n}","import { isShadowRoot } from '@floating-ui/utils/dom';\nexport function activeElement(doc) {\n let element = doc.activeElement;\n while (element?.shadowRoot?.activeElement != null) {\n element = element.shadowRoot.activeElement;\n }\n return element;\n}\nexport function contains(parent, child) {\n if (!parent || !child) {\n return false;\n }\n const rootNode = child.getRootNode?.();\n\n // First, attempt with the faster native method.\n if (parent.contains(child)) {\n return true;\n }\n\n // Then fall back to traversing out of shadow roots when needed.\n if (rootNode && isShadowRoot(rootNode)) {\n let next = child;\n while (next) {\n if (parent === next) {\n return true;\n }\n next = next.parentNode || next.host;\n }\n }\n return false;\n}\nexport function getTarget(event) {\n if ('composedPath' in event) {\n return event.composedPath()[0];\n }\n\n // TS assumes `composedPath()` always exists, but older browsers without\n // shadow DOM support still fall back to `target`.\n return event.target;\n}","import { floor } from '@floating-ui/utils';\nimport { getComputedStyle } from '@floating-ui/utils/dom';\nimport { stopEvent } from \"./event.mjs\";\nimport { ARROW_DOWN, ARROW_LEFT, ARROW_RIGHT, ARROW_UP } from \"./constants.mjs\";\nexport function isDifferentGridRow(index, cols, prevRow) {\n return Math.floor(index / cols) !== prevRow;\n}\nexport function isIndexOutOfListBounds(list, index) {\n return index < 0 || index >= list.length;\n}\nexport function getMinListIndex(listRef, disabledIndices) {\n return findNonDisabledListIndex(listRef.current, {\n disabledIndices\n });\n}\nexport function getMaxListIndex(listRef, disabledIndices) {\n return findNonDisabledListIndex(listRef.current, {\n decrement: true,\n startingIndex: listRef.current.length,\n disabledIndices\n });\n}\nexport function findNonDisabledListIndex(list, {\n startingIndex = -1,\n decrement = false,\n disabledIndices,\n amount = 1\n} = {}) {\n let index = startingIndex;\n do {\n index += decrement ? -amount : amount;\n } while (index >= 0 && index <= list.length - 1 && isListIndexDisabled(list, index, disabledIndices));\n return index;\n}\nexport function getGridNavigatedIndex(list, {\n event,\n orientation,\n loopFocus,\n onLoop,\n rtl,\n cols,\n disabledIndices,\n minIndex,\n maxIndex,\n prevIndex,\n stopEvent: stop = false\n}) {\n let nextIndex = prevIndex;\n let verticalDirection;\n if (event.key === ARROW_UP) {\n verticalDirection = 'up';\n } else if (event.key === ARROW_DOWN) {\n verticalDirection = 'down';\n }\n if (verticalDirection) {\n // -------------------------------------------------------------------------\n // Detect row structure only when handling vertical navigation. This keeps\n // the non-vertical key paths free from row inference work.\n // -------------------------------------------------------------------------\n const rows = [];\n const rowIndexMap = [];\n let hasRoleRow = false;\n let visibleItemCount = 0;\n {\n let currentRowEl = null;\n let currentRowIndex = -1;\n list.forEach((el, idx) => {\n if (el == null) {\n return;\n }\n visibleItemCount += 1;\n const rowEl = el.closest('[role=\"row\"]');\n if (rowEl) {\n hasRoleRow = true;\n }\n if (rowEl !== currentRowEl || currentRowIndex === -1) {\n currentRowEl = rowEl;\n currentRowIndex += 1;\n rows[currentRowIndex] = [];\n }\n rows[currentRowIndex].push(idx);\n rowIndexMap[idx] = currentRowIndex;\n });\n }\n let hasDomRows = false;\n let inferredDomCols = 0;\n if (hasRoleRow) {\n for (const row of rows) {\n const rowLength = row.length;\n if (rowLength > inferredDomCols) {\n inferredDomCols = rowLength;\n }\n if (rowLength !== cols) {\n hasDomRows = true;\n }\n }\n }\n const hasVirtualizedGaps = hasDomRows && visibleItemCount < list.length;\n const verticalCols = inferredDomCols || cols;\n const navigateVertically = direction => {\n if (!hasDomRows || prevIndex === -1) {\n return undefined;\n }\n const currentRow = rowIndexMap[prevIndex];\n if (currentRow == null) {\n return undefined;\n }\n const colInRow = rows[currentRow].indexOf(prevIndex);\n const step = direction === 'up' ? -1 : 1;\n for (let nextRow = currentRow + step, i = 0; i < rows.length; i += 1, nextRow += step) {\n if (nextRow < 0 || nextRow >= rows.length) {\n if (!loopFocus || hasVirtualizedGaps) {\n return undefined;\n }\n nextRow = nextRow < 0 ? rows.length - 1 : 0;\n if (onLoop) {\n const clampedCol = Math.min(colInRow, rows[nextRow].length - 1);\n const targetItemIndex = rows[nextRow][clampedCol] ?? rows[nextRow][0];\n const returnedItemIndex = onLoop(event, prevIndex, targetItemIndex);\n nextRow = rowIndexMap[returnedItemIndex] ?? nextRow;\n }\n }\n const targetRow = rows[nextRow];\n for (let col = Math.min(colInRow, targetRow.length - 1); col >= 0; col -= 1) {\n const candidate = targetRow[col];\n if (!isListIndexDisabled(list, candidate, disabledIndices)) {\n return candidate;\n }\n }\n }\n return undefined;\n };\n const navigateVerticallyWithInferredRows = direction => {\n if (!hasVirtualizedGaps || prevIndex === -1) {\n return undefined;\n }\n const colInRow = prevIndex % verticalCols;\n const rowStep = direction === 'up' ? -verticalCols : verticalCols;\n const lastRowStart = maxIndex - maxIndex % verticalCols;\n const rowCount = floor(maxIndex / verticalCols) + 1;\n for (let rowStart = prevIndex - colInRow + rowStep, i = 0; i < rowCount; i += 1, rowStart += rowStep) {\n if (rowStart < 0 || rowStart > maxIndex) {\n if (!loopFocus) {\n return undefined;\n }\n rowStart = rowStart < 0 ? lastRowStart : 0;\n }\n const rowEnd = Math.min(rowStart + verticalCols - 1, maxIndex);\n for (let candidate = Math.min(rowStart + colInRow, rowEnd); candidate >= rowStart; candidate -= 1) {\n if (!isListIndexDisabled(list, candidate, disabledIndices)) {\n return candidate;\n }\n }\n }\n return undefined;\n };\n if (stop) {\n stopEvent(event);\n }\n const verticalCandidate = navigateVertically(verticalDirection) ?? navigateVerticallyWithInferredRows(verticalDirection);\n if (verticalCandidate !== undefined) {\n nextIndex = verticalCandidate;\n } else if (prevIndex === -1) {\n nextIndex = verticalDirection === 'up' ? maxIndex : minIndex;\n } else {\n nextIndex = findNonDisabledListIndex(list, {\n startingIndex: prevIndex,\n amount: verticalCols,\n decrement: verticalDirection === 'up',\n disabledIndices\n });\n if (loopFocus) {\n if (verticalDirection === 'up' && (prevIndex - verticalCols < minIndex || nextIndex < 0)) {\n const col = prevIndex % verticalCols;\n const maxCol = maxIndex % verticalCols;\n const offset = maxIndex - (maxCol - col);\n if (maxCol === col) {\n nextIndex = maxIndex;\n } else {\n nextIndex = maxCol > col ? offset : offset - verticalCols;\n }\n if (onLoop) {\n nextIndex = onLoop(event, prevIndex, nextIndex);\n }\n }\n if (verticalDirection === 'down' && prevIndex + verticalCols > maxIndex) {\n nextIndex = findNonDisabledListIndex(list, {\n startingIndex: prevIndex % verticalCols - verticalCols,\n amount: verticalCols,\n disabledIndices\n });\n if (onLoop) {\n nextIndex = onLoop(event, prevIndex, nextIndex);\n }\n }\n }\n }\n if (isIndexOutOfListBounds(list, nextIndex)) {\n nextIndex = prevIndex;\n }\n }\n\n // Remains on the same row/column.\n if (orientation === 'both') {\n const prevRow = floor(prevIndex / cols);\n if (event.key === (rtl ? ARROW_LEFT : ARROW_RIGHT)) {\n if (stop) {\n stopEvent(event);\n }\n if (prevIndex % cols !== cols - 1) {\n nextIndex = findNonDisabledListIndex(list, {\n startingIndex: prevIndex,\n disabledIndices\n });\n if (loopFocus && isDifferentGridRow(nextIndex, cols, prevRow)) {\n nextIndex = findNonDisabledListIndex(list, {\n startingIndex: prevIndex - prevIndex % cols - 1,\n disabledIndices\n });\n if (onLoop) {\n nextIndex = onLoop(event, prevIndex, nextIndex);\n }\n }\n } else if (loopFocus) {\n nextIndex = findNonDisabledListIndex(list, {\n startingIndex: prevIndex - prevIndex % cols - 1,\n disabledIndices\n });\n if (onLoop) {\n nextIndex = onLoop(event, prevIndex, nextIndex);\n }\n }\n if (isDifferentGridRow(nextIndex, cols, prevRow)) {\n nextIndex = prevIndex;\n }\n }\n if (event.key === (rtl ? ARROW_RIGHT : ARROW_LEFT)) {\n if (stop) {\n stopEvent(event);\n }\n if (prevIndex % cols !== 0) {\n nextIndex = findNonDisabledListIndex(list, {\n startingIndex: prevIndex,\n decrement: true,\n disabledIndices\n });\n if (loopFocus && isDifferentGridRow(nextIndex, cols, prevRow)) {\n nextIndex = findNonDisabledListIndex(list, {\n startingIndex: prevIndex + (cols - prevIndex % cols),\n decrement: true,\n disabledIndices\n });\n if (onLoop) {\n nextIndex = onLoop(event, prevIndex, nextIndex);\n }\n }\n } else if (loopFocus) {\n nextIndex = findNonDisabledListIndex(list, {\n startingIndex: prevIndex + (cols - prevIndex % cols),\n decrement: true,\n disabledIndices\n });\n if (onLoop) {\n nextIndex = onLoop(event, prevIndex, nextIndex);\n }\n }\n if (isDifferentGridRow(nextIndex, cols, prevRow)) {\n nextIndex = prevIndex;\n }\n }\n const lastRow = floor(maxIndex / cols) === prevRow;\n if (isIndexOutOfListBounds(list, nextIndex)) {\n if (loopFocus && lastRow) {\n nextIndex = event.key === (rtl ? ARROW_RIGHT : ARROW_LEFT) ? maxIndex : findNonDisabledListIndex(list, {\n startingIndex: prevIndex - prevIndex % cols - 1,\n disabledIndices\n });\n if (onLoop) {\n nextIndex = onLoop(event, prevIndex, nextIndex);\n }\n } else {\n nextIndex = prevIndex;\n }\n }\n }\n return nextIndex;\n}\n\n/** For each cell index, gets the item index that occupies that cell */\nexport function createGridCellMap(sizes, cols, dense) {\n const cellMap = [];\n let startIndex = 0;\n sizes.forEach(({\n width,\n height\n }, index) => {\n if (width > cols) {\n if (process.env.NODE_ENV !== 'production') {\n // TODO: fix mui/no-guarded-throw\n // eslint-disable-next-line mui/no-guarded-throw\n throw new Error(`[Floating UI]: Invalid grid - item width at index ${index} is greater than grid columns`);\n }\n }\n let itemPlaced = false;\n if (dense) {\n startIndex = 0;\n }\n while (!itemPlaced) {\n const targetCells = [];\n for (let i = 0; i < width; i += 1) {\n for (let j = 0; j < height; j += 1) {\n targetCells.push(startIndex + i + j * cols);\n }\n }\n if (startIndex % cols + width <= cols && targetCells.every(cell => cellMap[cell] == null)) {\n targetCells.forEach(cell => {\n cellMap[cell] = index;\n });\n itemPlaced = true;\n } else {\n startIndex += 1;\n }\n }\n });\n\n // convert into a non-sparse array\n return [...cellMap];\n}\n\n/** Gets cell index of an item's corner or -1 when index is -1. */\nexport function getGridCellIndexOfCorner(index, sizes, cellMap, cols, corner) {\n if (index === -1) {\n return -1;\n }\n const firstCellIndex = cellMap.indexOf(index);\n const sizeItem = sizes[index];\n switch (corner) {\n case 'tl':\n return firstCellIndex;\n case 'tr':\n if (!sizeItem) {\n return firstCellIndex;\n }\n return firstCellIndex + sizeItem.width - 1;\n case 'bl':\n if (!sizeItem) {\n return firstCellIndex;\n }\n return firstCellIndex + (sizeItem.height - 1) * cols;\n case 'br':\n return cellMap.lastIndexOf(index);\n default:\n return -1;\n }\n}\n\n/** Gets all cell indices that correspond to the specified indices */\nexport function getGridCellIndices(indices, cellMap) {\n return cellMap.flatMap((index, cellIndex) => indices.includes(index) ? [cellIndex] : []);\n}\nexport function isListIndexDisabled(list, index, disabledIndices) {\n const isExplicitlyDisabled = typeof disabledIndices === 'function' ? disabledIndices(index) : disabledIndices?.includes(index) ?? false;\n if (isExplicitlyDisabled) {\n return true;\n }\n const element = list[index];\n if (!element) {\n return false;\n }\n if (!isElementVisible(element)) {\n return true;\n }\n\n // A natively disabled element can never receive focus, so it must always be\n // skipped, even when `disabledIndices` marks it as enabled. Only\n // `aria-disabled` items can be focusable-while-disabled.\n if (element.matches(':disabled')) {\n return true;\n }\n return !disabledIndices && (element.hasAttribute('disabled') || element.getAttribute('aria-disabled') === 'true');\n}\nexport function isHiddenByStyles(styles) {\n return styles.visibility === 'hidden' || styles.visibility === 'collapse';\n}\nexport function isElementVisible(element, styles = element ? getComputedStyle(element) : null) {\n if (!element || !element.isConnected || !styles || isHiddenByStyles(styles)) {\n return false;\n }\n if (typeof element.checkVisibility === 'function') {\n return element.checkVisibility();\n }\n return styles.display !== 'none' && styles.display !== 'contents';\n}","'use client';\n\nimport { useIsoLayoutEffect } from '@base-ui/utils/useIsoLayoutEffect';\nimport { useBaseUiId } from \"../internals/useBaseUiId.mjs\";\nexport function useRegisteredLabelId(idProp, setLabelId) {\n const id = useBaseUiId(idProp);\n useIsoLayoutEffect(() => {\n setLabelId(id);\n return () => {\n setLabelId(currentId => currentId === id ? undefined : currentId);\n };\n }, [id, setLabelId]);\n return id;\n}","'use client';\n\nimport { isHTMLElement } from '@floating-ui/utils/dom';\nimport { ownerDocument } from '@base-ui/utils/owner';\nimport { useStableCallback } from '@base-ui/utils/useStableCallback';\nimport { getTarget } from \"../../floating-ui-react/utils.mjs\";\nimport { useRegisteredLabelId } from \"../../utils/useRegisteredLabelId.mjs\";\nimport { useLabelableContext } from \"./LabelableContext.mjs\";\nexport function useLabel(params = {}) {\n const {\n id: idProp,\n fallbackControlId,\n native = false,\n setLabelId: setLabelIdProp,\n focusControl: focusControlProp\n } = params;\n const {\n controlId: contextControlId,\n setLabelId: setContextLabelId\n } = useLabelableContext();\n const syncLabelId = useStableCallback(nextLabelId => {\n setContextLabelId(nextLabelId);\n setLabelIdProp?.(nextLabelId);\n });\n const id = useRegisteredLabelId(idProp, syncLabelId);\n const resolvedControlId = contextControlId ?? fallbackControlId;\n function focusControl(event) {\n if (focusControlProp) {\n focusControlProp(event, resolvedControlId);\n return;\n }\n if (!resolvedControlId) {\n return;\n }\n const controlElement = ownerDocument(event.currentTarget).getElementById(resolvedControlId);\n if (isHTMLElement(controlElement)) {\n focusElementWithVisible(controlElement);\n }\n }\n function handleInteraction(event) {\n const target = getTarget(event.nativeEvent);\n if (target?.closest('button,input,select,textarea')) {\n return;\n }\n\n // Prevent text selection when double clicking label.\n if (!event.defaultPrevented && event.detail > 1) {\n event.preventDefault();\n }\n if (native) {\n return;\n }\n focusControl(event);\n }\n return native ? {\n id,\n htmlFor: resolvedControlId ?? undefined,\n onMouseDown: handleInteraction\n } : {\n id,\n onClick: handleInteraction,\n onPointerDown(event) {\n event.preventDefault();\n }\n };\n}\nexport function focusElementWithVisible(element) {\n element.focus({\n // Available from Chrome 144+ (January 2026).\n // Safari and Firefox already support it.\n focusVisible: true\n });\n}","import { useRefWithInit } from \"./useRefWithInit.mjs\";\n\n/**\n * Merges refs into a single memoized callback ref or `null`.\n * This makes sure multiple refs are updated together and have the same value.\n *\n * This function accepts up to four refs. If you need to merge more, or have an unspecified number of refs to merge,\n * use `useMergedRefsN` instead.\n */\n\nexport function useMergedRefs(a, b, c, d) {\n const forkRef = useRefWithInit(createForkRef).current;\n if (didChange(forkRef, a, b, c, d)) {\n update(forkRef, [a, b, c, d]);\n }\n return forkRef.callback;\n}\n\n/**\n * Merges an array of refs into a single memoized callback ref or `null`.\n *\n * If you need to merge a fixed number (up to four) of refs, use `useMergedRefs` instead for better performance.\n */\nexport function useMergedRefsN(refs) {\n const forkRef = useRefWithInit(createForkRef).current;\n if (didChangeN(forkRef, refs)) {\n update(forkRef, refs);\n }\n return forkRef.callback;\n}\nfunction createForkRef() {\n return {\n callback: null,\n cleanup: null,\n refs: []\n };\n}\nfunction didChange(forkRef, a, b, c, d) {\n // prettier-ignore\n return forkRef.refs[0] !== a || forkRef.refs[1] !== b || forkRef.refs[2] !== c || forkRef.refs[3] !== d;\n}\nfunction didChangeN(forkRef, newRefs) {\n return forkRef.refs.length !== newRefs.length || forkRef.refs.some((ref, index) => ref !== newRefs[index]);\n}\nfunction update(forkRef, refs) {\n forkRef.refs = refs;\n if (refs.every(ref => ref == null)) {\n forkRef.callback = null;\n return;\n }\n forkRef.callback = instance => {\n if (forkRef.cleanup) {\n forkRef.cleanup();\n forkRef.cleanup = null;\n }\n if (instance != null) {\n const cleanupCallbacks = Array(refs.length).fill(null);\n for (let i = 0; i < refs.length; i += 1) {\n const ref = refs[i];\n if (ref == null) {\n continue;\n }\n switch (typeof ref) {\n case 'function':\n {\n const refCleanup = ref(instance);\n if (typeof refCleanup === 'function') {\n cleanupCallbacks[i] = refCleanup;\n }\n break;\n }\n case 'object':\n {\n ref.current = instance;\n break;\n }\n default:\n }\n }\n forkRef.cleanup = () => {\n for (let i = 0; i < refs.length; i += 1) {\n const ref = refs[i];\n if (ref == null) {\n continue;\n }\n switch (typeof ref) {\n case 'function':\n {\n const cleanupCallback = cleanupCallbacks[i];\n if (typeof cleanupCallback === 'function') {\n cleanupCallback();\n } else {\n // Legacy ref with no attach-time cleanup: detach by calling it with `null`.\n // It returns nothing; React 19 cleanups are handled in the branch above.\n void ref(null);\n }\n break;\n }\n case 'object':\n {\n ref.current = null;\n break;\n }\n default:\n }\n }\n };\n }\n };\n}","import * as React from 'react';\nconst majorVersion = parseInt(React.version, 10);\nexport function isReactVersionAtLeast(reactVersionToCheck) {\n return majorVersion >= reactVersionToCheck;\n}","import * as React from 'react';\nimport { isReactVersionAtLeast } from \"./reactVersion.mjs\";\n\n/**\n * Extracts the `ref` from a React element, handling different React versions.\n */\nexport function getReactElementRef(element) {\n if (! /*#__PURE__*/React.isValidElement(element)) {\n return null;\n }\n const reactElement = element;\n const propsWithRef = reactElement.props;\n return (isReactVersionAtLeast(19) ? propsWithRef?.ref : reactElement.ref) ?? null;\n}","export function mergeObjects(a, b) {\n if (a && !b) {\n return a;\n }\n if (!a && b) {\n return b;\n }\n if (a || b) {\n return {\n ...a,\n ...b\n };\n }\n return undefined;\n}","let set;\nif (process.env.NODE_ENV !== 'production') {\n set = new Set();\n}\nexport function warn(...messages) {\n if (process.env.NODE_ENV !== 'production') {\n const messageKey = messages.join(' ');\n if (!set.has(messageKey)) {\n set.add(messageKey);\n console.warn(`Base UI: ${messageKey}`);\n }\n }\n}","export function getStateAttributesProps(state, customMapping) {\n const props = {};\n\n /* eslint-disable-next-line guard-for-in */\n for (const key in state) {\n const value = state[key];\n if (customMapping?.hasOwnProperty(key)) {\n const customProps = customMapping[key](value);\n if (customProps != null) {\n Object.assign(props, customProps);\n }\n continue;\n }\n if (value === true) {\n props[`data-${key.toLowerCase()}`] = '';\n } else if (value) {\n props[`data-${key.toLowerCase()}`] = value.toString();\n }\n }\n return props;\n}","/**\n * If the provided className is a string, it will be returned as is.\n * Otherwise, the function will call the className function with the state as the first argument.\n *\n * @param className\n * @param state\n */\nexport function resolveClassName(className, state) {\n return typeof className === 'function' ? className(state) : className;\n}","/**\n * If the provided style is an object, it will be returned as is.\n * Otherwise, the function will call the style function with the state as the first argument.\n *\n * @param style\n * @param state\n */\nexport function resolveStyle(style, state) {\n return typeof style === 'function' ? style(state) : style;\n}","import { mergeObjects } from '@base-ui/utils/mergeObjects';\nconst EMPTY_PROPS = {};\n\n/* eslint-disable id-denylist */\n/**\n * Merges multiple sets of React props. It follows the Object.assign pattern where the rightmost object's fields overwrite\n * the conflicting ones from others. This doesn't apply to event handlers, `className` and `style` props.\n *\n * Event handlers are merged and called in right-to-left order (rightmost handler executes first, leftmost last).\n * For React synthetic events, the rightmost handler can prevent prior (left-positioned) handlers from executing\n * by calling `event.preventBaseUIHandler()`. For non-synthetic events (custom events with primitive/object values),\n * all handlers always execute without prevention capability.\n *\n * The `className` prop is merged by concatenating classes in right-to-left order (rightmost class appears first in the string).\n * The `style` prop is merged with rightmost styles overwriting the prior ones.\n *\n * Props can either be provided as objects or as functions that take the previous props as an argument.\n * The function will receive the merged props up to that point (going from left to right):\n * so in the case of `(obj1, obj2, fn, obj3)`, `fn` will receive the merged props of `obj1` and `obj2`.\n * The function is responsible for chaining event handlers if needed (that is, we don't run the merge logic).\n *\n * Event handlers returned by the functions are not automatically prevented when `preventBaseUIHandler` is called.\n * They must check `event.baseUIHandlerPrevented` themselves and bail out if it's true.\n *\n * @important **`ref` is not merged.**\n * @param a Props object to merge.\n * @param b Props object to merge. The function will overwrite conflicting props from `a`.\n * @param c Props object to merge. The function will overwrite conflicting props from previous parameters.\n * @param d Props object to merge. The function will overwrite conflicting props from previous parameters.\n * @param e Props object to merge. The function will overwrite conflicting props from previous parameters.\n * @returns The merged props.\n * @public\n */\n\nexport function mergeProps(a, b, c, d, e) {\n if (!c && !d && !e && !a) {\n return createInitialMergedProps(b);\n }\n\n // We need to mutably own `merged`.\n let merged = createInitialMergedProps(a);\n if (b) {\n merged = mergeInto(merged, b);\n }\n if (c) {\n merged = mergeInto(merged, c);\n }\n if (d) {\n merged = mergeInto(merged, d);\n }\n if (e) {\n merged = mergeInto(merged, e);\n }\n return merged;\n}\n/* eslint-enable id-denylist */\n\n/**\n * Merges an arbitrary number of React props using the same logic as {@link mergeProps}.\n * This function accepts an array of props instead of individual arguments.\n *\n * This has slightly lower performance than {@link mergeProps} due to accepting an array\n * instead of a fixed number of arguments. Prefer {@link mergeProps} when merging 5 or\n * fewer prop sets for better performance.\n *\n * @param props Array of props to merge.\n * @returns The merged props.\n * @see mergeProps\n * @public\n */\nexport function mergePropsN(props) {\n if (props.length === 0) {\n return EMPTY_PROPS;\n }\n if (props.length === 1) {\n return createInitialMergedProps(props[0]);\n }\n\n // We need to mutably own `merged`.\n let merged = createInitialMergedProps(props[0]);\n for (let i = 1; i < props.length; i += 1) {\n merged = mergeInto(merged, props[i]);\n }\n return merged;\n}\nfunction createInitialMergedProps(inputProps) {\n if (isPropsGetter(inputProps)) {\n // Getter-returned handlers intentionally keep their existing semantics.\n return {\n ...resolvePropsGetter(inputProps, EMPTY_PROPS)\n };\n }\n return copyInitialProps(inputProps);\n}\nfunction mergeInto(merged, inputProps) {\n if (isPropsGetter(inputProps)) {\n return resolvePropsGetter(inputProps, merged);\n }\n return mutablyMergeInto(merged, inputProps);\n}\nfunction copyInitialProps(inputProps) {\n const copiedProps = {\n ...inputProps\n };\n\n // `copiedProps` is our fresh own-object copy, so iterating with `for...in` is safe here.\n // eslint-disable-next-line guard-for-in\n for (const propName in copiedProps) {\n const propValue = copiedProps[propName];\n if (isEventHandler(propName, propValue)) {\n copiedProps[propName] = wrapEventHandler(propValue);\n }\n }\n return copiedProps;\n}\n\n/**\n * Merges two sets of props. In case of conflicts, the external props take precedence.\n */\nfunction mutablyMergeInto(mergedProps, externalProps) {\n if (!externalProps) {\n return mergedProps;\n }\n\n // eslint-disable-next-line guard-for-in\n for (const propName in externalProps) {\n const externalPropValue = externalProps[propName];\n switch (propName) {\n case 'style':\n {\n mergedProps[propName] = mergeObjects(mergedProps.style, externalPropValue);\n break;\n }\n case 'className':\n {\n mergedProps[propName] = mergeClassNames(mergedProps.className, externalPropValue);\n break;\n }\n default:\n {\n if (isEventHandler(propName, externalPropValue)) {\n mergedProps[propName] = mergeEventHandlers(mergedProps[propName], externalPropValue);\n } else {\n mergedProps[propName] = externalPropValue;\n }\n }\n }\n }\n return mergedProps;\n}\nfunction isEventHandler(key, value) {\n // This approach is more efficient than using a regex.\n const code0 = key.charCodeAt(0);\n const code1 = key.charCodeAt(1);\n const code2 = key.charCodeAt(2);\n return code0 === 111 /* o */ && code1 === 110 /* n */ && code2 >= 65 /* A */ && code2 <= 90 /* Z */ && (typeof value === 'function' || typeof value === 'undefined');\n}\nfunction isPropsGetter(inputProps) {\n return typeof inputProps === 'function';\n}\nfunction resolvePropsGetter(inputProps, previousProps) {\n if (isPropsGetter(inputProps)) {\n return inputProps(previousProps);\n }\n return inputProps ?? EMPTY_PROPS;\n}\nfunction mergeEventHandlers(ourHandler, theirHandler) {\n if (!theirHandler) {\n return ourHandler;\n }\n if (!ourHandler) {\n return wrapEventHandler(theirHandler);\n }\n return (...args) => {\n const event = args[0];\n if (isSyntheticEvent(event)) {\n const baseUIEvent = event;\n makeEventPreventable(baseUIEvent);\n const result = theirHandler(...args);\n if (!baseUIEvent.baseUIHandlerPrevented) {\n ourHandler?.(...args);\n }\n return result;\n }\n const result = theirHandler(...args);\n ourHandler?.(...args);\n return result;\n };\n}\nfunction wrapEventHandler(handler) {\n if (!handler) {\n return handler;\n }\n return (...args) => {\n const event = args[0];\n if (isSyntheticEvent(event)) {\n makeEventPreventable(event);\n }\n return handler(...args);\n };\n}\nexport function makeEventPreventable(event) {\n event.preventBaseUIHandler = () => {\n event.baseUIHandlerPrevented = true;\n };\n return event;\n}\nexport function mergeClassNames(ourClassName, theirClassName) {\n if (theirClassName) {\n if (ourClassName) {\n // eslint-disable-next-line prefer-template\n return theirClassName + ' ' + ourClassName;\n }\n return theirClassName;\n }\n return ourClassName;\n}\nfunction isSyntheticEvent(event) {\n return event != null && typeof event === 'object' && 'nativeEvent' in event;\n}","import _formatErrorMessage from \"@base-ui/utils/formatErrorMessage\";\nimport * as React from 'react';\nimport { useMergedRefs, useMergedRefsN } from '@base-ui/utils/useMergedRefs';\nimport { getReactElementRef } from '@base-ui/utils/getReactElementRef';\nimport { mergeObjects } from '@base-ui/utils/mergeObjects';\nimport { warn } from '@base-ui/utils/warn';\nimport { EMPTY_OBJECT } from '@base-ui/utils/empty';\nimport { getStateAttributesProps } from \"./getStateAttributesProps.mjs\";\nimport { resolveClassName } from \"../utils/resolveClassName.mjs\";\nimport { resolveStyle } from \"../utils/resolveStyle.mjs\";\nimport { mergeProps, mergePropsN, mergeClassNames } from \"../merge-props/index.mjs\";\nimport { createElement as _createElement } from \"react\";\n/**\n * Renders a Base UI element.\n *\n * @param element The default HTML element to render. Can be overridden by the `render` prop.\n * @param componentProps An object containing the `render` and `className` props to be used for element customization. Other props are ignored.\n * @param params Additional parameters for rendering the element.\n */\nexport function useRenderElement(element, componentProps, params = {}) {\n const renderProp = componentProps.render;\n const outProps = useRenderElementProps(componentProps, params);\n if (params.enabled === false) {\n return null;\n }\n const state = params.state ?? EMPTY_OBJECT;\n return evaluateRenderProp(element, renderProp, outProps, state);\n}\n\n/**\n * Computes render element final props.\n */\nfunction useRenderElementProps(componentProps, params = {}) {\n const {\n className: classNameProp,\n style: styleProp,\n render: renderProp\n } = componentProps;\n const {\n state = EMPTY_OBJECT,\n ref,\n props,\n stateAttributesMapping,\n enabled = true\n } = params;\n const className = enabled ? resolveClassName(classNameProp, state) : undefined;\n const style = enabled ? resolveStyle(styleProp, state) : undefined;\n const stateProps = enabled ? getStateAttributesProps(state, stateAttributesMapping) : EMPTY_OBJECT;\n const resolvedProps = enabled && props ? resolveRenderFunctionProps(props) : undefined;\n\n // Ensure outProps is always a new mutable object when enabled, never EMPTY_OBJECT.\n // This prevents potential TypeError when setting ref, className, or style properties,\n // since EMPTY_OBJECT is frozen and mutations would fail in strict mode.\n const outProps = enabled ? mergeObjects(stateProps, resolvedProps) ?? {} : EMPTY_OBJECT;\n\n // SAFETY: The `useMergedRefs` functions use a single hook to store the same value,\n // switching between them at runtime is safe. If this assertion fails, React will\n // throw at runtime anyway.\n // This also skips the `useMergedRefs` call on the server, which is fine because\n // refs are not used on the server side.\n /* eslint-disable react-hooks/rules-of-hooks */\n if (typeof document !== 'undefined') {\n if (!enabled) {\n // Called only to keep the hook order stable when disabled; the merged ref is unused.\n void useMergedRefs(null, null);\n } else if (Array.isArray(ref)) {\n outProps.ref = useMergedRefsN([outProps.ref, getReactElementRef(renderProp), ...ref]);\n } else {\n outProps.ref = useMergedRefs(outProps.ref, getReactElementRef(renderProp), ref);\n }\n }\n if (!enabled) {\n return EMPTY_OBJECT;\n }\n if (className !== undefined) {\n outProps.className = mergeClassNames(outProps.className, className);\n }\n if (style !== undefined) {\n outProps.style = mergeObjects(outProps.style, style);\n }\n return outProps;\n}\nfunction resolveRenderFunctionProps(props) {\n if (Array.isArray(props)) {\n return mergePropsN(props);\n }\n return mergeProps(undefined, props);\n}\n\n// The symbol React uses internally for lazy components\n// https://github.com/react/react/blob/a0566250b210499b4c5677f5ac2eedbd71d51a1b/packages/shared/ReactSymbols.js#L31\n//\n// TODO delete once https://github.com/react/react/issues/32392 is fixed\nconst REACT_LAZY_TYPE = Symbol.for('react.lazy');\nconst COMPONENT_IDENTIFIER_PATTERN = /^[A-Z][A-Za-z0-9$]*$/;\nconst LOWERCASE_CHARACTER_PATTERN = /[a-z]/;\nfunction evaluateRenderProp(element, render, props, state) {\n if (render) {\n if (typeof render === 'function') {\n if (process.env.NODE_ENV !== 'production') {\n warnIfRenderPropLooksLikeComponent(render);\n }\n return render(props, state);\n }\n const mergedProps = mergeProps(props, render.props);\n mergedProps.ref = props.ref;\n let newElement = render;\n // Workaround for https://github.com/react/react/issues/32392\n // This works because the toArray() logic unwrap lazy element type in\n // https://github.com/react/react/blob/a0566250b210499b4c5677f5ac2eedbd71d51a1b/packages/react/src/ReactChildren.js#L186\n if (newElement?.$$typeof === REACT_LAZY_TYPE) {\n const children = React.Children.toArray(render);\n newElement = children[0];\n }\n\n // There is a high number of indirections, the error message thrown by React.cloneElement() is\n // hard to use for developers, this logic provides a better context.\n //\n // Our general guideline is to never change the control flow depending on the environment.\n // However, React.cloneElement() throws if React.isValidElement() is false,\n // so we can throw before with custom message.\n if (process.env.NODE_ENV !== 'production') {\n if (! /*#__PURE__*/React.isValidElement(newElement)) {\n // TODO: fix mui/no-guarded-throw\n // eslint-disable-next-line mui/no-guarded-throw\n throw new Error(['Base UI: The `render` prop was provided an invalid React element as `React.isValidElement(render)` is `false`.', 'A valid React element must be provided to the `render` prop because it is cloned with props to replace the default element.', 'https://base-ui.com/r/invalid-render-prop'].join('\\n'));\n }\n }\n return /*#__PURE__*/React.cloneElement(newElement, mergedProps);\n }\n if (element) {\n if (typeof element === 'string') {\n return renderTag(element, props);\n }\n }\n // Unreachable, but the typings on `useRenderElement` need to be reworked\n // to annotate it correctly.\n throw new Error(process.env.NODE_ENV !== \"production\" ? 'Base UI: Render element or function are not defined.' : _formatErrorMessage(8));\n}\nfunction warnIfRenderPropLooksLikeComponent(renderFn) {\n const functionName = renderFn.name;\n if (functionName.length === 0) {\n return;\n }\n if (!COMPONENT_IDENTIFIER_PATTERN.test(functionName)) {\n return;\n }\n if (!LOWERCASE_CHARACTER_PATTERN.test(functionName)) {\n return;\n }\n warn(`The \\`render\\` prop received a function named \\`${functionName}\\` that starts with an uppercase letter.`, 'This usually means a React component was passed directly as `render={Component}`.', 'Base UI calls `render` as a plain function, which can break the Rules of Hooks during reconciliation.', 'If this is an intentional render callback, rename it to start with a lowercase letter.', 'Use `render={<Component />}` or `render={(props) => <Component {...props} />}` instead.', 'https://base-ui.com/r/invalid-render-prop');\n}\nfunction renderTag(Tag, props) {\n if (Tag === 'button') {\n return /*#__PURE__*/_createElement(\"button\", {\n type: \"button\",\n ...props,\n key: props.key\n });\n }\n if (Tag === 'img') {\n return /*#__PURE__*/_createElement(\"img\", {\n alt: \"\",\n ...props,\n key: props.key\n });\n }\n return /*#__PURE__*/React.createElement(Tag, props);\n}","'use client';\n\nimport * as React from 'react';\nimport { EMPTY_ARRAY } from \"./empty.mjs\";\n\n/**\n * A React.useEffect equivalent that runs once, when the component is mounted.\n */\nexport function useOnMount(fn) {\n // TODO: uncomment once we enable eslint-plugin-react-compiler // eslint-disable-next-line react-compiler/react-compiler -- no need to put `fn` in the dependency array\n /* eslint-disable react-hooks/exhaustive-deps */\n React.useEffect(fn, EMPTY_ARRAY);\n /* eslint-enable react-hooks/exhaustive-deps */\n}","'use client';\n\nimport { useRefWithInit } from \"./useRefWithInit.mjs\";\nimport { useOnMount } from \"./useOnMount.mjs\";\nconst EMPTY = 0;\nexport class Timeout {\n static create() {\n return new Timeout();\n }\n currentId = EMPTY;\n\n /**\n * Executes `fn` after `delay`, clearing any previously scheduled call.\n */\n start(delay, fn) {\n this.clear();\n this.currentId = setTimeout(() => {\n this.currentId = EMPTY;\n fn();\n }, delay); /* Node.js types are enabled in development */\n }\n isStarted() {\n return this.currentId !== EMPTY;\n }\n clear = () => {\n if (this.currentId !== EMPTY) {\n clearTimeout(this.currentId);\n this.currentId = EMPTY;\n }\n };\n disposeEffect = () => {\n return this.clear;\n };\n}\n\n/**\n * A `setTimeout` with automatic cleanup and guard.\n */\nexport function useTimeout() {\n const timeout = useRefWithInit(Timeout.create).current;\n useOnMount(timeout.disposeEffect);\n return timeout;\n}","/**\n * Combines the field's client-side, stateful validity data with the external invalid state to\n * determine the field's true validity.\n */\nexport function getCombinedFieldValidityData(validityData, invalid) {\n return {\n ...validityData,\n state: {\n ...validityData.state,\n valid: !invalid && validityData.state.valid\n }\n };\n}","'use client';\n\nimport * as React from 'react';\nimport { EMPTY_OBJECT } from '@base-ui/utils/empty';\nimport { useTimeout } from '@base-ui/utils/useTimeout';\nimport { useStableCallback } from '@base-ui/utils/useStableCallback';\nimport { useRefWithInit } from '@base-ui/utils/useRefWithInit';\nimport { useLabelableContext } from \"../../internals/labelable-provider/LabelableContext.mjs\";\nimport { mergeProps } from \"../../merge-props/index.mjs\";\nimport { DEFAULT_VALIDITY_STATE } from \"../../internals/field-constants/constants.mjs\";\nimport { useFormContext } from \"../../internals/form-context/FormContext.mjs\";\nimport { getCombinedFieldValidityData } from \"../utils/getCombinedFieldValidityData.mjs\";\nconst validityKeys = Object.keys(DEFAULT_VALIDITY_STATE);\n/**\n * Whether an input participates in the surrounding Base UI Form. Inputs that are effectively\n * disabled, or whose `form` attribute explicitly associates them with another form, are excluded.\n * DOM position only matters when it associates the input with a different form. Otherwise, field\n * registration is context-driven, so portaled inputs (for example inside a dialog) still belong to\n * the form for both validation and values projected into `onFormSubmit`.\n */\nexport function isEligibleInput(input, formElement) {\n if (input.matches(':disabled')) {\n return false;\n }\n if (!formElement || input.form === formElement) {\n return true;\n }\n\n // React context crosses portal boundaries. An unassociated portaled input still participates in\n // contextual validation, unless an explicit `form` attribute opts it out of the surrounding Form.\n return input.form === null && !input.hasAttribute('form');\n}\n\n/**\n * Picks the input whose native validity should represent a field that owns several inputs (such as a\n * checkbox or radio group). Prefers the first eligible currently-invalid input, where \"first\" follows\n * registration order (mount order), and otherwise returns the first eligible input.\n */\nfunction findRepresentativeInput(inputs, formElement) {\n let fallback = null;\n for (const input of inputs.keys()) {\n if (!isEligibleInput(input, formElement)) {\n continue;\n }\n if (!input.validity.valid) {\n return input;\n }\n fallback ??= input;\n }\n return fallback;\n}\nfunction clearCustomValidity(element, inputs) {\n for (const input of inputs.keys()) {\n input.setCustomValidity('');\n }\n element?.setCustomValidity('');\n}\nexport function useFieldValidation(params) {\n const {\n elementRef,\n formRef\n } = useFormContext();\n const {\n setValidityData,\n validate,\n validityData,\n validationDebounceTime,\n invalid,\n markedDirtyRef,\n state,\n shouldValidateOnChange,\n registeredFieldIdRef\n } = params;\n const {\n controlId,\n getDescriptionProps\n } = useLabelableContext();\n const timeout = useTimeout();\n const inputRef = React.useRef(null);\n const registeredInputs = useRefWithInit(() => new Map()).current;\n const validationCommitIdRef = React.useRef(0);\n\n // Groups register several inputs against a single field so focus, validation, and form-value\n // projection can use the same live controls. This also ensures a `required` checkbox can't be\n // satisfied by another input in the group, matching native per-checkbox behavior.\n const registerInput = React.useCallback((element, registration) => {\n registeredInputs.set(element, registration);\n return () => {\n registeredInputs.delete(element);\n };\n }, [registeredInputs]);\n const getInputControl = useStableCallback(() => {\n const element = findRepresentativeInput(registeredInputs, elementRef.current);\n return element && registeredInputs.get(element)?.controlRef.current || null;\n });\n const commit = useStableCallback(async (value, revalidate = false) => {\n validationCommitIdRef.current += 1;\n const validationCommitId = validationCommitIdRef.current;\n function updateRegisteredFieldValidity(nextValidityData, externalInvalid = invalid) {\n const fieldId = registeredFieldIdRef.current ?? controlId;\n if (fieldId == null) {\n return;\n }\n const currentFieldData = formRef.current.fields.get(fieldId);\n if (!currentFieldData) {\n return;\n }\n const validityDataWithFormErrors = getCombinedFieldValidityData(nextValidityData, externalInvalid);\n formRef.current.fields.set(fieldId, {\n ...currentFieldData,\n validityData: validityDataWithFormErrors\n });\n }\n function publishAllValid(input, externalInvalid) {\n const nextValidityData = {\n value,\n state: {\n ...DEFAULT_VALIDITY_STATE,\n valid: true\n },\n error: '',\n errors: [],\n initialValue: validityData.initialValue\n };\n clearCustomValidity(input, registeredInputs);\n updateRegisteredFieldValidity(nextValidityData, externalInvalid);\n setValidityData(nextValidityData);\n }\n\n // A field can own several inputs (such as a checkbox or radio group), but only the last-mounted\n // one wins the shared `inputRef`. Validate against the registry instead so every input counts;\n // `inputRef` is the fallback only when no inputs are registered.\n const element = registeredInputs.size > 0 ? findRepresentativeInput(registeredInputs, elementRef.current) : inputRef.current;\n // A field with no eligible input has no native constraint, but its custom validator still\n // applies to the logical value at the configured validation boundary.\n\n if (revalidate) {\n if (state.valid !== false || !element) {\n return;\n }\n const currentNativeValidity = element.validity;\n if (!currentNativeValidity.valueMissing) {\n // The 'valueMissing' (required) condition has been resolved by the user typing.\n // Temporarily mark the field as valid for this onChange event.\n // Other native errors (e.g., typeMismatch) will be caught by full validation on blur or submit.\n // The required value is now present; ignore stale external invalid state for this pass.\n publishAllValid(element, false);\n return;\n }\n\n // A stale custom error can coexist with valueMissing, but defer any other native errors.\n for (const key of validityKeys) {\n if (key !== 'valid' && key !== 'valueMissing' && key !== 'customError' && currentNativeValidity[key]) {\n return;\n }\n }\n\n // Value is still missing: publish the current native state so valueMissing and the changed\n // value are observable immediately. Full custom validation still waits for its boundary.\n }\n function getState(el) {\n const computedState = validityKeys.reduce((acc, key) => {\n acc[key] = el.validity[key];\n return acc;\n }, {});\n let hasOnlyValueMissingError = false;\n for (const key of validityKeys) {\n if (key === 'valid') {\n continue;\n }\n if (key === 'valueMissing' && computedState[key]) {\n hasOnlyValueMissingError = true;\n } else if (computedState[key]) {\n return computedState;\n }\n }\n\n // Only make `valueMissing` mark the field invalid if it's been changed\n // to reduce error noise.\n if (hasOnlyValueMissingError && !markedDirtyRef.current) {\n computedState.valid = true;\n computedState.valueMissing = false;\n }\n return computedState;\n }\n timeout.clear();\n let result = null;\n let validationErrors = [];\n\n // With no representative input the field carries no native constraint, so start from an\n // all-valid native state and let the custom `validate` result below decide the outcome.\n const nextState = element ? getState(element) : {\n ...DEFAULT_VALIDITY_STATE,\n valid: true\n };\n let defaultValidationMessage;\n const isValidatingOnChange = shouldValidateOnChange();\n if (element && element.validationMessage && !isValidatingOnChange) {\n // not validating on change, if there is a `validationMessage` from\n // native validity, set errors and skip calling the custom validate fn\n defaultValidationMessage = element.validationMessage;\n validationErrors = [element.validationMessage];\n } else {\n // call the validate function because either\n // - validating on change, or\n // - native constraint validations passed, custom validity check is next\n const formValues = Array.from(formRef.current.fields.values()).reduce((acc, field) => {\n if (field.name) {\n acc[field.name] = field.getValue();\n }\n return acc;\n }, {});\n const resultOrPromise = validate(value, formValues);\n if (typeof resultOrPromise === 'object' && resultOrPromise !== null && 'then' in resultOrPromise) {\n result = await resultOrPromise;\n if (validationCommitId !== validationCommitIdRef.current) {\n return;\n }\n } else {\n result = resultOrPromise;\n }\n if (result !== null) {\n nextState.valid = false;\n nextState.customError = true;\n if (Array.isArray(result)) {\n validationErrors = result;\n element?.setCustomValidity(result.join('\\n'));\n } else if (result) {\n validationErrors = [result];\n element?.setCustomValidity(result);\n }\n } else if (isValidatingOnChange) {\n // validate function returned no errors, if validating on change\n // we need to clear the custom validity state\n clearCustomValidity(element, registeredInputs);\n nextState.customError = false;\n if (element && element.validationMessage) {\n defaultValidationMessage = element.validationMessage;\n validationErrors = [element.validationMessage];\n } else if ((!element || element.validity.valid) && !nextState.valid) {\n nextState.valid = true;\n }\n }\n }\n const nextValidityData = {\n value,\n state: nextState,\n error: defaultValidationMessage ?? (Array.isArray(result) ? result[0] : result ?? ''),\n errors: validationErrors,\n initialValue: validityData.initialValue\n };\n\n // Keep Form-level errors part of overall field validity for submit blocking/focus logic.\n updateRegisteredFieldValidity(nextValidityData);\n setValidityData(nextValidityData);\n });\n const change = useStableCallback(value => {\n timeout.clear();\n const validateOnChange = shouldValidateOnChange();\n if (validateOnChange && value !== '' && validationDebounceTime) {\n validationCommitIdRef.current += 1;\n timeout.start(validationDebounceTime, () => {\n commit(value);\n });\n } else {\n commit(value, !validateOnChange);\n }\n });\n const getValidationProps = React.useCallback((disabled, externalProps = {}) => mergeProps(getDescriptionProps(externalProps), state.valid === false && !state.disabled && !disabled ? {\n 'aria-invalid': true\n } : EMPTY_OBJECT), [getDescriptionProps, state.disabled, state.valid]);\n return React.useMemo(() => ({\n getValidationProps,\n inputRef,\n registeredInputs,\n registerInput,\n getInputControl,\n commit,\n change\n }), [getValidationProps, registeredInputs, registerInput, getInputControl, commit, change]);\n}","'use client';\n\nimport * as React from 'react';\nimport { useIsoLayoutEffect } from '@base-ui/utils/useIsoLayoutEffect';\nimport { useStableCallback } from '@base-ui/utils/useStableCallback';\nimport { getCombinedFieldValidityData } from \"../../field/utils/getCombinedFieldValidityData.mjs\";\nimport { useFormContext } from \"../form-context/FormContext.mjs\";\nexport function useFieldControlRegistration(params) {\n const {\n commit,\n invalid,\n markedDirtyRef,\n name,\n setRegisteredFieldName,\n registeredFieldIdRef,\n setValidityData,\n validityData\n } = params;\n const {\n formRef\n } = useFormContext();\n const activeFieldControlSourceRef = React.useRef(null);\n const registrationRef = React.useRef(null);\n const initialValueCapturedRef = React.useRef(false);\n const getValueForForm = useStableCallback(() => {\n const registration = registrationRef.current;\n if (!registration) {\n return undefined;\n }\n if (registration.getValue) {\n return registration.getValue();\n }\n return registration.value;\n });\n function getRegistrationValue(registration) {\n return registration.value === undefined ? getValueForForm() : registration.value;\n }\n const validate = useStableCallback(() => {\n const registration = registrationRef.current;\n markedDirtyRef.current = true;\n if (!registration) {\n commit(validityData.value);\n return;\n }\n commit(getRegistrationValue(registration));\n });\n function refreshRegistration() {\n const registration = registrationRef.current;\n if (!registration || !registration.id) {\n return;\n }\n formRef.current.fields.set(registration.id, {\n getValue: getValueForForm,\n name: name ?? registration.name,\n controlRef: registration.controlRef,\n validityData: getCombinedFieldValidityData(validityData, invalid),\n validate\n });\n }\n function deleteRegistration(id = registrationRef.current?.id) {\n if (id) {\n formRef.current.fields.delete(id);\n }\n }\n\n // The baseline belongs to the field, not to a control instance: registration re-runs on every\n // value change, and a control that unmounts and remounts (or is swapped for another one) comes\n // back as a brand new registration. Capturing more than once would turn whichever value the\n // control happens to hold at that point into the initial value, so a modified field would read\n // pristine and its real initial value would read dirty. Consumers that want a fresh baseline\n // remount or key `<Field.Root>` itself.\n function captureInitialValue(registration) {\n if (initialValueCapturedRef.current) {\n return;\n }\n initialValueCapturedRef.current = true;\n const initialValue = getRegistrationValue(registration);\n setValidityData(prev => prev.initialValue === initialValue ? prev : {\n ...prev,\n initialValue\n });\n }\n useIsoLayoutEffect(() => {\n const registration = registrationRef.current;\n if (!registration || !registration.id) {\n return;\n }\n setRegisteredFieldName(name ? undefined : registration.name);\n formRef.current.fields.set(registration.id, {\n getValue: getValueForForm,\n name: name ?? registration.name,\n controlRef: registration.controlRef,\n validityData: getCombinedFieldValidityData(validityData, invalid),\n validate\n });\n }, [formRef, getValueForForm, invalid, name, setRegisteredFieldName, validate, validityData]);\n useIsoLayoutEffect(() => {\n const fields = formRef.current.fields;\n return () => {\n const id = registrationRef.current?.id;\n if (id) {\n fields.delete(id);\n }\n };\n }, [formRef]);\n const register = useStableCallback((source, registration) => {\n if (!registration) {\n if (activeFieldControlSourceRef.current === source) {\n activeFieldControlSourceRef.current = null;\n deleteRegistration();\n registrationRef.current = null;\n setRegisteredFieldName(undefined);\n registeredFieldIdRef.current = undefined;\n }\n return;\n }\n const previousId = registrationRef.current?.id;\n activeFieldControlSourceRef.current = source;\n registrationRef.current = registration;\n if (!name) {\n setRegisteredFieldName(registration.name);\n }\n registeredFieldIdRef.current = registration.id;\n if (previousId && previousId !== registration.id) {\n deleteRegistration(previousId);\n }\n captureInitialValue(registration);\n refreshRegistration();\n });\n return [validate, register];\n}","'use client';\n\nimport * as React from 'react';\nimport { useIsoLayoutEffect } from '@base-ui/utils/useIsoLayoutEffect';\nimport { useStableCallback } from '@base-ui/utils/useStableCallback';\nimport { FieldRootContext } from \"../../internals/field-root-context/FieldRootContext.mjs\";\nimport { DEFAULT_VALIDITY_STATE, fieldValidityMapping } from \"../../internals/field-constants/constants.mjs\";\nimport { useFieldsetRootContext } from \"../../fieldset/root/FieldsetRootContext.mjs\";\nimport { useFormContext } from \"../../internals/form-context/FormContext.mjs\";\nimport { LabelableProvider } from \"../../internals/labelable-provider/index.mjs\";\nimport { useRenderElement } from \"../../internals/useRenderElement.mjs\";\nimport { useFieldValidation } from \"./useFieldValidation.mjs\";\nimport { useFieldControlRegistration } from \"../../internals/field-register-control/useFieldControlRegistration.mjs\";\n\n/**\n * @internal\n */\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nconst FieldRootInner = /*#__PURE__*/React.forwardRef(function FieldRootInner(componentProps, forwardedRef) {\n const {\n errors,\n validationMode: formValidationMode,\n submitAttemptedRef\n } = useFormContext();\n const {\n render,\n className,\n validate: validateProp,\n validationDebounceTime = 0,\n validationMode = formValidationMode,\n name,\n disabled: disabledProp = false,\n invalid: invalidProp,\n dirty: dirtyProp,\n touched: touchedProp,\n actionsRef,\n style,\n ...elementProps\n } = componentProps;\n const disabledFieldset = useFieldsetRootContext(true)?.disabled;\n const validate = useStableCallback(validateProp || (() => null));\n const disabled = disabledFieldset || disabledProp;\n const [touchedState, setTouchedUnwrapped] = React.useState(false);\n const [dirtyState, setDirtyUnwrapped] = React.useState(false);\n const [filled, setFilled] = React.useState(false);\n const [focused, setFocused] = React.useState(false);\n const dirty = dirtyProp ?? dirtyState;\n const touched = touchedProp ?? touchedState;\n const markedDirtyRef = React.useRef(dirty);\n const registeredFieldIdRef = React.useRef(undefined);\n const [registeredFieldName, setRegisteredFieldName] = React.useState();\n const effectiveName = name ?? registeredFieldName;\n useIsoLayoutEffect(() => {\n if (dirtyProp !== undefined) {\n markedDirtyRef.current = dirtyProp;\n }\n }, [dirtyProp]);\n const setDirty = useStableCallback(value => {\n if (dirtyProp !== undefined) {\n return;\n }\n if (value) {\n markedDirtyRef.current = true;\n }\n setDirtyUnwrapped(value);\n });\n const setTouched = useStableCallback(value => {\n if (touchedProp !== undefined) {\n return;\n }\n setTouchedUnwrapped(value);\n });\n const shouldValidateOnChange = useStableCallback(() => validationMode === 'onChange' || validationMode === 'onSubmit' && submitAttemptedRef.current);\n const formError = effectiveName && Object.hasOwn(errors, effectiveName) ? errors[effectiveName] : null;\n const hasFormError = !!(Array.isArray(formError) ? formError.length : formError);\n const invalid = invalidProp === true || hasFormError;\n const [validityData, setValidityData] = React.useState({\n state: DEFAULT_VALIDITY_STATE,\n error: '',\n errors: [],\n value: null,\n initialValue: null\n });\n\n // App-controlled invalidity (the `invalid` prop and `<Form>` errors) keeps the field marked\n // invalid even while disabled. Only computed validity (native constraints and `validate`)\n // is suppressed when disabled, matching `:disabled` not participating in constraint validation.\n const valid = !invalid && (disabled ? null : validityData.state.valid);\n const state = React.useMemo(() => ({\n disabled,\n touched,\n dirty,\n valid,\n filled,\n focused\n }), [disabled, touched, dirty, valid, filled, focused]);\n const validation = useFieldValidation({\n setValidityData,\n validate,\n validityData,\n validationDebounceTime,\n invalid,\n markedDirtyRef,\n state,\n shouldValidateOnChange,\n registeredFieldIdRef\n });\n const [validateFieldControl, registerFieldControl] = useFieldControlRegistration({\n commit: validation.commit,\n invalid,\n markedDirtyRef,\n name,\n setRegisteredFieldName,\n registeredFieldIdRef,\n setValidityData,\n validityData\n });\n React.useImperativeHandle(actionsRef, () => ({\n validate: validateFieldControl\n }), [validateFieldControl]);\n const contextValue = React.useMemo(() => ({\n invalid,\n name: effectiveName,\n validityData,\n setValidityData,\n disabled,\n setTouched,\n setDirty,\n setFilled,\n setFocused,\n validationMode,\n shouldValidateOnChange,\n state,\n registerFieldControl,\n validation\n }), [invalid, effectiveName, validityData, disabled, setTouched, setDirty, setFilled, setFocused, validationMode, shouldValidateOnChange, state, registerFieldControl, validation]);\n const element = useRenderElement('div', componentProps, {\n ref: forwardedRef,\n state,\n props: elementProps,\n stateAttributesMapping: fieldValidityMapping\n });\n return /*#__PURE__*/_jsx(FieldRootContext.Provider, {\n value: contextValue,\n children: element\n });\n});\n\n/**\n * Groups all parts of the field.\n * Renders a `<div>` element.\n *\n * Documentation: [Base UI Field](https://base-ui.com/react/components/field)\n */\nif (process.env.NODE_ENV !== \"production\") FieldRootInner.displayName = \"FieldRootInner\";\nexport const FieldRoot = /*#__PURE__*/React.forwardRef(function FieldRoot(componentProps, forwardedRef) {\n return /*#__PURE__*/_jsx(LabelableProvider, {\n children: /*#__PURE__*/_jsx(FieldRootInner, {\n ...componentProps,\n ref: forwardedRef\n })\n });\n});\nif (process.env.NODE_ENV !== \"production\") FieldRoot.displayName = \"FieldRoot\";","let set;\nif (process.env.NODE_ENV !== 'production') {\n set = new Set();\n}\nexport function error(...messages) {\n if (process.env.NODE_ENV !== 'production') {\n const messageKey = messages.join(' ');\n if (!set.has(messageKey)) {\n set.add(messageKey);\n console.error(`Base UI: ${messageKey}`);\n }\n }\n}\nexport function reset() {\n set?.clear();\n}","'use client';\n\nimport * as React from 'react';\nexport const FieldItemContext = /*#__PURE__*/React.createContext({\n disabled: false\n});\nif (process.env.NODE_ENV !== \"production\") FieldItemContext.displayName = \"FieldItemContext\";\nexport function useFieldItemContext() {\n const context = React.useContext(FieldItemContext);\n return context;\n}","'use client';\n\nimport * as React from 'react';\nimport { error } from '@base-ui/utils/error';\nimport { SafeReact } from '@base-ui/utils/safeReact';\nimport { useFieldRootContext } from \"../../internals/field-root-context/FieldRootContext.mjs\";\nimport { fieldValidityMapping } from \"../../internals/field-constants/constants.mjs\";\nimport { useRenderElement } from \"../../internals/useRenderElement.mjs\";\nimport { useLabelableContext } from \"../../internals/labelable-provider/LabelableContext.mjs\";\nimport { useLabel } from \"../../internals/labelable-provider/useLabel.mjs\";\nimport { useFieldItemContext } from \"../item/FieldItemContext.mjs\";\n\n/**\n * An accessible label that is automatically associated with the field control.\n * Renders a `<label>` element.\n *\n * Documentation: [Base UI Field](https://base-ui.com/react/components/field)\n */\nexport const FieldLabel = /*#__PURE__*/React.forwardRef(function FieldLabel(componentProps, forwardedRef) {\n const {\n render,\n className,\n style,\n id: idProp,\n nativeLabel = true,\n ...elementProps\n } = componentProps;\n const fieldRootContext = useFieldRootContext(false);\n const fieldItemContext = useFieldItemContext();\n const {\n labelId\n } = useLabelableContext();\n const state = {\n ...fieldRootContext.state,\n disabled: fieldRootContext.disabled || fieldItemContext.disabled\n };\n const labelRef = React.useRef(null);\n const labelProps = useLabel({\n id: labelId ?? idProp,\n native: nativeLabel\n });\n if (process.env.NODE_ENV !== 'production') {\n // eslint-disable-next-line react-hooks/rules-of-hooks\n React.useEffect(() => {\n if (!labelRef.current) {\n return;\n }\n const isLabelTag = labelRef.current.tagName === 'LABEL';\n if (nativeLabel) {\n if (!isLabelTag) {\n const ownerStackMessage = SafeReact.captureOwnerStack?.() || '';\n const message = '<Field.Label> expected a <label> element because the `nativeLabel` prop is true. ' + 'Rendering a non-<label> disables native label association, so `htmlFor` will not ' + 'work. Use a real <label> in the `render` prop, or set `nativeLabel` to `false`.';\n error(`${message}${ownerStackMessage}`);\n }\n } else if (isLabelTag) {\n const ownerStackMessage = SafeReact.captureOwnerStack?.() || '';\n const message = '<Field.Label> expected a non-<label> element because the `nativeLabel` prop is false. ' + 'Rendering a <label> assumes native label behavior while Base UI treats it as ' + 'non-native, which can cause unexpected pointer behavior. Use a non-<label> in the ' + '`render` prop, or set `nativeLabel` to `true`.';\n error(`${message}${ownerStackMessage}`);\n }\n }, [nativeLabel]);\n }\n const element = useRenderElement('label', componentProps, {\n ref: [forwardedRef, labelRef],\n state,\n props: [labelProps, elementProps],\n stateAttributesMapping: fieldValidityMapping\n });\n return element;\n});\nif (process.env.NODE_ENV !== \"production\") FieldLabel.displayName = \"FieldLabel\";","'use client';\n\nimport { useRefWithInit } from \"./useRefWithInit.mjs\";\nimport { useOnMount } from \"./useOnMount.mjs\";\n/** Unlike `setTimeout`, rAF doesn't guarantee a positive integer return value, so we can't have\n * a monomorphic `uint` type with `0` meaning empty.\n * See warning note at:\n * https://developer.mozilla.org/en-US/docs/Web/API/Window/requestAnimationFrame#return_value */\nconst EMPTY = null;\nlet LAST_RAF = globalThis.requestAnimationFrame;\nclass Scheduler {\n /* This implementation uses an array as a backing data-structure for frame callbacks.\n * It allows `O(1)` callback cancelling by inserting a `null` in the array, though it\n * never calls the native `cancelAnimationFrame` if there are no frames left. This can\n * be much more efficient if there is a call pattern that alterns as\n * \"request-cancel-request-cancel-…\".\n * But in the case of \"request-request-…-cancel-cancel-…\", it leaves the final animation\n * frame to run anyway. We turn that frame into a `O(1)` no-op via `callbacksCount`. */\n\n callbacks = [];\n callbacksCount = 0;\n nextId = 1;\n startId = 1;\n isScheduled = false;\n tick = timestamp => {\n this.isScheduled = false;\n const currentCallbacks = this.callbacks;\n const currentCallbacksCount = this.callbacksCount;\n\n // Update these before iterating, callbacks could call `requestAnimationFrame` again.\n this.callbacks = [];\n this.callbacksCount = 0;\n this.startId = this.nextId;\n if (currentCallbacksCount > 0) {\n for (let i = 0; i < currentCallbacks.length; i += 1) {\n currentCallbacks[i]?.(timestamp);\n }\n }\n };\n request(fn) {\n const id = this.nextId;\n this.nextId += 1;\n this.callbacks.push(fn);\n this.callbacksCount += 1;\n\n /* In a test environment with fake timers, a fake `requestAnimationFrame` can be called\n * but there's no guarantee that the animation frame will actually run before the fake\n * timers are teared, which leaves `isScheduled` set, but won't run our `tick()`. */\n const didRAFChange = process.env.NODE_ENV !== 'production' && LAST_RAF !== requestAnimationFrame && (LAST_RAF = requestAnimationFrame, true);\n if (!this.isScheduled || didRAFChange) {\n requestAnimationFrame(this.tick);\n this.isScheduled = true;\n }\n return id;\n }\n cancel(id) {\n const index = id - this.startId;\n if (index < 0 || index >= this.callbacks.length) {\n return;\n }\n this.callbacks[index] = null;\n this.callbacksCount -= 1;\n }\n}\nlet scheduler = new Scheduler();\n\n/**\n * Replaces the shared scheduler and drops all pending animation frame callbacks.\n *\n * For test environments only. The scheduler is process-global, so a callback scheduled in one test\n * but never run (e.g. requested under fake timers that were torn down before the frame fired) would\n * otherwise survive into a later test and run there against stale state. Call between tests to drop\n * such leftovers.\n */\nexport function resetAnimationFrameScheduler() {\n const previous = scheduler;\n scheduler = new Scheduler();\n // Continue the id sequence so `cancel()` calls from `AnimationFrame` instances created before the\n // reset cannot cancel callbacks scheduled after it.\n scheduler.nextId = previous.nextId;\n scheduler.startId = previous.nextId;\n // A frame requested before the reset may still be pending and holds the previous scheduler's\n // `tick`; empty its queue in place so that frame runs nothing when it eventually fires.\n previous.callbacks = [];\n previous.callbacksCount = 0;\n}\nexport class AnimationFrame {\n static create() {\n return new AnimationFrame();\n }\n static request(fn) {\n return scheduler.request(fn);\n }\n static cancel(id) {\n return scheduler.cancel(id);\n }\n currentId = EMPTY;\n\n /**\n * Executes `fn` after `delay`, clearing any previously scheduled call.\n */\n request(fn) {\n this.cancel();\n this.currentId = scheduler.request(() => {\n this.currentId = EMPTY;\n fn();\n });\n }\n cancel = () => {\n if (this.currentId !== EMPTY) {\n scheduler.cancel(this.currentId);\n this.currentId = EMPTY;\n }\n };\n disposeEffect = () => {\n return this.cancel;\n };\n}\n\n/**\n * A `requestAnimationFrame` with automatic cleanup and guard.\n */\nexport function useAnimationFrame() {\n const timeout = useRefWithInit(AnimationFrame.create).current;\n useOnMount(timeout.disposeEffect);\n return timeout;\n}","/**\n * If the provided argument is a ref object, returns its `current` value.\n * Otherwise, returns the argument itself.\n */\nexport function resolveRef(maybeRef) {\n if (maybeRef == null) {\n return maybeRef;\n }\n return 'current' in maybeRef ? maybeRef.current : maybeRef;\n}","'use client';\n\nimport * as ReactDOM from 'react-dom';\nimport { useAnimationFrame } from '@base-ui/utils/useAnimationFrame';\nimport { useStableCallback } from '@base-ui/utils/useStableCallback';\nimport { resolveRef } from \"../utils/resolveRef.mjs\";\n\n/**\n * Executes a function once all animations have finished on the provided element.\n * If an animation is canceled, waits for any replacement animations before executing.\n * @param elementOrRef - The element to watch for animations.\n * @param waitForStartingStyleRemoved - Whether to wait for [data-starting-style] to be removed before checking for animations.\n * @returns A function that takes a callback to execute once all animations have finished, and an optional AbortSignal to abort the callback\n */\nexport function useAnimationsFinished(elementOrRef, waitForStartingStyleRemoved = false) {\n const frame = useAnimationFrame();\n return useStableCallback((fnToExecute,\n /**\n * An optional [AbortSignal](https://developer.mozilla.org/en-US/docs/Web/API/AbortSignal) that\n * can be used to abort `fnToExecute` before all the animations have finished.\n * @default null\n */\n signal = null) => {\n frame.cancel();\n const element = resolveRef(elementOrRef);\n if (element == null) {\n return;\n }\n const resolvedElement = element;\n const done = () => {\n // Synchronously flush the unmounting of the component so that the browser doesn't\n // paint: https://github.com/mui/base-ui/issues/979\n ReactDOM.flushSync(fnToExecute);\n };\n if (typeof resolvedElement.getAnimations !== 'function' || globalThis.BASE_UI_ANIMATIONS_DISABLED) {\n fnToExecute();\n return;\n }\n function exec() {\n Promise.all(resolvedElement.getAnimations().map(animation => animation.finished)).then(() => {\n if (!signal?.aborted) {\n done();\n }\n }, () => {\n if (signal?.aborted) {\n return;\n }\n const currentAnimations = resolvedElement.getAnimations();\n if (currentAnimations.some(animation => animation.pending || animation.playState !== 'finished')) {\n // Sometimes animations can be aborted because a property they depend on changes while the animation plays.\n // In such cases, we need to re-check if any new animations have started.\n exec();\n return;\n }\n done();\n });\n }\n if (waitForStartingStyleRemoved) {\n const startingStyleAttribute = 'data-starting-style';\n\n // If `[data-starting-style]` isn't present, fall back to waiting one more frame\n // to give \"open\" animations a chance to be registered.\n if (!resolvedElement.hasAttribute(startingStyleAttribute)) {\n frame.request(exec);\n return;\n }\n\n // Wait for `[data-starting-style]` to have been removed.\n const attributeObserver = new MutationObserver(() => {\n if (!resolvedElement.hasAttribute(startingStyleAttribute)) {\n attributeObserver.disconnect();\n exec();\n }\n });\n attributeObserver.observe(resolvedElement, {\n attributes: true,\n attributeFilter: [startingStyleAttribute]\n });\n signal?.addEventListener('abort', () => attributeObserver.disconnect(), {\n once: true\n });\n return;\n }\n frame.request(exec);\n });\n}","'use client';\n\nimport * as React from 'react';\nimport { useStableCallback } from '@base-ui/utils/useStableCallback';\nimport { useAnimationsFinished } from \"./useAnimationsFinished.mjs\";\n\n/**\n * Calls the provided function when the CSS open/close animation or transition completes.\n */\nexport function useOpenChangeComplete(parameters) {\n const {\n enabled = true,\n open,\n ref,\n onComplete: onCompleteParam\n } = parameters;\n const onComplete = useStableCallback(onCompleteParam);\n const runOnceAnimationsFinish = useAnimationsFinished(ref, open);\n React.useEffect(() => {\n if (!enabled) {\n return undefined;\n }\n const abortController = new AbortController();\n runOnceAnimationsFinish(onComplete, abortController.signal);\n return () => {\n abortController.abort();\n };\n }, [enabled, open, onComplete, runOnceAnimationsFinish]);\n}","export let TransitionStatusDataAttributes = /*#__PURE__*/function (TransitionStatusDataAttributes) {\n /**\n * Present when the component begins animating in.\n */\n TransitionStatusDataAttributes[\"startingStyle\"] = \"data-starting-style\";\n /**\n * Present when the component is animating out.\n */\n TransitionStatusDataAttributes[\"endingStyle\"] = \"data-ending-style\";\n return TransitionStatusDataAttributes;\n}({});\nconst STARTING_HOOK = {\n 'data-starting-style': ''\n};\nconst ENDING_HOOK = {\n 'data-ending-style': ''\n};\nexport const transitionStatusMapping = {\n transitionStatus(value) {\n if (value === 'starting') {\n return STARTING_HOOK;\n }\n if (value === 'ending') {\n return ENDING_HOOK;\n }\n return null;\n }\n};","'use client';\n\nimport * as React from 'react';\nimport { useIsoLayoutEffect } from '@base-ui/utils/useIsoLayoutEffect';\nimport { AnimationFrame } from '@base-ui/utils/useAnimationFrame';\n/**\n * Provides a status string for CSS animations.\n * @param open - a boolean that determines if the element is open.\n * @param enableIdleState - a boolean that enables the `'idle'` state between `'starting'` and `'ending'`\n */\nexport function useTransitionStatus(open, enableIdleState = false, deferEndingState = false) {\n const [transitionStatus, setTransitionStatus] = React.useState(open && enableIdleState ? 'idle' : undefined);\n const [mounted, setMounted] = React.useState(open);\n if (open && !mounted) {\n setMounted(true);\n setTransitionStatus('starting');\n }\n if (!open && mounted && transitionStatus !== 'ending' && !deferEndingState) {\n setTransitionStatus('ending');\n }\n if (!open && !mounted && transitionStatus === 'ending') {\n setTransitionStatus(undefined);\n }\n useIsoLayoutEffect(() => {\n if (!open && mounted && transitionStatus !== 'ending' && deferEndingState) {\n const frame = AnimationFrame.request(() => {\n setTransitionStatus('ending');\n });\n return () => {\n AnimationFrame.cancel(frame);\n };\n }\n return undefined;\n }, [open, mounted, transitionStatus, deferEndingState]);\n useIsoLayoutEffect(() => {\n if (!open || enableIdleState) {\n return undefined;\n }\n const frame = AnimationFrame.request(() => {\n // Avoid `flushSync` here due to Firefox.\n // See https://github.com/mui/base-ui/pull/3424\n setTransitionStatus(undefined);\n });\n return () => {\n AnimationFrame.cancel(frame);\n };\n }, [enableIdleState, open]);\n useIsoLayoutEffect(() => {\n if (!open || !enableIdleState) {\n return undefined;\n }\n if (open && mounted && transitionStatus !== 'idle') {\n setTransitionStatus('starting');\n }\n const frame = AnimationFrame.request(() => {\n setTransitionStatus('idle');\n });\n return () => {\n AnimationFrame.cancel(frame);\n };\n }, [enableIdleState, open, mounted, transitionStatus]);\n return {\n mounted,\n setMounted,\n transitionStatus\n };\n}","'use client';\n\nimport * as React from 'react';\nimport { useIsoLayoutEffect } from '@base-ui/utils/useIsoLayoutEffect';\nimport { useFieldRootContext } from \"../../internals/field-root-context/FieldRootContext.mjs\";\nimport { useLabelableContext } from \"../../internals/labelable-provider/LabelableContext.mjs\";\nimport { fieldValidityMapping } from \"../../internals/field-constants/constants.mjs\";\nimport { useBaseUiId } from \"../../internals/useBaseUiId.mjs\";\nimport { useRenderElement } from \"../../internals/useRenderElement.mjs\";\nimport { useFieldItemContext } from \"../item/FieldItemContext.mjs\";\n\n/**\n * A paragraph with additional information about the field.\n * Renders a `<p>` element.\n *\n * Documentation: [Base UI Field](https://base-ui.com/react/components/field)\n */\nexport const FieldDescription = /*#__PURE__*/React.forwardRef(function FieldDescription(componentProps, forwardedRef) {\n const {\n render,\n id: idProp,\n className,\n style,\n ...elementProps\n } = componentProps;\n const id = useBaseUiId(idProp);\n const fieldRootContext = useFieldRootContext(false);\n const fieldItemContext = useFieldItemContext();\n const {\n setMessageIds\n } = useLabelableContext();\n const state = {\n ...fieldRootContext.state,\n disabled: fieldRootContext.disabled || fieldItemContext.disabled\n };\n useIsoLayoutEffect(() => {\n if (!id) {\n return undefined;\n }\n setMessageIds(v => v.concat(id));\n return () => {\n setMessageIds(v => v.filter(item => item !== id));\n };\n }, [id, setMessageIds]);\n const element = useRenderElement('p', componentProps, {\n ref: forwardedRef,\n state,\n props: [{\n id\n }, elementProps],\n stateAttributesMapping: fieldValidityMapping\n });\n return element;\n});\nif (process.env.NODE_ENV !== \"production\") FieldDescription.displayName = \"FieldDescription\";","'use client';\n\n// TODO: uncomment once we enable eslint-plugin-react-compiler // eslint-disable-next-line react-compiler/react-compiler -- process.env never changes, dependency arrays are intentionally ignored\n/* eslint-disable react-hooks/rules-of-hooks, react-hooks/exhaustive-deps */\nimport * as React from 'react';\nimport { error } from \"./error.mjs\";\nexport function useControlled({\n controlled,\n default: defaultProp,\n name,\n state = 'value'\n}) {\n // isControlled is ignored in the hook dependency lists as it should never change.\n const {\n current: isControlled\n } = React.useRef(controlled !== undefined);\n const [valueState, setValue] = React.useState(defaultProp);\n const value = isControlled ? controlled : valueState;\n if (process.env.NODE_ENV !== 'production') {\n React.useEffect(() => {\n if (isControlled !== (controlled !== undefined)) {\n error([`A component is changing the ${isControlled ? '' : 'un'}controlled ${state} state of ${name} to be ${isControlled ? 'un' : ''}controlled.`, 'Elements should not switch from uncontrolled to controlled (or vice versa).', `Decide between using a controlled or uncontrolled ${name} ` + 'element for the lifetime of the component.', \"The nature of the state is determined during the first render. It's considered controlled if the value is not `undefined`.\", 'More info: https://fb.me/react-controlled-components'].join('\\n'));\n }\n }, [state, name, controlled]);\n const {\n current: defaultValue\n } = React.useRef(defaultProp);\n React.useEffect(() => {\n if (!isControlled && serializeToDevModeString(defaultValue) !== serializeToDevModeString(defaultProp)) {\n error([`A component is changing the default ${state} state of an uncontrolled ${name} after being initialized. ` + `To suppress this warning opt to use a controlled ${name}.`].join('\\n'));\n }\n }, [defaultProp]);\n }\n const setValueIfUncontrolled = React.useCallback(newValue => {\n if (!isControlled) {\n setValue(newValue);\n }\n }, []);\n return [value, setValueIfUncontrolled];\n}\nfunction serializeToDevModeString(input) {\n let nextId = 0;\n const seen = new WeakMap();\n try {\n const result = JSON.stringify(input, function replacer(key, value) {\n if (key === '_owner' && this != null && typeof this === 'object' && '$$typeof' in this) {\n return undefined;\n }\n if (typeof value === 'bigint') {\n return `__bigint__:${value}`;\n }\n if (value !== null && typeof value === 'object') {\n const id = seen.get(value);\n if (id !== undefined) {\n return `__object__:${id}`;\n }\n seen.set(value, nextId);\n nextId += 1;\n }\n return value;\n });\n return result ?? `__top__:${typeof input}`;\n } catch {\n return '__unserializable__';\n }\n}","'use client';\n\nimport { useIsoLayoutEffect } from '@base-ui/utils/useIsoLayoutEffect';\nimport { useRefWithInit } from '@base-ui/utils/useRefWithInit';\nimport { useFieldRootContext } from \"../field-root-context/FieldRootContext.mjs\";\nexport function useRegisterFieldControl(controlRef, id, value, getFormValueOverride, enabled = true, name) {\n const {\n registerFieldControl\n } = useFieldRootContext();\n const sourceRef = useRefWithInit(() => Symbol());\n\n // Re-register without unregistering first: re-registration with the same id updates the\n // form's fields Map entry in place, while a delete + re-add would move the field to the\n // end of the Map every time its value changes.\n useIsoLayoutEffect(() => {\n const source = sourceRef.current;\n if (!enabled) {\n registerFieldControl(source, undefined);\n return;\n }\n const registration = {\n controlRef,\n getValue: getFormValueOverride,\n id,\n name,\n value\n };\n registerFieldControl(source, registration);\n }, [controlRef, enabled, getFormValueOverride, id, name, registerFieldControl, sourceRef, value]);\n useIsoLayoutEffect(() => {\n const source = sourceRef.current;\n return () => {\n registerFieldControl(source, undefined);\n };\n }, [registerFieldControl, sourceRef]);\n}","export const none = 'none';\nexport const triggerPress = 'trigger-press';\nexport const triggerHover = 'trigger-hover';\nexport const triggerFocus = 'trigger-focus';\nexport const outsidePress = 'outside-press';\nexport const itemPress = 'item-press';\nexport const closePress = 'close-press';\nexport const linkPress = 'link-press';\nexport const clearPress = 'clear-press';\nexport const chipRemovePress = 'chip-remove-press';\nexport const trackPress = 'track-press';\nexport const incrementPress = 'increment-press';\nexport const decrementPress = 'decrement-press';\nexport const inputChange = 'input-change';\nexport const inputClear = 'input-clear';\nexport const inputBlur = 'input-blur';\nexport const inputPaste = 'input-paste';\nexport const inputPress = 'input-press';\nexport const focusOut = 'focus-out';\nexport const escapeKey = 'escape-key';\nexport const closeWatcher = 'close-watcher';\nexport const listNavigation = 'list-navigation';\nexport const keyboard = 'keyboard';\nexport const pointer = 'pointer';\nexport const drag = 'drag';\nexport const wheel = 'wheel';\nexport const scrub = 'scrub';\nexport const cancelOpen = 'cancel-open';\nexport const siblingOpen = 'sibling-open';\nexport const disabled = 'disabled';\nexport const missing = 'missing';\nexport const initial = 'initial';\nexport const imperativeAction = 'imperative-action';\nexport const swipe = 'swipe';\nexport const windowResize = 'window-resize';","import { EMPTY_OBJECT } from '@base-ui/utils/empty';\nimport { REASONS } from \"./reasons.mjs\";\n\n/**\n * Maps a change `reason` string to the corresponding native event type.\n */\n\n/**\n * Details of custom change events emitted by Base UI components.\n */\n\n/**\n * Details of custom generic events emitted by Base UI components.\n */\n\n/**\n * Creates a Base UI event details object with the given reason and utilities\n * for preventing Base UI's internal event handling.\n */\nexport function createChangeEventDetails(reason, event, trigger, customProperties) {\n let canceled = false;\n let allowPropagation = false;\n const custom = customProperties ?? EMPTY_OBJECT;\n const details = {\n reason,\n event: event ?? new Event('base-ui'),\n cancel() {\n canceled = true;\n },\n allowPropagation() {\n allowPropagation = true;\n },\n get isCanceled() {\n return canceled;\n },\n get isPropagationAllowed() {\n return allowPropagation;\n },\n trigger,\n ...custom\n };\n return details;\n}\nexport function createGenericEventDetails(reason, event, customProperties) {\n const custom = customProperties ?? EMPTY_OBJECT;\n const details = {\n reason,\n event: event ?? new Event('base-ui'),\n ...custom\n };\n return details;\n}","'use client';\n\nimport * as React from 'react';\nimport { useFieldRootContext } from \"../../internals/field-root-context/FieldRootContext.mjs\";\nimport { fieldValidityMapping } from \"../../internals/field-constants/constants.mjs\";\nimport { useRenderElement } from \"../../internals/useRenderElement.mjs\";\nimport { FieldItemContext } from \"./FieldItemContext.mjs\";\nimport { LabelableProvider } from \"../../internals/labelable-provider/index.mjs\";\n\n/**\n * Groups individual items in a checkbox group or radio group with a label and description.\n * Renders a `<div>` element.\n *\n * Documentation: [Base UI Field](https://base-ui.com/react/components/field)\n */\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nexport const FieldItem = /*#__PURE__*/React.forwardRef(function FieldItem(componentProps, forwardedRef) {\n const {\n render,\n className,\n style,\n disabled: disabledProp = false,\n ...elementProps\n } = componentProps;\n const {\n state: fieldState,\n disabled: rootDisabled\n } = useFieldRootContext(false);\n const disabled = rootDisabled || disabledProp;\n const state = {\n ...fieldState,\n disabled\n };\n const fieldItemContext = React.useMemo(() => ({\n disabled\n }), [disabled]);\n const element = useRenderElement('div', componentProps, {\n ref: forwardedRef,\n state,\n props: elementProps,\n stateAttributesMapping: fieldValidityMapping\n });\n return /*#__PURE__*/_jsx(LabelableProvider, {\n children: /*#__PURE__*/_jsx(FieldItemContext.Provider, {\n value: fieldItemContext,\n children: element\n })\n });\n});\nif (process.env.NODE_ENV !== \"production\") FieldItem.displayName = \"FieldItem\";","const visuallyHiddenBase = {\n clipPath: 'inset(50%)',\n overflow: 'hidden',\n whiteSpace: 'nowrap',\n border: 0,\n padding: 0,\n width: 1,\n height: 1,\n margin: -1\n};\nexport const visuallyHidden = {\n ...visuallyHiddenBase,\n position: 'fixed',\n top: 0,\n left: 0\n};\nexport const visuallyHiddenInput = {\n ...visuallyHiddenBase,\n position: 'absolute'\n};","import { transitionStatusMapping } from \"../../internals/stateAttributesMapping.mjs\";\nimport { fieldValidityMapping } from \"../../internals/field-constants/constants.mjs\";\nexport const stateAttributesMapping = {\n checked(value) {\n if (value) {\n return {\n 'data-checked': ''\n };\n }\n return {\n 'data-unchecked': ''\n };\n },\n ...transitionStatusMapping,\n ...fieldValidityMapping\n};","import { ownerWindow } from '@base-ui/utils/owner';\n/**\n * Dispatches a constructed click on the target so it carries the source event's\n * modifier state, which `click()` always reports as unpressed. Like `click()`,\n * the untrusted click still runs native activation behavior (form submission,\n * link navigation).\n * `detail` defaults to 0 (the native convention for keyboard-generated clicks);\n * pass `detail: 1` when the click represents a mouse gesture so consumers keying\n * off `detail === 0` don't classify it as a keyboard activation.\n */\nexport function dispatchClickWithModifiers(target, sourceEvent, {\n detail = 0\n} = {}) {\n target.dispatchEvent(new (ownerWindow(target).PointerEvent)('click', {\n bubbles: true,\n cancelable: true,\n composed: true,\n detail,\n shiftKey: sourceEvent.shiftKey,\n ctrlKey: sourceEvent.ctrlKey,\n altKey: sourceEvent.altKey,\n metaKey: sourceEvent.metaKey\n }));\n}","'use client';\n\nimport _formatErrorMessage from \"@base-ui/utils/formatErrorMessage\";\nimport * as React from 'react';\nexport const CompositeRootContext = /*#__PURE__*/React.createContext(undefined);\nif (process.env.NODE_ENV !== \"production\") CompositeRootContext.displayName = \"CompositeRootContext\";\nexport function useCompositeRootContext(optional = false) {\n const context = React.useContext(CompositeRootContext);\n if (context === undefined && !optional) {\n throw new Error(process.env.NODE_ENV !== \"production\" ? 'Base UI: CompositeRootContext is missing. Composite parts must be placed within <Composite.Root>.' : _formatErrorMessage(16));\n }\n return context;\n}","'use client';\n\nimport * as React from 'react';\nexport function useFocusableWhenDisabled(parameters) {\n const {\n focusableWhenDisabled,\n disabled,\n composite = false,\n tabIndex: tabIndexProp = 0,\n isNativeButton\n } = parameters;\n const isFocusableComposite = composite && focusableWhenDisabled !== false;\n const isNonFocusableComposite = composite && focusableWhenDisabled === false;\n\n // we can't explicitly assign `undefined` to any of these props because it\n // would otherwise prevent subsequently merged props from setting them\n const props = React.useMemo(() => {\n const additionalProps = {\n // allow Tabbing away from focusableWhenDisabled elements\n onKeyDown(event) {\n if (disabled && focusableWhenDisabled && event.key !== 'Tab') {\n event.preventDefault();\n }\n }\n };\n if (!composite) {\n additionalProps.tabIndex = tabIndexProp;\n if (!isNativeButton && disabled) {\n additionalProps.tabIndex = focusableWhenDisabled ? tabIndexProp : -1;\n }\n }\n if (isNativeButton && (focusableWhenDisabled || isFocusableComposite) || !isNativeButton && disabled) {\n additionalProps['aria-disabled'] = disabled;\n }\n if (isNativeButton && (!focusableWhenDisabled || isNonFocusableComposite)) {\n additionalProps.disabled = disabled;\n }\n return additionalProps;\n }, [composite, disabled, focusableWhenDisabled, isFocusableComposite, isNonFocusableComposite, isNativeButton, tabIndexProp]);\n return {\n props\n };\n}","'use client';\n\nimport * as React from 'react';\nimport { isHTMLElement } from '@floating-ui/utils/dom';\nimport { useStableCallback } from '@base-ui/utils/useStableCallback';\nimport { error } from '@base-ui/utils/error';\nimport { SafeReact } from '@base-ui/utils/safeReact';\nimport { useIsoLayoutEffect } from '@base-ui/utils/useIsoLayoutEffect';\nimport { makeEventPreventable, mergeProps } from \"../../merge-props/index.mjs\";\nimport { useCompositeRootContext } from \"../composite/root/CompositeRootContext.mjs\";\nimport { useFocusableWhenDisabled } from \"../../utils/useFocusableWhenDisabled.mjs\";\nimport { dispatchClickWithModifiers } from \"../../utils/dispatchClickWithModifiers.mjs\";\nexport function useButton(parameters = {}) {\n const {\n disabled = false,\n focusableWhenDisabled,\n tabIndex = 0,\n native: isNativeButton = true,\n composite: compositeProp\n } = parameters;\n const elementRef = React.useRef(null);\n const compositeRootContext = useCompositeRootContext(true);\n const isCompositeItem = compositeProp ?? compositeRootContext !== undefined;\n const {\n props: focusableWhenDisabledProps\n } = useFocusableWhenDisabled({\n focusableWhenDisabled,\n disabled,\n composite: isCompositeItem,\n tabIndex,\n isNativeButton\n });\n if (process.env.NODE_ENV !== 'production') {\n // eslint-disable-next-line react-hooks/rules-of-hooks\n React.useEffect(() => {\n if (!elementRef.current) {\n return;\n }\n const isButtonTag = isButtonElement(elementRef.current);\n if (isNativeButton) {\n if (!isButtonTag) {\n const ownerStackMessage = SafeReact.captureOwnerStack?.() || '';\n const message = 'A component that acts as a button expected a native <button> because the ' + '`nativeButton` prop is true. Rendering a non-<button> removes native button ' + 'semantics, which can impact forms and accessibility. Use a real <button> in the ' + '`render` prop, or set `nativeButton` to `false`.';\n error(`${message}${ownerStackMessage}`);\n }\n } else if (isButtonTag) {\n const ownerStackMessage = SafeReact.captureOwnerStack?.() || '';\n const message = 'A component that acts as a button expected a non-<button> because the `nativeButton` ' + 'prop is false. Rendering a <button> keeps native behavior while Base UI applies ' + 'non-native attributes and handlers, which can add unintended extra attributes (such ' + 'as `role` or `aria-disabled`). Use a non-<button> in the `render` prop, or set ' + '`nativeButton` to `true`.';\n error(`${message}${ownerStackMessage}`);\n }\n }, [isNativeButton]);\n }\n\n // handles a disabled composite button rendering another button, e.g.\n // <Toolbar.Button disabled render={<Menu.Trigger />} />\n // the `disabled` prop needs to pass through 2 `useButton`s then finally\n // delete the `disabled` attribute from DOM\n const updateDisabled = React.useCallback(() => {\n const element = elementRef.current;\n if (!isButtonElement(element)) {\n return;\n }\n if (isCompositeItem && disabled && focusableWhenDisabledProps.disabled === undefined && element.disabled) {\n element.disabled = false;\n }\n }, [disabled, focusableWhenDisabledProps.disabled, isCompositeItem]);\n useIsoLayoutEffect(updateDisabled, [updateDisabled]);\n const getButtonProps = React.useCallback((externalProps = {}) => {\n const {\n onClick: externalOnClick,\n onMouseDown: externalOnMouseDown,\n onKeyUp: externalOnKeyUp,\n onKeyDown: externalOnKeyDown,\n onPointerDown: externalOnPointerDown,\n ...otherExternalProps\n } = externalProps;\n return mergeProps({\n onClick(event) {\n if (disabled) {\n event.preventDefault();\n return;\n }\n externalOnClick?.(event);\n },\n onMouseDown(event) {\n if (!disabled) {\n externalOnMouseDown?.(event);\n }\n },\n onKeyDown(event) {\n if (disabled) {\n return;\n }\n makeEventPreventable(event);\n externalOnKeyDown?.(event);\n if (event.baseUIHandlerPrevented) {\n return;\n }\n const isCurrentTarget = event.target === event.currentTarget;\n const currentTarget = event.currentTarget;\n const isButton = isButtonElement(currentTarget);\n const isLink = !isNativeButton && isValidLinkElement(currentTarget);\n const shouldClick = isCurrentTarget && (isNativeButton ? isButton : !isLink);\n const isEnterKey = event.key === 'Enter';\n const isSpaceKey = event.key === ' ';\n const role = currentTarget.getAttribute('role');\n const isTextNavigationRole = role?.startsWith('menuitem') || role === 'option' || role === 'gridcell';\n if (isCurrentTarget && isCompositeItem && isSpaceKey) {\n if (event.defaultPrevented && isTextNavigationRole) {\n return;\n }\n event.preventDefault();\n\n // Only a native-mode item that isn't a real <button> is excluded.\n if (!isNativeButton || isButton) {\n event.preventBaseUIHandler();\n dispatchClickWithModifiers(currentTarget, event);\n }\n return;\n }\n\n // Keyboard accessibility for native and non-native elements.\n if (!shouldClick || isNativeButton || !isSpaceKey && !isEnterKey) {\n // Space activates links on keyup (`role=\"button\"` semantics, matching the\n // composite path); prevent the page scroll Space would otherwise trigger.\n // Enter is left to the browser's native link activation.\n if (isCurrentTarget && isLink && isSpaceKey) {\n event.preventDefault();\n }\n return;\n }\n\n // Match native buttons: preventing the keydown's default cancels activation.\n if (event.defaultPrevented) {\n return;\n }\n event.preventDefault();\n if (isEnterKey) {\n event.preventBaseUIHandler();\n dispatchClickWithModifiers(currentTarget, event);\n }\n },\n onKeyUp(event) {\n if (disabled) {\n return;\n }\n\n // calling preventDefault in keyUp on a <button> will not dispatch a click event if Space is pressed\n // https://codesandbox.io/p/sandbox/button-keyup-preventdefault-dn7f0\n makeEventPreventable(event);\n externalOnKeyUp?.(event);\n if (event.target === event.currentTarget && isNativeButton && isCompositeItem && isButtonElement(event.currentTarget) && event.key === ' ') {\n event.preventDefault();\n return;\n }\n if (event.baseUIHandlerPrevented) {\n return;\n }\n\n // Keyboard accessibility for non interactive elements.\n // Match native buttons: preventing the keyup's default cancels Space activation.\n // Limitation: unlike a native <button>, a prevented *keydown* cannot cancel the\n // activation — no state is kept between keydown and keyup, so we can't tell\n // whether the keydown was prevented or even happened on this element.\n if (event.target === event.currentTarget && !isNativeButton && !isCompositeItem && !event.defaultPrevented && event.key === ' ') {\n event.preventBaseUIHandler();\n dispatchClickWithModifiers(event.currentTarget, event);\n }\n },\n onPointerDown(event) {\n if (disabled) {\n event.preventDefault();\n return;\n }\n externalOnPointerDown?.(event);\n }\n }, isNativeButton ? {\n type: 'button'\n } : {\n role: 'button'\n }, focusableWhenDisabledProps, otherExternalProps);\n }, [disabled, focusableWhenDisabledProps, isCompositeItem, isNativeButton]);\n const buttonRef = useStableCallback(element => {\n elementRef.current = element;\n updateDisabled();\n });\n return {\n getButtonProps,\n buttonRef\n };\n}\nfunction isButtonElement(elem) {\n return isHTMLElement(elem) && elem.tagName === 'BUTTON';\n}\nfunction isValidLinkElement(elem) {\n return isHTMLElement(elem) && elem.tagName === 'A' && Boolean(elem.href);\n}","export const ACTIVE_COMPOSITE_ITEM = 'data-composite-item-active';","'use client';\n\nimport * as React from 'react';\nexport const CompositeListContext = /*#__PURE__*/React.createContext({\n register: () => {},\n unregister: () => {},\n subscribeMapChange: () => () => {},\n nextIndexRef: {\n current: 0\n }\n});\nif (process.env.NODE_ENV !== \"production\") CompositeListContext.displayName = \"CompositeListContext\";\nexport function useCompositeListContext() {\n return React.useContext(CompositeListContext);\n}","'use client';\n\nimport * as React from 'react';\nimport { useIsoLayoutEffect } from '@base-ui/utils/useIsoLayoutEffect';\nimport { useCompositeListContext } from \"./CompositeListContext.mjs\";\n/**\n * Used to register a list item and its index (DOM position) in the `CompositeList`.\n */\nexport function useCompositeListItem(params = {}) {\n const {\n guess,\n label,\n metadata,\n textRef,\n index: externalIndex\n } = params;\n const {\n register,\n unregister,\n subscribeMapChange,\n nextIndexRef\n } = useCompositeListContext();\n\n // Guess the index from the render order. This avoids a re-render after mount for\n // flat lists rendered in DOM order; when the guess is wrong (grouped or out-of-order\n // rendering), the commit flush corrects it before paint.\n const indexRef = React.useRef(-1);\n const [internalIndex, setInternalIndex] = React.useState(externalIndex == null && guess ? () => {\n if (indexRef.current === -1) {\n const newIndex = nextIndexRef.current;\n nextIndexRef.current += 1;\n indexRef.current = newIndex;\n }\n return indexRef.current;\n } : -1);\n const index = externalIndex ?? internalIndex;\n const componentRef = React.useRef(null);\n\n // Deliberately identity-sensitive: nested items sharing one DOM node rely on ref attachment\n // order to decide which registration wins, and republishing from an effect instead would let\n // an inner item's later update silently take ownership from the outer one.\n const ref = React.useCallback(node => {\n const previousNode = componentRef.current;\n if (previousNode) {\n unregister(previousNode);\n }\n componentRef.current = node;\n if (node) {\n register(node, {\n metadata: metadata ?? null,\n index: externalIndex ?? null,\n label,\n textRef\n });\n }\n }, [externalIndex, register, unregister, metadata, label, textRef]);\n useIsoLayoutEffect(() => {\n if (externalIndex != null) {\n return undefined;\n }\n return subscribeMapChange(map => {\n const i = componentRef.current ? map.get(componentRef.current)?.index : null;\n if (i != null) {\n setInternalIndex(i);\n }\n });\n }, [externalIndex, subscribeMapChange]);\n return {\n ref,\n index\n };\n}","'use client';\n\nimport * as React from 'react';\nimport { useMergedRefs } from '@base-ui/utils/useMergedRefs';\nimport { useCompositeRootContext } from \"../root/CompositeRootContext.mjs\";\nimport { useCompositeListItem } from \"../list/useCompositeListItem.mjs\";\nexport function useCompositeItem(params = {}) {\n const {\n highlightItemOnHover,\n highlightedIndex,\n onHighlightedIndexChange\n } = useCompositeRootContext();\n const {\n ref,\n index\n } = useCompositeListItem(params);\n const isHighlighted = highlightedIndex === index;\n const itemRef = React.useRef(null);\n const mergedRef = useMergedRefs(ref, itemRef);\n const compositeProps = {\n tabIndex: isHighlighted ? 0 : -1,\n onFocus() {\n onHighlightedIndexChange(index);\n },\n onMouseMove() {\n const item = itemRef.current;\n if (!highlightItemOnHover || !item) {\n return;\n }\n const disabled = item.hasAttribute('disabled') || item.ariaDisabled === 'true';\n if (!isHighlighted && !disabled) {\n item.focus();\n }\n }\n };\n return {\n compositeProps,\n compositeRef: mergedRef,\n index\n };\n}","'use client';\n\nimport { EMPTY_OBJECT, EMPTY_ARRAY } from '@base-ui/utils/empty';\nimport { useRenderElement } from \"../../useRenderElement.mjs\";\nimport { useCompositeItem } from \"./useCompositeItem.mjs\";\nexport function CompositeItem(componentProps) {\n const {\n render,\n className,\n style,\n state = EMPTY_OBJECT,\n props = EMPTY_ARRAY,\n refs = EMPTY_ARRAY,\n metadata,\n stateAttributesMapping,\n tag = 'div',\n ...elementProps\n } = componentProps;\n const {\n compositeProps,\n compositeRef\n } = useCompositeItem({\n metadata\n });\n return useRenderElement(tag, componentProps, {\n state,\n // The composite ref attaches first so an outer item wins when nested items share a DOM node.\n ref: [compositeRef, ...refs],\n props: [compositeProps, ...props, elementProps],\n stateAttributesMapping\n });\n}","'use client';\n\nimport * as React from 'react';\nexport const RadioGroupContext = /*#__PURE__*/React.createContext(undefined);\nif (process.env.NODE_ENV !== \"production\") RadioGroupContext.displayName = \"RadioGroupContext\";\nexport function useRadioGroupContext() {\n return React.useContext(RadioGroupContext);\n}","export function serializeValue(value) {\n if (value == null) {\n return '';\n }\n if (typeof value === 'string') {\n return value;\n }\n try {\n return JSON.stringify(value);\n } catch {\n return String(value);\n }\n}","'use client';\n\nimport _formatErrorMessage from \"@base-ui/utils/formatErrorMessage\";\nimport * as React from 'react';\nexport const RadioRootContext = /*#__PURE__*/React.createContext(undefined);\nif (process.env.NODE_ENV !== \"production\") RadioRootContext.displayName = \"RadioRootContext\";\nexport function useRadioRootContext() {\n const value = React.useContext(RadioRootContext);\n if (value === undefined) {\n throw new Error(process.env.NODE_ENV !== \"production\" ? 'Base UI: RadioRootContext is missing. Radio parts must be placed within <Radio.Root>.' : _formatErrorMessage(52));\n }\n return value;\n}","'use client';\n\nimport * as React from 'react';\nimport { useMergedRefs } from '@base-ui/utils/useMergedRefs';\nimport { useIsoLayoutEffect } from '@base-ui/utils/useIsoLayoutEffect';\nimport { visuallyHidden, visuallyHiddenInput } from '@base-ui/utils/visuallyHidden';\nimport { EMPTY_OBJECT } from '@base-ui/utils/empty';\nimport { createChangeEventDetails } from \"../../internals/createBaseUIEventDetails.mjs\";\nimport { REASONS } from \"../../internals/reasons.mjs\";\nimport { NOOP } from \"../../internals/noop.mjs\";\nimport { stateAttributesMapping } from \"../utils/stateAttributesMapping.mjs\";\nimport { dispatchClickWithModifiers } from \"../../utils/dispatchClickWithModifiers.mjs\";\nimport { useBaseUiId } from \"../../internals/useBaseUiId.mjs\";\nimport { useRenderElement } from \"../../internals/useRenderElement.mjs\";\nimport { useButton } from \"../../internals/use-button/index.mjs\";\nimport { ACTIVE_COMPOSITE_ITEM } from \"../../internals/composite/constants.mjs\";\nimport { CompositeItem } from \"../../internals/composite/item/CompositeItem.mjs\";\nimport { useFieldRootContext } from \"../../internals/field-root-context/FieldRootContext.mjs\";\nimport { useFieldItemContext } from \"../../field/item/FieldItemContext.mjs\";\nimport { useLabelableContext } from \"../../internals/labelable-provider/LabelableContext.mjs\";\nimport { useAriaLabelledBy } from \"../../internals/labelable-provider/useAriaLabelledBy.mjs\";\nimport { useLabelableId } from \"../../internals/labelable-provider/useLabelableId.mjs\";\nimport { useRadioGroupContext } from \"../../radio-group/RadioGroupContext.mjs\";\nimport { serializeValue } from \"../../internals/serializeValue.mjs\";\nimport { RadioRootContext } from \"./RadioRootContext.mjs\";\n\n/**\n * Represents the radio button itself.\n * Renders a `<span>` element and a hidden `<input>` beside.\n *\n * Documentation: [Base UI Radio](https://base-ui.com/react/components/radio)\n */\nimport { jsx as _jsx, jsxs as _jsxs } from \"react/jsx-runtime\";\nexport const RadioRoot = /*#__PURE__*/React.forwardRef(function RadioRoot(componentProps, forwardedRef) {\n const {\n render,\n className,\n disabled: disabledProp = false,\n readOnly: readOnlyProp = false,\n required: requiredProp = false,\n 'aria-labelledby': ariaLabelledByProp,\n value,\n inputRef: inputRefProp,\n nativeButton = false,\n id: idProp,\n style,\n ...elementProps\n } = componentProps;\n const groupContext = useRadioGroupContext();\n const {\n disabled: disabledGroup,\n readOnly: readOnlyGroup,\n required: requiredGroup,\n form: formGroup,\n checkedValue,\n touched = false,\n validation,\n name,\n setCheckedValue = NOOP,\n setTouched = NOOP,\n registerInputRef = NOOP\n } = groupContext ?? {};\n const {\n setTouched: setFieldTouched,\n setFilled,\n state: fieldState,\n disabled: fieldDisabled\n } = useFieldRootContext();\n const fieldItemContext = useFieldItemContext();\n const {\n labelId,\n getDescriptionProps\n } = useLabelableContext();\n const disabled = fieldDisabled || fieldItemContext.disabled || disabledGroup || disabledProp;\n const readOnly = readOnlyGroup || readOnlyProp;\n const required = requiredGroup || requiredProp;\n const form = formGroup;\n const checked = groupContext ? checkedValue === value : value === '';\n const radioRef = React.useRef(null);\n const inputRef = React.useRef(null);\n const registerFieldInput = validation?.registerInput;\n const registerInput = React.useCallback(element => registerFieldInput?.(element, {\n controlRef: radioRef,\n value: undefined\n }), [registerFieldInput]);\n const mergedInputRef = useMergedRefs(inputRefProp, inputRef, registerInputRef, registerInput);\n useIsoLayoutEffect(() => {\n if (inputRef.current?.checked) {\n setFilled(true);\n }\n }, [setFilled]);\n useIsoLayoutEffect(() => {\n if (!inputRef.current) {\n return;\n }\n if (disabled && checked) {\n registerInputRef(null);\n return;\n }\n registerInputRef(inputRef.current);\n }, [checked, disabled, registerInputRef]);\n const id = useBaseUiId();\n const inputId = useLabelableId({\n id: idProp,\n implicit: false,\n controlRef: radioRef\n });\n const hiddenInputId = nativeButton ? undefined : inputId;\n const ariaLabelledBy = useAriaLabelledBy(ariaLabelledByProp, labelId, inputRef, !nativeButton, hiddenInputId);\n const rootProps = {\n role: 'radio',\n 'aria-checked': checked,\n 'aria-labelledby': ariaLabelledBy,\n [ACTIVE_COMPOSITE_ITEM]: checked ? '' : undefined,\n id: nativeButton ? inputId : id,\n onKeyDown(event) {\n if (event.key === 'Enter') {\n // Radio only activates with Space. Preventing the keydown's default\n // stops useButton from turning Enter into a click.\n event.preventDefault();\n }\n },\n onClick(event) {\n if (event.defaultPrevented || disabled || readOnly) {\n return;\n }\n event.preventDefault();\n const input = inputRef.current;\n if (!input) {\n return;\n }\n dispatchClickWithModifiers(input, event);\n },\n onFocus(event) {\n if (event.defaultPrevented || disabled || readOnly || !touched) {\n return;\n }\n inputRef.current?.click();\n setTouched(false);\n }\n };\n const {\n getButtonProps,\n buttonRef\n } = useButton({\n disabled,\n native: nativeButton,\n composite: false\n });\n const inputProps = {\n type: 'radio',\n ref: mergedInputRef,\n form,\n id: hiddenInputId,\n name,\n tabIndex: -1,\n style: name ? visuallyHiddenInput : visuallyHidden,\n 'aria-hidden': true,\n ...(value !== undefined ? {\n value: serializeValue(value)\n } : EMPTY_OBJECT),\n disabled,\n checked,\n required,\n readOnly,\n onChange(event) {\n // Workaround for https://github.com/react/react/issues/9023\n if (event.nativeEvent.defaultPrevented) {\n return;\n }\n if (disabled || readOnly || value === undefined) {\n return;\n }\n const details = createChangeEventDetails(REASONS.none, event.nativeEvent);\n setCheckedValue(value, details);\n if (details.isCanceled) {\n return;\n }\n setFieldTouched(true);\n },\n onClick(event) {\n // Clicks dispatched on the input from the root's `onClick` and `onFocus` are an\n // implementation detail and must not reach ancestors.\n event.stopPropagation();\n },\n onFocus() {\n radioRef.current?.focus();\n }\n };\n const state = React.useMemo(() => ({\n ...fieldState,\n required,\n disabled,\n readOnly,\n checked\n }), [fieldState, disabled, readOnly, checked, required]);\n const contextValue = state;\n const isRadioGroup = groupContext !== undefined;\n const refs = [forwardedRef, radioRef, buttonRef];\n const props = [rootProps, elementProps, getButtonProps, getDescriptionProps, validation ? validationProps => validation.getValidationProps(disabled, validationProps) : EMPTY_OBJECT];\n const element = useRenderElement('span', componentProps, {\n enabled: !isRadioGroup,\n state,\n ref: refs,\n props,\n stateAttributesMapping\n });\n return /*#__PURE__*/_jsxs(RadioRootContext.Provider, {\n value: contextValue,\n children: [isRadioGroup ? /*#__PURE__*/_jsx(CompositeItem, {\n tag: \"span\",\n render: render,\n className: className,\n style: style,\n state: state,\n refs: refs,\n props: props,\n stateAttributesMapping: stateAttributesMapping\n }) : element, /*#__PURE__*/_jsx(\"input\", {\n ...inputProps,\n suppressHydrationWarning: true\n })]\n });\n});\nif (process.env.NODE_ENV !== \"production\") RadioRoot.displayName = \"RadioRoot\";","'use client';\n\nimport * as React from 'react';\nimport { useRenderElement } from \"../../internals/useRenderElement.mjs\";\nimport { useRadioRootContext } from \"../root/RadioRootContext.mjs\";\nimport { stateAttributesMapping } from \"../utils/stateAttributesMapping.mjs\";\nimport { useOpenChangeComplete } from \"../../internals/useOpenChangeComplete.mjs\";\nimport { useTransitionStatus } from \"../../internals/useTransitionStatus.mjs\";\n\n/**\n * Indicates whether the radio button is selected.\n * Renders a `<span>` element.\n *\n * Documentation: [Base UI Radio](https://base-ui.com/react/components/radio)\n */\nexport const RadioIndicator = /*#__PURE__*/React.forwardRef(function RadioIndicator(componentProps, forwardedRef) {\n const {\n render,\n className,\n style,\n keepMounted = false,\n ...elementProps\n } = componentProps;\n const rootState = useRadioRootContext();\n const rendered = rootState.checked;\n const {\n mounted,\n transitionStatus,\n setMounted\n } = useTransitionStatus(rendered);\n const state = {\n ...rootState,\n transitionStatus\n };\n const indicatorRef = React.useRef(null);\n const shouldRender = keepMounted || mounted;\n const element = useRenderElement('span', componentProps, {\n ref: [forwardedRef, indicatorRef],\n state,\n props: elementProps,\n stateAttributesMapping\n });\n useOpenChangeComplete({\n open: rendered,\n ref: indicatorRef,\n onComplete() {\n if (!rendered) {\n setMounted(false);\n }\n }\n });\n if (!shouldRender) {\n return null;\n }\n return element;\n});\nif (process.env.NODE_ENV !== \"production\") RadioIndicator.displayName = \"RadioIndicator\";","import { createContext, useContext } from \"react\";\n\nimport type { RadioButtonGroupDirection } from \"./constants\";\n\nexport type RadioButtonGroupContextValue = {\n disabled?: boolean;\n negative?: boolean;\n dir?: RadioButtonGroupDirection;\n};\n\nexport const RadioButtonGroupContext = createContext<RadioButtonGroupContextValue | null>(null);\n\nexport const useRadioButtonGroupContext = () => {\n const context = useContext(RadioButtonGroupContext);\n\n if (!context) {\n throw new Error(\"RadioButtonGroupItem must be used within a RadioButtonGroup component\");\n }\n return context;\n};\n","import React, { forwardRef } from \"react\";\nimport { Field } from \"@base-ui/react/field\";\nimport { Radio } from \"@base-ui/react/radio\";\nimport c from \"classnames/bind\";\n\nimport { useRadioButtonGroupContext } from \"./radio-button-group.context\";\nimport styles from \"./radio-button-group-item.module.scss\";\n\nconst cx = c.bind(styles);\n\nexport type RadioButtonGroupItem = {\n [\"data-testid\"]?: string;\n disabled?: boolean;\n id: string;\n label: string;\n value: string;\n helperText?: string;\n className?: string;\n};\n\nconst rootClassName = \"purpur-radio-button-group-item\";\n\nexport const RadioButtonGroupItem = forwardRef<HTMLSpanElement, RadioButtonGroupItem>(\n ({ disabled, id, value, label, \"data-testid\": dataTestId, helperText, className }, ref) => {\n const context = useRadioButtonGroupContext();\n const resolvedDisabled = disabled || context.disabled;\n\n return (\n <Field.Item\n disabled={resolvedDisabled}\n className={cx(className, `${rootClassName}`)}\n data-testid={dataTestId}\n key={`radio-item-${value}`}\n >\n <Field.Label\n data-testid={dataTestId ? `${dataTestId}-label` : undefined}\n className={cx(`${rootClassName}__label`)}\n data-negative={context.negative}\n >\n <span className={cx(`${rootClassName}__radio-container`)}>\n <Radio.Root\n className={cx(`${rootClassName}__radio`)}\n data-testid={dataTestId ? `${dataTestId}-radio` : undefined}\n data-negative={context.negative}\n id={id}\n ref={ref}\n value={value}\n >\n <Radio.Indicator\n className={cx(`${rootClassName}__radio-indicator`)}\n keepMounted\n data-negative={context.negative}\n />\n </Radio.Root>\n </span>\n {label}\n </Field.Label>\n {helperText && (\n <Field.Description\n data-testid={dataTestId && `${dataTestId}-helper-text`}\n data-negative={context.negative}\n className={cx(`${rootClassName}__description`)}\n dir={context.dir}\n >\n {helperText}\n </Field.Description>\n )}\n </Field.Item>\n );\n }\n);\n\nRadioButtonGroupItem.displayName = \"RadioButtonGroupItem\";\n","'use client';\n\nimport * as React from 'react';\nimport { FieldsetRootContext, useFieldsetRootContext } from \"./FieldsetRootContext.mjs\";\nimport { useRenderElement } from \"../../internals/useRenderElement.mjs\";\n\n/**\n * Groups a shared legend with related controls.\n * Renders a `<fieldset>` element.\n *\n * Documentation: [Base UI Fieldset](https://base-ui.com/react/components/fieldset)\n */\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nexport const FieldsetRoot = /*#__PURE__*/React.forwardRef(function FieldsetRoot(componentProps, forwardedRef) {\n const {\n render,\n className,\n style,\n disabled: disabledProp = false,\n ...elementProps\n } = componentProps;\n const [legendId, setLegendId] = React.useState(undefined);\n const parentDisabled = useFieldsetRootContext(true)?.disabled;\n const disabled = parentDisabled || disabledProp;\n const state = {\n disabled\n };\n const element = useRenderElement('fieldset', componentProps, {\n ref: forwardedRef,\n state,\n props: [{\n 'aria-labelledby': legendId,\n disabled\n }, elementProps]\n });\n const contextValue = React.useMemo(() => ({\n legendId,\n setLegendId,\n disabled\n }), [legendId, setLegendId, disabled]);\n return /*#__PURE__*/_jsx(FieldsetRootContext.Provider, {\n value: contextValue,\n children: element\n });\n});\nif (process.env.NODE_ENV !== \"production\") FieldsetRoot.displayName = \"FieldsetRoot\";","'use client';\n\nimport * as React from 'react';\nimport { useRenderElement } from \"../../internals/useRenderElement.mjs\";\nimport { useFieldsetRootContext } from \"../root/FieldsetRootContext.mjs\";\nimport { useRegisteredLabelId } from \"../../utils/useRegisteredLabelId.mjs\";\n\n/**\n * An accessible label that is automatically associated with the fieldset.\n * Renders a `<div>` element.\n *\n * Documentation: [Base UI Fieldset](https://base-ui.com/react/components/fieldset)\n */\nexport const FieldsetLegend = /*#__PURE__*/React.forwardRef(function FieldsetLegend(componentProps, forwardedRef) {\n const {\n render,\n className,\n style,\n id: idProp,\n ...elementProps\n } = componentProps;\n const {\n disabled,\n setLegendId\n } = useFieldsetRootContext();\n const id = useRegisteredLabelId(idProp, setLegendId);\n const state = {\n disabled\n };\n const element = useRenderElement('div', componentProps, {\n state,\n ref: forwardedRef,\n props: [{\n id\n }, elementProps]\n });\n return element;\n});\nif (process.env.NODE_ENV !== \"production\") FieldsetLegend.displayName = \"FieldsetLegend\";","import { isHTMLElement } from '@floating-ui/utils/dom';\nexport { stopEvent, isIndexOutOfListBounds, isListIndexDisabled, findNonDisabledListIndex, getMaxListIndex, getMinListIndex } from \"../../floating-ui-react/utils.mjs\";\nexport const ARROW_UP = 'ArrowUp';\nexport const ARROW_DOWN = 'ArrowDown';\nexport const ARROW_LEFT = 'ArrowLeft';\nexport const ARROW_RIGHT = 'ArrowRight';\nexport const HOME = 'Home';\nexport const END = 'End';\nexport const PAGE_UP = 'PageUp';\nexport const PAGE_DOWN = 'PageDown';\nexport const COMPOSITE_KEYS = new Set([ARROW_UP, ARROW_DOWN, ARROW_LEFT, ARROW_RIGHT, HOME, END]);\nexport const SHIFT = 'Shift';\nexport const MODIFIER_KEYS = [SHIFT, 'Control', 'Alt', 'Meta'];\nfunction isInputElement(element) {\n return isHTMLElement(element) && element.tagName === 'INPUT';\n}\nexport function isNativeInput(element) {\n if (isInputElement(element) && element.selectionStart != null) {\n return true;\n }\n if (isHTMLElement(element) && element.tagName === 'TEXTAREA') {\n return true;\n }\n return false;\n}\nexport function scrollIntoViewIfNeeded(scrollContainer, element, direction, orientation) {\n if (!scrollContainer || !element || !element.scrollTo) {\n return;\n }\n let targetX = scrollContainer.scrollLeft;\n let targetY = scrollContainer.scrollTop;\n const isOverflowingX = scrollContainer.clientWidth < scrollContainer.scrollWidth;\n const isOverflowingY = scrollContainer.clientHeight < scrollContainer.scrollHeight;\n if (isOverflowingX && orientation !== 'vertical') {\n const elementOffsetLeft = getOffset(scrollContainer, element, 'left');\n const containerStyles = getStyles(scrollContainer);\n const elementStyles = getStyles(element);\n if (direction === 'ltr') {\n if (elementOffsetLeft + element.offsetWidth + elementStyles.scrollMarginRight > scrollContainer.scrollLeft + scrollContainer.clientWidth - containerStyles.scrollPaddingRight) {\n // overflow to the right, scroll to align right edges\n targetX = elementOffsetLeft + element.offsetWidth + elementStyles.scrollMarginRight - scrollContainer.clientWidth + containerStyles.scrollPaddingRight;\n } else if (elementOffsetLeft - elementStyles.scrollMarginLeft < scrollContainer.scrollLeft + containerStyles.scrollPaddingLeft) {\n // overflow to the left, scroll to align left edges\n targetX = elementOffsetLeft - elementStyles.scrollMarginLeft - containerStyles.scrollPaddingLeft;\n }\n }\n if (direction === 'rtl') {\n if (elementOffsetLeft - elementStyles.scrollMarginLeft < scrollContainer.scrollLeft + containerStyles.scrollPaddingLeft) {\n // overflow to the left, scroll to align left edges\n targetX = elementOffsetLeft - elementStyles.scrollMarginLeft - containerStyles.scrollPaddingLeft;\n } else if (elementOffsetLeft + element.offsetWidth + elementStyles.scrollMarginRight > scrollContainer.scrollLeft + scrollContainer.clientWidth - containerStyles.scrollPaddingRight) {\n // overflow to the right, scroll to align right edges\n targetX = elementOffsetLeft + element.offsetWidth + elementStyles.scrollMarginRight - scrollContainer.clientWidth + containerStyles.scrollPaddingRight;\n }\n }\n }\n if (isOverflowingY && orientation !== 'horizontal') {\n const elementOffsetTop = getOffset(scrollContainer, element, 'top');\n const containerStyles = getStyles(scrollContainer);\n const elementStyles = getStyles(element);\n if (elementOffsetTop - elementStyles.scrollMarginTop < scrollContainer.scrollTop + containerStyles.scrollPaddingTop) {\n // overflow upwards, align top edges\n targetY = elementOffsetTop - elementStyles.scrollMarginTop - containerStyles.scrollPaddingTop;\n } else if (elementOffsetTop + element.offsetHeight + elementStyles.scrollMarginBottom > scrollContainer.scrollTop + scrollContainer.clientHeight - containerStyles.scrollPaddingBottom) {\n // overflow downwards, align bottom edges\n targetY = elementOffsetTop + element.offsetHeight + elementStyles.scrollMarginBottom - scrollContainer.clientHeight + containerStyles.scrollPaddingBottom;\n }\n }\n scrollContainer.scrollTo({\n left: targetX,\n top: targetY,\n behavior: 'auto'\n });\n}\nfunction getOffset(ancestor, element, side) {\n const propName = side === 'left' ? 'offsetLeft' : 'offsetTop';\n let result = 0;\n while (element.offsetParent) {\n result += element[propName];\n if (element.offsetParent === ancestor) {\n break;\n }\n element = element.offsetParent;\n }\n return result;\n}\nfunction getStyles(element) {\n const styles = getComputedStyle(element);\n return {\n scrollMarginTop: parseFloat(styles.scrollMarginTop) || 0,\n scrollMarginRight: parseFloat(styles.scrollMarginRight) || 0,\n scrollMarginBottom: parseFloat(styles.scrollMarginBottom) || 0,\n scrollMarginLeft: parseFloat(styles.scrollMarginLeft) || 0,\n scrollPaddingTop: parseFloat(styles.scrollPaddingTop) || 0,\n scrollPaddingRight: parseFloat(styles.scrollPaddingRight) || 0,\n scrollPaddingBottom: parseFloat(styles.scrollPaddingBottom) || 0,\n scrollPaddingLeft: parseFloat(styles.scrollPaddingLeft) || 0\n };\n}","/* eslint-disable no-bitwise */\n'use client';\n\nimport * as React from 'react';\nimport { useRefWithInit } from '@base-ui/utils/useRefWithInit';\nimport { useStableCallback } from '@base-ui/utils/useStableCallback';\nimport { useIsoLayoutEffect } from '@base-ui/utils/useIsoLayoutEffect';\nimport { CompositeListContext } from \"./CompositeListContext.mjs\";\nimport { jsx as _jsx } from \"react/jsx-runtime\";\n/**\n * Provides context for a list of items in a composite component.\n */\nexport function CompositeList(props) {\n const {\n children,\n elementsRef,\n labelsRef,\n onMapChange: onMapChangeProp\n } = props;\n const onMapChange = useStableCallback(onMapChangeProp);\n const [, setMapTick] = React.useState(false);\n const listeners = useRefWithInit(createListeners).current;\n const map = useRefWithInit(createMap).current;\n const nextIndexRef = React.useRef(0);\n const isDirtyRef = React.useRef(true);\n const itemsRef = React.useRef([]);\n const mutationObserverRef = React.useRef(null);\n\n // Item effects can run without their parent rendering. Schedule one synchronous\n // parent update for the whole commit so refs are rebuilt before paint and while\n // the originating React event is still inside `act()` in tests.\n const scheduleMapUpdate = useStableCallback(() => {\n if (isDirtyRef.current) {\n return;\n }\n isDirtyRef.current = true;\n setMapTick(tick => !tick);\n });\n const register = useStableCallback((node, registration) => {\n map.set(node, registration);\n scheduleMapUpdate();\n });\n const unregister = useStableCallback(node => {\n map.delete(node);\n scheduleMapUpdate();\n });\n const syncRefs = useStableCallback(items => {\n const nextMap = new Map();\n elementsRef.current.length = 0;\n if (labelsRef) {\n labelsRef.current.length = 0;\n }\n items.forEach(item => {\n nextMap.set(item.element, {\n ...(item.registration.metadata ?? {}),\n index: item.index\n });\n elementsRef.current[item.index] = item.element;\n if (labelsRef) {\n labelsRef.current[item.index] = item.registration.label !== undefined ? item.registration.label : item.registration.textRef?.current?.textContent ?? item.element.textContent;\n }\n });\n nextIndexRef.current = elementsRef.current.length;\n return nextMap;\n });\n function observe(sortedNodes) {\n mutationObserverRef.current?.disconnect();\n mutationObserverRef.current = null;\n\n // A single item can't reorder.\n if (typeof MutationObserver !== 'function' || sortedNodes.length < 2) {\n return;\n }\n const mutationObserver = new MutationObserver(entries => {\n // Only verify the order after a move: a node that was removed and later\n // re-added within the same batch. Additions and removals alone can't\n // change the relative order of the remaining items, and items that mount\n // or unmount re-sort through `register`/`unregister`.\n if (!hasMovedNode(entries)) {\n return;\n }\n let previousConnectedNode = null;\n\n // If any connected node now appears before the previous connected node,\n // wrappers/items moved and the index map needs to be rebuilt.\n for (const node of sortedNodes) {\n if (!node.isConnected) {\n continue;\n }\n if (previousConnectedNode && sortByDocumentPosition(previousConnectedNode, node) > 0) {\n mutationObserver.disconnect();\n scheduleMapUpdate();\n return;\n }\n previousConnectedNode = node;\n }\n });\n mutationObserverRef.current = mutationObserver;\n\n // A reorder that changes item indexes must invert at least one adjacent pair\n // from the previous sorted order. Observing each pair's common parent catches\n // both direct item moves and ancestor wrapper moves at the boundary.\n const roots = new Set();\n for (let i = 1; i < sortedNodes.length; i += 1) {\n const root = getCommonAncestor(sortedNodes[i - 1], sortedNodes[i]);\n if (root) {\n roots.add(root);\n }\n }\n roots.forEach(root => mutationObserver.observe(root, {\n childList: true\n }));\n }\n const flush = useStableCallback(() => {\n const [items, automaticNodes] = getCompositeListSnapshot(map);\n const nextMap = syncRefs(items);\n observe(automaticNodes);\n itemsRef.current = items;\n isDirtyRef.current = false;\n listeners.forEach(listener => listener(nextMap));\n onMapChange(nextMap);\n });\n useIsoLayoutEffect(() => {\n // Re-copy the last committed snapshot when the ref objects change or Strict Mode replays\n // effects without reattaching callback refs.\n if (!isDirtyRef.current) {\n syncRefs(itemsRef.current);\n }\n return () => {\n elementsRef.current = [];\n if (labelsRef) {\n labelsRef.current = [];\n }\n };\n }, [elementsRef, labelsRef, syncRefs]);\n useIsoLayoutEffect(() => {\n if (isDirtyRef.current) {\n flush();\n }\n });\n useIsoLayoutEffect(() => {\n return () => {\n mutationObserverRef.current?.disconnect();\n // React 18 Strict Mode replays effects without replaying callback refs.\n // Mark the retained map dirty so the replay rebuilds refs and observation.\n isDirtyRef.current = true;\n };\n }, []);\n const subscribeMapChange = useStableCallback(fn => {\n listeners.add(fn);\n return () => {\n listeners.delete(fn);\n };\n });\n const contextValue = React.useMemo(() => ({\n register,\n unregister,\n subscribeMapChange,\n nextIndexRef\n }), [register, unregister, subscribeMapChange, nextIndexRef]);\n return /*#__PURE__*/_jsx(CompositeListContext.Provider, {\n value: contextValue,\n children: children\n });\n}\nfunction createMap() {\n return new Map();\n}\nfunction createListeners() {\n return new Set();\n}\nfunction getCompositeListSnapshot(map) {\n const reservedIndices = new Set();\n const items = [];\n const automaticItems = [];\n map.forEach((registration, node) => {\n if (!node.isConnected) {\n return;\n }\n const index = registration.index;\n const item = {\n index: index ?? -1,\n element: node,\n registration\n };\n if (index === null) {\n automaticItems.push(item);\n } else if (index >= 0) {\n reservedIndices.add(index);\n items.push(item);\n }\n });\n let nextAutomaticIndex = 0;\n automaticItems.sort((a, b) => sortByDocumentPosition(a.element, b.element));\n automaticItems.forEach(item => {\n while (reservedIndices.has(nextAutomaticIndex)) {\n nextAutomaticIndex += 1;\n }\n item.index = nextAutomaticIndex;\n items.push(item);\n nextAutomaticIndex += 1;\n });\n if (reservedIndices.size > 0) {\n items.sort((a, b) => a.index - b.index);\n }\n return [items, automaticItems.map(item => item.element)];\n}\nfunction getCommonAncestor(firstNode, lastNode) {\n let ancestor = firstNode.parentElement;\n\n // The `parentElement` walk cannot cross shadow boundaries, so the native\n // `contains` is sufficient here.\n while (ancestor && !ancestor.contains(lastNode)) {\n ancestor = ancestor.parentElement;\n }\n return ancestor;\n}\nfunction hasMovedNode(entries) {\n for (const entry of entries) {\n for (let i = 0; i < entry.removedNodes.length; i += 1) {\n if (entry.removedNodes[i].isConnected) {\n return true;\n }\n }\n }\n return false;\n}\nfunction sortByDocumentPosition(a, b) {\n // `DOCUMENT_POSITION_CONTAINED_BY` is always reported alongside `FOLLOWING`, and `CONTAINS`\n // alongside `PRECEDING`, so testing `FOLLOWING` alone orders siblings and nested items alike.\n return a.compareDocumentPosition(b) & Node.DOCUMENT_POSITION_FOLLOWING ? -1 : 1;\n}","export function isElementDisabled(element) {\n return element == null || element.hasAttribute('disabled') || element.getAttribute('aria-disabled') === 'true';\n}","'use client';\n\nimport * as React from 'react';\nimport { isElementDisabled } from '@base-ui/utils/isElementDisabled';\nimport { useStableCallback } from '@base-ui/utils/useStableCallback';\nimport { useMergedRefs } from '@base-ui/utils/useMergedRefs';\nimport { useIsoLayoutEffect } from '@base-ui/utils/useIsoLayoutEffect';\nimport { COMPOSITE_KEYS, ARROW_DOWN, ARROW_LEFT, ARROW_RIGHT, ARROW_UP, END, HOME, MODIFIER_KEYS, findNonDisabledListIndex, getMaxListIndex, getMinListIndex, isListIndexDisabled, isIndexOutOfListBounds, isNativeInput, scrollIntoViewIfNeeded } from \"../composite.mjs\";\nimport { ACTIVE_COMPOSITE_ITEM } from \"../constants.mjs\";\nimport { getTarget } from \"../../../floating-ui-react/utils.mjs\";\nconst EMPTY_ARRAY = [];\nexport function useCompositeRoot(params) {\n const {\n loopFocus = true,\n orientation = 'both',\n grid,\n onLoop,\n direction,\n highlightedIndex: externalHighlightedIndex,\n onHighlightedIndexChange: externalSetHighlightedIndex,\n rootRef: externalRef,\n enableHomeAndEndKeys = false,\n stopEventPropagation,\n disabledIndices,\n modifierKeys = EMPTY_ARRAY\n } = params;\n const [internalHighlightedIndex, internalSetHighlightedIndex] = React.useState(0);\n const isGrid = grid != null;\n const rootRef = React.useRef(null);\n const mergedRef = useMergedRefs(rootRef, externalRef);\n const elementsRef = React.useRef([]);\n const hasSetDefaultIndexRef = React.useRef(false);\n const highlightedIndex = externalHighlightedIndex ?? internalHighlightedIndex;\n const onHighlightedIndexChange = useStableCallback((index, shouldScrollIntoView = false) => {\n (externalSetHighlightedIndex ?? internalSetHighlightedIndex)(index);\n if (shouldScrollIntoView) {\n const newActiveItem = elementsRef.current[index];\n scrollIntoViewIfNeeded(rootRef.current, newActiveItem, direction, orientation);\n }\n });\n const onMapChange = useStableCallback(map => {\n if (map.size === 0 || hasSetDefaultIndexRef.current) {\n return;\n }\n hasSetDefaultIndexRef.current = true;\n const sortedElements = Array.from(map.keys());\n const activeItem = sortedElements.find(compositeElement => compositeElement?.hasAttribute(ACTIVE_COMPOSITE_ITEM)) ?? null;\n // Set the default highlighted index of an arbitrary composite item. The map value carries\n // the item's own index, which is not its position among the keys once a list mixes explicit\n // and automatic indexes and leaves gaps.\n const activeIndex = activeItem ? map.get(activeItem)?.index ?? -1 : -1;\n if (activeIndex !== -1) {\n onHighlightedIndexChange(activeIndex);\n } else if (isListIndexDisabled(sortedElements, highlightedIndex, disabledIndices)) {\n // The default highlighted item is disabled, so it should not hold the single\n // roving tab stop: a natively disabled element is removed from the tab order,\n // and an aria-disabled one should not be the entry point. Move the tab stop\n // to the first enabled item. If every item is disabled, keep the current\n // highlighted index.\n const firstEnabledIndex = findNonDisabledListIndex(sortedElements, {\n disabledIndices\n });\n if (!isIndexOutOfListBounds(sortedElements, firstEnabledIndex)) {\n onHighlightedIndexChange(firstEnabledIndex);\n }\n }\n scrollIntoViewIfNeeded(rootRef.current, activeItem, direction, orientation);\n });\n useIsoLayoutEffect(() => {\n // `disabledIndices` can resolve a render after the initial map population\n // (e.g. Toolbar derives it from item metadata through a state update), so the\n // default tab stop at index 0 may now point at a disabled item, leaving the\n // composite without a reachable tab stop. Re-validate and move it to the first\n // enabled item. Gated on `disabledIndices` being provided so composites that\n // rely on the DOM disabled fallback keep their existing behavior.\n if (disabledIndices == null || externalHighlightedIndex != null || !hasSetDefaultIndexRef.current) {\n return;\n }\n const elements = elementsRef.current;\n if (isListIndexDisabled(elements, highlightedIndex, disabledIndices)) {\n const firstEnabledIndex = findNonDisabledListIndex(elements, {\n disabledIndices\n });\n if (!isIndexOutOfListBounds(elements, firstEnabledIndex)) {\n onHighlightedIndexChange(firstEnabledIndex);\n }\n }\n }, [disabledIndices, externalHighlightedIndex, highlightedIndex, elementsRef, onHighlightedIndexChange]);\n const wrappedOnLoop = useStableCallback((event, prevIndex, nextIndex) => {\n if (!onLoop) {\n return nextIndex;\n }\n return onLoop(event, prevIndex, nextIndex, elementsRef);\n });\n\n // Stable so that `relayKeyboardEvent` does not invalidate identity-sensitive\n // consumers (the `CompositeRootContext` value and trigger data forwarding).\n const onKeyDown = useStableCallback(event => {\n const isHomeOrEnd = event.key === HOME || event.key === END;\n if (!COMPOSITE_KEYS.has(event.key) || !enableHomeAndEndKeys && isHomeOrEnd) {\n return;\n }\n if (isModifierKeySet(event, modifierKeys)) {\n return;\n }\n const element = rootRef.current;\n if (!element) {\n return;\n }\n const isRtl = direction === 'rtl';\n const horizontalForwardKey = isRtl ? ARROW_LEFT : ARROW_RIGHT;\n const horizontalBackwardKey = isRtl ? ARROW_RIGHT : ARROW_LEFT;\n const forwardKey = orientation === 'vertical' ? ARROW_DOWN : horizontalForwardKey;\n const backwardKey = orientation === 'vertical' ? ARROW_UP : horizontalBackwardKey;\n const target = getTarget(event.nativeEvent);\n if (target != null && isNativeInput(target) && !isElementDisabled(target)) {\n const selectionStart = target.selectionStart;\n const selectionEnd = target.selectionEnd;\n const textContent = target.value;\n // return to native textbox behavior when\n // 1 - Shift is held to make a text selection, or if there already is a text selection\n if (selectionStart == null || event.shiftKey || selectionStart !== selectionEnd) {\n return;\n }\n // 2 - arrow-ing forward and not in the last position of the text\n if (event.key !== backwardKey && selectionStart < textContent.length) {\n return;\n }\n // 3 -arrow-ing backward and not in the first position of the text\n if (event.key !== forwardKey && selectionStart > 0) {\n return;\n }\n }\n let nextIndex = highlightedIndex;\n const minIndex = getMinListIndex(elementsRef, disabledIndices);\n const maxIndex = getMaxListIndex(elementsRef, disabledIndices);\n if (grid != null) {\n nextIndex = grid({\n disabledIndices,\n elementsRef,\n event,\n highlightedIndex,\n loopFocus,\n maxIndex,\n minIndex,\n onLoop: wrappedOnLoop,\n orientation,\n rtl: isRtl\n });\n }\n const isForwardKey = orientation !== 'vertical' && event.key === horizontalForwardKey || orientation !== 'horizontal' && event.key === ARROW_DOWN;\n const isBackwardKey = orientation !== 'vertical' && event.key === horizontalBackwardKey || orientation !== 'horizontal' && event.key === ARROW_UP;\n if (enableHomeAndEndKeys) {\n if (event.key === HOME) {\n nextIndex = minIndex;\n } else if (event.key === END) {\n nextIndex = maxIndex;\n }\n }\n if (nextIndex === highlightedIndex && (isForwardKey || isBackwardKey)) {\n if (loopFocus && nextIndex === maxIndex && isForwardKey) {\n nextIndex = minIndex;\n if (onLoop) {\n nextIndex = onLoop(event, highlightedIndex, nextIndex, elementsRef);\n }\n } else if (loopFocus && nextIndex === minIndex && isBackwardKey) {\n nextIndex = maxIndex;\n if (onLoop) {\n nextIndex = onLoop(event, highlightedIndex, nextIndex, elementsRef);\n }\n } else {\n nextIndex = findNonDisabledListIndex(elementsRef.current, {\n startingIndex: nextIndex,\n decrement: isBackwardKey,\n disabledIndices\n });\n }\n }\n if (nextIndex !== highlightedIndex && !isIndexOutOfListBounds(elementsRef.current, nextIndex)) {\n if (stopEventPropagation) {\n event.stopPropagation();\n }\n if (isGrid || isHomeOrEnd || isForwardKey || isBackwardKey) {\n event.preventDefault();\n }\n onHighlightedIndexChange(nextIndex, true);\n\n // Wait for FocusManager `returnFocus` to execute.\n queueMicrotask(() => {\n elementsRef.current[nextIndex]?.focus();\n });\n }\n });\n const props = {\n ref: mergedRef,\n onFocus(event) {\n const element = rootRef.current;\n const target = getTarget(event.nativeEvent);\n if (!element || target == null || !isNativeInput(target)) {\n return;\n }\n target.setSelectionRange(0, target.value.length);\n },\n onKeyDown\n };\n return {\n props,\n highlightedIndex,\n onHighlightedIndexChange,\n elementsRef,\n onMapChange,\n relayKeyboardEvent: onKeyDown\n };\n}\nfunction isModifierKeySet(event, ignoredModifierKeys) {\n for (const key of MODIFIER_KEYS) {\n if (ignoredModifierKeys.includes(key)) {\n continue;\n }\n if (event.getModifierState(key)) {\n return true;\n }\n }\n return false;\n}","'use client';\n\nimport * as React from 'react';\nexport const DirectionContext = /*#__PURE__*/React.createContext(undefined);\nif (process.env.NODE_ENV !== \"production\") DirectionContext.displayName = \"DirectionContext\";\nexport function useDirection() {\n const context = React.useContext(DirectionContext);\n return context?.direction ?? 'ltr';\n}","'use client';\n\nimport * as React from 'react';\nimport { EMPTY_ARRAY, EMPTY_OBJECT } from '@base-ui/utils/empty';\nimport { CompositeList } from \"../list/CompositeList.mjs\";\nimport { useCompositeRoot } from \"./useCompositeRoot.mjs\";\nimport { CompositeRootContext } from \"./CompositeRootContext.mjs\";\nimport { useRenderElement } from \"../../useRenderElement.mjs\";\nimport { useDirection } from \"../../direction-context/DirectionContext.mjs\";\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nexport function CompositeRoot(componentProps) {\n const {\n render,\n className,\n style,\n refs = EMPTY_ARRAY,\n props = EMPTY_ARRAY,\n state = EMPTY_OBJECT,\n stateAttributesMapping,\n highlightedIndex: highlightedIndexProp,\n onHighlightedIndexChange: onHighlightedIndexChangeProp,\n orientation,\n grid,\n loopFocus,\n onLoop,\n enableHomeAndEndKeys,\n onMapChange: onMapChangeProp,\n stopEventPropagation = true,\n rootRef,\n disabledIndices,\n modifierKeys,\n highlightItemOnHover = false,\n tag = 'div',\n ...elementProps\n } = componentProps;\n const direction = useDirection();\n const {\n props: defaultProps,\n highlightedIndex,\n onHighlightedIndexChange,\n elementsRef,\n onMapChange: onMapChangeUnwrapped,\n relayKeyboardEvent\n } = useCompositeRoot({\n grid,\n loopFocus,\n onLoop,\n orientation,\n highlightedIndex: highlightedIndexProp,\n onHighlightedIndexChange: onHighlightedIndexChangeProp,\n rootRef,\n stopEventPropagation,\n enableHomeAndEndKeys,\n direction,\n disabledIndices,\n modifierKeys\n });\n const element = useRenderElement(tag, componentProps, {\n state,\n ref: refs,\n props: [defaultProps, ...props, elementProps],\n stateAttributesMapping\n });\n const contextValue = React.useMemo(() => ({\n highlightedIndex,\n onHighlightedIndexChange,\n highlightItemOnHover,\n relayKeyboardEvent\n }), [highlightedIndex, onHighlightedIndexChange, highlightItemOnHover, relayKeyboardEvent]);\n return /*#__PURE__*/_jsx(CompositeRootContext.Provider, {\n value: contextValue,\n children: /*#__PURE__*/_jsx(CompositeList, {\n elementsRef: elementsRef,\n onMapChange: newMap => {\n onMapChangeProp?.(newMap);\n onMapChangeUnwrapped(newMap);\n },\n children: element\n })\n });\n}","'use client';\n\nimport * as React from 'react';\nimport { useIsoLayoutEffect } from '@base-ui/utils/useIsoLayoutEffect';\nimport { useStableCallback } from '@base-ui/utils/useStableCallback';\nexport function useValueChanged(value, onChange) {\n const valueRef = React.useRef(value);\n const onChangeCallback = useStableCallback(onChange);\n useIsoLayoutEffect(() => {\n if (valueRef.current !== value) {\n onChangeCallback(valueRef.current);\n }\n valueRef.current = value;\n }, [value, onChangeCallback]);\n}","'use client';\n\nimport * as React from 'react';\nimport { useControlled } from '@base-ui/utils/useControlled';\nimport { useStableCallback } from '@base-ui/utils/useStableCallback';\nimport { useBaseUiId } from \"../internals/useBaseUiId.mjs\";\nimport { contains } from \"../floating-ui-react/utils.mjs\";\nimport { SHIFT } from \"../internals/composite/composite.mjs\";\nimport { CompositeRoot } from \"../internals/composite/root/CompositeRoot.mjs\";\nimport { useFieldRootContext } from \"../internals/field-root-context/FieldRootContext.mjs\";\nimport { useRegisterFieldControl } from \"../internals/field-register-control/useRegisterFieldControl.mjs\";\nimport { fieldValidityMapping } from \"../internals/field-constants/constants.mjs\";\nimport { isEligibleInput } from \"../field/root/useFieldValidation.mjs\";\nimport { useFieldsetRootContext } from \"../fieldset/root/FieldsetRootContext.mjs\";\nimport { useFormContext } from \"../internals/form-context/FormContext.mjs\";\nimport { useLabelableContext } from \"../internals/labelable-provider/LabelableContext.mjs\";\nimport { useValueChanged } from \"../internals/useValueChanged.mjs\";\nimport { RadioGroupContext } from \"./RadioGroupContext.mjs\";\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nconst MODIFIER_KEYS = [SHIFT];\n\n/**\n * Provides a shared state to a series of radio buttons.\n * Renders a `<div>` element.\n *\n * Documentation: [Base UI Radio Group](https://base-ui.com/react/components/radio)\n */\nexport const RadioGroup = /*#__PURE__*/React.forwardRef(function RadioGroup(componentProps, forwardedRef) {\n const {\n render,\n className,\n disabled: disabledProp,\n readOnly,\n required,\n onValueChange: onValueChangeProp,\n value: externalValue,\n defaultValue,\n form,\n name: nameProp,\n inputRef: inputRefProp,\n id: idProp,\n style,\n ...elementProps\n } = componentProps;\n const {\n setTouched: setFieldTouched,\n setFocused,\n validationMode,\n name: fieldName,\n disabled: fieldDisabled,\n state: fieldState,\n validation,\n setDirty,\n setFilled,\n validityData\n } = useFieldRootContext();\n const {\n labelId\n } = useLabelableContext();\n const {\n clearErrors,\n elementRef\n } = useFormContext();\n const fieldsetContext = useFieldsetRootContext(true);\n const disabled = fieldDisabled || disabledProp;\n const name = fieldName ?? nameProp;\n const id = useBaseUiId(idProp);\n const [checkedValue, setCheckedValueUnwrapped] = useControlled({\n controlled: externalValue,\n default: defaultValue,\n name: 'RadioGroup',\n state: 'value'\n });\n const [touched, setTouched] = React.useState(false);\n const setCheckedValue = useStableCallback((value, eventDetails) => {\n onValueChangeProp?.(value, eventDetails);\n if (eventDetails.isCanceled) {\n return;\n }\n setCheckedValueUnwrapped(value);\n });\n const getInputControl = validation.getInputControl;\n const controlRef = React.useMemo(() => ({\n get current() {\n return getInputControl();\n }\n }), [getInputControl]);\n const groupInputRef = React.useRef(null);\n const firstEnabledInputRef = React.useRef(null);\n\n // Only forwards the public `inputRef` and tracks the current representative for that forwarding.\n // The registry (`validation.registeredInputs`) is authoritative for validation and form-value\n // projection, so the group must not write `validation.inputRef`: a stale, unmounted radio left\n // there would become the Field's fallback once the registry empties and keep blocking submission.\n function setInputRef(hiddenInput) {\n let cleanup = undefined;\n if (inputRefProp) {\n if (typeof inputRefProp === 'function') {\n cleanup = inputRefProp(hiddenInput);\n } else {\n inputRefProp.current = hiddenInput;\n }\n }\n groupInputRef.current = hiddenInput;\n return cleanup;\n }\n const registerInputRef = useStableCallback(input => {\n if (!input || input.disabled) {\n return undefined;\n }\n if (!firstEnabledInputRef.current) {\n firstEnabledInputRef.current = input;\n }\n const currentInput = groupInputRef.current;\n const cleanup = input.checked || currentInput == null || currentInput.disabled ? setInputRef(input) : undefined;\n\n // Detach when this input unmounts while still forwarded, so consumers don't\n // keep holding a disconnected node. The input may have become the forwarded\n // one after attach (via the re-registration effect), so always return this.\n return () => {\n if (firstEnabledInputRef.current === input) {\n firstEnabledInputRef.current = null;\n }\n if (groupInputRef.current === input) {\n if (cleanup) {\n cleanup();\n groupInputRef.current = null;\n } else {\n void setInputRef(null);\n }\n } else {\n cleanup?.();\n }\n };\n });\n const getFormValue = useStableCallback(() => {\n const formElement = elementRef.current;\n if (!formElement) {\n return checkedValue ?? null;\n }\n for (const input of validation.registeredInputs.keys()) {\n if (input.checked && isEligibleInput(input, formElement)) {\n return checkedValue ?? null;\n }\n }\n return null;\n });\n useRegisterFieldControl(controlRef, id, checkedValue ?? null, getFormValue, !disabled, nameProp);\n useValueChanged(checkedValue, () => {\n clearErrors(name);\n setDirty(checkedValue !== validityData.initialValue);\n setFilled(checkedValue != null);\n validation.change(checkedValue);\n const fallbackInput = firstEnabledInputRef.current;\n if (checkedValue == null && fallbackInput && !fallbackInput.disabled) {\n // Imperative re-point outside React's ref lifecycle; the ref-callback cleanup isn't tracked here.\n void setInputRef(fallbackInput);\n }\n });\n const ariaLabelledby = labelId ?? fieldsetContext?.legendId;\n const state = {\n ...fieldState,\n disabled: disabled ?? false,\n required: required ?? false,\n readOnly: readOnly ?? false\n };\n const contextValue = React.useMemo(() => ({\n checkedValue,\n disabled,\n form,\n validation,\n name,\n readOnly,\n registerInputRef,\n required,\n setCheckedValue,\n setTouched,\n touched\n }), [checkedValue, disabled, form, validation, name, readOnly, registerInputRef, required, setCheckedValue, setTouched, touched]);\n const defaultProps = {\n id: idProp,\n role: 'radiogroup',\n 'aria-required': required || undefined,\n 'aria-disabled': disabled || undefined,\n 'aria-readonly': readOnly || undefined,\n 'aria-labelledby': ariaLabelledby,\n onFocus() {\n setFocused(true);\n },\n onBlur(event) {\n if (!contains(event.currentTarget, event.relatedTarget)) {\n setFieldTouched(true);\n setFocused(false);\n if (validationMode === 'onBlur') {\n validation.commit(checkedValue);\n }\n }\n },\n onKeyDownCapture(event) {\n if (event.key.startsWith('Arrow')) {\n setTouched(true);\n setFocused(true);\n }\n }\n };\n return /*#__PURE__*/_jsx(RadioGroupContext.Provider, {\n value: contextValue,\n children: /*#__PURE__*/_jsx(CompositeRoot, {\n render: render,\n className: className,\n style: style,\n state: state,\n props: [defaultProps, elementProps, props => validation.getValidationProps(disabled ?? false, props)],\n refs: [forwardedRef],\n stateAttributesMapping: fieldValidityMapping,\n enableHomeAndEndKeys: false,\n modifierKeys: MODIFIER_KEYS\n })\n });\n});\nif (process.env.NODE_ENV !== \"production\") RadioGroup.displayName = \"RadioGroup\";","import React, { forwardRef, type ReactNode } from \"react\";\nimport { Field } from \"@base-ui/react/field\";\nimport { Fieldset } from \"@base-ui/react/fieldset\";\nimport { RadioGroup } from \"@base-ui/react/radio-group\";\nimport type { BaseProps } from \"@purpur/common-types\";\nimport { Heading, type HeadingTagType } from \"@purpur/heading\";\nimport c from \"classnames/bind\";\n\nimport type { RADIO_BUTTON_GROUP_ORIENTATION, RadioButtonGroupDirection } from \"./constants\";\nimport { RadioButtonGroupContext } from \"./radio-button-group.context\";\nimport styles from \"./radio-button-group.module.scss\";\nimport { RadioButtonGroupItem } from \"./radio-button-group-item\";\n\nconst cx = c.bind(styles);\n\nexport type RadioButtonGroupRootProps = Omit<BaseProps, \"id\"> & {\n /**\n * ID of the radio group container.\n * */\n id: string;\n /**\n * To use when no heading is given (do not combine with `aria-labelledby`).\n * */\n [\"aria-label\"]?: string;\n /**\n * To use if no heading is provided (do not combine with `aria-label`). The id of the element labeling this radio group.\n * */\n [\"aria-labelledby\"]?: string;\n /**\n * The value of the radio item that should be checked when initially rendered. Use when you do not need to control the state of the radio items.\n * */\n defaultValue?: string;\n /**\n * The reading direction of the radio group. If omitted, it assumes LTR (left-to-right) reading mode.\n * */\n dir?: RadioButtonGroupDirection;\n /**\n * When true, prevents the user from interacting with radio items.\n * */\n disabled?: boolean;\n /**\n * When true, applies negative styling to the radio group.\n */\n negative?: boolean;\n /**\n * The radio items.\n *\n RadioButtonGroupItem = {\n [\"data-testid\"]?: string;\n disabled?: boolean;\n helperText?: string;\n id: string;\n label: string;\n ref?: Ref<HTMLSpanElement>;\n value: string;\n }[]\n * */\n items?: RadioButtonGroupItem[];\n /**\n * Radio group children. Best used with `RadioButtonGroup.Item`.\n */\n children?: ReactNode;\n /**\n * The name of the group. Submitted with its owning form as part of a name/value pair.\n * */\n name?: string;\n /**\n * Event handler called when the value changes.\n * */\n onValueChange?: (value: string) => void;\n /**\n * The orientation of the component.\n * */\n orientation?: (typeof RADIO_BUTTON_GROUP_ORIENTATION)[number];\n /**\n * When true, indicates that the user must check a radio item before the owning form can be submitted.\n * */\n required?: boolean;\n /**\n * The controlled value of the radio item to check. Should be used in conjunction with onValueChange.\n * */\n value?: string;\n /**\n * Renders above the radio group as a heading.\n * */\n heading?: string;\n /**\n * Changes heading level for heading.\n */\n headingTag?: HeadingTagType;\n};\n\nconst rootClassName = \"purpur-radio-button-group\";\n\nexport const RadioButtonGroupRoot = forwardRef<HTMLDivElement, RadioButtonGroupRootProps>(\n (\n {\n \"data-testid\": dataTestId,\n \"aria-label\": ariaLabel,\n \"aria-labelledby\": ariaLabelledby,\n className,\n items,\n heading,\n orientation = \"vertical\",\n headingTag = \"h2\",\n children,\n name,\n disabled,\n negative,\n dir,\n required,\n ...props\n },\n ref\n ) => {\n if (!items?.length && !children) {\n return null;\n }\n\n const ariaProps = heading ? {} : { \"aria-label\": ariaLabel, \"aria-labelledby\": ariaLabelledby };\n\n return (\n <RadioButtonGroupContext.Provider value={{ disabled, negative, dir }}>\n <Field.Root className={cx(`${rootClassName}__container`)} name={name} disabled={disabled}>\n <Fieldset.Root\n render={\n <RadioGroup\n {...props}\n className={cx(className, rootClassName)}\n required={required}\n {...ariaProps}\n data-orientation={orientation}\n data-testid={dataTestId}\n dir={dir}\n ref={ref}\n />\n }\n >\n {heading && (\n <Fieldset.Legend\n render={\n <Heading\n tag={headingTag}\n data-testid={dataTestId ? `${dataTestId}-heading` : undefined}\n variant=\"subsection-100\"\n negative={negative}\n >\n {required && <span aria-hidden>{\"* \"}</span>}\n {heading}\n </Heading>\n }\n />\n )}\n <div className={cx(`${rootClassName}__items-container`)}>\n {items?.length\n ? items.map((item) => <RadioButtonGroupItem key={item.value} {...item} />)\n : children}\n </div>\n </Fieldset.Root>\n </Field.Root>\n </RadioButtonGroupContext.Provider>\n );\n }\n);\n\nRadioButtonGroupRoot.displayName = \"RadioButtonGroupRoot\";\n","export const RADIO_BUTTON_GROUP_DIRECTION = [\"ltr\", \"rtl\"] as const;\nexport type RadioButtonGroupDirection = (typeof RADIO_BUTTON_GROUP_DIRECTION)[number];\nexport const RADIO_BUTTON_GROUP_ORIENTATION = [\"horizontal\", \"vertical\"] as const;\nexport type RadioButtonGroupOrientation = (typeof RADIO_BUTTON_GROUP_ORIENTATION)[number];\n","import React, { forwardRef } from \"react\";\n\nimport { RadioButtonGroupItem } from \"./radio-button-group-item\";\nimport type { RadioButtonGroupRootProps } from \"./radio-button-group-root\";\nimport { RadioButtonGroupRoot } from \"./radio-button-group-root\";\n\nexport {\n RADIO_BUTTON_GROUP_DIRECTION,\n RADIO_BUTTON_GROUP_ORIENTATION,\n type RadioButtonGroupDirection,\n type RadioButtonGroupOrientation,\n} from \"./constants\";\n\ntype RadioButtonGroupCmp = React.ForwardRefExoticComponent<\n RadioButtonGroupProps & React.RefAttributes<HTMLDivElement>\n> & {\n Item: typeof RadioButtonGroupItem;\n};\n\nexport type RadioButtonGroupProps = RadioButtonGroupRootProps;\n\nexport const RadioButtonGroup = forwardRef<HTMLDivElement, RadioButtonGroupProps>(\n ({ children, ...props }, ref) => (\n <RadioButtonGroupRoot ref={ref} {...props}>\n {children}\n </RadioButtonGroupRoot>\n )\n) as RadioButtonGroupCmp;\n\nRadioButtonGroup.Item = RadioButtonGroupItem;\n\nRadioButtonGroup.displayName = \"RadioButtonGroup\";\n"],"names":["noop","useIsoLayoutEffect","React","SafeReact","UNINITIALIZED","useRefWithInit","init","initArg","ref","useInsertionEffect","useSafeInsertionEffect","fn","useStableCallback","callback","stable","createStableCallback","assertNotCalled","args","createFormatErrorMessage","baseUrl","prefix","code","url","arg","formatErrorMessage","NOOP","EMPTY_ARRAY","EMPTY_OBJECT","DEFAULT_VALIDITY_STATE","DEFAULT_FIELD_STATE_ATTRIBUTES","DEFAULT_FIELD_ROOT_STATE","fieldValidityMapping","value","DEFAULT_FIELD_ROOT_CONTEXT","_disabled","props","FieldRootContext","useFieldRootContext","optional","context","_formatErrorMessage","FieldsetRootContext","useFieldsetRootContext","FormContext","useFormContext","globalId","useGlobalId","idOverride","defaultId","setDefaultId","id","maybeReactUseId","useId","reactId","useBaseUiId","LabelableContext","externalProps","useLabelableContext","LabelableProvider","initialControlId","controlId","setControlIdState","labelId","setLabelId","messageIds","setMessageIds","registrationsRef","parentMessageIds","registerControlId","source","nextId","registrations","prev","nextControlId","getDescriptionProps","ids","contextValue","_jsx","useAriaLabelledBy","explicitAriaLabelledBy","labelSourceRef","enableFallback","labelSourceId","fallbackAriaLabelledBy","setFallbackAriaLabelledBy","generatedLabelId","ariaLabelledBy","nextAriaLabelledBy","getAriaLabelledBy","labelSource","label","findAssociatedLabel","parent","nextSibling","labels","hasWindow","getWindow","node","_node$ownerDocument","isElement","isHTMLElement","isShadowRoot","getComputedStyle","element","useLabelableId","params","implicit","controlRef","controlIdForEffect","controlSourceRef","hasRegisteredRef","hadExplicitIdRef","unregisterControlId","elem","ownerDocument","contains","child","rootNode","next","getTarget","event","isIndexOutOfListBounds","list","index","getMinListIndex","listRef","disabledIndices","findNonDisabledListIndex","getMaxListIndex","startingIndex","decrement","amount","isListIndexDisabled","isElementVisible","isHiddenByStyles","styles","useRegisteredLabelId","idProp","currentId","useLabel","fallbackControlId","native","setLabelIdProp","focusControlProp","contextControlId","setContextLabelId","syncLabelId","nextLabelId","resolvedControlId","focusControl","controlElement","focusElementWithVisible","handleInteraction","useMergedRefs","a","b","c","d","forkRef","createForkRef","didChange","update","useMergedRefsN","refs","didChangeN","newRefs","instance","cleanupCallbacks","i","refCleanup","cleanupCallback","majorVersion","isReactVersionAtLeast","reactVersionToCheck","getReactElementRef","reactElement","propsWithRef","mergeObjects","set","warn","messages","messageKey","getStateAttributesProps","state","customMapping","key","customProps","resolveClassName","className","resolveStyle","style","EMPTY_PROPS","mergeProps","e","createInitialMergedProps","merged","mergeInto","mergePropsN","inputProps","isPropsGetter","resolvePropsGetter","copyInitialProps","mutablyMergeInto","copiedProps","propName","propValue","isEventHandler","wrapEventHandler","mergedProps","externalPropValue","mergeClassNames","mergeEventHandlers","code0","code1","code2","previousProps","ourHandler","theirHandler","isSyntheticEvent","baseUIEvent","makeEventPreventable","result","handler","ourClassName","theirClassName","useRenderElement","componentProps","renderProp","outProps","useRenderElementProps","evaluateRenderProp","classNameProp","styleProp","stateAttributesMapping","enabled","stateProps","resolvedProps","resolveRenderFunctionProps","REACT_LAZY_TYPE","COMPONENT_IDENTIFIER_PATTERN","LOWERCASE_CHARACTER_PATTERN","render","warnIfRenderPropLooksLikeComponent","newElement","renderTag","renderFn","functionName","Tag","_createElement","useOnMount","EMPTY","Timeout","delay","useTimeout","timeout","getCombinedFieldValidityData","validityData","invalid","validityKeys","isEligibleInput","input","formElement","findRepresentativeInput","inputs","fallback","clearCustomValidity","useFieldValidation","elementRef","formRef","setValidityData","validate","validationDebounceTime","markedDirtyRef","shouldValidateOnChange","registeredFieldIdRef","inputRef","registeredInputs","validationCommitIdRef","registerInput","registration","getInputControl","commit","revalidate","validationCommitId","updateRegisteredFieldValidity","nextValidityData","externalInvalid","fieldId","currentFieldData","validityDataWithFormErrors","publishAllValid","currentNativeValidity","getState","el","computedState","acc","hasOnlyValueMissingError","validationErrors","nextState","defaultValidationMessage","isValidatingOnChange","formValues","field","resultOrPromise","change","validateOnChange","getValidationProps","disabled","useFieldControlRegistration","name","setRegisteredFieldName","activeFieldControlSourceRef","registrationRef","initialValueCapturedRef","getValueForForm","getRegistrationValue","refreshRegistration","deleteRegistration","captureInitialValue","initialValue","fields","register","previousId","FieldRootInner","forwardedRef","errors","formValidationMode","submitAttemptedRef","validateProp","validationMode","disabledProp","invalidProp","dirtyProp","touchedProp","actionsRef","elementProps","disabledFieldset","touchedState","setTouchedUnwrapped","dirtyState","setDirtyUnwrapped","filled","setFilled","focused","setFocused","dirty","touched","registeredFieldName","effectiveName","setDirty","setTouched","formError","hasFormError","valid","validation","validateFieldControl","registerFieldControl","FieldRoot","error","FieldItemContext","useFieldItemContext","FieldLabel","nativeLabel","fieldRootContext","fieldItemContext","labelRef","labelProps","isLabelTag","ownerStackMessage","LAST_RAF","Scheduler","timestamp","currentCallbacks","currentCallbacksCount","didRAFChange","scheduler","AnimationFrame","useAnimationFrame","resolveRef","maybeRef","useAnimationsFinished","elementOrRef","waitForStartingStyleRemoved","frame","fnToExecute","signal","resolvedElement","done","ReactDOM","exec","animation","startingStyleAttribute","attributeObserver","useOpenChangeComplete","parameters","open","onCompleteParam","onComplete","runOnceAnimationsFinish","abortController","STARTING_HOOK","ENDING_HOOK","transitionStatusMapping","useTransitionStatus","enableIdleState","deferEndingState","transitionStatus","setTransitionStatus","mounted","setMounted","FieldDescription","v","item","useControlled","controlled","defaultProp","isControlled","valueState","setValue","defaultValue","serializeToDevModeString","setValueIfUncontrolled","newValue","seen","useRegisterFieldControl","getFormValueOverride","sourceRef","none","createChangeEventDetails","reason","trigger","customProperties","canceled","allowPropagation","custom","FieldItem","fieldState","rootDisabled","visuallyHiddenBase","visuallyHidden","visuallyHiddenInput","dispatchClickWithModifiers","target","sourceEvent","detail","ownerWindow","CompositeRootContext","useCompositeRootContext","useFocusableWhenDisabled","focusableWhenDisabled","composite","tabIndexProp","isNativeButton","isFocusableComposite","isNonFocusableComposite","additionalProps","useButton","tabIndex","compositeProp","compositeRootContext","isCompositeItem","focusableWhenDisabledProps","isButtonTag","isButtonElement","updateDisabled","getButtonProps","externalOnClick","externalOnMouseDown","externalOnKeyUp","externalOnKeyDown","externalOnPointerDown","otherExternalProps","isCurrentTarget","currentTarget","isButton","isLink","isValidLinkElement","shouldClick","isEnterKey","isSpaceKey","role","isTextNavigationRole","buttonRef","ACTIVE_COMPOSITE_ITEM","CompositeListContext","useCompositeListContext","useCompositeListItem","guess","metadata","textRef","externalIndex","unregister","subscribeMapChange","nextIndexRef","indexRef","internalIndex","setInternalIndex","newIndex","componentRef","previousNode","map","useCompositeItem","highlightItemOnHover","highlightedIndex","onHighlightedIndexChange","isHighlighted","itemRef","mergedRef","CompositeItem","tag","compositeProps","compositeRef","RadioGroupContext","useRadioGroupContext","serializeValue","RadioRootContext","useRadioRootContext","RadioRoot","readOnlyProp","requiredProp","ariaLabelledByProp","inputRefProp","nativeButton","groupContext","disabledGroup","readOnlyGroup","requiredGroup","formGroup","checkedValue","setCheckedValue","registerInputRef","setFieldTouched","fieldDisabled","readOnly","required","form","checked","radioRef","registerFieldInput","mergedInputRef","inputId","hiddenInputId","rootProps","details","REASONS.none","isRadioGroup","validationProps","_jsxs","RadioIndicator","keepMounted","rootState","rendered","indicatorRef","shouldRender","RadioButtonGroupContext","createContext","useRadioButtonGroupContext","useContext","cx","rootClassName","RadioButtonGroupItem","forwardRef","dataTestId","helperText","resolvedDisabled","jsxs","Field.Item","Field.Label","jsx","Radio.Root","Radio.Indicator","Field.Description","FieldsetRoot","legendId","setLegendId","FieldsetLegend","ARROW_UP","ARROW_DOWN","ARROW_LEFT","ARROW_RIGHT","HOME","END","COMPOSITE_KEYS","SHIFT","MODIFIER_KEYS","isInputElement","isNativeInput","scrollIntoViewIfNeeded","scrollContainer","direction","orientation","targetX","targetY","isOverflowingX","isOverflowingY","elementOffsetLeft","getOffset","containerStyles","getStyles","elementStyles","elementOffsetTop","ancestor","side","CompositeList","children","elementsRef","labelsRef","onMapChangeProp","onMapChange","setMapTick","listeners","createListeners","createMap","isDirtyRef","itemsRef","mutationObserverRef","scheduleMapUpdate","tick","syncRefs","items","nextMap","observe","sortedNodes","mutationObserver","entries","hasMovedNode","previousConnectedNode","sortByDocumentPosition","roots","root","getCommonAncestor","flush","automaticNodes","getCompositeListSnapshot","listener","reservedIndices","automaticItems","nextAutomaticIndex","firstNode","lastNode","entry","isElementDisabled","useCompositeRoot","loopFocus","grid","onLoop","externalHighlightedIndex","externalSetHighlightedIndex","externalRef","enableHomeAndEndKeys","stopEventPropagation","modifierKeys","internalHighlightedIndex","internalSetHighlightedIndex","isGrid","rootRef","hasSetDefaultIndexRef","shouldScrollIntoView","newActiveItem","sortedElements","activeItem","compositeElement","activeIndex","firstEnabledIndex","elements","wrappedOnLoop","prevIndex","nextIndex","onKeyDown","isHomeOrEnd","isModifierKeySet","isRtl","horizontalForwardKey","horizontalBackwardKey","forwardKey","backwardKey","selectionStart","selectionEnd","textContent","minIndex","maxIndex","isForwardKey","isBackwardKey","ignoredModifierKeys","DirectionContext","useDirection","CompositeRoot","highlightedIndexProp","onHighlightedIndexChangeProp","defaultProps","onMapChangeUnwrapped","relayKeyboardEvent","newMap","useValueChanged","onChange","valueRef","onChangeCallback","RadioGroup","onValueChangeProp","externalValue","nameProp","fieldName","clearErrors","fieldsetContext","setCheckedValueUnwrapped","eventDetails","groupInputRef","firstEnabledInputRef","setInputRef","hiddenInput","cleanup","currentInput","getFormValue","fallbackInput","ariaLabelledby","RadioButtonGroupRoot","ariaLabel","heading","headingTag","negative","dir","ariaProps","Field.Root","Fieldset.Root","Fieldset.Legend","Heading","RADIO_BUTTON_GROUP_DIRECTION","RADIO_BUTTON_GROUP_ORIENTATION","RadioButtonGroup"],"mappings":"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","x_google_ignoreList":[0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,64,65,66,67,68,71,72,73,74,75,76,77,78,79,80]}
|
|
1
|
+
{"version":3,"file":"radio-button-group-DjiTo3b1.mjs","sources":["../../../common/temp/node_modules/.pnpm/@base-ui+utils@0.3.2_@types+react@19.2.14_react-dom@19.2.4_react@19.2.4__react@19.2.4/node_modules/@base-ui/utils/useIsoLayoutEffect.mjs","../../../common/temp/node_modules/.pnpm/@base-ui+utils@0.3.2_@types+react@19.2.14_react-dom@19.2.4_react@19.2.4__react@19.2.4/node_modules/@base-ui/utils/safeReact.mjs","../../../common/temp/node_modules/.pnpm/@base-ui+utils@0.3.2_@types+react@19.2.14_react-dom@19.2.4_react@19.2.4__react@19.2.4/node_modules/@base-ui/utils/useRefWithInit.mjs","../../../common/temp/node_modules/.pnpm/@base-ui+utils@0.3.2_@types+react@19.2.14_react-dom@19.2.4_react@19.2.4__react@19.2.4/node_modules/@base-ui/utils/useStableCallback.mjs","../../../common/temp/node_modules/.pnpm/@base-ui+utils@0.3.2_@types+react@19.2.14_react-dom@19.2.4_react@19.2.4__react@19.2.4/node_modules/@base-ui/utils/formatErrorMessage.mjs","../../../common/temp/node_modules/.pnpm/@base-ui+utils@0.3.2_@types+react@19.2.14_react-dom@19.2.4_react@19.2.4__react@19.2.4/node_modules/@base-ui/utils/empty.mjs","../../../common/temp/node_modules/.pnpm/@base-ui+react@1.7.0_@date-fns+tz@1.5.0_@types+react@19.2.14_date-fns@4.1.0_react-dom@19.2.4_react@19.2.4__react@19.2.4/node_modules/@base-ui/react/internals/field-constants/constants.mjs","../../../common/temp/node_modules/.pnpm/@base-ui+react@1.7.0_@date-fns+tz@1.5.0_@types+react@19.2.14_date-fns@4.1.0_react-dom@19.2.4_react@19.2.4__react@19.2.4/node_modules/@base-ui/react/internals/field-root-context/FieldRootContext.mjs","../../../common/temp/node_modules/.pnpm/@base-ui+react@1.7.0_@date-fns+tz@1.5.0_@types+react@19.2.14_date-fns@4.1.0_react-dom@19.2.4_react@19.2.4__react@19.2.4/node_modules/@base-ui/react/fieldset/root/FieldsetRootContext.mjs","../../../common/temp/node_modules/.pnpm/@base-ui+react@1.7.0_@date-fns+tz@1.5.0_@types+react@19.2.14_date-fns@4.1.0_react-dom@19.2.4_react@19.2.4__react@19.2.4/node_modules/@base-ui/react/internals/form-context/FormContext.mjs","../../../common/temp/node_modules/.pnpm/@base-ui+utils@0.3.2_@types+react@19.2.14_react-dom@19.2.4_react@19.2.4__react@19.2.4/node_modules/@base-ui/utils/useId.mjs","../../../common/temp/node_modules/.pnpm/@base-ui+react@1.7.0_@date-fns+tz@1.5.0_@types+react@19.2.14_date-fns@4.1.0_react-dom@19.2.4_react@19.2.4__react@19.2.4/node_modules/@base-ui/react/internals/useBaseUiId.mjs","../../../common/temp/node_modules/.pnpm/@base-ui+react@1.7.0_@date-fns+tz@1.5.0_@types+react@19.2.14_date-fns@4.1.0_react-dom@19.2.4_react@19.2.4__react@19.2.4/node_modules/@base-ui/react/internals/labelable-provider/LabelableContext.mjs","../../../common/temp/node_modules/.pnpm/@base-ui+react@1.7.0_@date-fns+tz@1.5.0_@types+react@19.2.14_date-fns@4.1.0_react-dom@19.2.4_react@19.2.4__react@19.2.4/node_modules/@base-ui/react/internals/labelable-provider/LabelableProvider.mjs","../../../common/temp/node_modules/.pnpm/@base-ui+react@1.7.0_@date-fns+tz@1.5.0_@types+react@19.2.14_date-fns@4.1.0_react-dom@19.2.4_react@19.2.4__react@19.2.4/node_modules/@base-ui/react/internals/labelable-provider/useAriaLabelledBy.mjs","../../../common/temp/node_modules/.pnpm/@floating-ui+utils@0.2.12/node_modules/@floating-ui/utils/dist/floating-ui.utils.dom.mjs","../../../common/temp/node_modules/.pnpm/@base-ui+react@1.7.0_@date-fns+tz@1.5.0_@types+react@19.2.14_date-fns@4.1.0_react-dom@19.2.4_react@19.2.4__react@19.2.4/node_modules/@base-ui/react/internals/labelable-provider/useLabelableId.mjs","../../../common/temp/node_modules/.pnpm/@base-ui+utils@0.3.2_@types+react@19.2.14_react-dom@19.2.4_react@19.2.4__react@19.2.4/node_modules/@base-ui/utils/owner.mjs","../../../common/temp/node_modules/.pnpm/@base-ui+react@1.7.0_@date-fns+tz@1.5.0_@types+react@19.2.14_date-fns@4.1.0_react-dom@19.2.4_react@19.2.4__react@19.2.4/node_modules/@base-ui/react/internals/shadowDom.mjs","../../../common/temp/node_modules/.pnpm/@base-ui+react@1.7.0_@date-fns+tz@1.5.0_@types+react@19.2.14_date-fns@4.1.0_react-dom@19.2.4_react@19.2.4__react@19.2.4/node_modules/@base-ui/react/floating-ui-react/utils/composite.mjs","../../../common/temp/node_modules/.pnpm/@base-ui+react@1.7.0_@date-fns+tz@1.5.0_@types+react@19.2.14_date-fns@4.1.0_react-dom@19.2.4_react@19.2.4__react@19.2.4/node_modules/@base-ui/react/utils/useRegisteredLabelId.mjs","../../../common/temp/node_modules/.pnpm/@base-ui+react@1.7.0_@date-fns+tz@1.5.0_@types+react@19.2.14_date-fns@4.1.0_react-dom@19.2.4_react@19.2.4__react@19.2.4/node_modules/@base-ui/react/internals/labelable-provider/useLabel.mjs","../../../common/temp/node_modules/.pnpm/@base-ui+utils@0.3.2_@types+react@19.2.14_react-dom@19.2.4_react@19.2.4__react@19.2.4/node_modules/@base-ui/utils/useMergedRefs.mjs","../../../common/temp/node_modules/.pnpm/@base-ui+utils@0.3.2_@types+react@19.2.14_react-dom@19.2.4_react@19.2.4__react@19.2.4/node_modules/@base-ui/utils/reactVersion.mjs","../../../common/temp/node_modules/.pnpm/@base-ui+utils@0.3.2_@types+react@19.2.14_react-dom@19.2.4_react@19.2.4__react@19.2.4/node_modules/@base-ui/utils/getReactElementRef.mjs","../../../common/temp/node_modules/.pnpm/@base-ui+utils@0.3.2_@types+react@19.2.14_react-dom@19.2.4_react@19.2.4__react@19.2.4/node_modules/@base-ui/utils/mergeObjects.mjs","../../../common/temp/node_modules/.pnpm/@base-ui+utils@0.3.2_@types+react@19.2.14_react-dom@19.2.4_react@19.2.4__react@19.2.4/node_modules/@base-ui/utils/warn.mjs","../../../common/temp/node_modules/.pnpm/@base-ui+react@1.7.0_@date-fns+tz@1.5.0_@types+react@19.2.14_date-fns@4.1.0_react-dom@19.2.4_react@19.2.4__react@19.2.4/node_modules/@base-ui/react/internals/getStateAttributesProps.mjs","../../../common/temp/node_modules/.pnpm/@base-ui+react@1.7.0_@date-fns+tz@1.5.0_@types+react@19.2.14_date-fns@4.1.0_react-dom@19.2.4_react@19.2.4__react@19.2.4/node_modules/@base-ui/react/utils/resolveClassName.mjs","../../../common/temp/node_modules/.pnpm/@base-ui+react@1.7.0_@date-fns+tz@1.5.0_@types+react@19.2.14_date-fns@4.1.0_react-dom@19.2.4_react@19.2.4__react@19.2.4/node_modules/@base-ui/react/utils/resolveStyle.mjs","../../../common/temp/node_modules/.pnpm/@base-ui+react@1.7.0_@date-fns+tz@1.5.0_@types+react@19.2.14_date-fns@4.1.0_react-dom@19.2.4_react@19.2.4__react@19.2.4/node_modules/@base-ui/react/merge-props/mergeProps.mjs","../../../common/temp/node_modules/.pnpm/@base-ui+react@1.7.0_@date-fns+tz@1.5.0_@types+react@19.2.14_date-fns@4.1.0_react-dom@19.2.4_react@19.2.4__react@19.2.4/node_modules/@base-ui/react/internals/useRenderElement.mjs","../../../common/temp/node_modules/.pnpm/@base-ui+utils@0.3.2_@types+react@19.2.14_react-dom@19.2.4_react@19.2.4__react@19.2.4/node_modules/@base-ui/utils/useOnMount.mjs","../../../common/temp/node_modules/.pnpm/@base-ui+utils@0.3.2_@types+react@19.2.14_react-dom@19.2.4_react@19.2.4__react@19.2.4/node_modules/@base-ui/utils/useTimeout.mjs","../../../common/temp/node_modules/.pnpm/@base-ui+react@1.7.0_@date-fns+tz@1.5.0_@types+react@19.2.14_date-fns@4.1.0_react-dom@19.2.4_react@19.2.4__react@19.2.4/node_modules/@base-ui/react/field/utils/getCombinedFieldValidityData.mjs","../../../common/temp/node_modules/.pnpm/@base-ui+react@1.7.0_@date-fns+tz@1.5.0_@types+react@19.2.14_date-fns@4.1.0_react-dom@19.2.4_react@19.2.4__react@19.2.4/node_modules/@base-ui/react/field/root/useFieldValidation.mjs","../../../common/temp/node_modules/.pnpm/@base-ui+react@1.7.0_@date-fns+tz@1.5.0_@types+react@19.2.14_date-fns@4.1.0_react-dom@19.2.4_react@19.2.4__react@19.2.4/node_modules/@base-ui/react/internals/field-register-control/useFieldControlRegistration.mjs","../../../common/temp/node_modules/.pnpm/@base-ui+react@1.7.0_@date-fns+tz@1.5.0_@types+react@19.2.14_date-fns@4.1.0_react-dom@19.2.4_react@19.2.4__react@19.2.4/node_modules/@base-ui/react/field/root/FieldRoot.mjs","../../../common/temp/node_modules/.pnpm/@base-ui+utils@0.3.2_@types+react@19.2.14_react-dom@19.2.4_react@19.2.4__react@19.2.4/node_modules/@base-ui/utils/error.mjs","../../../common/temp/node_modules/.pnpm/@base-ui+react@1.7.0_@date-fns+tz@1.5.0_@types+react@19.2.14_date-fns@4.1.0_react-dom@19.2.4_react@19.2.4__react@19.2.4/node_modules/@base-ui/react/field/item/FieldItemContext.mjs","../../../common/temp/node_modules/.pnpm/@base-ui+react@1.7.0_@date-fns+tz@1.5.0_@types+react@19.2.14_date-fns@4.1.0_react-dom@19.2.4_react@19.2.4__react@19.2.4/node_modules/@base-ui/react/field/label/FieldLabel.mjs","../../../common/temp/node_modules/.pnpm/@base-ui+utils@0.3.2_@types+react@19.2.14_react-dom@19.2.4_react@19.2.4__react@19.2.4/node_modules/@base-ui/utils/useAnimationFrame.mjs","../../../common/temp/node_modules/.pnpm/@base-ui+react@1.7.0_@date-fns+tz@1.5.0_@types+react@19.2.14_date-fns@4.1.0_react-dom@19.2.4_react@19.2.4__react@19.2.4/node_modules/@base-ui/react/utils/resolveRef.mjs","../../../common/temp/node_modules/.pnpm/@base-ui+react@1.7.0_@date-fns+tz@1.5.0_@types+react@19.2.14_date-fns@4.1.0_react-dom@19.2.4_react@19.2.4__react@19.2.4/node_modules/@base-ui/react/internals/useAnimationsFinished.mjs","../../../common/temp/node_modules/.pnpm/@base-ui+react@1.7.0_@date-fns+tz@1.5.0_@types+react@19.2.14_date-fns@4.1.0_react-dom@19.2.4_react@19.2.4__react@19.2.4/node_modules/@base-ui/react/internals/useOpenChangeComplete.mjs","../../../common/temp/node_modules/.pnpm/@base-ui+react@1.7.0_@date-fns+tz@1.5.0_@types+react@19.2.14_date-fns@4.1.0_react-dom@19.2.4_react@19.2.4__react@19.2.4/node_modules/@base-ui/react/internals/stateAttributesMapping.mjs","../../../common/temp/node_modules/.pnpm/@base-ui+react@1.7.0_@date-fns+tz@1.5.0_@types+react@19.2.14_date-fns@4.1.0_react-dom@19.2.4_react@19.2.4__react@19.2.4/node_modules/@base-ui/react/internals/useTransitionStatus.mjs","../../../common/temp/node_modules/.pnpm/@base-ui+react@1.7.0_@date-fns+tz@1.5.0_@types+react@19.2.14_date-fns@4.1.0_react-dom@19.2.4_react@19.2.4__react@19.2.4/node_modules/@base-ui/react/field/description/FieldDescription.mjs","../../../common/temp/node_modules/.pnpm/@base-ui+utils@0.3.2_@types+react@19.2.14_react-dom@19.2.4_react@19.2.4__react@19.2.4/node_modules/@base-ui/utils/useControlled.mjs","../../../common/temp/node_modules/.pnpm/@base-ui+react@1.7.0_@date-fns+tz@1.5.0_@types+react@19.2.14_date-fns@4.1.0_react-dom@19.2.4_react@19.2.4__react@19.2.4/node_modules/@base-ui/react/internals/field-register-control/useRegisterFieldControl.mjs","../../../common/temp/node_modules/.pnpm/@base-ui+react@1.7.0_@date-fns+tz@1.5.0_@types+react@19.2.14_date-fns@4.1.0_react-dom@19.2.4_react@19.2.4__react@19.2.4/node_modules/@base-ui/react/internals/reason-parts.mjs","../../../common/temp/node_modules/.pnpm/@base-ui+react@1.7.0_@date-fns+tz@1.5.0_@types+react@19.2.14_date-fns@4.1.0_react-dom@19.2.4_react@19.2.4__react@19.2.4/node_modules/@base-ui/react/internals/createBaseUIEventDetails.mjs","../../../common/temp/node_modules/.pnpm/@base-ui+react@1.7.0_@date-fns+tz@1.5.0_@types+react@19.2.14_date-fns@4.1.0_react-dom@19.2.4_react@19.2.4__react@19.2.4/node_modules/@base-ui/react/field/item/FieldItem.mjs","../../../common/temp/node_modules/.pnpm/@base-ui+utils@0.3.2_@types+react@19.2.14_react-dom@19.2.4_react@19.2.4__react@19.2.4/node_modules/@base-ui/utils/visuallyHidden.mjs","../../../common/temp/node_modules/.pnpm/@base-ui+react@1.7.0_@date-fns+tz@1.5.0_@types+react@19.2.14_date-fns@4.1.0_react-dom@19.2.4_react@19.2.4__react@19.2.4/node_modules/@base-ui/react/radio/utils/stateAttributesMapping.mjs","../../../common/temp/node_modules/.pnpm/@base-ui+react@1.7.0_@date-fns+tz@1.5.0_@types+react@19.2.14_date-fns@4.1.0_react-dom@19.2.4_react@19.2.4__react@19.2.4/node_modules/@base-ui/react/utils/dispatchClickWithModifiers.mjs","../../../common/temp/node_modules/.pnpm/@base-ui+react@1.7.0_@date-fns+tz@1.5.0_@types+react@19.2.14_date-fns@4.1.0_react-dom@19.2.4_react@19.2.4__react@19.2.4/node_modules/@base-ui/react/internals/composite/root/CompositeRootContext.mjs","../../../common/temp/node_modules/.pnpm/@base-ui+react@1.7.0_@date-fns+tz@1.5.0_@types+react@19.2.14_date-fns@4.1.0_react-dom@19.2.4_react@19.2.4__react@19.2.4/node_modules/@base-ui/react/utils/useFocusableWhenDisabled.mjs","../../../common/temp/node_modules/.pnpm/@base-ui+react@1.7.0_@date-fns+tz@1.5.0_@types+react@19.2.14_date-fns@4.1.0_react-dom@19.2.4_react@19.2.4__react@19.2.4/node_modules/@base-ui/react/internals/use-button/useButton.mjs","../../../common/temp/node_modules/.pnpm/@base-ui+react@1.7.0_@date-fns+tz@1.5.0_@types+react@19.2.14_date-fns@4.1.0_react-dom@19.2.4_react@19.2.4__react@19.2.4/node_modules/@base-ui/react/internals/composite/constants.mjs","../../../common/temp/node_modules/.pnpm/@base-ui+react@1.7.0_@date-fns+tz@1.5.0_@types+react@19.2.14_date-fns@4.1.0_react-dom@19.2.4_react@19.2.4__react@19.2.4/node_modules/@base-ui/react/internals/composite/list/CompositeListContext.mjs","../../../common/temp/node_modules/.pnpm/@base-ui+react@1.7.0_@date-fns+tz@1.5.0_@types+react@19.2.14_date-fns@4.1.0_react-dom@19.2.4_react@19.2.4__react@19.2.4/node_modules/@base-ui/react/internals/composite/list/useCompositeListItem.mjs","../../../common/temp/node_modules/.pnpm/@base-ui+react@1.7.0_@date-fns+tz@1.5.0_@types+react@19.2.14_date-fns@4.1.0_react-dom@19.2.4_react@19.2.4__react@19.2.4/node_modules/@base-ui/react/internals/composite/item/useCompositeItem.mjs","../../../common/temp/node_modules/.pnpm/@base-ui+react@1.7.0_@date-fns+tz@1.5.0_@types+react@19.2.14_date-fns@4.1.0_react-dom@19.2.4_react@19.2.4__react@19.2.4/node_modules/@base-ui/react/internals/composite/item/CompositeItem.mjs","../../../common/temp/node_modules/.pnpm/@base-ui+react@1.7.0_@date-fns+tz@1.5.0_@types+react@19.2.14_date-fns@4.1.0_react-dom@19.2.4_react@19.2.4__react@19.2.4/node_modules/@base-ui/react/radio-group/RadioGroupContext.mjs","../../../common/temp/node_modules/.pnpm/@base-ui+react@1.7.0_@date-fns+tz@1.5.0_@types+react@19.2.14_date-fns@4.1.0_react-dom@19.2.4_react@19.2.4__react@19.2.4/node_modules/@base-ui/react/internals/serializeValue.mjs","../../../common/temp/node_modules/.pnpm/@base-ui+react@1.7.0_@date-fns+tz@1.5.0_@types+react@19.2.14_date-fns@4.1.0_react-dom@19.2.4_react@19.2.4__react@19.2.4/node_modules/@base-ui/react/radio/root/RadioRootContext.mjs","../../../common/temp/node_modules/.pnpm/@base-ui+react@1.7.0_@date-fns+tz@1.5.0_@types+react@19.2.14_date-fns@4.1.0_react-dom@19.2.4_react@19.2.4__react@19.2.4/node_modules/@base-ui/react/radio/root/RadioRoot.mjs","../../../common/temp/node_modules/.pnpm/@base-ui+react@1.7.0_@date-fns+tz@1.5.0_@types+react@19.2.14_date-fns@4.1.0_react-dom@19.2.4_react@19.2.4__react@19.2.4/node_modules/@base-ui/react/radio/indicator/RadioIndicator.mjs","../../../components/radio-button-group/src/radio-button-group.context.ts","../../../components/radio-button-group/src/radio-button-group-item.tsx","../../../common/temp/node_modules/.pnpm/@base-ui+react@1.7.0_@date-fns+tz@1.5.0_@types+react@19.2.14_date-fns@4.1.0_react-dom@19.2.4_react@19.2.4__react@19.2.4/node_modules/@base-ui/react/fieldset/root/FieldsetRoot.mjs","../../../common/temp/node_modules/.pnpm/@base-ui+react@1.7.0_@date-fns+tz@1.5.0_@types+react@19.2.14_date-fns@4.1.0_react-dom@19.2.4_react@19.2.4__react@19.2.4/node_modules/@base-ui/react/fieldset/legend/FieldsetLegend.mjs","../../../common/temp/node_modules/.pnpm/@base-ui+react@1.7.0_@date-fns+tz@1.5.0_@types+react@19.2.14_date-fns@4.1.0_react-dom@19.2.4_react@19.2.4__react@19.2.4/node_modules/@base-ui/react/internals/composite/composite.mjs","../../../common/temp/node_modules/.pnpm/@base-ui+react@1.7.0_@date-fns+tz@1.5.0_@types+react@19.2.14_date-fns@4.1.0_react-dom@19.2.4_react@19.2.4__react@19.2.4/node_modules/@base-ui/react/internals/composite/list/CompositeList.mjs","../../../common/temp/node_modules/.pnpm/@base-ui+utils@0.3.2_@types+react@19.2.14_react-dom@19.2.4_react@19.2.4__react@19.2.4/node_modules/@base-ui/utils/isElementDisabled.mjs","../../../common/temp/node_modules/.pnpm/@base-ui+react@1.7.0_@date-fns+tz@1.5.0_@types+react@19.2.14_date-fns@4.1.0_react-dom@19.2.4_react@19.2.4__react@19.2.4/node_modules/@base-ui/react/internals/composite/root/useCompositeRoot.mjs","../../../common/temp/node_modules/.pnpm/@base-ui+react@1.7.0_@date-fns+tz@1.5.0_@types+react@19.2.14_date-fns@4.1.0_react-dom@19.2.4_react@19.2.4__react@19.2.4/node_modules/@base-ui/react/internals/direction-context/DirectionContext.mjs","../../../common/temp/node_modules/.pnpm/@base-ui+react@1.7.0_@date-fns+tz@1.5.0_@types+react@19.2.14_date-fns@4.1.0_react-dom@19.2.4_react@19.2.4__react@19.2.4/node_modules/@base-ui/react/internals/composite/root/CompositeRoot.mjs","../../../common/temp/node_modules/.pnpm/@base-ui+react@1.7.0_@date-fns+tz@1.5.0_@types+react@19.2.14_date-fns@4.1.0_react-dom@19.2.4_react@19.2.4__react@19.2.4/node_modules/@base-ui/react/internals/useValueChanged.mjs","../../../common/temp/node_modules/.pnpm/@base-ui+react@1.7.0_@date-fns+tz@1.5.0_@types+react@19.2.14_date-fns@4.1.0_react-dom@19.2.4_react@19.2.4__react@19.2.4/node_modules/@base-ui/react/radio-group/RadioGroup.mjs","../../../components/radio-button-group/src/radio-button-group-root.tsx","../../../components/radio-button-group/src/constants.ts","../../../components/radio-button-group/src/radio-button-group.tsx"],"sourcesContent":["'use client';\n\nimport * as React from 'react';\nconst noop = () => {};\nexport const useIsoLayoutEffect = typeof document !== 'undefined' ? React.useLayoutEffect : noop;","import * as React from 'react';\n\n/**\n * A clone of the React namespace for reading APIs that may be missing in older\n * supported React versions. Bundlers can rewrite direct `React.someNewApi`\n * reads into named imports, which breaks React 17. Reading from this cloned\n * object keeps those lookups optional.\n *\n * @see https://github.com/mui/material-ui/issues/41190#issuecomment-2040873379\n */\nexport const SafeReact = {\n ...React\n};","'use client';\n\nimport * as React from 'react';\nconst UNINITIALIZED = {};\n\n/**\n * A React.useRef() that is initialized with a function. Note that it accepts an optional\n * initialization argument, so the initialization function doesn't need to be an inline closure.\n *\n * @usage\n * const ref = useRefWithInit(sortColumns, columns)\n */\n\nexport function useRefWithInit(init, initArg) {\n const ref = React.useRef(UNINITIALIZED);\n if (ref.current === UNINITIALIZED) {\n ref.current = init(initArg);\n }\n return ref;\n}","'use client';\n\nimport { SafeReact } from \"./safeReact.mjs\";\nimport { useRefWithInit } from \"./useRefWithInit.mjs\";\nconst useInsertionEffect = SafeReact.useInsertionEffect;\nconst useSafeInsertionEffect =\n// React 17 doesn't have useInsertionEffect.\nuseInsertionEffect &&\n// Preact replaces useInsertionEffect with useLayoutEffect and fires too late.\nuseInsertionEffect !== SafeReact.useLayoutEffect ? useInsertionEffect : fn => fn();\n/**\n * Stabilizes the function passed so it's always the same between renders.\n *\n * The function becomes non-reactive to any values it captures.\n * It can safely be passed as a dependency of `React.useMemo` and `React.useEffect` without re-triggering them if its captured values change.\n *\n * The function must only be called inside effects and event handlers, never during render (which throws an error).\n *\n * This hook is a more permissive version of React 19.2's `React.useEffectEvent` in that it can be passed through contexts and called in event handler props, not just effects.\n */\nexport function useStableCallback(callback) {\n const stable = useRefWithInit(createStableCallback).current;\n stable.next = callback;\n useSafeInsertionEffect(stable.effect);\n return stable.trampoline;\n}\nfunction createStableCallback() {\n const stable = {\n next: undefined,\n callback: assertNotCalled,\n trampoline: (...args) => stable.callback?.(...args),\n effect: () => {\n stable.callback = stable.next;\n }\n };\n return stable;\n}\nfunction assertNotCalled() {\n if (process.env.NODE_ENV !== 'production') {\n // TODO: fix mui/no-guarded-throw\n // eslint-disable-next-line mui/no-guarded-throw\n throw /* minify-error-disabled */new Error('Base UI: Cannot call an event handler while rendering.');\n }\n}","/**\n * Creates a formatErrorMessage function with a custom URL and prefix.\n * @param baseUrl - The base URL for the error page (e.g., 'https://base-ui.com/production-error')\n * @param prefix - The prefix for the error message (e.g., 'Base UI')\n * @returns A function that formats error messages with the given URL and prefix\n */\nexport function createFormatErrorMessage(baseUrl, prefix) {\n return function formatErrorMessage(code, ...args) {\n const url = new URL(baseUrl);\n url.searchParams.set('code', code.toString());\n args.forEach(arg => url.searchParams.append('args[]', arg));\n return `${prefix} error #${code}; visit ${url} for the full message.`;\n };\n}\n\n/**\n * WARNING: Don't import this directly. It's imported by the code generated by\n * `@mui/internal-babel-plugin-minify-errors`. Make sure to always use string literals in `Error`\n * constructors to ensure the plugin works as expected. Supported patterns include:\n * throw new Error('My message');\n * throw new Error(`My message: ${foo}`);\n * throw new Error(`My message: ${foo}` + 'another string');\n * ...\n */\nconst formatErrorMessage = createFormatErrorMessage('https://base-ui.com/production-error', 'Base UI');\nexport default formatErrorMessage;","export function NOOP() {}\nexport const EMPTY_ARRAY = Object.freeze([]);\nexport const EMPTY_OBJECT = Object.freeze({});","export const DEFAULT_VALIDITY_STATE = {\n badInput: false,\n customError: false,\n patternMismatch: false,\n rangeOverflow: false,\n rangeUnderflow: false,\n stepMismatch: false,\n tooLong: false,\n tooShort: false,\n typeMismatch: false,\n valid: null,\n valueMissing: false\n};\nexport const DEFAULT_FIELD_STATE_ATTRIBUTES = {\n valid: null,\n touched: false,\n dirty: false,\n filled: false,\n focused: false\n};\nexport const DEFAULT_FIELD_ROOT_STATE = {\n disabled: false,\n ...DEFAULT_FIELD_STATE_ATTRIBUTES\n};\nexport const fieldValidityMapping = {\n valid(value) {\n if (value === null) {\n return null;\n }\n if (value) {\n return {\n 'data-valid': ''\n };\n }\n return {\n 'data-invalid': ''\n };\n }\n};","'use client';\n\nimport _formatErrorMessage from \"@base-ui/utils/formatErrorMessage\";\nimport * as React from 'react';\nimport { EMPTY_OBJECT } from '@base-ui/utils/empty';\nimport { NOOP } from \"../noop.mjs\";\nimport { DEFAULT_FIELD_ROOT_STATE, DEFAULT_VALIDITY_STATE } from \"../field-constants/constants.mjs\";\nexport const DEFAULT_FIELD_ROOT_CONTEXT = {\n invalid: undefined,\n name: undefined,\n validityData: {\n state: DEFAULT_VALIDITY_STATE,\n errors: [],\n error: '',\n value: '',\n initialValue: null\n },\n setValidityData: NOOP,\n disabled: undefined,\n setTouched: NOOP,\n setDirty: NOOP,\n setFilled: NOOP,\n setFocused: NOOP,\n validationMode: 'onSubmit',\n shouldValidateOnChange: () => false,\n state: DEFAULT_FIELD_ROOT_STATE,\n registerFieldControl: NOOP,\n validation: {\n getValidationProps: (_disabled, props = EMPTY_OBJECT) => props,\n inputRef: {\n current: null\n },\n registeredInputs: new Map(),\n registerInput: NOOP,\n getInputControl: () => null,\n commit: async () => {},\n change: NOOP\n }\n};\nexport const FieldRootContext = /*#__PURE__*/React.createContext(DEFAULT_FIELD_ROOT_CONTEXT);\nif (process.env.NODE_ENV !== \"production\") FieldRootContext.displayName = \"FieldRootContext\";\nexport function useFieldRootContext(optional = true) {\n const context = React.useContext(FieldRootContext);\n if (context.setValidityData === NOOP && !optional) {\n throw new Error(process.env.NODE_ENV !== \"production\" ? 'Base UI: FieldRootContext is missing. Field parts must be placed within <Field.Root>.' : _formatErrorMessage(28));\n }\n return context;\n}","'use client';\n\nimport _formatErrorMessage from \"@base-ui/utils/formatErrorMessage\";\nimport * as React from 'react';\nexport const FieldsetRootContext = /*#__PURE__*/React.createContext(undefined);\nif (process.env.NODE_ENV !== \"production\") FieldsetRootContext.displayName = \"FieldsetRootContext\";\nexport function useFieldsetRootContext(optional = false) {\n const context = React.useContext(FieldsetRootContext);\n if (!context && !optional) {\n throw new Error(process.env.NODE_ENV !== \"production\" ? 'Base UI: FieldsetRootContext is missing. Fieldset parts must be placed within <Fieldset.Root>.' : _formatErrorMessage(86));\n }\n return context;\n}","'use client';\n\nimport * as React from 'react';\nimport { NOOP } from \"../noop.mjs\";\nexport const FormContext = /*#__PURE__*/React.createContext({\n elementRef: {\n current: null\n },\n formRef: {\n current: {\n fields: new Map()\n }\n },\n errors: {},\n clearErrors: NOOP,\n validationMode: 'onSubmit',\n submitAttemptedRef: {\n current: false\n }\n});\nif (process.env.NODE_ENV !== \"production\") FormContext.displayName = \"FormContext\";\nexport function useFormContext() {\n return React.useContext(FormContext);\n}","'use client';\n\nimport * as React from 'react';\nimport { SafeReact } from \"./safeReact.mjs\";\nlet globalId = 0;\n\n// TODO React 17: Remove `useGlobalId` once React 17 support is removed\nfunction useGlobalId(idOverride, prefix = 'mui') {\n const [defaultId, setDefaultId] = React.useState(idOverride);\n const id = idOverride || defaultId;\n React.useEffect(() => {\n if (defaultId == null) {\n // Fallback to this default id when possible.\n // Use the incrementing value for client-side rendering only.\n // We can't use it server-side.\n // If you want to use random values please consider the Birthday Problem: https://en.wikipedia.org/wiki/Birthday_problem\n globalId += 1;\n setDefaultId(`${prefix}-${globalId}`);\n }\n }, [defaultId, prefix]);\n return id;\n}\nconst maybeReactUseId = SafeReact.useId;\n\n/**\n *\n * @example <div id={useId()} />\n * @param idOverride\n * @returns {string}\n */\nexport function useId(idOverride, prefix) {\n // React.useId() is only available from React 17.0.0.\n if (maybeReactUseId !== undefined) {\n const reactId = maybeReactUseId();\n return idOverride ?? (prefix ? `${prefix}-${reactId}` : reactId);\n }\n\n // TODO: uncomment once we enable eslint-plugin-react-compiler // eslint-disable-next-line react-compiler/react-compiler\n // eslint-disable-next-line react-hooks/rules-of-hooks -- `React.useId` is invariant at runtime.\n return useGlobalId(idOverride, prefix);\n}","'use client';\n\nimport { useId } from '@base-ui/utils/useId';\n\n/**\n * Wraps `useId` and prefixes generated `id`s with `base-ui-`\n * @param {string | undefined} idOverride overrides the generated id when provided\n * @returns {string | undefined}\n */\nexport function useBaseUiId(idOverride) {\n return useId(idOverride, 'base-ui');\n}","'use client';\n\nimport * as React from 'react';\nimport { NOOP } from \"../noop.mjs\";\n/**\n * A context for providing [labelable elements](https://html.spec.whatwg.org/multipage/forms.html#category-label)\\\n * with an accessible name (label) and description.\n */\nexport const LabelableContext = /*#__PURE__*/React.createContext({\n controlId: undefined,\n registerControlId: NOOP,\n labelId: undefined,\n setLabelId: NOOP,\n messageIds: [],\n setMessageIds: NOOP,\n getDescriptionProps: externalProps => externalProps\n});\nif (process.env.NODE_ENV !== \"production\") LabelableContext.displayName = \"LabelableContext\";\nexport function useLabelableContext() {\n return React.useContext(LabelableContext);\n}","'use client';\n\nimport * as React from 'react';\nimport { useStableCallback } from '@base-ui/utils/useStableCallback';\nimport { useRefWithInit } from '@base-ui/utils/useRefWithInit';\nimport { useBaseUiId } from \"../useBaseUiId.mjs\";\nimport { LabelableContext, useLabelableContext } from \"./LabelableContext.mjs\";\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nexport const LabelableProvider = function LabelableProvider(props) {\n const defaultId = useBaseUiId();\n const initialControlId = props.controlId === undefined ? defaultId : props.controlId;\n const [controlId, setControlIdState] = React.useState(initialControlId);\n const [labelId, setLabelId] = React.useState(props.labelId);\n const [messageIds, setMessageIds] = React.useState([]);\n const registrationsRef = useRefWithInit(() => new Map());\n const {\n messageIds: parentMessageIds\n } = useLabelableContext();\n const registerControlId = useStableCallback((source, nextId) => {\n const registrations = registrationsRef.current;\n if (nextId === undefined) {\n registrations.delete(source);\n return;\n }\n registrations.set(source, nextId);\n\n // Only flush when registering, not when unregistering.\n // This prevents loops during rapid unmount/remount cycles (e.g. React Activity).\n // The next registration will pick up the correct state.\n setControlIdState(prev => {\n if (registrations.size === 0) {\n return undefined;\n }\n let nextControlId;\n for (const id of registrations.values()) {\n if (prev !== undefined && id === prev) {\n return prev;\n }\n if (nextControlId === undefined) {\n nextControlId = id;\n }\n }\n return nextControlId;\n });\n });\n const getDescriptionProps = React.useCallback(externalProps => {\n const ids = externalProps['aria-describedby'] ? externalProps['aria-describedby'].split(' ') : [];\n ids.push(...parentMessageIds, ...messageIds);\n return {\n ...externalProps,\n 'aria-describedby': Array.from(new Set(ids)).join(' ') || undefined\n };\n }, [parentMessageIds, messageIds]);\n const contextValue = React.useMemo(() => ({\n controlId,\n registerControlId,\n labelId,\n setLabelId,\n messageIds,\n setMessageIds,\n getDescriptionProps\n }), [controlId, registerControlId, labelId, setLabelId, messageIds, setMessageIds, getDescriptionProps]);\n return /*#__PURE__*/_jsx(LabelableContext.Provider, {\n value: contextValue,\n children: props.children\n });\n};\nif (process.env.NODE_ENV !== \"production\") LabelableProvider.displayName = \"LabelableProvider\";","'use client';\n\nimport * as React from 'react';\nimport { useIsoLayoutEffect } from '@base-ui/utils/useIsoLayoutEffect';\nimport { useBaseUiId } from \"../useBaseUiId.mjs\";\nexport function useAriaLabelledBy(explicitAriaLabelledBy, labelId, labelSourceRef, enableFallback = true, labelSourceId) {\n const [fallbackAriaLabelledBy, setFallbackAriaLabelledBy] = React.useState();\n const generatedLabelId = useBaseUiId(labelSourceId ? `${labelSourceId}-label` : undefined);\n const ariaLabelledBy = explicitAriaLabelledBy ?? labelId ?? fallbackAriaLabelledBy;\n\n // Fallback for <span> controls labelled by wrapping/sibling native <label>.\n // Run after every commit so DOM association changes (e.g. label mount/unmount)\n // are reflected even when props/state deps are unchanged.\n // eslint-disable-next-line react-hooks/exhaustive-deps\n useIsoLayoutEffect(() => {\n const nextAriaLabelledBy = explicitAriaLabelledBy || labelId || !enableFallback ? undefined : getAriaLabelledBy(labelSourceRef.current, generatedLabelId);\n if (fallbackAriaLabelledBy !== nextAriaLabelledBy) {\n setFallbackAriaLabelledBy(nextAriaLabelledBy);\n }\n });\n return ariaLabelledBy;\n}\nfunction getAriaLabelledBy(labelSource, generatedLabelId) {\n const label = findAssociatedLabel(labelSource);\n if (!label) {\n return undefined;\n }\n if (!label.id && generatedLabelId) {\n label.id = generatedLabelId;\n }\n return label.id || undefined;\n}\nfunction findAssociatedLabel(labelSource) {\n if (!labelSource) {\n return undefined;\n }\n\n // Fast path before the expensive `.labels` read.\n const parent = labelSource.parentElement;\n if (parent && parent.tagName === 'LABEL') {\n return parent;\n }\n const controlId = labelSource.id;\n if (controlId) {\n const nextSibling = labelSource.nextElementSibling;\n if (nextSibling && nextSibling.htmlFor === controlId) {\n return nextSibling;\n }\n }\n const labels = labelSource.labels;\n return labels && labels[0];\n}","function hasWindow() {\n return typeof window !== 'undefined';\n}\nfunction getNodeName(node) {\n if (isNode(node)) {\n return (node.nodeName || '').toLowerCase();\n }\n // Mocked nodes in testing environments may not be instances of Node. By\n // returning `#document` an infinite loop won't occur.\n // https://github.com/floating-ui/floating-ui/issues/2317\n return '#document';\n}\nfunction getWindow(node) {\n var _node$ownerDocument;\n return (node == null || (_node$ownerDocument = node.ownerDocument) == null ? void 0 : _node$ownerDocument.defaultView) || window;\n}\nfunction getDocumentElement(node) {\n var _ref;\n return (_ref = (isNode(node) ? node.ownerDocument : node.document) || window.document) == null ? void 0 : _ref.documentElement;\n}\nfunction isNode(value) {\n if (!hasWindow()) {\n return false;\n }\n return value instanceof Node || value instanceof getWindow(value).Node;\n}\nfunction isElement(value) {\n if (!hasWindow()) {\n return false;\n }\n return value instanceof Element || value instanceof getWindow(value).Element;\n}\nfunction isHTMLElement(value) {\n if (!hasWindow()) {\n return false;\n }\n return value instanceof HTMLElement || value instanceof getWindow(value).HTMLElement;\n}\nfunction isShadowRoot(value) {\n if (!hasWindow() || typeof ShadowRoot === 'undefined') {\n return false;\n }\n return value instanceof ShadowRoot || value instanceof getWindow(value).ShadowRoot;\n}\nfunction isOverflowElement(element) {\n const {\n overflow,\n overflowX,\n overflowY,\n display\n } = getComputedStyle(element);\n return /auto|scroll|overlay|hidden|clip/.test(overflow + overflowY + overflowX) && display !== 'inline' && display !== 'contents';\n}\nfunction isTableElement(element) {\n return /^(table|td|th)$/.test(getNodeName(element));\n}\nfunction isTopLayer(element) {\n try {\n if (element.matches(':popover-open')) {\n return true;\n }\n } catch (_e) {\n // no-op\n }\n try {\n return element.matches(':modal');\n } catch (_e) {\n return false;\n }\n}\nconst willChangeRe = /transform|translate|scale|rotate|perspective|filter/;\nconst containRe = /paint|layout|strict|content/;\nconst isNotNone = value => !!value && value !== 'none';\nlet isWebKitValue;\nfunction isContainingBlock(elementOrCss) {\n const css = isElement(elementOrCss) ? getComputedStyle(elementOrCss) : elementOrCss;\n\n // https://developer.mozilla.org/en-US/docs/Web/CSS/Containing_block#identifying_the_containing_block\n // https://drafts.csswg.org/css-transforms-2/#individual-transforms\n return isNotNone(css.transform) || isNotNone(css.translate) || isNotNone(css.scale) || isNotNone(css.rotate) || isNotNone(css.perspective) || !isWebKit() && (isNotNone(css.backdropFilter) || isNotNone(css.filter)) || willChangeRe.test(css.willChange || '') || containRe.test(css.contain || '');\n}\nfunction getContainingBlock(element) {\n let currentNode = getParentNode(element);\n while (isHTMLElement(currentNode) && !isLastTraversableNode(currentNode)) {\n if (isContainingBlock(currentNode)) {\n return currentNode;\n } else if (isTopLayer(currentNode)) {\n return null;\n }\n currentNode = getParentNode(currentNode);\n }\n return null;\n}\nfunction isWebKit() {\n if (isWebKitValue == null) {\n isWebKitValue = typeof CSS !== 'undefined' && CSS.supports && CSS.supports('-webkit-backdrop-filter', 'none');\n }\n return isWebKitValue;\n}\nfunction isLastTraversableNode(node) {\n return /^(html|body|#document)$/.test(getNodeName(node));\n}\nfunction getComputedStyle(element) {\n return getWindow(element).getComputedStyle(element);\n}\nfunction getNodeScroll(element) {\n if (isElement(element)) {\n return {\n scrollLeft: element.scrollLeft,\n scrollTop: element.scrollTop\n };\n }\n return {\n scrollLeft: element.scrollX,\n scrollTop: element.scrollY\n };\n}\nfunction getParentNode(node) {\n if (getNodeName(node) === 'html') {\n return node;\n }\n const result =\n // Step into the shadow DOM of the parent of a slotted node.\n node.assignedSlot ||\n // DOM Element detected.\n node.parentNode ||\n // ShadowRoot detected.\n isShadowRoot(node) && node.host ||\n // Fallback.\n getDocumentElement(node);\n return isShadowRoot(result) ? result.host : result;\n}\nfunction getNearestOverflowAncestor(node) {\n const parentNode = getParentNode(node);\n if (isLastTraversableNode(parentNode)) {\n return (node.ownerDocument || node).body;\n }\n if (isHTMLElement(parentNode) && isOverflowElement(parentNode)) {\n return parentNode;\n }\n return getNearestOverflowAncestor(parentNode);\n}\nfunction getOverflowAncestors(node, list, traverseIframes) {\n var _node$ownerDocument2;\n if (list === void 0) {\n list = [];\n }\n if (traverseIframes === void 0) {\n traverseIframes = true;\n }\n const scrollableAncestor = getNearestOverflowAncestor(node);\n const isBody = scrollableAncestor === ((_node$ownerDocument2 = node.ownerDocument) == null ? void 0 : _node$ownerDocument2.body);\n const win = getWindow(scrollableAncestor);\n if (isBody) {\n const frameElement = getFrameElement(win);\n return list.concat(win, win.visualViewport || [], isOverflowElement(scrollableAncestor) ? scrollableAncestor : [], frameElement && traverseIframes ? getOverflowAncestors(frameElement) : []);\n } else {\n return list.concat(scrollableAncestor, getOverflowAncestors(scrollableAncestor, [], traverseIframes));\n }\n}\nfunction getFrameElement(win) {\n return win.parent && Object.getPrototypeOf(win.parent) ? win.frameElement : null;\n}\n\nexport { getComputedStyle, getContainingBlock, getDocumentElement, getFrameElement, getNearestOverflowAncestor, getNodeName, getNodeScroll, getOverflowAncestors, getParentNode, getWindow, isContainingBlock, isElement, isHTMLElement, isLastTraversableNode, isNode, isOverflowElement, isShadowRoot, isTableElement, isTopLayer, isWebKit };\n","'use client';\n\nimport * as React from 'react';\nimport { useIsoLayoutEffect } from '@base-ui/utils/useIsoLayoutEffect';\nimport { useStableCallback } from '@base-ui/utils/useStableCallback';\nimport { useRefWithInit } from '@base-ui/utils/useRefWithInit';\nimport { isElement } from '@floating-ui/utils/dom';\nimport { NOOP } from \"../noop.mjs\";\nimport { useBaseUiId } from \"../useBaseUiId.mjs\";\nimport { useLabelableContext } from \"./LabelableContext.mjs\";\nexport function useLabelableId(params = {}) {\n const {\n id,\n implicit = false,\n controlRef\n } = params;\n const {\n controlId,\n registerControlId\n } = useLabelableContext();\n const defaultId = useBaseUiId(id);\n const controlIdForEffect = implicit ? controlId : undefined;\n const controlSourceRef = useRefWithInit(() => Symbol());\n const hasRegisteredRef = React.useRef(false);\n const hadExplicitIdRef = React.useRef(id != null);\n const unregisterControlId = useStableCallback(() => {\n if (!hasRegisteredRef.current || registerControlId === NOOP) {\n return;\n }\n hasRegisteredRef.current = false;\n registerControlId(controlSourceRef.current, undefined);\n });\n useIsoLayoutEffect(() => {\n if (registerControlId === NOOP) {\n return undefined;\n }\n let nextId;\n if (implicit) {\n const elem = controlRef?.current;\n if (isElement(elem) && elem.closest('label') != null) {\n nextId = id ?? null;\n } else {\n nextId = controlIdForEffect ?? defaultId;\n }\n } else if (id != null) {\n hadExplicitIdRef.current = true;\n nextId = id;\n } else if (hadExplicitIdRef.current) {\n nextId = defaultId;\n } else {\n unregisterControlId();\n return undefined;\n }\n if (nextId === undefined) {\n unregisterControlId();\n return undefined;\n }\n hasRegisteredRef.current = true;\n registerControlId(controlSourceRef.current, nextId);\n return undefined;\n }, [id, controlRef, controlIdForEffect, registerControlId, implicit, defaultId, controlSourceRef, unregisterControlId]);\n React.useEffect(() => {\n return unregisterControlId;\n }, [unregisterControlId]);\n return controlId ?? defaultId;\n}","export { getWindow as ownerWindow } from '@floating-ui/utils/dom';\nexport function ownerDocument(node) {\n return node?.ownerDocument || document;\n}","import { isShadowRoot } from '@floating-ui/utils/dom';\nexport function activeElement(doc) {\n let element = doc.activeElement;\n while (element?.shadowRoot?.activeElement != null) {\n element = element.shadowRoot.activeElement;\n }\n return element;\n}\nexport function contains(parent, child) {\n if (!parent || !child) {\n return false;\n }\n const rootNode = child.getRootNode?.();\n\n // First, attempt with the faster native method.\n if (parent.contains(child)) {\n return true;\n }\n\n // Then fall back to traversing out of shadow roots when needed.\n if (rootNode && isShadowRoot(rootNode)) {\n let next = child;\n while (next) {\n if (parent === next) {\n return true;\n }\n next = next.parentNode || next.host;\n }\n }\n return false;\n}\nexport function getTarget(event) {\n if ('composedPath' in event) {\n return event.composedPath()[0];\n }\n\n // TS assumes `composedPath()` always exists, but older browsers without\n // shadow DOM support still fall back to `target`.\n return event.target;\n}","import { floor } from '@floating-ui/utils';\nimport { getComputedStyle } from '@floating-ui/utils/dom';\nimport { stopEvent } from \"./event.mjs\";\nimport { ARROW_DOWN, ARROW_LEFT, ARROW_RIGHT, ARROW_UP } from \"./constants.mjs\";\nexport function isDifferentGridRow(index, cols, prevRow) {\n return Math.floor(index / cols) !== prevRow;\n}\nexport function isIndexOutOfListBounds(list, index) {\n return index < 0 || index >= list.length;\n}\nexport function getMinListIndex(listRef, disabledIndices) {\n return findNonDisabledListIndex(listRef.current, {\n disabledIndices\n });\n}\nexport function getMaxListIndex(listRef, disabledIndices) {\n return findNonDisabledListIndex(listRef.current, {\n decrement: true,\n startingIndex: listRef.current.length,\n disabledIndices\n });\n}\nexport function findNonDisabledListIndex(list, {\n startingIndex = -1,\n decrement = false,\n disabledIndices,\n amount = 1\n} = {}) {\n let index = startingIndex;\n do {\n index += decrement ? -amount : amount;\n } while (index >= 0 && index <= list.length - 1 && isListIndexDisabled(list, index, disabledIndices));\n return index;\n}\nexport function getGridNavigatedIndex(list, {\n event,\n orientation,\n loopFocus,\n onLoop,\n rtl,\n cols,\n disabledIndices,\n minIndex,\n maxIndex,\n prevIndex,\n stopEvent: stop = false\n}) {\n let nextIndex = prevIndex;\n let verticalDirection;\n if (event.key === ARROW_UP) {\n verticalDirection = 'up';\n } else if (event.key === ARROW_DOWN) {\n verticalDirection = 'down';\n }\n if (verticalDirection) {\n // -------------------------------------------------------------------------\n // Detect row structure only when handling vertical navigation. This keeps\n // the non-vertical key paths free from row inference work.\n // -------------------------------------------------------------------------\n const rows = [];\n const rowIndexMap = [];\n let hasRoleRow = false;\n let visibleItemCount = 0;\n {\n let currentRowEl = null;\n let currentRowIndex = -1;\n list.forEach((el, idx) => {\n if (el == null) {\n return;\n }\n visibleItemCount += 1;\n const rowEl = el.closest('[role=\"row\"]');\n if (rowEl) {\n hasRoleRow = true;\n }\n if (rowEl !== currentRowEl || currentRowIndex === -1) {\n currentRowEl = rowEl;\n currentRowIndex += 1;\n rows[currentRowIndex] = [];\n }\n rows[currentRowIndex].push(idx);\n rowIndexMap[idx] = currentRowIndex;\n });\n }\n let hasDomRows = false;\n let inferredDomCols = 0;\n if (hasRoleRow) {\n for (const row of rows) {\n const rowLength = row.length;\n if (rowLength > inferredDomCols) {\n inferredDomCols = rowLength;\n }\n if (rowLength !== cols) {\n hasDomRows = true;\n }\n }\n }\n const hasVirtualizedGaps = hasDomRows && visibleItemCount < list.length;\n const verticalCols = inferredDomCols || cols;\n const navigateVertically = direction => {\n if (!hasDomRows || prevIndex === -1) {\n return undefined;\n }\n const currentRow = rowIndexMap[prevIndex];\n if (currentRow == null) {\n return undefined;\n }\n const colInRow = rows[currentRow].indexOf(prevIndex);\n const step = direction === 'up' ? -1 : 1;\n for (let nextRow = currentRow + step, i = 0; i < rows.length; i += 1, nextRow += step) {\n if (nextRow < 0 || nextRow >= rows.length) {\n if (!loopFocus || hasVirtualizedGaps) {\n return undefined;\n }\n nextRow = nextRow < 0 ? rows.length - 1 : 0;\n if (onLoop) {\n const clampedCol = Math.min(colInRow, rows[nextRow].length - 1);\n const targetItemIndex = rows[nextRow][clampedCol] ?? rows[nextRow][0];\n const returnedItemIndex = onLoop(event, prevIndex, targetItemIndex);\n nextRow = rowIndexMap[returnedItemIndex] ?? nextRow;\n }\n }\n const targetRow = rows[nextRow];\n for (let col = Math.min(colInRow, targetRow.length - 1); col >= 0; col -= 1) {\n const candidate = targetRow[col];\n if (!isListIndexDisabled(list, candidate, disabledIndices)) {\n return candidate;\n }\n }\n }\n return undefined;\n };\n const navigateVerticallyWithInferredRows = direction => {\n if (!hasVirtualizedGaps || prevIndex === -1) {\n return undefined;\n }\n const colInRow = prevIndex % verticalCols;\n const rowStep = direction === 'up' ? -verticalCols : verticalCols;\n const lastRowStart = maxIndex - maxIndex % verticalCols;\n const rowCount = floor(maxIndex / verticalCols) + 1;\n for (let rowStart = prevIndex - colInRow + rowStep, i = 0; i < rowCount; i += 1, rowStart += rowStep) {\n if (rowStart < 0 || rowStart > maxIndex) {\n if (!loopFocus) {\n return undefined;\n }\n rowStart = rowStart < 0 ? lastRowStart : 0;\n }\n const rowEnd = Math.min(rowStart + verticalCols - 1, maxIndex);\n for (let candidate = Math.min(rowStart + colInRow, rowEnd); candidate >= rowStart; candidate -= 1) {\n if (!isListIndexDisabled(list, candidate, disabledIndices)) {\n return candidate;\n }\n }\n }\n return undefined;\n };\n if (stop) {\n stopEvent(event);\n }\n const verticalCandidate = navigateVertically(verticalDirection) ?? navigateVerticallyWithInferredRows(verticalDirection);\n if (verticalCandidate !== undefined) {\n nextIndex = verticalCandidate;\n } else if (prevIndex === -1) {\n nextIndex = verticalDirection === 'up' ? maxIndex : minIndex;\n } else {\n nextIndex = findNonDisabledListIndex(list, {\n startingIndex: prevIndex,\n amount: verticalCols,\n decrement: verticalDirection === 'up',\n disabledIndices\n });\n if (loopFocus) {\n if (verticalDirection === 'up' && (prevIndex - verticalCols < minIndex || nextIndex < 0)) {\n const col = prevIndex % verticalCols;\n const maxCol = maxIndex % verticalCols;\n const offset = maxIndex - (maxCol - col);\n if (maxCol === col) {\n nextIndex = maxIndex;\n } else {\n nextIndex = maxCol > col ? offset : offset - verticalCols;\n }\n if (onLoop) {\n nextIndex = onLoop(event, prevIndex, nextIndex);\n }\n }\n if (verticalDirection === 'down' && prevIndex + verticalCols > maxIndex) {\n nextIndex = findNonDisabledListIndex(list, {\n startingIndex: prevIndex % verticalCols - verticalCols,\n amount: verticalCols,\n disabledIndices\n });\n if (onLoop) {\n nextIndex = onLoop(event, prevIndex, nextIndex);\n }\n }\n }\n }\n if (isIndexOutOfListBounds(list, nextIndex)) {\n nextIndex = prevIndex;\n }\n }\n\n // Remains on the same row/column.\n if (orientation === 'both') {\n const prevRow = floor(prevIndex / cols);\n if (event.key === (rtl ? ARROW_LEFT : ARROW_RIGHT)) {\n if (stop) {\n stopEvent(event);\n }\n if (prevIndex % cols !== cols - 1) {\n nextIndex = findNonDisabledListIndex(list, {\n startingIndex: prevIndex,\n disabledIndices\n });\n if (loopFocus && isDifferentGridRow(nextIndex, cols, prevRow)) {\n nextIndex = findNonDisabledListIndex(list, {\n startingIndex: prevIndex - prevIndex % cols - 1,\n disabledIndices\n });\n if (onLoop) {\n nextIndex = onLoop(event, prevIndex, nextIndex);\n }\n }\n } else if (loopFocus) {\n nextIndex = findNonDisabledListIndex(list, {\n startingIndex: prevIndex - prevIndex % cols - 1,\n disabledIndices\n });\n if (onLoop) {\n nextIndex = onLoop(event, prevIndex, nextIndex);\n }\n }\n if (isDifferentGridRow(nextIndex, cols, prevRow)) {\n nextIndex = prevIndex;\n }\n }\n if (event.key === (rtl ? ARROW_RIGHT : ARROW_LEFT)) {\n if (stop) {\n stopEvent(event);\n }\n if (prevIndex % cols !== 0) {\n nextIndex = findNonDisabledListIndex(list, {\n startingIndex: prevIndex,\n decrement: true,\n disabledIndices\n });\n if (loopFocus && isDifferentGridRow(nextIndex, cols, prevRow)) {\n nextIndex = findNonDisabledListIndex(list, {\n startingIndex: prevIndex + (cols - prevIndex % cols),\n decrement: true,\n disabledIndices\n });\n if (onLoop) {\n nextIndex = onLoop(event, prevIndex, nextIndex);\n }\n }\n } else if (loopFocus) {\n nextIndex = findNonDisabledListIndex(list, {\n startingIndex: prevIndex + (cols - prevIndex % cols),\n decrement: true,\n disabledIndices\n });\n if (onLoop) {\n nextIndex = onLoop(event, prevIndex, nextIndex);\n }\n }\n if (isDifferentGridRow(nextIndex, cols, prevRow)) {\n nextIndex = prevIndex;\n }\n }\n const lastRow = floor(maxIndex / cols) === prevRow;\n if (isIndexOutOfListBounds(list, nextIndex)) {\n if (loopFocus && lastRow) {\n nextIndex = event.key === (rtl ? ARROW_RIGHT : ARROW_LEFT) ? maxIndex : findNonDisabledListIndex(list, {\n startingIndex: prevIndex - prevIndex % cols - 1,\n disabledIndices\n });\n if (onLoop) {\n nextIndex = onLoop(event, prevIndex, nextIndex);\n }\n } else {\n nextIndex = prevIndex;\n }\n }\n }\n return nextIndex;\n}\n\n/** For each cell index, gets the item index that occupies that cell */\nexport function createGridCellMap(sizes, cols, dense) {\n const cellMap = [];\n let startIndex = 0;\n sizes.forEach(({\n width,\n height\n }, index) => {\n if (width > cols) {\n if (process.env.NODE_ENV !== 'production') {\n // TODO: fix mui/no-guarded-throw\n // eslint-disable-next-line mui/no-guarded-throw\n throw new Error(`[Floating UI]: Invalid grid - item width at index ${index} is greater than grid columns`);\n }\n }\n let itemPlaced = false;\n if (dense) {\n startIndex = 0;\n }\n while (!itemPlaced) {\n const targetCells = [];\n for (let i = 0; i < width; i += 1) {\n for (let j = 0; j < height; j += 1) {\n targetCells.push(startIndex + i + j * cols);\n }\n }\n if (startIndex % cols + width <= cols && targetCells.every(cell => cellMap[cell] == null)) {\n targetCells.forEach(cell => {\n cellMap[cell] = index;\n });\n itemPlaced = true;\n } else {\n startIndex += 1;\n }\n }\n });\n\n // convert into a non-sparse array\n return [...cellMap];\n}\n\n/** Gets cell index of an item's corner or -1 when index is -1. */\nexport function getGridCellIndexOfCorner(index, sizes, cellMap, cols, corner) {\n if (index === -1) {\n return -1;\n }\n const firstCellIndex = cellMap.indexOf(index);\n const sizeItem = sizes[index];\n switch (corner) {\n case 'tl':\n return firstCellIndex;\n case 'tr':\n if (!sizeItem) {\n return firstCellIndex;\n }\n return firstCellIndex + sizeItem.width - 1;\n case 'bl':\n if (!sizeItem) {\n return firstCellIndex;\n }\n return firstCellIndex + (sizeItem.height - 1) * cols;\n case 'br':\n return cellMap.lastIndexOf(index);\n default:\n return -1;\n }\n}\n\n/** Gets all cell indices that correspond to the specified indices */\nexport function getGridCellIndices(indices, cellMap) {\n return cellMap.flatMap((index, cellIndex) => indices.includes(index) ? [cellIndex] : []);\n}\nexport function isListIndexDisabled(list, index, disabledIndices) {\n const isExplicitlyDisabled = typeof disabledIndices === 'function' ? disabledIndices(index) : disabledIndices?.includes(index) ?? false;\n if (isExplicitlyDisabled) {\n return true;\n }\n const element = list[index];\n if (!element) {\n return false;\n }\n if (!isElementVisible(element)) {\n return true;\n }\n\n // A natively disabled element can never receive focus, so it must always be\n // skipped, even when `disabledIndices` marks it as enabled. Only\n // `aria-disabled` items can be focusable-while-disabled.\n if (element.matches(':disabled')) {\n return true;\n }\n return !disabledIndices && (element.hasAttribute('disabled') || element.getAttribute('aria-disabled') === 'true');\n}\nexport function isHiddenByStyles(styles) {\n return styles.visibility === 'hidden' || styles.visibility === 'collapse';\n}\nexport function isElementVisible(element, styles = element ? getComputedStyle(element) : null) {\n if (!element || !element.isConnected || !styles || isHiddenByStyles(styles)) {\n return false;\n }\n if (typeof element.checkVisibility === 'function') {\n return element.checkVisibility();\n }\n return styles.display !== 'none' && styles.display !== 'contents';\n}","'use client';\n\nimport { useIsoLayoutEffect } from '@base-ui/utils/useIsoLayoutEffect';\nimport { useBaseUiId } from \"../internals/useBaseUiId.mjs\";\nexport function useRegisteredLabelId(idProp, setLabelId) {\n const id = useBaseUiId(idProp);\n useIsoLayoutEffect(() => {\n setLabelId(id);\n return () => {\n setLabelId(currentId => currentId === id ? undefined : currentId);\n };\n }, [id, setLabelId]);\n return id;\n}","'use client';\n\nimport { isHTMLElement } from '@floating-ui/utils/dom';\nimport { ownerDocument } from '@base-ui/utils/owner';\nimport { useStableCallback } from '@base-ui/utils/useStableCallback';\nimport { getTarget } from \"../../floating-ui-react/utils.mjs\";\nimport { useRegisteredLabelId } from \"../../utils/useRegisteredLabelId.mjs\";\nimport { useLabelableContext } from \"./LabelableContext.mjs\";\nexport function useLabel(params = {}) {\n const {\n id: idProp,\n fallbackControlId,\n native = false,\n setLabelId: setLabelIdProp,\n focusControl: focusControlProp\n } = params;\n const {\n controlId: contextControlId,\n setLabelId: setContextLabelId\n } = useLabelableContext();\n const syncLabelId = useStableCallback(nextLabelId => {\n setContextLabelId(nextLabelId);\n setLabelIdProp?.(nextLabelId);\n });\n const id = useRegisteredLabelId(idProp, syncLabelId);\n const resolvedControlId = contextControlId ?? fallbackControlId;\n function focusControl(event) {\n if (focusControlProp) {\n focusControlProp(event, resolvedControlId);\n return;\n }\n if (!resolvedControlId) {\n return;\n }\n const controlElement = ownerDocument(event.currentTarget).getElementById(resolvedControlId);\n if (isHTMLElement(controlElement)) {\n focusElementWithVisible(controlElement);\n }\n }\n function handleInteraction(event) {\n const target = getTarget(event.nativeEvent);\n if (target?.closest('button,input,select,textarea')) {\n return;\n }\n\n // Prevent text selection when double clicking label.\n if (!event.defaultPrevented && event.detail > 1) {\n event.preventDefault();\n }\n if (native) {\n return;\n }\n focusControl(event);\n }\n return native ? {\n id,\n htmlFor: resolvedControlId ?? undefined,\n onMouseDown: handleInteraction\n } : {\n id,\n onClick: handleInteraction,\n onPointerDown(event) {\n event.preventDefault();\n }\n };\n}\nexport function focusElementWithVisible(element) {\n element.focus({\n // Available from Chrome 144+ (January 2026).\n // Safari and Firefox already support it.\n focusVisible: true\n });\n}","import { useRefWithInit } from \"./useRefWithInit.mjs\";\n\n/**\n * Merges refs into a single memoized callback ref or `null`.\n * This makes sure multiple refs are updated together and have the same value.\n *\n * This function accepts up to four refs. If you need to merge more, or have an unspecified number of refs to merge,\n * use `useMergedRefsN` instead.\n */\n\nexport function useMergedRefs(a, b, c, d) {\n const forkRef = useRefWithInit(createForkRef).current;\n if (didChange(forkRef, a, b, c, d)) {\n update(forkRef, [a, b, c, d]);\n }\n return forkRef.callback;\n}\n\n/**\n * Merges an array of refs into a single memoized callback ref or `null`.\n *\n * If you need to merge a fixed number (up to four) of refs, use `useMergedRefs` instead for better performance.\n */\nexport function useMergedRefsN(refs) {\n const forkRef = useRefWithInit(createForkRef).current;\n if (didChangeN(forkRef, refs)) {\n update(forkRef, refs);\n }\n return forkRef.callback;\n}\nfunction createForkRef() {\n return {\n callback: null,\n cleanup: null,\n refs: []\n };\n}\nfunction didChange(forkRef, a, b, c, d) {\n // prettier-ignore\n return forkRef.refs[0] !== a || forkRef.refs[1] !== b || forkRef.refs[2] !== c || forkRef.refs[3] !== d;\n}\nfunction didChangeN(forkRef, newRefs) {\n return forkRef.refs.length !== newRefs.length || forkRef.refs.some((ref, index) => ref !== newRefs[index]);\n}\nfunction update(forkRef, refs) {\n forkRef.refs = refs;\n if (refs.every(ref => ref == null)) {\n forkRef.callback = null;\n return;\n }\n forkRef.callback = instance => {\n if (forkRef.cleanup) {\n forkRef.cleanup();\n forkRef.cleanup = null;\n }\n if (instance != null) {\n const cleanupCallbacks = Array(refs.length).fill(null);\n for (let i = 0; i < refs.length; i += 1) {\n const ref = refs[i];\n if (ref == null) {\n continue;\n }\n switch (typeof ref) {\n case 'function':\n {\n const refCleanup = ref(instance);\n if (typeof refCleanup === 'function') {\n cleanupCallbacks[i] = refCleanup;\n }\n break;\n }\n case 'object':\n {\n ref.current = instance;\n break;\n }\n default:\n }\n }\n forkRef.cleanup = () => {\n for (let i = 0; i < refs.length; i += 1) {\n const ref = refs[i];\n if (ref == null) {\n continue;\n }\n switch (typeof ref) {\n case 'function':\n {\n const cleanupCallback = cleanupCallbacks[i];\n if (typeof cleanupCallback === 'function') {\n cleanupCallback();\n } else {\n // Legacy ref with no attach-time cleanup: detach by calling it with `null`.\n // It returns nothing; React 19 cleanups are handled in the branch above.\n void ref(null);\n }\n break;\n }\n case 'object':\n {\n ref.current = null;\n break;\n }\n default:\n }\n }\n };\n }\n };\n}","import * as React from 'react';\nconst majorVersion = parseInt(React.version, 10);\nexport function isReactVersionAtLeast(reactVersionToCheck) {\n return majorVersion >= reactVersionToCheck;\n}","import * as React from 'react';\nimport { isReactVersionAtLeast } from \"./reactVersion.mjs\";\n\n/**\n * Extracts the `ref` from a React element, handling different React versions.\n */\nexport function getReactElementRef(element) {\n if (! /*#__PURE__*/React.isValidElement(element)) {\n return null;\n }\n const reactElement = element;\n const propsWithRef = reactElement.props;\n return (isReactVersionAtLeast(19) ? propsWithRef?.ref : reactElement.ref) ?? null;\n}","export function mergeObjects(a, b) {\n if (a && !b) {\n return a;\n }\n if (!a && b) {\n return b;\n }\n if (a || b) {\n return {\n ...a,\n ...b\n };\n }\n return undefined;\n}","let set;\nif (process.env.NODE_ENV !== 'production') {\n set = new Set();\n}\nexport function warn(...messages) {\n if (process.env.NODE_ENV !== 'production') {\n const messageKey = messages.join(' ');\n if (!set.has(messageKey)) {\n set.add(messageKey);\n console.warn(`Base UI: ${messageKey}`);\n }\n }\n}","export function getStateAttributesProps(state, customMapping) {\n const props = {};\n\n /* eslint-disable-next-line guard-for-in */\n for (const key in state) {\n const value = state[key];\n if (customMapping?.hasOwnProperty(key)) {\n const customProps = customMapping[key](value);\n if (customProps != null) {\n Object.assign(props, customProps);\n }\n continue;\n }\n if (value === true) {\n props[`data-${key.toLowerCase()}`] = '';\n } else if (value) {\n props[`data-${key.toLowerCase()}`] = value.toString();\n }\n }\n return props;\n}","/**\n * If the provided className is a string, it will be returned as is.\n * Otherwise, the function will call the className function with the state as the first argument.\n *\n * @param className\n * @param state\n */\nexport function resolveClassName(className, state) {\n return typeof className === 'function' ? className(state) : className;\n}","/**\n * If the provided style is an object, it will be returned as is.\n * Otherwise, the function will call the style function with the state as the first argument.\n *\n * @param style\n * @param state\n */\nexport function resolveStyle(style, state) {\n return typeof style === 'function' ? style(state) : style;\n}","import { mergeObjects } from '@base-ui/utils/mergeObjects';\nconst EMPTY_PROPS = {};\n\n/* eslint-disable id-denylist */\n/**\n * Merges multiple sets of React props. It follows the Object.assign pattern where the rightmost object's fields overwrite\n * the conflicting ones from others. This doesn't apply to event handlers, `className` and `style` props.\n *\n * Event handlers are merged and called in right-to-left order (rightmost handler executes first, leftmost last).\n * For React synthetic events, the rightmost handler can prevent prior (left-positioned) handlers from executing\n * by calling `event.preventBaseUIHandler()`. For non-synthetic events (custom events with primitive/object values),\n * all handlers always execute without prevention capability.\n *\n * The `className` prop is merged by concatenating classes in right-to-left order (rightmost class appears first in the string).\n * The `style` prop is merged with rightmost styles overwriting the prior ones.\n *\n * Props can either be provided as objects or as functions that take the previous props as an argument.\n * The function will receive the merged props up to that point (going from left to right):\n * so in the case of `(obj1, obj2, fn, obj3)`, `fn` will receive the merged props of `obj1` and `obj2`.\n * The function is responsible for chaining event handlers if needed (that is, we don't run the merge logic).\n *\n * Event handlers returned by the functions are not automatically prevented when `preventBaseUIHandler` is called.\n * They must check `event.baseUIHandlerPrevented` themselves and bail out if it's true.\n *\n * @important **`ref` is not merged.**\n * @param a Props object to merge.\n * @param b Props object to merge. The function will overwrite conflicting props from `a`.\n * @param c Props object to merge. The function will overwrite conflicting props from previous parameters.\n * @param d Props object to merge. The function will overwrite conflicting props from previous parameters.\n * @param e Props object to merge. The function will overwrite conflicting props from previous parameters.\n * @returns The merged props.\n * @public\n */\n\nexport function mergeProps(a, b, c, d, e) {\n if (!c && !d && !e && !a) {\n return createInitialMergedProps(b);\n }\n\n // We need to mutably own `merged`.\n let merged = createInitialMergedProps(a);\n if (b) {\n merged = mergeInto(merged, b);\n }\n if (c) {\n merged = mergeInto(merged, c);\n }\n if (d) {\n merged = mergeInto(merged, d);\n }\n if (e) {\n merged = mergeInto(merged, e);\n }\n return merged;\n}\n/* eslint-enable id-denylist */\n\n/**\n * Merges an arbitrary number of React props using the same logic as {@link mergeProps}.\n * This function accepts an array of props instead of individual arguments.\n *\n * This has slightly lower performance than {@link mergeProps} due to accepting an array\n * instead of a fixed number of arguments. Prefer {@link mergeProps} when merging 5 or\n * fewer prop sets for better performance.\n *\n * @param props Array of props to merge.\n * @returns The merged props.\n * @see mergeProps\n * @public\n */\nexport function mergePropsN(props) {\n if (props.length === 0) {\n return EMPTY_PROPS;\n }\n if (props.length === 1) {\n return createInitialMergedProps(props[0]);\n }\n\n // We need to mutably own `merged`.\n let merged = createInitialMergedProps(props[0]);\n for (let i = 1; i < props.length; i += 1) {\n merged = mergeInto(merged, props[i]);\n }\n return merged;\n}\nfunction createInitialMergedProps(inputProps) {\n if (isPropsGetter(inputProps)) {\n // Getter-returned handlers intentionally keep their existing semantics.\n return {\n ...resolvePropsGetter(inputProps, EMPTY_PROPS)\n };\n }\n return copyInitialProps(inputProps);\n}\nfunction mergeInto(merged, inputProps) {\n if (isPropsGetter(inputProps)) {\n return resolvePropsGetter(inputProps, merged);\n }\n return mutablyMergeInto(merged, inputProps);\n}\nfunction copyInitialProps(inputProps) {\n const copiedProps = {\n ...inputProps\n };\n\n // `copiedProps` is our fresh own-object copy, so iterating with `for...in` is safe here.\n // eslint-disable-next-line guard-for-in\n for (const propName in copiedProps) {\n const propValue = copiedProps[propName];\n if (isEventHandler(propName, propValue)) {\n copiedProps[propName] = wrapEventHandler(propValue);\n }\n }\n return copiedProps;\n}\n\n/**\n * Merges two sets of props. In case of conflicts, the external props take precedence.\n */\nfunction mutablyMergeInto(mergedProps, externalProps) {\n if (!externalProps) {\n return mergedProps;\n }\n\n // eslint-disable-next-line guard-for-in\n for (const propName in externalProps) {\n const externalPropValue = externalProps[propName];\n switch (propName) {\n case 'style':\n {\n mergedProps[propName] = mergeObjects(mergedProps.style, externalPropValue);\n break;\n }\n case 'className':\n {\n mergedProps[propName] = mergeClassNames(mergedProps.className, externalPropValue);\n break;\n }\n default:\n {\n if (isEventHandler(propName, externalPropValue)) {\n mergedProps[propName] = mergeEventHandlers(mergedProps[propName], externalPropValue);\n } else {\n mergedProps[propName] = externalPropValue;\n }\n }\n }\n }\n return mergedProps;\n}\nfunction isEventHandler(key, value) {\n // This approach is more efficient than using a regex.\n const code0 = key.charCodeAt(0);\n const code1 = key.charCodeAt(1);\n const code2 = key.charCodeAt(2);\n return code0 === 111 /* o */ && code1 === 110 /* n */ && code2 >= 65 /* A */ && code2 <= 90 /* Z */ && (typeof value === 'function' || typeof value === 'undefined');\n}\nfunction isPropsGetter(inputProps) {\n return typeof inputProps === 'function';\n}\nfunction resolvePropsGetter(inputProps, previousProps) {\n if (isPropsGetter(inputProps)) {\n return inputProps(previousProps);\n }\n return inputProps ?? EMPTY_PROPS;\n}\nfunction mergeEventHandlers(ourHandler, theirHandler) {\n if (!theirHandler) {\n return ourHandler;\n }\n if (!ourHandler) {\n return wrapEventHandler(theirHandler);\n }\n return (...args) => {\n const event = args[0];\n if (isSyntheticEvent(event)) {\n const baseUIEvent = event;\n makeEventPreventable(baseUIEvent);\n const result = theirHandler(...args);\n if (!baseUIEvent.baseUIHandlerPrevented) {\n ourHandler?.(...args);\n }\n return result;\n }\n const result = theirHandler(...args);\n ourHandler?.(...args);\n return result;\n };\n}\nfunction wrapEventHandler(handler) {\n if (!handler) {\n return handler;\n }\n return (...args) => {\n const event = args[0];\n if (isSyntheticEvent(event)) {\n makeEventPreventable(event);\n }\n return handler(...args);\n };\n}\nexport function makeEventPreventable(event) {\n event.preventBaseUIHandler = () => {\n event.baseUIHandlerPrevented = true;\n };\n return event;\n}\nexport function mergeClassNames(ourClassName, theirClassName) {\n if (theirClassName) {\n if (ourClassName) {\n // eslint-disable-next-line prefer-template\n return theirClassName + ' ' + ourClassName;\n }\n return theirClassName;\n }\n return ourClassName;\n}\nfunction isSyntheticEvent(event) {\n return event != null && typeof event === 'object' && 'nativeEvent' in event;\n}","import _formatErrorMessage from \"@base-ui/utils/formatErrorMessage\";\nimport * as React from 'react';\nimport { useMergedRefs, useMergedRefsN } from '@base-ui/utils/useMergedRefs';\nimport { getReactElementRef } from '@base-ui/utils/getReactElementRef';\nimport { mergeObjects } from '@base-ui/utils/mergeObjects';\nimport { warn } from '@base-ui/utils/warn';\nimport { EMPTY_OBJECT } from '@base-ui/utils/empty';\nimport { getStateAttributesProps } from \"./getStateAttributesProps.mjs\";\nimport { resolveClassName } from \"../utils/resolveClassName.mjs\";\nimport { resolveStyle } from \"../utils/resolveStyle.mjs\";\nimport { mergeProps, mergePropsN, mergeClassNames } from \"../merge-props/index.mjs\";\nimport { createElement as _createElement } from \"react\";\n/**\n * Renders a Base UI element.\n *\n * @param element The default HTML element to render. Can be overridden by the `render` prop.\n * @param componentProps An object containing the `render` and `className` props to be used for element customization. Other props are ignored.\n * @param params Additional parameters for rendering the element.\n */\nexport function useRenderElement(element, componentProps, params = {}) {\n const renderProp = componentProps.render;\n const outProps = useRenderElementProps(componentProps, params);\n if (params.enabled === false) {\n return null;\n }\n const state = params.state ?? EMPTY_OBJECT;\n return evaluateRenderProp(element, renderProp, outProps, state);\n}\n\n/**\n * Computes render element final props.\n */\nfunction useRenderElementProps(componentProps, params = {}) {\n const {\n className: classNameProp,\n style: styleProp,\n render: renderProp\n } = componentProps;\n const {\n state = EMPTY_OBJECT,\n ref,\n props,\n stateAttributesMapping,\n enabled = true\n } = params;\n const className = enabled ? resolveClassName(classNameProp, state) : undefined;\n const style = enabled ? resolveStyle(styleProp, state) : undefined;\n const stateProps = enabled ? getStateAttributesProps(state, stateAttributesMapping) : EMPTY_OBJECT;\n const resolvedProps = enabled && props ? resolveRenderFunctionProps(props) : undefined;\n\n // Ensure outProps is always a new mutable object when enabled, never EMPTY_OBJECT.\n // This prevents potential TypeError when setting ref, className, or style properties,\n // since EMPTY_OBJECT is frozen and mutations would fail in strict mode.\n const outProps = enabled ? mergeObjects(stateProps, resolvedProps) ?? {} : EMPTY_OBJECT;\n\n // SAFETY: The `useMergedRefs` functions use a single hook to store the same value,\n // switching between them at runtime is safe. If this assertion fails, React will\n // throw at runtime anyway.\n // This also skips the `useMergedRefs` call on the server, which is fine because\n // refs are not used on the server side.\n /* eslint-disable react-hooks/rules-of-hooks */\n if (typeof document !== 'undefined') {\n if (!enabled) {\n // Called only to keep the hook order stable when disabled; the merged ref is unused.\n void useMergedRefs(null, null);\n } else if (Array.isArray(ref)) {\n outProps.ref = useMergedRefsN([outProps.ref, getReactElementRef(renderProp), ...ref]);\n } else {\n outProps.ref = useMergedRefs(outProps.ref, getReactElementRef(renderProp), ref);\n }\n }\n if (!enabled) {\n return EMPTY_OBJECT;\n }\n if (className !== undefined) {\n outProps.className = mergeClassNames(outProps.className, className);\n }\n if (style !== undefined) {\n outProps.style = mergeObjects(outProps.style, style);\n }\n return outProps;\n}\nfunction resolveRenderFunctionProps(props) {\n if (Array.isArray(props)) {\n return mergePropsN(props);\n }\n return mergeProps(undefined, props);\n}\n\n// The symbol React uses internally for lazy components\n// https://github.com/react/react/blob/a0566250b210499b4c5677f5ac2eedbd71d51a1b/packages/shared/ReactSymbols.js#L31\n//\n// TODO delete once https://github.com/react/react/issues/32392 is fixed\nconst REACT_LAZY_TYPE = Symbol.for('react.lazy');\nconst COMPONENT_IDENTIFIER_PATTERN = /^[A-Z][A-Za-z0-9$]*$/;\nconst LOWERCASE_CHARACTER_PATTERN = /[a-z]/;\nfunction evaluateRenderProp(element, render, props, state) {\n if (render) {\n if (typeof render === 'function') {\n if (process.env.NODE_ENV !== 'production') {\n warnIfRenderPropLooksLikeComponent(render);\n }\n return render(props, state);\n }\n const mergedProps = mergeProps(props, render.props);\n mergedProps.ref = props.ref;\n let newElement = render;\n // Workaround for https://github.com/react/react/issues/32392\n // This works because the toArray() logic unwrap lazy element type in\n // https://github.com/react/react/blob/a0566250b210499b4c5677f5ac2eedbd71d51a1b/packages/react/src/ReactChildren.js#L186\n if (newElement?.$$typeof === REACT_LAZY_TYPE) {\n const children = React.Children.toArray(render);\n newElement = children[0];\n }\n\n // There is a high number of indirections, the error message thrown by React.cloneElement() is\n // hard to use for developers, this logic provides a better context.\n //\n // Our general guideline is to never change the control flow depending on the environment.\n // However, React.cloneElement() throws if React.isValidElement() is false,\n // so we can throw before with custom message.\n if (process.env.NODE_ENV !== 'production') {\n if (! /*#__PURE__*/React.isValidElement(newElement)) {\n // TODO: fix mui/no-guarded-throw\n // eslint-disable-next-line mui/no-guarded-throw\n throw new Error(['Base UI: The `render` prop was provided an invalid React element as `React.isValidElement(render)` is `false`.', 'A valid React element must be provided to the `render` prop because it is cloned with props to replace the default element.', 'https://base-ui.com/r/invalid-render-prop'].join('\\n'));\n }\n }\n return /*#__PURE__*/React.cloneElement(newElement, mergedProps);\n }\n if (element) {\n if (typeof element === 'string') {\n return renderTag(element, props);\n }\n }\n // Unreachable, but the typings on `useRenderElement` need to be reworked\n // to annotate it correctly.\n throw new Error(process.env.NODE_ENV !== \"production\" ? 'Base UI: Render element or function are not defined.' : _formatErrorMessage(8));\n}\nfunction warnIfRenderPropLooksLikeComponent(renderFn) {\n const functionName = renderFn.name;\n if (functionName.length === 0) {\n return;\n }\n if (!COMPONENT_IDENTIFIER_PATTERN.test(functionName)) {\n return;\n }\n if (!LOWERCASE_CHARACTER_PATTERN.test(functionName)) {\n return;\n }\n warn(`The \\`render\\` prop received a function named \\`${functionName}\\` that starts with an uppercase letter.`, 'This usually means a React component was passed directly as `render={Component}`.', 'Base UI calls `render` as a plain function, which can break the Rules of Hooks during reconciliation.', 'If this is an intentional render callback, rename it to start with a lowercase letter.', 'Use `render={<Component />}` or `render={(props) => <Component {...props} />}` instead.', 'https://base-ui.com/r/invalid-render-prop');\n}\nfunction renderTag(Tag, props) {\n if (Tag === 'button') {\n return /*#__PURE__*/_createElement(\"button\", {\n type: \"button\",\n ...props,\n key: props.key\n });\n }\n if (Tag === 'img') {\n return /*#__PURE__*/_createElement(\"img\", {\n alt: \"\",\n ...props,\n key: props.key\n });\n }\n return /*#__PURE__*/React.createElement(Tag, props);\n}","'use client';\n\nimport * as React from 'react';\nimport { EMPTY_ARRAY } from \"./empty.mjs\";\n\n/**\n * A React.useEffect equivalent that runs once, when the component is mounted.\n */\nexport function useOnMount(fn) {\n // TODO: uncomment once we enable eslint-plugin-react-compiler // eslint-disable-next-line react-compiler/react-compiler -- no need to put `fn` in the dependency array\n /* eslint-disable react-hooks/exhaustive-deps */\n React.useEffect(fn, EMPTY_ARRAY);\n /* eslint-enable react-hooks/exhaustive-deps */\n}","'use client';\n\nimport { useRefWithInit } from \"./useRefWithInit.mjs\";\nimport { useOnMount } from \"./useOnMount.mjs\";\nconst EMPTY = 0;\nexport class Timeout {\n static create() {\n return new Timeout();\n }\n currentId = EMPTY;\n\n /**\n * Executes `fn` after `delay`, clearing any previously scheduled call.\n */\n start(delay, fn) {\n this.clear();\n this.currentId = setTimeout(() => {\n this.currentId = EMPTY;\n fn();\n }, delay); /* Node.js types are enabled in development */\n }\n isStarted() {\n return this.currentId !== EMPTY;\n }\n clear = () => {\n if (this.currentId !== EMPTY) {\n clearTimeout(this.currentId);\n this.currentId = EMPTY;\n }\n };\n disposeEffect = () => {\n return this.clear;\n };\n}\n\n/**\n * A `setTimeout` with automatic cleanup and guard.\n */\nexport function useTimeout() {\n const timeout = useRefWithInit(Timeout.create).current;\n useOnMount(timeout.disposeEffect);\n return timeout;\n}","/**\n * Combines the field's client-side, stateful validity data with the external invalid state to\n * determine the field's true validity.\n */\nexport function getCombinedFieldValidityData(validityData, invalid) {\n return {\n ...validityData,\n state: {\n ...validityData.state,\n valid: !invalid && validityData.state.valid\n }\n };\n}","'use client';\n\nimport * as React from 'react';\nimport { EMPTY_OBJECT } from '@base-ui/utils/empty';\nimport { useTimeout } from '@base-ui/utils/useTimeout';\nimport { useStableCallback } from '@base-ui/utils/useStableCallback';\nimport { useRefWithInit } from '@base-ui/utils/useRefWithInit';\nimport { useLabelableContext } from \"../../internals/labelable-provider/LabelableContext.mjs\";\nimport { mergeProps } from \"../../merge-props/index.mjs\";\nimport { DEFAULT_VALIDITY_STATE } from \"../../internals/field-constants/constants.mjs\";\nimport { useFormContext } from \"../../internals/form-context/FormContext.mjs\";\nimport { getCombinedFieldValidityData } from \"../utils/getCombinedFieldValidityData.mjs\";\nconst validityKeys = Object.keys(DEFAULT_VALIDITY_STATE);\n/**\n * Whether an input participates in the surrounding Base UI Form. Inputs that are effectively\n * disabled, or whose `form` attribute explicitly associates them with another form, are excluded.\n * DOM position only matters when it associates the input with a different form. Otherwise, field\n * registration is context-driven, so portaled inputs (for example inside a dialog) still belong to\n * the form for both validation and values projected into `onFormSubmit`.\n */\nexport function isEligibleInput(input, formElement) {\n if (input.matches(':disabled')) {\n return false;\n }\n if (!formElement || input.form === formElement) {\n return true;\n }\n\n // React context crosses portal boundaries. An unassociated portaled input still participates in\n // contextual validation, unless an explicit `form` attribute opts it out of the surrounding Form.\n return input.form === null && !input.hasAttribute('form');\n}\n\n/**\n * Picks the input whose native validity should represent a field that owns several inputs (such as a\n * checkbox or radio group). Prefers the first eligible currently-invalid input, where \"first\" follows\n * registration order (mount order), and otherwise returns the first eligible input.\n */\nfunction findRepresentativeInput(inputs, formElement) {\n let fallback = null;\n for (const input of inputs.keys()) {\n if (!isEligibleInput(input, formElement)) {\n continue;\n }\n if (!input.validity.valid) {\n return input;\n }\n fallback ??= input;\n }\n return fallback;\n}\nfunction clearCustomValidity(element, inputs) {\n for (const input of inputs.keys()) {\n input.setCustomValidity('');\n }\n element?.setCustomValidity('');\n}\nexport function useFieldValidation(params) {\n const {\n elementRef,\n formRef\n } = useFormContext();\n const {\n setValidityData,\n validate,\n validityData,\n validationDebounceTime,\n invalid,\n markedDirtyRef,\n state,\n shouldValidateOnChange,\n registeredFieldIdRef\n } = params;\n const {\n controlId,\n getDescriptionProps\n } = useLabelableContext();\n const timeout = useTimeout();\n const inputRef = React.useRef(null);\n const registeredInputs = useRefWithInit(() => new Map()).current;\n const validationCommitIdRef = React.useRef(0);\n\n // Groups register several inputs against a single field so focus, validation, and form-value\n // projection can use the same live controls. This also ensures a `required` checkbox can't be\n // satisfied by another input in the group, matching native per-checkbox behavior.\n const registerInput = React.useCallback((element, registration) => {\n registeredInputs.set(element, registration);\n return () => {\n registeredInputs.delete(element);\n };\n }, [registeredInputs]);\n const getInputControl = useStableCallback(() => {\n const element = findRepresentativeInput(registeredInputs, elementRef.current);\n return element && registeredInputs.get(element)?.controlRef.current || null;\n });\n const commit = useStableCallback(async (value, revalidate = false) => {\n validationCommitIdRef.current += 1;\n const validationCommitId = validationCommitIdRef.current;\n function updateRegisteredFieldValidity(nextValidityData, externalInvalid = invalid) {\n const fieldId = registeredFieldIdRef.current ?? controlId;\n if (fieldId == null) {\n return;\n }\n const currentFieldData = formRef.current.fields.get(fieldId);\n if (!currentFieldData) {\n return;\n }\n const validityDataWithFormErrors = getCombinedFieldValidityData(nextValidityData, externalInvalid);\n formRef.current.fields.set(fieldId, {\n ...currentFieldData,\n validityData: validityDataWithFormErrors\n });\n }\n function publishAllValid(input, externalInvalid) {\n const nextValidityData = {\n value,\n state: {\n ...DEFAULT_VALIDITY_STATE,\n valid: true\n },\n error: '',\n errors: [],\n initialValue: validityData.initialValue\n };\n clearCustomValidity(input, registeredInputs);\n updateRegisteredFieldValidity(nextValidityData, externalInvalid);\n setValidityData(nextValidityData);\n }\n\n // A field can own several inputs (such as a checkbox or radio group), but only the last-mounted\n // one wins the shared `inputRef`. Validate against the registry instead so every input counts;\n // `inputRef` is the fallback only when no inputs are registered.\n const element = registeredInputs.size > 0 ? findRepresentativeInput(registeredInputs, elementRef.current) : inputRef.current;\n // A field with no eligible input has no native constraint, but its custom validator still\n // applies to the logical value at the configured validation boundary.\n\n if (revalidate) {\n if (state.valid !== false || !element) {\n return;\n }\n const currentNativeValidity = element.validity;\n if (!currentNativeValidity.valueMissing) {\n // The 'valueMissing' (required) condition has been resolved by the user typing.\n // Temporarily mark the field as valid for this onChange event.\n // Other native errors (e.g., typeMismatch) will be caught by full validation on blur or submit.\n // The required value is now present; ignore stale external invalid state for this pass.\n publishAllValid(element, false);\n return;\n }\n\n // A stale custom error can coexist with valueMissing, but defer any other native errors.\n for (const key of validityKeys) {\n if (key !== 'valid' && key !== 'valueMissing' && key !== 'customError' && currentNativeValidity[key]) {\n return;\n }\n }\n\n // Value is still missing: publish the current native state so valueMissing and the changed\n // value are observable immediately. Full custom validation still waits for its boundary.\n }\n function getState(el) {\n const computedState = validityKeys.reduce((acc, key) => {\n acc[key] = el.validity[key];\n return acc;\n }, {});\n let hasOnlyValueMissingError = false;\n for (const key of validityKeys) {\n if (key === 'valid') {\n continue;\n }\n if (key === 'valueMissing' && computedState[key]) {\n hasOnlyValueMissingError = true;\n } else if (computedState[key]) {\n return computedState;\n }\n }\n\n // Only make `valueMissing` mark the field invalid if it's been changed\n // to reduce error noise.\n if (hasOnlyValueMissingError && !markedDirtyRef.current) {\n computedState.valid = true;\n computedState.valueMissing = false;\n }\n return computedState;\n }\n timeout.clear();\n let result = null;\n let validationErrors = [];\n\n // With no representative input the field carries no native constraint, so start from an\n // all-valid native state and let the custom `validate` result below decide the outcome.\n const nextState = element ? getState(element) : {\n ...DEFAULT_VALIDITY_STATE,\n valid: true\n };\n let defaultValidationMessage;\n const isValidatingOnChange = shouldValidateOnChange();\n if (element && element.validationMessage && !isValidatingOnChange) {\n // not validating on change, if there is a `validationMessage` from\n // native validity, set errors and skip calling the custom validate fn\n defaultValidationMessage = element.validationMessage;\n validationErrors = [element.validationMessage];\n } else {\n // call the validate function because either\n // - validating on change, or\n // - native constraint validations passed, custom validity check is next\n const formValues = Array.from(formRef.current.fields.values()).reduce((acc, field) => {\n if (field.name) {\n acc[field.name] = field.getValue();\n }\n return acc;\n }, {});\n const resultOrPromise = validate(value, formValues);\n if (typeof resultOrPromise === 'object' && resultOrPromise !== null && 'then' in resultOrPromise) {\n result = await resultOrPromise;\n if (validationCommitId !== validationCommitIdRef.current) {\n return;\n }\n } else {\n result = resultOrPromise;\n }\n if (result !== null) {\n nextState.valid = false;\n nextState.customError = true;\n if (Array.isArray(result)) {\n validationErrors = result;\n element?.setCustomValidity(result.join('\\n'));\n } else if (result) {\n validationErrors = [result];\n element?.setCustomValidity(result);\n }\n } else if (isValidatingOnChange) {\n // validate function returned no errors, if validating on change\n // we need to clear the custom validity state\n clearCustomValidity(element, registeredInputs);\n nextState.customError = false;\n if (element && element.validationMessage) {\n defaultValidationMessage = element.validationMessage;\n validationErrors = [element.validationMessage];\n } else if ((!element || element.validity.valid) && !nextState.valid) {\n nextState.valid = true;\n }\n }\n }\n const nextValidityData = {\n value,\n state: nextState,\n error: defaultValidationMessage ?? (Array.isArray(result) ? result[0] : result ?? ''),\n errors: validationErrors,\n initialValue: validityData.initialValue\n };\n\n // Keep Form-level errors part of overall field validity for submit blocking/focus logic.\n updateRegisteredFieldValidity(nextValidityData);\n setValidityData(nextValidityData);\n });\n const change = useStableCallback(value => {\n timeout.clear();\n const validateOnChange = shouldValidateOnChange();\n if (validateOnChange && value !== '' && validationDebounceTime) {\n validationCommitIdRef.current += 1;\n timeout.start(validationDebounceTime, () => {\n commit(value);\n });\n } else {\n commit(value, !validateOnChange);\n }\n });\n const getValidationProps = React.useCallback((disabled, externalProps = {}) => mergeProps(getDescriptionProps(externalProps), state.valid === false && !state.disabled && !disabled ? {\n 'aria-invalid': true\n } : EMPTY_OBJECT), [getDescriptionProps, state.disabled, state.valid]);\n return React.useMemo(() => ({\n getValidationProps,\n inputRef,\n registeredInputs,\n registerInput,\n getInputControl,\n commit,\n change\n }), [getValidationProps, registeredInputs, registerInput, getInputControl, commit, change]);\n}","'use client';\n\nimport * as React from 'react';\nimport { useIsoLayoutEffect } from '@base-ui/utils/useIsoLayoutEffect';\nimport { useStableCallback } from '@base-ui/utils/useStableCallback';\nimport { getCombinedFieldValidityData } from \"../../field/utils/getCombinedFieldValidityData.mjs\";\nimport { useFormContext } from \"../form-context/FormContext.mjs\";\nexport function useFieldControlRegistration(params) {\n const {\n commit,\n invalid,\n markedDirtyRef,\n name,\n setRegisteredFieldName,\n registeredFieldIdRef,\n setValidityData,\n validityData\n } = params;\n const {\n formRef\n } = useFormContext();\n const activeFieldControlSourceRef = React.useRef(null);\n const registrationRef = React.useRef(null);\n const initialValueCapturedRef = React.useRef(false);\n const getValueForForm = useStableCallback(() => {\n const registration = registrationRef.current;\n if (!registration) {\n return undefined;\n }\n if (registration.getValue) {\n return registration.getValue();\n }\n return registration.value;\n });\n function getRegistrationValue(registration) {\n return registration.value === undefined ? getValueForForm() : registration.value;\n }\n const validate = useStableCallback(() => {\n const registration = registrationRef.current;\n markedDirtyRef.current = true;\n if (!registration) {\n commit(validityData.value);\n return;\n }\n commit(getRegistrationValue(registration));\n });\n function refreshRegistration() {\n const registration = registrationRef.current;\n if (!registration || !registration.id) {\n return;\n }\n formRef.current.fields.set(registration.id, {\n getValue: getValueForForm,\n name: name ?? registration.name,\n controlRef: registration.controlRef,\n validityData: getCombinedFieldValidityData(validityData, invalid),\n validate\n });\n }\n function deleteRegistration(id = registrationRef.current?.id) {\n if (id) {\n formRef.current.fields.delete(id);\n }\n }\n\n // The baseline belongs to the field, not to a control instance: registration re-runs on every\n // value change, and a control that unmounts and remounts (or is swapped for another one) comes\n // back as a brand new registration. Capturing more than once would turn whichever value the\n // control happens to hold at that point into the initial value, so a modified field would read\n // pristine and its real initial value would read dirty. Consumers that want a fresh baseline\n // remount or key `<Field.Root>` itself.\n function captureInitialValue(registration) {\n if (initialValueCapturedRef.current) {\n return;\n }\n initialValueCapturedRef.current = true;\n const initialValue = getRegistrationValue(registration);\n setValidityData(prev => prev.initialValue === initialValue ? prev : {\n ...prev,\n initialValue\n });\n }\n useIsoLayoutEffect(() => {\n const registration = registrationRef.current;\n if (!registration || !registration.id) {\n return;\n }\n setRegisteredFieldName(name ? undefined : registration.name);\n formRef.current.fields.set(registration.id, {\n getValue: getValueForForm,\n name: name ?? registration.name,\n controlRef: registration.controlRef,\n validityData: getCombinedFieldValidityData(validityData, invalid),\n validate\n });\n }, [formRef, getValueForForm, invalid, name, setRegisteredFieldName, validate, validityData]);\n useIsoLayoutEffect(() => {\n const fields = formRef.current.fields;\n return () => {\n const id = registrationRef.current?.id;\n if (id) {\n fields.delete(id);\n }\n };\n }, [formRef]);\n const register = useStableCallback((source, registration) => {\n if (!registration) {\n if (activeFieldControlSourceRef.current === source) {\n activeFieldControlSourceRef.current = null;\n deleteRegistration();\n registrationRef.current = null;\n setRegisteredFieldName(undefined);\n registeredFieldIdRef.current = undefined;\n }\n return;\n }\n const previousId = registrationRef.current?.id;\n activeFieldControlSourceRef.current = source;\n registrationRef.current = registration;\n if (!name) {\n setRegisteredFieldName(registration.name);\n }\n registeredFieldIdRef.current = registration.id;\n if (previousId && previousId !== registration.id) {\n deleteRegistration(previousId);\n }\n captureInitialValue(registration);\n refreshRegistration();\n });\n return [validate, register];\n}","'use client';\n\nimport * as React from 'react';\nimport { useIsoLayoutEffect } from '@base-ui/utils/useIsoLayoutEffect';\nimport { useStableCallback } from '@base-ui/utils/useStableCallback';\nimport { FieldRootContext } from \"../../internals/field-root-context/FieldRootContext.mjs\";\nimport { DEFAULT_VALIDITY_STATE, fieldValidityMapping } from \"../../internals/field-constants/constants.mjs\";\nimport { useFieldsetRootContext } from \"../../fieldset/root/FieldsetRootContext.mjs\";\nimport { useFormContext } from \"../../internals/form-context/FormContext.mjs\";\nimport { LabelableProvider } from \"../../internals/labelable-provider/index.mjs\";\nimport { useRenderElement } from \"../../internals/useRenderElement.mjs\";\nimport { useFieldValidation } from \"./useFieldValidation.mjs\";\nimport { useFieldControlRegistration } from \"../../internals/field-register-control/useFieldControlRegistration.mjs\";\n\n/**\n * @internal\n */\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nconst FieldRootInner = /*#__PURE__*/React.forwardRef(function FieldRootInner(componentProps, forwardedRef) {\n const {\n errors,\n validationMode: formValidationMode,\n submitAttemptedRef\n } = useFormContext();\n const {\n render,\n className,\n validate: validateProp,\n validationDebounceTime = 0,\n validationMode = formValidationMode,\n name,\n disabled: disabledProp = false,\n invalid: invalidProp,\n dirty: dirtyProp,\n touched: touchedProp,\n actionsRef,\n style,\n ...elementProps\n } = componentProps;\n const disabledFieldset = useFieldsetRootContext(true)?.disabled;\n const validate = useStableCallback(validateProp || (() => null));\n const disabled = disabledFieldset || disabledProp;\n const [touchedState, setTouchedUnwrapped] = React.useState(false);\n const [dirtyState, setDirtyUnwrapped] = React.useState(false);\n const [filled, setFilled] = React.useState(false);\n const [focused, setFocused] = React.useState(false);\n const dirty = dirtyProp ?? dirtyState;\n const touched = touchedProp ?? touchedState;\n const markedDirtyRef = React.useRef(dirty);\n const registeredFieldIdRef = React.useRef(undefined);\n const [registeredFieldName, setRegisteredFieldName] = React.useState();\n const effectiveName = name ?? registeredFieldName;\n useIsoLayoutEffect(() => {\n if (dirtyProp !== undefined) {\n markedDirtyRef.current = dirtyProp;\n }\n }, [dirtyProp]);\n const setDirty = useStableCallback(value => {\n if (dirtyProp !== undefined) {\n return;\n }\n if (value) {\n markedDirtyRef.current = true;\n }\n setDirtyUnwrapped(value);\n });\n const setTouched = useStableCallback(value => {\n if (touchedProp !== undefined) {\n return;\n }\n setTouchedUnwrapped(value);\n });\n const shouldValidateOnChange = useStableCallback(() => validationMode === 'onChange' || validationMode === 'onSubmit' && submitAttemptedRef.current);\n const formError = effectiveName && Object.hasOwn(errors, effectiveName) ? errors[effectiveName] : null;\n const hasFormError = !!(Array.isArray(formError) ? formError.length : formError);\n const invalid = invalidProp === true || hasFormError;\n const [validityData, setValidityData] = React.useState({\n state: DEFAULT_VALIDITY_STATE,\n error: '',\n errors: [],\n value: null,\n initialValue: null\n });\n\n // App-controlled invalidity (the `invalid` prop and `<Form>` errors) keeps the field marked\n // invalid even while disabled. Only computed validity (native constraints and `validate`)\n // is suppressed when disabled, matching `:disabled` not participating in constraint validation.\n const valid = !invalid && (disabled ? null : validityData.state.valid);\n const state = React.useMemo(() => ({\n disabled,\n touched,\n dirty,\n valid,\n filled,\n focused\n }), [disabled, touched, dirty, valid, filled, focused]);\n const validation = useFieldValidation({\n setValidityData,\n validate,\n validityData,\n validationDebounceTime,\n invalid,\n markedDirtyRef,\n state,\n shouldValidateOnChange,\n registeredFieldIdRef\n });\n const [validateFieldControl, registerFieldControl] = useFieldControlRegistration({\n commit: validation.commit,\n invalid,\n markedDirtyRef,\n name,\n setRegisteredFieldName,\n registeredFieldIdRef,\n setValidityData,\n validityData\n });\n React.useImperativeHandle(actionsRef, () => ({\n validate: validateFieldControl\n }), [validateFieldControl]);\n const contextValue = React.useMemo(() => ({\n invalid,\n name: effectiveName,\n validityData,\n setValidityData,\n disabled,\n setTouched,\n setDirty,\n setFilled,\n setFocused,\n validationMode,\n shouldValidateOnChange,\n state,\n registerFieldControl,\n validation\n }), [invalid, effectiveName, validityData, disabled, setTouched, setDirty, setFilled, setFocused, validationMode, shouldValidateOnChange, state, registerFieldControl, validation]);\n const element = useRenderElement('div', componentProps, {\n ref: forwardedRef,\n state,\n props: elementProps,\n stateAttributesMapping: fieldValidityMapping\n });\n return /*#__PURE__*/_jsx(FieldRootContext.Provider, {\n value: contextValue,\n children: element\n });\n});\n\n/**\n * Groups all parts of the field.\n * Renders a `<div>` element.\n *\n * Documentation: [Base UI Field](https://base-ui.com/react/components/field)\n */\nif (process.env.NODE_ENV !== \"production\") FieldRootInner.displayName = \"FieldRootInner\";\nexport const FieldRoot = /*#__PURE__*/React.forwardRef(function FieldRoot(componentProps, forwardedRef) {\n return /*#__PURE__*/_jsx(LabelableProvider, {\n children: /*#__PURE__*/_jsx(FieldRootInner, {\n ...componentProps,\n ref: forwardedRef\n })\n });\n});\nif (process.env.NODE_ENV !== \"production\") FieldRoot.displayName = \"FieldRoot\";","let set;\nif (process.env.NODE_ENV !== 'production') {\n set = new Set();\n}\nexport function error(...messages) {\n if (process.env.NODE_ENV !== 'production') {\n const messageKey = messages.join(' ');\n if (!set.has(messageKey)) {\n set.add(messageKey);\n console.error(`Base UI: ${messageKey}`);\n }\n }\n}\nexport function reset() {\n set?.clear();\n}","'use client';\n\nimport * as React from 'react';\nexport const FieldItemContext = /*#__PURE__*/React.createContext({\n disabled: false\n});\nif (process.env.NODE_ENV !== \"production\") FieldItemContext.displayName = \"FieldItemContext\";\nexport function useFieldItemContext() {\n const context = React.useContext(FieldItemContext);\n return context;\n}","'use client';\n\nimport * as React from 'react';\nimport { error } from '@base-ui/utils/error';\nimport { SafeReact } from '@base-ui/utils/safeReact';\nimport { useFieldRootContext } from \"../../internals/field-root-context/FieldRootContext.mjs\";\nimport { fieldValidityMapping } from \"../../internals/field-constants/constants.mjs\";\nimport { useRenderElement } from \"../../internals/useRenderElement.mjs\";\nimport { useLabelableContext } from \"../../internals/labelable-provider/LabelableContext.mjs\";\nimport { useLabel } from \"../../internals/labelable-provider/useLabel.mjs\";\nimport { useFieldItemContext } from \"../item/FieldItemContext.mjs\";\n\n/**\n * An accessible label that is automatically associated with the field control.\n * Renders a `<label>` element.\n *\n * Documentation: [Base UI Field](https://base-ui.com/react/components/field)\n */\nexport const FieldLabel = /*#__PURE__*/React.forwardRef(function FieldLabel(componentProps, forwardedRef) {\n const {\n render,\n className,\n style,\n id: idProp,\n nativeLabel = true,\n ...elementProps\n } = componentProps;\n const fieldRootContext = useFieldRootContext(false);\n const fieldItemContext = useFieldItemContext();\n const {\n labelId\n } = useLabelableContext();\n const state = {\n ...fieldRootContext.state,\n disabled: fieldRootContext.disabled || fieldItemContext.disabled\n };\n const labelRef = React.useRef(null);\n const labelProps = useLabel({\n id: labelId ?? idProp,\n native: nativeLabel\n });\n if (process.env.NODE_ENV !== 'production') {\n // eslint-disable-next-line react-hooks/rules-of-hooks\n React.useEffect(() => {\n if (!labelRef.current) {\n return;\n }\n const isLabelTag = labelRef.current.tagName === 'LABEL';\n if (nativeLabel) {\n if (!isLabelTag) {\n const ownerStackMessage = SafeReact.captureOwnerStack?.() || '';\n const message = '<Field.Label> expected a <label> element because the `nativeLabel` prop is true. ' + 'Rendering a non-<label> disables native label association, so `htmlFor` will not ' + 'work. Use a real <label> in the `render` prop, or set `nativeLabel` to `false`.';\n error(`${message}${ownerStackMessage}`);\n }\n } else if (isLabelTag) {\n const ownerStackMessage = SafeReact.captureOwnerStack?.() || '';\n const message = '<Field.Label> expected a non-<label> element because the `nativeLabel` prop is false. ' + 'Rendering a <label> assumes native label behavior while Base UI treats it as ' + 'non-native, which can cause unexpected pointer behavior. Use a non-<label> in the ' + '`render` prop, or set `nativeLabel` to `true`.';\n error(`${message}${ownerStackMessage}`);\n }\n }, [nativeLabel]);\n }\n const element = useRenderElement('label', componentProps, {\n ref: [forwardedRef, labelRef],\n state,\n props: [labelProps, elementProps],\n stateAttributesMapping: fieldValidityMapping\n });\n return element;\n});\nif (process.env.NODE_ENV !== \"production\") FieldLabel.displayName = \"FieldLabel\";","'use client';\n\nimport { useRefWithInit } from \"./useRefWithInit.mjs\";\nimport { useOnMount } from \"./useOnMount.mjs\";\n/** Unlike `setTimeout`, rAF doesn't guarantee a positive integer return value, so we can't have\n * a monomorphic `uint` type with `0` meaning empty.\n * See warning note at:\n * https://developer.mozilla.org/en-US/docs/Web/API/Window/requestAnimationFrame#return_value */\nconst EMPTY = null;\nlet LAST_RAF = globalThis.requestAnimationFrame;\nclass Scheduler {\n /* This implementation uses an array as a backing data-structure for frame callbacks.\n * It allows `O(1)` callback cancelling by inserting a `null` in the array, though it\n * never calls the native `cancelAnimationFrame` if there are no frames left. This can\n * be much more efficient if there is a call pattern that alterns as\n * \"request-cancel-request-cancel-…\".\n * But in the case of \"request-request-…-cancel-cancel-…\", it leaves the final animation\n * frame to run anyway. We turn that frame into a `O(1)` no-op via `callbacksCount`. */\n\n callbacks = [];\n callbacksCount = 0;\n nextId = 1;\n startId = 1;\n isScheduled = false;\n tick = timestamp => {\n this.isScheduled = false;\n const currentCallbacks = this.callbacks;\n const currentCallbacksCount = this.callbacksCount;\n\n // Update these before iterating, callbacks could call `requestAnimationFrame` again.\n this.callbacks = [];\n this.callbacksCount = 0;\n this.startId = this.nextId;\n if (currentCallbacksCount > 0) {\n for (let i = 0; i < currentCallbacks.length; i += 1) {\n currentCallbacks[i]?.(timestamp);\n }\n }\n };\n request(fn) {\n const id = this.nextId;\n this.nextId += 1;\n this.callbacks.push(fn);\n this.callbacksCount += 1;\n\n /* In a test environment with fake timers, a fake `requestAnimationFrame` can be called\n * but there's no guarantee that the animation frame will actually run before the fake\n * timers are teared, which leaves `isScheduled` set, but won't run our `tick()`. */\n const didRAFChange = process.env.NODE_ENV !== 'production' && LAST_RAF !== requestAnimationFrame && (LAST_RAF = requestAnimationFrame, true);\n if (!this.isScheduled || didRAFChange) {\n requestAnimationFrame(this.tick);\n this.isScheduled = true;\n }\n return id;\n }\n cancel(id) {\n const index = id - this.startId;\n if (index < 0 || index >= this.callbacks.length) {\n return;\n }\n this.callbacks[index] = null;\n this.callbacksCount -= 1;\n }\n}\nlet scheduler = new Scheduler();\n\n/**\n * Replaces the shared scheduler and drops all pending animation frame callbacks.\n *\n * For test environments only. The scheduler is process-global, so a callback scheduled in one test\n * but never run (e.g. requested under fake timers that were torn down before the frame fired) would\n * otherwise survive into a later test and run there against stale state. Call between tests to drop\n * such leftovers.\n */\nexport function resetAnimationFrameScheduler() {\n const previous = scheduler;\n scheduler = new Scheduler();\n // Continue the id sequence so `cancel()` calls from `AnimationFrame` instances created before the\n // reset cannot cancel callbacks scheduled after it.\n scheduler.nextId = previous.nextId;\n scheduler.startId = previous.nextId;\n // A frame requested before the reset may still be pending and holds the previous scheduler's\n // `tick`; empty its queue in place so that frame runs nothing when it eventually fires.\n previous.callbacks = [];\n previous.callbacksCount = 0;\n}\nexport class AnimationFrame {\n static create() {\n return new AnimationFrame();\n }\n static request(fn) {\n return scheduler.request(fn);\n }\n static cancel(id) {\n return scheduler.cancel(id);\n }\n currentId = EMPTY;\n\n /**\n * Executes `fn` after `delay`, clearing any previously scheduled call.\n */\n request(fn) {\n this.cancel();\n this.currentId = scheduler.request(() => {\n this.currentId = EMPTY;\n fn();\n });\n }\n cancel = () => {\n if (this.currentId !== EMPTY) {\n scheduler.cancel(this.currentId);\n this.currentId = EMPTY;\n }\n };\n disposeEffect = () => {\n return this.cancel;\n };\n}\n\n/**\n * A `requestAnimationFrame` with automatic cleanup and guard.\n */\nexport function useAnimationFrame() {\n const timeout = useRefWithInit(AnimationFrame.create).current;\n useOnMount(timeout.disposeEffect);\n return timeout;\n}","/**\n * If the provided argument is a ref object, returns its `current` value.\n * Otherwise, returns the argument itself.\n */\nexport function resolveRef(maybeRef) {\n if (maybeRef == null) {\n return maybeRef;\n }\n return 'current' in maybeRef ? maybeRef.current : maybeRef;\n}","'use client';\n\nimport * as ReactDOM from 'react-dom';\nimport { useAnimationFrame } from '@base-ui/utils/useAnimationFrame';\nimport { useStableCallback } from '@base-ui/utils/useStableCallback';\nimport { resolveRef } from \"../utils/resolveRef.mjs\";\n\n/**\n * Executes a function once all animations have finished on the provided element.\n * If an animation is canceled, waits for any replacement animations before executing.\n * @param elementOrRef - The element to watch for animations.\n * @param waitForStartingStyleRemoved - Whether to wait for [data-starting-style] to be removed before checking for animations.\n * @returns A function that takes a callback to execute once all animations have finished, and an optional AbortSignal to abort the callback\n */\nexport function useAnimationsFinished(elementOrRef, waitForStartingStyleRemoved = false) {\n const frame = useAnimationFrame();\n return useStableCallback((fnToExecute,\n /**\n * An optional [AbortSignal](https://developer.mozilla.org/en-US/docs/Web/API/AbortSignal) that\n * can be used to abort `fnToExecute` before all the animations have finished.\n * @default null\n */\n signal = null) => {\n frame.cancel();\n const element = resolveRef(elementOrRef);\n if (element == null) {\n return;\n }\n const resolvedElement = element;\n const done = () => {\n // Synchronously flush the unmounting of the component so that the browser doesn't\n // paint: https://github.com/mui/base-ui/issues/979\n ReactDOM.flushSync(fnToExecute);\n };\n if (typeof resolvedElement.getAnimations !== 'function' || globalThis.BASE_UI_ANIMATIONS_DISABLED) {\n fnToExecute();\n return;\n }\n function exec() {\n Promise.all(resolvedElement.getAnimations().map(animation => animation.finished)).then(() => {\n if (!signal?.aborted) {\n done();\n }\n }, () => {\n if (signal?.aborted) {\n return;\n }\n const currentAnimations = resolvedElement.getAnimations();\n if (currentAnimations.some(animation => animation.pending || animation.playState !== 'finished')) {\n // Sometimes animations can be aborted because a property they depend on changes while the animation plays.\n // In such cases, we need to re-check if any new animations have started.\n exec();\n return;\n }\n done();\n });\n }\n if (waitForStartingStyleRemoved) {\n const startingStyleAttribute = 'data-starting-style';\n\n // If `[data-starting-style]` isn't present, fall back to waiting one more frame\n // to give \"open\" animations a chance to be registered.\n if (!resolvedElement.hasAttribute(startingStyleAttribute)) {\n frame.request(exec);\n return;\n }\n\n // Wait for `[data-starting-style]` to have been removed.\n const attributeObserver = new MutationObserver(() => {\n if (!resolvedElement.hasAttribute(startingStyleAttribute)) {\n attributeObserver.disconnect();\n exec();\n }\n });\n attributeObserver.observe(resolvedElement, {\n attributes: true,\n attributeFilter: [startingStyleAttribute]\n });\n signal?.addEventListener('abort', () => attributeObserver.disconnect(), {\n once: true\n });\n return;\n }\n frame.request(exec);\n });\n}","'use client';\n\nimport * as React from 'react';\nimport { useStableCallback } from '@base-ui/utils/useStableCallback';\nimport { useAnimationsFinished } from \"./useAnimationsFinished.mjs\";\n\n/**\n * Calls the provided function when the CSS open/close animation or transition completes.\n */\nexport function useOpenChangeComplete(parameters) {\n const {\n enabled = true,\n open,\n ref,\n onComplete: onCompleteParam\n } = parameters;\n const onComplete = useStableCallback(onCompleteParam);\n const runOnceAnimationsFinish = useAnimationsFinished(ref, open);\n React.useEffect(() => {\n if (!enabled) {\n return undefined;\n }\n const abortController = new AbortController();\n runOnceAnimationsFinish(onComplete, abortController.signal);\n return () => {\n abortController.abort();\n };\n }, [enabled, open, onComplete, runOnceAnimationsFinish]);\n}","export let TransitionStatusDataAttributes = /*#__PURE__*/function (TransitionStatusDataAttributes) {\n /**\n * Present when the component begins animating in.\n */\n TransitionStatusDataAttributes[\"startingStyle\"] = \"data-starting-style\";\n /**\n * Present when the component is animating out.\n */\n TransitionStatusDataAttributes[\"endingStyle\"] = \"data-ending-style\";\n return TransitionStatusDataAttributes;\n}({});\nconst STARTING_HOOK = {\n 'data-starting-style': ''\n};\nconst ENDING_HOOK = {\n 'data-ending-style': ''\n};\nexport const transitionStatusMapping = {\n transitionStatus(value) {\n if (value === 'starting') {\n return STARTING_HOOK;\n }\n if (value === 'ending') {\n return ENDING_HOOK;\n }\n return null;\n }\n};","'use client';\n\nimport * as React from 'react';\nimport { useIsoLayoutEffect } from '@base-ui/utils/useIsoLayoutEffect';\nimport { AnimationFrame } from '@base-ui/utils/useAnimationFrame';\n/**\n * Provides a status string for CSS animations.\n * @param open - a boolean that determines if the element is open.\n * @param enableIdleState - a boolean that enables the `'idle'` state between `'starting'` and `'ending'`\n */\nexport function useTransitionStatus(open, enableIdleState = false, deferEndingState = false) {\n const [transitionStatus, setTransitionStatus] = React.useState(open && enableIdleState ? 'idle' : undefined);\n const [mounted, setMounted] = React.useState(open);\n if (open && !mounted) {\n setMounted(true);\n setTransitionStatus('starting');\n }\n if (!open && mounted && transitionStatus !== 'ending' && !deferEndingState) {\n setTransitionStatus('ending');\n }\n if (!open && !mounted && transitionStatus === 'ending') {\n setTransitionStatus(undefined);\n }\n useIsoLayoutEffect(() => {\n if (!open && mounted && transitionStatus !== 'ending' && deferEndingState) {\n const frame = AnimationFrame.request(() => {\n setTransitionStatus('ending');\n });\n return () => {\n AnimationFrame.cancel(frame);\n };\n }\n return undefined;\n }, [open, mounted, transitionStatus, deferEndingState]);\n useIsoLayoutEffect(() => {\n if (!open || enableIdleState) {\n return undefined;\n }\n const frame = AnimationFrame.request(() => {\n // Avoid `flushSync` here due to Firefox.\n // See https://github.com/mui/base-ui/pull/3424\n setTransitionStatus(undefined);\n });\n return () => {\n AnimationFrame.cancel(frame);\n };\n }, [enableIdleState, open]);\n useIsoLayoutEffect(() => {\n if (!open || !enableIdleState) {\n return undefined;\n }\n if (open && mounted && transitionStatus !== 'idle') {\n setTransitionStatus('starting');\n }\n const frame = AnimationFrame.request(() => {\n setTransitionStatus('idle');\n });\n return () => {\n AnimationFrame.cancel(frame);\n };\n }, [enableIdleState, open, mounted, transitionStatus]);\n return {\n mounted,\n setMounted,\n transitionStatus\n };\n}","'use client';\n\nimport * as React from 'react';\nimport { useIsoLayoutEffect } from '@base-ui/utils/useIsoLayoutEffect';\nimport { useFieldRootContext } from \"../../internals/field-root-context/FieldRootContext.mjs\";\nimport { useLabelableContext } from \"../../internals/labelable-provider/LabelableContext.mjs\";\nimport { fieldValidityMapping } from \"../../internals/field-constants/constants.mjs\";\nimport { useBaseUiId } from \"../../internals/useBaseUiId.mjs\";\nimport { useRenderElement } from \"../../internals/useRenderElement.mjs\";\nimport { useFieldItemContext } from \"../item/FieldItemContext.mjs\";\n\n/**\n * A paragraph with additional information about the field.\n * Renders a `<p>` element.\n *\n * Documentation: [Base UI Field](https://base-ui.com/react/components/field)\n */\nexport const FieldDescription = /*#__PURE__*/React.forwardRef(function FieldDescription(componentProps, forwardedRef) {\n const {\n render,\n id: idProp,\n className,\n style,\n ...elementProps\n } = componentProps;\n const id = useBaseUiId(idProp);\n const fieldRootContext = useFieldRootContext(false);\n const fieldItemContext = useFieldItemContext();\n const {\n setMessageIds\n } = useLabelableContext();\n const state = {\n ...fieldRootContext.state,\n disabled: fieldRootContext.disabled || fieldItemContext.disabled\n };\n useIsoLayoutEffect(() => {\n if (!id) {\n return undefined;\n }\n setMessageIds(v => v.concat(id));\n return () => {\n setMessageIds(v => v.filter(item => item !== id));\n };\n }, [id, setMessageIds]);\n const element = useRenderElement('p', componentProps, {\n ref: forwardedRef,\n state,\n props: [{\n id\n }, elementProps],\n stateAttributesMapping: fieldValidityMapping\n });\n return element;\n});\nif (process.env.NODE_ENV !== \"production\") FieldDescription.displayName = \"FieldDescription\";","'use client';\n\n// TODO: uncomment once we enable eslint-plugin-react-compiler // eslint-disable-next-line react-compiler/react-compiler -- process.env never changes, dependency arrays are intentionally ignored\n/* eslint-disable react-hooks/rules-of-hooks, react-hooks/exhaustive-deps */\nimport * as React from 'react';\nimport { error } from \"./error.mjs\";\nexport function useControlled({\n controlled,\n default: defaultProp,\n name,\n state = 'value'\n}) {\n // isControlled is ignored in the hook dependency lists as it should never change.\n const {\n current: isControlled\n } = React.useRef(controlled !== undefined);\n const [valueState, setValue] = React.useState(defaultProp);\n const value = isControlled ? controlled : valueState;\n if (process.env.NODE_ENV !== 'production') {\n React.useEffect(() => {\n if (isControlled !== (controlled !== undefined)) {\n error([`A component is changing the ${isControlled ? '' : 'un'}controlled ${state} state of ${name} to be ${isControlled ? 'un' : ''}controlled.`, 'Elements should not switch from uncontrolled to controlled (or vice versa).', `Decide between using a controlled or uncontrolled ${name} ` + 'element for the lifetime of the component.', \"The nature of the state is determined during the first render. It's considered controlled if the value is not `undefined`.\", 'More info: https://fb.me/react-controlled-components'].join('\\n'));\n }\n }, [state, name, controlled]);\n const {\n current: defaultValue\n } = React.useRef(defaultProp);\n React.useEffect(() => {\n if (!isControlled && serializeToDevModeString(defaultValue) !== serializeToDevModeString(defaultProp)) {\n error([`A component is changing the default ${state} state of an uncontrolled ${name} after being initialized. ` + `To suppress this warning opt to use a controlled ${name}.`].join('\\n'));\n }\n }, [defaultProp]);\n }\n const setValueIfUncontrolled = React.useCallback(newValue => {\n if (!isControlled) {\n setValue(newValue);\n }\n }, []);\n return [value, setValueIfUncontrolled];\n}\nfunction serializeToDevModeString(input) {\n let nextId = 0;\n const seen = new WeakMap();\n try {\n const result = JSON.stringify(input, function replacer(key, value) {\n if (key === '_owner' && this != null && typeof this === 'object' && '$$typeof' in this) {\n return undefined;\n }\n if (typeof value === 'bigint') {\n return `__bigint__:${value}`;\n }\n if (value !== null && typeof value === 'object') {\n const id = seen.get(value);\n if (id !== undefined) {\n return `__object__:${id}`;\n }\n seen.set(value, nextId);\n nextId += 1;\n }\n return value;\n });\n return result ?? `__top__:${typeof input}`;\n } catch {\n return '__unserializable__';\n }\n}","'use client';\n\nimport { useIsoLayoutEffect } from '@base-ui/utils/useIsoLayoutEffect';\nimport { useRefWithInit } from '@base-ui/utils/useRefWithInit';\nimport { useFieldRootContext } from \"../field-root-context/FieldRootContext.mjs\";\nexport function useRegisterFieldControl(controlRef, id, value, getFormValueOverride, enabled = true, name) {\n const {\n registerFieldControl\n } = useFieldRootContext();\n const sourceRef = useRefWithInit(() => Symbol());\n\n // Re-register without unregistering first: re-registration with the same id updates the\n // form's fields Map entry in place, while a delete + re-add would move the field to the\n // end of the Map every time its value changes.\n useIsoLayoutEffect(() => {\n const source = sourceRef.current;\n if (!enabled) {\n registerFieldControl(source, undefined);\n return;\n }\n const registration = {\n controlRef,\n getValue: getFormValueOverride,\n id,\n name,\n value\n };\n registerFieldControl(source, registration);\n }, [controlRef, enabled, getFormValueOverride, id, name, registerFieldControl, sourceRef, value]);\n useIsoLayoutEffect(() => {\n const source = sourceRef.current;\n return () => {\n registerFieldControl(source, undefined);\n };\n }, [registerFieldControl, sourceRef]);\n}","export const none = 'none';\nexport const triggerPress = 'trigger-press';\nexport const triggerHover = 'trigger-hover';\nexport const triggerFocus = 'trigger-focus';\nexport const outsidePress = 'outside-press';\nexport const itemPress = 'item-press';\nexport const closePress = 'close-press';\nexport const linkPress = 'link-press';\nexport const clearPress = 'clear-press';\nexport const chipRemovePress = 'chip-remove-press';\nexport const trackPress = 'track-press';\nexport const incrementPress = 'increment-press';\nexport const decrementPress = 'decrement-press';\nexport const inputChange = 'input-change';\nexport const inputClear = 'input-clear';\nexport const inputBlur = 'input-blur';\nexport const inputPaste = 'input-paste';\nexport const inputPress = 'input-press';\nexport const focusOut = 'focus-out';\nexport const escapeKey = 'escape-key';\nexport const closeWatcher = 'close-watcher';\nexport const listNavigation = 'list-navigation';\nexport const keyboard = 'keyboard';\nexport const pointer = 'pointer';\nexport const drag = 'drag';\nexport const wheel = 'wheel';\nexport const scrub = 'scrub';\nexport const cancelOpen = 'cancel-open';\nexport const siblingOpen = 'sibling-open';\nexport const disabled = 'disabled';\nexport const missing = 'missing';\nexport const initial = 'initial';\nexport const imperativeAction = 'imperative-action';\nexport const swipe = 'swipe';\nexport const windowResize = 'window-resize';","import { EMPTY_OBJECT } from '@base-ui/utils/empty';\nimport { REASONS } from \"./reasons.mjs\";\n\n/**\n * Maps a change `reason` string to the corresponding native event type.\n */\n\n/**\n * Details of custom change events emitted by Base UI components.\n */\n\n/**\n * Details of custom generic events emitted by Base UI components.\n */\n\n/**\n * Creates a Base UI event details object with the given reason and utilities\n * for preventing Base UI's internal event handling.\n */\nexport function createChangeEventDetails(reason, event, trigger, customProperties) {\n let canceled = false;\n let allowPropagation = false;\n const custom = customProperties ?? EMPTY_OBJECT;\n const details = {\n reason,\n event: event ?? new Event('base-ui'),\n cancel() {\n canceled = true;\n },\n allowPropagation() {\n allowPropagation = true;\n },\n get isCanceled() {\n return canceled;\n },\n get isPropagationAllowed() {\n return allowPropagation;\n },\n trigger,\n ...custom\n };\n return details;\n}\nexport function createGenericEventDetails(reason, event, customProperties) {\n const custom = customProperties ?? EMPTY_OBJECT;\n const details = {\n reason,\n event: event ?? new Event('base-ui'),\n ...custom\n };\n return details;\n}","'use client';\n\nimport * as React from 'react';\nimport { useFieldRootContext } from \"../../internals/field-root-context/FieldRootContext.mjs\";\nimport { fieldValidityMapping } from \"../../internals/field-constants/constants.mjs\";\nimport { useRenderElement } from \"../../internals/useRenderElement.mjs\";\nimport { FieldItemContext } from \"./FieldItemContext.mjs\";\nimport { LabelableProvider } from \"../../internals/labelable-provider/index.mjs\";\n\n/**\n * Groups individual items in a checkbox group or radio group with a label and description.\n * Renders a `<div>` element.\n *\n * Documentation: [Base UI Field](https://base-ui.com/react/components/field)\n */\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nexport const FieldItem = /*#__PURE__*/React.forwardRef(function FieldItem(componentProps, forwardedRef) {\n const {\n render,\n className,\n style,\n disabled: disabledProp = false,\n ...elementProps\n } = componentProps;\n const {\n state: fieldState,\n disabled: rootDisabled\n } = useFieldRootContext(false);\n const disabled = rootDisabled || disabledProp;\n const state = {\n ...fieldState,\n disabled\n };\n const fieldItemContext = React.useMemo(() => ({\n disabled\n }), [disabled]);\n const element = useRenderElement('div', componentProps, {\n ref: forwardedRef,\n state,\n props: elementProps,\n stateAttributesMapping: fieldValidityMapping\n });\n return /*#__PURE__*/_jsx(LabelableProvider, {\n children: /*#__PURE__*/_jsx(FieldItemContext.Provider, {\n value: fieldItemContext,\n children: element\n })\n });\n});\nif (process.env.NODE_ENV !== \"production\") FieldItem.displayName = \"FieldItem\";","const visuallyHiddenBase = {\n clipPath: 'inset(50%)',\n overflow: 'hidden',\n whiteSpace: 'nowrap',\n border: 0,\n padding: 0,\n width: 1,\n height: 1,\n margin: -1\n};\nexport const visuallyHidden = {\n ...visuallyHiddenBase,\n position: 'fixed',\n top: 0,\n left: 0\n};\nexport const visuallyHiddenInput = {\n ...visuallyHiddenBase,\n position: 'absolute'\n};","import { transitionStatusMapping } from \"../../internals/stateAttributesMapping.mjs\";\nimport { fieldValidityMapping } from \"../../internals/field-constants/constants.mjs\";\nexport const stateAttributesMapping = {\n checked(value) {\n if (value) {\n return {\n 'data-checked': ''\n };\n }\n return {\n 'data-unchecked': ''\n };\n },\n ...transitionStatusMapping,\n ...fieldValidityMapping\n};","import { ownerWindow } from '@base-ui/utils/owner';\n/**\n * Dispatches a constructed click on the target so it carries the source event's\n * modifier state, which `click()` always reports as unpressed. Like `click()`,\n * the untrusted click still runs native activation behavior (form submission,\n * link navigation).\n * `detail` defaults to 0 (the native convention for keyboard-generated clicks);\n * pass `detail: 1` when the click represents a mouse gesture so consumers keying\n * off `detail === 0` don't classify it as a keyboard activation.\n */\nexport function dispatchClickWithModifiers(target, sourceEvent, {\n detail = 0\n} = {}) {\n target.dispatchEvent(new (ownerWindow(target).PointerEvent)('click', {\n bubbles: true,\n cancelable: true,\n composed: true,\n detail,\n shiftKey: sourceEvent.shiftKey,\n ctrlKey: sourceEvent.ctrlKey,\n altKey: sourceEvent.altKey,\n metaKey: sourceEvent.metaKey\n }));\n}","'use client';\n\nimport _formatErrorMessage from \"@base-ui/utils/formatErrorMessage\";\nimport * as React from 'react';\nexport const CompositeRootContext = /*#__PURE__*/React.createContext(undefined);\nif (process.env.NODE_ENV !== \"production\") CompositeRootContext.displayName = \"CompositeRootContext\";\nexport function useCompositeRootContext(optional = false) {\n const context = React.useContext(CompositeRootContext);\n if (context === undefined && !optional) {\n throw new Error(process.env.NODE_ENV !== \"production\" ? 'Base UI: CompositeRootContext is missing. Composite parts must be placed within <Composite.Root>.' : _formatErrorMessage(16));\n }\n return context;\n}","'use client';\n\nimport * as React from 'react';\nexport function useFocusableWhenDisabled(parameters) {\n const {\n focusableWhenDisabled,\n disabled,\n composite = false,\n tabIndex: tabIndexProp = 0,\n isNativeButton\n } = parameters;\n const isFocusableComposite = composite && focusableWhenDisabled !== false;\n const isNonFocusableComposite = composite && focusableWhenDisabled === false;\n\n // we can't explicitly assign `undefined` to any of these props because it\n // would otherwise prevent subsequently merged props from setting them\n const props = React.useMemo(() => {\n const additionalProps = {\n // allow Tabbing away from focusableWhenDisabled elements\n onKeyDown(event) {\n if (disabled && focusableWhenDisabled && event.key !== 'Tab') {\n event.preventDefault();\n }\n }\n };\n if (!composite) {\n additionalProps.tabIndex = tabIndexProp;\n if (!isNativeButton && disabled) {\n additionalProps.tabIndex = focusableWhenDisabled ? tabIndexProp : -1;\n }\n }\n if (isNativeButton && (focusableWhenDisabled || isFocusableComposite) || !isNativeButton && disabled) {\n additionalProps['aria-disabled'] = disabled;\n }\n if (isNativeButton && (!focusableWhenDisabled || isNonFocusableComposite)) {\n additionalProps.disabled = disabled;\n }\n return additionalProps;\n }, [composite, disabled, focusableWhenDisabled, isFocusableComposite, isNonFocusableComposite, isNativeButton, tabIndexProp]);\n return {\n props\n };\n}","'use client';\n\nimport * as React from 'react';\nimport { isHTMLElement } from '@floating-ui/utils/dom';\nimport { useStableCallback } from '@base-ui/utils/useStableCallback';\nimport { error } from '@base-ui/utils/error';\nimport { SafeReact } from '@base-ui/utils/safeReact';\nimport { useIsoLayoutEffect } from '@base-ui/utils/useIsoLayoutEffect';\nimport { makeEventPreventable, mergeProps } from \"../../merge-props/index.mjs\";\nimport { useCompositeRootContext } from \"../composite/root/CompositeRootContext.mjs\";\nimport { useFocusableWhenDisabled } from \"../../utils/useFocusableWhenDisabled.mjs\";\nimport { dispatchClickWithModifiers } from \"../../utils/dispatchClickWithModifiers.mjs\";\nexport function useButton(parameters = {}) {\n const {\n disabled = false,\n focusableWhenDisabled,\n tabIndex = 0,\n native: isNativeButton = true,\n composite: compositeProp\n } = parameters;\n const elementRef = React.useRef(null);\n const compositeRootContext = useCompositeRootContext(true);\n const isCompositeItem = compositeProp ?? compositeRootContext !== undefined;\n const {\n props: focusableWhenDisabledProps\n } = useFocusableWhenDisabled({\n focusableWhenDisabled,\n disabled,\n composite: isCompositeItem,\n tabIndex,\n isNativeButton\n });\n if (process.env.NODE_ENV !== 'production') {\n // eslint-disable-next-line react-hooks/rules-of-hooks\n React.useEffect(() => {\n if (!elementRef.current) {\n return;\n }\n const isButtonTag = isButtonElement(elementRef.current);\n if (isNativeButton) {\n if (!isButtonTag) {\n const ownerStackMessage = SafeReact.captureOwnerStack?.() || '';\n const message = 'A component that acts as a button expected a native <button> because the ' + '`nativeButton` prop is true. Rendering a non-<button> removes native button ' + 'semantics, which can impact forms and accessibility. Use a real <button> in the ' + '`render` prop, or set `nativeButton` to `false`.';\n error(`${message}${ownerStackMessage}`);\n }\n } else if (isButtonTag) {\n const ownerStackMessage = SafeReact.captureOwnerStack?.() || '';\n const message = 'A component that acts as a button expected a non-<button> because the `nativeButton` ' + 'prop is false. Rendering a <button> keeps native behavior while Base UI applies ' + 'non-native attributes and handlers, which can add unintended extra attributes (such ' + 'as `role` or `aria-disabled`). Use a non-<button> in the `render` prop, or set ' + '`nativeButton` to `true`.';\n error(`${message}${ownerStackMessage}`);\n }\n }, [isNativeButton]);\n }\n\n // handles a disabled composite button rendering another button, e.g.\n // <Toolbar.Button disabled render={<Menu.Trigger />} />\n // the `disabled` prop needs to pass through 2 `useButton`s then finally\n // delete the `disabled` attribute from DOM\n const updateDisabled = React.useCallback(() => {\n const element = elementRef.current;\n if (!isButtonElement(element)) {\n return;\n }\n if (isCompositeItem && disabled && focusableWhenDisabledProps.disabled === undefined && element.disabled) {\n element.disabled = false;\n }\n }, [disabled, focusableWhenDisabledProps.disabled, isCompositeItem]);\n useIsoLayoutEffect(updateDisabled, [updateDisabled]);\n const getButtonProps = React.useCallback((externalProps = {}) => {\n const {\n onClick: externalOnClick,\n onMouseDown: externalOnMouseDown,\n onKeyUp: externalOnKeyUp,\n onKeyDown: externalOnKeyDown,\n onPointerDown: externalOnPointerDown,\n ...otherExternalProps\n } = externalProps;\n return mergeProps({\n onClick(event) {\n if (disabled) {\n event.preventDefault();\n return;\n }\n externalOnClick?.(event);\n },\n onMouseDown(event) {\n if (!disabled) {\n externalOnMouseDown?.(event);\n }\n },\n onKeyDown(event) {\n if (disabled) {\n return;\n }\n makeEventPreventable(event);\n externalOnKeyDown?.(event);\n if (event.baseUIHandlerPrevented) {\n return;\n }\n const isCurrentTarget = event.target === event.currentTarget;\n const currentTarget = event.currentTarget;\n const isButton = isButtonElement(currentTarget);\n const isLink = !isNativeButton && isValidLinkElement(currentTarget);\n const shouldClick = isCurrentTarget && (isNativeButton ? isButton : !isLink);\n const isEnterKey = event.key === 'Enter';\n const isSpaceKey = event.key === ' ';\n const role = currentTarget.getAttribute('role');\n const isTextNavigationRole = role?.startsWith('menuitem') || role === 'option' || role === 'gridcell';\n if (isCurrentTarget && isCompositeItem && isSpaceKey) {\n if (event.defaultPrevented && isTextNavigationRole) {\n return;\n }\n event.preventDefault();\n\n // Only a native-mode item that isn't a real <button> is excluded.\n if (!isNativeButton || isButton) {\n event.preventBaseUIHandler();\n dispatchClickWithModifiers(currentTarget, event);\n }\n return;\n }\n\n // Keyboard accessibility for native and non-native elements.\n if (!shouldClick || isNativeButton || !isSpaceKey && !isEnterKey) {\n // Space activates links on keyup (`role=\"button\"` semantics, matching the\n // composite path); prevent the page scroll Space would otherwise trigger.\n // Enter is left to the browser's native link activation.\n if (isCurrentTarget && isLink && isSpaceKey) {\n event.preventDefault();\n }\n return;\n }\n\n // Match native buttons: preventing the keydown's default cancels activation.\n if (event.defaultPrevented) {\n return;\n }\n event.preventDefault();\n if (isEnterKey) {\n event.preventBaseUIHandler();\n dispatchClickWithModifiers(currentTarget, event);\n }\n },\n onKeyUp(event) {\n if (disabled) {\n return;\n }\n\n // calling preventDefault in keyUp on a <button> will not dispatch a click event if Space is pressed\n // https://codesandbox.io/p/sandbox/button-keyup-preventdefault-dn7f0\n makeEventPreventable(event);\n externalOnKeyUp?.(event);\n if (event.target === event.currentTarget && isNativeButton && isCompositeItem && isButtonElement(event.currentTarget) && event.key === ' ') {\n event.preventDefault();\n return;\n }\n if (event.baseUIHandlerPrevented) {\n return;\n }\n\n // Keyboard accessibility for non interactive elements.\n // Match native buttons: preventing the keyup's default cancels Space activation.\n // Limitation: unlike a native <button>, a prevented *keydown* cannot cancel the\n // activation — no state is kept between keydown and keyup, so we can't tell\n // whether the keydown was prevented or even happened on this element.\n if (event.target === event.currentTarget && !isNativeButton && !isCompositeItem && !event.defaultPrevented && event.key === ' ') {\n event.preventBaseUIHandler();\n dispatchClickWithModifiers(event.currentTarget, event);\n }\n },\n onPointerDown(event) {\n if (disabled) {\n event.preventDefault();\n return;\n }\n externalOnPointerDown?.(event);\n }\n }, isNativeButton ? {\n type: 'button'\n } : {\n role: 'button'\n }, focusableWhenDisabledProps, otherExternalProps);\n }, [disabled, focusableWhenDisabledProps, isCompositeItem, isNativeButton]);\n const buttonRef = useStableCallback(element => {\n elementRef.current = element;\n updateDisabled();\n });\n return {\n getButtonProps,\n buttonRef\n };\n}\nfunction isButtonElement(elem) {\n return isHTMLElement(elem) && elem.tagName === 'BUTTON';\n}\nfunction isValidLinkElement(elem) {\n return isHTMLElement(elem) && elem.tagName === 'A' && Boolean(elem.href);\n}","export const ACTIVE_COMPOSITE_ITEM = 'data-composite-item-active';","'use client';\n\nimport * as React from 'react';\nexport const CompositeListContext = /*#__PURE__*/React.createContext({\n register: () => {},\n unregister: () => {},\n subscribeMapChange: () => () => {},\n nextIndexRef: {\n current: 0\n }\n});\nif (process.env.NODE_ENV !== \"production\") CompositeListContext.displayName = \"CompositeListContext\";\nexport function useCompositeListContext() {\n return React.useContext(CompositeListContext);\n}","'use client';\n\nimport * as React from 'react';\nimport { useIsoLayoutEffect } from '@base-ui/utils/useIsoLayoutEffect';\nimport { useCompositeListContext } from \"./CompositeListContext.mjs\";\n/**\n * Used to register a list item and its index (DOM position) in the `CompositeList`.\n */\nexport function useCompositeListItem(params = {}) {\n const {\n guess,\n label,\n metadata,\n textRef,\n index: externalIndex\n } = params;\n const {\n register,\n unregister,\n subscribeMapChange,\n nextIndexRef\n } = useCompositeListContext();\n\n // Guess the index from the render order. This avoids a re-render after mount for\n // flat lists rendered in DOM order; when the guess is wrong (grouped or out-of-order\n // rendering), the commit flush corrects it before paint.\n const indexRef = React.useRef(-1);\n const [internalIndex, setInternalIndex] = React.useState(externalIndex == null && guess ? () => {\n if (indexRef.current === -1) {\n const newIndex = nextIndexRef.current;\n nextIndexRef.current += 1;\n indexRef.current = newIndex;\n }\n return indexRef.current;\n } : -1);\n const index = externalIndex ?? internalIndex;\n const componentRef = React.useRef(null);\n\n // Deliberately identity-sensitive: nested items sharing one DOM node rely on ref attachment\n // order to decide which registration wins, and republishing from an effect instead would let\n // an inner item's later update silently take ownership from the outer one.\n const ref = React.useCallback(node => {\n const previousNode = componentRef.current;\n if (previousNode) {\n unregister(previousNode);\n }\n componentRef.current = node;\n if (node) {\n register(node, {\n metadata: metadata ?? null,\n index: externalIndex ?? null,\n label,\n textRef\n });\n }\n }, [externalIndex, register, unregister, metadata, label, textRef]);\n useIsoLayoutEffect(() => {\n if (externalIndex != null) {\n return undefined;\n }\n return subscribeMapChange(map => {\n const i = componentRef.current ? map.get(componentRef.current)?.index : null;\n if (i != null) {\n setInternalIndex(i);\n }\n });\n }, [externalIndex, subscribeMapChange]);\n return {\n ref,\n index\n };\n}","'use client';\n\nimport * as React from 'react';\nimport { useMergedRefs } from '@base-ui/utils/useMergedRefs';\nimport { useCompositeRootContext } from \"../root/CompositeRootContext.mjs\";\nimport { useCompositeListItem } from \"../list/useCompositeListItem.mjs\";\nexport function useCompositeItem(params = {}) {\n const {\n highlightItemOnHover,\n highlightedIndex,\n onHighlightedIndexChange\n } = useCompositeRootContext();\n const {\n ref,\n index\n } = useCompositeListItem(params);\n const isHighlighted = highlightedIndex === index;\n const itemRef = React.useRef(null);\n const mergedRef = useMergedRefs(ref, itemRef);\n const compositeProps = {\n tabIndex: isHighlighted ? 0 : -1,\n onFocus() {\n onHighlightedIndexChange(index);\n },\n onMouseMove() {\n const item = itemRef.current;\n if (!highlightItemOnHover || !item) {\n return;\n }\n const disabled = item.hasAttribute('disabled') || item.ariaDisabled === 'true';\n if (!isHighlighted && !disabled) {\n item.focus();\n }\n }\n };\n return {\n compositeProps,\n compositeRef: mergedRef,\n index\n };\n}","'use client';\n\nimport { EMPTY_OBJECT, EMPTY_ARRAY } from '@base-ui/utils/empty';\nimport { useRenderElement } from \"../../useRenderElement.mjs\";\nimport { useCompositeItem } from \"./useCompositeItem.mjs\";\nexport function CompositeItem(componentProps) {\n const {\n render,\n className,\n style,\n state = EMPTY_OBJECT,\n props = EMPTY_ARRAY,\n refs = EMPTY_ARRAY,\n metadata,\n stateAttributesMapping,\n tag = 'div',\n ...elementProps\n } = componentProps;\n const {\n compositeProps,\n compositeRef\n } = useCompositeItem({\n metadata\n });\n return useRenderElement(tag, componentProps, {\n state,\n // The composite ref attaches first so an outer item wins when nested items share a DOM node.\n ref: [compositeRef, ...refs],\n props: [compositeProps, ...props, elementProps],\n stateAttributesMapping\n });\n}","'use client';\n\nimport * as React from 'react';\nexport const RadioGroupContext = /*#__PURE__*/React.createContext(undefined);\nif (process.env.NODE_ENV !== \"production\") RadioGroupContext.displayName = \"RadioGroupContext\";\nexport function useRadioGroupContext() {\n return React.useContext(RadioGroupContext);\n}","export function serializeValue(value) {\n if (value == null) {\n return '';\n }\n if (typeof value === 'string') {\n return value;\n }\n try {\n return JSON.stringify(value);\n } catch {\n return String(value);\n }\n}","'use client';\n\nimport _formatErrorMessage from \"@base-ui/utils/formatErrorMessage\";\nimport * as React from 'react';\nexport const RadioRootContext = /*#__PURE__*/React.createContext(undefined);\nif (process.env.NODE_ENV !== \"production\") RadioRootContext.displayName = \"RadioRootContext\";\nexport function useRadioRootContext() {\n const value = React.useContext(RadioRootContext);\n if (value === undefined) {\n throw new Error(process.env.NODE_ENV !== \"production\" ? 'Base UI: RadioRootContext is missing. Radio parts must be placed within <Radio.Root>.' : _formatErrorMessage(52));\n }\n return value;\n}","'use client';\n\nimport * as React from 'react';\nimport { useMergedRefs } from '@base-ui/utils/useMergedRefs';\nimport { useIsoLayoutEffect } from '@base-ui/utils/useIsoLayoutEffect';\nimport { visuallyHidden, visuallyHiddenInput } from '@base-ui/utils/visuallyHidden';\nimport { EMPTY_OBJECT } from '@base-ui/utils/empty';\nimport { createChangeEventDetails } from \"../../internals/createBaseUIEventDetails.mjs\";\nimport { REASONS } from \"../../internals/reasons.mjs\";\nimport { NOOP } from \"../../internals/noop.mjs\";\nimport { stateAttributesMapping } from \"../utils/stateAttributesMapping.mjs\";\nimport { dispatchClickWithModifiers } from \"../../utils/dispatchClickWithModifiers.mjs\";\nimport { useBaseUiId } from \"../../internals/useBaseUiId.mjs\";\nimport { useRenderElement } from \"../../internals/useRenderElement.mjs\";\nimport { useButton } from \"../../internals/use-button/index.mjs\";\nimport { ACTIVE_COMPOSITE_ITEM } from \"../../internals/composite/constants.mjs\";\nimport { CompositeItem } from \"../../internals/composite/item/CompositeItem.mjs\";\nimport { useFieldRootContext } from \"../../internals/field-root-context/FieldRootContext.mjs\";\nimport { useFieldItemContext } from \"../../field/item/FieldItemContext.mjs\";\nimport { useLabelableContext } from \"../../internals/labelable-provider/LabelableContext.mjs\";\nimport { useAriaLabelledBy } from \"../../internals/labelable-provider/useAriaLabelledBy.mjs\";\nimport { useLabelableId } from \"../../internals/labelable-provider/useLabelableId.mjs\";\nimport { useRadioGroupContext } from \"../../radio-group/RadioGroupContext.mjs\";\nimport { serializeValue } from \"../../internals/serializeValue.mjs\";\nimport { RadioRootContext } from \"./RadioRootContext.mjs\";\n\n/**\n * Represents the radio button itself.\n * Renders a `<span>` element and a hidden `<input>` beside.\n *\n * Documentation: [Base UI Radio](https://base-ui.com/react/components/radio)\n */\nimport { jsx as _jsx, jsxs as _jsxs } from \"react/jsx-runtime\";\nexport const RadioRoot = /*#__PURE__*/React.forwardRef(function RadioRoot(componentProps, forwardedRef) {\n const {\n render,\n className,\n disabled: disabledProp = false,\n readOnly: readOnlyProp = false,\n required: requiredProp = false,\n 'aria-labelledby': ariaLabelledByProp,\n value,\n inputRef: inputRefProp,\n nativeButton = false,\n id: idProp,\n style,\n ...elementProps\n } = componentProps;\n const groupContext = useRadioGroupContext();\n const {\n disabled: disabledGroup,\n readOnly: readOnlyGroup,\n required: requiredGroup,\n form: formGroup,\n checkedValue,\n touched = false,\n validation,\n name,\n setCheckedValue = NOOP,\n setTouched = NOOP,\n registerInputRef = NOOP\n } = groupContext ?? {};\n const {\n setTouched: setFieldTouched,\n setFilled,\n state: fieldState,\n disabled: fieldDisabled\n } = useFieldRootContext();\n const fieldItemContext = useFieldItemContext();\n const {\n labelId,\n getDescriptionProps\n } = useLabelableContext();\n const disabled = fieldDisabled || fieldItemContext.disabled || disabledGroup || disabledProp;\n const readOnly = readOnlyGroup || readOnlyProp;\n const required = requiredGroup || requiredProp;\n const form = formGroup;\n const checked = groupContext ? checkedValue === value : value === '';\n const radioRef = React.useRef(null);\n const inputRef = React.useRef(null);\n const registerFieldInput = validation?.registerInput;\n const registerInput = React.useCallback(element => registerFieldInput?.(element, {\n controlRef: radioRef,\n value: undefined\n }), [registerFieldInput]);\n const mergedInputRef = useMergedRefs(inputRefProp, inputRef, registerInputRef, registerInput);\n useIsoLayoutEffect(() => {\n if (inputRef.current?.checked) {\n setFilled(true);\n }\n }, [setFilled]);\n useIsoLayoutEffect(() => {\n if (!inputRef.current) {\n return;\n }\n if (disabled && checked) {\n registerInputRef(null);\n return;\n }\n registerInputRef(inputRef.current);\n }, [checked, disabled, registerInputRef]);\n const id = useBaseUiId();\n const inputId = useLabelableId({\n id: idProp,\n implicit: false,\n controlRef: radioRef\n });\n const hiddenInputId = nativeButton ? undefined : inputId;\n const ariaLabelledBy = useAriaLabelledBy(ariaLabelledByProp, labelId, inputRef, !nativeButton, hiddenInputId);\n const rootProps = {\n role: 'radio',\n 'aria-checked': checked,\n 'aria-labelledby': ariaLabelledBy,\n [ACTIVE_COMPOSITE_ITEM]: checked ? '' : undefined,\n id: nativeButton ? inputId : id,\n onKeyDown(event) {\n if (event.key === 'Enter') {\n // Radio only activates with Space. Preventing the keydown's default\n // stops useButton from turning Enter into a click.\n event.preventDefault();\n }\n },\n onClick(event) {\n if (event.defaultPrevented || disabled || readOnly) {\n return;\n }\n event.preventDefault();\n const input = inputRef.current;\n if (!input) {\n return;\n }\n dispatchClickWithModifiers(input, event);\n },\n onFocus(event) {\n if (event.defaultPrevented || disabled || readOnly || !touched) {\n return;\n }\n inputRef.current?.click();\n setTouched(false);\n }\n };\n const {\n getButtonProps,\n buttonRef\n } = useButton({\n disabled,\n native: nativeButton,\n composite: false\n });\n const inputProps = {\n type: 'radio',\n ref: mergedInputRef,\n form,\n id: hiddenInputId,\n name,\n tabIndex: -1,\n style: name ? visuallyHiddenInput : visuallyHidden,\n 'aria-hidden': true,\n ...(value !== undefined ? {\n value: serializeValue(value)\n } : EMPTY_OBJECT),\n disabled,\n checked,\n required,\n readOnly,\n onChange(event) {\n // Workaround for https://github.com/react/react/issues/9023\n if (event.nativeEvent.defaultPrevented) {\n return;\n }\n if (disabled || readOnly || value === undefined) {\n return;\n }\n const details = createChangeEventDetails(REASONS.none, event.nativeEvent);\n setCheckedValue(value, details);\n if (details.isCanceled) {\n return;\n }\n setFieldTouched(true);\n },\n onClick(event) {\n // Clicks dispatched on the input from the root's `onClick` and `onFocus` are an\n // implementation detail and must not reach ancestors.\n event.stopPropagation();\n },\n onFocus() {\n radioRef.current?.focus();\n }\n };\n const state = React.useMemo(() => ({\n ...fieldState,\n required,\n disabled,\n readOnly,\n checked\n }), [fieldState, disabled, readOnly, checked, required]);\n const contextValue = state;\n const isRadioGroup = groupContext !== undefined;\n const refs = [forwardedRef, radioRef, buttonRef];\n const props = [rootProps, elementProps, getButtonProps, getDescriptionProps, validation ? validationProps => validation.getValidationProps(disabled, validationProps) : EMPTY_OBJECT];\n const element = useRenderElement('span', componentProps, {\n enabled: !isRadioGroup,\n state,\n ref: refs,\n props,\n stateAttributesMapping\n });\n return /*#__PURE__*/_jsxs(RadioRootContext.Provider, {\n value: contextValue,\n children: [isRadioGroup ? /*#__PURE__*/_jsx(CompositeItem, {\n tag: \"span\",\n render: render,\n className: className,\n style: style,\n state: state,\n refs: refs,\n props: props,\n stateAttributesMapping: stateAttributesMapping\n }) : element, /*#__PURE__*/_jsx(\"input\", {\n ...inputProps,\n suppressHydrationWarning: true\n })]\n });\n});\nif (process.env.NODE_ENV !== \"production\") RadioRoot.displayName = \"RadioRoot\";","'use client';\n\nimport * as React from 'react';\nimport { useRenderElement } from \"../../internals/useRenderElement.mjs\";\nimport { useRadioRootContext } from \"../root/RadioRootContext.mjs\";\nimport { stateAttributesMapping } from \"../utils/stateAttributesMapping.mjs\";\nimport { useOpenChangeComplete } from \"../../internals/useOpenChangeComplete.mjs\";\nimport { useTransitionStatus } from \"../../internals/useTransitionStatus.mjs\";\n\n/**\n * Indicates whether the radio button is selected.\n * Renders a `<span>` element.\n *\n * Documentation: [Base UI Radio](https://base-ui.com/react/components/radio)\n */\nexport const RadioIndicator = /*#__PURE__*/React.forwardRef(function RadioIndicator(componentProps, forwardedRef) {\n const {\n render,\n className,\n style,\n keepMounted = false,\n ...elementProps\n } = componentProps;\n const rootState = useRadioRootContext();\n const rendered = rootState.checked;\n const {\n mounted,\n transitionStatus,\n setMounted\n } = useTransitionStatus(rendered);\n const state = {\n ...rootState,\n transitionStatus\n };\n const indicatorRef = React.useRef(null);\n const shouldRender = keepMounted || mounted;\n const element = useRenderElement('span', componentProps, {\n ref: [forwardedRef, indicatorRef],\n state,\n props: elementProps,\n stateAttributesMapping\n });\n useOpenChangeComplete({\n open: rendered,\n ref: indicatorRef,\n onComplete() {\n if (!rendered) {\n setMounted(false);\n }\n }\n });\n if (!shouldRender) {\n return null;\n }\n return element;\n});\nif (process.env.NODE_ENV !== \"production\") RadioIndicator.displayName = \"RadioIndicator\";","import { createContext, useContext } from \"react\";\n\nimport type { RadioButtonGroupDirection } from \"./constants\";\n\nexport type RadioButtonGroupContextValue = {\n disabled?: boolean;\n negative?: boolean;\n dir?: RadioButtonGroupDirection;\n};\n\nexport const RadioButtonGroupContext = createContext<RadioButtonGroupContextValue | null>(null);\n\nexport const useRadioButtonGroupContext = () => {\n const context = useContext(RadioButtonGroupContext);\n\n if (!context) {\n throw new Error(\"RadioButtonGroupItem must be used within a RadioButtonGroup component\");\n }\n return context;\n};\n","import React, { forwardRef } from \"react\";\nimport { Field } from \"@base-ui/react/field\";\nimport { Radio } from \"@base-ui/react/radio\";\nimport c from \"classnames/bind\";\n\nimport { useRadioButtonGroupContext } from \"./radio-button-group.context\";\nimport styles from \"./radio-button-group-item.module.scss\";\n\nconst cx = c.bind(styles);\n\nexport type RadioButtonGroupItem = {\n [\"data-testid\"]?: string;\n disabled?: boolean;\n id: string;\n label: string;\n value: string;\n helperText?: string;\n className?: string;\n};\n\nconst rootClassName = \"purpur-radio-button-group-item\";\n\nexport const RadioButtonGroupItem = forwardRef<HTMLSpanElement, RadioButtonGroupItem>(\n ({ disabled, id, value, label, \"data-testid\": dataTestId, helperText, className }, ref) => {\n const context = useRadioButtonGroupContext();\n const resolvedDisabled = disabled || context.disabled;\n\n return (\n <Field.Item\n disabled={resolvedDisabled}\n className={cx(className, `${rootClassName}`)}\n data-testid={dataTestId}\n key={`radio-item-${value}`}\n >\n <Field.Label\n data-testid={dataTestId ? `${dataTestId}-label` : undefined}\n className={cx(`${rootClassName}__label`)}\n data-negative={context.negative}\n >\n <span className={cx(`${rootClassName}__radio-container`)}>\n <Radio.Root\n className={cx(`${rootClassName}__radio`)}\n data-testid={dataTestId ? `${dataTestId}-radio` : undefined}\n data-negative={context.negative}\n id={id}\n ref={ref}\n value={value}\n >\n <Radio.Indicator\n className={cx(`${rootClassName}__radio-indicator`)}\n keepMounted\n data-negative={context.negative}\n />\n </Radio.Root>\n </span>\n {label}\n </Field.Label>\n {helperText && (\n <Field.Description\n data-testid={dataTestId && `${dataTestId}-helper-text`}\n data-negative={context.negative}\n className={cx(`${rootClassName}__description`)}\n dir={context.dir}\n >\n {helperText}\n </Field.Description>\n )}\n </Field.Item>\n );\n }\n);\n\nRadioButtonGroupItem.displayName = \"RadioButtonGroupItem\";\n","'use client';\n\nimport * as React from 'react';\nimport { FieldsetRootContext, useFieldsetRootContext } from \"./FieldsetRootContext.mjs\";\nimport { useRenderElement } from \"../../internals/useRenderElement.mjs\";\n\n/**\n * Groups a shared legend with related controls.\n * Renders a `<fieldset>` element.\n *\n * Documentation: [Base UI Fieldset](https://base-ui.com/react/components/fieldset)\n */\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nexport const FieldsetRoot = /*#__PURE__*/React.forwardRef(function FieldsetRoot(componentProps, forwardedRef) {\n const {\n render,\n className,\n style,\n disabled: disabledProp = false,\n ...elementProps\n } = componentProps;\n const [legendId, setLegendId] = React.useState(undefined);\n const parentDisabled = useFieldsetRootContext(true)?.disabled;\n const disabled = parentDisabled || disabledProp;\n const state = {\n disabled\n };\n const element = useRenderElement('fieldset', componentProps, {\n ref: forwardedRef,\n state,\n props: [{\n 'aria-labelledby': legendId,\n disabled\n }, elementProps]\n });\n const contextValue = React.useMemo(() => ({\n legendId,\n setLegendId,\n disabled\n }), [legendId, setLegendId, disabled]);\n return /*#__PURE__*/_jsx(FieldsetRootContext.Provider, {\n value: contextValue,\n children: element\n });\n});\nif (process.env.NODE_ENV !== \"production\") FieldsetRoot.displayName = \"FieldsetRoot\";","'use client';\n\nimport * as React from 'react';\nimport { useRenderElement } from \"../../internals/useRenderElement.mjs\";\nimport { useFieldsetRootContext } from \"../root/FieldsetRootContext.mjs\";\nimport { useRegisteredLabelId } from \"../../utils/useRegisteredLabelId.mjs\";\n\n/**\n * An accessible label that is automatically associated with the fieldset.\n * Renders a `<div>` element.\n *\n * Documentation: [Base UI Fieldset](https://base-ui.com/react/components/fieldset)\n */\nexport const FieldsetLegend = /*#__PURE__*/React.forwardRef(function FieldsetLegend(componentProps, forwardedRef) {\n const {\n render,\n className,\n style,\n id: idProp,\n ...elementProps\n } = componentProps;\n const {\n disabled,\n setLegendId\n } = useFieldsetRootContext();\n const id = useRegisteredLabelId(idProp, setLegendId);\n const state = {\n disabled\n };\n const element = useRenderElement('div', componentProps, {\n state,\n ref: forwardedRef,\n props: [{\n id\n }, elementProps]\n });\n return element;\n});\nif (process.env.NODE_ENV !== \"production\") FieldsetLegend.displayName = \"FieldsetLegend\";","import { isHTMLElement } from '@floating-ui/utils/dom';\nexport { stopEvent, isIndexOutOfListBounds, isListIndexDisabled, findNonDisabledListIndex, getMaxListIndex, getMinListIndex } from \"../../floating-ui-react/utils.mjs\";\nexport const ARROW_UP = 'ArrowUp';\nexport const ARROW_DOWN = 'ArrowDown';\nexport const ARROW_LEFT = 'ArrowLeft';\nexport const ARROW_RIGHT = 'ArrowRight';\nexport const HOME = 'Home';\nexport const END = 'End';\nexport const PAGE_UP = 'PageUp';\nexport const PAGE_DOWN = 'PageDown';\nexport const COMPOSITE_KEYS = new Set([ARROW_UP, ARROW_DOWN, ARROW_LEFT, ARROW_RIGHT, HOME, END]);\nexport const SHIFT = 'Shift';\nexport const MODIFIER_KEYS = [SHIFT, 'Control', 'Alt', 'Meta'];\nfunction isInputElement(element) {\n return isHTMLElement(element) && element.tagName === 'INPUT';\n}\nexport function isNativeInput(element) {\n if (isInputElement(element) && element.selectionStart != null) {\n return true;\n }\n if (isHTMLElement(element) && element.tagName === 'TEXTAREA') {\n return true;\n }\n return false;\n}\nexport function scrollIntoViewIfNeeded(scrollContainer, element, direction, orientation) {\n if (!scrollContainer || !element || !element.scrollTo) {\n return;\n }\n let targetX = scrollContainer.scrollLeft;\n let targetY = scrollContainer.scrollTop;\n const isOverflowingX = scrollContainer.clientWidth < scrollContainer.scrollWidth;\n const isOverflowingY = scrollContainer.clientHeight < scrollContainer.scrollHeight;\n if (isOverflowingX && orientation !== 'vertical') {\n const elementOffsetLeft = getOffset(scrollContainer, element, 'left');\n const containerStyles = getStyles(scrollContainer);\n const elementStyles = getStyles(element);\n if (direction === 'ltr') {\n if (elementOffsetLeft + element.offsetWidth + elementStyles.scrollMarginRight > scrollContainer.scrollLeft + scrollContainer.clientWidth - containerStyles.scrollPaddingRight) {\n // overflow to the right, scroll to align right edges\n targetX = elementOffsetLeft + element.offsetWidth + elementStyles.scrollMarginRight - scrollContainer.clientWidth + containerStyles.scrollPaddingRight;\n } else if (elementOffsetLeft - elementStyles.scrollMarginLeft < scrollContainer.scrollLeft + containerStyles.scrollPaddingLeft) {\n // overflow to the left, scroll to align left edges\n targetX = elementOffsetLeft - elementStyles.scrollMarginLeft - containerStyles.scrollPaddingLeft;\n }\n }\n if (direction === 'rtl') {\n if (elementOffsetLeft - elementStyles.scrollMarginLeft < scrollContainer.scrollLeft + containerStyles.scrollPaddingLeft) {\n // overflow to the left, scroll to align left edges\n targetX = elementOffsetLeft - elementStyles.scrollMarginLeft - containerStyles.scrollPaddingLeft;\n } else if (elementOffsetLeft + element.offsetWidth + elementStyles.scrollMarginRight > scrollContainer.scrollLeft + scrollContainer.clientWidth - containerStyles.scrollPaddingRight) {\n // overflow to the right, scroll to align right edges\n targetX = elementOffsetLeft + element.offsetWidth + elementStyles.scrollMarginRight - scrollContainer.clientWidth + containerStyles.scrollPaddingRight;\n }\n }\n }\n if (isOverflowingY && orientation !== 'horizontal') {\n const elementOffsetTop = getOffset(scrollContainer, element, 'top');\n const containerStyles = getStyles(scrollContainer);\n const elementStyles = getStyles(element);\n if (elementOffsetTop - elementStyles.scrollMarginTop < scrollContainer.scrollTop + containerStyles.scrollPaddingTop) {\n // overflow upwards, align top edges\n targetY = elementOffsetTop - elementStyles.scrollMarginTop - containerStyles.scrollPaddingTop;\n } else if (elementOffsetTop + element.offsetHeight + elementStyles.scrollMarginBottom > scrollContainer.scrollTop + scrollContainer.clientHeight - containerStyles.scrollPaddingBottom) {\n // overflow downwards, align bottom edges\n targetY = elementOffsetTop + element.offsetHeight + elementStyles.scrollMarginBottom - scrollContainer.clientHeight + containerStyles.scrollPaddingBottom;\n }\n }\n scrollContainer.scrollTo({\n left: targetX,\n top: targetY,\n behavior: 'auto'\n });\n}\nfunction getOffset(ancestor, element, side) {\n const propName = side === 'left' ? 'offsetLeft' : 'offsetTop';\n let result = 0;\n while (element.offsetParent) {\n result += element[propName];\n if (element.offsetParent === ancestor) {\n break;\n }\n element = element.offsetParent;\n }\n return result;\n}\nfunction getStyles(element) {\n const styles = getComputedStyle(element);\n return {\n scrollMarginTop: parseFloat(styles.scrollMarginTop) || 0,\n scrollMarginRight: parseFloat(styles.scrollMarginRight) || 0,\n scrollMarginBottom: parseFloat(styles.scrollMarginBottom) || 0,\n scrollMarginLeft: parseFloat(styles.scrollMarginLeft) || 0,\n scrollPaddingTop: parseFloat(styles.scrollPaddingTop) || 0,\n scrollPaddingRight: parseFloat(styles.scrollPaddingRight) || 0,\n scrollPaddingBottom: parseFloat(styles.scrollPaddingBottom) || 0,\n scrollPaddingLeft: parseFloat(styles.scrollPaddingLeft) || 0\n };\n}","/* eslint-disable no-bitwise */\n'use client';\n\nimport * as React from 'react';\nimport { useRefWithInit } from '@base-ui/utils/useRefWithInit';\nimport { useStableCallback } from '@base-ui/utils/useStableCallback';\nimport { useIsoLayoutEffect } from '@base-ui/utils/useIsoLayoutEffect';\nimport { CompositeListContext } from \"./CompositeListContext.mjs\";\nimport { jsx as _jsx } from \"react/jsx-runtime\";\n/**\n * Provides context for a list of items in a composite component.\n */\nexport function CompositeList(props) {\n const {\n children,\n elementsRef,\n labelsRef,\n onMapChange: onMapChangeProp\n } = props;\n const onMapChange = useStableCallback(onMapChangeProp);\n const [, setMapTick] = React.useState(false);\n const listeners = useRefWithInit(createListeners).current;\n const map = useRefWithInit(createMap).current;\n const nextIndexRef = React.useRef(0);\n const isDirtyRef = React.useRef(true);\n const itemsRef = React.useRef([]);\n const mutationObserverRef = React.useRef(null);\n\n // Item effects can run without their parent rendering. Schedule one synchronous\n // parent update for the whole commit so refs are rebuilt before paint and while\n // the originating React event is still inside `act()` in tests.\n const scheduleMapUpdate = useStableCallback(() => {\n if (isDirtyRef.current) {\n return;\n }\n isDirtyRef.current = true;\n setMapTick(tick => !tick);\n });\n const register = useStableCallback((node, registration) => {\n map.set(node, registration);\n scheduleMapUpdate();\n });\n const unregister = useStableCallback(node => {\n map.delete(node);\n scheduleMapUpdate();\n });\n const syncRefs = useStableCallback(items => {\n const nextMap = new Map();\n elementsRef.current.length = 0;\n if (labelsRef) {\n labelsRef.current.length = 0;\n }\n items.forEach(item => {\n nextMap.set(item.element, {\n ...(item.registration.metadata ?? {}),\n index: item.index\n });\n elementsRef.current[item.index] = item.element;\n if (labelsRef) {\n labelsRef.current[item.index] = item.registration.label !== undefined ? item.registration.label : item.registration.textRef?.current?.textContent ?? item.element.textContent;\n }\n });\n nextIndexRef.current = elementsRef.current.length;\n return nextMap;\n });\n function observe(sortedNodes) {\n mutationObserverRef.current?.disconnect();\n mutationObserverRef.current = null;\n\n // A single item can't reorder.\n if (typeof MutationObserver !== 'function' || sortedNodes.length < 2) {\n return;\n }\n const mutationObserver = new MutationObserver(entries => {\n // Only verify the order after a move: a node that was removed and later\n // re-added within the same batch. Additions and removals alone can't\n // change the relative order of the remaining items, and items that mount\n // or unmount re-sort through `register`/`unregister`.\n if (!hasMovedNode(entries)) {\n return;\n }\n let previousConnectedNode = null;\n\n // If any connected node now appears before the previous connected node,\n // wrappers/items moved and the index map needs to be rebuilt.\n for (const node of sortedNodes) {\n if (!node.isConnected) {\n continue;\n }\n if (previousConnectedNode && sortByDocumentPosition(previousConnectedNode, node) > 0) {\n mutationObserver.disconnect();\n scheduleMapUpdate();\n return;\n }\n previousConnectedNode = node;\n }\n });\n mutationObserverRef.current = mutationObserver;\n\n // A reorder that changes item indexes must invert at least one adjacent pair\n // from the previous sorted order. Observing each pair's common parent catches\n // both direct item moves and ancestor wrapper moves at the boundary.\n const roots = new Set();\n for (let i = 1; i < sortedNodes.length; i += 1) {\n const root = getCommonAncestor(sortedNodes[i - 1], sortedNodes[i]);\n if (root) {\n roots.add(root);\n }\n }\n roots.forEach(root => mutationObserver.observe(root, {\n childList: true\n }));\n }\n const flush = useStableCallback(() => {\n const [items, automaticNodes] = getCompositeListSnapshot(map);\n const nextMap = syncRefs(items);\n observe(automaticNodes);\n itemsRef.current = items;\n isDirtyRef.current = false;\n listeners.forEach(listener => listener(nextMap));\n onMapChange(nextMap);\n });\n useIsoLayoutEffect(() => {\n // Re-copy the last committed snapshot when the ref objects change or Strict Mode replays\n // effects without reattaching callback refs.\n if (!isDirtyRef.current) {\n syncRefs(itemsRef.current);\n }\n return () => {\n elementsRef.current = [];\n if (labelsRef) {\n labelsRef.current = [];\n }\n };\n }, [elementsRef, labelsRef, syncRefs]);\n useIsoLayoutEffect(() => {\n if (isDirtyRef.current) {\n flush();\n }\n });\n useIsoLayoutEffect(() => {\n return () => {\n mutationObserverRef.current?.disconnect();\n // React 18 Strict Mode replays effects without replaying callback refs.\n // Mark the retained map dirty so the replay rebuilds refs and observation.\n isDirtyRef.current = true;\n };\n }, []);\n const subscribeMapChange = useStableCallback(fn => {\n listeners.add(fn);\n return () => {\n listeners.delete(fn);\n };\n });\n const contextValue = React.useMemo(() => ({\n register,\n unregister,\n subscribeMapChange,\n nextIndexRef\n }), [register, unregister, subscribeMapChange, nextIndexRef]);\n return /*#__PURE__*/_jsx(CompositeListContext.Provider, {\n value: contextValue,\n children: children\n });\n}\nfunction createMap() {\n return new Map();\n}\nfunction createListeners() {\n return new Set();\n}\nfunction getCompositeListSnapshot(map) {\n const reservedIndices = new Set();\n const items = [];\n const automaticItems = [];\n map.forEach((registration, node) => {\n if (!node.isConnected) {\n return;\n }\n const index = registration.index;\n const item = {\n index: index ?? -1,\n element: node,\n registration\n };\n if (index === null) {\n automaticItems.push(item);\n } else if (index >= 0) {\n reservedIndices.add(index);\n items.push(item);\n }\n });\n let nextAutomaticIndex = 0;\n automaticItems.sort((a, b) => sortByDocumentPosition(a.element, b.element));\n automaticItems.forEach(item => {\n while (reservedIndices.has(nextAutomaticIndex)) {\n nextAutomaticIndex += 1;\n }\n item.index = nextAutomaticIndex;\n items.push(item);\n nextAutomaticIndex += 1;\n });\n if (reservedIndices.size > 0) {\n items.sort((a, b) => a.index - b.index);\n }\n return [items, automaticItems.map(item => item.element)];\n}\nfunction getCommonAncestor(firstNode, lastNode) {\n let ancestor = firstNode.parentElement;\n\n // The `parentElement` walk cannot cross shadow boundaries, so the native\n // `contains` is sufficient here.\n while (ancestor && !ancestor.contains(lastNode)) {\n ancestor = ancestor.parentElement;\n }\n return ancestor;\n}\nfunction hasMovedNode(entries) {\n for (const entry of entries) {\n for (let i = 0; i < entry.removedNodes.length; i += 1) {\n if (entry.removedNodes[i].isConnected) {\n return true;\n }\n }\n }\n return false;\n}\nfunction sortByDocumentPosition(a, b) {\n // `DOCUMENT_POSITION_CONTAINED_BY` is always reported alongside `FOLLOWING`, and `CONTAINS`\n // alongside `PRECEDING`, so testing `FOLLOWING` alone orders siblings and nested items alike.\n return a.compareDocumentPosition(b) & Node.DOCUMENT_POSITION_FOLLOWING ? -1 : 1;\n}","export function isElementDisabled(element) {\n return element == null || element.hasAttribute('disabled') || element.getAttribute('aria-disabled') === 'true';\n}","'use client';\n\nimport * as React from 'react';\nimport { isElementDisabled } from '@base-ui/utils/isElementDisabled';\nimport { useStableCallback } from '@base-ui/utils/useStableCallback';\nimport { useMergedRefs } from '@base-ui/utils/useMergedRefs';\nimport { useIsoLayoutEffect } from '@base-ui/utils/useIsoLayoutEffect';\nimport { COMPOSITE_KEYS, ARROW_DOWN, ARROW_LEFT, ARROW_RIGHT, ARROW_UP, END, HOME, MODIFIER_KEYS, findNonDisabledListIndex, getMaxListIndex, getMinListIndex, isListIndexDisabled, isIndexOutOfListBounds, isNativeInput, scrollIntoViewIfNeeded } from \"../composite.mjs\";\nimport { ACTIVE_COMPOSITE_ITEM } from \"../constants.mjs\";\nimport { getTarget } from \"../../../floating-ui-react/utils.mjs\";\nconst EMPTY_ARRAY = [];\nexport function useCompositeRoot(params) {\n const {\n loopFocus = true,\n orientation = 'both',\n grid,\n onLoop,\n direction,\n highlightedIndex: externalHighlightedIndex,\n onHighlightedIndexChange: externalSetHighlightedIndex,\n rootRef: externalRef,\n enableHomeAndEndKeys = false,\n stopEventPropagation,\n disabledIndices,\n modifierKeys = EMPTY_ARRAY\n } = params;\n const [internalHighlightedIndex, internalSetHighlightedIndex] = React.useState(0);\n const isGrid = grid != null;\n const rootRef = React.useRef(null);\n const mergedRef = useMergedRefs(rootRef, externalRef);\n const elementsRef = React.useRef([]);\n const hasSetDefaultIndexRef = React.useRef(false);\n const highlightedIndex = externalHighlightedIndex ?? internalHighlightedIndex;\n const onHighlightedIndexChange = useStableCallback((index, shouldScrollIntoView = false) => {\n (externalSetHighlightedIndex ?? internalSetHighlightedIndex)(index);\n if (shouldScrollIntoView) {\n const newActiveItem = elementsRef.current[index];\n scrollIntoViewIfNeeded(rootRef.current, newActiveItem, direction, orientation);\n }\n });\n const onMapChange = useStableCallback(map => {\n if (map.size === 0 || hasSetDefaultIndexRef.current) {\n return;\n }\n hasSetDefaultIndexRef.current = true;\n const sortedElements = Array.from(map.keys());\n const activeItem = sortedElements.find(compositeElement => compositeElement?.hasAttribute(ACTIVE_COMPOSITE_ITEM)) ?? null;\n // Set the default highlighted index of an arbitrary composite item. The map value carries\n // the item's own index, which is not its position among the keys once a list mixes explicit\n // and automatic indexes and leaves gaps.\n const activeIndex = activeItem ? map.get(activeItem)?.index ?? -1 : -1;\n if (activeIndex !== -1) {\n onHighlightedIndexChange(activeIndex);\n } else if (isListIndexDisabled(sortedElements, highlightedIndex, disabledIndices)) {\n // The default highlighted item is disabled, so it should not hold the single\n // roving tab stop: a natively disabled element is removed from the tab order,\n // and an aria-disabled one should not be the entry point. Move the tab stop\n // to the first enabled item. If every item is disabled, keep the current\n // highlighted index.\n const firstEnabledIndex = findNonDisabledListIndex(sortedElements, {\n disabledIndices\n });\n if (!isIndexOutOfListBounds(sortedElements, firstEnabledIndex)) {\n onHighlightedIndexChange(firstEnabledIndex);\n }\n }\n scrollIntoViewIfNeeded(rootRef.current, activeItem, direction, orientation);\n });\n useIsoLayoutEffect(() => {\n // `disabledIndices` can resolve a render after the initial map population\n // (e.g. Toolbar derives it from item metadata through a state update), so the\n // default tab stop at index 0 may now point at a disabled item, leaving the\n // composite without a reachable tab stop. Re-validate and move it to the first\n // enabled item. Gated on `disabledIndices` being provided so composites that\n // rely on the DOM disabled fallback keep their existing behavior.\n if (disabledIndices == null || externalHighlightedIndex != null || !hasSetDefaultIndexRef.current) {\n return;\n }\n const elements = elementsRef.current;\n if (isListIndexDisabled(elements, highlightedIndex, disabledIndices)) {\n const firstEnabledIndex = findNonDisabledListIndex(elements, {\n disabledIndices\n });\n if (!isIndexOutOfListBounds(elements, firstEnabledIndex)) {\n onHighlightedIndexChange(firstEnabledIndex);\n }\n }\n }, [disabledIndices, externalHighlightedIndex, highlightedIndex, elementsRef, onHighlightedIndexChange]);\n const wrappedOnLoop = useStableCallback((event, prevIndex, nextIndex) => {\n if (!onLoop) {\n return nextIndex;\n }\n return onLoop(event, prevIndex, nextIndex, elementsRef);\n });\n\n // Stable so that `relayKeyboardEvent` does not invalidate identity-sensitive\n // consumers (the `CompositeRootContext` value and trigger data forwarding).\n const onKeyDown = useStableCallback(event => {\n const isHomeOrEnd = event.key === HOME || event.key === END;\n if (!COMPOSITE_KEYS.has(event.key) || !enableHomeAndEndKeys && isHomeOrEnd) {\n return;\n }\n if (isModifierKeySet(event, modifierKeys)) {\n return;\n }\n const element = rootRef.current;\n if (!element) {\n return;\n }\n const isRtl = direction === 'rtl';\n const horizontalForwardKey = isRtl ? ARROW_LEFT : ARROW_RIGHT;\n const horizontalBackwardKey = isRtl ? ARROW_RIGHT : ARROW_LEFT;\n const forwardKey = orientation === 'vertical' ? ARROW_DOWN : horizontalForwardKey;\n const backwardKey = orientation === 'vertical' ? ARROW_UP : horizontalBackwardKey;\n const target = getTarget(event.nativeEvent);\n if (target != null && isNativeInput(target) && !isElementDisabled(target)) {\n const selectionStart = target.selectionStart;\n const selectionEnd = target.selectionEnd;\n const textContent = target.value;\n // return to native textbox behavior when\n // 1 - Shift is held to make a text selection, or if there already is a text selection\n if (selectionStart == null || event.shiftKey || selectionStart !== selectionEnd) {\n return;\n }\n // 2 - arrow-ing forward and not in the last position of the text\n if (event.key !== backwardKey && selectionStart < textContent.length) {\n return;\n }\n // 3 -arrow-ing backward and not in the first position of the text\n if (event.key !== forwardKey && selectionStart > 0) {\n return;\n }\n }\n let nextIndex = highlightedIndex;\n const minIndex = getMinListIndex(elementsRef, disabledIndices);\n const maxIndex = getMaxListIndex(elementsRef, disabledIndices);\n if (grid != null) {\n nextIndex = grid({\n disabledIndices,\n elementsRef,\n event,\n highlightedIndex,\n loopFocus,\n maxIndex,\n minIndex,\n onLoop: wrappedOnLoop,\n orientation,\n rtl: isRtl\n });\n }\n const isForwardKey = orientation !== 'vertical' && event.key === horizontalForwardKey || orientation !== 'horizontal' && event.key === ARROW_DOWN;\n const isBackwardKey = orientation !== 'vertical' && event.key === horizontalBackwardKey || orientation !== 'horizontal' && event.key === ARROW_UP;\n if (enableHomeAndEndKeys) {\n if (event.key === HOME) {\n nextIndex = minIndex;\n } else if (event.key === END) {\n nextIndex = maxIndex;\n }\n }\n if (nextIndex === highlightedIndex && (isForwardKey || isBackwardKey)) {\n if (loopFocus && nextIndex === maxIndex && isForwardKey) {\n nextIndex = minIndex;\n if (onLoop) {\n nextIndex = onLoop(event, highlightedIndex, nextIndex, elementsRef);\n }\n } else if (loopFocus && nextIndex === minIndex && isBackwardKey) {\n nextIndex = maxIndex;\n if (onLoop) {\n nextIndex = onLoop(event, highlightedIndex, nextIndex, elementsRef);\n }\n } else {\n nextIndex = findNonDisabledListIndex(elementsRef.current, {\n startingIndex: nextIndex,\n decrement: isBackwardKey,\n disabledIndices\n });\n }\n }\n if (nextIndex !== highlightedIndex && !isIndexOutOfListBounds(elementsRef.current, nextIndex)) {\n if (stopEventPropagation) {\n event.stopPropagation();\n }\n if (isGrid || isHomeOrEnd || isForwardKey || isBackwardKey) {\n event.preventDefault();\n }\n onHighlightedIndexChange(nextIndex, true);\n\n // Wait for FocusManager `returnFocus` to execute.\n queueMicrotask(() => {\n elementsRef.current[nextIndex]?.focus();\n });\n }\n });\n const props = {\n ref: mergedRef,\n onFocus(event) {\n const element = rootRef.current;\n const target = getTarget(event.nativeEvent);\n if (!element || target == null || !isNativeInput(target)) {\n return;\n }\n target.setSelectionRange(0, target.value.length);\n },\n onKeyDown\n };\n return {\n props,\n highlightedIndex,\n onHighlightedIndexChange,\n elementsRef,\n onMapChange,\n relayKeyboardEvent: onKeyDown\n };\n}\nfunction isModifierKeySet(event, ignoredModifierKeys) {\n for (const key of MODIFIER_KEYS) {\n if (ignoredModifierKeys.includes(key)) {\n continue;\n }\n if (event.getModifierState(key)) {\n return true;\n }\n }\n return false;\n}","'use client';\n\nimport * as React from 'react';\nexport const DirectionContext = /*#__PURE__*/React.createContext(undefined);\nif (process.env.NODE_ENV !== \"production\") DirectionContext.displayName = \"DirectionContext\";\nexport function useDirection() {\n const context = React.useContext(DirectionContext);\n return context?.direction ?? 'ltr';\n}","'use client';\n\nimport * as React from 'react';\nimport { EMPTY_ARRAY, EMPTY_OBJECT } from '@base-ui/utils/empty';\nimport { CompositeList } from \"../list/CompositeList.mjs\";\nimport { useCompositeRoot } from \"./useCompositeRoot.mjs\";\nimport { CompositeRootContext } from \"./CompositeRootContext.mjs\";\nimport { useRenderElement } from \"../../useRenderElement.mjs\";\nimport { useDirection } from \"../../direction-context/DirectionContext.mjs\";\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nexport function CompositeRoot(componentProps) {\n const {\n render,\n className,\n style,\n refs = EMPTY_ARRAY,\n props = EMPTY_ARRAY,\n state = EMPTY_OBJECT,\n stateAttributesMapping,\n highlightedIndex: highlightedIndexProp,\n onHighlightedIndexChange: onHighlightedIndexChangeProp,\n orientation,\n grid,\n loopFocus,\n onLoop,\n enableHomeAndEndKeys,\n onMapChange: onMapChangeProp,\n stopEventPropagation = true,\n rootRef,\n disabledIndices,\n modifierKeys,\n highlightItemOnHover = false,\n tag = 'div',\n ...elementProps\n } = componentProps;\n const direction = useDirection();\n const {\n props: defaultProps,\n highlightedIndex,\n onHighlightedIndexChange,\n elementsRef,\n onMapChange: onMapChangeUnwrapped,\n relayKeyboardEvent\n } = useCompositeRoot({\n grid,\n loopFocus,\n onLoop,\n orientation,\n highlightedIndex: highlightedIndexProp,\n onHighlightedIndexChange: onHighlightedIndexChangeProp,\n rootRef,\n stopEventPropagation,\n enableHomeAndEndKeys,\n direction,\n disabledIndices,\n modifierKeys\n });\n const element = useRenderElement(tag, componentProps, {\n state,\n ref: refs,\n props: [defaultProps, ...props, elementProps],\n stateAttributesMapping\n });\n const contextValue = React.useMemo(() => ({\n highlightedIndex,\n onHighlightedIndexChange,\n highlightItemOnHover,\n relayKeyboardEvent\n }), [highlightedIndex, onHighlightedIndexChange, highlightItemOnHover, relayKeyboardEvent]);\n return /*#__PURE__*/_jsx(CompositeRootContext.Provider, {\n value: contextValue,\n children: /*#__PURE__*/_jsx(CompositeList, {\n elementsRef: elementsRef,\n onMapChange: newMap => {\n onMapChangeProp?.(newMap);\n onMapChangeUnwrapped(newMap);\n },\n children: element\n })\n });\n}","'use client';\n\nimport * as React from 'react';\nimport { useIsoLayoutEffect } from '@base-ui/utils/useIsoLayoutEffect';\nimport { useStableCallback } from '@base-ui/utils/useStableCallback';\nexport function useValueChanged(value, onChange) {\n const valueRef = React.useRef(value);\n const onChangeCallback = useStableCallback(onChange);\n useIsoLayoutEffect(() => {\n if (valueRef.current !== value) {\n onChangeCallback(valueRef.current);\n }\n valueRef.current = value;\n }, [value, onChangeCallback]);\n}","'use client';\n\nimport * as React from 'react';\nimport { useControlled } from '@base-ui/utils/useControlled';\nimport { useStableCallback } from '@base-ui/utils/useStableCallback';\nimport { useBaseUiId } from \"../internals/useBaseUiId.mjs\";\nimport { contains } from \"../floating-ui-react/utils.mjs\";\nimport { SHIFT } from \"../internals/composite/composite.mjs\";\nimport { CompositeRoot } from \"../internals/composite/root/CompositeRoot.mjs\";\nimport { useFieldRootContext } from \"../internals/field-root-context/FieldRootContext.mjs\";\nimport { useRegisterFieldControl } from \"../internals/field-register-control/useRegisterFieldControl.mjs\";\nimport { fieldValidityMapping } from \"../internals/field-constants/constants.mjs\";\nimport { isEligibleInput } from \"../field/root/useFieldValidation.mjs\";\nimport { useFieldsetRootContext } from \"../fieldset/root/FieldsetRootContext.mjs\";\nimport { useFormContext } from \"../internals/form-context/FormContext.mjs\";\nimport { useLabelableContext } from \"../internals/labelable-provider/LabelableContext.mjs\";\nimport { useValueChanged } from \"../internals/useValueChanged.mjs\";\nimport { RadioGroupContext } from \"./RadioGroupContext.mjs\";\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nconst MODIFIER_KEYS = [SHIFT];\n\n/**\n * Provides a shared state to a series of radio buttons.\n * Renders a `<div>` element.\n *\n * Documentation: [Base UI Radio Group](https://base-ui.com/react/components/radio)\n */\nexport const RadioGroup = /*#__PURE__*/React.forwardRef(function RadioGroup(componentProps, forwardedRef) {\n const {\n render,\n className,\n disabled: disabledProp,\n readOnly,\n required,\n onValueChange: onValueChangeProp,\n value: externalValue,\n defaultValue,\n form,\n name: nameProp,\n inputRef: inputRefProp,\n id: idProp,\n style,\n ...elementProps\n } = componentProps;\n const {\n setTouched: setFieldTouched,\n setFocused,\n validationMode,\n name: fieldName,\n disabled: fieldDisabled,\n state: fieldState,\n validation,\n setDirty,\n setFilled,\n validityData\n } = useFieldRootContext();\n const {\n labelId\n } = useLabelableContext();\n const {\n clearErrors,\n elementRef\n } = useFormContext();\n const fieldsetContext = useFieldsetRootContext(true);\n const disabled = fieldDisabled || disabledProp;\n const name = fieldName ?? nameProp;\n const id = useBaseUiId(idProp);\n const [checkedValue, setCheckedValueUnwrapped] = useControlled({\n controlled: externalValue,\n default: defaultValue,\n name: 'RadioGroup',\n state: 'value'\n });\n const [touched, setTouched] = React.useState(false);\n const setCheckedValue = useStableCallback((value, eventDetails) => {\n onValueChangeProp?.(value, eventDetails);\n if (eventDetails.isCanceled) {\n return;\n }\n setCheckedValueUnwrapped(value);\n });\n const getInputControl = validation.getInputControl;\n const controlRef = React.useMemo(() => ({\n get current() {\n return getInputControl();\n }\n }), [getInputControl]);\n const groupInputRef = React.useRef(null);\n const firstEnabledInputRef = React.useRef(null);\n\n // Only forwards the public `inputRef` and tracks the current representative for that forwarding.\n // The registry (`validation.registeredInputs`) is authoritative for validation and form-value\n // projection, so the group must not write `validation.inputRef`: a stale, unmounted radio left\n // there would become the Field's fallback once the registry empties and keep blocking submission.\n function setInputRef(hiddenInput) {\n let cleanup = undefined;\n if (inputRefProp) {\n if (typeof inputRefProp === 'function') {\n cleanup = inputRefProp(hiddenInput);\n } else {\n inputRefProp.current = hiddenInput;\n }\n }\n groupInputRef.current = hiddenInput;\n return cleanup;\n }\n const registerInputRef = useStableCallback(input => {\n if (!input || input.disabled) {\n return undefined;\n }\n if (!firstEnabledInputRef.current) {\n firstEnabledInputRef.current = input;\n }\n const currentInput = groupInputRef.current;\n const cleanup = input.checked || currentInput == null || currentInput.disabled ? setInputRef(input) : undefined;\n\n // Detach when this input unmounts while still forwarded, so consumers don't\n // keep holding a disconnected node. The input may have become the forwarded\n // one after attach (via the re-registration effect), so always return this.\n return () => {\n if (firstEnabledInputRef.current === input) {\n firstEnabledInputRef.current = null;\n }\n if (groupInputRef.current === input) {\n if (cleanup) {\n cleanup();\n groupInputRef.current = null;\n } else {\n void setInputRef(null);\n }\n } else {\n cleanup?.();\n }\n };\n });\n const getFormValue = useStableCallback(() => {\n const formElement = elementRef.current;\n if (!formElement) {\n return checkedValue ?? null;\n }\n for (const input of validation.registeredInputs.keys()) {\n if (input.checked && isEligibleInput(input, formElement)) {\n return checkedValue ?? null;\n }\n }\n return null;\n });\n useRegisterFieldControl(controlRef, id, checkedValue ?? null, getFormValue, !disabled, nameProp);\n useValueChanged(checkedValue, () => {\n clearErrors(name);\n setDirty(checkedValue !== validityData.initialValue);\n setFilled(checkedValue != null);\n validation.change(checkedValue);\n const fallbackInput = firstEnabledInputRef.current;\n if (checkedValue == null && fallbackInput && !fallbackInput.disabled) {\n // Imperative re-point outside React's ref lifecycle; the ref-callback cleanup isn't tracked here.\n void setInputRef(fallbackInput);\n }\n });\n const ariaLabelledby = labelId ?? fieldsetContext?.legendId;\n const state = {\n ...fieldState,\n disabled: disabled ?? false,\n required: required ?? false,\n readOnly: readOnly ?? false\n };\n const contextValue = React.useMemo(() => ({\n checkedValue,\n disabled,\n form,\n validation,\n name,\n readOnly,\n registerInputRef,\n required,\n setCheckedValue,\n setTouched,\n touched\n }), [checkedValue, disabled, form, validation, name, readOnly, registerInputRef, required, setCheckedValue, setTouched, touched]);\n const defaultProps = {\n id: idProp,\n role: 'radiogroup',\n 'aria-required': required || undefined,\n 'aria-disabled': disabled || undefined,\n 'aria-readonly': readOnly || undefined,\n 'aria-labelledby': ariaLabelledby,\n onFocus() {\n setFocused(true);\n },\n onBlur(event) {\n if (!contains(event.currentTarget, event.relatedTarget)) {\n setFieldTouched(true);\n setFocused(false);\n if (validationMode === 'onBlur') {\n validation.commit(checkedValue);\n }\n }\n },\n onKeyDownCapture(event) {\n if (event.key.startsWith('Arrow')) {\n setTouched(true);\n setFocused(true);\n }\n }\n };\n return /*#__PURE__*/_jsx(RadioGroupContext.Provider, {\n value: contextValue,\n children: /*#__PURE__*/_jsx(CompositeRoot, {\n render: render,\n className: className,\n style: style,\n state: state,\n props: [defaultProps, elementProps, props => validation.getValidationProps(disabled ?? false, props)],\n refs: [forwardedRef],\n stateAttributesMapping: fieldValidityMapping,\n enableHomeAndEndKeys: false,\n modifierKeys: MODIFIER_KEYS\n })\n });\n});\nif (process.env.NODE_ENV !== \"production\") RadioGroup.displayName = \"RadioGroup\";","import React, { forwardRef, type ReactNode } from \"react\";\nimport { Field } from \"@base-ui/react/field\";\nimport { Fieldset } from \"@base-ui/react/fieldset\";\nimport { RadioGroup } from \"@base-ui/react/radio-group\";\nimport type { BaseProps } from \"@purpur/common-types\";\nimport { Heading, type HeadingTagType } from \"@purpur/heading\";\nimport c from \"classnames/bind\";\n\nimport type { RADIO_BUTTON_GROUP_ORIENTATION, RadioButtonGroupDirection } from \"./constants\";\nimport { RadioButtonGroupContext } from \"./radio-button-group.context\";\nimport styles from \"./radio-button-group.module.scss\";\nimport { RadioButtonGroupItem } from \"./radio-button-group-item\";\n\nconst cx = c.bind(styles);\n\nexport type RadioButtonGroupRootProps = Omit<BaseProps, \"id\"> & {\n /**\n * ID of the radio group container.\n * */\n id: string;\n /**\n * To use when no heading is given (do not combine with `aria-labelledby`).\n * */\n [\"aria-label\"]?: string;\n /**\n * To use if no heading is provided (do not combine with `aria-label`). The id of the element labeling this radio group.\n * */\n [\"aria-labelledby\"]?: string;\n /**\n * The value of the radio item that should be checked when initially rendered. Use when you do not need to control the state of the radio items.\n * */\n defaultValue?: string;\n /**\n * The reading direction of the radio group. If omitted, it assumes LTR (left-to-right) reading mode.\n * */\n dir?: RadioButtonGroupDirection;\n /**\n * When true, prevents the user from interacting with radio items.\n * */\n disabled?: boolean;\n /**\n * When true, applies negative styling to the radio group.\n */\n negative?: boolean;\n /**\n * The radio items.\n *\n RadioButtonGroupItem = {\n [\"data-testid\"]?: string;\n disabled?: boolean;\n helperText?: string;\n id: string;\n label: string;\n ref?: Ref<HTMLSpanElement>;\n value: string;\n }[]\n * */\n items?: RadioButtonGroupItem[];\n /**\n * Radio group children. Best used with `RadioButtonGroup.Item`.\n */\n children?: ReactNode;\n /**\n * The name of the group. Submitted with its owning form as part of a name/value pair.\n * */\n name?: string;\n /**\n * Event handler called when the value changes.\n * */\n onValueChange?: (value: string) => void;\n /**\n * The orientation of the component.\n * */\n orientation?: (typeof RADIO_BUTTON_GROUP_ORIENTATION)[number];\n /**\n * When true, indicates that the user must check a radio item before the owning form can be submitted.\n * */\n required?: boolean;\n /**\n * The controlled value of the radio item to check. Should be used in conjunction with onValueChange.\n * */\n value?: string;\n /**\n * Renders above the radio group as a heading.\n * */\n heading?: string;\n /**\n * Changes heading level for heading.\n */\n headingTag?: HeadingTagType;\n};\n\nconst rootClassName = \"purpur-radio-button-group\";\n\nexport const RadioButtonGroupRoot = forwardRef<HTMLDivElement, RadioButtonGroupRootProps>(\n (\n {\n \"data-testid\": dataTestId,\n \"aria-label\": ariaLabel,\n \"aria-labelledby\": ariaLabelledby,\n className,\n items,\n heading,\n orientation = \"vertical\",\n headingTag = \"h2\",\n children,\n name,\n disabled,\n negative,\n dir,\n required,\n ...props\n },\n ref\n ) => {\n if (!items?.length && !children) {\n return null;\n }\n\n const ariaProps = heading ? {} : { \"aria-label\": ariaLabel, \"aria-labelledby\": ariaLabelledby };\n\n return (\n <RadioButtonGroupContext.Provider value={{ disabled, negative, dir }}>\n <Field.Root className={cx(`${rootClassName}__container`)} name={name} disabled={disabled}>\n <Fieldset.Root\n render={\n <RadioGroup\n {...props}\n className={cx(className, rootClassName)}\n required={required}\n {...ariaProps}\n data-orientation={orientation}\n data-testid={dataTestId}\n dir={dir}\n ref={ref}\n />\n }\n >\n {heading && (\n <Fieldset.Legend\n render={\n <Heading\n tag={headingTag}\n data-testid={dataTestId ? `${dataTestId}-heading` : undefined}\n variant=\"subsection-100\"\n negative={negative}\n >\n {required && <span aria-hidden>{\"* \"}</span>}\n {heading}\n </Heading>\n }\n />\n )}\n <div className={cx(`${rootClassName}__items-container`)}>\n {items?.length\n ? items.map((item) => <RadioButtonGroupItem key={item.value} {...item} />)\n : children}\n </div>\n </Fieldset.Root>\n </Field.Root>\n </RadioButtonGroupContext.Provider>\n );\n }\n);\n\nRadioButtonGroupRoot.displayName = \"RadioButtonGroupRoot\";\n","export const RADIO_BUTTON_GROUP_DIRECTION = [\"ltr\", \"rtl\"] as const;\nexport type RadioButtonGroupDirection = (typeof RADIO_BUTTON_GROUP_DIRECTION)[number];\nexport const RADIO_BUTTON_GROUP_ORIENTATION = [\"horizontal\", \"vertical\"] as const;\nexport type RadioButtonGroupOrientation = (typeof RADIO_BUTTON_GROUP_ORIENTATION)[number];\n","import React, { forwardRef } from \"react\";\n\nimport { RadioButtonGroupItem } from \"./radio-button-group-item\";\nimport type { RadioButtonGroupRootProps } from \"./radio-button-group-root\";\nimport { RadioButtonGroupRoot } from \"./radio-button-group-root\";\n\nexport {\n RADIO_BUTTON_GROUP_DIRECTION,\n RADIO_BUTTON_GROUP_ORIENTATION,\n type RadioButtonGroupDirection,\n type RadioButtonGroupOrientation,\n} from \"./constants\";\n\ntype RadioButtonGroupCmp = React.ForwardRefExoticComponent<\n RadioButtonGroupProps & React.RefAttributes<HTMLDivElement>\n> & {\n Item: typeof RadioButtonGroupItem;\n};\n\nexport type RadioButtonGroupProps = RadioButtonGroupRootProps;\n\nexport const RadioButtonGroup = forwardRef<HTMLDivElement, RadioButtonGroupProps>(\n ({ children, ...props }, ref) => (\n <RadioButtonGroupRoot ref={ref} {...props}>\n {children}\n </RadioButtonGroupRoot>\n )\n) as RadioButtonGroupCmp;\n\nRadioButtonGroup.Item = RadioButtonGroupItem;\n\nRadioButtonGroup.displayName = \"RadioButtonGroup\";\n"],"names":["noop","useIsoLayoutEffect","React","SafeReact","UNINITIALIZED","useRefWithInit","init","initArg","ref","useInsertionEffect","useSafeInsertionEffect","fn","useStableCallback","callback","stable","createStableCallback","assertNotCalled","args","createFormatErrorMessage","baseUrl","prefix","code","url","arg","formatErrorMessage","NOOP","EMPTY_ARRAY","EMPTY_OBJECT","DEFAULT_VALIDITY_STATE","DEFAULT_FIELD_STATE_ATTRIBUTES","DEFAULT_FIELD_ROOT_STATE","fieldValidityMapping","value","DEFAULT_FIELD_ROOT_CONTEXT","_disabled","props","FieldRootContext","useFieldRootContext","optional","context","_formatErrorMessage","FieldsetRootContext","useFieldsetRootContext","FormContext","useFormContext","globalId","useGlobalId","idOverride","defaultId","setDefaultId","id","maybeReactUseId","useId","reactId","useBaseUiId","LabelableContext","externalProps","useLabelableContext","LabelableProvider","initialControlId","controlId","setControlIdState","labelId","setLabelId","messageIds","setMessageIds","registrationsRef","parentMessageIds","registerControlId","source","nextId","registrations","prev","nextControlId","getDescriptionProps","ids","contextValue","_jsx","useAriaLabelledBy","explicitAriaLabelledBy","labelSourceRef","enableFallback","labelSourceId","fallbackAriaLabelledBy","setFallbackAriaLabelledBy","generatedLabelId","ariaLabelledBy","nextAriaLabelledBy","getAriaLabelledBy","labelSource","label","findAssociatedLabel","parent","nextSibling","labels","hasWindow","getWindow","node","_node$ownerDocument","isElement","isHTMLElement","isShadowRoot","getComputedStyle","element","useLabelableId","params","implicit","controlRef","controlIdForEffect","controlSourceRef","hasRegisteredRef","hadExplicitIdRef","unregisterControlId","elem","ownerDocument","contains","child","rootNode","next","getTarget","event","isIndexOutOfListBounds","list","index","getMinListIndex","listRef","disabledIndices","findNonDisabledListIndex","getMaxListIndex","startingIndex","decrement","amount","isListIndexDisabled","isElementVisible","isHiddenByStyles","styles","useRegisteredLabelId","idProp","currentId","useLabel","fallbackControlId","native","setLabelIdProp","focusControlProp","contextControlId","setContextLabelId","syncLabelId","nextLabelId","resolvedControlId","focusControl","controlElement","focusElementWithVisible","handleInteraction","useMergedRefs","a","b","c","d","forkRef","createForkRef","didChange","update","useMergedRefsN","refs","didChangeN","newRefs","instance","cleanupCallbacks","i","refCleanup","cleanupCallback","majorVersion","isReactVersionAtLeast","reactVersionToCheck","getReactElementRef","reactElement","propsWithRef","mergeObjects","set","warn","messages","messageKey","getStateAttributesProps","state","customMapping","key","customProps","resolveClassName","className","resolveStyle","style","EMPTY_PROPS","mergeProps","e","createInitialMergedProps","merged","mergeInto","mergePropsN","inputProps","isPropsGetter","resolvePropsGetter","copyInitialProps","mutablyMergeInto","copiedProps","propName","propValue","isEventHandler","wrapEventHandler","mergedProps","externalPropValue","mergeClassNames","mergeEventHandlers","code0","code1","code2","previousProps","ourHandler","theirHandler","isSyntheticEvent","baseUIEvent","makeEventPreventable","result","handler","ourClassName","theirClassName","useRenderElement","componentProps","renderProp","outProps","useRenderElementProps","evaluateRenderProp","classNameProp","styleProp","stateAttributesMapping","enabled","stateProps","resolvedProps","resolveRenderFunctionProps","REACT_LAZY_TYPE","COMPONENT_IDENTIFIER_PATTERN","LOWERCASE_CHARACTER_PATTERN","render","warnIfRenderPropLooksLikeComponent","newElement","renderTag","renderFn","functionName","Tag","_createElement","useOnMount","EMPTY","Timeout","delay","useTimeout","timeout","getCombinedFieldValidityData","validityData","invalid","validityKeys","isEligibleInput","input","formElement","findRepresentativeInput","inputs","fallback","clearCustomValidity","useFieldValidation","elementRef","formRef","setValidityData","validate","validationDebounceTime","markedDirtyRef","shouldValidateOnChange","registeredFieldIdRef","inputRef","registeredInputs","validationCommitIdRef","registerInput","registration","getInputControl","commit","revalidate","validationCommitId","updateRegisteredFieldValidity","nextValidityData","externalInvalid","fieldId","currentFieldData","validityDataWithFormErrors","publishAllValid","currentNativeValidity","getState","el","computedState","acc","hasOnlyValueMissingError","validationErrors","nextState","defaultValidationMessage","isValidatingOnChange","formValues","field","resultOrPromise","change","validateOnChange","getValidationProps","disabled","useFieldControlRegistration","name","setRegisteredFieldName","activeFieldControlSourceRef","registrationRef","initialValueCapturedRef","getValueForForm","getRegistrationValue","refreshRegistration","deleteRegistration","captureInitialValue","initialValue","fields","register","previousId","FieldRootInner","forwardedRef","errors","formValidationMode","submitAttemptedRef","validateProp","validationMode","disabledProp","invalidProp","dirtyProp","touchedProp","actionsRef","elementProps","disabledFieldset","touchedState","setTouchedUnwrapped","dirtyState","setDirtyUnwrapped","filled","setFilled","focused","setFocused","dirty","touched","registeredFieldName","effectiveName","setDirty","setTouched","formError","hasFormError","valid","validation","validateFieldControl","registerFieldControl","FieldRoot","error","FieldItemContext","useFieldItemContext","FieldLabel","nativeLabel","fieldRootContext","fieldItemContext","labelRef","labelProps","isLabelTag","ownerStackMessage","LAST_RAF","Scheduler","timestamp","currentCallbacks","currentCallbacksCount","didRAFChange","scheduler","AnimationFrame","useAnimationFrame","resolveRef","maybeRef","useAnimationsFinished","elementOrRef","waitForStartingStyleRemoved","frame","fnToExecute","signal","resolvedElement","done","ReactDOM","exec","animation","startingStyleAttribute","attributeObserver","useOpenChangeComplete","parameters","open","onCompleteParam","onComplete","runOnceAnimationsFinish","abortController","STARTING_HOOK","ENDING_HOOK","transitionStatusMapping","useTransitionStatus","enableIdleState","deferEndingState","transitionStatus","setTransitionStatus","mounted","setMounted","FieldDescription","v","item","useControlled","controlled","defaultProp","isControlled","valueState","setValue","defaultValue","serializeToDevModeString","setValueIfUncontrolled","newValue","seen","useRegisterFieldControl","getFormValueOverride","sourceRef","none","createChangeEventDetails","reason","trigger","customProperties","canceled","allowPropagation","custom","FieldItem","fieldState","rootDisabled","visuallyHiddenBase","visuallyHidden","visuallyHiddenInput","dispatchClickWithModifiers","target","sourceEvent","detail","ownerWindow","CompositeRootContext","useCompositeRootContext","useFocusableWhenDisabled","focusableWhenDisabled","composite","tabIndexProp","isNativeButton","isFocusableComposite","isNonFocusableComposite","additionalProps","useButton","tabIndex","compositeProp","compositeRootContext","isCompositeItem","focusableWhenDisabledProps","isButtonTag","isButtonElement","updateDisabled","getButtonProps","externalOnClick","externalOnMouseDown","externalOnKeyUp","externalOnKeyDown","externalOnPointerDown","otherExternalProps","isCurrentTarget","currentTarget","isButton","isLink","isValidLinkElement","shouldClick","isEnterKey","isSpaceKey","role","isTextNavigationRole","buttonRef","ACTIVE_COMPOSITE_ITEM","CompositeListContext","useCompositeListContext","useCompositeListItem","guess","metadata","textRef","externalIndex","unregister","subscribeMapChange","nextIndexRef","indexRef","internalIndex","setInternalIndex","newIndex","componentRef","previousNode","map","useCompositeItem","highlightItemOnHover","highlightedIndex","onHighlightedIndexChange","isHighlighted","itemRef","mergedRef","CompositeItem","tag","compositeProps","compositeRef","RadioGroupContext","useRadioGroupContext","serializeValue","RadioRootContext","useRadioRootContext","RadioRoot","readOnlyProp","requiredProp","ariaLabelledByProp","inputRefProp","nativeButton","groupContext","disabledGroup","readOnlyGroup","requiredGroup","formGroup","checkedValue","setCheckedValue","registerInputRef","setFieldTouched","fieldDisabled","readOnly","required","form","checked","radioRef","registerFieldInput","mergedInputRef","inputId","hiddenInputId","rootProps","details","REASONS.none","isRadioGroup","validationProps","_jsxs","RadioIndicator","keepMounted","rootState","rendered","indicatorRef","shouldRender","RadioButtonGroupContext","createContext","useRadioButtonGroupContext","useContext","cx","rootClassName","RadioButtonGroupItem","forwardRef","dataTestId","helperText","resolvedDisabled","jsxs","Field.Item","Field.Label","jsx","Radio.Root","Radio.Indicator","Field.Description","FieldsetRoot","legendId","setLegendId","FieldsetLegend","ARROW_UP","ARROW_DOWN","ARROW_LEFT","ARROW_RIGHT","HOME","END","COMPOSITE_KEYS","SHIFT","MODIFIER_KEYS","isInputElement","isNativeInput","scrollIntoViewIfNeeded","scrollContainer","direction","orientation","targetX","targetY","isOverflowingX","isOverflowingY","elementOffsetLeft","getOffset","containerStyles","getStyles","elementStyles","elementOffsetTop","ancestor","side","CompositeList","children","elementsRef","labelsRef","onMapChangeProp","onMapChange","setMapTick","listeners","createListeners","createMap","isDirtyRef","itemsRef","mutationObserverRef","scheduleMapUpdate","tick","syncRefs","items","nextMap","observe","sortedNodes","mutationObserver","entries","hasMovedNode","previousConnectedNode","sortByDocumentPosition","roots","root","getCommonAncestor","flush","automaticNodes","getCompositeListSnapshot","listener","reservedIndices","automaticItems","nextAutomaticIndex","firstNode","lastNode","entry","isElementDisabled","useCompositeRoot","loopFocus","grid","onLoop","externalHighlightedIndex","externalSetHighlightedIndex","externalRef","enableHomeAndEndKeys","stopEventPropagation","modifierKeys","internalHighlightedIndex","internalSetHighlightedIndex","isGrid","rootRef","hasSetDefaultIndexRef","shouldScrollIntoView","newActiveItem","sortedElements","activeItem","compositeElement","activeIndex","firstEnabledIndex","elements","wrappedOnLoop","prevIndex","nextIndex","onKeyDown","isHomeOrEnd","isModifierKeySet","isRtl","horizontalForwardKey","horizontalBackwardKey","forwardKey","backwardKey","selectionStart","selectionEnd","textContent","minIndex","maxIndex","isForwardKey","isBackwardKey","ignoredModifierKeys","DirectionContext","useDirection","CompositeRoot","highlightedIndexProp","onHighlightedIndexChangeProp","defaultProps","onMapChangeUnwrapped","relayKeyboardEvent","newMap","useValueChanged","onChange","valueRef","onChangeCallback","RadioGroup","onValueChangeProp","externalValue","nameProp","fieldName","clearErrors","fieldsetContext","setCheckedValueUnwrapped","eventDetails","groupInputRef","firstEnabledInputRef","setInputRef","hiddenInput","cleanup","currentInput","getFormValue","fallbackInput","ariaLabelledby","RadioButtonGroupRoot","ariaLabel","heading","headingTag","negative","dir","ariaProps","Field.Root","Fieldset.Root","Fieldset.Legend","Heading","RADIO_BUTTON_GROUP_DIRECTION","RADIO_BUTTON_GROUP_ORIENTATION","RadioButtonGroup"],"mappings":"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","x_google_ignoreList":[0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,64,65,66,67,68,71,72,73,74,75,76,77,78,79,80]}
|