@omerdlw/base-framework 2.0.1 → 3.0.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +4 -1
- package/dist/{chunk-XASQT4CQ.js → chunk-66EYJBIP.js} +47 -27
- package/dist/chunk-66EYJBIP.js.map +1 -0
- package/dist/{chunk-SKBITB5X.js → chunk-CYU6SGAL.js} +3 -3
- package/dist/{chunk-SKBITB5X.js.map → chunk-CYU6SGAL.js.map} +1 -1
- package/dist/{chunk-6SG7V77J.js → chunk-HHWRTQKQ.js} +100 -67
- package/dist/chunk-HHWRTQKQ.js.map +1 -0
- package/dist/chunk-HLL5EHXC.js +485 -0
- package/dist/chunk-HLL5EHXC.js.map +1 -0
- package/dist/{chunk-A5RE3F6O.js → chunk-JIXBFFRD.js} +193 -357
- package/dist/chunk-JIXBFFRD.js.map +1 -0
- package/dist/{chunk-6ZJVLUBE.js → chunk-M57SNWXK.js} +8 -6
- package/dist/chunk-M57SNWXK.js.map +1 -0
- package/dist/chunk-RIOKLMYM.js +145 -0
- package/dist/chunk-RIOKLMYM.js.map +1 -0
- package/dist/{chunk-QXR55VVS.js → chunk-TG6NMHXI.js} +241 -162
- package/dist/chunk-TG6NMHXI.js.map +1 -0
- package/dist/index.js +7 -5
- package/dist/modules/ambient/analyze.d.ts +18 -3
- package/dist/modules/ambient/analyze.d.ts.map +1 -1
- package/dist/modules/ambient/dom.d.ts +14 -1
- package/dist/modules/ambient/dom.d.ts.map +1 -1
- package/dist/modules/ambient/hooks.d.ts.map +1 -1
- package/dist/modules/ambient/index.d.ts +2 -2
- package/dist/modules/ambient/index.d.ts.map +1 -1
- package/dist/modules/ambient/index.js +1 -1
- package/dist/modules/ambient/server/index.d.ts +1 -1
- package/dist/modules/ambient/server/index.d.ts.map +1 -1
- package/dist/modules/ambient/server/index.js +2 -2
- package/dist/modules/ambient/server/index.js.map +1 -1
- package/dist/modules/ambient/settings.d.ts +1 -0
- package/dist/modules/ambient/settings.d.ts.map +1 -1
- package/dist/modules/ambient/types.d.ts +13 -0
- package/dist/modules/ambient/types.d.ts.map +1 -1
- package/dist/modules/ambient/worker/index.js +1 -1
- package/dist/modules/context-menu/index.js +4 -3
- package/dist/modules/dock/cards.d.ts.map +1 -1
- package/dist/modules/dock/constants.d.ts +1 -20
- package/dist/modules/dock/constants.d.ts.map +1 -1
- package/dist/modules/dock/index.js +3 -2
- package/dist/modules/dock/routing/guards.d.ts +1 -1
- package/dist/modules/dock/routing/navigation.d.ts +7 -4
- package/dist/modules/dock/routing/navigation.d.ts.map +1 -1
- package/dist/modules/dock/runtime/display.d.ts +31 -2
- package/dist/modules/dock/runtime/display.d.ts.map +1 -1
- package/dist/modules/dock/runtime/dock.d.ts +2 -2
- package/dist/modules/dock/runtime/dock.d.ts.map +1 -1
- package/dist/modules/dock/types.d.ts +5 -27
- package/dist/modules/dock/types.d.ts.map +1 -1
- package/dist/modules/index.d.ts +3 -2
- package/dist/modules/index.d.ts.map +1 -1
- package/dist/modules/index.js +7 -5
- package/dist/modules/loading/context.d.ts.map +1 -1
- package/dist/modules/loading/index.js +1 -1
- package/dist/modules/navigation/constants.d.ts +37 -0
- package/dist/modules/navigation/constants.d.ts.map +1 -0
- package/dist/modules/navigation/context.d.ts +10 -0
- package/dist/modules/navigation/context.d.ts.map +1 -0
- package/dist/modules/navigation/hooks.d.ts +29 -0
- package/dist/modules/navigation/hooks.d.ts.map +1 -0
- package/dist/modules/navigation/index.d.ts +10 -0
- package/dist/modules/navigation/index.d.ts.map +1 -0
- package/dist/modules/navigation/index.js +81 -0
- package/dist/modules/navigation/index.js.map +1 -0
- package/dist/modules/navigation/listeners.d.ts +15 -0
- package/dist/modules/navigation/listeners.d.ts.map +1 -0
- package/dist/modules/navigation/module.d.ts +25 -0
- package/dist/modules/navigation/module.d.ts.map +1 -0
- package/dist/modules/navigation/navigator.d.ts +8 -0
- package/dist/modules/navigation/navigator.d.ts.map +1 -0
- package/dist/modules/navigation/settings.d.ts +10 -0
- package/dist/modules/navigation/settings.d.ts.map +1 -0
- package/dist/modules/navigation/state.d.ts +20 -0
- package/dist/modules/navigation/state.d.ts.map +1 -0
- package/dist/modules/navigation/types.d.ts +168 -0
- package/dist/modules/navigation/types.d.ts.map +1 -0
- package/dist/modules/navigation/utils.d.ts +11 -0
- package/dist/modules/navigation/utils.d.ts.map +1 -0
- package/docs/getting-started.md +2 -0
- package/docs/modules/README.md +5 -1
- package/docs/modules/ambient.md +9 -6
- package/docs/modules/dock.md +12 -10
- package/docs/modules/loading.md +2 -2
- package/docs/modules/navigation.md +216 -0
- package/docs/proposals/navigation.md +209 -0
- package/package.json +6 -1
- package/templates/AGENTS.md +2 -0
- package/dist/chunk-6SG7V77J.js.map +0 -1
- package/dist/chunk-6ZJVLUBE.js.map +0 -1
- package/dist/chunk-A5RE3F6O.js.map +0 -1
- package/dist/chunk-QXR55VVS.js.map +0 -1
- package/dist/chunk-XASQT4CQ.js.map +0 -1
- package/dist/modules/dock/routing/transactions.d.ts +0 -21
- package/dist/modules/dock/routing/transactions.d.ts.map +0 -1
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/modules/dock/helpers.ts","../src/modules/dock/paths.ts","../src/modules/dock/surface/helpers.ts","../src/modules/dock/surface/context.tsx","../src/modules/dock/constants.ts","../src/modules/dock/context.ts","../src/modules/dock/surface/definition.ts","../src/modules/dock/surface/machine.ts","../src/modules/dock/dom.ts","../src/modules/dock/motion.ts","../src/modules/dock/surface/hooks.tsx","../src/modules/dock/styles.ts","../src/modules/dock/hooks.ts","../src/modules/dock/runtime/pipeline.ts","../src/modules/dock/layout.ts","../src/modules/dock/routing/guards.ts","../src/modules/dock/routing/navigation.ts","../src/modules/dock/cards.tsx","../src/modules/dock/hud.ts","../src/modules/dock/routing/breadcrumbs.tsx","../src/modules/dock/surface/view-model.ts","../src/modules/dock/status/model.tsx","../src/modules/dock/state.ts","../src/modules/dock/status/events.tsx","../src/modules/dock/status/hooks.ts","../src/modules/dock/runtime/display.ts","../src/modules/dock/runtime/dock.tsx","../src/modules/dock/overlay.tsx","../src/modules/dock/routing/continuity.ts","../src/modules/dock/surface/stack.ts","../src/modules/dock/runtime/commands.ts","../src/modules/dock/provider.tsx","../src/modules/dock/module.tsx"],"names":["isValidElement","surfaceEntryFactory","useMemo","stepSurfaceFactory","useCallback","useEffect","motion","createContext","use","useRef","useState","navigator","usePathname","useSyncExternalStore","useRouter","jsx","useMotionValue","operation","DockCardBanner","jsxs","DockCommand","DockCommandBar","DockDescription","DockTitle","Badge","DockIconOverlay","DockIcon","DockCardHeader","DockSurfaceExtensionsBar","DockMediaScrubber","DockHudView","DockSurfaceControls","LoadingItemContent","DockCardItem","DockMediaControls","DockBreadcrumbsCard","maxEntries","useReducer"],"mappings":"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","file":"chunk-JIXBFFRD.js","sourcesContent":["import { isValidElement, type ReactNode } from \"react\";\nimport {\n createScheduler,\n isObject as isObjectLike,\n type CoreSchedulerOptions,\n} from \"@/utils\";\nimport {\n type DockComponent,\n type DockHudDescriptor,\n} from \"./types\";\n\nexport function toObject(value: unknown): Record<string, unknown> {\n return isObjectLike(value) ? (value as Record<string, unknown>) : {};\n}\n\nexport function isValidComponentType(type: unknown): type is DockComponent {\n if (typeof type === \"function\") return true;\n return Boolean(\n type != null &&\n typeof type === \"object\" &&\n !isValidElement(type) &&\n \"$$typeof\" in type,\n );\n}\n\nexport function resolveComponentType(\n ...candidates: unknown[]\n): DockComponent | null {\n return candidates.find(isValidComponentType) ?? null;\n}\n\nexport function resolveRenderableContent(\n ...candidates: ReactNode[]\n): ReactNode | null {\n return (\n candidates.find(\n (candidate) => candidate !== null && candidate !== undefined,\n ) ?? null\n );\n}\n\nfunction collectSearchableText(\n value: unknown,\n visitedObjects: WeakSet<object>,\n): string {\n if (typeof value === \"string\") return value;\n if (typeof value === \"number\" || typeof value === \"boolean\") {\n return String(value);\n }\n if (Array.isArray(value)) {\n if (visitedObjects.has(value)) return \"\";\n visitedObjects.add(value);\n const text = value\n .map((entry) => collectSearchableText(entry, visitedObjects))\n .join(\" \");\n visitedObjects.delete(value);\n return text;\n }\n if (isValidElement(value)) {\n if (visitedObjects.has(value)) return \"\";\n visitedObjects.add(value);\n const text = collectSearchableText(\n (value.props as { children?: ReactNode } | null)?.children,\n visitedObjects,\n );\n visitedObjects.delete(value);\n return text;\n }\n if (value && typeof value === \"object\") {\n if (visitedObjects.has(value)) return \"\";\n visitedObjects.add(value);\n return Object.values(value)\n .map((entry) => collectSearchableText(entry, visitedObjects))\n .join(\" \");\n }\n return \"\";\n}\n\nexport function toSearchableText(value: unknown): string {\n return collectSearchableText(value, new WeakSet());\n}\n\nexport function normalizeUpper(value: unknown): string {\n return String(value || \"\")\n .trim()\n .toUpperCase();\n}\n\nexport function formatMediaTime(seconds: number | string = 0): string {\n const sec = Math.max(0, Math.floor(Number(seconds) || 0));\n const m = Math.floor(sec / 60);\n const s = sec % 60;\n return `${m}:${s < 10 ? \"0\" : \"\"}${s}`;\n}\n\nexport function isHudDescriptor(value: unknown): value is DockHudDescriptor {\n return (\n isObjectLike(value) &&\n !isValidElement(value) &&\n (\"component\" in value ||\n \"content\" in value ||\n \"node\" in value ||\n \"element\" in value ||\n \"isActive\" in value ||\n \"id\" in value)\n );\n}\n\nexport function createDockScheduler(options: CoreSchedulerOptions = {}) {\n return createScheduler({\n defaultLabel: \"dock-task\",\n ...options,\n });\n}\n","import { normalizePath } from \"@/utils\";\n\nexport function isSamePath(left: unknown, right: unknown): boolean {\n const normalizedLeft = normalizePath(left);\n const normalizedRight = normalizePath(right);\n return Boolean(\n normalizedLeft && normalizedRight && normalizedLeft === normalizedRight,\n );\n}\n\nexport function isPathPrefix(\n candidatePath: unknown,\n pathname: unknown,\n): boolean {\n const normalizedCandidate = normalizePath(candidatePath);\n const normalizedPathname = normalizePath(pathname);\n if (!normalizedCandidate || !normalizedPathname) return false;\n if (normalizedCandidate === normalizedPathname) return true;\n if (normalizedCandidate === \"/\") return normalizedPathname.startsWith(\"/\");\n return normalizedPathname.startsWith(`${normalizedCandidate}/`);\n}\n\nexport function isInlineActionPathMatch(\n path: unknown,\n pathname: unknown,\n): boolean {\n return (\n isSamePath(path, pathname) || (path !== \"/\" && isPathPrefix(path, pathname))\n );\n}\n\nexport function isSafeInternalHref(value: unknown): boolean {\n const href = typeof value === \"string\" ? value.trim() : \"\";\n return href.startsWith(\"/\") && !href.startsWith(\"//\");\n}\n\nexport function getDockLocationKey({\n hash = \"\",\n pathname = \"/\",\n search = \"\",\n}: {\n hash?: string;\n pathname?: string;\n search?: string;\n} = {}): string {\n const normalizedPathname = String(pathname || \"/\").trim() || \"/\";\n const normalizedSearch = String(search || \"\").trim();\n const normalizedHash = String(hash || \"\").trim();\n const query = normalizedSearch\n ? normalizedSearch.startsWith(\"?\")\n ? normalizedSearch\n : `?${normalizedSearch}`\n : \"\";\n const fragment = normalizedHash\n ? normalizedHash.startsWith(\"#\")\n ? normalizedHash\n : `#${normalizedHash}`\n : \"\";\n return `${normalizedPathname}${query}${fragment}`;\n}\n","import { isValidElement } from \"react\";\nimport { isPlainObject } from \"@/utils\";\nimport { isValidComponentType } from \"../helpers\";\nimport { isSafeInternalHref } from \"../paths\";\nimport {\n type NormalizedSurfaceExtension,\n type SurfaceDescriptor,\n type SurfaceExtension,\n type SurfaceFlowDefinition,\n type SurfaceFlowReturnInput,\n type SurfaceReturnHandshake,\n type SurfaceReturnHandshakeInput,\n} from \"../types\";\n\nexport function isSurfaceDescriptor(\n value: unknown,\n): value is SurfaceDescriptor {\n return (\n value != null &&\n typeof value === \"object\" &&\n !Array.isArray(value) &&\n !isValidElement(value)\n );\n}\n\nlet generatedExtensionId = 0;\n\nexport function normalizeSurfaceExtension(\n input: unknown,\n): NormalizedSurfaceExtension | null {\n if (!input) return null;\n if (isValidElement(input)) {\n return {\n align: \"left\" as const,\n className: \"\",\n component: null,\n content: input,\n id: `ext-${++generatedExtensionId}`,\n order: 0,\n props: {},\n unstyled: false,\n };\n }\n if (typeof input !== \"object\") return null;\n const extension = input as SurfaceExtension;\n\n const component = isValidComponentType(extension.component)\n ? extension.component\n : null;\n const content =\n (isValidElement(extension.content) ||\n (typeof extension.content === \"string\" && extension.content !== \"\") ||\n typeof extension.content === \"number\")\n ? extension.content\n : null;\n\n if (!component && content == null) return null;\n\n const align =\n extension.align === \"right\" || extension.align === \"end\"\n ? \"right\"\n : extension.align === \"center\"\n ? \"center\"\n : \"left\";\n\n return {\n align,\n className:\n typeof extension.className === \"string\" ? extension.className : \"\",\n component,\n content,\n id: String(\n extension.id || extension.key || `ext-${++generatedExtensionId}`,\n ),\n order: Number.isFinite(Number(extension.order))\n ? Number(extension.order)\n : 0,\n props: isPlainObject(extension.props) ? extension.props : {},\n unstyled: Boolean(extension.unstyled),\n };\n}\n\nexport function normalizeSurfaceFlowSnapshot(\n value: unknown,\n): Record<string, unknown> | null {\n if (!isPlainObject(value)) return null;\n return { ...value };\n}\n\nexport function createSurfaceReturnHandshake(\n input: SurfaceReturnHandshakeInput,\n): SurfaceReturnHandshake | null {\n const source = typeof input === \"string\" ? { pathname: input } : input;\n const pathname =\n typeof source?.pathname === \"string\" ? source.pathname.trim() : \"\";\n\n if (!isSafeInternalHref(pathname)) return null;\n\n return {\n focusKey:\n typeof source?.focusKey === \"string\" && source.focusKey.trim()\n ? source.focusKey.trim()\n : null,\n pathname,\n restoreScroll: source?.restoreScroll !== false,\n returnOnCancel: source?.returnOnCancel === true,\n };\n}\n\nexport function resolveSurfaceFlowReturnHandshake(\n definition: Pick<SurfaceFlowDefinition, \"returnHandshake\"> | null | undefined,\n input: unknown,\n): SurfaceReturnHandshake | null {\n const flowInput = (\n input && typeof input === \"object\" ? input : null\n ) as SurfaceFlowReturnInput | null;\n const inputHandshake =\n flowInput?.returnHandshake ??\n (flowInput?.returnTo\n ? {\n focusKey: flowInput.returnFocusKey,\n pathname: flowInput.returnTo,\n restoreScroll: flowInput.restoreReturnScroll,\n returnOnCancel: flowInput.returnOnCancel,\n }\n : null);\n const baseHandshake = definition?.returnHandshake;\n\n if (!baseHandshake && !inputHandshake) return null;\n return createSurfaceReturnHandshake({ ...baseHandshake, ...inputHandshake });\n}\n","\"use client\";\n\nimport {\n createContext,\n use,\n useCallback,\n useEffect,\n useMemo,\n} from \"react\";\nimport { getOrCreateGlobalContext } from \"@/kernel\";\nimport { createStore } from \"@/utils\";\nimport {\n type NormalizedSurfaceExtension,\n type DockSlotContent,\n type SurfaceId,\n} from \"../types\";\nimport { normalizeSurfaceExtension } from \"./helpers\";\n\nexport type SurfaceKey = SurfaceId | string | null | undefined;\n\nexport const SurfaceExtensionsContext = getOrCreateGlobalContext<{\n extensions: SurfaceExtensionsStore;\n headerActions: SurfaceHeaderActionStore;\n} | null>(\"SurfaceExtensionsContext\", null);\n\nexport const SurfaceItemContext = getOrCreateGlobalContext<{\n id: SurfaceKey;\n width: number | string | null;\n}>(\"SurfaceItemContext\", {\n id: null,\n width: null,\n});\n\nexport function useSurfaceDimensions() {\n const { width } = use(SurfaceItemContext);\n return useMemo(() => ({ width }), [width]);\n}\n\nexport function useSurfaceId() {\n return use(SurfaceItemContext).id;\n}\n\nexport function useSurfaceHeader() {\n const store = use(SurfaceExtensionsContext)?.headerActions ?? null;\n const surfaceId = useSurfaceId();\n return useCallback(\n (\n patch:\n | { headerAction?: DockSlotContent }\n | ((current: object) => { headerAction?: DockSlotContent }),\n ) => {\n if (!store) return;\n const data = typeof patch === \"function\" ? patch({}) : patch;\n if (data?.headerAction !== undefined)\n store.setAction(surfaceId, data.headerAction);\n },\n [store, surfaceId],\n );\n}\n\nexport function useSurfaceAction(action: DockSlotContent | undefined) {\n const store = use(SurfaceExtensionsContext)?.headerActions ?? null;\n const surfaceId = useSurfaceId();\n useEffect(() => {\n if (!store || action === undefined) return;\n store.setAction(surfaceId, action);\n return () => store.removeAction(surfaceId);\n }, [store, surfaceId, action]);\n}\n\nexport class SurfaceHeaderActionStore {\n private store = createStore<{\n actionsBySurface: Record<string, DockSlotContent>;\n version: number;\n }>({\n actionsBySurface: {},\n version: 0,\n });\n\n get version() {\n return this.store.getSnapshot().version;\n }\n\n subscribe = (listener: () => void) => this.store.subscribe(listener);\n\n getAction = (surfaceId: SurfaceKey) => {\n const sId = surfaceId != null ? String(surfaceId) : \"active\";\n const { actionsBySurface } = this.store.getSnapshot();\n return actionsBySurface[sId] ?? actionsBySurface.active ?? actionsBySurface.global ?? null;\n };\n\n setAction = (surfaceId: SurfaceKey, action: DockSlotContent) => {\n const sId = surfaceId != null ? String(surfaceId) : \"active\";\n const current = this.store.getSnapshot();\n if (current.actionsBySurface[sId] === action) return;\n this.store.setState({\n actionsBySurface: {\n ...current.actionsBySurface,\n [sId]: action,\n },\n version: current.version + 1,\n });\n };\n\n removeAction = (surfaceId: SurfaceKey) => {\n const sId = surfaceId != null ? String(surfaceId) : \"active\";\n const current = this.store.getSnapshot();\n if (!(sId in current.actionsBySurface)) return;\n const { [sId]: _, ...nextActions } = current.actionsBySurface;\n this.store.setState({\n actionsBySurface: nextActions,\n version: current.version + 1,\n });\n };\n\n clearSurface = (surfaceId: SurfaceKey) => this.removeAction(surfaceId);\n}\n\nexport class SurfaceExtensionsStore {\n private extensionsBySurface = new Map<\n string,\n Map<string, NormalizedSurfaceExtension>\n >();\n private cachedListBySurface = new Map<string, NormalizedSurfaceExtension[]>();\n private store = createStore<{ version: number }>({ version: 0 });\n\n get version() {\n return this.store.getSnapshot().version;\n }\n\n subscribe = (listener: () => void) => this.store.subscribe(listener);\n\n private notify = () => {\n this.cachedListBySurface.clear();\n this.store.setState((prev) => ({ version: prev.version + 1 }));\n };\n\n getExtensionsForSurface = (\n surfaceId: SurfaceKey,\n ): NormalizedSurfaceExtension[] => {\n const sId = surfaceId != null ? String(surfaceId) : \"active\";\n if (this.cachedListBySurface.has(sId))\n return this.cachedListBySurface.get(sId)!;\n\n const globalExts = this.extensionsBySurface.get(\"global\");\n const activeExts = this.extensionsBySurface.get(\"active\");\n const surfaceExts =\n sId !== \"global\" && sId !== \"active\"\n ? this.extensionsBySurface.get(sId)\n : undefined;\n\n let fallbackExts: Map<string, NormalizedSurfaceExtension> | undefined;\n if (\n !globalExts &&\n !activeExts &&\n !surfaceExts &&\n this.extensionsBySurface.size > 0\n ) {\n for (const map of this.extensionsBySurface.values()) {\n if (map.size > 0) {\n fallbackExts = map;\n break;\n }\n }\n }\n\n if (!globalExts && !activeExts && !surfaceExts && !fallbackExts) {\n const empty: NormalizedSurfaceExtension[] = [];\n this.cachedListBySurface.set(sId, empty);\n return empty;\n }\n\n const merged = new Map([\n ...(globalExts || []),\n ...(activeExts || []),\n ...(surfaceExts || []),\n ...(fallbackExts || []),\n ]);\n const result = Array.from(merged.values()).sort(\n (a, b) => a.order - b.order,\n );\n this.cachedListBySurface.set(sId, result);\n return result;\n };\n\n setExtension = (surfaceId: SurfaceKey, extension: unknown) => {\n if (!extension) return;\n const normalized = normalizeSurfaceExtension(extension);\n if (!normalized) return;\n\n const sId = surfaceId != null ? String(surfaceId) : \"active\";\n let surfaceMap = this.extensionsBySurface.get(sId);\n if (!surfaceMap) {\n surfaceMap = new Map();\n this.extensionsBySurface.set(sId, surfaceMap);\n }\n\n const prev = surfaceMap.get(normalized.id);\n if (\n prev &&\n prev.content === normalized.content &&\n prev.align === normalized.align &&\n prev.order === normalized.order &&\n prev.className === normalized.className &&\n prev.unstyled === normalized.unstyled &&\n prev.component === normalized.component &&\n prev.props === normalized.props\n )\n return;\n\n surfaceMap.set(normalized.id, normalized);\n this.notify();\n };\n\n removeExtension = (surfaceId: SurfaceKey, extensionId: string) => {\n if (!extensionId) return;\n const sId = surfaceId != null ? String(surfaceId) : \"active\";\n let removed = false;\n for (const [key, map] of this.extensionsBySurface.entries()) {\n if (key === sId || key === \"active\" || key === \"global\") {\n if (map.has(extensionId)) {\n map.delete(extensionId);\n if (map.size === 0) this.extensionsBySurface.delete(key);\n removed = true;\n }\n }\n }\n if (removed) this.notify();\n };\n\n clearSurface = (surfaceId: SurfaceKey) => {\n const sId = surfaceId != null ? String(surfaceId) : \"active\";\n this.extensionsBySurface.delete(sId);\n this.extensionsBySurface.delete(\"active\");\n this.notify();\n };\n}\n","import { defineThemeSpec } from \"@/theme\";\nimport { type DockMotion, type DockThemeSlot } from \"./types\";\n\nexport const DOCK_STYLE_SECTIONS = Object.freeze([\n \"card\",\n \"icon\",\n \"title\",\n \"description\",\n] as const);\n\nexport const DOCK_EVENTS = Object.freeze({\n NAVIGATE_START: \"DOCK_NAVIGATE_START\",\n NAVIGATE_END: \"DOCK_NAVIGATE_END\",\n UPDATE_BADGE: \"DOCK_UPDATE_BADGE\",\n NAVIGATE: \"DOCK_NAVIGATE\",\n GUARD: \"DOCK_GUARD\",\n NOT_FOUND: \"DOCK_NOT_FOUND\",\n STATUS_SET: \"DOCK_STATUS_SET\",\n STATUS_CLEAR: \"DOCK_STATUS_CLEAR\",\n} as const);\n\nexport const DOCK_HUD_RENDER_MODE = Object.freeze({\n COMPONENT: \"component\",\n NODE: \"node\",\n} as const);\n\nexport const DOCK_HUD_VARIANT = Object.freeze({\n EXPANDED: \"expanded\",\n PROGRESS: \"progress\",\n CUSTOM: \"custom\",\n} as const);\n\nexport const DOCK_HUD_PRIORITY = Object.freeze({\n TASK_PROGRESS: 30,\n CONTEXTUAL: 10,\n SELECTION: 20,\n CRITICAL: 50,\n DEFAULT: 0,\n MEDIA: 15,\n} as const);\n\nexport const DOCK_ATTENTION_KIND = Object.freeze({\n SURFACE: \"surface\",\n OPERATION: \"operation\",\n LOADING: \"loading\",\n STATUS: \"status\",\n ROUTE: \"route\",\n HUD: \"hud\",\n} as const);\n\nexport const DOCK_ATTENTION_PRIORITY = Object.freeze({\n STATUS_OVERLAY: 300,\n SURFACE: 400,\n OPERATION: 250,\n LOADING: 100,\n STATUS: 75,\n ROUTE: 0,\n HUD: 200,\n} as const);\n\nexport const DOCK_ATTENTION_PRIORITY_OFFSET_MAX = 99;\n\nexport const DOCK_SURFACE_RENDER_MODE = Object.freeze({\n COMPONENT: \"component\",\n NODE: \"node\",\n} as const);\n\nexport const DOCK_SURFACE_FLOW_STATUS = Object.freeze({\n OPEN: \"open\",\n COMPLETED: \"completed\",\n CANCELLED: \"cancelled\",\n} as const);\n\nexport const DOCK_SURFACE_PHASE = Object.freeze({\n IDLE: \"idle\",\n DISMISSING_ACTION: \"dismissing_action\",\n EXPANDING_BODY: \"expanding_body\",\n OPEN: \"open\",\n CLOSING_ANTICIPATION: \"closing_anticipation\",\n COLLAPSING_BODY: \"collapsing_body\",\n RESTORING_HEADER: \"restoring_header\",\n} as const);\n\nconst DOCK_VIEWPORT_GAP = 4;\nexport const VIEWPORT_MARGIN = 24;\n\nexport const DOCK_CARD_DIMENSIONS = Object.freeze({\n expandedY: -(68 + DOCK_VIEWPORT_GAP),\n chromeHeight: 20,\n collapsedY: -10,\n extensionShelfY: -42,\n extensionShelfScale: 0.94,\n extensionShelfHeight: 45,\n hudHeight: 52,\n actionGap: 10,\n height: 68,\n});\n\nexport const DOCK_CARD_LAYOUT = Object.freeze({\n collapsed: Object.freeze({\n offsetY: DOCK_CARD_DIMENSIONS.collapsedY,\n scale: 0.88,\n }),\n expanded: Object.freeze({\n offsetY: DOCK_CARD_DIMENSIONS.expandedY,\n scale: 1,\n }),\n extensionShelfY: DOCK_CARD_DIMENSIONS.extensionShelfY,\n extensionShelfScale: DOCK_CARD_DIMENSIONS.extensionShelfScale,\n extensionShelfHeight: DOCK_CARD_DIMENSIONS.extensionShelfHeight,\n chromeHeight: DOCK_CARD_DIMENSIONS.chromeHeight,\n hudHeight: DOCK_CARD_DIMENSIONS.hudHeight,\n actionGap: DOCK_CARD_DIMENSIONS.actionGap,\n baseHeight: DOCK_CARD_DIMENSIONS.height,\n});\n\nexport const DOCK_PREFETCH_INTENT_DELAY_MS = 90;\n// How long the previous card stays on top after the path changes while the\n// new page has not registered its own (a loading boundary, a slow fetch).\nexport const DOCK_PENDING_ROUTE_HOLD_MS = 2_500;\n\nexport const DOCK_CONTINUITY_EVENTS = Object.freeze({\n CLEAR: \"CLEAR\",\n CONSUME_RETURN: \"CONSUME_RETURN\",\n DELIVER_RETURN: \"DELIVER_RETURN\",\n RECORD: \"RECORD\",\n REMOVE: \"REMOVE\",\n} as const);\n\nexport const DOCK_CONTINUITY_MAX_ENTRIES = 32;\nexport const DOCK_SURFACE_RETURN_MAX_ENTRIES = 16;\n\nexport const DOCK_OPERATION_EVENTS = Object.freeze({\n CANCEL: \"CANCEL\",\n CLEAR: \"CLEAR\",\n COMPLETE: \"COMPLETE\",\n START: \"START\",\n UPDATE: \"UPDATE\",\n} as const);\n\nexport const DOCK_OPERATION_STATUS = Object.freeze({\n CANCELLED: \"cancelled\",\n COMPLETED: \"completed\",\n PENDING: \"pending\",\n} as const);\n\nexport const DOCK_OPERATION_MAX_ENTRIES = 24;\n\nexport const DOCK_FOCUSABLE_SELECTOR =\n 'a[href],button:not([disabled]),input:not([disabled]),select:not([disabled]),textarea:not([disabled]),[tabindex]:not([tabindex=\"-1\"])';\n\nexport const DOCK_FOCUS_RESTORE_BLOCKED_REASONS = Object.freeze([\n \"browser-back\",\n \"dock\",\n \"unmount\",\n] as const);\n\nexport const DOCK_LIFECYCLE = Object.freeze({\n CLOSING: \"closing\",\n OPENING: \"opening\",\n IDLE: \"idle\",\n OPEN: \"open\",\n} as const);\n\nexport const PLAYBACK_RATES = Object.freeze([1, 1.25, 1.5, 2] as const);\n\nexport const STATUS_PRIORITY: Record<string, number> = Object.freeze({\n GUARD: 120,\n ACCOUNT_DELETE: 115,\n APP_ERROR: 100,\n API_ERROR: 95,\n NOT_FOUND: 97,\n OFFLINE: 90,\n LOGOUT: 110,\n SIGNUP: 110,\n LOGIN: 110,\n ONLINE: 10,\n});\n\nexport const ERROR_STATUS_TYPES = new Set([\n \"GUARD\",\n \"ACCOUNT_DELETE\",\n \"APP_ERROR\",\n \"API_ERROR\",\n \"NOT_FOUND\",\n]);\n\nexport const OVERLAY_STATUS_STORAGE_KEY = \"dock_overlay_status\";\nexport const OVERLAY_STATUS_CLEAR_DURATION = 3000;\nexport const STATUS_CLEAR_DURATION = 4500;\n\nexport const API_ERROR_BATCH_DELAY = 300;\nexport const DOCK_HEIGHT_BUFFER = 16;\nexport const HEIGHT_EPSILON = 0.5;\nexport const MAX_VISIBLE_STACKED_CARDS = 3;\n\nexport const dockTheme = defineThemeSpec<DockThemeSlot, DockMotion>(\"dock\");\n","\"use client\";\n\nimport { useContext, type ComponentType } from \"react\";\nimport { useRequiredContext, useStore } from \"@/hooks\";\nimport { getOrCreateGlobalContext } from \"@/kernel\";\nimport { createStore, shallowEqual } from \"@/utils\";\nimport {\n useOptionalMediaActions,\n useOptionalMediaState,\n type MediaActions,\n type MediaState,\n} from \"../media\";\nimport {\n useOptionalLoadingActions,\n useOptionalLoadingState,\n type LoadingActions,\n type LoadingStateWithPage,\n} from \"../loading\";\nimport { useNotificationVisible } from \"../notification\";\nimport {\n type DockActions,\n type DockContextValue,\n type DockState,\n type ErrorActionsProps,\n type GuardActionsProps,\n} from \"./types\";\n\nexport const DockContext = getOrCreateGlobalContext<DockContextValue | null>(\n \"DockContext\",\n null,\n);\n\nexport function useDockState(): DockState {\n const { store } = useRequiredContext(\n DockContext,\n \"useDockState\",\n \"DockProvider\",\n );\n return useStore(store);\n}\n\nexport function useDockSelector<T>(\n selector: (state: DockState) => T,\n isEqual: (a: T, b: T) => boolean = Object.is,\n): T {\n const { store } = useRequiredContext(\n DockContext,\n \"useDockSelector\",\n \"DockProvider\",\n );\n return useStore(store, selector, isEqual);\n}\n\nexport function useDockActions(): DockActions {\n return useRequiredContext(DockContext, \"useDockActions\", \"DockProvider\")\n .actions;\n}\n\nexport function useDockHeight() {\n const dockHeight = useDockSelector((state) => state.dockHeight);\n return { dockHeight, padding: { paddingBottom: `${dockHeight}px` } };\n}\n\nexport const EMPTY_DOCK_STATE: DockState = Object.freeze({\n activeItem: null,\n activeOperation: null,\n activeSurfaceEntry: null,\n activeSurfaceId: null,\n contextActions: [],\n dockContinuity: [],\n dockHeight: 0,\n dockReturnHandoffs: [],\n expanded: false,\n hud: null,\n hudEntries: [],\n isHudActive: false,\n isSurfaceOpen: false,\n locationKey: \"\",\n operations: [],\n pathname: \"\",\n searchQuery: \"\",\n selectionMode: null,\n surfaceLifecycle: \"\",\n surfacePhase: \"\",\n surfaceStack: [],\n});\n\nconst NOOP_DOCK_STORE = createStore<DockState>(EMPTY_DOCK_STATE);\n\nexport function useOptionalDockState(): DockState;\nexport function useOptionalDockState<T>(\n selector: (state: DockState) => T,\n isEqual?: (a: T, b: T) => boolean,\n): T;\nexport function useOptionalDockState<T = DockState>(\n selector?: (state: DockState) => T,\n isEqual?: (a: T, b: T) => boolean,\n): T {\n const ctx = useContext(DockContext);\n return useStore(\n ctx?.store ?? NOOP_DOCK_STORE,\n selector as (state: DockState) => T,\n isEqual,\n );\n}\n\nexport function useOptionalDockActions(): DockActions | null {\n const ctx = useContext(DockContext);\n return ctx?.actions ?? null;\n}\n\nexport type DockMediaView = MediaState;\n\nexport function useDockMedia(): DockMediaView {\n return useOptionalMediaState((state) => state, shallowEqual);\n}\n\nexport function useDockHasMedia(): boolean {\n return useOptionalMediaState((state) => state.hasMedia);\n}\n\nexport const useDockMediaActions: () => MediaActions = useOptionalMediaActions;\n\nexport function useDockLoadingState(): LoadingStateWithPage {\n return useOptionalLoadingState();\n}\n\nexport const useDockLoadingActions: () => LoadingActions = useOptionalLoadingActions;\n\nexport const useDockNotificationVisible: () => boolean = useNotificationVisible;\n\nexport const statusActionDefaults: {\n error: ComponentType<ErrorActionsProps> | null;\n guard: ComponentType<GuardActionsProps> | null;\n} = { error: null, guard: null };\n\n","\"use client\";\n\nimport { isValidElement, lazy, useCallback, useMemo, type ReactNode } from \"react\";\nimport { isPlainObject } from \"@/utils\";\nimport {\n DOCK_SURFACE_RENDER_MODE,\n DOCK_SURFACE_FLOW_STATUS,\n} from \"../constants\";\nimport {\n isValidComponentType,\n resolveComponentType,\n resolveRenderableContent,\n} from \"../helpers\";\nimport {\n createSurfaceReturnHandshake,\n isSurfaceDescriptor,\n normalizeSurfaceExtension,\n normalizeSurfaceFlowSnapshot,\n resolveSurfaceFlowReturnHandshake,\n} from \"./helpers\";\nimport {\n type DockComponentProps,\n type NormalizedSurfaceDefinition,\n type NormalizedSurfaceExtension,\n type OpenSurfaceOptions,\n type SurfaceBuilderDefinition,\n type SurfaceBuilderFactory,\n type SurfaceDescriptor,\n type SurfaceFlowDefinition,\n type SurfaceFlowDefinitionInput,\n type SurfaceFlowSession,\n type SurfaceInput,\n type SurfaceResult,\n type SurfaceStep,\n type BoundSurfaceFactory,\n type DefineStepSurfaceOptions,\n type GeneralSurfaceHandle,\n type SurfaceHandle,\n type SurfaceFactoryLike,\n type SurfaceOpenFn,\n type UseSurfaceInput,\n} from \"../types\";\nimport { useDockActions, useDockSelector } from \"../context\";\n\nconst isNormalizedExtension = (\n extension: NormalizedSurfaceExtension | null,\n): extension is NormalizedSurfaceExtension => extension !== null;\n\nexport function normalizeExtensions(\n raw: SurfaceDescriptor[\"extensions\"],\n): NormalizedSurfaceExtension[] {\n if (!raw) return [];\n return (Array.isArray(raw) ? raw : [raw])\n .map(normalizeSurfaceExtension)\n .filter(isNormalizedExtension);\n}\n\nfunction normalizeSurfaceDefinition(\n input: unknown,\n config: OpenSurfaceOptions = {},\n {\n allowPrimitiveContent = false,\n defaultShowAction = false,\n }: {\n allowPrimitiveContent?: boolean;\n defaultShowAction?: boolean | null;\n } = {},\n): NormalizedSurfaceDefinition | null {\n const descriptor: SurfaceDescriptor | null =\n isSurfaceDescriptor(input) &&\n (isValidComponentType(input.component) ||\n typeof input.loader === \"function\" ||\n \"content\" in input ||\n \"node\" in input ||\n \"element\" in input ||\n (Array.isArray(input.steps) && input.steps.length > 0))\n ? input\n : null;\n const configuredSteps = descriptor?.steps ?? config?.steps;\n const steps: SurfaceStep[] | null =\n Array.isArray(configuredSteps) && configuredSteps.length > 0\n ? configuredSteps\n : null;\n const firstStep: SurfaceStep | null = steps?.[0] ?? null;\n\n const rawComponent = resolveComponentType(\n descriptor?.component,\n descriptor ? null : input,\n firstStep?.component,\n firstStep,\n );\n const component =\n rawComponent ??\n (typeof descriptor?.loader === \"function\"\n ? lazy(descriptor.loader)\n : typeof firstStep?.loader === \"function\"\n ? lazy(firstStep.loader)\n : null);\n const explicitContent = resolveRenderableContent(\n descriptor?.content,\n descriptor?.node,\n descriptor?.element,\n firstStep?.content,\n firstStep?.node,\n firstStep?.element,\n );\n const fallbackContent =\n !descriptor &&\n !component &&\n (isValidElement(input) || (allowPrimitiveContent && input != null))\n ? (input as ReactNode)\n : null;\n const content = explicitContent ?? fallbackContent;\n\n if (!component && content == null && !steps) return null;\n\n const directComponentInput = !descriptor && isValidComponentType(input);\n const extensions = normalizeExtensions(\n descriptor?.extensions ?? config?.extensions,\n );\n\n return {\n renderMode: component\n ? DOCK_SURFACE_RENDER_MODE.COMPONENT\n : DOCK_SURFACE_RENDER_MODE.NODE,\n component,\n content: component ? null : (content ?? (input as ReactNode)),\n props: component\n ? isPlainObject(descriptor?.props)\n ? descriptor!.props!\n : directComponentInput\n ? (config as DockComponentProps)\n : {}\n : {},\n action: descriptor?.action ?? config?.action ?? null,\n showAction:\n descriptor?.showAction ?? config?.showAction ?? defaultShowAction,\n dismissible: descriptor?.dismissible ?? config?.dismissible ?? true,\n onClose: descriptor?.onClose ?? config?.onClose ?? null,\n icon:\n descriptor?.icon ??\n descriptor?.header?.icon ??\n config?.icon ??\n config?.header?.icon ??\n null,\n title:\n descriptor?.title ??\n descriptor?.header?.title ??\n config?.title ??\n config?.header?.title ??\n null,\n description:\n descriptor?.description ??\n descriptor?.header?.description ??\n config?.description ??\n config?.header?.description ??\n null,\n descriptionMaxLines:\n descriptor?.descriptionMaxLines ?? config?.descriptionMaxLines ?? 2,\n trailing: descriptor?.trailing ?? config?.trailing ?? null,\n headerAction: descriptor?.headerAction ?? config?.headerAction ?? null,\n closeLabel: descriptor?.closeLabel ?? config?.closeLabel ?? null,\n width: descriptor?.width ?? config?.width ?? null,\n allowSwipeDismiss:\n descriptor?.allowSwipeDismiss ?? config?.allowSwipeDismiss ?? true,\n skipActionDismiss:\n descriptor?.skipActionDismiss ?? config?.skipActionDismiss ?? true,\n steps,\n currentStepIndex:\n descriptor?.currentStepIndex ?? config?.currentStepIndex ?? 0,\n syncWithUrl: descriptor?.syncWithUrl ?? config?.syncWithUrl ?? false,\n urlKey: descriptor?.urlKey ?? config?.urlKey ?? null,\n badge: descriptor?.badge ?? config?.badge ?? null,\n extensions,\n };\n}\n\nexport function createSurfaceEntryDefinition(\n input: SurfaceInput | unknown,\n config: OpenSurfaceOptions = {},\n): NormalizedSurfaceDefinition | null {\n return normalizeSurfaceDefinition(input, config);\n}\n\nexport function createSurfaceFlowBuilder(\n definition: SurfaceBuilderDefinition = {},\n): SurfaceBuilderFactory {\n const {\n action = null,\n allowSwipeDismiss = true,\n badge = null,\n closeLabel = null,\n component = null,\n loader,\n defaultProps = {},\n description = null,\n descriptionMaxLines = 2,\n dismissible = true,\n extensions = [],\n headerAction = null,\n icon = null,\n id = null,\n onClose = null,\n showAction = null,\n syncWithUrl = false,\n title = null,\n trailing = null,\n urlKey = null,\n width = null,\n ...extraConfig\n } = definition;\n\n const resolvedComponent =\n component ?? (typeof loader === \"function\" ? lazy(loader) : null);\n\n const createEntry = function surfaceEntryFactory(\n props: DockComponentProps = {},\n overrides: Partial<SurfaceDescriptor> = {},\n ): SurfaceDescriptor {\n const mergedProps = { ...defaultProps, ...props };\n const resolvedTitle =\n typeof title === \"function\" ? title(mergedProps) : title;\n const resolvedDescription =\n typeof description === \"function\"\n ? description(mergedProps)\n : description;\n const resolvedIcon = typeof icon === \"function\" ? icon(mergedProps) : icon;\n\n return {\n id: overrides.id ?? id,\n component: overrides.component ?? resolvedComponent,\n loader: overrides.loader ?? loader,\n props: mergedProps,\n title: resolvedTitle,\n description: resolvedDescription,\n icon: resolvedIcon,\n action,\n allowSwipeDismiss,\n badge,\n closeLabel,\n descriptionMaxLines,\n dismissible,\n extensions,\n headerAction,\n onClose,\n showAction,\n syncWithUrl,\n trailing,\n urlKey,\n width,\n ...extraConfig,\n ...overrides,\n };\n };\n\n const surfaceEntryFactory: SurfaceBuilderFactory = Object.assign(\n createEntry,\n {\n component: resolvedComponent,\n id,\n isSurfaceFactory: true as const,\n open: (\n openSurfaceFn: (entry: SurfaceDescriptor) => Promise<SurfaceResult>,\n props: DockComponentProps = {},\n overrides: Partial<SurfaceDescriptor> = {},\n ) => {\n if (typeof openSurfaceFn === \"function\") {\n return openSurfaceFn(createEntry(props, overrides));\n }\n },\n },\n );\n\n return surfaceEntryFactory;\n}\n\nexport function createInlineSurfaceEntry(\n surface: SurfaceInput | unknown,\n): NormalizedSurfaceDefinition | null {\n return normalizeSurfaceDefinition(\n surface,\n {},\n { allowPrimitiveContent: true, defaultShowAction: null },\n );\n}\n\nconst EMPTY_SURFACE_STACK: GeneralSurfaceHandle[\"surfaceStack\"] = [];\n\nexport function useSurface(\n surfaceDefinition?: UseSurfaceInput | null,\n): SurfaceHandle | GeneralSurfaceHandle {\n const { closeAllSurfaces, closeSurface, openSurface } = useDockActions();\n const rawSurfaceStack: GeneralSurfaceHandle[\"surfaceStack\"] = useDockSelector(\n (s) => s.surfaceStack,\n );\n const surfaceStack = rawSurfaceStack || EMPTY_SURFACE_STACK;\n\n const specificSurface = useMemo((): SurfaceHandle | null => {\n if (!surfaceDefinition) return null;\n\n const targetComponent =\n typeof surfaceDefinition === \"string\"\n ? null\n : typeof surfaceDefinition === \"function\"\n ? surfaceDefinition.component || surfaceDefinition\n : surfaceDefinition.component || null;\n\n const matchingEntry =\n surfaceStack.find(\n (entry) => targetComponent && entry.component === targetComponent,\n ) ?? null;\n const isThisSurfaceOpen = Boolean(matchingEntry);\n\n const open: SurfaceOpenFn = (props, overrides) => {\n const entry: SurfaceDescriptor =\n typeof surfaceDefinition === \"function\"\n ? surfaceDefinition(props, overrides)\n : typeof surfaceDefinition === \"string\"\n ? { id: surfaceDefinition, props, ...overrides }\n : {\n ...surfaceDefinition,\n props: { ...(surfaceDefinition.props || {}), ...props },\n ...overrides,\n };\n return openSurface(entry);\n };\n\n const close = (res?: SurfaceResult) =>\n closeSurface(res, matchingEntry?.id ?? null);\n const result = [\n open,\n {\n close,\n closeAll: closeAllSurfaces,\n isOpen: isThisSurfaceOpen,\n surfaceStack,\n },\n ] as SurfaceHandle;\n result.open = open;\n result.close = close;\n result.closeAll = closeAllSurfaces;\n result.isOpen = isThisSurfaceOpen;\n result.surfaceStack = surfaceStack;\n return result;\n }, [\n closeAllSurfaces,\n closeSurface,\n openSurface,\n surfaceDefinition,\n surfaceStack,\n ]);\n\n const generalSurface = useMemo(\n (): GeneralSurfaceHandle => ({\n closeAllSurfaces,\n closeSurface,\n openSurface,\n surfaceStack,\n }),\n [closeAllSurfaces, closeSurface, openSurface, surfaceStack],\n );\n\n return surfaceDefinition\n ? (specificSurface as SurfaceHandle)\n : generalSurface;\n}\n\nexport function defineSurface(\n definition: SurfaceBuilderDefinition = {},\n): BoundSurfaceFactory {\n const factory = createSurfaceFlowBuilder(definition) as BoundSurfaceFactory;\n factory.config = definition;\n factory.use = function useDefinedSurface() {\n return useSurface(factory) as SurfaceHandle;\n };\n return factory;\n}\n\nexport function defineStepSurface(definition: DefineStepSurfaceOptions = {}) {\n const {\n currentStepIndex = 0,\n defaultProps = {},\n id = \"wizard-surface\",\n steps = [],\n title = null,\n width = null,\n ...extraConfig\n } = definition;\n\n const stepSurfaceFactory = function stepSurfaceFactory(\n props: DockComponentProps = {},\n overrides: Partial<SurfaceDescriptor> = {},\n ): SurfaceDescriptor {\n const mergedProps = { ...defaultProps, ...props };\n const resolvedTitle =\n typeof title === \"function\" ? title(mergedProps) : title;\n const resolvedSteps =\n typeof steps === \"function\" ? steps(mergedProps) : steps;\n return {\n id: overrides.id ?? id,\n title: overrides.title ?? resolvedTitle,\n steps: resolvedSteps,\n currentStepIndex: overrides.currentStepIndex ?? currentStepIndex,\n props: mergedProps,\n width: overrides.width ?? width,\n ...extraConfig,\n ...overrides,\n };\n } as SurfaceFactoryLike & {\n config: DefineStepSurfaceOptions;\n id: string;\n use: () => SurfaceHandle;\n };\n\n stepSurfaceFactory.id = id;\n stepSurfaceFactory.config = {\n currentStepIndex,\n defaultProps,\n id,\n steps,\n title,\n width,\n ...extraConfig,\n };\n stepSurfaceFactory.use = function useDefinedStepSurface() {\n return useSurface(stepSurfaceFactory) as SurfaceHandle;\n };\n\n return stepSurfaceFactory;\n}\n\nexport function useSurfaceStep() {\n const { closeSurface, goToStep, popStep, pushStep } = useDockActions();\n const surfaceStack =\n useDockSelector((s) => s.surfaceStack) || EMPTY_SURFACE_STACK;\n const activeEntry = surfaceStack[surfaceStack.length - 1] || null;\n const steps: SurfaceStep[] = Array.isArray(activeEntry?.steps)\n ? activeEntry.steps\n : [];\n const stepIndex = Number(activeEntry?.currentStepIndex || 0);\n const stepsTotal = steps.length;\n const currentStep = steps[stepIndex] || null;\n const isFirst = stepIndex <= 0;\n const isLast = stepsTotal > 0 && stepIndex >= stepsTotal - 1;\n\n const next = useCallback(() => {\n if (!isLast) goToStep(stepIndex + 1);\n }, [goToStep, isLast, stepIndex]);\n\n const prev = useCallback(() => {\n if (!isFirst) popStep();\n }, [isFirst, popStep]);\n\n const goTo = useCallback(\n (idx: number) => {\n goToStep(idx);\n },\n [goToStep],\n );\n\n const push = useCallback(\n (step: SurfaceStep) => {\n pushStep(step);\n },\n [pushStep],\n );\n\n return {\n close: closeSurface,\n currentStep,\n goTo,\n isFirst,\n isLast,\n next,\n prev,\n push,\n stepIndex,\n steps,\n stepsTotal,\n };\n}\n\nexport function createSurfaceError(\n code: string,\n message: string,\n): Error & { code: string } {\n const error = new Error(message) as Error & { code: string };\n error.code = code;\n return error;\n}\n\nexport function createSurfaceFlowDefinition(\n input: SurfaceFlowDefinitionInput | SurfaceFlowDefinition | null | undefined,\n): SurfaceFlowDefinition | null {\n const id = typeof input?.id === \"string\" ? input.id.trim() : \"\";\n if (!id || typeof input?.createSurface !== \"function\") return null;\n return {\n createSurface: input.createSurface,\n id,\n initialSnapshot: normalizeSurfaceFlowSnapshot(input.initialSnapshot),\n returnHandshake: createSurfaceReturnHandshake(\n input.returnHandshake ??\n (\"returnTo\" in input ? input.returnTo : undefined),\n ),\n restoreFromUrl: input.restoreFromUrl !== false,\n singleton: input.singleton !== false,\n };\n}\n\nexport function createSurfaceFlowSession(\n definition: SurfaceFlowDefinition | null,\n { input = null, snapshot }: { input?: unknown; snapshot?: unknown } = {},\n): SurfaceFlowSession | null {\n if (!definition?.id) return null;\n return {\n flowId: definition.id,\n input,\n returnHandshake: resolveSurfaceFlowReturnHandshake(definition, input),\n snapshot:\n snapshot === undefined\n ? definition.initialSnapshot\n : normalizeSurfaceFlowSnapshot(snapshot),\n status: DOCK_SURFACE_FLOW_STATUS.OPEN as string,\n };\n}\n\nexport function updateSurfaceFlowSession(\n session: SurfaceFlowSession | null | undefined,\n snapshot: unknown,\n): SurfaceFlowSession | null {\n if (!session?.flowId) return null;\n return { ...session, snapshot: normalizeSurfaceFlowSnapshot(snapshot) };\n}\n","\"use client\";\n\nimport {\n type DockScheduledTaskId,\n type DockScheduler,\n type SurfaceFlowSession,\n type SurfaceId,\n type SurfacePayload,\n type SurfaceResult,\n type SurfaceStackEntry,\n type SurfaceUrlState,\n type DockSurfaceHistoryState,\n type SurfaceFlowDefinition,\n type SurfaceFlowState,\n type NormalizedSurfaceDefinition,\n type ResolvedSurfaceEntry,\n type SurfaceState,\n type SurfaceLifecycleState,\n type SurfaceTransitionEffect,\n type SurfaceTransitionEvent,\n type SurfaceTransitionResult,\n type SurfaceTransitionState,\n type DockSurfaceTimings,\n} from \"../types\";\nimport { normalizeSurfaceFlowSnapshot } from \"./helpers\";\nimport { createDockScheduler } from \"../helpers\";\nimport { DOCK_SURFACE_PHASE, DOCK_LIFECYCLE } from \"../constants\";\nimport { report } from \"@/utils\";\n\nexport interface SurfaceRecord {\n entry: SurfaceStackEntry;\n flow: SurfaceFlowSession | null;\n focusOrigin: HTMLElement | null;\n onClose: SurfacePayload[\"onClose\"] | null;\n promise: Promise<SurfaceResult> | null;\n resolve: ((result: SurfaceResult) => void) | null;\n urlState: SurfaceUrlState | null;\n}\n\nexport interface SurfaceRuntimeRefs {\n flowIndex: Map<string, SurfaceId>;\n payloads: Map<string, SurfacePayload>;\n records: Map<SurfaceId, SurfaceRecord>;\n stackRef: { current: SurfaceStackEntry[] };\n}\n\nexport function createSurfaceMaps(): Omit<SurfaceRuntimeRefs, \"stackRef\"> {\n return { flowIndex: new Map(), payloads: new Map(), records: new Map() };\n}\n\nexport function createSurfaceRecord(\n entry: SurfaceStackEntry,\n flow: SurfaceFlowSession | null = null,\n): SurfaceRecord {\n return {\n entry,\n flow,\n focusOrigin: null,\n onClose: null,\n promise: null,\n resolve: null,\n urlState: null,\n };\n}\n\ntype SurfaceUrlSource = Pick<\n SurfaceStackEntry,\n \"flow\" | \"syncWithUrl\" | \"urlKey\"\n>;\n\nexport const IS_BROWSER = typeof window !== \"undefined\";\n\nexport function getSurfaceUrlValue(\n surfaceEntry: SurfaceUrlSource | null | undefined,\n): string {\n return typeof surfaceEntry?.syncWithUrl === \"string\"\n ? surfaceEntry.syncWithUrl\n : surfaceEntry?.urlKey || \"open\";\n}\n\nfunction createSurfaceHistoryState(\n surfaceEntry: SurfaceUrlSource,\n): DockSurfaceHistoryState {\n const value = getSurfaceUrlValue(surfaceEntry);\n const flow = surfaceEntry?.flow;\n return {\n value,\n ...(flow ? { flow: { id: flow.flowId, snapshot: flow.snapshot } } : {}),\n };\n}\n\nexport function toSurfaceFlowState(\n session: SurfaceFlowSession | null | undefined,\n): SurfaceFlowState | null {\n if (!session?.flowId) return null;\n return {\n flowId: session.flowId,\n returnHandshake: session.returnHandshake,\n snapshot: session.snapshot,\n status: session.status,\n };\n}\n\nexport function getRestorableSurfaceFlowSnapshot(\n definition: SurfaceFlowDefinition | null,\n) {\n if (!IS_BROWSER || !definition?.restoreFromUrl || !definition?.id)\n return undefined;\n\n const dockSurface: DockSurfaceHistoryState | undefined =\n window.history.state?.dockSurface;\n const flow = dockSurface?.flow;\n const currentSurfaceValue = new URL(window.location.href).searchParams.get(\n \"surface\",\n );\n\n if (\n !flow ||\n flow.id !== definition.id ||\n !dockSurface?.value ||\n currentSurfaceValue !== dockSurface.value\n )\n return undefined;\n return normalizeSurfaceFlowSnapshot(flow.snapshot);\n}\n\nexport function syncSurfaceUrl(\n surfaceEntry: SurfaceUrlSource,\n isOpening: boolean,\n urlState: SurfaceUrlState | null = null,\n) {\n if (!IS_BROWSER || (!surfaceEntry?.syncWithUrl && !surfaceEntry?.urlKey))\n return;\n try {\n const url = new URL(window.location.href);\n if (isOpening) {\n const value = getSurfaceUrlValue(surfaceEntry);\n if (urlState) urlState.previousValue = url.searchParams.get(\"surface\");\n url.searchParams.set(\"surface\", value);\n window.history.pushState(\n {\n ...window.history.state,\n dockSurface: createSurfaceHistoryState(surfaceEntry),\n },\n \"\",\n url.toString(),\n );\n return;\n }\n if (urlState?.value && url.searchParams.get(\"surface\") !== urlState.value)\n return;\n if (urlState?.previousValue)\n url.searchParams.set(\"surface\", urlState.previousValue);\n else url.searchParams.delete(\"surface\");\n\n const state = { ...window.history.state };\n if (state.dockSurface?.value === urlState?.value) delete state.dockSurface;\n window.history.replaceState(state, \"\", url.toString());\n } catch (error) {\n report(\"Dock surface URL sync\", error, \"warn\");\n }\n}\n\nexport function syncSurfaceFlowUrlState(\n surfaceEntry: SurfaceUrlSource,\n urlState: SurfaceUrlState | null = null,\n) {\n if (!IS_BROWSER || (!surfaceEntry?.syncWithUrl && !surfaceEntry?.urlKey))\n return;\n try {\n const url = new URL(window.location.href);\n const value = getSurfaceUrlValue(surfaceEntry);\n if (url.searchParams.get(\"surface\") !== value || urlState?.value !== value)\n return;\n window.history.replaceState(\n {\n ...window.history.state,\n dockSurface: createSurfaceHistoryState(surfaceEntry),\n },\n \"\",\n url.toString(),\n );\n } catch (error) {\n report(\"Dock surface flow URL sync\", error, \"warn\");\n }\n}\n\nexport function releaseSurfaceResources({\n refs,\n result,\n surfaceId,\n}: {\n refs: SurfaceRuntimeRefs;\n result: SurfaceResult;\n surfaceId: SurfaceId;\n}): { flow: SurfaceFlowSession | null; focusOrigin: HTMLElement | null } {\n const record = refs.records.get(surfaceId);\n if (!record) return { flow: null, focusOrigin: null };\n\n syncSurfaceUrl(record.entry, false, record.urlState);\n refs.payloads.delete(record.entry.payloadId);\n refs.records.delete(surfaceId);\n if (record.flow && refs.flowIndex.get(record.flow.flowId) === surfaceId) {\n refs.flowIndex.delete(record.flow.flowId);\n }\n\n if (typeof record.onClose === \"function\") {\n try {\n record.onClose(result);\n } catch (error) {\n report(\"Dock surface onClose\", error);\n }\n }\n if (typeof record.resolve === \"function\") record.resolve(result);\n\n return { flow: record.flow, focusOrigin: record.focusOrigin };\n}\n\nexport type SurfacePayloadMap = Map<string, SurfacePayload>;\n\nexport function resolveSurfaceEntry(\n entry: SurfaceStackEntry,\n payloadMap: SurfacePayloadMap | null,\n): ResolvedSurfaceEntry;\nexport function resolveSurfaceEntry(\n entry: SurfaceStackEntry | null | undefined,\n payloadMap: SurfacePayloadMap | null,\n): ResolvedSurfaceEntry | null;\nexport function resolveSurfaceEntry(\n entry: SurfaceStackEntry | null | undefined,\n payloadMap: SurfacePayloadMap | null,\n): ResolvedSurfaceEntry | null {\n if (!entry) return null;\n return { ...(payloadMap?.get(entry.payloadId) || {}), ...entry };\n}\n\nexport function createSurfaceState(\n surfaceStack: SurfaceStackEntry[] = [],\n payloadMap: SurfacePayloadMap | null = null,\n surfacePhase: string = DOCK_SURFACE_PHASE.IDLE,\n): SurfaceState {\n const resolvedSurfaceStack = surfaceStack\n .map((entry) => resolveSurfaceEntry(entry, payloadMap))\n .filter((entry): entry is ResolvedSurfaceEntry => entry !== null);\n const activeSurface = resolvedSurfaceStack[resolvedSurfaceStack.length - 1];\n return {\n activeSurfaceId: activeSurface?.id || null,\n isSurfaceOpen: resolvedSurfaceStack.length > 0,\n activeSurfaceEntry: activeSurface || null,\n surfaceStack: resolvedSurfaceStack,\n surfacePhase,\n };\n}\n\nexport function getTargetSurfaceId(\n surfaceStack: SurfaceStackEntry[],\n targetSurfaceId: SurfaceId | null = null,\n): SurfaceId | null {\n return targetSurfaceId || surfaceStack[surfaceStack.length - 1]?.id || null;\n}\n\nexport function findSurfaceEntry(\n surfaceStack: SurfaceStackEntry[],\n surfaceId: SurfaceId,\n): SurfaceStackEntry | null {\n return surfaceStack.find((entry) => entry.id === surfaceId) || null;\n}\n\nexport function updateSurfaceStackEntry(\n surfaceStack: SurfaceStackEntry[],\n surfaceId: SurfaceId,\n updateEntry: (entry: SurfaceStackEntry) => SurfaceStackEntry,\n): SurfaceStackEntry[] {\n return surfaceStack.map((entry) =>\n entry.id === surfaceId ? updateEntry(entry) : entry,\n );\n}\n\nexport function createSurfaceRuntimeEntry(\n surfaceId: SurfaceId,\n definition: NormalizedSurfaceDefinition,\n flowSession: SurfaceFlowSession | null = null,\n): { payload: SurfacePayload; surfaceEntry: SurfaceStackEntry } {\n const {\n onClose,\n component,\n content,\n props,\n action,\n showAction,\n steps,\n trailing,\n headerAction,\n title,\n description,\n icon,\n closeLabel,\n ...surfaceMetadata\n } = definition;\n const payloadId = `surface-payload-${surfaceId}`;\n return {\n payload: {\n component,\n content,\n props,\n action,\n showAction,\n steps,\n trailing,\n headerAction,\n title,\n description,\n icon,\n closeLabel,\n onClose,\n },\n surfaceEntry: {\n id: surfaceId,\n payloadId,\n ...(flowSession ? { flow: toSurfaceFlowState(flowSession) } : {}),\n ...surfaceMetadata,\n },\n };\n}\n\nexport const initialSurfaceState = createSurfaceState(\n [],\n null,\n DOCK_SURFACE_PHASE.IDLE,\n);\n\nexport function createSurfaceLifecycleState(): SurfaceLifecycleState {\n return {\n surfaceIds: [],\n surfaceLifecycle: DOCK_LIFECYCLE.IDLE,\n };\n}\n\nconst SURFACE_PHASES: readonly unknown[] = Object.values(DOCK_SURFACE_PHASE);\nconst SURFACE_LIFECYCLES: readonly unknown[] = Object.values(DOCK_LIFECYCLE);\n\nexport const SURFACE_TRANSITION_EVENTS = Object.freeze({\n ADVANCE: \"surface-transition:advance\",\n CLOSE: \"surface-transition:close\",\n CLOSE_ALL: \"surface-transition:close-all\",\n OPEN: \"surface-transition:open\",\n} as const);\n\nexport const SURFACE_TRANSITION_EFFECTS = Object.freeze({\n MOUNT: \"surface-transition:mount\",\n RELEASE: \"surface-transition:release\",\n SCHEDULE: \"surface-transition:schedule\",\n} as const);\n\nconst EMPTY_SURFACE_TRANSITION_EFFECTS: readonly SurfaceTransitionEffect[] =\n Object.freeze([]);\n\nfunction freezeSurfaceTransitionState(\n state: SurfaceTransitionState,\n): SurfaceTransitionState {\n return {\n closingSurfaceIds: [...state.closingSurfaceIds],\n phase: state.phase,\n surfaceIds: [...state.surfaceIds],\n surfaceLifecycle: state.surfaceLifecycle,\n };\n}\n\nfunction createTransitionResult(\n state: SurfaceTransitionState,\n effects: readonly SurfaceTransitionEffect[] = EMPTY_SURFACE_TRANSITION_EFFECTS,\n): SurfaceTransitionResult {\n return { state, effects: [...effects] };\n}\n\n// Phase timings are the app's, in seconds; the scheduler counts whole ms.\nfunction createScheduledTransition(\n seconds: number,\n label: string,\n): SurfaceTransitionEffect {\n return {\n delayMs: Math.max(0, Math.round((Number(seconds) || 0) * 1000)),\n event: { type: SURFACE_TRANSITION_EVENTS.ADVANCE },\n label,\n type: SURFACE_TRANSITION_EFFECTS.SCHEDULE,\n };\n}\n\nfunction createReleaseEffect(\n surfaceIds: readonly SurfaceId[],\n): SurfaceTransitionEffect {\n return {\n surfaceIds: [...surfaceIds],\n type: SURFACE_TRANSITION_EFFECTS.RELEASE,\n };\n}\n\nexport function createSurfaceTransitionState(\n input: Partial<SurfaceTransitionState> | null = {},\n): SurfaceTransitionState {\n const source = input ?? {};\n const surfaceIds: SurfaceId[] = [\n ...new Set(Array.isArray(source.surfaceIds) ? source.surfaceIds : []),\n ].filter((s) => s != null);\n const closingSurfaceIds = [\n ...new Set(\n Array.isArray(source.closingSurfaceIds) ? source.closingSurfaceIds : [],\n ),\n ].filter((s) => surfaceIds.includes(s));\n const phase = SURFACE_PHASES.includes(source.phase)\n ? source.phase!\n : surfaceIds.length > 0\n ? DOCK_SURFACE_PHASE.OPEN\n : DOCK_SURFACE_PHASE.IDLE;\n\n const surfaceLifecycle = SURFACE_LIFECYCLES.includes(source.surfaceLifecycle)\n ? source.surfaceLifecycle!\n : phase === DOCK_SURFACE_PHASE.IDLE\n ? DOCK_LIFECYCLE.IDLE\n : phase === DOCK_SURFACE_PHASE.OPEN\n ? DOCK_LIFECYCLE.OPEN\n : closingSurfaceIds.length > 0\n ? DOCK_LIFECYCLE.CLOSING\n : DOCK_LIFECYCLE.OPENING;\n\n return freezeSurfaceTransitionState({\n closingSurfaceIds,\n phase,\n surfaceIds,\n surfaceLifecycle,\n });\n}\n\nexport function transitionSurface(\n currentState: Partial<SurfaceTransitionState> | null,\n event: Partial<SurfaceTransitionEvent>,\n timings: DockSurfaceTimings,\n): SurfaceTransitionResult {\n const state = createSurfaceTransitionState(currentState);\n switch (event.type) {\n case SURFACE_TRANSITION_EVENTS.OPEN: {\n const { surfaceId } = event;\n if (surfaceId == null || state.surfaceIds.includes(surfaceId))\n return createTransitionResult(state);\n\n const isStacked = state.surfaceIds.length > 0;\n const phase = isStacked\n ? DOCK_SURFACE_PHASE.OPEN\n : DOCK_SURFACE_PHASE.DISMISSING_ACTION;\n\n const nextState = freezeSurfaceTransitionState({\n ...state,\n closingSurfaceIds: [],\n phase,\n surfaceIds: [...state.surfaceIds, surfaceId],\n surfaceLifecycle: isStacked\n ? DOCK_LIFECYCLE.OPEN\n : DOCK_LIFECYCLE.OPENING,\n });\n const hold = event.skipActionDismiss\n ? timings.anticipation\n : timings.dismissAction;\n const effects = isStacked\n ? [Object.freeze({ surfaceId, type: SURFACE_TRANSITION_EFFECTS.MOUNT })]\n : [createScheduledTransition(hold, \"surface:dismiss-action\")];\n return createTransitionResult(nextState, effects);\n }\n\n case SURFACE_TRANSITION_EVENTS.CLOSE: {\n const closingSurfaceId = event.surfaceId;\n if (\n closingSurfaceId == null ||\n !state.surfaceIds.includes(closingSurfaceId)\n )\n return createTransitionResult(state);\n const remainingSurfaceIds = state.surfaceIds.filter(\n (id) => id !== closingSurfaceId,\n );\n\n if (remainingSurfaceIds.length > 0) {\n return createTransitionResult(\n freezeSurfaceTransitionState({\n ...state,\n closingSurfaceIds: [],\n phase: DOCK_SURFACE_PHASE.OPEN,\n surfaceIds: remainingSurfaceIds,\n surfaceLifecycle: DOCK_LIFECYCLE.OPEN,\n }),\n [createReleaseEffect([closingSurfaceId])],\n );\n }\n return createTransitionResult(\n freezeSurfaceTransitionState({\n ...state,\n closingSurfaceIds: [closingSurfaceId],\n phase: DOCK_SURFACE_PHASE.CLOSING_ANTICIPATION,\n surfaceLifecycle: DOCK_LIFECYCLE.CLOSING,\n }),\n [\n createScheduledTransition(\n timings.anticipation,\n \"surface:close-anticipation\",\n ),\n ],\n );\n }\n\n case SURFACE_TRANSITION_EVENTS.CLOSE_ALL:\n return state.surfaceIds.length === 0\n ? createTransitionResult(state)\n : createTransitionResult(\n freezeSurfaceTransitionState({\n ...state,\n closingSurfaceIds: state.surfaceIds,\n phase: DOCK_SURFACE_PHASE.CLOSING_ANTICIPATION,\n surfaceLifecycle: DOCK_LIFECYCLE.CLOSING,\n }),\n [\n createScheduledTransition(\n timings.anticipation,\n \"surface:close-all-anticipation\",\n ),\n ],\n );\n\n case SURFACE_TRANSITION_EVENTS.ADVANCE:\n if (state.phase === DOCK_SURFACE_PHASE.CLOSING_ANTICIPATION) {\n return createTransitionResult(\n freezeSurfaceTransitionState({\n ...state,\n phase: DOCK_SURFACE_PHASE.COLLAPSING_BODY,\n }),\n [\n createScheduledTransition(\n timings.collapseBody,\n \"surface:collapse-body\",\n ),\n ],\n );\n }\n if (state.phase === DOCK_SURFACE_PHASE.DISMISSING_ACTION) {\n const activeSurfaceId = state.surfaceIds.at(-1);\n return createTransitionResult(\n freezeSurfaceTransitionState({\n ...state,\n phase: DOCK_SURFACE_PHASE.EXPANDING_BODY,\n }),\n [\n Object.freeze({\n surfaceId: activeSurfaceId,\n type: SURFACE_TRANSITION_EFFECTS.MOUNT,\n }),\n createScheduledTransition(\n timings.expandBody,\n \"surface:expand-body\",\n ),\n ],\n );\n }\n if (state.phase === DOCK_SURFACE_PHASE.EXPANDING_BODY) {\n return createTransitionResult(\n freezeSurfaceTransitionState({\n ...state,\n phase: DOCK_SURFACE_PHASE.OPEN,\n surfaceLifecycle: DOCK_LIFECYCLE.OPEN,\n }),\n );\n }\n if (\n state.phase === DOCK_SURFACE_PHASE.COLLAPSING_BODY &&\n timings.restoreHeader > 0\n ) {\n return createTransitionResult(\n freezeSurfaceTransitionState({\n ...state,\n phase: DOCK_SURFACE_PHASE.RESTORING_HEADER,\n }),\n [\n createScheduledTransition(\n timings.restoreHeader,\n \"surface:restore-header\",\n ),\n ],\n );\n }\n if (\n state.phase === DOCK_SURFACE_PHASE.COLLAPSING_BODY ||\n state.phase === DOCK_SURFACE_PHASE.RESTORING_HEADER\n ) {\n const releasedSurfaceIds = state.closingSurfaceIds;\n const surfaceIds = state.surfaceIds.filter(\n (id) => !releasedSurfaceIds.includes(id),\n );\n return createTransitionResult(\n freezeSurfaceTransitionState({\n ...state,\n closingSurfaceIds: [],\n phase:\n surfaceIds.length > 0\n ? DOCK_SURFACE_PHASE.OPEN\n : DOCK_SURFACE_PHASE.IDLE,\n surfaceIds,\n surfaceLifecycle:\n surfaceIds.length > 0 ? DOCK_LIFECYCLE.OPEN : DOCK_LIFECYCLE.IDLE,\n }),\n releasedSurfaceIds.length > 0\n ? [createReleaseEffect(releasedSurfaceIds)]\n : EMPTY_SURFACE_TRANSITION_EFFECTS,\n );\n }\n return createTransitionResult(state);\n\n default:\n return createTransitionResult(state);\n }\n}\n\nexport function runSurfaceTransition({\n event,\n onEffect = () => {},\n onTransition = () => {},\n scheduler = createDockScheduler(),\n state,\n timings,\n}: {\n event?: SurfaceTransitionEvent;\n onEffect?: (\n effect: SurfaceTransitionEffect,\n state: SurfaceTransitionState,\n ) => void;\n onTransition?: (\n state: SurfaceTransitionState,\n event: SurfaceTransitionEvent,\n ) => void;\n scheduler?: DockScheduler;\n state?: Partial<SurfaceTransitionState> | null;\n timings: DockSurfaceTimings;\n}) {\n let currentState = createSurfaceTransitionState(state ?? null);\n let pendingEvent: SurfaceTransitionEvent | null = null;\n let pendingTaskId: DockScheduledTaskId | null = null;\n let stopped = false;\n\n const cancelPending = () => {\n if (pendingTaskId !== null) scheduler.cancel(pendingTaskId);\n pendingEvent = null;\n pendingTaskId = null;\n };\n\n const apply = (\n nextEvent: SurfaceTransitionEvent | null | undefined,\n synchronous = false,\n ) => {\n if (stopped || !nextEvent) return currentState;\n const result = transitionSurface(currentState, nextEvent, timings);\n currentState = result.state;\n onTransition(currentState, nextEvent);\n\n result.effects.forEach((effect) => {\n if (effect.type !== SURFACE_TRANSITION_EFFECTS.SCHEDULE) {\n onEffect(effect, currentState);\n return;\n }\n pendingEvent = effect.event ?? null;\n if (synchronous) return;\n pendingTaskId = scheduler.schedule(\n () => {\n const scheduledEvent = pendingEvent;\n pendingEvent = null;\n pendingTaskId = null;\n apply(scheduledEvent);\n },\n effect.delayMs ?? 0,\n { label: effect.label },\n );\n });\n return currentState;\n };\n\n const finish = () => {\n if (stopped) return currentState;\n let advances = 0;\n while (pendingEvent && advances < 16) {\n const nextEvent = pendingEvent;\n if (pendingTaskId !== null) scheduler.cancel(pendingTaskId);\n pendingEvent = null;\n pendingTaskId = null;\n apply(nextEvent, true);\n advances += 1;\n }\n if (pendingEvent)\n throw new Error(\"Surface transition exceeded its advance safety limit\");\n return currentState;\n };\n\n apply(event);\n\n return Object.freeze({\n cancel() {\n if (stopped) return false;\n stopped = true;\n cancelPending();\n return true;\n },\n dispatch(nextEvent: SurfaceTransitionEvent) {\n finish();\n return apply(nextEvent);\n },\n finish,\n getState() {\n return currentState;\n },\n });\n}\n","\"use client\";\n\nimport {\n useCallback,\n useEffect,\n useRef,\n type RefObject,\n} from \"react\";\nimport {\n DOCK_FOCUSABLE_SELECTOR,\n DOCK_FOCUS_RESTORE_BLOCKED_REASONS,\n} from \"./constants\";\nimport { type DockActions, type DockItem } from \"./types\";\n\nexport function blurActiveElement(): void {\n if (typeof document === \"undefined\") return;\n const activeElement = document.activeElement as HTMLElement | null;\n if (activeElement && typeof activeElement.blur === \"function\") {\n activeElement.blur();\n }\n}\n\nfunction closestMatches(target: unknown, selector: string): boolean {\n const element = target as Partial<Element> | null | undefined;\n return Boolean(\n element &&\n typeof element.closest === \"function\" &&\n element.closest(selector),\n );\n}\n\nexport function isInteractiveTarget(target: unknown): boolean {\n return closestMatches(\n target,\n 'button, a, input, textarea, select, [role=\"button\"], [tabindex]:not([tabindex=\"-1\"])',\n );\n}\n\nexport function isEditableDockTarget(target: unknown): boolean {\n return closestMatches(\n target,\n 'input, textarea, select, [contenteditable=\"true\"]',\n );\n}\n\nexport function getDockFocusableElements(\n container: HTMLElement | null,\n): HTMLElement[] {\n if (!container || typeof container.querySelectorAll !== \"function\") return [];\n return (\n Array.from(\n container.querySelectorAll(DOCK_FOCUSABLE_SELECTOR),\n ) as HTMLElement[]\n ).filter((element) => {\n if (!element || element.getAttribute(\"aria-hidden\") === \"true\")\n return false;\n const style =\n typeof window !== \"undefined\" ? window.getComputedStyle(element) : null;\n return (\n style?.display !== \"none\" &&\n style?.visibility !== \"hidden\" &&\n style?.pointerEvents !== \"none\"\n );\n });\n}\n\nexport function focusDockElement(element: HTMLElement | null): boolean {\n if (!element || typeof element.focus !== \"function\") return false;\n try {\n element.focus({ preventScroll: true });\n return document.activeElement === element;\n } catch {\n return false;\n }\n}\n\nexport function shouldRestoreDockFocus(result: unknown): boolean {\n const blockedReason = (result as { blockedReason?: unknown } | null)\n ?.blockedReason;\n return (\n !result ||\n !(DOCK_FOCUS_RESTORE_BLOCKED_REASONS as readonly unknown[]).includes(\n blockedReason,\n )\n );\n}\n\nexport function useDockFocusTrap({\n containerRef,\n enabled = true,\n onDismiss = null,\n}: {\n containerRef: RefObject<HTMLElement | null>;\n enabled?: boolean;\n onDismiss?: (() => void) | null;\n}) {\n const hasAutoFocusedRef = useRef(false);\n\n useEffect(() => {\n if (!enabled) {\n hasAutoFocusedRef.current = false;\n return;\n }\n\n const container = containerRef?.current;\n if (!container) return;\n\n const focusFrameId = window.requestAnimationFrame(() => {\n if (hasAutoFocusedRef.current) return;\n hasAutoFocusedRef.current = true;\n\n const preferredTarget = container.querySelector(\"[data-dock-autofocus]\");\n const target =\n preferredTarget instanceof HTMLElement\n ? preferredTarget\n : getDockFocusableElements(container)[0] || container;\n focusDockElement(target);\n });\n\n const handleKeyDown = (event: KeyboardEvent) => {\n if (\n event.key === \"Escape\" &&\n !event.defaultPrevented &&\n typeof onDismiss === \"function\"\n ) {\n event.preventDefault();\n event.stopPropagation();\n onDismiss();\n return;\n }\n\n if (event.key !== \"Tab\") return;\n\n const focusableElements = getDockFocusableElements(container);\n if (focusableElements.length === 0) {\n event.preventDefault();\n focusDockElement(container);\n return;\n }\n\n const firstElement = focusableElements[0];\n const lastElement = focusableElements[focusableElements.length - 1];\n const activeElement = document.activeElement;\n\n if (event.shiftKey && activeElement === firstElement) {\n event.preventDefault();\n focusDockElement(lastElement);\n } else if (!event.shiftKey && activeElement === lastElement) {\n event.preventDefault();\n focusDockElement(firstElement);\n }\n };\n\n const handleFocusIn = (event: FocusEvent) => {\n const target = event.target;\n if (!(target instanceof Node) || container.contains(target)) return;\n\n if (\n target instanceof Element &&\n target.closest('[role=\"dialog\"][aria-modal=\"true\"]')\n ) {\n return;\n }\n\n const firstElement = getDockFocusableElements(container)[0] || container;\n focusDockElement(firstElement);\n };\n\n document.addEventListener(\"keydown\", handleKeyDown);\n document.addEventListener(\"focusin\", handleFocusIn);\n return () => {\n window.cancelAnimationFrame(focusFrameId);\n document.removeEventListener(\"keydown\", handleKeyDown);\n document.removeEventListener(\"focusin\", handleFocusIn);\n };\n }, [containerRef, enabled, onDismiss]);\n}\n\nexport function useDockKeyboard({\n expanded,\n focusedIndex,\n isOverlayActive,\n navigate,\n dockItems,\n setExpanded,\n setFocusedIndex,\n}: {\n expanded: boolean;\n focusedIndex: number;\n isOverlayActive: boolean;\n navigate: DockActions[\"navigate\"];\n dockItems: DockItem[];\n setExpanded: (expanded: boolean) => void;\n setFocusedIndex: (update: number | ((current: number) => number)) => void;\n}) {\n const handleKeyDown = useCallback(\n (event: KeyboardEvent) => {\n if (\n isEditableDockTarget(event.target) ||\n isInteractiveTarget(event.target)\n ) {\n return;\n }\n if (isOverlayActive || !expanded) return;\n\n const { key } = event;\n if (key === \"Escape\") {\n event.preventDefault();\n setExpanded(false);\n return;\n }\n if (key === \"Enter\" && focusedIndex !== -1) {\n event.preventDefault();\n const focusedItem = dockItems[focusedIndex];\n if (focusedItem?.path) {\n navigate(focusedItem.path, { item: focusedItem });\n }\n return;\n }\n\n if (dockItems.length === 0) return;\n\n if (key === \"ArrowDown\") {\n event.preventDefault();\n setFocusedIndex((current) =>\n current < dockItems.length - 1 ? current + 1 : 0,\n );\n return;\n }\n if (key === \"ArrowUp\") {\n event.preventDefault();\n setFocusedIndex((current) =>\n current > 0 ? current - 1 : dockItems.length - 1,\n );\n }\n },\n [\n expanded,\n focusedIndex,\n isOverlayActive,\n navigate,\n dockItems,\n setExpanded,\n setFocusedIndex,\n ],\n );\n\n useEffect(() => {\n if (!expanded) return;\n window.addEventListener(\"keydown\", handleKeyDown);\n return () => window.removeEventListener(\"keydown\", handleKeyDown);\n }, [expanded, handleKeyDown]);\n}\n\nexport function useDockRouteReset(\n pathname: string | null,\n onRouteChange?: (path: string | null) => void,\n) {\n const previousPathRef = useRef(pathname);\n\n useEffect(() => {\n if (previousPathRef.current === pathname) return;\n previousPathRef.current = pathname;\n onRouteChange?.(pathname);\n }, [onRouteChange, pathname]);\n}\n","import { type Transition } from \"motion/react\";\nimport { cssTransition, gpuTransform, staggerDelay } from \"@/tokens\";\nimport { useModuleMotion, useOptionalModuleMotion } from \"@/theme\";\nimport {\n DOCK_CARD_DIMENSIONS,\n DOCK_SURFACE_PHASE,\n dockTheme,\n} from \"./constants\";\nimport { type DockMotion, type DockSurfaceTimings } from \"./types\";\n\n// The dock plays only what the app's dock theme gives it. What stays here is\n// mechanics: which of the app's transitions a state uses, and the parts of a\n// target that come from layout rather than from motion.\n\nexport function useDockMotion(): DockMotion {\n return useModuleMotion(dockTheme);\n}\n\nconst IMMEDIATE_SURFACE_TIMINGS: DockSurfaceTimings = Object.freeze({\n anticipation: 0,\n collapseBody: 0,\n dismissAction: 0,\n expandBody: 0,\n restoreHeader: 0,\n});\n\n/**\n * The app's surface phase timings. A dock state provider can run without the\n * dock's theme (nothing is drawn then), and its phases advance immediately.\n */\nexport function useDockSurfaceTimings(): DockSurfaceTimings {\n return (\n useOptionalModuleMotion(dockTheme)?.timings ?? IMMEDIATE_SURFACE_TIMINGS\n );\n}\n\nexport const DOCK_COMPOSITOR_STYLE = Object.freeze({\n willChange: \"transform, opacity\",\n WebkitBackfaceVisibility: \"hidden\",\n WebkitFontSmoothing: \"antialiased\",\n backfaceVisibility: \"hidden\",\n transform: \"translateZ(0)\",\n} as const);\n\n// A layer leaving a card whose content is out of sight goes at once. Played,\n// its exit would show through as the card's content comes into light.\nexport const DOCK_UNSEEN_EXIT = Object.freeze({\n opacity: 0,\n transition: Object.freeze({ duration: 0 }),\n});\n\nexport const DOCK_SURFACE_DRAG_CONSTRAINTS = Object.freeze({\n top: 0,\n bottom: 0,\n} as const);\n\nexport const DOCK_SURFACE_DRAG_THRESHOLDS = Object.freeze({\n DISMISS_OFFSET_Y: 65,\n DISMISS_VELOCITY_Y: 400,\n} as const);\n\nexport function toGpuTransform(\n y: unknown = 0,\n scale: unknown = 1,\n x: unknown = 0,\n): string {\n return gpuTransform(y, scale, x);\n}\n\nexport const dockSurfaceDragTransformTemplate = ({\n y,\n scale,\n}: {\n y?: unknown;\n scale?: unknown;\n}) => toGpuTransform(y, scale);\n\nexport function getDockBackdropTransition(\n motion: DockMotion,\n {\n expanded = false,\n isSurface = false,\n }: {\n expanded?: boolean;\n isSurface?: boolean;\n } = {},\n) {\n return isSurface || expanded\n ? motion.transitions.expand\n : motion.transitions.stack;\n}\n\nexport function getDockActionMotionProps(\n motion: DockMotion,\n {\n disabled = false,\n reduceMotion = false,\n }: {\n disabled?: boolean;\n reduceMotion?: boolean;\n } = {},\n) {\n const canMove = !disabled && !reduceMotion;\n return {\n initial: false as const,\n animate: \"idle\",\n whileTap: canMove ? \"tap\" : undefined,\n variants: motion.variants.press,\n transition: motion.transitions.press,\n };\n}\n\nexport function getDockMediaVolumeFillTransition(\n motion: DockMotion,\n { isDragging = false }: { isDragging?: boolean } = {},\n) {\n return isDragging\n ? \"none\"\n : cssTransition(\"width\", motion.transitions.mediaVolume);\n}\n\nexport function getDockMediaVolumeThumbAnimateProps(\n motion: DockMotion,\n { isDragging = false }: { isDragging?: boolean } = {},\n) {\n return isDragging\n ? motion.variants.mediaVolumeThumb.dragging\n : motion.variants.mediaVolumeThumb.idle;\n}\n\nexport function getDockMediaVolumeThumbPositionTransition(\n motion: DockMotion,\n { isDragging = false }: { isDragging?: boolean } = {},\n) {\n return isDragging\n ? \"none\"\n : cssTransition(\"left\", motion.transitions.mediaVolume);\n}\n\nfunction getDockSurfaceStackScale(\n motion: DockMotion,\n surfacePhase?: string | null,\n): number {\n if (surfacePhase === DOCK_SURFACE_PHASE.DISMISSING_ACTION) {\n return motion.deck.compress.open;\n }\n if (surfacePhase === DOCK_SURFACE_PHASE.CLOSING_ANTICIPATION) {\n return motion.deck.compress.close;\n }\n return 1;\n}\n\nexport function getDockStackTransformTransition(\n motion: DockMotion,\n surfacePhase: string | null | undefined,\n fallbackTransition: Transition,\n) {\n if (surfacePhase === DOCK_SURFACE_PHASE.EXPANDING_BODY) {\n return motion.transitions.surfaceArrival;\n }\n if (\n surfacePhase === DOCK_SURFACE_PHASE.DISMISSING_ACTION ||\n surfacePhase === DOCK_SURFACE_PHASE.CLOSING_ANTICIPATION\n ) {\n return motion.transitions.anticipation;\n }\n return fallbackTransition;\n}\n\nexport function getDockStackTransition(\n motion: DockMotion,\n {\n expanded = false,\n resizeDistance = 0,\n surfacePhase = null,\n }: {\n expanded?: boolean;\n resizeDistance?: number;\n surfacePhase?: string | null;\n } = {},\n) {\n if (surfacePhase === DOCK_SURFACE_PHASE.EXPANDING_BODY) {\n return motion.transitions.expand;\n }\n if (\n surfacePhase === DOCK_SURFACE_PHASE.OPEN ||\n surfacePhase === DOCK_SURFACE_PHASE.CLOSING_ANTICIPATION\n ) {\n return motion.transitions.surfaceResize(\n resizeDistance > 0 ? resizeDistance : 260,\n );\n }\n if (\n surfacePhase === DOCK_SURFACE_PHASE.COLLAPSING_BODY ||\n surfacePhase === DOCK_SURFACE_PHASE.RESTORING_HEADER\n ) {\n return motion.transitions.expand;\n }\n return expanded ? motion.transitions.expand : motion.transitions.stack;\n}\n\nexport function getDockStackAnimateProps(\n motion: DockMotion,\n {\n width,\n height,\n isBreadcrumbsVisible = false,\n isFullscreen = false,\n isSurfaceActive = false,\n surfacePhase = null,\n }: {\n width: number | string | null | undefined;\n height: number | string | null | undefined;\n isBreadcrumbsVisible?: boolean;\n isExtensionsVisible?: boolean;\n isFullscreen?: boolean;\n isSurfaceActive?: boolean;\n surfacePhase?: string | null;\n },\n) {\n const safeWidth = Number(width);\n const safeHeight = Number(height);\n const liftAmount = isBreadcrumbsVisible ? -44 : 0;\n return {\n width: Math.max(0, Math.round(Number.isFinite(safeWidth) ? safeWidth : 0)),\n height: Math.max(\n 0,\n Math.round(Number.isFinite(safeHeight) ? safeHeight : 0),\n ),\n transform: toGpuTransform(\n liftAmount,\n getDockSurfaceStackScale(motion, surfacePhase),\n ),\n opacity: isFullscreen ? 0 : 1,\n boxShadow: isSurfaceActive\n ? motion.deck.elevation.elevated\n : motion.deck.elevation.rest,\n pointerEvents: isFullscreen ? (\"none\" as const) : (\"auto\" as const),\n };\n}\n\nexport function getDockCardDelay(\n motion: DockMotion,\n {\n expanded = false,\n isStackHovered = false,\n position = 0,\n }: {\n expanded?: boolean;\n isStackHovered?: boolean;\n position?: number;\n } = {},\n) {\n const { timings } = motion;\n const safePosition = Math.max(0, Number(position) || 0);\n if (expanded && safePosition > 0) {\n return staggerDelay(safePosition, {\n base: timings.expandStagger,\n cap: timings.expandStaggerCap,\n });\n }\n if (isStackHovered && safePosition > 0) {\n return staggerDelay(safePosition - 1, {\n base: timings.peekStagger,\n cap: timings.peekStaggerCap,\n });\n }\n return 0;\n}\n\nexport interface DockItemMotionValues {\n opacity: number;\n scale: number;\n y: number;\n}\n\nexport function getDockItemAnimateValues(\n motion: DockMotion,\n {\n motionValues,\n expanded = false,\n isStackHovered = false,\n isSurfaceActive = false,\n position = 0,\n }: {\n motionValues?: DockItemMotionValues;\n expanded?: boolean;\n isStackHovered?: boolean;\n isSurfaceActive?: boolean;\n position?: number;\n } = {},\n) {\n if (!motionValues) return {};\n const safePosition = Math.max(0, Number(position) || 0);\n const isHoveredOffset =\n !expanded && isStackHovered && safePosition > 0 && !isSurfaceActive;\n const peek = isHoveredOffset ? motion.deck.peek(safePosition) : null;\n const y = peek ? motionValues.y - peek.lift : motionValues.y;\n const scale = peek ? motionValues.scale * peek.scale : motionValues.scale;\n\n return {\n transform: toGpuTransform(y, scale),\n opacity: motionValues.opacity,\n };\n}\n\nexport function getDockItemTransition(\n motion: DockMotion,\n {\n expanded = false,\n isStackHovered = false,\n position = 0,\n delay = 0,\n }: {\n expanded?: boolean;\n isStackHovered?: boolean;\n position?: number;\n delay?: number;\n } = {},\n): Transition {\n const safePosition = Math.max(0, Number(position) || 0);\n const baseTransition = expanded\n ? motion.transitions.cardExpanded\n : isStackHovered && safePosition > 0\n ? motion.transitions.cardPeek\n : motion.transitions.card;\n return {\n ...baseTransition,\n delay: Number(delay) || 0,\n };\n}\n\nexport function getDockItemExitValues(\n motion: DockMotion,\n {\n motionValues,\n position = 0,\n }: {\n motionValues?: DockItemMotionValues;\n position?: number;\n } = {},\n) {\n const safePosition = Math.max(0, Number(position) || 0);\n return motion.deck.exit({\n position: safePosition,\n scale:\n motionValues && Number.isFinite(motionValues.scale)\n ? motionValues.scale\n : null,\n y:\n motionValues && Number.isFinite(motionValues.y)\n ? motionValues.y\n : safePosition * DOCK_CARD_DIMENSIONS.collapsedY,\n });\n}\n\nexport function getDockCardContentAnimateProps(\n motion: DockMotion,\n {\n expanded = false,\n position = 0,\n isExtensionShelf = false,\n }: {\n expanded?: boolean;\n position?: number;\n isExtensionShelf?: boolean;\n } = {},\n) {\n const isHidden = !expanded && position > 0 && !isExtensionShelf;\n return isHidden\n ? motion.variants.cardContent.hidden\n : motion.variants.cardContent.visible;\n}\n","\"use client\";\n\nimport {\n useCallback,\n useEffect,\n createContext,\n use,\n useMemo,\n useRef,\n useSyncExternalStore,\n useId,\n useState,\n type ComponentType,\n type RefObject,\n type ReactNode,\n} from \"react\";\nimport {\n useDragControls,\n useMotionValue,\n useTransform,\n type PanInfo,\n} from \"motion/react\";\nimport {\n DockSurfaceShellProps,\n type DockComponentProps,\n type DockScheduledTaskId,\n type DockScheduler,\n type DockSurfaceActions,\n type SurfaceFlowDefinition,\n type SurfaceFlowDefinitionInput,\n type SurfaceFlowHandle,\n type SurfaceResult,\n type SurfaceStackEntry,\n type DockItem,\n type NormalizedSurfaceExtension,\n type SurfaceFlowContextValue,\n type SurfaceFlowState,\n type DockIconSource,\n} from \"../types\";\nimport { DOCK_SURFACE_FLOW_STATUS, DOCK_SURFACE_PHASE } from \"../constants\";\nimport {\n createSurfaceError,\n createSurfaceFlowDefinition,\n createSurfaceFlowSession,\n updateSurfaceFlowSession,\n} from \"./definition\";\nimport {\n getRestorableSurfaceFlowSnapshot,\n syncSurfaceFlowUrlState,\n toSurfaceFlowState,\n updateSurfaceStackEntry,\n IS_BROWSER,\n getSurfaceUrlValue,\n releaseSurfaceResources,\n type SurfaceRuntimeRefs,\n} from \"./machine\";\nimport {\n SurfaceExtensionsContext,\n SurfaceExtensionsStore,\n SurfaceHeaderActionStore,\n useSurfaceId,\n} from \"./context\";\nimport { normalizeSurfaceExtension } from \"./helpers\";\nimport { useDockFocusTrap } from \"../dom\";\nimport { DOCK_SURFACE_DRAG_THRESHOLDS, useDockMotion } from \"../motion\";\nimport { report } from \"@/utils\";\nimport { useIsomorphicLayoutEffect } from \"@/hooks\";\n\nexport function useSurfaceFlows({\n closeSurface,\n openSurface,\n refs,\n syncSurfaceStack,\n}: {\n closeSurface: DockSurfaceActions[\"closeSurface\"];\n openSurface: DockSurfaceActions[\"openSurface\"];\n refs: SurfaceRuntimeRefs;\n syncSurfaceStack: (\n nextStack: SurfaceStackEntry[],\n nextPhase?: string | null,\n ) => void;\n}) {\n const updateSurfaceFlow = useCallback(\n (flowId: string, snapshot: unknown): boolean => {\n const surfaceId = refs.flowIndex.get(flowId);\n if (!surfaceId) return false;\n const record = refs.records.get(surfaceId);\n if (!record?.flow) return false;\n\n const nextSession = updateSurfaceFlowSession(record.flow, snapshot);\n if (!nextSession) return false;\n\n const nextSurfaceEntry = {\n ...record.entry,\n flow: toSurfaceFlowState(nextSession),\n };\n record.flow = nextSession;\n record.entry = nextSurfaceEntry;\n syncSurfaceFlowUrlState(nextSurfaceEntry, record.urlState);\n syncSurfaceStack(\n updateSurfaceStackEntry(\n refs.stackRef.current,\n surfaceId,\n () => nextSurfaceEntry,\n ),\n );\n return true;\n },\n [syncSurfaceStack, refs],\n );\n\n const completeSurfaceFlow = useCallback(\n (flowId: string, data: unknown = null): boolean => {\n const surfaceId = refs.flowIndex.get(flowId);\n if (!surfaceId) return false;\n const record = refs.records.get(surfaceId);\n if (record?.flow)\n record.flow = {\n ...record.flow,\n status: DOCK_SURFACE_FLOW_STATUS.COMPLETED,\n };\n closeSurface({ data, success: true }, surfaceId);\n return true;\n },\n [closeSurface, refs],\n );\n\n const cancelSurfaceFlow = useCallback(\n (flowId: string, data: unknown = null): boolean => {\n const surfaceId = refs.flowIndex.get(flowId);\n if (!surfaceId) return false;\n const record = refs.records.get(surfaceId);\n if (record?.flow)\n record.flow = {\n ...record.flow,\n status: DOCK_SURFACE_FLOW_STATUS.CANCELLED,\n };\n closeSurface(\n { cancelled: true, data, reason: \"flow-cancelled\", success: false },\n surfaceId,\n );\n return true;\n },\n [closeSurface, refs],\n );\n\n const getSurfaceFlow = useCallback(\n (flowId: string): SurfaceFlowHandle | null => {\n const surfaceId = refs.flowIndex.get(flowId);\n const session = surfaceId ? refs.records.get(surfaceId)?.flow : null;\n if (!session) return null;\n return {\n cancel: (data: unknown = null) => cancelSurfaceFlow(flowId, data),\n complete: (data: unknown = null) => completeSurfaceFlow(flowId, data),\n flowId,\n isOpen: session.status === DOCK_SURFACE_FLOW_STATUS.OPEN,\n snapshot: session.snapshot,\n status: session.status,\n update: (snapshot: unknown) => updateSurfaceFlow(flowId, snapshot),\n };\n },\n [cancelSurfaceFlow, completeSurfaceFlow, updateSurfaceFlow, refs],\n );\n\n const openSurfaceFlow = useCallback(\n (\n input: SurfaceFlowDefinitionInput | SurfaceFlowDefinition,\n flowInput: unknown = null,\n {\n preserveUrl = false,\n snapshot,\n }: { preserveUrl?: boolean; snapshot?: unknown } = {},\n ): Promise<SurfaceResult> => {\n const definition = createSurfaceFlowDefinition(input);\n if (!definition) {\n const error = createSurfaceError(\n \"DOCK_SURFACE_FLOW_INVALID_DEFINITION\",\n \"Dock surface flow definition is invalid\",\n );\n report(\"Dock surface flow definition\", error);\n return Promise.resolve({ success: false, error });\n }\n const existingSurfaceId = refs.flowIndex.get(definition.id);\n if (definition.singleton && existingSurfaceId) {\n return (\n refs.records.get(existingSurfaceId)?.promise ??\n Promise.resolve({\n success: false,\n error: createSurfaceError(\n \"DOCK_SURFACE_FLOW_ORPHANED\",\n \"Dock surface flow is orphaned\",\n ),\n })\n );\n }\n\n const flowSession = createSurfaceFlowSession(definition, {\n input: flowInput,\n snapshot,\n });\n try {\n const surfaceInput = definition.createSurface({\n flowId: definition.id,\n input: flowInput,\n snapshot: flowSession?.snapshot,\n });\n return openSurface(surfaceInput, { flowSession, preserveUrl });\n } catch (error) {\n report(\"Dock surface flow factory\", error);\n return Promise.resolve({ success: false, error });\n }\n },\n [openSurface, refs],\n );\n\n const restoreSurfaceFlow = useCallback(\n (\n input: SurfaceFlowDefinitionInput | SurfaceFlowDefinition,\n ): Promise<SurfaceResult> => {\n const definition = createSurfaceFlowDefinition(input);\n const snapshot = getRestorableSurfaceFlowSnapshot(definition);\n if (!definition || snapshot === undefined) return Promise.resolve(null);\n return openSurfaceFlow(definition, null, { preserveUrl: true, snapshot });\n },\n [openSurfaceFlow],\n );\n\n return {\n cancelSurfaceFlow,\n completeSurfaceFlow,\n getSurfaceFlow,\n openSurfaceFlow,\n restoreSurfaceFlow,\n updateSurfaceFlow,\n };\n}\n\nexport function useSurfaceLifecycleEffects({\n clearChoreographyTimers,\n closeAllSurfaces,\n focusRestoreFrameRef,\n refs,\n runtimeScheduler,\n}: {\n clearChoreographyTimers: () => void;\n closeAllSurfaces: DockSurfaceActions[\"closeAllSurfaces\"];\n focusRestoreFrameRef: RefObject<DockScheduledTaskId | null>;\n refs: SurfaceRuntimeRefs;\n runtimeScheduler: DockScheduler;\n}) {\n useEffect(() => {\n if (!IS_BROWSER) return;\n const handlePopState = () => {\n const activeEntry =\n refs.stackRef.current[refs.stackRef.current.length - 1];\n if (!activeEntry?.syncWithUrl && !activeEntry?.urlKey) return;\n if (\n new URL(window.location.href).searchParams.get(\"surface\") ===\n getSurfaceUrlValue(activeEntry)\n )\n return;\n closeAllSurfaces({\n success: false,\n cancelled: true,\n reason: \"browser-back\",\n });\n };\n window.addEventListener(\"popstate\", handlePopState);\n return () => window.removeEventListener(\"popstate\", handlePopState);\n }, [closeAllSurfaces, refs]);\n\n useEffect(() => {\n return () => {\n clearChoreographyTimers();\n if (focusRestoreFrameRef.current !== null) {\n runtimeScheduler.cancel(focusRestoreFrameRef.current);\n focusRestoreFrameRef.current = null;\n }\n\n const result = { cancelled: true, reason: \"unmount\", success: false };\n refs.stackRef.current.forEach(({ id }) =>\n releaseSurfaceResources({ refs, result, surfaceId: id }),\n );\n\n refs.stackRef.current = [];\n refs.payloads.clear();\n refs.records.clear();\n refs.flowIndex.clear();\n };\n }, [clearChoreographyTimers, focusRestoreFrameRef, refs, runtimeScheduler]);\n}\n\nconst SurfaceFlowContext = createContext<SurfaceFlowContextValue | null>(null);\n\nexport function SurfaceFlowProvider({\n children,\n value,\n}: {\n children?: ReactNode;\n value: SurfaceFlowContextValue;\n}) {\n return <SurfaceFlowContext value={value}>{children}</SurfaceFlowContext>;\n}\n\nexport function useSurfaceFlow(input: SurfaceFlowDefinitionInput) {\n const context = use(SurfaceFlowContext);\n const definition = useMemo(() => createSurfaceFlowDefinition(input), [input]);\n const restoredFlowIdsRef = useRef(new Set<string>());\n const flowId = definition?.id ?? null;\n\n const activeFlow = useMemo((): SurfaceFlowState | null => {\n if (!flowId) return null;\n return (\n context?.surfaceState?.surfaceStack\n ?.map((s) => s.flow)\n .find((f) => f?.flowId === flowId) ?? null\n );\n }, [context?.surfaceState?.surfaceStack, flowId]);\n\n useEffect(() => {\n if (\n !definition ||\n !context?.restoreSurfaceFlow ||\n restoredFlowIdsRef.current.has(definition.id)\n )\n return;\n restoredFlowIdsRef.current.add(definition.id);\n void context.restoreSurfaceFlow(definition);\n }, [context, definition]);\n\n const open = useCallback(\n (flowInput: unknown = null): Promise<SurfaceResult> => {\n if (!definition || !context?.openSurfaceFlow) {\n return Promise.resolve({\n success: false,\n error: createSurfaceError(\n \"DOCK_SURFACE_FLOW_UNAVAILABLE\",\n \"Dock surface flow is unavailable\",\n ),\n });\n }\n return context.openSurfaceFlow(definition, flowInput);\n },\n [context, definition],\n );\n\n return useMemo(\n () => ({\n activeFlow,\n cancel: (result: SurfaceResult = null) =>\n flowId ? context?.cancelSurfaceFlow?.(flowId, result) : undefined,\n complete: (result: SurfaceResult = null) =>\n flowId ? context?.completeSurfaceFlow?.(flowId, result) : undefined,\n flowId,\n isOpen: activeFlow?.status === DOCK_SURFACE_FLOW_STATUS.OPEN,\n open,\n snapshot: activeFlow?.snapshot ?? definition?.initialSnapshot ?? null,\n update: (snapshot: unknown) =>\n flowId ? context?.updateSurfaceFlow?.(flowId, snapshot) : undefined,\n }),\n [activeFlow, context, definition?.initialSnapshot, flowId, open],\n );\n}\n\nexport const DockSurfaceHeaderRadiusContext = createContext<string | null>(\n null,\n);\n\nexport function useDockSurfaceHeaderButtonModel({\n children,\n className = \"\",\n disabled = false,\n onClick,\n ariaLabel,\n icon = null,\n}: {\n children?: ReactNode;\n className?: string;\n disabled?: boolean;\n onClick?: (event: React.MouseEvent) => void;\n ariaLabel?: string;\n icon?: DockIconSource;\n}) {\n const contextRadius = use(DockSurfaceHeaderRadiusContext);\n\n return { contextRadius };\n}\n\nexport function useDockSurfaceControlsModel({\n activeItem = null,\n hasExtensions = false,\n onClose = null,\n onBack = null,\n closeLabel = null,\n backLabel = null,\n className = \"\",\n surfacePhase: propSurfacePhase,\n}: {\n activeItem?: DockItem | null;\n hasExtensions?: boolean;\n onClose?: (() => void) | null;\n onBack?: (() => void) | null;\n closeLabel?: string | null;\n backLabel?: string | null;\n className?: string;\n surfacePhase?: string;\n}) {\n const phase = propSurfacePhase ?? activeItem?.surfacePhase;\n const isBodyVisible = phase\n ? phase === DOCK_SURFACE_PHASE.EXPANDING_BODY ||\n phase === DOCK_SURFACE_PHASE.OPEN\n : true;\n const actionStore = use(SurfaceExtensionsContext)?.headerActions ?? null;\n const surfaceId = activeItem?.surfaceId || \"active\";\n const subscribeAction = useCallback(\n (onStoreChange: () => void) =>\n actionStore ? actionStore.subscribe(onStoreChange) : () => {},\n [actionStore],\n );\n const getActionSnapshot = useCallback(\n () => (actionStore ? actionStore.getAction(surfaceId) : null),\n [actionStore, surfaceId],\n );\n const dynamicAction = useSyncExternalStore(\n subscribeAction,\n getActionSnapshot,\n () => null,\n );\n\n return { isBodyVisible, dynamicAction };\n}\n\nexport function SurfaceExtensionsProvider({\n children,\n}: {\n children: ReactNode;\n}) {\n const [value] = useState(() => ({\n extensions: new SurfaceExtensionsStore(),\n headerActions: new SurfaceHeaderActionStore(),\n }));\n\n return (\n <SurfaceExtensionsContext value={value}>\n {children}\n </SurfaceExtensionsContext>\n );\n}\n\nexport function useDockSurfaceExtension({\n align = \"left\",\n children,\n className = \"\",\n component,\n id,\n order = 0,\n props: extensionProps,\n unstyled = false,\n}: {\n align?: string;\n children?: ReactNode;\n className?: string;\n component?: ComponentType<DockComponentProps> | null;\n id?: string;\n order?: number;\n props?: DockComponentProps;\n unstyled?: boolean;\n}) {\n const store = use(SurfaceExtensionsContext)?.extensions ?? null;\n const surfaceId = useSurfaceId();\n const generatedId = useId();\n const effectiveId = id || `dock-surface-ext-${generatedId}`;\n\n useIsomorphicLayoutEffect(() => {\n if (!store) return;\n const extension = {\n align,\n className,\n component: component ?? null,\n content: children,\n id: effectiveId,\n order,\n props: extensionProps ?? {},\n unstyled,\n };\n store.setExtension(surfaceId, extension);\n if (surfaceId && surfaceId !== \"active\") {\n store.setExtension(\"active\", extension);\n }\n });\n\n useIsomorphicLayoutEffect(() => {\n return () => {\n if (store) {\n store.removeExtension(surfaceId, effectiveId);\n if (surfaceId && surfaceId !== \"active\") {\n store.removeExtension(\"active\", effectiveId);\n }\n }\n };\n }, [store, surfaceId, effectiveId]);\n}\n\nexport function useIsSurfaceExtensionsVisible(\n activeItem: DockItem | null | undefined,\n): boolean {\n const store = use(SurfaceExtensionsContext)?.extensions ?? null;\n const surfaceId = activeItem?.surfaceId || \"active\";\n const isSurface = Boolean(activeItem?.isSurface);\n const phase = activeItem?.surfacePhase;\n const isBodyVisible =\n phase === DOCK_SURFACE_PHASE.EXPANDING_BODY ||\n phase === DOCK_SURFACE_PHASE.OPEN;\n\n const subscribe = useCallback(\n (onStoreChange: () => void) =>\n store ? store.subscribe(onStoreChange) : () => {},\n [store],\n );\n const getSnapshot = useCallback(\n () => (store ? store.getExtensionsForSurface(surfaceId).length : 0),\n [store, surfaceId],\n );\n\n const dynamicCount = useSyncExternalStore(subscribe, getSnapshot, () => 0);\n const descriptorCount = useMemo(() => {\n const raw = activeItem?.surfaceExtensions || activeItem?.extensions || [];\n return Array.isArray(raw) ? raw.length : 0;\n }, [activeItem?.surfaceExtensions, activeItem?.extensions]);\n\n return Boolean(\n isSurface &&\n ((isBodyVisible && dynamicCount > 0) || descriptorCount > 0),\n );\n}\n\nexport function useDockSurfaceExtensionsBarModel({\n activeItem,\n}: {\n activeItem?: DockItem | null;\n}) {\n const store = use(SurfaceExtensionsContext)?.extensions ?? null;\n const surfaceId = activeItem?.surfaceId || \"active\";\n const subscribe = useCallback(\n (onStoreChange: () => void) =>\n store ? store.subscribe(onStoreChange) : () => {},\n [store],\n );\n const getSnapshot = useCallback(\n () => (store ? store.getExtensionsForSurface(surfaceId) : []),\n [store, surfaceId],\n );\n const dynamicExtensions = useSyncExternalStore(\n subscribe,\n getSnapshot,\n () => [],\n );\n const descriptorExtensions = useMemo(() => {\n const raw = activeItem?.surfaceExtensions || activeItem?.extensions || [];\n return Array.isArray(raw)\n ? raw\n .map(normalizeSurfaceExtension)\n .filter((ext): ext is NormalizedSurfaceExtension => ext !== null)\n : [];\n }, [activeItem?.surfaceExtensions, activeItem?.extensions]);\n const allExtensions = useMemo(() => {\n const map = new Map<string, NormalizedSurfaceExtension>();\n descriptorExtensions.forEach((ext) => map.set(ext.id, ext));\n dynamicExtensions.forEach((ext) => map.set(ext.id, ext));\n return Array.from(map.values()).sort((a, b) => a.order - b.order);\n }, [descriptorExtensions, dynamicExtensions]);\n\n return { allExtensions };\n}\n\nexport function useDockSurfaceShellModel({\n ref,\n title = \"\",\n onClose = null,\n onBack = null,\n allowSwipeDismiss = true,\n closeLabel = \"Close surface\",\n backLabel = \"Previous step\",\n showControls = false,\n className = \"\",\n contentClassName = \"\",\n children,\n onAnimationComplete = null,\n isActive = true,\n surfaceId = null,\n surfacePhase = DOCK_SURFACE_PHASE.OPEN,\n surfaceWidth = null,\n}: DockSurfaceShellProps) {\n const surfaceElementRef = useRef<HTMLElement | null>(null);\n const setSurfaceElementRef = useCallback(\n (node: HTMLElement | null) => {\n surfaceElementRef.current = node;\n if (typeof ref === \"function\") ref(node);\n else if (ref) (ref as { current: HTMLElement | null }).current = node;\n },\n [ref],\n );\n const isFullyOpen = surfacePhase === DOCK_SURFACE_PHASE.OPEN;\n const titleId =\n surfaceId == null ? undefined : `dock-surface-title-${surfaceId}`;\n const dockMotion = useDockMotion();\n const dragRanges = useMemo(\n () => ({\n opacity: [...dockMotion.drag.opacity],\n range: [...dockMotion.drag.range],\n scale: [...dockMotion.drag.scale],\n }),\n [dockMotion.drag],\n );\n const dragY = useMotionValue(0);\n const dragOpacity = useTransform(dragY, dragRanges.range, dragRanges.opacity);\n const dragScale = useTransform(dragY, dragRanges.range, dragRanges.scale);\n useDockFocusTrap({\n containerRef: surfaceElementRef,\n enabled: isActive && isFullyOpen,\n onDismiss: typeof onClose === \"function\" ? onClose : null,\n });\n const handleDragEnd = (_event: unknown, info: PanInfo) => {\n if (\n !isActive ||\n !allowSwipeDismiss ||\n typeof onClose !== \"function\" ||\n !isFullyOpen\n )\n return;\n if (\n info.offset.y > DOCK_SURFACE_DRAG_THRESHOLDS.DISMISS_OFFSET_Y ||\n info.velocity.y > DOCK_SURFACE_DRAG_THRESHOLDS.DISMISS_VELOCITY_Y\n ) {\n onClose();\n }\n };\n const dragControls = useDragControls();\n const canDragDismiss = Boolean(\n isActive &&\n allowSwipeDismiss &&\n typeof onClose === \"function\" &&\n isFullyOpen,\n );\n const handleSurfacePointerDown = useCallback(\n (event: React.PointerEvent<HTMLElement>) => {\n if (!canDragDismiss) return;\n const target = event.target as HTMLElement | null;\n if (\n target?.closest?.(\n 'input, textarea, select, [role=\"slider\"], [data-no-surface-drag], [data-lenis-prevent]',\n )\n ) {\n return;\n }\n dragControls.start(event);\n },\n [canDragDismiss, dragControls],\n );\n const isBodyVisible =\n surfacePhase === DOCK_SURFACE_PHASE.EXPANDING_BODY ||\n surfacePhase === DOCK_SURFACE_PHASE.OPEN;\n const resolvedSurfaceId = surfaceId || \"active\";\n const bodyVariants = useMemo(() => {\n const { surfaceBody } = dockMotion.variants;\n const { surfaceEnter, surfaceExit, surfaceStep } = dockMotion.transitions;\n return {\n hidden: surfaceBody.hidden,\n visible: {\n ...(surfaceBody.visible as object),\n transition:\n surfacePhase === DOCK_SURFACE_PHASE.EXPANDING_BODY\n ? surfaceEnter\n : surfaceStep,\n },\n exit: {\n ...(surfaceBody.exit as object),\n transition: surfaceExit,\n },\n };\n }, [dockMotion, surfacePhase]);\n const surfaceItemValue = useMemo(\n () => ({ id: resolvedSurfaceId, width: surfaceWidth }),\n [resolvedSurfaceId, surfaceWidth],\n );\n\n return {\n setSurfaceElementRef,\n titleId,\n dragY,\n dragOpacity,\n dragScale,\n handleDragEnd,\n dragControls,\n canDragDismiss,\n handleSurfacePointerDown,\n isBodyVisible,\n bodyVariants,\n surfaceItemValue,\n };\n}\n","import { type CSSProperties } from \"react\";\nimport { cn, isObject as isObjectLike, trimToNull } from \"@/utils\";\nimport { Z_INDEX } from \"@/tokens\";\nimport {\n DOCK_CARD_LAYOUT,\n DOCK_STYLE_SECTIONS,\n} from \"./constants\";\nimport {\n type DockItemCardPropsOptions,\n type DockStyleSectionName,\n type DockTheme as DockThemeType,\n type DockVisualStyle,\n type DockVisualStyleInput,\n type DockVisualStyleSection,\n type DockVisualStyleSections,\n} from \"./types\";\nexport type DockStyleInput = DockVisualStyleSection;\n\nexport function isValidBannerUrl(banner: unknown): boolean {\n const value = trimToNull(banner);\n if (!value) return false;\n return /^(https?:\\/\\/|\\/|data:image\\/)/.test(value);\n}\n\nexport function splitStyle<T extends DockStyleInput>(\n style: T = {} as T,\n): {\n className: string | undefined;\n inlineStyle: Omit<T, \"className\">;\n} {\n const { className, ...inlineStyle } = style;\n return {\n className,\n inlineStyle,\n };\n}\n\nexport function getLineClampStyle(\n maxLines: number | string | undefined,\n style: CSSProperties,\n): CSSProperties {\n if (Number(maxLines) <= 1) return style;\n return {\n WebkitBoxOrient: \"vertical\" as const,\n WebkitLineClamp: maxLines,\n display: \"-webkit-box\",\n overflow: \"hidden\",\n ...style,\n };\n}\n\nexport function getImageIconStyle(\n style: CSSProperties,\n icon: string,\n): CSSProperties {\n const nextStyle = {\n ...style,\n };\n delete nextStyle.background;\n delete nextStyle.backgroundImage;\n return {\n ...nextStyle,\n backgroundImage: `url(${icon})`,\n };\n}\n\nexport function resolveDockActionClass(\n slots: DockThemeType[\"slots\"],\n {\n className = \"\",\n button = \"\",\n isActive = false,\n variant = \"\",\n tone = \"\",\n base,\n cn: classNamesFn,\n }: {\n className?: string;\n button?: string;\n isActive?: boolean;\n variant?: string;\n tone?: string;\n base?: string;\n cn?: (...args: Parameters<typeof cn>) => string;\n } = {},\n): string {\n const resolve = classNamesFn || cn;\n const toneClasses: Readonly<Record<string, string | undefined>> = {\n muted: slots.actionMuted,\n active: slots.actionActive,\n };\n if (button && !className && base === undefined) {\n if (tone) {\n const toneClass =\n toneClasses[tone] || slots.actionSurface || slots.actionMuted;\n return resolve(button, toneClass);\n }\n const stateToken = isActive ? slots.actionActive : slots.actionMuted;\n return resolve(button, stateToken);\n }\n const elementClass = className || button;\n const resolvedBase = base !== undefined ? base : slots.action;\n const stateClass =\n variant ||\n (tone && (toneClasses[tone] || slots.actionSurface)) ||\n (isActive ? slots.actionActive : slots.actionMuted);\n return resolve(stateClass, resolvedBase, elementClass);\n}\n\n\nexport function getDockItemCardProps({\n cardScale,\n cardStyle,\n expanded,\n hasExtensions = false,\n isAnchoredToBottom,\n position,\n theme,\n visibleCount = 3,\n}: DockItemCardPropsOptions) {\n const { offsetY: collapsedOffsetY, scale: collapsedScale } =\n DOCK_CARD_LAYOUT.collapsed;\n const { offsetY: expandedOffsetY } = DOCK_CARD_LAYOUT.expanded;\n\n const safeCardStyle = { ...cardStyle };\n delete safeCardStyle.scale;\n delete safeCardStyle.className;\n\n const isTop = position === 0;\n const isShelf = !expanded && position === 1 && hasExtensions;\n const isHeavyBlur = position < visibleCount || expanded || isShelf;\n const collapsedScaleValue = collapsedScale ** position;\n\n const y = expanded\n ? position * expandedOffsetY\n : isShelf\n ? DOCK_CARD_LAYOUT.extensionShelfY\n : position * collapsedOffsetY;\n const shelfScale = DOCK_CARD_LAYOUT.extensionShelfScale ?? 0.94;\n const scale = expanded\n ? cardScale || 1\n : isShelf\n ? shelfScale\n : collapsedScaleValue;\n\n const collapsedOpacity = Math.max(0.1, +(1 - position * 0.2).toFixed(2));\n const opacity =\n expanded || isShelf ? 1 : position < visibleCount ? collapsedOpacity : 0;\n\n return {\n className: cn(theme.slots.card, cardStyle?.className),\n data: {\n \"data-anchored\": isAnchoredToBottom,\n \"data-blur\": isHeavyBlur ? \"heavy\" : \"light\",\n \"data-placement\": isTop ? \"top\" : isAnchoredToBottom ? \"bottom\" : \"float\",\n \"data-shelf\": isShelf,\n },\n style: {\n ...theme.styles.card,\n ...safeCardStyle,\n willChange: \"transform, opacity\",\n transformOrigin: isAnchoredToBottom ? \"bottom center\" : \"top center\",\n zIndex: Z_INDEX.DOCK_CARD_STACK_BASE - position,\n WebkitPerspective: 1000,\n perspective: 1000,\n WebkitBackfaceVisibility: \"hidden\" as const,\n backfaceVisibility: \"hidden\" as const,\n WebkitFontSmoothing: \"antialiased\",\n transform: \"translateZ(0)\",\n ...(isTop ? { height: \"100%\" } : {}),\n pointerEvents: (expanded || position < visibleCount\n ? undefined\n : \"none\") as CSSProperties[\"pointerEvents\"],\n },\n motionValues: { y, scale, opacity },\n };\n}\n\nfunction toObject(value: unknown): Record<string, unknown> {\n return isObjectLike(value) ? (value as Record<string, unknown>) : {};\n}\n\nfunction pickCardSurfaceStyle(\n style?: DockVisualStyleInput | null,\n): Pick<CSSProperties, \"background\" | \"borderColor\"> {\n const cardSurfaceStyle: Pick<CSSProperties, \"background\" | \"borderColor\"> =\n {};\n if (style?.background != null) cardSurfaceStyle.background = style.background;\n if (style?.borderColor != null)\n cardSurfaceStyle.borderColor = style.borderColor;\n return cardSurfaceStyle;\n}\n\nfunction toStyleSections(value: unknown): DockVisualStyleSections {\n return toObject(value) as DockVisualStyleSections;\n}\n\nfunction mergeStyleSection(\n baseStyle: DockVisualStyleSections,\n stateStyle: DockVisualStyleSections,\n hoverStyle: DockVisualStyleSections,\n section: DockStyleSectionName,\n): DockVisualStyleSection {\n return {\n ...toObject(baseStyle?.[section]),\n ...toObject(stateStyle?.[section]),\n ...toObject(hoverStyle?.[section]),\n } as DockVisualStyleSection;\n}\n\nexport function resolveDockVisualStyle(\n style?: DockVisualStyleInput | null,\n {\n isActive = false,\n isHovered = false,\n }: { isActive?: boolean; isHovered?: boolean } = {},\n): DockVisualStyle {\n const baseStyle = toObject(style) as DockVisualStyleInput;\n const stateStyle = isActive\n ? toStyleSections(baseStyle.active)\n : toStyleSections(baseStyle.inactive);\n const hoverStyle = isHovered ? toStyleSections(baseStyle.hover) : {};\n\n const sections: DockVisualStyle = {\n card: {},\n icon: {},\n title: {},\n description: {},\n };\n\n for (const section of DOCK_STYLE_SECTIONS) {\n sections[section] = mergeStyleSection(\n baseStyle,\n stateStyle,\n hoverStyle,\n section,\n );\n }\n\n sections.card = { ...pickCardSurfaceStyle(baseStyle), ...sections.card };\n\n return {\n ...sections,\n scale:\n hoverStyle?.card?.scale ?? stateStyle?.card?.scale ?? baseStyle?.scale,\n };\n}\n\n","\"use client\";\n\nimport { use, useCallback, useMemo } from \"react\";\nimport { usePathname } from \"next/navigation\";\nimport { useStore } from \"@/hooks\";\nimport { useModuleRegistration, type RegistryMetadata } from \"@/kernel\";\nimport { createStore, shallowEqual } from \"@/utils\";\nimport { useModuleTheme } from \"@/theme\";\nimport { dockTheme } from \"./constants\";\nimport {\n DockContext,\n EMPTY_DOCK_STATE,\n useDockActions,\n useDockHeight,\n useDockSelector,\n} from \"./context\";\nimport { isSamePath } from \"./paths\";\nimport { resolveDockActionClass } from \"./styles\";\nimport {\n type DockBannerInput,\n type DockPageConfig,\n type DockReturnHandoff,\n type DockState,\n} from \"./types\";\n\nexport function useDockTheme() {\n return useModuleTheme(dockTheme);\n}\n\nexport function useDockActionClass() {\n const { slots } = useDockTheme();\n return useCallback(\n (options?: Parameters<typeof resolveDockActionClass>[1]) =>\n resolveDockActionClass(slots, options),\n [slots],\n );\n}\n\nexport function useDockRegistration(\n config: DockPageConfig | null | undefined,\n options?: RegistryMetadata & { enabled?: boolean; [key: string]: unknown },\n): void {\n useModuleRegistration(\"dock\", config, options);\n}\n\nexport function useDockBanner(\n banner: DockBannerInput | null | undefined,\n options?: {\n path?: string;\n position?: string;\n size?: string;\n opacity?: number;\n repeat?: string;\n [key: string]: unknown;\n },\n): void {\n const position = options?.position;\n const size = options?.size;\n const opacity = options?.opacity;\n const repeat = options?.repeat;\n const targetPath = options?.path;\n\n const config = useMemo(() => {\n if (!banner) return null;\n if (typeof banner === \"string\") {\n return {\n bannerUrl: banner,\n ...(position ? { bannerPosition: position } : {}),\n ...(size ? { bannerSize: size } : {}),\n ...(opacity !== undefined ? { bannerOpacity: opacity } : {}),\n ...(repeat ? { bannerRepeat: repeat } : {}),\n ...(targetPath ? { path: targetPath } : {}),\n };\n }\n if (typeof banner === \"object\") {\n return {\n bannerUrl: banner.url || banner.bannerUrl,\n bannerPosition: banner.position || banner.bannerPosition || position,\n bannerSize: banner.size || banner.bannerSize || size,\n bannerOpacity: banner.opacity ?? banner.bannerOpacity ?? opacity,\n bannerRepeat: banner.repeat || banner.bannerRepeat || repeat,\n ...(targetPath ? { path: targetPath } : {}),\n };\n }\n return null;\n }, [banner, position, size, opacity, repeat, targetPath]);\n\n useDockRegistration(config, options);\n}\n\nconst EMPTY_DOCK_STATE_STORE = createStore<DockState>(EMPTY_DOCK_STATE);\n\nfunction selectDockConfigState(state: DockState) {\n return {\n activeItem: state.activeItem,\n dockHeight: state.dockHeight,\n expanded: state.expanded,\n pathname: state.pathname,\n };\n}\n\nexport function useDockConfig(\n configOrTitle?: string | Record<string, unknown> | null,\n options?: Record<string, unknown>,\n) {\n const normalizedConfig = useMemo(() => {\n if (!configOrTitle) return null;\n if (typeof configOrTitle === \"string\") return { title: configOrTitle };\n return configOrTitle;\n }, [configOrTitle]);\n\n useDockRegistration(normalizedConfig, options);\n\n const dockContext = use(DockContext);\n const actions = dockContext?.actions;\n const state = useStore(\n dockContext?.store ?? EMPTY_DOCK_STATE_STORE,\n selectDockConfigState,\n shallowEqual,\n );\n\n return useMemo(\n () => ({\n activeItem: state.activeItem,\n clearHud: actions?.clearHud ?? (() => {}),\n closeAllSurfaces: actions?.closeAllSurfaces ?? (() => {}),\n closeSurface: actions?.closeSurface ?? (() => {}),\n expanded: state.expanded,\n dockHeight: state.dockHeight,\n navigate: actions?.navigate ?? (async () => false),\n openSurface: actions?.openSurface ?? (() => undefined),\n pathname: state.pathname,\n setExpanded: actions?.setExpanded ?? (() => {}),\n setHud: actions?.setHud ?? (() => {}),\n setSearchQuery: actions?.setSearchQuery ?? (() => {}),\n }),\n [actions, state],\n );\n}\n\nexport function useDockDimensions() {\n const { dockHeight } = useDockHeight();\n const activeItem = useDockSelector((state) => state.activeItem);\n return {\n height: dockHeight,\n width: activeItem?.width ?? null,\n isSurface: Boolean(activeItem?.isSurface),\n };\n}\n\nexport function useSurfaceReturn() {\n const pathname = usePathname();\n const { continuity } = useDockActions();\n const dockReturnHandoffs: DockReturnHandoff[] = useDockSelector(\n (state) => state.dockReturnHandoffs,\n );\n\n const entries = useMemo(\n () =>\n (dockReturnHandoffs || []).filter((handoff) =>\n isSamePath(handoff.path, pathname),\n ),\n [dockReturnHandoffs, pathname],\n );\n const consume = useCallback(\n (handoffId: string | null = null) =>\n continuity.consumeReturn(pathname, handoffId),\n [continuity, pathname],\n );\n\n return useMemo(\n () => ({ consume, entries, peek: () => entries[0] || null }),\n [consume, entries],\n );\n}\n","import { normalizePath } from \"@/utils\";\nimport { isInlineActionPathMatch, isPathPrefix, isSamePath } from \"../paths\";\nimport { type DockItem } from \"../types\";\n\ntype AncestorAwareItem = DockItem & {\n keepWhenDescendant?:\n boolean | ((activePath: string, item: DockItem) => boolean);\n statusType?: string;\n};\n\nexport function isSameDockItem(\n item: DockItem | null | undefined,\n candidate: DockItem | null | undefined,\n): boolean {\n return Boolean(\n (item?.path && item.path === candidate?.path) ||\n (item?.name && item.name === candidate?.name),\n );\n}\n\nexport const isSameItem = isSameDockItem;\n\nexport function getItemKey(link: DockItem | null, index = 0): string {\n const identity = link?.id ?? link?.path ?? link?.name ?? link?.type;\n return `dock-card:${identity == null ? `slot-${index}` : String(identity)}`;\n}\n\nexport function resolveDockHeaderKey({\n link,\n description = \"\",\n showVideoIcon = false,\n}: {\n link: AncestorAwareItem;\n description?: string | null;\n showVideoIcon?: boolean;\n}): string {\n const statusPart = link?.isStatus\n ? `status:${link.statusType || link.type || \"status\"}`\n : \"standard\";\n const identityPart = link?.path || link?.name || link?.id || \"item\";\n const titlePart = link?.title || link?.name || \"\";\n const descPart = description || \"\";\n const iconPart = showVideoIcon ? \"video\" : link?.icon || \"no-icon\";\n return `${statusPart}:${identityPart}:${iconPart}:${titlePart}:${descPart}`;\n}\n\nexport function findDockItemIndex(\n dockItems: DockItem[],\n activeItem: DockItem | null,\n pathname: string,\n): number {\n const normalizedPathname = normalizePath(pathname);\n const selectedDataSourceIndex = dockItems.findIndex(\n (item) => item.isDataSource && item.isSelected,\n );\n if (selectedDataSourceIndex !== -1) return selectedDataSourceIndex;\n\n if (activeItem) {\n const matchedActiveIndex = dockItems.findIndex(\n (item) =>\n (item.path && isSamePath(item.path, activeItem.path)) ||\n (item.name && item.name === activeItem.name),\n );\n if (matchedActiveIndex !== -1) return matchedActiveIndex;\n }\n\n return dockItems.findIndex(\n (item) =>\n isSamePath(item.path, normalizedPathname) ||\n (item.targetPath && isSamePath(item.targetPath, normalizedPathname)),\n );\n}\n\nexport function resolveActiveIndex({\n dockItems,\n activeItem,\n pathname,\n}: {\n dockItems: DockItem[];\n activeItem: DockItem | null;\n pathname: string;\n}): number {\n return Math.max(0, findDockItemIndex(dockItems, activeItem, pathname));\n}\n\nfunction shouldKeepAncestorItem(\n item: AncestorAwareItem,\n activePath: string,\n): boolean {\n const policy = item?.keepWhenDescendant;\n if (typeof policy === \"function\") {\n try {\n return Boolean(policy(activePath, item));\n } catch {\n return false;\n }\n }\n return policy === true;\n}\n\nfunction isAncestorPath(item: AncestorAwareItem, activePath: string): boolean {\n const candidatePath = item?.path;\n if (!candidatePath || candidatePath === \"/\" || candidatePath === activePath) {\n return false;\n }\n return (\n isPathPrefix(candidatePath, activePath) &&\n !shouldKeepAncestorItem(item, activePath)\n );\n}\n\nexport function removeAncestorDuplicates(items: DockItem[] = []): DockItem[] {\n if (!Array.isArray(items) || items.length <= 1) return items;\n const activePath = items[0]?.path;\n if (!activePath) return items;\n\n return items.filter(\n (item, index) => index === 0 || !isAncestorPath(item, activePath),\n );\n}\n\nexport function replaceActiveItem(\n items: DockItem[],\n activeIndex: number,\n activeItem: DockItem | null,\n): DockItem[] {\n if (activeIndex === -1 || !activeItem) return items;\n const nextItems = [...items];\n nextItems[activeIndex] = activeItem;\n return nextItems;\n}\n\nexport function removeInactiveLoadingItems(\n items: DockItem[] = [],\n activeItem: DockItem | null = null,\n): DockItem[] {\n if (!Array.isArray(items) || items.length === 0) return items;\n return items.filter(\n (item) => !item?.isLoading || isSameItem(item, activeItem),\n );\n}\n\nexport function reorderItemsWithActiveFirst(\n items: DockItem[],\n activeIndex: number,\n): DockItem[] {\n if (activeIndex === -1) return items;\n const active = items[activeIndex];\n const rest = [\n ...items.slice(0, activeIndex),\n ...items.slice(activeIndex + 1),\n ];\n rest.sort((a, b) => (a.path === \"/\" ? 1 : b.path === \"/\" ? -1 : 0));\n return [active, ...rest];\n}\n\nexport function shouldRenderInlineAction(\n {\n action,\n isLoading,\n isOverlay,\n path,\n }: {\n action?: unknown;\n isLoading?: boolean;\n isOverlay?: boolean;\n path?: string | null;\n },\n pathname: string,\n): boolean {\n return (\n Boolean(action) &&\n !isLoading &&\n (isOverlay || !path || isInlineActionPathMatch(path, pathname))\n );\n}\n\nexport function getIsItemActive(\n link: DockItem | null,\n activeItem: DockItem | null,\n): boolean {\n if (!link || !activeItem) return false;\n if (link.path && activeItem.path && isSamePath(link.path, activeItem.path))\n return true;\n if (\n link.targetPath &&\n activeItem.targetPath &&\n isSamePath(link.targetPath, activeItem.targetPath)\n )\n return true;\n return Boolean(link.name && activeItem.name && link.name === activeItem.name);\n}\n","\"use client\";\n\nimport {\n useCallback,\n useEffect,\n useRef,\n useState,\n type RefObject,\n} from \"react\";\nimport { useIsomorphicLayoutEffect } from \"@/hooks\";\nimport {\n DOCK_CARD_LAYOUT,\n DOCK_HEIGHT_BUFFER,\n DOCK_SURFACE_PHASE,\n HEIGHT_EPSILON,\n VIEWPORT_MARGIN,\n} from \"./constants\";\nimport {\n type ContainerHeightOptions,\n type DockItem,\n type UseDockHeightControllerOptions,\n} from \"./types\";\n\nexport function getViewportMaxHeight(): number {\n if (typeof window === \"undefined\") return Infinity;\n return window.innerHeight - VIEWPORT_MARGIN;\n}\n\nexport function getContainerHeight({\n cardContentHeight,\n isHud = false,\n}: ContainerHeightOptions): number {\n const chromeHeight = DOCK_CARD_LAYOUT.chromeHeight;\n const minCardHeight = isHud\n ? DOCK_CARD_LAYOUT.hudHeight\n : DOCK_CARD_LAYOUT.baseHeight;\n const numericContentHeight = Number(cardContentHeight);\n\n const nextCardHeight = Math.max(\n minCardHeight,\n (Number.isFinite(numericContentHeight) ? numericContentHeight : 0) +\n chromeHeight,\n );\n return Math.min(nextCardHeight, getViewportMaxHeight());\n}\n\nexport function getDockCardWidth({\n width,\n}: {\n width?: number | string | null;\n} = {}): number {\n if (typeof window === \"undefined\") return width ? Number(width) || 460 : 460;\n\n const windowWidth = window.innerWidth;\n const isDesktop = windowWidth >= 640;\n const targetWidth = Number(width);\n\n if (Number.isFinite(targetWidth) && targetWidth > 0) {\n return Math.min(\n targetWidth,\n Math.max(windowWidth - (isDesktop ? 32 : 16), 0),\n );\n }\n\n return Math.min(460, Math.max(windowWidth - 16, 0));\n}\n\nfunction getObservedHeight(\n entry: ResizeObserverEntry | undefined,\n element: HTMLElement | null,\n): number {\n const rawBorderBoxSize = entry?.borderBoxSize as\n | ReadonlyArray<ResizeObserverSize>\n | ResizeObserverSize\n | undefined;\n const borderBoxSize = Array.isArray(rawBorderBoxSize)\n ? rawBorderBoxSize[0]\n : (rawBorderBoxSize as ResizeObserverSize | undefined);\n if (borderBoxSize?.blockSize != null) {\n return Math.round(borderBoxSize.blockSize);\n }\n if (entry?.contentRect?.height != null) {\n return Math.round(entry.contentRect.height);\n }\n return Math.round(element?.offsetHeight || 0);\n}\n\nfunction hasMeaningfulHeightChange(\n previousHeight: number,\n nextHeight: number,\n): boolean {\n return (\n Math.abs(Math.round(nextHeight) - Math.round(previousHeight)) >\n HEIGHT_EPSILON\n );\n}\n\nexport function useElementHeight(\n onHeightChange?: ((height: number) => void) | null,\n elementRef?: RefObject<HTMLElement | null>,\n shouldMeasure?: boolean,\n dependencyKey: unknown = null,\n) {\n const lastHeightRef = useRef<number>(0);\n const rafRef = useRef<number | null>(null);\n const callbackRef = useRef(onHeightChange);\n\n useIsomorphicLayoutEffect(() => {\n callbackRef.current = onHeightChange;\n }, [onHeightChange]);\n\n useIsomorphicLayoutEffect(() => {\n if (rafRef.current !== null) {\n cancelAnimationFrame(rafRef.current);\n rafRef.current = null;\n }\n lastHeightRef.current = -1;\n\n if (!callbackRef.current) return;\n if (!shouldMeasure) {\n if (hasMeaningfulHeightChange(lastHeightRef.current, 0)) {\n lastHeightRef.current = 0;\n callbackRef.current(0);\n }\n return;\n }\n\n const element = elementRef?.current;\n if (!element) return;\n\n function publishHeight(nextHeight: number) {\n if (!hasMeaningfulHeightChange(lastHeightRef.current, nextHeight)) return;\n lastHeightRef.current = nextHeight;\n callbackRef.current?.(nextHeight);\n }\n\n let pendingHeight: number | null = null;\n function flushPendingHeight() {\n rafRef.current = null;\n if (pendingHeight == null) return;\n const heightToPublish = pendingHeight;\n pendingHeight = null;\n publishHeight(heightToPublish);\n }\n\n function scheduleMeasurement(nextHeight: number) {\n pendingHeight = nextHeight;\n if (rafRef.current !== null) return;\n rafRef.current = requestAnimationFrame(flushPendingHeight);\n }\n\n publishHeight(element.offsetHeight || 0);\n\n const observer = new ResizeObserver((entries) => {\n for (const entry of entries) {\n scheduleMeasurement(getObservedHeight(entry, element));\n }\n });\n observer.observe(element);\n\n const handlePageShow = () => scheduleMeasurement(element.offsetHeight || 0);\n const handleVisibilityChange = () => {\n if (document.visibilityState === \"visible\") handlePageShow();\n };\n\n window.addEventListener(\"pageshow\", handlePageShow);\n document.addEventListener(\"visibilitychange\", handleVisibilityChange);\n\n return () => {\n observer.disconnect();\n window.removeEventListener(\"pageshow\", handlePageShow);\n document.removeEventListener(\"visibilitychange\", handleVisibilityChange);\n if (rafRef.current !== null) {\n cancelAnimationFrame(rafRef.current);\n rafRef.current = null;\n }\n };\n }, [dependencyKey, elementRef, shouldMeasure]);\n}\n\nexport function publishDockHeightCssVar(heightPx: number) {\n if (typeof document === \"undefined\") return;\n document.documentElement.style.setProperty(\n \"--dock-h\",\n `${Math.round(heightPx)}px`,\n );\n}\n\nexport function useDockHeightController({\n contentKey = null,\n isHud = false,\n setDockHeight,\n surfacePhase = DOCK_SURFACE_PHASE.IDLE,\n}: UseDockHeightControllerOptions) {\n const [containerHeight, setContainerHeight] = useState<number>(\n isHud ? DOCK_CARD_LAYOUT.hudHeight : DOCK_CARD_LAYOUT.baseHeight,\n );\n\n const heightRef = useRef<{ content: number }>({ content: 0 });\n const rafRef = useRef<number | null>(null);\n const isHudRef = useRef(isHud);\n\n const lastAppliedContainerHeightRef = useRef<number>(\n isHud ? DOCK_CARD_LAYOUT.hudHeight : DOCK_CARD_LAYOUT.baseHeight,\n );\n const lastAppliedSpacerHeightRef = useRef<number>(\n (isHud ? DOCK_CARD_LAYOUT.hudHeight : DOCK_CARD_LAYOUT.baseHeight) +\n DOCK_HEIGHT_BUFFER,\n );\n\n useIsomorphicLayoutEffect(() => {\n isHudRef.current = isHud;\n }, [isHud]);\n\n const applyHeight = useCallback(() => {\n if (rafRef.current !== null) {\n cancelAnimationFrame(rafRef.current);\n rafRef.current = null;\n }\n\n // While a surface opens and closes, the card faces the page with its\n // header and action, so it keeps the page's measured size rather than\n // dropping to the bare header in between.\n const { content } = heightRef.current;\n const height = getContainerHeight({\n cardContentHeight: content,\n isHud: isHudRef.current,\n });\n\n const totalSpacerHeight = height + DOCK_HEIGHT_BUFFER;\n\n if (Math.abs(height - lastAppliedContainerHeightRef.current) > 0.5) {\n lastAppliedContainerHeightRef.current = height;\n setContainerHeight(height);\n }\n if (\n Math.abs(totalSpacerHeight - lastAppliedSpacerHeightRef.current) > 0.5\n ) {\n lastAppliedSpacerHeightRef.current = totalSpacerHeight;\n publishDockHeightCssVar(totalSpacerHeight);\n setDockHeight(totalSpacerHeight);\n }\n }, [setDockHeight]);\n\n const handleContentHeightChange = useCallback(\n (height: number | string) => {\n const numericHeight = Number(height);\n heightRef.current.content = Number.isFinite(numericHeight)\n ? Math.max(0, numericHeight)\n : 0;\n applyHeight();\n },\n [applyHeight],\n );\n\n useEffect(() => {\n return () => {\n if (rafRef.current !== null) cancelAnimationFrame(rafRef.current);\n };\n }, []);\n\n useIsomorphicLayoutEffect(() => applyHeight(), [applyHeight, contentKey]);\n useIsomorphicLayoutEffect(() => applyHeight(), [applyHeight, surfacePhase]);\n useIsomorphicLayoutEffect(() => applyHeight(), [applyHeight, isHud]);\n\n return { containerHeight, handleContentHeightChange };\n}\n\nfunction isSurfaceShapePhase(phase: string | undefined): boolean {\n return (\n phase === DOCK_SURFACE_PHASE.EXPANDING_BODY ||\n phase === DOCK_SURFACE_PHASE.OPEN ||\n phase === DOCK_SURFACE_PHASE.CLOSING_ANTICIPATION\n );\n}\n\nfunction getTargetItemWidth(activeItem: DockItem | null) {\n if (!activeItem?.isSurface || isSurfaceShapePhase(activeItem.surfacePhase)) {\n return activeItem?.width;\n }\n return activeItem.restingWidth;\n}\n\nexport function useDockViewport(activeItem: DockItem | null = null) {\n const targetWidth = getTargetItemWidth(activeItem);\n const [, setViewportRevision] = useState(0);\n const [portalTarget, setPortalTarget] = useState<HTMLElement | null>(null);\n\n const stackWidth = getDockCardWidth({ width: targetWidth });\n\n useIsomorphicLayoutEffect(() => {\n if (typeof document !== \"undefined\") setPortalTarget(document.body);\n }, []);\n\n useEffect(() => {\n if (typeof window === \"undefined\") return undefined;\n let resizeFrameId: number | null = null;\n\n const handleResize = () => {\n if (resizeFrameId !== null) return;\n resizeFrameId = window.requestAnimationFrame(() => {\n resizeFrameId = null;\n setViewportRevision((revision) => revision + 1);\n });\n };\n\n window.addEventListener(\"resize\", handleResize, { passive: true });\n\n return () => {\n window.removeEventListener(\"resize\", handleResize);\n if (resizeFrameId !== null) window.cancelAnimationFrame(resizeFrameId);\n };\n }, []);\n\n return { portalTarget, stackWidth };\n}\n\nexport function getItemMeasurementKey({\n link,\n expanded,\n isHud = false,\n}: {\n link: DockItem;\n expanded: boolean;\n isHud?: boolean;\n isHovered?: boolean;\n isStackHovered?: boolean;\n}): string {\n const state = isHud\n ? \"hud\"\n : link.isLoading\n ? \"loading\"\n : link.isSurface\n ? `surface-${link.surfacePhase ?? \"open\"}`\n : \"standard\";\n return `${link.path || link.name || \"item\"}:${state}:${expanded ? \"expanded\" : \"collapsed\"}`;\n}\n\nexport function getRouteMeasurementKey(\n pathname: string | null,\n key: string,\n): string {\n return `${pathname || \"\"}:${key}`;\n}\n","\"use client\";\n\nimport { use, useCallback, useEffect, useRef, useState } from \"react\";\nimport { globalEvents } from \"@/events\";\nimport { DOCK_EVENTS } from \"../constants\";\nimport { DockContext } from \"../context\";\nimport {\n type DockGuard,\n type GuardCheckResult,\n type UseDockGuardOptions,\n type DockActions,\n type DockGuardRegistry,\n type DockRoutePolicy,\n} from \"../types\";\nimport { report } from \"@/utils\";\n\nexport function createDockGuardRegistry(): DockGuardRegistry {\n const guards = new Map<number, DockGuard>();\n let nextId = 0;\n\n return {\n async check(to, from) {\n for (const [id, guard] of guards) {\n let shouldBlock = false;\n let reason: GuardCheckResult[\"reason\"] = \"blocked\";\n try {\n shouldBlock = Boolean(\n await Promise.resolve(\n typeof guard.when === \"function\"\n ? guard.when(to, from)\n : guard.when,\n ),\n );\n } catch (error) {\n report(\"Dock guard evaluation\", error);\n shouldBlock = true;\n reason = \"error\";\n }\n\n if (shouldBlock) {\n const message =\n guard.message || \"Are you sure you want to leave this page?\";\n try {\n guard.onBlock?.({ to, from, guardId: id, message });\n } catch (error) {\n report(\"Dock guard block handler\", error);\n }\n return { message, blocked: true, guardId: id, reason };\n }\n }\n return { blocked: false };\n },\n clear() {\n guards.clear();\n nextId = 0;\n },\n count: () => guards.size,\n register(guard) {\n const id = ++nextId;\n guards.set(id, guard);\n return () => {\n guards.delete(id);\n };\n },\n };\n}\n\nexport function useDockGuard(options: UseDockGuardOptions = {}) {\n const {\n message = \"You have unsaved changes. Are you sure you want to leave?\",\n when = false,\n onBlock,\n } = options;\n\n const whenRef = useRef(when);\n const [isActive, setIsActive] = useState(Boolean(when));\n const [previousWhen, setPreviousWhen] = useState(() => when);\n if (previousWhen !== when) {\n setPreviousWhen(() => when);\n setIsActive(Boolean(when));\n }\n\n useEffect(() => {\n whenRef.current = when;\n if (!when) globalEvents.emit(DOCK_EVENTS.GUARD, { clear: true });\n }, [when]);\n\n const guards = use(DockContext)?.guards ?? null;\n\n useEffect(() => {\n if (!guards) return;\n const unregister = guards.register({\n when: () =>\n typeof whenRef.current === \"function\"\n ? whenRef.current()\n : Boolean(whenRef.current),\n message,\n onBlock,\n });\n return () => {\n unregister();\n globalEvents.emit(DOCK_EVENTS.GUARD, { clear: true });\n };\n }, [guards, message, onBlock]);\n\n useEffect(() => {\n const handleBeforeUnload = (event: BeforeUnloadEvent) => {\n let isBlocked = true;\n try {\n isBlocked =\n typeof whenRef.current === \"function\"\n ? Boolean(whenRef.current())\n : Boolean(whenRef.current);\n } catch (error) {\n report(\"Dock guard evaluation\", error);\n }\n if (isBlocked) {\n event.preventDefault();\n event.returnValue = message;\n return message;\n }\n };\n window.addEventListener(\"beforeunload\", handleBeforeUnload);\n return () => window.removeEventListener(\"beforeunload\", handleBeforeUnload);\n }, [message]);\n\n const setGuard = useCallback(\n (\n active:\n boolean | ((to?: string, from?: string) => boolean | Promise<boolean>),\n ) => {\n whenRef.current = active;\n setIsActive(Boolean(active));\n if (!active) globalEvents.emit(DOCK_EVENTS.GUARD, { clear: true });\n },\n [],\n );\n\n const clearGuard = useCallback(() => {\n whenRef.current = false;\n setIsActive(false);\n globalEvents.emit(DOCK_EVENTS.GUARD, { clear: true });\n }, []);\n\n return { isActive, clearGuard, setGuard };\n}\n\nexport function openDockGuardConfirmation({\n closeSurface,\n commit,\n from,\n href,\n message,\n routePolicy,\n}: {\n closeSurface: DockActions[\"closeSurface\"];\n commit: (options: {\n from: string;\n href: string;\n routePolicy: DockRoutePolicy;\n source: string;\n }) => unknown;\n from: string;\n href: string;\n message?: string;\n routePolicy: DockRoutePolicy;\n}) {\n globalEvents.emit(DOCK_EVENTS.GUARD, {\n to: href,\n from,\n title: \"Navigation Blocked\",\n message:\n message || \"You have unsaved changes. Are you sure you want to leave?\",\n icon: \"solar:danger-triangle-bold\",\n cancelText: \"Stay\",\n confirmText: \"Leave\",\n onCancel: () => {\n globalEvents.emit(DOCK_EVENTS.GUARD, { clear: true });\n closeSurface({ cancelled: true, reason: \"guard\", success: false });\n },\n onConfirm: () => {\n globalEvents.emit(DOCK_EVENTS.GUARD, { clear: true });\n commit({ from, href, routePolicy, source: \"guard-confirmation\" });\n },\n });\n}\n","\"use client\";\n\nimport { normalizePath } from \"@/utils\";\nimport {\n useCallback,\n useEffect,\n useMemo,\n useRef,\n useState,\n useSyncExternalStore,\n} from \"react\";\nimport { usePathname, useRouter } from \"next/navigation\";\nimport { useRequiredContext, useStore } from \"@/hooks\";\nimport { useModule } from \"@/kernel\";\nimport { shallowEqual } from \"@/utils\";\nimport { globalEvents } from \"@/events\";\nimport { isSafeInternalHref, isSamePath, getDockLocationKey } from \"../paths\";\nimport {\n PrefetchingRouter,\n RoutePrefetchState,\n type DockItem,\n type DockRoutePolicy,\n type DockRoutePolicyOverrides,\n type DockTopology,\n type DockTopologyNode,\n type DockActions,\n type DockRouteSnapshot,\n} from \"../types\";\nimport { DOCK_PREFETCH_INTENT_DELAY_MS, DOCK_EVENTS } from \"../constants\";\nimport {\n DockContext,\n useDockLoadingActions as useLoadingActions,\n useDockActions,\n} from \"../context\";\nimport { blurActiveElement } from \"../dom\";\nimport { openDockGuardConfirmation } from \"./guards\";\nimport { createNavigator } from \"../../navigation/navigator\";\nimport { NAVIGATION_STATUS } from \"../../navigation/constants\";\nimport type {\n NavigationActions,\n NavigationBlock,\n NavigationRouter,\n NavigationState,\n Navigator,\n} from \"../../navigation/types\";\nimport { report } from \"@/utils\";\n\nfunction getRoutePolicyOverrides(\n item: DockItem | null | undefined,\n): DockRoutePolicyOverrides {\n return item?.dockPolicy && typeof item.dockPolicy === \"object\"\n ? item.dockPolicy!\n : {};\n}\n\nfunction resolvePolicyBoolean(value: unknown, fallback: boolean): boolean {\n return typeof value === \"boolean\" ? value : fallback;\n}\n\nexport function resolveDockRoutePolicy({\n href,\n item = null,\n}: { href?: string; item?: DockItem | null } = {}): DockRoutePolicy {\n const overrides = getRoutePolicyOverrides(item);\n const canNavigate = isSafeInternalHref(href);\n const canPrefetch =\n canNavigate &&\n !item?.isLoading &&\n !item?.isOverlay &&\n !item?.isSurface &&\n !item?.prefetchDisabled;\n\n return {\n canNavigate,\n clearTransientState: resolvePolicyBoolean(\n overrides.clearTransientState,\n true,\n ),\n dismissSurfaces: resolvePolicyBoolean(overrides.dismissSurfaces, true),\n prefetch:\n resolvePolicyBoolean(overrides.prefetch, canPrefetch) && canPrefetch,\n };\n}\n\nexport function formatSlugTitle(slug = \"\"): string {\n if (!slug) return \"\";\n return String(slug)\n .split(/[-_]+/)\n .map((word) =>\n word ? word[0].toUpperCase() + word.slice(1).toLowerCase() : \"\",\n )\n .filter(Boolean)\n .join(\" \");\n}\n\nfunction getTopologyNodeId(item: DockItem, index: number): string {\n return item?.id || item?.path || item?.name || `dock-node-${index}`;\n}\n\nfunction flattenDockTopology(\n items: DockItem[] | null | undefined,\n parentId: string | null = null,\n depth = 0,\n nodes: DockTopologyNode[] = [],\n): DockTopologyNode[] {\n if (!Array.isArray(items)) return nodes;\n\n for (let i = 0; i < items.length; i++) {\n const item = items[i];\n if (!item || typeof item !== \"object\") continue;\n\n const id = getTopologyNodeId(item, nodes.length);\n nodes.push({ depth, id, parentId, path: normalizePath(item.path || \"\") });\n\n if (item.children) {\n flattenDockTopology(item.children, id, depth + 1, nodes);\n }\n }\n return nodes;\n}\n\nfunction resolveTopologyActiveNode(\n nodes: DockTopologyNode[],\n pathname: string,\n): DockTopologyNode | null {\n const normalizedPath = normalizePath(pathname || \"\");\n return nodes.find((node) => isSamePath(node.path, normalizedPath)) || null;\n}\n\nfunction resolveTopologyAncestors(\n nodes: DockTopologyNode[],\n activeNode: DockTopologyNode | null,\n): DockTopologyNode[] {\n if (!activeNode) return [];\n const nodesById = new Map(nodes.map((node) => [node.id, node]));\n const ancestors: DockTopologyNode[] = [];\n let currentNode: DockTopologyNode | undefined = activeNode;\n\n while (currentNode?.parentId) {\n currentNode = nodesById.get(currentNode.parentId);\n if (currentNode) ancestors.unshift(currentNode);\n }\n return ancestors;\n}\n\nexport function createDockTopology(\n items: DockItem[] = [],\n { pathname = \"\" }: { pathname?: string } = {},\n): DockTopology {\n const nodes = flattenDockTopology(items);\n const activePath = normalizePath(pathname || \"\");\n const activeNode = resolveTopologyActiveNode(nodes, activePath);\n\n return {\n activeNode,\n activePath,\n ancestors: resolveTopologyAncestors(nodes, activeNode),\n nodes,\n };\n}\n\nexport function useRoutePrefetch(\n router: PrefetchingRouter | null | undefined,\n {\n intentDelayMs = DOCK_PREFETCH_INTENT_DELAY_MS,\n navigator = null,\n }: {\n intentDelayMs?: number;\n /** When set, prefetches go through its shared warm cache instead. */\n navigator?: Pick<NavigationActions, \"prefetch\"> | null;\n } = {},\n) {\n const routeStatesRef = useRef(new Map<string, RoutePrefetchState>());\n\n const cancelRoutePrefetch = useCallback((href: string) => {\n const routeState = routeStatesRef.current.get(href);\n if (routeState?.timeoutId == null) return false;\n clearTimeout(routeState.timeoutId);\n routeStatesRef.current.delete(href);\n return true;\n }, []);\n\n const prefetchRoute = useCallback(\n (href: string, { immediate = false }: { immediate?: boolean } = {}) => {\n if (\n !isSafeInternalHref(href) ||\n (!navigator && typeof router?.prefetch !== \"function\")\n )\n return false;\n\n const routeState = routeStatesRef.current.get(href);\n if (routeState?.isPrefetched || routeState?.timeoutId != null)\n return false;\n\n const startPrefetch = () => {\n const currentState = routeStatesRef.current.get(href);\n if (!currentState) return;\n\n currentState.timeoutId = null;\n if (navigator) {\n routeStatesRef.current.delete(href);\n navigator.prefetch(href);\n return;\n }\n currentState.isPrefetched = true;\n\n try {\n router!.prefetch(href, {\n onInvalidate: () => {\n const invalidatedState = routeStatesRef.current.get(href);\n if (!invalidatedState) return;\n invalidatedState.isPrefetched = false;\n if (invalidatedState.timeoutId == null)\n routeStatesRef.current.delete(href);\n },\n });\n } catch (error) {\n routeStatesRef.current.delete(href);\n report(\"Dock route prefetch\", error, \"warn\");\n }\n };\n\n const delay = immediate ? 0 : Math.max(0, Number(intentDelayMs) || 0);\n const nextState: RoutePrefetchState = {\n isPrefetched: false,\n timeoutId: null,\n };\n\n routeStatesRef.current.set(href, nextState);\n if (delay === 0) startPrefetch();\n else nextState.timeoutId = setTimeout(startPrefetch, delay);\n\n return true;\n },\n [intentDelayMs, navigator, router],\n );\n\n useEffect(() => {\n const routeStates = routeStatesRef.current;\n return () => {\n routeStates.forEach((routeState) => {\n if (routeState.timeoutId != null) clearTimeout(routeState.timeoutId);\n });\n routeStates.clear();\n };\n }, []);\n\n return useMemo(\n () => ({ cancelRoutePrefetch, prefetchRoute }),\n [cancelRoutePrefetch, prefetchRoute],\n );\n}\n\nconst LOCATION_SYNC_EVENT = \"dock:location-sync\";\n\nfunction subscribeToBrowserLocation(onChange: () => void): () => void {\n window.addEventListener(\"hashchange\", onChange);\n window.addEventListener(\"popstate\", onChange);\n window.addEventListener(LOCATION_SYNC_EVENT, onChange);\n return () => {\n window.removeEventListener(\"hashchange\", onChange);\n window.removeEventListener(\"popstate\", onChange);\n window.removeEventListener(LOCATION_SYNC_EVENT, onChange);\n };\n}\n\nexport function useDockLocationKey() {\n const pathname = usePathname();\n\n const getBrowserLocationKey = useCallback(\n () =>\n getDockLocationKey({\n hash: typeof window === \"undefined\" ? \"\" : window.location.hash,\n pathname,\n search: typeof window === \"undefined\" ? \"\" : window.location.search,\n }),\n [pathname],\n );\n\n const getServerLocationKey = useCallback(\n () => getDockLocationKey({ hash: \"\", pathname, search: \"\" }),\n [pathname],\n );\n const locationKey = useSyncExternalStore(\n subscribeToBrowserLocation,\n getBrowserLocationKey,\n getServerLocationKey,\n );\n\n const syncLocationKey = useCallback(() => {\n window.dispatchEvent(new Event(LOCATION_SYNC_EVENT));\n return getBrowserLocationKey();\n }, [getBrowserLocationKey]);\n\n return { locationKey, syncLocationKey };\n}\n\nexport function useDockViewConnection({\n activeItem,\n locationKey,\n navigate,\n pathname,\n}: DockRouteSnapshot & { navigate: DockActions[\"navigate\"] }) {\n const { view } = useRequiredContext(\n DockContext,\n \"useDockViewConnection\",\n \"DockProvider\",\n );\n useEffect(() => {\n view.publishRoute({ activeItem, locationKey, pathname });\n }, [activeItem, locationKey, pathname, view]);\n useEffect(() => {\n view.setNavigator(navigate);\n return () => view.setNavigator(null);\n }, [navigate, view]);\n}\n\nfunction emitDockEvent(eventType: string, data: Record<string, unknown> = {}) {\n return globalEvents.emit(eventType, {\n timestamp: Date.now(),\n type: eventType,\n ...data,\n });\n}\n\nfunction useDockNavigator(router: NavigationRouter): Navigator {\n const shared = useModule(\"navigation\");\n // Without the navigation module the dock runs a navigator of its own: the\n // same machine, bound to its router, without the global listeners.\n const [own] = useState(() =>\n shared ? null : createNavigator({ router }),\n );\n useEffect(() => {\n own?.setRouter(router);\n }, [own, router]);\n useEffect(() => (own ? () => own.dispose() : undefined), [own]);\n return useMemo(\n () => own ?? ({ ...shared!.actions, dispose: () => {}, store: shared!.store }),\n [own, shared],\n );\n}\n\nconst selectTrips = (state: NavigationState) => ({\n active: state.active,\n last: state.last,\n});\n\nexport function useDockNavigation() {\n const pathname = usePathname();\n const { locationKey, syncLocationKey } = useDockLocationKey();\n const router = useRouter();\n\n const {\n clearPreparedRouteReset,\n closeSurface,\n continuity,\n prepareRouteReset,\n } = useDockActions();\n const { stopLoading } = useLoadingActions();\n const { guards } = useRequiredContext(\n DockContext,\n \"useDockNavigation\",\n \"DockProvider\",\n );\n\n const navigator = useDockNavigator(router);\n const { active: activeTransaction, last: lastTransaction } = useStore(\n navigator.store,\n selectTrips,\n shallowEqual,\n );\n\n const previousLocationKeyRef = useRef(locationKey);\n const settledTripRef = useRef(lastTransaction);\n\n useEffect(() => {\n if (settledTripRef.current === lastTransaction) return;\n settledTripRef.current = lastTransaction;\n if (!lastTransaction) return;\n if (lastTransaction.status === NAVIGATION_STATUS.COMPLETED) {\n // A push that kept the pathname moved no pathname; catch up with it.\n syncLocationKey();\n } else if (\n lastTransaction.status === NAVIGATION_STATUS.TIMED_OUT ||\n lastTransaction.status === NAVIGATION_STATUS.FAILED\n ) {\n clearPreparedRouteReset();\n stopLoading();\n }\n }, [clearPreparedRouteReset, lastTransaction, stopLoading, syncLocationKey]);\n\n const cancelDock = useCallback(\n (reason = \"guard\") => {\n navigator.cancel(reason);\n clearPreparedRouteReset();\n closeSurface({ cancelled: true, reason, success: false });\n },\n [clearPreparedRouteReset, closeSurface, navigator],\n );\n\n const commitDock = useCallback(\n async ({\n force = false,\n from,\n href,\n item,\n routePolicy,\n source = \"dock\",\n }: {\n force?: boolean;\n from: string;\n href: string;\n item?: DockItem | null;\n routePolicy: DockRoutePolicy;\n source?: string;\n }) => {\n const result = await navigator.navigate(href, {\n force,\n guard:\n guards.count() > 0\n ? () => guards.check(href, from) as Promise<NavigationBlock>\n : undefined,\n onCommit: () => {\n continuity?.remember?.(from);\n blurActiveElement();\n prepareRouteReset(routePolicy);\n emitDockEvent(DOCK_EVENTS.NAVIGATE_START, { from, to: href });\n },\n source,\n });\n if (result.ok) {\n emitDockEvent(DOCK_EVENTS.NAVIGATE, { from, item, to: href });\n return true;\n }\n if (result.blocked) {\n blurActiveElement();\n openDockGuardConfirmation({\n closeSurface,\n commit: (confirmed) =>\n void commitDock({ ...confirmed, force: true }).catch((error) =>\n report(\"Dock route transition\", error),\n ),\n from,\n href,\n message: result.blocked.message,\n routePolicy,\n });\n }\n return false;\n },\n [\n closeSurface,\n continuity,\n guards,\n navigator,\n prepareRouteReset,\n ],\n );\n\n const navigate = useCallback(\n async (\n href: string,\n {\n force = false,\n item = null,\n source = \"dock\",\n }: { force?: boolean; item?: DockItem | null; source?: string } = {},\n ) => {\n if (!href) return false;\n const from = locationKey;\n const routePolicy = resolveDockRoutePolicy({ href, item });\n\n if (!routePolicy.canNavigate) {\n return false;\n }\n if (isSamePath(href, from)) return false;\n\n try {\n return await commitDock({ force, from, href, routePolicy, source });\n } catch (error) {\n stopLoading();\n report(\"Dock navigation\", error);\n return false;\n }\n },\n [commitDock, locationKey, stopLoading],\n );\n\n useEffect(() => {\n navigator.arrive(locationKey);\n if (previousLocationKeyRef.current === locationKey) return;\n emitDockEvent(DOCK_EVENTS.NAVIGATE_END, {\n duration: undefined,\n from: previousLocationKeyRef.current,\n to: locationKey,\n });\n previousLocationKeyRef.current = locationKey;\n stopLoading();\n }, [locationKey, navigator, stopLoading]);\n\n return {\n activeTransaction,\n cancelDock,\n lastTransaction,\n locationKey,\n navigate,\n pathname,\n };\n}\n","\"use client\";\n\nimport React, {\n useEffect,\n isValidElement,\n useCallback,\n useMemo,\n useState,\n useRef,\n type ReactNode,\n type SyntheticEvent,\n type ComponentType,\n type KeyboardEvent,\n type UIEvent,\n} from \"react\";\nimport { usePathname, useRouter } from \"next/navigation\";\nimport { isObject, toArray, clamp, cn } from \"@/utils\";\nimport { useGlobalEvent } from \"@/hooks\";\nimport { useModule } from \"@/kernel\";\nimport {\n useMotionValue,\n useSpring,\n type TargetAndTransition,\n} from \"motion/react\";\nimport { isInlineActionPathMatch } from \"./paths\";\nimport {\n isValidBannerUrl,\n resolveDockVisualStyle,\n getDockItemCardProps,\n} from \"./styles\";\nimport { useDockTheme } from \"./hooks\";\nimport {\n DockCardBannerProps,\n DockCardItemProps,\n type DockActionDescriptor,\n type DockItem,\n type DockBadgeState,\n type DockCardHeaderProps,\n type DockSlotContent,\n type StandardItemContentProps,\n} from \"./types\";\nimport {\n DOCK_SURFACE_PHASE,\n DOCK_EVENTS,\n MAX_VISIBLE_STACKED_CARDS,\n PLAYBACK_RATES,\n} from \"./constants\";\nimport { type DockCommandEntry } from \"./runtime/commands\";\nimport {\n resolveDockHeaderKey,\n shouldRenderInlineAction,\n} from \"./runtime/pipeline\";\nimport {\n getItemMeasurementKey,\n getRouteMeasurementKey,\n useElementHeight,\n} from \"./layout\";\nimport { useDockHasMedia, useDockMedia, useDockMediaActions } from \"./context\";\nimport { getDockCardDelay, useDockMotion } from \"./motion\";\nimport { resolveDockRoutePolicy, useRoutePrefetch } from \"./routing/navigation\";\n\nconst bannerPreloadCache = new Set<string>();\n\nfunction preloadBannerImage(url: string) {\n if (!isValidBannerUrl(url) || bannerPreloadCache.has(url)) return;\n if (typeof window === \"undefined\") return;\n bannerPreloadCache.add(url);\n const img = new Image();\n img.src = url;\n if (typeof img.decode === \"function\") {\n img.decode().catch(() => {});\n }\n}\n\nexport function useDockCardBannerModel({\n banner,\n bannerUrl,\n bannerPosition,\n bannerSize,\n bannerRepeat,\n bannerOpacity,\n isActive = true,\n isSurfaceActive = false,\n isHudActive = false,\n isStatusActive = false,\n style,\n className,\n}: DockCardBannerProps) {\n const bannerObj =\n typeof banner === \"object\" && banner !== null ? banner : null;\n const rawUrl =\n bannerObj?.url ||\n bannerObj?.bannerUrl ||\n (typeof banner === \"string\" ? banner : bannerUrl);\n const isValid = isValidBannerUrl(rawUrl);\n useEffect(() => {\n if (isValid && rawUrl) {\n preloadBannerImage(rawUrl);\n }\n }, [rawUrl, isValid]);\n\n return { bannerObj, rawUrl, isValid };\n}\n\nfunction normalizeToolbarActions(actions: unknown): DockCommandEntry[] {\n const arrayActions = toArray(actions);\n const normalized: DockCommandEntry[] = [];\n\n for (let i = 0; i < arrayActions.length; i++) {\n const action = arrayActions[i];\n if (isObject(action) && !isValidElement(action)) {\n const descriptor = action as DockActionDescriptor;\n normalized.push({ key: descriptor.key ?? `action-${i}`, ...descriptor });\n }\n }\n return normalized;\n}\n\nfunction getVisibleToolbarActions(\n actions: DockCommandEntry[],\n): DockCommandEntry[] {\n return actions.filter((action) => action.visible !== false);\n}\n\nfunction sortToolbarActionsByOrder(\n actions: DockCommandEntry[],\n): DockCommandEntry[] {\n return [...actions].sort(\n (left, right) => (right.order ?? 0) - (left.order ?? 0),\n );\n}\n\n// A surface's card still shows the page it was opened from while the page's\n// action leaves and again while the page comes back; in between it shows the\n// surface.\nconst PAGE_FACING_SURFACE_PHASES: ReadonlySet<string> = new Set([\n DOCK_SURFACE_PHASE.DISMISSING_ACTION,\n DOCK_SURFACE_PHASE.COLLAPSING_BODY,\n DOCK_SURFACE_PHASE.RESTORING_HEADER,\n]);\n\nexport function isSurfaceLayerShown(\n item: Pick<DockItem, \"isSurface\" | \"surfacePhase\"> | null | undefined,\n): boolean {\n return Boolean(\n item?.isSurface && !PAGE_FACING_SURFACE_PHASES.has(item.surfacePhase ?? \"\"),\n );\n}\n\nfunction isActionlessDockItem(\n activeItem: DockItem | null | undefined,\n): boolean {\n const isSurfaceActive = Boolean(\n activeItem?.isSurface &&\n activeItem?.surfacePhase !== DOCK_SURFACE_PHASE.RESTORING_HEADER,\n );\n return Boolean(\n activeItem?.isNotFound ||\n activeItem?.path === \"not-found\" ||\n activeItem?.isMasked ||\n isSurfaceActive,\n );\n}\n\nfunction isStatusToolbarActionAllowed(\n activeItem: DockItem | null | undefined,\n): boolean {\n return (\n activeItem?.type === \"APP_ERROR\" ||\n activeItem?.type === \"API_ERROR\" ||\n activeItem?.type === \"GUARD\"\n );\n}\n\nfunction useDockCommands({\n activeItem,\n contextCommands = [],\n}: {\n activeItem?: DockItem | null;\n contextCommands?: DockActionDescriptor[];\n} = {}) {\n return useMemo(() => {\n if (isActionlessDockItem(activeItem)) return [];\n\n const extendedCommands = normalizeToolbarActions(activeItem?.actions);\n const dynamicContextCommands = normalizeToolbarActions(contextCommands);\n const mergedCommands = [...extendedCommands, ...dynamicContextCommands];\n\n if (activeItem?.isStatus && !isStatusToolbarActionAllowed(activeItem)) {\n return [];\n }\n\n return sortToolbarActionsByOrder(getVisibleToolbarActions(mergedCommands));\n }, [activeItem, contextCommands]);\n}\n\nexport function useDockCommandBarModel({\n activeItem,\n contextCommands = [],\n hasBanner = false,\n}: {\n activeItem?: DockItem | null;\n contextCommands?: DockActionDescriptor[];\n hasBanner?: boolean;\n}) {\n const actions = useDockCommands({ activeItem, contextCommands });\n const pathname = usePathname();\n const currentPath =\n pathname ||\n activeItem?.path ||\n activeItem?.name ||\n activeItem?.id ||\n \"root\";\n const [isExiting, setIsExiting] = useState(false);\n const [prevActionsCount, setPrevActionsCount] = useState(actions.length);\n if (actions.length !== prevActionsCount) {\n if (actions.length === 0 && prevActionsCount > 0) {\n setIsExiting(true);\n }\n setPrevActionsCount(actions.length);\n }\n const handleExitComplete = useCallback(() => {\n if (actions.length === 0) setIsExiting(false);\n }, [actions.length]);\n\n return { actions, currentPath, isExiting, handleExitComplete };\n}\n\nexport function useDockBadge(\n dockKey?: string | null,\n initialBadge?: ReactNode,\n): DockBadgeState {\n const [badge, setBadge] = useState<DockBadgeState>({\n visible: Boolean(initialBadge),\n value: initialBadge as DockBadgeState[\"value\"],\n });\n\n useGlobalEvent(\n dockKey ? DOCK_EVENTS.UPDATE_BADGE : null,\n (data?: {\n color?: string;\n key?: string;\n value?: string | number | null;\n }) => {\n if (data && data.key === dockKey) {\n setBadge({\n visible: data.value != null && data.value !== \"\",\n color: data.color,\n value: data.value,\n });\n }\n },\n );\n\n return badge;\n}\n\nexport const stopAndPrevent = (event: SyntheticEvent) => {\n event.stopPropagation();\n event.preventDefault();\n};\n\nexport const stopPropagationOnly = (event: SyntheticEvent) => {\n event.stopPropagation();\n};\n\nexport function shouldShowMediaIcon({\n isActive,\n hasMedia,\n isStatus = false,\n}: {\n isActive?: boolean;\n hasMedia?: boolean;\n isStatus?: boolean;\n}): boolean {\n return Boolean(isActive && hasMedia && !isStatus);\n}\n\nexport function useDockCardHeaderModel({\n item: propItem,\n link,\n activeItem = null,\n itemStyle,\n badge,\n showVideoIcon = false,\n isPlaying = false,\n effectiveIconOverlay = null,\n isIconInteractive = false,\n handleIconClick,\n description,\n isTop = false,\n contextCommands = [],\n}: DockCardHeaderProps) {\n const item = (propItem ?? link)!;\n const bannerObject =\n typeof item.banner === \"object\" && item.banner !== null\n ? item.banner\n : null;\n const bannerUrl =\n bannerObject?.url ||\n bannerObject?.bannerUrl ||\n (typeof item.banner === \"string\" ? item.banner : item.bannerUrl);\n const hasBanner = isValidBannerUrl(bannerUrl);\n const headerKey = useMemo(\n () => resolveDockHeaderKey({ link: item, description, showVideoIcon }),\n [description, item, showVideoIcon],\n );\n\n return { item, hasBanner, headerKey };\n}\n\nexport type DockActionSlot =\n { kind: \"media\" } | { kind: \"action\"; action: DockSlotContent } | null;\n\nfunction isRenderableAction(action: DockSlotContent | undefined): boolean {\n return React.isValidElement(action) || typeof action === \"function\";\n}\n\nfunction ownsPathname(path: string | null | undefined, pathname: string) {\n return !path || isInlineActionPathMatch(path, pathname);\n}\n\nexport function useActionSlot(\n item: DockItem,\n pathname: string,\n { isTop = false }: { isTop?: boolean } = {},\n): DockActionSlot {\n const { isLoading, path, isStatus, isSurface, surfacePhase } = item;\n // A surface marks the card an overlay; facing the page, it is the page's,\n // with the page's action.\n const isOverlay = Boolean(item.isOverlay && !isSurface);\n const action = isSurface ? item.restingAction : item.action;\n const showsSurface = isSurfaceLayerShown({ isSurface, surfacePhase });\n const hasMedia = useDockHasMedia();\n\n return useMemo(() => {\n if (isLoading || (isOverlay && !isStatus) || showsSurface) return null;\n if (isStatus) {\n return action && isRenderableAction(action)\n ? { kind: \"action\", action }\n : null;\n }\n if (isTop && hasMedia && ownsPathname(path, pathname)) {\n return { kind: \"media\" };\n }\n\n if (\n !shouldRenderInlineAction(\n { action, isLoading, isOverlay, path },\n pathname,\n )\n ) {\n return null;\n }\n return action && isRenderableAction(action)\n ? { kind: \"action\", action }\n : null;\n }, [\n action,\n isLoading,\n isOverlay,\n isStatus,\n showsSurface,\n isTop,\n hasMedia,\n path,\n pathname,\n ]);\n}\n\nexport function useStandardItemContentModel({\n item: propItem,\n link,\n activeItem = null,\n isTop = false,\n itemStyle,\n badge,\n isActive = false,\n footerNode,\n isHudActive = false,\n hud = null,\n clearHud = null,\n contextCommands = [],\n pathname,\n}: StandardItemContentProps) {\n const item = (propItem ?? link)!;\n const { hasMedia, isPlaying } = useDockMedia();\n const { toggle: toggleMedia } = useDockMediaActions();\n const showVideoIcon = shouldShowMediaIcon({\n isActive,\n hasMedia,\n isStatus: item.isStatus,\n });\n const description = item.description;\n const effectiveIconOverlay = showVideoIcon ? null : item.iconOverlay;\n const isIconInteractive = Boolean(item.onClick || showVideoIcon);\n const handleIconClick = useCallback(\n (event: SyntheticEvent) => {\n if (showVideoIcon) {\n stopAndPrevent(event);\n toggleMedia();\n return;\n }\n if (item.onClick) {\n stopAndPrevent(event);\n item.onClick(event);\n }\n },\n [item, showVideoIcon, toggleMedia],\n );\n\n return {\n item,\n isPlaying,\n showVideoIcon,\n description,\n effectiveIconOverlay,\n isIconInteractive,\n handleIconClick,\n };\n}\n\nexport function useDockCardItemModel({\n ref,\n activeItem = null,\n onContentHeightChange,\n isStackHovered,\n onMouseEnter,\n onMouseLeave,\n expanded,\n hasExtensions = false,\n position,\n onClick,\n isTop = false,\n item: propItem,\n link,\n isActive = false,\n statusStyle = null,\n isStatusActive = false,\n isHudActive = false,\n isSurfaceActive = false,\n hud = null,\n clearHud = null,\n contextCommands = [],\n}: DockCardItemProps) {\n const item = (propItem ?? link)!;\n const [isHovered, setIsHovered] = useState(false);\n const pathname = usePathname();\n const router = useRouter();\n const navigation = useModule(\"navigation\");\n const { cancelRoutePrefetch, prefetchRoute } = useRoutePrefetch(router, {\n navigator: navigation?.actions,\n });\n const hasMedia = useDockHasMedia();\n const isTopHudActive = Boolean(isTop && isHudActive);\n const isCurrentActive = Boolean(\n !item.disabled && !item.isInactive && (expanded || isTop || isActive),\n );\n const isCurrentHud = Boolean(\n isHudActive || isTopHudActive || Boolean(hud) || Boolean(item.isHud),\n );\n const isCurrentStatus = Boolean(\n isStatusActive ||\n Boolean(item.isStatus) ||\n Boolean(statusStyle) ||\n Boolean(item.isNotFound),\n );\n const isCurrentSurface = Boolean(\n isSurfaceActive ||\n Boolean(item.isSurface) ||\n Boolean(\n activeItem?.isSurface &&\n activeItem?.surfacePhase !== DOCK_SURFACE_PHASE.RESTORING_HEADER,\n ),\n );\n const isHeaderRestoring =\n item.surfacePhase === DOCK_SURFACE_PHASE.RESTORING_HEADER;\n const showVideoScrubber = Boolean(\n isTop &&\n hasMedia &&\n ownsPathname(item.path, pathname) &&\n (!item.isSurface || isHeaderRestoring) &&\n !item.isStatus,\n );\n const badge = useDockBadge(item.name?.toLowerCase(), item.badge);\n const actionSlot = useActionSlot(item, pathname, { isTop });\n const cardContentRef = useRef<HTMLDivElement>(null);\n const showBorder = expanded ? isHovered : isHovered || isStackHovered;\n const effectiveStyle = useMemo(() => {\n if (!statusStyle) return item.style;\n if (!item.style) return statusStyle;\n return {\n ...statusStyle,\n ...item.style,\n card: { ...statusStyle.card, ...item.style.card },\n icon: { ...statusStyle.icon, ...item.style.icon },\n title: { ...statusStyle.title, ...item.style.title },\n description: { ...statusStyle.description, ...item.style.description },\n };\n }, [item.style, statusStyle]);\n const theme = useDockTheme();\n const isStatusCard = Boolean(item.isStatus || item.isNotFound || statusStyle);\n const itemStyle = useMemo(() => {\n const resolved = resolveDockVisualStyle(effectiveStyle, {\n isActive,\n isHovered: showBorder,\n });\n if (!isStatusCard) return resolved;\n const { slots } = theme;\n return {\n ...resolved,\n card: {\n ...resolved.card,\n className: cn(slots.statusCard, resolved.card.className),\n },\n icon: {\n ...resolved.icon,\n className: cn(slots.statusIcon, resolved.icon.className),\n },\n title: {\n ...resolved.title,\n className: cn(slots.statusTitle, resolved.title.className),\n },\n description: {\n ...resolved.description,\n className: cn(slots.statusDescription, resolved.description.className),\n },\n };\n }, [effectiveStyle, isActive, isStatusCard, showBorder, theme]);\n const showsSurfaceLayer = isSurfaceLayerShown(item);\n // The action stays on the card while a surface opens from it, leaving in\n // place, and is back on it while the surface closes, so the card resizes\n // once, straight between its two sizes.\n const renderedActionSlot =\n showsSurfaceLayer || isTopHudActive ? null : actionSlot;\n const isActionDismissed = Boolean(\n item.isSurface &&\n item.surfacePhase === DOCK_SURFACE_PHASE.DISMISSING_ACTION,\n );\n const hasNestedInteractiveContent = Boolean(\n renderedActionSlot || showsSurfaceLayer,\n );\n const dockMotion = useDockMotion();\n const headerRestoreVariants = useMemo(() => {\n const { headerRestore } = dockMotion.variants;\n const visible = headerRestore.visible as TargetAndTransition;\n return {\n hidden: headerRestore.hidden,\n visible: {\n ...visible,\n transition:\n item.surfacePhase === DOCK_SURFACE_PHASE.COLLAPSING_BODY\n ? dockMotion.transitions.surfaceEnter\n : visible.transition,\n },\n exit: headerRestore.exit,\n };\n }, [dockMotion, item.surfacePhase]);\n useElementHeight(\n onContentHeightChange,\n cardContentRef,\n isTop,\n getRouteMeasurementKey(\n pathname,\n getItemMeasurementKey({\n link: item,\n expanded: Boolean(expanded),\n isHovered,\n isStackHovered: Boolean(isStackHovered),\n isHud: isTopHudActive,\n }),\n ),\n );\n const handleMouseEnter = useCallback(() => {\n if (item.isOverlay) return;\n setIsHovered(true);\n if (\n resolveDockRoutePolicy({ href: item.path ?? \"\", item }).prefetch &&\n item.path\n )\n prefetchRoute(item.path);\n if (!expanded) onMouseEnter?.();\n }, [expanded, item, onMouseEnter, prefetchRoute]);\n const handleMouseLeave = useCallback(() => {\n if (item.isOverlay) return;\n if (item.path) cancelRoutePrefetch(item.path);\n setIsHovered(false);\n if (!expanded) onMouseLeave?.();\n }, [cancelRoutePrefetch, expanded, item, onMouseLeave]);\n const handleFocus = useCallback(() => {\n if (item.isOverlay) return;\n setIsHovered(true);\n const targetHref = item.targetPath || item.path;\n if (\n resolveDockRoutePolicy({ href: targetHref ?? \"\", item }).prefetch &&\n targetHref\n ) {\n prefetchRoute(targetHref, { immediate: true });\n }\n onMouseEnter?.();\n }, [item, onMouseEnter, prefetchRoute]);\n const handleBlur = useCallback(() => {\n if (item.isOverlay) return;\n setIsHovered(false);\n onMouseLeave?.();\n }, [item, onMouseLeave]);\n const handleKeyDown = useCallback(\n (event: KeyboardEvent<HTMLDivElement>) => {\n if (event.target !== event.currentTarget) return;\n if (event.key !== \"Enter\" && event.key !== \" \") return;\n event.preventDefault();\n onClick?.(event);\n },\n [onClick],\n );\n const handleScroll = useCallback((event: UIEvent<HTMLDivElement>) => {\n if (event.currentTarget.scrollTop !== 0) event.currentTarget.scrollTop = 0;\n }, []);\n const isExtensionShelf = Boolean(\n !expanded && position === 1 && hasExtensions,\n );\n const isCollapsedBackgroundCard = Boolean(\n !expanded && position > 0 && !isExtensionShelf,\n );\n const isCollapsedGhostCard = Boolean(\n !expanded && position >= MAX_VISIBLE_STACKED_CARDS && !isExtensionShelf,\n );\n const {\n className: cardClassName,\n data: cardData,\n style: cardStyle,\n motionValues,\n } = getDockItemCardProps({\n expanded,\n position,\n cardStyle: itemStyle.card,\n cardScale: itemStyle.scale,\n theme,\n isAnchoredToBottom: item.isSurface,\n visibleCount:\n item.isStatus && !isStackHovered ? 1 : hasExtensions && !expanded ? 2 : 3,\n hasExtensions,\n });\n const cardDelay = useMemo(\n () => getDockCardDelay(dockMotion, { expanded, isStackHovered, position }),\n [dockMotion, expanded, isStackHovered, position],\n );\n\n return {\n item,\n pathname,\n isTopHudActive,\n isCurrentActive,\n isCurrentHud,\n isCurrentStatus,\n isCurrentSurface,\n showVideoScrubber,\n badge,\n cardContentRef,\n itemStyle,\n renderedActionSlot,\n isActionDismissed,\n showsSurfaceLayer,\n hasNestedInteractiveContent,\n headerRestoreVariants,\n handleMouseEnter,\n handleMouseLeave,\n handleFocus,\n handleBlur,\n handleKeyDown,\n handleScroll,\n isExtensionShelf,\n isCollapsedBackgroundCard,\n isCollapsedGhostCard,\n cardClassName,\n cardData,\n cardStyle,\n motionValues,\n cardDelay,\n };\n}\n\nfunction resolveActionNode(\n action: DockSlotContent | undefined,\n mediaAction: ComponentType | null,\n showMediaAction: boolean,\n stackClass: string,\n) {\n const MediaAction = mediaAction as ComponentType;\n\n if (React.isValidElement(action)) {\n return (\n <div className={stackClass}>\n {action}\n {showMediaAction && <MediaAction />}\n </div>\n );\n }\n if (typeof action === \"function\") {\n const ActionComponent = action as ComponentType;\n return (\n <div className={stackClass}>\n <ActionComponent />\n {showMediaAction && <MediaAction />}\n </div>\n );\n }\n return showMediaAction ? <MediaAction /> : null;\n}\n\nexport function applyMediaAction(\n item: DockItem | null | undefined,\n hasMedia: boolean,\n toggleMedia: () => void,\n mediaAction: ComponentType | null,\n actionStackClass: string,\n): DockItem | null {\n if (!item) return null;\n if (!hasMedia) return item;\n\n const showMediaAction = Boolean(mediaAction) && item.mediaAction !== false;\n return {\n ...item,\n action: resolveActionNode(\n item.action,\n mediaAction,\n showMediaAction,\n actionStackClass,\n ),\n onClick: (event?: SyntheticEvent) => {\n event?.preventDefault?.();\n event?.stopPropagation?.();\n toggleMedia();\n },\n };\n}\n\nexport function useDockMediaControlsModel({\n className = \"\",\n}: {\n className?: string;\n}) {\n const {\n audibleElement,\n element: videoElement,\n kind,\n loop: isLoop,\n } = useDockMedia();\n const { toggleLoop, setMuted: setVideoMuted } = useDockMediaActions();\n const [playbackRate, setPlaybackRate] = useState<number>(\n videoElement?.playbackRate || 1,\n );\n const [volume, setVolume] = useState<number>(() =>\n Number(audibleElement?.volume ?? 1),\n );\n const [isMuted, setIsMuted] = useState<boolean>(() =>\n Boolean(audibleElement?.muted),\n );\n const [isDraggingVolume, setIsDraggingVolume] = useState(false);\n const [isPipActive, setIsPipActive] = useState(false);\n const [isPipSupported, setIsPipSupported] = useState(false);\n const isDraggingRef = useRef(false);\n const volumeTrackRef = useRef<HTMLDivElement | null>(null);\n const volumeFillRef = useRef<HTMLDivElement | null>(null);\n const volumeThumbRef = useRef<HTMLDivElement | null>(null);\n const volumeDragCleanupRef = useRef<(() => void) | null>(null);\n useEffect(() => {\n return () => {\n volumeDragCleanupRef.current?.();\n volumeDragCleanupRef.current = null;\n isDraggingRef.current = false;\n };\n }, []);\n useEffect(() => {\n if (\n typeof document !== \"undefined\" &&\n \"pictureInPictureEnabled\" in document\n ) {\n setIsPipSupported(Boolean(document.pictureInPictureEnabled));\n }\n }, []);\n useEffect(() => {\n if (!videoElement) {\n setPlaybackRate(1);\n setIsPipActive(false);\n return undefined;\n }\n\n const syncPlaybackRate = () => {\n const nextRate = Number(videoElement.playbackRate);\n setPlaybackRate(Number.isFinite(nextRate) && nextRate > 0 ? nextRate : 1);\n };\n const handleEnterPip = () => setIsPipActive(true);\n const handleLeavePip = () => setIsPipActive(false);\n\n syncPlaybackRate();\n\n videoElement.addEventListener(\"ratechange\", syncPlaybackRate);\n videoElement.addEventListener(\"enterpictureinpicture\", handleEnterPip);\n videoElement.addEventListener(\"leavepictureinpicture\", handleLeavePip);\n\n return () => {\n videoElement.removeEventListener(\"ratechange\", syncPlaybackRate);\n videoElement.removeEventListener(\"enterpictureinpicture\", handleEnterPip);\n videoElement.removeEventListener(\"leavepictureinpicture\", handleLeavePip);\n };\n }, [videoElement]);\n useEffect(() => {\n if (!audibleElement) {\n setVolume(1);\n setIsMuted(false);\n return undefined;\n }\n\n const syncVolumeState = () => {\n if (isDraggingRef.current) return;\n\n const currentVol = Number(audibleElement.volume) || 0;\n const currentMute = Boolean(audibleElement.muted);\n\n setVolume(currentVol);\n setIsMuted(currentMute);\n\n const effective = currentMute ? 0 : currentVol;\n const effectivePercent = `${effective * 100}%`;\n\n if (volumeFillRef.current)\n volumeFillRef.current.style.width = effectivePercent;\n if (volumeThumbRef.current)\n volumeThumbRef.current.style.left = effectivePercent;\n };\n\n syncVolumeState();\n\n audibleElement.addEventListener(\"volumechange\", syncVolumeState);\n\n return () => {\n audibleElement.removeEventListener(\"volumechange\", syncVolumeState);\n };\n }, [audibleElement]);\n const handleCycleSpeed = useCallback(() => {\n if (!videoElement) return;\n const currentIndex = (PLAYBACK_RATES as readonly number[]).indexOf(\n playbackRate,\n );\n const nextRate = PLAYBACK_RATES[(currentIndex + 1) % PLAYBACK_RATES.length];\n videoElement.playbackRate = nextRate;\n setPlaybackRate(nextRate);\n }, [playbackRate, videoElement]);\n const updateVolumeFromPosition = useCallback(\n (clientX: number) => {\n if (!audibleElement || !volumeTrackRef.current) return;\n\n const rect = volumeTrackRef.current.getBoundingClientRect();\n if (rect.width <= 0) return;\n\n const offsetX = clamp(clientX - rect.left, 0, rect.width);\n const fraction = offsetX / rect.width;\n const nextVolume = Math.round(fraction * 100) / 100;\n const fractionPercent = `${fraction * 100}%`;\n\n if (volumeFillRef.current)\n volumeFillRef.current.style.width = fractionPercent;\n if (volumeThumbRef.current)\n volumeThumbRef.current.style.left = fractionPercent;\n\n audibleElement.volume = nextVolume;\n const nextMuted = nextVolume === 0;\n audibleElement.muted = nextMuted;\n\n setVideoMuted?.(nextMuted);\n setVolume(nextVolume);\n setIsMuted(nextMuted);\n },\n [setVideoMuted, audibleElement],\n );\n const handleVolumePointerDown = useCallback(\n (event: React.PointerEvent<HTMLDivElement>) => {\n event.preventDefault();\n event.stopPropagation();\n\n volumeDragCleanupRef.current?.();\n isDraggingRef.current = true;\n setIsDraggingVolume(true);\n\n try {\n event.currentTarget.setPointerCapture?.(event.pointerId);\n } catch {}\n\n updateVolumeFromPosition(event.clientX);\n\n const handlePointerMove = (moveEvent: PointerEvent) => {\n if (!isDraggingRef.current) return;\n updateVolumeFromPosition(moveEvent.clientX);\n };\n\n const handlePointerUp = () => {\n isDraggingRef.current = false;\n setIsDraggingVolume(false);\n\n if (audibleElement) {\n setVolume(Number(audibleElement.volume) || 0);\n setIsMuted(Boolean(audibleElement.muted));\n }\n removePointerListeners();\n };\n\n const removePointerListeners = () => {\n window.removeEventListener(\"pointermove\", handlePointerMove);\n window.removeEventListener(\"pointerup\", handlePointerUp);\n window.removeEventListener(\"pointercancel\", handlePointerUp);\n if (volumeDragCleanupRef.current === removePointerListeners) {\n volumeDragCleanupRef.current = null;\n }\n };\n\n window.addEventListener(\"pointermove\", handlePointerMove, {\n passive: true,\n });\n window.addEventListener(\"pointerup\", handlePointerUp);\n window.addEventListener(\"pointercancel\", handlePointerUp);\n\n volumeDragCleanupRef.current = removePointerListeners;\n },\n [updateVolumeFromPosition, audibleElement],\n );\n const handleToggleMute = useCallback(\n (event: React.MouseEvent) => {\n event.stopPropagation();\n if (!audibleElement) return;\n\n if (isMuted || volume === 0) {\n const restoredVolume = volume === 0 ? 0.7 : volume;\n audibleElement.volume = restoredVolume;\n audibleElement.muted = false;\n\n setVideoMuted?.(false);\n setVolume(restoredVolume);\n setIsMuted(false);\n\n const restoredPercent = `${restoredVolume * 100}%`;\n if (volumeFillRef.current)\n volumeFillRef.current.style.width = restoredPercent;\n if (volumeThumbRef.current)\n volumeThumbRef.current.style.left = restoredPercent;\n } else {\n audibleElement.muted = true;\n setVideoMuted?.(true);\n setIsMuted(true);\n\n if (volumeFillRef.current) volumeFillRef.current.style.width = \"0%\";\n if (volumeThumbRef.current) volumeThumbRef.current.style.left = \"0%\";\n }\n },\n [isMuted, setVideoMuted, audibleElement, volume],\n );\n const handleTogglePip = useCallback(async () => {\n if (!videoElement) return;\n try {\n if (document.pictureInPictureElement) {\n await document.exitPictureInPicture();\n } else if (document.pictureInPictureEnabled) {\n await (videoElement as HTMLVideoElement).requestPictureInPicture();\n }\n } catch {}\n }, [videoElement]);\n const handleSkipBackward = useCallback(() => {\n if (!videoElement) return;\n const current = Number(videoElement.currentTime) || 0;\n videoElement.currentTime = Math.max(0, current - 10);\n }, [videoElement]);\n const handleSkipForward = useCallback(() => {\n if (!videoElement) return;\n const current = Number(videoElement.currentTime) || 0;\n const duration = Number(videoElement.duration) || 0;\n videoElement.currentTime =\n duration > 0 ? Math.min(duration, current + 10) : current + 10;\n }, [videoElement]);\n\n const handleVolumeKeyDown = (event: React.KeyboardEvent) => {\n if (!audibleElement) return;\n if (event.key === \"ArrowLeft\" || event.key === \"ArrowDown\") {\n event.preventDefault();\n const next = Math.max(0, volume - 0.05);\n audibleElement.volume = next;\n const nextMuted = next === 0;\n audibleElement.muted = nextMuted;\n setVideoMuted?.(nextMuted);\n } else if (event.key === \"ArrowRight\" || event.key === \"ArrowUp\") {\n event.preventDefault();\n const next = Math.min(1, volume + 0.05);\n audibleElement.volume = next;\n audibleElement.muted = false;\n setVideoMuted?.(false);\n }\n };\n\n return {\n handleVolumeKeyDown,\n audibleElement,\n videoElement,\n toggleLoop,\n setVideoMuted,\n playbackRate,\n volume,\n isMuted,\n isDraggingVolume,\n isPipActive,\n isPipSupported: isPipSupported && kind === \"video\",\n volumeTrackRef,\n volumeFillRef,\n volumeThumbRef,\n isLoop,\n handleCycleSpeed,\n handleVolumePointerDown,\n handleToggleMute,\n handleTogglePip,\n handleSkipBackward,\n handleSkipForward,\n };\n}\n\ninterface SeekEvent {\n clientX?: number;\n touches?: ArrayLike<{ clientX: number }>;\n}\n\nexport function useDockMediaScrubberModel({\n className = \"\",\n showTimeOnHover = true,\n}: {\n className?: string;\n showTimeOnHover?: boolean;\n}) {\n const { hasMedia, isPlaying, element: videoElement } = useDockMedia();\n const [currentTime, setCurrentTime] = useState(0);\n const [duration, setDuration] = useState(0);\n const [isHovered, setIsHovered] = useState(false);\n const [hoverTime, setHoverTime] = useState(0);\n const hoverX = useMotionValue(0);\n const { scrubberFollow } = useDockMotion().transitions;\n const smoothHoverX = useSpring(hoverX, scrubberFollow);\n const scrubberRef = useRef<HTMLDivElement | null>(null);\n const progressBarRef = useRef<HTMLDivElement | null>(null);\n const rAFRef = useRef<number | null>(null);\n useEffect(() => {\n if (!videoElement) {\n if (progressBarRef.current)\n progressBarRef.current.style.transform = \"scaleX(0)\";\n setCurrentTime(0);\n setDuration(0);\n return;\n }\n\n const publishProgress = () => {\n const current = Math.max(0, Number(videoElement.currentTime) || 0);\n const total = Math.max(0, Number(videoElement.duration) || 0);\n const ratio = total > 0 ? clamp(current / total, 0, 1) : 0;\n\n if (progressBarRef.current) {\n progressBarRef.current.style.transform = `scaleX(${ratio})`;\n }\n\n setCurrentTime((prev) =>\n Math.abs(prev - current) >= 1 ? Math.floor(current) : prev,\n );\n setDuration((prev) => (prev === total ? prev : total));\n };\n\n const runProgressLoop = () => {\n publishProgress();\n rAFRef.current = requestAnimationFrame(runProgressLoop);\n };\n\n publishProgress();\n\n if (isPlaying) {\n rAFRef.current = requestAnimationFrame(runProgressLoop);\n } else if (rAFRef.current) {\n cancelAnimationFrame(rAFRef.current);\n }\n\n videoElement.addEventListener(\"timeupdate\", publishProgress);\n videoElement.addEventListener(\"durationchange\", publishProgress);\n videoElement.addEventListener(\"loadedmetadata\", publishProgress);\n\n return () => {\n if (rAFRef.current !== null) cancelAnimationFrame(rAFRef.current);\n videoElement.removeEventListener(\"timeupdate\", publishProgress);\n videoElement.removeEventListener(\"durationchange\", publishProgress);\n videoElement.removeEventListener(\"loadedmetadata\", publishProgress);\n };\n }, [isPlaying, videoElement]);\n const seekToTime = useCallback(\n (targetTime: number) => {\n if (!videoElement || duration <= 0) return;\n const nextTime = clamp(targetTime, 0, duration);\n videoElement.currentTime = nextTime;\n setCurrentTime(Math.floor(nextTime));\n\n if (progressBarRef.current) {\n progressBarRef.current.style.transform = `scaleX(${nextTime / duration})`;\n }\n },\n [duration, videoElement],\n );\n const handleSeek = useCallback(\n (event: SeekEvent) => {\n if (!videoElement || !scrubberRef.current || !duration) return;\n const rect = scrubberRef.current.getBoundingClientRect();\n const clientX = event.clientX ?? event.touches?.[0]?.clientX ?? 0;\n const offsetX = clamp(clientX - rect.left, 0, rect.width);\n const percentage = rect.width > 0 ? offsetX / rect.width : 0;\n\n seekToTime(percentage * duration);\n },\n [duration, seekToTime, videoElement],\n );\n const handleKeyDown = useCallback(\n (event: React.KeyboardEvent) => {\n const keyTargets: Record<string, number> = {\n ArrowLeft: currentTime - 5,\n ArrowRight: currentTime + 5,\n Home: 0,\n End: duration,\n };\n if (!(event.key in keyTargets)) return;\n\n event.preventDefault();\n event.stopPropagation();\n seekToTime(keyTargets[event.key]);\n },\n [currentTime, duration, seekToTime],\n );\n const handleMouseMove = useCallback(\n (event: React.MouseEvent) => {\n if (!scrubberRef.current || !duration) return;\n const rect = scrubberRef.current.getBoundingClientRect();\n const clientX = event.clientX ?? 0;\n const offsetX = clamp(clientX - rect.left, 0, rect.width);\n const percentage = rect.width > 0 ? offsetX / rect.width : 0;\n\n hoverX.set(offsetX);\n setHoverTime(percentage * duration);\n },\n [duration, hoverX],\n );\n\n return {\n hasMedia,\n videoElement,\n currentTime,\n duration,\n isHovered,\n setIsHovered,\n hoverTime,\n smoothHoverX,\n scrubberRef,\n progressBarRef,\n handleSeek,\n handleKeyDown,\n handleMouseMove,\n };\n}\n","\"use client\";\n\nimport {\n useEffect,\n useRef,\n isValidElement,\n useCallback,\n useMemo,\n useState,\n type ReactNode,\n} from \"react\";\nimport {\n shallowEqual as areShallowCollectionsEqual,\n isObject,\n toArray,\n} from \"@/utils\";\nimport {\n type DockOperation,\n type DockHudDescriptor,\n type DefineHudOptions,\n type DockComponentProps,\n type DockHudDefinition,\n type DockHudOverrides,\n type DockHudTrigger,\n type UseHudReturn,\n} from \"./types\";\nimport {\n DOCK_HUD_PRIORITY,\n DOCK_HUD_RENDER_MODE,\n DOCK_OPERATION_STATUS,\n} from \"./constants\";\nimport {\n isHudDescriptor,\n resolveComponentType,\n resolveRenderableContent,\n} from \"./helpers\";\nimport { useDockActions } from \"./context\";\n\nexport type DockHudEntries = Record<string, DockHudDescriptor>;\n\nfunction normalizePriority(value: unknown): number {\n const priority = Number(value);\n return Number.isFinite(priority) ? priority : DOCK_HUD_PRIORITY.DEFAULT;\n}\n\nfunction normalizeAutoDismiss(value: unknown): number | null {\n const ms = Number(value);\n return Number.isFinite(ms) && ms > 0 ? ms : null;\n}\n\nexport function createHudDefinition(\n input: unknown,\n config: Partial<DockHudDescriptor> = {},\n): DockHudDescriptor | null {\n if (input == null || input === false) return null;\n const descriptor = isHudDescriptor(input) ? input : null;\n const component = resolveComponentType(descriptor?.component, input);\n const content = resolveRenderableContent(\n descriptor?.content,\n descriptor?.node,\n descriptor?.element,\n );\n const directContent =\n content ??\n (isValidElement(input) ||\n typeof input === \"string\" ||\n typeof input === \"number\"\n ? (input as ReactNode)\n : null);\n if (!component && directContent == null) return null;\n const id =\n descriptor?.id ??\n config?.id ??\n (component\n ? component.displayName || component.name || \"component-hud\"\n : \"hud\");\n return {\n autoDismissMs: normalizeAutoDismiss(\n descriptor?.autoDismissMs ?? config?.autoDismissMs,\n ),\n component,\n content: component ? null : directContent,\n dismissOnEscape:\n descriptor?.dismissOnEscape ?? config?.dismissOnEscape ?? true,\n dismissOnNavigate:\n descriptor?.dismissOnNavigate ?? config?.dismissOnNavigate ?? true,\n id: String(id),\n isActive: Boolean(descriptor?.isActive ?? config?.isActive ?? true),\n onDismiss:\n typeof descriptor?.onDismiss === \"function\"\n ? descriptor.onDismiss\n : typeof descriptor?.onCancel === \"function\"\n ? descriptor.onCancel\n : typeof config?.onDismiss === \"function\"\n ? config.onDismiss\n : typeof config?.onCancel === \"function\"\n ? config.onCancel\n : null,\n priority: normalizePriority(descriptor?.priority ?? config?.priority),\n props: component && isObject(descriptor?.props) ? descriptor.props : {},\n renderMode: component\n ? DOCK_HUD_RENDER_MODE.COMPONENT\n : DOCK_HUD_RENDER_MODE.NODE,\n };\n}\n\nfunction arePropsEqual(left: unknown, right: unknown): boolean {\n if (Object.is(left, right)) return true;\n if (!isObject(left) || !isObject(right)) return false;\n const keys = Object.keys(left);\n if (keys.length !== Object.keys(right).length) return false;\n return keys.every((key) => {\n if (!Object.hasOwn(right, key)) return false;\n if (Object.is(left[key], right[key])) return true;\n if (typeof left[key] === \"function\" && typeof right[key] === \"function\") {\n return true;\n }\n return (\n isObject(left[key]) &&\n isObject(right[key]) &&\n areShallowCollectionsEqual(left[key], right[key])\n );\n });\n}\n\nexport function areHudDefinitionsEqual(\n current: DockHudDescriptor | null | undefined,\n next: DockHudDescriptor | null | undefined,\n): boolean {\n if (Object.is(current, next)) return true;\n if (\n !current ||\n !next ||\n Object.keys(current).length !== Object.keys(next).length\n ) {\n return false;\n }\n const currentFields = current as unknown as Record<string, unknown>;\n const nextFields = next as unknown as Record<string, unknown>;\n return Object.keys(nextFields).every((key) => {\n if (Object.is(currentFields[key], nextFields[key])) return true;\n if (key === \"props\") {\n return arePropsEqual(currentFields[key], nextFields[key]);\n }\n return (\n typeof currentFields[key] === \"function\" &&\n typeof nextFields[key] === \"function\"\n );\n });\n}\n\nexport function upsertHudEntry(\n entries: DockHudEntries,\n definition: DockHudDescriptor | null,\n): DockHudEntries {\n if (\n !definition ||\n areHudDefinitionsEqual(entries[definition?.id], definition)\n ) {\n return entries;\n }\n return {\n ...entries,\n [definition.id]: definition,\n };\n}\n\nexport function removeHudEntries(\n entries: DockHudEntries,\n id: string | null = null,\n): DockHudEntries {\n if (!id) return Object.keys(entries).length === 0 ? entries : {};\n if (!entries[id]) return entries;\n const next = {\n ...entries,\n };\n delete next[id];\n return next;\n}\n\nfunction resolveActiveHud(\n entries: (DockHudDescriptor | null)[],\n): DockHudDescriptor | null {\n return toArray(entries).reduce<DockHudDescriptor | null>((active, hud) => {\n if (!hud?.isActive) return active;\n return !active ||\n normalizePriority(hud.priority) > normalizePriority(active.priority)\n ? hud\n : active;\n }, null);\n}\n\nexport function createSelectionModeState(\n config: (Partial<DockHudDescriptor> & { id?: string }) | null | undefined,\n): DockHudDescriptor | null {\n return config\n ? createHudDefinition(config, {\n id: config.id || \"selection-mode\",\n priority: DOCK_HUD_PRIORITY.SELECTION,\n })\n : null;\n}\n\nexport function areSelectionModeStatesEqual(\n current: DockHudDescriptor | null,\n next: DockHudDescriptor | null,\n): boolean {\n return areHudDefinitionsEqual(current, next);\n}\n\nexport function getActiveDockHud(\n entries: DockHudEntries,\n selectionMode: DockHudDescriptor | null,\n): DockHudDescriptor | null {\n return resolveActiveHud([...Object.values(entries), selectionMode]);\n}\n\nexport function createDockOperationHud(\n operation: DockOperation | null | undefined,\n {\n onCancel = null,\n pendingCount = 1,\n }: { onCancel?: ((id: string) => void) | null; pendingCount?: number } = {},\n) {\n if (\n !operation?.id ||\n operation.status !== DOCK_OPERATION_STATUS.PENDING ||\n operation.hud == null\n ) {\n return null;\n }\n const hudInput = isHudDescriptor(operation.hud)\n ? {\n ...operation.hud,\n props: {\n ...(isObject(operation.hud.props) ? operation.hud.props : {}),\n operation,\n pendingCount,\n },\n }\n : typeof operation.hud === \"function\"\n ? {\n component: operation.hud,\n props: {\n operation,\n pendingCount,\n },\n }\n : {\n content: operation.hud,\n };\n return createHudDefinition({\n ...hudInput,\n dismissOnEscape: false,\n dismissOnNavigate: false,\n id: \"dock-operation:\" + operation.id,\n isActive: true,\n onDismiss:\n operation.cancellable !== false && typeof onCancel === \"function\"\n ? () => onCancel(operation.id)\n : null,\n priority: DOCK_HUD_PRIORITY.TASK_PROGRESS + Number(operation.priority || 0),\n });\n}\n\nexport function useDockHudRegistry() {\n const [selectionModeState, setSelectionModeState] =\n useState<DockHudDescriptor | null>(null);\n const [hudEntries, setHudEntries] = useState<DockHudEntries>({});\n\n const setHud = useCallback((descriptor: DockHudDescriptor) => {\n const definition = createHudDefinition(descriptor);\n if (!definition) return;\n setHudEntries((prev) => upsertHudEntry(prev, definition));\n }, []);\n\n const clearHud = useCallback((targetId?: string) => {\n setHudEntries((prev) => removeHudEntries(prev, targetId));\n }, []);\n\n const setSelectionMode = useCallback(\n (config: Parameters<typeof createSelectionModeState>[0]) => {\n setSelectionModeState((curr) => {\n const nextSelection = createSelectionModeState(config);\n return areSelectionModeStatesEqual(curr, nextSelection)\n ? curr\n : nextSelection;\n });\n },\n [],\n );\n\n const clearSelectionMode = useCallback(() => setSelectionModeState(null), []);\n\n const clearTransientHud = useCallback(() => {\n setSelectionModeState(null);\n setHudEntries({});\n }, []);\n\n const registeredHud = useMemo(\n () => getActiveDockHud(hudEntries, selectionModeState),\n [hudEntries, selectionModeState],\n );\n\n const actions = useMemo(\n () => ({ clearHud, clearSelectionMode, setHud, setSelectionMode }),\n [clearHud, clearSelectionMode, setHud, setSelectionMode],\n );\n\n return {\n actions,\n clearTransientHud,\n hudEntries,\n registeredHud,\n selectionModeState,\n };\n}\n\nexport function useDockHud(descriptor: DockHudDescriptor) {\n const { setHud, clearHud } = useDockActions();\n return useDockHudLifecycle({ clearHud, descriptor, setHud });\n}\n\nexport function defineHud(\n definition: DefineHudOptions = {},\n): DockHudDefinition {\n const {\n autoDismissMs = null,\n component = null,\n defaultProps = {},\n dismissOnEscape = true,\n dismissOnNavigate = true,\n id = \"hud\",\n priority = DOCK_HUD_PRIORITY.DEFAULT,\n ...extraConfig\n } = definition;\n\n const createDescriptor = (\n props: DockComponentProps = {},\n overrides: DockHudOverrides = {},\n ): DockHudDescriptor => {\n const mergedProps = { ...defaultProps, ...props };\n return {\n id: overrides.id ?? id,\n component,\n props: mergedProps,\n priority: overrides.priority ?? priority,\n autoDismissMs: overrides.autoDismissMs ?? autoDismissMs,\n dismissOnEscape: overrides.dismissOnEscape ?? dismissOnEscape,\n dismissOnNavigate: overrides.dismissOnNavigate ?? dismissOnNavigate,\n ...extraConfig,\n ...overrides,\n };\n };\n\n return Object.freeze({\n config: {\n autoDismissMs,\n component,\n defaultProps,\n dismissOnEscape,\n dismissOnNavigate,\n id,\n priority,\n ...extraConfig,\n },\n create: createDescriptor,\n hide: (clearHudFn: (id?: string) => void, targetId?: string) => {\n if (typeof clearHudFn === \"function\") {\n clearHudFn(targetId || id);\n }\n },\n id,\n show: (\n setHudFn: (descriptor: DockHudDescriptor) => void,\n props: DockComponentProps = {},\n overrides: DockHudOverrides = {},\n ) => {\n const descriptor = createDescriptor(props, overrides);\n if (typeof setHudFn === \"function\") {\n setHudFn(descriptor);\n }\n return {\n dismiss: (clearHudFn: (id?: string) => void) => {\n if (typeof clearHudFn === \"function\") {\n clearHudFn(descriptor.id);\n }\n },\n id: descriptor.id,\n update: (nextProps: DockComponentProps = {}) => {\n if (typeof setHudFn === \"function\") {\n setHudFn(createDescriptor({ ...props, ...nextProps }, overrides));\n }\n },\n };\n },\n use: function useDefinedHud(\n props: DockComponentProps = {},\n overrides: DockHudOverrides = {},\n ) {\n const descriptor = createDescriptor(props, overrides);\n useDockHud(descriptor);\n },\n useTrigger: function useTriggerHud(this: DockHudDefinition) {\n return useHud(this) as DockHudTrigger;\n },\n });\n}\n\nexport function useHud(hudDefinition: DockHudDefinition | null = null) {\n const { clearHud, setHud } = useDockActions();\n\n return useMemo((): UseHudReturn => {\n if (!hudDefinition) {\n return { clearHud, setHud };\n }\n\n const show = (\n props: DockComponentProps = {},\n overrides: DockHudOverrides = {},\n ) => {\n if (typeof hudDefinition.show === \"function\") {\n return hudDefinition.show(setHud, props, overrides);\n }\n return null;\n };\n\n const hide = (targetId?: string) => {\n if (typeof hudDefinition.hide === \"function\") {\n hudDefinition.hide(clearHud, targetId);\n } else {\n clearHud(targetId || hudDefinition.id);\n }\n };\n\n return {\n clear: clearHud,\n hide,\n show,\n };\n }, [clearHud, hudDefinition, setHud]);\n}\n\nexport function useDockHudLifecycle({\n clearHud,\n descriptor,\n setHud,\n}: {\n clearHud: (id?: string) => void;\n descriptor: unknown;\n setHud: (descriptor: DockHudDescriptor) => void;\n}) {\n const activeRef = useRef<string | null>(null);\n const previousRef = useRef<DockHudDescriptor | null>(null);\n\n useEffect(() => {\n const definition = createHudDefinition(descriptor);\n if (!definition?.isActive) {\n if (activeRef.current) clearHud(activeRef.current);\n activeRef.current = null;\n previousRef.current = null;\n return;\n }\n if (areHudDefinitionsEqual(previousRef.current, definition)) return;\n activeRef.current = definition.id;\n previousRef.current = definition;\n setHud(definition);\n }, [clearHud, descriptor, setHud]);\n\n useEffect(\n () => () => {\n if (activeRef.current) clearHud(activeRef.current);\n },\n [clearHud],\n );\n}\n\nexport function useDockHudViewModel({\n clearHud,\n hud,\n pathname,\n}: {\n clearHud?: ((id?: string) => void) | null;\n hud: DockHudDescriptor | null;\n pathname?: string | null;\n}) {\n const previousPathRef = useRef(pathname);\n const dismiss = useCallback(() => {\n hud?.onDismiss?.();\n if (hud?.id) clearHud?.(hud.id);\n }, [clearHud, hud]);\n useEffect(() => {\n if (previousPathRef.current === pathname) return;\n previousPathRef.current = pathname;\n if (hud?.isActive && hud.dismissOnNavigate && hud.id) clearHud?.(hud.id);\n }, [clearHud, hud?.dismissOnNavigate, hud?.id, hud?.isActive, pathname]);\n useEffect(() => {\n if (!hud?.isActive || !hud?.dismissOnEscape) return;\n const onKeyDown = (event: KeyboardEvent) => {\n if (event.key !== \"Escape\") return;\n event.stopPropagation();\n dismiss();\n };\n window.addEventListener(\"keydown\", onKeyDown, {\n capture: true,\n });\n return () =>\n window.removeEventListener(\"keydown\", onKeyDown, {\n capture: true,\n });\n }, [dismiss, hud?.dismissOnEscape, hud?.isActive]);\n useEffect(() => {\n if (!hud?.isActive || !hud?.autoDismissMs) return;\n const timer = setTimeout(dismiss, hud.autoDismissMs);\n return () => clearTimeout(timer);\n }, [dismiss, hud?.autoDismissMs, hud?.isActive]);\n\n return { dismiss };\n}\n","\"use client\";\n\nimport {\n createContext,\n useCallback,\n useEffect,\n useMemo,\n useState,\n type ReactNode,\n} from \"react\";\nimport { usePathname, useRouter } from \"next/navigation\";\nimport { normalizePath } from \"@/utils\";\nimport { useRequiredContext } from \"@/hooks\";\nimport { formatSlugTitle } from \"./navigation\";\nimport {\n type BreadcrumbConfig,\n type BreadcrumbContextValue,\n type BreadcrumbItem,\n type BreadcrumbOverride,\n type DockIconSource,\n type DefineBreadcrumbOptions,\n type DockComponentProps,\n} from \"../types\";\n\nfunction formatPath(path: string | null): string {\n return normalizePath(path) || \"/\";\n}\n\nfunction createRootBreadcrumb(\n root: Partial<BreadcrumbItem> | null | undefined,\n isCurrent: boolean,\n): BreadcrumbItem {\n return {\n id: root?.id || \"home\",\n title: root?.title || \"Home\",\n path: root?.path || \"/\",\n icon: root?.icon || null,\n isCurrent,\n level: 0,\n };\n}\n\nfunction createGenericBreadcrumbs(\n segments: string[],\n overrides: Record<string, BreadcrumbOverride>,\n resolveSegment?: BreadcrumbConfig[\"resolveSegment\"],\n): BreadcrumbItem[] {\n let currentPath = \"\";\n const results: BreadcrumbItem[] = [];\n const len = segments.length;\n\n for (let index = 0; index < len; index++) {\n const segment = segments[index];\n currentPath += `/${segment}`;\n\n const fallback: BreadcrumbItem = {\n id: `segment-${segment}-${index}`,\n title: formatSlugTitle(segment),\n path: currentPath,\n icon: null,\n isCurrent: index === len - 1,\n level: index + 1,\n };\n\n const resolvedSegment = resolveSegment\n ? resolveSegment({ ...fallback, index, segment, segments })\n : null;\n const override = overrides[currentPath];\n\n results.push(\n Object.assign(\n fallback,\n resolvedSegment && typeof resolvedSegment === \"object\"\n ? resolvedSegment\n : null,\n override || null,\n ),\n );\n }\n return results;\n}\n\nfunction resolveRouteBreadcrumbs(\n pathname = \"\",\n overrides: Record<string, BreadcrumbOverride> = {},\n config: BreadcrumbConfig = {},\n): BreadcrumbItem[] {\n const normalizedPath = normalizePath(pathname) || \"/\";\n const rootBreadcrumb = createRootBreadcrumb(\n config.root,\n normalizedPath === \"/\",\n );\n\n if (normalizedPath === \"/\") return [rootBreadcrumb];\n\n const segments = normalizedPath.split(\"/\").filter(Boolean);\n if (segments.length === 0) return [rootBreadcrumb];\n\n if (typeof config.resolvePath === \"function\") {\n const resolvedPath = config.resolvePath({\n overrides,\n pathname: normalizedPath,\n root: rootBreadcrumb,\n segments,\n });\n if (Array.isArray(resolvedPath)) {\n return [rootBreadcrumb, ...resolvedPath];\n }\n }\n\n const generated = createGenericBreadcrumbs(\n segments,\n overrides,\n config.resolveSegment,\n );\n\n generated.unshift(rootBreadcrumb);\n return generated;\n}\n\nconst EMPTY_BREADCRUMB_CONFIG: BreadcrumbConfig = {};\n\nconst BreadcrumbContext = createContext<BreadcrumbContextValue | null>(null);\n\nexport function BreadcrumbProvider({\n children,\n config = null,\n}: {\n children?: ReactNode;\n config?: BreadcrumbConfig | null;\n}) {\n const [overrides, setOverrides] = useState<\n Record<string, BreadcrumbOverride>\n >({});\n\n const registerOverride = useCallback(\n (path: string, overrideConfig: BreadcrumbOverride) => {\n if (!path || !overrideConfig) return;\n const normalizedPath = formatPath(path);\n\n setOverrides((currentOverrides) => {\n const existing = currentOverrides[normalizedPath];\n if (\n existing?.title === overrideConfig.title &&\n existing?.icon === overrideConfig.icon\n ) {\n return currentOverrides;\n }\n return {\n ...currentOverrides,\n [normalizedPath]: {\n title: overrideConfig.title || null,\n icon: overrideConfig.icon || null,\n },\n };\n });\n },\n [],\n );\n\n const unregisterOverride = useCallback((path: string) => {\n if (!path) return;\n const normalizedPath = formatPath(path);\n\n setOverrides((currentOverrides) => {\n if (!currentOverrides[normalizedPath]) return currentOverrides;\n const { [normalizedPath]: _, ...nextOverrides } = currentOverrides;\n return nextOverrides;\n });\n }, []);\n\n const value = useMemo<BreadcrumbContextValue>(\n () => ({\n actions: { registerOverride, unregisterOverride },\n config: config || EMPTY_BREADCRUMB_CONFIG,\n overrides,\n }),\n [config, overrides, registerOverride, unregisterOverride],\n );\n\n return <BreadcrumbContext value={value}>{children}</BreadcrumbContext>;\n}\n\nfunction useBreadcrumbActions() {\n return useRequiredContext(\n BreadcrumbContext,\n \"useBreadcrumbActions\",\n \"BreadcrumbProvider\",\n ).actions;\n}\n\nexport function useDockBreadcrumbs() {\n const pathname = usePathname();\n const router = useRouter();\n const { config, overrides } = useRequiredContext(\n BreadcrumbContext,\n \"useDockBreadcrumbs\",\n \"BreadcrumbProvider\",\n );\n\n const breadcrumbs = useMemo(\n () => resolveRouteBreadcrumbs(pathname || \"\", overrides, config || {}),\n [config, pathname, overrides],\n );\n\n const len = breadcrumbs.length;\n const current = len > 0 ? breadcrumbs[len - 1] : null;\n const parent = len > 1 ? breadcrumbs[len - 2] : null;\n const canGoBack = len > 1;\n\n const goBack = useCallback(() => {\n if (parent?.path) router.push(parent.path);\n else router.back();\n }, [parent, router]);\n\n return { breadcrumbs, canGoBack, current, goBack, parent };\n}\n\nexport function useRegisterBreadcrumbOverride({\n icon = null,\n path,\n title = null,\n}: {\n icon?: DockIconSource;\n path?: string;\n title?: string | null;\n} = {}) {\n const { registerOverride, unregisterOverride } = useBreadcrumbActions();\n\n useEffect(() => {\n if (!path || (!title && !icon)) return;\n\n registerOverride(path, { title, icon });\n return () => unregisterOverride(path);\n }, [icon, path, registerOverride, title, unregisterOverride]);\n}\n\nexport function defineBreadcrumb(definition: DefineBreadcrumbOptions = {}) {\n const { icon = null, path = null, title = null, ...extraConfig } = definition;\n\n const createOverride = (\n props: DockComponentProps = {},\n overrides: Partial<BreadcrumbOverride> & { path?: string | null } = {},\n ): BreadcrumbOverride & { path?: string | null; [key: string]: unknown } => {\n const resolvedTitle = typeof title === \"function\" ? title(props) : title;\n const resolvedIcon = typeof icon === \"function\" ? icon(props) : icon;\n return {\n icon: overrides.icon ?? resolvedIcon,\n path: overrides.path ?? path,\n title: overrides.title ?? resolvedTitle,\n ...extraConfig,\n ...overrides,\n };\n };\n\n const useDefinedBreadcrumb = (\n props: DockComponentProps = {},\n overrides: Partial<BreadcrumbOverride> & { path?: string | null } = {},\n ) => {\n const pathname = usePathname();\n const activePath = overrides.path || path || pathname;\n const override = createOverride(props, { ...overrides, path: activePath });\n useRegisterBreadcrumbOverride({\n ...override,\n path: override.path ?? undefined,\n });\n };\n\n return Object.freeze({\n config: { icon, path, title, ...extraConfig },\n create: createOverride,\n id: path || \"breadcrumb\",\n use: useDefinedBreadcrumb,\n });\n}\n\nexport function useDockBreadcrumbsCardModel({\n className = \"\",\n maxItems = 4,\n onNavigate,\n}: {\n className?: string;\n maxItems?: number;\n onNavigate?: (href: string) => unknown;\n}) {\n const { breadcrumbs } = useDockBreadcrumbs();\n\n return { breadcrumbs };\n}\n","import { isPlainObject } from \"@/utils\";\nimport { DOCK_SURFACE_PHASE } from \"../constants\";\nimport {\n resolveComponentType,\n resolveRenderableContent,\n} from \"../helpers\";\nimport { normalizeExtensions } from \"./definition\";\nimport {\n type ActiveSurfaceStep,\n type DockItem,\n type RenderableSurfaceEntry,\n type SurfaceDescriptor,\n type SurfaceResult,\n type SurfaceStep,\n type SurfaceViewModelOptions,\n} from \"../types\";\n\nfunction resolveSurfaceAction(\n item: Pick<DockItem, \"action\"> | null,\n surfaceEntry: Pick<SurfaceDescriptor, \"action\" | \"showAction\"> | null,\n) {\n if (surfaceEntry?.action != null) return surfaceEntry.action;\n if (surfaceEntry?.showAction === true) return item?.action ?? null;\n if (surfaceEntry?.showAction === false) return null;\n return item?.action ?? null;\n}\n\nfunction resolveActiveStepDefinition(\n surfaceEntry: RenderableSurfaceEntry | null | undefined,\n): ActiveSurfaceStep | null {\n if (!surfaceEntry) return null;\n const steps = surfaceEntry.steps;\n if (!Array.isArray(steps) || steps.length === 0) return surfaceEntry;\n\n const requestedIndex = Number(surfaceEntry.currentStepIndex);\n const currentIndex = Math.max(\n 0,\n Math.min(\n Number.isInteger(requestedIndex) ? requestedIndex : 0,\n steps.length - 1,\n ),\n );\n const step = steps[currentIndex];\n if (!step) return surfaceEntry;\n\n const stepComponent = resolveComponentType(\n step?.component,\n step,\n surfaceEntry.component,\n );\n const stepContent = resolveRenderableContent(\n step?.content,\n step?.node,\n step?.element,\n surfaceEntry.content,\n );\n\n const extensions = step.extensions\n ? normalizeExtensions(step.extensions)\n : surfaceEntry.extensions || [];\n\n return {\n ...surfaceEntry,\n component: stepComponent,\n content: stepContent,\n props: {\n ...(surfaceEntry.props || {}),\n ...(isPlainObject(step.props) ? step.props : {}),\n },\n icon: step.icon ?? step.header?.icon ?? surfaceEntry.icon,\n title: step.title ?? step.header?.title ?? surfaceEntry.title,\n description:\n step.description ?? step.header?.description ?? surfaceEntry.description,\n descriptionMaxLines:\n step.descriptionMaxLines ?? surfaceEntry.descriptionMaxLines ?? 2,\n trailing: step.trailing ?? surfaceEntry.trailing,\n headerAction: step.headerAction ?? surfaceEntry.headerAction,\n action: step.action ?? surfaceEntry.action,\n showAction: step.showAction ?? surfaceEntry.showAction,\n closeLabel: step.closeLabel ?? surfaceEntry.closeLabel,\n stepIndex: currentIndex,\n totalSteps: steps.length,\n canGoBack: currentIndex > 0,\n isFirstStep: currentIndex === 0,\n isLastStep: currentIndex === steps.length - 1,\n extensions,\n };\n}\n\nfunction resolveSurfaceViewModel(\n rawSurfaceEntry: RenderableSurfaceEntry | null,\n {\n closeSurface,\n closeAllSurfaces,\n goBackSurface,\n pushStep,\n popStep,\n goToStep,\n getSurfaceFlow,\n surfaceStack = [],\n surfacePhase = DOCK_SURFACE_PHASE.OPEN,\n }: SurfaceViewModelOptions = {},\n) {\n const createSurfacePresentation = (\n entry: RenderableSurfaceEntry | null,\n stack: (RenderableSurfaceEntry | null)[],\n ) => {\n const surfaceEntry = resolveActiveStepDefinition(entry);\n const surfaceComponent = surfaceEntry?.component ?? null;\n const surfaceContent = surfaceEntry?.content ?? null;\n if (!surfaceEntry || (!surfaceComponent && !surfaceContent)) return null;\n\n const surfaceId = surfaceEntry.id ?? null;\n const canGoBack = Boolean(surfaceEntry.canGoBack) || stack.length > 1;\n const surfaceFlow =\n typeof getSurfaceFlow === \"function\" && surfaceEntry.flow?.flowId\n ? getSurfaceFlow(surfaceEntry.flow.flowId)\n : null;\n\n return {\n allowSwipeDismiss: surfaceEntry.allowSwipeDismiss !== false,\n badge: surfaceEntry.badge ?? null,\n canGoBack,\n closeAllSurfaces:\n typeof closeAllSurfaces === \"function\" ? closeAllSurfaces : null,\n closeSurface:\n typeof closeSurface === \"function\"\n ? (res: SurfaceResult = null) => closeSurface(res, surfaceId)\n : (res: SurfaceResult = null) => surfaceEntry?.onClose?.(res),\n dismissible: surfaceEntry.dismissible !== false,\n goToStep:\n typeof goToStep === \"function\"\n ? (index: number) => goToStep(index, surfaceId)\n : null,\n isFirstStep: surfaceEntry.isFirstStep ?? true,\n isLastStep: surfaceEntry.isLastStep ?? true,\n onBack: canGoBack\n ? () => {\n if (typeof goBackSurface === \"function\") goBackSurface();\n else if (typeof popStep === \"function\") popStep(surfaceId);\n else if (typeof closeSurface === \"function\")\n closeSurface(null, surfaceId);\n }\n : null,\n popStep: typeof popStep === \"function\" ? () => popStep(surfaceId) : null,\n pushStep:\n typeof pushStep === \"function\"\n ? (step: SurfaceStep) => pushStep(step, surfaceId)\n : null,\n stepIndex: surfaceEntry.stepIndex ?? 0,\n surfaceCloseLabel: surfaceEntry.closeLabel ?? null,\n surfaceComponent,\n surfaceContent,\n surfaceDescription: surfaceEntry.description ?? null,\n surfaceDescriptionMaxLines: surfaceEntry.descriptionMaxLines ?? 2,\n surfaceHeaderAction: surfaceEntry.headerAction ?? null,\n surfaceIcon: surfaceEntry.icon ?? null,\n surfaceId,\n surfaceProps: surfaceFlow\n ? { ...(surfaceEntry.props || {}), surfaceFlow }\n : surfaceEntry.props || {},\n surfacePhase,\n surfaceTitle: surfaceEntry.title ?? null,\n surfaceTrailing: surfaceEntry.trailing ?? null,\n surfaceExtensions: surfaceEntry.extensions || [],\n extensions: surfaceEntry.extensions || [],\n totalSteps: surfaceEntry.totalSteps ?? 1,\n width: surfaceEntry.width ?? null,\n };\n };\n\n const stackEntries = surfaceStack.length ? surfaceStack : [rawSurfaceEntry];\n const surfaceStackEntries = stackEntries\n .map((entry, idx) =>\n createSurfacePresentation(entry, stackEntries.slice(0, idx + 1)),\n )\n .filter((entry) => entry !== null);\n const activeSurface =\n surfaceStackEntries[surfaceStackEntries.length - 1] || null;\n\n if (!activeSurface) return null;\n\n return Object.freeze({\n activeSurface,\n rawStepDefinition: resolveActiveStepDefinition(rawSurfaceEntry),\n surfacePhase,\n surfaceStackEntries,\n });\n}\n\nexport function applySurfaceToDockItem(\n item: DockItem | null,\n rawSurfaceEntry: RenderableSurfaceEntry | null,\n options: SurfaceViewModelOptions = {},\n): DockItem | null {\n if (!item) return item;\n const viewModel = resolveSurfaceViewModel(rawSurfaceEntry, options);\n if (!viewModel) return item;\n\n const {\n activeSurface,\n rawStepDefinition,\n surfacePhase,\n surfaceStackEntries,\n } = viewModel;\n\n return Object.freeze({\n ...item,\n isSurface: true,\n isOverlay: true,\n ...activeSurface,\n restingAction: item.action ?? null,\n restingWidth: item.width ?? null,\n surfacePhase,\n actions: null,\n action: resolveSurfaceAction(item, rawStepDefinition),\n surfaceStackEntries,\n surfaceExtensions:\n activeSurface.surfaceExtensions || activeSurface.extensions || [],\n extensions: activeSurface.extensions || [],\n });\n}\n","\"use client\";\n\nimport { type ComponentType } from \"react\";\nimport { Icon } from \"@/atoms\";\nimport {\n type StatusState,\n type DockIconSource,\n type DockSlotContent,\n type DockStatusDescriptor,\n type DockStatusTheme,\n type ErrorActionsProps,\n type GuardActionsProps,\n type PersistedOverlayStatus,\n type DockItem,\n} from \"../types\";\nimport {\n ERROR_STATUS_TYPES,\n STATUS_PRIORITY,\n OVERLAY_STATUS_STORAGE_KEY,\n} from \"../constants\";\nimport { statusActionDefaults } from \"../context\";\nimport { normalizeUpper } from \"../helpers\";\n\nexport type StatusSetter = React.Dispatch<React.SetStateAction<StatusState>>;\n\nexport type StatusUpdate =\n StatusState | ((current: StatusState) => StatusState);\n\nexport type TimerRef = React.MutableRefObject<ReturnType<\n typeof setTimeout\n> | null>;\n\nexport function isErrorStatus(type: string): boolean {\n return ERROR_STATUS_TYPES.has(type);\n}\n\nfunction getStatusPriority(type: string): number {\n return STATUS_PRIORITY[type] ?? 0;\n}\n\nexport function resolveStatusPriority(status: StatusState): number {\n if (!status) return 0;\n const { priority } = status;\n if (priority !== null && priority !== undefined) {\n const explicitPriority = Number(priority);\n if (Number.isFinite(explicitPriority)) return explicitPriority;\n }\n return getStatusPriority(status.type);\n}\n\nexport function getStatusTheme(_type?: string) {\n return {\n description: { opacity: 1 },\n };\n}\n\nexport function isEquivalentOverlayStatus(\n currentStatus: StatusState,\n nextStatus: StatusState,\n): boolean {\n if (!currentStatus || !nextStatus?.type) return false;\n return (\n currentStatus.type === nextStatus.type &&\n currentStatus.flow === nextStatus.flow &&\n currentStatus.title === nextStatus.title &&\n currentStatus.description === nextStatus.description &&\n currentStatus.icon === nextStatus.icon &&\n currentStatus.isOverlay === nextStatus.isOverlay\n );\n}\n\nexport function createOverlayStatus({\n type,\n title,\n description,\n icon,\n style,\n isOverlay = true,\n action = null,\n actions = null,\n flow = null,\n priority = null,\n}: {\n type: string;\n title: string;\n description: string;\n icon?: DockIconSource;\n style?: DockStatusTheme;\n isOverlay?: boolean;\n action?: DockSlotContent;\n actions?: DockSlotContent;\n flow?: string | null;\n priority?: number | null;\n}): DockStatusDescriptor {\n return {\n type,\n flow,\n isOverlay,\n priority,\n title,\n description,\n icon,\n style,\n action,\n actions,\n hideScroll: true,\n };\n}\n\nexport function createErrorStatus({\n type,\n title,\n description,\n icon,\n style,\n onRetry,\n clearStatus,\n action,\n errorAction,\n retryLabel,\n refreshLabel,\n retryText,\n refreshText,\n}: {\n type: string;\n title: string;\n description: string;\n icon?: DockIconSource;\n style?: DockStatusTheme;\n onRetry?: () => void;\n clearStatus?: () => void;\n action?: ComponentType<ErrorActionsProps> | null;\n errorAction?: ComponentType<ErrorActionsProps> | null;\n retryLabel?: string;\n refreshLabel?: string;\n retryText?: string;\n refreshText?: string;\n}) {\n const retryHandler =\n typeof onRetry === \"function\"\n ? () => {\n clearStatus?.();\n onRetry();\n }\n : () => {\n window.location.reload();\n };\n return createOverlayStatus({\n type,\n title,\n description,\n icon,\n style,\n isOverlay: true,\n action: () => {\n const ActionComponent =\n action || errorAction || statusActionDefaults.error;\n return ActionComponent ? (\n <ActionComponent\n onRetry={retryHandler}\n onRefresh={() => window.location.reload()}\n retryLabel={retryLabel}\n refreshLabel={refreshLabel}\n retryText={retryText}\n refreshText={refreshText}\n />\n ) : null;\n },\n });\n}\n\nexport function createGuardStatus({\n action,\n guardAction,\n title = \"Navigation Blocked\",\n description = \"You have unsaved changes. Are you sure you want to leave?\",\n icon = \"solar:danger-triangle-bold\",\n style,\n onConfirm,\n onCancel,\n cancelLabel,\n confirmLabel,\n cancelText = \"Stay\",\n confirmText = \"Leave\",\n clearStatus,\n}: {\n action?: ComponentType<GuardActionsProps> | null;\n guardAction?: ComponentType<GuardActionsProps> | null;\n title?: string;\n description?: string;\n icon?: DockIconSource;\n style?: DockStatusTheme;\n onConfirm?: () => void;\n onCancel?: () => void;\n cancelLabel?: string;\n confirmLabel?: string;\n cancelText?: string;\n confirmText?: string;\n clearStatus?: () => void;\n}) {\n const cancelHandler = () => {\n clearStatus?.();\n onCancel?.();\n };\n const confirmHandler = () => {\n clearStatus?.();\n onConfirm?.();\n };\n const effectiveCancel = cancelLabel || cancelText;\n const effectiveConfirm = confirmLabel || confirmText;\n return createOverlayStatus({\n type: \"GUARD\",\n priority: STATUS_PRIORITY.GUARD,\n title,\n description,\n icon,\n style: style || getStatusTheme(\"GUARD\"),\n isOverlay: true,\n action: () => {\n const GuardActionComponent =\n action || guardAction || statusActionDefaults.guard;\n return GuardActionComponent ? (\n <GuardActionComponent\n onCancel={cancelHandler}\n onConfirm={confirmHandler}\n cancelLabel={effectiveCancel}\n confirmLabel={effectiveConfirm}\n cancelText={effectiveCancel}\n confirmText={effectiveConfirm}\n />\n ) : null;\n },\n });\n}\n\nexport function createConnectionStatus(type: string) {\n if (type === \"OFFLINE\") {\n return createOverlayStatus({\n type,\n title: \"Connection Lost\",\n description: \"You are currently offline\",\n icon: <Icon icon=\"lucide:wifi-off\" size={24} />,\n style: getStatusTheme(type),\n });\n }\n return createOverlayStatus({\n type: \"ONLINE\",\n title: \"Connection Restored\",\n description: \"You are back online\",\n icon: <Icon icon=\"lucide:wifi\" size={24} />,\n style: getStatusTheme(\"ONLINE\"),\n isOverlay: false,\n });\n}\n\nlet cachedSessionStorage: Storage | null | undefined;\n\nfunction readSessionStorage(): Storage | null {\n if (typeof window === \"undefined\") return null;\n if (cachedSessionStorage !== undefined) return cachedSessionStorage;\n\n try {\n const storage = window.sessionStorage;\n if (!storage) {\n cachedSessionStorage = null;\n return null;\n }\n\n const probeKey = \"__bf_storage_probe__\";\n storage.setItem(probeKey, \"1\");\n storage.removeItem(probeKey);\n cachedSessionStorage = storage;\n return storage;\n } catch {\n cachedSessionStorage = null;\n return null;\n }\n}\n\nexport function clearPersistedOverlayStatus(): void {\n try {\n readSessionStorage()?.removeItem(OVERLAY_STATUS_STORAGE_KEY);\n } catch {}\n}\n\nexport function persistOverlayStatus(\n status: StatusState,\n duration: number,\n): void {\n const storage = readSessionStorage();\n if (!status || !isPersistableOverlayStatus(status) || !storage) return;\n try {\n storage.setItem(\n OVERLAY_STATUS_STORAGE_KEY,\n JSON.stringify({\n description: status.description || \"\",\n expiresAt: Date.now() + Math.max(0, Number(duration) || 0),\n flow: status.flow || null,\n icon: typeof status.icon === \"string\" ? status.icon : null,\n priority: resolveStatusPriority(status),\n title: status.title || \"\",\n type: status.type,\n }),\n );\n } catch {}\n}\n\nexport function restorePersistedOverlayStatus(): {\n remainingMs: number;\n status: DockStatusDescriptor;\n} | null {\n const storage = readSessionStorage();\n if (!storage) return null;\n try {\n const rawValue = storage.getItem(OVERLAY_STATUS_STORAGE_KEY);\n if (!rawValue) return null;\n\n const payload: PersistedOverlayStatus | null = JSON.parse(rawValue);\n const type = normalizeUpper(payload?.type);\n const expiresAt = Number(payload?.expiresAt || 0);\n\n if (!type || !Number.isFinite(expiresAt) || expiresAt <= Date.now()) {\n clearPersistedOverlayStatus();\n return null;\n }\n\n return {\n remainingMs: expiresAt - Date.now(),\n status: createOverlayStatus({\n type,\n flow: payload?.flow || null,\n priority: Number.isFinite(Number(payload?.priority))\n ? Number(payload?.priority)\n : null,\n title: payload?.title || \"Status\",\n description: payload?.description || \"\",\n icon: payload?.icon || null,\n style: getStatusTheme(type),\n }),\n };\n } catch {\n clearPersistedOverlayStatus();\n return null;\n }\n}\n\nexport function isPersistableOverlayStatus(status: StatusState): boolean {\n return (\n Boolean(status?.type) &&\n !isErrorStatus(status!.type) &&\n (typeof status!.icon === \"string\" || status!.icon == null)\n );\n}\n\nexport function applyStatusOverlay(\n item: DockItem | null,\n statusState: StatusState,\n): DockItem | null {\n if (!item || !statusState) return item;\n const showStatusActions =\n statusState.type === \"APP_ERROR\" ||\n statusState.type === \"API_ERROR\" ||\n statusState.type === \"GUARD\" ||\n Boolean(statusState.action);\n return {\n ...item,\n ...statusState,\n activeChild: null,\n children: null,\n hasActiveChild: false,\n isExpanded: false,\n isParent: false,\n isStatus: true,\n badge: null,\n iconOverlay: null,\n action: showStatusActions ? statusState.action : null,\n actions: showStatusActions ? statusState.actions : null,\n };\n}\n","import {\n DOCK_ATTENTION_KIND,\n DOCK_ATTENTION_PRIORITY,\n DOCK_ATTENTION_PRIORITY_OFFSET_MAX,\n DOCK_HUD_PRIORITY,\n DOCK_OPERATION_STATUS,\n DOCK_OPERATION_MAX_ENTRIES,\n DOCK_OPERATION_EVENTS,\n} from \"./constants\";\nimport {\n type DockAttention,\n type DockHudDescriptor,\n type DockOperation,\n type DockScene,\n type DockStatusDescriptor,\n type SurfaceState,\n type DockOperationAction,\n type DockOperationInput,\n type DockOperationState,\n} from \"./types\";\n\nfunction createAttentionCandidate(\n kind: string,\n source: unknown,\n priority: number,\n): DockAttention {\n return { kind, priority, source };\n}\n\nfunction normalizeAttentionPriority(value: unknown): number {\n const priority = Number(value);\n if (!Number.isFinite(priority)) return DOCK_HUD_PRIORITY.DEFAULT;\n return Math.min(DOCK_ATTENTION_PRIORITY_OFFSET_MAX, Math.max(0, priority));\n}\n\nexport function resolveDockAttention({\n hud = null,\n isPageLoading = false,\n operation = null,\n status = null,\n surface = null,\n}: {\n hud?: DockHudDescriptor | null;\n isPageLoading?: boolean;\n operation?: DockOperation | null;\n status?: DockStatusDescriptor | null;\n surface?: SurfaceState | null;\n} = {}): DockAttention {\n const candidates: (DockAttention | null)[] = [\n surface?.isSurfaceOpen\n ? createAttentionCandidate(\n DOCK_ATTENTION_KIND.SURFACE,\n surface,\n DOCK_ATTENTION_PRIORITY.SURFACE,\n )\n : null,\n status?.isOverlay\n ? createAttentionCandidate(\n DOCK_ATTENTION_KIND.STATUS,\n status,\n DOCK_ATTENTION_PRIORITY.STATUS_OVERLAY +\n normalizeAttentionPriority(status.priority),\n )\n : null,\n operation?.status === DOCK_OPERATION_STATUS.PENDING\n ? createAttentionCandidate(\n DOCK_ATTENTION_KIND.OPERATION,\n operation,\n DOCK_ATTENTION_PRIORITY.OPERATION +\n normalizeAttentionPriority(operation.priority),\n )\n : null,\n hud?.isActive\n ? createAttentionCandidate(\n DOCK_ATTENTION_KIND.HUD,\n hud,\n DOCK_ATTENTION_PRIORITY.HUD +\n normalizeAttentionPriority(hud.priority),\n )\n : null,\n isPageLoading\n ? createAttentionCandidate(\n DOCK_ATTENTION_KIND.LOADING,\n null,\n DOCK_ATTENTION_PRIORITY.LOADING,\n )\n : null,\n status\n ? createAttentionCandidate(\n DOCK_ATTENTION_KIND.STATUS,\n status,\n DOCK_ATTENTION_PRIORITY.STATUS +\n normalizeAttentionPriority(status.priority),\n )\n : null,\n createAttentionCandidate(\n DOCK_ATTENTION_KIND.ROUTE,\n null,\n DOCK_ATTENTION_PRIORITY.ROUTE,\n ),\n ];\n\n const validCandidates = candidates.filter(\n (c): c is DockAttention => c !== null,\n );\n\n return validCandidates.reduce((active, candidate) =>\n candidate.priority > active.priority ? candidate : active,\n );\n}\n\nexport function resolveDockScene({\n expanded = false,\n hasBreadcrumbs = false,\n isHudActive = false,\n isNotificationVisible = false,\n isOverlayActive = false,\n isStatusActive = false,\n isSurfaceActive = false,\n}: {\n expanded?: boolean;\n hasBreadcrumbs?: boolean;\n isHudActive?: boolean;\n isNotificationVisible?: boolean;\n isOverlayActive?: boolean;\n isStatusActive?: boolean;\n isSurfaceActive?: boolean;\n} = {}): DockScene {\n const topKind: DockScene[\"topKind\"] = isSurfaceActive\n ? \"surface\"\n : isOverlayActive && isStatusActive\n ? \"status-overlay\"\n : isStatusActive\n ? \"status\"\n : isHudActive\n ? \"hud\"\n : \"route\";\n\n const companion: DockScene[\"companion\"] = isNotificationVisible\n ? \"notification\"\n : expanded && !isOverlayActive && hasBreadcrumbs\n ? \"breadcrumbs\"\n : null;\n\n return {\n companion,\n expanded,\n isCompanionVisible: companion !== null,\n topKind,\n };\n}\n\nexport function createDockOperationState(): DockOperationState {\n return { entries: [] };\n}\n\nexport function createDockOperation({\n cancellable = true,\n description = null,\n hud = null,\n id,\n icon = null,\n label = \"Working\",\n metadata = null,\n onCancel = null,\n priority = 0,\n progress = null,\n startedAt = Date.now(),\n}: DockOperationInput = {}): DockOperation | null {\n const normalizedId =\n typeof id === \"string\" || typeof id === \"number\" ? String(id) : \"\";\n if (!normalizedId) return null;\n\n const numericPriority = Number(priority);\n const numericProgress = Number(progress);\n\n return {\n cancellable: Boolean(cancellable),\n description:\n typeof description === \"string\" && description.trim()\n ? description.trim()\n : null,\n hud,\n id: normalizedId,\n icon: icon ?? null,\n label: typeof label === \"string\" && label.trim() ? label.trim() : \"Working\",\n metadata:\n metadata && typeof metadata === \"object\" && !Array.isArray(metadata)\n ? { ...metadata }\n : {},\n priority: Number.isFinite(numericPriority) ? numericPriority : 0,\n progress: Number.isFinite(numericProgress)\n ? Math.min(1, Math.max(0, numericProgress))\n : null,\n startedAt: Number.isFinite(Number(startedAt))\n ? Number(startedAt)\n : Date.now(),\n status: DOCK_OPERATION_STATUS.PENDING as string,\n onCancel: typeof onCancel === \"function\" ? onCancel : null,\n };\n}\n\nfunction settleDockOperation(\n operation: DockOperation,\n status: string,\n action: DockOperationAction,\n): DockOperation {\n return {\n ...operation,\n endedAt: action.endedAt ?? Date.now(),\n result: action.result ?? null,\n status,\n };\n}\n\nexport function dockOperationReducer(\n state: DockOperationState | null | undefined,\n action: DockOperationAction,\n): DockOperationState {\n const currentState = state || createDockOperationState();\n\n if (action?.type === DOCK_OPERATION_EVENTS.CLEAR) {\n if (action.id == null)\n return currentState.entries.length\n ? createDockOperationState()\n : currentState;\n\n const entries = currentState.entries.filter(\n (entry) => entry.id !== String(action.id),\n );\n return entries.length === currentState.entries.length\n ? currentState\n : { entries };\n }\n\n if (action?.type === DOCK_OPERATION_EVENTS.START) {\n const operation = action.operation;\n if (!operation?.id) return currentState;\n\n const maxEntries = Math.max(\n 1,\n Number(action.maxEntries) || DOCK_OPERATION_MAX_ENTRIES,\n );\n const filteredEntries = currentState.entries.filter(\n (entry) => entry.id !== operation.id,\n );\n\n filteredEntries.push(operation);\n if (filteredEntries.length > maxEntries) {\n filteredEntries.splice(0, filteredEntries.length - maxEntries);\n }\n\n return { entries: filteredEntries };\n }\n\n const id = action?.id == null ? \"\" : String(action.id);\n const operation = currentState.entries.find((entry) => entry.id === id);\n if (!operation) return currentState;\n\n if (action.type === DOCK_OPERATION_EVENTS.UPDATE) {\n if (operation.status !== DOCK_OPERATION_STATUS.PENDING) return currentState;\n\n const updatedOperation = createDockOperation({\n ...operation,\n ...action.patch,\n });\n if (!updatedOperation) return currentState;\n\n return {\n entries: currentState.entries.map((entry) =>\n entry.id === id\n ? { ...updatedOperation, startedAt: operation.startedAt }\n : entry,\n ),\n };\n }\n\n const status =\n action.type === DOCK_OPERATION_EVENTS.COMPLETE\n ? DOCK_OPERATION_STATUS.COMPLETED\n : action.type === DOCK_OPERATION_EVENTS.CANCEL\n ? DOCK_OPERATION_STATUS.CANCELLED\n : null;\n\n if (!status || operation.status !== DOCK_OPERATION_STATUS.PENDING)\n return currentState;\n\n return {\n entries: currentState.entries.map((entry) =>\n entry.id === id ? settleDockOperation(entry, status, action) : entry,\n ),\n };\n}\n\nexport function resolveActiveDockOperation(\n state: DockOperationState | null | undefined,\n): DockOperation | null {\n let active: DockOperation | null = null;\n for (const entry of state?.entries || []) {\n if (entry.status !== DOCK_OPERATION_STATUS.PENDING) continue;\n\n if (\n !active ||\n entry.priority > active.priority ||\n (entry.priority === active.priority && entry.startedAt < active.startedAt)\n ) {\n active = entry;\n }\n }\n return active;\n}\n","\"use client\";\n\nimport { type ComponentType } from \"react\";\nimport { EVENT_TYPES, globalEvents } from \"@/events\";\nimport { toUserMessage } from \"@/utils\";\nimport {\n type QueuedApiError,\n type ScheduleStatusClearOptions,\n} from \"../types\";\nimport {\n API_ERROR_BATCH_DELAY,\n DOCK_EVENTS,\n OVERLAY_STATUS_CLEAR_DURATION,\n} from \"../constants\";\nimport { normalizeUpper } from \"../helpers\";\nimport {\n StatusSetter,\n StatusUpdate,\n TimerRef,\n createErrorStatus,\n createGuardStatus,\n createOverlayStatus,\n getStatusTheme,\n clearPersistedOverlayStatus,\n persistOverlayStatus,\n} from \"./model\";\n\nfunction stripTitleEcho(text: string): string {\n return text.replace(/^Something went wrong\\.?\\s*/i, \"\") || text;\n}\n\nexport function subscribeToApiErrorStatusEvents({\n apiErrorQueueRef,\n batchTimerRef,\n clearStatus,\n clearTimer,\n updateStatus,\n}: {\n apiErrorQueueRef: React.MutableRefObject<QueuedApiError[]>;\n batchTimerRef: TimerRef;\n clearStatus: () => void;\n clearTimer: (ref: TimerRef) => void;\n updateStatus: (status: StatusUpdate) => void;\n}) {\n return globalEvents.subscribe(EVENT_TYPES.API_ERROR, (eventData) => {\n const { status: errorStatus, message, isCritical, retry } = eventData || {};\n if (!isCritical) return;\n\n apiErrorQueueRef.current.push({ status: errorStatus, message, retry });\n clearTimer(batchTimerRef);\n\n batchTimerRef.current = setTimeout(() => {\n const errors = [...apiErrorQueueRef.current];\n apiErrorQueueRef.current = [];\n if (errors.length === 0) return;\n\n const isBatch = errors.length > 1;\n const title = isBatch ? \"Some requests failed\" : \"Request failed\";\n const description = isBatch\n ? `${errors.length} requests couldn't be completed`\n : errors[0].message || toUserMessage({ status: errors[0].status });\n\n updateStatus(\n createErrorStatus({\n type: \"API_ERROR\",\n title,\n description,\n icon: \"solar:danger-triangle-bold\",\n onRetry: () => errors.forEach((e) => e.retry?.()),\n style: getStatusTheme(\"API_ERROR\"),\n clearStatus,\n }),\n );\n }, API_ERROR_BATCH_DELAY);\n });\n}\n\nexport function subscribeToApplicationErrorStatusEvents({\n clearStatus,\n dispatchOfflineEvent,\n updateStatus,\n}: {\n clearStatus: () => void;\n dispatchOfflineEvent: () => void;\n updateStatus: (status: StatusUpdate) => void;\n}) {\n return globalEvents.subscribe(EVENT_TYPES.APP_ERROR, (eventData) => {\n const { message, error, resetError } = eventData || {};\n updateStatus(\n createErrorStatus({\n type: \"APP_ERROR\",\n title: \"Something went wrong\",\n description: stripTitleEcho(message || toUserMessage(error)),\n icon: \"solar:danger-triangle-bold\",\n onRetry: resetError\n ? () => {\n resetError();\n if (typeof navigator !== \"undefined\" && !navigator.onLine)\n dispatchOfflineEvent();\n }\n : undefined,\n style: getStatusTheme(\"APP_ERROR\"),\n clearStatus,\n }),\n );\n });\n}\n\nexport function subscribeToGenericStatusEvents({\n clearTimer,\n scheduleStatusClear,\n setStatus,\n statusClearTimerRef,\n updateStatus,\n}: {\n clearTimer: (ref: TimerRef) => void;\n scheduleStatusClear: (options?: ScheduleStatusClearOptions) => void;\n setStatus: StatusSetter;\n statusClearTimerRef: TimerRef;\n updateStatus: (status: StatusUpdate) => void;\n}) {\n const unsubscribeSet = globalEvents.subscribe(\n DOCK_EVENTS.STATUS_SET,\n (eventData) => {\n if (!eventData) return;\n const type = normalizeUpper(eventData.type || \"STATUS\");\n const priority = Number.isFinite(Number(eventData.priority))\n ? Number(eventData.priority)\n : null;\n\n const nextStatus = createOverlayStatus({\n type,\n flow: eventData.flow || null,\n priority,\n title: eventData.title || \"\",\n description: eventData.description || \"\",\n icon: eventData.icon ?? null,\n style: eventData.style || getStatusTheme(eventData.themeType || type),\n isOverlay: eventData.isOverlay !== false,\n action: eventData.action || null,\n actions: eventData.actions || null,\n });\n\n updateStatus(nextStatus);\n\n const duration =\n Number(eventData.duration) > 0\n ? Number(eventData.duration)\n : eventData.duration === null || eventData.duration === 0\n ? 0\n : OVERLAY_STATUS_CLEAR_DURATION;\n\n if (duration > 0) {\n scheduleStatusClear({\n duration,\n clearWhen: [type],\n });\n if (eventData.persist !== false) {\n persistOverlayStatus(nextStatus, duration);\n }\n } else {\n clearTimer(statusClearTimerRef);\n }\n },\n );\n\n const unsubscribeClear = globalEvents.subscribe(\n DOCK_EVENTS.STATUS_CLEAR,\n (eventData) => {\n clearTimer(statusClearTimerRef);\n clearPersistedOverlayStatus();\n if (!eventData || (!eventData.type && !eventData.flow)) {\n setStatus(null);\n return;\n }\n setStatus((currentStatus) => {\n if (!currentStatus) return null;\n if (eventData.flow && currentStatus.flow === eventData.flow)\n return null;\n if (\n eventData.type &&\n currentStatus.type === normalizeUpper(eventData.type)\n )\n return null;\n return currentStatus;\n });\n },\n );\n\n return () => {\n unsubscribeSet();\n unsubscribeClear();\n };\n}\n\nexport function subscribeToNotFoundStatusEvents({\n notFoundActionRef,\n setStatus,\n updateStatus,\n}: {\n notFoundActionRef: React.RefObject<ComponentType | null>;\n setStatus: StatusSetter;\n updateStatus: (status: StatusUpdate) => void;\n}) {\n return globalEvents.subscribe(DOCK_EVENTS.NOT_FOUND, (eventData) => {\n if (eventData?.clear) {\n setStatus((currentStatus) =>\n currentStatus?.type === \"NOT_FOUND\" ? null : currentStatus,\n );\n return;\n }\n const currentNotFoundAction = notFoundActionRef.current;\n updateStatus({\n type: \"NOT_FOUND\",\n path: \"not-found\",\n isOverlay: true,\n title: eventData?.title || \"404\",\n description:\n eventData?.description || \"This page does not exist or has moved\",\n icon: eventData?.icon || \"solar:forbidden-circle-bold\",\n style: getStatusTheme(\"NOT_FOUND\"),\n action: currentNotFoundAction\n ? () => {\n const NotFoundAction = currentNotFoundAction;\n return <NotFoundAction />;\n }\n : null,\n hideScroll: true,\n });\n });\n}\n\nexport function subscribeToGuardStatusEvents({\n clearStatus,\n setStatus,\n updateStatus,\n}: {\n clearStatus: () => void;\n setStatus: StatusSetter;\n updateStatus: (status: StatusUpdate) => void;\n}) {\n return globalEvents.subscribe(DOCK_EVENTS.GUARD, (eventData) => {\n if (eventData?.clear) {\n setStatus((currentStatus) =>\n currentStatus?.type === \"GUARD\" ? null : currentStatus,\n );\n return;\n }\n updateStatus(\n createGuardStatus({\n ...eventData,\n description:\n typeof eventData?.description === \"string\"\n ? eventData.description\n : typeof eventData?.message === \"string\"\n ? eventData.message\n : undefined,\n clearStatus,\n }),\n );\n });\n}\n\nexport function subscribeToConnectionStatusEvents({\n handleOffline,\n handleOnline,\n}: {\n handleOffline: () => void;\n handleOnline: () => void;\n}) {\n window.addEventListener(\"offline\", handleOffline);\n window.addEventListener(\"online\", handleOnline);\n if (typeof navigator !== \"undefined\" && !navigator.onLine) handleOffline();\n\n return () => {\n window.removeEventListener(\"offline\", handleOffline);\n window.removeEventListener(\"online\", handleOnline);\n };\n}\n","\"use client\";\n\nimport {\n useCallback,\n useEffect,\n useRef,\n useState,\n type ComponentType,\n} from \"react\";\nimport { usePathname } from \"next/navigation\";\nimport {\n type StatusState,\n type QueuedApiError,\n type ScheduleStatusClearOptions,\n} from \"../types\";\nimport { STATUS_CLEAR_DURATION } from \"../constants\";\nimport {\n StatusSetter,\n StatusUpdate,\n TimerRef,\n createConnectionStatus,\n isEquivalentOverlayStatus,\n isErrorStatus,\n resolveStatusPriority,\n clearPersistedOverlayStatus,\n isPersistableOverlayStatus,\n restorePersistedOverlayStatus,\n} from \"./model\";\nimport {\n subscribeToApiErrorStatusEvents,\n subscribeToApplicationErrorStatusEvents,\n subscribeToConnectionStatusEvents,\n subscribeToGenericStatusEvents,\n subscribeToGuardStatusEvents,\n subscribeToNotFoundStatusEvents,\n} from \"./events\";\n\nfunction usePersistedOverlayStatusRestoration({\n scheduleStatusClear,\n setStatus,\n skipPersistedStatusCleanupRef,\n}: {\n scheduleStatusClear: (options?: ScheduleStatusClearOptions) => void;\n setStatus: StatusSetter;\n skipPersistedStatusCleanupRef: React.MutableRefObject<boolean>;\n}) {\n useEffect(() => {\n const persistedStatus = restorePersistedOverlayStatus();\n if (!persistedStatus) return;\n skipPersistedStatusCleanupRef.current = true;\n setStatus((currentStatus) => currentStatus || persistedStatus.status);\n scheduleStatusClear({\n duration: persistedStatus.remainingMs,\n clearWhen: [persistedStatus.status.type],\n });\n }, [scheduleStatusClear, setStatus, skipPersistedStatusCleanupRef]);\n}\n\nfunction usePersistedOverlayStatusCleanup({\n skipPersistedStatusCleanupRef,\n status,\n}: {\n skipPersistedStatusCleanupRef: React.MutableRefObject<boolean>;\n status: StatusState;\n}) {\n useEffect(() => {\n if (skipPersistedStatusCleanupRef.current) {\n skipPersistedStatusCleanupRef.current = false;\n return;\n }\n if (!isPersistableOverlayStatus(status)) clearPersistedOverlayStatus();\n }, [status, skipPersistedStatusCleanupRef]);\n}\n\nfunction useRouteErrorStatusCleanup({\n dispatchOfflineEvent,\n pathname,\n previousPathRef,\n setStatus,\n}: {\n dispatchOfflineEvent: () => void;\n pathname: string | null;\n previousPathRef: React.MutableRefObject<string | null>;\n setStatus: StatusSetter;\n}) {\n useEffect(() => {\n if (previousPathRef.current === pathname) return;\n previousPathRef.current = pathname;\n\n setStatus((currentStatus) => {\n if (\n currentStatus &&\n isErrorStatus(currentStatus.type) &&\n currentStatus.type !== \"ACCOUNT_DELETE\"\n ) {\n if (typeof navigator !== \"undefined\" && !navigator.onLine)\n dispatchOfflineEvent();\n return null;\n }\n return currentStatus;\n });\n }, [pathname, dispatchOfflineEvent, setStatus, previousPathRef]);\n}\n\nfunction useDockStatusTimerCleanup(clearAllTimers: () => void) {\n useEffect(() => () => clearAllTimers(), [clearAllTimers]);\n}\n\nexport function useDockStatus(\n options: { notFoundAction?: ComponentType | null } = {},\n) {\n const pathname = usePathname();\n const notFoundAction = options?.notFoundAction || null;\n const notFoundActionRef = useRef(notFoundAction);\n useEffect(() => {\n notFoundActionRef.current = notFoundAction;\n }, [notFoundAction]);\n const [status, setStatus] = useState<StatusState>(null);\n\n const previousPathRef = useRef(pathname);\n const apiErrorQueueRef = useRef<QueuedApiError[]>([]);\n const skipPersistedStatusCleanupRef = useRef(false);\n const batchTimerRef: TimerRef = useRef(null);\n const statusClearTimerRef: TimerRef = useRef(null);\n const onlineResetTimerRef: TimerRef = useRef(null);\n const offlineDispatchTimerRef: TimerRef = useRef(null);\n\n const clearTimer = useCallback((timerRef: TimerRef) => {\n if (timerRef.current) {\n clearTimeout(timerRef.current);\n timerRef.current = null;\n }\n }, []);\n\n const clearTransientTimers = useCallback(() => {\n clearTimer(batchTimerRef);\n clearTimer(onlineResetTimerRef);\n clearTimer(offlineDispatchTimerRef);\n }, [clearTimer]);\n\n const clearAllTimers = useCallback(() => {\n clearTransientTimers();\n clearTimer(statusClearTimerRef);\n }, [clearTimer, clearTransientTimers]);\n\n const clearStatus = useCallback(() => {\n clearPersistedOverlayStatus();\n setStatus(null);\n }, []);\n\n const updateStatus = useCallback((nextStatusOrFn: StatusUpdate) => {\n setStatus((currentStatus) => {\n const nextStatus =\n typeof nextStatusOrFn === \"function\"\n ? nextStatusOrFn(currentStatus)\n : nextStatusOrFn;\n if (!nextStatus) return null;\n if (isEquivalentOverlayStatus(currentStatus, nextStatus))\n return currentStatus;\n if (!currentStatus) return nextStatus;\n return resolveStatusPriority(nextStatus) >=\n resolveStatusPriority(currentStatus)\n ? nextStatus\n : currentStatus;\n });\n }, []);\n\n const scheduleStatusClear = useCallback(\n ({\n duration = STATUS_CLEAR_DURATION,\n clearWhen = [],\n }: ScheduleStatusClearOptions = {}) => {\n clearTimer(statusClearTimerRef);\n const clearTypes = Array.isArray(clearWhen)\n ? clearWhen.filter(Boolean)\n : [];\n\n statusClearTimerRef.current = setTimeout(() => {\n statusClearTimerRef.current = null;\n setStatus((currentStatus) => {\n if (!currentStatus) return currentStatus;\n if (\n clearTypes.length === 0 ||\n clearTypes.includes(currentStatus.type)\n ) {\n clearPersistedOverlayStatus();\n return null;\n }\n return currentStatus;\n });\n }, duration);\n },\n [clearTimer],\n );\n\n const dispatchOfflineEvent = useCallback(() => {\n clearTimer(offlineDispatchTimerRef);\n offlineDispatchTimerRef.current = setTimeout(() => {\n offlineDispatchTimerRef.current = null;\n window.dispatchEvent(new Event(\"offline\"));\n }, 0);\n }, [clearTimer]);\n\n const handleOffline = useCallback(() => {\n updateStatus(createConnectionStatus(\"OFFLINE\"));\n }, [updateStatus]);\n\n const handleOnline = useCallback(() => {\n setStatus((currentStatus) => {\n if (currentStatus?.type !== \"OFFLINE\") return null;\n clearTimer(onlineResetTimerRef);\n onlineResetTimerRef.current = setTimeout(() => {\n onlineResetTimerRef.current = null;\n setStatus((nextStatus) =>\n nextStatus?.type === \"ONLINE\" ? null : nextStatus,\n );\n }, STATUS_CLEAR_DURATION);\n return createConnectionStatus(\"ONLINE\");\n });\n }, [clearTimer]);\n\n usePersistedOverlayStatusRestoration({\n scheduleStatusClear,\n setStatus,\n skipPersistedStatusCleanupRef,\n });\n usePersistedOverlayStatusCleanup({ skipPersistedStatusCleanupRef, status });\n useRouteErrorStatusCleanup({\n dispatchOfflineEvent,\n pathname,\n previousPathRef,\n setStatus,\n });\n\n useEffect(() => {\n const unsubscribes = [\n subscribeToApiErrorStatusEvents({\n apiErrorQueueRef,\n batchTimerRef,\n clearStatus,\n clearTimer,\n updateStatus,\n }),\n subscribeToApplicationErrorStatusEvents({\n clearStatus,\n dispatchOfflineEvent,\n updateStatus,\n }),\n subscribeToGenericStatusEvents({\n clearTimer,\n scheduleStatusClear,\n setStatus,\n statusClearTimerRef,\n updateStatus,\n }),\n subscribeToNotFoundStatusEvents({\n notFoundActionRef,\n setStatus,\n updateStatus,\n }),\n subscribeToGuardStatusEvents({ clearStatus, setStatus, updateStatus }),\n subscribeToConnectionStatusEvents({ handleOffline, handleOnline }),\n ];\n return () => {\n unsubscribes.forEach((fn) => fn());\n clearTransientTimers();\n };\n }, [\n apiErrorQueueRef,\n batchTimerRef,\n clearStatus,\n clearTimer,\n clearTransientTimers,\n dispatchOfflineEvent,\n handleOffline,\n handleOnline,\n notFoundActionRef,\n scheduleStatusClear,\n updateStatus,\n ]);\n\n useDockStatusTimerCleanup(clearAllTimers);\n\n return status;\n}\n","\"use client\";\n\nimport { useEffect, useMemo, useState, use, type ComponentType } from \"react\";\nimport { useRegistryEntries } from \"@/kernel\";\nimport {\n normalizePath,\n shallowEqual as areShallowCollectionsEqual,\n} from \"@/utils\";\nimport { usePathname } from \"next/navigation\";\nimport { toSearchableText } from \"../helpers\";\nimport { isPathPrefix, isSamePath } from \"../paths\";\nimport { resolveActiveIndex } from \"./pipeline\";\nimport { useModuleTheme } from \"@/theme\";\nimport {\n DOCK_ATTENTION_KIND,\n DOCK_PENDING_ROUTE_HOLD_MS,\n dockTheme,\n} from \"../constants\";\nimport { createInlineSurfaceEntry } from \"../surface/definition\";\nimport { applySurfaceToDockItem } from \"../surface/view-model\";\nimport { applyStatusOverlay } from \"../status/model\";\nimport { applyMediaAction } from \"../cards\";\nimport {\n type DockAttention,\n type DockItem,\n type DockStatusDescriptor,\n type SurfaceState,\n type SurfaceViewModelOptions,\n} from \"../types\";\nimport {\n useDockHasMedia,\n useDockMediaActions,\n useDockLoadingState as useLoadingState,\n DockContext,\n useDockActions,\n useDockSelector,\n} from \"../context\";\nimport { resolveDockAttention } from \"../state\";\nimport { createDockTopology } from \"../routing/navigation\";\nimport { useDockStatus } from \"../status/hooks\";\n\nexport function isNotFoundItem(item: DockItem | null | undefined): boolean {\n return (\n item?.isNotFound || item?.path === \"not-found\" || item?.type === \"NOT_FOUND\"\n );\n}\n\nfunction flattenDockItems(items: DockItem[]): DockItem[] {\n return items.map((item) => ({\n ...item,\n activeChild: null,\n children: null,\n hasActiveChild: false,\n isExpanded: false,\n isParent: false,\n }));\n}\n\nfunction filterDockItems(items: DockItem[], searchQuery: string): DockItem[] {\n const normalizedQuery = searchQuery.trim().toLowerCase();\n if (!normalizedQuery) return items;\n return items.filter(\n (item) =>\n toSearchableText(item.name).toLowerCase().includes(normalizedQuery) ||\n toSearchableText(item.title).toLowerCase().includes(normalizedQuery) ||\n toSearchableText(item.description)\n .toLowerCase()\n .includes(normalizedQuery),\n );\n}\n\nexport function buildDockItems({\n rawItems,\n expanded,\n searchQuery,\n isNotFoundPage,\n}: {\n rawItems: DockItem[];\n expanded?: boolean;\n searchQuery: string;\n isNotFoundPage: boolean;\n}): DockItem[] {\n const baseItems = isNotFoundPage\n ? rawItems.filter((item) => item.path === \"/\" || isNotFoundItem(item))\n : rawItems;\n const flattenedItems = flattenDockItems(baseItems);\n if (expanded && searchQuery)\n return filterDockItems(flattenedItems, searchQuery);\n return flattenedItems;\n}\n\nexport interface DockBaseMatch {\n item: DockItem | null;\n /** No card claims the path: `item` is the root card or the first one. */\n isFallback: boolean;\n}\n\nexport function resolveBaseActiveItemMatch({\n rawItems,\n dockItems,\n pathname,\n isNotFoundPage,\n}: {\n rawItems: DockItem[];\n dockItems: DockItem[];\n pathname: string;\n isNotFoundPage: boolean;\n}): DockBaseMatch {\n const normalizedPathname = normalizePath(pathname);\n const matched = (item: DockItem | null): DockBaseMatch => ({\n item,\n isFallback: false,\n });\n\n const selectedDataSource = dockItems.find(\n (item) => item.isDataSource && item.isSelected,\n );\n if (selectedDataSource) return matched(selectedDataSource);\n\n if (isNotFoundPage)\n return matched(rawItems.find(isNotFoundItem) || rawItems[0] || null);\n\n const matchInDock = dockItems.find(\n (item) =>\n isSamePath(item.path, normalizedPathname) ||\n (item.targetPath && isSamePath(item.targetPath, normalizedPathname)),\n );\n if (matchInDock) return matched(matchInDock);\n\n const matchInRaw = rawItems.find(\n (item) =>\n isSamePath(item.path, normalizedPathname) ||\n (item.targetPath && isSamePath(item.targetPath, normalizedPathname)),\n );\n if (matchInRaw) return matched(matchInRaw);\n\n let prefixMatchedRawItem: DockItem | null = null;\n let longestPrefixLength = -1;\n for (let i = 0; i < rawItems.length; i++) {\n const candidatePath = normalizePath(rawItems[i]?.path);\n if (\n candidatePath.length > longestPrefixLength &&\n isPathPrefix(candidatePath, normalizedPathname)\n ) {\n prefixMatchedRawItem = rawItems[i];\n longestPrefixLength = candidatePath.length;\n }\n }\n\n if (prefixMatchedRawItem) {\n const item =\n dockItems.find(\n (entry) =>\n isSamePath(entry?.path, prefixMatchedRawItem?.path) ||\n (entry?.name && entry.name === prefixMatchedRawItem?.name),\n ) || prefixMatchedRawItem;\n // The root is a prefix of every path, so it says nothing about this one.\n return {\n item,\n isFallback: normalizePath(prefixMatchedRawItem.path) === \"/\",\n };\n }\n return { item: rawItems[0] || null, isFallback: true };\n}\n\n/**\n * The card to show while the path has no card of its own: the one that was on\n * top before the path changed, as long as the hold for this path is open.\n */\nexport function selectPendingRouteItem({\n match,\n heldItem,\n pathname,\n isHolding,\n}: {\n match: DockBaseMatch;\n heldItem: DockItem | null;\n pathname: string;\n isHolding: boolean;\n}): DockItem | null {\n if (!match.isFallback || !isHolding || !heldItem) return match.item;\n if (heldItem.path && isSamePath(heldItem.path, pathname)) return match.item;\n return heldItem;\n}\n\nexport function usePendingRouteHold(\n pathname: string,\n match: DockBaseMatch,\n {\n holdMs = DOCK_PENDING_ROUTE_HOLD_MS,\n isNavigating = false,\n }: { holdMs?: number; isNavigating?: boolean } = {},\n): DockItem | null {\n const normalizedPathname = normalizePath(pathname);\n const [lastMatched, setLastMatched] = useState<DockItem | null>(() =>\n match.isFallback ? null : match.item,\n );\n // Starts closed: the first page has nothing before it to hold.\n const [hold, setHold] = useState(() => ({\n isOpen: false,\n pathname: normalizedPathname,\n }));\n\n if (!match.isFallback && match.item !== lastMatched) {\n setLastMatched(match.item);\n }\n if (hold.pathname !== normalizedPathname) {\n setHold({ isOpen: true, pathname: normalizedPathname });\n }\n\n // The countdown starts once the navigation commits, not while it runs.\n useEffect(() => {\n if (!hold.isOpen || isNavigating) return;\n const timer = setTimeout(\n () =>\n setHold((current) =>\n current.pathname === hold.pathname\n ? { ...current, isOpen: false }\n : current,\n ),\n holdMs,\n );\n return () => clearTimeout(timer);\n }, [hold, holdMs, isNavigating]);\n\n const selected = selectPendingRouteItem({\n heldItem: lastMatched,\n isHolding: hold.isOpen && hold.pathname === normalizedPathname,\n match,\n pathname: normalizedPathname,\n });\n const isHeld = selected !== match.item;\n return useMemo(\n () => (isHeld && selected ? { ...selected, isRoutePending: true } : selected),\n [isHeld, selected],\n );\n}\n\nexport function resolveActiveItem({\n rawItems,\n dockItems,\n pathname,\n isNotFoundPage,\n surfaceState,\n statusState,\n hasMedia,\n toggleMedia,\n mediaAction,\n actionStackClass,\n surfaceActions,\n isPageLoading,\n attention,\n baseActiveItem: resolvedBaseActiveItem,\n}: {\n rawItems: DockItem[];\n dockItems: DockItem[];\n pathname: string;\n isNotFoundPage: boolean;\n surfaceState: SurfaceState;\n statusState: DockStatusDescriptor | null;\n hasMedia: boolean;\n toggleMedia: () => void;\n mediaAction: ComponentType | null;\n actionStackClass: string;\n surfaceActions: SurfaceViewModelOptions;\n isPageLoading: boolean;\n attention: DockAttention;\n /** Already resolved (and possibly held) base card; resolved here if absent. */\n baseActiveItem?: DockItem | null;\n}): DockItem | null {\n const baseActiveItem =\n resolvedBaseActiveItem !== undefined\n ? resolvedBaseActiveItem\n : resolveBaseActiveItemMatch({\n rawItems,\n dockItems,\n pathname,\n isNotFoundPage,\n }).item;\n if (!baseActiveItem) return null;\n\n if (attention?.kind === DOCK_ATTENTION_KIND.SURFACE)\n return applySurfaceToDockItem(\n baseActiveItem,\n surfaceState.activeSurfaceEntry,\n {\n ...surfaceActions,\n surfacePhase: surfaceState.surfacePhase,\n surfaceStack: surfaceState.surfaceStack,\n },\n );\n if (attention?.kind === DOCK_ATTENTION_KIND.STATUS && statusState?.isOverlay)\n return applyStatusOverlay(baseActiveItem, statusState);\n if (\n attention?.kind === DOCK_ATTENTION_KIND.HUD ||\n attention?.kind === DOCK_ATTENTION_KIND.OPERATION\n )\n return baseActiveItem;\n if (attention?.kind === DOCK_ATTENTION_KIND.STATUS && statusState)\n return applyStatusOverlay(baseActiveItem, statusState);\n\n const itemWithMediaAction = applyMediaAction(\n baseActiveItem,\n hasMedia,\n toggleMedia,\n mediaAction,\n actionStackClass,\n );\n const inlineSurface = createInlineSurfaceEntry(itemWithMediaAction?.surface);\n\n if (inlineSurface)\n return applySurfaceToDockItem(\n itemWithMediaAction,\n inlineSurface,\n surfaceActions,\n );\n return itemWithMediaAction;\n}\n\nfunction stripChildrenSystemFields(item: DockItem): DockItem {\n return {\n ...item,\n activeChild: null,\n children: null,\n hasActiveChild: false,\n isExpanded: false,\n isParent: false,\n };\n}\n\nexport function useDockItems(): { rawItems: DockItem[] } {\n const entries = useRegistryEntries<\"dock\", DockItem>(\"dock\");\n const rawItems = useMemo(\n () => Object.values(entries).map(stripChildrenSystemFields),\n [entries],\n );\n return { rawItems };\n}\n\nexport function useDockDisplay(\n overridePathname?: string,\n { isNavigating = false }: { isNavigating?: boolean } = {},\n) {\n const routerPathname = usePathname();\n const pathname = overridePathname || routerPathname;\n const loadingState = useLoadingState();\n const isPageLoading = Boolean(loadingState?.isLoading);\n const { rawItems } = useDockItems();\n\n const {\n closeAllSurfaces,\n goBackSurface,\n closeSurface,\n pushStep,\n popStep,\n goToStep,\n getSurfaceFlow,\n } = useDockActions();\n\n const {\n expanded,\n searchQuery,\n activeSurfaceId,\n activeSurfaceEntry,\n activeOperation,\n hud,\n isSurfaceOpen,\n surfaceStack,\n surfacePhase,\n } = useDockSelector(\n (state) => ({\n activeOperation: state.activeOperation,\n activeSurfaceEntry: state.activeSurfaceEntry,\n activeSurfaceId: state.activeSurfaceId,\n expanded: state.expanded,\n hud: state.hud,\n isSurfaceOpen: state.isSurfaceOpen,\n searchQuery: state.searchQuery,\n surfacePhase: state.surfacePhase,\n surfaceStack: state.surfaceStack,\n }),\n areShallowCollectionsEqual,\n );\n\n const surfaceState = useMemo(\n () => ({\n activeSurfaceId,\n activeSurfaceEntry,\n isSurfaceOpen,\n surfaceStack,\n surfacePhase,\n }),\n [\n activeSurfaceId,\n activeSurfaceEntry,\n isSurfaceOpen,\n surfaceStack,\n surfacePhase,\n ],\n );\n\n const dockCtx = use(DockContext);\n const mediaAction = dockCtx?.runtimeActions?.mediaAction ?? null;\n const notFoundAction = dockCtx?.runtimeActions?.notFoundAction ?? null;\n const statusState = useDockStatus({ notFoundAction });\n const hasMedia = useDockHasMedia();\n const actionStackClass = useModuleTheme(dockTheme).slots.actionStack;\n const { toggle: toggleMedia } = useDockMediaActions();\n\n const attention = useMemo(\n () =>\n resolveDockAttention({\n hud,\n isPageLoading,\n operation: activeOperation,\n status: statusState,\n surface: surfaceState,\n }),\n [activeOperation, hud, isPageLoading, statusState, surfaceState],\n );\n\n const isNotFoundPage = useMemo(\n () => rawItems.some(isNotFoundItem),\n [rawItems],\n );\n\n const dockItems = useMemo(\n () => buildDockItems({ rawItems, expanded, searchQuery, isNotFoundPage }),\n [rawItems, expanded, searchQuery, isNotFoundPage],\n );\n\n const baseMatch = useMemo(\n () =>\n resolveBaseActiveItemMatch({\n rawItems,\n dockItems,\n pathname,\n isNotFoundPage,\n }),\n [rawItems, dockItems, pathname, isNotFoundPage],\n );\n const baseActiveItem = usePendingRouteHold(pathname, baseMatch, {\n isNavigating,\n });\n\n const activeItem = useMemo(\n () =>\n resolveActiveItem({\n baseActiveItem,\n rawItems,\n dockItems,\n pathname,\n isNotFoundPage,\n surfaceState,\n statusState,\n hasMedia,\n toggleMedia,\n mediaAction,\n actionStackClass,\n surfaceActions: {\n closeSurface,\n closeAllSurfaces,\n goBackSurface,\n pushStep,\n popStep,\n goToStep,\n getSurfaceFlow,\n surfaceStack,\n },\n isPageLoading,\n attention,\n }),\n [\n baseActiveItem,\n rawItems,\n dockItems,\n pathname,\n isNotFoundPage,\n surfaceState,\n statusState,\n hasMedia,\n toggleMedia,\n mediaAction,\n actionStackClass,\n closeSurface,\n closeAllSurfaces,\n goBackSurface,\n pushStep,\n popStep,\n goToStep,\n getSurfaceFlow,\n surfaceStack,\n isPageLoading,\n attention,\n ],\n );\n\n const activeIndex = useMemo(\n () => resolveActiveIndex({ dockItems, activeItem, pathname }),\n [dockItems, activeItem, pathname],\n );\n\n const topology = useMemo(\n () => createDockTopology(dockItems, { pathname }),\n [dockItems, pathname],\n );\n\n return useMemo(\n () => ({\n dockItems,\n activeItem,\n activeIndex,\n statusState,\n attention,\n topology,\n }),\n [dockItems, activeItem, activeIndex, statusState, attention, topology],\n );\n}\n","\"use client\";\n\nimport {\n useMemo,\n useCallback,\n useEffect,\n useRef,\n useState,\n useReducer,\n} from \"react\";\nimport { usePathname, useRouter } from \"next/navigation\";\nimport {\n useRequiredContext,\n useClickOutside,\n useIsFullscreenStateActive,\n useIsomorphicLayoutEffect,\n} from \"@/hooks\";\nimport { normalizePath, shallowEqual } from \"@/utils\";\nimport {\n MAX_VISIBLE_STACKED_CARDS,\n DOCK_ATTENTION_KIND,\n DOCK_OPERATION_EVENTS,\n DOCK_OPERATION_MAX_ENTRIES,\n DOCK_OPERATION_STATUS,\n DOCK_SURFACE_PHASE,\n} from \"../constants\";\nimport {\n findDockItemIndex,\n getIsItemActive,\n getItemKey,\n isSameItem,\n removeAncestorDuplicates,\n removeInactiveLoadingItems,\n reorderItemsWithActiveFirst,\n replaceActiveItem,\n} from \"./pipeline\";\nimport {\n type DockItem,\n type DockNavigateOptions,\n type DockOperationInput,\n type DockActions,\n type DockRouteSnapshot,\n type DockViewBridge,\n} from \"../types\";\nimport {\n useDockKeyboard,\n useDockRouteReset,\n} from \"../dom\";\nimport {\n useDockHeightController,\n useDockViewport,\n} from \"../layout\";\nimport {\n DockContext,\n useDockActions,\n useDockSelector,\n useDockNotificationVisible,\n} from \"../context\";\nimport {\n useDockNavigation,\n useDockViewConnection,\n} from \"../routing/navigation\";\nimport { useDockDisplay } from \"./display\";\nimport { createDockOperationHud } from \"../hud\";\nimport {\n createDockOperation,\n createDockOperationState,\n dockOperationReducer,\n resolveActiveDockOperation,\n resolveDockScene,\n} from \"../state\";\nimport { useDockBreadcrumbs } from \"../routing/breadcrumbs\";\nimport { useIsSurfaceExtensionsVisible } from \"../surface/hooks\";\nimport { getDockStackTransition, useDockMotion } from \"../motion\";\nimport { report } from \"@/utils\";\n\nexport function useDockLayout({\n dockItems,\n activeItem,\n pathname: overridePathname,\n}: {\n dockItems?: DockItem[];\n activeItem?: DockItem | null;\n pathname?: string;\n} = {}) {\n const routePathname = usePathname();\n const pathname = overridePathname || routePathname;\n\n const { displayItems, displayActiveIndex } = useMemo(() => {\n const registeredItems = dockItems || [];\n const registeredIndex = findDockItemIndex(\n registeredItems,\n activeItem ?? null,\n pathname,\n );\n // A held card may outlive its registration (the old page unmounted while\n // the new one loads); it still goes on top.\n const isHeldOutsideStack =\n registeredIndex === -1 && Boolean(activeItem?.isRoutePending);\n const items = isHeldOutsideStack\n ? [activeItem as DockItem, ...registeredItems]\n : registeredItems;\n const activeIndex = isHeldOutsideStack ? 0 : registeredIndex;\n const itemsWithActiveItem = replaceActiveItem(\n items,\n activeIndex,\n activeItem ?? null,\n );\n\n const reorderedItems = reorderItemsWithActiveFirst(\n itemsWithActiveItem,\n activeIndex,\n );\n const filteredItems = removeInactiveLoadingItems(\n reorderedItems,\n activeItem ?? null,\n );\n const deduplicatedItems = removeAncestorDuplicates(filteredItems);\n const activeIndexForDisplay = deduplicatedItems.findIndex((item) =>\n isSameItem(item, activeItem),\n );\n\n return {\n displayItems: deduplicatedItems,\n displayActiveIndex:\n activeIndexForDisplay !== -1\n ? activeIndexForDisplay\n : reorderedItems.length > 0\n ? 0\n : -1,\n };\n }, [pathname, dockItems, activeItem]);\n\n return {\n displayItems,\n activeIndex: displayActiveIndex,\n MAX_VISIBLE_STACKED_CARDS,\n };\n}\n\nexport function useDock() {\n const {\n closeSurface,\n setExpanded: setExpandedState,\n setDockHeight,\n setSearchQuery,\n } = useDockActions();\n const { isExpanded, searchQuery } = useDockSelector(\n (state) => ({\n isExpanded: state.expanded,\n searchQuery: state.searchQuery,\n }),\n shallowEqual,\n );\n\n const [isHovered, setIsHovered] = useState(false);\n const { guards } = useRequiredContext(DockContext, \"useDock\", \"DockProvider\");\n const core = useDockNavigation();\n\n const {\n activeTransaction,\n cancelDock,\n lastTransaction,\n locationKey,\n navigate: navigateWithGuards,\n pathname,\n } = core;\n\n const effectivePathname = activeTransaction?.to\n ? normalizePath(activeTransaction.to)\n : pathname;\n const display = useDockDisplay(effectivePathname, {\n isNavigating: Boolean(activeTransaction),\n });\n const { dockItems, activeItem, statusState, attention, topology } = display;\n const isHudModeActive =\n attention?.kind === DOCK_ATTENTION_KIND.HUD ||\n attention?.kind === DOCK_ATTENTION_KIND.OPERATION;\n const isSurfaceActive = Boolean(activeItem?.isSurface);\n const activeItemHasAction = Boolean(activeItem?.action);\n\n const clearHoverState = useCallback(() => setIsHovered(false), []);\n\n const setExpanded = useCallback(\n (nextValue: boolean | ((prev: boolean) => boolean)) => {\n const resolvedValue =\n typeof nextValue === \"function\" ? nextValue(isExpanded) : nextValue;\n if (isSurfaceActive && resolvedValue) return;\n setExpandedState(resolvedValue);\n },\n [isExpanded, isSurfaceActive, setExpandedState],\n );\n\n const wasSurfaceActiveRef = useRef(false);\n useEffect(() => {\n if (isSurfaceActive) {\n wasSurfaceActiveRef.current = true;\n return;\n }\n if (wasSurfaceActiveRef.current) {\n wasSurfaceActiveRef.current = false;\n clearHoverState();\n }\n }, [clearHoverState, isSurfaceActive]);\n\n useEffect(() => {\n if (isSurfaceActive && isExpanded) setExpandedState(false);\n }, [isExpanded, isSurfaceActive, setExpandedState]);\n\n const navigate = useCallback(\n async (href: string, options?: DockNavigateOptions) => {\n if (!href) return false;\n const isUnguarded = Boolean(options?.force) || guards.count() === 0;\n const navigationPromise = navigateWithGuards(href, options);\n if (isUnguarded) {\n setExpanded(false);\n setSearchQuery(\"\");\n clearHoverState();\n }\n const didNavigate = await navigationPromise;\n if (!didNavigate) return didNavigate;\n if (!isUnguarded) {\n setExpanded(false);\n setSearchQuery(\"\");\n clearHoverState();\n }\n return didNavigate;\n },\n [clearHoverState, guards, navigateWithGuards, setExpanded, setSearchQuery],\n );\n\n const { displayItems, activeIndex: layoutActiveIndex } = useDockLayout({\n dockItems,\n activeItem,\n pathname: effectivePathname,\n });\n\n useDockRouteReset(pathname, () => {\n setExpanded(false);\n setSearchQuery(\"\");\n setIsHovered(false);\n });\n\n return {\n dockItems: displayItems,\n activeItem,\n activeIndex: layoutActiveIndex,\n statusState,\n attention,\n topology,\n dockTransaction: activeTransaction,\n lastDockTransaction: lastTransaction,\n navigate,\n locationKey,\n pathname,\n cancelDock,\n closeSurface,\n expanded: isExpanded,\n setExpanded,\n setDockHeight,\n setSearchQuery,\n isHovered,\n setIsHovered,\n searchQuery,\n activeItemHasAction,\n isHudActive: isHudModeActive,\n };\n}\n\nexport function useDockExpansion() {\n const [expanded, setExpandedState] = useState(false);\n\n const setExpanded = useCallback(\n (nextValue: boolean | ((prev: boolean) => boolean)) =>\n setExpandedState((prev) =>\n Boolean(typeof nextValue === \"function\" ? nextValue(prev) : nextValue),\n ),\n [],\n );\n const collapse = useCallback(() => setExpandedState(false), []);\n const expand = useCallback(() => setExpandedState(true), []);\n const toggle = useCallback(() => setExpandedState((prev) => !prev), []);\n\n const actions = useMemo(\n () => ({ collapse, expand, setExpanded, toggle }),\n [collapse, expand, setExpanded, toggle],\n );\n\n return { actions, expanded };\n}\n\nexport function useDockOperationState() {\n const [operationState, dispatchOperation] = useReducer(\n dockOperationReducer,\n undefined,\n createDockOperationState,\n );\n const operationIdRef = useRef(0);\n const operationStateRef = useRef(operationState);\n useIsomorphicLayoutEffect(() => {\n operationStateRef.current = operationState;\n }, [operationState]);\n\n const start = useCallback((input: DockOperationInput = {}) => {\n const operation = createDockOperation({\n ...input,\n id: input.id ?? `dock-operation-${++operationIdRef.current}`,\n });\n if (!operation) return null;\n dispatchOperation({\n maxEntries: DOCK_OPERATION_MAX_ENTRIES,\n operation,\n type: DOCK_OPERATION_EVENTS.START,\n });\n return operation;\n }, []);\n\n const update = useCallback(\n (id: string | number, patch: Partial<DockOperationInput> = {}) => {\n if (id == null) return false;\n dispatchOperation({ id, patch, type: DOCK_OPERATION_EVENTS.UPDATE });\n return true;\n },\n [],\n );\n\n const complete = useCallback(\n (id: string | number, result: unknown = null) => {\n if (id == null) return false;\n dispatchOperation({ id, result, type: DOCK_OPERATION_EVENTS.COMPLETE });\n return true;\n },\n [],\n );\n\n const cancel = useCallback((id: string | number, result: unknown = null) => {\n if (id == null) return false;\n const operation = operationStateRef.current.entries.find(\n (entry) =>\n entry.id === String(id) &&\n entry.status === DOCK_OPERATION_STATUS.PENDING,\n );\n if (!operation) return false;\n if (typeof operation.onCancel === \"function\") {\n Promise.resolve(operation.onCancel(result)).catch((error) =>\n report(\"Dock operation cancellation\", error),\n );\n }\n dispatchOperation({ id, result, type: DOCK_OPERATION_EVENTS.CANCEL });\n return true;\n }, []);\n\n const clear = useCallback(\n (id: string | number | null = null) =>\n dispatchOperation({ id, type: DOCK_OPERATION_EVENTS.CLEAR }),\n [],\n );\n\n const operationActions = useMemo(\n () => ({ cancel, clear, complete, start, update }),\n [cancel, clear, complete, start, update],\n );\n\n const activeOperation = useMemo(\n () => resolveActiveDockOperation(operationState),\n [operationState],\n );\n const pendingCount = useMemo(\n () =>\n operationState.entries.filter(\n (o) => o.status === DOCK_OPERATION_STATUS.PENDING,\n ).length,\n [operationState.entries],\n );\n const operationHud = useMemo(\n () =>\n createDockOperationHud(activeOperation, {\n onCancel: cancel,\n pendingCount,\n }),\n [activeOperation, cancel, pendingCount],\n );\n\n return { activeOperation, operationActions, operationHud, operationState };\n}\n\nconst EMPTY_ROUTE_STATE: DockRouteSnapshot = Object.freeze({\n activeItem: null,\n locationKey: \"\",\n pathname: \"\",\n});\n\nexport function useDockRouteBridge() {\n const router = useRouter();\n const [routeState, setRouteState] =\n useState<DockRouteSnapshot>(EMPTY_ROUTE_STATE);\n const navigatorRef = useRef<DockActions[\"navigate\"] | null>(null);\n\n const navigate = useCallback<DockActions[\"navigate\"]>(\n async (href, options) => {\n if (navigatorRef.current) return navigatorRef.current(href, options);\n if (!href) return false;\n router.push(href);\n return true;\n },\n [router],\n );\n\n const viewBridge = useMemo<DockViewBridge>(\n () => ({\n publishRoute: (snapshot) =>\n setRouteState((current) =>\n current.activeItem === snapshot.activeItem &&\n current.locationKey === snapshot.locationKey &&\n current.pathname === snapshot.pathname\n ? current\n : snapshot,\n ),\n setNavigator: (next) => {\n navigatorRef.current = next;\n },\n }),\n [],\n );\n\n return { navigate, routeState, viewBridge };\n}\n\nexport function useDockModel() {\n const {\n activeItem,\n dockItems,\n setDockHeight,\n setIsHovered,\n setExpanded,\n activeIndex,\n isHudActive,\n expanded,\n locationKey,\n navigate,\n pathname,\n } = useDock();\n useDockViewConnection({ activeItem, locationKey, navigate, pathname });\n const isFullscreenStateActive = useIsFullscreenStateActive();\n const { contextActions, hud } = useDockSelector(\n (state) => ({\n contextActions: state.contextActions,\n hud: state.hud,\n }),\n (left, right) =>\n left.contextActions === right.contextActions && left.hud === right.hud,\n );\n const { clearHud } = useDockActions();\n const [isStackHovered, setIsStackHovered] = useState(false);\n const [focusedIndex, setFocusedIndex] = useState(-1);\n const isNotificationVisible = useDockNotificationVisible();\n const dockRef = useRef<HTMLDivElement>(null);\n const { portalTarget, stackWidth } = useDockViewport(activeItem);\n const clearHoverState = useCallback(() => {\n setIsStackHovered(false);\n setIsHovered(false);\n }, [setIsHovered]);\n const isSurfaceClosing =\n activeItem?.surfacePhase === DOCK_SURFACE_PHASE.COLLAPSING_BODY ||\n activeItem?.surfacePhase === DOCK_SURFACE_PHASE.RESTORING_HEADER;\n const isOverlayActive = Boolean(activeItem?.isOverlay && !isSurfaceClosing);\n const isBackdropVisible =\n !isFullscreenStateActive && (expanded || isOverlayActive);\n const { breadcrumbs } = useDockBreadcrumbs();\n const hasBreadcrumbs = Boolean(breadcrumbs && breadcrumbs.length > 1);\n const scene = resolveDockScene({\n expanded,\n hasBreadcrumbs,\n isHudActive,\n isNotificationVisible,\n isOverlayActive,\n });\n const isBreadcrumbsCardVisible = scene.companion === \"breadcrumbs\";\n const isSubCardVisible = scene.isCompanionVisible;\n const isExtensionsVisible = useIsSurfaceExtensionsVisible(activeItem);\n const contentKey = activeItem?.isSurface\n ? `surface:${activeItem.surfaceId ?? activeItem.path ?? \"active\"}`\n : isHudActive\n ? `hud:${hud?.id || \"active\"}`\n : `route:${activeItem?.path || activeItem?.name || \"default\"}`;\n const { containerHeight, handleContentHeightChange } =\n useDockHeightController({\n contentKey,\n isHud: isHudActive,\n setDockHeight,\n surfacePhase: activeItem?.surfacePhase,\n });\n const [stackSize, setStackSize] = useState({\n width: stackWidth,\n height: containerHeight,\n resizeDistance: 0,\n });\n if (stackSize.width !== stackWidth || stackSize.height !== containerHeight) {\n setStackSize({\n width: stackWidth,\n height: containerHeight,\n resizeDistance: Math.hypot(\n stackWidth - stackSize.width,\n containerHeight - stackSize.height,\n ),\n });\n }\n const surfaceResizeDistance = stackSize.resizeDistance;\n const handleOutsideDismiss = useCallback(() => {\n if (activeItem?.isSurface) {\n if (activeItem.dismissible === false) return;\n if (typeof activeItem.closeAllSurfaces === \"function\") {\n activeItem.closeAllSurfaces();\n return;\n }\n if (typeof activeItem.closeSurface === \"function\") {\n activeItem.closeSurface();\n return;\n }\n }\n if (isOverlayActive) return;\n setExpanded(false);\n }, [activeItem, isOverlayActive, setExpanded]);\n useDockKeyboard({\n expanded,\n focusedIndex,\n isOverlayActive,\n navigate,\n dockItems,\n setExpanded,\n setFocusedIndex,\n });\n useClickOutside(dockRef, handleOutsideDismiss);\n useEffect(() => {\n queueMicrotask(() => {\n clearHoverState();\n setFocusedIndex(expanded ? activeIndex : -1);\n });\n }, [activeIndex, clearHoverState, expanded]);\n useEffect(() => {\n if (!isFullscreenStateActive) return;\n queueMicrotask(() => {\n setExpanded(false);\n clearHoverState();\n });\n }, [clearHoverState, isFullscreenStateActive, setExpanded]);\n const isNotFound = Boolean(\n activeItem?.isNotFound ||\n activeItem?.path === \"not-found\" ||\n activeItem?.type === \"NOT_FOUND\",\n );\n const isStatusActive = Boolean(activeItem?.isStatus || isNotFound);\n const statusStyle =\n isStatusActive && !isNotFound ? activeItem?.style || null : null;\n const visibleDockItems = dockItems;\n const positionedDockItems = visibleDockItems\n .map((item, index) => ({\n item,\n key: getItemKey(item, index),\n position: index,\n }))\n .sort((left, right) => left.key.localeCompare(right.key));\n const dockCardProps = positionedDockItems.map(({ item, key, position }) => {\n const isTop = position === 0;\n const isActive = getIsItemActive(item, activeItem);\n const canTopCardPreview = !isStatusActive;\n\n const handleMouseEnter = () => {\n if (expanded) setFocusedIndex(position);\n if (!isTop || !canTopCardPreview) return;\n setIsStackHovered(true);\n setIsHovered(true);\n };\n\n const handleMouseLeave = () => {\n if (expanded) setFocusedIndex(-1);\n if (!isTop || !canTopCardPreview) return;\n setIsStackHovered(false);\n setIsHovered(false);\n };\n\n const handleClick = () => {\n if (item.isOverlay || isStatusActive || item.isStatus) return;\n if (!expanded) {\n clearHoverState();\n setExpanded(true);\n return;\n }\n const targetPath = item.targetPath || item.path;\n if (targetPath)\n navigate(targetPath, {\n item,\n });\n };\n\n return {\n key,\n item,\n link: item,\n activeItem,\n expanded,\n position,\n isTop,\n isActive,\n isStackHovered,\n hasExtensions: isExtensionsVisible,\n isSurfaceActive: Boolean(\n activeItem?.isSurface &&\n activeItem?.surfacePhase !== DOCK_SURFACE_PHASE.RESTORING_HEADER,\n ),\n statusStyle,\n isStatusActive,\n isHudActive,\n hud,\n clearHud,\n contextCommands: contextActions,\n onMouseEnter: handleMouseEnter,\n onMouseLeave: handleMouseLeave,\n onClick: handleClick,\n onContentHeightChange: isTop ? handleContentHeightChange : null,\n };\n });\n const dockMotion = useDockMotion();\n const dockStackTransition = useMemo(\n () =>\n getDockStackTransition(dockMotion, {\n expanded,\n resizeDistance: surfaceResizeDistance,\n surfacePhase: activeItem?.surfacePhase ?? null,\n }),\n [activeItem?.surfacePhase, dockMotion, expanded, surfaceResizeDistance],\n );\n\n return {\n activeItem,\n dockItems,\n expanded,\n navigate,\n isFullscreenStateActive,\n dockRef,\n portalTarget,\n stackWidth,\n isOverlayActive,\n isBackdropVisible,\n isBreadcrumbsCardVisible,\n isSubCardVisible,\n isExtensionsVisible,\n containerHeight,\n dockCardProps,\n dockStackTransition,\n };\n}\n","\"use client\";\n\nimport {\n memo,\n cloneElement,\n createElement,\n isValidElement,\n Suspense,\n useMemo,\n type ComponentType,\n type ReactElement,\n type ReactNode,\n type ReactPortal,\n} from \"react\";\nimport { motion, AnimatePresence } from \"motion/react\";\nimport { cn, isImageIconSource } from \"@/utils\";\nimport { Tooltip, Button, Icon, Icon as Iconify, Spinner } from \"@/atoms\";\nimport Link from \"next/link\";\nimport { useRouter } from \"next/navigation\";\nimport { createPortal } from \"react-dom\";\nimport { useSurfaceAction, SurfaceItemContext } from \"./surface/context\";\nimport {\n useDockSurfaceExtension,\n useDockSurfaceExtensionsBarModel,\n DockSurfaceHeaderRadiusContext,\n useDockSurfaceHeaderButtonModel,\n useDockSurfaceControlsModel,\n useDockSurfaceShellModel,\n} from \"./surface/hooks\";\nimport {\n DOCK_COMPOSITOR_STYLE,\n DOCK_SURFACE_DRAG_CONSTRAINTS,\n DOCK_UNSEEN_EXIT,\n dockSurfaceDragTransformTemplate,\n getDockActionMotionProps,\n getDockBackdropTransition,\n getDockCardContentAnimateProps,\n getDockItemAnimateValues,\n getDockItemExitValues,\n getDockItemTransition,\n getDockMediaVolumeFillTransition,\n getDockMediaVolumeThumbAnimateProps,\n getDockMediaVolumeThumbPositionTransition,\n getDockStackAnimateProps,\n getDockStackTransformTransition,\n useDockMotion,\n} from \"./motion\";\nimport {\n DockCardBannerProps,\n DockSurfaceShellProps,\n DockCardItemProps,\n type DockActionDescriptor,\n type DockItem,\n type DockBadgeState,\n type DockDescriptionProps,\n type DockTitleProps,\n type DockIconOverlayProps,\n type DockIconProps,\n type DockCardHeaderProps,\n type NormalizedSurfaceExtension,\n type DockHudDescriptor,\n type DockIconSource,\n type DockItemSurfaceFields,\n type StandardItemContentProps,\n type BreadcrumbItem,\n type ErrorActionsProps,\n type GuardActionsProps,\n type DockTheme,\n} from \"./types\";\nimport {\n useDockCardBannerModel,\n useDockCommandBarModel,\n stopAndPrevent,\n useDockCardHeaderModel,\n useDockMediaScrubberModel,\n stopPropagationOnly,\n useStandardItemContentModel,\n useDockCardItemModel,\n useDockMediaControlsModel,\n type DockActionSlot,\n} from \"./cards\";\nimport { type DockCommandEntry } from \"./runtime/commands\";\nimport {\n getLineClampStyle,\n splitStyle,\n getImageIconStyle,\n} from \"./styles\";\nimport {\n useDockActionClass,\n useDockTheme,\n} from \"./hooks\";\nimport { useDockActions } from \"./context\";\nimport { isValidComponentType, formatMediaTime } from \"./helpers\";\nimport {\n DOCK_HUD_RENDER_MODE,\n DOCK_CARD_LAYOUT,\n DOCK_SURFACE_PHASE,\n} from \"./constants\";\nimport { useDockHudViewModel } from \"./hud\";\nimport { useDockBreadcrumbsCardModel } from \"./routing/breadcrumbs\";\nimport { useDockModel } from \"./runtime/dock\";\n\nexport const DockCardBanner = memo(function DockCardBanner({\n banner,\n bannerUrl,\n bannerPosition,\n bannerSize,\n bannerRepeat,\n bannerOpacity,\n isActive = true,\n isSurfaceActive = false,\n isHudActive = false,\n isStatusActive = false,\n style,\n className,\n}: DockCardBannerProps) {\n const dockMotion = useDockMotion();\n const theme = useDockTheme();\n const { bannerObj, rawUrl, isValid } = useDockCardBannerModel({\n banner,\n bannerUrl,\n bannerPosition,\n bannerSize,\n bannerRepeat,\n bannerOpacity,\n isActive,\n isSurfaceActive,\n isHudActive,\n isStatusActive,\n style,\n className,\n });\n if (!isValid) return null;\n const isVisible = Boolean(\n isActive && !isSurfaceActive && !isHudActive && !isStatusActive,\n );\n const resolvedPosition =\n bannerPosition ||\n bannerObj?.position ||\n bannerObj?.bannerPosition ||\n \"center 45%\";\n const resolvedSize =\n bannerSize || bannerObj?.size || bannerObj?.bannerSize || \"cover\";\n const resolvedRepeat =\n bannerRepeat || bannerObj?.repeat || bannerObj?.bannerRepeat || \"no-repeat\";\n const resolvedOpacity =\n bannerOpacity ?? bannerObj?.opacity ?? bannerObj?.bannerOpacity ?? 0.95;\n return (\n <motion.div\n aria-hidden=\"true\"\n initial={false}\n animate={{\n opacity: isVisible ? 1 : 0,\n }}\n transition={dockMotion.transitions.fade}\n style={{ ...DOCK_COMPOSITOR_STYLE, ...theme.styles.bannerRoot }}\n className={cn(\"dock-banner\", theme.slots.bannerRoot)}\n >\n <style>{`\n .dock-banner .dock-banner-sharp-mask {\n -webkit-mask-image: var(--dock-banner-mask-ltr);\n mask-image: var(--dock-banner-mask-ltr);\n }\n .dock-banner .dock-banner-sharp-mask {\n -webkit-mask-composite: source-in;\n mask-composite: intersect;\n }\n .dock-banner .dock-banner-scrim {\n background: var(--dock-banner-scrim-ltr);\n }\n :dir(rtl) .dock-banner .dock-banner-sharp-mask {\n -webkit-mask-image: var(--dock-banner-mask-rtl);\n mask-image: var(--dock-banner-mask-rtl);\n }\n :dir(rtl) .dock-banner .dock-banner-scrim {\n background: var(--dock-banner-scrim-rtl);\n }\n `}</style>\n <div\n className={cn(\n \"dock-banner-sharp-mask\",\n theme.slots.bannerSharpImage,\n className,\n )}\n style={{\n backgroundImage: `url(\"${rawUrl}\")`,\n backgroundPosition: resolvedPosition,\n backgroundSize: resolvedSize,\n backgroundRepeat: resolvedRepeat,\n opacity: resolvedOpacity,\n ...style,\n ...theme.styles.bannerSharpImage,\n }}\n />\n <div\n className={cn(\"dock-banner-scrim\", theme.slots.bannerScrim)}\n aria-hidden=\"true\"\n style={theme.styles.bannerScrim}\n />\n </motion.div>\n );\n});\n\nconst DockCommand = memo(function DockCommand({\n action,\n hasBanner,\n}: {\n action: DockCommandEntry;\n hasBanner: boolean;\n}) {\n const dockMotion = useDockMotion();\n const theme = useDockTheme();\n return (\n <Tooltip\n className={theme.slots.commandTooltip}\n text={action.tooltip ?? undefined}\n >\n <motion.button\n {...getDockActionMotionProps(dockMotion, { disabled: action.disabled })}\n data-banner={hasBanner}\n className={theme.slots.command}\n onClick={(event) => {\n event.stopPropagation();\n action.onClick?.(event);\n }}\n type=\"button\"\n disabled={action.disabled}\n aria-label={action.tooltip ?? undefined}\n >\n {renderIconNode(action.icon, 16)}\n\n <AnimatePresence mode=\"popLayout\">\n {action.badge && (\n <motion.span\n key={action.badge}\n variants={dockMotion.variants.badge}\n initial=\"hidden\"\n animate=\"visible\"\n exit=\"exit\"\n transition={dockMotion.transitions.badge}\n className={theme.slots.commandBadge}\n >\n {action.badge}\n </motion.span>\n )}\n </AnimatePresence>\n </motion.button>\n </Tooltip>\n );\n});\n\nexport const DockCommandBar = memo(function DockCommandBar({\n activeItem,\n contextCommands = [],\n hasBanner = false,\n}: {\n activeItem?: DockItem | null;\n contextCommands?: DockActionDescriptor[];\n hasBanner?: boolean;\n}) {\n const dockMotion = useDockMotion();\n const { actions, currentPath, isExiting, handleExitComplete } =\n useDockCommandBarModel({ activeItem, contextCommands, hasBanner });\n const theme = useDockTheme();\n if (actions.length === 0 && !isExiting) return null;\n return (\n <div className={theme.slots.commandBar}>\n <AnimatePresence mode=\"popLayout\" onExitComplete={handleExitComplete}>\n {actions.map((action, index) => (\n <motion.div\n key={`${currentPath}-${action.key || action.icon || `dock-action-${index}`}`}\n variants={dockMotion.variants.commandBar}\n style={{ ...DOCK_COMPOSITOR_STYLE, willChange: \"transform\" }}\n custom={index}\n initial=\"hidden\"\n animate=\"visible\"\n exit=\"exit\"\n >\n <DockCommand action={action} hasBanner={hasBanner} />\n </motion.div>\n ))}\n </AnimatePresence>\n </div>\n );\n});\n\nexport const DockDescription = memo(function DockDescription({\n text,\n style,\n maxLines = 1,\n animated = true,\n}: DockDescriptionProps) {\n const dockMotion = useDockMotion();\n const theme = useDockTheme();\n if (text == null || text === \"\") return null;\n\n const { className, inlineStyle } = splitStyle(style);\n const { opacity = 0.7, ...restStyle } = inlineStyle;\n const isMultiline = Number(maxLines) > 1;\n const targetOpacity = typeof opacity === \"number\" ? opacity : 0.7;\n const sharedClass = cn(theme.slots.descriptionText, className);\n const sharedStyle = {\n opacity: targetOpacity,\n ...getLineClampStyle(maxLines, restStyle),\n };\n\n if (!animated) {\n return (\n <div className={theme.slots.description}>\n <p\n className={sharedClass}\n data-multiline={isMultiline}\n style={sharedStyle}\n >\n {text}\n </p>\n </div>\n );\n }\n\n return (\n <div className={theme.slots.description}>\n <AnimatePresence mode=\"popLayout\" initial={false}>\n <motion.p\n key={\n typeof text === \"string\" || typeof text === \"number\" ? text : \"desc\"\n }\n variants={dockMotion.variants.description(targetOpacity)}\n initial=\"hidden\"\n animate=\"visible\"\n exit=\"exit\"\n transition={dockMotion.transitions.text}\n className={sharedClass}\n data-multiline={isMultiline}\n style={sharedStyle}\n >\n {text}\n </motion.p>\n </AnimatePresence>\n </div>\n );\n});\n\nexport const DockTitle = memo(function DockTitle({\n text,\n style,\n animated = true,\n}: DockTitleProps) {\n const dockMotion = useDockMotion();\n const theme = useDockTheme();\n const { className, inlineStyle } = splitStyle(style);\n const sharedClass = cn(theme.slots.title, className);\n\n if (!animated) {\n return (\n <div className={theme.slots.titleWrap}>\n <h3 className={sharedClass} style={inlineStyle}>\n {text}\n </h3>\n </div>\n );\n }\n\n return (\n <div className={theme.slots.titleWrap}>\n <AnimatePresence mode=\"popLayout\" initial={false}>\n <motion.h3\n key={\n typeof text === \"string\" || typeof text === \"number\"\n ? text\n : \"title\"\n }\n className={sharedClass}\n variants={dockMotion.variants.fade}\n initial=\"hidden\"\n animate=\"visible\"\n exit=\"exit\"\n transition={dockMotion.transitions.text}\n style={inlineStyle}\n >\n {text}\n </motion.h3>\n </AnimatePresence>\n </div>\n );\n});\n\nexport const Badge = memo(function Badge({\n badge,\n}: {\n badge?: DockBadgeState;\n}) {\n const dockMotion = useDockMotion();\n const theme = useDockTheme();\n return (\n <AnimatePresence mode=\"wait\">\n {badge?.visible ? (\n <motion.div\n key={badge.value}\n variants={dockMotion.variants.badge}\n initial=\"hidden\"\n animate=\"visible\"\n exit=\"exit\"\n transition={dockMotion.transitions.badge}\n className={theme.slots.iconBadge}\n style={theme.styles.iconBadge}\n >\n {badge.value}\n </motion.div>\n ) : null}\n </AnimatePresence>\n );\n});\n\nconst DockIconOverlay = memo(function DockIconOverlay({\n overlay,\n}: DockIconOverlayProps) {\n const dockMotion = useDockMotion();\n const theme = useDockTheme();\n if (!overlay?.icon) return null;\n const { icon, onClick, title = \"\" } = overlay;\n\n const isInteractive = typeof onClick === \"function\";\n const content = isImageIconSource(icon) ? (\n <span\n className={theme.slots.iconOverlayImage}\n style={{ backgroundImage: `url(${icon})` }}\n />\n ) : (\n <span className={theme.slots.iconOverlayGlyph}>\n {renderIconNode(icon, 12)}\n </span>\n );\n\n return (\n <AnimatePresence mode=\"popLayout\">\n {isInteractive ? (\n <motion.button\n key={typeof icon === \"string\" ? icon : \"icon-node\"}\n type=\"button\"\n onClick={(event) => {\n stopAndPrevent(event);\n onClick?.(event);\n }}\n title={title || undefined}\n aria-label={title || \"Action\"}\n variants={dockMotion.variants.badge}\n initial=\"hidden\"\n animate=\"visible\"\n exit=\"exit\"\n transition={dockMotion.transitions.badge}\n data-interactive={isInteractive}\n className={theme.slots.iconOverlay}\n style={theme.styles.iconOverlay}\n >\n {content}\n </motion.button>\n ) : (\n <motion.div\n key={typeof icon === \"string\" ? icon : \"icon-node\"}\n title={title || undefined}\n aria-label={title || undefined}\n variants={dockMotion.variants.badge}\n initial=\"hidden\"\n animate=\"visible\"\n exit=\"exit\"\n transition={dockMotion.transitions.badge}\n data-interactive={isInteractive}\n className={theme.slots.iconOverlay}\n style={theme.styles.iconOverlay}\n >\n {content}\n </motion.div>\n )}\n </AnimatePresence>\n );\n});\n\nexport const DockIcon = memo(function DockIcon({\n icon,\n iconOverlay = null,\n style,\n onClick = null,\n ariaLabel = undefined,\n animated = true,\n}: DockIconProps) {\n const dockMotion = useDockMotion();\n const theme = useDockTheme();\n const { className, inlineStyle } = splitStyle(style);\n const { size = 24, ...iconStyle } = inlineStyle;\n\n const iconKey = typeof icon === \"string\" ? icon : \"icon-node\";\n const iconContent =\n typeof icon === \"string\" && isImageIconSource(icon) ? (\n <div\n className={cn(theme.slots.iconImage, className)}\n style={{ ...getImageIconStyle(iconStyle, icon) }}\n />\n ) : (\n <div className={cn(theme.slots.iconGlyph, className)} style={iconStyle}>\n <span className={theme.slots.iconGlyphInner}>\n {renderIconNode(icon, size)}\n </span>\n </div>\n );\n\n const iconElement = animated ? (\n <AnimatePresence mode=\"popLayout\" initial={false}>\n <motion.div\n key={iconKey}\n variants={dockMotion.variants.icon}\n initial=\"hidden\"\n animate=\"visible\"\n exit=\"exit\"\n transition={dockMotion.transitions.icon}\n className={theme.slots.iconMotion}\n >\n {iconContent}\n </motion.div>\n </AnimatePresence>\n ) : (\n <div className={theme.slots.iconMotion}>{iconContent}</div>\n );\n\n return (\n <div className={theme.slots.icon}>\n {typeof onClick === \"function\" ? (\n <motion.button\n {...getDockActionMotionProps(dockMotion)}\n type=\"button\"\n className={theme.slots.iconButton}\n onClick={onClick}\n aria-label={ariaLabel || \"Open\"}\n >\n {iconElement}\n </motion.button>\n ) : (\n iconElement\n )}\n <DockIconOverlay overlay={iconOverlay} />\n </div>\n );\n});\n\nexport const DockCardHeader = memo(function DockCardHeader({\n item: propItem,\n link,\n activeItem = null,\n itemStyle,\n badge,\n showVideoIcon = false,\n isPlaying = false,\n effectiveIconOverlay = null,\n isIconInteractive = false,\n handleIconClick,\n description,\n isTop = false,\n contextCommands = [],\n}: DockCardHeaderProps) {\n const dockMotion = useDockMotion();\n const { item, hasBanner, headerKey } = useDockCardHeaderModel({\n item: propItem,\n link,\n activeItem,\n itemStyle,\n badge,\n showVideoIcon,\n isPlaying,\n effectiveIconOverlay,\n isIconInteractive,\n handleIconClick,\n description,\n isTop,\n contextCommands,\n });\n const theme = useDockTheme();\n return (\n <div className={theme.slots.header}>\n <AnimatePresence mode=\"popLayout\" initial={false}>\n <motion.div\n key={headerKey}\n variants={dockMotion.variants.headerSwap}\n initial=\"hidden\"\n animate=\"visible\"\n exit=\"exit\"\n transition={dockMotion.transitions.headerSwap}\n className={theme.slots.headerRow}\n style={{ ...DOCK_COMPOSITOR_STYLE, willChange: \"transform\" }}\n >\n <div className={theme.slots.headerIcon}>\n {item.icon ? (\n <DockIcon\n animated={false}\n icon={\n showVideoIcon\n ? isPlaying\n ? \"mdi:pause\"\n : \"mdi:play\"\n : item.icon\n }\n iconOverlay={effectiveIconOverlay}\n style={itemStyle.icon}\n onClick={isIconInteractive ? handleIconClick : null}\n ariaLabel={\n isIconInteractive\n ? showVideoIcon\n ? isPlaying\n ? \"Pause\"\n : \"Play\"\n : \"Open\"\n : undefined\n }\n />\n ) : (\n <div className={theme.slots.headerIconEmpty} />\n )}\n {!showVideoIcon && !effectiveIconOverlay && <Badge badge={badge} />}\n </div>\n\n <div className={theme.slots.headerBody}>\n <div className={theme.slots.headerText}>\n <div className={theme.slots.headerTitleRow}>\n <DockTitle\n animated={false}\n text={item.title || item.name}\n style={{\n ...itemStyle.title,\n className: cn(\n itemStyle.title?.className,\n theme.slots.headerTitle,\n ),\n }}\n />\n </div>\n {Boolean(description) && (\n <DockDescription\n animated={false}\n text={description}\n style={itemStyle.description}\n />\n )}\n </div>\n {isTop && !item.isStatus ? (\n <DockCommandBar\n activeItem={activeItem || item}\n contextCommands={contextCommands}\n hasBanner={hasBanner}\n />\n ) : null}\n </div>\n </motion.div>\n </AnimatePresence>\n </div>\n );\n});\n\nexport function DockSurfaceAction({ children }: { children: ReactNode }) {\n useSurfaceAction(children);\n return null;\n}\n\nexport function DockSurfaceExtension(props: {\n align?: string;\n children?: ReactNode;\n className?: string;\n id?: string;\n order?: number;\n unstyled?: boolean;\n}) {\n useDockSurfaceExtension(props);\n return null;\n}\n\nfunction renderIconNode(icon: DockIconSource, size: number): ReactNode {\n return typeof icon === \"string\" ? <Icon icon={icon} size={size} /> : icon;\n}\n\nfunction renderActionSlot(slot: DockActionSlot): ReactNode {\n if (!slot) return null;\n if (slot.kind === \"media\") return <DockMediaControls />;\n const { action } = slot;\n if (isValidElement(action)) return action;\n const ActionComponent = action as ComponentType;\n return <ActionComponent />;\n}\n\nfunction ExtensionPill({\n ext,\n fill = false,\n}: {\n ext: NormalizedSurfaceExtension;\n fill?: boolean;\n}) {\n const theme = useDockTheme();\n const Component = ext.component;\n const content = Component ? (\n isValidComponentType(Component) ? (\n <Component {...ext.props} />\n ) : null\n ) : (\n ext.content\n );\n if (ext.unstyled)\n return (\n <div\n data-fill={fill}\n className={cn(theme.slots.extensionBare, ext.className)}\n onClick={(e) => e.stopPropagation()}\n >\n {content}\n </div>\n );\n return (\n <div\n data-fill={fill}\n className={cn(theme.slots.extensionPill, ext.className)}\n onClick={(e) => e.stopPropagation()}\n >\n {content}\n </div>\n );\n}\n\nexport const DockSurfaceExtensionsBar = memo(function DockSurfaceExtensionsBar({\n activeItem,\n}: {\n activeItem?: DockItem | null;\n}) {\n const { allExtensions } = useDockSurfaceExtensionsBarModel({ activeItem });\n const theme = useDockTheme();\n if (!allExtensions.length) return null;\n const leftExtensions = allExtensions.filter((e) => e.align === \"left\");\n const centerExtensions = allExtensions.filter((e) => e.align === \"center\");\n const rightExtensions = allExtensions.filter((e) => e.align === \"right\");\n const hasCenter = centerExtensions.length > 0;\n return (\n <div\n className={theme.slots.extensions}\n onClick={(e) => e.stopPropagation()}\n >\n <div\n data-fill={\n !hasCenter &&\n leftExtensions.length === 1 &&\n rightExtensions.length === 0\n }\n className={theme.slots.extensionsLeft}\n style={theme.styles.extensionsLeft}\n >\n {leftExtensions.map((ext) => (\n <ExtensionPill\n key={ext.id}\n ext={ext}\n fill={!hasCenter && leftExtensions.length === 1}\n />\n ))}\n </div>\n {hasCenter && (\n <div\n className={theme.slots.extensionsCenterLayer}\n style={theme.styles.extensionsCenterLayer}\n >\n <div\n data-fill={\n leftExtensions.length === 0 &&\n rightExtensions.length === 0 &&\n centerExtensions.length === 1\n }\n className={theme.slots.extensionsCenter}\n >\n {centerExtensions.map((ext) => (\n <ExtensionPill\n key={ext.id}\n ext={ext}\n fill={\n leftExtensions.length === 0 &&\n rightExtensions.length === 0 &&\n centerExtensions.length === 1\n }\n />\n ))}\n </div>\n </div>\n )}\n <div\n className={theme.slots.extensionsRight}\n style={theme.styles.extensionsRight}\n >\n {rightExtensions.map((ext) => (\n <ExtensionPill key={ext.id} ext={ext} />\n ))}\n </div>\n </div>\n );\n});\n\nexport const DockMediaScrubber = memo(function DockMediaScrubber({\n className = \"\",\n showTimeOnHover = true,\n}: {\n className?: string;\n showTimeOnHover?: boolean;\n}) {\n const dockMotion = useDockMotion();\n const {\n hasMedia,\n videoElement,\n currentTime,\n duration,\n isHovered,\n setIsHovered,\n hoverTime,\n smoothHoverX,\n scrubberRef,\n progressBarRef,\n handleSeek,\n handleKeyDown,\n handleMouseMove,\n } = useDockMediaScrubberModel({ className, showTimeOnHover });\n const theme = useDockTheme();\n if (!hasMedia || !videoElement) return null;\n return (\n <div\n ref={scrubberRef}\n role=\"slider\"\n aria-label=\"Media playback scrubber\"\n aria-valuemin={0}\n aria-valuemax={Math.round(duration)}\n aria-valuenow={Math.round(currentTime)}\n aria-valuetext={`${formatMediaTime(currentTime)} of ${formatMediaTime(duration)}`}\n tabIndex={0}\n className={cn(theme.slots.scrubber, className)}\n style={theme.styles.scrubber}\n onMouseEnter={() => setIsHovered(true)}\n onMouseLeave={() => setIsHovered(false)}\n onMouseMove={handleMouseMove}\n onKeyDown={handleKeyDown}\n onClick={(e) => {\n e.stopPropagation();\n handleSeek(e);\n }}\n >\n <div className={theme.slots.scrubberTrack}>\n <div\n ref={progressBarRef}\n className={theme.slots.scrubberProgress}\n style={{ transform: \"scaleX(0)\" }}\n />\n </div>\n\n <AnimatePresence>\n {isHovered && showTimeOnHover && duration > 0 && (\n <motion.div\n variants={dockMotion.variants.scrubberTooltip}\n initial=\"hidden\"\n animate=\"visible\"\n exit=\"exit\"\n transition={dockMotion.transitions.scrubberTooltip}\n className={theme.slots.scrubberTooltip}\n style={{ left: smoothHoverX }}\n >\n {formatMediaTime(hoverTime)}\n </motion.div>\n )}\n </AnimatePresence>\n </div>\n );\n});\n\nexport const DockHudView = memo(function DockHudView({\n clearHud,\n hud,\n pathname,\n}: {\n clearHud?: ((id?: string) => void) | null;\n hud: DockHudDescriptor | null;\n pathname?: string | null;\n}) {\n const { dismiss } = useDockHudViewModel({ clearHud, hud, pathname });\n if (!hud?.isActive) return null;\n if (\n hud.renderMode === DOCK_HUD_RENDER_MODE.COMPONENT &&\n isValidComponentType(hud.component)\n ) {\n const Component = hud.component;\n return <Component {...hud.props} onDismiss={dismiss} />;\n }\n return hud.content ?? null;\n});\n\nconst ROUNDED_CLASS_PATTERN = /\\brounded(?:-[a-zA-Z0-9_-]+)?\\b/g;\n\nfunction getControlRadiusClass(\n slots: DockTheme[\"slots\"],\n key: string,\n activeKeys: string[],\n): string {\n if (activeKeys.length <= 1) return slots.controlRadiusSingle;\n const index = activeKeys.indexOf(key);\n if (index === 0) return slots.controlRadiusFirst;\n if (index === activeKeys.length - 1) return slots.controlRadiusLast;\n return slots.controlRadiusMiddle;\n}\n\nfunction applyControlRadius(className: unknown, radiusClass: string): string {\n if (typeof className !== \"string\" || !className) return radiusClass;\n const stripped = className\n .replace(ROUNDED_CLASS_PATTERN, \"\")\n .replace(/\\s+/g, \" \")\n .trim();\n return [stripped, radiusClass].filter(Boolean).join(\" \");\n}\n\nexport function DockSurfaceHeaderButton({\n children,\n className = \"\",\n disabled = false,\n onClick,\n ariaLabel,\n icon = null,\n}: {\n children?: ReactNode;\n className?: string;\n disabled?: boolean;\n onClick?: (event: React.MouseEvent) => void;\n ariaLabel?: string;\n icon?: DockIconSource;\n}) {\n const { contextRadius } = useDockSurfaceHeaderButtonModel({\n children,\n className,\n disabled,\n onClick,\n ariaLabel,\n icon,\n });\n const theme = useDockTheme();\n const radiusClass = contextRadius ?? theme.slots.controlRadiusSingle;\n const isText = Boolean(children);\n return (\n <Button\n type=\"button\"\n onClick={(e: React.MouseEvent) => {\n e.stopPropagation();\n onClick?.(e);\n }}\n disabled={disabled}\n aria-label={\n ariaLabel || (typeof children === \"string\" ? children : undefined)\n }\n data-text={isText}\n className={cn(theme.slots.controlHeaderButton, radiusClass, className)}\n style={theme.styles.controlHeaderButton}\n >\n {icon &&\n (typeof icon === \"string\" ? <Icon icon={icon} size={16} /> : icon)}\n {children}\n </Button>\n );\n}\n\nexport const DockSurfaceControls = memo(function DockSurfaceControls({\n activeItem = null,\n hasExtensions = false,\n onClose = null,\n onBack = null,\n closeLabel = null,\n backLabel = null,\n className = \"\",\n surfacePhase: propSurfacePhase,\n}: {\n activeItem?: DockItem | null;\n hasExtensions?: boolean;\n onClose?: (() => void) | null;\n onBack?: (() => void) | null;\n closeLabel?: string | null;\n backLabel?: string | null;\n className?: string;\n surfacePhase?: string;\n}) {\n const dockMotion = useDockMotion();\n const { isBodyVisible, dynamicAction } = useDockSurfaceControlsModel({\n activeItem,\n hasExtensions,\n onClose,\n onBack,\n closeLabel,\n backLabel,\n className,\n surfacePhase: propSurfacePhase,\n });\n const theme = useDockTheme();\n const radiusFor = (key: string) =>\n getControlRadiusClass(theme.slots, key, activeControlKeys);\n const headerActionSlot =\n dynamicAction ??\n activeItem?.headerAction ??\n activeItem?.surfaceHeaderAction ??\n null;\n const resolvedHeaderAction: ReactNode =\n typeof headerActionSlot === \"function\"\n ? createElement(headerActionSlot as ComponentType)\n : (headerActionSlot as ReactNode);\n const resolvedClose =\n onClose ||\n (activeItem?.dismissible !== false\n ? activeItem?.closeAllSurfaces || activeItem?.closeSurface\n : null);\n const resolvedBack = onBack || activeItem?.onBack;\n const resolvedCloseLabel =\n closeLabel || activeItem?.surfaceCloseLabel || \"Close surface\";\n const resolvedBackLabel =\n backLabel || activeItem?.surfaceBackLabel || \"Previous step\";\n const hasClose = typeof resolvedClose === \"function\";\n const hasBack = typeof resolvedBack === \"function\";\n const hasHeaderAction = Boolean(resolvedHeaderAction);\n const activeControlKeys = [\n hasHeaderAction && \"action\",\n hasBack && \"back\",\n hasClose && \"close\",\n ].filter(Boolean) as string[];\n const isControlsVisible = Boolean(\n isBodyVisible &&\n (activeItem ? activeItem.isSurface !== false : true) &&\n activeControlKeys.length > 0,\n );\n const targetY = hasExtensions\n ? DOCK_CARD_LAYOUT.extensionShelfY - DOCK_CARD_LAYOUT.collapsed.offsetY\n : 0;\n return (\n <AnimatePresence>\n {isControlsVisible && (\n <motion.div\n key=\"dock-surface-controls-container\"\n custom={targetY}\n variants={dockMotion.variants.controlsContainer}\n initial=\"hidden\"\n animate=\"visible\"\n exit=\"exit\"\n className={cn(theme.slots.controls, className)}\n style={theme.styles.controls}\n >\n <AnimatePresence initial={false}>\n {hasHeaderAction && (\n <motion.div\n key=\"dock-surface-custom-action\"\n variants={dockMotion.variants.controlsAction}\n initial=\"hidden\"\n animate=\"visible\"\n exit=\"exit\"\n className={cn(theme.slots.controlAction, radiusFor(\"action\"))}\n >\n <DockSurfaceHeaderRadiusContext value={radiusFor(\"action\")}>\n {isValidElement(resolvedHeaderAction)\n ? cloneElement(\n resolvedHeaderAction as ReactElement<{\n className?: string;\n }>,\n {\n className: applyControlRadius(\n (\n resolvedHeaderAction as ReactElement<{\n className?: string;\n }>\n ).props?.className,\n radiusFor(\"action\"),\n ),\n },\n )\n : resolvedHeaderAction}\n </DockSurfaceHeaderRadiusContext>\n </motion.div>\n )}\n {hasBack && (\n <motion.div\n key=\"dock-surface-back\"\n variants={dockMotion.variants.controlsBack}\n initial=\"hidden\"\n animate=\"visible\"\n exit=\"exit\"\n className={cn(theme.slots.controlBack, radiusFor(\"back\"))}\n >\n <Button\n type=\"button\"\n onClick={(e: React.MouseEvent) => {\n e.stopPropagation();\n resolvedBack();\n }}\n className={cn(theme.slots.controlButton, radiusFor(\"back\"))}\n aria-label={resolvedBackLabel}\n title={resolvedBackLabel}\n style={theme.styles.controlButton}\n >\n <Icon\n icon=\"solar:alt-arrow-left-bold\"\n size={16}\n className={theme.slots.controlBackIcon}\n />\n </Button>\n </motion.div>\n )}\n {hasClose && (\n <motion.div\n key=\"dock-surface-close\"\n layout=\"position\"\n variants={dockMotion.variants.controlsClose}\n initial=\"hidden\"\n animate=\"visible\"\n exit=\"exit\"\n className={cn(theme.slots.controlClose, radiusFor(\"close\"))}\n >\n <Button\n type=\"button\"\n onClick={(e: React.MouseEvent) => {\n e.stopPropagation();\n resolvedClose();\n }}\n className={cn(theme.slots.controlButton, radiusFor(\"close\"))}\n aria-label={resolvedCloseLabel}\n title={resolvedCloseLabel}\n style={theme.styles.controlButton}\n >\n <Icon icon=\"solar:close-bold\" size={16} />\n </Button>\n </motion.div>\n )}\n </AnimatePresence>\n </motion.div>\n )}\n </AnimatePresence>\n );\n});\n\nexport function DockSurfaceShell({\n ref,\n title = \"\",\n onClose = null,\n onBack = null,\n allowSwipeDismiss = true,\n closeLabel = \"Close surface\",\n backLabel = \"Previous step\",\n showControls = false,\n className = \"\",\n contentClassName = \"\",\n children,\n onAnimationComplete = null,\n isActive = true,\n surfaceId = null,\n surfacePhase = DOCK_SURFACE_PHASE.OPEN,\n surfaceWidth = null,\n}: DockSurfaceShellProps) {\n const dockMotion = useDockMotion();\n const {\n setSurfaceElementRef,\n titleId,\n dragY,\n dragOpacity,\n dragScale,\n handleDragEnd,\n dragControls,\n canDragDismiss,\n handleSurfacePointerDown,\n isBodyVisible,\n bodyVariants,\n surfaceItemValue,\n } = useDockSurfaceShellModel({\n ref,\n title,\n onClose,\n onBack,\n allowSwipeDismiss,\n closeLabel,\n backLabel,\n showControls,\n className,\n contentClassName,\n children,\n onAnimationComplete,\n isActive,\n surfaceId,\n surfacePhase,\n surfaceWidth,\n });\n const theme = useDockTheme();\n return (\n <SurfaceItemContext value={surfaceItemValue}>\n <motion.section\n ref={setSurfaceElementRef}\n role=\"dialog\"\n aria-modal=\"true\"\n aria-hidden={isActive ? undefined : true}\n aria-labelledby={titleId}\n inert={isActive ? undefined : true}\n tabIndex={-1}\n hidden={!isActive}\n className={cn(theme.slots.surfaceShell, className)}\n style={{\n WebkitBackfaceVisibility:\n DOCK_COMPOSITOR_STYLE.WebkitBackfaceVisibility,\n backfaceVisibility: DOCK_COMPOSITOR_STYLE.backfaceVisibility,\n WebkitFontSmoothing: DOCK_COMPOSITOR_STYLE.WebkitFontSmoothing,\n y: dragY,\n opacity: dragOpacity,\n scale: dragScale,\n }}\n transformTemplate={dockSurfaceDragTransformTemplate}\n drag={canDragDismiss ? \"y\" : false}\n dragControls={dragControls}\n dragListener={false}\n dragConstraints={DOCK_SURFACE_DRAG_CONSTRAINTS}\n dragElastic={dockMotion.drag.elastic}\n onPointerDown={handleSurfacePointerDown}\n onDragEnd={handleDragEnd}\n onAnimationComplete={onAnimationComplete ?? undefined}\n >\n {title && (\n <h2 id={titleId} className=\"sr-only\">\n {title}\n </h2>\n )}\n {showControls && (\n <DockSurfaceControls\n surfacePhase={surfacePhase}\n onClose={onClose}\n onBack={onBack}\n closeLabel={closeLabel}\n backLabel={backLabel}\n />\n )}\n <AnimatePresence mode=\"wait\">\n {isBodyVisible && (\n <motion.div\n key=\"surface-body-motion\"\n variants={bodyVariants}\n initial=\"hidden\"\n animate=\"visible\"\n exit=\"exit\"\n style={{ ...DOCK_COMPOSITOR_STYLE }}\n className={cn(theme.slots.surfaceBody, contentClassName)}\n >\n {children}\n </motion.div>\n )}\n </AnimatePresence>\n </motion.section>\n </SurfaceItemContext>\n );\n}\n\nexport const LoadingItemContent = memo(function LoadingItemContent() {\n const dockMotion = useDockMotion();\n const theme = useDockTheme();\n return (\n <div className={theme.slots.loading}>\n <div className={cn(theme.slots.loadingIcon, dockMotion.skeleton)} />\n <div className={theme.slots.loadingText}>\n <div\n className={cn(theme.slots.loadingTitle, dockMotion.skeleton)}\n />\n <div\n className={cn(\n theme.slots.loadingDescription,\n dockMotion.skeleton,\n )}\n />\n </div>\n </div>\n );\n});\n\nfunction DockSurfaceLoader() {\n return (\n <div className=\"flex min-h-[160px] w-full items-center justify-center p-8\">\n <Spinner size={28} />\n </div>\n );\n}\n\nfunction SurfaceStackItemContent({\n item: propItem,\n link,\n surface,\n isActive,\n}: {\n item?: DockItem;\n link?: DockItem;\n surface: DockItemSurfaceFields;\n isActive: boolean;\n}) {\n const theme = useDockTheme();\n const item = (propItem ?? link)!;\n const SurfaceComponent = surface.surfaceComponent;\n const surfaceContent = surface.surfaceContent;\n const title = surface.surfaceTitle ?? item.title ?? item.name ?? \"\";\n const closeLabel =\n surface.surfaceCloseLabel ?? item.closeLabel ?? \"Close surface\";\n const backLabel =\n surface.surfaceBackLabel ?? item.backLabel ?? \"Previous step\";\n\n const onClose =\n surface.dismissible === false\n ? null\n : surface.closeAllSurfaces || surface.closeSurface || item.onClose;\n const onBack =\n surface.onBack ||\n (surface.canGoBack ? surface.popStep || surface.closeSurface : null);\n\n return (\n <div\n aria-hidden={isActive ? undefined : true}\n hidden={!isActive}\n className={theme.slots.surfaceHost}\n inert={isActive ? undefined : true}\n onClick={stopPropagationOnly}\n >\n <div className={theme.slots.surfaceHostInner}>\n <DockSurfaceShell\n title={title}\n onClose={onClose}\n onBack={onBack}\n allowSwipeDismiss={surface.allowSwipeDismiss !== false}\n closeLabel={closeLabel}\n backLabel={backLabel}\n isActive={isActive}\n onAnimationComplete={surface.onAnimationComplete}\n surfaceId={surface.surfaceId}\n surfacePhase={surface.surfacePhase}\n surfaceWidth={surface.width}\n >\n {isValidComponentType(SurfaceComponent) ? (\n <Suspense fallback={<DockSurfaceLoader />}>\n <SurfaceComponent\n close={surface.closeSurface}\n closeAll={surface.closeAllSurfaces}\n pushStep={surface.pushStep}\n popStep={surface.popStep}\n goToStep={surface.goToStep}\n stepIndex={surface.stepIndex ?? 0}\n totalSteps={surface.totalSteps ?? 1}\n isFirstStep={surface.isFirstStep ?? true}\n isLastStep={surface.isLastStep ?? true}\n surfaceWidth={surface.width}\n {...surface.surfaceProps}\n />\n </Suspense>\n ) : (\n surfaceContent\n )}\n </DockSurfaceShell>\n </div>\n </div>\n );\n}\n\nexport function SurfaceItemContent({\n item: propItem,\n link,\n}: {\n item?: DockItem;\n link?: DockItem;\n}) {\n const item = (propItem ?? link)!;\n const surfaceStackEntries = item.surfaceStackEntries?.length\n ? item.surfaceStackEntries\n : [item];\n return (\n <>\n {surfaceStackEntries.map((surface) => (\n <SurfaceStackItemContent\n key={surface.surfaceId ?? \"dock-surface\"}\n item={item}\n surface={surface}\n isActive={surface.surfaceId === item.surfaceId}\n />\n ))}\n </>\n );\n}\n\nexport function StandardItemContent({\n item: propItem,\n link,\n activeItem = null,\n isTop = false,\n itemStyle,\n badge,\n isActive = false,\n footerNode,\n isActionDismissed = false,\n isHudActive = false,\n hud = null,\n clearHud = null,\n contextCommands = [],\n pathname,\n}: StandardItemContentProps) {\n const dockMotion = useDockMotion();\n // One element plays the action's whole life: arriving, dismissed in place\n // when a surface opens from it, and leaving when it goes.\n const actionVariants = useMemo(\n () => ({\n ...dockMotion.variants.textCrossfade,\n dismissed: dockMotion.variants.actionDismiss.exit,\n }),\n [dockMotion],\n );\n const {\n item,\n isPlaying,\n showVideoIcon,\n description,\n effectiveIconOverlay,\n isIconInteractive,\n handleIconClick,\n } = useStandardItemContentModel({\n item: propItem,\n link,\n activeItem,\n isTop,\n itemStyle,\n badge,\n isActive,\n footerNode,\n isHudActive,\n hud,\n clearHud,\n contextCommands,\n pathname,\n });\n const theme = useDockTheme();\n return (\n <AnimatePresence mode=\"wait\" initial={false}>\n {isTop && isHudActive ? (\n <motion.div\n key={`dock-hud:${hud?.id || \"active\"}`}\n variants={dockMotion.variants.hud}\n initial=\"hidden\"\n animate=\"visible\"\n exit=\"exit\"\n transition={dockMotion.transitions.hud}\n style={DOCK_COMPOSITOR_STYLE}\n className={theme.slots.cardHud}\n >\n <DockHudView\n clearHud={clearHud || undefined}\n hud={hud}\n pathname={pathname}\n />\n </motion.div>\n ) : (\n <motion.div\n key=\"dock-standard-content\"\n variants={dockMotion.variants.fade}\n initial={false}\n animate=\"visible\"\n exit=\"exit\"\n transition={dockMotion.transitions.text}\n style={{ ...DOCK_COMPOSITOR_STYLE, willChange: \"transform\" }}\n className={theme.slots.cardBody}\n >\n <DockCardHeader\n item={item}\n activeItem={activeItem}\n itemStyle={itemStyle}\n badge={badge}\n showVideoIcon={showVideoIcon}\n isPlaying={isPlaying}\n effectiveIconOverlay={effectiveIconOverlay}\n isIconInteractive={isIconInteractive}\n handleIconClick={handleIconClick}\n description={description}\n isTop={isTop}\n contextCommands={contextCommands}\n />\n <AnimatePresence mode=\"popLayout\" initial={false}>\n {footerNode ? (\n <motion.div\n key=\"dock-card-footer\"\n variants={actionVariants}\n initial=\"hidden\"\n animate={isActionDismissed ? \"dismissed\" : \"visible\"}\n exit=\"exit\"\n transition={\n isActionDismissed\n ? dockMotion.transitions.actionDismiss\n : dockMotion.transitions.fade\n }\n className={theme.slots.cardFooter}\n style={theme.styles.cardFooter}\n >\n <div\n className={theme.slots.cardAction}\n onClick={stopPropagationOnly}\n >\n {footerNode}\n </div>\n </motion.div>\n ) : null}\n </AnimatePresence>\n </motion.div>\n )}\n </AnimatePresence>\n );\n}\n\nexport const DockCardItem = memo(function DockCardItem({\n ref,\n activeItem = null,\n onContentHeightChange,\n isStackHovered,\n onMouseEnter,\n onMouseLeave,\n expanded,\n hasExtensions = false,\n position,\n onClick,\n isTop = false,\n item: propItem,\n link,\n isActive = false,\n statusStyle = null,\n isStatusActive = false,\n isHudActive = false,\n isSurfaceActive = false,\n hud = null,\n clearHud = null,\n contextCommands = [],\n}: DockCardItemProps) {\n const dockMotion = useDockMotion();\n const {\n item,\n pathname,\n isTopHudActive,\n isCurrentActive,\n isCurrentHud,\n isCurrentStatus,\n isCurrentSurface,\n showVideoScrubber,\n badge,\n cardContentRef,\n itemStyle,\n renderedActionSlot,\n isActionDismissed,\n showsSurfaceLayer,\n hasNestedInteractiveContent,\n headerRestoreVariants,\n handleMouseEnter,\n handleMouseLeave,\n handleFocus,\n handleBlur,\n handleKeyDown,\n handleScroll,\n isExtensionShelf,\n isCollapsedBackgroundCard,\n isCollapsedGhostCard,\n cardClassName,\n cardData,\n cardStyle,\n motionValues,\n cardDelay,\n } = useDockCardItemModel({\n ref,\n activeItem,\n onContentHeightChange,\n isStackHovered,\n onMouseEnter,\n onMouseLeave,\n expanded,\n hasExtensions,\n position,\n onClick,\n isTop,\n item: propItem,\n link,\n isActive,\n statusStyle,\n isStatusActive,\n isHudActive,\n isSurfaceActive,\n hud,\n clearHud,\n contextCommands,\n });\n const theme = useDockTheme();\n const renderedActionNode = renderActionSlot(renderedActionSlot);\n const layerExit = isCollapsedBackgroundCard ? DOCK_UNSEEN_EXIT : \"exit\";\n if (isCollapsedGhostCard) {\n return (\n <motion.div\n ref={ref}\n aria-hidden=\"true\"\n tabIndex={-1}\n {...cardData}\n data-ghost\n className={cardClassName}\n style={cardStyle}\n initial={false}\n animate={getDockItemAnimateValues(dockMotion, {\n motionValues,\n expanded,\n isStackHovered,\n isSurfaceActive,\n position,\n })}\n transition={getDockItemTransition(dockMotion, {\n expanded,\n isStackHovered,\n position,\n delay: cardDelay,\n })}\n exit={getDockItemExitValues(dockMotion, { motionValues, position })}\n />\n );\n }\n return (\n <motion.div\n ref={ref}\n {...cardData}\n className={cardClassName}\n data-controls-anchor={isTop ? \"true\" : undefined}\n style={cardStyle}\n initial={false}\n animate={getDockItemAnimateValues(dockMotion, {\n motionValues,\n expanded,\n isStackHovered,\n isSurfaceActive,\n position,\n })}\n transition={getDockItemTransition(dockMotion, {\n expanded,\n isStackHovered,\n position,\n delay: cardDelay,\n })}\n whileTap={\n !item.isOverlay && !item.isStatus && !isCollapsedBackgroundCard\n ? {\n scale: (motionValues?.scale || 1) * dockMotion.deck.tapScale,\n transition: dockMotion.transitions.press,\n }\n : undefined\n }\n exit={getDockItemExitValues(dockMotion, { motionValues, position })}\n role={hasNestedInteractiveContent ? \"group\" : \"button\"}\n aria-hidden={isCollapsedBackgroundCard ? \"true\" : undefined}\n tabIndex={\n item.isOverlay || item.isStatus || isCollapsedBackgroundCard ? -1 : 0\n }\n onFocus={handleFocus}\n onBlur={handleBlur}\n onKeyDown={handleKeyDown}\n onMouseEnter={handleMouseEnter}\n onMouseLeave={handleMouseLeave}\n onScroll={handleScroll}\n onClick={onClick}\n >\n <DockCardBanner\n banner={item.banner}\n bannerUrl={item.bannerUrl}\n bannerPosition={item.bannerPosition}\n bannerSize={item.bannerSize}\n bannerRepeat={item.bannerRepeat}\n bannerOpacity={item.bannerOpacity}\n isActive={isCurrentActive}\n isSurfaceActive={isCurrentSurface}\n isHudActive={isCurrentHud}\n isStatusActive={isCurrentStatus}\n />\n\n {showVideoScrubber && <DockMediaScrubber />}\n\n <motion.div\n ref={cardContentRef}\n data-shelf={isExtensionShelf}\n className={theme.slots.cardContent}\n animate={getDockCardContentAnimateProps(dockMotion, {\n expanded,\n position,\n isExtensionShelf,\n })}\n transition={dockMotion.transitions.text}\n style={{\n ...DOCK_COMPOSITOR_STYLE,\n willChange: \"transform\",\n pointerEvents:\n !expanded && position > 0 && !isExtensionShelf ? \"none\" : \"auto\",\n }}\n >\n <AnimatePresence mode=\"popLayout\" initial={false}>\n {showsSurfaceLayer ? (\n <motion.div\n key=\"surface-content-layer\"\n variants={dockMotion.variants.headerSwap}\n initial=\"hidden\"\n animate=\"visible\"\n exit={layerExit}\n transition={dockMotion.transitions.headerSwap}\n style={DOCK_COMPOSITOR_STYLE}\n className={theme.slots.cardSurface}\n >\n <SurfaceItemContent item={item} />\n </motion.div>\n ) : isExtensionShelf ? (\n <motion.div\n key=\"extension-shelf-layer\"\n variants={dockMotion.variants.extensionShelf}\n initial=\"hidden\"\n animate=\"visible\"\n exit={layerExit}\n transition={dockMotion.transitions.headerSwap}\n style={DOCK_COMPOSITOR_STYLE}\n className={theme.slots.cardShelf}\n >\n <DockSurfaceExtensionsBar activeItem={activeItem} />\n </motion.div>\n ) : (\n <motion.div\n key=\"standard-content-layer\"\n variants={headerRestoreVariants}\n initial=\"hidden\"\n animate={\n item.surfacePhase === DOCK_SURFACE_PHASE.DISMISSING_ACTION\n ? \"hidden\"\n : \"visible\"\n }\n exit={layerExit}\n transition={\n item.surfacePhase === DOCK_SURFACE_PHASE.DISMISSING_ACTION\n ? dockMotion.transitions.anticipation\n : dockMotion.transitions.headerSwap\n }\n style={{ ...DOCK_COMPOSITOR_STYLE, willChange: \"transform\" }}\n className={theme.slots.cardStandard}\n >\n {item.isLoading ? (\n <LoadingItemContent />\n ) : (\n <StandardItemContent\n item={item}\n activeItem={activeItem}\n isTop={isTop}\n itemStyle={itemStyle}\n badge={badge}\n isActive={isActive}\n isHudActive={isTopHudActive}\n hud={hud}\n clearHud={clearHud}\n contextCommands={contextCommands}\n pathname={pathname}\n footerNode={\n renderedActionNode ? (\n <Suspense>{renderedActionNode}</Suspense>\n ) : null\n }\n isActionDismissed={isActionDismissed}\n />\n )}\n </motion.div>\n )}\n </AnimatePresence>\n </motion.div>\n </motion.div>\n );\n});\n\nexport const DockMediaControls = memo(function DockMediaControls({\n className = \"\",\n}: {\n className?: string;\n}) {\n const dockMotion = useDockMotion();\n const {\n handleVolumeKeyDown,\n toggleLoop,\n playbackRate,\n volume,\n isMuted,\n isDraggingVolume,\n isPipActive,\n isPipSupported,\n volumeTrackRef,\n volumeFillRef,\n volumeThumbRef,\n isLoop,\n handleCycleSpeed,\n handleVolumePointerDown,\n handleToggleMute,\n handleTogglePip,\n handleSkipBackward,\n handleSkipForward,\n } = useDockMediaControlsModel({ className });\n const theme = useDockTheme();\n const effectiveVolume = isMuted ? 0 : volume;\n const volumeIcon =\n effectiveVolume === 0\n ? \"solar:volume-cross-bold\"\n : effectiveVolume < 0.5\n ? \"solar:volume-small-bold\"\n : \"solar:volume-loud-bold\";\n return (\n <div className={cn(theme.slots.media, className)}>\n <div className={theme.slots.mediaGroup}>\n <motion.button\n {...getDockActionMotionProps(dockMotion)}\n type=\"button\"\n onClick={handleCycleSpeed}\n data-active={playbackRate !== 1}\n className={theme.slots.mediaSpeed}\n aria-label={`Playback speed ${playbackRate}x`}\n title={`Playback speed: ${playbackRate}x`}\n >\n <span>{playbackRate}x</span>\n </motion.button>\n\n <motion.button\n {...getDockActionMotionProps(dockMotion)}\n type=\"button\"\n onClick={handleSkipBackward}\n className={theme.slots.mediaSkip}\n aria-label=\"Rewind 10 seconds\"\n title=\"Rewind 10 seconds\"\n >\n <Icon icon=\"solar:rewind-10-seconds-back-bold\" size={16} />\n </motion.button>\n\n <motion.button\n {...getDockActionMotionProps(dockMotion)}\n type=\"button\"\n onClick={handleSkipForward}\n className={theme.slots.mediaSkip}\n aria-label=\"Forward 10 seconds\"\n title=\"Forward 10 seconds\"\n >\n <Icon icon=\"solar:rewind-10-seconds-forward-bold\" size={16} />\n </motion.button>\n </div>\n\n <div className={theme.slots.mediaGroup}>\n <motion.div\n {...getDockActionMotionProps(dockMotion, { disabled: isDraggingVolume })}\n data-active={isDraggingVolume}\n className={theme.slots.mediaVolume}\n >\n <Button\n type=\"button\"\n onClick={handleToggleMute}\n className={theme.slots.mediaMute}\n aria-label={isMuted ? \"Unmute\" : \"Mute\"}\n title={\n isMuted\n ? \"Unmute\"\n : `Volume: ${Math.round(effectiveVolume * 100)}%`\n }\n >\n <Icon icon={volumeIcon} size={16} />\n </Button>\n\n <div\n ref={volumeTrackRef}\n role=\"slider\"\n aria-label=\"Volume slider\"\n aria-valuemin={0}\n aria-valuemax={100}\n aria-valuenow={Math.round(effectiveVolume * 100)}\n tabIndex={0}\n onPointerDown={handleVolumePointerDown}\n onKeyDown={handleVolumeKeyDown}\n className={theme.slots.mediaVolumeTrack}\n >\n <div className={theme.slots.mediaVolumeRail}>\n <div\n ref={volumeFillRef}\n className={theme.slots.mediaVolumeFill}\n style={{\n width: `${effectiveVolume * 100}%`,\n transition: getDockMediaVolumeFillTransition(dockMotion, {\n isDragging: isDraggingVolume,\n }),\n }}\n />\n </div>\n <motion.div\n ref={volumeThumbRef}\n data-active={isDraggingVolume}\n className={theme.slots.mediaVolumeThumb}\n animate={getDockMediaVolumeThumbAnimateProps(dockMotion, {\n isDragging: isDraggingVolume,\n })}\n transition={dockMotion.transitions.press}\n style={{\n left: `${effectiveVolume * 100}%`,\n transition: getDockMediaVolumeThumbPositionTransition(dockMotion, {\n isDragging: isDraggingVolume,\n }),\n }}\n />\n </div>\n </motion.div>\n\n {isPipSupported && (\n <motion.button\n {...getDockActionMotionProps(dockMotion)}\n type=\"button\"\n onClick={handleTogglePip}\n data-active={isPipActive}\n className={theme.slots.mediaToggle}\n aria-label={\n isPipActive\n ? \"Exit Picture-in-Picture\"\n : \"Enter Picture-in-Picture\"\n }\n title={\n isPipActive ? \"Exit Picture-in-Picture\" : \"Picture-in-Picture\"\n }\n >\n <Icon icon=\"solar:pip-bold\" size={16} />\n </motion.button>\n )}\n\n <motion.button\n {...getDockActionMotionProps(dockMotion)}\n type=\"button\"\n onClick={toggleLoop}\n data-active={isLoop}\n className={theme.slots.mediaToggle}\n aria-label={isLoop ? \"Disable loop\" : \"Enable loop\"}\n title={isLoop ? \"Loop: On\" : \"Loop: Off\"}\n >\n <Icon icon=\"solar:repeat-bold\" size={16} />\n </motion.button>\n </div>\n </div>\n );\n});\n\nexport const DockBreadcrumbsCard = memo(function DockBreadcrumbsCard({\n className = \"\",\n maxItems = 4,\n onNavigate,\n}: {\n className?: string;\n maxItems?: number;\n onNavigate?: (href: string) => unknown;\n}) {\n const dockMotion = useDockMotion();\n const { breadcrumbs } = useDockBreadcrumbsCardModel({\n className,\n maxItems,\n onNavigate,\n });\n const theme = useDockTheme();\n if (!breadcrumbs || breadcrumbs.length <= 1) return null;\n const itemsToRender: BreadcrumbItem[] =\n breadcrumbs.length > maxItems\n ? [\n breadcrumbs[0],\n { id: \"ellipsis\", title: \"...\", path: \"\", isEllipsis: true },\n ...breadcrumbs.slice(-2),\n ]\n : breadcrumbs;\n return (\n <motion.div\n variants={dockMotion.variants.breadcrumbs}\n initial=\"hidden\"\n animate=\"visible\"\n exit=\"exit\"\n transition={dockMotion.transitions.expand}\n style={{ ...DOCK_COMPOSITOR_STYLE, ...theme.styles.breadcrumbs }}\n className={cn(theme.slots.breadcrumbs, className)}\n onClick={stopPropagationOnly}\n >\n <nav aria-label=\"Breadcrumbs\" className={theme.slots.breadcrumbsNav}>\n {itemsToRender.map((crumb, index) => {\n const isLast = index === itemsToRender.length - 1;\n\n if (crumb.isEllipsis) {\n return (\n <span key=\"ellipsis\" className={theme.slots.breadcrumbsEllipsis}>\n ...\n </span>\n );\n }\n\n return (\n <motion.div\n layout=\"position\"\n key={crumb.id || crumb.path}\n className={theme.slots.breadcrumbsItem}\n >\n {isLast ? (\n <span className={theme.slots.breadcrumbsCurrent}>\n {crumb.title}\n </span>\n ) : (\n <Link\n href={crumb.path}\n onClick={(event) => {\n if (\n !onNavigate ||\n event.button !== 0 ||\n event.metaKey ||\n event.ctrlKey ||\n event.shiftKey ||\n event.altKey\n )\n return;\n event.preventDefault();\n void onNavigate(crumb.path);\n }}\n className={theme.slots.breadcrumbsLink}\n >\n {crumb.title}\n </Link>\n )}\n\n {!isLast && (\n <Iconify\n icon=\"solar:alt-arrow-right-linear\"\n size={12}\n className={theme.slots.breadcrumbsSeparator}\n />\n )}\n </motion.div>\n );\n })}\n </nav>\n </motion.div>\n );\n});\n\nexport function Dock(): ReactPortal | null {\n const dockMotion = useDockMotion();\n const {\n activeItem,\n dockItems,\n expanded,\n navigate,\n isFullscreenStateActive,\n dockRef,\n portalTarget,\n stackWidth,\n isOverlayActive,\n isBackdropVisible,\n isBreadcrumbsCardVisible,\n isSubCardVisible,\n isExtensionsVisible,\n containerHeight,\n dockCardProps,\n dockStackTransition,\n } = useDockModel();\n const theme = useDockTheme();\n const dockContent = (\n <>\n <AnimatePresence>\n {isBackdropVisible && (\n <motion.div\n key=\"dock-backdrop\"\n variants={dockMotion.variants.backdrop}\n initial=\"hidden\"\n animate=\"visible\"\n exit=\"exit\"\n transition={getDockBackdropTransition(dockMotion, {\n expanded,\n isSurface: isOverlayActive,\n })}\n className={theme.slots.backdrop}\n style={theme.styles.backdrop}\n />\n )}\n </AnimatePresence>\n <motion.div\n id=\"dock-card-stack\"\n ref={dockRef}\n className={theme.slots.stack}\n data-controls-hidden={\n expanded || activeItem?.isSurface ? \"true\" : \"false\"\n }\n style={{\n ...theme.styles.stack,\n transformOrigin: \"50% 100%\",\n }}\n initial={false}\n animate={getDockStackAnimateProps(dockMotion, {\n width: stackWidth,\n height: containerHeight,\n isBreadcrumbsVisible: isSubCardVisible,\n isExtensionsVisible,\n isFullscreen: isFullscreenStateActive,\n isSurfaceActive: Boolean(\n activeItem?.isSurface &&\n activeItem?.surfacePhase !== DOCK_SURFACE_PHASE.COLLAPSING_BODY &&\n activeItem?.surfacePhase !== DOCK_SURFACE_PHASE.RESTORING_HEADER,\n ),\n surfacePhase: activeItem?.isSurface\n ? activeItem?.surfacePhase\n : null,\n })}\n transition={{\n default: dockStackTransition,\n transform: getDockStackTransformTransition(dockMotion, \n activeItem?.isSurface ? activeItem?.surfacePhase : null,\n dockStackTransition,\n ),\n }}\n >\n <DockSurfaceControls\n activeItem={activeItem}\n hasExtensions={isExtensionsVisible}\n />\n <AnimatePresence>\n {isBreadcrumbsCardVisible && (\n <DockBreadcrumbsCard onNavigate={navigate} />\n )}\n </AnimatePresence>\n <AnimatePresence initial={false}>\n {dockCardProps.map(({ key, ...cardProps }) => (\n <DockCardItem key={key} {...cardProps} />\n ))}\n </AnimatePresence>\n </motion.div>\n </>\n );\n if (!portalTarget || !dockItems?.length) return null;\n return createPortal(dockContent, portalTarget);\n}\n\nexport function ErrorActions({\n onRetry,\n onRefresh,\n retryLabel = \"Retry\",\n refreshLabel = \"Refresh\",\n retryText,\n refreshText,\n className = \"\",\n}: ErrorActionsProps) {\n const dockMotion = useDockMotion();\n const theme = useDockTheme();\n const actionClass = useDockActionClass();\n const effectiveRetry = retryLabel || retryText || \"Retry\";\n const effectiveRefresh = refreshLabel || refreshText || \"Refresh\";\n return (\n <motion.div\n variants={dockMotion.variants.textCrossfade}\n initial=\"hidden\"\n animate=\"visible\"\n transition={dockMotion.transitions.fade}\n className={cn(theme.slots.actionRow, className)}\n >\n <Button\n type=\"button\"\n onClick={(e: React.MouseEvent) => {\n e.stopPropagation();\n onRefresh?.();\n }}\n className={actionClass({\n variant: theme.slots.actionMuted,\n className: theme.slots.actionFill,\n })}\n >\n <span className={theme.slots.actionLabel}>{effectiveRefresh}</span>\n </Button>\n <Button\n type=\"button\"\n onClick={(e: React.MouseEvent) => {\n e.stopPropagation();\n onRetry?.();\n }}\n className={actionClass({\n variant: theme.slots.actionMuted,\n className: theme.slots.actionFill,\n })}\n >\n <span className={theme.slots.actionLabel}>{effectiveRetry}</span>\n </Button>\n </motion.div>\n );\n}\n\nexport function GuardActions({\n onCancel,\n onConfirm,\n cancelLabel = \"Stay\",\n confirmLabel = \"Leave\",\n cancelText,\n confirmText,\n className = \"\",\n}: GuardActionsProps) {\n const dockMotion = useDockMotion();\n const theme = useDockTheme();\n const actionClass = useDockActionClass();\n const effectiveCancel = cancelLabel || cancelText || \"Stay\";\n const effectiveConfirm = confirmLabel || confirmText || \"Leave\";\n return (\n <motion.div\n variants={dockMotion.variants.textCrossfade}\n initial=\"hidden\"\n animate=\"visible\"\n transition={dockMotion.transitions.fade}\n className={cn(theme.slots.actionRow, className)}\n >\n <Button\n type=\"button\"\n onClick={(e: React.MouseEvent) => {\n e.stopPropagation();\n onCancel?.();\n }}\n className={actionClass({\n variant: theme.slots.actionMuted,\n className: theme.slots.actionFill,\n })}\n >\n <span className={theme.slots.actionLabel}>{effectiveCancel}</span>\n </Button>\n <Button\n type=\"button\"\n onClick={(e: React.MouseEvent) => {\n e.stopPropagation();\n onConfirm?.();\n }}\n className={actionClass({\n variant: theme.slots.actionMuted,\n className: theme.slots.actionFill,\n })}\n >\n <span className={theme.slots.actionLabel}>{effectiveConfirm}</span>\n </Button>\n </motion.div>\n );\n}\n\nexport function NotFoundActions({ className = \"\" }: { className?: string }) {\n const dockMotion = useDockMotion();\n const theme = useDockTheme();\n const actionClass = useDockActionClass();\n const router = useRouter();\n const { navigate } = useDockActions();\n return (\n <motion.div\n variants={dockMotion.variants.textCrossfade}\n initial=\"hidden\"\n animate=\"visible\"\n transition={dockMotion.transitions.fade}\n className={cn(theme.slots.actionRow, className)}\n >\n <Button\n type=\"button\"\n onClick={(e: React.MouseEvent) => {\n e.stopPropagation();\n router.back();\n }}\n className={actionClass({\n variant: theme.slots.actionMuted,\n className: theme.slots.actionFill,\n })}\n >\n <span className={theme.slots.actionLabel}>Go back</span>\n </Button>\n <Button\n type=\"button\"\n onClick={(e: React.MouseEvent) => {\n e.stopPropagation();\n void navigate(\"/\", { force: true });\n }}\n className={actionClass({\n variant: theme.slots.actionMuted,\n className: theme.slots.actionFill,\n })}\n >\n <span className={theme.slots.actionLabel}>Home</span>\n </Button>\n </motion.div>\n );\n}\n","\"use client\";\n\nimport { useCallback, useEffect, useMemo, useReducer, useRef } from \"react\";\nimport { normalizePath } from \"@/utils\";\nimport {\n DOCK_CONTINUITY_EVENTS,\n DOCK_CONTINUITY_MAX_ENTRIES,\n DOCK_SURFACE_RETURN_MAX_ENTRIES,\n} from \"../constants\";\nimport { isSafeInternalHref } from \"../paths\";\nimport {\n type DockContinuityAction,\n type DockContinuityEntry,\n type DockContinuityRememberOptions,\n type DockContinuityState,\n type DockReturnHandoff,\n type DockReturnHandoffInput,\n} from \"../types\";\n\nfunction normalizeContinuitySnapshot(\n snapshot: unknown,\n): Record<string, unknown> {\n if (\n snapshot == null ||\n typeof snapshot !== \"object\" ||\n Array.isArray(snapshot)\n )\n return {};\n return { ...snapshot };\n}\n\nfunction createDockContinuityState(): DockContinuityState {\n return { entries: [], returnHandoffs: [] };\n}\n\nfunction normalizeDockReturnValue(value: unknown): unknown {\n if (value == null || typeof value !== \"object\") return value ?? null;\n if (Array.isArray(value)) return [...value];\n return { ...value };\n}\n\nlet dockReturnHandoffSequence = 0;\n\nfunction createDockReturnHandoff({\n data = null,\n flowId = null,\n pathname = \"\",\n status = null,\n timestamp = Date.now(),\n}: {\n data?: unknown;\n flowId?: string | null;\n pathname?: string;\n status?: string | null;\n timestamp?: number;\n} = {}): DockReturnHandoff | null {\n if (!isSafeInternalHref(pathname)) return null;\n const path = normalizePath(pathname || \"\");\n if (!path) return null;\n\n const resolvedTimestamp = Number.isFinite(Number(timestamp))\n ? Number(timestamp)\n : Date.now();\n return {\n data: normalizeDockReturnValue(data),\n flowId: typeof flowId === \"string\" && flowId ? flowId : null,\n id: `${typeof flowId === \"string\" && flowId ? flowId : \"surface-flow\"}:${resolvedTimestamp}:${++dockReturnHandoffSequence}`,\n path,\n status: typeof status === \"string\" && status ? status : null,\n timestamp: resolvedTimestamp,\n };\n}\n\nfunction createDockContinuityEntry({\n focusKey = null,\n pathname = \"\",\n scrollY = 0,\n snapshot = null,\n updatedAt = Date.now(),\n}: {\n focusKey?: string | null;\n pathname?: string;\n scrollY?: number;\n snapshot?: unknown;\n updatedAt?: number;\n} = {}): DockContinuityEntry | null {\n const path = normalizePath(pathname || \"\");\n if (!path) return null;\n\n const numericScrollY = Number(scrollY);\n return {\n focusKey: typeof focusKey === \"string\" && focusKey ? focusKey : null,\n path,\n scrollY: Number.isFinite(numericScrollY) ? Math.max(0, numericScrollY) : 0,\n snapshot: normalizeContinuitySnapshot(snapshot),\n updatedAt: Number.isFinite(Number(updatedAt))\n ? Number(updatedAt)\n : Date.now(),\n };\n}\n\nfunction dockContinuityReducer(\n state: DockContinuityState | null | undefined,\n action: DockContinuityAction | null | undefined,\n): DockContinuityState {\n const currentState = state || createDockContinuityState();\n const returnHandoffs = Array.isArray(currentState.returnHandoffs)\n ? currentState.returnHandoffs\n : [];\n\n if (action?.type === DOCK_CONTINUITY_EVENTS.CLEAR) {\n return currentState.entries.length || returnHandoffs.length\n ? createDockContinuityState()\n : currentState;\n }\n\n if (action?.type === DOCK_CONTINUITY_EVENTS.DELIVER_RETURN) {\n const handoff = action.handoff;\n if (!handoff?.id || !handoff.path) return currentState;\n const maxEntries = Math.max(\n 1,\n Number(action.maxEntries) || DOCK_SURFACE_RETURN_MAX_ENTRIES,\n );\n\n const filteredHandoffs = returnHandoffs.filter(\n (entry) => entry.id !== handoff.id,\n );\n filteredHandoffs.push(handoff);\n if (filteredHandoffs.length > maxEntries)\n filteredHandoffs.splice(0, filteredHandoffs.length - maxEntries);\n\n return { ...currentState, returnHandoffs: filteredHandoffs };\n }\n\n if (action?.type === DOCK_CONTINUITY_EVENTS.CONSUME_RETURN) {\n const handoffId =\n typeof action.handoffId === \"string\" ? action.handoffId : \"\";\n if (!handoffId) return currentState;\n\n const nextReturnHandoffs = returnHandoffs.filter(\n (entry) => entry.id !== handoffId,\n );\n return nextReturnHandoffs.length === returnHandoffs.length\n ? currentState\n : { ...currentState, returnHandoffs: nextReturnHandoffs };\n }\n\n if (action?.type === DOCK_CONTINUITY_EVENTS.REMOVE) {\n const path = normalizePath(action.path || \"\");\n const entries = currentState.entries.filter((entry) => entry.path !== path);\n return entries.length === currentState.entries.length\n ? currentState\n : { ...currentState, entries };\n }\n\n const recordedEntry = action?.entry;\n if (action?.type !== DOCK_CONTINUITY_EVENTS.RECORD || !recordedEntry?.path) {\n return currentState;\n }\n\n const maxEntries = Math.max(\n 1,\n Number(action.maxEntries) || DOCK_CONTINUITY_MAX_ENTRIES,\n );\n\n const nextEntries = currentState.entries.filter(\n (entry) => entry.path !== recordedEntry.path,\n );\n nextEntries.push(recordedEntry);\n if (nextEntries.length > maxEntries)\n nextEntries.splice(0, nextEntries.length - maxEntries);\n\n return { ...currentState, entries: nextEntries };\n}\n\nfunction resolveDockContinuityEntry(\n state: DockContinuityState | null | undefined,\n pathname: string,\n): DockContinuityEntry | null {\n const path = normalizePath(pathname || \"\");\n return state?.entries?.find((entry) => entry.path === path) || null;\n}\n\nfunction resolveDockReturnHandoffs(\n state: DockContinuityState | null | undefined,\n pathname: string,\n): DockReturnHandoff[] {\n const path = normalizePath(pathname || \"\");\n if (!path) return [];\n return (state?.returnHandoffs || []).filter(\n (handoff) => handoff.path === path,\n );\n}\n\nexport function useDockContinuity({\n maxEntries = DOCK_CONTINUITY_MAX_ENTRIES,\n}: {\n maxEntries?: number;\n} = {}) {\n const [state, dispatch] = useReducer(\n dockContinuityReducer,\n undefined,\n createDockContinuityState,\n );\n const stateRef = useRef(state);\n\n useEffect(() => {\n stateRef.current = state;\n }, [state]);\n\n const remember = useCallback(\n (pathname: string, options: DockContinuityRememberOptions = {}) => {\n const entry = createDockContinuityEntry({\n pathname,\n scrollY:\n options.scrollY ??\n (typeof window === \"undefined\" ? 0 : window.scrollY),\n ...options,\n });\n if (!entry) return null;\n dispatch({\n entry,\n maxEntries,\n type: DOCK_CONTINUITY_EVENTS.RECORD,\n });\n return entry;\n },\n [maxEntries],\n );\n\n const remove = useCallback(\n (pathname: string) =>\n dispatch({ path: pathname, type: DOCK_CONTINUITY_EVENTS.REMOVE }),\n [],\n );\n const clear = useCallback(\n () => dispatch({ type: DOCK_CONTINUITY_EVENTS.CLEAR }),\n [],\n );\n const get = useCallback(\n (pathname: string) =>\n resolveDockContinuityEntry(stateRef.current, pathname),\n [],\n );\n\n const deliverReturn = useCallback(\n (pathname: string, input: DockReturnHandoffInput = {}) => {\n const handoff = createDockReturnHandoff({ pathname, ...input });\n if (!handoff) return null;\n dispatch({\n handoff,\n maxEntries: DOCK_SURFACE_RETURN_MAX_ENTRIES,\n type: DOCK_CONTINUITY_EVENTS.DELIVER_RETURN,\n });\n return handoff;\n },\n [],\n );\n\n const getReturns = useCallback(\n (pathname: string) => resolveDockReturnHandoffs(stateRef.current, pathname),\n [],\n );\n\n const consumeReturn = useCallback(\n (pathname: string, handoffId: string | null = null) => {\n const handoffs = resolveDockReturnHandoffs(stateRef.current, pathname);\n const handoff = handoffId\n ? handoffs.find((entry) => entry.id === handoffId) || null\n : handoffs[0] || null;\n if (!handoff) return null;\n\n dispatch({\n handoffId: handoff.id,\n type: DOCK_CONTINUITY_EVENTS.CONSUME_RETURN,\n });\n return handoff;\n },\n [],\n );\n\n const restore = useCallback(\n (\n pathname: string,\n {\n focusKey = null,\n restoreScroll = true,\n }: { focusKey?: string | null; restoreScroll?: boolean } = {},\n ) => {\n const entry = resolveDockContinuityEntry(stateRef.current, pathname);\n if (typeof window === \"undefined\") return entry;\n\n const targetFocusKey = focusKey || entry?.focusKey;\n\n requestAnimationFrame(() => {\n if (restoreScroll && entry)\n window.scrollTo({ top: entry.scrollY, behavior: \"auto\" });\n\n if (!targetFocusKey || typeof document === \"undefined\") return;\n\n const safeKey =\n typeof CSS !== \"undefined\" && CSS.escape\n ? CSS.escape(targetFocusKey)\n : targetFocusKey.replace(/\"/g, '\\\\\"');\n const target = document.querySelector(\n `[data-dock-focus-key=\"${safeKey}\"]`,\n ) as HTMLElement | null;\n\n if (!target || typeof target.focus !== \"function\") return;\n try {\n target.focus({ preventScroll: true });\n } catch {\n target.focus();\n }\n });\n\n return entry;\n },\n [],\n );\n\n return useMemo(\n () => ({\n clear,\n consumeReturn,\n deliverReturn,\n entries: state.entries,\n get,\n getReturns,\n remember,\n remove,\n restore,\n returnHandoffs: state.returnHandoffs,\n }),\n [\n clear,\n consumeReturn,\n deliverReturn,\n get,\n getReturns,\n remember,\n remove,\n restore,\n state.entries,\n state.returnHandoffs,\n ],\n );\n}\n","\"use client\";\n\nimport {\n useCallback,\n useMemo,\n useRef,\n useState,\n} from \"react\";\nimport { useIsomorphicLayoutEffect } from \"@/hooks\";\nimport {\n type DockScheduledTaskId,\n type DockScheduler,\n type DockComponentProps,\n type OpenSurfaceOptions,\n type SurfaceEntryFactory,\n type SurfaceFlowSession,\n type SurfaceId,\n type SurfaceInput,\n type SurfaceResult,\n type SurfaceStackEntry,\n type SurfaceStep,\n type SurfaceTransitionEvent,\n type SurfaceUrlState,\n} from \"../types\";\nimport { DOCK_SURFACE_PHASE } from \"../constants\";\nimport { focusDockElement, shouldRestoreDockFocus } from \"../dom\";\nimport { createDockScheduler, isValidComponentType } from \"../helpers\";\nimport { createSurfaceEntryDefinition, createSurfaceError } from \"./definition\";\nimport {\n IS_BROWSER,\n getSurfaceUrlValue,\n releaseSurfaceResources,\n syncSurfaceUrl,\n createSurfaceLifecycleState,\n createSurfaceRuntimeEntry,\n createSurfaceState,\n findSurfaceEntry,\n getTargetSurfaceId,\n initialSurfaceState,\n resolveSurfaceEntry,\n updateSurfaceStackEntry,\n createSurfaceMaps,\n createSurfaceRecord,\n SURFACE_TRANSITION_EFFECTS,\n SURFACE_TRANSITION_EVENTS,\n createSurfaceTransitionState,\n runSurfaceTransition,\n type SurfaceRuntimeRefs,\n} from \"./machine\";\nimport { useSurfaceFlows, useSurfaceLifecycleEffects } from \"./hooks\";\nimport { useDockSurfaceTimings } from \"../motion\";\nimport { report } from \"@/utils\";\n\nexport function useSurfaceStack({\n onSurfaceFlowSettled = null,\n scheduler = null,\n setExpanded,\n setSearchQuery,\n}: {\n onSurfaceFlowSettled?:\n | ((settled: {\n flow: SurfaceFlowSession;\n result: SurfaceResult;\n }) => boolean)\n | null;\n scheduler?: DockScheduler | null;\n setExpanded: (expanded: boolean) => void;\n setSearchQuery: (query: string) => void;\n}) {\n const timings = useDockSurfaceTimings();\n const [surfaceState, setSurfaceState] = useState(initialSurfaceState);\n const [surfaceLifecycleState, setSurfaceLifecycleState] = useState(\n createSurfaceLifecycleState,\n );\n const [surfacePhase, setSurfacePhase] = useState<string>(\n DOCK_SURFACE_PHASE.IDLE,\n );\n\n const [maps] = useState(createSurfaceMaps);\n const { payloads } = maps;\n const stackRef = useRef<SurfaceStackEntry[]>([]);\n const refs = useMemo<SurfaceRuntimeRefs>(\n () => ({ ...maps, stackRef }),\n [maps],\n );\n\n const surfaceIdRef = useRef(0);\n const [runtimeScheduler] = useState(() => scheduler || createDockScheduler());\n const focusRestoreFrameRef = useRef<DockScheduledTaskId | null>(null);\n const surfacePhaseRef = useRef<string>(DOCK_SURFACE_PHASE.IDLE);\n const transitionRunnerRef = useRef<ReturnType<\n typeof runSurfaceTransition\n > | null>(null);\n const onSurfaceFlowSettledRef = useRef(onSurfaceFlowSettled);\n useIsomorphicLayoutEffect(() => {\n onSurfaceFlowSettledRef.current = onSurfaceFlowSettled;\n }, [onSurfaceFlowSettled]);\n\n const clearChoreographyTimers = useCallback(() => {\n transitionRunnerRef.current?.cancel();\n transitionRunnerRef.current = null;\n }, []);\n\n const finishSurfaceTransition = useCallback(() => {\n transitionRunnerRef.current?.finish();\n transitionRunnerRef.current = null;\n }, []);\n\n const syncSurfaceStack = useCallback(\n (nextStack: SurfaceStackEntry[], nextPhase: string | null = null) => {\n stackRef.current = nextStack;\n const effectivePhase =\n nextPhase ??\n (nextStack.length > 0\n ? DOCK_SURFACE_PHASE.OPEN\n : DOCK_SURFACE_PHASE.IDLE);\n surfacePhaseRef.current = effectivePhase;\n setSurfacePhase(effectivePhase);\n setSurfaceState(createSurfaceState(nextStack, payloads, effectivePhase));\n },\n [payloads],\n );\n\n const restoreSurfaceFocus = useCallback(\n (\n focusOrigin: HTMLElement | null,\n result: SurfaceResult,\n nextStack: SurfaceStackEntry[] = [],\n ) => {\n if (\n !focusOrigin ||\n nextStack.length > 0 ||\n !shouldRestoreDockFocus(result)\n )\n return;\n\n if (focusRestoreFrameRef.current !== null)\n runtimeScheduler.cancel(focusRestoreFrameRef.current);\n focusRestoreFrameRef.current = runtimeScheduler.scheduleFrame(\n () => {\n focusRestoreFrameRef.current = null;\n if (stackRef.current.length > 0) return;\n focusDockElement(focusOrigin);\n },\n { label: \"surface:restore-focus\" },\n );\n },\n [runtimeScheduler],\n );\n\n const finalizeSurfaceClose = useCallback(\n (\n surfaceId: SurfaceId,\n result: SurfaceResult,\n nextStack: SurfaceStackEntry[] = [],\n ) => {\n const { flow: flowSession, focusOrigin } = releaseSurfaceResources({\n refs,\n result,\n surfaceId,\n });\n\n const isReturnHandshakeHandled = Boolean(\n flowSession &&\n onSurfaceFlowSettledRef.current?.({ flow: flowSession, result }),\n );\n if (!isReturnHandshakeHandled)\n restoreSurfaceFocus(focusOrigin, result, nextStack);\n },\n [refs, restoreSurfaceFocus],\n );\n\n const runSurfaceChoreography = useCallback(\n (\n event: SurfaceTransitionEvent,\n {\n initialSurfaceIds = null,\n result = null,\n }: {\n initialSurfaceIds?: SurfaceId[] | null;\n result?: SurfaceResult;\n } = {},\n ) => {\n const transitionState = createSurfaceTransitionState({\n phase: surfacePhaseRef.current,\n surfaceIds: initialSurfaceIds || stackRef.current.map((s) => s.id),\n });\n\n const runner = runSurfaceTransition({\n event,\n scheduler: runtimeScheduler,\n state: transitionState,\n timings,\n onTransition(nextState) {\n const activeSurfaceIds = new Set(nextState.surfaceIds);\n const nextStack = stackRef.current.filter((s) =>\n activeSurfaceIds.has(s.id),\n );\n stackRef.current = nextStack;\n surfacePhaseRef.current = nextState.phase;\n setSurfacePhase(nextState.phase);\n setSurfaceState(\n createSurfaceState(nextStack, payloads, nextState.phase),\n );\n setSurfaceLifecycleState({\n surfaceIds: [...nextState.surfaceIds],\n surfaceLifecycle: nextState.surfaceLifecycle,\n });\n },\n onEffect(effect) {\n if (effect.type !== SURFACE_TRANSITION_EFFECTS.RELEASE) return;\n const nextStack = stackRef.current;\n effect.surfaceIds?.forEach((surfaceId) =>\n finalizeSurfaceClose(surfaceId, result, nextStack),\n );\n },\n });\n transitionRunnerRef.current = runner;\n return runner;\n },\n [finalizeSurfaceClose, payloads, runtimeScheduler, timings],\n );\n\n const pushStep = useCallback(\n (stepInput: SurfaceStep, targetSurfaceId: SurfaceId | null = null) => {\n const currentStack = stackRef.current;\n const activeSurfaceId = getTargetSurfaceId(currentStack, targetSurfaceId);\n if (!activeSurfaceId) return;\n\n const nextStack = updateSurfaceStackEntry(\n currentStack,\n activeSurfaceId,\n (entry) => {\n const resolvedEntry = resolveSurfaceEntry(entry, payloads);\n const initialStep: SurfaceStep = {\n component: resolvedEntry.component,\n content: resolvedEntry.content,\n props: resolvedEntry.props,\n title: resolvedEntry.title,\n description: resolvedEntry.description,\n icon: resolvedEntry.icon,\n trailing: resolvedEntry.trailing,\n headerAction: resolvedEntry.headerAction,\n action: resolvedEntry.action,\n showAction: resolvedEntry.showAction,\n closeLabel: resolvedEntry.closeLabel,\n };\n const currentSteps =\n Array.isArray(resolvedEntry.steps) && resolvedEntry.steps.length > 0\n ? [...resolvedEntry.steps]\n : [initialStep];\n const nextSteps = [...currentSteps, stepInput];\n payloads.set(entry.payloadId, {\n ...payloads.get(entry.payloadId)!,\n steps: nextSteps,\n });\n return { ...entry, currentStepIndex: nextSteps.length - 1 };\n },\n );\n syncSurfaceStack(nextStack, DOCK_SURFACE_PHASE.OPEN);\n },\n [payloads, syncSurfaceStack],\n );\n\n const popStep = useCallback(\n (targetSurfaceId: SurfaceId | null = null) => {\n const currentStack = stackRef.current;\n const activeSurfaceId = getTargetSurfaceId(currentStack, targetSurfaceId);\n if (!activeSurfaceId) return;\n\n const resolvedTargetEntry = resolveSurfaceEntry(\n findSurfaceEntry(currentStack, activeSurfaceId),\n payloads,\n );\n if (\n !resolvedTargetEntry?.steps ||\n (resolvedTargetEntry.currentStepIndex || 0) <= 0\n )\n return;\n\n syncSurfaceStack(\n updateSurfaceStackEntry(currentStack, activeSurfaceId, (entry) => ({\n ...entry,\n currentStepIndex: (entry.currentStepIndex || 0) - 1,\n })),\n DOCK_SURFACE_PHASE.OPEN,\n );\n },\n [payloads, syncSurfaceStack],\n );\n\n const goToStep = useCallback(\n (index: number, targetSurfaceId: SurfaceId | null = null) => {\n const currentStack = stackRef.current;\n const activeSurfaceId = getTargetSurfaceId(currentStack, targetSurfaceId);\n if (!activeSurfaceId) return;\n\n const resolvedTargetEntry = resolveSurfaceEntry(\n findSurfaceEntry(currentStack, activeSurfaceId),\n payloads,\n );\n const stepIndex = Number(index);\n if (\n !resolvedTargetEntry?.steps ||\n !Number.isInteger(stepIndex) ||\n stepIndex < 0 ||\n stepIndex >= resolvedTargetEntry.steps.length\n )\n return;\n\n syncSurfaceStack(\n updateSurfaceStackEntry(currentStack, activeSurfaceId, (entry) => ({\n ...entry,\n currentStepIndex: stepIndex,\n })),\n DOCK_SURFACE_PHASE.OPEN,\n );\n },\n [payloads, syncSurfaceStack],\n );\n\n const closeSurface = useCallback(\n (\n result: SurfaceResult = null,\n targetSurfaceId: SurfaceId | null = null,\n ) => {\n finishSurfaceTransition();\n const currentStack = stackRef.current;\n const activeSurfaceId = currentStack[currentStack.length - 1]?.id || null;\n const surfaceId = targetSurfaceId || activeSurfaceId;\n if (!surfaceId) return;\n if (!findSurfaceEntry(currentStack, surfaceId)) return;\n runSurfaceChoreography(\n { surfaceId, type: SURFACE_TRANSITION_EVENTS.CLOSE },\n { result },\n );\n },\n [finishSurfaceTransition, runSurfaceChoreography],\n );\n\n const goBackSurface = useCallback(() => {\n const currentStack = stackRef.current;\n const activeEntry = currentStack[currentStack.length - 1];\n if (!activeEntry) return;\n if ((activeEntry.currentStepIndex || 0) > 0) popStep(activeEntry.id);\n else if (currentStack.length > 1) closeSurface(null, activeEntry.id);\n }, [closeSurface, popStep]);\n\n const closeAllSurfaces = useCallback(\n (result: SurfaceResult = null) => {\n finishSurfaceTransition();\n const currentStack = [...stackRef.current];\n if (currentStack.length === 0) return;\n\n runSurfaceChoreography(\n { type: SURFACE_TRANSITION_EVENTS.CLOSE_ALL },\n { result },\n );\n },\n [finishSurfaceTransition, runSurfaceChoreography],\n );\n\n const openSurface = useCallback(\n (\n input: SurfaceInput,\n config: OpenSurfaceOptions = {},\n ): Promise<SurfaceResult> => {\n let effectiveInput: unknown = input;\n let effectiveConfig = config;\n\n if (\n typeof input === \"function\" &&\n ((input as SurfaceEntryFactory).isSurfaceFactory ||\n !isValidComponentType(input))\n ) {\n effectiveInput = (input as SurfaceEntryFactory)(\n config as DockComponentProps,\n );\n effectiveConfig = {};\n }\n\n const {\n flowSession: providedFlowSession,\n preserveUrl = false,\n ...surfaceConfig\n } = effectiveConfig;\n const definition = createSurfaceEntryDefinition(\n effectiveInput,\n surfaceConfig,\n );\n if (!definition) {\n const error = createSurfaceError(\n \"DOCK_SURFACE_INVALID_COMPONENT\",\n \"Dock surface input is invalid\",\n );\n report(\"Dock surface input\", error);\n return Promise.resolve({ success: false, error });\n }\n\n const surfaceId = ++surfaceIdRef.current;\n const flowSession = providedFlowSession\n ? { ...providedFlowSession, surfaceId }\n : null;\n const { payload, surfaceEntry } = createSurfaceRuntimeEntry(\n surfaceId,\n definition,\n flowSession,\n );\n\n payloads.set(surfaceEntry.payloadId, payload);\n const record = createSurfaceRecord(surfaceEntry, flowSession);\n refs.records.set(surfaceId, record);\n\n if (flowSession) refs.flowIndex.set(flowSession.flowId, surfaceId);\n if (IS_BROWSER && document.activeElement) {\n record.focusOrigin = document.activeElement as HTMLElement;\n }\n\n setExpanded(false);\n setSearchQuery(\"\");\n\n const executeSurfaceOpen = () => {\n finishSurfaceTransition();\n const previousSurfaceIds = stackRef.current.map((entry) => entry.id);\n const urlState: SurfaceUrlState = {\n value: getSurfaceUrlValue(surfaceEntry),\n previousValue: null,\n };\n record.urlState = urlState;\n if (!preserveUrl) syncSurfaceUrl(surfaceEntry, true, urlState);\n\n stackRef.current = [...stackRef.current, surfaceEntry];\n runSurfaceChoreography(\n {\n skipActionDismiss: surfaceEntry.skipActionDismiss,\n surfaceId,\n type: SURFACE_TRANSITION_EVENTS.OPEN,\n },\n { initialSurfaceIds: previousSurfaceIds },\n );\n };\n\n const resultPromise = new Promise<SurfaceResult>((resolve) => {\n record.resolve = resolve;\n record.onClose = payload.onClose || null;\n });\n record.promise = resultPromise;\n executeSurfaceOpen();\n return resultPromise;\n },\n [\n payloads,\n finishSurfaceTransition,\n refs,\n runSurfaceChoreography,\n setExpanded,\n setSearchQuery,\n ],\n );\n\n const {\n cancelSurfaceFlow,\n completeSurfaceFlow,\n getSurfaceFlow,\n openSurfaceFlow,\n restoreSurfaceFlow,\n updateSurfaceFlow,\n } = useSurfaceFlows({ closeSurface, openSurface, refs, syncSurfaceStack });\n\n useSurfaceLifecycleEffects({\n clearChoreographyTimers,\n closeAllSurfaces,\n focusRestoreFrameRef,\n refs,\n runtimeScheduler,\n });\n\n const actions = useMemo(\n () => ({\n cancelSurfaceFlow,\n closeAllSurfaces,\n closeSurface,\n completeSurfaceFlow,\n getSurfaceFlow,\n goBackSurface,\n goToStep,\n openSurface,\n openSurfaceFlow,\n popStep,\n pushStep,\n restoreSurfaceFlow,\n updateSurfaceFlow,\n }),\n [\n cancelSurfaceFlow,\n closeAllSurfaces,\n closeSurface,\n completeSurfaceFlow,\n getSurfaceFlow,\n goBackSurface,\n goToStep,\n openSurface,\n openSurfaceFlow,\n popStep,\n pushStep,\n restoreSurfaceFlow,\n updateSurfaceFlow,\n ],\n );\n\n return {\n actions,\n surfaceState: {\n ...surfaceState,\n surfacePhase,\n surfaceLifecycle: surfaceLifecycleState.surfaceLifecycle,\n },\n };\n}\n","\"use client\";\n\nimport { useCallback, useMemo, useRef, useState, useEffect } from \"react\";\nimport { toArray } from \"@/utils\";\nimport {\n type DockActionDescriptor,\n type DockActionDefinition,\n type DockActionOverrides,\n type DefineDockActionOptions,\n} from \"../types\";\nimport { useDockActions } from \"../context\";\n\nexport type DockCommandEntry = DockActionDescriptor & { key: string };\ntype DockCommandEntries = Record<string, DockCommandEntry>;\ntype DockCommandInput =\n DockActionDescriptor | DockActionDescriptor[] | null | undefined;\n\nfunction createCommandEntries(commands: DockCommandInput): DockCommandEntries {\n const entries: DockCommandEntries = {};\n const cmdArray = toArray(commands);\n\n for (let i = 0; i < cmdArray.length; i++) {\n const command = cmdArray[i];\n if (!command) continue;\n const key = command.key || `context-action-${i}`;\n entries[key] = { key, ...command };\n }\n return entries;\n}\n\nfunction areCommandEntriesEqual(\n currentEntries: DockCommandEntries,\n nextEntries: DockCommandEntries,\n): boolean {\n const currentKeys = Object.keys(currentEntries);\n const nextKeys = Object.keys(nextEntries);\n\n if (currentKeys.length !== nextKeys.length) return false;\n\n for (let i = 0; i < nextKeys.length; i++) {\n const key = nextKeys[i];\n const currentEntry = currentEntries[key];\n const nextEntry = nextEntries[key];\n\n if (!currentEntry || !nextEntry) return false;\n\n for (const entryKey of Object.keys(\n nextEntry,\n ) as (keyof DockCommandEntry)[]) {\n if (entryKey === \"onClick\") {\n if (typeof currentEntry[entryKey] !== typeof nextEntry[entryKey])\n return false;\n } else if (currentEntry[entryKey] !== nextEntry[entryKey]) {\n return false;\n }\n }\n }\n\n return true;\n}\n\nfunction registerDockCommand(\n currentEntries: DockCommandEntries,\n command: Partial<DockActionDescriptor>,\n key: string,\n): DockCommandEntries {\n const existing = currentEntries[key];\n\n if (existing) {\n let isSame = true;\n for (const entryKey of Object.keys(\n command,\n ) as (keyof DockActionDescriptor)[]) {\n if (entryKey === \"onClick\") {\n if (typeof command[entryKey] !== typeof existing[entryKey]) {\n isSame = false;\n break;\n }\n } else if (existing[entryKey] !== command[entryKey]) {\n isSame = false;\n break;\n }\n }\n\n if (isSame) {\n if (command.onClick && existing.onClick !== command.onClick) {\n return {\n ...currentEntries,\n [key]: { ...existing, onClick: command.onClick },\n };\n }\n return currentEntries;\n }\n }\n\n return { ...currentEntries, [key]: { key, ...command } };\n}\n\nexport function useDockCommandRegistry() {\n const [commandEntries, setCommandEntries] = useState<DockCommandEntries>({});\n const generatedCommandIdRef = useRef(0);\n\n const registerCommand = useCallback(\n (command: Partial<DockActionDescriptor>) => {\n if (!command) return;\n\n const key =\n command.key || `context-action-${++generatedCommandIdRef.current}`;\n\n setCommandEntries((currentEntries) =>\n registerDockCommand(currentEntries, command, key),\n );\n },\n [],\n );\n\n const unregisterCommand = useCallback((key: string) => {\n if (!key) return;\n setCommandEntries((currentEntries) => {\n if (!currentEntries[key]) return currentEntries;\n const { [key]: _, ...nextEntries } = currentEntries;\n return nextEntries;\n });\n }, []);\n\n const setCommands = useCallback((commands: DockCommandInput) => {\n if (!commands) {\n setCommandEntries({});\n return;\n }\n const nextEntries = createCommandEntries(commands);\n setCommandEntries((currentEntries) =>\n areCommandEntriesEqual(currentEntries, nextEntries)\n ? currentEntries\n : nextEntries,\n );\n }, []);\n\n const clearCommands = useCallback(() => {\n setCommandEntries((currentEntries) =>\n Object.keys(currentEntries).length === 0 ? currentEntries : {},\n );\n }, []);\n\n const contextCommands = useMemo(\n () => Object.values(commandEntries),\n [commandEntries],\n );\n\n const actions = useMemo(\n () => ({\n clearContextActions: clearCommands,\n registerContextAction: registerCommand,\n setContextActions: setCommands,\n unregisterContextAction: unregisterCommand,\n }),\n [clearCommands, registerCommand, setCommands, unregisterCommand],\n );\n\n return { actions, contextActions: contextCommands };\n}\n\nexport function useDockContextActions(\n actions: Partial<DockActionDescriptor> | Partial<DockActionDescriptor>[],\n) {\n const { registerContextAction, unregisterContextAction } = useDockActions();\n const registeredKeysRef = useRef(new Set<string>());\n\n useEffect(() => {\n const currentKeys = new Set<string>();\n toArray(actions).forEach((action, index: number) => {\n if (!action) return;\n const key = action.key || `ctx-action-${index}`;\n currentKeys.add(key);\n registerContextAction({ key, ...action });\n });\n\n registeredKeysRef.current.forEach((prevKey) => {\n if (!currentKeys.has(prevKey)) unregisterContextAction(prevKey);\n });\n registeredKeysRef.current = currentKeys;\n }, [actions, registerContextAction, unregisterContextAction]);\n\n useEffect(() => {\n return () => {\n registeredKeysRef.current.forEach(unregisterContextAction);\n registeredKeysRef.current.clear();\n };\n }, [unregisterContextAction]);\n}\n\nexport function defineDockAction(\n definition: DefineDockActionOptions = {},\n): DockActionDefinition {\n const {\n badge = null,\n className = null,\n disabled = false,\n icon = null,\n key = \"dock-action\",\n onClick = null,\n order = 0,\n tone = null,\n tooltip = null,\n visible = true,\n ...extraConfig\n } = definition;\n\n const createAction = (\n overrides: DockActionOverrides = {},\n ): DockActionDescriptor => {\n const resolvedOverrides =\n typeof overrides === \"function\" ? { onClick: overrides } : overrides;\n return {\n key,\n icon,\n tooltip,\n order,\n disabled,\n visible,\n badge,\n className,\n tone,\n onClick,\n ...extraConfig,\n ...resolvedOverrides,\n };\n };\n\n return Object.freeze({\n bind: createAction,\n config: {\n badge,\n className,\n disabled,\n icon,\n key,\n onClick,\n order,\n tone,\n tooltip,\n visible,\n ...extraConfig,\n },\n create: createAction,\n id: key,\n key,\n use: function useDefinedDockAction(overrides: DockActionOverrides = {}) {\n const action = createAction(overrides);\n useDockContextActions([action]);\n },\n });\n}\n","\"use client\";\n\nimport {\n useCallback,\n useEffect,\n useLayoutEffect,\n useMemo,\n useRef,\n useState,\n} from \"react\";\nimport { usePathname, useRouter } from \"next/navigation\";\nimport { createStore } from \"@/utils\";\nimport { DockContext } from \"./context\";\nimport { useDockRouteReset } from \"./dom\";\nimport { BreadcrumbProvider } from \"./routing/breadcrumbs\";\nimport { isSamePath } from \"./paths\";\nimport { createDockScheduler } from \"./helpers\";\nimport { useDockContinuity } from \"./routing/continuity\";\nimport {\n SurfaceExtensionsProvider,\n SurfaceFlowProvider,\n} from \"./surface/hooks\";\nimport { useSurfaceStack } from \"./surface/stack\";\nimport { useDockHudRegistry } from \"./hud\";\nimport { useDockCommandRegistry } from \"./runtime/commands\";\nimport { createDockGuardRegistry } from \"./routing/guards\";\nimport {\n useDockExpansion,\n useDockOperationState,\n useDockRouteBridge,\n} from \"./runtime/dock\";\nimport {\n type DockActions,\n type DockContextValue,\n type DockProviderProps,\n type DockState,\n type DockRoutePolicy,\n type SurfaceFlowSession,\n type SurfaceResult,\n type SurfaceReturnHandshake,\n} from \"./types\";\n\nexport function DockProvider({\n breadcrumbConfig = null,\n children,\n mediaAction = null,\n notFoundAction = null,\n scheduler = null,\n}: DockProviderProps) {\n const pathname = usePathname();\n const router = useRouter();\n const { navigate, routeState, viewBridge } = useDockRouteBridge();\n const { actions: expansionActions, expanded } = useDockExpansion();\n const { setExpanded } = expansionActions;\n const { activeOperation, operationActions, operationHud, operationState } =\n useDockOperationState();\n const {\n actions: hudActions,\n clearTransientHud,\n hudEntries,\n registeredHud,\n selectionModeState,\n } = useDockHudRegistry();\n\n const runtimeActionsValue = useMemo(\n () => ({ mediaAction, notFoundAction }),\n [mediaAction, notFoundAction],\n );\n\n const [searchQuery, setSearchQuery] = useState(\"\");\n const [dockHeight, setRawDockHeight] = useState(0);\n const dockHeightRef = useRef(0);\n const pendingSurfaceReturnRef = useRef<SurfaceReturnHandshake | null>(null);\n const pendingRouteResetPolicyRef = useRef<DockRoutePolicy | null>(null);\n\n const [runtimeScheduler] = useState(() => scheduler || createDockScheduler());\n const [guards] = useState(createDockGuardRegistry);\n\n const setDockHeight = useCallback((nextHeight: number) => {\n const height = Number.isFinite(Number(nextHeight))\n ? Math.max(0, Number(nextHeight))\n : 0;\n if (dockHeightRef.current === height) return;\n dockHeightRef.current = height;\n setRawDockHeight(height);\n }, []);\n\n const { actions: commandActions, contextActions } = useDockCommandRegistry();\n const dockContinuity = useDockContinuity();\n\n const prepareRouteReset = useCallback(\n (routePolicy: DockRoutePolicy | null) => {\n pendingRouteResetPolicyRef.current = routePolicy || null;\n },\n [],\n );\n const clearPreparedRouteReset = useCallback(() => {\n pendingRouteResetPolicyRef.current = null;\n }, []);\n\n const handleSurfaceFlowSettlement = useCallback(\n ({\n flow,\n result: rawResult,\n }: {\n flow: SurfaceFlowSession;\n result: SurfaceResult;\n }) => {\n const result = rawResult as {\n data?: unknown;\n reason?: string;\n success?: boolean;\n } | null;\n const handshake = flow?.returnHandshake;\n const isCompleted = result?.success === true;\n const isDockCancellation = [\"browser-back\", \"dock\", \"unmount\"].includes(\n result?.reason ?? \"\",\n );\n if (\n !handshake?.pathname ||\n isDockCancellation ||\n (!isCompleted && !handshake.returnOnCancel)\n )\n return false;\n\n const handoff = dockContinuity.deliverReturn(handshake.pathname, {\n data: result?.data ?? null,\n flowId: flow.flowId,\n status: isCompleted ? \"completed\" : \"cancelled\",\n });\n if (!handoff) return false;\n\n pendingSurfaceReturnRef.current = handshake;\n if (isSamePath(pathname, handshake.pathname)) {\n pendingSurfaceReturnRef.current = null;\n dockContinuity.restore(handshake.pathname, handshake);\n } else {\n router.push(handshake.pathname);\n }\n return true;\n },\n [dockContinuity, pathname, router],\n );\n\n const { actions: surfaceActions, surfaceState } = useSurfaceStack({\n onSurfaceFlowSettled: handleSurfaceFlowSettlement,\n scheduler: runtimeScheduler,\n setExpanded,\n setSearchQuery,\n });\n\n useEffect(() => {\n const handshake = pendingSurfaceReturnRef.current;\n if (!handshake || !isSamePath(pathname, handshake.pathname)) return;\n pendingSurfaceReturnRef.current = null;\n dockContinuity.restore(handshake.pathname, handshake);\n }, [dockContinuity, pathname]);\n\n const handleRouteChange = useCallback(() => {\n const routePolicy = pendingRouteResetPolicyRef.current;\n pendingRouteResetPolicyRef.current = null;\n\n if (routePolicy?.dismissSurfaces !== false)\n surfaceActions.closeAllSurfaces({\n success: false,\n cancelled: true,\n reason: \"dock\",\n });\n if (routePolicy?.clearTransientState !== false) clearTransientHud();\n }, [clearTransientHud, surfaceActions]);\n\n useDockRouteReset(pathname, handleRouteChange);\n\n const activeHud = operationHud || registeredHud;\n\n const stateValue = useMemo(\n () => ({\n ...surfaceState,\n activeOperation,\n contextActions,\n hud: activeHud,\n hudEntries: Object.values(hudEntries),\n isHudActive: Boolean(activeHud?.isActive),\n dockContinuity: dockContinuity.entries,\n dockReturnHandoffs: dockContinuity.returnHandoffs,\n operations: operationState.entries,\n selectionMode: selectionModeState,\n searchQuery,\n dockHeight,\n expanded,\n activeItem: routeState.activeItem,\n locationKey: routeState.locationKey,\n pathname: routeState.pathname,\n }),\n [\n surfaceState,\n activeOperation,\n contextActions,\n activeHud,\n hudEntries,\n dockContinuity.entries,\n dockContinuity.returnHandoffs,\n operationState.entries,\n selectionModeState,\n searchQuery,\n dockHeight,\n expanded,\n routeState,\n ],\n );\n\n const [store] = useState(() => createStore<DockState>(stateValue));\n useLayoutEffect(() => {\n store.publish(stateValue);\n }, [store, stateValue]);\n\n const continuityActions = useMemo(\n () => ({\n clear: dockContinuity.clear,\n consumeReturn: dockContinuity.consumeReturn,\n deliverReturn: dockContinuity.deliverReturn,\n get: dockContinuity.get,\n getReturns: dockContinuity.getReturns,\n remember: dockContinuity.remember,\n remove: dockContinuity.remove,\n restore: dockContinuity.restore,\n }),\n [dockContinuity],\n );\n const actionsValue: DockActions = useMemo(\n () => ({\n ...commandActions,\n ...expansionActions,\n ...hudActions,\n ...surfaceActions,\n clearDockGuards: guards.clear,\n clearPreparedRouteReset,\n continuity: continuityActions,\n navigate,\n operations: operationActions,\n prepareRouteReset,\n registerGuard: guards.register,\n setDockHeight,\n setSearchQuery,\n }),\n [\n clearPreparedRouteReset,\n commandActions,\n continuityActions,\n expansionActions,\n guards,\n hudActions,\n navigate,\n operationActions,\n prepareRouteReset,\n setDockHeight,\n surfaceActions,\n ],\n );\n\n const surfaceFlowValue = useMemo(\n () => ({ ...surfaceActions, surfaceState }),\n [surfaceActions, surfaceState],\n );\n\n const dockContextValue = useMemo<DockContextValue>(\n () => ({\n actions: actionsValue,\n runtimeActions: runtimeActionsValue,\n runtimeScheduler,\n store,\n guards,\n view: viewBridge,\n }),\n [\n actionsValue,\n guards,\n runtimeActionsValue,\n runtimeScheduler,\n store,\n viewBridge,\n ],\n );\n\n return (\n <DockContext value={dockContextValue}>\n <SurfaceFlowProvider value={surfaceFlowValue}>\n <SurfaceExtensionsProvider>\n <BreadcrumbProvider config={breadcrumbConfig}>\n {children}\n </BreadcrumbProvider>\n </SurfaceExtensionsProvider>\n </SurfaceFlowProvider>\n </DockContext>\n );\n}\n","\"use client\";\n\nimport {\n isValidElement,\n useMemo,\n useRef,\n type ReactNode,\n} from \"react\";\nimport { useIsomorphicLayoutEffect } from \"@/hooks\";\nimport {\n defineModule,\n type ModulePageContext,\n type PageConfig,\n type PageRegistration,\n type ValidationResult,\n type PageModuleApi,\n} from \"@/kernel\";\nimport { isObject, isPlainObject } from \"@/utils\";\nimport { createInlineSurfaceEntry } from \"./surface/definition\";\nimport {\n type DockActions,\n type DockPageConfig,\n type DockPageApi,\n type DockPageGuard,\n type DockSlotContent,\n type DockStatusTheme,\n type DockSurfaceSlot,\n} from \"./types\";\nimport { DockContext, statusActionDefaults, useDockActions } from \"./context\";\nimport { useDockGuard } from \"./routing/guards\";\nimport { useDockContextActions } from \"./runtime/commands\";\nimport { DockProvider } from \"./provider\";\nimport { Dock, ErrorActions, GuardActions, NotFoundActions } from \"./overlay\";\n\nconst CARD_FIELD_TYPES: Readonly<Record<string, string>> = Object.freeze({\n bannerOpacity: \"number\",\n bannerPosition: \"string\",\n bannerRepeat: \"string\",\n bannerSize: \"string\",\n bannerUrl: \"string\",\n dismissible: \"boolean\",\n isLoading: \"boolean\",\n isOverlay: \"boolean\",\n name: \"string\",\n path: \"string\",\n targetPath: \"string\",\n width: \"number\",\n});\n\nconst POLICY_FIELD_TYPES: Readonly<Record<string, string>> = Object.freeze({\n clearTransientState: \"boolean\",\n dismissSurfaces: \"boolean\",\n prefetch: \"boolean\",\n});\n\nconst BEHAVIOR_FIELDS: ReadonlySet<string> = new Set([\n \"actions\",\n \"guard\",\n \"isLoading\",\n \"surfaces\",\n]);\n\nfunction isRenderable(value: unknown): boolean {\n if (\n value === null ||\n value === undefined ||\n [\"boolean\", \"number\", \"string\"].includes(typeof value) ||\n isValidElement(value)\n ) {\n return true;\n }\n return Array.isArray(value) && value.every(isRenderable);\n}\n\nexport function validateDockEntry(entry: unknown): ValidationResult {\n if (!isPlainObject(entry))\n return { issues: [\"dock card must be a plain object\"], valid: false };\n const issues: string[] = [];\n\n Object.entries(CARD_FIELD_TYPES).forEach(([field, expectedType]) => {\n const value = entry[field];\n if (value !== undefined && value !== null && typeof value !== expectedType)\n issues.push(`dock.${field} must be a ${expectedType}`);\n });\n [\"title\", \"description\"].forEach((field) => {\n if (!isRenderable(entry[field]))\n issues.push(`dock.${field} must be a renderable value`);\n });\n if (entry.path !== undefined && !String(entry.path).startsWith(\"/\"))\n issues.push(\"dock.path must start with /\");\n if (entry.actions !== undefined && !Array.isArray(entry.actions))\n issues.push(\"dock.actions must be an array\");\n if (entry.style !== undefined && !isPlainObject(entry.style))\n issues.push(\"dock.style must be a plain object\");\n const policy = entry.dockPolicy;\n if (policy !== undefined) {\n if (!isPlainObject(policy)) {\n issues.push(\"dock.dockPolicy must be a plain object\");\n } else {\n Object.entries(POLICY_FIELD_TYPES).forEach(([field, expectedType]) => {\n const value = policy[field];\n if (value !== undefined && typeof value !== expectedType)\n issues.push(`dock.dockPolicy.${field} must be a ${expectedType}`);\n });\n }\n }\n return { issues, valid: issues.length === 0 };\n}\n\nexport function mergeDockEntries(\n entries: Record<string, unknown>[],\n): Record<string, unknown> {\n return entries.reduce<Record<string, unknown>>((merged, entry) => {\n const next = { ...merged, ...entry };\n const mergedStyle = merged.style;\n const entryStyle = entry.style;\n if (isObject(mergedStyle) && isObject(entryStyle)) {\n const style: Record<string, unknown> = { ...mergedStyle, ...entryStyle };\n [\"card\", \"icon\", \"title\", \"description\"].forEach((field) => {\n if (isObject(mergedStyle[field]) && isObject(entryStyle[field])) {\n style[field] = { ...mergedStyle[field], ...entryStyle[field] };\n }\n });\n next.style = style;\n }\n return next;\n }, {});\n}\n\nfunction pageLoadingFlag(loading: unknown): boolean | undefined {\n if (typeof loading === \"boolean\") return loading;\n if (typeof loading === \"string\") return true;\n if (isObject(loading) && typeof loading.isLoading === \"boolean\")\n return loading.isLoading;\n return undefined;\n}\n\nexport function selectPageDock(config: PageConfig): DockPageConfig | null {\n const dock = config.dock;\n const title = dock?.title ?? config.title;\n if (!dock && title === undefined) return null;\n\n const slice: DockPageConfig = { ...(dock ?? {}) };\n if (title !== undefined) slice.title = title;\n\n const banner = slice.banner ?? slice.bannerUrl;\n if (isObject(banner)) {\n slice.bannerUrl = (banner.url ?? banner.bannerUrl) as string | undefined;\n } else if (banner !== undefined) {\n slice.bannerUrl = banner;\n }\n\n if (slice.isLoading === undefined) {\n const isLoading = pageLoadingFlag(config.loading);\n if (isLoading !== undefined) slice.isLoading = isLoading;\n }\n return slice;\n}\n\nexport function toDockEntries(\n slice: DockPageConfig,\n { pathname }: ModulePageContext,\n): PageRegistration[] {\n const {\n confirmation: _confirmation,\n guard: _guard,\n surfaces: _surfaces,\n ...card\n } = slice as DockPageConfig & { confirmation?: unknown };\n if (!Object.keys(card).some((field) => !BEHAVIOR_FIELDS.has(field)))\n return [];\n\n const path =\n typeof card.path === \"string\" && card.path ? card.path : pathname;\n if (!path) return [];\n const value = Object.fromEntries(\n Object.entries({ ...card, path }).filter(\n ([, field]) => field !== undefined,\n ),\n );\n return [{ key: path, value }];\n}\n\nexport function openPageSurface(\n target: unknown,\n props: Record<string, unknown>,\n openSurface: DockActions[\"openSurface\"],\n): unknown {\n if (!target) return undefined;\n const candidate = target as { open?: (props: unknown) => unknown };\n if (typeof candidate.open === \"function\") return candidate.open(props);\n\n if (typeof target === \"function\") {\n try {\n const entry = (target as (props: unknown) => unknown)(props);\n if (isObject(entry) && (entry.component || entry.id || entry.render)) {\n return openSurface(entry as Parameters<typeof openSurface>[0]);\n }\n } catch {}\n return openSurface(\n createInlineSurfaceEntry({ component: target, props }) as Parameters<\n typeof openSurface\n >[0],\n );\n }\n\n if (typeof target === \"object\")\n return openSurface(target as Parameters<typeof openSurface>[0]);\n return undefined;\n}\n\nconst NO_GUARD: DockPageGuard = Object.freeze({ when: false });\nconst NO_ACTIONS: NonNullable<DockPageConfig[\"actions\"]> = Object.freeze(\n [],\n) as unknown as NonNullable<DockPageConfig[\"actions\"]>;\n\nfunction useDockPage(\n slice: DockPageConfig | null,\n page: PageModuleApi,\n): DockPageApi {\n const actions = useDockActions();\n useDockGuard(slice?.guard ?? NO_GUARD);\n useDockContextActions(slice?.actions ?? NO_ACTIONS);\n\n const surfacesRef = useRef(slice?.surfaces);\n useIsomorphicLayoutEffect(() => {\n surfacesRef.current = slice?.surfaces;\n }, [slice?.surfaces]);\n\n return useMemo(\n () => ({\n ...actions,\n set: (dock: DockPageConfig) => page.set({ dock }),\n surface: (\n surface: DockSurfaceSlot | string,\n props: Record<string, unknown> = {},\n ) =>\n openPageSurface(\n typeof surface === \"string\"\n ? surfacesRef.current?.[surface]\n : surface,\n props,\n actions.openSurface,\n ),\n }),\n [actions, page],\n );\n}\n\nstatusActionDefaults.error = ErrorActions;\nstatusActionDefaults.guard = GuardActions;\n\nfunction DockModuleProvider({ children }: { children?: ReactNode }) {\n return (\n <DockProvider notFoundAction={NotFoundActions}>{children}</DockProvider>\n );\n}\n\nexport const dockModule = defineModule({\n id: \"dock\",\n context: DockContext,\n Provider: DockModuleProvider,\n Overlay: Dock,\n uses: [\"loading\", \"media\", \"navigation\", \"notification\"],\n registry: {\n cleanupDelayMs: 600,\n keyPolicy: \"path\",\n lifecycle: \"route\",\n merge: mergeDockEntries,\n validate: validateDockEntry,\n },\n page: {\n select: selectPageDock,\n entries: toDockEntries,\n use: useDockPage,\n },\n});\n\ndeclare module \"@omerdlw/base-framework/events\" {\n interface FrameworkEventMap {\n DOCK_NAVIGATE: {\n from: string;\n item?: unknown;\n to: string;\n [key: string]: unknown;\n };\n DOCK_NOT_FOUND: {\n clear?: boolean;\n description?: string;\n icon?: ReactNode;\n path: string;\n title?: string;\n [key: string]: unknown;\n };\n DOCK_STATUS_SET: {\n action?: DockSlotContent | null;\n actions?: DockSlotContent | null;\n description?: string;\n duration?: number | null;\n flow?: string | null;\n icon?: ReactNode;\n isOverlay?: boolean;\n persist?: boolean;\n priority?: number | string | null;\n style?: DockStatusTheme;\n themeType?: string;\n title?: string;\n type?: string;\n [key: string]: unknown;\n };\n DOCK_STATUS_CLEAR: {\n flow?: string | null;\n type?: string;\n [key: string]: unknown;\n };\n DOCK_GUARD: {\n cancelText?: string;\n clear?: boolean;\n confirmText?: string;\n from?: string;\n icon?: ReactNode;\n message?: string;\n onCancel?: () => void;\n onConfirm?: () => void;\n title?: string;\n to?: string;\n when?: boolean;\n [key: string]: unknown;\n };\n }\n}\n\ndeclare module \"@omerdlw/base-framework/kernel\" {\n interface CoreModules {\n dock: typeof dockModule;\n }\n interface PageConfig {\n dock?: DockPageConfig | null;\n }\n}\n"]}
|