@servicetitan/anvil2 2.6.0 → 2.7.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +34 -0
- package/dist/{Alert-efJbA3Sy.js → Alert-C_o2f78C.js} +4 -4
- package/dist/{Alert-efJbA3Sy.js.map → Alert-C_o2f78C.js.map} +1 -1
- package/dist/Alert.js +1 -1
- package/dist/{Announcement-D9eVhPwx.js → Announcement-CyrTvgP4.js} +4 -4
- package/dist/{Announcement-D9eVhPwx.js.map → Announcement-CyrTvgP4.js.map} +1 -1
- package/dist/Announcement.js +1 -1
- package/dist/{AnvilProvider-DrjU73_k.js → AnvilProvider-ClfmLl_6.js} +3 -3
- package/dist/{AnvilProvider-DrjU73_k.js.map → AnvilProvider-ClfmLl_6.js.map} +1 -1
- package/dist/AnvilProvider.js +1 -1
- package/dist/{Avatar--E9iBILU.js → Avatar--CnTAnfD.js} +2 -2
- package/dist/{Avatar--E9iBILU.js.map → Avatar--CnTAnfD.js.map} +1 -1
- package/dist/{Avatar-CJCAu9Hk.js → Avatar-CCnbKkCm.js} +3 -3
- package/dist/{Avatar-CJCAu9Hk.js.map → Avatar-CCnbKkCm.js.map} +1 -1
- package/dist/Avatar.js +2 -2
- package/dist/{Badge-pHlnInjl.js → Badge-C2W7Dls9.js} +3 -3
- package/dist/{Badge-pHlnInjl.js.map → Badge-C2W7Dls9.js.map} +1 -1
- package/dist/Badge.js +1 -1
- package/dist/{Breadcrumbs-B5deMJRX.js → Breadcrumbs-3Y7jnj-F.js} +5 -5
- package/dist/{Breadcrumbs-B5deMJRX.js.map → Breadcrumbs-3Y7jnj-F.js.map} +1 -1
- package/dist/Breadcrumbs.js +1 -1
- package/dist/{Button-DuvaXRZ5.js → Button-CVsGhVJz.js} +4 -4
- package/dist/{Button-DuvaXRZ5.js.map → Button-CVsGhVJz.js.map} +1 -1
- package/dist/Button.js +1 -1
- package/dist/{ButtonCompound-CfRJlClF.js → ButtonCompound-Cmw3cgMY.js} +2 -2
- package/dist/{ButtonCompound-CfRJlClF.js.map → ButtonCompound-Cmw3cgMY.js.map} +1 -1
- package/dist/ButtonCompound.js +1 -1
- package/dist/{ButtonLink-B5Ixd5d5.js → ButtonLink-BJKTJER8.js} +4 -4
- package/dist/{ButtonLink-B5Ixd5d5.js.map → ButtonLink-BJKTJER8.js.map} +1 -1
- package/dist/ButtonLink.js +1 -1
- package/dist/{ButtonToggle-BkDR0AcM.js → ButtonToggle-DaYJWso_.js} +3 -3
- package/dist/{ButtonToggle-BkDR0AcM.js.map → ButtonToggle-DaYJWso_.js.map} +1 -1
- package/dist/ButtonToggle.js +1 -1
- package/dist/{Calendar-MXQWMrwC.js → Calendar-C1U2npPP.js} +2 -2
- package/dist/{Calendar-MXQWMrwC.js.map → Calendar-C1U2npPP.js.map} +1 -1
- package/dist/{Calendar-M8K2O28r.js → Calendar-SGlTt-bs.js} +6 -6
- package/dist/{Calendar-M8K2O28r.js.map → Calendar-SGlTt-bs.js.map} +1 -1
- package/dist/Calendar.js +2 -2
- package/dist/{Card-C5TyS0Iv.js → Card-wz71dEVA.js} +2 -2
- package/dist/{Card-C5TyS0Iv.js.map → Card-wz71dEVA.js.map} +1 -1
- package/dist/Card.js +1 -1
- package/dist/{Checkbox-Czx6UCfq.js → Checkbox-CjEKa5Iv.js} +2 -2
- package/dist/{Checkbox-Czx6UCfq.js.map → Checkbox-CjEKa5Iv.js.map} +1 -1
- package/dist/{Checkbox-LPr8zpzs.js → Checkbox-CtKUNeyu.js} +20 -11
- package/dist/Checkbox-CtKUNeyu.js.map +1 -0
- package/dist/Checkbox.js +1 -1
- package/dist/{Chip-BJmzOMOd.js → Chip-DjTAR0va.js} +5 -5
- package/dist/{Chip-BJmzOMOd.js.map → Chip-DjTAR0va.js.map} +1 -1
- package/dist/Chip.js +1 -1
- package/dist/{Combobox-CnzBCYLC.js → Combobox-By8-34bw.js} +13 -12
- package/dist/{Combobox-CnzBCYLC.js.map → Combobox-By8-34bw.js.map} +1 -1
- package/dist/Combobox.js +1 -1
- package/dist/{DataTable-Cau6ylNR.js → DataTable-BYOS6icI.js} +95 -53
- package/dist/DataTable-BYOS6icI.js.map +1 -0
- package/dist/DataTable.css +68 -55
- package/dist/{DateFieldRange-B1BR8K7C.js → DateFieldRange-C8Uzrboc.js} +45 -54
- package/dist/DateFieldRange-C8Uzrboc.js.map +1 -0
- package/dist/DateFieldRange.js +1 -1
- package/dist/{DateFieldSingle-CaWruBBO.js → DateFieldSingle-DrhLIjlK.js} +43 -52
- package/dist/DateFieldSingle-DrhLIjlK.js.map +1 -0
- package/dist/DateFieldSingle.js +1 -1
- package/dist/{DateFieldYearless-ClF88lnZ.js → DateFieldYearless-DbivK4Hm.js} +6 -6
- package/dist/{DateFieldYearless-ClF88lnZ.js.map → DateFieldYearless-DbivK4Hm.js.map} +1 -1
- package/dist/DateFieldYearless.js +1 -1
- package/dist/{DateFieldYearlessRange-LZFr55tn.js → DateFieldYearlessRange-BEqJe4Uf.js} +7 -7
- package/dist/{DateFieldYearlessRange-LZFr55tn.js.map → DateFieldYearlessRange-BEqJe4Uf.js.map} +1 -1
- package/dist/DateFieldYearlessRange.js +1 -1
- package/dist/{DaysOfTheWeek-BLdndX4a.js → DaysOfTheWeek-BR32AA32.js} +6 -6
- package/dist/{DaysOfTheWeek-BLdndX4a.js.map → DaysOfTheWeek-BR32AA32.js.map} +1 -1
- package/dist/DaysOfTheWeek.js +1 -1
- package/dist/{Details-C9temdJE.js → Details-Dxq_v3Qg.js} +3 -3
- package/dist/{Details-C9temdJE.js.map → Details-Dxq_v3Qg.js.map} +1 -1
- package/dist/Details.js +1 -1
- package/dist/{Dialog-CXnUkcrS.js → Dialog-CGhwkwvq.js} +5 -5
- package/dist/{Dialog-CXnUkcrS.js.map → Dialog-CGhwkwvq.js.map} +1 -1
- package/dist/Dialog.js +1 -1
- package/dist/{DialogCancelButton-LfPkSYCE.js → DialogCancelButton-DQDMzGeT.js} +2 -2
- package/dist/{DialogCancelButton-LfPkSYCE.js.map → DialogCancelButton-DQDMzGeT.js.map} +1 -1
- package/dist/{Divider-HHjG0KYA.js → Divider-B1UoK8ho.js} +2 -2
- package/dist/{Divider-HHjG0KYA.js.map → Divider-B1UoK8ho.js.map} +1 -1
- package/dist/Divider.js +1 -1
- package/dist/Dnd.js +1 -1
- package/dist/DndSort.js +8 -10
- package/dist/DndSort.js.map +1 -1
- package/dist/{Drawer-BmNHRJJJ.js → Drawer-DA4iAgt-.js} +5 -5
- package/dist/{Drawer-BmNHRJJJ.js.map → Drawer-DA4iAgt-.js.map} +1 -1
- package/dist/Drawer.js +1 -1
- package/dist/DrillDown.js +1 -1
- package/dist/{EditCard-8gQ6IJez.js → EditCard-CLN0GBN_.js} +6 -6
- package/dist/{EditCard-8gQ6IJez.js.map → EditCard-CLN0GBN_.js.map} +1 -1
- package/dist/EditCard.js +1 -1
- package/dist/{FieldLabel-35fac7b-.js → FieldLabel-DbMosKtd.js} +5 -5
- package/dist/{FieldLabel-35fac7b-.js.map → FieldLabel-DbMosKtd.js.map} +1 -1
- package/dist/FieldLabel.js +1 -1
- package/dist/{FieldMessage-eYenMJY5.js → FieldMessage-COHqUdj5.js} +3 -3
- package/dist/{FieldMessage-eYenMJY5.js.map → FieldMessage-COHqUdj5.js.map} +1 -1
- package/dist/FieldMessage.js +2 -2
- package/dist/{Flex-DZu-_z-U.js → Flex-WyyZm1bf.js} +2 -2
- package/dist/{Flex-DZu-_z-U.js.map → Flex-WyyZm1bf.js.map} +1 -1
- package/dist/Flex.js +1 -1
- package/dist/{Grid-xRKvVHA2.js → Grid-ONcUpb__.js} +2 -2
- package/dist/{Grid-xRKvVHA2.js.map → Grid-ONcUpb__.js.map} +1 -1
- package/dist/Grid.js +1 -1
- package/dist/{Helper-CDZD_AOG.js → Helper-B_FIOlhy.js} +3 -3
- package/dist/{Helper-CDZD_AOG.js.map → Helper-B_FIOlhy.js.map} +1 -1
- package/dist/{Icon-Bgkq1egx.js → Icon-DuIlne4x.js} +2 -2
- package/dist/{Icon-Bgkq1egx.js.map → Icon-DuIlne4x.js.map} +1 -1
- package/dist/Icon.js +1 -1
- package/dist/{InputMask-DkvZ4MIT.js → InputMask-HjaNCb73.js} +3 -3
- package/dist/{InputMask-DkvZ4MIT.js.map → InputMask-HjaNCb73.js.map} +1 -1
- package/dist/InputMask.js +1 -1
- package/dist/{InteractiveCard-B3_FAoIE.js → InteractiveCard-GTYbR6Xy.js} +3 -3
- package/dist/{InteractiveCard-B3_FAoIE.js.map → InteractiveCard-GTYbR6Xy.js.map} +1 -1
- package/dist/InteractiveCard.js +1 -1
- package/dist/{Layout-DTAU7jS5.js → Layout-VfhlilMG.js} +2 -2
- package/dist/{Layout-DTAU7jS5.js.map → Layout-VfhlilMG.js.map} +1 -1
- package/dist/Layout.js +1 -1
- package/dist/{Link-DSyeiS7g.js → Link-jTvzyXca.js} +3 -3
- package/dist/{Link-DSyeiS7g.js.map → Link-jTvzyXca.js.map} +1 -1
- package/dist/Link.js +1 -1
- package/dist/{LinkButton-DOI4osnN.js → LinkButton-DGyHR1E7.js} +2 -2
- package/dist/{LinkButton-DOI4osnN.js.map → LinkButton-DGyHR1E7.js.map} +1 -1
- package/dist/LinkButton.js +1 -1
- package/dist/{List-Cyvkt0Px.js → List-CJZjElAQ.js} +2 -2
- package/dist/{List-Cyvkt0Px.js.map → List-CJZjElAQ.js.map} +1 -1
- package/dist/List.js +1 -1
- package/dist/{ListView-VzdUffCe.js → ListView-mujFK6mQ.js} +3 -3
- package/dist/{ListView-VzdUffCe.js.map → ListView-mujFK6mQ.js.map} +1 -1
- package/dist/ListView.js +1 -1
- package/dist/{Listbox-SRBgb1VS.js → Listbox-BtAgBDRS.js} +6 -6
- package/dist/{Listbox-SRBgb1VS.js.map → Listbox-BtAgBDRS.js.map} +1 -1
- package/dist/Listbox.css +29 -29
- package/dist/Listbox.js +1 -1
- package/dist/Listbox.module-HAXMOKvC.js +18 -0
- package/dist/Listbox.module-HAXMOKvC.js.map +1 -0
- package/dist/{Menu-Bxbrulia.js → Menu-BXsmCP20.js} +6 -5
- package/dist/{Menu-Bxbrulia.js.map → Menu-BXsmCP20.js.map} +1 -1
- package/dist/Menu.js +1 -1
- package/dist/MultiSelectField.js +1 -1
- package/dist/{MultiSelectFieldSync-B6J42MpG.js → MultiSelectFieldSync-DGpGgu8q.js} +91 -176
- package/dist/MultiSelectFieldSync-DGpGgu8q.js.map +1 -0
- package/dist/MultiSelectMenu.d.ts +2 -0
- package/dist/MultiSelectMenu.js +2 -0
- package/dist/MultiSelectMenu.js.map +1 -0
- package/dist/MultiSelectMenuSync-DiLddJDw.js +432 -0
- package/dist/MultiSelectMenuSync-DiLddJDw.js.map +1 -0
- package/dist/{NumberField-BgeDEoHw.js → NumberField-svhZp1kB.js} +8 -8
- package/dist/{NumberField-BgeDEoHw.js.map → NumberField-svhZp1kB.js.map} +1 -1
- package/dist/NumberField.js +1 -1
- package/dist/Overflow.js +2 -2
- package/dist/{Page-DgqEClR7.js → Page-Be029Dij.js} +123 -82
- package/dist/Page-Be029Dij.js.map +1 -0
- package/dist/Page.css +84 -72
- package/dist/Page.js +1 -1
- package/dist/{Pagination-DIredMzG.js → Pagination-BAwqfl_2.js} +8 -8
- package/dist/{Pagination-DIredMzG.js.map → Pagination-BAwqfl_2.js.map} +1 -1
- package/dist/Pagination.js +1 -1
- package/dist/{Popover-CsVesD9_.js → Popover-D0qSKZ1J.js} +6 -5
- package/dist/{Popover-CsVesD9_.js.map → Popover-D0qSKZ1J.js.map} +1 -1
- package/dist/{Popover-ZyaN26OB.js → Popover-DxZF6lbJ.js} +28 -15
- package/dist/Popover-DxZF6lbJ.js.map +1 -0
- package/dist/Popover.js +1 -1
- package/dist/{ProgressBar-x1cyKo1E.js → ProgressBar-JpRDW5vG.js} +7 -7
- package/dist/{ProgressBar-x1cyKo1E.js.map → ProgressBar-JpRDW5vG.js.map} +1 -1
- package/dist/ProgressBar.js +1 -1
- package/dist/{Radio-Beneo_h3.js → Radio-BOq9UkpC.js} +2 -2
- package/dist/{Radio-Beneo_h3.js.map → Radio-BOq9UkpC.js.map} +1 -1
- package/dist/{Radio-D8HSazJ6.js → Radio-BQg7exDG.js} +17 -8
- package/dist/{Radio-D8HSazJ6.js.map → Radio-BQg7exDG.js.map} +1 -1
- package/dist/Radio.js +1 -1
- package/dist/{SearchField-Dn_5cMo3.js → SearchField-im7AHGYo.js} +4 -4
- package/dist/{SearchField-Dn_5cMo3.js.map → SearchField-im7AHGYo.js.map} +1 -1
- package/dist/SearchField.js +1 -1
- package/dist/{SegmentedControl-BshzGPsW.js → SegmentedControl-7fDLhgvh.js} +3 -3
- package/dist/{SegmentedControl-BshzGPsW.js.map → SegmentedControl-7fDLhgvh.js.map} +1 -1
- package/dist/SegmentedControl.js +1 -1
- package/dist/{SelectCard-D94UKLxM.js → SelectCard-cu4MBuh8.js} +24 -15
- package/dist/{SelectCard-D94UKLxM.js.map → SelectCard-cu4MBuh8.js.map} +1 -1
- package/dist/SelectCard.css +23 -18
- package/dist/SelectCard.js +1 -1
- package/dist/SelectField.js +1 -1
- package/dist/SelectFieldLabel-Dr8HeW3N.js +31 -0
- package/dist/SelectFieldLabel-Dr8HeW3N.js.map +1 -0
- package/dist/{SelectFieldSync-BQrC0j2-.js → SelectFieldSync-CJ2Ie_v1.js} +79 -168
- package/dist/SelectFieldSync-CJ2Ie_v1.js.map +1 -0
- package/dist/SelectMenu.d.ts +2 -0
- package/dist/SelectMenu.js +2 -0
- package/dist/SelectMenu.js.map +1 -0
- package/dist/SelectMenuSync-CJA_coqD.js +327 -0
- package/dist/SelectMenuSync-CJA_coqD.js.map +1 -0
- package/dist/SelectOptions-Bf4xsFek.js +26 -0
- package/dist/SelectOptions-Bf4xsFek.js.map +1 -0
- package/dist/{SelectTrigger-D8xkq1wa.js → SelectTrigger-ObsnAKNp.js} +4 -4
- package/dist/{SelectTrigger-D8xkq1wa.js.map → SelectTrigger-ObsnAKNp.js.map} +1 -1
- package/dist/SelectTrigger.js +1 -1
- package/dist/{SelectTriggerBase-CBS5URqs.js → SelectTriggerBase-DKfOL2RJ.js} +8 -8
- package/dist/{SelectTriggerBase-CBS5URqs.js.map → SelectTriggerBase-DKfOL2RJ.js.map} +1 -1
- package/dist/{SideNav-2CgD8uxD.js → SideNav-KksbSQn7.js} +3 -3
- package/dist/{SideNav-2CgD8uxD.js.map → SideNav-KksbSQn7.js.map} +1 -1
- package/dist/SideNav.js +1 -1
- package/dist/Skeleton.js +1 -1
- package/dist/{Spinner-CpEm3Lud.js → Spinner-BqmcE2pb.js} +2 -2
- package/dist/{Spinner-CpEm3Lud.js.map → Spinner-BqmcE2pb.js.map} +1 -1
- package/dist/Spinner.js +1 -1
- package/dist/{SrOnly-CrdBTl6E.js → SrOnly-eUpYGpAT.js} +2 -2
- package/dist/{SrOnly-CrdBTl6E.js.map → SrOnly-eUpYGpAT.js.map} +1 -1
- package/dist/SrOnly.js +1 -1
- package/dist/{Stepper-D71Zhlr9.js → Stepper-Dt8_ImvJ.js} +4 -4
- package/dist/{Stepper-D71Zhlr9.js.map → Stepper-Dt8_ImvJ.js.map} +1 -1
- package/dist/Stepper.js +1 -1
- package/dist/{Switch-DxkmA-o4.js → Switch-DpPHr3G3.js} +5 -5
- package/dist/{Switch-DxkmA-o4.js.map → Switch-DpPHr3G3.js.map} +1 -1
- package/dist/Switch.js +1 -1
- package/dist/{Tab-2mEMF0vc.js → Tab-DO7LaUbw.js} +3 -3
- package/dist/{Tab-2mEMF0vc.js.map → Tab-DO7LaUbw.js.map} +1 -1
- package/dist/Tab.js +1 -1
- package/dist/Table.js +1 -1
- package/dist/{Text-BqES2rv3.js → Text-BJo4oMI2.js} +2 -2
- package/dist/{Text-BqES2rv3.js.map → Text-BJo4oMI2.js.map} +1 -1
- package/dist/Text.js +1 -1
- package/dist/{TextField-Dk90SWXl.js → TextField-BW8sJAls.js} +2 -2
- package/dist/{TextField-Dk90SWXl.js.map → TextField-BW8sJAls.js.map} +1 -1
- package/dist/{TextField-Dn6HWZoH.js → TextField-DeHpgPag.js} +12 -7
- package/dist/TextField-DeHpgPag.js.map +1 -0
- package/dist/TextField.js +1 -1
- package/dist/{Textarea-D4gqy2ZR.js → Textarea-DyqdMTvQ.js} +5 -5
- package/dist/{Textarea-D4gqy2ZR.js.map → Textarea-DyqdMTvQ.js.map} +1 -1
- package/dist/Textarea.js +1 -1
- package/dist/{ThemeProvider-BwZHpkFv.js → ThemeProvider-CaYW3RuA.js} +2 -2
- package/dist/{ThemeProvider-BwZHpkFv.js.map → ThemeProvider-CaYW3RuA.js.map} +1 -1
- package/dist/ThemeProvider.js +1 -1
- package/dist/{TimeField-DgdGwPF9.js → TimeField-Dc0Y1JD-.js} +6 -7
- package/dist/{TimeField-DgdGwPF9.js.map → TimeField-Dc0Y1JD-.js.map} +1 -1
- package/dist/TimeField.js +1 -1
- package/dist/Toast.js +2 -2
- package/dist/{Toaster-BBcWImWl.js → Toaster-DikGo_hR.js} +2 -2
- package/dist/{Toaster-BBcWImWl.js.map → Toaster-DikGo_hR.js.map} +1 -1
- package/dist/{Toaster-C07D40P9.js → Toaster-b0-Ub3yt.js} +7 -7
- package/dist/{Toaster-C07D40P9.js.map → Toaster-b0-Ub3yt.js.map} +1 -1
- package/dist/{Toolbar-4LHKM6ub.js → Toolbar-DAuz4Gs2.js} +41 -129
- package/dist/Toolbar-DAuz4Gs2.js.map +1 -0
- package/dist/Toolbar.js +1 -1
- package/dist/{Tooltip-BiW5nNAy.js → Tooltip-Bupqao9B.js} +5 -4
- package/dist/{Tooltip-BiW5nNAy.js.map → Tooltip-Bupqao9B.js.map} +1 -1
- package/dist/Tooltip.js +1 -1
- package/dist/{YearlessDateInputWithPicker-CxfcJqro.js → YearlessDateInputWithPicker-DFi08TLG.js} +13 -15
- package/dist/YearlessDateInputWithPicker-DFi08TLG.js.map +1 -0
- package/dist/YearlessDateInputWithPicker.css +33 -33
- package/dist/beta/components/MultiSelectField/MultiSelectFieldSync.d.ts +2 -3
- package/dist/beta/components/MultiSelectField/internal/useComboMultiple.d.ts +8 -7
- package/dist/beta/components/MultiSelectField/internal/useSelectModeMultiple.d.ts +6 -4
- package/dist/beta/components/MultiSelectField/types.d.ts +2 -3
- package/dist/beta/components/MultiSelectMenu/MultiSelectMenu.d.ts +30 -0
- package/dist/beta/components/MultiSelectMenu/MultiSelectMenuSync.d.ts +54 -0
- package/dist/beta/components/MultiSelectMenu/index.d.ts +3 -0
- package/dist/beta/components/MultiSelectMenu/types.d.ts +170 -0
- package/dist/beta/components/SelectField/SelectFieldSync.d.ts +2 -3
- package/dist/beta/components/SelectField/internal/SelectFieldComboboxMode.d.ts +1 -1
- package/dist/beta/components/SelectField/internal/SelectFieldSelectMode.d.ts +1 -1
- package/dist/beta/components/SelectField/internal/useCombo.d.ts +7 -7
- package/dist/beta/components/SelectField/internal/useSelectMode.d.ts +7 -6
- package/dist/beta/components/SelectField/types.d.ts +2 -9
- package/dist/beta/components/SelectMenu/SelectMenu.d.ts +27 -0
- package/dist/beta/components/SelectMenu/SelectMenuSync.d.ts +41 -0
- package/dist/beta/components/SelectMenu/index.d.ts +3 -0
- package/dist/beta/components/SelectMenu/internal/useMenuInteraction.d.ts +72 -0
- package/dist/beta/components/SelectMenu/types.d.ts +153 -0
- package/dist/beta/components/Table/DataTable/DataTable.d.ts +7 -1
- package/dist/beta/components/Table/DataTable/internal/cells/CellFocusContext.d.ts +1 -1
- package/dist/beta/components/Table/DataTable/internal/cells/CellStatus.d.ts +12 -0
- package/dist/beta/components/Table/DataTable/internal/util/getTanStackColumnDef.d.ts +7 -1
- package/dist/beta/components/Table/createColumnHelper.d.ts +6 -0
- package/dist/beta/components/Table/types.d.ts +20 -0
- package/dist/beta/components/Toolbar/ToolbarSelect.d.ts +3 -3
- package/dist/beta/components/index.d.ts +2 -0
- package/dist/beta.js +10 -8
- package/dist/beta.js.map +1 -1
- package/dist/components/Announcement/Announcement.figma.d.ts +1 -0
- package/dist/components/Checkbox/internal/Checkbox.d.ts +8 -0
- package/dist/components/DateFieldYearless/internal/YearlessDateSelectionPopover.d.ts +1 -1
- package/dist/components/DndSort/internal/test-utils.d.ts +15 -8
- package/dist/components/FieldMessage/FieldMessage.figma.d.ts +1 -0
- package/dist/components/Page/Page.d.ts +1 -1
- package/dist/components/Page/PageContent.d.ts +5 -5
- package/dist/components/Page/PageContext.d.ts +2 -0
- package/dist/components/Page/PageFooter.d.ts +1 -0
- package/dist/components/Radio/internal/Radio.d.ts +8 -0
- package/dist/components/Toolbar/ToolbarSelect.d.ts +3 -3
- package/dist/{match-sorter.esm-adzV1NDp.js → downshift.esm-xtSnQp44.js} +3 -907
- package/dist/downshift.esm-xtSnQp44.js.map +1 -0
- package/dist/{floating-ui.react-S01OoTc9.js → floating-ui.react-C_s3_nEb.js} +2 -2
- package/dist/{floating-ui.react-S01OoTc9.js.map → floating-ui.react-C_s3_nEb.js.map} +1 -1
- package/dist/{floating-ui.react-dom-DSiPHZwm.js → floating-ui.react-dom-imrk9N49.js} +2 -17
- package/dist/floating-ui.react-dom-imrk9N49.js.map +1 -0
- package/dist/{index-DuDm69S1.js → index-D6ag_WQW.js} +4 -4
- package/dist/{index-DuDm69S1.js.map → index-D6ag_WQW.js.map} +1 -1
- package/dist/{index-SvGbrGuT.js → index-De1g9FRV.js} +2 -2
- package/dist/{index-SvGbrGuT.js.map → index-De1g9FRV.js.map} +1 -1
- package/dist/index.js +73 -100
- package/dist/index.js.map +1 -1
- package/dist/internal/components/MultiSelectOptions.d.ts +23 -0
- package/dist/{beta/components/SelectField/internal/FieldDialog/FieldDialog.d.ts → internal/components/OptionsDialog/OptionsDialog.d.ts} +2 -2
- package/dist/internal/components/OptionsPanel.d.ts +26 -0
- package/dist/internal/components/OptionsPopover/OptionsPopover.d.ts +16 -0
- package/dist/internal/components/Popover/Popover.d.ts +3 -2
- package/dist/internal/components/Popover/PopoverContent.d.ts +4 -0
- package/dist/internal/components/Popover/internal/PopoverContext.d.ts +2 -2
- package/dist/internal/components/SelectOption.d.ts +13 -0
- package/dist/internal/components/SelectOptions.d.ts +23 -0
- package/dist/internal/components/VirtualizedOptionsPanel.d.ts +2 -0
- package/dist/internal/functions/buildSelectItems.d.ts +22 -0
- package/dist/internal/functions/syncFilterUtils.d.ts +10 -0
- package/dist/{beta/components/SelectField/internal → internal/hooks}/useGroupedOptions.d.ts +4 -3
- package/dist/{beta/components/SelectField/internal/useFieldListSections.d.ts → internal/hooks/useOptionsSections.d.ts} +7 -8
- package/dist/{beta/components/SelectField/internal → internal/hooks}/usePinnedOptions.d.ts +1 -1
- package/dist/{beta/components/SelectField/internal → internal/hooks}/useProcessedOptions.d.ts +2 -2
- package/dist/internal/hooks/useSelectOrchestration.d.ts +38 -0
- package/dist/{beta/components/MultiSelectField/internal → internal/hooks}/useToggleSelection.d.ts +2 -2
- package/dist/{beta/components/SelectField/internal/types.d.ts → internal/types/selectFieldInternalTypes.d.ts} +11 -3
- package/dist/match-sorter.esm-CGAauEiU.js +908 -0
- package/dist/match-sorter.esm-CGAauEiU.js.map +1 -0
- package/dist/safePopover-BDso-xSH.js +17 -0
- package/dist/safePopover-BDso-xSH.js.map +1 -0
- package/dist/{FieldDialog-DaRvLS6m.js → syncFilterUtils-vt8ldsES.js} +287 -146
- package/dist/syncFilterUtils-vt8ldsES.js.map +1 -0
- package/dist/{FieldDialog.css → syncFilterUtils.css} +18 -11
- package/dist/{useDrilldown-CuvPT4gS.js → useDrilldown-wwXRpNgb.js} +5 -5
- package/dist/{useDrilldown-CuvPT4gS.js.map → useDrilldown-wwXRpNgb.js.map} +1 -1
- package/dist/useMenuInteraction-zR_78KQC.js +249 -0
- package/dist/useMenuInteraction-zR_78KQC.js.map +1 -0
- package/dist/useToggleSelection-BdXW3Zg3.js +63 -0
- package/dist/useToggleSelection-BdXW3Zg3.js.map +1 -0
- package/dist/{utils-pudAMGnO.js → utils-CM48ODEJ.js} +3 -13
- package/dist/utils-CM48ODEJ.js.map +1 -0
- package/dist/warnOnce-Y9PRHcU4.js +13 -0
- package/dist/warnOnce-Y9PRHcU4.js.map +1 -0
- package/package.json +10 -9
- package/dist/Checkbox-LPr8zpzs.js.map +0 -1
- package/dist/DataTable-Cau6ylNR.js.map +0 -1
- package/dist/DateFieldRange-B1BR8K7C.js.map +0 -1
- package/dist/DateFieldSingle-CaWruBBO.js.map +0 -1
- package/dist/FieldDialog-DaRvLS6m.js.map +0 -1
- package/dist/Listbox.module-XuKszT3X.js +0 -18
- package/dist/Listbox.module-XuKszT3X.js.map +0 -1
- package/dist/MultiSelectFieldSync-B6J42MpG.js.map +0 -1
- package/dist/Page-DgqEClR7.js.map +0 -1
- package/dist/Popover-ZyaN26OB.js.map +0 -1
- package/dist/SelectFieldSync-BQrC0j2-.js.map +0 -1
- package/dist/TextField-Dn6HWZoH.js.map +0 -1
- package/dist/Toolbar-4LHKM6ub.js.map +0 -1
- package/dist/YearlessDateInputWithPicker-CxfcJqro.js.map +0 -1
- package/dist/beta/components/MultiSelectField/internal/MultiSelectFieldList.d.ts +0 -24
- package/dist/beta/components/SelectField/internal/FieldListBase.d.ts +0 -27
- package/dist/beta/components/SelectField/internal/FieldPopover/FieldPopover.d.ts +0 -9
- package/dist/beta/components/SelectField/internal/SelectFieldList.d.ts +0 -26
- package/dist/beta/components/SelectField/internal/SelectFieldListItem.d.ts +0 -14
- package/dist/beta/components/SelectField/internal/VirtualizedFieldListBase.d.ts +0 -2
- package/dist/beta/components/SelectField/internal/buildDownshiftItems.d.ts +0 -22
- package/dist/beta/components/Table/DataTable/internal/cells/CellError.d.ts +0 -10
- package/dist/floating-ui.react-dom-DSiPHZwm.js.map +0 -1
- package/dist/match-sorter.esm-adzV1NDp.js.map +0 -1
- package/dist/utils-pudAMGnO.js.map +0 -1
- /package/dist/{beta/components/SelectField/internal → internal/components}/InView.d.ts +0 -0
|
@@ -1,15 +1,16 @@
|
|
|
1
1
|
import { jsx, jsxs } from 'react/jsx-runtime';
|
|
2
2
|
import { createContext, useContext, forwardRef, useCallback, useRef, useEffect, useLayoutEffect, useId, useImperativeHandle, useMemo } from 'react';
|
|
3
|
-
import { F as FloatingFocusManager, a as useFloating, b as useRole, c as useHover, s as safePolygon, d as useFocus, e as useClick, f as useDismiss, g as useInteractions } from './floating-ui.react-
|
|
4
|
-
import { B as Button } from './Button-
|
|
3
|
+
import { F as FloatingFocusManager, a as useFloating, b as useRole, c as useHover, s as safePolygon, d as useFocus, e as useClick, f as useDismiss, g as useInteractions } from './floating-ui.react-C_s3_nEb.js';
|
|
4
|
+
import { B as Button } from './Button-CVsGhVJz.js';
|
|
5
5
|
import { useTrackingId } from './useTrackingId.js';
|
|
6
6
|
import { c as childrenToString } from './childrenToString-Bz9MqbHb.js';
|
|
7
7
|
import { u as useMergeRefs } from './useMergeRefs-Dfmtq9cI.js';
|
|
8
|
-
import { c as cx } from './index-
|
|
8
|
+
import { c as cx } from './index-De1g9FRV.js';
|
|
9
9
|
import { D as DialogContext } from './DialogContext-DBgtApl9.js';
|
|
10
|
-
import { o as offset, t as size, v as autoPlacement, n as flip, p as shift, q as arrow$1, r as limitShift, s as safeShowPopover, m as safeHidePopover, l as autoUpdate } from './floating-ui.react-dom-DSiPHZwm.js';
|
|
11
|
-
import { u as useOptionallyControlledState } from './useOptionallyControlledState-DbDuos5L.js';
|
|
12
10
|
import { u as usePopoverTransitionStates } from './usePopoverTransitionStates-CDIoNUuf.js';
|
|
11
|
+
import { l as autoUpdate, o as offset, q as size, r as autoPlacement, m as flip, s as shift, n as arrow$1, p as limitShift } from './floating-ui.react-dom-imrk9N49.js';
|
|
12
|
+
import { u as useOptionallyControlledState } from './useOptionallyControlledState-DbDuos5L.js';
|
|
13
|
+
import { s as safeShowPopover, a as safeHidePopover } from './safePopover-BDso-xSH.js';
|
|
13
14
|
|
|
14
15
|
import './Popover2.css';const PopoverContext = createContext(null);
|
|
15
16
|
|
|
@@ -104,6 +105,7 @@ const PopoverContent = forwardRef(
|
|
|
104
105
|
onScroll,
|
|
105
106
|
onScrollCapture,
|
|
106
107
|
scrollerRef,
|
|
108
|
+
hideWhileClosed = false,
|
|
107
109
|
...rest
|
|
108
110
|
} = props;
|
|
109
111
|
const {
|
|
@@ -118,7 +120,7 @@ const PopoverContent = forwardRef(
|
|
|
118
120
|
modal,
|
|
119
121
|
openOnHover,
|
|
120
122
|
noPadding,
|
|
121
|
-
|
|
123
|
+
enableCaret,
|
|
122
124
|
triggerId,
|
|
123
125
|
role
|
|
124
126
|
} = usePopoverContext();
|
|
@@ -130,9 +132,20 @@ const PopoverContent = forwardRef(
|
|
|
130
132
|
if (openState) {
|
|
131
133
|
hasBeenOpenRef.current = true;
|
|
132
134
|
} else if (hasBeenOpenRef.current && !openOnHover) {
|
|
133
|
-
|
|
135
|
+
const activeEl = document.activeElement;
|
|
136
|
+
const floating = floatingContext.elements.floating;
|
|
137
|
+
const shouldReturnFocus = role === "dialog" ? !activeEl || activeEl === document.body || floating?.contains(activeEl) : floating?.contains(activeEl);
|
|
138
|
+
if (shouldReturnFocus) {
|
|
139
|
+
floatingContext.elements.reference?.focus();
|
|
140
|
+
}
|
|
134
141
|
}
|
|
135
|
-
}, [
|
|
142
|
+
}, [
|
|
143
|
+
openState,
|
|
144
|
+
openOnHover,
|
|
145
|
+
floatingContext.elements.reference,
|
|
146
|
+
floatingContext.elements.floating,
|
|
147
|
+
role
|
|
148
|
+
]);
|
|
136
149
|
useLayoutEffect(() => {
|
|
137
150
|
if (openState && scrollContainerRef.current) {
|
|
138
151
|
scrollContainerRef.current.scrollTop = 0;
|
|
@@ -181,10 +194,10 @@ const PopoverContent = forwardRef(
|
|
|
181
194
|
ref: mergedScrollerRef,
|
|
182
195
|
onScroll,
|
|
183
196
|
onScrollCapture,
|
|
184
|
-
children
|
|
197
|
+
children: hideWhileClosed ? openState ? children : null : children
|
|
185
198
|
}
|
|
186
199
|
),
|
|
187
|
-
|
|
200
|
+
enableCaret && /* @__PURE__ */ jsx("span", { className: styles["arrow"], ref: arrowRef, style: arrowStyle, children: /* @__PURE__ */ jsx("svg", { "aria-hidden": "true", width: "14", height: "14", viewBox: "0 0 14 14", children: /* @__PURE__ */ jsx("path", { stroke: "none", d: "M0,0 H14 L7,7 Q7,7 7,7 Z" }) }) })
|
|
188
201
|
]
|
|
189
202
|
}
|
|
190
203
|
);
|
|
@@ -228,7 +241,7 @@ const PopoverElement = forwardRef((props, ref) => {
|
|
|
228
241
|
onClickOutside,
|
|
229
242
|
openOnHover = false,
|
|
230
243
|
delay = 100,
|
|
231
|
-
|
|
244
|
+
enableCaret,
|
|
232
245
|
noPadding,
|
|
233
246
|
matchReferenceWidth,
|
|
234
247
|
fixedWidth,
|
|
@@ -332,7 +345,7 @@ const PopoverElement = forwardRef((props, ref) => {
|
|
|
332
345
|
}),
|
|
333
346
|
isAuto ? autoPlacement({ allowedPlacements, padding: 5 }) : flip({
|
|
334
347
|
crossAxis: false,
|
|
335
|
-
fallbackAxisSideDirection: "
|
|
348
|
+
fallbackAxisSideDirection: "none",
|
|
336
349
|
fallbackPlacements,
|
|
337
350
|
padding: 5
|
|
338
351
|
}),
|
|
@@ -417,7 +430,7 @@ const PopoverElement = forwardRef((props, ref) => {
|
|
|
417
430
|
modal,
|
|
418
431
|
openOnHover,
|
|
419
432
|
noPadding,
|
|
420
|
-
|
|
433
|
+
enableCaret,
|
|
421
434
|
role: roleProp
|
|
422
435
|
}),
|
|
423
436
|
[
|
|
@@ -439,7 +452,7 @@ const PopoverElement = forwardRef((props, ref) => {
|
|
|
439
452
|
modal,
|
|
440
453
|
openOnHover,
|
|
441
454
|
noPadding,
|
|
442
|
-
|
|
455
|
+
enableCaret,
|
|
443
456
|
roleProp
|
|
444
457
|
]
|
|
445
458
|
);
|
|
@@ -519,4 +532,4 @@ const Popover = Object.assign(PopoverElement, {
|
|
|
519
532
|
});
|
|
520
533
|
|
|
521
534
|
export { Popover as P };
|
|
522
|
-
//# sourceMappingURL=Popover-
|
|
535
|
+
//# sourceMappingURL=Popover-DxZF6lbJ.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Popover-DxZF6lbJ.js","sources":["../src/internal/components/Popover/internal/PopoverContext.ts","../src/internal/components/Popover/internal/usePopoverContext.tsx","../src/internal/components/Popover/PopoverClose.tsx","../src/internal/components/Popover/PopoverButton.tsx","../src/internal/components/Popover/PopoverContent.tsx","../src/internal/components/Popover/PopoverTrigger.tsx","../src/internal/components/Popover/Popover.tsx"],"sourcesContent":["import { createContext, CSSProperties, RefObject, HTMLProps } from \"react\";\nimport { FloatingContext, MiddlewareData, Placement } from \"@floating-ui/react\";\nimport type { PopoverRole } from \"../Popover\";\n\nexport type PopoverContextProps = {\n /** Context object from useFloating; required by FloatingFocusManager and interaction hooks. */\n floatingContext: FloatingContext;\n /** Callback refs from useFloating; setReference for the trigger, setFloating for the content. */\n refs: {\n setReference: (node: Element | null) => void;\n setFloating: (node: HTMLElement | null) => void;\n };\n /** Inline positioning styles from useFloating; applied to the content element. */\n floatingStyles: CSSProperties;\n /** Middleware output from useFloating; used for arrow positioning via middlewareData.arrow. */\n middlewareData: MiddlewareData;\n /** Merged prop getter for the trigger; spreads ARIA attributes and event handlers. */\n getReferenceProps: (\n userProps?: HTMLProps<Element>,\n ) => Record<string, unknown>;\n /** Merged prop getter for the content; spreads ARIA attributes and event handlers. */\n getFloatingProps: (\n userProps?: HTMLProps<HTMLElement>,\n ) => Record<string, unknown>;\n /** Auto-generated id for the trigger element; used as the default aria-labelledby on content. */\n triggerId: string;\n /** Current open/closed state. */\n openState: boolean;\n /** Opens the popover. */\n openPopover: () => void;\n /** Closes the popover. Fires onClose unless opened via hover. */\n closePopover: () => void;\n /** Whether the open state is externally controlled. */\n controlled: boolean;\n /** Resolved placement after flip/shift middleware; may differ from the placement prop. */\n actualPlacement: Placement;\n /** Ref attached to the arrow span element inside PopoverContent. */\n arrowRef: RefObject<HTMLSpanElement>;\n /** Whether the popover traps focus (modal) or closes on Tab-out (non-modal). Only applies when role is \"dialog\". */\n modal?: boolean;\n /** Whether the popover opens on hover/focus instead of click. Only applies when role is \"dialog\". */\n openOnHover: boolean;\n /** Whether to remove default padding from the content area. */\n noPadding?: boolean;\n /** Whether to show the arrow/caret indicator. */\n enableCaret?: boolean;\n /** The ARIA role of the popup. Drives FloatingFocusManager and ARIA attribute behavior. */\n role: PopoverRole;\n};\n\nexport const PopoverContext = createContext<PopoverContextProps | null>(null);\n","import { useContext } from \"react\";\nimport { PopoverContext } from \"./PopoverContext\";\n\n/**\n * Returns the PopoverContext for use within Popover compound components.\n * @returns The current PopoverContextProps value.\n * @throws Error if called outside a Popover component.\n */\nexport function usePopoverContext() {\n const context = useContext(PopoverContext);\n if (!context) {\n throw new Error(\n \"Popover compound components must be used within a <Popover> component.\",\n );\n }\n return context;\n}\n","import { forwardRef, useCallback, type MouseEvent } from \"react\";\nimport { Button, ButtonProps } from \"../../../components/Button\";\nimport { usePopoverContext } from \"./internal/usePopoverContext\";\nimport { childrenToString } from \"../../../internal/functions\";\nimport { DataTrackingId } from \"../../../types\";\nimport { useTrackingId } from \"../../../hooks\";\n\n/**\n * Props for the PopoverClose component.\n * @extends ButtonProps\n */\nexport type PopoverCloseProps = ButtonProps & DataTrackingId;\n\n/**\n * PopoverClose component for closing the popover.\n *\n * Features:\n * - Supports all Button component props and styling\n * - Closes the popover on click via closePopover\n * - Automatic tracking ID generation for analytics\n *\n * @example\n * <Popover.Close>Close</Popover.Close>\n *\n * @example\n * <Popover.Close appearance=\"secondary\" size=\"small\">\n * Cancel\n * </Popover.Close>\n */\nexport const PopoverClose = forwardRef<HTMLButtonElement, PopoverCloseProps>(\n function PopoverClose(props, ref) {\n const { onClick, ...rest } = props;\n const { closePopover } = usePopoverContext();\n\n const trackingId = useTrackingId({\n name: \"PopoverClose\",\n data: { children: childrenToString(props.children) },\n hasOverride: !!props[\"data-tracking-id\"],\n });\n\n const handleClick = useCallback(\n (event: MouseEvent<HTMLButtonElement>) => {\n closePopover();\n onClick?.(event);\n },\n [closePopover, onClick],\n );\n\n return (\n <Button\n ref={ref}\n data-tracking-id={trackingId}\n data-anv=\"popover-close\"\n {...rest}\n onClick={handleClick}\n />\n );\n },\n);\n\nPopoverClose.displayName = \"PopoverClose\";\n","import { forwardRef, type HTMLProps } from \"react\";\nimport { Button, ButtonProps } from \"../../../components/Button\";\nimport { useMergeRefs, useTrackingId } from \"../../../hooks\";\nimport { usePopoverContext } from \"./internal/usePopoverContext\";\nimport { childrenToString } from \"../../../internal/functions\";\nimport { DataTrackingId } from \"../../../types\";\n\n/**\n * Props for the PopoverButton component.\n * @extends ButtonProps\n */\nexport type PopoverButtonProps = ButtonProps & DataTrackingId;\n\n/**\n * PopoverButton component for creating button-style triggers.\n *\n * Features:\n * - Button styling and behavior with all Button props\n * - ARIA attributes and event handlers injected via getReferenceProps\n * - Automatic tracking ID generation for analytics\n *\n * @example\n * <Popover.Button>Click to open</Popover.Button>\n *\n * @example\n * <Popover.Button appearance=\"primary\" size=\"large\" icon={InfoIcon}>\n * Information\n * </Popover.Button>\n */\nexport const PopoverButton = forwardRef<HTMLButtonElement, PopoverButtonProps>(\n function PopoverButton(props, ref) {\n const { children, ...rest } = props;\n const { refs, getReferenceProps, openState, triggerId } =\n usePopoverContext();\n\n const trackingId = useTrackingId({\n name: \"PopoverButton\",\n data: {\n children: childrenToString(props.children),\n appearance: props.appearance,\n icon: props.icon,\n size: props.size,\n type: props.type,\n },\n hasOverride: !!props[\"data-tracking-id\"],\n });\n\n const buttonRef = useMergeRefs([refs.setReference, ref]);\n\n return (\n <Button\n id={triggerId}\n ref={buttonRef}\n data-anv=\"popover-button\"\n data-tracking-id={trackingId}\n data-state={openState ? \"open\" : \"closed\"}\n {...(getReferenceProps(rest as HTMLProps<Element>) as ButtonProps)}\n >\n {children}\n </Button>\n );\n },\n);\n\nPopoverButton.displayName = \"PopoverButton\";\n","import {\n ComponentPropsWithoutRef,\n CSSProperties,\n forwardRef,\n HTMLAttributes,\n RefObject,\n useEffect,\n useLayoutEffect,\n useRef,\n} from \"react\";\nimport { FloatingFocusManager } from \"@floating-ui/react\";\nimport styles from \"./Popover.module.scss\";\nimport cx from \"classnames\";\nimport { useMergeRefs } from \"../../../hooks\";\nimport { usePopoverContext } from \"./internal/usePopoverContext\";\n\n/**\n * Props for the PopoverContent component.\n * @extends ComponentPropsWithoutRef<\"div\">\n */\nexport type PopoverContentProps = Omit<\n ComponentPropsWithoutRef<\"div\">,\n \"popover\"\n> & {\n /** Reference to the scrollable content area. */\n scrollerRef?: RefObject<HTMLDivElement>;\n /** Whether to unmount children from the DOM while the popover is closed. Useful for performance when the content is expensive to render. */\n hideWhileClosed?: boolean;\n};\n\n/**\n * PopoverContent component for the main popover content area.\n *\n * Features:\n * - HTML Popover API top-layer rendering (popover=\"manual\")\n * - Floating UI positioning via refs.setFloating and floatingStyles\n * - FloatingFocusManager for focus trapping (modal) or Tab-out closing (non-modal)\n * - Arrow/caret indicator with position computed from middlewareData.arrow\n * - Scroll position reset when the popover opens\n * - Optional scrollerRef for external scroll access\n *\n * @example\n * <Popover.Content>\n * <p>Popover content</p>\n * <Popover.Close>Close</Popover.Close>\n * </Popover.Content>\n */\nexport const PopoverContent = forwardRef<HTMLDivElement, PopoverContentProps>(\n function PopoverContent(props, ref) {\n const {\n children,\n className,\n style,\n onScroll,\n onScrollCapture,\n scrollerRef,\n hideWhileClosed = false,\n ...rest\n } = props;\n\n const {\n floatingContext,\n refs,\n floatingStyles,\n middlewareData,\n getFloatingProps,\n openState,\n actualPlacement,\n arrowRef,\n modal,\n openOnHover,\n noPadding,\n enableCaret,\n triggerId,\n role,\n } = usePopoverContext();\n\n const scrollContainerRef = useRef<HTMLDivElement>(null);\n const mergedFloatingRef = useMergeRefs([refs.setFloating, ref]);\n const mergedScrollerRef = useMergeRefs([scrollContainerRef, scrollerRef]);\n\n // FloatingFocusManager's built-in returnFocus never fires since the element\n // stays mounted (popover=\"manual\"). Manually return focus to the trigger on\n // close; skip on initial render and for hover popovers (would re-trigger useFocus).\n // Applies to all roles — non-dialog keyboard navigation (e.g. Listbox arrow keys)\n // can move DOM focus into the content, so we must always return focus on close.\n const hasBeenOpenRef = useRef(false);\n useEffect(() => {\n if (openState) {\n hasBeenOpenRef.current = true;\n } else if (hasBeenOpenRef.current && !openOnHover) {\n // Only return focus to the reference if focus hasn't already moved to another\n // interactive element (e.g. Tab-out on combobox popovers like DateField).\n // If focus is still inside the floating content or on document.body (no meaningful\n // target), return focus to the reference as normal.\n const activeEl = document.activeElement;\n const floating = floatingContext.elements.floating;\n // For dialog role: return focus if stranded (null, body, or inside floating).\n // For non-dialog (combobox) roles: only return focus if it's still inside the\n // floating — hidePopover() already restores focus on close, so the body check\n // is not needed and would incorrectly return focus on Tab-out.\n const shouldReturnFocus =\n role === \"dialog\"\n ? !activeEl ||\n activeEl === document.body ||\n floating?.contains(activeEl)\n : floating?.contains(activeEl);\n if (shouldReturnFocus) {\n (floatingContext.elements.reference as HTMLElement | null)?.focus();\n }\n }\n }, [\n openState,\n openOnHover,\n floatingContext.elements.reference,\n floatingContext.elements.floating,\n role,\n ]);\n\n // Reset scroll position when popover opens.\n useLayoutEffect(() => {\n if (openState && scrollContainerRef.current) {\n scrollContainerRef.current.scrollTop = 0;\n scrollContainerRef.current.scrollLeft = 0;\n }\n }, [openState]);\n\n // Arrow x/y offset along the floating edge; static side is opposite the placement.\n const arrowX = middlewareData.arrow?.x ?? null;\n const arrowY = middlewareData.arrow?.y ?? null;\n const baseSide = actualPlacement.split(\"-\")[0] as\n | \"top\"\n | \"bottom\"\n | \"left\"\n | \"right\";\n const staticSide = (\n { top: \"bottom\", right: \"left\", bottom: \"top\", left: \"right\" } as const\n )[baseSide];\n\n // SVG path is a downward triangle by default; rotate to match placement direction.\n const arrowDeg =\n staticSide === \"top\"\n ? 180\n : staticSide === \"bottom\"\n ? 0\n : staticSide === \"left\"\n ? 90\n : 270;\n\n // Pull the arrow past the content edge by its width minus 2px border overlap.\n const arrowWidth = arrowRef.current?.offsetWidth ?? 14;\n const arrowStyle: CSSProperties = {};\n if (arrowX != null) arrowStyle.left = `${arrowX}px`;\n if (arrowY != null) arrowStyle.top = `${arrowY}px`;\n (arrowStyle as Record<string, string>)[staticSide] = `${-arrowWidth + 2}px`;\n arrowStyle.transform = `rotate(${arrowDeg}deg)`;\n\n // For dialog role: default aria-labelledby → trigger for unique accessible names.\n // Use the reference element's actual id (which may differ from triggerId if an external\n // id was passed to Popover.Button — e.g. ToolbarOverflowMenu passes its own menuTriggerId).\n // Fall back to triggerId if the reference element is not yet mounted.\n // For non-dialog roles: omitted — the inner component (e.g. Listbox) owns its own label.\n const referenceId =\n (floatingContext.elements.reference as HTMLElement | null)?.id ??\n triggerId;\n const defaultLabelProps =\n role === \"dialog\" &&\n !(\"aria-label\" in rest) &&\n !(\"aria-labelledby\" in rest)\n ? { \"aria-labelledby\": referenceId }\n : {};\n\n // Remove hover content from the tab order — hover popovers contain read-only text.\n const tabIndexOverride = openOnHover ? { tabIndex: -1 } : {};\n\n // For non-dialog roles, strip the role attribute from getFloatingProps — useRole sets\n // role=\"listbox\" (etc.) on the content div, but the inner component owns that role.\n // The content div is a neutral positioning wrapper in the combobox pattern.\n const rawFloatingProps = getFloatingProps({\n ...defaultLabelProps,\n ...tabIndexOverride,\n ...rest,\n }) as HTMLAttributes<HTMLDivElement>;\n const { role: _suppressedRole, ...floatingPropsWithoutRole } =\n rawFloatingProps as Record<string, unknown>;\n const floatingProps =\n role === \"dialog\"\n ? rawFloatingProps\n : (floatingPropsWithoutRole as HTMLAttributes<HTMLDivElement>);\n\n const contentDiv = (\n <div\n popover=\"manual\"\n data-anv=\"popover-content\"\n className={cx(className, styles[\"content\"], {\n [styles[\"no-padding\"]]: noPadding,\n })}\n ref={mergedFloatingRef}\n style={{ ...floatingStyles, ...style }}\n {...floatingProps}\n >\n <div\n className={styles.scroller}\n role=\"presentation\"\n tabIndex={-1}\n ref={mergedScrollerRef}\n onScroll={onScroll}\n onScrollCapture={onScrollCapture}\n >\n {hideWhileClosed ? (openState ? children : null) : children}\n </div>\n {enableCaret && (\n <span className={styles[\"arrow\"]} ref={arrowRef} style={arrowStyle}>\n <svg aria-hidden=\"true\" width=\"14\" height=\"14\" viewBox=\"0 0 14 14\">\n <path stroke=\"none\" d=\"M0,0 H14 L7,7 Q7,7 7,7 Z\" />\n </svg>\n </span>\n )}\n </div>\n );\n\n if (role !== \"dialog\") {\n return contentDiv;\n }\n\n return (\n <FloatingFocusManager\n context={floatingContext}\n modal={modal ?? false}\n disabled={!openState || openOnHover}\n >\n {contentDiv}\n </FloatingFocusManager>\n );\n },\n);\n\nPopoverContent.displayName = \"PopoverContent\";\n","import {\n type AriaAttributes,\n ReactElement,\n MouseEvent,\n KeyboardEvent,\n FocusEvent,\n} from \"react\";\nimport { usePopoverContext } from \"./internal/usePopoverContext\";\n\n/** Props passed to the PopoverTrigger render function. */\ntype PopoverTriggerChildrenProps = {\n ref: (node: Element | null) => void;\n id: string;\n \"aria-controls\"?: string;\n \"aria-haspopup\"?: AriaAttributes[\"aria-haspopup\"];\n \"aria-expanded\"?: boolean;\n \"data-state\": \"open\" | \"closed\";\n onClick?: (e: MouseEvent) => void;\n onKeyDown?: (e: KeyboardEvent) => void;\n onMouseEnter?: (e: MouseEvent) => void;\n onMouseLeave?: (e: MouseEvent) => void;\n onFocus?: (e: FocusEvent) => void;\n onBlur?: (e: FocusEvent) => void;\n};\n\n/**\n * Props for the PopoverTrigger component.\n */\nexport type PopoverTriggerProps = {\n /**\n * Render function that receives trigger props and returns a React element.\n */\n children: (props: PopoverTriggerChildrenProps) => ReactElement;\n};\n\n/**\n * PopoverTrigger component for creating custom trigger elements.\n *\n * Features:\n * - Render prop pattern for full control over the trigger element\n * - ARIA attributes and event handlers injected via getReferenceProps\n *\n * @example\n * <Popover.Trigger>\n * {(props) => (\n * <Button {...props}>\n * Click to open popover\n * </Button>\n * )}\n * </Popover.Trigger>\n */\nexport function PopoverTrigger(props: PopoverTriggerProps) {\n const { children } = props;\n const { refs, getReferenceProps, openState, triggerId } = usePopoverContext();\n\n return children({\n ...(getReferenceProps({\n ref: refs.setReference,\n }) as PopoverTriggerChildrenProps),\n id: triggerId,\n \"data-state\": openState ? \"open\" : \"closed\",\n });\n}\n\nPopoverTrigger.displayName = \"PopoverTrigger\";\n","import {\n forwardRef,\n ReactNode,\n useCallback,\n useContext,\n useEffect,\n useId,\n useImperativeHandle,\n useMemo,\n useRef,\n} from \"react\";\nimport {\n arrow,\n autoPlacement,\n autoUpdate,\n flip,\n limitShift,\n offset,\n Placement,\n safePolygon,\n shift,\n size,\n useClick,\n useDismiss,\n useFloating,\n useFocus,\n useHover,\n useInteractions,\n useRole,\n} from \"@floating-ui/react\";\nimport { PopoverClose } from \"./PopoverClose\";\nimport { PopoverButton } from \"./PopoverButton\";\nimport { PopoverContent } from \"./PopoverContent\";\nimport { PopoverTrigger } from \"./PopoverTrigger\";\nimport { PopoverContext, PopoverContextProps } from \"./internal/PopoverContext\";\nimport { safeHidePopover, safeShowPopover } from \"../../../internal/functions\";\nimport { DisableCloseOnEscapeOrClickProps } from \"../../../types\";\nimport {\n OpenCloseTransitionStateEffects,\n useOptionallyControlledState,\n usePopoverTransitionStates,\n} from \"../../../internal/hooks\";\nimport { DialogContext } from \"../../../components/Dialog/internal/DialogContext\";\n\n/** ARIA role of the beta Popover popup. */\nexport type PopoverRole = \"dialog\" | \"listbox\" | \"tree\" | \"grid\";\n\n/**\n * Sub-options for `placement=\"auto\"`. Constrains which sides `autoPlacement()`\n * may choose from. Ignored when a specific placement is set.\n */\nexport type PopoverAutoPlacementConfig = {\n /** Limits which sides autoPlacement() considers. Defaults to all sides. */\n allowedPlacements?: Placement[];\n};\n\n/**\n * Sub-options for a specific placement (e.g. `\"bottom\"`). Overrides the default\n * opposite-side fallback sequence used by `flip()`. Ignored when `placement=\"auto\"`.\n */\nexport type PopoverFlipPlacementConfig = {\n /** Explicit fallback sequence for flip(). Overrides the default opposite-side fallback. */\n fallbackPlacements?: Placement[];\n};\n\ntype PopoverPropsBase = {\n /** Content to render inside the popover tree. */\n children?: ReactNode;\n /** Controlled open state. */\n open?: boolean;\n /** Initial open state for uncontrolled mode. @default false */\n defaultOpen?: boolean;\n /** Fires when the popover closes for any non-hover reason. */\n onClose?: () => void;\n /** Fires when the user clicks outside the popover. Not fired when disableCloseOnClickOutside is set. */\n onClickOutside?: (e: globalThis.MouseEvent) => void;\n /** Whether to show the arrow/caret indicator. @default false */\n enableCaret?: boolean;\n /** Whether to remove default padding from the content area. @default false */\n noPadding?: boolean;\n /** Whether the popover width should match the trigger element width. @default false */\n matchReferenceWidth?: boolean;\n /** Whether the popover should have a fixed width of 40dvw. @default false */\n fixedWidth?: boolean;\n /** Fills available viewport height between the trigger and viewport edge. @default false */\n fillAvailableHeight?: boolean;\n /** Maximum height of the popover content. */\n maxHeight?: number | string;\n /** Constrains the popover to available viewport height. @default false */\n fitScreen?: boolean;\n /** Minimum height of the popover content. @default \"2.875rem\" */\n minHeight?: number | string;\n} & DisableCloseOnEscapeOrClickProps &\n OpenCloseTransitionStateEffects;\n\n/**\n * Role-specific props for `role=\"dialog\"` (default).\n *\n * Only dialog popovers use `FloatingFocusManager` — focus moves into the content\n * on open. The `modal`, `openOnHover`, and `delay` props are only meaningful\n * in this context.\n */\ntype DialogRoleProps = {\n /**\n * The ARIA role of the popup. Drives `aria-haspopup` on the trigger and\n * `role` on the content via Floating UI's `useRole`.\n *\n * @default \"dialog\"\n */\n role?: \"dialog\";\n /** Traps focus until closed (modal) or closes on Tab-out (non-modal). @default false */\n modal?: boolean;\n /**\n * Whether the popover opens on hover instead of click. @default false\n *\n * @remarks\n * Hover-triggered popovers should contain only readable text — no interactive\n * elements (buttons, links, inputs). The content is intentionally removed from\n * the tab order so Tab moves cleanly between page elements. Interactive content\n * inside a hover-triggered popover is unreachable by keyboard users. Use a\n * click-triggered popover (default) when the content includes interactive elements.\n */\n openOnHover?: boolean;\n /** Delay in ms before opening on hover. @default 100 */\n delay?: number;\n};\n\n/**\n * Role-specific props for combobox popup roles (`listbox`, `tree`, `grid`).\n *\n * These roles follow the ARIA combobox pattern — focus stays on the trigger and\n * the inner component (e.g. `Listbox`) owns the role and keyboard navigation.\n * `FloatingFocusManager` is disabled. `modal`, `openOnHover`, and `delay` are\n * not applicable and are excluded at the type level.\n *\n * @remarks\n * Floating UI adds `role=\"combobox\"` to the trigger element for these roles.\n * The `combobox` ARIA role only accepts names from `aria-label` or\n * `aria-labelledby` — visible text content is not used. Always provide an\n * explicit `aria-label` on `Popover.Button` or your custom trigger.\n *\n * @example\n * // ✅ Correct — explicit aria-label required for non-dialog roles\n * <Popover role=\"listbox\">\n * <Popover.Button aria-label=\"Select an option\">Open</Popover.Button>\n * <Popover.Content>\n * <Listbox>...</Listbox>\n * </Popover.Content>\n * </Popover>\n */\ntype NonDialogRoleProps = {\n /** The ARIA role of the popup. */\n role: Exclude<PopoverRole, \"dialog\">;\n modal?: never;\n openOnHover?: never;\n delay?: never;\n};\n\ntype WithAutoPlacement = {\n /**\n * Uses `autoPlacement()` — picks the side with the most space. Pass\n * a specific placement (e.g. `\"bottom\"`) to express a preferred side\n * with `flip()` fallback instead.\n */\n placement?: \"auto\";\n /** Sub-options for `autoPlacement()`. */\n placementConfig?: PopoverAutoPlacementConfig;\n};\n\ntype WithSpecificPlacement = {\n /**\n * Preferred placement relative to the trigger. Floating UI's `flip()`\n * middleware will adapt to the opposite side if there is not enough space.\n * Pass `\"auto\"` to let Floating UI pick the best side automatically.\n *\n * @default \"bottom\"\n */\n placement: Placement;\n /** Sub-options for `flip()`. */\n placementConfig?: PopoverFlipPlacementConfig;\n};\n\n/**\n * Props for the beta Popover component.\n *\n * Two independent discriminated unions are combined:\n * - **Role**: `role=\"dialog\"` (default) enables `FloatingFocusManager` and accepts `modal`,\n * `openOnHover`, and `delay`. Non-dialog roles (`listbox`, `tree`, `grid`) disable\n * focus management — the inner component owns focus and keyboard navigation.\n * - **Placement**: `placement=\"auto\"` uses `autoPlacement()` and accepts\n * `placementConfig.allowedPlacements`. Specific placements use `flip()` and accept\n * `placementConfig.fallbackPlacements`.\n *\n * @extends DisableCloseOnEscapeOrClickProps\n * @extends OpenCloseTransitionStateEffects\n */\nexport type PopoverProps =\n | (PopoverPropsBase & DialogRoleProps & WithAutoPlacement)\n | (PopoverPropsBase & DialogRoleProps & WithSpecificPlacement)\n | (PopoverPropsBase & NonDialogRoleProps & WithAutoPlacement)\n | (PopoverPropsBase & NonDialogRoleProps & WithSpecificPlacement);\n\nconst PopoverElement = forwardRef((props: PopoverProps, ref) => {\n const {\n children,\n role: roleProp = \"dialog\",\n modal,\n open,\n defaultOpen = false,\n onClose,\n onClickOutside,\n openOnHover = false,\n delay = 100,\n enableCaret,\n noPadding,\n matchReferenceWidth,\n fixedWidth,\n fillAvailableHeight,\n maxHeight,\n fitScreen,\n minHeight = \"2.875rem\",\n disableCloseOnClickOutside,\n disableCloseOnEscape,\n onOpenAnimationStart,\n onOpenAnimationComplete,\n onCloseAnimationStart,\n onCloseAnimationComplete,\n } = props;\n\n const isAuto = props.placement === \"auto\";\n const floatingPlacement: Placement = isAuto\n ? \"bottom\"\n : ((props.placement ?? \"bottom\") as Placement);\n const allowedPlacements = isAuto\n ? (props.placementConfig as PopoverAutoPlacementConfig | undefined)\n ?.allowedPlacements\n : undefined;\n const fallbackPlacements = !isAuto\n ? (props.placementConfig as PopoverFlipPlacementConfig | undefined)\n ?.fallbackPlacements\n : undefined;\n\n const uid = useId();\n const cleanUid = uid.replace(/:/g, \"\");\n const triggerId = `popover-trigger-${cleanUid}`;\n const isControlled = typeof open !== \"undefined\";\n const arrowRef = useRef<HTMLSpanElement>(null);\n // Tracks pointer events to distinguish click-outside focus-loss from Tab-out,\n // so disableCloseOnClickOutside blocks the former without blocking the latter.\n const isPointerEventRef = useRef(false);\n\n const processMinHeight =\n typeof minHeight === \"string\" ? minHeight : `${minHeight}px`;\n\n const dialogContext = useContext(DialogContext);\n\n const [openState, setOpenState] = useOptionallyControlledState<boolean>({\n controlledValue: open,\n defaultValue: defaultOpen,\n });\n\n // Stable ref so closePopover doesn't need openState as a dep.\n const openStateRef = useRef(openState);\n openStateRef.current = openState;\n\n // Track pointer events so handleOpenChange can block click-outside focus-loss\n // when disableCloseOnClickOutside is set. Only needed for dialog role —\n // FloatingFocusManager (which causes the false close) is disabled for other roles.\n useEffect(() => {\n if (!disableCloseOnClickOutside) return;\n if (roleProp !== \"dialog\") return;\n const setTrue = () => {\n isPointerEventRef.current = true;\n };\n const setFalse = () => {\n setTimeout(() => {\n isPointerEventRef.current = false;\n }, 0);\n };\n document.addEventListener(\"pointerdown\", setTrue);\n document.addEventListener(\"pointerup\", setFalse);\n return () => {\n document.removeEventListener(\"pointerdown\", setTrue);\n document.removeEventListener(\"pointerup\", setFalse);\n };\n }, [disableCloseOnClickOutside, roleProp]);\n\n // Fires onClose for non-hover closes; blocks click-outside when disableCloseOnClickOutside is set.\n const handleOpenChange = useCallback(\n (nextOpen: boolean) => {\n // FloatingFocusManager fires onOpenChange(false) on both Tab-out and click-outside; block the latter.\n if (!nextOpen && disableCloseOnClickOutside && isPointerEventRef.current)\n return;\n if (!nextOpen && !openOnHover) onClose?.();\n setOpenState(nextOpen);\n },\n [openOnHover, onClose, setOpenState, disableCloseOnClickOutside],\n );\n\n const openPopover = useCallback(() => {\n setOpenState(true);\n }, [setOpenState]);\n\n const closePopover = useCallback(() => {\n if (!openStateRef.current) return;\n if (!openOnHover) onClose?.();\n setOpenState(false);\n }, [openOnHover, onClose, setOpenState]);\n\n const {\n refs,\n floatingStyles,\n context: floatingContext,\n placement: actualPlacement,\n middlewareData,\n } = useFloating({\n open: openState,\n onOpenChange: handleOpenChange,\n placement: floatingPlacement,\n strategy: \"absolute\",\n middleware: [\n offset(8),\n size({\n padding: 5,\n apply({ rects, availableHeight, elements }) {\n // Applied as inline styles — size middleware runs at positioning time with live measurements.\n Object.assign(elements.floating.style, {\n ...(matchReferenceWidth\n ? { width: `${rects.reference.width}px` }\n : fixedWidth\n ? { width: \"40dvw\" }\n : {}),\n ...(fillAvailableHeight\n ? {\n height: `${availableHeight - 20}px`,\n minHeight: processMinHeight,\n }\n : {}),\n ...(maxHeight\n ? {\n minHeight: processMinHeight,\n height: fitScreen\n ? typeof maxHeight === \"string\"\n ? maxHeight\n : `${maxHeight}px`\n : undefined,\n maxHeight: fitScreen\n ? `${availableHeight - 20}px`\n : typeof maxHeight === \"string\"\n ? maxHeight\n : `${maxHeight}px`,\n }\n : {}),\n ...(fitScreen && !maxHeight\n ? {\n minHeight: processMinHeight,\n maxHeight: `${availableHeight - 20}px`,\n }\n : {}),\n });\n },\n }),\n isAuto\n ? autoPlacement({ allowedPlacements, padding: 5 })\n : flip({\n crossAxis: false,\n fallbackAxisSideDirection: \"none\",\n fallbackPlacements,\n padding: 5,\n }),\n shift({\n padding: 5,\n crossAxis: false,\n limiter: limitShift(),\n }),\n arrow({ element: arrowRef, padding: 5 }),\n ],\n whileElementsMounted: autoUpdate,\n });\n\n const role = useRole(floatingContext, { role: roleProp });\n\n const hover = useHover(floatingContext, {\n enabled: openOnHover,\n delay: { open: delay, close: 100 },\n handleClose: safePolygon(),\n });\n\n // WCAG 1.4.13 — keyboard focus is equivalent to hover.\n const focus = useFocus(floatingContext, { enabled: openOnHover });\n\n const click = useClick(floatingContext, {\n enabled: !openOnHover,\n });\n\n const dismiss = useDismiss(floatingContext, {\n escapeKey: !disableCloseOnEscape,\n outsidePress: !disableCloseOnClickOutside\n ? (event) => {\n onClickOutside?.(event as globalThis.MouseEvent);\n return true;\n }\n : false,\n });\n\n const { getReferenceProps, getFloatingProps } = useInteractions([\n role,\n hover,\n focus,\n click,\n dismiss,\n ]);\n\n // Sync Popover API show/hide with open state; notify DialogContext when nested.\n useEffect(() => {\n const floatingEl = refs.floating.current;\n if (!floatingEl) return;\n if (openState) {\n if (dialogContext) {\n if (dialogContext.ref?.current?.open) {\n safeShowPopover(floatingEl);\n dialogContext.setHasOpenPopover?.(true);\n }\n return;\n }\n safeShowPopover(floatingEl);\n } else {\n safeHidePopover(floatingEl);\n dialogContext?.setHasOpenPopover?.(false);\n }\n }, [openState, refs.floating, dialogContext]);\n\n usePopoverTransitionStates(refs.floating.current ?? undefined, openState, {\n onOpenAnimationStart,\n onOpenAnimationComplete,\n onCloseAnimationStart,\n onCloseAnimationComplete,\n });\n\n useImperativeHandle(ref, () => ({ openPopover, closePopover }), [\n openPopover,\n closePopover,\n ]);\n\n const value = useMemo<PopoverContextProps>(\n () => ({\n floatingContext,\n refs: {\n setReference: refs.setReference,\n setFloating: refs.setFloating,\n },\n floatingStyles,\n middlewareData,\n getReferenceProps,\n getFloatingProps,\n triggerId,\n openState,\n openPopover,\n closePopover,\n controlled: isControlled,\n actualPlacement,\n arrowRef,\n modal,\n openOnHover,\n noPadding,\n enableCaret,\n role: roleProp,\n }),\n [\n floatingContext,\n refs.setReference,\n refs.setFloating,\n floatingStyles,\n middlewareData,\n getReferenceProps,\n getFloatingProps,\n triggerId,\n openState,\n openPopover,\n closePopover, // stable — does not depend on openState (uses openStateRef)\n isControlled,\n actualPlacement,\n arrowRef,\n modal,\n openOnHover,\n noPadding,\n enableCaret,\n roleProp,\n ],\n );\n\n return (\n <PopoverContext.Provider value={value}>{children}</PopoverContext.Provider>\n );\n});\n\nPopoverElement.displayName = \"Popover\";\n\n/**\n * Beta Popover component for displaying floating content relative to a trigger element.\n *\n * Built on three layers:\n * - HTML Popover API (`popover=\"manual\"`) for top-layer rendering without z-index management\n * - Floating UI (`@floating-ui/react`) for JavaScript-based positioning\n * - Floating UI interaction hooks for correct ARIA attributes and keyboard behavior\n *\n * Features:\n * - Correct ARIA linkage: `aria-controls`, `aria-haspopup` with role string, `aria-expanded`\n * - `FloatingFocusManager` for both modal (focus trapped) and non-modal (Tab-out closes)\n * - `safePolygon()` hover zone replaces CSS `::before` hover bridge\n * - `role` prop drives both `aria-haspopup` on trigger and `role` on content\n * - Controlled and uncontrolled modes via `open` / `defaultOpen`\n * - Imperative handle exposing `openPopover` and `closePopover`\n * - Animation lifecycle callbacks via `onOpenAnimationStart` etc.\n *\n * @example\n * <Popover>\n * <Popover.Button>Open</Popover.Button>\n * <Popover.Content>\n * <p>Popover content</p>\n * <Popover.Close>Close</Popover.Close>\n * </Popover.Content>\n * </Popover>\n *\n * @example\n * <Popover modal>\n * <Popover.Trigger>\n * {(props) => <Button {...props}>Open form</Button>}\n * </Popover.Trigger>\n * <Popover.Content>\n * <TextField label=\"Name\" />\n * <Popover.Close>Done</Popover.Close>\n * </Popover.Content>\n * </Popover>\n *\n * @example\n * <Popover openOnHover role=\"dialog\">\n * <Popover.Button>Hover me</Popover.Button>\n * <Popover.Content>Hover content</Popover.Content>\n * </Popover>\n */\nexport const Popover = Object.assign(PopoverElement, {\n /**\n * PopoverTrigger component for creating custom trigger elements.\n *\n * Features:\n * - Render prop pattern for full control over the trigger element\n * - ARIA attributes and event handlers injected via getReferenceProps\n *\n * @example\n * <Popover.Trigger>\n * {(props) => (\n * <Button {...props}>\n * Click to open popover\n * </Button>\n * )}\n * </Popover.Trigger>\n */\n Trigger: PopoverTrigger,\n /**\n * PopoverContent component for the main popover content area.\n *\n * Features:\n * - HTML Popover API top-layer rendering (popover=\"manual\")\n * - Floating UI positioning via refs.setFloating and floatingStyles\n * - FloatingFocusManager for focus trapping (modal) or Tab-out closing (non-modal)\n * - Arrow/caret indicator with position computed from middlewareData.arrow\n * - Scroll position reset when the popover opens\n * - Optional scrollerRef for external scroll access\n *\n * @example\n * <Popover.Content>\n * <p>Popover content</p>\n * <Popover.Close>Close</Popover.Close>\n * </Popover.Content>\n */\n Content: PopoverContent,\n /**\n * PopoverClose component for closing the popover.\n *\n * Features:\n * - Supports all Button component props and styling\n * - Closes the popover on click via closePopover\n * - Automatic tracking ID generation for analytics\n *\n * @example\n * <Popover.Close>Close</Popover.Close>\n *\n * @example\n * <Popover.Close appearance=\"secondary\" size=\"small\">\n * Cancel\n * </Popover.Close>\n */\n Close: PopoverClose,\n /**\n * PopoverButton component for creating button-style triggers.\n *\n * Features:\n * - Button styling and behavior with all Button props\n * - ARIA attributes and event handlers injected via getReferenceProps\n * - Automatic tracking ID generation for analytics\n *\n * @example\n * <Popover.Button>Click to open</Popover.Button>\n *\n * @example\n * <Popover.Button appearance=\"primary\" size=\"large\" icon={InfoIcon}>\n * Information\n * </Popover.Button>\n */\n Button: PopoverButton,\n});\n"],"names":["PopoverClose","PopoverButton","PopoverContent","arrow"],"mappings":";;;;;;;;;;;;;;AAkDO,MAAM,cAAA,GAAiB,cAA0C,IAAI,CAAA;;AC1CrE,SAAS,iBAAA,GAAoB;AAClC,EAAA,MAAM,OAAA,GAAU,WAAW,cAAc,CAAA;AACzC,EAAA,IAAI,CAAC,OAAA,EAAS;AACZ,IAAA,MAAM,IAAI,KAAA;AAAA,MACR;AAAA,KACF;AAAA,EACF;AACA,EAAA,OAAO,OAAA;AACT;;ACaO,MAAM,YAAA,GAAe,UAAA;AAAA,EAC1B,SAASA,aAAAA,CAAa,KAAA,EAAO,GAAA,EAAK;AAChC,IAAA,MAAM,EAAE,OAAA,EAAS,GAAG,IAAA,EAAK,GAAI,KAAA;AAC7B,IAAA,MAAM,EAAE,YAAA,EAAa,GAAI,iBAAA,EAAkB;AAE3C,IAAA,MAAM,aAAa,aAAA,CAAc;AAAA,MAC/B,IAAA,EAAM,cAAA;AAAA,MACN,MAAM,EAAE,QAAA,EAAU,gBAAA,CAAiB,KAAA,CAAM,QAAQ,CAAA,EAAE;AAAA,MACnD,WAAA,EAAa,CAAC,CAAC,KAAA,CAAM,kBAAkB;AAAA,KACxC,CAAA;AAED,IAAA,MAAM,WAAA,GAAc,WAAA;AAAA,MAClB,CAAC,KAAA,KAAyC;AACxC,QAAA,YAAA,EAAa;AACb,QAAA,OAAA,GAAU,KAAK,CAAA;AAAA,MACjB,CAAA;AAAA,MACA,CAAC,cAAc,OAAO;AAAA,KACxB;AAEA,IAAA,uBACE,GAAA;AAAA,MAAC,MAAA;AAAA,MAAA;AAAA,QACC,GAAA;AAAA,QACA,kBAAA,EAAkB,UAAA;AAAA,QAClB,UAAA,EAAS,eAAA;AAAA,QACR,GAAG,IAAA;AAAA,QACJ,OAAA,EAAS;AAAA;AAAA,KACX;AAAA,EAEJ;AACF,CAAA;AAEA,YAAA,CAAa,WAAA,GAAc,cAAA;;AC/BpB,MAAM,aAAA,GAAgB,UAAA;AAAA,EAC3B,SAASC,cAAAA,CAAc,KAAA,EAAO,GAAA,EAAK;AACjC,IAAA,MAAM,EAAE,QAAA,EAAU,GAAG,IAAA,EAAK,GAAI,KAAA;AAC9B,IAAA,MAAM,EAAE,IAAA,EAAM,iBAAA,EAAmB,SAAA,EAAW,SAAA,KAC1C,iBAAA,EAAkB;AAEpB,IAAA,MAAM,aAAa,aAAA,CAAc;AAAA,MAC/B,IAAA,EAAM,eAAA;AAAA,MACN,IAAA,EAAM;AAAA,QACJ,QAAA,EAAU,gBAAA,CAAiB,KAAA,CAAM,QAAQ,CAAA;AAAA,QACzC,YAAY,KAAA,CAAM,UAAA;AAAA,QAClB,MAAM,KAAA,CAAM,IAAA;AAAA,QACZ,MAAM,KAAA,CAAM,IAAA;AAAA,QACZ,MAAM,KAAA,CAAM;AAAA,OACd;AAAA,MACA,WAAA,EAAa,CAAC,CAAC,KAAA,CAAM,kBAAkB;AAAA,KACxC,CAAA;AAED,IAAA,MAAM,YAAY,YAAA,CAAa,CAAC,IAAA,CAAK,YAAA,EAAc,GAAG,CAAC,CAAA;AAEvD,IAAA,uBACE,GAAA;AAAA,MAAC,MAAA;AAAA,MAAA;AAAA,QACC,EAAA,EAAI,SAAA;AAAA,QACJ,GAAA,EAAK,SAAA;AAAA,QACL,UAAA,EAAS,gBAAA;AAAA,QACT,kBAAA,EAAkB,UAAA;AAAA,QAClB,YAAA,EAAY,YAAY,MAAA,GAAS,QAAA;AAAA,QAChC,GAAI,kBAAkB,IAA0B,CAAA;AAAA,QAEhD;AAAA;AAAA,KACH;AAAA,EAEJ;AACF,CAAA;AAEA,aAAA,CAAc,WAAA,GAAc,eAAA;;;;;;;;;;;;ACjBrB,MAAM,cAAA,GAAiB,UAAA;AAAA,EAC5B,SAASC,eAAAA,CAAe,KAAA,EAAO,GAAA,EAAK;AAClC,IAAA,MAAM;AAAA,MACJ,QAAA;AAAA,MACA,SAAA;AAAA,MACA,KAAA;AAAA,MACA,QAAA;AAAA,MACA,eAAA;AAAA,MACA,WAAA;AAAA,MACA,eAAA,GAAkB,KAAA;AAAA,MAClB,GAAG;AAAA,KACL,GAAI,KAAA;AAEJ,IAAA,MAAM;AAAA,MACJ,eAAA;AAAA,MACA,IAAA;AAAA,MACA,cAAA;AAAA,MACA,cAAA;AAAA,MACA,gBAAA;AAAA,MACA,SAAA;AAAA,MACA,eAAA;AAAA,MACA,QAAA;AAAA,MACA,KAAA;AAAA,MACA,WAAA;AAAA,MACA,SAAA;AAAA,MACA,WAAA;AAAA,MACA,SAAA;AAAA,MACA;AAAA,QACE,iBAAA,EAAkB;AAEtB,IAAA,MAAM,kBAAA,GAAqB,OAAuB,IAAI,CAAA;AACtD,IAAA,MAAM,oBAAoB,YAAA,CAAa,CAAC,IAAA,CAAK,WAAA,EAAa,GAAG,CAAC,CAAA;AAC9D,IAAA,MAAM,iBAAA,GAAoB,YAAA,CAAa,CAAC,kBAAA,EAAoB,WAAW,CAAC,CAAA;AAOxE,IAAA,MAAM,cAAA,GAAiB,OAAO,KAAK,CAAA;AACnC,IAAA,SAAA,CAAU,MAAM;AACd,MAAA,IAAI,SAAA,EAAW;AACb,QAAA,cAAA,CAAe,OAAA,GAAU,IAAA;AAAA,MAC3B,CAAA,MAAA,IAAW,cAAA,CAAe,OAAA,IAAW,CAAC,WAAA,EAAa;AAKjD,QAAA,MAAM,WAAW,QAAA,CAAS,aAAA;AAC1B,QAAA,MAAM,QAAA,GAAW,gBAAgB,QAAA,CAAS,QAAA;AAK1C,QAAA,MAAM,iBAAA,GACJ,IAAA,KAAS,QAAA,GACL,CAAC,YACD,QAAA,KAAa,QAAA,CAAS,IAAA,IACtB,QAAA,EAAU,QAAA,CAAS,QAAQ,CAAA,GAC3B,QAAA,EAAU,SAAS,QAAQ,CAAA;AACjC,QAAA,IAAI,iBAAA,EAAmB;AACrB,UAAC,eAAA,CAAgB,QAAA,CAAS,SAAA,EAAkC,KAAA,EAAM;AAAA,QACpE;AAAA,MACF;AAAA,IACF,CAAA,EAAG;AAAA,MACD,SAAA;AAAA,MACA,WAAA;AAAA,MACA,gBAAgB,QAAA,CAAS,SAAA;AAAA,MACzB,gBAAgB,QAAA,CAAS,QAAA;AAAA,MACzB;AAAA,KACD,CAAA;AAGD,IAAA,eAAA,CAAgB,MAAM;AACpB,MAAA,IAAI,SAAA,IAAa,mBAAmB,OAAA,EAAS;AAC3C,QAAA,kBAAA,CAAmB,QAAQ,SAAA,GAAY,CAAA;AACvC,QAAA,kBAAA,CAAmB,QAAQ,UAAA,GAAa,CAAA;AAAA,MAC1C;AAAA,IACF,CAAA,EAAG,CAAC,SAAS,CAAC,CAAA;AAGd,IAAA,MAAM,MAAA,GAAS,cAAA,CAAe,KAAA,EAAO,CAAA,IAAK,IAAA;AAC1C,IAAA,MAAM,MAAA,GAAS,cAAA,CAAe,KAAA,EAAO,CAAA,IAAK,IAAA;AAC1C,IAAA,MAAM,QAAA,GAAW,eAAA,CAAgB,KAAA,CAAM,GAAG,EAAE,CAAC,CAAA;AAK7C,IAAA,MAAM,UAAA,GACJ,EAAE,GAAA,EAAK,QAAA,EAAU,KAAA,EAAO,MAAA,EAAQ,MAAA,EAAQ,KAAA,EAAO,IAAA,EAAM,OAAA,EAAQ,CAC7D,QAAQ,CAAA;AAGV,IAAA,MAAM,QAAA,GACJ,eAAe,KAAA,GACX,GAAA,GACA,eAAe,QAAA,GACb,CAAA,GACA,UAAA,KAAe,MAAA,GACb,EAAA,GACA,GAAA;AAGV,IAAA,MAAM,UAAA,GAAa,QAAA,CAAS,OAAA,EAAS,WAAA,IAAe,EAAA;AACpD,IAAA,MAAM,aAA4B,EAAC;AACnC,IAAA,IAAI,MAAA,IAAU,IAAA,EAAM,UAAA,CAAW,IAAA,GAAO,GAAG,MAAM,CAAA,EAAA,CAAA;AAC/C,IAAA,IAAI,MAAA,IAAU,IAAA,EAAM,UAAA,CAAW,GAAA,GAAM,GAAG,MAAM,CAAA,EAAA,CAAA;AAC9C,IAAC,WAAsC,UAAU,CAAA,GAAI,CAAA,EAAG,CAAC,aAAa,CAAC,CAAA,EAAA,CAAA;AACvE,IAAA,UAAA,CAAW,SAAA,GAAY,UAAU,QAAQ,CAAA,IAAA,CAAA;AAOzC,IAAA,MAAM,WAAA,GACH,eAAA,CAAgB,QAAA,CAAS,SAAA,EAAkC,EAAA,IAC5D,SAAA;AACF,IAAA,MAAM,iBAAA,GACJ,IAAA,KAAS,QAAA,IACT,EAAE,YAAA,IAAgB,IAAA,CAAA,IAClB,EAAE,iBAAA,IAAqB,IAAA,CAAA,GACnB,EAAE,iBAAA,EAAmB,WAAA,KACrB,EAAC;AAGP,IAAA,MAAM,mBAAmB,WAAA,GAAc,EAAE,QAAA,EAAU,EAAA,KAAO,EAAC;AAK3D,IAAA,MAAM,mBAAmB,gBAAA,CAAiB;AAAA,MACxC,GAAG,iBAAA;AAAA,MACH,GAAG,gBAAA;AAAA,MACH,GAAG;AAAA,KACJ,CAAA;AACD,IAAA,MAAM,EAAE,IAAA,EAAM,eAAA,EAAiB,GAAG,0BAAyB,GACzD,gBAAA;AACF,IAAA,MAAM,aAAA,GACJ,IAAA,KAAS,QAAA,GACL,gBAAA,GACC,wBAAA;AAEP,IAAA,MAAM,UAAA,mBACJ,IAAA;AAAA,MAAC,KAAA;AAAA,MAAA;AAAA,QACC,OAAA,EAAQ,QAAA;AAAA,QACR,UAAA,EAAS,iBAAA;AAAA,QACT,SAAA,EAAW,EAAA,CAAG,SAAA,EAAW,MAAA,CAAO,SAAS,CAAA,EAAG;AAAA,UAC1C,CAAC,MAAA,CAAO,YAAY,CAAC,GAAG;AAAA,SACzB,CAAA;AAAA,QACD,GAAA,EAAK,iBAAA;AAAA,QACL,KAAA,EAAO,EAAE,GAAG,cAAA,EAAgB,GAAG,KAAA,EAAM;AAAA,QACpC,GAAG,aAAA;AAAA,QAEJ,QAAA,EAAA;AAAA,0BAAA,GAAA;AAAA,YAAC,KAAA;AAAA,YAAA;AAAA,cACC,WAAW,MAAA,CAAO,QAAA;AAAA,cAClB,IAAA,EAAK,cAAA;AAAA,cACL,QAAA,EAAU,EAAA;AAAA,cACV,GAAA,EAAK,iBAAA;AAAA,cACL,QAAA;AAAA,cACA,eAAA;AAAA,cAEC,QAAA,EAAA,eAAA,GAAmB,SAAA,GAAY,QAAA,GAAW,IAAA,GAAQ;AAAA;AAAA,WACrD;AAAA,UACC,WAAA,oBACC,GAAA,CAAC,MAAA,EAAA,EAAK,SAAA,EAAW,MAAA,CAAO,OAAO,CAAA,EAAG,GAAA,EAAK,QAAA,EAAU,KAAA,EAAO,UAAA,EACtD,QAAA,kBAAA,GAAA,CAAC,KAAA,EAAA,EAAI,aAAA,EAAY,MAAA,EAAO,KAAA,EAAM,IAAA,EAAK,MAAA,EAAO,IAAA,EAAK,OAAA,EAAQ,WAAA,EACrD,QAAA,kBAAA,GAAA,CAAC,MAAA,EAAA,EAAK,MAAA,EAAO,MAAA,EAAO,CAAA,EAAE,0BAAA,EAA2B,CAAA,EACnD,CAAA,EACF;AAAA;AAAA;AAAA,KAEJ;AAGF,IAAA,IAAI,SAAS,QAAA,EAAU;AACrB,MAAA,OAAO,UAAA;AAAA,IACT;AAEA,IAAA,uBACE,GAAA;AAAA,MAAC,oBAAA;AAAA,MAAA;AAAA,QACC,OAAA,EAAS,eAAA;AAAA,QACT,OAAO,KAAA,IAAS,KAAA;AAAA,QAChB,QAAA,EAAU,CAAC,SAAA,IAAa,WAAA;AAAA,QAEvB,QAAA,EAAA;AAAA;AAAA,KACH;AAAA,EAEJ;AACF,CAAA;AAEA,cAAA,CAAe,WAAA,GAAc,gBAAA;;AC1LtB,SAAS,eAAe,KAAA,EAA4B;AACzD,EAAA,MAAM,EAAE,UAAS,GAAI,KAAA;AACrB,EAAA,MAAM,EAAE,IAAA,EAAM,iBAAA,EAAmB,SAAA,EAAW,SAAA,KAAc,iBAAA,EAAkB;AAE5E,EAAA,OAAO,QAAA,CAAS;AAAA,IACd,GAAI,iBAAA,CAAkB;AAAA,MACpB,KAAK,IAAA,CAAK;AAAA,KACX,CAAA;AAAA,IACD,EAAA,EAAI,SAAA;AAAA,IACJ,YAAA,EAAc,YAAY,MAAA,GAAS;AAAA,GACpC,CAAA;AACH;AAEA,cAAA,CAAe,WAAA,GAAc,gBAAA;;AC0I7B,MAAM,cAAA,GAAiB,UAAA,CAAW,CAAC,KAAA,EAAqB,GAAA,KAAQ;AAC9D,EAAA,MAAM;AAAA,IACJ,QAAA;AAAA,IACA,MAAM,QAAA,GAAW,QAAA;AAAA,IACjB,KAAA;AAAA,IACA,IAAA;AAAA,IACA,WAAA,GAAc,KAAA;AAAA,IACd,OAAA;AAAA,IACA,cAAA;AAAA,IACA,WAAA,GAAc,KAAA;AAAA,IACd,KAAA,GAAQ,GAAA;AAAA,IACR,WAAA;AAAA,IACA,SAAA;AAAA,IACA,mBAAA;AAAA,IACA,UAAA;AAAA,IACA,mBAAA;AAAA,IACA,SAAA;AAAA,IACA,SAAA;AAAA,IACA,SAAA,GAAY,UAAA;AAAA,IACZ,0BAAA;AAAA,IACA,oBAAA;AAAA,IACA,oBAAA;AAAA,IACA,uBAAA;AAAA,IACA,qBAAA;AAAA,IACA;AAAA,GACF,GAAI,KAAA;AAEJ,EAAA,MAAM,MAAA,GAAS,MAAM,SAAA,KAAc,MAAA;AACnC,EAAA,MAAM,iBAAA,GAA+B,MAAA,GACjC,QAAA,GACE,KAAA,CAAM,SAAA,IAAa,QAAA;AACzB,EAAA,MAAM,iBAAA,GAAoB,MAAA,GACrB,KAAA,CAAM,eAAA,EACH,iBAAA,GACJ,MAAA;AACJ,EAAA,MAAM,kBAAA,GAAqB,CAAC,MAAA,GACvB,KAAA,CAAM,iBACH,kBAAA,GACJ,MAAA;AAEJ,EAAA,MAAM,MAAM,KAAA,EAAM;AAClB,EAAA,MAAM,QAAA,GAAW,GAAA,CAAI,OAAA,CAAQ,IAAA,EAAM,EAAE,CAAA;AACrC,EAAA,MAAM,SAAA,GAAY,mBAAmB,QAAQ,CAAA,CAAA;AAC7C,EAAA,MAAM,YAAA,GAAe,OAAO,IAAA,KAAS,WAAA;AACrC,EAAA,MAAM,QAAA,GAAW,OAAwB,IAAI,CAAA;AAG7C,EAAA,MAAM,iBAAA,GAAoB,OAAO,KAAK,CAAA;AAEtC,EAAA,MAAM,mBACJ,OAAO,SAAA,KAAc,QAAA,GAAW,SAAA,GAAY,GAAG,SAAS,CAAA,EAAA,CAAA;AAE1D,EAAA,MAAM,aAAA,GAAgB,WAAW,aAAa,CAAA;AAE9C,EAAA,MAAM,CAAC,SAAA,EAAW,YAAY,CAAA,GAAI,4BAAA,CAAsC;AAAA,IACtE,eAAA,EAAiB,IAAA;AAAA,IACjB,YAAA,EAAc;AAAA,GACf,CAAA;AAGD,EAAA,MAAM,YAAA,GAAe,OAAO,SAAS,CAAA;AACrC,EAAA,YAAA,CAAa,OAAA,GAAU,SAAA;AAKvB,EAAA,SAAA,CAAU,MAAM;AACd,IAAA,IAAI,CAAC,0BAAA,EAA4B;AACjC,IAAA,IAAI,aAAa,QAAA,EAAU;AAC3B,IAAA,MAAM,UAAU,MAAM;AACpB,MAAA,iBAAA,CAAkB,OAAA,GAAU,IAAA;AAAA,IAC9B,CAAA;AACA,IAAA,MAAM,WAAW,MAAM;AACrB,MAAA,UAAA,CAAW,MAAM;AACf,QAAA,iBAAA,CAAkB,OAAA,GAAU,KAAA;AAAA,MAC9B,GAAG,CAAC,CAAA;AAAA,IACN,CAAA;AACA,IAAA,QAAA,CAAS,gBAAA,CAAiB,eAAe,OAAO,CAAA;AAChD,IAAA,QAAA,CAAS,gBAAA,CAAiB,aAAa,QAAQ,CAAA;AAC/C,IAAA,OAAO,MAAM;AACX,MAAA,QAAA,CAAS,mBAAA,CAAoB,eAAe,OAAO,CAAA;AACnD,MAAA,QAAA,CAAS,mBAAA,CAAoB,aAAa,QAAQ,CAAA;AAAA,IACpD,CAAA;AAAA,EACF,CAAA,EAAG,CAAC,0BAAA,EAA4B,QAAQ,CAAC,CAAA;AAGzC,EAAA,MAAM,gBAAA,GAAmB,WAAA;AAAA,IACvB,CAAC,QAAA,KAAsB;AAErB,MAAA,IAAI,CAAC,QAAA,IAAY,0BAAA,IAA8B,iBAAA,CAAkB,OAAA;AAC/D,QAAA;AACF,MAAA,IAAI,CAAC,QAAA,IAAY,CAAC,WAAA,EAAa,OAAA,IAAU;AACzC,MAAA,YAAA,CAAa,QAAQ,CAAA;AAAA,IACvB,CAAA;AAAA,IACA,CAAC,WAAA,EAAa,OAAA,EAAS,YAAA,EAAc,0BAA0B;AAAA,GACjE;AAEA,EAAA,MAAM,WAAA,GAAc,YAAY,MAAM;AACpC,IAAA,YAAA,CAAa,IAAI,CAAA;AAAA,EACnB,CAAA,EAAG,CAAC,YAAY,CAAC,CAAA;AAEjB,EAAA,MAAM,YAAA,GAAe,YAAY,MAAM;AACrC,IAAA,IAAI,CAAC,aAAa,OAAA,EAAS;AAC3B,IAAA,IAAI,CAAC,aAAa,OAAA,IAAU;AAC5B,IAAA,YAAA,CAAa,KAAK,CAAA;AAAA,EACpB,CAAA,EAAG,CAAC,WAAA,EAAa,OAAA,EAAS,YAAY,CAAC,CAAA;AAEvC,EAAA,MAAM;AAAA,IACJ,IAAA;AAAA,IACA,cAAA;AAAA,IACA,OAAA,EAAS,eAAA;AAAA,IACT,SAAA,EAAW,eAAA;AAAA,IACX;AAAA,MACE,WAAA,CAAY;AAAA,IACd,IAAA,EAAM,SAAA;AAAA,IACN,YAAA,EAAc,gBAAA;AAAA,IACd,SAAA,EAAW,iBAAA;AAAA,IACX,QAAA,EAAU,UAAA;AAAA,IACV,UAAA,EAAY;AAAA,MACV,OAAO,CAAC,CAAA;AAAA,MACR,IAAA,CAAK;AAAA,QACH,OAAA,EAAS,CAAA;AAAA,QACT,KAAA,CAAM,EAAE,KAAA,EAAO,eAAA,EAAiB,UAAS,EAAG;AAE1C,UAAA,MAAA,CAAO,MAAA,CAAO,QAAA,CAAS,QAAA,CAAS,KAAA,EAAO;AAAA,YACrC,GAAI,mBAAA,GACA,EAAE,KAAA,EAAO,GAAG,KAAA,CAAM,SAAA,CAAU,KAAK,CAAA,EAAA,CAAA,KACjC,UAAA,GACE,EAAE,KAAA,EAAO,OAAA,KACT,EAAC;AAAA,YACP,GAAI,mBAAA,GACA;AAAA,cACE,MAAA,EAAQ,CAAA,EAAG,eAAA,GAAkB,EAAE,CAAA,EAAA,CAAA;AAAA,cAC/B,SAAA,EAAW;AAAA,gBAEb,EAAC;AAAA,YACL,GAAI,SAAA,GACA;AAAA,cACE,SAAA,EAAW,gBAAA;AAAA,cACX,MAAA,EAAQ,YACJ,OAAO,SAAA,KAAc,WACnB,SAAA,GACA,CAAA,EAAG,SAAS,CAAA,EAAA,CAAA,GACd,MAAA;AAAA,cACJ,SAAA,EAAW,SAAA,GACP,CAAA,EAAG,eAAA,GAAkB,EAAE,CAAA,EAAA,CAAA,GACvB,OAAO,SAAA,KAAc,QAAA,GACnB,SAAA,GACA,CAAA,EAAG,SAAS,CAAA,EAAA;AAAA,gBAEpB,EAAC;AAAA,YACL,GAAI,SAAA,IAAa,CAAC,SAAA,GACd;AAAA,cACE,SAAA,EAAW,gBAAA;AAAA,cACX,SAAA,EAAW,CAAA,EAAG,eAAA,GAAkB,EAAE,CAAA,EAAA;AAAA,gBAEpC;AAAC,WACN,CAAA;AAAA,QACH;AAAA,OACD,CAAA;AAAA,MACD,MAAA,GACI,cAAc,EAAE,iBAAA,EAAmB,SAAS,CAAA,EAAG,IAC/C,IAAA,CAAK;AAAA,QACH,SAAA,EAAW,KAAA;AAAA,QACX,yBAAA,EAA2B,MAAA;AAAA,QAC3B,kBAAA;AAAA,QACA,OAAA,EAAS;AAAA,OACV,CAAA;AAAA,MACL,KAAA,CAAM;AAAA,QACJ,OAAA,EAAS,CAAA;AAAA,QACT,SAAA,EAAW,KAAA;AAAA,QACX,SAAS,UAAA;AAAW,OACrB,CAAA;AAAA,MACDC,QAAM,EAAE,OAAA,EAAS,QAAA,EAAU,OAAA,EAAS,GAAG;AAAA,KACzC;AAAA,IACA,oBAAA,EAAsB;AAAA,GACvB,CAAA;AAED,EAAA,MAAM,OAAO,OAAA,CAAQ,eAAA,EAAiB,EAAE,IAAA,EAAM,UAAU,CAAA;AAExD,EAAA,MAAM,KAAA,GAAQ,SAAS,eAAA,EAAiB;AAAA,IACtC,OAAA,EAAS,WAAA;AAAA,IACT,KAAA,EAAO,EAAE,IAAA,EAAM,KAAA,EAAO,OAAO,GAAA,EAAI;AAAA,IACjC,aAAa,WAAA;AAAY,GAC1B,CAAA;AAGD,EAAA,MAAM,QAAQ,QAAA,CAAS,eAAA,EAAiB,EAAE,OAAA,EAAS,aAAa,CAAA;AAEhE,EAAA,MAAM,KAAA,GAAQ,SAAS,eAAA,EAAiB;AAAA,IACtC,SAAS,CAAC;AAAA,GACX,CAAA;AAED,EAAA,MAAM,OAAA,GAAU,WAAW,eAAA,EAAiB;AAAA,IAC1C,WAAW,CAAC,oBAAA;AAAA,IACZ,YAAA,EAAc,CAAC,0BAAA,GACX,CAAC,KAAA,KAAU;AACT,MAAA,cAAA,GAAiB,KAA8B,CAAA;AAC/C,MAAA,OAAO,IAAA;AAAA,IACT,CAAA,GACA;AAAA,GACL,CAAA;AAED,EAAA,MAAM,EAAE,iBAAA,EAAmB,gBAAA,EAAiB,GAAI,eAAA,CAAgB;AAAA,IAC9D,IAAA;AAAA,IACA,KAAA;AAAA,IACA,KAAA;AAAA,IACA,KAAA;AAAA,IACA;AAAA,GACD,CAAA;AAGD,EAAA,SAAA,CAAU,MAAM;AACd,IAAA,MAAM,UAAA,GAAa,KAAK,QAAA,CAAS,OAAA;AACjC,IAAA,IAAI,CAAC,UAAA,EAAY;AACjB,IAAA,IAAI,SAAA,EAAW;AACb,MAAA,IAAI,aAAA,EAAe;AACjB,QAAA,IAAI,aAAA,CAAc,GAAA,EAAK,OAAA,EAAS,IAAA,EAAM;AACpC,UAAA,eAAA,CAAgB,UAAU,CAAA;AAC1B,UAAA,aAAA,CAAc,oBAAoB,IAAI,CAAA;AAAA,QACxC;AACA,QAAA;AAAA,MACF;AACA,MAAA,eAAA,CAAgB,UAAU,CAAA;AAAA,IAC5B,CAAA,MAAO;AACL,MAAA,eAAA,CAAgB,UAAU,CAAA;AAC1B,MAAA,aAAA,EAAe,oBAAoB,KAAK,CAAA;AAAA,IAC1C;AAAA,EACF,GAAG,CAAC,SAAA,EAAW,IAAA,CAAK,QAAA,EAAU,aAAa,CAAC,CAAA;AAE5C,EAAA,0BAAA,CAA2B,IAAA,CAAK,QAAA,CAAS,OAAA,IAAW,MAAA,EAAW,SAAA,EAAW;AAAA,IACxE,oBAAA;AAAA,IACA,uBAAA;AAAA,IACA,qBAAA;AAAA,IACA;AAAA,GACD,CAAA;AAED,EAAA,mBAAA,CAAoB,GAAA,EAAK,OAAO,EAAE,WAAA,EAAa,cAAa,CAAA,EAAI;AAAA,IAC9D,WAAA;AAAA,IACA;AAAA,GACD,CAAA;AAED,EAAA,MAAM,KAAA,GAAQ,OAAA;AAAA,IACZ,OAAO;AAAA,MACL,eAAA;AAAA,MACA,IAAA,EAAM;AAAA,QACJ,cAAc,IAAA,CAAK,YAAA;AAAA,QACnB,aAAa,IAAA,CAAK;AAAA,OACpB;AAAA,MACA,cAAA;AAAA,MACA,cAAA;AAAA,MACA,iBAAA;AAAA,MACA,gBAAA;AAAA,MACA,SAAA;AAAA,MACA,SAAA;AAAA,MACA,WAAA;AAAA,MACA,YAAA;AAAA,MACA,UAAA,EAAY,YAAA;AAAA,MACZ,eAAA;AAAA,MACA,QAAA;AAAA,MACA,KAAA;AAAA,MACA,WAAA;AAAA,MACA,SAAA;AAAA,MACA,WAAA;AAAA,MACA,IAAA,EAAM;AAAA,KACR,CAAA;AAAA,IACA;AAAA,MACE,eAAA;AAAA,MACA,IAAA,CAAK,YAAA;AAAA,MACL,IAAA,CAAK,WAAA;AAAA,MACL,cAAA;AAAA,MACA,cAAA;AAAA,MACA,iBAAA;AAAA,MACA,gBAAA;AAAA,MACA,SAAA;AAAA,MACA,SAAA;AAAA,MACA,WAAA;AAAA,MACA,YAAA;AAAA;AAAA,MACA,YAAA;AAAA,MACA,eAAA;AAAA,MACA,QAAA;AAAA,MACA,KAAA;AAAA,MACA,WAAA;AAAA,MACA,SAAA;AAAA,MACA,WAAA;AAAA,MACA;AAAA;AACF,GACF;AAEA,EAAA,uBACE,GAAA,CAAC,cAAA,CAAe,QAAA,EAAf,EAAwB,OAAe,QAAA,EAAS,CAAA;AAErD,CAAC,CAAA;AAED,cAAA,CAAe,WAAA,GAAc,SAAA;AA6CtB,MAAM,OAAA,GAAU,MAAA,CAAO,MAAA,CAAO,cAAA,EAAgB;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAiBnD,OAAA,EAAS,cAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAkBT,OAAA,EAAS,cAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAiBT,KAAA,EAAO,YAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAiBP,MAAA,EAAQ;AACV,CAAC;;;;"}
|
package/dist/Popover.js
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
export { P as Popover, P as default } from './Popover-
|
|
1
|
+
export { P as Popover, P as default } from './Popover-D0qSKZ1J.js';
|
|
2
2
|
//# sourceMappingURL=Popover.js.map
|
|
@@ -1,14 +1,14 @@
|
|
|
1
1
|
import { jsxs, jsx } from 'react/jsx-runtime';
|
|
2
2
|
import { forwardRef, useId, isValidElement } from 'react';
|
|
3
|
-
import { c as cx } from './index-
|
|
3
|
+
import { c as cx } from './index-De1g9FRV.js';
|
|
4
4
|
import { S as SvgCheckCircle } from './check_circle-CM0ukqXv.js';
|
|
5
5
|
import { S as SvgError } from './error-DR_wWdYY.js';
|
|
6
|
-
import { F as FieldLabel } from './FieldLabel-
|
|
7
|
-
import { F as Flex } from './Flex-
|
|
8
|
-
import { w as warnDeprecatedErrorUsage } from './utils-
|
|
9
|
-
import { I as Icon } from './Icon-
|
|
6
|
+
import { F as FieldLabel } from './FieldLabel-DbMosKtd.js';
|
|
7
|
+
import { F as Flex } from './Flex-WyyZm1bf.js';
|
|
8
|
+
import { w as warnDeprecatedErrorUsage } from './utils-CM48ODEJ.js';
|
|
9
|
+
import { I as Icon } from './Icon-DuIlne4x.js';
|
|
10
10
|
import { u as useLayoutPropsUtil } from './useLayoutPropsUtil-DMDdfIah.js';
|
|
11
|
-
import { H as Helper } from './Helper-
|
|
11
|
+
import { H as Helper } from './Helper-B_FIOlhy.js';
|
|
12
12
|
|
|
13
13
|
import './ProgressBar.css';const bar = "_bar_1lj98_23";
|
|
14
14
|
const indeterminate = "_indeterminate_1lj98_1";
|
|
@@ -133,4 +133,4 @@ const ProgressBar = forwardRef(
|
|
|
133
133
|
ProgressBar.displayName = "ProgressBar";
|
|
134
134
|
|
|
135
135
|
export { ProgressBar as P };
|
|
136
|
-
//# sourceMappingURL=ProgressBar-
|
|
136
|
+
//# sourceMappingURL=ProgressBar-JpRDW5vG.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ProgressBar-x1cyKo1E.js","sources":["../src/components/ProgressBar/ProgressBar.tsx"],"sourcesContent":["import {\n forwardRef,\n isValidElement,\n ComponentPropsWithoutRef,\n useId,\n AriaAttributes,\n ReactElement,\n} from \"react\";\nimport cx from \"classnames\";\nimport Check from \"@servicetitan/hammer-icon/mdi/round/check_circle.svg\";\nimport Error from \"@servicetitan/hammer-icon/mdi/round/error.svg\";\n\nimport { FieldLabel, FieldLabelProps } from \"../FieldLabel\";\nimport { Flex } from \"../Flex\";\nimport { Helper, HelperProps } from \"../../internal/components\";\nimport { warnDeprecatedErrorUsage } from \"../FieldMessage\";\nimport { Icon } from \"../Icon\";\nimport { LayoutUtilProps } from \"../../types\";\nimport { useLayoutPropsUtil } from \"../../internal/hooks\";\n\nimport styles from \"./ProgressBar.module.scss\";\n\n/**\n * Props for the ProgressBar component\n * @extends Omit<ComponentPropsWithoutRef<\"progress\">, \"value\">\n * @extends LayoutUtilProps\n */\nexport type ProgressBarProps = Omit<\n ComponentPropsWithoutRef<\"progress\">,\n \"value\"\n> &\n LayoutUtilProps & {\n /**\n * Error state for the field. Pass `true` to indicate error styling without a message.\n * Pass a string, string[], or ReactElement (deprecated) for error messages.\n * @default false\n */\n error?: boolean | string | ReactElement | string[];\n /**\n * @deprecated No longer used. Error messages always use `aria-live=\"assertive\"`.\n */\n errorAriaLive?: HelperProps[\"errorAriaLive\"];\n /**\n * Warning message(s) to display. Supports a single string or an array of strings.\n */\n warning?: string | string[];\n /**\n * Description text to display below the progress bar\n */\n description?: HelperProps[\"description\"];\n } & (\n | {\n /**\n * Label text for the progress bar\n */\n label: FieldLabelProps[\"children\"];\n /**\n * Additional props for the label component\n */\n labelProps?: Omit<FieldLabelProps, \"children\" | \"id\" | \"required\">;\n }\n | {\n label?: never;\n labelProps?: never;\n /**\n * Accessible label for the progress bar (alternative to label)\n */\n [\"aria-label\"]: Exclude<AriaAttributes[\"aria-label\"], undefined>;\n }\n | {\n label?: never;\n labelProps?: never;\n /**\n * ID of element that labels the progress bar (alternative to label)\n */\n [\"aria-labelledby\"]: Exclude<\n AriaAttributes[\"aria-labelledby\"],\n undefined\n >;\n }\n ) &\n (\n | {\n /**\n * Current progress value (0-100 or 0-max)\n */\n value: `${number}` | number;\n /**\n * Whether the progress bar is in indeterminate state\n * @default false\n */\n indeterminate?: false;\n }\n | {\n value?: never;\n /**\n * Whether the progress bar is in indeterminate state\n */\n indeterminate: true;\n }\n );\n\n/**\n * ProgressBar component for displaying progress indicators.\n *\n * Features:\n * - Supports both determinate and indeterminate progress states\n * - Optional label with customizable label props\n * - Error state with error message display\n * - Success state with check icon when value equals max\n * - Description text support\n * - Accessibility support with proper ARIA attributes\n * - Layout utility props for positioning and spacing\n * - Flexible labeling options (label, aria-label, aria-labelledby)\n * - Error and success visual indicators\n *\n * @example\n * <ProgressBar\n * label=\"Upload Progress\"\n * value={75}\n * max={100}\n * description=\"Uploading files...\"\n * />\n *\n * @example\n * <ProgressBar\n * label=\"Processing\"\n * indeterminate\n * description=\"Please wait...\"\n * />\n *\n * @example\n * <ProgressBar\n * aria-label=\"Download progress\"\n * value={50}\n * error=\"Download failed\"\n * />\n */\nexport const ProgressBar = forwardRef<HTMLDivElement, ProgressBarProps>(\n (props, ref) => {\n const { layoutStyles, componentProps } = useLayoutPropsUtil(props);\n const {\n className,\n style,\n value,\n children,\n indeterminate,\n errorAriaLive,\n description,\n warning,\n error = false,\n max = 100,\n ...mainProps\n } = componentProps;\n const styleCombined = {\n ...style,\n ...layoutStyles,\n };\n\n warnDeprecatedErrorUsage(\"ProgressBar\", error);\n\n const errorMessages =\n typeof error === \"boolean\" || error === undefined ? undefined : error;\n const labelUid = useId();\n const isSuccess = typeof value !== \"undefined\" && +value >= +max;\n\n if (\"label\" in props && !!props.label) {\n const { label, labelProps, ...rest } = mainProps;\n\n const ProgressBarClassNames = cx(\n [styles[\"progress-bar\"]],\n\n className,\n {\n [styles[`error`]]: error,\n [styles[`success`]]: isSuccess,\n },\n );\n\n return (\n <div\n className={ProgressBarClassNames}\n data-anv=\"progress-bar\"\n style={styleCombined}\n ref={ref}\n >\n <Flex justifyContent=\"space-between\" alignItems=\"center\">\n <FieldLabel id={labelUid} {...labelProps}>\n {label}\n </FieldLabel>\n {isSuccess && !error ? (\n <Icon className={styles[\"check-icon\"]} svg={Check} />\n ) : null}\n {error ? (\n <Icon className={styles[\"error-icon\"]} svg={Error} />\n ) : null}\n </Flex>\n <div className={styles[\"bar-container\"]}>\n <progress\n aria-labelledby={labelUid}\n className={styles[\"bar\"]}\n value={value}\n max={max}\n {...rest}\n />\n </div>\n {errorMessages || warning || description ? (\n <Helper\n error={\n typeof errorMessages === \"string\" ||\n Array.isArray(errorMessages)\n ? errorMessages\n : undefined\n }\n warning={warning}\n errorMessage={\n isValidElement(errorMessages) ? errorMessages : undefined\n }\n description={description}\n />\n ) : null}\n </div>\n );\n }\n\n const ProgressBarClassNames = cx([styles[\"progress-bar\"]], className, {\n [styles[`error`]]: error,\n [styles[`success`]]: isSuccess,\n });\n\n return (\n <div\n className={ProgressBarClassNames}\n data-anv=\"progress-bar\"\n style={styleCombined}\n ref={ref}\n >\n <div className={styles[\"bar-container\"]}>\n <progress\n className={styles[\"bar\"]}\n max={max}\n value={value}\n {...mainProps}\n />\n </div>\n {errorMessages || warning || description ? (\n <Helper\n error={\n typeof errorMessages === \"string\" || Array.isArray(errorMessages)\n ? errorMessages\n : undefined\n }\n warning={warning}\n errorMessage={\n isValidElement(errorMessages) ? errorMessages : undefined\n }\n description={description}\n />\n ) : null}\n </div>\n );\n },\n);\n\nProgressBar.displayName = \"ProgressBar\";\n"],"names":["ProgressBarClassNames","Check","Error"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"ProgressBar-JpRDW5vG.js","sources":["../src/components/ProgressBar/ProgressBar.tsx"],"sourcesContent":["import {\n forwardRef,\n isValidElement,\n ComponentPropsWithoutRef,\n useId,\n AriaAttributes,\n ReactElement,\n} from \"react\";\nimport cx from \"classnames\";\nimport Check from \"@servicetitan/hammer-icon/mdi/round/check_circle.svg\";\nimport Error from \"@servicetitan/hammer-icon/mdi/round/error.svg\";\n\nimport { FieldLabel, FieldLabelProps } from \"../FieldLabel\";\nimport { Flex } from \"../Flex\";\nimport { Helper, HelperProps } from \"../../internal/components\";\nimport { warnDeprecatedErrorUsage } from \"../FieldMessage\";\nimport { Icon } from \"../Icon\";\nimport { LayoutUtilProps } from \"../../types\";\nimport { useLayoutPropsUtil } from \"../../internal/hooks\";\n\nimport styles from \"./ProgressBar.module.scss\";\n\n/**\n * Props for the ProgressBar component\n * @extends Omit<ComponentPropsWithoutRef<\"progress\">, \"value\">\n * @extends LayoutUtilProps\n */\nexport type ProgressBarProps = Omit<\n ComponentPropsWithoutRef<\"progress\">,\n \"value\"\n> &\n LayoutUtilProps & {\n /**\n * Error state for the field. Pass `true` to indicate error styling without a message.\n * Pass a string, string[], or ReactElement (deprecated) for error messages.\n * @default false\n */\n error?: boolean | string | ReactElement | string[];\n /**\n * @deprecated No longer used. Error messages always use `aria-live=\"assertive\"`.\n */\n errorAriaLive?: HelperProps[\"errorAriaLive\"];\n /**\n * Warning message(s) to display. Supports a single string or an array of strings.\n */\n warning?: string | string[];\n /**\n * Description text to display below the progress bar\n */\n description?: HelperProps[\"description\"];\n } & (\n | {\n /**\n * Label text for the progress bar\n */\n label: FieldLabelProps[\"children\"];\n /**\n * Additional props for the label component\n */\n labelProps?: Omit<FieldLabelProps, \"children\" | \"id\" | \"required\">;\n }\n | {\n label?: never;\n labelProps?: never;\n /**\n * Accessible label for the progress bar (alternative to label)\n */\n [\"aria-label\"]: Exclude<AriaAttributes[\"aria-label\"], undefined>;\n }\n | {\n label?: never;\n labelProps?: never;\n /**\n * ID of element that labels the progress bar (alternative to label)\n */\n [\"aria-labelledby\"]: Exclude<\n AriaAttributes[\"aria-labelledby\"],\n undefined\n >;\n }\n ) &\n (\n | {\n /**\n * Current progress value (0-100 or 0-max)\n */\n value: `${number}` | number;\n /**\n * Whether the progress bar is in indeterminate state\n * @default false\n */\n indeterminate?: false;\n }\n | {\n value?: never;\n /**\n * Whether the progress bar is in indeterminate state\n */\n indeterminate: true;\n }\n );\n\n/**\n * ProgressBar component for displaying progress indicators.\n *\n * Features:\n * - Supports both determinate and indeterminate progress states\n * - Optional label with customizable label props\n * - Error state with error message display\n * - Success state with check icon when value equals max\n * - Description text support\n * - Accessibility support with proper ARIA attributes\n * - Layout utility props for positioning and spacing\n * - Flexible labeling options (label, aria-label, aria-labelledby)\n * - Error and success visual indicators\n *\n * @example\n * <ProgressBar\n * label=\"Upload Progress\"\n * value={75}\n * max={100}\n * description=\"Uploading files...\"\n * />\n *\n * @example\n * <ProgressBar\n * label=\"Processing\"\n * indeterminate\n * description=\"Please wait...\"\n * />\n *\n * @example\n * <ProgressBar\n * aria-label=\"Download progress\"\n * value={50}\n * error=\"Download failed\"\n * />\n */\nexport const ProgressBar = forwardRef<HTMLDivElement, ProgressBarProps>(\n (props, ref) => {\n const { layoutStyles, componentProps } = useLayoutPropsUtil(props);\n const {\n className,\n style,\n value,\n children,\n indeterminate,\n errorAriaLive,\n description,\n warning,\n error = false,\n max = 100,\n ...mainProps\n } = componentProps;\n const styleCombined = {\n ...style,\n ...layoutStyles,\n };\n\n warnDeprecatedErrorUsage(\"ProgressBar\", error);\n\n const errorMessages =\n typeof error === \"boolean\" || error === undefined ? undefined : error;\n const labelUid = useId();\n const isSuccess = typeof value !== \"undefined\" && +value >= +max;\n\n if (\"label\" in props && !!props.label) {\n const { label, labelProps, ...rest } = mainProps;\n\n const ProgressBarClassNames = cx(\n [styles[\"progress-bar\"]],\n\n className,\n {\n [styles[`error`]]: error,\n [styles[`success`]]: isSuccess,\n },\n );\n\n return (\n <div\n className={ProgressBarClassNames}\n data-anv=\"progress-bar\"\n style={styleCombined}\n ref={ref}\n >\n <Flex justifyContent=\"space-between\" alignItems=\"center\">\n <FieldLabel id={labelUid} {...labelProps}>\n {label}\n </FieldLabel>\n {isSuccess && !error ? (\n <Icon className={styles[\"check-icon\"]} svg={Check} />\n ) : null}\n {error ? (\n <Icon className={styles[\"error-icon\"]} svg={Error} />\n ) : null}\n </Flex>\n <div className={styles[\"bar-container\"]}>\n <progress\n aria-labelledby={labelUid}\n className={styles[\"bar\"]}\n value={value}\n max={max}\n {...rest}\n />\n </div>\n {errorMessages || warning || description ? (\n <Helper\n error={\n typeof errorMessages === \"string\" ||\n Array.isArray(errorMessages)\n ? errorMessages\n : undefined\n }\n warning={warning}\n errorMessage={\n isValidElement(errorMessages) ? errorMessages : undefined\n }\n description={description}\n />\n ) : null}\n </div>\n );\n }\n\n const ProgressBarClassNames = cx([styles[\"progress-bar\"]], className, {\n [styles[`error`]]: error,\n [styles[`success`]]: isSuccess,\n });\n\n return (\n <div\n className={ProgressBarClassNames}\n data-anv=\"progress-bar\"\n style={styleCombined}\n ref={ref}\n >\n <div className={styles[\"bar-container\"]}>\n <progress\n className={styles[\"bar\"]}\n max={max}\n value={value}\n {...mainProps}\n />\n </div>\n {errorMessages || warning || description ? (\n <Helper\n error={\n typeof errorMessages === \"string\" || Array.isArray(errorMessages)\n ? errorMessages\n : undefined\n }\n warning={warning}\n errorMessage={\n isValidElement(errorMessages) ? errorMessages : undefined\n }\n description={description}\n />\n ) : null}\n </div>\n );\n },\n);\n\nProgressBar.displayName = \"ProgressBar\";\n"],"names":["ProgressBarClassNames","Check","Error"],"mappings":"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"}
|
package/dist/ProgressBar.js
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
export { P as ProgressBar, P as default } from './ProgressBar-
|
|
1
|
+
export { P as ProgressBar, P as default } from './ProgressBar-JpRDW5vG.js';
|
|
2
2
|
//# sourceMappingURL=ProgressBar.js.map
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { jsx } from 'react/jsx-runtime';
|
|
2
2
|
import { forwardRef } from 'react';
|
|
3
|
-
import { R as RadioGroup, a as Radio$1 } from './Radio-
|
|
3
|
+
import { R as RadioGroup, a as Radio$1 } from './Radio-BQg7exDG.js';
|
|
4
4
|
import { c as childrenToString } from './childrenToString-Bz9MqbHb.js';
|
|
5
5
|
import { useTrackingId } from './useTrackingId.js';
|
|
6
6
|
|
|
@@ -57,4 +57,4 @@ const Radio = Object.assign(RadioElement, {
|
|
|
57
57
|
});
|
|
58
58
|
|
|
59
59
|
export { Radio as R };
|
|
60
|
-
//# sourceMappingURL=Radio-
|
|
60
|
+
//# sourceMappingURL=Radio-BOq9UkpC.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Radio-
|
|
1
|
+
{"version":3,"file":"Radio-BOq9UkpC.js","sources":["../src/components/Radio/Radio.tsx"],"sourcesContent":["import { Ref, forwardRef } from \"react\";\nimport {\n RadioProps as CoreRadioProps,\n Radio as CoreRadio,\n} from \"./internal/Radio\";\nimport { RadioGroup } from \"./RadioGroup\";\nimport { useTrackingId } from \"../../hooks\";\nimport { DataTrackingId } from \"../../types\";\nimport { childrenToString } from \"../../internal/functions\";\n\n/**\n * Props for the Radio component\n * @property {boolean} [checked] - Controlled state\n * @property {boolean} [defaultChecked] - Uncontrolled state\n * @property {Function} [onChange] - Callback when radio is changed\n * @property {ReactElement | string} [label] - Label for Radio\n * @property {boolean} [error] - Error state for the radio\n * @property {object} [icons] - Icon overrides for checked and unchecked states\n * @property {string} [description] - Description text to display below the radio\n * @property {string} [aria-label] - Accessible label for the radio\n * @property {string} [aria-labelledby] - ID of element that labels the radio\n * @property {string} [name] - Name attribute for the radio\n * @property {string} [data-tracking-id] - Custom tracking ID for analytics\n * @extends DataTrackingId\n */\nexport type RadioProps = Omit<CoreRadioProps, \"hideRadio\"> & DataTrackingId;\n\nconst RadioElement = forwardRef(\n (props: RadioProps, ref: Ref<HTMLInputElement>) => {\n const data = {\n label: childrenToString(props.label),\n ariaLabel: props[\"aria-label\"],\n ariaLabelledBy: props[\"aria-labelledby\"],\n name: props.name,\n value: props.value,\n };\n\n const trackingId = useTrackingId({\n name: \"Radio\",\n data,\n hasOverride: !!props[\"data-tracking-id\"],\n });\n return <CoreRadio ref={ref} data-tracking-id={trackingId} {...props} />;\n },\n);\n\nRadioElement.displayName = CoreRadio?.displayName ?? \"RadioElement\";\n\n/**\n * Radio component for single selection from a group of options.\n *\n * Features:\n * - Supports both controlled and uncontrolled modes\n * - Customizable icons for checked and unchecked states\n * - Error state with visual indicators\n * - Description text support\n * - Accessibility support with proper ARIA attributes\n * - Layout utility props for positioning and spacing\n * - Flexible labeling options\n * - Group support via Radio.Group\n * - Automatic tracking ID generation for analytics\n *\n * @example\n * <Radio\n * label=\"Option 1\"\n * value=\"option1\"\n * checked={selectedValue === \"option1\"}\n * onChange={(e, state) => setSelectedValue(state?.value)}\n * />\n *\n * @example\n * <Radio\n * label=\"Custom styled option\"\n * value=\"custom\"\n * icons={{\n * checked: CustomCheckedIcon,\n * unchecked: CustomUncheckedIcon\n * }}\n * description=\"This option has custom styling\"\n * />\n *\n * @example\n * <Radio.Group legend=\"Choose your preference\" required>\n * <Radio label=\"Option A\" value=\"a\" />\n * <Radio label=\"Option B\" value=\"b\" />\n * <Radio label=\"Option C\" value=\"c\" />\n * </Radio.Group>\n */\nexport const Radio = Object.assign(RadioElement, {\n /**\n * RadioGroup component for grouping related radio options.\n *\n * Features:\n * - Groups multiple radio options together\n * - Legend support for group labeling\n * - Required field indication\n * - Accessibility support with proper fieldset semantics\n * - Layout utility props for positioning and spacing\n * - Focus and blur event handling\n * - More info support for additional context\n * - Automatic alignment based on flex direction\n *\n * @example\n * <RadioGroup legend=\"Choose your preference\" required>\n * <Radio label=\"Option A\" value=\"a\" />\n * <Radio label=\"Option B\" value=\"b\" />\n * <Radio label=\"Option C\" value=\"c\" />\n * </RadioGroup>\n *\n * @example\n * <RadioGroup\n * legend=\"Horizontal layout\"\n * flexDirection=\"row\"\n * gap=\"4\"\n * >\n * <Radio label=\"Yes\" value=\"yes\" />\n * <Radio label=\"No\" value=\"no\" />\n * </RadioGroup>\n */\n Group: RadioGroup,\n});\n"],"names":["CoreRadio"],"mappings":";;;;;;AA2BA,MAAM,YAAA,GAAe,UAAA;AAAA,EACnB,CAAC,OAAmB,GAAA,KAA+B;AACjD,IAAA,MAAM,IAAA,GAAO;AAAA,MACX,KAAA,EAAO,gBAAA,CAAiB,KAAA,CAAM,KAAK,CAAA;AAAA,MACnC,SAAA,EAAW,MAAM,YAAY,CAAA;AAAA,MAC7B,cAAA,EAAgB,MAAM,iBAAiB,CAAA;AAAA,MACvC,MAAM,KAAA,CAAM,IAAA;AAAA,MACZ,OAAO,KAAA,CAAM;AAAA,KACf;AAEA,IAAA,MAAM,aAAa,aAAA,CAAc;AAAA,MAC/B,IAAA,EAAM,OAAA;AAAA,MACN,IAAA;AAAA,MACA,WAAA,EAAa,CAAC,CAAC,KAAA,CAAM,kBAAkB;AAAA,KACxC,CAAA;AACD,IAAA,2BAAQA,OAAA,EAAA,EAAU,GAAA,EAAU,kBAAA,EAAkB,UAAA,EAAa,GAAG,KAAA,EAAO,CAAA;AAAA,EACvE;AACF,CAAA;AAEA,YAAA,CAAa,WAAA,GAAcA,SAAW,WAAA,IAAe,cAAA;AA0C9C,MAAM,KAAA,GAAQ,MAAA,CAAO,MAAA,CAAO,YAAA,EAAc;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EA+B/C,KAAA,EAAO;AACT,CAAC;;;;"}
|
|
@@ -1,13 +1,13 @@
|
|
|
1
1
|
import { jsxs, jsx } from 'react/jsx-runtime';
|
|
2
2
|
import * as React from 'react';
|
|
3
3
|
import { createContext, useContext, forwardRef, useId, useMemo } from 'react';
|
|
4
|
-
import { c as cx } from './index-
|
|
5
|
-
import { F as FieldLabel, a as FieldLabelMoreInfoIcon } from './FieldLabel-
|
|
6
|
-
import { F as FieldMessage } from './FieldMessage-
|
|
7
|
-
import { w as warnDeprecatedErrorUsage } from './utils-
|
|
4
|
+
import { c as cx } from './index-De1g9FRV.js';
|
|
5
|
+
import { F as FieldLabel, a as FieldLabelMoreInfoIcon } from './FieldLabel-DbMosKtd.js';
|
|
6
|
+
import { F as FieldMessage } from './FieldMessage-COHqUdj5.js';
|
|
7
|
+
import { w as warnDeprecatedErrorUsage } from './utils-CM48ODEJ.js';
|
|
8
8
|
import { u as useLayoutPropsUtil } from './useLayoutPropsUtil-DMDdfIah.js';
|
|
9
|
-
import { I as Icon } from './Icon-
|
|
10
|
-
import { H as Helper } from './Helper-
|
|
9
|
+
import { I as Icon } from './Icon-DuIlne4x.js';
|
|
10
|
+
import { H as Helper } from './Helper-B_FIOlhy.js';
|
|
11
11
|
|
|
12
12
|
import './Radio.css';const radio = "_radio_1omms_2";
|
|
13
13
|
const wrapper = "_wrapper_1omms_30";
|
|
@@ -146,6 +146,7 @@ const RadioElement = forwardRef((props, ref) => {
|
|
|
146
146
|
style,
|
|
147
147
|
description,
|
|
148
148
|
hideRadio = false,
|
|
149
|
+
labelWrapperClassName,
|
|
149
150
|
...rest
|
|
150
151
|
} = componentProps;
|
|
151
152
|
const groupContext = useRadioGroupContext();
|
|
@@ -212,7 +213,15 @@ const RadioElement = forwardRef((props, ref) => {
|
|
|
212
213
|
]
|
|
213
214
|
}
|
|
214
215
|
),
|
|
215
|
-
/* @__PURE__ */ jsx(
|
|
216
|
+
/* @__PURE__ */ jsx(
|
|
217
|
+
"span",
|
|
218
|
+
{
|
|
219
|
+
className: cx(labelWrapperClassName, {
|
|
220
|
+
[styles["focus-label"]]: hideRadio
|
|
221
|
+
}),
|
|
222
|
+
children: label
|
|
223
|
+
}
|
|
224
|
+
)
|
|
216
225
|
] }),
|
|
217
226
|
description ? /* @__PURE__ */ jsx("div", { className: styles["helper-wrapper"], children: /* @__PURE__ */ jsx(Helper, { id: helperUid, description }) }) : null
|
|
218
227
|
] });
|
|
@@ -221,4 +230,4 @@ RadioElement.displayName = "RadioElement";
|
|
|
221
230
|
const Radio = RadioElement;
|
|
222
231
|
|
|
223
232
|
export { RadioGroup as R, SvgRadioButtonUnchecked as S, Radio as a, SvgRadioButtonChecked as b };
|
|
224
|
-
//# sourceMappingURL=Radio-
|
|
233
|
+
//# sourceMappingURL=Radio-BQg7exDG.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Radio-D8HSazJ6.js","sources":["../src/components/Radio/internal/RadioGroupContext.tsx","../src/components/Radio/RadioGroup.tsx","../../hammer-icon/mdi/two-tone/radio_button_unchecked.svg","../../hammer-icon/mdi/two-tone/radio_button_checked.svg","../src/components/Radio/internal/Radio.tsx"],"sourcesContent":["import { createContext, useContext } from \"react\";\n\n/**\n * Context value for RadioGroup\n * @property {boolean} hasError - Whether the group has an error state\n */\nexport type RadioGroupContextValue = {\n /**\n * Whether the radio group has an error state\n */\n hasError: boolean;\n};\n\n/**\n * Context for sharing state between RadioGroup and child Radio components\n */\nexport const RadioGroupContext = createContext<\n RadioGroupContextValue | undefined\n>(undefined);\n\n/**\n * Hook to access RadioGroup context from child Radio components\n * @returns RadioGroupContextValue if inside a RadioGroup, undefined otherwise\n */\nexport const useRadioGroupContext = () => {\n return useContext(RadioGroupContext);\n};\n","import {\n ComponentPropsWithoutRef,\n forwardRef,\n ReactElement,\n useId,\n useMemo,\n} from \"react\";\nimport styles from \"./Radio.module.scss\";\nimport cx from \"classnames\";\nimport { LayoutUtilProps } from \"../../types\";\nimport { useLayoutPropsUtil } from \"../../internal/hooks\";\nimport { FieldLabel } from \"../FieldLabel\";\nimport { FieldLabelMoreInfoIcon } from \"../FieldLabel/internal/FieldLabelMoreInfoIcon\";\nimport { FieldLabelProps } from \"../../internal/types\";\nimport { HelperProps } from \"../../internal/components\";\nimport FieldMessage, { warnDeprecatedErrorUsage } from \"../FieldMessage\";\nimport { RadioGroupContext } from \"./internal/RadioGroupContext\";\n\n/**\n * Props for the RadioGroup component\n * @extends ComponentPropsWithoutRef<\"fieldset\">\n * @extends LayoutUtilProps\n * @extends Omit<FieldLabelProps, \"labelProps\">\n */\nexport type RadioGroupProps = ComponentPropsWithoutRef<\"fieldset\"> &\n LayoutUtilProps &\n Omit<FieldLabelProps, \"labelProps\"> & {\n /**\n * Required flag for label\n * @remarks This does not enforce error when nothing is selected\n */\n required?: boolean;\n\n /**\n * Legend for the fieldset\n */\n legend: string | ReactElement;\n\n /**\n * Error state for the field. Pass `true` to indicate error styling without a message.\n * Pass a string, string[], or ReactElement (deprecated) for error messages.\n */\n error?: boolean | string | ReactElement | string[];\n\n /**\n * @deprecated No longer used. Error messages always use `aria-live=\"assertive\"`.\n */\n errorAriaLive?: HelperProps[\"errorAriaLive\"];\n\n /**\n * Warning message(s) to display. Supports a single string or an array of strings.\n */\n warning?: string | string[];\n\n /**\n * Description text to display below the field.\n */\n description?: HelperProps[\"description\"];\n\n /**\n * Hint text to display below the field.\n */\n hint?: HelperProps[\"hint\"];\n };\n\n/**\n * RadioGroup component for grouping related radio options.\n *\n * Features:\n * - Groups multiple radio options together\n * - Legend support for group labeling\n * - Required field indication\n * - Accessibility support with proper fieldset semantics\n * - Layout utility props for positioning and spacing\n * - Focus and blur event handling\n * - More info support for additional context\n * - Automatic alignment based on flex direction\n *\n * @example\n * <RadioGroup legend=\"Choose your preference\" required>\n * <Radio label=\"Option A\" value=\"a\" />\n * <Radio label=\"Option B\" value=\"b\" />\n * <Radio label=\"Option C\" value=\"c\" />\n * </RadioGroup>\n *\n * @example\n * <RadioGroup\n * legend=\"Horizontal layout\"\n * flexDirection=\"row\"\n * gap=\"4\"\n * >\n * <Radio label=\"Yes\" value=\"yes\" />\n * <Radio label=\"No\" value=\"no\" />\n * </RadioGroup>\n */\nexport const RadioGroup = forwardRef<HTMLFieldSetElement, RadioGroupProps>(\n (props, ref) => {\n const { layoutStyles, componentProps } = useLayoutPropsUtil(props);\n const {\n className,\n children,\n description,\n error,\n errorAriaLive: _errorAriaLive,\n hint,\n warning,\n legend,\n moreInfo,\n onBlur,\n onFocus,\n required,\n style,\n ...rest\n } = componentProps;\n\n const RadioGroupClassNames = cx(styles[\"radio-group\"], className);\n const helperUid = useId();\n const moreInfoUid = useId();\n\n const styleCombined = {\n ...style,\n ...layoutStyles,\n alignItems:\n layoutStyles?.alignItems ??\n (layoutStyles?.flexDirection === \"row\" ? \"center\" : undefined),\n };\n\n warnDeprecatedErrorUsage(\"RadioGroup\", error);\n\n const errorMessages =\n typeof error === \"boolean\" || error === undefined ? undefined : error;\n\n const hasHelperText = hint || errorMessages || warning || description;\n\n const ariaDescribedBy =\n [hasHelperText && helperUid, moreInfo && moreInfoUid]\n .filter(Boolean)\n .join(\" \") || undefined;\n\n const contextValue = useMemo(\n () => ({\n hasError: !!error,\n }),\n [error],\n );\n\n return (\n <fieldset\n role=\"radiogroup\"\n data-anv=\"radio-group\"\n className={RadioGroupClassNames}\n aria-required={required}\n style={styleCombined}\n ref={ref}\n onFocus={onFocus}\n onBlur={onBlur}\n {...rest}\n aria-describedby={ariaDescribedBy}\n >\n <legend className={styles[\"legend\"]}>\n {legend}\n {required && \", required\"}\n </legend>\n <div className={styles[\"label-row\"]}>\n <FieldLabel aria-hidden required={required}>\n {legend}\n </FieldLabel>\n {moreInfo && (\n <FieldLabelMoreInfoIcon\n moreInfo={moreInfo}\n moreInfoId={moreInfoUid}\n />\n )}\n </div>\n <RadioGroupContext.Provider value={contextValue}>\n <div\n className={styles[\"children\"]}\n style={{\n flexDirection: layoutStyles?.flexDirection,\n gap: layoutStyles?.gap,\n }}\n >\n {children}\n </div>\n </RadioGroupContext.Provider>\n {hasHelperText ? (\n <FieldMessage\n id={helperUid}\n hint={hint}\n error={errorMessages}\n warning={warning}\n description={description}\n />\n ) : null}\n </fieldset>\n );\n },\n);\n\nRadioGroup.displayName = \"RadioGroup\";\n","import * as React from \"react\";\nconst SvgRadioButtonUnchecked = (props) => /* @__PURE__ */ React.createElement(\"svg\", { xmlns: \"http://www.w3.org/2000/svg\", width: \"1em\", height: \"1em\", viewBox: \"0 0 24 24\", ...props }, /* @__PURE__ */ React.createElement(\"path\", { d: \"M12 2C6.48 2 2 6.48 2 12s4.48 10 10 10 10-4.48 10-10S17.52 2 12 2zm0 18c-4.42 0-8-3.58-8-8s3.58-8 8-8 8 3.58 8 8-3.58 8-8 8z\" }));\nexport default SvgRadioButtonUnchecked;\n","import * as React from \"react\";\nconst SvgRadioButtonChecked = (props) => /* @__PURE__ */ React.createElement(\"svg\", { xmlns: \"http://www.w3.org/2000/svg\", width: \"1em\", height: \"1em\", viewBox: \"0 0 24 24\", ...props }, /* @__PURE__ */ React.createElement(\"path\", { d: \"M12 2C6.48 2 2 6.48 2 12s4.48 10 10 10 10-4.48 10-10S17.52 2 12 2zm0 18c-4.42 0-8-3.58-8-8s3.58-8 8-8 8 3.58 8 8-3.58 8-8 8z\" }), /* @__PURE__ */ React.createElement(\"circle\", { cx: 12, cy: 12, r: 5 }));\nexport default SvgRadioButtonChecked;\n","import {\n forwardRef,\n ComponentPropsWithoutRef,\n ChangeEvent,\n ReactElement,\n useId,\n} from \"react\";\nimport cx from \"classnames\";\nimport { Icon } from \"../../Icon\";\nimport Radio_outline from \"@servicetitan/hammer-icon/mdi/two-tone/radio_button_unchecked.svg\";\nimport Radio_checked from \"@servicetitan/hammer-icon/mdi/two-tone/radio_button_checked.svg\";\nimport styles from \"../Radio.module.scss\";\nimport { LayoutUtilProps, Svg } from \"../../../types\";\nimport { useLayoutPropsUtil } from \"../../../internal/hooks\";\nimport { Helper, HelperProps } from \"../../../internal/components\";\nimport { RadioState } from \"../types\";\nimport { useRadioGroupContext } from \"./RadioGroupContext\";\n\n/**\n * Props for the Radio component\n * @extends Omit<ComponentPropsWithoutRef<\"input\">, \"onChange\">\n * @extends LayoutUtilProps\n */\nexport type RadioProps = Omit<ComponentPropsWithoutRef<\"input\">, \"onChange\"> &\n LayoutUtilProps & {\n /**\n * Controlled state\n * @default false\n */\n checked?: boolean;\n\n /**\n * Uncontrolled state\n * @default false\n */\n defaultChecked?: boolean;\n\n /**\n * Callback when radio is changed\n */\n onChange?: (e: ChangeEvent<HTMLInputElement>, state?: RadioState) => void;\n\n /**\n * Label for Radio\n * @remarks This should either be a string or have text content inside for accessibility\n */\n label?: ReactElement | string;\n\n /**\n * Error state for the radio\n * @default false\n */\n error?: boolean;\n\n /**\n * Icon overrides for checked and unchecked states\n */\n icons?: {\n /**\n * Icon to display when radio is checked\n */\n checked?: Svg;\n /**\n * Icon to display when radio is unchecked\n */\n unchecked?: Svg;\n };\n\n /**\n * Description text to display below the radio\n */\n description?: HelperProps[\"description\"];\n\n /**\n * When true, hides the radio for visual users\n * @default false\n */\n hideRadio?: boolean;\n };\n\nconst RadioElement = forwardRef<HTMLInputElement, RadioProps>((props, ref) => {\n const { layoutStyles, componentProps } = useLayoutPropsUtil(props);\n const {\n className,\n checked,\n defaultChecked,\n value,\n icons,\n error,\n label,\n onChange,\n style,\n description,\n hideRadio = false,\n ...rest\n } = componentProps;\n\n const groupContext = useRadioGroupContext();\n\n const {\n checked: checkedIcon = Radio_checked,\n unchecked: uncheckedIcon = Radio_outline,\n } = { ...icons };\n\n const onChangeHandler = (e: ChangeEvent<HTMLInputElement>) => {\n onChange?.(e, { value, checked: e.target.checked });\n };\n\n const helperUid = useId();\n\n // Combine local error state with group error state\n const hasError = error || groupContext?.hasError;\n\n const wrapperClassNames = cx(\n styles[\"wrapper\"],\n { [styles[\"focus\"]]: hideRadio },\n className,\n );\n\n const radioClassNames = cx(styles[\"radio\"], {\n [styles[\"error\"]]: hasError,\n });\n\n const styleCombined = {\n ...style,\n ...layoutStyles,\n };\n\n return (\n <div className={wrapperClassNames} style={styleCombined} data-anv=\"radio\">\n <label className={radioClassNames}>\n <input\n type=\"radio\"\n aria-checked={checked ?? defaultChecked}\n checked={checked}\n defaultChecked={defaultChecked}\n value={value}\n onChange={onChangeHandler}\n aria-describedby={description ? helperUid : undefined}\n ref={ref}\n {...rest}\n />\n\n <span\n className={cx(styles[\"icon-wrapper\"], {\n [styles[\"sr-only\"]]: hideRadio,\n })}\n >\n <Icon\n size=\"large\"\n svg={uncheckedIcon}\n className={cx([styles[\"icon-unchecked\"]])}\n />\n\n <Icon\n size=\"large\"\n svg={checkedIcon}\n className={cx([styles[\"icon-checked\"]])}\n />\n </span>\n\n <span className={cx({ [styles[\"focus-label\"]]: hideRadio })}>\n {label}\n </span>\n </label>\n\n {description ? (\n <div className={styles[\"helper-wrapper\"]}>\n <Helper id={helperUid} description={description} />\n </div>\n ) : null}\n </div>\n );\n});\n\nRadioElement.displayName = \"RadioElement\";\n\n/**\n * Radio component for single selection from a group of options.\n *\n * Features:\n * - Supports both controlled and uncontrolled modes\n * - Customizable icons for checked and unchecked states\n * - Error state with visual indicators\n * - Description text support\n * - Accessibility support with proper ARIA attributes\n * - Layout utility props for positioning and spacing\n * - Optional radio hiding for visual users\n * - Flexible labeling options\n * - Group support via Radio.Group\n *\n * @example\n * <Radio\n * label=\"Option 1\"\n * value=\"option1\"\n * checked={selectedValue === \"option1\"}\n * onChange={(e, state) => setSelectedValue(state?.value)}\n * />\n *\n * @example\n * <Radio\n * label=\"Custom styled option\"\n * value=\"custom\"\n * icons={{\n * checked: CustomCheckedIcon,\n * unchecked: CustomUncheckedIcon\n * }}\n * description=\"This option has custom styling\"\n * />\n *\n * @example\n * <Radio.Group legend=\"Choose your preference\" required>\n * <Radio label=\"Option A\" value=\"a\" />\n * <Radio label=\"Option B\" value=\"b\" />\n * <Radio label=\"Option C\" value=\"c\" />\n * </Radio.Group>\n */\nexport const Radio = RadioElement;\n"],"names":["Radio_checked","Radio_outline"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"Radio-BQg7exDG.js","sources":["../src/components/Radio/internal/RadioGroupContext.tsx","../src/components/Radio/RadioGroup.tsx","../../hammer-icon/mdi/two-tone/radio_button_unchecked.svg","../../hammer-icon/mdi/two-tone/radio_button_checked.svg","../src/components/Radio/internal/Radio.tsx"],"sourcesContent":["import { createContext, useContext } from \"react\";\n\n/**\n * Context value for RadioGroup\n * @property {boolean} hasError - Whether the group has an error state\n */\nexport type RadioGroupContextValue = {\n /**\n * Whether the radio group has an error state\n */\n hasError: boolean;\n};\n\n/**\n * Context for sharing state between RadioGroup and child Radio components\n */\nexport const RadioGroupContext = createContext<\n RadioGroupContextValue | undefined\n>(undefined);\n\n/**\n * Hook to access RadioGroup context from child Radio components\n * @returns RadioGroupContextValue if inside a RadioGroup, undefined otherwise\n */\nexport const useRadioGroupContext = () => {\n return useContext(RadioGroupContext);\n};\n","import {\n ComponentPropsWithoutRef,\n forwardRef,\n ReactElement,\n useId,\n useMemo,\n} from \"react\";\nimport styles from \"./Radio.module.scss\";\nimport cx from \"classnames\";\nimport { LayoutUtilProps } from \"../../types\";\nimport { useLayoutPropsUtil } from \"../../internal/hooks\";\nimport { FieldLabel } from \"../FieldLabel\";\nimport { FieldLabelMoreInfoIcon } from \"../FieldLabel/internal/FieldLabelMoreInfoIcon\";\nimport { FieldLabelProps } from \"../../internal/types\";\nimport { HelperProps } from \"../../internal/components\";\nimport FieldMessage, { warnDeprecatedErrorUsage } from \"../FieldMessage\";\nimport { RadioGroupContext } from \"./internal/RadioGroupContext\";\n\n/**\n * Props for the RadioGroup component\n * @extends ComponentPropsWithoutRef<\"fieldset\">\n * @extends LayoutUtilProps\n * @extends Omit<FieldLabelProps, \"labelProps\">\n */\nexport type RadioGroupProps = ComponentPropsWithoutRef<\"fieldset\"> &\n LayoutUtilProps &\n Omit<FieldLabelProps, \"labelProps\"> & {\n /**\n * Required flag for label\n * @remarks This does not enforce error when nothing is selected\n */\n required?: boolean;\n\n /**\n * Legend for the fieldset\n */\n legend: string | ReactElement;\n\n /**\n * Error state for the field. Pass `true` to indicate error styling without a message.\n * Pass a string, string[], or ReactElement (deprecated) for error messages.\n */\n error?: boolean | string | ReactElement | string[];\n\n /**\n * @deprecated No longer used. Error messages always use `aria-live=\"assertive\"`.\n */\n errorAriaLive?: HelperProps[\"errorAriaLive\"];\n\n /**\n * Warning message(s) to display. Supports a single string or an array of strings.\n */\n warning?: string | string[];\n\n /**\n * Description text to display below the field.\n */\n description?: HelperProps[\"description\"];\n\n /**\n * Hint text to display below the field.\n */\n hint?: HelperProps[\"hint\"];\n };\n\n/**\n * RadioGroup component for grouping related radio options.\n *\n * Features:\n * - Groups multiple radio options together\n * - Legend support for group labeling\n * - Required field indication\n * - Accessibility support with proper fieldset semantics\n * - Layout utility props for positioning and spacing\n * - Focus and blur event handling\n * - More info support for additional context\n * - Automatic alignment based on flex direction\n *\n * @example\n * <RadioGroup legend=\"Choose your preference\" required>\n * <Radio label=\"Option A\" value=\"a\" />\n * <Radio label=\"Option B\" value=\"b\" />\n * <Radio label=\"Option C\" value=\"c\" />\n * </RadioGroup>\n *\n * @example\n * <RadioGroup\n * legend=\"Horizontal layout\"\n * flexDirection=\"row\"\n * gap=\"4\"\n * >\n * <Radio label=\"Yes\" value=\"yes\" />\n * <Radio label=\"No\" value=\"no\" />\n * </RadioGroup>\n */\nexport const RadioGroup = forwardRef<HTMLFieldSetElement, RadioGroupProps>(\n (props, ref) => {\n const { layoutStyles, componentProps } = useLayoutPropsUtil(props);\n const {\n className,\n children,\n description,\n error,\n errorAriaLive: _errorAriaLive,\n hint,\n warning,\n legend,\n moreInfo,\n onBlur,\n onFocus,\n required,\n style,\n ...rest\n } = componentProps;\n\n const RadioGroupClassNames = cx(styles[\"radio-group\"], className);\n const helperUid = useId();\n const moreInfoUid = useId();\n\n const styleCombined = {\n ...style,\n ...layoutStyles,\n alignItems:\n layoutStyles?.alignItems ??\n (layoutStyles?.flexDirection === \"row\" ? \"center\" : undefined),\n };\n\n warnDeprecatedErrorUsage(\"RadioGroup\", error);\n\n const errorMessages =\n typeof error === \"boolean\" || error === undefined ? undefined : error;\n\n const hasHelperText = hint || errorMessages || warning || description;\n\n const ariaDescribedBy =\n [hasHelperText && helperUid, moreInfo && moreInfoUid]\n .filter(Boolean)\n .join(\" \") || undefined;\n\n const contextValue = useMemo(\n () => ({\n hasError: !!error,\n }),\n [error],\n );\n\n return (\n <fieldset\n role=\"radiogroup\"\n data-anv=\"radio-group\"\n className={RadioGroupClassNames}\n aria-required={required}\n style={styleCombined}\n ref={ref}\n onFocus={onFocus}\n onBlur={onBlur}\n {...rest}\n aria-describedby={ariaDescribedBy}\n >\n <legend className={styles[\"legend\"]}>\n {legend}\n {required && \", required\"}\n </legend>\n <div className={styles[\"label-row\"]}>\n <FieldLabel aria-hidden required={required}>\n {legend}\n </FieldLabel>\n {moreInfo && (\n <FieldLabelMoreInfoIcon\n moreInfo={moreInfo}\n moreInfoId={moreInfoUid}\n />\n )}\n </div>\n <RadioGroupContext.Provider value={contextValue}>\n <div\n className={styles[\"children\"]}\n style={{\n flexDirection: layoutStyles?.flexDirection,\n gap: layoutStyles?.gap,\n }}\n >\n {children}\n </div>\n </RadioGroupContext.Provider>\n {hasHelperText ? (\n <FieldMessage\n id={helperUid}\n hint={hint}\n error={errorMessages}\n warning={warning}\n description={description}\n />\n ) : null}\n </fieldset>\n );\n },\n);\n\nRadioGroup.displayName = \"RadioGroup\";\n","import * as React from \"react\";\nconst SvgRadioButtonUnchecked = (props) => /* @__PURE__ */ React.createElement(\"svg\", { xmlns: \"http://www.w3.org/2000/svg\", width: \"1em\", height: \"1em\", viewBox: \"0 0 24 24\", ...props }, /* @__PURE__ */ React.createElement(\"path\", { d: \"M12 2C6.48 2 2 6.48 2 12s4.48 10 10 10 10-4.48 10-10S17.52 2 12 2zm0 18c-4.42 0-8-3.58-8-8s3.58-8 8-8 8 3.58 8 8-3.58 8-8 8z\" }));\nexport default SvgRadioButtonUnchecked;\n","import * as React from \"react\";\nconst SvgRadioButtonChecked = (props) => /* @__PURE__ */ React.createElement(\"svg\", { xmlns: \"http://www.w3.org/2000/svg\", width: \"1em\", height: \"1em\", viewBox: \"0 0 24 24\", ...props }, /* @__PURE__ */ React.createElement(\"path\", { d: \"M12 2C6.48 2 2 6.48 2 12s4.48 10 10 10 10-4.48 10-10S17.52 2 12 2zm0 18c-4.42 0-8-3.58-8-8s3.58-8 8-8 8 3.58 8 8-3.58 8-8 8z\" }), /* @__PURE__ */ React.createElement(\"circle\", { cx: 12, cy: 12, r: 5 }));\nexport default SvgRadioButtonChecked;\n","import {\n forwardRef,\n ComponentPropsWithoutRef,\n ChangeEvent,\n ReactElement,\n useId,\n} from \"react\";\nimport cx from \"classnames\";\nimport { Icon } from \"../../Icon\";\nimport Radio_outline from \"@servicetitan/hammer-icon/mdi/two-tone/radio_button_unchecked.svg\";\nimport Radio_checked from \"@servicetitan/hammer-icon/mdi/two-tone/radio_button_checked.svg\";\nimport styles from \"../Radio.module.scss\";\nimport { LayoutUtilProps, Svg } from \"../../../types\";\nimport { useLayoutPropsUtil } from \"../../../internal/hooks\";\nimport { Helper, HelperProps } from \"../../../internal/components\";\nimport { RadioState } from \"../types\";\nimport { useRadioGroupContext } from \"./RadioGroupContext\";\n\n/**\n * Props for the Radio component\n * @extends Omit<ComponentPropsWithoutRef<\"input\">, \"onChange\">\n * @extends LayoutUtilProps\n */\nexport type RadioProps = Omit<ComponentPropsWithoutRef<\"input\">, \"onChange\"> &\n LayoutUtilProps & {\n /**\n * Controlled state\n * @default false\n */\n checked?: boolean;\n\n /**\n * Uncontrolled state\n * @default false\n */\n defaultChecked?: boolean;\n\n /**\n * Callback when radio is changed\n */\n onChange?: (e: ChangeEvent<HTMLInputElement>, state?: RadioState) => void;\n\n /**\n * Label for Radio\n * @remarks This should either be a string or have text content inside for accessibility\n */\n label?: ReactElement | string;\n\n /**\n * Error state for the radio\n * @default false\n */\n error?: boolean;\n\n /**\n * Icon overrides for checked and unchecked states\n */\n icons?: {\n /**\n * Icon to display when radio is checked\n */\n checked?: Svg;\n /**\n * Icon to display when radio is unchecked\n */\n unchecked?: Svg;\n };\n\n /**\n * Description text to display below the radio\n */\n description?: HelperProps[\"description\"];\n\n /**\n * When true, hides the radio for visual users\n * @default false\n */\n hideRadio?: boolean;\n\n /**\n * Additional className applied to the label wrapper span\n */\n labelWrapperClassName?: string;\n };\n\nconst RadioElement = forwardRef<HTMLInputElement, RadioProps>((props, ref) => {\n const { layoutStyles, componentProps } = useLayoutPropsUtil(props);\n const {\n className,\n checked,\n defaultChecked,\n value,\n icons,\n error,\n label,\n onChange,\n style,\n description,\n hideRadio = false,\n labelWrapperClassName,\n ...rest\n } = componentProps;\n\n const groupContext = useRadioGroupContext();\n\n const {\n checked: checkedIcon = Radio_checked,\n unchecked: uncheckedIcon = Radio_outline,\n } = { ...icons };\n\n const onChangeHandler = (e: ChangeEvent<HTMLInputElement>) => {\n onChange?.(e, { value, checked: e.target.checked });\n };\n\n const helperUid = useId();\n\n // Combine local error state with group error state\n const hasError = error || groupContext?.hasError;\n\n const wrapperClassNames = cx(\n styles[\"wrapper\"],\n { [styles[\"focus\"]]: hideRadio },\n className,\n );\n\n const radioClassNames = cx(styles[\"radio\"], {\n [styles[\"error\"]]: hasError,\n });\n\n const styleCombined = {\n ...style,\n ...layoutStyles,\n };\n\n return (\n <div className={wrapperClassNames} style={styleCombined} data-anv=\"radio\">\n <label className={radioClassNames}>\n <input\n type=\"radio\"\n aria-checked={checked ?? defaultChecked}\n checked={checked}\n defaultChecked={defaultChecked}\n value={value}\n onChange={onChangeHandler}\n aria-describedby={description ? helperUid : undefined}\n ref={ref}\n {...rest}\n />\n\n <span\n className={cx(styles[\"icon-wrapper\"], {\n [styles[\"sr-only\"]]: hideRadio,\n })}\n >\n <Icon\n size=\"large\"\n svg={uncheckedIcon}\n className={cx([styles[\"icon-unchecked\"]])}\n />\n\n <Icon\n size=\"large\"\n svg={checkedIcon}\n className={cx([styles[\"icon-checked\"]])}\n />\n </span>\n\n <span\n className={cx(labelWrapperClassName, {\n [styles[\"focus-label\"]]: hideRadio,\n })}\n >\n {label}\n </span>\n </label>\n\n {description ? (\n <div className={styles[\"helper-wrapper\"]}>\n <Helper id={helperUid} description={description} />\n </div>\n ) : null}\n </div>\n );\n});\n\nRadioElement.displayName = \"RadioElement\";\n\n/**\n * Radio component for single selection from a group of options.\n *\n * Features:\n * - Supports both controlled and uncontrolled modes\n * - Customizable icons for checked and unchecked states\n * - Error state with visual indicators\n * - Description text support\n * - Accessibility support with proper ARIA attributes\n * - Layout utility props for positioning and spacing\n * - Optional radio hiding for visual users\n * - Flexible labeling options\n * - Group support via Radio.Group\n *\n * @example\n * <Radio\n * label=\"Option 1\"\n * value=\"option1\"\n * checked={selectedValue === \"option1\"}\n * onChange={(e, state) => setSelectedValue(state?.value)}\n * />\n *\n * @example\n * <Radio\n * label=\"Custom styled option\"\n * value=\"custom\"\n * icons={{\n * checked: CustomCheckedIcon,\n * unchecked: CustomUncheckedIcon\n * }}\n * description=\"This option has custom styling\"\n * />\n *\n * @example\n * <Radio.Group legend=\"Choose your preference\" required>\n * <Radio label=\"Option A\" value=\"a\" />\n * <Radio label=\"Option B\" value=\"b\" />\n * <Radio label=\"Option C\" value=\"c\" />\n * </Radio.Group>\n */\nexport const Radio = RadioElement;\n"],"names":["Radio_checked","Radio_outline"],"mappings":"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"}
|
package/dist/Radio.js
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
export { R as Radio, R as default } from './Radio-
|
|
1
|
+
export { R as Radio, R as default } from './Radio-BOq9UkpC.js';
|
|
2
2
|
//# sourceMappingURL=Radio.js.map
|
|
@@ -1,11 +1,11 @@
|
|
|
1
1
|
import { jsxs, jsx } from 'react/jsx-runtime';
|
|
2
2
|
import * as React from 'react';
|
|
3
3
|
import { forwardRef, useState, useId, useRef, useEffect } from 'react';
|
|
4
|
-
import { c as cx } from './index-
|
|
4
|
+
import { c as cx } from './index-De1g9FRV.js';
|
|
5
5
|
import { t as textFieldStyles } from './TextField.module-BP-hDP5m.js';
|
|
6
6
|
import { S as SvgClose } from './close-DZj38AEh.js';
|
|
7
|
-
import { S as SrOnly } from './SrOnly-
|
|
8
|
-
import { I as Icon } from './Icon-
|
|
7
|
+
import { S as SrOnly } from './SrOnly-eUpYGpAT.js';
|
|
8
|
+
import { I as Icon } from './Icon-DuIlne4x.js';
|
|
9
9
|
import { u as useLayoutPropsUtil } from './useLayoutPropsUtil-DMDdfIah.js';
|
|
10
10
|
import { useTrackingId } from './useTrackingId.js';
|
|
11
11
|
import { u as useMergeRefs } from './useMergeRefs-Dfmtq9cI.js';
|
|
@@ -191,4 +191,4 @@ const SearchField = forwardRef(
|
|
|
191
191
|
SearchField.displayName = "SearchField";
|
|
192
192
|
|
|
193
193
|
export { SearchField as S, SvgSearch as a, SearchField$1 as b };
|
|
194
|
-
//# sourceMappingURL=SearchField-
|
|
194
|
+
//# sourceMappingURL=SearchField-im7AHGYo.js.map
|