@servicetitan/anvil2 1.45.2 → 1.46.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (109) hide show
  1. package/CHANGELOG.md +20 -0
  2. package/dist/{Calendar-BK861SAW.js → Calendar-BQ5F2ENO.js} +2 -2
  3. package/dist/{Calendar-BK861SAW.js.map → Calendar-BQ5F2ENO.js.map} +1 -1
  4. package/dist/Calendar.js +1 -1
  5. package/dist/{Checkbox-ZphVb1l0.js → Checkbox-DDrmVC-u.js} +2 -2
  6. package/dist/{Checkbox-ZphVb1l0.js.map → Checkbox-DDrmVC-u.js.map} +1 -1
  7. package/dist/{Checkbox-CYNjFdtO.js → Checkbox-Dl4KTwEJ.js} +2 -2
  8. package/dist/{Checkbox-CYNjFdtO.js.map → Checkbox-Dl4KTwEJ.js.map} +1 -1
  9. package/dist/Checkbox.js +2 -2
  10. package/dist/{useInfiniteCombobox-BaYWUxjg.js → Combobox-B9nesJuc.js} +18 -185
  11. package/dist/Combobox-B9nesJuc.js.map +1 -0
  12. package/dist/Combobox.js +2 -1
  13. package/dist/Combobox.js.map +1 -1
  14. package/dist/{DateField-DnasO2rB.js → DateField-DXxPsRtf.js} +2 -2
  15. package/dist/{DateField-DnasO2rB.js.map → DateField-DXxPsRtf.js.map} +1 -1
  16. package/dist/DateField.js +1 -1
  17. package/dist/{DateFieldRange-Ba-8T-Nz.js → DateFieldRange-Xauviu1w.js} +6 -6
  18. package/dist/DateFieldRange-Xauviu1w.js.map +1 -0
  19. package/dist/DateFieldRange.js +1 -1
  20. package/dist/{DateFieldSingle-BBu5Hi9c.js → DateFieldSingle-yLnwpVzd.js} +4 -4
  21. package/dist/{DateFieldSingle-BBu5Hi9c.js.map → DateFieldSingle-yLnwpVzd.js.map} +1 -1
  22. package/dist/DateFieldSingle.js +1 -1
  23. package/dist/Dnd.js +1 -1
  24. package/dist/DndSort.js +1 -1
  25. package/dist/{ListView-DEAMQopB.js → ListView-pb3rIcze.js} +2 -2
  26. package/dist/{ListView-DEAMQopB.js.map → ListView-pb3rIcze.js.map} +1 -1
  27. package/dist/ListView.js +1 -1
  28. package/dist/{Menu-C8we5CHP.js → Menu-DEVZz9xZ.js} +8 -3
  29. package/dist/Menu-DEVZz9xZ.js.map +1 -0
  30. package/dist/Menu.js +1 -1
  31. package/dist/{Page-cKXkjMmd.js → Page-BMDkbDcU.js} +2 -2
  32. package/dist/{Page-cKXkjMmd.js.map → Page-BMDkbDcU.js.map} +1 -1
  33. package/dist/Page.js +1 -1
  34. package/dist/{Pagination-ta8a2cJN.js → Pagination-BJsCppgW.js} +2 -2
  35. package/dist/{Pagination-ta8a2cJN.js.map → Pagination-BJsCppgW.js.map} +1 -1
  36. package/dist/Pagination.js +1 -1
  37. package/dist/{SearchField-BKXkoWPs.js → SearchField-Bb0uObwG.js} +2 -2
  38. package/dist/{SearchField-BKXkoWPs.js.map → SearchField-Bb0uObwG.js.map} +1 -1
  39. package/dist/SearchField.js +1 -1
  40. package/dist/{SelectCard-BWh8Yp7T.js → SelectCard-BTYZg9TG.js} +2 -2
  41. package/dist/{SelectCard-BWh8Yp7T.js.map → SelectCard-BTYZg9TG.js.map} +1 -1
  42. package/dist/SelectCard.js +1 -1
  43. package/dist/Toolbar-D4zuUFhb.js +2077 -0
  44. package/dist/Toolbar-D4zuUFhb.js.map +1 -0
  45. package/dist/Toolbar.css +139 -28
  46. package/dist/Toolbar.d.ts +3 -3
  47. package/dist/Toolbar.js +1 -1
  48. package/dist/assets/icons/st/gnav_legacy_search_filled.svg +1 -1
  49. package/dist/assets/icons/st/gnav_legacy_search_outline.svg +1 -1
  50. package/dist/beta/components/Toolbar/Filters/FilterButton.d.ts +30 -0
  51. package/dist/beta/components/Toolbar/Filters/FilterDateRange.d.ts +37 -0
  52. package/dist/beta/components/Toolbar/Filters/FilterDateSingle.d.ts +30 -0
  53. package/dist/beta/components/Toolbar/Filters/FilterDrawer.d.ts +15 -0
  54. package/dist/beta/components/Toolbar/Filters/FilterGroup.d.ts +25 -0
  55. package/dist/beta/components/Toolbar/Filters/FilterItemWrapper.d.ts +24 -0
  56. package/dist/beta/components/Toolbar/Filters/FilterSelect.d.ts +29 -0
  57. package/dist/beta/components/Toolbar/Filters/FilterToggleButton.d.ts +24 -0
  58. package/dist/beta/components/Toolbar/Filters/internal/FilterGroupContext.d.ts +40 -0
  59. package/dist/beta/components/Toolbar/Filters/internal/types.d.ts +130 -0
  60. package/dist/beta/components/Toolbar/Filters/internal/utils/filter-state.d.ts +40 -0
  61. package/dist/beta/components/Toolbar/Filters/internal/utils/test.d.ts +57 -0
  62. package/dist/beta/components/Toolbar/Toolbar.d.ts +302 -0
  63. package/dist/beta/components/Toolbar/ToolbarButton.d.ts +41 -0
  64. package/dist/beta/components/Toolbar/ToolbarButtonLink.d.ts +43 -0
  65. package/dist/beta/components/Toolbar/ToolbarButtonToggle.d.ts +42 -0
  66. package/dist/beta/components/Toolbar/ToolbarControlGroup.d.ts +20 -0
  67. package/dist/beta/components/Toolbar/ToolbarSearchField.d.ts +20 -0
  68. package/dist/beta/components/Toolbar/ToolbarSelect.d.ts +108 -0
  69. package/dist/beta/components/Toolbar/index.d.ts +9 -0
  70. package/dist/beta/components/Toolbar/internal/ToolbarItemOverflowContext.d.ts +19 -0
  71. package/dist/beta/components/Toolbar/internal/ToolbarItemWrapper.d.ts +40 -0
  72. package/dist/beta/components/Toolbar/internal/ToolbarOverflowContext.d.ts +35 -0
  73. package/dist/beta/components/Toolbar/internal/ToolbarOverflowMenu.d.ts +29 -0
  74. package/dist/beta/components/Toolbar/internal/utils/accessibility.d.ts +26 -0
  75. package/dist/beta/components/Toolbar/internal/utils/test.d.ts +29 -0
  76. package/dist/beta/components/Toolbar/types.d.ts +50 -0
  77. package/dist/beta/components/index.d.ts +1 -0
  78. package/dist/beta/index.d.ts +1 -0
  79. package/dist/beta.d.ts +2 -0
  80. package/dist/beta.js +2 -0
  81. package/dist/beta.js.map +1 -0
  82. package/dist/components/Combobox/ComboboxTypes.d.ts +8 -0
  83. package/dist/components/DateFieldRange/internal/DateFieldRangeCalendar.d.ts +1 -1
  84. package/dist/components/Dialog/index.d.ts +1 -1
  85. package/dist/{indeterminate_check_box-Bg24oeHy.js → indeterminate_check_box-RY9zr3xS.js} +17 -17
  86. package/dist/{indeterminate_check_box-Bg24oeHy.js.map → indeterminate_check_box-RY9zr3xS.js.map} +1 -1
  87. package/dist/indeterminate_check_box.css +72 -66
  88. package/dist/{index-CqdP5W00.js → index-V5Ez2gq_.js} +2 -2
  89. package/dist/{index-CqdP5W00.js.map → index-V5Ez2gq_.js.map} +1 -1
  90. package/dist/index.css +125 -26
  91. package/dist/index.js +759 -27
  92. package/dist/index.js.map +1 -1
  93. package/dist/index2.css +88 -105
  94. package/dist/internal/hooks/index.d.ts +1 -0
  95. package/dist/internal/hooks/useContainerQuery/index.d.ts +1 -0
  96. package/dist/internal/hooks/useContainerQuery/useContainerQuery.d.ts +46 -0
  97. package/dist/{useDateFieldOrchestration-DPLftOxu.js → useDateFieldOrchestration-BNJCsRkS.js} +2 -2
  98. package/dist/{useDateFieldOrchestration-DPLftOxu.js.map → useDateFieldOrchestration-BNJCsRkS.js.map} +1 -1
  99. package/dist/useInfiniteCombobox-WcRgC9p6.js +179 -0
  100. package/dist/useInfiniteCombobox-WcRgC9p6.js.map +1 -0
  101. package/dist/useIntersectionObserver-BEmMDO3P.js +70 -0
  102. package/dist/useIntersectionObserver-BEmMDO3P.js.map +1 -0
  103. package/package.json +2 -1
  104. package/dist/DateFieldRange-Ba-8T-Nz.js.map +0 -1
  105. package/dist/Menu-C8we5CHP.js.map +0 -1
  106. package/dist/Toolbar-DK7tXy_W.js +0 -807
  107. package/dist/Toolbar-DK7tXy_W.js.map +0 -1
  108. package/dist/useInfiniteCombobox-BaYWUxjg.js.map +0 -1
  109. /package/dist/{useInfiniteCombobox.css → Combobox.css} +0 -0
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Menu-DEVZz9xZ.js","sources":["../../hammer-icon/mdi/round/arrow_drop_up.svg","../src/components/Menu/internal/MenuContext.ts","../../hammer-icon/mdi/round/navigate_next.svg","../src/components/Menu/internal/MenuLegacy/MenuLegacyContext.ts","../src/components/Menu/internal/MenuLegacy/MenuLegacyItem.tsx","../src/components/Menu/internal/MenuLegacy/MenuLegacy.tsx","../src/components/Menu/MenuItem.tsx","../src/components/Menu/internal/MenuNested.tsx","../src/components/Menu/Menu.tsx"],"sourcesContent":["import * as React from \"react\";\nconst SvgArrowDropUp = (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: \"M8.71 12.29 11.3 9.7a.996.996 0 0 1 1.41 0l2.59 2.59c.63.63.18 1.71-.71 1.71H9.41c-.89 0-1.33-1.08-.7-1.71z\" }));\nexport default SvgArrowDropUp;\n","import { createContext } from \"react\";\n\nimport { MenuProps } from \"../Menu\";\n\n/**\n * Context props for Menu components\n */\nexport type MenuContextProps = {\n /**\n * Function to close the root menu\n */\n closeRootMenu: () => void;\n /**\n * Whether auto height is disabled\n */\n disableAutoHeight: MenuProps[\"disableAutoHeight\"];\n};\nexport const MenuContext = createContext<MenuContextProps | null>(null);\n","import * as React from \"react\";\nconst SvgNavigateNext = (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: \"M9.31 6.71a.996.996 0 0 0 0 1.41L13.19 12l-3.88 3.88a.996.996 0 1 0 1.41 1.41l4.59-4.59a.996.996 0 0 0 0-1.41L10.72 6.7c-.38-.38-1.02-.38-1.41.01z\" }));\nexport default SvgNavigateNext;\n","import { Dispatch, HTMLProps, SetStateAction, createContext } from \"react\";\n\nimport { PopoverControlProps } from \"./MenuLegacy\";\n\nexport const MenuLegacyContext = createContext<\n {\n getItemProps: (\n userProps?: HTMLProps<HTMLElement>,\n ) => Record<string, unknown>;\n activeIndex: number | null;\n setActiveIndex?: Dispatch<SetStateAction<number | null>>;\n setHasFocusInside?: Dispatch<SetStateAction<boolean>>;\n isOpen: boolean;\n } & PopoverControlProps\n>({\n getItemProps: () => ({}),\n activeIndex: null,\n isOpen: false,\n});\n","import { useFloatingTree, useListItem } from \"@floating-ui/react\";\nimport {\n ButtonHTMLAttributes,\n MouseEvent,\n forwardRef,\n useContext,\n FocusEvent,\n ComponentPropsWithoutRef,\n ReactNode,\n} from \"react\";\nimport cx from \"classnames\";\n\nimport { childrenToString } from \"../../../../internal/functions\";\nimport { Icon, IconProps } from \"../../../Icon\";\nimport { useMergeRefs } from \"../../../../hooks\";\n\nimport { MenuLegacyContext } from \"./MenuLegacyContext\";\n\nimport styles from \"./MenuLegacy.module.scss\";\n\nexport type MenuLegacyItemProps = {\n icon?: IconProps[\"svg\"];\n label: ReactNode;\n disabled?: boolean;\n} & ComponentPropsWithoutRef<\"button\">;\n\nexport const MenuLegacyItem = forwardRef<\n HTMLButtonElement,\n MenuLegacyItemProps & ButtonHTMLAttributes<HTMLButtonElement>\n>(({ label, disabled, icon, className, ...props }, forwardedRef) => {\n const MenuLegacy = useContext(MenuLegacyContext);\n const item = useListItem({\n label: disabled ? null : childrenToString(label),\n });\n const tree = useFloatingTree();\n const isActive = item.index === MenuLegacy.activeIndex;\n const itemCx = cx([styles[\"item\"]], className);\n return (\n <button\n {...props}\n ref={useMergeRefs([item.ref, forwardedRef])}\n type=\"button\"\n role=\"menuitem\"\n data-anv=\"menu-item\"\n className={itemCx}\n tabIndex={isActive ? 0 : -1}\n disabled={disabled}\n {...MenuLegacy.getItemProps({\n onClick(event: MouseEvent<HTMLButtonElement>) {\n props.onClick?.(event);\n tree?.events.emit(\"click\");\n },\n onFocus(event: FocusEvent<HTMLButtonElement>) {\n props.onFocus?.(event);\n MenuLegacy.setHasFocusInside?.(true);\n },\n })}\n >\n {icon ? <Icon inherit aria-hidden svg={icon} /> : null}\n {label}\n </button>\n );\n});\n\nMenuLegacyItem.displayName = \"MenuLegacyItem\";\n","import {\n autoUpdate,\n flip,\n FloatingFocusManager,\n FloatingList,\n FloatingNode,\n FloatingPortal,\n FloatingTree,\n offset,\n shift,\n size,\n useHover,\n safePolygon,\n useClick,\n useDismiss,\n useFloating,\n useFloatingNodeId,\n useFloatingParentNodeId,\n useFloatingTree,\n useInteractions,\n useListItem,\n useListNavigation,\n useRole,\n useTypeahead,\n limitShift,\n Placement,\n} from \"@floating-ui/react\";\nimport {\n forwardRef,\n HTMLProps,\n useContext,\n useEffect,\n useRef,\n useState,\n FocusEvent,\n MouseEvent,\n AriaAttributes,\n ReactElement,\n useMemo,\n} from \"react\";\nimport cx from \"classnames\";\nimport Next from \"@servicetitan/hammer-icon/mdi/round/navigate_next.svg\";\nimport Up from \"@servicetitan/hammer-icon/mdi/round/arrow_drop_up.svg\";\nimport Down from \"@servicetitan/hammer-icon/mdi/round/arrow_drop_down.svg\";\n\nimport { Button, ButtonProps } from \"../../../Button\";\nimport { DialogContext } from \"../../../Dialog/internal/DialogContext\";\nimport { DrawerContext } from \"../../../Drawer/internal/DrawerContext\";\nimport { Icon, IconProps } from \"../../../Icon\";\nimport { ThemeProvider, PortalProviderContext } from \"../../../../providers\";\nimport { ThemeProviderContext } from \"../../../../providers/ThemeProvider/internal/ThemeProviderContext\";\nimport { useMergeRefs } from \"../../../../hooks\";\n\nimport { MenuLegacyItem } from \"./MenuLegacyItem\";\nimport { MenuLegacyContext } from \"./MenuLegacyContext\";\n\nimport styles from \"./MenuLegacy.module.scss\";\n\nexport type PopoverControlProps = {\n disableAutoHeight?: boolean;\n root?: HTMLElement | React.MutableRefObject<HTMLElement | null> | null;\n placement?: \"bottom-start\" | \"top-start\" | \"bottom-end\" | \"top-end\";\n};\n\ntype TriggerReturnProps = {\n \"data-open\"?: boolean;\n \"data-focus-inside\"?: boolean;\n \"aria-controls\"?: AriaAttributes[\"aria-controls\"];\n \"aria-expanded\"?: AriaAttributes[\"aria-expanded\"];\n \"aria-haspopup\"?: AriaAttributes[\"aria-haspopup\"];\n id?: string;\n onClick?: () => void;\n onFocus?: () => void;\n onKeyDown?: () => void;\n onKeyUp?: () => void;\n onMouseDown?: () => void;\n onPointerDown?: () => void;\n ref?: ((instance: HTMLElement | null) => void) | null;\n};\n\ntype DefaultTriggerProps = {\n trigger?: never;\n open?: boolean;\n icon?: IconProps[\"svg\"];\n} & (\n | {\n label: string;\n }\n | {\n \"aria-label\": string;\n }\n | {\n \"aria-labellbedby\": string;\n }\n) &\n Omit<ButtonProps, \"icon\"> &\n PopoverControlProps;\n\ntype CustomTriggerProps = {\n trigger: (props: TriggerReturnProps) => ReactElement;\n icon?: IconProps[\"svg\"];\n label?: never;\n open?: boolean;\n // This is to allow any type of element to be used as a custom trigger element\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n} & Omit<HTMLProps<any>, \"ref\"> &\n PopoverControlProps;\n\nexport type MenuLegacyProps = DefaultTriggerProps | CustomTriggerProps;\n\nexport const MenuLegacyComponent = forwardRef<HTMLElement, MenuLegacyProps>(\n (\n {\n children,\n disableAutoHeight,\n open,\n icon,\n root,\n placement = \"bottom-start\",\n ...props\n },\n forwardedRef,\n ) => {\n const [isOpen, setIsOpen] = useState(!!open || false);\n const [hasFocusInside, setHasFocusInside] = useState(false);\n const [activeIndex, setActiveIndex] = useState<number | null>(null);\n\n const scrollRef = useRef<HTMLDivElement>(null);\n const [scrollTop, setScrollTop] = useState(0);\n const [menuHeight, setMenuLegacyHeight] = useState<number | null>(null);\n const [arrowStart, setArrowStart] = useState(false);\n const [arrowEnd, setArrowEnd] = useState(false);\n\n const elementsRef = useRef<Array<HTMLButtonElement | null>>([]);\n const labelsRef = useRef<Array<string | null>>([]);\n const parent = useContext(MenuLegacyContext);\n const { root: portalRoot } = useContext(PortalProviderContext);\n\n const tree = useFloatingTree();\n const nodeId = useFloatingNodeId();\n const parentId = useFloatingParentNodeId();\n const item = useListItem();\n\n const isNested = parentId != null;\n\n const { theme, mode = \"light\" } = useContext(ThemeProviderContext);\n\n const dialogContext = useContext(DialogContext);\n const drawerContext = useContext(DrawerContext);\n\n const fallbackArr = () => {\n if (!isNested) {\n if (placement.startsWith(\"top\")) {\n return disableAutoHeight\n ? placement\n : [\"top-start\", \"top-end\", \"bottom-start\", \"bottom-end\"];\n }\n return disableAutoHeight\n ? placement\n : [\"bottom-start\", \"bottom-end\", \"top-start\", \"top-end\"];\n }\n\n return parent.disableAutoHeight\n ? [\"right-start\"]\n : [\"right-start\", \"right-end\", \"left-start\", \"left-end\"];\n };\n\n const handleIsOpenChange = (internalOpen: boolean) => {\n if (typeof open === \"boolean\") {\n setIsOpen(open);\n return;\n }\n setIsOpen(internalOpen);\n };\n\n const { floatingStyles, refs, context } = useFloating<HTMLButtonElement>({\n nodeId,\n open: isOpen,\n onOpenChange: handleIsOpenChange,\n placement: isNested ? \"right-start\" : placement,\n middleware: [\n offset({\n mainAxis: isNested ? 0 : 4,\n alignmentAxis: isNested ? -4 : 0,\n }),\n flip({\n fallbackStrategy: \"bestFit\",\n fallbackPlacements: fallbackArr() as Placement[],\n }),\n shift({\n mainAxis: !parent.disableAutoHeight,\n crossAxis: false,\n limiter: limitShift({\n mainAxis: !parent.disableAutoHeight,\n }),\n }),\n size({\n padding: 8,\n apply({ availableWidth, availableHeight, elements }) {\n if (disableAutoHeight ?? parent.disableAutoHeight) return;\n setMenuLegacyHeight(availableHeight);\n Object.assign(elements.floating.style, {\n maxWidth: `${availableWidth}px`,\n maxHeight: `${availableHeight}px`,\n });\n },\n }),\n ],\n whileElementsMounted: autoUpdate,\n });\n const [hoverEnabled, setHoverEnabled] = useState(false);\n const hover = useHover(context, {\n enabled: hoverEnabled,\n delay: { open: 75 },\n handleClose: safePolygon({ blockPointerEvents: true }),\n });\n const click = useClick(context, {\n event: \"mousedown\",\n toggle: !isNested,\n ignoreMouse: isNested,\n });\n const role = useRole(context, { role: \"menu\" });\n const dismiss = useDismiss(context, { bubbles: true });\n const listNavigation = useListNavigation(context, {\n listRef: elementsRef,\n activeIndex,\n nested: isNested,\n onNavigate: setActiveIndex,\n });\n const typeahead = useTypeahead(context, {\n listRef: labelsRef,\n onMatch: isOpen ? setActiveIndex : undefined,\n activeIndex,\n });\n\n const { getReferenceProps, getFloatingProps, getItemProps } =\n useInteractions([hover, click, role, dismiss, listNavigation, typeahead]);\n\n // Event emitter allows you to communicate across tree components.\n // This effect closes all menus when an item gets clicked anywhere\n // in the tree.\n useEffect(() => {\n if (!tree) return;\n\n function handleTreeClick() {\n setIsOpen(!!open || false);\n }\n\n function onSubMenuLegacyOpen(event: {\n nodeId: string;\n parentId: string;\n }) {\n if (event.nodeId === nodeId || event.parentId !== parentId) {\n return;\n }\n setIsOpen(!!open || false);\n }\n\n tree.events.on(\"click\", handleTreeClick);\n tree.events.on(\"menuopen\", onSubMenuLegacyOpen);\n\n return () => {\n tree.events.off(\"click\", handleTreeClick);\n tree.events.off(\"menuopen\", onSubMenuLegacyOpen);\n };\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [tree, nodeId, parentId]);\n\n useEffect(() => {\n if (disableAutoHeight ?? parent.disableAutoHeight) return;\n if (!isOpen) {\n setMenuLegacyHeight(null);\n return;\n }\n setTimeout(() => {\n if (!scrollRef.current || !refs.floating.current) return;\n setMenuLegacyHeight(refs.floating.current.clientHeight);\n const isOverflow =\n scrollRef.current.scrollHeight > refs.floating.current.clientHeight;\n if (!isOverflow) return;\n const showTop = scrollRef.current.scrollTop > 0;\n const showBottom =\n scrollRef.current.scrollHeight -\n refs.floating.current.clientHeight -\n scrollTop -\n 16 >\n 0;\n setArrowStart(showTop);\n setArrowEnd(showBottom);\n }, 0);\n }, [\n disableAutoHeight,\n isOpen,\n parent.disableAutoHeight,\n refs.floating,\n scrollTop,\n ]);\n\n useEffect(() => {\n if (!isOpen || !tree) return;\n tree.events.emit(\"menuopen\", { parentId, nodeId });\n }, [tree, isOpen, nodeId, parentId]);\n\n const menuComponentCX = cx({\n [styles[\"nested-menu\"]]: isNested,\n [styles[\"item\"]]: !isNested,\n });\n\n const menuRefs = useMergeRefs([refs.setReference, item.ref, forwardedRef]);\n\n const triggerProps: TriggerReturnProps = {\n \"data-open\": isOpen,\n \"data-focus-inside\": hasFocusInside,\n ref: menuRefs,\n ...getReferenceProps(\n parent.getItemProps({\n ...props,\n // This is to allow any type of element to be used as a custom trigger element\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n onFocus(event: FocusEvent<any>) {\n props.onFocus?.(event);\n setHasFocusInside(false);\n parent.setHasFocusInside?.(true);\n },\n // This is to allow any type of element to be used as a custom trigger element\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n } as HTMLProps<any>),\n ),\n };\n\n const value = useMemo(\n () => ({\n activeIndex,\n setActiveIndex,\n getItemProps,\n setHasFocusInside,\n isOpen,\n disableAutoHeight: disableAutoHeight ?? parent.disableAutoHeight,\n }),\n [\n activeIndex,\n disableAutoHeight,\n getItemProps,\n isOpen,\n parent.disableAutoHeight,\n ],\n );\n\n return (\n <FloatingNode id={nodeId}>\n {isNested ? (\n <button\n ref={menuRefs}\n tabIndex={parent.activeIndex === item.index ? 0 : -1}\n role=\"menuitem\"\n data-anv=\"menu-item\"\n data-open={isOpen ? \"\" : undefined}\n data-nested=\"\"\n data-focus-inside={hasFocusInside ? \"\" : undefined}\n className={menuComponentCX}\n {...getReferenceProps(\n parent.getItemProps({\n ...props,\n onFocus(event: FocusEvent<HTMLButtonElement>) {\n props.onFocus?.(event);\n setHasFocusInside(false);\n parent.setHasFocusInside?.(true);\n },\n onMouseEnter: () => setHoverEnabled(true),\n } as HTMLProps<HTMLButtonElement>),\n )}\n >\n {icon ? <Icon inherit aria-hidden svg={icon} /> : null}\n {\"label\" in props && props.label}\n <div style={{ flexGrow: 1 }} />\n <Icon aria-hidden svg={Next} />\n </button>\n ) : \"trigger\" in props ? (\n props.trigger?.(triggerProps)\n ) : (\n <Button\n {...(props as ButtonProps)}\n {...(triggerProps as DefaultTriggerProps)}\n {...getReferenceProps({\n onFocus: (event) => props.onFocus?.(event),\n } as HTMLProps<HTMLButtonElement>)}\n icon={icon}\n data-anv=\"menu\"\n >\n {\"label\" in props && props.label}\n </Button>\n )}\n\n <MenuLegacyContext.Provider value={value}>\n <FloatingList elementsRef={elementsRef} labelsRef={labelsRef}>\n {isOpen &&\n (dialogContext == null ||\n dialogContext?.ref?.current != null) && (\n <FloatingPortal\n root={\n root ??\n dialogContext?.ref?.current ??\n drawerContext?.ref?.current ??\n portalRoot\n }\n >\n <FloatingFocusManager\n context={context}\n modal={false}\n initialFocus={isNested ? -1 : 0}\n returnFocus={!isNested}\n >\n <ThemeProvider theme={theme} mode={mode}>\n <div\n ref={refs.setFloating}\n className={styles[\"menu\"]}\n style={floatingStyles}\n {...getFloatingProps({\n onMouseEnter: () => {\n setHoverEnabled(false);\n },\n onKeyDown: (e) => {\n if (\n e.code === \"ArrowLeft\" ||\n e.code === \"ArrowRight\"\n ) {\n e.stopPropagation();\n }\n },\n })}\n >\n {arrowStart && (\n <div className={styles[\"arrow-up\"]} aria-hidden>\n <Icon\n svg={Up}\n size=\"xlarge\"\n className={styles[\"arrow-icon\"]}\n />\n </div>\n )}\n <div\n ref={scrollRef}\n className={styles[\"scroll\"]}\n style={{\n position: \"relative\",\n maxHeight: menuHeight ?? \"inherit\",\n }}\n onScroll={(e: MouseEvent<HTMLDivElement>) =>\n setScrollTop(e.currentTarget.scrollTop)\n }\n >\n {children}\n </div>\n {arrowEnd && (\n <div className={styles[\"arrow-down\"]} aria-hidden>\n <Icon\n svg={Down}\n size=\"xlarge\"\n className={styles[\"arrow-icon\"]}\n />\n </div>\n )}\n </div>\n </ThemeProvider>\n </FloatingFocusManager>\n </FloatingPortal>\n )}\n </FloatingList>\n </MenuLegacyContext.Provider>\n </FloatingNode>\n );\n },\n);\n\nMenuLegacyComponent.displayName = \"MenuLegacyComponent\";\n\nconst MenuLegacyElement = forwardRef<HTMLElement, MenuLegacyProps>(\n (props, ref) => {\n const parentId = useFloatingParentNodeId();\n\n if (parentId === null) {\n return (\n <FloatingTree>\n <MenuLegacyComponent {...props} ref={ref} />\n </FloatingTree>\n );\n }\n\n return <MenuLegacyComponent {...props} ref={ref} />;\n },\n);\n\nMenuLegacyElement.displayName = \"MenuLegacy\";\n\nexport const MenuLegacy = Object.assign(MenuLegacyElement, {\n Item: MenuLegacyItem,\n});\n","import {\n ButtonHTMLAttributes,\n forwardRef,\n useContext,\n ComponentPropsWithoutRef,\n ReactNode,\n MouseEvent,\n useId,\n useRef,\n useState,\n} from \"react\";\nimport cx from \"classnames\";\n\nimport { childrenToString, supportsPopover } from \"../../internal/functions\";\nimport { DataTrackingId } from \"../../types\";\nimport { Icon, IconProps } from \"../Icon\";\nimport { MenuContext } from \"./internal/MenuContext\";\nimport { useMergeRefs, useTrackingId } from \"../../hooks\";\n\nimport { MenuLegacyItem } from \"./internal/MenuLegacy\";\n\nimport styles from \"./Menu.module.scss\";\n\n/**\n * Props for the MenuItem component\n * @extends ComponentPropsWithoutRef<\"button\">\n */\nexport type MenuItemProps = {\n /**\n * Icon to display next to the menu item label\n */\n icon?: IconProps[\"svg\"];\n /**\n * The label text or content for the menu item\n */\n label: ReactNode;\n /**\n * Whether the menu item is disabled\n * @default false\n */\n disabled?: boolean;\n} & ComponentPropsWithoutRef<\"button\"> &\n DataTrackingId;\n\n/**\n * MenuItem component for individual menu options within a Menu.\n *\n * Features:\n * - Supports icons and labels\n * - Keyboard navigation support\n * - Disabled state handling\n * - Automatic menu closing on selection\n * - Fully accessible with proper ARIA attributes\n * - Focus management and tab index handling\n * - Click and mouse enter event handling\n * - Legacy popover support with fallback\n *\n * @example\n * <MenuItem\n * label=\"Edit Profile\"\n * icon={EditIcon}\n * onClick={() => console.log('Edit profile clicked')}\n * />\n */\nexport const MenuItem = forwardRef<\n HTMLButtonElement,\n MenuItemProps & ButtonHTMLAttributes<HTMLButtonElement>\n>((props, ref) => {\n const {\n label,\n disabled,\n icon,\n className,\n onClick,\n onMouseEnter,\n id: idProp,\n ...rest\n } = props;\n const menuContext = useContext(MenuContext);\n const uid = useId();\n const buttonRef = useRef<HTMLButtonElement>(null);\n const combinedRef = useMergeRefs([buttonRef, ref]);\n const [tabIndex, setTabIndex] = useState(-1);\n const itemCx = cx([styles[\"item\"]], className);\n const onClickHandler = (e: MouseEvent<HTMLButtonElement>) => {\n if (disabled) {\n e.preventDefault();\n e.stopPropagation();\n return;\n }\n onClick?.(e);\n menuContext?.closeRootMenu();\n };\n const onMouseEnterHandler = (e: MouseEvent<HTMLButtonElement>) => {\n onMouseEnter?.(e);\n buttonRef.current?.focus();\n };\n\n const onFocusHandler = () => {\n setTabIndex(0);\n };\n const onBlurHandler = () => {\n setTabIndex(-1);\n };\n\n const data = {\n label: childrenToString(props.label),\n };\n\n const trackingId = useTrackingId({\n name: \"MenuItem\",\n data,\n hasOverride: !!props[\"data-tracking-id\"],\n });\n\n if (!supportsPopover())\n return (\n <MenuLegacyItem data-tracking-id={trackingId} {...props} ref={ref} />\n );\n\n return (\n <button\n data-tracking-id={trackingId}\n {...rest}\n ref={combinedRef}\n type=\"button\"\n role=\"menuitem\"\n data-anv=\"menu-item\"\n id={idProp ?? `menuitem-${uid.replace(/:/g, \"\")}`}\n className={itemCx}\n tabIndex={tabIndex}\n aria-disabled={disabled}\n onClick={onClickHandler}\n onMouseEnter={onMouseEnterHandler}\n onFocus={onFocusHandler}\n onBlur={onBlurHandler}\n >\n {icon ? <Icon inherit aria-hidden svg={icon} /> : null}\n {label}\n </button>\n );\n});\n\nMenuItem.displayName = \"MenuItem\";\n","import {\n Placement,\n size,\n flip,\n limitShift,\n offset,\n shift,\n computePosition,\n autoUpdate,\n} from \"@floating-ui/react\";\nimport {\n ComponentPropsWithoutRef,\n useEffect,\n useId,\n useRef,\n useState,\n useLayoutEffect,\n useCallback,\n useContext,\n MouseEvent,\n KeyboardEvent,\n} from \"react\";\nimport cx from \"classnames\";\nimport Next from \"@servicetitan/hammer-icon/mdi/round/navigate_next.svg\";\nimport Up from \"@servicetitan/hammer-icon/mdi/round/arrow_drop_up.svg\";\nimport Down from \"@servicetitan/hammer-icon/mdi/round/arrow_drop_down.svg\";\n\nimport {\n getActiveElement,\n safeHidePopover,\n safeShowPopover,\n} from \"../../../internal/functions\";\nimport { Icon, IconProps } from \"../../Icon\";\n\nimport { MenuCommonProps } from \"../types\";\nimport { MenuContext } from \"./MenuContext\";\n\nimport styles from \"../Menu.module.scss\";\n\n/**\n * Props for the MenuNested component\n * @extends ComponentPropsWithoutRef<\"button\">\n * @extends MenuCommonProps\n */\nexport type MenuNestedProps = ComponentPropsWithoutRef<\"button\"> &\n MenuCommonProps & {\n /**\n * Icon to display on the nested menu button\n */\n icon?: IconProps[\"svg\"];\n };\n\n/**\n * MenuNested component for creating nested submenus within a Menu.\n *\n * Features:\n * - Hover-based menu opening and closing\n * - Automatic positioning with fallback strategies\n * - Keyboard navigation with arrow keys\n * - Scroll indicators for overflow content\n * - Automatic height adjustment\n * - Focus management and accessibility\n * - Popover API support with legacy fallback\n * - Smooth transitions and animations\n * - Context integration with parent menus\n *\n * @example\n * <Menu label=\"Edit\">\n * <Menu.Item label=\"Cut\" onClick={() => console.log('Cut clicked')} />\n * <Menu label=\"Copy as\">\n * <Menu.Item label=\"Text\" onClick={() => console.log('Copy as Text')} />\n * <Menu.Item label=\"Video\" onClick={() => console.log('Copy as Video')} />\n * <Menu label=\"Image\">\n * <Menu.Item label=\".png\" onClick={() => console.log('Copy as PNG')} />\n * <Menu.Item label=\".jpg\" onClick={() => console.log('Copy as JPG')} />\n * </Menu>\n * </Menu>\n * </Menu>\n */\nexport const MenuNested = (props: MenuNestedProps) => {\n const { children, open, defaultOpen = false, label, className, icon } = props;\n const uid = useId();\n const [tabIndex, setTabIndex] = useState(-1);\n const [openState, setOpenState] = useState<boolean>(open ?? defaultOpen);\n const [scrollTop, setScrollTop] = useState(0);\n const [menuHeight, setMenuHeight] = useState<number | null>(null);\n const [arrowStart, setArrowStart] = useState(false);\n const [arrowEnd, setArrowEnd] = useState(false);\n const invokerRef = useRef<HTMLButtonElement>(null);\n const menuRef = useRef<HTMLDivElement>(null);\n const childrenRef = useRef<HTMLDivElement>(null);\n const containerRef = useRef<HTMLDivElement>(null);\n const [focusItems, setFocusItems] = useState<HTMLElement[]>();\n const menuContext = useContext(MenuContext);\n\n // TODO: Find a way to test these properly!\n // Stryker disable all : Currently relying on Chromatic test for all visuals\n /* istanbul ignore next */\n const fallbackArr = useCallback(() => {\n return menuContext?.disableAutoHeight\n ? [\"right-start\"]\n : [\"right-start\", \"right-end\", \"left-start\", \"left-end\"];\n }, [menuContext?.disableAutoHeight]);\n\n const updatePosition = useCallback(() => {\n if (!invokerRef.current || !menuRef.current) return;\n const timeoutId = setTimeout(() => {\n if (!invokerRef.current || !menuRef.current) return;\n computePosition(invokerRef.current, menuRef.current, {\n placement: \"right-start\",\n middleware: [\n offset({\n mainAxis: 0,\n alignmentAxis: -4,\n }),\n flip({\n fallbackStrategy: \"bestFit\",\n fallbackPlacements: fallbackArr() as Placement[],\n }),\n shift({\n mainAxis: !menuContext?.disableAutoHeight,\n crossAxis: false,\n limiter: limitShift({\n mainAxis: !menuContext?.disableAutoHeight,\n }),\n }),\n size({\n padding: 8,\n apply({ availableWidth, availableHeight, elements }) {\n if (menuContext?.disableAutoHeight) return;\n const newHeight = availableHeight;\n if (Math.abs((menuHeight ?? 0) - newHeight) > 1) {\n setMenuHeight(newHeight);\n Object.assign(elements.floating.style, {\n maxWidth: `${availableWidth - 16}px`,\n maxHeight: `${availableHeight - 16}px`,\n });\n }\n },\n }),\n ],\n }).then(({ x, y }) => {\n if (!menuRef.current) return;\n Object.assign(menuRef.current.style, {\n left: `${x}px`,\n top: `${y + 8}px`,\n });\n });\n }, 50);\n return () => clearTimeout(timeoutId);\n }, [fallbackArr, menuContext?.disableAutoHeight, menuHeight]);\n\n const menuReference = useRef<HTMLDivElement | null>(null);\n useLayoutEffect(() => {\n if (!openState) {\n setMenuHeight(null);\n setScrollTop(0);\n return;\n }\n\n if (!menuRef.current) return;\n menuReference.current = menuRef.current;\n\n let resizeTimeout: number | null = null;\n const lastDimensions = {\n height: menuReference.current.clientHeight,\n scrollHeight: childrenRef.current?.scrollHeight ?? 0,\n };\n\n const updateArrows = (height: number, scrollHeight: number) => {\n if (!childrenRef.current) return;\n const isOverflow = scrollHeight > height;\n setArrowStart(isOverflow && childrenRef.current.scrollTop > 0);\n setArrowEnd(isOverflow && scrollHeight - height - scrollTop - 16 > 0);\n };\n\n const observer = new ResizeObserver(() => {\n if (!childrenRef.current || !menuReference.current) return;\n\n if (resizeTimeout) {\n window.clearTimeout(resizeTimeout);\n }\n\n resizeTimeout = window.setTimeout(() => {\n const newHeight = menuReference.current?.clientHeight ?? 0;\n const newScrollHeight = childrenRef.current?.scrollHeight ?? 0;\n\n if (!newHeight) return;\n\n lastDimensions.height = newHeight;\n lastDimensions.scrollHeight = newScrollHeight;\n\n setMenuHeight(newHeight);\n updateArrows(newHeight, newScrollHeight);\n }, 100); // Shorter debounce for nested menu\n });\n\n if (menuReference.current) {\n observer.observe(menuReference.current);\n }\n\n return () => {\n if (resizeTimeout) {\n window.clearTimeout(resizeTimeout);\n }\n if (menuReference.current) {\n observer.unobserve(menuReference.current);\n }\n observer.disconnect();\n };\n }, [openState, scrollTop]);\n\n // Effect to add autoUpdate to eventListener\n // while the popover is opened\n useLayoutEffect(() => {\n if (!menuRef.current || !invokerRef.current) return;\n\n const cleanup = autoUpdate(invokerRef.current, menuRef.current, () => {\n updatePosition();\n });\n\n return () => {\n cleanup();\n };\n }, [updatePosition]);\n // Stryker restore all\n\n const popoverHoverTriggered = useRef<boolean>();\n\n // Main function to open menu\n // This gets canceled if close is called before the promise is resolved\n // Ex) Allows cursor jump from invoker to menu\n // without closing\n const openMenu = useCallback(async () => {\n popoverHoverTriggered.current = true;\n await new Promise((resolve) => setTimeout(resolve, 100));\n if (\n !popoverHoverTriggered.current ||\n !menuRef.current ||\n !childrenRef.current\n )\n return;\n\n // Show the menu but keep it transparent\n menuRef.current.style.opacity = \"0\";\n safeShowPopover(menuRef.current);\n\n // Position the menu before showing it\n if (!invokerRef.current || !menuRef.current) return;\n\n await computePosition(invokerRef.current, menuRef.current, {\n placement: \"right-start\",\n middleware: [\n offset({\n mainAxis: 0,\n alignmentAxis: -4,\n }),\n flip({\n fallbackStrategy: \"bestFit\",\n fallbackPlacements: fallbackArr() as Placement[],\n }),\n shift({\n mainAxis: !menuContext?.disableAutoHeight,\n crossAxis: false,\n limiter: limitShift({\n mainAxis: !menuContext?.disableAutoHeight,\n }),\n }),\n ],\n }).then(({ x, y }) => {\n if (!menuRef.current) return;\n Object.assign(menuRef.current.style, {\n left: `${x}px`,\n top: `${y + 8}px`,\n });\n });\n\n setOpenState(true);\n const focusables = Array.from(\n childrenRef.current.querySelectorAll(\n `#scroller-${uid.replace(/:/g, \"\")} > button, #scroller-${uid.replace(/:/g, \"\")} > div[data-nested=\"true\"] > button, #scroller-${uid.replace(/:/g, \"\")} > a[href]`,\n ),\n ) as HTMLElement[];\n setFocusItems(focusables);\n\n // Make the menu visible with a short delay to ensure smooth transition\n requestAnimationFrame(() => {\n if (!menuRef.current) return;\n menuRef.current.style.opacity = \"1\";\n });\n }, [uid, fallbackArr, menuContext?.disableAutoHeight]);\n\n // Main function to close menu\n // This gets canceled if close is called before the promise is resolved\n // Ex) Allows menu to be kept closed when cursor\n // moves out of the invoker and menu\n const closeMenu = useCallback(async (fn?: () => void) => {\n popoverHoverTriggered.current = false;\n await new Promise((resolve) => setTimeout(resolve, 100));\n if (popoverHoverTriggered.current || !menuRef.current) return;\n fn?.();\n safeHidePopover(menuRef.current);\n setOpenState(false);\n }, []);\n\n const isControlled = typeof open !== \"undefined\";\n\n // Updating openness for controlled\n const initialRender = useRef(true);\n useEffect(() => {\n if (!isControlled) return;\n if (initialRender.current === true) {\n if (open && menuRef.current) {\n openMenu();\n }\n initialRender.current = false;\n return;\n }\n setOpenState(open);\n if (open) {\n openMenu();\n } else {\n closeMenu();\n }\n }, [closeMenu, isControlled, open, openMenu]);\n\n useEffect(() => {\n if (!containerRef.current) return;\n const nestedContainer = containerRef.current;\n nestedContainer.addEventListener(\"focusin\", (_e) => {\n openMenu();\n });\n nestedContainer.addEventListener(\"focusout\", () => closeMenu());\n return () => {\n nestedContainer.removeEventListener(\"focusin\", () => openMenu());\n nestedContainer.removeEventListener(\"focusout\", () => closeMenu());\n };\n }, [closeMenu, openMenu]);\n\n const onKeyDownHandler = (e: KeyboardEvent<HTMLDivElement>) => {\n if (!openState || !childrenRef.current) return;\n\n const currentActiveIndex = focusItems?.findIndex(\n (item) => item.id === getActiveElement(document)?.id,\n );\n\n const firstItem = focusItems?.[0] as HTMLElement;\n const lastItem = focusItems?.[focusItems.length - 1] as HTMLElement;\n\n if (e.code === \"Escape\") {\n menuContext?.closeRootMenu();\n }\n if (e.code === \"ArrowLeft\") {\n e.stopPropagation();\n e.preventDefault();\n invokerRef.current?.focus();\n closeMenu();\n }\n if (e.code === \"ArrowDown\") {\n e.stopPropagation();\n if (currentActiveIndex === (focusItems?.length ?? 0) - 1) {\n firstItem.focus();\n return;\n }\n const nextItem = focusItems?.[\n (currentActiveIndex ?? 0) + 1\n ] as HTMLElement;\n nextItem.focus();\n return;\n }\n if (e.code === \"ArrowUp\") {\n e.stopPropagation();\n e.preventDefault();\n if (currentActiveIndex === 0) {\n lastItem.focus();\n return;\n }\n const prevItem = focusItems?.[\n (currentActiveIndex ?? 0) - 1\n ] as HTMLElement;\n prevItem.focus();\n return;\n }\n };\n\n const onFocusHandler = () => {\n setTabIndex(0);\n };\n const onBlurHandler = () => {\n setTabIndex(-1);\n };\n\n const MenuButtonOnKeyDownHandler = (e: KeyboardEvent<HTMLButtonElement>) => {\n if (e.code === \"ArrowRight\") {\n e.stopPropagation();\n e.preventDefault();\n openMenu();\n const firstItem = menuRef.current?.querySelectorAll(\n `#scroller-${uid.replace(/:/g, \"\")} > button, #scroller-${uid.replace(/:/g, \"\")} > a[href]`,\n )[0];\n (firstItem as HTMLButtonElement).focus();\n }\n };\n\n const MenuButtonOnClick = () => {\n if (isControlled) return;\n openMenu();\n };\n\n const itemCx = cx([styles[\"item\"]], className);\n\n return (\n <div ref={containerRef} data-nested=\"true\">\n <button\n role=\"menuitem\"\n data-anv=\"menu-item\"\n data-state={openState ? \"open\" : \"close\"}\n ref={invokerRef}\n id={`menuitem-${uid.replace(/:/g, \"\")}`}\n aria-expanded={openState}\n onMouseEnter={(e) => {\n e.currentTarget.focus();\n }}\n onKeyDown={MenuButtonOnKeyDownHandler}\n onFocus={onFocusHandler}\n onBlur={onBlurHandler}\n onClick={MenuButtonOnClick}\n aria-haspopup={true}\n aria-controls={`menu-${uid.replace(/:/g, \"\")}`}\n className={itemCx}\n tabIndex={tabIndex}\n >\n {icon ? <Icon inherit aria-hidden svg={icon} /> : null}\n {label}\n <div style={{ flexGrow: 1 }} />\n <Icon aria-hidden svg={Next} />\n </button>\n <div\n popover=\"auto\"\n id={`menu-${uid.replace(/:/g, \"\")}`}\n data-anv=\"menu-content\"\n className={styles.content}\n ref={menuRef}\n role=\"presentation\"\n onKeyDown={onKeyDownHandler}\n >\n {arrowStart && (\n <div className={styles[\"arrow-up\"]} aria-hidden>\n <Icon svg={Up} size=\"xlarge\" className={styles[\"arrow-icon\"]} />\n </div>\n )}\n <div\n className={styles.scroller}\n tabIndex={-1}\n ref={childrenRef}\n style={{\n position: \"relative\",\n maxHeight: menuHeight ?? \"inherit\",\n }}\n onScroll={(e: MouseEvent<HTMLDivElement>) =>\n setScrollTop(e.currentTarget.scrollTop)\n }\n role=\"menu\"\n id={`scroller-${uid.replace(/:/g, \"\")}`}\n >\n {children}\n </div>\n {arrowEnd && (\n <div className={styles[\"arrow-down\"]} aria-hidden>\n <Icon svg={Down} size=\"xlarge\" className={styles[\"arrow-icon\"]} />\n </div>\n )}\n </div>\n </div>\n );\n};\n","import {\n useEffect,\n useId,\n useRef,\n useState,\n useMemo,\n useLayoutEffect,\n useCallback,\n useContext,\n KeyboardEvent,\n MouseEvent,\n forwardRef,\n} from \"react\";\nimport {\n Placement,\n size,\n flip,\n limitShift,\n offset,\n shift,\n computePosition,\n autoUpdate,\n} from \"@floating-ui/react\";\nimport cx from \"classnames\";\nimport Up from \"@servicetitan/hammer-icon/mdi/round/arrow_drop_up.svg\";\nimport Down from \"@servicetitan/hammer-icon/mdi/round/arrow_drop_down.svg\";\n\nimport { Button, ButtonProps } from \"../Button\";\nimport { childrenToString } from \"../../internal/functions\";\nimport { DialogContext } from \"../Dialog/internal/DialogContext\";\nimport { getActiveElement } from \"../../internal/functions\";\nimport { Icon, IconProps } from \"../Icon\";\nimport {\n supportsPopover,\n safeHidePopover,\n safeShowPopover,\n} from \"../../internal/functions\";\nimport { useTrackingId } from \"../../hooks\";\nimport { DataTrackingId } from \"../../types\";\n\nimport { MenuContext } from \"./internal/MenuContext\";\nimport { MenuItem } from \"./MenuItem\";\nimport {\n MenuLegacy as MenuLegacyComponent,\n MenuLegacyProps,\n} from \"./internal/MenuLegacy\";\nimport { MenuNested } from \"./internal/MenuNested\";\nimport { MenuCommonProps } from \"./types\";\n\nimport styles from \"./Menu.module.scss\";\n\n/**\n * Props for the Menu component\n * @extends Omit<ButtonProps, \"icon\">\n * @extends MenuCommonProps\n */\nexport type MenuProps = Omit<ButtonProps, \"icon\"> &\n MenuCommonProps & {\n /**\n * Icon to display on the menu button\n */\n icon?: IconProps[\"svg\"];\n } & DataTrackingId;\n\nconst MenuElement = forwardRef<HTMLElement, MenuProps>(\n (props: MenuProps, ref) => {\n const {\n children,\n placement = \"bottom-start\",\n open,\n defaultOpen = false,\n disableAutoHeight,\n label,\n onOutsidePress,\n trigger,\n root,\n contentClassName,\n maxHeight,\n ...rest\n } = props;\n const uid = useId();\n const [openState, setOpenState] = useState<boolean>(open ?? defaultOpen);\n const [scrollTop, setScrollTop] = useState(0);\n const [menuHeight, setMenuHeight] = useState<number | null>(null);\n const [arrowStart, setArrowStart] = useState(false);\n const [arrowEnd, setArrowEnd] = useState(false);\n const invokerRef = useRef<HTMLButtonElement>(null);\n const menuRef = useRef<HTMLDivElement>(null);\n const childrenRef = useRef<HTMLDivElement>(null);\n const [focusItems, setFocusItems] = useState<HTMLElement[]>();\n const dialogContext = useContext(DialogContext);\n const menuContext = useContext(MenuContext);\n\n // TODO: Find a way to test these properly!\n // Stryker disable all : Currently relying on Chromatic test for all visuals\n const fallbackArr = useCallback(() => {\n if (placement.startsWith(\"top\")) {\n return disableAutoHeight\n ? placement\n : [\"top-start\", \"top-end\", \"bottom-start\", \"bottom-end\"];\n }\n return disableAutoHeight\n ? placement\n : [\"bottom-start\", \"bottom-end\", \"top-start\", \"top-end\"];\n }, [disableAutoHeight, placement]);\n\n /* istanbul ignore next */\n const updatePosition = useCallback(() => {\n if (!invokerRef.current || !menuRef.current) return;\n const timeoutId = setTimeout(() => {\n if (!invokerRef.current || !menuRef.current) return;\n\n computePosition(invokerRef.current, menuRef.current, {\n placement: placement,\n middleware: [\n offset({\n mainAxis: 5,\n alignmentAxis: 0,\n }),\n flip({\n fallbackStrategy: \"bestFit\",\n fallbackPlacements: fallbackArr() as Placement[],\n padding: 50, // Setting to 50px as it is the size of menu with 1 item in it\n }),\n shift({\n mainAxis: !menuContext?.disableAutoHeight,\n crossAxis: false,\n limiter: limitShift({\n mainAxis: !menuContext?.disableAutoHeight,\n }),\n }),\n size({\n padding: 8,\n apply({ availableWidth, availableHeight, elements }) {\n if (disableAutoHeight ?? menuContext?.disableAutoHeight) return;\n const newHeight = availableHeight;\n if (Math.abs((menuHeight ?? 0) - newHeight) > 1) {\n setMenuHeight(newHeight);\n Object.assign(elements.floating.style, {\n maxWidth: `${availableWidth - 16}px`,\n maxHeight: maxHeight\n ? `${Math.min(availableHeight - 16, typeof maxHeight === \"number\" ? maxHeight : parseInt(maxHeight.toString()))}px`\n : `${availableHeight - 16}px`,\n });\n }\n },\n }),\n ],\n }).then(({ x, y }) => {\n if (!menuRef.current) return;\n Object.assign(menuRef.current.style, {\n left: `${x}px`,\n top: `${y}px`,\n });\n menuRef.current.dataset.positioned = \"true\";\n });\n }, 50);\n return () => clearTimeout(timeoutId);\n }, [\n placement,\n fallbackArr,\n menuContext?.disableAutoHeight,\n disableAutoHeight,\n menuHeight,\n maxHeight,\n ]);\n\n const menuReference = useRef<HTMLDivElement | null>(null);\n\n useLayoutEffect(() => {\n if (!openState) {\n setMenuHeight(null);\n setScrollTop(0);\n return;\n }\n if (!menuRef.current) return;\n menuReference.current = menuRef.current;\n\n let resizeTimeout: number | null = null;\n const lastDimensions = {\n height: menuReference.current.clientHeight,\n scrollHeight: childrenRef.current?.scrollHeight ?? 0,\n };\n\n const updateArrows = (height: number, scrollHeight: number) => {\n if (!childrenRef.current) return;\n const isOverflow = scrollHeight > height;\n setArrowStart(isOverflow && childrenRef.current.scrollTop > 0);\n setArrowEnd(isOverflow && scrollHeight - height - scrollTop - 16 > 0);\n };\n\n const observer = new ResizeObserver(() => {\n if (!childrenRef.current || !menuReference.current) return;\n\n if (resizeTimeout) {\n window.clearTimeout(resizeTimeout);\n }\n\n resizeTimeout = window.setTimeout(() => {\n const newHeight = menuReference.current?.clientHeight ?? 0;\n const newScrollHeight = childrenRef.current?.scrollHeight ?? 0;\n\n if (!newHeight) return;\n\n lastDimensions.height = newHeight;\n lastDimensions.scrollHeight = newScrollHeight;\n\n setMenuHeight(newHeight);\n updateArrows(newHeight, newScrollHeight);\n }, 150);\n });\n\n if (menuReference.current) {\n observer.observe(menuReference.current);\n }\n\n return () => {\n if (resizeTimeout) {\n window.clearTimeout(resizeTimeout);\n }\n if (menuReference.current) {\n observer.unobserve(menuReference.current);\n }\n observer.disconnect();\n };\n }, [openState, scrollTop]);\n\n // Effect to add autoUpdate to eventListener\n // while the popover is opened\n useLayoutEffect(() => {\n if (!menuRef.current || !invokerRef.current) return;\n\n const cleanup = autoUpdate(invokerRef.current, menuRef.current, () => {\n updatePosition();\n });\n\n return () => {\n cleanup();\n };\n }, [updatePosition]);\n // Stryker restore all\n\n // Main function to open menu\n // This gets canceled if close is called before the promise is resolved\n // Ex) Allows cursor jump from invoker to menu\n // without closing\n const openMenu = useCallback(async () => {\n if (!menuRef.current || !childrenRef.current) return;\n\n safeShowPopover(menuRef.current);\n\n // Position the menu before showing it\n if (!invokerRef.current || !menuRef.current) return;\n\n await computePosition(invokerRef.current, menuRef.current, {\n placement: placement,\n middleware: [\n offset({\n mainAxis: 5,\n alignmentAxis: 0,\n }),\n flip({\n fallbackStrategy: \"bestFit\",\n fallbackPlacements: fallbackArr() as Placement[],\n padding: 50, // Setting to 50px as it is the size of menu with 1 item in it\n }),\n shift({\n mainAxis: !menuContext?.disableAutoHeight,\n crossAxis: false,\n limiter: limitShift({\n mainAxis: !menuContext?.disableAutoHeight,\n }),\n }),\n ],\n }).then(({ x, y }) => {\n if (!menuRef.current) return;\n Object.assign(menuRef.current.style, {\n left: `${x}px`,\n top: `${y}px`,\n });\n menuRef.current.dataset.positioned = \"true\";\n });\n\n setOpenState(true);\n\n // Wait for next frame to ensure DOM is updated\n requestAnimationFrame(() => {\n if (!childrenRef.current) return;\n const focusables = Array.from(\n childrenRef.current.querySelectorAll(\n `#scroller-${uid.replace(/:/g, \"\")} > button, #scroller-${uid.replace(/:/g, \"\")} > div[data-nested=\"true\"] > button, #scroller-${uid.replace(/:/g, \"\")} > a[href]`,\n ),\n ) as HTMLElement[];\n setFocusItems(focusables);\n });\n\n dialogContext?.setHasOpenPopover?.(true);\n }, [\n dialogContext,\n uid,\n placement,\n fallbackArr,\n menuContext?.disableAutoHeight,\n ]);\n\n // Main function to close menu\n // This gets canceled if close is called before the promise is resolved\n // Ex) Allows popover to be kept closed when cursor\n // moves out of the invoker and menu\n const closeMenu = useCallback(\n async (fn?: () => void) => {\n if (!menuRef.current || !openState) return;\n fn?.();\n setOpenState(false);\n safeHidePopover(menuRef.current);\n dialogContext?.setHasOpenPopover?.(false);\n invokerRef.current?.focus();\n },\n [openState, dialogContext],\n );\n\n const isControlled = typeof open !== \"undefined\";\n\n // Updating openness for controlled\n const initialRender = useRef(true);\n useEffect(() => {\n if (!isControlled) return;\n if (initialRender.current === true) {\n if (open && menuRef.current) {\n openMenu();\n }\n initialRender.current = false;\n return;\n }\n if (open) {\n openMenu();\n } else {\n closeMenu();\n }\n // open ? openMenu() : closeMenu();\n }, [closeMenu, isControlled, open, openMenu, dialogContext]);\n\n // Effect to attach eventListener for reading click state from\n // globalThis.MouseEvent for composedPath to detect if target is\n // part of the composedPath, then to attempt to close\n useEffect(() => {\n if (typeof document === \"undefined\") return;\n\n let isClosable = false;\n const onMouseDownHandler = (e: globalThis.MouseEvent) => {\n if (!invokerRef.current || !menuRef.current) return;\n const isInvoker = e.composedPath().includes(invokerRef.current);\n const isPopover = e.composedPath().includes(menuRef.current);\n if (!isInvoker && !isPopover && openState) {\n onOutsidePress?.(e);\n isClosable = true;\n }\n };\n const onMouseUpHandler = (e: globalThis.MouseEvent) => {\n if (!invokerRef.current || !menuRef.current) return;\n const isInvoker = e.composedPath().includes(invokerRef.current);\n const isPopover = e.composedPath().includes(menuRef.current);\n if (!isInvoker && !isPopover && openState) {\n if (isControlled || !isClosable || !openState) return;\n\n closeMenu();\n }\n };\n\n document.addEventListener(\"mousedown\", onMouseDownHandler);\n document.addEventListener(\"mouseup\", onMouseUpHandler);\n return () => {\n document.removeEventListener(\"mousedown\", onMouseDownHandler);\n document.removeEventListener(\"mouseup\", onMouseUpHandler);\n };\n }, [isControlled, openState, onOutsidePress, closeMenu]);\n\n const onKeyDownHandler = (e: KeyboardEvent<HTMLDivElement>) => {\n if (!openState || !childrenRef.current || menuContext) return;\n if (e.code === \"Escape\") {\n e.stopPropagation();\n e.preventDefault();\n closeMenu();\n }\n\n const currentActiveIndex = focusItems?.findIndex(\n (item) => item.id === getActiveElement(document)?.id,\n );\n\n const firstItem = focusItems?.[0] as HTMLElement;\n const lastItem = focusItems?.[focusItems.length - 1] as HTMLElement;\n\n if (e.code === \"ArrowDown\") {\n e.stopPropagation();\n e.preventDefault();\n if (currentActiveIndex === (focusItems?.length ?? 0) - 1) {\n firstItem.focus();\n return;\n }\n const nextItem = focusItems?.[\n (currentActiveIndex ?? 0) + 1\n ] as HTMLElement;\n nextItem.focus();\n return;\n }\n if (e.code === \"ArrowUp\") {\n e.stopPropagation();\n e.preventDefault();\n if (currentActiveIndex === 0) {\n lastItem.focus();\n return;\n }\n const prevItem = focusItems?.[\n (currentActiveIndex ?? 0) - 1\n ] as HTMLElement;\n prevItem.focus();\n return;\n }\n };\n\n const value = useMemo(() => {\n return {\n disableAutoHeight,\n closeRootMenu: menuContext?.closeRootMenu ?? closeMenu,\n };\n }, [disableAutoHeight, menuContext, closeMenu]);\n\n const MenuButtonOnKeyDownHandler = (\n e: KeyboardEvent<HTMLButtonElement>,\n ) => {\n if (e.code === \"ArrowDown\") {\n focusItems?.[0].focus();\n e.stopPropagation();\n e.preventDefault();\n }\n };\n const MenuButtonOnClick = () => {\n if (isControlled) return;\n if (openState) {\n closeMenu();\n return;\n }\n openMenu();\n };\n\n const data = {\n label: childrenToString(props.label),\n };\n\n const trackingId = useTrackingId({\n name: \"Menu\",\n data,\n hasOverride: !!props[\"data-tracking-id\"],\n });\n\n if (!supportsPopover())\n return (\n <MenuLegacyComponent\n data-tracking-id={trackingId}\n {...(props as MenuLegacyProps)}\n ref={ref}\n />\n );\n\n if (menuContext) {\n return (\n <MenuContext.Provider value={value}>\n <MenuNested\n data-tracking-id={trackingId}\n open={open}\n defaultOpen={defaultOpen}\n className={props.className}\n icon={props.icon}\n label={label}\n >\n {children}\n </MenuNested>\n </MenuContext.Provider>\n );\n }\n return (\n <MenuContext.Provider value={value}>\n {trigger ? (\n trigger({\n ref: invokerRef,\n onClick: () => MenuButtonOnClick(),\n \"aria-haspopup\": true,\n \"aria-controls\": `menu-${uid.replace(/:/g, \"\")}`,\n \"aria-expanded\": openState,\n \"data-state\": openState ? \"open\" : \"close\",\n })\n ) : (\n <Button\n ref={invokerRef}\n onClick={MenuButtonOnClick}\n onKeyDown={MenuButtonOnKeyDownHandler}\n aria-haspopup={true}\n aria-controls={`menu-${uid.replace(/:/g, \"\")}`}\n data-state={openState ? \"open\" : \"close\"}\n aria-expanded={openState}\n {...rest}\n >\n {label}\n </Button>\n )}\n <div\n popover=\"manual\"\n id={`menu-${uid.replace(/:/g, \"\")}`}\n data-anv=\"menu-content\"\n className={cx(styles.content, contentClassName)}\n onKeyDown={onKeyDownHandler}\n ref={menuRef}\n role=\"presentation\"\n >\n {arrowStart && (\n <div className={styles[\"arrow-up\"]} aria-hidden>\n <Icon svg={Up} size=\"xlarge\" className={styles[\"arrow-icon\"]} />\n </div>\n )}\n <div\n className={styles.scroller}\n tabIndex={-1}\n ref={childrenRef}\n style={{\n position: \"relative\",\n maxHeight: maxHeight\n ? `${Math.min(menuHeight ?? Infinity, typeof maxHeight === \"number\" ? maxHeight : parseInt(maxHeight.toString()))}px`\n : (menuHeight ?? \"inherit\"),\n }}\n onScroll={(e: MouseEvent<HTMLDivElement>) =>\n setScrollTop(e.currentTarget.scrollTop)\n }\n role=\"menu\"\n id={`scroller-${uid.replace(/:/g, \"\")}`}\n >\n {children}\n </div>\n {arrowEnd && (\n <div className={styles[\"arrow-down\"]} aria-hidden>\n <Icon svg={Down} size=\"xlarge\" className={styles[\"arrow-icon\"]} />\n </div>\n )}\n </div>\n </MenuContext.Provider>\n );\n },\n);\n\nMenuElement.displayName = \"Menu\";\n\n/**\n * Menu component for displaying dropdown menus with navigation and actions.\n *\n * Features:\n * - Supports both controlled and uncontrolled modes\n * - Automatic positioning with fallback strategies\n * - Keyboard navigation with arrow keys and escape\n * - Custom trigger elements\n * - Nested menu support\n * - Automatic height adjustment\n * - Scroll indicators for overflow content\n * - Fully accessible with proper ARIA attributes\n * - Popover API support with legacy fallback\n * - Outside click detection and handling\n *\n * @example\n * <Menu label=\"Edit\">\n * <Menu.Item label=\"Cut\" onClick={() => console.log('Cut clicked')} />\n * <Menu.Item label=\"Copy\" onClick={() => console.log('Copy clicked')} />\n * <Menu label=\"Copy as\">\n * <Menu.Item label=\"Text\" onClick={() => console.log('Copy as Text')} />\n * <Menu.Item label=\"Video\" onClick={() => console.log('Copy as Video')} />\n * <Menu label=\"Image\">\n * <Menu.Item label=\".png\" onClick={() => console.log('Copy as PNG')} />\n * <Menu.Item label=\".jpg\" onClick={() => console.log('Copy as JPG')} />\n * </Menu>\n * </Menu>\n */\nexport const Menu = Object.assign(MenuElement, {\n /**\n * MenuItem component for individual menu options.\n *\n * Features:\n * - Supports icons and labels\n * - Keyboard navigation support\n * - Disabled state handling\n * - Automatic menu closing on selection\n * - Fully accessible with proper ARIA attributes\n * - Focus management and tab index handling\n * - Click and mouse enter event handling\n *\n * @example\n * <Menu.Item\n * label=\"Edit Profile\"\n * icon={EditIcon}\n * onClick={() => console.log('Edit profile clicked')}\n * />\n */\n Item: MenuItem,\n});\n"],"names":["styles","Next","Up","Down","MenuLegacyComponent"],"mappings":"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"}
package/dist/Menu.js CHANGED
@@ -1,2 +1,2 @@
1
- export { M as Menu, a as MenuItem, M as default } from './Menu-C8we5CHP.js';
1
+ export { M as Menu, a as MenuItem, M as default } from './Menu-DEVZz9xZ.js';
2
2
  //# sourceMappingURL=Menu.js.map
@@ -15,7 +15,7 @@ import { T as Tooltip } from './Tooltip-BI3Xs75X.js';
15
15
  import { L as Layout } from './Layout-CUUb2PVr.js';
16
16
  import { S as SvgMoreVert } from './more_vert-C_lJSyxt.js';
17
17
  import { B as ButtonLink } from './ButtonLink-CXv65WVV.js';
18
- import { M as Menu } from './Menu-C8we5CHP.js';
18
+ import { M as Menu } from './Menu-DEVZz9xZ.js';
19
19
  import { B as Breadcrumbs } from './Breadcrumbs-C4_PEolS.js';
20
20
  import { T as Text } from './Text-BqvcbXyp.js';
21
21
  import { C as Chip } from './Chip-Bz-vlQ4D.js';
@@ -614,4 +614,4 @@ const Page = Object.assign(PageElement, {
614
614
  });
615
615
 
616
616
  export { Page as P };
617
- //# sourceMappingURL=Page-cKXkjMmd.js.map
617
+ //# sourceMappingURL=Page-BMDkbDcU.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"Page-cKXkjMmd.js","sources":["../../hammer-icon/mdi/round/segment.svg","../../hammer-icon/mdi/round/chevron_left.svg","../src/components/Page/PageSidebarContext.ts","../src/components/Page/PageContext.ts","../src/components/Page/PageSidebar.tsx","../src/components/Page/PageSidebarHeader.tsx","../../hammer-icon/mdi/round/settings.svg","../src/components/Page/PageHeader.tsx","../src/components/Page/PageContent.tsx","../src/components/Page/PagePanel.tsx","../src/components/Page/PageFooter.tsx","../src/components/Page/Page.tsx"],"sourcesContent":["import * as React from \"react\";\nconst SvgSegment = (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: \"M10 18h10c.55 0 1-.45 1-1s-.45-1-1-1H10c-.55 0-1 .45-1 1s.45 1 1 1zM3 7c0 .55.45 1 1 1h16c.55 0 1-.45 1-1s-.45-1-1-1H4c-.55 0-1 .45-1 1zm7 6h10c.55 0 1-.45 1-1s-.45-1-1-1H10c-.55 0-1 .45-1 1s.45 1 1 1z\" }));\nexport default SvgSegment;\n","import * as React from \"react\";\nconst SvgChevronLeft = (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: \"M14.71 6.71a.996.996 0 0 0-1.41 0L8.71 11.3a.996.996 0 0 0 0 1.41l4.59 4.59a.996.996 0 1 0 1.41-1.41L10.83 12l3.88-3.88c.39-.39.38-1.03 0-1.41z\" }));\nexport default SvgChevronLeft;\n","import { createContext } from \"react\";\n\ntype PageSideBarContextProps = {\n collapsed: boolean;\n};\n\nexport const PageSideBarContext = createContext<PageSideBarContextProps | null>(\n null,\n);\n","import { createContext } from \"react\";\n\nexport const PageContext = createContext<PageContextProps>({});\n\nexport type PageContextProps = {\n pageWidth?: number;\n};\n","import { Popover, Button, Icon, Flex, Tooltip } from \"../\";\nimport { core } from \"@servicetitan/hammer-token\";\nimport {\n ComponentPropsWithoutRef,\n forwardRef,\n Ref,\n useContext,\n useState,\n useLayoutEffect,\n} from \"react\";\nimport { useTrackingId } from \"../../hooks\";\nimport cx from \"classnames\";\nimport styles from \"./Page.module.scss\";\nimport SegmentSVG from \"@servicetitan/hammer-icon/mdi/round/segment.svg\";\nimport RespOpen from \"@servicetitan/hammer-icon/mdi/round/keyboard_arrow_down.svg\";\nimport RespClose from \"@servicetitan/hammer-icon/mdi/round/keyboard_arrow_up.svg\";\nimport OpenSVG from \"@servicetitan/hammer-icon/mdi/round/chevron_right.svg\";\nimport CloseSVG from \"@servicetitan/hammer-icon/mdi/round/chevron_left.svg\";\nimport { PageSideBarContext } from \"./PageSidebarContext\";\nimport { PageContext, PageContextProps } from \"./PageContext\";\n\n/**\n * Props for the PageSidebar component\n * @extends ComponentPropsWithoutRef<\"div\">\n */\nexport type PageSidebarProps = ComponentPropsWithoutRef<\"div\"> & {\n /**\n * Key for storing sidebar collapsed state in localStorage\n * @default \"sidebar-collapsed\"\n */\n localStorageKey?: string;\n /**\n * Custom tracking ID for analytics\n */\n [\"data-tracking-id\"]?: string;\n /**\n * Title to display in the adaptive trigger button\n */\n currentPageTitle?: string;\n};\n\n/**\n * PageSidebar component for creating collapsible navigation sidebars.\n *\n * Features:\n * - Collapsible sidebar with localStorage persistence\n * - Responsive design with adaptive popover on mobile\n * - Automatic tracking ID generation for analytics\n * - Keyboard navigation and accessibility support\n * - Toggle button with tooltip\n * - Context provider for sidebar state\n * - Mobile-friendly popover navigation\n *\n * @example\n * <Page.Sidebar currentPageTitle=\"Navigation\">\n * <Page.SidebarHeader>\n * <Text variant=\"headline\" el=\"h2\">Sidebar Title</Text>\n * </Page.SidebarHeader>\n * <SideNav>\n * <SideNavLink pathname=\"/\">Home</SideNavLink>\n * </SideNav>\n * </Page.Sidebar>\n */\nexport const PageSidebar = forwardRef(\n (props: PageSidebarProps, ref: Ref<HTMLDivElement>) => {\n const {\n children,\n className,\n currentPageTitle,\n localStorageKey = \"sidebar-collapsed\",\n ...rest\n } = props;\n\n const data = {\n localStorageKey,\n };\n\n const { pageWidth } = useContext<PageContextProps>(PageContext);\n const [isMobile, setIsMobile] = useState<boolean>();\n\n useLayoutEffect(() => {\n const breakpointWidth = +(\n core.primitive?.BreakpointLg?.value.replace(\"px\", \"\") ?? 0\n );\n const innerWidth = pageWidth ?? 0;\n setIsMobile(innerWidth < breakpointWidth);\n }, [pageWidth]);\n\n const trackingId = useTrackingId({\n name: \"PageSidebarButton\",\n data,\n hasOverride: !!props[\"data-tracking-id\"],\n });\n\n const [collapsed, setCollapsed] = useState<boolean>(() => {\n // getting stored value\n const sidebarState = localStorage.getItem(localStorageKey);\n return sidebarState ? JSON.parse(sidebarState) : false;\n });\n const classNames = cx([styles[\"sidebar\"]], className, {\n [styles[\"collapsed\"]]: collapsed,\n });\n const onToggleButtonClick = () => {\n setCollapsed((prev) => {\n localStorage.setItem(localStorageKey, JSON.stringify(!prev));\n return !prev;\n });\n };\n\n if (typeof isMobile !== \"undefined\" && isMobile) {\n return (\n <Popover fillAvailableHeight matchReferenceWidth noPadding disableCaret>\n <Popover.Trigger>\n {(props) => {\n if (typeof document !== \"undefined\") {\n if (props[\"data-state\"] === \"open\") {\n document.body.style.overflow = \"hidden\";\n } else {\n document.body.style.overflow = \"auto\";\n }\n }\n return (\n <div className={styles[\"sidebar-adaptive-trigger-container\"]}>\n <Button\n className={styles[\"sidebar-adaptive-trigger\"]}\n icon={SegmentSVG}\n appearance=\"ghost\"\n {...props}\n >\n {!currentPageTitle ? \"Menu\" : currentPageTitle}\n <Icon\n className={styles[\"sidebar-adaptive-trigger-icon\"]}\n justifyContent=\"end\"\n svg={\n props[\"data-state\"] === \"open\" ? RespClose : RespOpen\n }\n />\n </Button>\n </div>\n );\n }}\n </Popover.Trigger>\n <Popover.Content className={styles[\"sidebar-adaptive-container\"]}>\n <Flex\n direction=\"column\"\n className={styles[\"sidebar-adaptive\"]}\n ref={ref}\n >\n {children}\n </Flex>\n </Popover.Content>\n </Popover>\n );\n }\n\n return (\n <PageSideBarContext.Provider value={{ collapsed }}>\n <div className={classNames} ref={ref} {...rest}>\n <div className={styles[\"sidebar-inner\"]} aria-hidden={collapsed}>\n <div>{children}</div>\n </div>\n <div className={styles[\"toggle-button-wrapper\"]}>\n <Tooltip placement=\"right\">\n <Tooltip.Trigger className={styles[\"toggle-button-tooltip\"]}>\n <Button\n size=\"small\"\n onClick={onToggleButtonClick}\n className={styles[\"toggle-button\"]}\n aria-label={collapsed ? \"Open Sidebar\" : \"Close Sidebar\"}\n data-tracking-id={trackingId}\n icon={collapsed ? OpenSVG : CloseSVG}\n />\n </Tooltip.Trigger>\n <Tooltip.Content>\n {collapsed ? \"Open Sidebar\" : \"Close Sidebar\"}\n </Tooltip.Content>\n </Tooltip>\n </div>\n </div>\n </PageSideBarContext.Provider>\n );\n },\n);\n\nPageSidebar.displayName = \"Page.Sidebar\";\n","import { ComponentPropsWithoutRef, forwardRef, Ref, useContext } from \"react\";\nimport cx from \"classnames\";\nimport styles from \"./Page.module.scss\";\nimport { PageSideBarContext } from \"./PageSidebarContext\";\n\n/**\n * Props for the PageSidebarHeader component\n * @extends ComponentPropsWithoutRef<\"div\">\n */\nexport type PageSidebarHeaderProps = ComponentPropsWithoutRef<\"div\">;\n\n/**\n * PageSidebarHeader component for creating header sections within sidebars.\n *\n * Features:\n * - Container for sidebar header content\n * - Automatic visibility handling based on sidebar collapsed state\n * - Supports all standard div props\n * - Context-aware styling\n *\n * @example\n * <Page.SidebarHeader>\n * <Text variant=\"headline\" el=\"h2\" size=\"medium\">\n * Sidebar Title\n * </Text>\n * </Page.SidebarHeader>\n */\nexport const PageSidebarHeader = forwardRef(\n (props: PageSidebarHeaderProps, ref: Ref<HTMLDivElement>) => {\n const { children, className, ...rest } = props;\n const context = useContext(PageSideBarContext);\n const classNames = cx([styles[\"sidebar-header\"]], className);\n\n return (\n <div className={classNames} ref={ref} {...rest}>\n <div\n className={styles[\"header-content\"]}\n aria-hidden={context?.collapsed}\n >\n {children}\n </div>\n </div>\n );\n },\n);\n\nPageSidebarHeader.displayName = \"Page.SidebarHeader\";\n","import * as React from \"react\";\nconst SvgSettings = (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.5 12c0-.23-.01-.45-.03-.68l1.86-1.41c.4-.3.51-.86.26-1.3l-1.87-3.23a.987.987 0 0 0-1.25-.42l-2.15.91c-.37-.26-.76-.49-1.17-.68l-.29-2.31c-.06-.5-.49-.88-.99-.88h-3.73c-.51 0-.94.38-1 .88l-.29 2.31c-.41.19-.8.42-1.17.68l-2.15-.91c-.46-.2-1-.02-1.25.42L2.41 8.62c-.25.44-.14.99.26 1.3l1.86 1.41a7.343 7.343 0 0 0 0 1.35l-1.86 1.41c-.4.3-.51.86-.26 1.3l1.87 3.23c.25.44.79.62 1.25.42l2.15-.91c.37.26.76.49 1.17.68l.29 2.31c.06.5.49.88.99.88h3.73c.5 0 .93-.38.99-.88l.29-2.31c.41-.19.8-.42 1.17-.68l2.15.91c.46.2 1 .02 1.25-.42l1.87-3.23c.25-.44.14-.99-.26-1.3l-1.86-1.41c.03-.23.04-.45.04-.68zm-7.46 3.5c-1.93 0-3.5-1.57-3.5-3.5s1.57-3.5 3.5-3.5 3.5 1.57 3.5 3.5-1.57 3.5-3.5 3.5z\" }));\nexport default SvgSettings;\n","import {\n ButtonProps,\n ButtonLinkProps,\n BreadcrumbsLinkProps,\n ChipProps,\n Tooltip,\n ButtonLink,\n Button,\n Flex,\n Menu,\n Breadcrumbs,\n Chip,\n Text,\n} from \"../\";\nimport {\n ComponentPropsWithoutRef,\n ReactNode,\n forwardRef,\n Ref,\n RefObject,\n} from \"react\";\nimport Layout, { LayoutProps } from \"../Layout\";\nimport cx from \"classnames\";\nimport styles from \"./Page.module.scss\";\nimport LocalSettings from \"@servicetitan/hammer-icon/mdi/round/settings.svg\";\nimport MoreVert from \"@servicetitan/hammer-icon/mdi/round/more_vert.svg\";\n\n/**\n * Props for page header action buttons\n */\ntype PageHeaderActionProps = Omit<ButtonProps, \"appearance\"> & {\n /**\n * Label text for the action button\n */\n label: string;\n};\n\n/**\n * Props for page header actions configuration\n */\ntype PageHeaderActionsProps = {\n /**\n * Primary action button\n */\n primary?: PageHeaderActionProps;\n /**\n * Array of secondary action buttons\n */\n secondary?: PageHeaderActionProps[];\n};\n\n/**\n * Base props for preference actions\n */\ntype BasePreferenceProps = {\n /**\n * Accessible label for the preference action\n */\n \"aria-label\": string;\n};\n\n/**\n * Props for preference button actions\n */\ntype PreferenceButtonProps = Omit<\n ButtonProps,\n \"aria-label\" | \"icon\" | \"appearance\" | \"size\" | \"className\"\n> &\n BasePreferenceProps;\n\n/**\n * Props for preference link actions\n */\ntype PreferenceLinkProps = Omit<\n ButtonLinkProps,\n \"aria-label\" | \"icon\" | \"appearance\" | \"size\" | \"className\"\n> &\n BasePreferenceProps;\n\n/**\n * Props for the PageHeader component\n * @extends ComponentPropsWithoutRef<\"header\">\n */\nexport type PageHeaderProps = ComponentPropsWithoutRef<\"header\"> & {\n /**\n * Main title of the page\n */\n title: string;\n /**\n * Breadcrumb navigation links\n */\n breadcrumbs?: BreadcrumbsLinkProps[];\n /**\n * Status chips to display\n */\n chips?: ChipProps[];\n /**\n * Description text or content below the title\n */\n description?: ReactNode;\n /**\n * Primary and secondary action buttons\n */\n actions?: PageHeaderActionsProps;\n /**\n * Preference action button or link\n */\n preferenceAction?: PreferenceButtonProps | PreferenceLinkProps;\n /**\n * Layout configuration for the header\n */\n layout?: LayoutProps;\n};\n\n/**\n * PageHeader component for creating page headers with navigation and actions.\n *\n * Features:\n * - Page title with semantic heading\n * - Breadcrumb navigation support\n * - Status chips display\n * - Primary and secondary action buttons\n * - Preference action button/link\n * - Responsive layout with fluid grid\n * - Accessibility support with proper ARIA labels\n * - Flexible layout configuration\n * - Description content support\n *\n * @example\n * <Page.Header\n * title=\"Page Title\"\n * breadcrumbs={[\n * { href: \"/\", children: \"Home\" },\n * { children: \"Current Page\" }\n * ]}\n * chips={[{ label: \"Status\" }]}\n * actions={{\n * primary: { label: \"Save\", onClick: handleSave },\n * secondary: [{ label: \"Cancel\", onClick: handleCancel }]\n * }}\n * />\n */\nexport const PageHeader = forwardRef(\n (props: PageHeaderProps, ref: Ref<HTMLHeadElement>) => {\n const {\n title,\n breadcrumbs,\n chips,\n description,\n actions,\n preferenceAction,\n layout,\n className,\n ...rest\n } = props;\n\n const { fluid, variant } = layout || {};\n\n const preferenceItem =\n preferenceAction &&\n (\"href\" in preferenceAction ? (\n <Tooltip>\n <Tooltip.Trigger>\n <ButtonLink\n appearance=\"ghost\"\n icon={LocalSettings}\n size=\"small\"\n className={styles[\"preference-action\"]}\n {...(preferenceAction as PreferenceLinkProps)}\n />\n </Tooltip.Trigger>\n <Tooltip.Content>{preferenceAction[\"aria-label\"]}</Tooltip.Content>\n </Tooltip>\n ) : (\n <Tooltip>\n <Tooltip.Trigger>\n <Button\n appearance=\"ghost\"\n icon={LocalSettings}\n size=\"small\"\n className={styles[\"preference-action\"]}\n {...(preferenceAction as PreferenceButtonProps)}\n />\n </Tooltip.Trigger>\n <Tooltip.Content>{preferenceAction[\"aria-label\"]}</Tooltip.Content>\n </Tooltip>\n ));\n\n const actionItems = actions && (\n <Flex justifyContent=\"flex-end\" className={styles.actions}>\n {/* Only primary action */}\n {actions.primary &&\n (!actions.secondary || actions.secondary.length === 0) && (\n <Button appearance=\"primary\" {...actions.primary}>\n {actions.primary.label}\n </Button>\n )}\n\n {/* Only secondary actions (1-2 buttons) */}\n {!!actions.secondary?.length &&\n actions.secondary.length < 3 &&\n !actions.primary &&\n actions.secondary.map((action, index) => (\n <Button key={index} appearance=\"secondary\" {...action}>\n {action.label}\n </Button>\n ))}\n\n {/* 1 secondary action + primary action */}\n {actions.primary &&\n !!actions.secondary?.length &&\n actions.secondary.length === 1 && (\n <>\n <Button appearance=\"secondary\" {...actions.secondary[0]}>\n {actions.secondary[0].label}\n </Button>\n <Button appearance=\"primary\" {...actions.primary}>\n {actions.primary.label}\n </Button>\n </>\n )}\n\n {/* Multiple secondary actions (3+) with optional primary */}\n {!!actions.secondary?.length &&\n (actions.secondary.length >= 3 ||\n (actions.secondary.length >= 2 && actions.primary)) && (\n <>\n <Menu\n trigger={({ ref, ...rest }) => (\n <Tooltip>\n <Tooltip.Trigger\n ref={ref as unknown as RefObject<HTMLDivElement>}\n {...rest}\n >\n <Button\n appearance=\"secondary\"\n icon={MoreVert}\n aria-label=\"More actions\"\n />\n </Tooltip.Trigger>\n <Tooltip.Content>More actions</Tooltip.Content>\n </Tooltip>\n )}\n >\n {actions.secondary.map((action, index) => (\n <Menu.Item\n key={index}\n label={action.label}\n onClick={action.onClick}\n disabled={action.disabled}\n />\n ))}\n </Menu>\n {actions.primary && (\n <Button appearance=\"primary\" {...actions.primary}>\n {actions.primary.label}\n </Button>\n )}\n </>\n )}\n </Flex>\n );\n\n const headerClassName = cx(styles.content, styles.header, className);\n\n const headerContentClassName = cx(\n styles[\"content-inner\"],\n styles[\"content-header-inner\"],\n );\n\n return (\n <header ref={ref} className={headerClassName} {...rest}>\n <div className={headerContentClassName}>\n <Layout fluid={fluid} variant={variant} className={styles[\"layout\"]}>\n <Layout.Item>\n {breadcrumbs && (\n <Breadcrumbs>\n {breadcrumbs.map((breadcrumb, index) => (\n <Breadcrumbs.Link key={index} {...breadcrumb} />\n ))}\n </Breadcrumbs>\n )}\n </Layout.Item>\n\n <Layout.Item md={actionItems ? 6 : 12}>\n <div className={styles[\"title-wrapper\"]}>\n <Text\n variant=\"headline\"\n size=\"large\"\n el=\"h1\"\n className={styles.title}\n >\n {title}\n </Text>\n\n {preferenceItem}\n </div>\n\n {chips && (\n <Flex className={styles.chips}>\n {chips.map((chip, index) => (\n <Chip key={index} {...chip} />\n ))}\n </Flex>\n )}\n </Layout.Item>\n\n {actions && <Layout.Item md={6}>{actionItems}</Layout.Item>}\n\n {description && (\n <Layout.Item md={12} className={styles.description}>\n {description}\n </Layout.Item>\n )}\n </Layout>\n </div>\n </header>\n );\n },\n);\n\nPageHeader.displayName = \"Page.Header\";\n","import {\n ComponentPropsWithoutRef,\n forwardRef,\n Ref,\n useEffect,\n useRef,\n useState,\n UIEvent,\n} from \"react\";\nimport cx from \"classnames\";\nimport styles from \"./Page.module.scss\";\nimport { useMergeRefs } from \"../../hooks\";\n\n/**\n * Props for the PageContent component\n * @extends ComponentPropsWithoutRef<\"main\">\n */\nexport type PageContentProps = ComponentPropsWithoutRef<\"main\">;\n\n/**\n * PageContent component for the main content area of a page.\n *\n * Features:\n * - Semantic main element for page content\n * - Virtual scrolling support for long content\n * - Automatic scroll synchronization\n * - Responsive design\n * - Accessibility support with proper main landmark\n * - Scroll position management\n *\n * @example\n * <Page.Content>\n * <Text>Main page content goes here</Text>\n * <Button>Action Button</Button>\n * </Page.Content>\n */\nexport const PageContent = forwardRef(\n (props: PageContentProps, ref: Ref<HTMLAreaElement>) => {\n const { children, className, ...rest } = props;\n const classNames = cx([styles[\"content\"]], className);\n const mainRef = useRef<HTMLAreaElement>(null);\n const virtualScrollRef = useRef<HTMLDivElement>(null);\n const blocker = useRef(true);\n const [leftOffset, setLeftOffset] = useState(\n (mainRef.current?.offsetLeft ?? 0) +\n (mainRef.current?.offsetWidth ?? 0) -\n 9,\n );\n const [contentHeight, setContentHeight] = useState(\n mainRef.current?.offsetHeight,\n );\n\n // Updates scroll position\n useEffect(() => {\n if (typeof window === \"undefined\") return;\n if (!blocker.current) return;\n function updatePosition() {\n const newValue = window.scrollY;\n\n virtualScrollRef.current?.scrollTo(0, newValue ?? 0);\n }\n window.addEventListener(\"scroll\", updatePosition, { passive: true });\n\n return () => {\n window.removeEventListener(\"scroll\", updatePosition);\n };\n }, []);\n\n // Updates virtual scroll properties when main resizes\n useEffect(() => {\n if (mainRef.current) {\n const observer = new ResizeObserver(() => {\n if (!mainRef.current) return;\n setLeftOffset(\n mainRef.current.offsetLeft + mainRef.current.offsetWidth - 9,\n );\n setContentHeight(mainRef.current.offsetHeight);\n });\n\n observer.observe(mainRef.current);\n\n // Cleanup function\n return () => {\n observer.disconnect();\n };\n }\n }, []);\n\n function scrollBody(e: UIEvent<HTMLElement>) {\n if (typeof window === \"undefined\") return;\n if (blocker.current) return;\n window.scrollTo(0, (e.target as HTMLDivElement).scrollTop);\n }\n\n return (\n <main className={classNames} ref={useMergeRefs([mainRef, ref])} {...rest}>\n <div className={styles[\"content-inner\"]}>{children}</div>\n <div\n className={styles[\"virtual-scroll-container\"]}\n ref={virtualScrollRef}\n style={{\n left: leftOffset,\n }}\n onScrollCapture={scrollBody}\n onMouseEnter={() => {\n blocker.current = false;\n }}\n onMouseLeave={() => {\n blocker.current = true;\n }}\n >\n <div style={{ width: 1, height: contentHeight }} />\n </div>\n </main>\n );\n },\n);\n\nPageContent.displayName = \"PageContent\";\n","import {\n ComponentPropsWithoutRef,\n forwardRef,\n Ref,\n useContext,\n useLayoutEffect,\n useState,\n} from \"react\";\nimport { core } from \"@servicetitan/hammer-token\";\nimport cx from \"classnames\";\nimport styles from \"./Page.module.scss\";\nimport Dialog from \"../Dialog\";\nimport { PageContext, PageContextProps } from \"./PageContext\";\n\n/**\n * Props for the PagePanel component\n * @extends ComponentPropsWithoutRef<\"div\">\n */\nexport type PagePanelProps = ComponentPropsWithoutRef<\"div\"> & {\n /**\n * Whether the panel is open\n * @default true\n */\n open?: boolean;\n /**\n * Size of the panel\n * @default \"medium\"\n */\n size?: \"small\" | \"medium\" | \"large\";\n /**\n * Whether to remove default padding from the panel\n * @default false\n */\n noPadding?: boolean;\n};\n\n/**\n * PagePanel component for creating slide-out panels or dialogs.\n *\n * Features:\n * - Responsive design with dialog fallback on mobile\n * - Multiple size variants (small, medium, large)\n * - Optional padding control\n * - Persistent or controlled open state\n * - Automatic mobile dialog conversion\n * - Keyboard navigation and accessibility support\n * - Smooth animations and transitions\n *\n * @example\n * <Page.Panel open={isOpen} size=\"medium\">\n * <Text variant=\"headline\" el=\"h3\">Panel Content</Text>\n * <Button onClick={() => setIsOpen(false)}>Close</Button>\n * </Page.Panel>\n */\nexport const PagePanel = forwardRef(\n (props: PagePanelProps, ref: Ref<HTMLDivElement>) => {\n const {\n children,\n open,\n size = \"medium\",\n noPadding,\n style,\n className,\n ...rest\n } = props;\n const classNames = cx([styles[\"panel\"]], [styles[size]], className, {\n [styles[\"open\"]]: typeof open === \"undefined\" ? true : open,\n [styles[\"persistent\"]]: typeof open === \"undefined\",\n [styles[\"noPadding\"]]: noPadding,\n });\n\n const { pageWidth } = useContext<PageContextProps>(PageContext);\n\n const [isMobile, setIsMobile] = useState<boolean>(false);\n\n useLayoutEffect(() => {\n const breakpointWidth = +(\n core.primitive?.BreakpointLg?.value.replace(\"px\", \"\") ?? 0\n );\n const innerWidth = pageWidth ?? 0;\n setIsMobile(innerWidth < breakpointWidth);\n }, [pageWidth]);\n\n if (typeof open !== \"undefined\" && isMobile) {\n return (\n <Dialog open={open}>\n <Dialog.Content>\n <div\n className={classNames}\n aria-hidden={!open}\n aria-disabled={!open}\n ref={ref}\n {...rest}\n >\n {children}\n </div>\n </Dialog.Content>\n </Dialog>\n );\n }\n return (\n <div\n className={classNames}\n aria-hidden={!open}\n aria-disabled={!open}\n ref={ref}\n {...rest}\n >\n <div\n className={styles[\"panel-inner\"]}\n /* eslint-disable-next-line jsx-a11y/no-noninteractive-tabindex */\n tabIndex={typeof open !== \"undefined\" && open ? 0 : -1}\n style={style}\n >\n <div>{children}</div>\n </div>\n </div>\n );\n },\n);\nPagePanel.displayName = \"PagePanel\";\n","import { ComponentPropsWithoutRef, forwardRef, Ref } from \"react\";\nimport { useLayoutPropsUtil } from \"../../internal/hooks\";\nimport { LayoutUtilProps } from \"../../types\";\nimport cx from \"classnames\";\nimport styles from \"./Page.module.scss\";\n\n/**\n * Props for the PageFooter component\n * @extends ComponentPropsWithoutRef<\"div\">\n * @extends LayoutUtilProps\n */\nexport type PageFooterProps = ComponentPropsWithoutRef<\"div\"> & LayoutUtilProps;\n\n/**\n * PageFooter component for creating page footers with layout utilities.\n *\n * Features:\n * - Semantic footer element\n * - Layout utility props support\n * - Responsive design\n * - Accessibility support with proper footer landmark\n * - Flexible content positioning\n *\n * @example\n * <Page.Footer>\n * <Text>Footer content with layout utilities</Text>\n * </Page.Footer>\n */\nexport const PageFooter = forwardRef(\n (props: PageFooterProps, ref: Ref<HTMLDivElement>) => {\n const { layoutStyles, componentProps } = useLayoutPropsUtil(props);\n const { children, className, style, ...rest } = componentProps;\n\n const classNames = cx([styles[\"content-footer\"]], className);\n const styleCombined = {\n ...style,\n ...layoutStyles,\n };\n return (\n <footer className={classNames} ref={ref} style={styleCombined} {...rest}>\n {children}\n </footer>\n );\n },\n);\nPageFooter.displayName = \"PageFooter\";\n","import {\n ComponentPropsWithoutRef,\n Ref,\n forwardRef,\n useLayoutEffect,\n useRef,\n useState,\n} from \"react\";\n\nimport cx from \"classnames\";\nimport styles from \"./Page.module.scss\";\nimport { PageSidebar } from \"./PageSidebar\";\nimport { PageSidebarHeader } from \"./PageSidebarHeader\";\nimport { PageHeader } from \"./PageHeader\";\nimport { PageContent } from \"./PageContent\";\nimport { PagePanel } from \"./PagePanel\";\nimport { PageFooter } from \"./PageFooter\";\nimport { PageContext } from \"./PageContext\";\nimport { useMergeRefs } from \"../../hooks\";\n\n//--- Start Page Element ---//\n/**\n * Props for the Page component\n * @extends ComponentPropsWithoutRef<\"div\">\n */\nexport type PageProps = ComponentPropsWithoutRef<\"div\">;\n\nconst PageElement = forwardRef((props: PageProps, ref: Ref<HTMLDivElement>) => {\n const { children, className, ...rest } = props;\n const classNames = cx(styles[\"page\"], className);\n const elRef = useRef<HTMLDivElement>(null);\n const combinedRef = useMergeRefs([elRef, ref]);\n\n const [pageWidth, setPageWidth] = useState<number>(0);\n\n useLayoutEffect(() => {\n const element = elRef.current;\n const resizeObserver = new ResizeObserver((entries) => {\n const entry = entries[0];\n if (entry) {\n setPageWidth(entry.contentRect.width);\n }\n });\n if (element) {\n resizeObserver.observe(element);\n }\n return () => {\n if (element) {\n resizeObserver.unobserve(element);\n resizeObserver.disconnect();\n }\n };\n }, [elRef]);\n\n return (\n <PageContext.Provider value={{ pageWidth }}>\n <div className={classNames} data-anv=\"Page\" ref={combinedRef} {...rest}>\n <div className={styles[\"container\"]}>{children}</div>\n </div>\n </PageContext.Provider>\n );\n});\n\nPageElement.displayName = \"Page\";\n\n/**\n * Page component for creating full-page layouts with navigation and content areas.\n *\n * Features:\n * - Container for complete page layouts\n * - Supports sidebar navigation with collapsible state\n * - Header with breadcrumbs, chips, and action buttons\n * - Main content area with virtual scrolling\n * - Optional slide-out panels with responsive dialog fallback\n * - Footer with layout utilities\n * - Responsive design with mobile adaptations\n * - Accessibility support with proper landmarks\n * - Automatic tracking ID generation for analytics\n * - Local storage persistence for sidebar state\n *\n * @example\n * <Page>\n * <Page.Sidebar currentPageTitle=\"Navigation\">\n * <Page.SidebarHeader>\n * <Text variant=\"headline\" el=\"h2\">Navigation</Text>\n * </Page.SidebarHeader>\n * <SideNav>\n * <SideNavLink pathname=\"/\">Home</SideNavLink>\n * </SideNav>\n * </Page.Sidebar>\n * <Page.Header\n * title=\"Page Title\"\n * breadcrumbs={[{ href: \"/\", children: \"Home\" }]}\n * actions={{ primary: { label: \"Save\", onClick: handleSave } }}\n * />\n * <Page.Content>\n * <Text>Main content</Text>\n * </Page.Content>\n * <Page.Panel open={isPanelOpen} size=\"medium\">\n * <Text>Panel content</Text>\n * </Page.Panel>\n * <Page.Footer>\n * <Text>Footer content</Text>\n * </Page.Footer>\n * </Page>\n */\nexport const Page = Object.assign(PageElement, {\n /**\n * PageSidebar component for creating collapsible navigation sidebars.\n *\n * Features:\n * - Collapsible sidebar with localStorage persistence\n * - Responsive design with adaptive popover on mobile\n * - Automatic tracking ID generation for analytics\n * - Keyboard navigation and accessibility support\n * - Toggle button with tooltip\n * - Context provider for sidebar state\n * - Mobile-friendly popover navigation\n *\n * @example\n * <Page.Sidebar currentPageTitle=\"Navigation\">\n * <Page.SidebarHeader>\n * <Text variant=\"headline\" el=\"h2\">Sidebar Title</Text>\n * </Page.SidebarHeader>\n * <SideNav>\n * <SideNavLink pathname=\"/\">Home</SideNavLink>\n * </SideNav>\n * </Page.Sidebar>\n */\n Sidebar: PageSidebar,\n /**\n * PageSidebarHeader component for creating header sections within sidebars.\n *\n * Features:\n * - Container for sidebar header content\n * - Automatic visibility handling based on sidebar collapsed state\n * - Supports all standard div props\n * - Context-aware styling\n *\n * @example\n * <Page.SidebarHeader>\n * <Text variant=\"headline\" el=\"h2\" size=\"medium\">\n * Sidebar Title\n * </Text>\n * </Page.SidebarHeader>\n */\n SidebarHeader: PageSidebarHeader,\n /**\n * PageHeader component for creating page headers with navigation and actions.\n *\n * Features:\n * - Page title with semantic heading\n * - Breadcrumb navigation support\n * - Status chips display\n * - Primary and secondary action buttons\n * - Preference action button/link\n * - Responsive layout with fluid grid\n * - Accessibility support with proper ARIA labels\n * - Flexible layout configuration\n * - Description content support\n *\n * @example\n * <Page.Header\n * title=\"Page Title\"\n * breadcrumbs={[\n * { href: \"/\", children: \"Home\" },\n * { children: \"Current Page\" }\n * ]}\n * chips={[{ label: \"Status\" }]}\n * actions={{\n * primary: { label: \"Save\", onClick: handleSave },\n * secondary: [{ label: \"Cancel\", onClick: handleCancel }]\n * }}\n * />\n */\n Header: PageHeader,\n /**\n * PageContent component for the main content area of a page.\n *\n * Features:\n * - Semantic main element for page content\n * - Virtual scrolling support for long content\n * - Automatic scroll synchronization\n * - Responsive design\n * - Accessibility support with proper main landmark\n * - Scroll position management\n *\n * @example\n * <Page.Content>\n * <Text>Main page content goes here</Text>\n * <Button>Action Button</Button>\n * </Page.Content>\n */\n Content: PageContent,\n /**\n * PagePanel component for creating slide-out panels or dialogs.\n *\n * Features:\n * - Responsive design with dialog fallback on mobile\n * - Multiple size variants (small, medium, large)\n * - Optional padding control\n * - Persistent or controlled open state\n * - Automatic mobile dialog conversion\n * - Keyboard navigation and accessibility support\n * - Smooth animations and transitions\n *\n * @example\n * <Page.Panel open={isOpen} size=\"medium\">\n * <Text variant=\"headline\" el=\"h3\">Panel Content</Text>\n * <Button onClick={() => setIsOpen(false)}>Close</Button>\n * </Page.Panel>\n */\n Panel: PagePanel,\n /**\n * PageFooter component for creating page footers with layout utilities.\n *\n * Features:\n * - Semantic footer element\n * - Layout utility props support\n * - Responsive design\n * - Accessibility support with proper footer landmark\n * - Flexible content positioning\n *\n * @example\n * <Page.Footer>\n * <Text>Footer content with layout utilities</Text>\n * </Page.Footer>\n */\n Footer: PageFooter,\n});\n"],"names":["core.primitive?.BreakpointLg","props","SegmentSVG","RespClose","RespOpen","OpenSVG","CloseSVG","LocalSettings","ref","rest","MoreVert"],"mappings":"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"}
1
+ {"version":3,"file":"Page-BMDkbDcU.js","sources":["../../hammer-icon/mdi/round/segment.svg","../../hammer-icon/mdi/round/chevron_left.svg","../src/components/Page/PageSidebarContext.ts","../src/components/Page/PageContext.ts","../src/components/Page/PageSidebar.tsx","../src/components/Page/PageSidebarHeader.tsx","../../hammer-icon/mdi/round/settings.svg","../src/components/Page/PageHeader.tsx","../src/components/Page/PageContent.tsx","../src/components/Page/PagePanel.tsx","../src/components/Page/PageFooter.tsx","../src/components/Page/Page.tsx"],"sourcesContent":["import * as React from \"react\";\nconst SvgSegment = (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: \"M10 18h10c.55 0 1-.45 1-1s-.45-1-1-1H10c-.55 0-1 .45-1 1s.45 1 1 1zM3 7c0 .55.45 1 1 1h16c.55 0 1-.45 1-1s-.45-1-1-1H4c-.55 0-1 .45-1 1zm7 6h10c.55 0 1-.45 1-1s-.45-1-1-1H10c-.55 0-1 .45-1 1s.45 1 1 1z\" }));\nexport default SvgSegment;\n","import * as React from \"react\";\nconst SvgChevronLeft = (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: \"M14.71 6.71a.996.996 0 0 0-1.41 0L8.71 11.3a.996.996 0 0 0 0 1.41l4.59 4.59a.996.996 0 1 0 1.41-1.41L10.83 12l3.88-3.88c.39-.39.38-1.03 0-1.41z\" }));\nexport default SvgChevronLeft;\n","import { createContext } from \"react\";\n\ntype PageSideBarContextProps = {\n collapsed: boolean;\n};\n\nexport const PageSideBarContext = createContext<PageSideBarContextProps | null>(\n null,\n);\n","import { createContext } from \"react\";\n\nexport const PageContext = createContext<PageContextProps>({});\n\nexport type PageContextProps = {\n pageWidth?: number;\n};\n","import { Popover, Button, Icon, Flex, Tooltip } from \"../\";\nimport { core } from \"@servicetitan/hammer-token\";\nimport {\n ComponentPropsWithoutRef,\n forwardRef,\n Ref,\n useContext,\n useState,\n useLayoutEffect,\n} from \"react\";\nimport { useTrackingId } from \"../../hooks\";\nimport cx from \"classnames\";\nimport styles from \"./Page.module.scss\";\nimport SegmentSVG from \"@servicetitan/hammer-icon/mdi/round/segment.svg\";\nimport RespOpen from \"@servicetitan/hammer-icon/mdi/round/keyboard_arrow_down.svg\";\nimport RespClose from \"@servicetitan/hammer-icon/mdi/round/keyboard_arrow_up.svg\";\nimport OpenSVG from \"@servicetitan/hammer-icon/mdi/round/chevron_right.svg\";\nimport CloseSVG from \"@servicetitan/hammer-icon/mdi/round/chevron_left.svg\";\nimport { PageSideBarContext } from \"./PageSidebarContext\";\nimport { PageContext, PageContextProps } from \"./PageContext\";\n\n/**\n * Props for the PageSidebar component\n * @extends ComponentPropsWithoutRef<\"div\">\n */\nexport type PageSidebarProps = ComponentPropsWithoutRef<\"div\"> & {\n /**\n * Key for storing sidebar collapsed state in localStorage\n * @default \"sidebar-collapsed\"\n */\n localStorageKey?: string;\n /**\n * Custom tracking ID for analytics\n */\n [\"data-tracking-id\"]?: string;\n /**\n * Title to display in the adaptive trigger button\n */\n currentPageTitle?: string;\n};\n\n/**\n * PageSidebar component for creating collapsible navigation sidebars.\n *\n * Features:\n * - Collapsible sidebar with localStorage persistence\n * - Responsive design with adaptive popover on mobile\n * - Automatic tracking ID generation for analytics\n * - Keyboard navigation and accessibility support\n * - Toggle button with tooltip\n * - Context provider for sidebar state\n * - Mobile-friendly popover navigation\n *\n * @example\n * <Page.Sidebar currentPageTitle=\"Navigation\">\n * <Page.SidebarHeader>\n * <Text variant=\"headline\" el=\"h2\">Sidebar Title</Text>\n * </Page.SidebarHeader>\n * <SideNav>\n * <SideNavLink pathname=\"/\">Home</SideNavLink>\n * </SideNav>\n * </Page.Sidebar>\n */\nexport const PageSidebar = forwardRef(\n (props: PageSidebarProps, ref: Ref<HTMLDivElement>) => {\n const {\n children,\n className,\n currentPageTitle,\n localStorageKey = \"sidebar-collapsed\",\n ...rest\n } = props;\n\n const data = {\n localStorageKey,\n };\n\n const { pageWidth } = useContext<PageContextProps>(PageContext);\n const [isMobile, setIsMobile] = useState<boolean>();\n\n useLayoutEffect(() => {\n const breakpointWidth = +(\n core.primitive?.BreakpointLg?.value.replace(\"px\", \"\") ?? 0\n );\n const innerWidth = pageWidth ?? 0;\n setIsMobile(innerWidth < breakpointWidth);\n }, [pageWidth]);\n\n const trackingId = useTrackingId({\n name: \"PageSidebarButton\",\n data,\n hasOverride: !!props[\"data-tracking-id\"],\n });\n\n const [collapsed, setCollapsed] = useState<boolean>(() => {\n // getting stored value\n const sidebarState = localStorage.getItem(localStorageKey);\n return sidebarState ? JSON.parse(sidebarState) : false;\n });\n const classNames = cx([styles[\"sidebar\"]], className, {\n [styles[\"collapsed\"]]: collapsed,\n });\n const onToggleButtonClick = () => {\n setCollapsed((prev) => {\n localStorage.setItem(localStorageKey, JSON.stringify(!prev));\n return !prev;\n });\n };\n\n if (typeof isMobile !== \"undefined\" && isMobile) {\n return (\n <Popover fillAvailableHeight matchReferenceWidth noPadding disableCaret>\n <Popover.Trigger>\n {(props) => {\n if (typeof document !== \"undefined\") {\n if (props[\"data-state\"] === \"open\") {\n document.body.style.overflow = \"hidden\";\n } else {\n document.body.style.overflow = \"auto\";\n }\n }\n return (\n <div className={styles[\"sidebar-adaptive-trigger-container\"]}>\n <Button\n className={styles[\"sidebar-adaptive-trigger\"]}\n icon={SegmentSVG}\n appearance=\"ghost\"\n {...props}\n >\n {!currentPageTitle ? \"Menu\" : currentPageTitle}\n <Icon\n className={styles[\"sidebar-adaptive-trigger-icon\"]}\n justifyContent=\"end\"\n svg={\n props[\"data-state\"] === \"open\" ? RespClose : RespOpen\n }\n />\n </Button>\n </div>\n );\n }}\n </Popover.Trigger>\n <Popover.Content className={styles[\"sidebar-adaptive-container\"]}>\n <Flex\n direction=\"column\"\n className={styles[\"sidebar-adaptive\"]}\n ref={ref}\n >\n {children}\n </Flex>\n </Popover.Content>\n </Popover>\n );\n }\n\n return (\n <PageSideBarContext.Provider value={{ collapsed }}>\n <div className={classNames} ref={ref} {...rest}>\n <div className={styles[\"sidebar-inner\"]} aria-hidden={collapsed}>\n <div>{children}</div>\n </div>\n <div className={styles[\"toggle-button-wrapper\"]}>\n <Tooltip placement=\"right\">\n <Tooltip.Trigger className={styles[\"toggle-button-tooltip\"]}>\n <Button\n size=\"small\"\n onClick={onToggleButtonClick}\n className={styles[\"toggle-button\"]}\n aria-label={collapsed ? \"Open Sidebar\" : \"Close Sidebar\"}\n data-tracking-id={trackingId}\n icon={collapsed ? OpenSVG : CloseSVG}\n />\n </Tooltip.Trigger>\n <Tooltip.Content>\n {collapsed ? \"Open Sidebar\" : \"Close Sidebar\"}\n </Tooltip.Content>\n </Tooltip>\n </div>\n </div>\n </PageSideBarContext.Provider>\n );\n },\n);\n\nPageSidebar.displayName = \"Page.Sidebar\";\n","import { ComponentPropsWithoutRef, forwardRef, Ref, useContext } from \"react\";\nimport cx from \"classnames\";\nimport styles from \"./Page.module.scss\";\nimport { PageSideBarContext } from \"./PageSidebarContext\";\n\n/**\n * Props for the PageSidebarHeader component\n * @extends ComponentPropsWithoutRef<\"div\">\n */\nexport type PageSidebarHeaderProps = ComponentPropsWithoutRef<\"div\">;\n\n/**\n * PageSidebarHeader component for creating header sections within sidebars.\n *\n * Features:\n * - Container for sidebar header content\n * - Automatic visibility handling based on sidebar collapsed state\n * - Supports all standard div props\n * - Context-aware styling\n *\n * @example\n * <Page.SidebarHeader>\n * <Text variant=\"headline\" el=\"h2\" size=\"medium\">\n * Sidebar Title\n * </Text>\n * </Page.SidebarHeader>\n */\nexport const PageSidebarHeader = forwardRef(\n (props: PageSidebarHeaderProps, ref: Ref<HTMLDivElement>) => {\n const { children, className, ...rest } = props;\n const context = useContext(PageSideBarContext);\n const classNames = cx([styles[\"sidebar-header\"]], className);\n\n return (\n <div className={classNames} ref={ref} {...rest}>\n <div\n className={styles[\"header-content\"]}\n aria-hidden={context?.collapsed}\n >\n {children}\n </div>\n </div>\n );\n },\n);\n\nPageSidebarHeader.displayName = \"Page.SidebarHeader\";\n","import * as React from \"react\";\nconst SvgSettings = (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.5 12c0-.23-.01-.45-.03-.68l1.86-1.41c.4-.3.51-.86.26-1.3l-1.87-3.23a.987.987 0 0 0-1.25-.42l-2.15.91c-.37-.26-.76-.49-1.17-.68l-.29-2.31c-.06-.5-.49-.88-.99-.88h-3.73c-.51 0-.94.38-1 .88l-.29 2.31c-.41.19-.8.42-1.17.68l-2.15-.91c-.46-.2-1-.02-1.25.42L2.41 8.62c-.25.44-.14.99.26 1.3l1.86 1.41a7.343 7.343 0 0 0 0 1.35l-1.86 1.41c-.4.3-.51.86-.26 1.3l1.87 3.23c.25.44.79.62 1.25.42l2.15-.91c.37.26.76.49 1.17.68l.29 2.31c.06.5.49.88.99.88h3.73c.5 0 .93-.38.99-.88l.29-2.31c.41-.19.8-.42 1.17-.68l2.15.91c.46.2 1 .02 1.25-.42l1.87-3.23c.25-.44.14-.99-.26-1.3l-1.86-1.41c.03-.23.04-.45.04-.68zm-7.46 3.5c-1.93 0-3.5-1.57-3.5-3.5s1.57-3.5 3.5-3.5 3.5 1.57 3.5 3.5-1.57 3.5-3.5 3.5z\" }));\nexport default SvgSettings;\n","import {\n ButtonProps,\n ButtonLinkProps,\n BreadcrumbsLinkProps,\n ChipProps,\n Tooltip,\n ButtonLink,\n Button,\n Flex,\n Menu,\n Breadcrumbs,\n Chip,\n Text,\n} from \"../\";\nimport {\n ComponentPropsWithoutRef,\n ReactNode,\n forwardRef,\n Ref,\n RefObject,\n} from \"react\";\nimport Layout, { LayoutProps } from \"../Layout\";\nimport cx from \"classnames\";\nimport styles from \"./Page.module.scss\";\nimport LocalSettings from \"@servicetitan/hammer-icon/mdi/round/settings.svg\";\nimport MoreVert from \"@servicetitan/hammer-icon/mdi/round/more_vert.svg\";\n\n/**\n * Props for page header action buttons\n */\ntype PageHeaderActionProps = Omit<ButtonProps, \"appearance\"> & {\n /**\n * Label text for the action button\n */\n label: string;\n};\n\n/**\n * Props for page header actions configuration\n */\ntype PageHeaderActionsProps = {\n /**\n * Primary action button\n */\n primary?: PageHeaderActionProps;\n /**\n * Array of secondary action buttons\n */\n secondary?: PageHeaderActionProps[];\n};\n\n/**\n * Base props for preference actions\n */\ntype BasePreferenceProps = {\n /**\n * Accessible label for the preference action\n */\n \"aria-label\": string;\n};\n\n/**\n * Props for preference button actions\n */\ntype PreferenceButtonProps = Omit<\n ButtonProps,\n \"aria-label\" | \"icon\" | \"appearance\" | \"size\" | \"className\"\n> &\n BasePreferenceProps;\n\n/**\n * Props for preference link actions\n */\ntype PreferenceLinkProps = Omit<\n ButtonLinkProps,\n \"aria-label\" | \"icon\" | \"appearance\" | \"size\" | \"className\"\n> &\n BasePreferenceProps;\n\n/**\n * Props for the PageHeader component\n * @extends ComponentPropsWithoutRef<\"header\">\n */\nexport type PageHeaderProps = ComponentPropsWithoutRef<\"header\"> & {\n /**\n * Main title of the page\n */\n title: string;\n /**\n * Breadcrumb navigation links\n */\n breadcrumbs?: BreadcrumbsLinkProps[];\n /**\n * Status chips to display\n */\n chips?: ChipProps[];\n /**\n * Description text or content below the title\n */\n description?: ReactNode;\n /**\n * Primary and secondary action buttons\n */\n actions?: PageHeaderActionsProps;\n /**\n * Preference action button or link\n */\n preferenceAction?: PreferenceButtonProps | PreferenceLinkProps;\n /**\n * Layout configuration for the header\n */\n layout?: LayoutProps;\n};\n\n/**\n * PageHeader component for creating page headers with navigation and actions.\n *\n * Features:\n * - Page title with semantic heading\n * - Breadcrumb navigation support\n * - Status chips display\n * - Primary and secondary action buttons\n * - Preference action button/link\n * - Responsive layout with fluid grid\n * - Accessibility support with proper ARIA labels\n * - Flexible layout configuration\n * - Description content support\n *\n * @example\n * <Page.Header\n * title=\"Page Title\"\n * breadcrumbs={[\n * { href: \"/\", children: \"Home\" },\n * { children: \"Current Page\" }\n * ]}\n * chips={[{ label: \"Status\" }]}\n * actions={{\n * primary: { label: \"Save\", onClick: handleSave },\n * secondary: [{ label: \"Cancel\", onClick: handleCancel }]\n * }}\n * />\n */\nexport const PageHeader = forwardRef(\n (props: PageHeaderProps, ref: Ref<HTMLHeadElement>) => {\n const {\n title,\n breadcrumbs,\n chips,\n description,\n actions,\n preferenceAction,\n layout,\n className,\n ...rest\n } = props;\n\n const { fluid, variant } = layout || {};\n\n const preferenceItem =\n preferenceAction &&\n (\"href\" in preferenceAction ? (\n <Tooltip>\n <Tooltip.Trigger>\n <ButtonLink\n appearance=\"ghost\"\n icon={LocalSettings}\n size=\"small\"\n className={styles[\"preference-action\"]}\n {...(preferenceAction as PreferenceLinkProps)}\n />\n </Tooltip.Trigger>\n <Tooltip.Content>{preferenceAction[\"aria-label\"]}</Tooltip.Content>\n </Tooltip>\n ) : (\n <Tooltip>\n <Tooltip.Trigger>\n <Button\n appearance=\"ghost\"\n icon={LocalSettings}\n size=\"small\"\n className={styles[\"preference-action\"]}\n {...(preferenceAction as PreferenceButtonProps)}\n />\n </Tooltip.Trigger>\n <Tooltip.Content>{preferenceAction[\"aria-label\"]}</Tooltip.Content>\n </Tooltip>\n ));\n\n const actionItems = actions && (\n <Flex justifyContent=\"flex-end\" className={styles.actions}>\n {/* Only primary action */}\n {actions.primary &&\n (!actions.secondary || actions.secondary.length === 0) && (\n <Button appearance=\"primary\" {...actions.primary}>\n {actions.primary.label}\n </Button>\n )}\n\n {/* Only secondary actions (1-2 buttons) */}\n {!!actions.secondary?.length &&\n actions.secondary.length < 3 &&\n !actions.primary &&\n actions.secondary.map((action, index) => (\n <Button key={index} appearance=\"secondary\" {...action}>\n {action.label}\n </Button>\n ))}\n\n {/* 1 secondary action + primary action */}\n {actions.primary &&\n !!actions.secondary?.length &&\n actions.secondary.length === 1 && (\n <>\n <Button appearance=\"secondary\" {...actions.secondary[0]}>\n {actions.secondary[0].label}\n </Button>\n <Button appearance=\"primary\" {...actions.primary}>\n {actions.primary.label}\n </Button>\n </>\n )}\n\n {/* Multiple secondary actions (3+) with optional primary */}\n {!!actions.secondary?.length &&\n (actions.secondary.length >= 3 ||\n (actions.secondary.length >= 2 && actions.primary)) && (\n <>\n <Menu\n trigger={({ ref, ...rest }) => (\n <Tooltip>\n <Tooltip.Trigger\n ref={ref as unknown as RefObject<HTMLDivElement>}\n {...rest}\n >\n <Button\n appearance=\"secondary\"\n icon={MoreVert}\n aria-label=\"More actions\"\n />\n </Tooltip.Trigger>\n <Tooltip.Content>More actions</Tooltip.Content>\n </Tooltip>\n )}\n >\n {actions.secondary.map((action, index) => (\n <Menu.Item\n key={index}\n label={action.label}\n onClick={action.onClick}\n disabled={action.disabled}\n />\n ))}\n </Menu>\n {actions.primary && (\n <Button appearance=\"primary\" {...actions.primary}>\n {actions.primary.label}\n </Button>\n )}\n </>\n )}\n </Flex>\n );\n\n const headerClassName = cx(styles.content, styles.header, className);\n\n const headerContentClassName = cx(\n styles[\"content-inner\"],\n styles[\"content-header-inner\"],\n );\n\n return (\n <header ref={ref} className={headerClassName} {...rest}>\n <div className={headerContentClassName}>\n <Layout fluid={fluid} variant={variant} className={styles[\"layout\"]}>\n <Layout.Item>\n {breadcrumbs && (\n <Breadcrumbs>\n {breadcrumbs.map((breadcrumb, index) => (\n <Breadcrumbs.Link key={index} {...breadcrumb} />\n ))}\n </Breadcrumbs>\n )}\n </Layout.Item>\n\n <Layout.Item md={actionItems ? 6 : 12}>\n <div className={styles[\"title-wrapper\"]}>\n <Text\n variant=\"headline\"\n size=\"large\"\n el=\"h1\"\n className={styles.title}\n >\n {title}\n </Text>\n\n {preferenceItem}\n </div>\n\n {chips && (\n <Flex className={styles.chips}>\n {chips.map((chip, index) => (\n <Chip key={index} {...chip} />\n ))}\n </Flex>\n )}\n </Layout.Item>\n\n {actions && <Layout.Item md={6}>{actionItems}</Layout.Item>}\n\n {description && (\n <Layout.Item md={12} className={styles.description}>\n {description}\n </Layout.Item>\n )}\n </Layout>\n </div>\n </header>\n );\n },\n);\n\nPageHeader.displayName = \"Page.Header\";\n","import {\n ComponentPropsWithoutRef,\n forwardRef,\n Ref,\n useEffect,\n useRef,\n useState,\n UIEvent,\n} from \"react\";\nimport cx from \"classnames\";\nimport styles from \"./Page.module.scss\";\nimport { useMergeRefs } from \"../../hooks\";\n\n/**\n * Props for the PageContent component\n * @extends ComponentPropsWithoutRef<\"main\">\n */\nexport type PageContentProps = ComponentPropsWithoutRef<\"main\">;\n\n/**\n * PageContent component for the main content area of a page.\n *\n * Features:\n * - Semantic main element for page content\n * - Virtual scrolling support for long content\n * - Automatic scroll synchronization\n * - Responsive design\n * - Accessibility support with proper main landmark\n * - Scroll position management\n *\n * @example\n * <Page.Content>\n * <Text>Main page content goes here</Text>\n * <Button>Action Button</Button>\n * </Page.Content>\n */\nexport const PageContent = forwardRef(\n (props: PageContentProps, ref: Ref<HTMLAreaElement>) => {\n const { children, className, ...rest } = props;\n const classNames = cx([styles[\"content\"]], className);\n const mainRef = useRef<HTMLAreaElement>(null);\n const virtualScrollRef = useRef<HTMLDivElement>(null);\n const blocker = useRef(true);\n const [leftOffset, setLeftOffset] = useState(\n (mainRef.current?.offsetLeft ?? 0) +\n (mainRef.current?.offsetWidth ?? 0) -\n 9,\n );\n const [contentHeight, setContentHeight] = useState(\n mainRef.current?.offsetHeight,\n );\n\n // Updates scroll position\n useEffect(() => {\n if (typeof window === \"undefined\") return;\n if (!blocker.current) return;\n function updatePosition() {\n const newValue = window.scrollY;\n\n virtualScrollRef.current?.scrollTo(0, newValue ?? 0);\n }\n window.addEventListener(\"scroll\", updatePosition, { passive: true });\n\n return () => {\n window.removeEventListener(\"scroll\", updatePosition);\n };\n }, []);\n\n // Updates virtual scroll properties when main resizes\n useEffect(() => {\n if (mainRef.current) {\n const observer = new ResizeObserver(() => {\n if (!mainRef.current) return;\n setLeftOffset(\n mainRef.current.offsetLeft + mainRef.current.offsetWidth - 9,\n );\n setContentHeight(mainRef.current.offsetHeight);\n });\n\n observer.observe(mainRef.current);\n\n // Cleanup function\n return () => {\n observer.disconnect();\n };\n }\n }, []);\n\n function scrollBody(e: UIEvent<HTMLElement>) {\n if (typeof window === \"undefined\") return;\n if (blocker.current) return;\n window.scrollTo(0, (e.target as HTMLDivElement).scrollTop);\n }\n\n return (\n <main className={classNames} ref={useMergeRefs([mainRef, ref])} {...rest}>\n <div className={styles[\"content-inner\"]}>{children}</div>\n <div\n className={styles[\"virtual-scroll-container\"]}\n ref={virtualScrollRef}\n style={{\n left: leftOffset,\n }}\n onScrollCapture={scrollBody}\n onMouseEnter={() => {\n blocker.current = false;\n }}\n onMouseLeave={() => {\n blocker.current = true;\n }}\n >\n <div style={{ width: 1, height: contentHeight }} />\n </div>\n </main>\n );\n },\n);\n\nPageContent.displayName = \"PageContent\";\n","import {\n ComponentPropsWithoutRef,\n forwardRef,\n Ref,\n useContext,\n useLayoutEffect,\n useState,\n} from \"react\";\nimport { core } from \"@servicetitan/hammer-token\";\nimport cx from \"classnames\";\nimport styles from \"./Page.module.scss\";\nimport Dialog from \"../Dialog\";\nimport { PageContext, PageContextProps } from \"./PageContext\";\n\n/**\n * Props for the PagePanel component\n * @extends ComponentPropsWithoutRef<\"div\">\n */\nexport type PagePanelProps = ComponentPropsWithoutRef<\"div\"> & {\n /**\n * Whether the panel is open\n * @default true\n */\n open?: boolean;\n /**\n * Size of the panel\n * @default \"medium\"\n */\n size?: \"small\" | \"medium\" | \"large\";\n /**\n * Whether to remove default padding from the panel\n * @default false\n */\n noPadding?: boolean;\n};\n\n/**\n * PagePanel component for creating slide-out panels or dialogs.\n *\n * Features:\n * - Responsive design with dialog fallback on mobile\n * - Multiple size variants (small, medium, large)\n * - Optional padding control\n * - Persistent or controlled open state\n * - Automatic mobile dialog conversion\n * - Keyboard navigation and accessibility support\n * - Smooth animations and transitions\n *\n * @example\n * <Page.Panel open={isOpen} size=\"medium\">\n * <Text variant=\"headline\" el=\"h3\">Panel Content</Text>\n * <Button onClick={() => setIsOpen(false)}>Close</Button>\n * </Page.Panel>\n */\nexport const PagePanel = forwardRef(\n (props: PagePanelProps, ref: Ref<HTMLDivElement>) => {\n const {\n children,\n open,\n size = \"medium\",\n noPadding,\n style,\n className,\n ...rest\n } = props;\n const classNames = cx([styles[\"panel\"]], [styles[size]], className, {\n [styles[\"open\"]]: typeof open === \"undefined\" ? true : open,\n [styles[\"persistent\"]]: typeof open === \"undefined\",\n [styles[\"noPadding\"]]: noPadding,\n });\n\n const { pageWidth } = useContext<PageContextProps>(PageContext);\n\n const [isMobile, setIsMobile] = useState<boolean>(false);\n\n useLayoutEffect(() => {\n const breakpointWidth = +(\n core.primitive?.BreakpointLg?.value.replace(\"px\", \"\") ?? 0\n );\n const innerWidth = pageWidth ?? 0;\n setIsMobile(innerWidth < breakpointWidth);\n }, [pageWidth]);\n\n if (typeof open !== \"undefined\" && isMobile) {\n return (\n <Dialog open={open}>\n <Dialog.Content>\n <div\n className={classNames}\n aria-hidden={!open}\n aria-disabled={!open}\n ref={ref}\n {...rest}\n >\n {children}\n </div>\n </Dialog.Content>\n </Dialog>\n );\n }\n return (\n <div\n className={classNames}\n aria-hidden={!open}\n aria-disabled={!open}\n ref={ref}\n {...rest}\n >\n <div\n className={styles[\"panel-inner\"]}\n /* eslint-disable-next-line jsx-a11y/no-noninteractive-tabindex */\n tabIndex={typeof open !== \"undefined\" && open ? 0 : -1}\n style={style}\n >\n <div>{children}</div>\n </div>\n </div>\n );\n },\n);\nPagePanel.displayName = \"PagePanel\";\n","import { ComponentPropsWithoutRef, forwardRef, Ref } from \"react\";\nimport { useLayoutPropsUtil } from \"../../internal/hooks\";\nimport { LayoutUtilProps } from \"../../types\";\nimport cx from \"classnames\";\nimport styles from \"./Page.module.scss\";\n\n/**\n * Props for the PageFooter component\n * @extends ComponentPropsWithoutRef<\"div\">\n * @extends LayoutUtilProps\n */\nexport type PageFooterProps = ComponentPropsWithoutRef<\"div\"> & LayoutUtilProps;\n\n/**\n * PageFooter component for creating page footers with layout utilities.\n *\n * Features:\n * - Semantic footer element\n * - Layout utility props support\n * - Responsive design\n * - Accessibility support with proper footer landmark\n * - Flexible content positioning\n *\n * @example\n * <Page.Footer>\n * <Text>Footer content with layout utilities</Text>\n * </Page.Footer>\n */\nexport const PageFooter = forwardRef(\n (props: PageFooterProps, ref: Ref<HTMLDivElement>) => {\n const { layoutStyles, componentProps } = useLayoutPropsUtil(props);\n const { children, className, style, ...rest } = componentProps;\n\n const classNames = cx([styles[\"content-footer\"]], className);\n const styleCombined = {\n ...style,\n ...layoutStyles,\n };\n return (\n <footer className={classNames} ref={ref} style={styleCombined} {...rest}>\n {children}\n </footer>\n );\n },\n);\nPageFooter.displayName = \"PageFooter\";\n","import {\n ComponentPropsWithoutRef,\n Ref,\n forwardRef,\n useLayoutEffect,\n useRef,\n useState,\n} from \"react\";\n\nimport cx from \"classnames\";\nimport styles from \"./Page.module.scss\";\nimport { PageSidebar } from \"./PageSidebar\";\nimport { PageSidebarHeader } from \"./PageSidebarHeader\";\nimport { PageHeader } from \"./PageHeader\";\nimport { PageContent } from \"./PageContent\";\nimport { PagePanel } from \"./PagePanel\";\nimport { PageFooter } from \"./PageFooter\";\nimport { PageContext } from \"./PageContext\";\nimport { useMergeRefs } from \"../../hooks\";\n\n//--- Start Page Element ---//\n/**\n * Props for the Page component\n * @extends ComponentPropsWithoutRef<\"div\">\n */\nexport type PageProps = ComponentPropsWithoutRef<\"div\">;\n\nconst PageElement = forwardRef((props: PageProps, ref: Ref<HTMLDivElement>) => {\n const { children, className, ...rest } = props;\n const classNames = cx(styles[\"page\"], className);\n const elRef = useRef<HTMLDivElement>(null);\n const combinedRef = useMergeRefs([elRef, ref]);\n\n const [pageWidth, setPageWidth] = useState<number>(0);\n\n useLayoutEffect(() => {\n const element = elRef.current;\n const resizeObserver = new ResizeObserver((entries) => {\n const entry = entries[0];\n if (entry) {\n setPageWidth(entry.contentRect.width);\n }\n });\n if (element) {\n resizeObserver.observe(element);\n }\n return () => {\n if (element) {\n resizeObserver.unobserve(element);\n resizeObserver.disconnect();\n }\n };\n }, [elRef]);\n\n return (\n <PageContext.Provider value={{ pageWidth }}>\n <div className={classNames} data-anv=\"Page\" ref={combinedRef} {...rest}>\n <div className={styles[\"container\"]}>{children}</div>\n </div>\n </PageContext.Provider>\n );\n});\n\nPageElement.displayName = \"Page\";\n\n/**\n * Page component for creating full-page layouts with navigation and content areas.\n *\n * Features:\n * - Container for complete page layouts\n * - Supports sidebar navigation with collapsible state\n * - Header with breadcrumbs, chips, and action buttons\n * - Main content area with virtual scrolling\n * - Optional slide-out panels with responsive dialog fallback\n * - Footer with layout utilities\n * - Responsive design with mobile adaptations\n * - Accessibility support with proper landmarks\n * - Automatic tracking ID generation for analytics\n * - Local storage persistence for sidebar state\n *\n * @example\n * <Page>\n * <Page.Sidebar currentPageTitle=\"Navigation\">\n * <Page.SidebarHeader>\n * <Text variant=\"headline\" el=\"h2\">Navigation</Text>\n * </Page.SidebarHeader>\n * <SideNav>\n * <SideNavLink pathname=\"/\">Home</SideNavLink>\n * </SideNav>\n * </Page.Sidebar>\n * <Page.Header\n * title=\"Page Title\"\n * breadcrumbs={[{ href: \"/\", children: \"Home\" }]}\n * actions={{ primary: { label: \"Save\", onClick: handleSave } }}\n * />\n * <Page.Content>\n * <Text>Main content</Text>\n * </Page.Content>\n * <Page.Panel open={isPanelOpen} size=\"medium\">\n * <Text>Panel content</Text>\n * </Page.Panel>\n * <Page.Footer>\n * <Text>Footer content</Text>\n * </Page.Footer>\n * </Page>\n */\nexport const Page = Object.assign(PageElement, {\n /**\n * PageSidebar component for creating collapsible navigation sidebars.\n *\n * Features:\n * - Collapsible sidebar with localStorage persistence\n * - Responsive design with adaptive popover on mobile\n * - Automatic tracking ID generation for analytics\n * - Keyboard navigation and accessibility support\n * - Toggle button with tooltip\n * - Context provider for sidebar state\n * - Mobile-friendly popover navigation\n *\n * @example\n * <Page.Sidebar currentPageTitle=\"Navigation\">\n * <Page.SidebarHeader>\n * <Text variant=\"headline\" el=\"h2\">Sidebar Title</Text>\n * </Page.SidebarHeader>\n * <SideNav>\n * <SideNavLink pathname=\"/\">Home</SideNavLink>\n * </SideNav>\n * </Page.Sidebar>\n */\n Sidebar: PageSidebar,\n /**\n * PageSidebarHeader component for creating header sections within sidebars.\n *\n * Features:\n * - Container for sidebar header content\n * - Automatic visibility handling based on sidebar collapsed state\n * - Supports all standard div props\n * - Context-aware styling\n *\n * @example\n * <Page.SidebarHeader>\n * <Text variant=\"headline\" el=\"h2\" size=\"medium\">\n * Sidebar Title\n * </Text>\n * </Page.SidebarHeader>\n */\n SidebarHeader: PageSidebarHeader,\n /**\n * PageHeader component for creating page headers with navigation and actions.\n *\n * Features:\n * - Page title with semantic heading\n * - Breadcrumb navigation support\n * - Status chips display\n * - Primary and secondary action buttons\n * - Preference action button/link\n * - Responsive layout with fluid grid\n * - Accessibility support with proper ARIA labels\n * - Flexible layout configuration\n * - Description content support\n *\n * @example\n * <Page.Header\n * title=\"Page Title\"\n * breadcrumbs={[\n * { href: \"/\", children: \"Home\" },\n * { children: \"Current Page\" }\n * ]}\n * chips={[{ label: \"Status\" }]}\n * actions={{\n * primary: { label: \"Save\", onClick: handleSave },\n * secondary: [{ label: \"Cancel\", onClick: handleCancel }]\n * }}\n * />\n */\n Header: PageHeader,\n /**\n * PageContent component for the main content area of a page.\n *\n * Features:\n * - Semantic main element for page content\n * - Virtual scrolling support for long content\n * - Automatic scroll synchronization\n * - Responsive design\n * - Accessibility support with proper main landmark\n * - Scroll position management\n *\n * @example\n * <Page.Content>\n * <Text>Main page content goes here</Text>\n * <Button>Action Button</Button>\n * </Page.Content>\n */\n Content: PageContent,\n /**\n * PagePanel component for creating slide-out panels or dialogs.\n *\n * Features:\n * - Responsive design with dialog fallback on mobile\n * - Multiple size variants (small, medium, large)\n * - Optional padding control\n * - Persistent or controlled open state\n * - Automatic mobile dialog conversion\n * - Keyboard navigation and accessibility support\n * - Smooth animations and transitions\n *\n * @example\n * <Page.Panel open={isOpen} size=\"medium\">\n * <Text variant=\"headline\" el=\"h3\">Panel Content</Text>\n * <Button onClick={() => setIsOpen(false)}>Close</Button>\n * </Page.Panel>\n */\n Panel: PagePanel,\n /**\n * PageFooter component for creating page footers with layout utilities.\n *\n * Features:\n * - Semantic footer element\n * - Layout utility props support\n * - Responsive design\n * - Accessibility support with proper footer landmark\n * - Flexible content positioning\n *\n * @example\n * <Page.Footer>\n * <Text>Footer content with layout utilities</Text>\n * </Page.Footer>\n */\n Footer: PageFooter,\n});\n"],"names":["core.primitive?.BreakpointLg","props","SegmentSVG","RespClose","RespOpen","OpenSVG","CloseSVG","LocalSettings","ref","rest","MoreVert"],"mappings":"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"}
package/dist/Page.js CHANGED
@@ -1,2 +1,2 @@
1
- export { P as Page, P as default } from './Page-cKXkjMmd.js';
1
+ export { P as Page, P as default } from './Page-BMDkbDcU.js';
2
2
  //# sourceMappingURL=Page.js.map
@@ -5,7 +5,7 @@ import { B as BreakpointSm } from './primitive-BoyEHaOo.js';
5
5
  import { S as SrOnly } from './SrOnly-CTsYSuby.js';
6
6
  import { B as ButtonToggle } from './ButtonToggle-pSwg7NvT.js';
7
7
  import { S as SvgMoreHoriz } from './more_horiz-DJgdQiy0.js';
8
- import { M as Menu } from './Menu-C8we5CHP.js';
8
+ import { M as Menu } from './Menu-DEVZz9xZ.js';
9
9
  import { S as SvgKeyboardArrowDown } from './keyboard_arrow_down-C8WQ38p1.js';
10
10
  import { B as Button } from './Button-BxFXQ0-n.js';
11
11
  import { F as Flex } from './Flex-BdQMekvA.js';
@@ -426,4 +426,4 @@ const Pagination = forwardRef(
426
426
  Pagination.displayName = "Pagination";
427
427
 
428
428
  export { Pagination as P };
429
- //# sourceMappingURL=Pagination-ta8a2cJN.js.map
429
+ //# sourceMappingURL=Pagination-BJsCppgW.js.map