@servicetitan/anvil2 1.46.0 → 1.46.2
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 +32 -0
- package/dist/{Alert-BNGvfMAV.js → Alert-CPOBY6O5.js} +2 -2
- package/dist/{Alert-BNGvfMAV.js.map → Alert-CPOBY6O5.js.map} +1 -1
- package/dist/Alert.js +1 -1
- package/dist/{Announcement-CoheCP1i.js → Announcement-BvzAEdx8.js} +2 -2
- package/dist/{Announcement-CoheCP1i.js.map → Announcement-BvzAEdx8.js.map} +1 -1
- package/dist/Announcement.js +1 -1
- package/dist/AnvilProvider-C_qRQnE6.js.map +1 -1
- package/dist/Avatar-CyGjhToG.js.map +1 -1
- package/dist/Avatar-D07f9NH_.js.map +1 -1
- package/dist/Badge-DCA9mfc2.js.map +1 -1
- package/dist/Breadcrumbs-C4_PEolS.js.map +1 -1
- package/dist/{Button-BxFXQ0-n.js → Button-VNQQgZ45.js} +2 -2
- package/dist/{Button-BxFXQ0-n.js.map → Button-VNQQgZ45.js.map} +1 -1
- package/dist/Button.css +48 -48
- package/dist/Button.js +1 -1
- package/dist/Button.module-C1g9rrJs.js +25 -0
- package/dist/Button.module-C1g9rrJs.js.map +1 -0
- package/dist/{ButtonCompound-BF2Q6gGX.js → ButtonCompound-BbPK-Xjj.js} +2 -2
- package/dist/{ButtonCompound-BF2Q6gGX.js.map → ButtonCompound-BbPK-Xjj.js.map} +1 -1
- package/dist/ButtonCompound.js +1 -1
- package/dist/{ButtonLink-CXv65WVV.js → ButtonLink-CqR1F5Wn.js} +3 -3
- package/dist/{ButtonLink-CXv65WVV.js.map → ButtonLink-CqR1F5Wn.js.map} +1 -1
- package/dist/ButtonLink.js +1 -1
- package/dist/{ButtonToggle-pSwg7NvT.js → ButtonToggle-PCeSG-5D.js} +3 -3
- package/dist/{ButtonToggle-pSwg7NvT.js.map → ButtonToggle-PCeSG-5D.js.map} +1 -1
- package/dist/ButtonToggle.js +1 -1
- package/dist/{Calendar-BQ5F2ENO.js → Calendar-X9qUi6Vx.js} +269 -123
- package/dist/Calendar-X9qUi6Vx.js.map +1 -0
- package/dist/Calendar.js +1 -1
- package/dist/Card-vTYeSkxt.js.map +1 -1
- package/dist/{Checkbox-DDrmVC-u.js → Checkbox-BDohwHXQ.js} +2 -2
- package/dist/{Checkbox-DDrmVC-u.js.map → Checkbox-BDohwHXQ.js.map} +1 -1
- package/dist/{Checkbox-Dl4KTwEJ.js → Checkbox-CcYtto5f.js} +2 -2
- package/dist/{Checkbox-Dl4KTwEJ.js.map → Checkbox-CcYtto5f.js.map} +1 -1
- package/dist/Checkbox.js +2 -2
- package/dist/Chip-Bz-vlQ4D.js.map +1 -1
- package/dist/{Combobox-B9nesJuc.js → Combobox-DQmW8Tyl.js} +144 -53
- package/dist/Combobox-DQmW8Tyl.js.map +1 -0
- package/dist/Combobox.js +1 -1
- package/dist/{DateField-DXxPsRtf.js → DateField-C43nfkbx.js} +7 -7
- package/dist/{DateField-DXxPsRtf.js.map → DateField-C43nfkbx.js.map} +1 -1
- package/dist/DateField.js +1 -1
- package/dist/{DateFieldRange-Xauviu1w.js → DateFieldRange-g7n5QYww.js} +8 -8
- package/dist/{DateFieldRange-Xauviu1w.js.map → DateFieldRange-g7n5QYww.js.map} +1 -1
- package/dist/DateFieldRange.js +1 -1
- package/dist/{DateFieldSingle-yLnwpVzd.js → DateFieldSingle-D3tneqeG.js} +8 -8
- package/dist/{DateFieldSingle-yLnwpVzd.js.map → DateFieldSingle-D3tneqeG.js.map} +1 -1
- package/dist/DateFieldSingle.js +1 -1
- package/dist/{DateFieldYearless-Ba7HiTiI.js → DateFieldYearless-3JBVj3wn.js} +4 -4
- package/dist/{DateFieldYearless-Ba7HiTiI.js.map → DateFieldYearless-3JBVj3wn.js.map} +1 -1
- package/dist/DateFieldYearless.js +1 -1
- package/dist/{DaysOfTheWeek-BYSYZySH.js → DaysOfTheWeek-RcPgDoM3.js} +4 -4
- package/dist/{DaysOfTheWeek-BYSYZySH.js.map → DaysOfTheWeek-RcPgDoM3.js.map} +1 -1
- package/dist/DaysOfTheWeek.js +1 -1
- package/dist/Details-CF8DImjw.js.map +1 -1
- package/dist/{Dialog-CgkrvrQu.js → Dialog-FNJ16gY6.js} +6 -6
- package/dist/{Dialog-CgkrvrQu.js.map → Dialog-FNJ16gY6.js.map} +1 -1
- package/dist/Dialog.js +1 -1
- package/dist/Divider-DJe8kLf2.js.map +1 -1
- package/dist/Dnd.js +1 -1
- package/dist/DndSort.js +2 -2
- package/dist/DndSort.js.map +1 -1
- package/dist/{Drawer-CM4ZbAro.js → Drawer-DT31CMRd.js} +6 -6
- package/dist/{Drawer-CM4ZbAro.js.map → Drawer-DT31CMRd.js.map} +1 -1
- package/dist/Drawer.js +1 -1
- package/dist/{DrawerContext-DboTgTmo.js → DrawerContext-D4tWTLVf.js} +27 -10
- package/dist/DrawerContext-D4tWTLVf.js.map +1 -0
- package/dist/{EditCard-WKzZ2XCz.js → EditCard-CZzL0nx7.js} +2 -2
- package/dist/{EditCard-WKzZ2XCz.js.map → EditCard-CZzL0nx7.js.map} +1 -1
- package/dist/EditCard.js +1 -1
- package/dist/{FieldLabel-BsbTTyom.js → FieldLabel-BP8QK5UR.js} +2 -2
- package/dist/{FieldLabel-BsbTTyom.js.map → FieldLabel-BP8QK5UR.js.map} +1 -1
- package/dist/FieldLabel.js +1 -1
- package/dist/FieldMessage-B7uQ8vmr.js.map +1 -1
- package/dist/Flex-BdQMekvA.js.map +1 -1
- package/dist/Grid-MGUC698u.js.map +1 -1
- package/dist/Helper-BkIDJqgA.js.map +1 -1
- package/dist/Icon-D8SPKeO4.js.map +1 -1
- package/dist/{InputMask-_F139qFu.js → InputMask-CPuYMcw9.js} +3 -3
- package/dist/{InputMask-_F139qFu.js.map → InputMask-CPuYMcw9.js.map} +1 -1
- package/dist/InputMask.js +1 -1
- package/dist/Layout-CUUb2PVr.js.map +1 -1
- package/dist/Link-eRsLWPaQ.js.map +1 -1
- package/dist/LinkButton-2lXfrVoU.js.map +1 -1
- package/dist/{ListView-pb3rIcze.js → ListView-BJI8BQJ-.js} +2 -2
- package/dist/{ListView-pb3rIcze.js.map → ListView-BJI8BQJ-.js.map} +1 -1
- package/dist/ListView.js +1 -1
- package/dist/Listbox-CUhMbFm2.js.map +1 -1
- package/dist/LocalizationContext-UsmB5mnR.js.map +1 -1
- package/dist/LocalizationProvider-DEZyjW5d.js.map +1 -1
- package/dist/{Menu-C8we5CHP.js → Menu-t_11BIhU.js} +10 -5
- package/dist/Menu-t_11BIhU.js.map +1 -0
- package/dist/Menu.js +1 -1
- package/dist/{NumberField-CkZZrkYC.js → NumberField-Bjf9Tyvf.js} +6 -6
- package/dist/{NumberField-CkZZrkYC.js.map → NumberField-Bjf9Tyvf.js.map} +1 -1
- package/dist/NumberField.js +1 -1
- package/dist/Overflow.js.map +1 -1
- package/dist/{Page-cKXkjMmd.js → Page-BAyXnhz2.js} +9 -9
- package/dist/Page-BAyXnhz2.js.map +1 -0
- package/dist/Page.js +1 -1
- package/dist/{Pagination-ta8a2cJN.js → Pagination-DCBic619.js} +47 -23
- package/dist/Pagination-DCBic619.js.map +1 -0
- package/dist/Pagination.css +6 -6
- package/dist/Pagination.js +1 -1
- package/dist/{Popover-r26xMIfm.js → Popover-CrksxqKk.js} +11 -5
- package/dist/Popover-CrksxqKk.js.map +1 -0
- package/dist/Popover.js +1 -1
- package/dist/PortalProvider-9lXkQ0xY.js.map +1 -1
- package/dist/{ProgressBar-DXcXZEJ2.js → ProgressBar-CgsAW2d8.js} +2 -2
- package/dist/{ProgressBar-DXcXZEJ2.js.map → ProgressBar-CgsAW2d8.js.map} +1 -1
- package/dist/ProgressBar.js +1 -1
- package/dist/{Radio-C89VCMXd.js → Radio-C_rvxw74.js} +2 -2
- package/dist/{Radio-C89VCMXd.js.map → Radio-C_rvxw74.js.map} +1 -1
- package/dist/Radio.js +2 -2
- package/dist/{RadioGroup-C_4buUtG.js → RadioGroup-DxBblSrx.js} +2 -2
- package/dist/{RadioGroup-C_4buUtG.js.map → RadioGroup-DxBblSrx.js.map} +1 -1
- package/dist/SearchField-Bb0uObwG.js.map +1 -1
- package/dist/{SegmentedControl-CsjjV1Dz.js → SegmentedControl-DC4BpdH5.js} +3 -3
- package/dist/{SegmentedControl-CsjjV1Dz.js.map → SegmentedControl-DC4BpdH5.js.map} +1 -1
- package/dist/SegmentedControl.js +1 -1
- package/dist/{SelectCard-BTYZg9TG.js → SelectCard-DunNE9R3.js} +3 -3
- package/dist/{SelectCard-BTYZg9TG.js.map → SelectCard-DunNE9R3.js.map} +1 -1
- package/dist/SelectCard.js +1 -1
- package/dist/{SelectTrigger-f1hvRrSC.js → SelectTrigger-BYysLREL.js} +2 -2
- package/dist/{SelectTrigger-f1hvRrSC.js.map → SelectTrigger-BYysLREL.js.map} +1 -1
- package/dist/SelectTrigger.js +1 -1
- package/dist/{SelectTriggerBase-DP9fmRSo.js → SelectTriggerBase-DqUpJgzk.js} +3 -3
- package/dist/{SelectTriggerBase-DP9fmRSo.js.map → SelectTriggerBase-DqUpJgzk.js.map} +1 -1
- package/dist/{SideNav-CBAzYyML.js → SideNav-B9AWmF_H.js} +2 -2
- package/dist/SideNav-B9AWmF_H.js.map +1 -0
- package/dist/SideNav.js +1 -1
- package/dist/Skeleton.js.map +1 -1
- package/dist/Spinner-wmO8Epw0.js.map +1 -1
- package/dist/SrOnly-CTsYSuby.js.map +1 -1
- package/dist/{Stepper-D-fOH9TF.js → Stepper-DHTrvfXw.js} +3 -3
- package/dist/{Stepper-D-fOH9TF.js.map → Stepper-DHTrvfXw.js.map} +1 -1
- package/dist/Stepper.js +1 -1
- package/dist/Switch-C2ddZcr9.js.map +1 -1
- package/dist/{Tab-wNucMTgo.js → Tab-0zx9hsw8.js} +44 -36
- package/dist/Tab-0zx9hsw8.js.map +1 -0
- package/dist/Tab.js +1 -1
- package/dist/Text-BqvcbXyp.js.map +1 -1
- package/dist/{TextField-D8fow9j7.js → TextField-CFWs3lm9.js} +2 -2
- package/dist/{TextField-D8fow9j7.js.map → TextField-CFWs3lm9.js.map} +1 -1
- package/dist/{TextField-BiHxlzE3.js → TextField-Cge6IRo5.js} +2 -2
- package/dist/{TextField-BiHxlzE3.js.map → TextField-Cge6IRo5.js.map} +1 -1
- package/dist/TextField.js +1 -1
- package/dist/{Textarea-BdVJJlbP.js → Textarea-CXd3NKkW.js} +2 -2
- package/dist/{Textarea-BdVJJlbP.js.map → Textarea-CXd3NKkW.js.map} +1 -1
- package/dist/Textarea.js +1 -1
- package/dist/ThemeProvider-Be3Pvtpz.js.map +1 -1
- package/dist/ThemeProviderContext-l52GohYT.js.map +1 -1
- package/dist/{TimeField-CmbErrsZ.js → TimeField-4v5aCwiG.js} +345 -355
- package/dist/TimeField-4v5aCwiG.js.map +1 -0
- package/dist/TimeField.js +1 -1
- package/dist/Toast.js +2 -2
- package/dist/{Toaster-9cpG_tWR.js → Toaster-D-rNSLTq.js} +17 -17
- package/dist/{Toaster-9cpG_tWR.js.map → Toaster-D-rNSLTq.js.map} +1 -1
- package/dist/{Toaster-B7zUwJOt.js → Toaster-bON5Xc1P.js} +2 -2
- package/dist/{Toaster-B7zUwJOt.js.map → Toaster-bON5Xc1P.js.map} +1 -1
- package/dist/{Toolbar-D4zuUFhb.js → Toolbar-B2Jsuptz.js} +14 -14
- package/dist/{Toolbar-D4zuUFhb.js.map → Toolbar-B2Jsuptz.js.map} +1 -1
- package/dist/Toolbar.js +1 -1
- package/dist/{Tooltip-BI3Xs75X.js → Tooltip-CtCLw_vx.js} +8 -2
- package/dist/{Tooltip-BI3Xs75X.js.map → Tooltip-CtCLw_vx.js.map} +1 -1
- package/dist/Tooltip.js +1 -1
- package/dist/TrackingProvider-BtSjkmpM.js.map +1 -1
- package/dist/assets/icons/st/gnav_legacy_search_filled.svg +1 -1
- package/dist/assets/icons/st/gnav_legacy_search_outline.svg +1 -1
- package/dist/beta.js +1 -1
- package/dist/childrenToString-Bz9MqbHb.js.map +1 -1
- package/dist/components/Combobox/ComboboxTypes.d.ts +10 -5
- package/dist/components/Combobox/internal/ComboboxGroupContext.d.ts +1 -1
- package/dist/components/Combobox/internal/useGroups.d.ts +2 -2
- package/dist/components/DndSort/internal/test-utils.d.ts +1 -1
- package/dist/components/TimeField/TimeField.d.ts +4 -1
- package/dist/extends-Bg2s_OKl.js.map +1 -1
- package/dist/getActiveElement-BcSyVE7S.js.map +1 -1
- package/dist/getKeyboardFocusableElements-QqcABz0D.js.map +1 -1
- package/dist/{index-V5Ez2gq_.js → index-DrM3iid4.js} +2 -2
- package/dist/{index-V5Ez2gq_.js.map → index-DrM3iid4.js.map} +1 -1
- package/dist/index-tZvMCc77.js.map +1 -1
- package/dist/{index.esm-D889iexm.js → index.esm-BwMVvxTV.js} +199 -144
- package/dist/index.esm-BwMVvxTV.js.map +1 -0
- package/dist/index.js +45 -45
- package/dist/index.js.map +1 -1
- package/dist/makeZeroShortcutPreprocessor-CxsiGTRW.js.map +1 -1
- package/dist/{proxy-CreWmH-e.js → proxy-BbFHSE6L.js} +8631 -8680
- package/dist/proxy-BbFHSE6L.js.map +1 -0
- package/dist/{use-reduced-motion-znCm41qB.js → use-reduced-motion-DSpxmqyT.js} +3 -3
- package/dist/use-reduced-motion-DSpxmqyT.js.map +1 -0
- package/dist/useAccessibleColor-BYKjkGRg.js.map +1 -1
- package/dist/useBreakpoint-Cv5fnZxs.js.map +1 -1
- package/dist/{useDateFieldOrchestration-BNJCsRkS.js → useDateFieldOrchestration-DyAc3gPJ.js} +3 -3
- package/dist/{useDateFieldOrchestration-BNJCsRkS.js.map → useDateFieldOrchestration-DyAc3gPJ.js.map} +1 -1
- package/dist/{useDialogTransitionStates-2NaE_noq.js → useDialogTransitionStates-C1TtiwA_.js} +3 -3
- package/dist/{useDialogTransitionStates-2NaE_noq.js.map → useDialogTransitionStates-C1TtiwA_.js.map} +1 -1
- package/dist/useFocusWithin-BhhgRXdZ.js.map +1 -1
- package/dist/useInfiniteCombobox-WcRgC9p6.js.map +1 -1
- package/dist/useIntersectionObserver-BEmMDO3P.js.map +1 -1
- package/dist/useLayoutPropsUtil-DjD5IMh0.js.map +1 -1
- package/dist/useMergeRefs-Bde85AWI.js.map +1 -1
- package/dist/{useOnClickOutside-BHEWMLa9.js → useOnClickOutside-B1ddwORK.js} +5 -2
- package/dist/useOnClickOutside-B1ddwORK.js.map +1 -0
- package/dist/useOptionallyControlledState-DbDuos5L.js.map +1 -1
- package/dist/usePopoverCloseDelayWorkaround-BZcjPkvT.js.map +1 -1
- package/dist/{usePopoverSupport-DIjjfodl.js → usePopoverSupport-CWTCDfN2.js} +2 -2
- package/dist/{usePopoverSupport-DIjjfodl.js.map → usePopoverSupport-CWTCDfN2.js.map} +1 -1
- package/dist/usePrefersColorScheme-_hT7dK7_.js.map +1 -1
- package/dist/usePrevious-Bvq-5auG.js.map +1 -1
- package/dist/useSize.js.map +1 -1
- package/dist/{useSwipe-CULmVQEk.js → useSwipe-Cp-CJxLU.js} +2 -2
- package/dist/{useSwipe-CULmVQEk.js.map → useSwipe-Cp-CJxLU.js.map} +1 -1
- package/dist/useSwipe.js +1 -1
- package/dist/useTrackingContext-DRwDL8DE.js.map +1 -1
- package/dist/useTrackingId.js.map +1 -1
- package/package.json +12 -18
- package/dist/Button.module-pUNSKoVC.js +0 -25
- package/dist/Button.module-pUNSKoVC.js.map +0 -1
- package/dist/Calendar-BQ5F2ENO.js.map +0 -1
- package/dist/Combobox-B9nesJuc.js.map +0 -1
- package/dist/DrawerContext-DboTgTmo.js.map +0 -1
- package/dist/Menu-C8we5CHP.js.map +0 -1
- package/dist/Page-cKXkjMmd.js.map +0 -1
- package/dist/Pagination-ta8a2cJN.js.map +0 -1
- package/dist/Popover-r26xMIfm.js.map +0 -1
- package/dist/SideNav-CBAzYyML.js.map +0 -1
- package/dist/Tab-wNucMTgo.js.map +0 -1
- package/dist/TimeField-CmbErrsZ.js.map +0 -1
- package/dist/index.esm-D889iexm.js.map +0 -1
- package/dist/proxy-CreWmH-e.js.map +0 -1
- package/dist/use-reduced-motion-znCm41qB.js.map +0 -1
- package/dist/useOnClickOutside-BHEWMLa9.js.map +0 -1
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"Popover-r26xMIfm.js","sources":["../src/internal/hooks/usePopoverTransitionStates/usePopoverTransitionStates.ts","../src/components/Popover/internal/PopoverContext.ts","../src/components/Popover/internal/usePopoverContext.tsx","../src/components/Popover/internal/PopoverLegacy/usePopoverLegacy.tsx","../src/components/Popover/internal/PopoverLegacy/usePopoverLegacyContext.tsx","../src/components/Popover/internal/PopoverLegacy/PopoverLegacyTrigger.tsx","../src/components/Popover/internal/PopoverLegacy/PopoverLegacyContent.tsx","../src/components/Popover/internal/PopoverLegacy/PopoverLegacyClose.tsx","../src/components/Popover/internal/PopoverLegacy/PopoverLegacyButton.tsx","../src/components/Popover/internal/PopoverLegacy/PopoverLegacy.tsx","../src/components/Popover/PopoverClose.tsx","../src/components/Popover/PopoverButton.tsx","../src/components/Popover/internal/compareElements.ts","../src/components/Popover/PopoverContent.tsx","../src/components/Popover/PopoverTrigger.tsx","../src/components/Popover/Popover.tsx"],"sourcesContent":["import {\n useOpenCloseTransitionStates,\n type OpenCloseTransitionStateEffects,\n} from \"../useOpenCloseTransitionStates\";\n\n/**\n * Effects configuration for dialog transition states\n * @property {() => void} [onOpenAnimationStart] - Callback when opening animation starts\n * @property {() => void} [onCloseAnimationStart] - Callback when closing animation starts\n * @property {() => void} [onOpenAnimationComplete] - Callback when opening animation completes\n * @property {() => void} [onCloseAnimationComplete] - Callback when closing animation completes\n */\n\n/**\n * Custom hook for managing popover transition states and animations.\n *\n * Features:\n * - Manages popover open/close transition states\n * - Handles animation timing based on CSS animation duration\n * - Provides callbacks for animation lifecycle events\n * - Supports controlled popover state management\n * - Automatically handles showPopover() and closePopover() calls\n * - Provides utility flags for open/closed states\n *\n * @param popover - The popover element\n * @param openProp - The open prop controlling popover visibility\n * @param options - Additional, optional options including callbacks for animation start, complete, and initialization\n * @returns Object containing popover state, control functions, and utility flags\n */\nexport const usePopoverTransitionStates = (\n popover: HTMLElement | undefined,\n openProp: boolean | undefined,\n options: OpenCloseTransitionStateEffects = {},\n) => {\n const { onOpenAnimationStart, onCloseAnimationComplete } = options;\n return useOpenCloseTransitionStates(openProp, {\n ...options,\n onOpenAnimationStart: () => {\n if (!popover) return;\n onOpenAnimationStart?.();\n },\n onCloseAnimationComplete: () => {\n if (!popover) return;\n onCloseAnimationComplete?.();\n },\n durationMs: () => {\n if (!popover) return 0;\n const duration = window.getComputedStyle(popover).animationDuration;\n return parseFloat(duration) * 1000;\n },\n });\n};\n","import {\n createContext,\n CSSProperties,\n Dispatch,\n RefObject,\n SetStateAction,\n} from \"react\";\nimport { PopoverProps } from \"../Popover\";\nimport { Placement } from \"@floating-ui/react-dom\";\nimport { FocusableElement } from \"tabbable\";\n\nexport type PopoverContextProps = {\n popoverId: string;\n invoker?: HTMLElement;\n setInvoker?: Dispatch<SetStateAction<HTMLElement | undefined>>;\n popover?: HTMLElement;\n setPopover?: Dispatch<SetStateAction<HTMLElement | undefined>>;\n rootNode?: Node;\n setRootNode?: Dispatch<SetStateAction<Node | undefined>>;\n arrowElement?: HTMLSpanElement;\n setArrowElement?: Dispatch<SetStateAction<HTMLSpanElement | undefined>>;\n openState: boolean;\n setOpenState: Dispatch<SetStateAction<boolean>>;\n popoverStyle?: CSSProperties;\n placement?: Placement;\n openPopover: () => void;\n closePopover: (replacementFn?: () => void) => void;\n onClose?: PopoverProps[\"onClose\"];\n openOnHover: PopoverProps[\"openOnHover\"];\n controlled: boolean;\n disableCloseOnClickOutside?: PopoverProps[\"disableCloseOnClickOutside\"];\n disableCloseOnEscape?: PopoverProps[\"disableCloseOnEscape\"];\n modal?: PopoverProps[\"modal\"];\n noPadding?: PopoverProps[\"noPadding\"];\n fillAvailableHeight: PopoverProps[\"fillAvailableHeight\"];\n maxHeight: PopoverProps[\"maxHeight\"];\n matchReferenceWidth: PopoverProps[\"matchReferenceWidth\"];\n fixedWidth: PopoverProps[\"fixedWidth\"];\n disableCaret: PopoverProps[\"disableCaret\"];\n disableFlipFallback: PopoverProps[\"disableFlipFallback\"];\n disableFocusLock: PopoverProps[\"disableFocusLock\"];\n disableTriggerFocus: PopoverProps[\"disableTriggerFocus\"];\n arrowRef: RefObject<HTMLSpanElement>;\n resetKey: number;\n focusables: FocusableElement[] | null;\n};\n\nexport const PopoverContext = createContext<PopoverContextProps | null>(null);\n","import { useRef, useContext, useLayoutEffect, KeyboardEvent } from \"react\";\nimport { PopoverContext } from \"./PopoverContext\";\n\nexport type dataStateType = \"open\" | \"closed\";\n\nexport function usePopoverContext() {\n const context = useContext(PopoverContext);\n const invokerRef = useRef<HTMLButtonElement>(null);\n const popoverRef = useRef<HTMLDivElement>(null);\n const arrowRef = useRef<HTMLSpanElement>(null);\n\n useLayoutEffect(() => {\n if (!invokerRef.current) return;\n context?.setInvoker?.(invokerRef.current);\n }, [context, invokerRef]);\n\n useLayoutEffect(() => {\n if (!popoverRef.current) return;\n context?.setPopover?.(popoverRef.current);\n context?.setRootNode?.(popoverRef.current.getRootNode());\n if (!arrowRef.current) return;\n context?.setArrowElement?.(arrowRef.current);\n }, [context, popoverRef]);\n\n const onMouseEnterHandler = () => {\n if (!context?.openOnHover) return;\n context.openPopover();\n };\n const onMouseLeaveHandler = () => {\n if (!context?.openOnHover) return;\n context.closePopover();\n };\n\n const onFocusHandler = () => {\n if (context?.controlled || !context?.openOnHover) return;\n context?.openPopover();\n };\n const onBlurHandler = () => {\n if (\n context?.controlled ||\n context?.disableCloseOnClickOutside ||\n !context?.openOnHover\n )\n return;\n context?.closePopover();\n };\n\n const onKeyDownHandler = (e: KeyboardEvent) => {\n if (!context?.openState) return;\n if (\n e.code === \"Escape\" &&\n !context?.disableCloseOnEscape &&\n !context?.controlled\n ) {\n context?.closePopover();\n return;\n }\n const focusables = context.focusables;\n\n if (e.code === \"Tab\" && e.shiftKey && context?.modal && focusables) {\n focusables[focusables.length - 1].focus();\n e.preventDefault();\n return;\n }\n };\n\n const onClickHandler = () => {\n context?.invoker?.focus();\n if (context?.openOnHover) return;\n if (context?.controlled === false) {\n if (context?.openState) {\n context?.closePopover();\n } else {\n context?.openPopover();\n }\n return;\n }\n };\n\n if (!context || !invokerRef || !popoverRef) return;\n return {\n invoker: {\n ref: invokerRef,\n element: context.invoker,\n onMouseEnter: onMouseEnterHandler,\n onMouseLeave: onMouseLeaveHandler,\n onKeyDown: onKeyDownHandler,\n onClick: onClickHandler,\n onFocus: onFocusHandler,\n onBlur: onBlurHandler,\n \"aria-haspopup\": true,\n \"aria-expanded\": context.openState,\n \"aria-details\": context.popoverId,\n \"data-state\": context.openState ? \"open\" : (\"closed\" as dataStateType),\n },\n popover: {\n ref: popoverRef,\n element: context.popover,\n id: context.popoverId,\n onClose: context.onClose,\n show: context.openPopover,\n close: context.closePopover,\n noPadding: context.noPadding,\n style: context.popoverStyle,\n arrowRef: arrowRef,\n key: context.resetKey,\n },\n rootNode: context.rootNode,\n onClose: context.onClose,\n setOpen: context.setOpenState,\n open: context.openState,\n openOnHover: context.openOnHover,\n controlled: context.controlled,\n disableCloseOnClickOutside: context.disableCloseOnClickOutside,\n disableCloseOnEscape: context.disableCloseOnEscape,\n modal: context.modal,\n placement: context.placement,\n disableCaret: context.disableCaret,\n noPadding: context.noPadding,\n fillAvailableHeight: context.fillAvailableHeight,\n maxHeight: context.maxHeight,\n matchReferenceWidth: context.matchReferenceWidth,\n fixedWidth: context.fixedWidth,\n disableFlipFallback: context.disableFlipFallback,\n disableFocusLock: context.modal,\n disableTriggerFocus: context.disableTriggerFocus,\n focusables: context.focusables,\n };\n}\n","import { useState, useMemo, useRef, ReactNode } from \"react\";\nimport {\n useFloating,\n autoUpdate,\n offset,\n flip,\n shift,\n useClick,\n useDismiss,\n useRole,\n useInteractions,\n Placement,\n useHover,\n arrow,\n size,\n safePolygon,\n limitShift,\n type UseFloatingOptions,\n type UseDismissProps,\n} from \"@floating-ui/react\";\nimport { DisableCloseOnEscapeOrClickProps } from \"../../../../types\";\n\nexport type PopoverLegacyProps = DisableCloseOnEscapeOrClickProps & {\n children?: ReactNode;\n /**\n * Traps focus inside the floating element and outside content cannot be accessed\n */\n modal?: boolean;\n /**\n * Disables the shift of floating element\n * @internal\n */\n disableShift?: boolean;\n /**\n * Disables the flip of floating element\n * @internal\n */\n disableFlip?: boolean;\n /**\n * Disables the flip cross-axis fallback of floating element\n * @internal\n */\n disableFlipFallback?: boolean;\n /**\n * Changes interaction to use hover\n */\n openOnHover?: boolean;\n /**\n * Changes height and positioning for select/combobox\n */\n fillAvailableHeight?: boolean;\n maxHeight?: number | string;\n fitScreen?: boolean;\n minHeight?: number | string;\n matchReferenceWidth?: boolean;\n fixedWidth?: boolean;\n placement?: Placement;\n open?: boolean;\n defaultOpen?: boolean;\n onOpenChange?: UseFloatingOptions[\"onOpenChange\"];\n onOutsidePress?: Exclude<UseDismissProps[\"outsidePress\"], boolean>;\n /** This doesn't do anything for older browser */\n delay?: number;\n /**\n * Fires when the floating element is requests to be closed\n * Note: this does not fire when asTooltip is true and mouseleaves to close\n * eg. on clickoutside, [esc] to close, or by <Popover.Close>\n */\n onClose?: () => void;\n disableCaret?: boolean;\n noPadding?: boolean;\n disableAutoUpdate?: boolean;\n disableFocusLock?: boolean;\n disableTriggerFocus?: boolean;\n root?: HTMLElement | React.MutableRefObject<HTMLElement | null> | null;\n};\n\nexport function usePopoverLegacy({\n defaultOpen,\n placement = \"bottom\",\n modal,\n open: controlledOpen,\n onOpenChange: setControlledOpen,\n onOutsidePress,\n onClose,\n disableCloseOnClickOutside,\n disableCloseOnEscape,\n openOnHover,\n fillAvailableHeight,\n fitScreen,\n maxHeight,\n minHeight = \"2.875rem\",\n matchReferenceWidth,\n fixedWidth,\n disableCaret,\n noPadding,\n disableShift,\n disableFlip,\n disableFlipFallback,\n disableAutoUpdate,\n disableFocusLock,\n disableTriggerFocus,\n root,\n}: PopoverLegacyProps = {}) {\n const [uncontrolledOpen, setUncontrolledOpen] = useState(defaultOpen);\n const [labelId, setLabelId] = useState<string | undefined>();\n const [descriptionId, setDescriptionId] = useState<string | undefined>();\n\n const open = controlledOpen ?? uncontrolledOpen;\n const setOpen = setControlledOpen ?? setUncontrolledOpen;\n\n const arrowRef = useRef(null);\n\n const processMinHeight =\n typeof minHeight === \"string\" ? minHeight : `${minHeight}px`;\n\n const data = useFloating({\n placement,\n open,\n onOpenChange: setOpen,\n whileElementsMounted: !disableAutoUpdate ? autoUpdate : undefined,\n middleware: [\n offset(8),\n size({\n padding: 5,\n apply({ rects, availableHeight, elements }) {\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 zIndex: 1,\n });\n },\n }),\n flip({\n mainAxis: !disableFlip,\n crossAxis: false,\n fallbackAxisSideDirection: disableFlipFallback ? \"none\" : \"end\",\n padding: 5,\n }),\n shift({\n padding: 5,\n mainAxis: !disableShift,\n crossAxis: false,\n limiter: limitShift({\n mainAxis: !disableShift,\n }),\n }),\n arrow({ element: !disableCaret ? arrowRef : null, padding: 5 }),\n ],\n });\n\n const context = data.context;\n\n const click = useClick(context, {\n enabled: controlledOpen == null && !openOnHover,\n });\n\n const hover = useHover(context, {\n enabled: controlledOpen == null && !!openOnHover,\n handleClose: safePolygon(),\n });\n\n const dismiss = useDismiss(context, {\n escapeKey: !disableCloseOnEscape,\n outsidePress: (event) => {\n if (disableCloseOnClickOutside) {\n return false;\n }\n\n // if onOutsidePress exists and calling it returns falsy, then skip\n // calling onClose and setOpen and return the falsy value to outsidePress\n const result =\n typeof onOutsidePress === \"function\" ? onOutsidePress?.(event) : true;\n\n if (!result) {\n return result;\n } else {\n onClose?.();\n setOpen(false);\n return result;\n }\n },\n });\n\n const role = useRole(context);\n\n const interactions = useInteractions([click, hover, dismiss, role]);\n\n return useMemo(\n () => ({\n open,\n setOpen,\n onClose,\n ...interactions,\n ...data,\n modal,\n labelId,\n descriptionId,\n setLabelId,\n setDescriptionId,\n arrowRef,\n disableCaret,\n noPadding,\n fillAvailableHeight,\n maxHeight,\n matchReferenceWidth,\n fixedWidth,\n disableFlipFallback,\n disableAutoUpdate,\n disableFocusLock,\n disableTriggerFocus,\n root,\n }),\n [\n open,\n setOpen,\n onClose,\n interactions,\n data,\n modal,\n labelId,\n descriptionId,\n disableCaret,\n noPadding,\n fillAvailableHeight,\n maxHeight,\n matchReferenceWidth,\n fixedWidth,\n disableFlipFallback,\n disableAutoUpdate,\n disableFocusLock,\n disableTriggerFocus,\n root,\n ],\n );\n}\n","import { SetStateAction, Dispatch, createContext, useContext } from \"react\";\n\nimport { usePopoverLegacy } from \"./usePopoverLegacy\";\nimport { ThemeProviderContextProps } from \"../../../../providers\";\n\nexport type PopoverLegacyContextType =\n | (ReturnType<typeof usePopoverLegacy> & {\n setLabelId: Dispatch<SetStateAction<string | undefined>>;\n setDescriptionId: Dispatch<SetStateAction<string | undefined>>;\n theme?: ThemeProviderContextProps[\"theme\"];\n mode?: ThemeProviderContextProps[\"mode\"];\n })\n | null;\n\nexport const PopoverLegacyContext =\n createContext<PopoverLegacyContextType>(null);\n\nexport const usePopoverLegacyContext = () => {\n const context = useContext(PopoverLegacyContext);\n\n if (context == null) {\n throw new Error(\"Popover components must be wrapped in <Popover />\");\n }\n\n return context;\n};\n","import { ReactElement, useRef, ComponentPropsWithRef } from \"react\";\nimport { usePopoverLegacyContext } from \"./usePopoverLegacyContext\";\nimport { useMergeRefs } from \"../../../../hooks\";\n\ntype PopoverLegacyTriggerDataType = {\n \"data-state\": \"open\" | \"closed\";\n} & ComponentPropsWithRef<any>;\n\nexport type PopoverLegacyTriggerProps = {\n children: (data: PopoverLegacyTriggerDataType) => ReactElement;\n};\n\nexport const PopoverLegacyTrigger = function PopoverLegacyTrigger(\n props: PopoverLegacyTriggerProps,\n) {\n const { children } = props;\n const context = usePopoverLegacyContext();\n const ref = useRef(null);\n const mergedRef = useMergeRefs([context.refs.setReference, ref]);\n\n return children({\n \"data-state\": context.open ? \"open\" : \"closed\",\n \"data-anv\": \"popover-trigger\",\n ...context.getReferenceProps({ ref: mergedRef }),\n });\n};\n","import { forwardRef, HTMLProps, KeyboardEvent, useContext } from \"react\";\nimport {\n FloatingPortal,\n FloatingFocusManager,\n FloatingArrow,\n} from \"@floating-ui/react\";\nimport { usePopoverLegacyContext } from \"./usePopoverLegacyContext\";\nimport styles from \"./PopoverLegacy.module.scss\";\nimport cx from \"classnames\";\nimport { useMergeRefs } from \"../../../../hooks\";\nimport { ThemeProvider } from \"../../../../providers\";\nimport { PortalProviderContext } from \"../../../../providers/PortalProvider\";\nimport { DialogContext } from \"../../../Dialog/internal/DialogContext\";\nimport { DrawerContext } from \"../../../Drawer/internal/DrawerContext\";\n\nexport type PopoverLegacyContentProps = Omit<HTMLProps<HTMLDivElement>, \"ref\">;\n\nexport const PopoverLegacyContent = forwardRef<\n HTMLDivElement,\n PopoverLegacyContentProps\n>(function PopoverContent({ className, style, ...props }, propRef) {\n const {\n context: floatingContext,\n theme,\n mode,\n disableCaret,\n noPadding,\n onClose,\n disableFocusLock,\n disableTriggerFocus,\n root,\n ...context\n } = usePopoverLegacyContext();\n const dialogContext = useContext(DialogContext);\n const drawerContext = useContext(DrawerContext);\n const { root: portalRoot } = useContext(PortalProviderContext);\n\n const ref = useMergeRefs([context.refs.setFloating, propRef]);\n\n if (!floatingContext.open) return null;\n if (dialogContext && !dialogContext?.ref?.current) return null;\n\n const popoverClassNames = cx(className, styles[\"content-legacy\"], {\n [styles[\"no-padding\"]]: noPadding,\n });\n\n const onKeyDownHandler = (e: KeyboardEvent<HTMLDivElement>) => {\n if (e.code === \"Escape\") {\n onClose?.();\n }\n };\n\n return (\n <FloatingPortal\n root={\n root ??\n dialogContext?.ref?.current ??\n drawerContext?.ref?.current ??\n portalRoot\n }\n >\n <FloatingFocusManager\n context={floatingContext}\n modal={context.modal}\n order={disableTriggerFocus ? [\"content\"] : [\"reference\", \"content\"]}\n disabled={disableFocusLock}\n >\n <ThemeProvider theme={theme} mode={mode}>\n <div\n ref={ref}\n data-anv=\"popover-content\"\n style={{ ...context.floatingStyles, ...style }}\n aria-labelledby={context.labelId}\n aria-describedby={context.descriptionId}\n className={popoverClassNames}\n {...context.getFloatingProps(props)}\n onKeyDown={onKeyDownHandler}\n role=\"presentation\"\n >\n <div className={styles[\"scroller-legacy\"]}>{props.children}</div>\n {!disableCaret && (\n <FloatingArrow\n ref={context.arrowRef}\n context={floatingContext}\n className={styles[\"arrow-legacy\"]}\n />\n )}\n </div>\n </ThemeProvider>\n </FloatingFocusManager>\n </FloatingPortal>\n );\n});\n","import { forwardRef } from \"react\";\n\nimport { usePopoverLegacyContext } from \"./usePopoverLegacyContext\";\nimport { Button, ButtonProps } from \"../../../Button\";\n\nexport type PopoverLegacyCloseProps = ButtonProps;\nexport const PopoverLegacyClose = forwardRef<\n HTMLButtonElement,\n PopoverLegacyCloseProps\n>(function PopoverClose(props, ref) {\n const { setOpen, onClose } = usePopoverLegacyContext();\n return (\n <Button\n ref={ref}\n data-anv=\"popover-close\"\n {...props}\n onClick={(event) => {\n props.onClick?.(event);\n onClose?.();\n setOpen(false);\n }}\n />\n );\n});\n","import { forwardRef } from \"react\";\nimport { usePopoverLegacyContext } from \"./usePopoverLegacyContext\";\nimport { Button, ButtonProps } from \"../../../Button\";\nimport { useMergeRefs } from \"../../../../hooks\";\n\nexport type PopoverLegacyButtonProps = ButtonProps;\n\nexport const PopoverLegacyButton = forwardRef<\n HTMLButtonElement,\n PopoverLegacyButtonProps\n>(function PopoverButton(props, ref) {\n const { children, size, ...rest } = props;\n const context = usePopoverLegacyContext();\n const childrenRef = (children as any)?.ref;\n const mergedRef = useMergeRefs([context.refs.setReference, ref, childrenRef]);\n\n return (\n <Button\n ref={mergedRef}\n size={size}\n data-state={context.open ? \"open\" : \"closed\"}\n data-anv=\"popover-button\"\n {...context.getReferenceProps(rest)}\n >\n {children}\n </Button>\n );\n});\n","import { useContext, useMemo } from \"react\";\nimport { usePopoverLegacy, PopoverLegacyProps } from \"./usePopoverLegacy\";\nimport { PopoverLegacyContext } from \"./usePopoverLegacyContext\";\nimport { PopoverLegacyTrigger } from \"./PopoverLegacyTrigger\";\nimport { PopoverLegacyContent } from \"./PopoverLegacyContent\";\nimport { PopoverLegacyClose } from \"./PopoverLegacyClose\";\nimport { PopoverLegacyButton } from \"./PopoverLegacyButton\";\nimport { ThemeProviderContext } from \"../../../../providers/ThemeProvider/internal/ThemeProviderContext\";\n\nexport function PopoverLegacyElement({\n children,\n modal,\n ...restOptions\n}: PopoverLegacyProps) {\n const popover = usePopoverLegacy({ modal, ...restOptions });\n const { theme, mode = \"light\" } = useContext(ThemeProviderContext);\n const value = useMemo(\n () => ({ ...popover, theme, mode }),\n [mode, popover, theme],\n );\n return (\n <PopoverLegacyContext.Provider value={value}>\n {children}\n </PopoverLegacyContext.Provider>\n );\n}\n\nexport const PopoverLegacy = Object.assign(PopoverLegacyElement, {\n Trigger: PopoverLegacyTrigger,\n Close: PopoverLegacyClose,\n Content: PopoverLegacyContent,\n Button: PopoverLegacyButton,\n});\n","import { forwardRef } from \"react\";\n\nimport { Button, ButtonProps } from \"../Button\";\nimport { usePopoverContext } from \"./internal/usePopoverContext\";\nimport { supportsPopover, childrenToString } from \"../../internal/functions\";\nimport {\n PopoverLegacyClose,\n PopoverLegacyCloseProps,\n} from \"./internal/PopoverLegacy\";\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 * - Automatic popover closing on click\n * - Supports all Button component props and styling\n * - Controlled and uncontrolled mode support\n * - Legacy popover support with fallback\n * - Context integration with parent popover\n * - Accessibility support with proper button semantics\n * - Delayed closing for controlled mode\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 * @example\n * <Popover.Close onClick={() => console.log('Custom close handler')}>\n * Close with custom handler\n * </Popover.Close>\n */\nexport const PopoverClose = forwardRef<HTMLButtonElement, PopoverCloseProps>(\n function PopoverClose(props, ref) {\n const { onClick, ...rest } = props;\n const context = usePopoverContext();\n\n const data = {\n children: childrenToString(props.children),\n };\n\n const trackingId = useTrackingId({\n name: \"PopoverClose\",\n data,\n hasOverride: !!props[\"data-tracking-id\"],\n });\n\n if (!supportsPopover())\n return (\n <PopoverLegacyClose {...(props as PopoverLegacyCloseProps)} ref={ref} />\n );\n return (\n <Button\n ref={ref}\n data-tracking-id={trackingId}\n data-anv=\"popover-close\"\n {...rest}\n onClick={(event) => {\n onClick?.(event);\n if (context?.controlled) {\n setTimeout(() => {\n context?.onClose?.();\n }, 100);\n return;\n }\n context?.popover.close();\n }}\n />\n );\n },\n);\n\nPopoverClose.displayName = \"PopoverClose\";\n","import { forwardRef, MouseEvent, FocusEvent, KeyboardEvent } from \"react\";\nimport { Button, ButtonProps } from \"../Button\";\nimport { useMergeRefs, useTrackingId } from \"../../hooks\";\nimport { usePopoverContext } from \"./internal/usePopoverContext\";\nimport {\n PopoverLegacyButton,\n PopoverLegacyButtonProps,\n} from \"./internal/PopoverLegacy\";\nimport { supportsPopover, 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 * - Automatic popover opening on click\n * - Hover interaction support for tooltip mode\n * - Focus management and keyboard navigation\n * - Accessibility attributes (aria-haspopup, aria-expanded, aria-details)\n * - Legacy popover support with fallback\n * - Context integration with parent popover\n * - Event handling for mouse, keyboard, and focus events\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 * @example\n * <Popover.Button onClick={() => console.log('Custom click handler')}>\n * Custom handler\n * </Popover.Button>\n */\nexport const PopoverButton = forwardRef<HTMLButtonElement, PopoverButtonProps>(\n function PopoverButton(props, ref) {\n const {\n children,\n size,\n onMouseEnter,\n onMouseLeave,\n onClick,\n onKeyDown,\n onFocus,\n onBlur,\n ...rest\n } = props;\n const context = usePopoverContext();\n\n const data = {\n children: childrenToString(props.children),\n appearance: props.appearance,\n icon: props.icon,\n size: props.size,\n type: props.type,\n };\n\n const trackingId = useTrackingId({\n name: \"PopoverButton\",\n data,\n hasOverride: !!props[\"data-tracking-id\"],\n });\n\n const onMouseEnterHandler = (e: MouseEvent<HTMLButtonElement>) => {\n onMouseEnter?.(e);\n context?.invoker.onMouseEnter();\n };\n const onMouseLeaveHandler = (e: MouseEvent<HTMLButtonElement>) => {\n onMouseLeave?.(e);\n context?.invoker.onMouseLeave();\n };\n const onFocusHandler = (e: FocusEvent<HTMLButtonElement>) => {\n onFocus?.(e);\n context?.invoker.onFocus();\n };\n const onBlurHandler = (e: FocusEvent<HTMLButtonElement>) => {\n onBlur?.(e);\n context?.invoker.onBlur();\n };\n const onKeyDownHandler = (e: KeyboardEvent<HTMLButtonElement>) => {\n onKeyDown?.(e);\n context?.invoker.onKeyDown(e);\n };\n\n const onClickHandler = (e: MouseEvent<HTMLButtonElement>) => {\n onClick?.(e);\n context?.invoker.onClick();\n };\n\n const buttonRef = useMergeRefs([context?.invoker.ref, ref]);\n\n if (!supportsPopover())\n return (\n <PopoverLegacyButton\n {...(props as PopoverLegacyButtonProps)}\n ref={ref}\n />\n );\n\n return (\n <Button\n ref={buttonRef}\n size={size}\n onClick={onClickHandler}\n onKeyDown={onKeyDownHandler}\n onMouseEnter={onMouseEnterHandler}\n onMouseLeave={onMouseLeaveHandler}\n onFocus={onFocusHandler}\n onBlur={onBlurHandler}\n data-anv=\"popover-button\"\n data-tracking-id={trackingId}\n aria-haspopup={context?.invoker[\"aria-haspopup\"]}\n aria-expanded={context?.invoker[\"aria-expanded\"]}\n aria-details={context?.invoker[\"aria-details\"]}\n data-state={context?.invoker[\"data-state\"]}\n {...rest}\n >\n {children}\n </Button>\n );\n },\n);\n\nPopoverButton.displayName = \"PopoverButton\";\n","export function compareElements(\n el1: HTMLElement,\n el2: HTMLElement,\n excludeAttributes: string[] = [],\n): boolean {\n // Check if both elements are valid and of the same tag name\n if (!el1 || !el2 || el1.tagName !== el2.tagName) {\n return false;\n }\n\n // Helper to filter attributes\n const getFilteredAttributes = (\n attrs: NamedNodeMap,\n ): Record<string, string> => {\n const filtered: Record<string, string> = {};\n for (let i = 0; i < attrs.length; i++) {\n const attr = attrs[i];\n if (!excludeAttributes.includes(attr.name)) {\n filtered[attr.name] = attr.value;\n }\n }\n return filtered;\n };\n\n // Compare attributes (excluding specified ones)\n const filteredAttrs1 = getFilteredAttributes(el1.attributes);\n const filteredAttrs2 = getFilteredAttributes(el2.attributes);\n\n const keys1 = Object.keys(filteredAttrs1);\n const keys2 = Object.keys(filteredAttrs2);\n\n if (keys1.length !== keys2.length) return false;\n\n for (const key of keys1) {\n if (filteredAttrs1[key] !== filteredAttrs2[key]) {\n return false;\n }\n }\n\n // Compare text content (if only text)\n const isOnlyText1 =\n el1.childNodes.length === 1 &&\n el1.childNodes[0].nodeType === Node.TEXT_NODE;\n const isOnlyText2 =\n el2.childNodes.length === 1 &&\n el2.childNodes[0].nodeType === Node.TEXT_NODE;\n\n if (isOnlyText1 && isOnlyText2) {\n if (el1.textContent?.trim() !== el2.textContent?.trim()) {\n return false;\n }\n }\n\n // Compare child elements recursively\n const children1 = el1.children;\n const children2 = el2.children;\n\n if (children1.length !== children2.length) return false;\n\n for (let i = 0; i < children1.length; i++) {\n if (\n !compareElements(\n children1[i] as HTMLElement,\n children2[i] as HTMLElement,\n excludeAttributes,\n )\n ) {\n return false;\n }\n }\n\n return true;\n}\n","import {\n ComponentPropsWithoutRef,\n forwardRef,\n MouseEvent,\n KeyboardEvent,\n useRef,\n FocusEvent,\n RefObject,\n} from \"react\";\nimport styles from \"./Popover.module.scss\";\nimport cx from \"classnames\";\nimport { useMergeRefs } from \"../../hooks\";\nimport { usePopoverContext } from \"./internal/usePopoverContext\";\nimport { compareElements } from \"./internal/compareElements\";\nimport { supportsPopover } from \"../../internal/functions\";\nimport {\n PopoverLegacyContent,\n PopoverLegacyContentProps,\n} from \"./internal/PopoverLegacy\";\n\n/**\n * Props for the PopoverContent component\n * @extends ComponentPropsWithoutRef<\"div\">\n */\nexport type PopoverContentProps = Omit<\n ComponentPropsWithoutRef<\"div\">,\n \"popover\"\n> & {\n /**\n * Reference to the scrollable content area\n */\n scrollerRef?: RefObject<HTMLDivElement>;\n};\n\n/**\n * PopoverContent component for the main popover content area.\n *\n * Features:\n * - Automatic positioning and sizing based on trigger\n * - Screen boundary detection and fitting\n * - Scroll handling with custom scroller reference\n * - Focus management and keyboard navigation\n * - Hover interaction support for tooltip mode\n * - Escape key handling for closing\n * - Tab key trapping for modal popovers\n * - Arrow/caret indicator with automatic positioning\n * - Legacy popover support with fallback\n * - Context integration with parent popover\n * - Accessibility support with proper ARIA roles\n *\n * @example\n * <Popover.Content>\n * <p>This is the popover content</p>\n * <Popover.Close>Close</Popover.Close>\n * </Popover.Content>\n *\n * @example\n * <Popover.Content scrollerRef={scrollRef}>\n * <div style={{ height: '200px', overflow: 'auto' }}>\n * {longContent}\n * </div>\n * </Popover.Content>\n */\nexport const PopoverContent = forwardRef<HTMLDivElement, PopoverContentProps>(\n function PopoverContent(props, ref) {\n const {\n children,\n className,\n style,\n onMouseEnter,\n onMouseLeave,\n onKeyDown,\n onFocus,\n onBlur,\n onScroll,\n onScrollCapture,\n scrollerRef,\n ...rest\n } = props;\n const context = usePopoverContext();\n const popoverClassNames = cx(className, styles[\"content\"], {\n [styles[\"no-padding\"]]: context?.noPadding,\n });\n const childrenRef = useRef<HTMLDivElement>(null);\n const combinedStyles = {\n ...style,\n ...context?.popover.style,\n };\n\n const focusables = context?.focusables;\n const onMouseEnterHandler = (e: MouseEvent<HTMLDivElement>) => {\n onMouseEnter?.(e);\n if (!context?.openOnHover) return;\n context.popover.show();\n };\n const onMouseLeaveHandler = (e: MouseEvent<HTMLDivElement>) => {\n onMouseLeave?.(e);\n if (!context?.openOnHover) return;\n context.popover.close();\n };\n const onFocusHandler = (e: FocusEvent<HTMLDivElement>) => {\n onFocus?.(e);\n context?.popover.show();\n };\n const onBlurHandler = (e: FocusEvent<HTMLDivElement>) => {\n onBlur?.(e);\n };\n\n const onKeyDownHandler = (e: KeyboardEvent<HTMLDivElement>) => {\n onKeyDown?.(e);\n if (e.code === \"Escape\" && !context?.disableCloseOnEscape) {\n context?.popover.close();\n }\n if (!context?.modal) {\n if (context?.controlled) {\n return;\n }\n if (e.code === \"Tab\" && !e.shiftKey) {\n if (\n focusables &&\n compareElements(\n (context.rootNode as ShadowRoot | Document)\n ?.activeElement as HTMLElement,\n (focusables as HTMLElement[])[focusables.length - 1],\n [\"tabindex\"],\n )\n ) {\n context.popover.close();\n }\n }\n if (e.code === \"Tab\" && e.shiftKey) {\n if (\n focusables &&\n compareElements(\n (context.rootNode as ShadowRoot | Document)\n .activeElement as HTMLElement,\n (focusables as HTMLElement[])[0],\n [\"tabindex\"],\n )\n ) {\n context.popover.close();\n }\n }\n return;\n }\n if (e.code === \"Tab\" && !e.shiftKey) {\n if (\n focusables &&\n compareElements(\n (context.rootNode as ShadowRoot | Document)\n ?.activeElement as HTMLElement,\n (focusables as HTMLElement[])[focusables.length - 1],\n [\"tabindex\"],\n )\n ) {\n if (context.disableTriggerFocus) {\n focusables[0].focus();\n } else {\n context.invoker.element?.focus();\n context.popover.show();\n }\n e.preventDefault();\n }\n }\n if (e.code === \"Tab\" && e.shiftKey) {\n if (\n focusables &&\n compareElements(\n (context.rootNode as ShadowRoot | Document)\n .activeElement as HTMLElement,\n (focusables as HTMLElement[])[0],\n [\"tabindex\"],\n )\n ) {\n if (context.disableTriggerFocus) {\n (focusables[focusables.length - 1] as HTMLButtonElement).focus();\n } else {\n context.invoker.element?.focus();\n context.popover.show();\n }\n e.preventDefault();\n }\n }\n };\n\n const manualPopover =\n context?.controlled ||\n context?.disableCloseOnClickOutside ||\n context?.disableCloseOnEscape ||\n context?.openOnHover;\n\n const popoverContentRef = useMergeRefs([context?.popover.ref, ref]);\n const popoverScrollerRef = useMergeRefs([childrenRef, scrollerRef]);\n\n if (!supportsPopover())\n return (\n <PopoverLegacyContent\n {...(props as PopoverLegacyContentProps)}\n ref={ref}\n />\n );\n\n return (\n <div\n popover={manualPopover ? \"manual\" : \"auto\"}\n id={context?.popover.id}\n data-anv=\"popover-content\"\n className={popoverClassNames}\n ref={popoverContentRef}\n style={combinedStyles}\n onMouseEnter={onMouseEnterHandler}\n onMouseLeave={onMouseLeaveHandler}\n onBlur={onBlurHandler}\n onFocus={onFocusHandler}\n role=\"region\"\n {...rest}\n >\n <div\n className={styles.scroller}\n role=\"presentation\"\n tabIndex={-1}\n ref={popoverScrollerRef}\n key={context?.popover.key}\n onKeyDown={onKeyDownHandler}\n onScroll={onScroll}\n onScrollCapture={onScrollCapture}\n >\n {children}\n </div>\n {!context?.disableCaret && (\n <span className={styles[\"arrow\"]} ref={context?.popover.arrowRef}>\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\"></path>\n <clipPath id=\":r9:\">\n <rect x=\"0\" y=\"0\" width=\"14\" height=\"14\"></rect>\n </clipPath>\n </svg>\n </span>\n )}\n </div>\n );\n },\n);\n\nPopoverContent.displayName = \"PopoverContent\";\n","import {\n ReactElement,\n MouseEvent,\n KeyboardEvent,\n FocusEvent,\n RefObject,\n} from \"react\";\nimport { dataStateType, usePopoverContext } from \"./internal/usePopoverContext\";\nimport { supportsPopover } from \"../../internal/functions\";\nimport {\n PopoverLegacyTrigger,\n PopoverLegacyTriggerProps,\n} from \"./internal/PopoverLegacy\";\n\ntype PopoverTriggerChildrenReturnType = {\n ref: RefObject<HTMLButtonElement>;\n onMouseEnter: (e: MouseEvent) => void;\n onMouseLeave: (e: MouseEvent) => void;\n onClick: (e: MouseEvent) => void;\n onKeyDown: (e: KeyboardEvent) => void;\n onBlur: (e: FocusEvent) => void;\n onFocus: (e: FocusEvent) => void;\n \"aria-haspopup\": boolean;\n \"aria-expanded\": boolean;\n \"aria-details\": HTMLElement[\"id\"];\n /**\n * @deprecated to be removed on next major\n * Use aria-expanded instead\n */\n \"data-state\": dataStateType;\n \"data-test\": string;\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: (data: PopoverTriggerChildrenReturnType) => ReactElement;\n};\n\n/**\n * PopoverTrigger component for creating custom trigger elements.\n *\n * Features:\n * - Supports custom trigger elements via render prop pattern\n * - Automatic focus management and keyboard interaction\n * - Hover and click event handling\n * - Accessibility attributes (aria-haspopup, aria-expanded, aria-details)\n * - Legacy popover support with fallback\n * - Context integration with parent popover\n *\n * @example\n * <Popover.Trigger>\n * {(props) => (\n * <button {...props}>\n * Click to open popover\n * </button>\n * )}\n * </Popover.Trigger>\n *\n * @example\n * <Popover.Trigger>\n * {(props) => (\n * <div {...props} role=\"button\" tabIndex={0}>\n * Custom trigger element\n * </div>\n * )}\n * </Popover.Trigger>\n */\nexport function PopoverTrigger(props: PopoverTriggerProps) {\n const { children } = props;\n const context = usePopoverContext();\n\n if (!supportsPopover())\n return <PopoverLegacyTrigger {...(props as PopoverLegacyTriggerProps)} />;\n\n if (!context) return;\n const { element, ...rest } = context.invoker;\n\n return children({ \"data-test\": \"hello\", ...rest });\n}\n\nPopoverTrigger.displayName = \"PopoverTrigger\";\n","import { PopoverClose } from \"./PopoverClose\";\nimport { PopoverButton } from \"./PopoverButton\";\nimport { PopoverContent } from \"./PopoverContent\";\nimport { PopoverTrigger } from \"./PopoverTrigger\";\nimport {\n ComponentPropsWithoutRef,\n useCallback,\n useContext,\n useEffect,\n useId,\n useLayoutEffect,\n useMemo,\n useRef,\n useState,\n} from \"react\";\nimport { PopoverContext, PopoverContextProps } from \"./internal/PopoverContext\";\nimport {\n arrow,\n autoUpdate,\n computePosition,\n flip,\n limitShift,\n offset,\n Placement,\n shift,\n size,\n} from \"@floating-ui/react\";\nimport {\n safeHidePopover,\n safeShowPopover,\n supportsPopover,\n} from \"../../internal/functions\";\nimport { PopoverLegacyElement } from \"./internal/PopoverLegacy/PopoverLegacy\";\nimport { PopoverLegacyProps } from \"./internal/PopoverLegacy\";\nimport { DisableCloseOnEscapeOrClickProps } from \"../../types\";\nimport {\n OpenCloseTransitionStateEffects,\n useKeyboardFocusables,\n useOnClickOutside,\n usePopoverTransitionStates,\n} from \"../../internal/hooks\";\nimport { DialogContext } from \"../Dialog/internal/DialogContext\";\n\n/**\n * Props for the Popover component\n * @property {ReactNode} [children] - The content to be rendered inside the popover\n * @property {string} [id] - Unique identifier for the popover\n * @property {boolean} [modal] - Whether the popover should be modal (traps focus)\n * @property {boolean} [openOnHover] - Changes interaction to use hover instead of click\n * @property {boolean} [fillAvailableHeight] - Changes height and positioning for select/combobox\n * @property {number | string} [maxHeight] - Maximum height of the popover content\n * @property {boolean} [fitScreen] - Whether the popover should fit within the screen bounds\n * @property {number | string} [minHeight] - Minimum height of the popover content\n * @property {boolean} [matchReferenceWidth] - Whether the popover width should match the trigger element\n * @property {boolean} [fixedWidth] - Whether the popover should have a fixed width\n * @property {string} [placement] - Placement of the popover relative to the trigger\n * @property {boolean} [open] - Controlled open state\n * @property {boolean} [defaultOpen] - Default open state for uncontrolled mode\n * @property {Function} [onOpenChange] - Callback when open state changes\n * @property {Function} [onOutsidePress] - Callback when clicking outside the popover\n * @property {Function} [onClose] - Fires when the floating element is requested to be closed\n * @property {boolean} [disableCaret] - Whether to disable the caret/arrow indicator\n * @property {boolean} [noPadding] - Whether to remove default padding from content\n * @property {boolean} [disableAutoUpdate] - Whether to disable automatic position updates\n * @property {boolean} [disableTriggerFocus] - Whether to disable focus on the trigger element\n * @property {number} [delay] - Delay before opening the popover (for hover mode)\n * @property {boolean} [disableCloseOnClickOutside] - Whether to disable closing on outside click\n * @property {boolean} [disableCloseOnEscape] - Whether to disable closing on escape key\n */\n\n/**\n * Props for the Popover component\n * @extends ComponentPropsWithoutRef<\"div\">\n * @extends DisableCloseOnEscapeOrClickProps\n */\nexport type PopoverProps = {\n /**\n * The content to be rendered inside the popover\n */\n children?: ComponentPropsWithoutRef<\"div\">[\"children\"];\n /**\n * Unique identifier for the popover\n */\n id?: ComponentPropsWithoutRef<\"div\">[\"id\"];\n /**\n * Whether the popover should be modal (traps focus)\n * @default false\n */\n modal?: boolean;\n /**\n * Disables the shift of floating element\n * @internal\n */\n disableShift?: boolean;\n /**\n * Disables the flip of floating element\n * @internal\n */\n disableFlip?: boolean;\n /**\n * Disables the flip cross-axis fallback of floating element\n * @internal\n */\n disableFlipFallback?: boolean;\n /**\n * Changes interaction to use hover instead of click\n * @default false\n */\n openOnHover?: boolean;\n /**\n * Changes height and positioning for select/combobox\n * @default false\n */\n fillAvailableHeight?: boolean;\n /**\n * Maximum height of the popover content\n */\n maxHeight?: number | string;\n /**\n * Whether the popover should fit within the screen bounds\n * @default false\n */\n fitScreen?: boolean;\n /**\n * Minimum height of the popover content\n * @default \"2.875rem\"\n */\n minHeight?: number | string;\n /**\n * Whether the popover width should match the trigger element\n * @default false\n */\n matchReferenceWidth?: boolean;\n /**\n * Whether the popover should have a fixed width\n * @default false\n */\n fixedWidth?: boolean;\n /**\n * Placement of the popover relative to the trigger\n * @default \"bottom\"\n */\n placement?: Placement;\n /**\n * Controlled open state\n */\n open?: boolean;\n /**\n * Default open state for uncontrolled mode\n * @default false\n */\n defaultOpen?: boolean;\n /**\n * @deprecated to be removed in next major\n * use onOpenAnimationStart, onOpenAnimationComplete, onCloseAnimationStart, onCloseAnimationComplete instead\n * Callback when open state changes\n */\n onOpenChange?: (open: boolean) => void;\n /**\n * @deprecated to be removed in next major\n * use onClickOutside instead\n * Callback when clicking outside the popover\n */\n onOutsidePress?: (e: globalThis.MouseEvent) => void;\n /**\n * Callback when clicking outside the popover\n */\n onClickOutside?: (e: globalThis.MouseEvent) => void;\n /**\n * Fires when the floating element is requested to be closed\n * Note: this does not fire when openOnHover is true and mouse leaves to close\n * eg. on click outside, [esc] to close, or by <Popover.Close>\n */\n onClose?: () => void;\n /**\n * Whether to disable the caret/arrow indicator\n * @default false\n */\n disableCaret?: boolean;\n /**\n * Whether to remove default padding from content\n * @default false\n */\n noPadding?: boolean;\n /**\n * Whether to disable automatic position updates\n * @default false\n */\n disableAutoUpdate?: boolean;\n /**\n * @deprecated to be removed on next major\n * use modal instead\n */\n disableFocusLock?: boolean;\n /**\n * Whether to disable focus on the trigger element\n * @default false\n */\n disableTriggerFocus?: boolean;\n /**\n * Delay before opening the popover (for hover mode)\n * @default 100\n */\n delay?: number;\n /**\n * @deprecated to be removed on next major\n * This is not needed anymore as the Popover API is used.\n * Popover API uses top-layer for its popover content.\n */\n root?: HTMLElement | React.MutableRefObject<HTMLElement | null> | null;\n} & DisableCloseOnEscapeOrClickProps &\n OpenCloseTransitionStateEffects;\n\nconst PopoverElement = (props: PopoverProps) => {\n const {\n children,\n openOnHover = false,\n delay = 100,\n placement = \"bottom\",\n minHeight = \"2.875rem\",\n open,\n defaultOpen = false,\n disableShift,\n disableFlip,\n disableFlipFallback,\n matchReferenceWidth,\n id,\n disableCaret,\n fixedWidth,\n fillAvailableHeight,\n maxHeight,\n disableCloseOnClickOutside,\n disableCloseOnEscape,\n fitScreen,\n disableFocusLock,\n disableTriggerFocus,\n modal,\n noPadding,\n onOpenChange,\n onOutsidePress,\n onClickOutside,\n onClose,\n onOpenAnimationStart,\n onOpenAnimationComplete,\n onCloseAnimationStart,\n onCloseAnimationComplete,\n } = props;\n const uid = useId();\n const [invoker, setInvoker] =\n useState<PopoverContextProps[\"invoker\"]>(undefined);\n const [popover, setPopover] =\n useState<PopoverContextProps[\"popover\"]>(undefined);\n const [rootNode, setRootNode] = useState<PopoverContextProps[\"rootNode\"]>();\n const [arrowElement, setArrowElement] =\n useState<PopoverContextProps[\"arrowElement\"]>(undefined);\n const [openState, setOpenState] = useState<PopoverContextProps[\"openState\"]>(\n open ?? defaultOpen,\n );\n const arrowRef = useRef<HTMLSpanElement>(null);\n const dialogContext = useContext(DialogContext);\n\n // TODO: Find a way to test these properly!\n // Stryker disable all : Currently relying on Chromatic test for all visuals\n const processMinHeight =\n typeof minHeight === \"string\" ? minHeight : `${minHeight}px`;\n\n usePopoverTransitionStates(popover, openState, {\n onOpenAnimationStart: useCallback(() => {\n onOpenAnimationStart?.();\n }, [onOpenAnimationStart]),\n onOpenAnimationComplete: useCallback(() => {\n onOpenAnimationComplete?.();\n }, [onOpenAnimationComplete]),\n onCloseAnimationStart: useCallback(() => {\n onCloseAnimationStart?.();\n }, [onCloseAnimationStart]),\n onCloseAnimationComplete: useCallback(() => {\n onCloseAnimationComplete?.();\n }, [onCloseAnimationComplete]),\n });\n\n /* istanbul ignore next */\n const updatePosition = useCallback(() => {\n if (!invoker || !popover) return;\n // disable position update when closing\n if (!openState) return;\n computePosition(invoker, popover, {\n placement: placement,\n middleware: [\n offset(8),\n size({\n padding: 5,\n apply({ rects, availableHeight, elements }) {\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 zIndex: 1,\n });\n },\n }),\n flip({\n mainAxis: !disableFlip,\n crossAxis: false,\n fallbackAxisSideDirection: disableFlipFallback ? \"none\" : \"end\",\n padding: 5,\n }),\n shift({\n padding: 5,\n mainAxis: !disableShift,\n crossAxis: false,\n limiter: limitShift({\n mainAxis: !disableShift,\n }),\n }),\n arrow({\n element: !disableCaret && arrowElement ? arrowElement : null,\n padding: 5,\n }),\n ],\n }).then(({ x, y, placement, middlewareData }) => {\n const side = placement.split(\"-\")[0];\n\n const staticSide = {\n top: \"bottom\",\n right: \"left\",\n bottom: \"top\",\n left: \"right\",\n }[side];\n\n const arrowDeg = () => {\n if (staticSide === \"top\") return 180;\n if (staticSide === \"bottom\") return 0;\n if (staticSide === \"left\") return 90;\n return 270;\n };\n\n Object.assign(popover.style, {\n left: `${x}px`,\n top: `${y}px`,\n });\n if (middlewareData.arrow && arrowElement) {\n const { x, y } = middlewareData.arrow;\n Object.assign(arrowElement.style, {\n left: x != null ? `${x}px` : \"\",\n top: y != null ? `${y}px` : \"\",\n right: \"\",\n bottom: \"\",\n [staticSide as string]: `${-arrowElement.offsetWidth + 2}px`,\n transform: `rotate(${arrowDeg()}deg)`,\n });\n }\n });\n }, [\n arrowElement,\n disableCaret,\n disableFlip,\n disableFlipFallback,\n disableShift,\n fillAvailableHeight,\n fitScreen,\n fixedWidth,\n invoker,\n matchReferenceWidth,\n maxHeight,\n openState,\n placement,\n popover,\n processMinHeight,\n ]);\n\n const resetKey = useRef(0);\n // Effect to add autoUpdate to eventListener\n // while the popover is opened\n useLayoutEffect(() => {\n if (!popover || !invoker) return;\n if (!openState) {\n resetKey.current += 1;\n return;\n }\n\n let requestID: number | null = null;\n const cleanup = autoUpdate(invoker, popover, () => {\n requestID = requestAnimationFrame(updatePosition);\n });\n\n return () => {\n if (requestID) cancelAnimationFrame(requestID);\n cleanup();\n };\n }, [invoker, popover, updatePosition, openState]);\n // Stryker restore all\n\n popover?.getRootNode();\n\n const { focusables } = useKeyboardFocusables(popover, {\n observeChange: true,\n });\n\n const popoverId = id ?? `popover-${uid.replace(/:/g, \"\")}`;\n const isControlled = typeof open !== \"undefined\";\n const openTimeoutRef = useRef<number | NodeJS.Timeout | null>(null);\n const closeTimeoutRef = useRef<number | NodeJS.Timeout | null>(null);\n\n // Main function to open popover\n const openPopover = useCallback(() => {\n clearTimeout(closeTimeoutRef.current as number);\n clearTimeout(openTimeoutRef.current as number);\n if (\n !popover ||\n !(rootNode as ShadowRoot | Document)?.querySelector(`#${popoverId}`)\n )\n return;\n openTimeoutRef.current = setTimeout(() => {\n safeShowPopover(popover);\n setOpenState(true);\n onOpenChange?.(true);\n dialogContext?.setHasOpenPopover?.(true);\n }, delay);\n // eslint-disable-next-line react-hooks/exhaustive-deps -- onOpenChange is intentionally omitted to prevent the openPopover function from being recreated on every render, which could cause unnecessary re-runs of the controlled useEffect and potential infinite loops\n }, [popover, rootNode, popoverId, delay, dialogContext]);\n\n // Main function to close popover\n const closePopover = useCallback(\n (fn?: () => void) => {\n clearTimeout(openTimeoutRef.current as number);\n clearTimeout(closeTimeoutRef.current as number);\n if (!popover || !openState) return;\n closeTimeoutRef.current = setTimeout(() => {\n if (!openOnHover) onClose?.();\n setOpenState(false);\n onOpenChange?.(false);\n fn?.();\n safeHidePopover(popover);\n dialogContext?.setHasOpenPopover?.(false);\n }, 100);\n },\n // eslint-disable-next-line react-hooks/exhaustive-deps -- onClose and onOpenChange are intentionally omitted to prevent the closePopover function from being recreated on every render, which could cause unnecessary re-runs of the controlled useEffect and potential infinite loops\n [popover, openState, openOnHover, dialogContext],\n );\n\n // openness for initial render\n const initialRender = useRef(true);\n useEffect(() => {\n if (initialRender.current === true) {\n if (openState) openPopover();\n initialRender.current = false;\n return;\n }\n }, [openState, openPopover]);\n\n // Updating openness for controlled\n useEffect(() => {\n if (typeof open === \"undefined\") return;\n if (open) {\n openPopover();\n } else {\n closePopover();\n }\n }, [open, openPopover, closePopover]);\n\n useOnClickOutside({\n onOutsidePress: (e) => {\n if (!open) return;\n onClickOutside?.(e);\n onOutsidePress?.(e);\n },\n targets: [invoker, popover],\n onClose: () => {\n if (\n disableCloseOnClickOutside ||\n openOnHover ||\n isControlled ||\n !openState\n )\n return;\n closePopover();\n },\n });\n\n const value = useMemo(() => {\n return {\n popoverId,\n invoker,\n setInvoker,\n popover,\n setPopover,\n arrowElement,\n setArrowElement,\n openPopover,\n closePopover,\n placement,\n onClose,\n openOnHover,\n openState,\n setOpenState,\n disableCloseOnClickOutside,\n fillAvailableHeight,\n maxHeight,\n matchReferenceWidth,\n fixedWidth,\n disableCaret,\n disableFlipFallback,\n disableFocusLock,\n disableTriggerFocus,\n disableCloseOnEscape,\n noPadding,\n controlled: isControlled,\n modal: modal ?? disableFocusLock,\n arrowRef,\n resetKey: resetKey.current,\n rootNode,\n setRootNode,\n focusables,\n };\n }, [\n popoverId,\n invoker,\n popover,\n arrowElement,\n openPopover,\n closePopover,\n placement,\n onClose,\n openOnHover,\n openState,\n setOpenState,\n disableCloseOnClickOutside,\n fillAvailableHeight,\n maxHeight,\n matchReferenceWidth,\n fixedWidth,\n disableCaret,\n disableFlipFallback,\n disableFocusLock,\n disableTriggerFocus,\n disableCloseOnEscape,\n noPadding,\n isControlled,\n modal,\n rootNode,\n focusables,\n ]);\n\n if (!supportsPopover())\n return <PopoverLegacyElement {...(props as PopoverLegacyProps)} />;\n\n return (\n <PopoverContext.Provider value={value}>{children}</PopoverContext.Provider>\n );\n};\n\n/**\n * Popover component for displaying floating content relative to a trigger element.\n *\n * Features:\n * - Supports both controlled and uncontrolled modes\n * - Automatic positioning with fallback strategies\n * - Hover and click interaction modes\n * - Modal and non-modal variants\n * - Custom trigger elements\n * - Automatic height and width management\n * - Screen boundary detection and fitting\n * - Keyboard navigation and accessibility\n * - Popover API support with legacy fallback\n * - Outside click detection and handling\n * - Focus management and trapping\n * - Arrow/caret indicators\n * - Delay support for hover interactions\n * - Automatic tracking ID generation for analytics\n *\n * @example\n * <Popover>\n * <Popover.Button>Click to open</Popover.Button>\n * <Popover.Content>\n * <p>This is the popover content</p>\n * <Popover.Close>Close</Popover.Close>\n * </Popover.Content>\n * </Popover>\n *\n * @example\n * <Popover openOnHover delay={1000}>\n * <Popover.Button>Hover to open</Popover.Button>\n * <Popover.Content>Tooltip content</Popover.Content>\n * </Popover>\n *\n * @example\n * <Popover modal>\n * <Popover.Trigger>\n * {(props) => <button {...props}>Custom trigger</button>}\n * </Popover.Trigger>\n * <Popover.Content>\n * <TextField label=\"Form field\" />\n * <Popover.Close>Done</Popover.Close>\n * </Popover.Content>\n * </Popover>\n */\nexport const Popover = Object.assign(PopoverElement, {\n /**\n * PopoverTrigger component for creating custom trigger elements.\n *\n * Features:\n * - Supports custom trigger elements via render prop pattern\n * - Automatic focus management and keyboard interaction\n * - Hover and click event handling\n * - Accessibility attributes (aria-haspopup, aria-expanded, aria-details)\n * - Legacy popover support with fallback\n * - Context integration with parent popover\n * - Automatic tracking ID generation for analytics\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 * - Automatic positioning and sizing based on trigger\n * - Screen boundary detection and fitting\n * - Scroll handling with custom scroller reference\n * - Focus management and keyboard navigation\n * - Hover interaction support for tooltip mode\n * - Escape key handling for closing\n * - Tab key trapping for modal popovers\n * - Arrow/caret indicator with automatic positioning\n * - Legacy popover support with fallback\n * - Context integration with parent popover\n * - Accessibility support with proper ARIA roles\n *\n * @example\n * <Popover.Content>\n * <p>This is the 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 * - Automatic popover closing on click\n * - Supports all Button component props and styling\n * - Controlled and uncontrolled mode support\n * - Legacy popover support with fallback\n * - Context integration with parent popover\n * - Accessibility support with proper button semantics\n * - Delayed closing for controlled mode\n * - Automatic tracking ID generation for analytics\n *\n * @example\n * <Popover.Close>Close</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 * - Automatic popover opening on click\n * - Hover interaction support for tooltip mode\n * - Focus management and keyboard navigation\n * - Accessibility attributes (aria-haspopup, aria-expanded, aria-details)\n * - Legacy popover support with fallback\n * - Context integration with parent popover\n * - Event handling for mouse, keyboard, and focus events\n * - Automatic tracking ID generation for analytics\n *\n * @example\n * <Popover.Button>Click to open</Popover.Button>\n */\n Button: PopoverButton,\n});\n"],"names":["arrow","PopoverLegacyTrigger","styles","PopoverClose","PopoverButton","PopoverContent","placement","x","y"],"mappings":"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"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"SideNav-CBAzYyML.js","sources":["../src/components/SideNav/internal/utils.ts","../src/components/SideNav/internal/SideNavLink.tsx","../src/components/SideNav/internal/SideNavProvider.tsx","../src/components/SideNav/SideNavLink.tsx","../src/components/SideNav/SideNavCollapsible.tsx","../src/components/SideNav/SideNavGroup.tsx","../src/components/SideNav/SideNav.tsx"],"sourcesContent":["import { KeyboardEvent, RefObject } from \"react\";\nimport { SideNavContextProps } from \"../SideNav\";\n\n/**\n * Handles keyboard navigation for SideNav components using arrow keys.\n *\n * This function manages focus movement between navigable elements in a SideNav,\n * providing circular navigation (wrapping from last to first and vice versa).\n * It updates tabindex attributes to maintain proper focus management and\n * prevents default browser behavior for arrow key navigation.\n *\n * @param e - The keyboard event that triggered the navigation\n * @param links - NodeList of all navigable elements in the SideNav\n * @param current - Ref object pointing to the currently focused element\n * @returns void\n */\nexport const sideNavKeyboardNavigation = (\n e: KeyboardEvent<HTMLAnchorElement | HTMLButtonElement>,\n links: SideNavContextProps[\"links\"],\n current: RefObject<HTMLAnchorElement | HTMLButtonElement>,\n) => {\n const currentIndex = Array.prototype.indexOf.call(links, current.current);\n\n switch (e.key) {\n case \"ArrowDown\":\n if (!links) return;\n e.preventDefault();\n links[currentIndex].setAttribute(\"tabindex\", \"-1\");\n if (currentIndex === links.length - 1) {\n links[0].setAttribute(\"tabindex\", \"0\");\n (links[0] as HTMLAnchorElement | HTMLButtonElement).focus();\n break;\n }\n links[currentIndex + 1].setAttribute(\"tabindex\", \"0\");\n (\n links[currentIndex + 1] as HTMLAnchorElement | HTMLButtonElement\n ).focus();\n break;\n case \"ArrowUp\":\n e.preventDefault();\n if (!links) return;\n links[currentIndex].setAttribute(\"tabindex\", \"-1\");\n if (currentIndex === 0) {\n links[links.length - 1].setAttribute(\"tabindex\", \"0\");\n (\n links[links.length - 1] as HTMLAnchorElement | HTMLButtonElement\n ).focus();\n break;\n }\n links[currentIndex - 1].setAttribute(\"tabindex\", \"0\");\n (\n links[currentIndex - 1] as HTMLAnchorElement | HTMLButtonElement\n ).focus();\n break;\n default:\n break;\n }\n};\n","import {\n ComponentPropsWithoutRef,\n KeyboardEvent,\n MouseEvent,\n forwardRef,\n useRef,\n useEffect,\n} from \"react\";\nimport styles from \"../SideNav.module.scss\";\nimport { sideNavKeyboardNavigation } from \"./utils\";\nimport { useSideNav } from \"../SideNav\";\n\n/**\n * Props for the SideNavLink component\n * @extends Omit<ComponentPropsWithoutRef<\"a\">, \"id\" | \"onClick\" | \"onKeyDown\" | \"onKeyUp\">\n */\nexport type SideNavLinkProps = Omit<\n ComponentPropsWithoutRef<\"a\">,\n \"id\" | \"onClick\" | \"onKeyDown\" | \"onKeyUp\"\n> & {\n /**\n * Unique identifier for the navigation link\n */\n id: string;\n /**\n * When true, marks the link as the current active page\n */\n active?: boolean;\n /**\n * When true, disables the link and prevents interaction\n */\n disabled?: boolean;\n /**\n * Function called when the link is clicked\n */\n onClick?: (\n e: MouseEvent<HTMLAnchorElement>,\n id: SideNavLinkProps[\"id\"],\n ) => void;\n /**\n * Function called when a key is pressed down on the link\n */\n onKeyDown?: (\n e: KeyboardEvent<HTMLAnchorElement>,\n id: SideNavLinkProps[\"id\"],\n ) => void;\n /**\n * Function called when a key is released on the link\n */\n onKeyUp?: (\n e: KeyboardEvent<HTMLAnchorElement>,\n id: SideNavLinkProps[\"id\"],\n ) => void;\n};\n\n/**\n * SideNavLink component for individual navigation links within a SideNav.\n *\n * Features:\n * - Individual navigation links with active state support\n * - Keyboard navigation integration with arrow keys\n * - Focus management and tabindex handling\n * - Accessible with proper ARIA attributes\n * - Click and keyboard event handling\n * - Disabled state support\n * - Automatic active state tracking through context\n *\n * @example\n * <SideNav.Link id=\"intro\" href=\"/intro\" active>\n * Introduction\n * </SideNav.Link>\n */\nexport const SideNavLink = forwardRef<HTMLLIElement, SideNavLinkProps>(\n (props, ref) => {\n const {\n className,\n children,\n href,\n id,\n active,\n onClick,\n onKeyDown,\n onKeyUp,\n style,\n disabled,\n ...rest\n } = props;\n const { links } = useSideNav();\n\n const linkRef = useRef<HTMLAnchorElement>(null);\n const { activeIds, addActiveId, removeActiveId } = useSideNav();\n\n useEffect(() => {\n if (!activeIds.has(id) && active) {\n addActiveId(id);\n return;\n }\n if (activeIds.has(id) && !active) {\n removeActiveId(id);\n }\n }, [active, activeIds]);\n\n function onKeyDownHandler(e: KeyboardEvent<HTMLAnchorElement>) {\n sideNavKeyboardNavigation(e, links, linkRef);\n onKeyDown?.(e, id);\n }\n\n function onKeyUpHandler(e: KeyboardEvent<HTMLAnchorElement>) {\n if (disabled) return;\n if (e.code === \"Space\" || e.code === \"Enter\") {\n e.preventDefault();\n if (onClick) {\n e.currentTarget.click();\n }\n }\n\n onKeyUp?.(e, id);\n }\n\n function onClickHandler(e: MouseEvent<HTMLAnchorElement>) {\n if (disabled) {\n e.preventDefault();\n return;\n }\n\n // find current item that has tabindex 0\n const current = Array.prototype.slice\n .call(links)\n .filter((child) => (child as HTMLElement).tabIndex === 0)[0];\n\n // remove above from tabbable\n if (current) current.setAttribute(\"tabindex\", \"-1\");\n\n // make label button tabbable\n linkRef.current?.setAttribute(\"tabindex\", \"0\");\n linkRef.current?.focus();\n\n onClick?.(e, id);\n }\n\n return (\n <li className={className} data-anv=\"sidenav-link\" style={style} ref={ref}>\n <a\n className={styles[\"sidenav-link\"]}\n aria-current={active ? \"page\" : undefined}\n href={href}\n ref={linkRef}\n onClick={onClickHandler}\n onKeyDown={onKeyDownHandler}\n onKeyUp={onKeyUpHandler}\n id={id}\n aria-disabled={disabled}\n tabIndex={active ? 0 : -1}\n {...rest}\n >\n {children}\n </a>\n </li>\n );\n },\n);\n\nSideNavLink.displayName = \"SideNavLink\";\n","import { PropsWithChildren, createContext, useContext, useState } from \"react\";\n\n/**\n * Interface for the side navigation context\n */\ninterface ISideNavContext {\n /**\n * Current location pathname for routing\n */\n location: string;\n /**\n * Function to update the current location\n */\n setLocation: (location: string) => void;\n}\n\nconst defaultContext = {\n location: \"\",\n // eslint-disable-next-line @typescript-eslint/no-unused-vars, @typescript-eslint/no-empty-function\n setLocation: (_location: string) => {},\n};\n\nconst SideNavContext: React.Context<ISideNavContext> =\n createContext(defaultContext);\n\n/**\n * Custom hook for accessing the SideNav context.\n * @returns The SideNav context with location and setLocation\n */\n// eslint-disable-next-line react-refresh/only-export-components\nexport const useSideNavContext = () => useContext(SideNavContext);\n\n/**\n * SideNavProvider component for managing routing state in SideNav components.\n *\n * Features:\n * - Provides routing context for SideNav components\n * - Manages current location state\n * - Enables client-side routing without page reloads\n * - Integrates with browser history API\n * - Context provider for child components\n *\n * @example\n * <SideNavProvider>\n * <SideNav>\n * <SideNav.Link pathname=\"/intro\">Introduction</SideNav.Link>\n * </SideNav>\n * </SideNavProvider>\n */\nexport const SideNavProvider = ({ children }: PropsWithChildren) => {\n const [location, setLocation] = useState(window.location.pathname);\n\n const sideNavContext = {\n location,\n setLocation,\n };\n\n return (\n <SideNavContext.Provider value={sideNavContext}>\n {children}\n </SideNavContext.Provider>\n );\n};\n","import {\n SideNavLinkProps as CoreSideNavLinkProps,\n SideNavLink as CoreSideNavLink,\n} from \"./internal/SideNavLink\";\nimport { Ref, forwardRef, useCallback } from \"react\";\nimport { useSideNavContext } from \"./internal/SideNavProvider\";\n\n/**\n * Props for SideNavLink with routing support\n * @property {string} [href] - URL for the link (used when pathname is not provided)\n * @property {string} pathname - Pathname for client-side routing\n * @property {string} [search] - Optional search parameters for the URL\n * @property {boolean} [active] - When true, marks the link as the current active page\n * @property {boolean} [disabled] - When true, disables the link and prevents interaction\n * @extends CoreSideNavLinkProps\n */\ntype SideNavLinkWithRoutingProps = CoreSideNavLinkProps & {\n /**\n * Pathname for client-side routing\n */\n pathname: string;\n /**\n * Optional search parameters for the URL\n */\n search?: string;\n};\n\n/**\n * SideNavLink component with routing support\n */\nconst SideNavLinkWithRouting = forwardRef(\n (\n { href, pathname, search, onClick, ...rest }: SideNavLinkWithRoutingProps,\n ref: Ref<HTMLLIElement>,\n ) => {\n const { location, setLocation } = useSideNavContext();\n const to = pathname + (search ?? \"\");\n\n const handleClick = useCallback(\n (...args: Parameters<NonNullable<CoreSideNavLinkProps[\"onClick\"]>>) => {\n args[0].preventDefault();\n history.pushState(null, \"\", to); // eslint-disable-line no-restricted-globals\n setLocation(to);\n return onClick?.(...args);\n },\n [onClick, to, setLocation],\n );\n\n return (\n <CoreSideNavLink\n href={pathname != null ? to : href}\n active={pathname === location}\n onClick={pathname != null ? handleClick : onClick}\n ref={ref}\n {...rest}\n />\n );\n },\n);\nSideNavLinkWithRouting.displayName = CoreSideNavLink.displayName;\n\nexport type SideNavLinkProps =\n | CoreSideNavLinkProps\n | SideNavLinkWithRoutingProps;\n\n/**\n * SideNavLink component for individual navigation links within a SideNav.\n *\n * Features:\n * - Individual navigation links with active state support\n * - Keyboard navigation integration with arrow keys\n * - Focus management and tabindex handling\n * - Accessible with proper ARIA attributes\n * - Click and keyboard event handling\n * - Disabled state support\n * - Automatic active state tracking through context\n * - Client-side routing support with pathname prop\n * - Automatic tracking ID generation for analytics\n *\n * @example\n * <SideNav.Link id=\"intro\" href=\"/intro\" active>\n * Introduction\n * </SideNav.Link>\n *\n * <SideNav.Link id=\"intro\" pathname=\"/intro\" active>\n * Introduction (with routing)\n * </SideNav.Link>\n */\nexport const SideNavLink = forwardRef(\n (rest: SideNavLinkProps, ref: Ref<HTMLLIElement>) => {\n if (\"pathname\" in rest) {\n return <SideNavLinkWithRouting ref={ref} {...rest} />;\n } else {\n return <CoreSideNavLink ref={ref} {...rest} />;\n }\n },\n);\nSideNavLink.displayName = CoreSideNavLink.displayName;\n","import cx from \"classnames\";\nimport {\n Children,\n ComponentPropsWithoutRef,\n KeyboardEvent,\n MouseEvent,\n ReactElement,\n forwardRef,\n useEffect,\n useId,\n useLayoutEffect,\n useMemo,\n useRef,\n useState,\n} from \"react\";\nimport styles from \"./SideNav.module.scss\";\nimport ArrowDown from \"@servicetitan/hammer-icon/mdi/round/keyboard_arrow_down.svg\";\nimport { Icon } from \"../Icon\";\nimport { sideNavKeyboardNavigation } from \"./internal/utils\";\nimport { useSideNav } from \"./SideNav\";\n\n/**\n * Props for the SideNavCollapsible component\n * @extends Omit<ComponentPropsWithoutRef<\"li\">, \"onClick\">\n */\nexport type SideNavCollapsibleProps = Omit<\n ComponentPropsWithoutRef<\"li\">,\n \"onClick\"\n> & {\n /**\n * The label text displayed for the collapsible section\n */\n label: string;\n /**\n * Function called when the collapsible button is clicked\n */\n onClick?: ComponentPropsWithoutRef<\"button\">[\"onClick\"];\n /**\n * Function called when a key is pressed on the collapsible button\n */\n onKeyDown?: ComponentPropsWithoutRef<\"button\">[\"onKeyDown\"];\n /**\n * Initial expansion state for uncontrolled usage\n * @default false\n */\n defaultExpanded?: boolean;\n /**\n * Controlled expansion state\n */\n expanded?: boolean;\n};\n\n/**\n * SideNavCollapsible component for expandable navigation sections within a SideNav.\n *\n * Features:\n * - Expandable/collapsible navigation sections\n * - Controlled and uncontrolled expansion states\n * - Keyboard navigation with arrow keys for expansion\n * - Automatic expansion when child links are active\n * - Accessible with proper ARIA expanded states\n * - Visual indicators for active children\n * - Integration with SideNav keyboard navigation\n *\n * @example\n * <SideNav.Collapsible label=\"Components\">\n * <SideNav.Link id=\"button\" href=\"/components/button\">\n * Button\n * </SideNav.Link>\n * <SideNav.Link id=\"input\" href=\"/components/input\">\n * Input\n * </SideNav.Link>\n * </SideNav.Collapsible>\n */\nexport const SideNavCollapsible = forwardRef<\n HTMLLIElement,\n SideNavCollapsibleProps\n>((props, ref) => {\n const {\n className,\n children,\n label,\n onClick,\n onKeyDown,\n defaultExpanded = false,\n expanded: expandedControlled,\n ...rest\n } = props;\n const [expanded, setExpanded] = useState<boolean>(defaultExpanded);\n const [hasSelected, setHasSelected] = useState<boolean>(false);\n const sideNavGroupLabelRef = useRef<HTMLButtonElement>(null);\n const groupRef = useRef<HTMLUListElement>(null);\n const sideNavGroupClassNames = cx(styles[\"sidenav-collapsible\"], className);\n const { links, reCalculateLinks } = useSideNav();\n const groupId = useId();\n\n const setExpandedUncontrolled = (newState?: boolean) => {\n if (expandedControlled === undefined)\n setExpanded((prev) => {\n if (newState !== undefined) return newState;\n return !prev;\n });\n };\n\n useEffect(() => {\n if (expandedControlled !== undefined) {\n setExpanded(expandedControlled);\n }\n }, [expandedControlled]);\n const { activeIds } = useSideNav();\n\n const childIds: string[] = useMemo(\n () =>\n Children.map(children, (child) => (child as ReactElement).props)?.map(\n (item) => item.id,\n ) || [],\n [Children],\n );\n\n function handleOnClick(e: MouseEvent<HTMLButtonElement>) {\n setExpandedUncontrolled();\n setTimeout(() => reCalculateLinks(), 0);\n\n // find current item that has tabindex 0\n const current = Array.prototype.slice\n .call(links)\n .filter((child) => (child as HTMLElement).tabIndex === 0)[0];\n\n // remove above from tabbable\n if (current) current.setAttribute(\"tabindex\", \"-1\");\n\n // make label button tabbable\n sideNavGroupLabelRef.current?.setAttribute(\"tabindex\", \"0\");\n sideNavGroupLabelRef.current?.focus();\n onClick?.(e);\n }\n\n function handleKeyDown(e: KeyboardEvent<HTMLButtonElement>) {\n sideNavKeyboardNavigation(e, links, sideNavGroupLabelRef);\n switch (e.key) {\n case \"ArrowRight\":\n setExpanded(true);\n setTimeout(() => reCalculateLinks(), 0);\n break;\n case \"ArrowLeft\":\n setExpanded(false);\n setTimeout(() => reCalculateLinks(), 0);\n break;\n\n default:\n break;\n }\n onKeyDown?.(e);\n }\n\n useLayoutEffect(() => {\n const hasActiveChildren = childIds.some((id) => activeIds.has(id));\n if (hasActiveChildren) {\n setExpandedUncontrolled(true);\n setHasSelected(true);\n setTimeout(() => {\n const selectedChild =\n groupRef.current?.querySelector(`[active='true']`);\n selectedChild?.setAttribute(\"tabindex\", \"0\");\n reCalculateLinks();\n }, 0);\n }\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, []);\n\n useEffect(() => {\n if (!activeIds.size || !childIds.some((id) => activeIds.has(id))) {\n setHasSelected(false);\n return;\n }\n setHasSelected(true);\n }, [activeIds]);\n\n return (\n <li\n ref={ref}\n data-anv=\"sidenav-collapsible\"\n {...rest}\n className={sideNavGroupClassNames}\n >\n <button\n aria-expanded={expanded}\n aria-controls={groupId}\n type=\"button\"\n tabIndex={-1}\n onClick={handleOnClick}\n ref={sideNavGroupLabelRef}\n className={cx(styles[\"sidenav-link\"], {\n [styles[\"has-indicator\"]]: hasSelected && !expanded,\n })}\n onKeyDown={handleKeyDown}\n >\n {label}\n <Icon className={styles[\"arrow\"]} inherit svg={ArrowDown} aria-hidden />\n </button>\n <ul\n id={groupId}\n ref={groupRef}\n className={cx(styles[\"group\"], !expanded && styles.hidden)}\n >\n {children}\n </ul>\n </li>\n );\n});\n\nSideNavCollapsible.displayName = \"SideNavCollapsible\";\n","import { ComponentPropsWithoutRef, forwardRef, useId } from \"react\";\nimport styles from \"./SideNav.module.scss\";\nimport cx from \"classnames\";\n\n/**\n * Props for the SideNavGroup component\n * @extends ComponentPropsWithoutRef<\"li\">\n */\nexport type SideNavGroupProps = ComponentPropsWithoutRef<\"li\"> & {\n /**\n * The label text displayed for the navigation group\n */\n label: string;\n};\n\n/**\n * SideNavGroup component for grouping related navigation links within a SideNav.\n *\n * Features:\n * - Groups related navigation links with labels\n * - Accessible with proper ARIA labeling\n * - Semantic grouping for screen readers\n * - Consistent styling and spacing\n * - Unique ID generation for accessibility\n *\n * @example\n * <SideNav.Group label=\"Getting Started\">\n * <SideNav.Link id=\"intro\" href=\"/intro\">\n * Introduction\n * </SideNav.Link>\n * <SideNav.Link id=\"installation\" href=\"/installation\">\n * Installation\n * </SideNav.Link>\n * </SideNav.Group>\n */\nexport const SideNavGroup = forwardRef<HTMLLIElement, SideNavGroupProps>(\n (props, ref) => {\n const { children, label, ...rest } = props;\n\n const sideNavGroupClassNames = cx(styles[\"sidenav-group\"]);\n\n const groupLabelId = useId();\n return (\n <li ref={ref} data-anv=\"sidenav-group\" {...rest}>\n <label id={groupLabelId} className={styles[\"group-label\"]}>\n {label}\n </label>\n <ul aria-labelledby={groupLabelId} className={sideNavGroupClassNames}>\n {children}\n </ul>\n </li>\n );\n },\n);\n\nSideNavGroup.displayName = \"SideNavGroup\";\n","import {\n ComponentPropsWithoutRef,\n createContext,\n forwardRef,\n useContext,\n useEffect,\n useMemo,\n useRef,\n useState,\n} from \"react\";\nimport cx from \"classnames\";\n\nimport { LayoutUtilProps } from \"../../types\";\nimport { useMergeRefs } from \"../../hooks\";\nimport { useLayoutPropsUtil } from \"../../internal/hooks\";\nimport styles from \"./SideNav.module.scss\";\nimport { SideNavLink } from \"./SideNavLink\";\nimport { SideNavCollapsible } from \"./SideNavCollapsible\";\nimport { SideNavGroup } from \"./SideNavGroup\";\nimport { SideNavProvider } from \"./internal/SideNavProvider\";\nimport { DataTrackingId } from \"../../types\";\n\n/**\n * Props for the SideNav component\n * @extends ComponentPropsWithoutRef<\"nav\">\n * @extends LayoutUtilProps\n */\nexport type SideNavProps = ComponentPropsWithoutRef<\"nav\"> &\n LayoutUtilProps &\n DataTrackingId;\n\n/**\n * Context props for the SideNav component\n */\nexport type SideNavContextProps = {\n /**\n * List of navigable elements in the side navigation\n */\n links: NodeListOf<Element> | undefined;\n /**\n * Function to recalculate the list of navigable links\n */\n reCalculateLinks: () => void;\n /**\n * Set of currently active link IDs\n */\n activeIds: Set<string>;\n /**\n * Function to add an ID to the active set\n */\n addActiveId: (id: string) => void;\n /**\n * Function to remove an ID from the active set\n */\n removeActiveId: (id: string) => void;\n};\n\nexport const SideNavContext = createContext<SideNavContextProps | null>(null);\n\nconst SideNavElement = forwardRef<HTMLElement, SideNavProps>((props, ref) => {\n const { layoutStyles, componentProps } = useLayoutPropsUtil(props);\n const [activeIds, setActiveIds] = useState<Set<string>>(new Set());\n const { className, children, style, ...rest } = componentProps;\n\n const addActiveId = (id: string) => {\n if (activeIds.has(id)) return;\n const newIds = new Set(activeIds);\n newIds.add(id);\n setActiveIds(newIds);\n };\n\n const removeActiveId = (id: string) => {\n if (!activeIds.has(id)) return;\n const newIds = new Set(activeIds);\n newIds.delete(id);\n setActiveIds(newIds);\n };\n\n const sideNavRef = useRef<HTMLElement>(null);\n const [links, setLinks] = useState<SideNavContextProps[\"links\"]>();\n\n const styleCombined = {\n ...style,\n ...layoutStyles,\n };\n\n function reCalculateLinks() {\n if (sideNavRef.current) {\n const items = sideNavRef.current.querySelectorAll(\n \"li[data-anv='sidenav-link'] a:not([aria-disabled='true']), li[data-anv='sidenav-collapsible'] button[aria-expanded]:not([aria-disabled='true'])\",\n );\n setLinks(items);\n }\n }\n\n useEffect(() => {\n reCalculateLinks();\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, []);\n\n const sidenavClassNames = cx([styles[\"sidenav\"]], className);\n\n const value = useMemo(\n () => ({\n links,\n reCalculateLinks,\n activeIds,\n addActiveId,\n removeActiveId,\n }),\n [links, activeIds, addActiveId, removeActiveId, reCalculateLinks],\n );\n return (\n <SideNavProvider>\n <SideNavContext.Provider value={value}>\n <nav\n ref={useMergeRefs([sideNavRef, ref])}\n className={sidenavClassNames}\n style={styleCombined}\n data-anv=\"sidenav\"\n {...rest}\n >\n <ul className={styles[\"root\"]}>{children}</ul>\n </nav>\n </SideNavContext.Provider>\n </SideNavProvider>\n );\n});\n\n/**\n * Custom hook for accessing the SideNav context.\n * @returns The SideNav context with links, activeIds, and utility functions\n * @throws Error if used outside of a SideNav component\n */\nexport const useSideNav = () => {\n const context = useContext(SideNavContext);\n\n if (context == null) {\n throw new Error(\"useSideNav must be wrapped in <SideNav />\");\n }\n\n return context;\n};\n\nSideNavElement.displayName = \"SideNav\";\n\n/**\n * SideNav component for creating hierarchical navigation menus.\n *\n * Features:\n * - Hierarchical navigation structure with links, groups, and collapsible sections\n * - Keyboard navigation support with arrow keys and focus management\n * - Active state tracking for current page/section\n * - Accessible with proper ARIA roles and labels\n * - Automatic link recalculation for dynamic content\n * - Context provider for child components\n * - Layout utility props for positioning and spacing\n *\n * @example\n * <SideNav>\n * <SideNav.Group label=\"Getting Started\">\n * <SideNav.Link id=\"intro\" href=\"/intro\" active>\n * Introduction\n * </SideNav.Link>\n * <SideNav.Link id=\"installation\" href=\"/installation\">\n * Installation\n * </SideNav.Link>\n * </SideNav.Group>\n * <SideNav.Collapsible label=\"Components\">\n * <SideNav.Link id=\"button\" href=\"/components/button\">\n * Button\n * </SideNav.Link>\n * <SideNav.Link id=\"input\" href=\"/components/input\">\n * Input\n * </SideNav.Link>\n * </SideNav.Collapsible>\n * </SideNav>\n */\nexport const SideNav = Object.assign(SideNavElement, {\n /**\n * SideNavLink component for individual navigation links.\n *\n * Features:\n * - Individual navigation links with active state support\n * - Keyboard navigation integration with arrow keys\n * - Focus management and tabindex handling\n * - Accessible with proper ARIA attributes\n * - Click and keyboard event handling\n * - Disabled state support\n *\n * @example\n * <SideNav.Link id=\"intro\" href=\"/intro\" active>\n * Introduction\n * </SideNav.Link>\n */\n Link: SideNavLink,\n /**\n * SideNavCollapsible component for expandable navigation sections.\n *\n * Features:\n * - Expandable/collapsible navigation sections\n * - Controlled and uncontrolled expansion states\n * - Keyboard navigation with arrow keys for expansion\n * - Automatic expansion when child links are active\n * - Accessible with proper ARIA expanded states\n * - Visual indicators for active children\n *\n * @example\n * <SideNav.Collapsible label=\"Components\">\n * <SideNav.Link id=\"button\" href=\"/components/button\">\n * Button\n * </SideNav.Link>\n * <SideNav.Link id=\"input\" href=\"/components/input\">\n * Input\n * </SideNav.Link>\n * </SideNav.Collapsible>\n */\n Collapsible: SideNavCollapsible,\n /**\n * SideNavGroup component for grouping related navigation links.\n *\n * Features:\n * - Groups related navigation links with labels\n * - Accessible with proper ARIA labeling\n * - Semantic grouping for screen readers\n * - Consistent styling and spacing\n *\n * @example\n * <SideNav.Group label=\"Getting Started\">\n * <SideNav.Link id=\"intro\" href=\"/intro\">\n * Introduction\n * </SideNav.Link>\n * <SideNav.Link id=\"installation\" href=\"/installation\">\n * Installation\n * </SideNav.Link>\n * </SideNav.Group>\n */\n Group: SideNavGroup,\n});\n"],"names":["SideNavLink","SideNavContext","CoreSideNavLink","ArrowDown"],"mappings":"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"}
|
package/dist/Tab-wNucMTgo.js.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"Tab-wNucMTgo.js","sources":["../../../node_modules/.pnpm/motion@12.4.10_@emotion+is-prop-valid@1.3.1_react-dom@18.2.0_react@18.2.0__react@18.2.0/node_modules/motion/dist/es/framer-motion/dist/es/components/AnimatePresence/PopChild.mjs","../../../node_modules/.pnpm/motion@12.4.10_@emotion+is-prop-valid@1.3.1_react-dom@18.2.0_react@18.2.0__react@18.2.0/node_modules/motion/dist/es/framer-motion/dist/es/components/AnimatePresence/PresenceChild.mjs","../../../node_modules/.pnpm/motion@12.4.10_@emotion+is-prop-valid@1.3.1_react-dom@18.2.0_react@18.2.0__react@18.2.0/node_modules/motion/dist/es/framer-motion/dist/es/components/AnimatePresence/utils.mjs","../../../node_modules/.pnpm/motion@12.4.10_@emotion+is-prop-valid@1.3.1_react-dom@18.2.0_react@18.2.0__react@18.2.0/node_modules/motion/dist/es/framer-motion/dist/es/components/AnimatePresence/index.mjs","../src/components/Tab/internal/TabContext.tsx","../src/components/Tab/TabButton.tsx","../../hammer-icon/mdi/round/arrow_back.svg","../../hammer-icon/mdi/round/arrow_forward.svg","../src/components/Tab/TabList.tsx","../src/components/Tab/TabPanel.tsx","../src/components/Tab/Tab.tsx"],"sourcesContent":["\"use client\";\nimport { jsx } from 'react/jsx-runtime';\nimport * as React from 'react';\nimport { useId, useRef, useContext, useInsertionEffect } from 'react';\nimport { MotionConfigContext } from '../../context/MotionConfigContext.mjs';\n\n/**\n * Measurement functionality has to be within a separate component\n * to leverage snapshot lifecycle.\n */\nclass PopChildMeasure extends React.Component {\n getSnapshotBeforeUpdate(prevProps) {\n const element = this.props.childRef.current;\n if (element && prevProps.isPresent && !this.props.isPresent) {\n const parent = element.offsetParent;\n const parentWidth = parent instanceof HTMLElement ? parent.offsetWidth || 0 : 0;\n const size = this.props.sizeRef.current;\n size.height = element.offsetHeight || 0;\n size.width = element.offsetWidth || 0;\n size.top = element.offsetTop;\n size.left = element.offsetLeft;\n size.right = parentWidth - size.width - size.left;\n }\n return null;\n }\n /**\n * Required with getSnapshotBeforeUpdate to stop React complaining.\n */\n componentDidUpdate() { }\n render() {\n return this.props.children;\n }\n}\nfunction PopChild({ children, isPresent, anchorX }) {\n const id = useId();\n const ref = useRef(null);\n const size = useRef({\n width: 0,\n height: 0,\n top: 0,\n left: 0,\n right: 0,\n });\n const { nonce } = useContext(MotionConfigContext);\n /**\n * We create and inject a style block so we can apply this explicit\n * sizing in a non-destructive manner by just deleting the style block.\n *\n * We can't apply size via render as the measurement happens\n * in getSnapshotBeforeUpdate (post-render), likewise if we apply the\n * styles directly on the DOM node, we might be overwriting\n * styles set via the style prop.\n */\n useInsertionEffect(() => {\n const { width, height, top, left, right } = size.current;\n if (isPresent || !ref.current || !width || !height)\n return;\n const x = anchorX === \"left\" ? `left: ${left}` : `right: ${right}`;\n ref.current.dataset.motionPopId = id;\n const style = document.createElement(\"style\");\n if (nonce)\n style.nonce = nonce;\n document.head.appendChild(style);\n if (style.sheet) {\n style.sheet.insertRule(`\n [data-motion-pop-id=\"${id}\"] {\n position: absolute !important;\n width: ${width}px !important;\n height: ${height}px !important;\n ${x}px !important;\n top: ${top}px !important;\n }\n `);\n }\n return () => {\n document.head.removeChild(style);\n };\n }, [isPresent]);\n return (jsx(PopChildMeasure, { isPresent: isPresent, childRef: ref, sizeRef: size, children: React.cloneElement(children, { ref }) }));\n}\n\nexport { PopChild };\n","\"use client\";\nimport { jsx } from 'react/jsx-runtime';\nimport * as React from 'react';\nimport { useId, useCallback, useMemo } from 'react';\nimport { PresenceContext } from '../../context/PresenceContext.mjs';\nimport { useConstant } from '../../utils/use-constant.mjs';\nimport { PopChild } from './PopChild.mjs';\n\nconst PresenceChild = ({ children, initial, isPresent, onExitComplete, custom, presenceAffectsLayout, mode, anchorX, }) => {\n const presenceChildren = useConstant(newChildrenMap);\n const id = useId();\n const memoizedOnExitComplete = useCallback((childId) => {\n presenceChildren.set(childId, true);\n for (const isComplete of presenceChildren.values()) {\n if (!isComplete)\n return; // can stop searching when any is incomplete\n }\n onExitComplete && onExitComplete();\n }, [presenceChildren, onExitComplete]);\n const context = useMemo(() => ({\n id,\n initial,\n isPresent,\n custom,\n onExitComplete: memoizedOnExitComplete,\n register: (childId) => {\n presenceChildren.set(childId, false);\n return () => presenceChildren.delete(childId);\n },\n }), \n /**\n * If the presence of a child affects the layout of the components around it,\n * we want to make a new context value to ensure they get re-rendered\n * so they can detect that layout change.\n */\n presenceAffectsLayout\n ? [Math.random(), memoizedOnExitComplete]\n : [isPresent, memoizedOnExitComplete]);\n useMemo(() => {\n presenceChildren.forEach((_, key) => presenceChildren.set(key, false));\n }, [isPresent]);\n /**\n * If there's no `motion` components to fire exit animations, we want to remove this\n * component immediately.\n */\n React.useEffect(() => {\n !isPresent &&\n !presenceChildren.size &&\n onExitComplete &&\n onExitComplete();\n }, [isPresent]);\n if (mode === \"popLayout\") {\n children = (jsx(PopChild, { isPresent: isPresent, anchorX: anchorX, children: children }));\n }\n return (jsx(PresenceContext.Provider, { value: context, children: children }));\n};\nfunction newChildrenMap() {\n return new Map();\n}\n\nexport { PresenceChild };\n","import { Children, isValidElement } from 'react';\n\nconst getChildKey = (child) => child.key || \"\";\nfunction onlyElements(children) {\n const filtered = [];\n // We use forEach here instead of map as map mutates the component key by preprending `.$`\n Children.forEach(children, (child) => {\n if (isValidElement(child))\n filtered.push(child);\n });\n return filtered;\n}\n\nexport { getChildKey, onlyElements };\n","\"use client\";\nimport { jsx, Fragment } from 'react/jsx-runtime';\nimport { useMemo, useRef, useState, useContext } from 'react';\nimport { LayoutGroupContext } from '../../context/LayoutGroupContext.mjs';\nimport { useConstant } from '../../utils/use-constant.mjs';\nimport { PresenceChild } from './PresenceChild.mjs';\nimport { usePresence } from './use-presence.mjs';\nimport { onlyElements, getChildKey } from './utils.mjs';\nimport { useIsomorphicLayoutEffect } from '../../utils/use-isomorphic-effect.mjs';\n\n/**\n * `AnimatePresence` enables the animation of components that have been removed from the tree.\n *\n * When adding/removing more than a single child, every child **must** be given a unique `key` prop.\n *\n * Any `motion` components that have an `exit` property defined will animate out when removed from\n * the tree.\n *\n * ```jsx\n * import { motion, AnimatePresence } from 'framer-motion'\n *\n * export const Items = ({ items }) => (\n * <AnimatePresence>\n * {items.map(item => (\n * <motion.div\n * key={item.id}\n * initial={{ opacity: 0 }}\n * animate={{ opacity: 1 }}\n * exit={{ opacity: 0 }}\n * />\n * ))}\n * </AnimatePresence>\n * )\n * ```\n *\n * You can sequence exit animations throughout a tree using variants.\n *\n * If a child contains multiple `motion` components with `exit` props, it will only unmount the child\n * once all `motion` components have finished animating out. Likewise, any components using\n * `usePresence` all need to call `safeToRemove`.\n *\n * @public\n */\nconst AnimatePresence = ({ children, custom, initial = true, onExitComplete, presenceAffectsLayout = true, mode = \"sync\", propagate = false, anchorX = \"left\", }) => {\n const [isParentPresent, safeToRemove] = usePresence(propagate);\n /**\n * Filter any children that aren't ReactElements. We can only track components\n * between renders with a props.key.\n */\n const presentChildren = useMemo(() => onlyElements(children), [children]);\n /**\n * Track the keys of the currently rendered children. This is used to\n * determine which children are exiting.\n */\n const presentKeys = propagate && !isParentPresent ? [] : presentChildren.map(getChildKey);\n /**\n * If `initial={false}` we only want to pass this to components in the first render.\n */\n const isInitialRender = useRef(true);\n /**\n * A ref containing the currently present children. When all exit animations\n * are complete, we use this to re-render the component with the latest children\n * *committed* rather than the latest children *rendered*.\n */\n const pendingPresentChildren = useRef(presentChildren);\n /**\n * Track which exiting children have finished animating out.\n */\n const exitComplete = useConstant(() => new Map());\n /**\n * Save children to render as React state. To ensure this component is concurrent-safe,\n * we check for exiting children via an effect.\n */\n const [diffedChildren, setDiffedChildren] = useState(presentChildren);\n const [renderedChildren, setRenderedChildren] = useState(presentChildren);\n useIsomorphicLayoutEffect(() => {\n isInitialRender.current = false;\n pendingPresentChildren.current = presentChildren;\n /**\n * Update complete status of exiting children.\n */\n for (let i = 0; i < renderedChildren.length; i++) {\n const key = getChildKey(renderedChildren[i]);\n if (!presentKeys.includes(key)) {\n if (exitComplete.get(key) !== true) {\n exitComplete.set(key, false);\n }\n }\n else {\n exitComplete.delete(key);\n }\n }\n }, [renderedChildren, presentKeys.length, presentKeys.join(\"-\")]);\n const exitingChildren = [];\n if (presentChildren !== diffedChildren) {\n let nextChildren = [...presentChildren];\n /**\n * Loop through all the currently rendered components and decide which\n * are exiting.\n */\n for (let i = 0; i < renderedChildren.length; i++) {\n const child = renderedChildren[i];\n const key = getChildKey(child);\n if (!presentKeys.includes(key)) {\n nextChildren.splice(i, 0, child);\n exitingChildren.push(child);\n }\n }\n /**\n * If we're in \"wait\" mode, and we have exiting children, we want to\n * only render these until they've all exited.\n */\n if (mode === \"wait\" && exitingChildren.length) {\n nextChildren = exitingChildren;\n }\n setRenderedChildren(onlyElements(nextChildren));\n setDiffedChildren(presentChildren);\n /**\n * Early return to ensure once we've set state with the latest diffed\n * children, we can immediately re-render.\n */\n return null;\n }\n if (process.env.NODE_ENV !== \"production\" &&\n mode === \"wait\" &&\n renderedChildren.length > 1) {\n console.warn(`You're attempting to animate multiple children within AnimatePresence, but its mode is set to \"wait\". This will lead to odd visual behaviour.`);\n }\n /**\n * If we've been provided a forceRender function by the LayoutGroupContext,\n * we can use it to force a re-render amongst all surrounding components once\n * all components have finished animating out.\n */\n const { forceRender } = useContext(LayoutGroupContext);\n return (jsx(Fragment, { children: renderedChildren.map((child) => {\n const key = getChildKey(child);\n const isPresent = propagate && !isParentPresent\n ? false\n : presentChildren === renderedChildren ||\n presentKeys.includes(key);\n const onExit = () => {\n if (exitComplete.has(key)) {\n exitComplete.set(key, true);\n }\n else {\n return;\n }\n let isEveryExitComplete = true;\n exitComplete.forEach((isExitComplete) => {\n if (!isExitComplete)\n isEveryExitComplete = false;\n });\n if (isEveryExitComplete) {\n forceRender === null || forceRender === void 0 ? void 0 : forceRender();\n setRenderedChildren(pendingPresentChildren.current);\n propagate && (safeToRemove === null || safeToRemove === void 0 ? void 0 : safeToRemove());\n onExitComplete && onExitComplete();\n }\n };\n return (jsx(PresenceChild, { isPresent: isPresent, initial: !isInitialRender.current || initial\n ? undefined\n : false, custom: custom, presenceAffectsLayout: presenceAffectsLayout, mode: mode, onExitComplete: isPresent ? undefined : onExit, anchorX: anchorX, children: child }, key));\n }) }));\n};\n\nexport { AnimatePresence };\n","import { createContext, Dispatch, KeyboardEvent, SetStateAction } from \"react\";\n\ntype TabContextProps = {\n current: number; // id of tabpanel\n setCurrent?: Dispatch<SetStateAction<number>>;\n focus: number; // id of tabpanel\n setFocus?: Dispatch<SetStateAction<number>>;\n items?: NodeListOf<HTMLElement>;\n uid?: string;\n onKeyDownHandler?: (e: KeyboardEvent<HTMLButtonElement>) => void;\n gotoNext?: (refocus?: boolean) => void;\n goToPrev?: (refocus?: boolean) => void;\n dir?: string;\n};\n\nconst initialValue = {\n current: 0,\n focus: 0,\n};\n\nexport const TabContext = createContext<TabContextProps>(initialValue);\n","import {\n forwardRef,\n useContext,\n MouseEvent,\n useRef,\n ComponentPropsWithoutRef,\n KeyboardEvent,\n} from \"react\";\nimport { useMergeRefs, useTrackingId } from \"../../hooks\";\nimport { motion, useReducedMotion } from \"motion/react\";\nimport { core } from \"@servicetitan/hammer-token\";\nimport { DataTrackingId } from \"../../types\";\nimport { TabContext } from \"./internal/TabContext\";\n\nimport styles from \"./Tab.module.scss\";\nimport cx from \"classnames\";\n/**\n * Props for the TabButton component\n * @extends Omit<ComponentPropsWithoutRef<\"button\">, \"onClick\" | \"disabled\">\n */\nexport type TabButtonProps = Omit<\n ComponentPropsWithoutRef<\"button\">,\n \"onClick\" | \"disabled\"\n> & {\n /**\n * Unique identifier for the tab button.\n */\n id: string;\n /**\n * ID of the tab panel that this button controls.\n */\n controls: string;\n /**\n * Callback function called when the tab button is clicked.\n * @param e The mouse event\n * @param index The index of the tab button\n */\n onClick?: (e: MouseEvent<HTMLButtonElement>, index?: number) => void;\n} & DataTrackingId;\n\n/**\n * TabButton component for individual tab navigation buttons.\n *\n * Features:\n * - Automatic ARIA attributes for accessibility\n * - Visual indicator for active state\n * - Keyboard navigation support\n * - Smooth animations with reduced motion support\n * - Proper focus management\n * - RTL language support\n *\n * @example\n * <Tab.Button id=\"tab1\" controls=\"panel1\" onClick={(e, index) => console.log('Tab clicked:', index)}>\n * First Tab\n * </Tab.Button>\n */\nexport const TabButton = forwardRef<HTMLButtonElement, TabButtonProps>(\n (props, ref) => {\n const buttonRef = useRef<HTMLButtonElement>(null);\n const shouldReduceMotion = useReducedMotion();\n const {\n current,\n items,\n setCurrent,\n focus,\n setFocus,\n onKeyDownHandler: focusController,\n uid,\n } = useContext(TabContext);\n\n const {\n onClick,\n children,\n onFocus,\n onKeyDown,\n controls,\n id,\n className,\n style,\n ...rest\n } = props;\n\n const index =\n items && Array.prototype.indexOf.call(items, buttonRef.current);\n\n const onClickHandler = (e: MouseEvent<HTMLButtonElement>) => {\n if (index === undefined) return;\n onClick?.(e, index);\n\n setCurrent?.(index);\n\n setFocus?.(index);\n items?.[index].focus();\n };\n\n const onKeyDownHandler = (e: KeyboardEvent<HTMLButtonElement>) => {\n focusController?.(e);\n onKeyDown?.(e);\n };\n\n const data = {\n id,\n controls,\n };\n\n const trackingId = useTrackingId({\n name: \"TabButton\",\n data,\n hasOverride: !!rest[\"data-tracking-id\"],\n });\n\n const tabButtonClassNames = cx(styles[\"tab-button\"], className);\n\n return (\n <button\n data-tracking-id={trackingId}\n type=\"button\"\n role=\"tab\"\n data-anv=\"tab-button\"\n id={id}\n className={tabButtonClassNames}\n aria-selected={items?.[current].id === id}\n aria-controls={controls}\n onClick={onClickHandler}\n onKeyDown={onKeyDownHandler}\n tabIndex={items?.[focus].id === id ? 0 : -1}\n {...rest}\n ref={useMergeRefs([buttonRef, ref])}\n >\n <span className={styles[\"inner\"]}>{children}</span>\n {items?.[current].id === id && (\n <motion.span\n layoutId={uid}\n className={styles[\"indicator\"]}\n transition={{\n duration: shouldReduceMotion\n ? 0\n : +core.primitive.Duration.value.replace(\"ms\", \"\") / 1000,\n }}\n />\n )}\n </button>\n );\n },\n);\n\nTabButton.displayName = \"TabButton\";\n","import * as React from \"react\";\nconst SvgArrowBack = (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: \"M19 11H7.83l4.88-4.88c.39-.39.39-1.03 0-1.42a.996.996 0 0 0-1.41 0l-6.59 6.59a.996.996 0 0 0 0 1.41l6.59 6.59a.996.996 0 1 0 1.41-1.41L7.83 13H19c.55 0 1-.45 1-1s-.45-1-1-1z\" }));\nexport default SvgArrowBack;\n","import * as React from \"react\";\nconst SvgArrowForward = (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: \"M5 13h11.17l-4.88 4.88c-.39.39-.39 1.03 0 1.42.39.39 1.02.39 1.41 0l6.59-6.59a.996.996 0 0 0 0-1.41l-6.58-6.6a.996.996 0 1 0-1.41 1.41L16.17 11H5c-.55 0-1 .45-1 1s.45 1 1 1z\" }));\nexport default SvgArrowForward;\n","import {\n ComponentPropsWithoutRef,\n forwardRef,\n useState,\n UIEvent,\n useContext,\n useLayoutEffect,\n useRef,\n useCallback,\n} from \"react\";\nimport ArrowBack from \"@servicetitan/hammer-icon/mdi/round/arrow_back.svg\";\nimport ArrowForward from \"@servicetitan/hammer-icon/mdi/round/arrow_forward.svg\";\nimport { Icon } from \"../Icon\";\n\nimport cx from \"classnames\";\nimport styles from \"./Tab.module.scss\";\nimport { TabContext } from \"./internal/TabContext\";\n\n/**\n * Props for the TabList component\n * @extends ComponentPropsWithoutRef<\"div\">\n */\nexport type TabListProps = ComponentPropsWithoutRef<\"div\">;\n\n/**\n * TabList component for containing and managing tab buttons.\n *\n * Features:\n * - Horizontal scrolling for overflow tabs\n * - Navigation arrows for overflow content\n * - RTL language support\n * - Automatic overflow detection\n * - Proper ARIA roles for accessibility\n * - Smooth scrolling behavior\n * - Visual indicator positioning\n *\n * @example\n * <Tab.List>\n * <Tab.Button id=\"tab1\" controls=\"panel1\">First Tab</Tab.Button>\n * <Tab.Button id=\"tab2\" controls=\"panel2\">Second Tab</Tab.Button>\n * <Tab.Button id=\"tab3\" controls=\"panel3\">Third Tab</Tab.Button>\n * </Tab.List>\n */\nexport const TabList = forwardRef<HTMLDivElement, TabListProps>(\n (props, ref) => {\n const { className, children, onKeyDown, ...rest } = props;\n const { goToPrev, gotoNext, dir } = useContext(TabContext);\n const [leftOverflow, setLeftOverflow] = useState(false);\n const [rightOverflow, setRightOverflow] = useState(false);\n const scrollRef = useRef<HTMLDivElement>(null);\n const [indicatorPos, _setIndicatorPos] = useState<{\n left: number;\n width: number;\n }>();\n\n const calculateOverflow = useCallback(\n (el: HTMLElement) => {\n const leftOverflows =\n dir === \"ltr\"\n ? el.scrollLeft > 0\n : el.scrollLeft > el.offsetWidth - el.scrollWidth + 1;\n const rightOverflows =\n dir === \"ltr\"\n ? el.scrollLeft < el.scrollWidth - el.offsetWidth\n : el.scrollLeft < 0;\n setLeftOverflow(leftOverflows);\n setRightOverflow(rightOverflows);\n },\n [dir],\n );\n\n useLayoutEffect(() => {\n if (!scrollRef.current) return;\n const observer = new ResizeObserver((entries) => {\n for (const entry of entries) {\n calculateOverflow(entry.target as HTMLElement);\n }\n });\n\n observer.observe(scrollRef.current);\n\n // Cleanup function\n return () => {\n observer.disconnect();\n };\n }, [calculateOverflow]);\n\n // update overflow position on scroll\n const overflowPosition = (e: UIEvent<HTMLDivElement>) => {\n const target = e.target as HTMLElement;\n calculateOverflow(target);\n };\n\n const tabListClassNames = cx(styles[\"tab-list\"], className);\n\n const scrollerClassNames = cx(styles[\"scroller\"], {\n [styles[\"left\"]]: leftOverflow,\n [styles[\"right\"]]: rightOverflow,\n });\n\n return (\n <div\n {...rest}\n className={tabListClassNames}\n data-anv=\"tab-list\"\n ref={ref}\n >\n {(dir === \"ltr\" ? leftOverflow : rightOverflow) && (\n <button\n tabIndex={-1}\n onClick={() => goToPrev?.(false)}\n className={styles[\"overflow-prev\"]}\n aria-label=\"Previous tab\"\n >\n <Icon svg={ArrowBack} aria-hidden size=\"medium\" />\n </button>\n )}\n <div\n onScroll={overflowPosition}\n className={scrollerClassNames}\n role=\"tablist\"\n ref={scrollRef}\n >\n {children}\n <span\n className={styles[\"indicator\"]}\n style={{\n insetInlineStart: dir === \"ltr\" ? indicatorPos?.left : undefined,\n insetInlineEnd: dir === \"rtl\" ? indicatorPos?.left : undefined,\n width: indicatorPos?.width,\n }}\n />\n </div>\n {(dir === \"ltr\" ? rightOverflow : leftOverflow) && (\n <button\n tabIndex={-1}\n onClick={() => gotoNext?.(false)}\n className={styles[\"overflow-next\"]}\n aria-label=\"Next tab\"\n >\n <Icon svg={ArrowForward} aria-hidden size=\"medium\" />\n </button>\n )}\n </div>\n );\n },\n);\n\nTabList.displayName = \"TabList\";\n","import { ComponentPropsWithoutRef, forwardRef, useContext } from \"react\";\nimport { motion } from \"motion/react\";\nimport { core } from \"@servicetitan/hammer-token\";\nimport { TabContext } from \"./internal/TabContext\";\n\nimport cx from \"classnames\";\nimport styles from \"./Tab.module.scss\";\n\n/**\n * Props for the TabPanel component\n * @extends Omit<ComponentPropsWithoutRef<\"div\">, \"onAnimationStart\" | \"onDragStart\" | \"onDragEnd\" | \"onDrag\">\n */\nexport type TabPanelProps = Omit<\n ComponentPropsWithoutRef<\"div\">,\n \"onAnimationStart\" | \"onDragStart\" | \"onDragEnd\" | \"onDrag\"\n> & {\n /**\n * Unique identifier for the tab panel.\n */\n id: string;\n};\n\n/**\n * TabPanel component for displaying tab content.\n *\n * Features:\n * - Automatic visibility based on active tab\n * - Smooth fade animations\n * - Proper ARIA attributes for accessibility\n * - Automatic association with tab buttons\n * - Focus management\n * - Layout animations\n *\n * @example\n * <Tab.Panel id=\"panel1\">\n * <h2>First Tab Content</h2>\n * <p>This is the content for the first tab.</p>\n * </Tab.Panel>\n */\nexport const TabPanel = forwardRef<HTMLDivElement, TabPanelProps>(\n (props, ref) => {\n const { id, className, style, ...rest } = props;\n const { current, items } = useContext(TabContext);\n\n let labelledby;\n\n items?.forEach((el) => {\n const controlId = el.getAttribute(\"aria-controls\");\n if (controlId === id) {\n labelledby = el.id;\n }\n });\n const currentId = items?.[current]?.getAttribute(\"aria-controls\");\n const isCurrent = currentId === id;\n\n const tabPanelClassNames = cx(styles[\"tab-panel\"], className);\n\n if (!isCurrent) return null;\n return (\n <motion.div\n className={tabPanelClassNames}\n transition={{\n opacity: {\n duration:\n +core.primitive.DurationSlow.value.replace(\"ms\", \"\") / 1000,\n },\n }}\n initial={{ opacity: 0 }}\n animate={{ opacity: 1 }}\n exit={{ opacity: 0 }}\n layout\n {...rest}\n role=\"tabpanel\"\n data-anv=\"tab-panel\"\n id={id}\n aria-labelledby={labelledby}\n tabIndex={0}\n ref={ref}\n />\n );\n },\n);\n\nTabPanel.displayName = \"TabPanel\";\n","import {\n ComponentPropsWithoutRef,\n KeyboardEvent,\n Ref,\n forwardRef,\n useCallback,\n useEffect,\n useId,\n useMemo,\n useRef,\n useState,\n} from \"react\";\nimport { LayoutUtilProps } from \"../../types\";\nimport { TabButton } from \"./TabButton\";\nimport { TabList } from \"./TabList\";\nimport { TabPanel } from \"./TabPanel\";\nimport { useLayoutPropsUtil } from \"../../internal/hooks\";\nimport { TabContext } from \"./internal/TabContext\";\nimport { AnimatePresence, motion } from \"motion/react\";\nimport { useMergeRefs } from \"../../hooks\";\n\nimport cx from \"classnames\";\nimport styles from \"./Tab.module.scss\";\n\n/**\n * Props for the Tab component\n * @extends Omit<ComponentPropsWithoutRef<\"div\">, \"onAnimationStart\" | \"onDragStart\" | \"onDragEnd\" | \"onDrag\">\n * @extends LayoutUtilProps\n */\nexport type TabProps = Omit<\n ComponentPropsWithoutRef<\"div\">,\n \"onAnimationStart\" | \"onDragStart\" | \"onDragEnd\" | \"onDrag\"\n> &\n LayoutUtilProps & {\n /**\n * The index of the tab that should be active by default.\n */\n defaultIndex: number;\n /**\n * Whether the tabs should fill the available width.\n * @default false\n */\n fill?: boolean;\n };\n\nconst TabElement = forwardRef((props: TabProps, ref: Ref<HTMLDivElement>) => {\n const { layoutStyles, componentProps } = useLayoutPropsUtil(props);\n const { defaultIndex, className, style, fill, ...rest } = componentProps;\n const tabRef = useRef<HTMLDivElement>(null);\n const [items, setItems] = useState<NodeListOf<HTMLElement>>();\n const [current, setCurrent] = useState<number>(defaultIndex ?? 0);\n const [focus, setFocus] = useState<number>(defaultIndex ?? 0);\n const [dir, setDir] = useState(\"ltr\");\n const uid = useId();\n\n useEffect(() => {\n setItems(tabRef.current?.querySelectorAll(\"[role=tab]:not([disabled])\"));\n }, [tabRef]);\n\n useEffect(() => {\n if (tabRef.current?.closest(\"[dir]\")?.getAttribute(\"dir\") === \"rtl\") {\n setDir(\"rtl\");\n } else {\n setDir(\"ltr\");\n }\n }, []);\n\n useEffect(() => {\n if (!tabRef.current) return;\n\n const mutationCallback = () => {\n setItems(tabRef.current?.querySelectorAll(\"[role=tab]:not([disabled])\"));\n };\n\n const observer = new MutationObserver(mutationCallback);\n observer.observe(tabRef.current, {\n childList: true, // Observe changes to child elements\n subtree: true, // Observe changes to descendants of the target\n attributes: true, // Observe changes to attributes\n characterData: true, // Observe changes to text content\n });\n return () => {\n observer.disconnect();\n };\n }, []);\n\n // scroll behavior of the focus tab item\n const focusScroller = (node: HTMLElement | undefined) => {\n node?.scrollIntoView({\n behavior: \"smooth\",\n block: \"nearest\",\n inline: \"center\",\n });\n };\n\n const gotoNext = useCallback(\n (_refocus = true) => {\n if (focus + 1 === items?.length) {\n setFocus?.(0);\n items?.[0].focus();\n focusScroller(items?.[0]);\n return;\n }\n setFocus?.(focus + 1);\n items?.[focus + 1].focus();\n focusScroller(items?.[focus + 1]);\n },\n [focus, items],\n );\n\n const goToPrev = useCallback(\n (_refocus = true) => {\n if (focus === 0) {\n const lastItemIndex = items ? items?.length - 1 : 0;\n setFocus?.(lastItemIndex);\n items?.[lastItemIndex].focus();\n focusScroller(items?.[lastItemIndex]);\n return;\n }\n setFocus?.(focus - 1);\n items?.[focus - 1].focus();\n focusScroller(items?.[focus - 1]);\n },\n [focus, items],\n );\n\n const onKeyDownHandler = useCallback(\n (e: KeyboardEvent<HTMLButtonElement>) => {\n switch (e.code) {\n case \"Enter\":\n case \"Space\":\n setCurrent?.(focus);\n break;\n case \"ArrowRight\":\n e.preventDefault();\n if (dir === \"ltr\") {\n gotoNext();\n } else {\n goToPrev();\n }\n break;\n case \"ArrowLeft\":\n e.preventDefault();\n if (dir === \"ltr\") {\n goToPrev();\n } else {\n gotoNext();\n }\n break;\n default:\n break;\n }\n },\n [dir, focus, goToPrev, gotoNext],\n );\n\n const value = useMemo(\n () => ({\n current,\n setCurrent,\n focus,\n setFocus,\n items,\n uid,\n onKeyDownHandler,\n gotoNext,\n goToPrev,\n dir,\n }),\n [current, focus, goToPrev, gotoNext, items, onKeyDownHandler, uid, dir],\n );\n\n const tabClassNames = cx(styles[\"tab\"], className, {\n [styles[\"fill\"]]: fill,\n });\n\n const styleCombined = {\n ...style,\n ...layoutStyles,\n };\n\n return (\n <TabContext.Provider value={value}>\n <AnimatePresence initial={false}>\n <motion.div\n transition={{ duration: 0 }}\n layout\n className={tabClassNames}\n data-anv=\"tab\"\n style={styleCombined}\n {...rest}\n ref={useMergeRefs([tabRef, ref])}\n />\n </AnimatePresence>\n </TabContext.Provider>\n );\n});\n\nTabElement.displayName = \"Tab\";\n\n/**\n * Tab component for organizing content into multiple sections with navigation.\n *\n * Features:\n * - Keyboard navigation support (arrow keys, Enter, Space)\n * - Accessible with proper ARIA roles and attributes\n * - Smooth animations and transitions\n * - RTL language support\n * - Automatic focus management\n * - Scroll behavior for overflow tabs\n * - Compound component pattern with Tab.Button, Tab.List, and Tab.Panel\n * - Supports layout utilities for positioning and spacing\n *\n * @example\n * <Tab defaultIndex={0}>\n * <Tab.List>\n * <Tab.Button id=\"tab1\" controls=\"panel1\">First Tab</Tab.Button>\n * <Tab.Button id=\"tab2\" controls=\"panel2\">Second Tab</Tab.Button>\n * </Tab.List>\n * <Tab.Panel id=\"panel1\">Content for first tab</Tab.Panel>\n * <Tab.Panel id=\"panel2\">Content for second tab</Tab.Panel>\n * </Tab>\n */\nexport const Tab = Object.assign(TabElement, {\n /**\n * TabButton component for individual tab navigation buttons.\n *\n * Features:\n * - Automatic ARIA attributes for accessibility\n * - Visual indicator for active state\n * - Keyboard navigation support\n * - Smooth animations with reduced motion support\n * - Proper focus management\n * - RTL language support\n * - Automatic tracking ID generation for analytics\n *\n * @example\n * <Tab.Button id=\"tab1\" controls=\"panel1\" onClick={(e, index) => console.log('Tab clicked:', index)}>\n * First Tab\n * </Tab.Button>\n */\n Button: TabButton,\n /**\n * TabList component for containing and managing tab buttons.\n *\n * Features:\n * - Horizontal scrolling for overflow tabs\n * - Navigation arrows for overflow content\n * - RTL language support\n * - Automatic overflow detection\n * - Proper ARIA roles for accessibility\n * - Smooth scrolling behavior\n * - Visual indicator positioning\n *\n * @example\n * <Tab.List>\n * <Tab.Button id=\"tab1\" controls=\"panel1\">First Tab</Tab.Button>\n * <Tab.Button id=\"tab2\" controls=\"panel2\">Second Tab</Tab.Button>\n * <Tab.Button id=\"tab3\" controls=\"panel3\">Third Tab</Tab.Button>\n * </Tab.List>\n */\n List: TabList,\n /**\n * TabPanel component for displaying tab content.\n *\n * Features:\n * - Automatic visibility based on active tab\n * - Smooth fade animations\n * - Proper ARIA attributes for accessibility\n * - Automatic association with tab buttons\n * - Focus management\n * - Layout animations\n *\n * @example\n * <Tab.Panel id=\"panel1\">\n * <h2>First Tab Content</h2>\n * <p>This is the content for the first tab.</p>\n * </Tab.Panel>\n */\n Panel: TabPanel,\n});\n"],"names":["index","core.primitive.Duration","ArrowBack","ArrowForward","core.primitive.DurationSlow"],"mappings":"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","x_google_ignoreList":[0,1,2,3]}
|