@hjmds/react 1.28.1 → 1.30.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1 +1 @@
1
- {"version":3,"file":"overlays.js","sourceRoot":"","sources":["../src/overlays.tsx"],"names":[],"mappings":"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","sourcesContent":["import { InitialFocusContext, useInitialFocusRegistry } from \"./internal/initial-focus.js\";\nimport { initialFocusDefaults, type InitialFocusMode } from \"@hjmds/design-contracts/screen-patterns\";\nimport type { TransitionRect } from \"@hjmds/design-contracts/content-transition\";\nimport { useOverlayOriginMotion } from \"./internal/overlay-origin-motion.js\";\nimport { layer } from \"@hjmds/design-contracts/foundations\";\nimport { resolveMenuTypeahead } from \"./menu-typeahead.js\";\nimport {\n createAlertDialogSession,\n getAlertDialogInitialFocus,\n validateAlertDialogRequest,\n type AlertDialogPhase,\n type AlertDialogOpenChangeReason,\n type AlertDialogRequest,\n type AlertDialogSession,\n} from \"@hjmds/design-contracts/components/alert-dialog\";\nimport {\n createSheetLifecycle,\n resolveNextSheetDetent,\n resolveSheetCloseButton,\n resolveSheetDismissPolicy,\n sheetDragRecipe,\n type SheetDetent,\n type SheetDismissPolicy,\n type SheetDismissReason,\n type SheetOpenChangeDetails,\n} from \"@hjmds/design-contracts/components/sheet\";\nimport {\n resolveTooltipDescriptor,\n tooltipBehaviorDefaults,\n type TooltipAlign,\n type TooltipOpenChangeDetails,\n type TooltipPlacement,\n} from \"@hjmds/design-contracts/components/tooltip\";\nimport {\n dialogRecipe,\n menuRecipe,\n sheetRecipe,\n tooltipRecipe,\n type AlertDialogTone,\n type DialogSize,\n type MenuDensity,\n type MenuItemTone,\n} from \"@hjmds/design-contracts/recipes\";\nimport type { MenuSectionDescriptor } from \"@hjmds/design-contracts/behaviors\";\nimport {\n cloneElement,\n forwardRef,\n useCallback,\n useEffect,\n useId,\n useRef,\n useState,\n useSyncExternalStore,\n type KeyboardEvent as ReactKeyboardEvent,\n type ReactNode,\n} from \"react\";\nimport { Button } from \"./actions.js\";\nimport { classNames, composeRefs, useControllableState } from \"./internal.js\";\nimport { AnchoredPortal, useAnchoredPopup } from \"./portal.js\";\nimport { useHjmDensityDefault, useTooltipCoordinator, useOptionalHjmTheme } from \"./provider.js\";\nimport {\n containsEventTarget,\n getModalLayer,\n HjmPortal,\n renderTrigger,\n useModalFocus,\n useOpenState,\n type ModalOpenState,\n type OpenState,\n type OverlayTrigger,\n} from \"./modal.js\";\nimport type { HjmCompositionStyleProp } from \"./composition-style.js\";\n\nexport type { OverlayTrigger } from \"./modal.js\";\n\nexport type DialogOpenChangeReason =\n | \"trigger\"\n | \"close-action\"\n | \"escape\"\n | \"outside\";\n\n// No `layoutStyle`: rendered in a modal portal centred by the recipe; there is no in-flow root to place.\nexport type DialogProps = ModalOpenState<Readonly<{ reason: DialogOpenChangeReason }>> &\n Readonly<{\n title: ReactNode;\n description?: ReactNode;\n children?: ReactNode;\n footer?: ReactNode;\n /** Optional measured trigger bounds in viewport coordinates; keeps canonical modal behavior. */\n motionOrigin?: TransitionRect;\n size?: DialogSize;\n dismissible?: boolean;\n busy?: boolean;\n /** Localized accessible name for the close action. */\n closeLabel: string;\n initialFocusRef?: React.RefObject<HTMLElement | null>;\n /**\n * Text field focused when it opens and no `initialFocusRef` is given: by default only a lone text entry\n * (`single-input`); `first-input` prefers the field marked `initialFocusTarget`; `none` keeps the first focusable\n * element (2026-10-18, screen-patterns rules shared with Native).\n */\n initialFocus?: InitialFocusMode;\n returnFocusRef?: React.RefObject<HTMLElement | null>;\n /**\n * Fires once per visible cycle, after the portal is gone and focus has been\n * restored — the signal a product needs before opening the next overlay.\n * Sheet already owns this split; Dialog kept only the request side, which is\n * why products reached for a 0ms timer to guess when cleanup had finished.\n */\n onDismissComplete?: (detail: Readonly<{ reason: Exclude<DialogOpenChangeReason, \"trigger\"> | \"programmatic\" }>) => void;\n /** Higher-priority modals remain interactive above later lower-priority modals. */\n modalPriority?: number;\n portalContainer?: HTMLElement;\n className?: string;\n }>;\n\nexport const Dialog = forwardRef<HTMLDivElement, DialogProps>(function Dialog(\n {\n trigger,\n title,\n description,\n children,\n footer,\n size = dialogRecipe.defaults.size,\n motionOrigin,\n dismissible = dialogRecipe.defaults.dismissible,\n busy = false,\n closeLabel,\n initialFocusRef,\n initialFocus = initialFocusDefaults.overlay,\n returnFocusRef,\n onDismissComplete,\n modalPriority = 0,\n portalContainer,\n open: openProp,\n defaultOpen,\n onOpenChange,\n className,\n },\n forwardedRef,\n) {\n const modalLayer = getModalLayer(modalPriority);\n const [open, changeOpen] = useOpenState({\n ...(openProp === undefined ? {} : { open: openProp }),\n ...(defaultOpen === undefined ? {} : { defaultOpen }),\n ...(onOpenChange === undefined ? {} : { onOpenChange }),\n });\n const theme = useOptionalHjmTheme();\n const { visible, setNode: setMotionNode } = useOverlayOriginMotion(open, motionOrigin, theme?.environment.reducedMotion);\n const triggerRef = useRef<HTMLElement>(null);\n const contentRef = useRef<HTMLDivElement>(null);\n const mergedContentRef = composeRefs(contentRef, forwardedRef, setMotionNode);\n const id = useId().replaceAll(\":\", \"\");\n const contentId = `${id}-dialog`;\n const titleId = `${id}-title`;\n const descriptionId = `${id}-description`;\n type DialogSettleReason = Exclude<DialogOpenChangeReason, \"trigger\"> | \"programmatic\";\n const dismissReasonRef = useRef<DialogSettleReason | undefined>(undefined);\n const wasOpenRef = useRef(visible);\n const completeRef = useRef(onDismissComplete);\n completeRef.current = onDismissComplete;\n const openRef = useRef(visible);\n openRef.current = visible;\n const requestClose = (reason: Exclude<DialogOpenChangeReason, \"trigger\">) => {\n if (!dismissible || busy) return;\n dismissReasonRef.current = reason;\n changeOpen(false, { reason });\n };\n const settle = () => {\n const reason = dismissReasonRef.current ?? \"programmatic\";\n dismissReasonRef.current = undefined;\n // After the portal is unmounted and `useModalFocus` has restored focus in\n // its own microtask, so the next overlay can open without a 0ms guess.\n queueMicrotask(() => queueMicrotask(() => completeRef.current?.({ reason })));\n };\n useEffect(() => {\n if (visible) { wasOpenRef.current = true; if (open) dismissReasonRef.current = undefined; return; }\n if (!wasOpenRef.current) return;\n wasOpenRef.current = false;\n settle();\n }, [open, visible]);\n const epochRef = useRef(0);\n useEffect(() => {\n const epoch = epochRef.current + 1;\n epochRef.current = epoch;\n return () => {\n queueMicrotask(() => {\n // StrictMode re-runs setup right after its probe cleanup; only a real\n // unmount has no later epoch. An open Dialog torn down that way still\n // settles exactly once.\n if (epochRef.current !== epoch || !openRef.current || !wasOpenRef.current) return;\n wasOpenRef.current = false;\n settle();\n });\n };\n }, []);\n const focusRegistry = useInitialFocusRegistry();\n useModalFocus({\n active: visible,\n priority: modalPriority,\n contentRef,\n ...(initialFocusRef === undefined ? {} : { initialFocusRef }),\n resolveInitialFocus: () => focusRegistry.resolve(initialFocus),\n ...(returnFocusRef === undefined ? {} : { returnFocusRef }),\n ...(trigger === undefined ? {} : { fallbackReturnRef: triggerRef }),\n onEscape: () => requestClose(\"escape\"),\n });\n\n return (\n <>\n {trigger === undefined ? null : renderTrigger(\n trigger,\n triggerRef,\n open,\n contentId,\n \"dialog\",\n () => changeOpen(true, { reason: \"trigger\" }),\n )}\n {visible ? (\n <HjmPortal {...(portalContainer === undefined ? {} : { container: portalContainer })}>\n <div\n className=\"hjm-overlay\"\n data-kind=\"dialog\"\n data-modal-priority={modalPriority}\n data-state=\"open\"\n style={{ zIndex: modalLayer }}\n onMouseDown={(event) => {\n if (event.target === event.currentTarget) {\n // Diairy QA W16: Chrome's default backdrop blur can run after focus\n // cleanup and undo its return target. Cancel that default, not the modal's dismissal.\n event.preventDefault();\n requestClose(\"outside\");\n }\n }}\n >\n <div\n ref={mergedContentRef}\n id={contentId}\n role=\"dialog\"\n aria-modal=\"true\"\n aria-labelledby={titleId}\n aria-describedby={description ? descriptionId : undefined}\n aria-busy={busy || undefined}\n inert={!open}\n aria-hidden={!open || undefined}\n tabIndex={-1}\n className={classNames(\"hjm-dialog\", className)}\n data-hjm-modal-content=\"\"\n data-size={size}\n data-state={busy ? \"busy\" : \"idle\"}\n >\n <header className=\"hjm-dialog__header\">\n <h2 id={titleId} className=\"hjm-dialog__title\">{title}</h2>\n {dismissible ? (\n <button\n type=\"button\"\n className=\"hjm-dialog__close\"\n aria-label={closeLabel}\n disabled={busy}\n onClick={() => requestClose(\"close-action\")}\n >\n ×\n </button>\n ) : null}\n </header>\n {description ? <p id={descriptionId} className=\"hjm-dialog__description\">{description}</p> : null}\n {children ? <div className=\"hjm-dialog__body\"><InitialFocusContext.Provider value={focusRegistry}>{children}</InitialFocusContext.Provider></div> : null}\n {footer ? <footer className=\"hjm-dialog__footer\">{footer}</footer> : null}\n </div>\n </div>\n </HjmPortal>\n ) : null}\n </>\n );\n});\n\n// No `layoutStyle`: rendered in a modal portal centred by the recipe; there is no in-flow root to place.\nexport type AlertDialogProps = ModalOpenState<\n Readonly<{ reason: AlertDialogOpenChangeReason }>\n> &\n Readonly<{\n request: AlertDialogRequest;\n icon?: ReactNode;\n size?: DialogSize;\n returnFocusRef?: React.RefObject<HTMLElement | null>;\n /** Higher-priority modals remain interactive above later lower-priority modals. */\n modalPriority?: number;\n portalContainer?: HTMLElement;\n className?: string;\n }>;\n\nexport const AlertDialog = forwardRef<HTMLDivElement, AlertDialogProps>(\n function AlertDialog(\n {\n trigger,\n request,\n icon,\n size = dialogRecipe.defaults.size,\n returnFocusRef,\n modalPriority = 0,\n portalContainer,\n open: openProp,\n defaultOpen,\n onOpenChange,\n className,\n },\n forwardedRef,\n ) {\n const modalLayer = getModalLayer(modalPriority);\n validateAlertDialogRequest(request);\n const [open, changeOpen] = useOpenState({\n ...(openProp === undefined ? {} : { open: openProp }),\n ...(defaultOpen === undefined ? {} : { defaultOpen }),\n ...(onOpenChange === undefined ? {} : { onOpenChange }),\n });\n const sessionRef = useRef<AlertDialogSession | null>(null);\n const [sessionGeneration, setSessionGeneration] = useState(0);\n if (open && sessionRef.current === null) {\n sessionRef.current = createAlertDialogSession(request);\n }\n const idleSnapshot = useRef<AlertDialogPhase>({ status: \"idle\" });\n const phase = useSyncExternalStore(\n (listener) => sessionRef.current?.subscribe(listener) ?? (() => undefined),\n () => sessionRef.current?.getSnapshot() ?? idleSnapshot.current,\n () => idleSnapshot.current,\n );\n const busy = phase.status === \"busy\";\n const closing = phase.status === \"closing\" || phase.status === \"closed\";\n const error = phase.status === \"error\" ? phase.message : undefined;\n const triggerRef = useRef<HTMLElement>(null);\n const contentRef = useRef<HTMLDivElement>(null);\n const cancelRef = useRef<HTMLButtonElement>(null);\n const confirmRef = useRef<HTMLButtonElement>(null);\n const initialFocusRef = getAlertDialogInitialFocus(request.mode) === \"cancel\"\n ? cancelRef\n : confirmRef;\n const id = useId().replaceAll(\":\", \"\");\n const contentId = `${id}-alert-dialog`;\n const titleId = `${id}-title`;\n const descriptionId = `${id}-description`;\n const errorId = `${id}-error`;\n\n const startSession = (): AlertDialogSession => {\n sessionRef.current?.interrupt();\n const session = createAlertDialogSession(request);\n sessionRef.current = session;\n setSessionGeneration((current) => current + 1);\n return session;\n };\n const cancel = (reason: \"cancel-action\" | \"escape\") => {\n const session = sessionRef.current;\n if (!session?.cancel(reason)) return;\n changeOpen(false, { reason });\n };\n useModalFocus({\n active: open,\n priority: modalPriority,\n contentRef,\n initialFocusRef,\n ...(returnFocusRef === undefined ? {} : { returnFocusRef }),\n ...(trigger === undefined ? {} : { fallbackReturnRef: triggerRef }),\n onEscape: () => cancel(\"escape\"),\n });\n\n const confirm = async () => {\n const session = sessionRef.current;\n if (!session) return;\n if (await session.confirm()) changeOpen(false, { reason: \"confirm\" });\n };\n useEffect(() => {\n if (open) return;\n const session = sessionRef.current;\n if (!session) return;\n const snapshot = session.getSnapshot();\n if (snapshot.status === \"idle\" || snapshot.status === \"error\") {\n session.cancel(\"programmatic\");\n }\n if (session.getSnapshot().status === \"closing\") session.completeExit();\n else if (session.getSnapshot().status !== \"closed\") session.interrupt();\n sessionRef.current = null;\n }, [open, sessionGeneration]);\n useEffect(\n () => () => {\n sessionRef.current?.interrupt();\n },\n [],\n );\n const tone: AlertDialogTone = request.tone ?? \"attention\";\n\n return (\n <>\n {trigger === undefined ? null : renderTrigger(\n trigger,\n triggerRef,\n open,\n contentId,\n \"dialog\",\n () => {\n startSession();\n changeOpen(true, { reason: \"trigger\" });\n },\n )}\n {open ? (\n <HjmPortal {...(portalContainer === undefined ? {} : { container: portalContainer })}>\n <div\n className=\"hjm-overlay\"\n data-kind=\"alert-dialog\"\n data-modal-priority={modalPriority}\n data-state=\"open\"\n style={{ zIndex: modalLayer }}\n >\n <div\n ref={composeRefs(contentRef, forwardedRef)}\n id={contentId}\n role=\"alertdialog\"\n aria-modal=\"true\"\n aria-labelledby={titleId}\n aria-describedby={`${descriptionId}${error ? ` ${errorId}` : \"\"}`}\n aria-busy={busy || undefined}\n tabIndex={-1}\n className={classNames(\"hjm-alert-dialog\", className)}\n data-hjm-modal-content=\"\"\n data-size={size}\n data-tone={tone}\n data-state={busy ? \"busy\" : error ? \"error\" : \"idle\"}\n >\n {icon ? <div className=\"hjm-alert-dialog__icon\" aria-hidden=\"true\">{icon}</div> : null}\n <h2 id={titleId} className=\"hjm-alert-dialog__title\">{request.title}</h2>\n <p id={descriptionId} className=\"hjm-alert-dialog__description\">{request.description}</p>\n {error ? <p id={errorId} className=\"hjm-alert-dialog__error\" role=\"alert\">{error}</p> : null}\n <div className=\"hjm-alert-dialog__actions\">\n {request.mode === \"confirm\" ? (\n <Button\n ref={cancelRef}\n tone=\"secondary\"\n disabled={busy || closing}\n onClick={() => cancel(\"cancel-action\")}\n >\n {request.cancelLabel}\n </Button>\n ) : null}\n <Button\n ref={confirmRef}\n tone={tone === \"danger\" ? \"danger\" : \"primary\"}\n loading={busy}\n disabled={closing}\n onClick={() => void confirm()}\n >\n {request.confirmLabel}\n </Button>\n </div>\n </div>\n </div>\n </HjmPortal>\n ) : null}\n </>\n );\n },\n);\n\nexport type SheetPlacement = \"bottom\" | \"start\" | \"end\";\n\nexport type SheetSize = keyof typeof sheetRecipe.sizes;\n\n// No `layoutStyle`: an edge-attached modal portal; its geometry is the recipe's.\nexport type SheetProps = ModalOpenState<SheetOpenChangeDetails> &\n Readonly<{\n title: ReactNode;\n description?: ReactNode;\n children?: ReactNode;\n footer?: ReactNode;\n placement?: SheetPlacement;\n /**\n * Height the product opens the sheet at (`sheetRecipe.sizes`); `auto` keeps\n * the content height capped by the recipe. Native has had this since 1.3;\n * Web only had user-adjustable `detents` until 1.5.0. `activeDetent` wins\n * when both are given.\n */\n size?: SheetSize;\n /**\n * Heights the user may step between while the sheet is open, smallest\n * first. `sheetRecipe.sizes` is what the *product* opens at; this is what\n * the *user* can change afterwards.\n */\n detents?: readonly SheetDetent[];\n activeDetent?: SheetDetent;\n onDetentChange?: (detent: SheetDetent) => void;\n /** Localized names for the handle in each direction; required with detents. */\n detentLabels?: Readonly<{ expand: string; collapse: string }>;\n busy?: boolean;\n dismissPolicy?: Partial<SheetDismissPolicy>;\n /** Localized accessible name for the close action. */\n closeLabel: string;\n initialFocusRef?: React.RefObject<HTMLElement | null>;\n /**\n * Text field focused when it opens and no `initialFocusRef` is given: by default only a lone text entry\n * (`single-input`); `first-input` prefers the field marked `initialFocusTarget`; `none` keeps the first focusable\n * element (2026-10-18, screen-patterns rules shared with Native).\n */\n initialFocus?: InitialFocusMode;\n returnFocusRef?: React.RefObject<HTMLElement | null>;\n /** Fires once per visible cycle, after the Sheet portal has been removed. */\n onDismissComplete?: (detail: Readonly<{ reason: SheetDismissReason }>) => void;\n /** Higher-priority modals remain interactive above later lower-priority modals. */\n modalPriority?: number;\n portalContainer?: HTMLElement;\n className?: string;\n /** Visible × in the header. Off by default for bottom sheets, which close by dragging (2026-10-16). */\n showClose?: boolean;\n }>;\n\nexport const Sheet = forwardRef<HTMLDivElement, SheetProps>(function Sheet(\n {\n trigger,\n title,\n description,\n children,\n footer,\n placement = sheetRecipe.defaults.placement,\n size = sheetRecipe.defaults.size,\n detents,\n activeDetent,\n onDetentChange,\n detentLabels,\n busy = false,\n dismissPolicy,\n closeLabel,\n initialFocusRef,\n initialFocus = initialFocusDefaults.overlay,\n returnFocusRef,\n onDismissComplete,\n modalPriority = 0,\n portalContainer,\n open: openProp,\n defaultOpen,\n onOpenChange,\n className,\n showClose,\n },\n forwardedRef,\n) {\n const modalLayer = getModalLayer(modalPriority);\n const [open, changeOpen] = useOpenState({\n ...(openProp === undefined ? {} : { open: openProp }),\n ...(defaultOpen === undefined ? {} : { defaultOpen }),\n ...(onOpenChange === undefined ? {} : { onOpenChange }),\n });\n const policy: SheetDismissPolicy = resolveSheetDismissPolicy(placement, dismissPolicy);\n const closeVisible = resolveSheetCloseButton(placement, showClose);\n // Drag-to-dismiss (2026-10-16 user decision): handle and header follow the pointer downward and a\n // release past the distance or velocity threshold closes with reason \"swipe\".\n const showHandle = placement === \"bottom\" && policy.dismissible && policy.swipeDismiss;\n const closeBlocked = busy && !policy.dismissWhileBusy;\n const canSwipe = showHandle && !closeBlocked;\n const dragRef = useRef<{ pointerId: number; y: number; t: number; moved: boolean } | null>(null);\n const [dragY, setDragY] = useState(0);\n const lifecycleRef = useRef(createSheetLifecycle(open));\n const previousOpenRef = useRef(open);\n const currentOpenRef = useRef(open);\n currentOpenRef.current = open;\n const dismissReasonRef = useRef<SheetDismissReason | undefined>(undefined);\n const dismissCompleteRef = useRef(onDismissComplete);\n dismissCompleteRef.current = onDismissComplete;\n const settleDismissRef = useRef<(reason: SheetDismissReason) => void>(() => undefined);\n settleDismissRef.current = (reason) => {\n const cycle = lifecycleRef.current.beginDismiss();\n if (cycle !== null && lifecycleRef.current.completeDismiss(cycle)) {\n dismissReasonRef.current = undefined;\n previousOpenRef.current = false;\n dismissCompleteRef.current?.({ reason });\n }\n };\n const triggerRef = useRef<HTMLElement>(null);\n const contentRef = useRef<HTMLDivElement>(null);\n const id = useId().replaceAll(\":\", \"\");\n const contentId = `${id}-sheet`;\n const titleId = `${id}-title`;\n const descriptionId = `${id}-description`;\n const requestClose = (reason: SheetDismissReason) => {\n if (lifecycleRef.current.requestClose(reason, busy, policy)) {\n dismissReasonRef.current = reason;\n changeOpen(false, { reason });\n if (openProp !== undefined) queueMicrotask(() => {\n // Controlled owners may reject a request. Deduplicate this interaction,\n // then allow a later attempt instead of permanently latching the sheet.\n if (currentOpenRef.current) {\n lifecycleRef.current = createSheetLifecycle(true);\n }\n });\n }\n };\n useEffect(() => {\n if (open) {\n lifecycleRef.current.open();\n previousOpenRef.current = true;\n dismissReasonRef.current = undefined;\n return;\n }\n if (!previousOpenRef.current) return;\n settleDismissRef.current(dismissReasonRef.current ?? \"programmatic\");\n }, [open]);\n const mountEpochRef = useRef(0);\n useEffect(() => {\n const epoch = mountEpochRef.current + 1;\n mountEpochRef.current = epoch;\n return () => {\n queueMicrotask(() => {\n // React StrictMode immediately runs the setup again after its probe\n // cleanup. A real unmount has no later epoch and is settled here,\n // after the portal and focus-lock cleanups have completed.\n if (mountEpochRef.current !== epoch || !currentOpenRef.current) return;\n settleDismissRef.current(dismissReasonRef.current ?? \"programmatic\");\n });\n };\n }, []);\n const focusRegistry = useInitialFocusRegistry();\n useModalFocus({\n active: open,\n priority: modalPriority,\n contentRef,\n ...(initialFocusRef === undefined ? {} : { initialFocusRef }),\n resolveInitialFocus: () => focusRegistry.resolve(initialFocus),\n ...(returnFocusRef === undefined ? {} : { returnFocusRef }),\n ...(trigger === undefined ? {} : { fallbackReturnRef: triggerRef }),\n onEscape: () => requestClose(\"escape\"),\n });\n\n return (\n <>\n {trigger === undefined ? null : renderTrigger(\n trigger,\n triggerRef,\n open,\n contentId,\n \"dialog\",\n () => changeOpen(true, { reason: \"trigger\" }),\n )}\n {open ? (\n <HjmPortal {...(portalContainer === undefined ? {} : { container: portalContainer })}>\n <div\n className=\"hjm-overlay hjm-sheet-positioner\"\n data-kind=\"sheet\"\n data-modal-priority={modalPriority}\n data-placement={placement}\n // Mirrors the content's detent so a `full` sheet can drop the positioner's top gutter (sheetRecipe.sizes.full).\n data-detent={activeDetent ?? (size === \"auto\" ? undefined : size)}\n data-state=\"open\"\n style={{ zIndex: modalLayer }}\n onMouseDown={(event) => {\n if (event.target === event.currentTarget) {\n // Match Dialog: a real backdrop click must not undo return focus or\n // move focus to body when busy/outside-dismiss policy keeps the sheet open.\n event.preventDefault();\n requestClose(\"outside\");\n }\n }}\n >\n <div\n ref={composeRefs(contentRef, forwardedRef)}\n id={contentId}\n role=\"dialog\"\n aria-modal=\"true\"\n aria-labelledby={titleId}\n aria-describedby={description ? descriptionId : undefined}\n aria-busy={busy || undefined}\n tabIndex={-1}\n className={classNames(\"hjm-sheet\", className)}\n data-hjm-modal-content=\"\"\n data-placement={placement}\n data-detent={activeDetent ?? (size === \"auto\" ? undefined : size)}\n data-has-footer={footer ? true : undefined}\n data-state={busy ? \"busy\" : \"idle\"}\n data-dragging={dragY > 0 || undefined}\n style={dragY > 0 ? { transform: `translateY(${dragY}px)` } : undefined}\n >\n {/* 2026-10-17 user decision: sheets show no visible title line. The title stays the dialog's\n accessible name (aria-labelledby) and a screen-reader heading. */}\n <h2 id={titleId} className=\"hjm-visually-hidden\">{title}</h2>\n {/*\n The handle is a real control, not a drag-only affordance: a\n keyboard or switch user must be able to change the height too.\n Gesture physics stay with the product and report the same way.\n */}\n <div className=\"hjm-sheet__drag\" data-swipe={canSwipe || undefined}\n onPointerDown={(event) => {\n if (!canSwipe || event.button !== 0 || (event.target as HTMLElement).closest(\"a,input,textarea,select,.hjm-dialog__close\")) return;\n dragRef.current = { pointerId: event.pointerId, y: event.clientY, t: event.timeStamp, moved: false };\n }}\n onPointerMove={(event) => {\n const drag = dragRef.current;\n if (!drag || drag.pointerId !== event.pointerId) return;\n const dy = event.clientY - drag.y;\n if (!drag.moved && dy < sheetDragRecipe.activationDistance) return;\n if (!drag.moved) { drag.moved = true; event.currentTarget.setPointerCapture(event.pointerId); }\n setDragY(Math.max(0, dy));\n }}\n onPointerUp={(event) => {\n const drag = dragRef.current;\n dragRef.current = null;\n if (!drag || drag.pointerId !== event.pointerId || !drag.moved) return;\n const dy = event.clientY - drag.y;\n const velocity = dy / Math.max(1, event.timeStamp - drag.t);\n const height = contentRef.current?.getBoundingClientRect().height ?? 0;\n setDragY(0);\n if (dy > height * sheetDragRecipe.dismissDistanceRatio || velocity > sheetDragRecipe.dismissVelocity) requestClose(\"swipe\");\n }}\n onPointerCancel={() => { dragRef.current = null; setDragY(0); }}\n >\n {detents && detentLabels && activeDetent ? (\n <div className=\"hjm-sheet__handle-row\">\n <button\n type=\"button\"\n className=\"hjm-sheet__handle\"\n aria-label={\n resolveNextSheetDetent(detents, activeDetent, \"expand\") === null\n ? detentLabels.collapse\n : detentLabels.expand\n }\n onClick={() => {\n const expand = resolveNextSheetDetent(detents, activeDetent, \"expand\");\n const next = expand ?? resolveNextSheetDetent(detents, activeDetent, \"collapse\");\n if (next !== null) onDetentChange?.(next);\n }}\n >\n <span aria-hidden=\"true\" className=\"hjm-sheet__handle-bar\" />\n </button>\n </div>\n ) : showHandle ? (\n // Without detents the handle is the visible close control for keyboard and switch users.\n <div className=\"hjm-sheet__handle-row\">\n <button type=\"button\" className=\"hjm-sheet__handle\" aria-label={closeLabel} disabled={closeBlocked} onClick={() => requestClose(\"close-action\")}>\n <span aria-hidden=\"true\" className=\"hjm-sheet__handle-bar\" />\n </button>\n </div>\n ) : null}\n {description || (policy.dismissible && closeVisible) ? <header className=\"hjm-sheet__header\">\n {description ? <div><p id={descriptionId} className=\"hjm-sheet__description\">{description}</p></div> : null}\n {policy.dismissible && closeVisible ? (\n <button\n type=\"button\"\n className=\"hjm-dialog__close\"\n aria-label={closeLabel}\n disabled={busy && !policy.dismissWhileBusy}\n onClick={() => requestClose(\"close-action\")}\n >\n ×\n </button>\n ) : null}\n </header> : null}\n </div>\n {children ? <div className=\"hjm-sheet__body\"><InitialFocusContext.Provider value={focusRegistry}>{children}</InitialFocusContext.Provider></div> : null}\n {footer ? <footer className=\"hjm-sheet__footer\">{footer}</footer> : null}\n </div>\n </div>\n </HjmPortal>\n ) : null}\n </>\n );\n});\n\nexport type TooltipProps = OpenState<TooltipOpenChangeDetails> &\n Readonly<{\n trigger: OverlayTrigger;\n content: string;\n placement?: TooltipPlacement;\n align?: TooltipAlign;\n pointerOpenDelayMs?: number;\n focusOpenDelayMs?: number;\n portalContainer?: HTMLElement;\n className?: string;\n /** Canonical layout-only placement on the root element. Controlled visual keys are excluded. */\n layoutStyle?: HjmCompositionStyleProp;\n }>;\n\nexport const Tooltip = forwardRef<HTMLSpanElement, TooltipProps>(function Tooltip(\n {\n trigger,\n content,\n placement,\n align,\n pointerOpenDelayMs = tooltipBehaviorDefaults.pointerOpenDelayMs,\n focusOpenDelayMs = tooltipBehaviorDefaults.focusOpenDelayMs,\n portalContainer,\n open: openProp,\n defaultOpen,\n onOpenChange,\n className,\n layoutStyle,\n },\n ref,\n) {\n const descriptor = resolveTooltipDescriptor({\n content,\n ...(placement === undefined ? {} : { placement }),\n ...(align === undefined ? {} : { align }),\n });\n const [open, changeOpen] = useOpenState({\n ...(openProp === undefined ? {} : { open: openProp }),\n ...(defaultOpen === undefined ? {} : { defaultOpen }),\n ...(onOpenChange === undefined ? {} : { onOpenChange }),\n });\n const timerRef = useRef<ReturnType<typeof setTimeout> | undefined>(undefined);\n const suppressedRef = useRef(false);\n const touchTapRef = useRef<{ wasVisible: boolean } | null>(null);\n const triggerRef = useRef<HTMLElement>(null);\n const [tooltipNode, setTooltipNode] = useState<HTMLSpanElement | null>(null);\n const id = `${useId().replaceAll(\":\", \"\")}-tooltip`;\n const coordinator = useTooltipCoordinator();\n const activeTooltipId = coordinator?.activeId ?? null;\n const activateTooltip = coordinator?.activate;\n const deactivateTooltip = coordinator?.deactivate;\n const shouldSkipTooltipDelay = coordinator?.shouldSkipDelay;\n const visible = open &&\n (coordinator === null ||\n activeTooltipId === null ||\n activeTooltipId === id);\n const clearTimer = () => {\n if (timerRef.current !== undefined) clearTimeout(timerRef.current);\n timerRef.current = undefined;\n };\n useEffect(() => clearTimer, []);\n const schedule = (\n nextOpen: boolean,\n delay: number,\n detail: TooltipOpenChangeDetails,\n ) => {\n clearTimer();\n if (nextOpen && suppressedRef.current) return;\n if (delay <= 0) {\n if (nextOpen) activateTooltip?.(id);\n changeOpen(nextOpen, detail);\n return;\n }\n timerRef.current = setTimeout(() => {\n if (nextOpen) activateTooltip?.(id);\n changeOpen(nextOpen, detail);\n }, delay);\n };\n useEffect(() => {\n if (open) activateTooltip?.(id);\n else deactivateTooltip?.(id);\n }, [activateTooltip, deactivateTooltip, id, open]);\n useEffect(() => {\n if (\n open &&\n activeTooltipId !== null &&\n activeTooltipId !== id\n ) {\n clearTimer();\n changeOpen(false, { reason: \"another-tooltip\" });\n }\n }, [activeTooltipId, changeOpen, id, open]);\n useEffect(\n () => () => deactivateTooltip?.(id),\n [deactivateTooltip, id],\n );\n const triggerProps = trigger.props;\n const describedBy = visible\n ? [triggerProps[\"aria-describedby\"], id].filter(Boolean).join(\" \")\n : triggerProps[\"aria-describedby\"];\n const renderedTrigger = cloneElement(trigger, {\n ref: composeRefs(triggerProps.ref, triggerRef),\n ...(describedBy ? { \"aria-describedby\": describedBy } : {}),\n onPointerDown: (event) => {\n triggerProps.onPointerDown?.(event);\n touchTapRef.current = event.pointerType === \"touch\" ? { wasVisible: visible } : null;\n },\n onPointerEnter: (event) => {\n triggerProps.onPointerEnter?.(event);\n if (event.pointerType === \"touch\") return;\n schedule(\n true,\n shouldSkipTooltipDelay?.() ? 0 : pointerOpenDelayMs,\n { reason: \"pointer\" },\n );\n },\n onPointerLeave: (event) => {\n triggerProps.onPointerLeave?.(event);\n if (event.pointerType === \"touch\") return;\n suppressedRef.current = false;\n if (containsEventTarget(tooltipNode, event.relatedTarget)) {\n clearTimer();\n return;\n }\n schedule(false, 0, { reason: \"pointer-leave\" });\n },\n onFocus: (event) => {\n triggerProps.onFocus?.(event);\n schedule(true, focusOpenDelayMs, { reason: \"focus\" });\n },\n onBlur: (event) => {\n triggerProps.onBlur?.(event);\n suppressedRef.current = false;\n schedule(false, 0, { reason: \"blur\" });\n },\n onKeyDown: (event) => {\n triggerProps.onKeyDown?.(event);\n if (event.key === \"Escape\" && visible) {\n event.preventDefault();\n clearTimer();\n suppressedRef.current = true;\n changeOpen(false, { reason: \"escape\" });\n }\n },\n onClick: (event) => {\n triggerProps.onClick?.(event);\n const touchTap = touchTapRef.current;\n touchTapRef.current = null;\n if (event.defaultPrevented) return;\n // Touch has no hover, so a tap is the only way to show the hint. The tap's\n // own focus already opened it; closing here (the mouse/keyboard path) made it\n // flash for 1ms (2026-09-30 audit WR-0930-1). A second tap closes instead.\n if (touchTap !== null && !touchTap.wasVisible) {\n if (!visible) schedule(true, 0, { reason: \"pointer\" });\n return;\n }\n if (visible) changeOpen(false, { reason: \"trigger-activation\" });\n },\n });\n useEffect(() => {\n if (!visible) return;\n // Tap-opened tooltips have no pointer-leave; an outside press dismisses them.\n // Mobile Safari does not focus buttons on tap, so blur alone is not enough.\n const onOutsidePress = (event: PointerEvent) => {\n if (\n containsEventTarget(triggerRef.current, event.target) ||\n containsEventTarget(tooltipNode, event.target)\n ) return;\n clearTimer();\n changeOpen(false, { reason: \"blur\" });\n };\n document.addEventListener(\"pointerdown\", onOutsidePress, true);\n return () => document.removeEventListener(\"pointerdown\", onOutsidePress, true);\n }, [changeOpen, tooltipNode, visible]);\n const popupPosition = useAnchoredPopup(triggerRef, tooltipNode, {\n align: descriptor.align,\n placement: descriptor.placement,\n // tooltipRecipe.positioning (2026-10-06 follow-up): 4 from the trigger and 12 from the edge;\n // the helper defaults 8/16 had made Web tooltips float further away than Native.\n gap: tooltipRecipe.positioning.sideOffset,\n viewportPadding: tooltipRecipe.positioning.collisionPadding,\n zIndex: layer.tooltip,\n });\n const setTooltipRef = useCallback((node: HTMLSpanElement | null) => {\n setTooltipNode(node);\n }, []);\n\n return (\n <span\n ref={ref}\n style={layoutStyle}\n className={classNames(\"hjm-tooltip\", className)}\n data-placement={descriptor.placement}\n data-align={descriptor.align}\n data-state={visible ? \"open\" : \"closed\"}\n onPointerEnter={(event) => {\n if (event.pointerType !== \"touch\") clearTimer();\n }}\n onPointerLeave={(event) => {\n if (event.pointerType === \"touch\") return;\n suppressedRef.current = false;\n if (containsEventTarget(tooltipNode, event.relatedTarget)) {\n clearTimer();\n return;\n }\n schedule(false, 0, { reason: \"pointer-leave\" });\n }}\n >\n {renderedTrigger}\n {visible ? (\n <AnchoredPortal\n anchorRef={triggerRef}\n ssrFallback=\"inline\"\n {...(portalContainer === undefined ? {} : { container: portalContainer })}\n >\n <span\n ref={setTooltipRef}\n id={id}\n role=\"tooltip\"\n className=\"hjm-tooltip__content\"\n data-placement={popupPosition.placement}\n data-align={popupPosition.align}\n // The positioner's inline maxWidth (space left in the viewport) would override the stylesheet cap,\n // so tooltipRecipe.content.maxWidth (280) is applied here too (2026-10-06; Web had grown to 320).\n style={{\n ...popupPosition.style,\n maxWidth: typeof popupPosition.style.maxWidth === \"number\"\n ? Math.min(popupPosition.style.maxWidth, tooltipRecipe.content.maxWidth)\n : tooltipRecipe.content.maxWidth,\n }}\n onPointerEnter={(event) => {\n if (event.pointerType !== \"touch\") clearTimer();\n }}\n onPointerLeave={(event) => {\n if (event.pointerType === \"touch\") return;\n suppressedRef.current = false;\n if (containsEventTarget(triggerRef.current, event.relatedTarget)) {\n clearTimer();\n return;\n }\n schedule(false, 0, { reason: \"pointer-leave\" });\n }}\n >\n {descriptor.content}\n </span>\n </AnchoredPortal>\n ) : null}\n </span>\n );\n});\n\nexport type MenuItem = Readonly<{\n id: string;\n label: ReactNode;\n /** Required for typeahead when label is not plain text. */\n textValue?: string;\n description?: ReactNode;\n leading?: ReactNode;\n trailing?: ReactNode;\n tone?: MenuItemTone;\n disabled?: boolean;\n}>;\n\nexport type MenuSection = Omit<MenuSectionDescriptor<string, string>, \"items\"> &\n Readonly<{ items: readonly MenuItem[] }>;\n\nexport type MenuOpenChangeReason =\n | \"trigger\"\n | \"selection\"\n | \"escape\"\n | \"outside\"\n | \"tab\";\n\nexport type MenuAsyncState =\n | Readonly<{ status: \"idle\" }>\n | Readonly<{\n status: \"loading\" | \"loadingMore\" | \"empty\" | \"error\";\n message: ReactNode;\n }>;\n\ntype MenuActionSelection = Readonly<{\n selectionMode?: \"action\";\n value?: never;\n defaultValue?: never;\n onValueChange?: never;\n}>;\n\ntype MenuSingleSelection =\n | Readonly<{\n selectionMode: \"single\";\n value: string | null;\n defaultValue?: never;\n onValueChange(value: string): void;\n }>\n | Readonly<{\n selectionMode: \"single\";\n value?: never;\n defaultValue?: string | null;\n onValueChange?: (value: string) => void;\n }>;\n\ntype MenuMultipleSelection =\n | Readonly<{\n selectionMode: \"multiple\";\n value: ReadonlySet<string>;\n defaultValue?: never;\n onValueChange(value: ReadonlySet<string>): void;\n }>\n | Readonly<{\n selectionMode: \"multiple\";\n value?: never;\n defaultValue?: ReadonlySet<string>;\n onValueChange?: (value: ReadonlySet<string>) => void;\n }>;\n\ntype MenuSourceProps =\n | Readonly<{\n items: readonly MenuItem[];\n sections?: never;\n }>\n | Readonly<{\n items?: never;\n sections: readonly MenuSection[];\n }>;\n\ntype MenuBaseProps = Readonly<{\n trigger: OverlayTrigger;\n label: string;\n density?: MenuDensity;\n /** Logical alignment against the trigger; automatically mirrors in RTL. */\n align?: \"start\" | \"end\";\n disabled?: boolean;\n asyncState?: MenuAsyncState;\n onAction?: (id: string) => void;\n /** Runs only once the owner actually closes the menu. */\n onActionAfterDismiss?: (id: string) => void;\n portalContainer?: HTMLElement;\n className?: string;\n /** Canonical layout-only placement on the in-flow wrapper around the trigger; the popup stays anchored. */\n layoutStyle?: HjmCompositionStyleProp;\n}> & MenuSourceProps;\n\nexport type MenuProps = OpenState<Readonly<{ reason: MenuOpenChangeReason }>> &\n MenuBaseProps &\n (MenuActionSelection | MenuSingleSelection | MenuMultipleSelection);\n\nfunction menuTextValue(item: MenuItem): string {\n const value = item.textValue ?? (typeof item.label === \"string\" ? item.label : undefined);\n if (value === undefined || value.trim().length === 0) {\n throw new TypeError(`Menu item ${item.id} needs textValue for typeahead`);\n }\n return value.trim();\n}\n\nfunction validateMenuItems(\n items: readonly MenuItem[],\n sections: readonly MenuSection[] | undefined,\n asyncState: MenuAsyncState,\n): void {\n if (items.length === 0 && (asyncState.status === \"idle\" || asyncState.status === \"loadingMore\")) {\n throw new TypeError(\"Menu requires at least one item\");\n }\n const ids = new Set<string>();\n for (const item of items) {\n if (item.id.trim().length === 0) throw new TypeError(\"Menu item id must not be empty\");\n if (ids.has(item.id)) throw new TypeError(`Duplicate Menu item id: ${item.id}`);\n ids.add(item.id);\n menuTextValue(item);\n }\n if (sections !== undefined) {\n const sectionIds = new Set<string>();\n for (const section of sections) {\n if (section.id.trim().length === 0) throw new TypeError(\"Menu section id must not be empty\");\n if (sectionIds.has(section.id)) throw new TypeError(`Duplicate Menu section id: ${section.id}`);\n sectionIds.add(section.id);\n if (section.items.length === 0) throw new TypeError(`Menu section ${section.id} must not be empty`);\n if ((section.label?.trim().length ?? 0) === 0 &&\n (section.accessibilityLabel?.trim().length ?? 0) === 0) {\n throw new TypeError(`Menu section ${section.id} needs a label or accessibilityLabel`);\n }\n }\n }\n if (\n (asyncState.status === \"idle\" || asyncState.status === \"loadingMore\") &&\n !items.some((item) => !item.disabled)\n ) {\n throw new TypeError(\"Menu requires at least one enabled item\");\n }\n}\n\nexport const Menu = forwardRef<HTMLDivElement, MenuProps>(function Menu(props, ref) {\n // Unconditional: `??` on the hook call would break the rules of hooks.\n const densityDefault = useHjmDensityDefault({\n comfortable: menuRecipe.defaults.density,\n compact: \"compact\",\n });\n const {\n trigger,\n label,\n density: densityProp,\n align = \"start\",\n disabled = false,\n asyncState = { status: \"idle\" },\n onAction,\n onActionAfterDismiss,\n portalContainer,\n open: openProp,\n defaultOpen,\n onOpenChange,\n className,\n layoutStyle,\n } = props;\n const density = densityProp ?? densityDefault;\n const sections = props.sections;\n const items = sections === undefined ? props.items : sections.flatMap((section) => section.items);\n if (label.trim().length === 0) throw new TypeError(\"Menu label must not be empty\");\n validateMenuItems(items, sections, asyncState);\n const selectionMode = props.selectionMode ?? \"action\";\n const [open, changeOpen] = useOpenState({\n ...(openProp === undefined ? {} : { open: openProp }),\n ...(defaultOpen === undefined ? {} : { defaultOpen }),\n ...(onOpenChange === undefined ? {} : { onOpenChange }),\n });\n const [focusIndex, setFocusIndex] = useState(() =>\n items.findIndex((item) => !item.disabled),\n );\n const singleSelection = selectionMode === \"single\"\n ? (props as MenuSingleSelection)\n : undefined;\n const multipleSelection = selectionMode === \"multiple\"\n ? (props as MenuMultipleSelection)\n : undefined;\n const [singleValue, setSingleValue] = useControllableState<string | null>({\n ...(singleSelection?.value !== undefined\n ? { value: singleSelection.value }\n : {}),\n defaultValue: singleSelection?.defaultValue ?? null,\n ...(singleSelection?.onValueChange !== undefined\n ? {\n onChange: (next: string | null) => {\n if (next !== null) singleSelection.onValueChange?.(next);\n },\n }\n : {}),\n });\n const [multipleValue, setMultipleValue] = useControllableState<ReadonlySet<string>>({\n ...(multipleSelection?.value !== undefined\n ? { value: multipleSelection.value }\n : {}),\n defaultValue: multipleSelection?.defaultValue ?? new Set<string>(),\n ...(multipleSelection?.onValueChange !== undefined\n ? { onChange: multipleSelection.onValueChange }\n : {}),\n });\n const knownIds = new Set(items.map((item) => item.id));\n if (selectionMode === \"single\" && singleValue !== null && !knownIds.has(singleValue)) {\n throw new RangeError(`Unknown Menu single value: ${singleValue}`);\n }\n if (selectionMode === \"multiple\") {\n for (const selectedId of multipleValue) {\n if (!knownIds.has(selectedId)) throw new RangeError(`Unknown Menu multiple value: ${selectedId}`);\n }\n }\n const triggerRef = useRef<HTMLElement>(null);\n const itemRefs = useRef(new Map<number, HTMLButtonElement>());\n const wrapperRef = useRef<HTMLSpanElement>(null);\n const contentRef = useRef<HTMLDivElement>(null);\n const [contentNode, setContentNode] = useState<HTMLDivElement | null>(null);\n const restoreFocusRef = useRef(false);\n const afterDismissIdRef = useRef<string | undefined>(undefined);\n const typeaheadRef = useRef({ value: \"\", time: 0 });\n const id = `${useId().replaceAll(\":\", \"\")}-menu`;\n // menuRecipe offset/edge padding (2026-10-06 follow-up; helper default edge padding was 16).\n const popupPosition = useAnchoredPopup(triggerRef, contentNode, {\n align, gap: menuRecipe.sideOffset, viewportPadding: menuRecipe.collisionPadding, zIndex: layer.dropdown,\n });\n const setMenuContentRef = useCallback((node: HTMLDivElement | null) => {\n contentRef.current = node;\n setContentNode(node);\n if (typeof ref === \"function\") ref(node);\n else if (ref) ref.current = node;\n }, [ref]);\n\n useEffect(() => {\n if (!open) {\n if (restoreFocusRef.current) {\n restoreFocusRef.current = false;\n queueMicrotask(() => triggerRef.current?.focus());\n }\n const completedId = afterDismissIdRef.current;\n if (completedId !== undefined) {\n afterDismissIdRef.current = undefined;\n queueMicrotask(() => onActionAfterDismiss?.(completedId));\n }\n return;\n }\n const item = itemRefs.current.get(focusIndex);\n if (item && !item.disabled) item.focus();\n else contentRef.current?.focus();\n }, [contentNode, focusIndex, onActionAfterDismiss, open]);\n\n const itemIsDisabled = (item: MenuItem) =>\n disabled || asyncState.status === \"loading\" || Boolean(item.disabled);\n const firstEnabled = () => items.findIndex((item) => !itemIsDisabled(item));\n const lastEnabled = () => {\n for (let index = items.length - 1; index >= 0; index -= 1) {\n if (items[index] && !itemIsDisabled(items[index]!)) return index;\n }\n return firstEnabled();\n };\n const focusAt = (index: number) => {\n setFocusIndex(index);\n queueMicrotask(() => itemRefs.current.get(index)?.focus());\n };\n const moveFocus = (step: 1 | -1) => {\n for (let offset = 1; offset <= items.length; offset += 1) {\n const next = (focusIndex + step * offset + items.length) % items.length;\n if (items[next] && !itemIsDisabled(items[next]!)) {\n focusAt(next);\n return;\n }\n }\n };\n const close = (reason: MenuOpenChangeReason, restore: boolean) => {\n if (restore) restoreFocusRef.current = true;\n changeOpen(false, { reason });\n };\n const openMenu = (focus: \"first\" | \"last\" = \"first\") => {\n if (disabled) return;\n const index = focus === \"first\" ? firstEnabled() : lastEnabled();\n setFocusIndex(index);\n changeOpen(true, { reason: \"trigger\" });\n };\n\n const itemSelected = (id: string) =>\n selectionMode === \"single\"\n ? singleValue === id\n : selectionMode === \"multiple\"\n ? multipleValue.has(id)\n : false;\n\n const activateItem = (item: MenuItem, index: number) => {\n if (itemIsDisabled(item)) return;\n onAction?.(item.id);\n if (selectionMode === \"multiple\") {\n const next = new Set(multipleValue);\n if (next.has(item.id)) next.delete(item.id);\n else next.add(item.id);\n setMultipleValue(next);\n focusAt(index);\n return;\n }\n if (selectionMode === \"single\") setSingleValue(item.id);\n afterDismissIdRef.current = item.id;\n close(\"selection\", true);\n };\n\n const runTypeahead = (key: string) => {\n const result = resolveMenuTypeahead(\n items.map((item) => ({ textValue: menuTextValue(item), disabled: itemIsDisabled(item) })),\n focusIndex, key, typeaheadRef.current, Date.now(),\n );\n typeaheadRef.current = result.state;\n if (result.index !== undefined) focusAt(result.index);\n };\n\n useEffect(() => {\n if (!open) return;\n const handlePointerDown = (event: PointerEvent) => {\n if (\n event.target instanceof Node &&\n !wrapperRef.current?.contains(event.target) &&\n !contentRef.current?.contains(event.target)\n ) {\n close(\"outside\", false);\n }\n };\n document.addEventListener(\"pointerdown\", handlePointerDown);\n return () => document.removeEventListener(\"pointerdown\", handlePointerDown);\n });\n\n const triggerProps = trigger.props;\n const renderedTrigger = cloneElement(trigger, {\n ref: composeRefs(triggerProps.ref, triggerRef),\n \"aria-controls\": id,\n \"aria-expanded\": open,\n \"aria-haspopup\": \"menu\",\n \"aria-disabled\": disabled || undefined,\n disabled: triggerProps.disabled || disabled,\n onClick: (event) => {\n triggerProps.onClick?.(event);\n if (event.defaultPrevented || triggerProps.disabled || disabled) return;\n if (open) close(\"trigger\", false);\n else openMenu();\n },\n onKeyDown: (event) => {\n triggerProps.onKeyDown?.(event);\n if (event.defaultPrevented) return;\n if (event.key === \"ArrowDown\" || event.key === \"Enter\" || event.key === \" \") {\n event.preventDefault();\n openMenu(\"first\");\n } else if (event.key === \"ArrowUp\") {\n event.preventDefault();\n openMenu(\"last\");\n }\n },\n });\n\n const handleMenuKeyDown = (event: ReactKeyboardEvent<HTMLDivElement>) => {\n if (event.key === \"ArrowDown\") {\n event.preventDefault();\n moveFocus(1);\n } else if (event.key === \"ArrowUp\") {\n event.preventDefault();\n moveFocus(-1);\n } else if (event.key === \"Home\") {\n event.preventDefault();\n focusAt(firstEnabled());\n } else if (event.key === \"End\") {\n event.preventDefault();\n focusAt(lastEnabled());\n } else if (event.key === \"Escape\") {\n event.preventDefault();\n close(\"escape\", true);\n } else if (event.key === \"Tab\") {\n close(\"tab\", false);\n } else if (\n event.key.length === 1 &&\n event.key !== \" \" &&\n !event.altKey &&\n !event.ctrlKey &&\n !event.metaKey\n ) {\n event.preventDefault();\n runTypeahead(event.key);\n }\n };\n\n const showItems = asyncState.status !== \"empty\" && asyncState.status !== \"error\";\n\n return (\n <span ref={wrapperRef} className=\"hjm-menu\" style={layoutStyle} data-state={open ? \"open\" : \"closed\"}>\n {renderedTrigger}\n {open ? (\n <AnchoredPortal\n anchorRef={triggerRef}\n ssrFallback=\"inline\"\n {...(portalContainer === undefined ? {} : { container: portalContainer })}\n >\n <div\n ref={setMenuContentRef}\n id={id}\n role=\"menu\"\n aria-label={label}\n className={classNames(\"hjm-menu__content\", className)}\n data-density={density}\n data-async-state={asyncState.status}\n data-placement={popupPosition.placement}\n data-align={popupPosition.align}\n aria-busy={\n asyncState.status === \"loading\" || asyncState.status === \"loadingMore\" || undefined\n }\n style={popupPosition.style}\n tabIndex={-1}\n onKeyDown={handleMenuKeyDown}\n >\n {asyncState.status !== \"idle\" ? (\n <div\n className=\"hjm-menu__state-message\"\n role={asyncState.status === \"error\" ? \"alert\" : \"status\"}\n >\n {asyncState.message}\n </div>\n ) : null}\n {showItems ? (sections === undefined ? items.map((item, index) => {\n const selected = itemSelected(item.id);\n const itemDisabled = itemIsDisabled(item);\n const role = selectionMode === \"single\"\n ? \"menuitemradio\"\n : selectionMode === \"multiple\"\n ? \"menuitemcheckbox\"\n : \"menuitem\";\n return renderMenuItem(item, index, role, selected, itemDisabled);\n }) : sections.map((section, sectionIndex) => {\n const sectionLabelId = `${id}-section-${sectionIndex}`;\n const firstIndex = sections\n .slice(0, sectionIndex)\n .reduce((total, current) => total + current.items.length, 0);\n return (\n <div key={section.id} className=\"hjm-menu__section-boundary\">\n {sectionIndex > 0 ? <div role=\"separator\" className=\"hjm-menu__separator\" /> : null}\n <div\n role=\"group\"\n aria-labelledby={section.label ? sectionLabelId : undefined}\n aria-label={section.label ? undefined : section.accessibilityLabel}\n className=\"hjm-menu__section\"\n >\n {section.label ? (\n <div id={sectionLabelId} className=\"hjm-menu__section-label\">\n {section.label}\n </div>\n ) : null}\n {section.items.map((item, itemIndex) => {\n const index = firstIndex + itemIndex;\n const selected = itemSelected(item.id);\n const itemDisabled = itemIsDisabled(item);\n const role = selectionMode === \"single\"\n ? \"menuitemradio\"\n : selectionMode === \"multiple\"\n ? \"menuitemcheckbox\"\n : \"menuitem\";\n return renderMenuItem(item, index, role, selected, itemDisabled);\n })}\n </div>\n </div>\n );\n })) : null}\n </div>\n </AnchoredPortal>\n ) : null}\n </span>\n );\n\n function renderMenuItem(\n item: MenuItem,\n index: number,\n role: \"menuitem\" | \"menuitemradio\" | \"menuitemcheckbox\",\n selected: boolean,\n itemDisabled: boolean,\n ) {\n return (\n <button\n key={item.id}\n ref={(node) => {\n if (node) {\n itemRefs.current.set(index, node);\n if (open && !itemDisabled && index === focusIndex) {\n queueMicrotask(() => {\n if (node.isConnected && open) node.focus();\n });\n }\n } else itemRefs.current.delete(index);\n }}\n type=\"button\"\n role={role}\n aria-checked={selectionMode === \"action\" ? undefined : selected}\n className=\"hjm-menu__item\"\n data-tone={item.tone ?? menuRecipe.defaults.itemTone}\n data-state={itemDisabled ? \"disabled\" : selected ? \"selected\" : \"idle\"}\n data-focus={index === focusIndex || undefined}\n disabled={itemDisabled}\n tabIndex={!itemDisabled && index === focusIndex ? 0 : -1}\n onClick={() => activateItem(item, index)}\n >\n {item.tone === \"danger\" ? (\n <span className=\"hjm-menu__danger-indicator\" aria-hidden=\"true\">!</span>\n ) : null}\n {item.leading ? <span className=\"hjm-menu__leading\" aria-hidden=\"true\">{item.leading}</span> : null}\n <span className=\"hjm-menu__copy\">\n <span>{item.label}</span>\n {item.description ? <span className=\"hjm-menu__description\">{item.description}</span> : null}\n </span>\n {item.trailing ? <span className=\"hjm-menu__trailing\">{item.trailing}</span> : null}\n </button>\n );\n }\n});\n"]}
1
+ {"version":3,"file":"overlays.js","sourceRoot":"","sources":["../src/overlays.tsx"],"names":[],"mappings":"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","sourcesContent":["import { InitialFocusProvider, useInitialFocusScope, type ModalLayerRef } from \"./internal/initial-focus.js\";\nimport { initialFocusDefaults, type InitialFocusMode } from \"@hjmds/design-contracts/screen-patterns\";\nimport type { TransitionRect } from \"@hjmds/design-contracts/content-transition\";\nimport { useOverlayOriginMotion } from \"./internal/overlay-origin-motion.js\";\nimport { layer } from \"@hjmds/design-contracts/foundations\";\nimport { resolveMenuTypeahead } from \"./menu-typeahead.js\";\nimport {\n createAlertDialogSession,\n getAlertDialogInitialFocus,\n validateAlertDialogRequest,\n type AlertDialogPhase,\n type AlertDialogOpenChangeReason,\n type AlertDialogRequest,\n type AlertDialogSession,\n} from \"@hjmds/design-contracts/components/alert-dialog\";\nimport {\n createSheetLifecycle,\n resolveNextSheetDetent,\n resolveSheetCloseButton,\n resolveSheetDismissPolicy,\n sheetDragRecipe,\n type SheetDetent,\n type SheetDismissPolicy,\n type SheetDismissReason,\n type SheetOpenChangeDetails,\n} from \"@hjmds/design-contracts/components/sheet\";\nimport {\n resolveTooltipDescriptor,\n tooltipBehaviorDefaults,\n type TooltipAlign,\n type TooltipOpenChangeDetails,\n type TooltipPlacement,\n} from \"@hjmds/design-contracts/components/tooltip\";\nimport {\n dialogRecipe,\n menuRecipe,\n sheetRecipe,\n tooltipRecipe,\n type AlertDialogTone,\n type DialogSize,\n type MenuDensity,\n type MenuItemTone,\n} from \"@hjmds/design-contracts/recipes\";\nimport type { MenuSectionDescriptor } from \"@hjmds/design-contracts/behaviors\";\nimport {\n cloneElement,\n forwardRef,\n useCallback,\n useEffect,\n useId,\n useRef,\n useState,\n useSyncExternalStore,\n type KeyboardEvent as ReactKeyboardEvent,\n type ReactNode,\n} from \"react\";\nimport { Button } from \"./actions.js\";\nimport { classNames, composeRefs, useControllableState } from \"./internal.js\";\nimport { AnchoredPortal, useAnchoredPopup } from \"./portal.js\";\nimport { useHjmDensityDefault, useTooltipCoordinator, useOptionalHjmTheme } from \"./provider.js\";\nimport {\n containsEventTarget,\n getModalLayer,\n HjmPortal,\n renderTrigger,\n useModalFocus,\n useOpenState,\n type ModalOpenState,\n type OpenState,\n type OverlayTrigger,\n} from \"./modal.js\";\nimport type { HjmCompositionStyleProp } from \"./composition-style.js\";\n\nexport type { OverlayTrigger } from \"./modal.js\";\n\nexport type DialogOpenChangeReason =\n | \"trigger\"\n | \"close-action\"\n | \"escape\"\n | \"outside\";\n\n// No `layoutStyle`: rendered in a modal portal centred by the recipe; there is no in-flow root to place.\nexport type DialogProps = ModalOpenState<Readonly<{ reason: DialogOpenChangeReason }>> &\n Readonly<{\n title: ReactNode;\n description?: ReactNode;\n children?: ReactNode;\n footer?: ReactNode;\n /** Optional measured trigger bounds in viewport coordinates; keeps canonical modal behavior. */\n motionOrigin?: TransitionRect;\n size?: DialogSize;\n dismissible?: boolean;\n busy?: boolean;\n /** Localized accessible name for the close action. */\n closeLabel: string;\n initialFocusRef?: React.RefObject<HTMLElement | null>;\n /**\n * Text field focused when it opens and no `initialFocusRef` is given: by default only a lone text entry\n * (`single-input`); `first-input` prefers the field marked `initialFocusTarget`; `none` keeps the first focusable\n * element (2026-10-18, screen-patterns rules shared with Native).\n */\n initialFocus?: InitialFocusMode;\n returnFocusRef?: React.RefObject<HTMLElement | null>;\n /**\n * Fires once per visible cycle, after the portal is gone and focus has been\n * restored — the signal a product needs before opening the next overlay.\n * Sheet already owns this split; Dialog kept only the request side, which is\n * why products reached for a 0ms timer to guess when cleanup had finished.\n */\n onDismissComplete?: (detail: Readonly<{ reason: Exclude<DialogOpenChangeReason, \"trigger\"> | \"programmatic\" }>) => void;\n /** Higher-priority modals remain interactive above later lower-priority modals. */\n modalPriority?: number;\n portalContainer?: HTMLElement;\n className?: string;\n }>;\n\nexport const Dialog = forwardRef<HTMLDivElement, DialogProps>(function Dialog(\n {\n trigger,\n title,\n description,\n children,\n footer,\n size = dialogRecipe.defaults.size,\n motionOrigin,\n dismissible = dialogRecipe.defaults.dismissible,\n busy = false,\n closeLabel,\n initialFocusRef,\n initialFocus = initialFocusDefaults.overlay,\n returnFocusRef,\n onDismissComplete,\n modalPriority = 0,\n portalContainer,\n open: openProp,\n defaultOpen,\n onOpenChange,\n className,\n },\n forwardedRef,\n) {\n const modalLayer = getModalLayer(modalPriority);\n const [open, changeOpen] = useOpenState({\n ...(openProp === undefined ? {} : { open: openProp }),\n ...(defaultOpen === undefined ? {} : { defaultOpen }),\n ...(onOpenChange === undefined ? {} : { onOpenChange }),\n });\n const theme = useOptionalHjmTheme();\n const { visible, setNode: setMotionNode } = useOverlayOriginMotion(open, motionOrigin, theme?.environment.reducedMotion);\n const triggerRef = useRef<HTMLElement>(null);\n const contentRef = useRef<HTMLDivElement>(null);\n const mergedContentRef = composeRefs(contentRef, forwardedRef, setMotionNode);\n const id = useId().replaceAll(\":\", \"\");\n const contentId = `${id}-dialog`;\n const titleId = `${id}-title`;\n const descriptionId = `${id}-description`;\n type DialogSettleReason = Exclude<DialogOpenChangeReason, \"trigger\"> | \"programmatic\";\n const dismissReasonRef = useRef<DialogSettleReason | undefined>(undefined);\n const wasOpenRef = useRef(visible);\n const completeRef = useRef(onDismissComplete);\n completeRef.current = onDismissComplete;\n const openRef = useRef(visible);\n openRef.current = visible;\n const requestClose = (reason: Exclude<DialogOpenChangeReason, \"trigger\">) => {\n if (!dismissible || busy) return;\n dismissReasonRef.current = reason;\n changeOpen(false, { reason });\n };\n const settle = () => {\n const reason = dismissReasonRef.current ?? \"programmatic\";\n dismissReasonRef.current = undefined;\n // After the portal is unmounted and `useModalFocus` has restored focus in\n // its own microtask, so the next overlay can open without a 0ms guess.\n queueMicrotask(() => queueMicrotask(() => completeRef.current?.({ reason })));\n };\n useEffect(() => {\n if (visible) { wasOpenRef.current = true; if (open) dismissReasonRef.current = undefined; return; }\n if (!wasOpenRef.current) return;\n wasOpenRef.current = false;\n settle();\n }, [open, visible]);\n const epochRef = useRef(0);\n useEffect(() => {\n const epoch = epochRef.current + 1;\n epochRef.current = epoch;\n return () => {\n queueMicrotask(() => {\n // StrictMode re-runs setup right after its probe cleanup; only a real\n // unmount has no later epoch. An open Dialog torn down that way still\n // settles exactly once.\n if (epochRef.current !== epoch || !openRef.current || !wasOpenRef.current) return;\n wasOpenRef.current = false;\n settle();\n });\n };\n }, []);\n const focusLayer = useRef<ModalLayerRef[\"current\"]>(null);\n const focusScope = useInitialFocusScope({ mode: initialFocus, active: visible, layer: focusLayer });\n useModalFocus({\n active: visible,\n priority: modalPriority,\n contentRef,\n ...(initialFocusRef === undefined ? {} : { initialFocusRef }),\n resolveInitialFocus: focusScope.enter,\n layerRef: focusLayer,\n ...(returnFocusRef === undefined ? {} : { returnFocusRef }),\n ...(trigger === undefined ? {} : { fallbackReturnRef: triggerRef }),\n onEscape: () => requestClose(\"escape\"),\n });\n\n return (\n <>\n {trigger === undefined ? null : renderTrigger(\n trigger,\n triggerRef,\n open,\n contentId,\n \"dialog\",\n () => changeOpen(true, { reason: \"trigger\" }),\n )}\n {visible ? (\n <HjmPortal {...(portalContainer === undefined ? {} : { container: portalContainer })}>\n <div\n className=\"hjm-overlay\"\n data-kind=\"dialog\"\n data-modal-priority={modalPriority}\n data-state=\"open\"\n style={{ zIndex: modalLayer }}\n onMouseDown={(event) => {\n if (event.target === event.currentTarget) {\n // Diairy QA W16: Chrome's default backdrop blur can run after focus\n // cleanup and undo its return target. Cancel that default, not the modal's dismissal.\n event.preventDefault();\n requestClose(\"outside\");\n }\n }}\n >\n <div\n ref={mergedContentRef}\n id={contentId}\n role=\"dialog\"\n aria-modal=\"true\"\n aria-labelledby={titleId}\n aria-describedby={description ? descriptionId : undefined}\n aria-busy={busy || undefined}\n inert={!open}\n aria-hidden={!open || undefined}\n tabIndex={-1}\n className={classNames(\"hjm-dialog\", className)}\n data-hjm-modal-content=\"\"\n data-size={size}\n data-state={busy ? \"busy\" : \"idle\"}\n >\n <header className=\"hjm-dialog__header\">\n <h2 id={titleId} className=\"hjm-dialog__title\">{title}</h2>\n {dismissible ? (\n <button\n type=\"button\"\n className=\"hjm-dialog__close\"\n aria-label={closeLabel}\n disabled={busy}\n onClick={() => requestClose(\"close-action\")}\n >\n ×\n </button>\n ) : null}\n </header>\n {description ? <p id={descriptionId} className=\"hjm-dialog__description\">{description}</p> : null}\n {children ? <div className=\"hjm-dialog__body\"><InitialFocusProvider scope={focusScope}>{children}</InitialFocusProvider></div> : null}\n {footer ? <footer className=\"hjm-dialog__footer\">{footer}</footer> : null}\n </div>\n </div>\n </HjmPortal>\n ) : null}\n </>\n );\n});\n\n// No `layoutStyle`: rendered in a modal portal centred by the recipe; there is no in-flow root to place.\nexport type AlertDialogProps = ModalOpenState<\n Readonly<{ reason: AlertDialogOpenChangeReason }>\n> &\n Readonly<{\n request: AlertDialogRequest;\n icon?: ReactNode;\n size?: DialogSize;\n returnFocusRef?: React.RefObject<HTMLElement | null>;\n /** Higher-priority modals remain interactive above later lower-priority modals. */\n modalPriority?: number;\n portalContainer?: HTMLElement;\n className?: string;\n }>;\n\nexport const AlertDialog = forwardRef<HTMLDivElement, AlertDialogProps>(\n function AlertDialog(\n {\n trigger,\n request,\n icon,\n size = dialogRecipe.defaults.size,\n returnFocusRef,\n modalPriority = 0,\n portalContainer,\n open: openProp,\n defaultOpen,\n onOpenChange,\n className,\n },\n forwardedRef,\n ) {\n const modalLayer = getModalLayer(modalPriority);\n validateAlertDialogRequest(request);\n const [open, changeOpen] = useOpenState({\n ...(openProp === undefined ? {} : { open: openProp }),\n ...(defaultOpen === undefined ? {} : { defaultOpen }),\n ...(onOpenChange === undefined ? {} : { onOpenChange }),\n });\n const sessionRef = useRef<AlertDialogSession | null>(null);\n const [sessionGeneration, setSessionGeneration] = useState(0);\n if (open && sessionRef.current === null) {\n sessionRef.current = createAlertDialogSession(request);\n }\n const idleSnapshot = useRef<AlertDialogPhase>({ status: \"idle\" });\n const phase = useSyncExternalStore(\n (listener) => sessionRef.current?.subscribe(listener) ?? (() => undefined),\n () => sessionRef.current?.getSnapshot() ?? idleSnapshot.current,\n () => idleSnapshot.current,\n );\n const busy = phase.status === \"busy\";\n const closing = phase.status === \"closing\" || phase.status === \"closed\";\n const error = phase.status === \"error\" ? phase.message : undefined;\n const triggerRef = useRef<HTMLElement>(null);\n const contentRef = useRef<HTMLDivElement>(null);\n const cancelRef = useRef<HTMLButtonElement>(null);\n const confirmRef = useRef<HTMLButtonElement>(null);\n const initialFocusRef = getAlertDialogInitialFocus(request.mode) === \"cancel\"\n ? cancelRef\n : confirmRef;\n const id = useId().replaceAll(\":\", \"\");\n const contentId = `${id}-alert-dialog`;\n const titleId = `${id}-title`;\n const descriptionId = `${id}-description`;\n const errorId = `${id}-error`;\n\n const startSession = (): AlertDialogSession => {\n sessionRef.current?.interrupt();\n const session = createAlertDialogSession(request);\n sessionRef.current = session;\n setSessionGeneration((current) => current + 1);\n return session;\n };\n const cancel = (reason: \"cancel-action\" | \"escape\") => {\n const session = sessionRef.current;\n if (!session?.cancel(reason)) return;\n changeOpen(false, { reason });\n };\n useModalFocus({\n active: open,\n priority: modalPriority,\n contentRef,\n initialFocusRef,\n ...(returnFocusRef === undefined ? {} : { returnFocusRef }),\n ...(trigger === undefined ? {} : { fallbackReturnRef: triggerRef }),\n onEscape: () => cancel(\"escape\"),\n });\n\n const confirm = async () => {\n const session = sessionRef.current;\n if (!session) return;\n if (await session.confirm()) changeOpen(false, { reason: \"confirm\" });\n };\n useEffect(() => {\n if (open) return;\n const session = sessionRef.current;\n if (!session) return;\n const snapshot = session.getSnapshot();\n if (snapshot.status === \"idle\" || snapshot.status === \"error\") {\n session.cancel(\"programmatic\");\n }\n if (session.getSnapshot().status === \"closing\") session.completeExit();\n else if (session.getSnapshot().status !== \"closed\") session.interrupt();\n sessionRef.current = null;\n }, [open, sessionGeneration]);\n useEffect(\n () => () => {\n sessionRef.current?.interrupt();\n },\n [],\n );\n const tone: AlertDialogTone = request.tone ?? \"attention\";\n\n return (\n <>\n {trigger === undefined ? null : renderTrigger(\n trigger,\n triggerRef,\n open,\n contentId,\n \"dialog\",\n () => {\n startSession();\n changeOpen(true, { reason: \"trigger\" });\n },\n )}\n {open ? (\n <HjmPortal {...(portalContainer === undefined ? {} : { container: portalContainer })}>\n <div\n className=\"hjm-overlay\"\n data-kind=\"alert-dialog\"\n data-modal-priority={modalPriority}\n data-state=\"open\"\n style={{ zIndex: modalLayer }}\n >\n <div\n ref={composeRefs(contentRef, forwardedRef)}\n id={contentId}\n role=\"alertdialog\"\n aria-modal=\"true\"\n aria-labelledby={titleId}\n aria-describedby={`${descriptionId}${error ? ` ${errorId}` : \"\"}`}\n aria-busy={busy || undefined}\n tabIndex={-1}\n className={classNames(\"hjm-alert-dialog\", className)}\n data-hjm-modal-content=\"\"\n data-size={size}\n data-tone={tone}\n data-state={busy ? \"busy\" : error ? \"error\" : \"idle\"}\n >\n {icon ? <div className=\"hjm-alert-dialog__icon\" aria-hidden=\"true\">{icon}</div> : null}\n <h2 id={titleId} className=\"hjm-alert-dialog__title\">{request.title}</h2>\n <p id={descriptionId} className=\"hjm-alert-dialog__description\">{request.description}</p>\n {error ? <p id={errorId} className=\"hjm-alert-dialog__error\" role=\"alert\">{error}</p> : null}\n <div className=\"hjm-alert-dialog__actions\">\n {request.mode === \"confirm\" ? (\n <Button\n ref={cancelRef}\n tone=\"secondary\"\n disabled={busy || closing}\n onClick={() => cancel(\"cancel-action\")}\n >\n {request.cancelLabel}\n </Button>\n ) : null}\n <Button\n ref={confirmRef}\n tone={tone === \"danger\" ? \"danger\" : \"primary\"}\n loading={busy}\n disabled={closing}\n onClick={() => void confirm()}\n >\n {request.confirmLabel}\n </Button>\n </div>\n </div>\n </div>\n </HjmPortal>\n ) : null}\n </>\n );\n },\n);\n\nexport type SheetPlacement = \"bottom\" | \"start\" | \"end\";\n\nexport type SheetSize = keyof typeof sheetRecipe.sizes;\n\n// No `layoutStyle`: an edge-attached modal portal; its geometry is the recipe's.\nexport type SheetProps = ModalOpenState<SheetOpenChangeDetails> &\n Readonly<{\n title: ReactNode;\n description?: ReactNode;\n children?: ReactNode;\n footer?: ReactNode;\n placement?: SheetPlacement;\n /**\n * Height the product opens the sheet at (`sheetRecipe.sizes`); `auto` keeps\n * the content height capped by the recipe. Native has had this since 1.3;\n * Web only had user-adjustable `detents` until 1.5.0. `activeDetent` wins\n * when both are given.\n */\n size?: SheetSize;\n /**\n * Heights the user may step between while the sheet is open, smallest\n * first. `sheetRecipe.sizes` is what the *product* opens at; this is what\n * the *user* can change afterwards.\n */\n detents?: readonly SheetDetent[];\n activeDetent?: SheetDetent;\n onDetentChange?: (detent: SheetDetent) => void;\n /** Localized names for the handle in each direction; required with detents. */\n detentLabels?: Readonly<{ expand: string; collapse: string }>;\n busy?: boolean;\n dismissPolicy?: Partial<SheetDismissPolicy>;\n /** Localized accessible name for the close action. */\n closeLabel: string;\n initialFocusRef?: React.RefObject<HTMLElement | null>;\n /**\n * Text field focused when it opens and no `initialFocusRef` is given: by default only a lone text entry\n * (`single-input`); `first-input` prefers the field marked `initialFocusTarget`; `none` keeps the first focusable\n * element (2026-10-18, screen-patterns rules shared with Native).\n */\n initialFocus?: InitialFocusMode;\n returnFocusRef?: React.RefObject<HTMLElement | null>;\n /** Fires once per visible cycle, after the Sheet portal has been removed. */\n onDismissComplete?: (detail: Readonly<{ reason: SheetDismissReason }>) => void;\n /** Higher-priority modals remain interactive above later lower-priority modals. */\n modalPriority?: number;\n portalContainer?: HTMLElement;\n className?: string;\n /** Visible × in the header. Off by default for bottom sheets, which close by dragging (2026-10-16). */\n showClose?: boolean;\n }>;\n\nexport const Sheet = forwardRef<HTMLDivElement, SheetProps>(function Sheet(\n {\n trigger,\n title,\n description,\n children,\n footer,\n placement = sheetRecipe.defaults.placement,\n size = sheetRecipe.defaults.size,\n detents,\n activeDetent,\n onDetentChange,\n detentLabels,\n busy = false,\n dismissPolicy,\n closeLabel,\n initialFocusRef,\n initialFocus = initialFocusDefaults.overlay,\n returnFocusRef,\n onDismissComplete,\n modalPriority = 0,\n portalContainer,\n open: openProp,\n defaultOpen,\n onOpenChange,\n className,\n showClose,\n },\n forwardedRef,\n) {\n const modalLayer = getModalLayer(modalPriority);\n const [open, changeOpen] = useOpenState({\n ...(openProp === undefined ? {} : { open: openProp }),\n ...(defaultOpen === undefined ? {} : { defaultOpen }),\n ...(onOpenChange === undefined ? {} : { onOpenChange }),\n });\n const policy: SheetDismissPolicy = resolveSheetDismissPolicy(placement, dismissPolicy);\n const closeVisible = resolveSheetCloseButton(placement, showClose);\n // Drag-to-dismiss (2026-10-16 user decision): handle and header follow the pointer downward and a\n // release past the distance or velocity threshold closes with reason \"swipe\".\n const showHandle = placement === \"bottom\" && policy.dismissible && policy.swipeDismiss;\n const closeBlocked = busy && !policy.dismissWhileBusy;\n const canSwipe = showHandle && !closeBlocked;\n const dragRef = useRef<{ pointerId: number; y: number; t: number; moved: boolean } | null>(null);\n const [dragY, setDragY] = useState(0);\n const lifecycleRef = useRef(createSheetLifecycle(open));\n const previousOpenRef = useRef(open);\n const currentOpenRef = useRef(open);\n currentOpenRef.current = open;\n const dismissReasonRef = useRef<SheetDismissReason | undefined>(undefined);\n const dismissCompleteRef = useRef(onDismissComplete);\n dismissCompleteRef.current = onDismissComplete;\n const settleDismissRef = useRef<(reason: SheetDismissReason) => void>(() => undefined);\n settleDismissRef.current = (reason) => {\n const cycle = lifecycleRef.current.beginDismiss();\n if (cycle !== null && lifecycleRef.current.completeDismiss(cycle)) {\n dismissReasonRef.current = undefined;\n previousOpenRef.current = false;\n dismissCompleteRef.current?.({ reason });\n }\n };\n const triggerRef = useRef<HTMLElement>(null);\n const contentRef = useRef<HTMLDivElement>(null);\n const id = useId().replaceAll(\":\", \"\");\n const contentId = `${id}-sheet`;\n const titleId = `${id}-title`;\n const descriptionId = `${id}-description`;\n const requestClose = (reason: SheetDismissReason) => {\n if (lifecycleRef.current.requestClose(reason, busy, policy)) {\n dismissReasonRef.current = reason;\n changeOpen(false, { reason });\n if (openProp !== undefined) queueMicrotask(() => {\n // Controlled owners may reject a request. Deduplicate this interaction,\n // then allow a later attempt instead of permanently latching the sheet.\n if (currentOpenRef.current) {\n lifecycleRef.current = createSheetLifecycle(true);\n }\n });\n }\n };\n useEffect(() => {\n if (open) {\n lifecycleRef.current.open();\n previousOpenRef.current = true;\n dismissReasonRef.current = undefined;\n return;\n }\n if (!previousOpenRef.current) return;\n settleDismissRef.current(dismissReasonRef.current ?? \"programmatic\");\n }, [open]);\n const mountEpochRef = useRef(0);\n useEffect(() => {\n const epoch = mountEpochRef.current + 1;\n mountEpochRef.current = epoch;\n return () => {\n queueMicrotask(() => {\n // React StrictMode immediately runs the setup again after its probe\n // cleanup. A real unmount has no later epoch and is settled here,\n // after the portal and focus-lock cleanups have completed.\n if (mountEpochRef.current !== epoch || !currentOpenRef.current) return;\n settleDismissRef.current(dismissReasonRef.current ?? \"programmatic\");\n });\n };\n }, []);\n const focusLayer = useRef<ModalLayerRef[\"current\"]>(null);\n const focusScope = useInitialFocusScope({ mode: initialFocus, active: open, layer: focusLayer });\n useModalFocus({\n active: open,\n priority: modalPriority,\n contentRef,\n ...(initialFocusRef === undefined ? {} : { initialFocusRef }),\n resolveInitialFocus: focusScope.enter,\n layerRef: focusLayer,\n ...(returnFocusRef === undefined ? {} : { returnFocusRef }),\n ...(trigger === undefined ? {} : { fallbackReturnRef: triggerRef }),\n onEscape: () => requestClose(\"escape\"),\n });\n\n return (\n <>\n {trigger === undefined ? null : renderTrigger(\n trigger,\n triggerRef,\n open,\n contentId,\n \"dialog\",\n () => changeOpen(true, { reason: \"trigger\" }),\n )}\n {open ? (\n <HjmPortal {...(portalContainer === undefined ? {} : { container: portalContainer })}>\n <div\n className=\"hjm-overlay hjm-sheet-positioner\"\n data-kind=\"sheet\"\n data-modal-priority={modalPriority}\n data-placement={placement}\n // Mirrors the content's detent so a `full` sheet can drop the positioner's top gutter (sheetRecipe.sizes.full).\n data-detent={activeDetent ?? (size === \"auto\" ? undefined : size)}\n data-state=\"open\"\n style={{ zIndex: modalLayer }}\n onMouseDown={(event) => {\n if (event.target === event.currentTarget) {\n // Match Dialog: a real backdrop click must not undo return focus or\n // move focus to body when busy/outside-dismiss policy keeps the sheet open.\n event.preventDefault();\n requestClose(\"outside\");\n }\n }}\n >\n <div\n ref={composeRefs(contentRef, forwardedRef)}\n id={contentId}\n role=\"dialog\"\n aria-modal=\"true\"\n aria-labelledby={titleId}\n aria-describedby={description ? descriptionId : undefined}\n aria-busy={busy || undefined}\n tabIndex={-1}\n className={classNames(\"hjm-sheet\", className)}\n data-hjm-modal-content=\"\"\n data-placement={placement}\n data-detent={activeDetent ?? (size === \"auto\" ? undefined : size)}\n data-has-footer={footer ? true : undefined}\n data-state={busy ? \"busy\" : \"idle\"}\n data-dragging={dragY > 0 || undefined}\n style={dragY > 0 ? { transform: `translateY(${dragY}px)` } : undefined}\n >\n {/* 2026-10-17 user decision: sheets show no visible title line. The title stays the dialog's\n accessible name (aria-labelledby) and a screen-reader heading. */}\n <h2 id={titleId} className=\"hjm-visually-hidden\">{title}</h2>\n {/*\n The handle is a real control, not a drag-only affordance: a\n keyboard or switch user must be able to change the height too.\n Gesture physics stay with the product and report the same way.\n */}\n <div className=\"hjm-sheet__drag\" data-swipe={canSwipe || undefined}\n onPointerDown={(event) => {\n if (!canSwipe || event.button !== 0 || (event.target as HTMLElement).closest(\"a,input,textarea,select,.hjm-dialog__close\")) return;\n dragRef.current = { pointerId: event.pointerId, y: event.clientY, t: event.timeStamp, moved: false };\n }}\n onPointerMove={(event) => {\n const drag = dragRef.current;\n if (!drag || drag.pointerId !== event.pointerId) return;\n const dy = event.clientY - drag.y;\n if (!drag.moved && dy < sheetDragRecipe.activationDistance) return;\n if (!drag.moved) { drag.moved = true; event.currentTarget.setPointerCapture(event.pointerId); }\n setDragY(Math.max(0, dy));\n }}\n onPointerUp={(event) => {\n const drag = dragRef.current;\n dragRef.current = null;\n if (!drag || drag.pointerId !== event.pointerId || !drag.moved) return;\n const dy = event.clientY - drag.y;\n const velocity = dy / Math.max(1, event.timeStamp - drag.t);\n const height = contentRef.current?.getBoundingClientRect().height ?? 0;\n setDragY(0);\n if (dy > height * sheetDragRecipe.dismissDistanceRatio || velocity > sheetDragRecipe.dismissVelocity) requestClose(\"swipe\");\n }}\n onPointerCancel={() => { dragRef.current = null; setDragY(0); }}\n >\n {detents && detentLabels && activeDetent ? (\n <div className=\"hjm-sheet__handle-row\">\n <button\n type=\"button\"\n className=\"hjm-sheet__handle\"\n aria-label={\n resolveNextSheetDetent(detents, activeDetent, \"expand\") === null\n ? detentLabels.collapse\n : detentLabels.expand\n }\n onClick={() => {\n const expand = resolveNextSheetDetent(detents, activeDetent, \"expand\");\n const next = expand ?? resolveNextSheetDetent(detents, activeDetent, \"collapse\");\n if (next !== null) onDetentChange?.(next);\n }}\n >\n <span aria-hidden=\"true\" className=\"hjm-sheet__handle-bar\" />\n </button>\n </div>\n ) : showHandle ? (\n // Without detents the handle is the visible close control for keyboard and switch users.\n <div className=\"hjm-sheet__handle-row\">\n <button type=\"button\" className=\"hjm-sheet__handle\" aria-label={closeLabel} disabled={closeBlocked} onClick={() => requestClose(\"close-action\")}>\n <span aria-hidden=\"true\" className=\"hjm-sheet__handle-bar\" />\n </button>\n </div>\n ) : null}\n {description || (policy.dismissible && closeVisible) ? <header className=\"hjm-sheet__header\">\n {description ? <div><p id={descriptionId} className=\"hjm-sheet__description\">{description}</p></div> : null}\n {policy.dismissible && closeVisible ? (\n <button\n type=\"button\"\n className=\"hjm-dialog__close\"\n aria-label={closeLabel}\n disabled={busy && !policy.dismissWhileBusy}\n onClick={() => requestClose(\"close-action\")}\n >\n ×\n </button>\n ) : null}\n </header> : null}\n </div>\n {children ? <div className=\"hjm-sheet__body\"><InitialFocusProvider scope={focusScope}>{children}</InitialFocusProvider></div> : null}\n {footer ? <footer className=\"hjm-sheet__footer\">{footer}</footer> : null}\n </div>\n </div>\n </HjmPortal>\n ) : null}\n </>\n );\n});\n\nexport type TooltipProps = OpenState<TooltipOpenChangeDetails> &\n Readonly<{\n trigger: OverlayTrigger;\n content: string;\n placement?: TooltipPlacement;\n align?: TooltipAlign;\n pointerOpenDelayMs?: number;\n focusOpenDelayMs?: number;\n portalContainer?: HTMLElement;\n className?: string;\n /** Canonical layout-only placement on the root element. Controlled visual keys are excluded. */\n layoutStyle?: HjmCompositionStyleProp;\n }>;\n\nexport const Tooltip = forwardRef<HTMLSpanElement, TooltipProps>(function Tooltip(\n {\n trigger,\n content,\n placement,\n align,\n pointerOpenDelayMs = tooltipBehaviorDefaults.pointerOpenDelayMs,\n focusOpenDelayMs = tooltipBehaviorDefaults.focusOpenDelayMs,\n portalContainer,\n open: openProp,\n defaultOpen,\n onOpenChange,\n className,\n layoutStyle,\n },\n ref,\n) {\n const descriptor = resolveTooltipDescriptor({\n content,\n ...(placement === undefined ? {} : { placement }),\n ...(align === undefined ? {} : { align }),\n });\n const [open, changeOpen] = useOpenState({\n ...(openProp === undefined ? {} : { open: openProp }),\n ...(defaultOpen === undefined ? {} : { defaultOpen }),\n ...(onOpenChange === undefined ? {} : { onOpenChange }),\n });\n const timerRef = useRef<ReturnType<typeof setTimeout> | undefined>(undefined);\n const suppressedRef = useRef(false);\n const touchTapRef = useRef<{ wasVisible: boolean } | null>(null);\n const triggerRef = useRef<HTMLElement>(null);\n const [tooltipNode, setTooltipNode] = useState<HTMLSpanElement | null>(null);\n const id = `${useId().replaceAll(\":\", \"\")}-tooltip`;\n const coordinator = useTooltipCoordinator();\n const activeTooltipId = coordinator?.activeId ?? null;\n const activateTooltip = coordinator?.activate;\n const deactivateTooltip = coordinator?.deactivate;\n const shouldSkipTooltipDelay = coordinator?.shouldSkipDelay;\n const visible = open &&\n (coordinator === null ||\n activeTooltipId === null ||\n activeTooltipId === id);\n const clearTimer = () => {\n if (timerRef.current !== undefined) clearTimeout(timerRef.current);\n timerRef.current = undefined;\n };\n useEffect(() => clearTimer, []);\n const schedule = (\n nextOpen: boolean,\n delay: number,\n detail: TooltipOpenChangeDetails,\n ) => {\n clearTimer();\n if (nextOpen && suppressedRef.current) return;\n if (delay <= 0) {\n if (nextOpen) activateTooltip?.(id);\n changeOpen(nextOpen, detail);\n return;\n }\n timerRef.current = setTimeout(() => {\n if (nextOpen) activateTooltip?.(id);\n changeOpen(nextOpen, detail);\n }, delay);\n };\n useEffect(() => {\n if (open) activateTooltip?.(id);\n else deactivateTooltip?.(id);\n }, [activateTooltip, deactivateTooltip, id, open]);\n useEffect(() => {\n if (\n open &&\n activeTooltipId !== null &&\n activeTooltipId !== id\n ) {\n clearTimer();\n changeOpen(false, { reason: \"another-tooltip\" });\n }\n }, [activeTooltipId, changeOpen, id, open]);\n useEffect(\n () => () => deactivateTooltip?.(id),\n [deactivateTooltip, id],\n );\n const triggerProps = trigger.props;\n const describedBy = visible\n ? [triggerProps[\"aria-describedby\"], id].filter(Boolean).join(\" \")\n : triggerProps[\"aria-describedby\"];\n const renderedTrigger = cloneElement(trigger, {\n ref: composeRefs(triggerProps.ref, triggerRef),\n ...(describedBy ? { \"aria-describedby\": describedBy } : {}),\n onPointerDown: (event) => {\n triggerProps.onPointerDown?.(event);\n touchTapRef.current = event.pointerType === \"touch\" ? { wasVisible: visible } : null;\n },\n onPointerEnter: (event) => {\n triggerProps.onPointerEnter?.(event);\n if (event.pointerType === \"touch\") return;\n schedule(\n true,\n shouldSkipTooltipDelay?.() ? 0 : pointerOpenDelayMs,\n { reason: \"pointer\" },\n );\n },\n onPointerLeave: (event) => {\n triggerProps.onPointerLeave?.(event);\n if (event.pointerType === \"touch\") return;\n suppressedRef.current = false;\n if (containsEventTarget(tooltipNode, event.relatedTarget)) {\n clearTimer();\n return;\n }\n schedule(false, 0, { reason: \"pointer-leave\" });\n },\n onFocus: (event) => {\n triggerProps.onFocus?.(event);\n schedule(true, focusOpenDelayMs, { reason: \"focus\" });\n },\n onBlur: (event) => {\n triggerProps.onBlur?.(event);\n suppressedRef.current = false;\n schedule(false, 0, { reason: \"blur\" });\n },\n onKeyDown: (event) => {\n triggerProps.onKeyDown?.(event);\n if (event.key === \"Escape\" && visible) {\n event.preventDefault();\n clearTimer();\n suppressedRef.current = true;\n changeOpen(false, { reason: \"escape\" });\n }\n },\n onClick: (event) => {\n triggerProps.onClick?.(event);\n const touchTap = touchTapRef.current;\n touchTapRef.current = null;\n if (event.defaultPrevented) return;\n // Touch has no hover, so a tap is the only way to show the hint. The tap's\n // own focus already opened it; closing here (the mouse/keyboard path) made it\n // flash for 1ms (2026-09-30 audit WR-0930-1). A second tap closes instead.\n if (touchTap !== null && !touchTap.wasVisible) {\n if (!visible) schedule(true, 0, { reason: \"pointer\" });\n return;\n }\n if (visible) changeOpen(false, { reason: \"trigger-activation\" });\n },\n });\n useEffect(() => {\n if (!visible) return;\n // Tap-opened tooltips have no pointer-leave; an outside press dismisses them.\n // Mobile Safari does not focus buttons on tap, so blur alone is not enough.\n const onOutsidePress = (event: PointerEvent) => {\n if (\n containsEventTarget(triggerRef.current, event.target) ||\n containsEventTarget(tooltipNode, event.target)\n ) return;\n clearTimer();\n changeOpen(false, { reason: \"blur\" });\n };\n document.addEventListener(\"pointerdown\", onOutsidePress, true);\n return () => document.removeEventListener(\"pointerdown\", onOutsidePress, true);\n }, [changeOpen, tooltipNode, visible]);\n const popupPosition = useAnchoredPopup(triggerRef, tooltipNode, {\n align: descriptor.align,\n placement: descriptor.placement,\n // tooltipRecipe.positioning (2026-10-06 follow-up): 4 from the trigger and 12 from the edge;\n // the helper defaults 8/16 had made Web tooltips float further away than Native.\n gap: tooltipRecipe.positioning.sideOffset,\n viewportPadding: tooltipRecipe.positioning.collisionPadding,\n zIndex: layer.tooltip,\n });\n const setTooltipRef = useCallback((node: HTMLSpanElement | null) => {\n setTooltipNode(node);\n }, []);\n\n return (\n <span\n ref={ref}\n style={layoutStyle}\n className={classNames(\"hjm-tooltip\", className)}\n data-placement={descriptor.placement}\n data-align={descriptor.align}\n data-state={visible ? \"open\" : \"closed\"}\n onPointerEnter={(event) => {\n if (event.pointerType !== \"touch\") clearTimer();\n }}\n onPointerLeave={(event) => {\n if (event.pointerType === \"touch\") return;\n suppressedRef.current = false;\n if (containsEventTarget(tooltipNode, event.relatedTarget)) {\n clearTimer();\n return;\n }\n schedule(false, 0, { reason: \"pointer-leave\" });\n }}\n >\n {renderedTrigger}\n {visible ? (\n <AnchoredPortal\n anchorRef={triggerRef}\n ssrFallback=\"inline\"\n {...(portalContainer === undefined ? {} : { container: portalContainer })}\n >\n <span\n ref={setTooltipRef}\n id={id}\n role=\"tooltip\"\n className=\"hjm-tooltip__content\"\n data-placement={popupPosition.placement}\n data-align={popupPosition.align}\n // The positioner's inline maxWidth (space left in the viewport) would override the stylesheet cap,\n // so tooltipRecipe.content.maxWidth (280) is applied here too (2026-10-06; Web had grown to 320).\n style={{\n ...popupPosition.style,\n maxWidth: typeof popupPosition.style.maxWidth === \"number\"\n ? Math.min(popupPosition.style.maxWidth, tooltipRecipe.content.maxWidth)\n : tooltipRecipe.content.maxWidth,\n }}\n onPointerEnter={(event) => {\n if (event.pointerType !== \"touch\") clearTimer();\n }}\n onPointerLeave={(event) => {\n if (event.pointerType === \"touch\") return;\n suppressedRef.current = false;\n if (containsEventTarget(triggerRef.current, event.relatedTarget)) {\n clearTimer();\n return;\n }\n schedule(false, 0, { reason: \"pointer-leave\" });\n }}\n >\n {descriptor.content}\n </span>\n </AnchoredPortal>\n ) : null}\n </span>\n );\n});\n\nexport type MenuItem = Readonly<{\n id: string;\n label: ReactNode;\n /** Required for typeahead when label is not plain text. */\n textValue?: string;\n description?: ReactNode;\n leading?: ReactNode;\n trailing?: ReactNode;\n tone?: MenuItemTone;\n disabled?: boolean;\n}>;\n\nexport type MenuSection = Omit<MenuSectionDescriptor<string, string>, \"items\"> &\n Readonly<{ items: readonly MenuItem[] }>;\n\nexport type MenuOpenChangeReason =\n | \"trigger\"\n | \"selection\"\n | \"escape\"\n | \"outside\"\n | \"tab\";\n\nexport type MenuAsyncState =\n | Readonly<{ status: \"idle\" }>\n | Readonly<{\n status: \"loading\" | \"loadingMore\" | \"empty\" | \"error\";\n message: ReactNode;\n }>;\n\ntype MenuActionSelection = Readonly<{\n selectionMode?: \"action\";\n value?: never;\n defaultValue?: never;\n onValueChange?: never;\n}>;\n\ntype MenuSingleSelection =\n | Readonly<{\n selectionMode: \"single\";\n value: string | null;\n defaultValue?: never;\n onValueChange(value: string): void;\n }>\n | Readonly<{\n selectionMode: \"single\";\n value?: never;\n defaultValue?: string | null;\n onValueChange?: (value: string) => void;\n }>;\n\ntype MenuMultipleSelection =\n | Readonly<{\n selectionMode: \"multiple\";\n value: ReadonlySet<string>;\n defaultValue?: never;\n onValueChange(value: ReadonlySet<string>): void;\n }>\n | Readonly<{\n selectionMode: \"multiple\";\n value?: never;\n defaultValue?: ReadonlySet<string>;\n onValueChange?: (value: ReadonlySet<string>) => void;\n }>;\n\ntype MenuSourceProps =\n | Readonly<{\n items: readonly MenuItem[];\n sections?: never;\n }>\n | Readonly<{\n items?: never;\n sections: readonly MenuSection[];\n }>;\n\ntype MenuBaseProps = Readonly<{\n trigger: OverlayTrigger;\n label: string;\n density?: MenuDensity;\n /** Logical alignment against the trigger; automatically mirrors in RTL. */\n align?: \"start\" | \"end\";\n disabled?: boolean;\n asyncState?: MenuAsyncState;\n onAction?: (id: string) => void;\n /** Runs only once the owner actually closes the menu. */\n onActionAfterDismiss?: (id: string) => void;\n portalContainer?: HTMLElement;\n className?: string;\n /** Canonical layout-only placement on the in-flow wrapper around the trigger; the popup stays anchored. */\n layoutStyle?: HjmCompositionStyleProp;\n}> & MenuSourceProps;\n\nexport type MenuProps = OpenState<Readonly<{ reason: MenuOpenChangeReason }>> &\n MenuBaseProps &\n (MenuActionSelection | MenuSingleSelection | MenuMultipleSelection);\n\nfunction menuTextValue(item: MenuItem): string {\n const value = item.textValue ?? (typeof item.label === \"string\" ? item.label : undefined);\n if (value === undefined || value.trim().length === 0) {\n throw new TypeError(`Menu item ${item.id} needs textValue for typeahead`);\n }\n return value.trim();\n}\n\nfunction validateMenuItems(\n items: readonly MenuItem[],\n sections: readonly MenuSection[] | undefined,\n asyncState: MenuAsyncState,\n): void {\n if (items.length === 0 && (asyncState.status === \"idle\" || asyncState.status === \"loadingMore\")) {\n throw new TypeError(\"Menu requires at least one item\");\n }\n const ids = new Set<string>();\n for (const item of items) {\n if (item.id.trim().length === 0) throw new TypeError(\"Menu item id must not be empty\");\n if (ids.has(item.id)) throw new TypeError(`Duplicate Menu item id: ${item.id}`);\n ids.add(item.id);\n menuTextValue(item);\n }\n if (sections !== undefined) {\n const sectionIds = new Set<string>();\n for (const section of sections) {\n if (section.id.trim().length === 0) throw new TypeError(\"Menu section id must not be empty\");\n if (sectionIds.has(section.id)) throw new TypeError(`Duplicate Menu section id: ${section.id}`);\n sectionIds.add(section.id);\n if (section.items.length === 0) throw new TypeError(`Menu section ${section.id} must not be empty`);\n if ((section.label?.trim().length ?? 0) === 0 &&\n (section.accessibilityLabel?.trim().length ?? 0) === 0) {\n throw new TypeError(`Menu section ${section.id} needs a label or accessibilityLabel`);\n }\n }\n }\n if (\n (asyncState.status === \"idle\" || asyncState.status === \"loadingMore\") &&\n !items.some((item) => !item.disabled)\n ) {\n throw new TypeError(\"Menu requires at least one enabled item\");\n }\n}\n\nexport const Menu = forwardRef<HTMLDivElement, MenuProps>(function Menu(props, ref) {\n // Unconditional: `??` on the hook call would break the rules of hooks.\n const densityDefault = useHjmDensityDefault({\n comfortable: menuRecipe.defaults.density,\n compact: \"compact\",\n });\n const {\n trigger,\n label,\n density: densityProp,\n align = \"start\",\n disabled = false,\n asyncState = { status: \"idle\" },\n onAction,\n onActionAfterDismiss,\n portalContainer,\n open: openProp,\n defaultOpen,\n onOpenChange,\n className,\n layoutStyle,\n } = props;\n const density = densityProp ?? densityDefault;\n const sections = props.sections;\n const items = sections === undefined ? props.items : sections.flatMap((section) => section.items);\n if (label.trim().length === 0) throw new TypeError(\"Menu label must not be empty\");\n validateMenuItems(items, sections, asyncState);\n const selectionMode = props.selectionMode ?? \"action\";\n const [open, changeOpen] = useOpenState({\n ...(openProp === undefined ? {} : { open: openProp }),\n ...(defaultOpen === undefined ? {} : { defaultOpen }),\n ...(onOpenChange === undefined ? {} : { onOpenChange }),\n });\n const [focusIndex, setFocusIndex] = useState(() =>\n items.findIndex((item) => !item.disabled),\n );\n const singleSelection = selectionMode === \"single\"\n ? (props as MenuSingleSelection)\n : undefined;\n const multipleSelection = selectionMode === \"multiple\"\n ? (props as MenuMultipleSelection)\n : undefined;\n const [singleValue, setSingleValue] = useControllableState<string | null>({\n ...(singleSelection?.value !== undefined\n ? { value: singleSelection.value }\n : {}),\n defaultValue: singleSelection?.defaultValue ?? null,\n ...(singleSelection?.onValueChange !== undefined\n ? {\n onChange: (next: string | null) => {\n if (next !== null) singleSelection.onValueChange?.(next);\n },\n }\n : {}),\n });\n const [multipleValue, setMultipleValue] = useControllableState<ReadonlySet<string>>({\n ...(multipleSelection?.value !== undefined\n ? { value: multipleSelection.value }\n : {}),\n defaultValue: multipleSelection?.defaultValue ?? new Set<string>(),\n ...(multipleSelection?.onValueChange !== undefined\n ? { onChange: multipleSelection.onValueChange }\n : {}),\n });\n const knownIds = new Set(items.map((item) => item.id));\n if (selectionMode === \"single\" && singleValue !== null && !knownIds.has(singleValue)) {\n throw new RangeError(`Unknown Menu single value: ${singleValue}`);\n }\n if (selectionMode === \"multiple\") {\n for (const selectedId of multipleValue) {\n if (!knownIds.has(selectedId)) throw new RangeError(`Unknown Menu multiple value: ${selectedId}`);\n }\n }\n const triggerRef = useRef<HTMLElement>(null);\n const itemRefs = useRef(new Map<number, HTMLButtonElement>());\n const wrapperRef = useRef<HTMLSpanElement>(null);\n const contentRef = useRef<HTMLDivElement>(null);\n const [contentNode, setContentNode] = useState<HTMLDivElement | null>(null);\n const restoreFocusRef = useRef(false);\n const afterDismissIdRef = useRef<string | undefined>(undefined);\n const typeaheadRef = useRef({ value: \"\", time: 0 });\n const id = `${useId().replaceAll(\":\", \"\")}-menu`;\n // menuRecipe offset/edge padding (2026-10-06 follow-up; helper default edge padding was 16).\n const popupPosition = useAnchoredPopup(triggerRef, contentNode, {\n align, gap: menuRecipe.sideOffset, viewportPadding: menuRecipe.collisionPadding, zIndex: layer.dropdown,\n });\n const setMenuContentRef = useCallback((node: HTMLDivElement | null) => {\n contentRef.current = node;\n setContentNode(node);\n if (typeof ref === \"function\") ref(node);\n else if (ref) ref.current = node;\n }, [ref]);\n\n useEffect(() => {\n if (!open) {\n if (restoreFocusRef.current) {\n restoreFocusRef.current = false;\n queueMicrotask(() => triggerRef.current?.focus());\n }\n const completedId = afterDismissIdRef.current;\n if (completedId !== undefined) {\n afterDismissIdRef.current = undefined;\n queueMicrotask(() => onActionAfterDismiss?.(completedId));\n }\n return;\n }\n const item = itemRefs.current.get(focusIndex);\n if (item && !item.disabled) item.focus();\n else contentRef.current?.focus();\n }, [contentNode, focusIndex, onActionAfterDismiss, open]);\n\n const itemIsDisabled = (item: MenuItem) =>\n disabled || asyncState.status === \"loading\" || Boolean(item.disabled);\n const firstEnabled = () => items.findIndex((item) => !itemIsDisabled(item));\n const lastEnabled = () => {\n for (let index = items.length - 1; index >= 0; index -= 1) {\n if (items[index] && !itemIsDisabled(items[index]!)) return index;\n }\n return firstEnabled();\n };\n const focusAt = (index: number) => {\n setFocusIndex(index);\n queueMicrotask(() => itemRefs.current.get(index)?.focus());\n };\n const moveFocus = (step: 1 | -1) => {\n for (let offset = 1; offset <= items.length; offset += 1) {\n const next = (focusIndex + step * offset + items.length) % items.length;\n if (items[next] && !itemIsDisabled(items[next]!)) {\n focusAt(next);\n return;\n }\n }\n };\n const close = (reason: MenuOpenChangeReason, restore: boolean) => {\n if (restore) restoreFocusRef.current = true;\n changeOpen(false, { reason });\n };\n const openMenu = (focus: \"first\" | \"last\" = \"first\") => {\n if (disabled) return;\n const index = focus === \"first\" ? firstEnabled() : lastEnabled();\n setFocusIndex(index);\n changeOpen(true, { reason: \"trigger\" });\n };\n\n const itemSelected = (id: string) =>\n selectionMode === \"single\"\n ? singleValue === id\n : selectionMode === \"multiple\"\n ? multipleValue.has(id)\n : false;\n\n const activateItem = (item: MenuItem, index: number) => {\n if (itemIsDisabled(item)) return;\n onAction?.(item.id);\n if (selectionMode === \"multiple\") {\n const next = new Set(multipleValue);\n if (next.has(item.id)) next.delete(item.id);\n else next.add(item.id);\n setMultipleValue(next);\n focusAt(index);\n return;\n }\n if (selectionMode === \"single\") setSingleValue(item.id);\n afterDismissIdRef.current = item.id;\n close(\"selection\", true);\n };\n\n const runTypeahead = (key: string) => {\n const result = resolveMenuTypeahead(\n items.map((item) => ({ textValue: menuTextValue(item), disabled: itemIsDisabled(item) })),\n focusIndex, key, typeaheadRef.current, Date.now(),\n );\n typeaheadRef.current = result.state;\n if (result.index !== undefined) focusAt(result.index);\n };\n\n useEffect(() => {\n if (!open) return;\n const handlePointerDown = (event: PointerEvent) => {\n if (\n event.target instanceof Node &&\n !wrapperRef.current?.contains(event.target) &&\n !contentRef.current?.contains(event.target)\n ) {\n close(\"outside\", false);\n }\n };\n document.addEventListener(\"pointerdown\", handlePointerDown);\n return () => document.removeEventListener(\"pointerdown\", handlePointerDown);\n });\n\n const triggerProps = trigger.props;\n const renderedTrigger = cloneElement(trigger, {\n ref: composeRefs(triggerProps.ref, triggerRef),\n \"aria-controls\": id,\n \"aria-expanded\": open,\n \"aria-haspopup\": \"menu\",\n \"aria-disabled\": disabled || undefined,\n disabled: triggerProps.disabled || disabled,\n onClick: (event) => {\n triggerProps.onClick?.(event);\n if (event.defaultPrevented || triggerProps.disabled || disabled) return;\n if (open) close(\"trigger\", false);\n else openMenu();\n },\n onKeyDown: (event) => {\n triggerProps.onKeyDown?.(event);\n if (event.defaultPrevented) return;\n if (event.key === \"ArrowDown\" || event.key === \"Enter\" || event.key === \" \") {\n event.preventDefault();\n openMenu(\"first\");\n } else if (event.key === \"ArrowUp\") {\n event.preventDefault();\n openMenu(\"last\");\n }\n },\n });\n\n const handleMenuKeyDown = (event: ReactKeyboardEvent<HTMLDivElement>) => {\n if (event.key === \"ArrowDown\") {\n event.preventDefault();\n moveFocus(1);\n } else if (event.key === \"ArrowUp\") {\n event.preventDefault();\n moveFocus(-1);\n } else if (event.key === \"Home\") {\n event.preventDefault();\n focusAt(firstEnabled());\n } else if (event.key === \"End\") {\n event.preventDefault();\n focusAt(lastEnabled());\n } else if (event.key === \"Escape\") {\n event.preventDefault();\n close(\"escape\", true);\n } else if (event.key === \"Tab\") {\n close(\"tab\", false);\n } else if (\n event.key.length === 1 &&\n event.key !== \" \" &&\n !event.altKey &&\n !event.ctrlKey &&\n !event.metaKey\n ) {\n event.preventDefault();\n runTypeahead(event.key);\n }\n };\n\n const showItems = asyncState.status !== \"empty\" && asyncState.status !== \"error\";\n\n return (\n <span ref={wrapperRef} className=\"hjm-menu\" style={layoutStyle} data-state={open ? \"open\" : \"closed\"}>\n {renderedTrigger}\n {open ? (\n <AnchoredPortal\n anchorRef={triggerRef}\n ssrFallback=\"inline\"\n {...(portalContainer === undefined ? {} : { container: portalContainer })}\n >\n <div\n ref={setMenuContentRef}\n id={id}\n role=\"menu\"\n aria-label={label}\n className={classNames(\"hjm-menu__content\", className)}\n data-density={density}\n data-async-state={asyncState.status}\n data-placement={popupPosition.placement}\n data-align={popupPosition.align}\n aria-busy={\n asyncState.status === \"loading\" || asyncState.status === \"loadingMore\" || undefined\n }\n style={popupPosition.style}\n tabIndex={-1}\n onKeyDown={handleMenuKeyDown}\n >\n {asyncState.status !== \"idle\" ? (\n <div\n className=\"hjm-menu__state-message\"\n role={asyncState.status === \"error\" ? \"alert\" : \"status\"}\n >\n {asyncState.message}\n </div>\n ) : null}\n {showItems ? (sections === undefined ? items.map((item, index) => {\n const selected = itemSelected(item.id);\n const itemDisabled = itemIsDisabled(item);\n const role = selectionMode === \"single\"\n ? \"menuitemradio\"\n : selectionMode === \"multiple\"\n ? \"menuitemcheckbox\"\n : \"menuitem\";\n return renderMenuItem(item, index, role, selected, itemDisabled);\n }) : sections.map((section, sectionIndex) => {\n const sectionLabelId = `${id}-section-${sectionIndex}`;\n const firstIndex = sections\n .slice(0, sectionIndex)\n .reduce((total, current) => total + current.items.length, 0);\n return (\n <div key={section.id} className=\"hjm-menu__section-boundary\">\n {sectionIndex > 0 ? <div role=\"separator\" className=\"hjm-menu__separator\" /> : null}\n <div\n role=\"group\"\n aria-labelledby={section.label ? sectionLabelId : undefined}\n aria-label={section.label ? undefined : section.accessibilityLabel}\n className=\"hjm-menu__section\"\n >\n {section.label ? (\n <div id={sectionLabelId} className=\"hjm-menu__section-label\">\n {section.label}\n </div>\n ) : null}\n {section.items.map((item, itemIndex) => {\n const index = firstIndex + itemIndex;\n const selected = itemSelected(item.id);\n const itemDisabled = itemIsDisabled(item);\n const role = selectionMode === \"single\"\n ? \"menuitemradio\"\n : selectionMode === \"multiple\"\n ? \"menuitemcheckbox\"\n : \"menuitem\";\n return renderMenuItem(item, index, role, selected, itemDisabled);\n })}\n </div>\n </div>\n );\n })) : null}\n </div>\n </AnchoredPortal>\n ) : null}\n </span>\n );\n\n function renderMenuItem(\n item: MenuItem,\n index: number,\n role: \"menuitem\" | \"menuitemradio\" | \"menuitemcheckbox\",\n selected: boolean,\n itemDisabled: boolean,\n ) {\n return (\n <button\n key={item.id}\n ref={(node) => {\n if (node) {\n itemRefs.current.set(index, node);\n if (open && !itemDisabled && index === focusIndex) {\n queueMicrotask(() => {\n if (node.isConnected && open) node.focus();\n });\n }\n } else itemRefs.current.delete(index);\n }}\n type=\"button\"\n role={role}\n aria-checked={selectionMode === \"action\" ? undefined : selected}\n className=\"hjm-menu__item\"\n data-tone={item.tone ?? menuRecipe.defaults.itemTone}\n data-state={itemDisabled ? \"disabled\" : selected ? \"selected\" : \"idle\"}\n data-focus={index === focusIndex || undefined}\n disabled={itemDisabled}\n tabIndex={!itemDisabled && index === focusIndex ? 0 : -1}\n onClick={() => activateItem(item, index)}\n >\n {item.tone === \"danger\" ? (\n <span className=\"hjm-menu__danger-indicator\" aria-hidden=\"true\">!</span>\n ) : null}\n {item.leading ? <span className=\"hjm-menu__leading\" aria-hidden=\"true\">{item.leading}</span> : null}\n <span className=\"hjm-menu__copy\">\n <span>{item.label}</span>\n {item.description ? <span className=\"hjm-menu__description\">{item.description}</span> : null}\n </span>\n {item.trailing ? <span className=\"hjm-menu__trailing\">{item.trailing}</span> : null}\n </button>\n );\n }\n});\n"]}