@omerdlw/base-framework 1.0.1 → 1.0.3
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/dist/atoms/index.d.ts +0 -1
- package/dist/atoms/index.d.ts.map +1 -1
- package/dist/atoms/index.js +1 -64
- package/dist/atoms/index.js.map +1 -1
- package/dist/error/index.js +22 -25
- package/dist/error/index.js.map +1 -1
- package/dist/hooks/index.d.ts +2 -0
- package/dist/hooks/index.d.ts.map +1 -1
- package/dist/hooks/index.js +97 -4
- package/dist/hooks/index.js.map +1 -1
- package/dist/hooks/types.d.ts +11 -0
- package/dist/hooks/types.d.ts.map +1 -1
- package/dist/hooks/use-controllable-state.d.ts +1 -1
- package/dist/hooks/use-controllable-state.d.ts.map +1 -1
- package/dist/hooks/use-hotkey.d.ts +1 -1
- package/dist/hooks/use-hotkey.d.ts.map +1 -1
- package/dist/index.js +10811 -10696
- package/dist/index.js.map +1 -1
- package/dist/kernel/adapters.d.ts.map +1 -1
- package/dist/kernel/index.d.ts +1 -0
- package/dist/kernel/index.d.ts.map +1 -1
- package/dist/kernel/index.js +13 -84
- package/dist/kernel/index.js.map +1 -1
- package/dist/kernel/installed.d.ts.map +1 -1
- package/dist/kernel/page-controller.d.ts.map +1 -1
- package/dist/kernel/provider.d.ts.map +1 -1
- package/dist/modules/ambient/constants.d.ts +1 -1
- package/dist/modules/ambient/constants.d.ts.map +1 -1
- package/dist/modules/ambient/index.js +180 -326
- package/dist/modules/ambient/index.js.map +1 -1
- package/dist/modules/ambient/module.d.ts.map +1 -1
- package/dist/modules/background/constants.d.ts +4 -2
- package/dist/modules/background/constants.d.ts.map +1 -1
- package/dist/modules/background/context.d.ts +3 -0
- package/dist/modules/background/context.d.ts.map +1 -1
- package/dist/modules/background/hooks.d.ts +1 -1
- package/dist/modules/background/index.d.ts +2 -2
- package/dist/modules/background/index.d.ts.map +1 -1
- package/dist/modules/background/index.js +1172 -1270
- package/dist/modules/background/index.js.map +1 -1
- package/dist/modules/background/overlay.d.ts +1 -1
- package/dist/modules/background/overlay.d.ts.map +1 -1
- package/dist/modules/background/types.d.ts +1 -1
- package/dist/modules/background/types.d.ts.map +1 -1
- package/dist/modules/context-menu/constants.d.ts +1 -1
- package/dist/modules/context-menu/constants.d.ts.map +1 -1
- package/dist/modules/context-menu/context.d.ts.map +1 -1
- package/dist/modules/context-menu/hooks.d.ts.map +1 -1
- package/dist/modules/context-menu/index.js +135 -240
- package/dist/modules/context-menu/index.js.map +1 -1
- package/dist/modules/controls/constants.d.ts +1 -1
- package/dist/modules/controls/constants.d.ts.map +1 -1
- package/dist/modules/controls/hooks.d.ts +1 -1
- package/dist/modules/controls/index.js +31 -165
- package/dist/modules/controls/index.js.map +1 -1
- package/dist/modules/controls/types.d.ts +1 -1
- package/dist/modules/controls/types.d.ts.map +1 -1
- package/dist/modules/dock/cards.d.ts +1 -1
- package/dist/modules/dock/constants.d.ts +1 -1
- package/dist/modules/dock/constants.d.ts.map +1 -1
- package/dist/modules/dock/context.d.ts +10 -6
- package/dist/modules/dock/context.d.ts.map +1 -1
- package/dist/modules/dock/hooks.d.ts +4 -4
- package/dist/modules/dock/hooks.d.ts.map +1 -1
- package/dist/modules/dock/index.d.ts +1 -1
- package/dist/modules/dock/index.d.ts.map +1 -1
- package/dist/modules/dock/index.js +2063 -2083
- package/dist/modules/dock/index.js.map +1 -1
- package/dist/modules/dock/runtime/dock.d.ts.map +1 -1
- package/dist/modules/dock/types.d.ts +1 -1
- package/dist/modules/dock/types.d.ts.map +1 -1
- package/dist/modules/index.js +10193 -10350
- package/dist/modules/index.js.map +1 -1
- package/dist/modules/loading/constants.d.ts +4 -2
- package/dist/modules/loading/constants.d.ts.map +1 -1
- package/dist/modules/loading/context.d.ts +3 -0
- package/dist/modules/loading/context.d.ts.map +1 -1
- package/dist/modules/loading/hooks.d.ts +1 -1
- package/dist/modules/loading/hooks.d.ts.map +1 -1
- package/dist/modules/loading/index.d.ts +2 -2
- package/dist/modules/loading/index.d.ts.map +1 -1
- package/dist/modules/loading/index.js +121 -225
- package/dist/modules/loading/index.js.map +1 -1
- package/dist/modules/loading/types.d.ts +1 -1
- package/dist/modules/loading/types.d.ts.map +1 -1
- package/dist/modules/media/constants.d.ts +2 -1
- package/dist/modules/media/constants.d.ts.map +1 -1
- package/dist/modules/media/context.d.ts +3 -0
- package/dist/modules/media/context.d.ts.map +1 -1
- package/dist/modules/media/index.d.ts +2 -2
- package/dist/modules/media/index.d.ts.map +1 -1
- package/dist/modules/media/index.js +61 -218
- package/dist/modules/media/index.js.map +1 -1
- package/dist/modules/modal/constants.d.ts +1 -1
- package/dist/modules/modal/constants.d.ts.map +1 -1
- package/dist/modules/modal/context.d.ts.map +1 -1
- package/dist/modules/modal/hooks.d.ts +2 -2
- package/dist/modules/modal/index.js +31 -293
- package/dist/modules/modal/index.js.map +1 -1
- package/dist/modules/notification/constants.d.ts +4 -2
- package/dist/modules/notification/constants.d.ts.map +1 -1
- package/dist/modules/notification/context.d.ts +4 -0
- package/dist/modules/notification/context.d.ts.map +1 -1
- package/dist/modules/notification/hooks.d.ts +1 -1
- package/dist/modules/notification/index.d.ts +2 -3
- package/dist/modules/notification/index.d.ts.map +1 -1
- package/dist/modules/notification/index.js +65 -151
- package/dist/modules/notification/index.js.map +1 -1
- package/dist/modules/notification/module.d.ts.map +1 -1
- package/dist/provider.js +255 -257
- package/dist/provider.js.map +1 -1
- package/dist/theme.d.ts +1 -0
- package/dist/theme.d.ts.map +1 -1
- package/dist/theme.js +2 -2
- package/dist/theme.js.map +1 -1
- package/dist/utils/dom.d.ts +2 -0
- package/dist/utils/dom.d.ts.map +1 -1
- package/dist/utils/index.d.ts +1 -1
- package/dist/utils/index.d.ts.map +1 -1
- package/dist/utils/index.js +28 -19
- package/dist/utils/index.js.map +1 -1
- package/docs/modules/loading.md +1 -1
- package/package.json +48 -2
- package/dist/hooks/use-async-action.d.ts +0 -3
- package/dist/hooks/use-async-action.d.ts.map +0 -1
- package/dist/hooks/use-debounce.d.ts +0 -2
- package/dist/hooks/use-debounce.d.ts.map +0 -1
- package/dist/hooks/use-intersection-observer.d.ts +0 -4
- package/dist/hooks/use-intersection-observer.d.ts.map +0 -1
- package/dist/hooks/use-media-query.d.ts +0 -2
- package/dist/hooks/use-media-query.d.ts.map +0 -1
- package/dist/hooks/use-mounted.d.ts +0 -2
- package/dist/hooks/use-mounted.d.ts.map +0 -1
- package/dist/hooks/use-server-action.d.ts +0 -4
- package/dist/hooks/use-server-action.d.ts.map +0 -1
- package/dist/hooks/use-storage-state.d.ts +0 -5
- package/dist/hooks/use-storage-state.d.ts.map +0 -1
- package/dist/modules/theme.d.ts +0 -3
- package/dist/modules/theme.d.ts.map +0 -1
- package/dist/utils/json.d.ts +0 -3
- package/dist/utils/json.d.ts.map +0 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../src/utils/cn.ts","../../../src/utils/dom.ts","../../../src/utils/string.ts","../../../src/utils/number.ts","../../../src/utils/object.ts","../../../src/utils/report.ts","../../../src/utils/user-message.ts","../../../src/utils/store.ts","../../../src/utils/scheduler.ts","../../../src/atoms/icon.tsx","../../../src/atoms/spinner.tsx","../../../src/atoms/tooltip.tsx","../../../src/atoms/button.tsx","../../../src/hooks/use-fullscreen-state.ts","../../../src/kernel/context-registry.ts","../../../src/theme.tsx","../../../src/modules/dock/constants.ts","../../../src/modules/dock/utils.ts","../../../src/modules/dock/surface/context.tsx","../../../src/hooks/use-required-context.ts","../../../src/hooks/use-store.ts","../../../src/hooks/use-click-outside.ts","../../../src/hooks/use-isomorphic-layout-effect.ts","../../../src/events.ts","../../../src/hooks/use-global-event.ts","../../../src/kernel/constants.ts","../../../src/kernel/utils.ts","../../../src/kernel/schema.ts","../../../src/kernel/store.ts","../../../src/kernel/provider.tsx","../../../src/kernel/installed.ts","../../../src/kernel/handlers.ts","../../../src/kernel/hooks.ts","../../../src/kernel/page-controller.tsx","../../../src/kernel/module.tsx","../../../src/kernel/adapters.tsx","../../../src/modules/dock/context.ts","../../../src/modules/dock/surface/definition.ts","../../../src/tokens/tokens.ts","../../../src/tokens/motion.ts","../../../src/modules/dock/motion.ts","../../../src/modules/dock/surface/machine.ts","../../../src/modules/dock/hooks.ts","../../../src/modules/dock/surface/hooks.tsx","../../../src/modules/dock/routing/guards.ts","../../../src/modules/dock/routing/transactions.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":["listeners","IconifyIcon","jsx","createContext","use","useCallback","useSyncExternalStore","useEffect","useRef","subscribe","isValidElement","hasChanged","stabilizedValue","useState","useMemo","surfaceEntryFactory","stepSurfaceFactory","usePathname","useId","getSnapshot","useRouter","jsxs","useMotionValue","operation","useReducer","useInsertionEffect","DockCardBanner","DockCommand","DockCommandBar","DockDescription","DockTitle","Badge","DockIconOverlay","DockIcon","DockCardHeader","DockSurfaceExtensionsBar","DockMediaScrubber","DockHudView","DockSurfaceControls","createElement","cloneElement","LoadingItemContent","Fragment","DockCardItem","DockMediaControls","DockBreadcrumbsCard","maxEntries","useLayoutEffect"],"mappings":"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","file":"index.js","sourcesContent":["import { clsx, type ClassValue } from \"clsx\";\nimport { twMerge } from \"tailwind-merge\";\n\nexport function cn(...inputs: ClassValue[]): string {\n return twMerge(clsx(inputs));\n}\n","export const isBrowser: boolean = typeof window !== \"undefined\";\n\nlet globalScrollLockCount = 0;\n\nlet globalScrollLockStyles: {\n bodyOverflow: string;\n bodyOverscrollBehavior: string;\n htmlOverflow: string;\n htmlOverscrollBehavior: string;\n} | null = null;\n\nexport function acquireGlobalScrollLock(): () => void {\n if (typeof document === \"undefined\") return () => {};\n\n if (globalScrollLockCount === 0) {\n globalScrollLockStyles = {\n bodyOverflow: document.body.style.overflow,\n bodyOverscrollBehavior: document.body.style.overscrollBehavior,\n htmlOverflow: document.documentElement.style.overflow,\n htmlOverscrollBehavior: document.documentElement.style.overscrollBehavior,\n };\n }\n\n globalScrollLockCount += 1;\n document.body.style.overflow = \"hidden\";\n document.body.style.overscrollBehavior = \"none\";\n document.documentElement.style.overflow = \"hidden\";\n document.documentElement.style.overscrollBehavior = \"none\";\n\n let released = false;\n return () => {\n if (released) return;\n released = true;\n globalScrollLockCount = Math.max(0, globalScrollLockCount - 1);\n if (globalScrollLockCount > 0 || !globalScrollLockStyles) return;\n\n document.body.style.overflow = globalScrollLockStyles.bodyOverflow;\n document.body.style.overscrollBehavior =\n globalScrollLockStyles.bodyOverscrollBehavior;\n document.documentElement.style.overflow =\n globalScrollLockStyles.htmlOverflow;\n document.documentElement.style.overscrollBehavior =\n globalScrollLockStyles.htmlOverscrollBehavior;\n globalScrollLockStyles = null;\n };\n}\n","export function trimToNull(value: unknown): string | null {\n if (value === null || value === undefined) return null;\n const trimmed = String(value).trim();\n return trimmed.length > 0 ? trimmed : null;\n}\n\nexport function stripTrailingSlash(url: unknown): string {\n if (typeof url !== \"string\") return \"\";\n return url.replace(/\\/+$/, \"\");\n}\n\nexport function normalizePath(path: unknown): string {\n const trimmed = trimToNull(path);\n if (!trimmed) return \"\";\n if (trimmed === \"/\") return \"/\";\n return stripTrailingSlash(trimmed);\n}\n\nexport function isImageIconSource(icon: unknown): boolean {\n return (\n typeof icon === \"string\" &&\n (icon.startsWith(\"http://\") ||\n icon.startsWith(\"https://\") ||\n icon.startsWith(\"/\") ||\n icon.startsWith(\"data:image/\"))\n );\n}\n","export function clamp(value: unknown, min: number, max: number): number {\n const num = Number(value);\n const finite = Number.isFinite(num) ? num : min;\n return Math.min(Math.max(finite, min), max);\n}\n\nexport function toFiniteNumber(value: unknown, fallback: number = 0): number {\n const parsed = Number(value);\n return Number.isFinite(parsed) ? parsed : fallback;\n}\n","export function isObject(value: unknown): value is Record<string, unknown> {\n return Boolean(value) && typeof value === \"object\" && !Array.isArray(value);\n}\n\nexport function isPlainObject(\n value: unknown,\n): value is Record<string, unknown> {\n if (!isObject(value)) return false;\n const proto = Object.getPrototypeOf(value);\n return proto === Object.prototype || proto === null;\n}\n\nexport function shallowEqual(a: unknown, b: unknown): boolean {\n if (Object.is(a, b)) return true;\n if (\n typeof a !== \"object\" ||\n a === null ||\n typeof b !== \"object\" ||\n b === null\n ) {\n return false;\n }\n\n const keysA = Object.keys(a as object);\n const keysB = Object.keys(b as object);\n\n if (keysA.length !== keysB.length) return false;\n\n for (const key of keysA) {\n if (\n !Object.prototype.hasOwnProperty.call(b, key) ||\n !Object.is(\n (a as Record<string, unknown>)[key],\n (b as Record<string, unknown>)[key],\n )\n ) {\n return false;\n }\n }\n\n return true;\n}\n\nexport function toArray<T>(value: T | T[] | null | undefined): T[] {\n if (value === null || value === undefined) return [];\n return Array.isArray(value) ? value : [value];\n}\n","export type ReportLevel = \"error\" | \"warn\";\n\nexport type ReportSink = (\n scope: string,\n error: unknown,\n level: ReportLevel,\n) => void;\n\nlet sink: ReportSink | null = null;\n\nexport function report(\n scope: string,\n error: unknown,\n level: ReportLevel = \"error\",\n): void {\n if (sink) {\n try {\n sink(scope, error, level);\n return;\n } catch {}\n }\n\n if (process.env.NODE_ENV === \"production\" && typeof window !== \"undefined\") {\n return;\n }\n console[level](`[${scope}]`, error);\n}\n\nexport function setReportSink(next: ReportSink): () => void {\n sink = next;\n return () => {\n if (sink === next) sink = null;\n };\n}\n","export const USER_MESSAGES = Object.freeze({\n generic: \"Something went wrong. Please try again\",\n network: \"You appear to be offline. Check your connection and try again\",\n timeout: \"That took too long. Please try again\",\n unauthorized: \"Your session has expired. Please sign in again\",\n forbidden: \"You don't have permission to do that\",\n notFound: \"We couldn't find what you were looking for\",\n rateLimited: \"Too many attempts. Please wait a moment and try again\",\n server: \"We're having trouble on our end. Please try again in a moment\",\n} as const);\n\nexport class UserError extends Error {\n readonly status?: number;\n\n constructor(message: string, status?: number) {\n super(message);\n this.name = \"UserError\";\n this.status = status;\n }\n}\n\nexport interface UserMessageOptions {\n fallback?: string;\n codes?: Readonly<Record<string, string>>;\n}\n\nconst NETWORK_FAILURE = /failed to fetch|network|load failed|fetch failed/i;\n\nfunction readField<T>(\n source: unknown,\n field: string,\n type: \"string\" | \"number\",\n): T | undefined {\n const value = (source as Record<string, unknown> | null)?.[field];\n return typeof value === type ? (value as T) : undefined;\n}\n\nfunction readPayloadMessage(error: unknown): string | undefined {\n const payload = (error as { payload?: unknown } | null)?.payload;\n const message = readField<string>(payload, \"error\", \"string\")?.trim();\n return message || undefined;\n}\n\nexport function toUserMessage(\n error: unknown,\n { codes, fallback = USER_MESSAGES.generic }: UserMessageOptions = {},\n): string {\n if (typeof error === \"string\") return error.trim() || fallback;\n if (!error || typeof error !== \"object\") return fallback;\n\n if (error instanceof UserError) {\n if (error.status === 401) return USER_MESSAGES.unauthorized;\n return error.message || fallback;\n }\n if ((error as { name?: string }).name === \"AbortError\") return fallback;\n\n const code = readField<string>(error, \"code\", \"string\");\n if (code && codes?.[code]) return codes[code];\n\n const status = readField<number>(error, \"status\", \"number\");\n\n if (status === 401) return USER_MESSAGES.unauthorized;\n if (status === 429) return USER_MESSAGES.rateLimited;\n if (status === 408 || status === 504) return USER_MESSAGES.timeout;\n if (status !== undefined && status >= 500) return USER_MESSAGES.server;\n\n if (status !== undefined && status >= 400) {\n const authored = readPayloadMessage(error);\n if (authored) return authored;\n if (status === 403) return USER_MESSAGES.forbidden;\n if (status === 404) return USER_MESSAGES.notFound;\n return fallback;\n }\n\n const isOffline =\n typeof navigator !== \"undefined\" && navigator.onLine === false;\n if (\n isOffline ||\n (NETWORK_FAILURE.test((error as Error).message ?? \"\") &&\n (error instanceof TypeError || /fetch/i.test((error as Error).name)))\n ) {\n return USER_MESSAGES.network;\n }\n\n return fallback;\n}\n","import { report } from \"./report\";\nexport interface ExternalStore<TState = unknown> {\n readonly getSnapshot: () => TState;\n readonly publish: (\n nextState: TState | ((currentState: TState) => TState),\n ) => boolean;\n readonly setState: (\n updater: Partial<TState> | ((currentState: TState) => TState),\n ) => boolean;\n readonly subscribe: (listener: () => void) => () => void;\n}\n\nfunction freezeStoreSnapshot<TState>(state: TState): TState {\n if (\n process.env.NODE_ENV === \"production\" ||\n !state ||\n typeof state !== \"object\"\n ) {\n return state;\n }\n\n const seen = new WeakSet<object>();\n const freeze = (value: object): void => {\n if (seen.has(value) || Object.isFrozen(value)) return;\n seen.add(value);\n\n const prototype = Object.getPrototypeOf(value);\n if (\n Array.isArray(value) ||\n prototype === Object.prototype ||\n prototype === null\n ) {\n for (const key of Reflect.ownKeys(value)) {\n const descriptor = Object.getOwnPropertyDescriptor(value, key);\n if (descriptor && \"value\" in descriptor && descriptor.value !== null) {\n if (typeof descriptor.value === \"object\") freeze(descriptor.value);\n }\n }\n }\n\n Object.freeze(value);\n };\n\n freeze(state);\n return state;\n}\n\nexport interface CreateStoreOptions {\n freezeSnapshots?: boolean;\n}\n\nexport function createStore<TState = Record<string, unknown>>(\n initialState: TState,\n { freezeSnapshots = true }: CreateStoreOptions = {},\n): ExternalStore<TState> {\n const listeners = new Set<() => void>();\n const prepare = freezeSnapshots\n ? freezeStoreSnapshot\n : <T>(state: T): T => state;\n let snapshot = prepare(initialState);\n\n const publish = (\n nextStateOrUpdater: TState | ((currentState: TState) => TState),\n ): boolean => {\n const nextState =\n typeof nextStateOrUpdater === \"function\"\n ? (nextStateOrUpdater as (currentState: TState) => TState)(snapshot)\n : nextStateOrUpdater;\n if (Object.is(snapshot, nextState)) return false;\n snapshot = prepare(nextState);\n\n for (const listener of listeners) {\n try {\n listener();\n } catch (error) {\n report(\"CoreStore subscriber\", error, \"warn\");\n }\n }\n return true;\n };\n\n const setState = (\n updater: Partial<TState> | ((currentState: TState) => TState),\n ): boolean => {\n if (typeof updater === \"function\") {\n return publish(updater as (currentState: TState) => TState);\n }\n if (\n snapshot &&\n typeof snapshot === \"object\" &&\n updater &&\n typeof updater === \"object\"\n ) {\n return publish({ ...snapshot, ...updater });\n }\n return publish(updater as TState);\n };\n\n return Object.freeze({\n getSnapshot() {\n return snapshot;\n },\n publish,\n setState,\n subscribe(listener: () => void) {\n if (typeof listener !== \"function\") return () => {};\n listeners.add(listener);\n return () => listeners.delete(listener);\n },\n });\n}\n","import { report } from \"./report\";\nconst DEFAULT_SCHEDULER_FRAME_MS = 16;\n\nconst EMPTY_SCHEDULER_TASKS: readonly ScheduledTaskSnapshot[] = Object.freeze(\n [],\n);\n\nfunction getDefaultSchedulerNow(): number {\n return typeof performance !== \"undefined\" &&\n typeof performance.now === \"function\"\n ? performance.now()\n : Date.now();\n}\n\nexport interface ScheduledTaskSnapshot {\n readonly createdAt: number;\n readonly dueAt: number;\n readonly id: number;\n readonly kind: \"timer\" | \"frame\";\n readonly label: string;\n}\n\nexport interface SchedulerSnapshot {\n readonly pendingCount: number;\n readonly tasks: readonly ScheduledTaskSnapshot[];\n}\n\nexport type ScheduleHandle = ReturnType<typeof setTimeout> | number;\n\nexport interface CoreSchedulerOptions {\n cancelFrame?: (id: ScheduleHandle) => void;\n clearTimer?: (id: ScheduleHandle) => void;\n defaultLabel?: string;\n now?: () => number;\n requestFrame?: (cb: (time: number) => void) => ScheduleHandle;\n scheduleTimer?: (cb: () => void, delayMs?: number) => ScheduleHandle;\n}\n\nexport function createScheduler({\n cancelFrame = typeof window !== \"undefined\" &&\n typeof window.cancelAnimationFrame === \"function\"\n ? (id: ScheduleHandle) => window.cancelAnimationFrame(id as number)\n : (id: ScheduleHandle) => clearTimeout(id),\n clearTimer = (id: ScheduleHandle) => clearTimeout(id),\n defaultLabel = \"scheduled-task\",\n now = getDefaultSchedulerNow,\n requestFrame = typeof window !== \"undefined\" &&\n typeof window.requestAnimationFrame === \"function\"\n ? (cb: FrameRequestCallback) => window.requestAnimationFrame(cb)\n : (cb: FrameRequestCallback) =>\n setTimeout(cb, DEFAULT_SCHEDULER_FRAME_MS) as unknown as number,\n scheduleTimer = (cb: () => void, delayMs?: number) => setTimeout(cb, delayMs),\n}: CoreSchedulerOptions = {}) {\n const listeners = new Set<() => void>();\n const tasks = new Map<\n number,\n {\n cancel: (id: ScheduleHandle) => void;\n createdAt: number;\n dueAt: number;\n id: number;\n kind: \"timer\" | \"frame\";\n label: string;\n nativeId: ScheduleHandle;\n }\n >();\n let nextTaskId = 0;\n let snapshot: SchedulerSnapshot = {\n pendingCount: 0,\n tasks: EMPTY_SCHEDULER_TASKS,\n };\n\n const publish = () => {\n const currentTasks: ScheduledTaskSnapshot[] = [];\n for (const task of tasks.values()) {\n currentTasks.push({\n createdAt: task.createdAt,\n dueAt: task.dueAt,\n id: task.id,\n kind: task.kind,\n label: task.label,\n });\n }\n\n snapshot = {\n pendingCount: tasks.size,\n tasks: currentTasks,\n };\n\n for (const listener of listeners) {\n try {\n listener();\n } catch (error) {\n report(\"Scheduler subscriber\", error, \"warn\");\n }\n }\n };\n\n const scheduleInternal = (\n kind: \"timer\" | \"frame\",\n callback: (timestamp: number) => void,\n delayMs: number,\n options: { label?: string } = {},\n ): number | null => {\n if (typeof callback !== \"function\") return null;\n\n const safeDelay = Math.max(0, Number(delayMs) || 0);\n const taskId = ++nextTaskId;\n const createdAt = now();\n\n const invoke = (timestamp = now()) => {\n if (!tasks.has(taskId)) return;\n tasks.delete(taskId);\n publish();\n callback(timestamp);\n };\n\n const nativeId =\n kind === \"frame\"\n ? requestFrame(invoke)\n : scheduleTimer(invoke, safeDelay);\n\n tasks.set(taskId, {\n cancel: kind === \"frame\" ? cancelFrame : clearTimer,\n createdAt,\n dueAt:\n createdAt + (kind === \"frame\" ? DEFAULT_SCHEDULER_FRAME_MS : safeDelay),\n id: taskId,\n kind,\n label:\n typeof options.label === \"string\" && options.label\n ? options.label\n : defaultLabel,\n nativeId,\n });\n\n publish();\n return taskId;\n };\n\n const cancel = (taskId: number): boolean => {\n const task = tasks.get(taskId);\n if (!task) return false;\n\n tasks.delete(taskId);\n try {\n task.cancel(task.nativeId);\n } catch (error) {\n report(\"Scheduler cancellation\", error, \"warn\");\n }\n\n publish();\n return true;\n };\n\n return Object.freeze({\n cancel,\n cancelAll(): number[] {\n if (tasks.size === 0) return [];\n\n const taskIds: number[] = [];\n for (const [taskId, task] of tasks) {\n taskIds.push(taskId);\n try {\n task.cancel(task.nativeId);\n } catch (error) {\n report(\"Scheduler cancellation\", error, \"warn\");\n }\n }\n\n tasks.clear();\n publish();\n return taskIds;\n },\n getSnapshot(): SchedulerSnapshot {\n return snapshot;\n },\n now,\n schedule(\n callback: (timestamp: number) => void,\n delayMs = 0,\n options: { label?: string } = {},\n ): number | null {\n return scheduleInternal(\"timer\", callback, delayMs, options);\n },\n scheduleFrame(\n callback: (timestamp: number) => void,\n options: { label?: string } = {},\n ): number | null {\n return scheduleInternal(\n \"frame\",\n callback,\n DEFAULT_SCHEDULER_FRAME_MS,\n options,\n );\n },\n subscribe(listener: () => void): () => void {\n if (typeof listener !== \"function\") return () => {};\n listeners.add(listener);\n return () => listeners.delete(listener);\n },\n });\n}\n","\"use client\";\n\nimport { Icon as IconifyIcon } from \"@iconify-icon/react\";\nimport type { ComponentProps, CSSProperties } from \"react\";\n\nexport interface IconProps\n extends Omit<ComponentProps<typeof IconifyIcon>, \"icon\" | \"size\"> {\n icon: string | ComponentProps<typeof IconifyIcon>[\"icon\"];\n size?: number | string;\n color?: string;\n className?: string;\n style?: CSSProperties;\n onClick?: () => void;\n}\n\nexport function Icon({\n className = \"center\",\n color,\n icon,\n onClick,\n size = 20,\n style,\n ...props\n}: IconProps) {\n return (\n <IconifyIcon\n className={className}\n height={size}\n icon={icon}\n onClick={onClick}\n style={{ color, ...style }}\n width={size}\n {...props}\n />\n );\n}\n\nIcon.displayName = \"Icon\";\n","\"use client\";\n\nimport { Icon } from \"./icon\";\n\nexport interface SpinnerProps {\n className?: string;\n size?: number;\n}\n\nexport function Spinner({ className = \"\", size = 15 }: SpinnerProps) {\n return (\n <div\n className={className}\n aria-label=\"Loading\"\n role=\"status\"\n >\n <Icon icon=\"mingcute:loading-3-fill\" size={size} />\n </div>\n );\n}\n\nSpinner.displayName = \"Spinner\";\n","\"use client\";\n\nimport * as TooltipPrimitive from \"@radix-ui/react-tooltip\";\nimport type { ReactNode } from \"react\";\n\nexport interface TooltipProps {\n children: ReactNode;\n text: ReactNode;\n className?: string;\n open?: boolean;\n defaultOpen?: boolean;\n delayMs?: number;\n position?: \"top\" | \"bottom\" | \"left\" | \"right\";\n sideOffset?: number;\n collisionPadding?: number;\n onOpenChange?: (open: boolean) => void;\n}\n\nexport function Tooltip({\n children,\n className,\n collisionPadding = 8,\n defaultOpen,\n delayMs,\n onOpenChange,\n open,\n position = \"top\",\n sideOffset = 6,\n text,\n ...props\n}: TooltipProps) {\n return (\n <TooltipPrimitive.Root\n defaultOpen={defaultOpen}\n delayDuration={delayMs}\n onOpenChange={onOpenChange}\n open={open}\n >\n <TooltipPrimitive.Trigger asChild>\n {children}\n </TooltipPrimitive.Trigger>\n\n <TooltipPrimitive.Portal>\n <TooltipPrimitive.Content\n side={position}\n align=\"center\"\n sideOffset={sideOffset}\n collisionPadding={collisionPadding}\n className={className}\n {...props}\n >\n {text}\n </TooltipPrimitive.Content>\n </TooltipPrimitive.Portal>\n </TooltipPrimitive.Root>\n );\n}\n\nTooltip.displayName = \"Tooltip\";\n","\"use client\";\n\nimport type { ButtonHTMLAttributes, ReactNode, Ref } from \"react\";\n\nexport interface ButtonProps extends ButtonHTMLAttributes<HTMLButtonElement> {\n ref?: Ref<HTMLButtonElement>;\n children?: ReactNode;\n loading?: boolean;\n}\n\nexport function Button({\n ref,\n children,\n className,\n disabled = false,\n loading = false,\n type = \"button\",\n ...props\n}: ButtonProps) {\n return (\n <button\n ref={ref}\n type={type}\n disabled={disabled || loading}\n aria-busy={loading ? true : undefined}\n className={className}\n {...props}\n >\n {children}\n </button>\n );\n}\n\nButton.displayName = \"Button\";\n","\"use client\";\n\nimport { useSyncExternalStore } from \"react\";\n\nconst listeners = new Set<() => void>();\nconst activeFullscreenStateIds = new Set<string>();\n\nconst ACTIVE_FULLSCREEN_ROOT_SELECTOR =\n '[data-fullscreen-state-root=\"true\"][data-affect-global-state=\"true\"]';\n\nlet domObserver: MutationObserver | null = null;\nlet lastSnapshot = false;\n\nfunction getDomSnapshot(): boolean {\n if (typeof document === \"undefined\") {\n return activeFullscreenStateIds.size > 0;\n }\n\n return document.querySelector(ACTIVE_FULLSCREEN_ROOT_SELECTOR) !== null;\n}\n\nfunction emitChange(): void {\n listeners.forEach((listener) => listener());\n}\n\nfunction emitIfSnapshotChanged(): void {\n const nextSnapshot = getDomSnapshot();\n\n if (nextSnapshot === lastSnapshot) {\n return;\n }\n\n lastSnapshot = nextSnapshot;\n emitChange();\n}\n\nfunction ensureDomObserver(): void {\n if (typeof document === \"undefined\" || domObserver || listeners.size === 0) {\n return;\n }\n\n domObserver = new MutationObserver(() => {\n emitIfSnapshotChanged();\n });\n\n domObserver.observe(document.documentElement, {\n attributes: true,\n childList: true,\n subtree: true,\n attributeFilter: [\n \"data-fullscreen-state\",\n \"data-fullscreen-state-root\",\n \"data-affect-global-state\",\n ],\n });\n}\n\nfunction releaseDomObserver(): void {\n if (listeners.size > 0 || !domObserver) {\n return;\n }\n\n domObserver.disconnect();\n domObserver = null;\n}\n\nfunction subscribe(listener: () => void): () => void {\n listeners.add(listener);\n ensureDomObserver();\n emitIfSnapshotChanged();\n\n return () => {\n listeners.delete(listener);\n releaseDomObserver();\n };\n}\n\nfunction getSnapshot(): boolean {\n return getDomSnapshot();\n}\n\nexport function registerFullscreenState(id: string): void {\n activeFullscreenStateIds.add(id);\n emitIfSnapshotChanged();\n}\n\nexport function unregisterFullscreenState(id: string): void {\n activeFullscreenStateIds.delete(id);\n emitIfSnapshotChanged();\n}\n\nexport function useIsFullscreenStateActive(): boolean {\n return useSyncExternalStore(subscribe, getSnapshot, () => false);\n}\n","import { createContext, type Context } from \"react\";\n\nexport function getOrCreateGlobalContext<T>(\n name: string,\n defaultValue: T,\n): Context<T> {\n const sym = Symbol.for(`@omerdlw/base-framework/context/${name}`);\n const store = globalThis as unknown as Record<symbol, Context<T>>;\n if (!store[sym]) {\n store[sym] = createContext<T>(defaultValue);\n }\n return store[sym];\n}\n","\"use client\";\n\nimport {\n createContext,\n createElement,\n useContext,\n type CSSProperties,\n type ReactNode,\n} from \"react\";\n\nexport interface ThemeSpec<S extends string = string> {\n readonly id: string;\n readonly _slots?: S;\n}\n\nexport interface ThemeConfig<S extends string> {\n slots: Readonly<Record<S, string>>;\n styles?: Readonly<Partial<Record<S, CSSProperties>>>;\n}\n\nexport interface ResolvedTheme<S extends string> {\n readonly slots: Readonly<Record<S, string>>;\n readonly styles: Readonly<Partial<Record<S, CSSProperties>>>;\n}\n\nexport interface ThemeEntry {\n readonly id: string;\n readonly config: ThemeConfig<string>;\n}\n\nexport function defineThemeSpec<S extends string>(id: string): ThemeSpec<S> {\n return Object.freeze({ id });\n}\n\nexport function defineTheme<S extends string>(\n spec: ThemeSpec<S>,\n config: ThemeConfig<NoInfer<S>>,\n): ThemeEntry {\n return { id: spec.id, config: config as ThemeEntry[\"config\"] };\n}\n\nimport { getOrCreateGlobalContext } from \"@/kernel/context-registry\";\n\nconst EMPTY: ReadonlyMap<string, ThemeEntry[\"config\"]> = new Map();\nconst ThemeContext = getOrCreateGlobalContext<\n ReadonlyMap<string, ThemeEntry[\"config\"]>\n>(\"ThemeContext\", EMPTY);\n\nexport function ThemeProvider({\n children,\n themes,\n}: {\n children?: ReactNode;\n themes: readonly ThemeEntry[];\n}) {\n const configs = new Map(themes.map((entry) => [entry.id, entry.config]));\n return createElement(ThemeContext.Provider, { value: configs }, children);\n}\n\nexport function useTheme<S extends string>(\n spec: ThemeSpec<S>,\n): ResolvedTheme<S> {\n const config = useContext(ThemeContext).get(spec.id);\n if (!config) {\n throw new Error(\n `Theme \"${spec.id}\" is missing. Add its theme file to src/config/ and list it in src/config/index.ts.`,\n );\n }\n return {\n slots: config.slots,\n styles: config.styles ?? {},\n } as ResolvedTheme<S>;\n}\n","import { defineThemeSpec } from \"../theme\";\nimport { 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_TRANSACTION_EVENTS = Object.freeze({\n START: \"START\",\n COMPLETE: \"COMPLETE\",\n CANCEL: \"CANCEL\",\n FAIL: \"FAIL\",\n TIME_OUT: \"TIME_OUT\",\n} as const);\n\nexport const DOCK_TRANSACTION_STATUS = Object.freeze({\n PENDING: \"pending\",\n COMPLETED: \"completed\",\n CANCELLED: \"cancelled\",\n FAILED: \"failed\",\n TIMED_OUT: \"timed-out\",\n} as const);\n\nexport const DOCK_TRANSACTION_REASON = Object.freeze({\n GUARD: \"guard\",\n SUPERSEDED: \"superseded\",\n TIME_OUT: \"time-out\",\n} as const);\n\nexport const DOCK_TRANSACTION_TIMEOUT_MS = 15_000;\nexport const DOCK_PREFETCH_INTENT_DELAY_MS = 90;\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>(\"dock\");\n","import {\n normalizePath,\n isObject as isObjectLike,\n trimToNull,\n cn,\n isPlainObject,\n createScheduler,\n type CoreSchedulerOptions,\n} from \"@/utils\";\nimport { isValidElement, type ReactNode, type CSSProperties } from \"react\";\nimport {\n type DockComponent,\n type DockVisualStyleSection,\n type DockItem,\n type DockHudDescriptor,\n type NormalizedSurfaceExtension,\n type SurfaceDescriptor,\n type DockTheme,\n type SurfaceExtension,\n type SurfaceFlowDefinition,\n type SurfaceFlowReturnInput,\n type SurfaceReturnHandshake,\n type SurfaceReturnHandshakeInput,\n} from \"./types\";\nimport {\n DOCK_FOCUSABLE_SELECTOR,\n DOCK_FOCUS_RESTORE_BLOCKED_REASONS,\n} from \"./constants\";\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\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 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 toObject(value: unknown): Record<string, unknown> {\n return isObjectLike(value) ? value : {};\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 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 type DockStyleInput = DockVisualStyleSection;\n\nexport function normalizeUpper(value: unknown): string {\n return String(value || \"\")\n .trim()\n .toUpperCase();\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: DockTheme[\"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\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\ntype AncestorAwareItem = DockItem & {\n keepWhenDescendant?:\n boolean | ((activePath: string, item: DockItem) => boolean);\n statusType?: string;\n};\n\nfunction 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 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\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 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 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 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\" ||\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\nexport function createDockScheduler(options: CoreSchedulerOptions = {}) {\n return createScheduler({\n defaultLabel: \"dock-task\",\n ...options,\n });\n}\n","\"use client\";\n\nimport {\n createContext,\n use,\n useCallback,\n useEffect,\n useMemo,\n type ReactNode,\n} from \"react\";\nimport { createStore } from \"@/utils\";\nimport {\n type NormalizedSurfaceExtension,\n type DockSlotContent,\n type SurfaceId,\n} from \"../types\";\nimport { normalizeSurfaceExtension } from \"../utils\";\n\nexport type SurfaceKey = SurfaceId | string | null | undefined;\n\nexport const SurfaceExtensionsContext = createContext<{\n extensions: SurfaceExtensionsStore;\n headerActions: SurfaceHeaderActionStore;\n} | null>(null);\n\nexport const SurfaceItemContext = createContext<{\n id: SurfaceKey;\n width: number | string | null;\n}>({\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) : \"global\";\n const { actionsBySurface } = this.store.getSnapshot();\n return actionsBySurface[sId] ?? actionsBySurface.global ?? null;\n };\n\n setAction = (surfaceId: SurfaceKey, action: DockSlotContent) => {\n const sId = surfaceId != null ? String(surfaceId) : \"global\";\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) : \"global\";\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) : \"global\";\n if (this.cachedListBySurface.has(sId))\n return this.cachedListBySurface.get(sId)!;\n\n const globalExts = this.extensionsBySurface.get(\"global\");\n const surfaceExts = this.extensionsBySurface.get(sId);\n\n if (!globalExts && !surfaceExts) {\n const empty: NormalizedSurfaceExtension[] = [];\n this.cachedListBySurface.set(sId, empty);\n return empty;\n }\n\n const merged = new Map([...(globalExts || []), ...(surfaceExts || [])]);\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) : \"global\";\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) : \"global\";\n const surfaceMap = this.extensionsBySurface.get(sId);\n if (!surfaceMap || !surfaceMap.has(extensionId)) return;\n\n surfaceMap.delete(extensionId);\n if (surfaceMap.size === 0) this.extensionsBySurface.delete(sId);\n this.notify();\n };\n\n clearSurface = (surfaceId: SurfaceKey) => {\n const sId = surfaceId != null ? String(surfaceId) : \"global\";\n if (!this.extensionsBySurface.has(sId)) return;\n this.extensionsBySurface.delete(sId);\n this.notify();\n };\n}\n","\"use client\";\n\nimport { use, type Context } from \"react\";\n\nexport function useRequiredContext<T>(\n context: Context<T | null>,\n hookName: string,\n providerName: string,\n): T {\n const value = use(context);\n if (value === null) {\n throw new Error(`${hookName} must be used within ${providerName}`);\n }\n return value;\n}\n","\"use client\";\n\nimport { useCallback, useRef, useSyncExternalStore } from \"react\";\nimport { type ExternalStore } from \"../utils\";\n\nexport function useStore<TState, TSlice = TState>(\n store: ExternalStore<TState>,\n selector: (state: TState) => TSlice = (state: TState) =>\n state as unknown as TSlice,\n isEqual: (a: TSlice, b: TSlice) => boolean = Object.is,\n): TSlice {\n const cacheRef = useRef<{\n isEqual: ((a: TSlice, b: TSlice) => boolean) | null;\n selected: TSlice | undefined;\n selector: ((state: TState) => TSlice) | null;\n snapshot: TState | null;\n }>({\n isEqual: null,\n selected: undefined,\n selector: null,\n snapshot: null,\n });\n\n const getSelectedSnapshot = useCallback(() => {\n const snapshot = store.getSnapshot();\n const cache = cacheRef.current;\n if (\n cache.snapshot === snapshot &&\n cache.selector === selector &&\n cache.isEqual === isEqual\n ) {\n return cache.selected as TSlice;\n }\n\n const selected = selector(snapshot);\n if (\n cache.snapshot !== null &&\n cache.isEqual === isEqual &&\n isEqual(cache.selected as TSlice, selected)\n ) {\n cache.snapshot = snapshot;\n cache.selector = selector;\n return cache.selected as TSlice;\n }\n\n cacheRef.current = {\n isEqual,\n selected,\n selector,\n snapshot,\n };\n return selected;\n }, [isEqual, selector, store]);\n\n return useSyncExternalStore(\n store.subscribe,\n getSelectedSnapshot,\n getSelectedSnapshot,\n );\n}\n","\"use client\";\n\nimport { useCallback, useEffect, type RefObject } from \"react\";\n\nexport function useClickOutside<T extends HTMLElement = HTMLElement>(\n ref: RefObject<T | null> | null | undefined,\n callback?: (event: PointerEvent) => void,\n): void {\n const handlePointer = useCallback(\n (event: PointerEvent) => {\n if (ref?.current && !ref.current.contains(event.target as Node)) {\n callback?.(event);\n }\n },\n [callback, ref],\n );\n\n useEffect(() => {\n document.addEventListener(\"pointerdown\", handlePointer);\n return () => document.removeEventListener(\"pointerdown\", handlePointer);\n }, [handlePointer]);\n}\n","\"use client\";\n\nimport { useEffect, useLayoutEffect } from \"react\";\nimport { isBrowser } from \"../utils\";\n\nexport const useIsomorphicLayoutEffect = isBrowser\n ? useLayoutEffect\n : useEffect;\n","import { report } from \"./utils/report\";\nexport type EventListener<T = unknown> = (payload: T) => void;\n\nexport const EVENT_TYPES = Object.freeze({\n API_UNAUTHORIZED: \"API_UNAUTHORIZED\",\n STATE_CHANGE: \"STATE_CHANGE\",\n API_ERROR: \"API_ERROR\",\n APP_ERROR: \"APP_ERROR\",\n} as const);\n\nexport interface FrameworkEventMap {\n [EVENT_TYPES.API_UNAUTHORIZED]: {\n error?: unknown;\n status?: number;\n [key: string]: unknown;\n };\n [EVENT_TYPES.API_ERROR]: {\n error: unknown;\n isCritical?: boolean;\n message?: string;\n retry?: () => void;\n status?: number;\n [key: string]: unknown;\n };\n [EVENT_TYPES.APP_ERROR]: {\n error?: unknown;\n message?: string;\n resetError?: () => void;\n source?: string;\n [key: string]: unknown;\n };\n [EVENT_TYPES.STATE_CHANGE]: {\n message?: string;\n status?: \"success\" | \"warning\" | \"info\" | \"error\" | string;\n [key: string]: unknown;\n };\n}\n\nexport class EventEmitter<TEvents extends object = FrameworkEventMap> {\n private events: Map<string, Set<EventListener<never>>> = new Map();\n private debounceTimers: Map<string, ReturnType<typeof setTimeout>> =\n new Map();\n\n subscribe<K extends keyof TEvents>(\n event: K,\n callback: EventListener<TEvents[K]>,\n ): () => void;\n subscribe<T = unknown>(event: string, callback: EventListener<T>): () => void;\n subscribe(event: string, callback: EventListener<never>): () => void {\n if (typeof event !== \"string\" || !event || typeof callback !== \"function\") {\n return () => {};\n }\n const listeners = this.events.get(event) || new Set<EventListener<never>>();\n listeners.add(callback);\n this.events.set(event, listeners);\n\n return () => {\n listeners.delete(callback);\n if (listeners.size === 0) this.events.delete(event);\n };\n }\n\n emit<K extends keyof TEvents>(\n event: K,\n ...args: TEvents[K] extends void | undefined\n ? [payload?: TEvents[K]]\n : [payload: TEvents[K]]\n ): void;\n emit<T = unknown>(event: string, payload?: T): void;\n emit(event: string, payload?: unknown): void {\n const listeners = this.events.get(event);\n if (!listeners || listeners.size === 0) return;\n const snapshot = Array.from(listeners);\n for (const callback of snapshot) {\n try {\n (callback as EventListener<unknown>)(payload);\n } catch (error) {\n report(`Event listener (${String(event)})`, error);\n }\n }\n }\n\n emitDebounced<K extends keyof TEvents>(\n event: K,\n payload: TEvents[K],\n waitMs?: number,\n ): void;\n emitDebounced<T = unknown>(event: string, payload?: T, waitMs?: number): void;\n emitDebounced(event: string, payload?: unknown, waitMs: number = 100): void {\n const existing = this.debounceTimers.get(event);\n if (existing) clearTimeout(existing);\n\n const timer = setTimeout(() => {\n this.debounceTimers.delete(event);\n this.emit(event, payload);\n }, waitMs);\n\n this.debounceTimers.set(event, timer);\n }\n\n cancelDebounced(event?: string): void {\n if (event) {\n const timer = this.debounceTimers.get(event);\n if (timer) {\n clearTimeout(timer);\n this.debounceTimers.delete(event);\n }\n } else {\n for (const timer of this.debounceTimers.values()) {\n clearTimeout(timer);\n }\n this.debounceTimers.clear();\n }\n }\n\n unsubscribeAll(event?: string): void {\n this.cancelDebounced(event);\n if (event) this.events.delete(event);\n else this.events.clear();\n }\n\n hasListeners(event: string): boolean {\n return Boolean(this.events.get(event)?.size);\n }\n\n getListenerCount(event: string): number {\n return this.events.get(event)?.size || 0;\n }\n\n getAllEvents(): string[] {\n return [...this.events.keys()];\n }\n}\n\nconst GLOBAL_EVENTS_KEY = Symbol.for(\"__base_framework_global_events__\");\ntype GlobalWithEvents = typeof globalThis & {\n [GLOBAL_EVENTS_KEY]?: EventEmitter<FrameworkEventMap>;\n};\n\nconst _global = globalThis as GlobalWithEvents;\nexport const globalEvents: EventEmitter<FrameworkEventMap> =\n _global[GLOBAL_EVENTS_KEY] ??\n (_global[GLOBAL_EVENTS_KEY] = new EventEmitter<FrameworkEventMap>());\n","\"use client\";\n\nimport { useEffect, useRef } from \"react\";\nimport { globalEvents, type FrameworkEventMap } from \"@/events\";\nimport { useIsomorphicLayoutEffect } from \"./use-isomorphic-layout-effect\";\nimport { UseGlobalEventOptions } from \"./types\";\n\nexport function useGlobalEvent<K extends keyof FrameworkEventMap>(\n event: K | K[] | null | undefined,\n callback: (payload: FrameworkEventMap[K]) => void,\n options?: UseGlobalEventOptions,\n): void;\n\nexport function useGlobalEvent<T = unknown>(\n event: string | string[] | null | undefined,\n callback: (payload: T) => void,\n options?: UseGlobalEventOptions,\n): void;\n\nexport function useGlobalEvent(\n event: string | string[] | null | undefined,\n callback: (payload: never) => void,\n options?: UseGlobalEventOptions,\n): void {\n const callbackRef = useRef(callback);\n const debounceTimerRef = useRef<ReturnType<typeof setTimeout> | null>(null);\n const lastThrottleTimeRef = useRef<number>(0);\n const throttleTimerRef = useRef<ReturnType<typeof setTimeout> | null>(null);\n\n useIsomorphicLayoutEffect(() => {\n callbackRef.current = callback;\n });\n\n const debounceMs = options?.debounceMs;\n const throttleMs = options?.throttleMs;\n\n useEffect(() => {\n if (!event) return;\n const events = Array.isArray(event) ? event.filter(Boolean) : [event];\n if (events.length === 0) return;\n\n const handler = (payload: never) => {\n if (debounceMs != null && debounceMs > 0) {\n if (debounceTimerRef.current !== null) {\n clearTimeout(debounceTimerRef.current);\n }\n debounceTimerRef.current = setTimeout(() => {\n debounceTimerRef.current = null;\n callbackRef.current?.(payload);\n }, debounceMs);\n return;\n }\n\n if (throttleMs != null && throttleMs > 0) {\n const now = Date.now();\n const remaining = throttleMs - (now - lastThrottleTimeRef.current);\n if (remaining <= 0) {\n if (throttleTimerRef.current !== null) {\n clearTimeout(throttleTimerRef.current);\n throttleTimerRef.current = null;\n }\n lastThrottleTimeRef.current = now;\n callbackRef.current?.(payload);\n } else if (throttleTimerRef.current === null) {\n throttleTimerRef.current = setTimeout(() => {\n lastThrottleTimeRef.current = Date.now();\n throttleTimerRef.current = null;\n callbackRef.current?.(payload);\n }, remaining);\n }\n return;\n }\n\n callbackRef.current?.(payload);\n };\n\n const unsubs = events.map((ev) => globalEvents.subscribe(ev, handler));\n\n return () => {\n unsubs.forEach((unsub) => unsub());\n if (debounceTimerRef.current !== null) {\n clearTimeout(debounceTimerRef.current);\n debounceTimerRef.current = null;\n }\n if (throttleTimerRef.current !== null) {\n clearTimeout(throttleTimerRef.current);\n throttleTimerRef.current = null;\n }\n };\n }, [event, debounceMs, throttleMs]);\n}\n","import type {\n RegistryLifecycle,\n RegistryScopeKind,\n RegistrySource,\n RegistryValidationMode,\n} from \"./types\";\n\nexport const DEFAULT_SOURCE: RegistrySource = \"dynamic\";\n\nexport const REGISTRY_SOURCES: Readonly<Record<string, RegistrySource>> =\n Object.freeze({\n STATIC: \"static\",\n DYNAMIC: \"dynamic\",\n USER: \"user\",\n });\n\nexport const REGISTRY_LIFECYCLES: Readonly<Record<string, RegistryLifecycle>> =\n Object.freeze({\n IMMEDIATE: \"immediate\",\n GRACEFUL: \"graceful\",\n PERSISTENT: \"persistent\",\n ROUTE: \"route\",\n });\n\nexport const REGISTRY_VALIDATION_MODES: Readonly<\n Record<string, RegistryValidationMode>\n> = Object.freeze({\n WARN: \"warn\",\n STRICT: \"strict\",\n});\n\nexport const REGISTRY_METADATA_KEYS: readonly string[] = Object.freeze([\n \"cleanup\",\n \"cleanupDelayMs\",\n \"instanceId\",\n \"lifecycle\",\n \"priority\",\n \"source\",\n \"scope\",\n \"validation\",\n]);\n\nexport const REGISTRY_SOURCE_PRIORITY: Readonly<Record<string, number>> =\n Object.freeze({\n [REGISTRY_SOURCES.STATIC]: 100,\n [REGISTRY_SOURCES.DYNAMIC]: 200,\n [REGISTRY_SOURCES.USER]: 300,\n });\n\nexport const REGISTRY_SOURCE_RANK: Readonly<Record<string, number>> =\n Object.freeze({\n [REGISTRY_SOURCES.STATIC]: 10,\n [REGISTRY_SOURCES.DYNAMIC]: 20,\n [REGISTRY_SOURCES.USER]: 30,\n });\n\nexport const REGISTRY_LIFECYCLE_VALUES: ReadonlySet<string> = new Set(\n Object.values(REGISTRY_LIFECYCLES),\n);\n\nexport const REGISTRY_METADATA_KEY_SET: ReadonlySet<string> = new Set(\n REGISTRY_METADATA_KEYS,\n);\n\nconst REGISTRY_SCOPE_KINDS: Readonly<Record<string, RegistryScopeKind>> =\n Object.freeze({\n APP: \"app\",\n SESSION: \"session\",\n ROUTE: \"route\",\n INSTANCE: \"instance\",\n WORKSPACE: \"workspace\",\n });\n\nexport const DEFAULT_REGISTRY_SCOPE: RegistryScopeKind =\n REGISTRY_SCOPE_KINDS.APP;\n","import {\n DEFAULT_REGISTRY_SCOPE,\n DEFAULT_SOURCE,\n REGISTRY_SOURCE_RANK,\n} from \"./constants\";\nimport type { RegistryMetadata } from \"./types\";\nimport {\n isObject,\n isPlainObject,\n shallowEqual,\n trimToNull,\n} from \"@/utils\";\n\nexport { isObject, isPlainObject, shallowEqual };\n\nexport function hasOwnProperty(target: object, key: string): boolean {\n return Object.prototype.hasOwnProperty.call(target, key);\n}\n\nexport function parseFiniteNumber(value: unknown): number | null {\n const parsed = Number(value);\n return Number.isFinite(parsed) ? parsed : null;\n}\n\nexport function getValidString(\n value: unknown,\n fallback: string | null = null,\n): string | null {\n return trimToNull(value) ?? fallback;\n}\n\nexport function resolveInstanceId(value: unknown): string | null {\n return isObject(value) && typeof value.instanceId === \"string\"\n ? value.instanceId\n : null;\n}\n\nexport function getSourceRank(source: string): number {\n return REGISTRY_SOURCE_RANK[source] ?? 0;\n}\n\nexport function resolveRegisterInput(\n sourceOrOptions: unknown,\n optionsArg?: unknown,\n): { source: string; options: RegistryMetadata } {\n if (typeof sourceOrOptions === \"string\") {\n return {\n source: sourceOrOptions,\n options: isObject(optionsArg) ? optionsArg : {},\n };\n }\n if (isObject(sourceOrOptions)) {\n return {\n source:\n typeof sourceOrOptions.source === \"string\"\n ? sourceOrOptions.source\n : DEFAULT_SOURCE,\n options: sourceOrOptions,\n };\n }\n return {\n source: DEFAULT_SOURCE,\n options: isObject(optionsArg) ? optionsArg : {},\n };\n}\n\nexport function resolveScope(\n options: RegistryMetadata | null | undefined,\n): string {\n return typeof options?.scope === \"string\" && options.scope.trim()\n ? options.scope.trim()\n : DEFAULT_REGISTRY_SCOPE;\n}\n\nexport function resolveUnregisterInput(sourceOrOptions: unknown): {\n instanceId: string | null;\n scope: string | null;\n source: string;\n} {\n if (typeof sourceOrOptions === \"string\") {\n return { instanceId: null, scope: null, source: sourceOrOptions };\n }\n if (isObject(sourceOrOptions)) {\n return {\n instanceId: resolveInstanceId(sourceOrOptions),\n scope:\n typeof sourceOrOptions.scope === \"string\" &&\n sourceOrOptions.scope.trim()\n ? sourceOrOptions.scope.trim()\n : null,\n source:\n typeof sourceOrOptions.source === \"string\"\n ? sourceOrOptions.source\n : DEFAULT_SOURCE,\n };\n }\n return { instanceId: null, scope: null, source: DEFAULT_SOURCE };\n}\n\nexport function mergeModuleConfigs<T extends object>(\n base: T,\n patch: Partial<T>,\n): T {\n const source = base as Record<string, unknown>;\n const changes = patch as Record<string, unknown>;\n const result: Record<string, unknown> = { ...source };\n Object.keys(changes).forEach((key) => {\n const baseVal = source[key];\n const patchVal = changes[key];\n if (\n baseVal &&\n typeof baseVal === \"object\" &&\n !Array.isArray(baseVal) &&\n patchVal &&\n typeof patchVal === \"object\" &&\n !Array.isArray(patchVal)\n ) {\n result[key] = { ...baseVal, ...patchVal };\n } else {\n result[key] = patchVal;\n }\n });\n return result as T;\n}\n","import {\n DEFAULT_SOURCE,\n REGISTRY_LIFECYCLE_VALUES,\n REGISTRY_LIFECYCLES,\n REGISTRY_METADATA_KEY_SET,\n REGISTRY_METADATA_KEYS,\n REGISTRY_SOURCES,\n REGISTRY_VALIDATION_MODES,\n} from \"./constants\";\nimport {\n getValidString,\n isObject,\n isPlainObject,\n parseFiniteNumber,\n} from \"./utils\";\nimport type {\n NormalizedRegistryMetadata,\n RegistryDefinitions,\n RegistryLifecycle,\n RegistryMetadata,\n RegistryValidationMode,\n ValidationResult,\n} from \"./types\";\n\nexport {\n DEFAULT_SOURCE,\n REGISTRY_LIFECYCLES,\n REGISTRY_SOURCES,\n REGISTRY_VALIDATION_MODES,\n};\n\nfunction resolveLifecycle(\n metadata: RegistryMetadata | null | undefined,\n fallback: RegistryLifecycle | null,\n): RegistryLifecycle | null {\n const lifecycle = metadata?.lifecycle ?? metadata?.cleanup;\n return lifecycle && REGISTRY_LIFECYCLE_VALUES.has(lifecycle)\n ? lifecycle\n : fallback;\n}\n\nexport function validateRegistryMetadata(metadata: unknown): ValidationResult {\n if (metadata === undefined || metadata === null)\n return { issues: [], valid: true };\n if (!isObject(metadata))\n return { issues: [\"registry metadata must be an object\"], valid: false };\n\n const issues: string[] = [];\n\n Object.keys(metadata).forEach((key) => {\n if (!REGISTRY_METADATA_KEY_SET.has(key))\n issues.push(`unknown registry metadata field: ${key}`);\n });\n\n if (metadata.source !== undefined && !getValidString(metadata.source))\n issues.push(\"source must be a non-empty string\");\n if (metadata.instanceId !== undefined && !getValidString(metadata.instanceId))\n issues.push(\"instanceId must be a non-empty string\");\n if (metadata.scope !== undefined && !getValidString(metadata.scope))\n issues.push(\"scope must be a non-empty string\");\n if (\n metadata.priority !== undefined &&\n parseFiniteNumber(metadata.priority) === null\n )\n issues.push(\"priority must be a finite number\");\n\n if (metadata.cleanupDelayMs !== undefined) {\n const delay = parseFiniteNumber(metadata.cleanupDelayMs);\n if (delay === null || delay < 0)\n issues.push(\"cleanupDelayMs must be a non-negative finite number\");\n }\n\n const lifecycle = metadata.lifecycle ?? metadata.cleanup;\n if (\n lifecycle !== undefined &&\n !REGISTRY_LIFECYCLE_VALUES.has(String(lifecycle))\n ) {\n issues.push(\n `lifecycle must be one of: ${[...REGISTRY_LIFECYCLE_VALUES].join(\", \")}`,\n );\n }\n\n if (\n metadata.validation !== undefined &&\n !Object.values<unknown>(REGISTRY_VALIDATION_MODES).includes(\n metadata.validation,\n )\n ) {\n issues.push(\n `validation must be one of: ${Object.values(REGISTRY_VALIDATION_MODES).join(\", \")}`,\n );\n }\n\n return { issues, valid: issues.length === 0 };\n}\n\nexport function validateRegistryKey(\n type: string,\n key: unknown,\n definitions: RegistryDefinitions,\n): ValidationResult {\n const definition = definitions.get(type);\n const issues: string[] = [];\n\n if (!definition) issues.push(`unknown registry type: ${String(type)}`);\n if (!getValidString(key))\n return {\n issues: [...issues, \"key must be a non-empty string\"],\n valid: false,\n };\n\n const normalizedKey = String(key).trim();\n\n if (definition?.keyPolicy === \"singleton\") {\n const expectedKey = definition.singletonKey;\n if (expectedKey && normalizedKey !== expectedKey)\n issues.push(`${type} key must be ${expectedKey}`);\n } else if (definition?.keyPolicy === \"path\") {\n if (!normalizedKey.startsWith(\"/\"))\n issues.push(`${type} key must be an absolute path`);\n } else if (definition?.keyPolicy === \"route\") {\n if (\n !normalizedKey.startsWith(\"/\") &&\n !definition.reservedKeys?.includes(normalizedKey)\n ) {\n issues.push(`${type} key must be a route path or a reserved route key`);\n }\n }\n\n return { issues, valid: issues.length === 0 };\n}\n\nexport function validateRegistryValue(\n type: string,\n key: unknown,\n value: unknown,\n definitions: RegistryDefinitions,\n): ValidationResult {\n const definition = definitions.get(type);\n const issues = [...validateRegistryKey(type, key, definitions).issues];\n const valueKind = definition?.valueKind ?? \"object\";\n\n if (definition && valueKind === \"object\" && !isPlainObject(value)) {\n issues.push(`${type} values must be plain objects`);\n }\n if (\n definition &&\n valueKind === \"component\" &&\n typeof value !== \"function\" &&\n !isPlainObject(value)\n ) {\n issues.push(\n `${type} values must be component functions or component objects`,\n );\n }\n\n const validation = definition?.validate?.(value);\n if (validation && !validation.valid && Array.isArray(validation.issues)) {\n issues.push(...validation.issues);\n }\n\n return { issues, valid: issues.length === 0 };\n}\n\nexport function normalizeRegistryMetadata(\n metadata: unknown,\n {\n defaultCleanupDelayMs = null,\n defaultLifecycle = null,\n defaultSource = DEFAULT_SOURCE,\n }: {\n defaultCleanupDelayMs?: number | null;\n defaultLifecycle?: RegistryLifecycle | null;\n defaultSource?: string;\n } = {},\n): NormalizedRegistryMetadata {\n const registryMeta = isObject(metadata) ? metadata : {};\n\n const normalizedDefaultDelay = parseFiniteNumber(defaultCleanupDelayMs);\n const fallbackCleanupDelayMs =\n normalizedDefaultDelay !== null && normalizedDefaultDelay >= 0\n ? normalizedDefaultDelay\n : null;\n const fallbackLifecycle =\n defaultLifecycle && REGISTRY_LIFECYCLE_VALUES.has(defaultLifecycle)\n ? defaultLifecycle\n : null;\n\n const source =\n getValidString(registryMeta.source) ||\n getValidString(defaultSource, DEFAULT_SOURCE) ||\n DEFAULT_SOURCE;\n const scope = getValidString(registryMeta.scope);\n const priority = parseFiniteNumber(registryMeta.priority);\n const lifecycle = resolveLifecycle(registryMeta, fallbackLifecycle);\n const validation = isValidationMode(registryMeta.validation)\n ? registryMeta.validation\n : null;\n\n const cleanupDelayCandidate = parseFiniteNumber(registryMeta.cleanupDelayMs);\n let cleanupDelayMs =\n cleanupDelayCandidate !== null && cleanupDelayCandidate >= 0\n ? cleanupDelayCandidate\n : fallbackCleanupDelayMs;\n\n if (lifecycle === REGISTRY_LIFECYCLES.IMMEDIATE) {\n cleanupDelayMs = 0;\n } else if (\n (lifecycle === REGISTRY_LIFECYCLES.GRACEFUL ||\n lifecycle === REGISTRY_LIFECYCLES.ROUTE) &&\n cleanupDelayMs === null\n ) {\n cleanupDelayMs = fallbackCleanupDelayMs;\n }\n\n return {\n cleanupDelayMs,\n lifecycle,\n priority,\n registerOptions: {\n ...(priority !== null && { priority }),\n ...(validation === REGISTRY_VALIDATION_MODES.STRICT && { validation }),\n ...(scope && { scope }),\n },\n source,\n ...(scope && { scope }),\n ...(validation && { validation }),\n };\n}\n\nfunction isValidationMode(value: unknown): value is RegistryValidationMode {\n return Object.values<unknown>(REGISTRY_VALIDATION_MODES).includes(value);\n}\n\nexport function pickRegistryMetadata(options: unknown): RegistryMetadata {\n if (!isObject(options)) return {};\n return Object.fromEntries(\n REGISTRY_METADATA_KEYS.filter((key) => options[key] !== undefined).map(\n (key) => [key, options[key]],\n ),\n );\n}\n","import { isValidElement } from \"react\";\nimport {\n createRecordKey,\n createRegisterOperation,\n createRegistryOperations,\n createUnregisterOperation,\n type RegistryOperations,\n} from \"./operations\";\nimport {\n DEFAULT_SOURCE,\n REGISTRY_SOURCES,\n REGISTRY_VALIDATION_MODES,\n validateRegistryMetadata,\n validateRegistryValue,\n} from \"./schema\";\nimport { createRegistryTransaction } from \"./runtime\";\nimport type {\n AppRegistryEntry,\n RegisterOperation,\n RegistrationHandle,\n RegistryDefinitions,\n RegistryMetadata,\n RegistryOperation,\n RegistryQueue,\n RegistrySourceOrOptions,\n RegistryState,\n RegistryStore,\n RegistryTransactionQueue,\n} from \"./types\";\nimport { report } from \"@/utils\";\n\nexport type InitialRegistryEntries = readonly AppRegistryEntry[];\n\nconst NO_DEFINITIONS: RegistryDefinitions = new Map();\n\nfunction createNoopHandle(\n status: RegistrationHandle[\"status\"] = \"rejected\",\n reason = \"unknown\",\n): RegistrationHandle {\n const handle: RegistrationHandle = Object.assign(() => false, {\n active: false,\n dispose: () => false,\n instanceId: null,\n key: \"\",\n priority: 0,\n reason,\n source: \"\",\n status,\n type: \"\",\n update: (): RegistrationHandle => handle,\n updatedAt: 0,\n validation: \"warn\",\n });\n return handle;\n}\n\nconst NOOP_HANDLE: RegistrationHandle = createNoopHandle();\n\nfunction isNoopHandle(handle: RegistrationHandle | null | undefined): boolean {\n return (\n handle === NOOP_HANDLE ||\n handle?.status === \"rejected\" ||\n handle?.status === \"ignored\"\n );\n}\n\nfunction cloneRegistryValue<T>(\n value: T,\n seen = new WeakMap<object, unknown>(),\n): T {\n if (value === null || typeof value !== \"object\" || isValidElement(value)) {\n return value;\n }\n\n const prototype = Object.getPrototypeOf(value);\n const isPlainObject =\n !Array.isArray(value) &&\n (prototype === Object.prototype || prototype === null);\n\n if (!Array.isArray(value) && !isPlainObject) return value;\n if (seen.has(value)) return seen.get(value) as T;\n\n const source = value as Record<string, unknown>;\n const clone = (Array.isArray(value) ? [] : {}) as Record<string, unknown>;\n seen.set(value, clone);\n\n for (const key in source) {\n if (Object.prototype.hasOwnProperty.call(source, key)) {\n clone[key] = cloneRegistryValue(source[key], seen);\n }\n }\n\n return clone as T;\n}\n\nfunction normalizeInitialEntries(entries: unknown): AppRegistryEntry[] {\n return (Array.isArray(entries) ? entries : []).filter(\n (entry): entry is AppRegistryEntry =>\n entry?.type && entry?.items && typeof entry.items === \"object\",\n );\n}\n\nfunction createInitialState(\n ops: RegistryOperations,\n definitions: RegistryDefinitions,\n entries: unknown,\n): RegistryState {\n const normalizedEntries = normalizeInitialEntries(entries);\n if (normalizedEntries.length === 0) return ops.createInitialRegistries();\n\n const timestamp = Date.now();\n let sequence = 0;\n let state = ops.createInitialRegistries();\n\n normalizedEntries.forEach((entry) => {\n const source = entry.source || REGISTRY_SOURCES.STATIC;\n const options: RegistryMetadata = {\n ...(entry.options || {}),\n instanceId:\n entry.instanceId || entry.options?.instanceId || \"registry-initial\",\n };\n\n Object.entries(entry.items).forEach(([key, value]) => {\n const validation = validateRegistration(\n definitions,\n entry.type,\n key,\n value,\n source,\n options,\n );\n if (!validation.valid) return;\n\n const operation = createRegisterOperation(\n entry.type,\n key,\n cloneRegistryValue(value),\n source,\n options,\n timestamp,\n ++sequence,\n );\n if (ops.hasOperationEffect(state, operation)) {\n state = ops.applyOperation(state, operation);\n }\n });\n });\n return state;\n}\n\nfunction notifyListeners(listeners: Set<() => void> | undefined): void {\n if (!listeners) return;\n for (const listener of listeners) {\n try {\n listener();\n } catch (error) {\n report(\"Registry listener\", error);\n }\n }\n}\n\nfunction getOrCreateKeyListeners(\n listenersByType: Map<string, Map<string | null, Set<() => void>>>,\n type: string,\n key: string | null,\n): Set<() => void> {\n let listeners = listenersByType.get(type);\n if (!listeners) {\n listeners = new Map();\n listenersByType.set(type, listeners);\n }\n let keyListeners = listeners.get(key);\n if (!keyListeners) {\n keyListeners = new Set();\n listeners.set(key, keyListeners);\n }\n return keyListeners;\n}\n\nfunction resolveRegistrationOptions(\n sourceOrOptions: RegistrySourceOrOptions | undefined,\n optionsArg?: RegistryMetadata,\n): RegistryMetadata {\n if (sourceOrOptions && typeof sourceOrOptions === \"object\")\n return sourceOrOptions;\n return optionsArg && typeof optionsArg === \"object\" ? optionsArg : {};\n}\n\nfunction validateRegistration(\n definitions: RegistryDefinitions,\n type: string,\n key: string,\n value: unknown,\n sourceOrOptions: RegistrySourceOrOptions | undefined,\n optionsArg?: RegistryMetadata,\n): { issues?: string[]; reason?: string; valid: boolean } {\n const options = resolveRegistrationOptions(sourceOrOptions, optionsArg);\n const metadataValidation = validateRegistryMetadata(options);\n const isStrict = options.validation === REGISTRY_VALIDATION_MODES.STRICT;\n\n if (!metadataValidation.valid && isStrict) {\n return {\n issues: metadataValidation.issues,\n reason: \"invalid-metadata\",\n valid: false,\n };\n }\n\n const validation = validateRegistryValue(type, key, value, definitions);\n if (validation.valid) return { valid: true };\n\n if (!isStrict) {\n report(`Registry ${type} \"${key}\" is invalid`, validation.issues, \"warn\");\n }\n\n return {\n issues: validation.issues,\n reason: \"invalid-value\",\n valid: !isStrict,\n };\n}\n\nfunction createRegistrationHandle(\n store: RegistryStore,\n operation: RegisterOperation,\n): RegistrationHandle {\n let disposed = false;\n const dispose = (reason = \"manual\") => {\n if (disposed) return false;\n disposed = true;\n return store.dispose(operation, reason);\n };\n\n const handle = ((reason?: string) => dispose(reason)) as RegistrationHandle;\n handle.dispose = dispose;\n\n handle.update = (value: unknown, options: RegistryMetadata = {}) => {\n if (disposed || !store.isCurrent(operation)) return NOOP_HANDLE;\n const nextHandle = store.register(\n operation.type,\n operation.key,\n value,\n operation.source,\n {\n ...(typeof options === \"object\" ? options : {}),\n instanceId: operation.instanceId,\n priority: operation.record.priority,\n ...(operation.scope ? { scope: operation.scope } : {}),\n ...(operation.validation ? { validation: operation.validation } : {}),\n },\n );\n if (isNoopHandle(nextHandle)) return handle;\n disposed = true;\n return nextHandle;\n };\n\n Object.defineProperties(handle, {\n active: {\n enumerable: true,\n get: () => !disposed && store.isCurrent(operation),\n },\n instanceId: { enumerable: true, value: operation.instanceId },\n key: { enumerable: true, value: operation.key },\n priority: { enumerable: true, value: operation.record.priority },\n source: { enumerable: true, value: operation.source },\n status: {\n enumerable: true,\n get: () =>\n disposed\n ? \"disposed\"\n : store.isCurrent(operation)\n ? \"active\"\n : \"superseded\",\n },\n type: { enumerable: true, value: operation.type },\n updatedAt: { enumerable: true, value: operation.record.updatedAt },\n validation: { enumerable: true, value: operation.validation || \"warn\" },\n });\n\n return handle as RegistrationHandle;\n}\n\nfunction prepareRegisterOperation(\n ops: RegistryOperations,\n definitions: RegistryDefinitions,\n type: string,\n key: string,\n item: unknown,\n sourceOrOptions: RegistrySourceOrOptions,\n optionsArg: RegistryMetadata,\n timestamp: number,\n sequence: number,\n): { operation: RegisterOperation } | { rejected: RegistrationHandle } {\n if (!ops.isValidRegistryTarget(type, key)) {\n return { rejected: createNoopHandle(\"rejected\", \"invalid-target\") };\n }\n\n const validation = validateRegistration(\n definitions,\n type,\n key,\n item,\n sourceOrOptions,\n optionsArg,\n );\n if (!validation.valid) {\n return { rejected: createNoopHandle(\"rejected\", validation.reason) };\n }\n\n return {\n operation: createRegisterOperation(\n type,\n key,\n cloneRegistryValue(item),\n sourceOrOptions,\n optionsArg,\n timestamp,\n sequence,\n ),\n };\n}\n\nexport function createRegistryStore(\n initialEntries: InitialRegistryEntries = [],\n definitions: RegistryDefinitions = NO_DEFINITIONS,\n): RegistryStore {\n const ops = createRegistryOperations(definitions);\n let registries = createInitialState(ops, definitions, initialEntries);\n let sequence = normalizeInitialEntries(initialEntries).reduce(\n (count, entry) => count + Object.keys(entry.items).length,\n 0,\n );\n\n const listenersByType = new Map<\n string,\n Map<string | null, Set<() => void>>\n >();\n const entrySnapshots = new Map<\n string,\n {\n typeRegistry: RegistryState[string];\n value: Readonly<Record<string, unknown>>;\n }\n >();\n const valueSnapshots = new Map<\n string,\n Map<\n string,\n { entry: RegistryState[string][string] | undefined; value: unknown }\n >\n >();\n const resolveCachedValue = ops.createResolverCache();\n\n const subscribe = (\n type: string,\n key: string | null | undefined,\n listener: () => void,\n ) => {\n const keyListeners = getOrCreateKeyListeners(\n listenersByType,\n type,\n key ?? null,\n );\n keyListeners.add(listener);\n\n return () => {\n keyListeners.delete(listener);\n if (keyListeners.size > 0) return;\n\n const listeners = listenersByType.get(type);\n if (listeners) {\n listeners.delete(key ?? null);\n if (listeners.size === 0) listenersByType.delete(type);\n }\n };\n };\n\n const commit = (\n nextState: RegistryState,\n operations: RegistryOperation[] = [],\n ) => {\n if (registries === nextState) return;\n const previousState = registries;\n registries = nextState;\n\n const changedKeysByType = new Map<string, Set<string>>();\n for (const operation of operations) {\n if (!ops.isValidRegistryTarget(operation?.type, operation?.key)) continue;\n let keys = changedKeysByType.get(operation.type);\n if (!keys) {\n keys = new Set();\n changedKeysByType.set(operation.type, keys);\n }\n keys.add(operation.key);\n }\n\n for (const [type, changedKeys] of changedKeysByType) {\n const previousRegistry = previousState[type] || {};\n const nextRegistry = nextState[type] || {};\n const typeListeners = listenersByType.get(type);\n let typeChanged = false;\n\n if (!typeListeners) continue;\n\n for (const key of changedKeys) {\n if (previousRegistry[key] === nextRegistry[key]) continue;\n typeChanged = true;\n notifyListeners(typeListeners.get(key));\n }\n\n if (typeChanged) {\n notifyListeners(typeListeners.get(null));\n }\n }\n };\n\n const isCurrent = (operation: RegisterOperation) => {\n const entry = registries[operation.type]?.[operation.key];\n const recordKey = createRecordKey(\n operation.source,\n operation.instanceId,\n operation.scope,\n );\n return entry?.[recordKey] === operation.record;\n };\n\n const dispose = (\n operation: RegisterOperation,\n _reason = \"manual\",\n ): boolean => {\n if (!isCurrent(operation)) return false;\n const unregisterOperation = createUnregisterOperation(\n operation.type,\n operation.key,\n {\n source: operation.source,\n instanceId: operation.instanceId,\n scope: operation.scope,\n },\n );\n\n if (!ops.hasOperationEffect(registries, unregisterOperation)) return false;\n commit(ops.applyOperation(registries, unregisterOperation), [\n unregisterOperation,\n ]);\n return true;\n };\n\n const register = (\n type: string,\n key: string,\n item: unknown,\n sourceOrOptions: RegistrySourceOrOptions = DEFAULT_SOURCE,\n optionsArg: RegistryMetadata = {},\n ): RegistrationHandle => {\n const prepared = prepareRegisterOperation(\n ops,\n definitions,\n type,\n key,\n item,\n sourceOrOptions,\n optionsArg,\n Date.now(),\n ++sequence,\n );\n if (\"rejected\" in prepared) return prepared.rejected;\n\n const { operation } = prepared;\n if (!ops.hasOperationEffect(registries, operation)) {\n return createNoopHandle(\"ignored\", \"unchanged\");\n }\n\n commit(ops.applyOperation(registries, operation), [operation]);\n return createRegistrationHandle(store, operation);\n };\n\n const unregister = (\n type: string,\n key: string,\n sourceOrOptions: RegistrySourceOrOptions = DEFAULT_SOURCE,\n ): void => {\n if (!ops.isValidRegistryTarget(type, key)) return;\n const operation = createUnregisterOperation(type, key, sourceOrOptions);\n if (!ops.hasOperationEffect(registries, operation)) return;\n\n commit(ops.applyOperation(registries, operation), [operation]);\n };\n\n const batch = (executor: (queue: RegistryQueue) => void): number => {\n if (typeof executor !== \"function\") return 0;\n const timestamp = Date.now();\n const operations: RegistryOperation[] = [];\n\n const queue: RegistryQueue = {\n register: (\n type: string,\n key: string,\n item: unknown,\n sourceOrOptions: RegistrySourceOrOptions = DEFAULT_SOURCE,\n optionsArg: RegistryMetadata = {},\n ): RegistrationHandle => {\n const prepared = prepareRegisterOperation(\n ops,\n definitions,\n type,\n key,\n item,\n sourceOrOptions,\n optionsArg,\n timestamp,\n ++sequence,\n );\n if (\"rejected\" in prepared) return prepared.rejected;\n\n operations.push(prepared.operation);\n return createRegistrationHandle(store, prepared.operation);\n },\n unregister: (\n type: string,\n key: string,\n sourceOrOptions: RegistrySourceOrOptions = DEFAULT_SOURCE,\n ): void => {\n if (!ops.isValidRegistryTarget(type, key)) return;\n operations.push(createUnregisterOperation(type, key, sourceOrOptions));\n },\n };\n\n executor(queue);\n if (operations.length === 0) return 0;\n\n const { effectiveOperations, nextState } = ops.resolveEffectiveOperations(\n registries,\n operations,\n );\n if (effectiveOperations.length === 0) return 0;\n\n commit(nextState, effectiveOperations);\n return effectiveOperations.length;\n };\n\n const getSnapshot = (\n type: string,\n key: string,\n scope: string | null = null,\n ): unknown => {\n const entry = registries[type]?.[key];\n let snapshots = valueSnapshots.get(type);\n if (!snapshots) {\n snapshots = new Map();\n valueSnapshots.set(type, snapshots);\n }\n\n const cacheKey = scope === null ? key : `${scope}\\u0000${key}`;\n\n if (entry === undefined) {\n snapshots.delete(cacheKey);\n return undefined;\n }\n\n const cached = snapshots.get(cacheKey);\n if (cached && cached.entry === entry) return cached.value;\n\n const value = resolveCachedValue(type, entry, scope);\n snapshots.set(cacheKey, { entry, value });\n return value;\n };\n\n const getEntriesSnapshot = (\n type: string,\n scope: string | null = null,\n ): Readonly<Record<string, unknown>> => {\n const typeRegistry = registries[type] || {};\n\n const cacheKey = `${type}::${scope ?? \"null\"}`;\n const cached = entrySnapshots.get(cacheKey);\n\n if (cached?.typeRegistry === typeRegistry) return cached.value;\n\n const resolved: Record<string, unknown> = {};\n for (const key in typeRegistry) {\n if (Object.prototype.hasOwnProperty.call(typeRegistry, key)) {\n const value = resolveCachedValue(type, typeRegistry[key], scope);\n if (value !== undefined) resolved[key] = value;\n }\n }\n\n const finalValue = Object.freeze(resolved);\n entrySnapshots.set(cacheKey, { typeRegistry, value: finalValue });\n return finalValue;\n };\n\n const store = {\n batch,\n dispose,\n getEntriesSnapshot,\n getSnapshot,\n isCurrent,\n register,\n subscribe,\n transaction: (\n executor: (tx: RegistryTransactionQueue) => void,\n metadata: RegistryMetadata = {},\n ) => createRegistryTransaction(store, metadata).run(executor),\n unregister,\n } as RegistryStore;\n return store;\n}\n","\"use client\";\n\nimport {\n createContext,\n useCallback,\n useMemo,\n useState,\n useSyncExternalStore,\n type ReactNode,\n} from \"react\";\nimport { useRequiredContext } from \"@/hooks\";\nimport type {\n RegistryDefinitions,\n RegistrySchema,\n RegistryStore,\n} from \"./types\";\nimport { createRegistryStore, type InitialRegistryEntries } from \"./store\";\n\ntype RegistryValueOf<K extends string> = K extends keyof RegistrySchema\n ? RegistrySchema[K]\n : unknown;\n\ninterface RegistryContextValue {\n actions: Pick<\n RegistryStore,\n \"batch\" | \"register\" | \"transaction\" | \"unregister\"\n >;\n subscription: Pick<\n RegistryStore,\n \"getEntriesSnapshot\" | \"getSnapshot\" | \"subscribe\"\n >;\n}\nimport { getOrCreateGlobalContext } from \"./context-registry\";\n\nconst RegistryContext = getOrCreateGlobalContext<RegistryContextValue | null>(\n \"RegistryContext\",\n null,\n);\n\nexport function RegistryProvider({\n children,\n definitions,\n initialEntries = [],\n}: {\n children?: ReactNode;\n definitions?: RegistryDefinitions;\n initialEntries?: InitialRegistryEntries;\n}) {\n const [store] = useState(() =>\n createRegistryStore(initialEntries, definitions),\n );\n\n const contextValue = useMemo(\n () => ({\n actions: {\n batch: store.batch,\n register: store.register,\n transaction: store.transaction,\n unregister: store.unregister,\n },\n subscription: {\n getEntriesSnapshot: store.getEntriesSnapshot,\n getSnapshot: store.getSnapshot,\n subscribe: store.subscribe,\n },\n }),\n [store],\n );\n\n return <RegistryContext value={contextValue}>{children}</RegistryContext>;\n}\n\nexport function useRegistryActions(): RegistryContextValue[\"actions\"] {\n return useRequiredContext(\n RegistryContext,\n \"useRegistryActions\",\n \"RegistryProvider\",\n ).actions;\n}\n\nfunction useRegistrySubscription(): RegistryContextValue[\"subscription\"] {\n return useRequiredContext(\n RegistryContext,\n \"useRegistrySubscription\",\n \"RegistryProvider\",\n ).subscription;\n}\n\nexport function useRegistryValue<\n K extends string = string,\n T = RegistryValueOf<K>,\n>(type: K, key: string): T | undefined {\n const { getSnapshot, subscribe } = useRegistrySubscription();\n\n const subscribeToKey = useCallback(\n (listener: () => void) => subscribe(type, key, listener),\n [key, subscribe, type],\n );\n const getValue = useCallback(\n () => getSnapshot<K, T>(type, key),\n [getSnapshot, key, type],\n );\n\n return useSyncExternalStore(subscribeToKey, getValue, getValue);\n}\n\nexport function useRegistryEntries<\n K extends string = string,\n T = RegistryValueOf<K>,\n>(type: K): Record<string, T> {\n const { getEntriesSnapshot, subscribe } = useRegistrySubscription();\n\n const subscribeToType = useCallback(\n (listener: () => void) => subscribe(type, null, listener),\n [subscribe, type],\n );\n const getEntries = useCallback(\n () => getEntriesSnapshot<K, T>(type),\n [getEntriesSnapshot, type],\n );\n\n return useSyncExternalStore(subscribeToType, getEntries, getEntries);\n}\n","\"use client\";\n\nimport { createContext, use, type ComponentType, type ReactNode } from \"react\";\nimport { isObject } from \"@/utils\";\nimport type {\n AnyCoreModule,\n PageConfig,\n RegistryDefinition,\n RegistryDefinitions,\n RegistryMetadata,\n} from \"./types\";\n\nexport type BoundaryComponent = ComponentType<{\n children?: ReactNode;\n name?: string;\n}>;\n\nexport interface ModuleHostValue {\n Boundary: BoundaryComponent;\n byId: ReadonlyMap<string, AnyCoreModule>;\n definitions: RegistryDefinitions;\n modules: readonly AnyCoreModule[];\n}\n\nexport const EMPTY_MODULES: readonly AnyCoreModule[] = Object.freeze([]);\n\nexport const PassthroughBoundary: BoundaryComponent = ({ children }) =>\n children;\nimport { getOrCreateGlobalContext } from \"./context-registry\";\n\nexport const ModuleHostContext =\n getOrCreateGlobalContext<ModuleHostValue | null>(\"ModuleHostContext\", null);\n\nexport function selectModuleSlice(\n coreModule: AnyCoreModule,\n config: PageConfig,\n): unknown {\n const slice = coreModule.page?.select\n ? coreModule.page.select(config)\n : (config as Record<string, unknown>)[coreModule.id];\n return slice ?? null;\n}\n\nexport function createModulePayload(\n modules: readonly AnyCoreModule[],\n config: PageConfig,\n metadata: RegistryMetadata = {},\n): PageConfig | null {\n const payload: Record<string, unknown> = {};\n let hasSlices = false;\n for (const coreModule of modules) {\n if (!coreModule.page?.entries) continue;\n const slice = selectModuleSlice(coreModule, config);\n if (slice === null) continue;\n payload[coreModule.id] = slice;\n hasSlices = true;\n }\n if (!hasSlices) return null;\n return {\n ...payload,\n registry: {\n ...metadata,\n ...(isObject(config.registry) ? config.registry : {}),\n },\n } as PageConfig;\n}\n\nconst MODULE_ID_PATTERN = /^[a-z][a-zA-Z0-9]*$/;\n\nexport function sortModules(\n modules: readonly AnyCoreModule[],\n): AnyCoreModule[] {\n const byId = new Map<string, AnyCoreModule>();\n for (const coreModule of modules) {\n if (!MODULE_ID_PATTERN.test(coreModule.id)) {\n throw new Error(\n `[Core] Invalid module id \"${coreModule.id}\": use a camelCase name such as \"contextMenu\".`,\n );\n }\n if (byId.has(coreModule.id)) {\n throw new Error(`[Core] Module \"${coreModule.id}\" is installed twice.`);\n }\n byId.set(coreModule.id, coreModule);\n }\n\n const sorted: AnyCoreModule[] = [];\n const state = new Map<string, \"visiting\" | \"done\">();\n const visit = (coreModule: AnyCoreModule, path: string[]) => {\n const current = state.get(coreModule.id);\n if (current === \"done\") return;\n if (current === \"visiting\") {\n throw new Error(\n `[Core] Module dependency cycle: ${[...path, coreModule.id].join(\" -> \")}`,\n );\n }\n state.set(coreModule.id, \"visiting\");\n for (const id of coreModule.uses ?? []) {\n const dependency = byId.get(id);\n if (dependency) visit(dependency, [...path, coreModule.id]);\n }\n state.set(coreModule.id, \"done\");\n sorted.push(coreModule);\n };\n modules.forEach((coreModule) => visit(coreModule, []));\n return sorted;\n}\n\nexport function createModuleRegistryDefinitions(\n modules: readonly AnyCoreModule[],\n): RegistryDefinitions {\n const definitions = new Map<string, RegistryDefinition>();\n for (const coreModule of modules) {\n if (coreModule.registry)\n definitions.set(coreModule.id, coreModule.registry);\n }\n return definitions;\n}\n\nexport function useInstalledModules(): readonly AnyCoreModule[] {\n return use(ModuleHostContext)?.modules ?? EMPTY_MODULES;\n}\n","import {\n DEFAULT_SOURCE,\n REGISTRY_LIFECYCLES,\n normalizeRegistryMetadata,\n validateRegistryMetadata,\n} from \"./schema\";\nimport { isObject } from \"./utils\";\nimport type {\n AnyCoreModule,\n PageConfig,\n RegistrationEntry,\n RegistryApplyContext,\n RegistryCleanupTimer,\n RegistryMetadata,\n RegistryQueue,\n} from \"./types\";\nimport { report } from \"@/utils\";\n\ntype CleanupScope = Map<string, RegistryCleanupTimer>;\n\nfunction isPersistentLifecycle(lifecycle: unknown): boolean {\n return lifecycle === REGISTRY_LIFECYCLES.PERSISTENT;\n}\n\nfunction runRegistrationBatch(\n context: RegistryApplyContext,\n executor: (queue: RegistryQueue) => void,\n): number | void {\n return typeof context.batch === \"function\"\n ? context.batch(executor)\n : executor(context);\n}\n\nfunction createEntryCleanupKey(\n type: string,\n key: string,\n source: string,\n instanceId: string | null,\n scope: string | undefined,\n): string {\n return JSON.stringify([\n \"entry\",\n type,\n key,\n scope ?? null,\n source,\n instanceId,\n ]);\n}\n\nfunction getCleanupScope(\n context: RegistryApplyContext | null | undefined,\n): CleanupScope {\n return context?.cleanupScope || new Map();\n}\n\nfunction clearCleanupTimer(scope: CleanupScope, cleanupKey: string): void {\n const lifecycle = scope.get(cleanupKey);\n if (!lifecycle) return;\n lifecycle.cancelled = true;\n if (lifecycle.timerId !== null) clearTimeout(lifecycle.timerId);\n scope.delete(cleanupKey);\n}\n\nfunction scheduleCleanup(\n scope: CleanupScope,\n cleanupKey: string,\n callback: () => void,\n delayMs: number,\n): void {\n clearCleanupTimer(scope, cleanupKey);\n const lifecycle: RegistryCleanupTimer = {\n cancelled: false,\n timerId: null,\n };\n\n lifecycle.timerId = setTimeout(() => {\n if (lifecycle.cancelled || scope.get(cleanupKey) !== lifecycle) return;\n scope.delete(cleanupKey);\n callback();\n }, delayMs);\n\n scope.set(cleanupKey, lifecycle);\n}\n\ntype ModuleRegistration = RegistrationEntry & {\n cleanupKey: string;\n type: string;\n};\n\nfunction collectModuleRegistrations(\n coreModule: AnyCoreModule,\n slice: unknown,\n pageMetadata: RegistryMetadata,\n context: RegistryApplyContext,\n): ModuleRegistration[] {\n const definition = coreModule.registry;\n const toEntries = coreModule.page?.entries;\n if (!definition || !toEntries || slice == null || slice === false) return [];\n\n const type = coreModule.id;\n const items = Array.isArray(slice) ? slice : [slice];\n const registrations: ModuleRegistration[] = [];\n\n for (const item of items) {\n if (item == null || item === false) continue;\n const itemMetadata =\n isObject(item) && isObject(item.registry) ? item.registry : {};\n const metadata = { ...pageMetadata, ...itemMetadata };\n if (\n metadata.validation === \"strict\" &&\n !validateRegistryMetadata(metadata).valid\n ) {\n continue;\n }\n\n const payload = isObject(item)\n ? Object.fromEntries(\n Object.entries(item).filter(([key]) => key !== \"registry\"),\n )\n : item;\n const { cleanupDelayMs, lifecycle, registerOptions, scope, source } =\n normalizeRegistryMetadata(metadata, {\n defaultCleanupDelayMs: definition.cleanupDelayMs ?? null,\n defaultLifecycle: definition.lifecycle,\n defaultSource: DEFAULT_SOURCE,\n });\n\n for (const { key, value } of toEntries(payload, context) ?? []) {\n const validation = definition.validate?.(value);\n if (validation && !validation.valid) {\n report(`Registry ${type} config is invalid`, validation.issues, \"warn\");\n continue;\n }\n registrations.push({\n cleanupDelayMs,\n cleanupKey: createEntryCleanupKey(\n type,\n key,\n source,\n context.instanceId,\n scope,\n ),\n key,\n lifecycle,\n registerOptions,\n scope,\n source,\n type,\n value,\n });\n }\n }\n return registrations;\n}\n\nconst NO_CLEANUP = () => {};\n\nexport function applyRegistryConfig(\n config: PageConfig | null | undefined,\n context: RegistryApplyContext,\n): () => void {\n const modules = context.modules ?? [];\n if (!config || modules.length === 0) return NO_CLEANUP;\n const pageMetadata = isObject(config.registry) ? config.registry : {};\n const slices = config as Record<string, unknown>;\n\n const registrations = modules.flatMap((coreModule) => {\n try {\n return collectModuleRegistrations(\n coreModule,\n slices[coreModule.id],\n pageMetadata,\n context,\n );\n } catch (error) {\n report(`Registry apply (${coreModule.id})`, error);\n return [];\n }\n });\n if (registrations.length === 0) return NO_CLEANUP;\n\n const cleanupScope = getCleanupScope(context);\n const owner = (registration: ModuleRegistration) => ({\n instanceId: context.instanceId,\n scope: registration.scope,\n source: registration.source,\n });\n\n runRegistrationBatch(context, (queue) => {\n registrations.forEach(\n ({ cleanupKey, key, registerOptions, source, type, value }) => {\n clearCleanupTimer(cleanupScope, cleanupKey);\n queue.register(type, key, value, source, registerOptions);\n },\n );\n });\n\n return () => {\n const immediate: ModuleRegistration[] = [];\n registrations.forEach((registration) => {\n if (isPersistentLifecycle(registration.lifecycle)) return;\n const { cleanupDelayMs, cleanupKey, key, type } = registration;\n if (typeof cleanupDelayMs === \"number\" && cleanupDelayMs > 0) {\n scheduleCleanup(\n cleanupScope,\n cleanupKey,\n () => context.unregister(type, key, owner(registration)),\n cleanupDelayMs,\n );\n } else {\n immediate.push(registration);\n }\n });\n if (immediate.length === 0) return;\n runRegistrationBatch(context, (queue) => {\n immediate.forEach((registration) =>\n queue.unregister(\n registration.type,\n registration.key,\n owner(registration),\n ),\n );\n });\n };\n}\n","\"use client\";\n\nimport { usePathname } from \"next/navigation\";\nimport { useIsomorphicLayoutEffect } from \"@/hooks\";\nimport {\n Children,\n cloneElement,\n isValidElement,\n useId,\n useMemo,\n useRef,\n useState,\n} from \"react\";\nimport { applyRegistryConfig } from \"./handlers\";\nimport { createModulePayload, useInstalledModules } from \"./installed\";\nimport { useRegistryActions } from \"./provider\";\nimport { isObject, shallowEqual } from \"@/utils\";\nimport type {\n PageConfig,\n RegistryCleanupTimer,\n RegistryApplyContext,\n RegistryMetadata,\n RegistryQueue,\n RegistrySourceOrOptions,\n StableFunctionEntry,\n AnyFunction,\n} from \"./types\";\n\nfunction withInstanceId(\n instanceId: string,\n sourceOrOptions: RegistrySourceOrOptions | undefined,\n optionsArg?: RegistryMetadata,\n): {\n optionsArg: RegistryMetadata | undefined;\n sourceOrOptions: RegistrySourceOrOptions;\n} {\n if (typeof sourceOrOptions === \"string\") {\n return {\n optionsArg: { ...(isObject(optionsArg) ? optionsArg : {}), instanceId },\n sourceOrOptions,\n };\n }\n if (isObject(sourceOrOptions)) {\n return {\n optionsArg,\n sourceOrOptions: { ...sourceOrOptions, instanceId },\n };\n }\n return {\n optionsArg: undefined,\n sourceOrOptions: {\n ...(isObject(optionsArg) ? optionsArg : {}),\n instanceId,\n },\n };\n}\n\nfunction withInstanceIdForUnregister(\n instanceId: string,\n sourceOrOptions: RegistrySourceOrOptions | undefined,\n): RegistryMetadata {\n if (typeof sourceOrOptions === \"string\") {\n return { instanceId, source: sourceOrOptions };\n }\n if (isObject(sourceOrOptions)) {\n return { ...sourceOrOptions, instanceId };\n }\n return { instanceId };\n}\n\nfunction resolveRegisterArgsWithInstance(\n instanceId: string,\n sourceOrOptions: RegistrySourceOrOptions | undefined,\n optionsArg?: RegistryMetadata,\n): [RegistrySourceOrOptions, RegistryMetadata | undefined] {\n const input = withInstanceId(instanceId, sourceOrOptions, optionsArg);\n return [input.sourceOrOptions, input.optionsArg];\n}\n\n/* eslint-disable react-hooks/refs */\nexport function useShallowStable<T extends object>(value: T): T {\n const ref = useRef(value);\n if (ref.current !== value && !shallowEqual(ref.current, value)) {\n ref.current = value;\n }\n return ref.current;\n}\n/* eslint-enable react-hooks/refs */\n\nconst MAX_STABILIZATION_DEPTH = 64;\n\nfunction createStableFunctionEntry(fn: AnyFunction): StableFunctionEntry {\n const entry: StableFunctionEntry = {\n current: fn,\n stable(this: unknown, ...args: unknown[]) {\n return entry.current?.apply(this, args);\n },\n };\n return entry;\n}\n\ninterface StabilizeScope {\n componentSlices: ReadonlySet<string>;\n functionEntries: Map<string, StableFunctionEntry>;\n usedPaths: Set<string>;\n}\n\nfunction isDirectRegistryComponentPath(\n path: string,\n componentSlices: ReadonlySet<string>,\n): boolean {\n const match = /^config\\.([^.[]+)\\.[^.[]+$/.exec(path);\n return Boolean(match && componentSlices.has(match[1]));\n}\n\nfunction isReactNodeLike(value: unknown): boolean {\n return (\n value === null ||\n value === undefined ||\n typeof value === \"boolean\" ||\n typeof value === \"string\" ||\n typeof value === \"number\" ||\n isValidElement(value)\n );\n}\n\nfunction isStabilizableObject(\n value: unknown,\n): value is Record<string, unknown> {\n return (\n typeof value === \"object\" &&\n value !== null &&\n !Array.isArray(value) &&\n !isValidElement(value)\n );\n}\n\nfunction hasSameObjectKeys(\n previousValue: unknown,\n nextValue: unknown,\n): boolean {\n if (\n !isStabilizableObject(previousValue) ||\n !isStabilizableObject(nextValue)\n ) {\n return false;\n }\n const previousKeys = Object.keys(previousValue);\n const nextKeys = Object.keys(nextValue);\n if (previousKeys.length !== nextKeys.length) return false;\n return nextKeys.every((key) =>\n Object.prototype.hasOwnProperty.call(previousValue, key),\n );\n}\n\nfunction stabilizeRegistryValue(\n value: unknown,\n path: string,\n scope: StabilizeScope,\n previousValue?: unknown,\n seen = new WeakSet<object>(),\n depth = 0,\n): unknown {\n if (depth > MAX_STABILIZATION_DEPTH) return value;\n\n if (typeof value === \"function\") {\n const isComponent = value.name && /^[A-Z]/.test(value.name);\n if (\n isComponent ||\n isDirectRegistryComponentPath(path, scope.componentSlices)\n ) {\n return value;\n }\n scope.usedPaths.add(path);\n let entry = scope.functionEntries.get(path);\n if (!entry) {\n entry = createStableFunctionEntry(value as AnyFunction);\n scope.functionEntries.set(path, entry);\n } else {\n entry.current = value as AnyFunction;\n }\n return entry.stable;\n }\n\n if (value && typeof value === \"object\") {\n if (seen.has(value)) return value;\n seen.add(value);\n }\n\n if (isValidElement(value)) {\n const nextProps = stabilizeRegistryValue(\n value.props,\n `${path}.props`,\n scope,\n isValidElement(previousValue) ? previousValue.props : undefined,\n seen,\n depth + 1,\n ) as Record<string, unknown>;\n if (\n isValidElement(previousValue) &&\n previousValue.type === value.type &&\n previousValue.key === value.key &&\n previousValue.props === nextProps\n ) {\n return previousValue;\n }\n return cloneElement(value, nextProps);\n }\n\n if (Array.isArray(value)) {\n const nextValue = value.every(isReactNodeLike)\n ? Children.toArray(value)\n : value;\n const previousArray = Array.isArray(previousValue) ? previousValue : null;\n let hasChanged =\n !previousArray || previousArray.length !== nextValue.length;\n\n const stabilizedValue: unknown[] = nextValue.map((item, index) => {\n const nextItem = stabilizeRegistryValue(\n item,\n `${path}[${index}]`,\n scope,\n previousArray?.[index],\n seen,\n depth + 1,\n );\n if (!previousArray || nextItem !== previousArray[index]) {\n hasChanged = true;\n }\n return nextItem;\n });\n return !hasChanged ? previousArray : stabilizedValue;\n }\n\n if (typeof value !== \"object\" || value === null) {\n return value;\n }\n\n const source = value as Record<string, unknown>;\n const previousRecord = previousValue as Record<string, unknown> | undefined;\n const stabilizedValue: Record<string, unknown> = {};\n const canReusePrevious = hasSameObjectKeys(previousValue, value);\n let hasChanged = !canReusePrevious;\n\n Object.keys(source).forEach((key) => {\n const nextValue = stabilizeRegistryValue(\n source[key],\n `${path}.${key}`,\n scope,\n previousRecord?.[key],\n seen,\n depth + 1,\n );\n stabilizedValue[key] = nextValue;\n if (!canReusePrevious || nextValue !== previousRecord?.[key]) {\n hasChanged = true;\n }\n });\n\n return !hasChanged ? previousValue : stabilizedValue;\n}\n\nfunction useAppliedRegistryConfig(\n payload: PageConfig | null,\n context: RegistryApplyContext,\n componentSlices: ReadonlySet<string>,\n): void {\n const functionEntriesRef = useRef(new Map<string, StableFunctionEntry>());\n const appliedRef = useRef<{\n cleanup: () => void;\n config: unknown;\n context: RegistryApplyContext;\n payload: PageConfig | null;\n } | null>(null);\n\n useIsomorphicLayoutEffect(() => {\n const previous = appliedRef.current;\n if (\n previous &&\n previous.payload === payload &&\n previous.context === context\n ) {\n return;\n }\n const functionEntries = functionEntriesRef.current;\n const usedPaths = new Set<string>();\n const config = stabilizeRegistryValue(\n payload,\n \"config\",\n { componentSlices, functionEntries, usedPaths },\n previous?.config,\n );\n functionEntries.forEach((_entry, path) => {\n if (!usedPaths.has(path)) functionEntries.delete(path);\n });\n\n if (\n previous &&\n previous.config === config &&\n previous.context === context\n ) {\n previous.payload = payload;\n return;\n }\n previous?.cleanup();\n appliedRef.current = {\n cleanup: applyRegistryConfig(config as PageConfig | null, context),\n config,\n context,\n payload,\n };\n });\n\n useIsomorphicLayoutEffect(\n () => () => {\n appliedRef.current?.cleanup();\n appliedRef.current = null;\n },\n [],\n );\n}\n\nexport function createRegistryApplyContext(\n actions: RegistryQueue & Pick<RegistryApplyContext, \"batch\">,\n {\n cleanupScope = new Map<string, RegistryCleanupTimer>(),\n instanceId,\n modules = [],\n pathname,\n }: Pick<RegistryApplyContext, \"instanceId\" | \"modules\" | \"pathname\"> & {\n cleanupScope?: RegistryApplyContext[\"cleanupScope\"];\n },\n): RegistryApplyContext {\n const stamp = (queue: RegistryQueue): RegistryQueue =>\n ({\n register: (\n type: string,\n key: string,\n item: unknown,\n sourceOrOptions?: RegistrySourceOrOptions,\n optionsArg?: RegistryMetadata,\n ) =>\n queue.register(\n type,\n key,\n item,\n ...resolveRegisterArgsWithInstance(\n instanceId,\n sourceOrOptions,\n optionsArg,\n ),\n ),\n unregister: (\n type: string,\n key: string,\n sourceOrOptions?: RegistrySourceOrOptions,\n ) =>\n queue.unregister(\n type,\n key,\n withInstanceIdForUnregister(instanceId, sourceOrOptions),\n ),\n }) as RegistryQueue;\n\n return {\n ...stamp(actions),\n batch: (executor) =>\n typeof executor === \"function\"\n ? actions.batch((queue) => executor(stamp(queue)))\n : 0,\n cleanupScope,\n instanceId,\n modules,\n pathname,\n };\n}\n\nexport function useRegistry(\n config?: PageConfig | null,\n metadata?: RegistryMetadata,\n): void {\n const { batch, register, unregister } = useRegistryActions();\n const pathname = usePathname();\n const modules = useInstalledModules();\n const instanceId = `registry-instance-${useId()}`;\n const [cleanupScope] = useState(\n () => new Map<string, RegistryCleanupTimer>(),\n );\n\n const context = useMemo(\n () =>\n createRegistryApplyContext(\n { batch, register, unregister },\n {\n cleanupScope,\n instanceId,\n modules,\n pathname,\n },\n ),\n [batch, cleanupScope, instanceId, modules, pathname, register, unregister],\n );\n\n const payload = useMemo(\n () => (config ? createModulePayload(modules, config, metadata) : null),\n [config, metadata, modules],\n );\n const componentSlices = useMemo(\n () =>\n new Set(\n modules\n .filter(\n (coreModule) => coreModule.registry?.valueKind === \"component\",\n )\n .map((coreModule) => coreModule.id),\n ),\n [modules],\n );\n useAppliedRegistryConfig(payload, context, componentSlices);\n}\n","\"use client\";\n\nimport {\n createContext,\n use,\n useCallback,\n useEffect,\n useId,\n useMemo,\n useRef,\n useState,\n useSyncExternalStore,\n type ReactNode,\n} from \"react\";\nimport { useIsomorphicLayoutEffect } from \"@/hooks\";\nimport { useRegistry, useShallowStable } from \"./hooks\";\nimport { selectModuleSlice, useInstalledModules } from \"./installed\";\nimport { pickRegistryMetadata } from \"./schema\";\nimport { mergeModuleConfigs } from \"./utils\";\nimport type {\n PageConfig,\n PageController,\n PageControllerStore,\n PageModuleApi,\n PageModules,\n PageOptions,\n} from \"./types\";\nimport { report } from \"@/utils\";\n\nconst EMPTY_OBJECT: PageConfig = Object.freeze({});\n\nfunction createPageControllerStore(): PageControllerStore {\n const listeners = new Set<() => void>();\n let stack: {\n controllerRef: { current: PageController | null };\n id: string;\n }[] = [];\n\n const notify = (): void => {\n listeners.forEach((listener) => {\n try {\n listener();\n } catch (error) {\n report(\"Page controller listener\", error);\n }\n });\n };\n\n return {\n getSnapshot(): PageController | null {\n const top = stack[stack.length - 1];\n return top?.controllerRef?.current || null;\n },\n notify,\n register(\n id: string,\n controllerRef: { current: PageController | null },\n ): void {\n stack = stack.filter((item) => item.id !== id);\n stack.push({ controllerRef, id });\n notify();\n },\n subscribe(listener: () => void): () => void {\n listeners.add(listener);\n return () => {\n listeners.delete(listener);\n };\n },\n unregister(id: string): void {\n stack = stack.filter((item) => item.id !== id);\n notify();\n },\n };\n}\n\nfunction createControllerScope(): {\n Provider: PageController[\"Provider\"];\n publish: (controller: PageController) => void;\n} {\n const listeners = new Set<() => void>();\n let current: PageController | null = null;\n\n const subscribe = (listener: () => void) => {\n listeners.add(listener);\n return () => {\n listeners.delete(listener);\n };\n };\n const getSnapshot = () => current;\n\n function PageProvider({ children }: { children?: ReactNode }) {\n const controller = useSyncExternalStore(\n subscribe,\n getSnapshot,\n getSnapshot,\n );\n return (\n <PageControllerContext value={controller}>\n {children}\n </PageControllerContext>\n );\n }\n\n return {\n Provider: PageProvider,\n publish(controller) {\n if (current === controller) return;\n current = controller;\n listeners.forEach((listener) => listener());\n },\n };\n}\n\nconst fallbackStandaloneStore = createPageControllerStore();\n\nconst noopHook = () => {};\nconst PassthroughProvider = ({ children }: { children?: ReactNode }) =>\n children;\n\nimport { getOrCreateGlobalContext } from \"./context-registry\";\n\nconst PageControllerContext = getOrCreateGlobalContext<PageController | null>(\n \"PageControllerContext\",\n null,\n);\n\nconst PageControllerStoreContext =\n getOrCreateGlobalContext<PageControllerStore>(\n \"PageControllerStoreContext\",\n fallbackStandaloneStore,\n );\n\nexport function PageControllerProvider({ children }: { children?: ReactNode }) {\n const [store] = useState<PageControllerStore>(() =>\n createPageControllerStore(),\n );\n return (\n <PageControllerStoreContext value={store}>\n {children}\n </PageControllerStoreContext>\n );\n}\n\nconst emptySubscribe = () => () => {};\nconst getNullSnapshot = () => null;\n\nconst FALLBACK_PAGE_CONTROLLER: PageController = Object.freeze({\n Provider: PassthroughProvider,\n config: EMPTY_OBJECT,\n modules: Object.freeze({}),\n reset: noopHook,\n set: noopHook,\n});\n\nexport function usePageController(): PageController {\n const scopedContext = use(PageControllerContext);\n const controllerStore = use(PageControllerStoreContext);\n\n const storeSubscribe = scopedContext\n ? emptySubscribe\n : controllerStore.subscribe;\n const storeSnapshot = scopedContext\n ? getNullSnapshot\n : controllerStore.getSnapshot;\n\n const storeController = useSyncExternalStore(\n storeSubscribe,\n storeSnapshot,\n getNullSnapshot,\n );\n\n return scopedContext ?? storeController ?? FALLBACK_PAGE_CONTROLLER;\n}\n\nexport function usePage(\n pageConfig: PageConfig = EMPTY_OBJECT,\n options?: PageOptions,\n): PageController {\n const instanceId = useId();\n const controllerStore = use(PageControllerStoreContext);\n const modules = useInstalledModules();\n\n const [overrides, setOverrides] = useState<Partial<PageConfig>>(EMPTY_OBJECT);\n\n const set = useCallback((partial: Partial<PageConfig>) => {\n if (!partial || typeof partial !== \"object\") return;\n setOverrides((prev) => mergeModuleConfigs(prev, partial));\n }, []);\n\n const reset = useCallback(() => {\n setOverrides(EMPTY_OBJECT);\n }, []);\n\n const effectiveConfig = useMemo<PageConfig>(() => {\n const base = pageConfig || EMPTY_OBJECT;\n if (Object.keys(overrides).length === 0) return base;\n return mergeModuleConfigs(base, overrides);\n }, [pageConfig, overrides]);\n\n const moduleSlices = useMemo(\n () =>\n modules.map((coreModule) =>\n selectModuleSlice(coreModule, effectiveConfig),\n ),\n [effectiveConfig, modules],\n );\n\n const registryMetadata = useMemo(\n () => pickRegistryMetadata(options),\n [options],\n );\n useRegistry(effectiveConfig, registryMetadata);\n\n const pageApi = useMemo<PageModuleApi>(() => ({ set }), [set]);\n const moduleControllers: Record<string, unknown> = {};\n for (let index = 0; index < modules.length; index += 1) {\n const coreModule = modules[index];\n if (coreModule.page?.use) {\n moduleControllers[coreModule.id] = coreModule.page.use(\n moduleSlices[index],\n pageApi,\n );\n }\n }\n const pageModules = useShallowStable(moduleControllers) as PageModules;\n\n const [scope] = useState(createControllerScope);\n\n const controller = useMemo<PageController>(\n () => ({\n Provider: scope.Provider,\n config: effectiveConfig,\n modules: pageModules,\n reset,\n set,\n }),\n [effectiveConfig, pageModules, reset, scope, set],\n );\n\n const controllerRef = useRef<PageController | null>(controller);\n\n useIsomorphicLayoutEffect(() => {\n controllerRef.current = controller;\n scope.publish(controller);\n controllerStore.notify();\n }, [controller, controllerStore, scope]);\n\n useEffect(() => {\n controllerStore.register(instanceId, controllerRef);\n return () => {\n controllerStore.unregister(instanceId);\n };\n }, [controllerStore, instanceId]);\n\n return controller;\n}\n","\"use client\";\n\nimport { createElement, use, useState, type ReactNode } from \"react\";\nimport { useStore } from \"@/hooks\";\nimport { createStore, type ExternalStore } from \"@/utils\";\nimport {\n EMPTY_MODULES,\n ModuleHostContext,\n PassthroughBoundary,\n createModuleRegistryDefinitions,\n sortModules,\n type BoundaryComponent,\n type ModuleHostValue,\n} from \"./installed\";\nimport { PageControllerProvider } from \"./page-controller\";\nimport { RegistryProvider } from \"./provider\";\nimport type {\n AnyCoreModule,\n AppRegistryEntry,\n CoreModule,\n CoreModules,\n ModuleId,\n ModuleRuntimeOf,\n ModuleStateOf,\n} from \"./types\";\nimport { report } from \"@/utils\";\n\nexport function defineModule<\n TId extends string,\n TRuntime = never,\n TSlice = never,\n TController = never,\n>(\n coreModule: CoreModule<TId, TRuntime, TSlice, TController>,\n): CoreModule<TId, TRuntime, TSlice, TController> {\n return Object.freeze({ ...coreModule });\n}\n\nfunction warnMissingPeers(modules: readonly AnyCoreModule[]): void {\n const installed = new Set(modules.map((coreModule) => coreModule.id));\n for (const { id, uses } of modules) {\n const missing = (uses ?? []).filter((peer) => !installed.has(peer));\n if (missing.length > 0) {\n report(\n `Module \"${id}\" runs without its optional peers`,\n missing.join(\", \"),\n \"warn\",\n );\n }\n }\n}\n\nfunction createModuleHost(\n modules: readonly AnyCoreModule[],\n Boundary: BoundaryComponent,\n): ModuleHostValue {\n const sorted = sortModules(modules);\n if (process.env.NODE_ENV !== \"production\") warnMissingPeers(sorted);\n return {\n Boundary,\n byId: new Map(sorted.map((coreModule) => [coreModule.id, coreModule])),\n definitions: createModuleRegistryDefinitions(sorted),\n modules: Object.freeze(sorted),\n };\n}\n\nexport interface ModuleHostProps {\n boundary?: BoundaryComponent;\n children?: ReactNode;\n modules?: readonly AnyCoreModule[];\n registryEntries?: readonly AppRegistryEntry[];\n}\n\nexport function ModuleHost({\n boundary = PassthroughBoundary,\n children,\n modules = EMPTY_MODULES,\n registryEntries,\n}: ModuleHostProps) {\n const [host] = useState(() => createModuleHost(modules, boundary));\n const { Boundary } = host;\n\n const content = (\n <>\n {host.modules.map(({ Backdrop, id }) =>\n Backdrop ? (\n <Boundary key={id} name={id}>\n <Backdrop />\n </Boundary>\n ) : null,\n )}\n {children}\n {host.modules.map(({ Overlay, id }) =>\n Overlay ? (\n <Boundary key={id} name={id}>\n <Overlay />\n </Boundary>\n ) : null,\n )}\n </>\n );\n\n const tree = host.modules.reduceRight<ReactNode>(\n (inner, { Provider }) => (Provider ? <Provider>{inner}</Provider> : inner),\n content,\n );\n\n return (\n <RegistryProvider\n definitions={host.definitions}\n initialEntries={registryEntries}\n >\n <ModuleHostContext value={host}>\n <PageControllerProvider>{tree}</PageControllerProvider>\n </ModuleHostContext>\n </RegistryProvider>\n );\n}\n\nexport function useModule<K extends ModuleId>(\n id: K,\n): ModuleRuntimeOf<CoreModules[K]> | null {\n const coreModule = use(ModuleHostContext)?.byId.get(id);\n return coreModule?.context ? (use(coreModule.context) ?? null) : null;\n}\n\ntype ModuleActionsOf<K extends ModuleId> =\n ModuleRuntimeOf<CoreModules[K]> extends { actions: infer TActions }\n ? TActions\n : never;\n\nexport interface ModulePeer<K extends ModuleId> {\n useActions(): ModuleActionsOf<K>;\n useRuntime(): ModuleRuntimeOf<CoreModules[K]>;\n useState<T>(\n selector: (state: ModuleStateOf<K>) => T,\n isEqual?: (a: T, b: T) => boolean,\n ): T;\n}\n\nexport function definePeer<K extends ModuleId>(\n id: K,\n inert: ModuleRuntimeOf<CoreModules[K]>,\n): ModulePeer<K> {\n const useRuntime = (): ModuleRuntimeOf<CoreModules[K]> =>\n useModule(id) ?? inert;\n return {\n useRuntime,\n useActions: () => useRuntime().actions as ModuleActionsOf<K>,\n useState: <T,>(\n selector: (state: ModuleStateOf<K>) => T,\n isEqual?: (a: T, b: T) => boolean,\n ) =>\n useStore<ModuleStateOf<K>, T>(\n (useRuntime() as { store: ExternalStore<ModuleStateOf<K>> }).store,\n selector,\n isEqual,\n ),\n };\n}\n\nconst NO_MODULE_STORE: ExternalStore<unknown> = createStore<unknown>(undefined);\n\nexport function useModuleState<K extends ModuleId, T>(\n id: K,\n selector: (state: ModuleStateOf<K>) => T,\n fallback: T,\n isEqual: (a: T, b: T) => boolean = Object.is,\n): T {\n const runtime = useModule(id) as { store: ExternalStore<unknown> } | null;\n return useStore<unknown, T>(\n runtime?.store ?? NO_MODULE_STORE,\n (state) => (runtime ? selector(state as ModuleStateOf<K>) : fallback),\n isEqual,\n );\n}\n\nexport function ModuleBoundary({\n children,\n name,\n}: {\n children?: ReactNode;\n name?: string;\n}) {\n const Boundary = use(ModuleHostContext)?.Boundary ?? PassthroughBoundary;\n return createElement(Boundary, { name }, children);\n}\n\nexport function useIsModuleInstalled(id: ModuleId): boolean {\n return use(ModuleHostContext)?.byId.has(id) ?? false;\n}\n","\"use client\";\n\nimport { pickRegistryMetadata } from \"./schema\";\nimport { useRegistry } from \"./hooks\";\nimport { useInstalledModules } from \"./installed\";\nimport type { ModuleId, PageConfig, RegistryMetadata } from \"./types\";\n\nexport function useModuleRegistration(\n id: ModuleId,\n value: unknown,\n options?: RegistryMetadata & { enabled?: boolean },\n): void {\n const coreModule = useInstalledModules().find(\n (candidate) => candidate.id === id,\n );\n const config =\n coreModule && options?.enabled !== false && value != null\n ? ({ [id]: value } as PageConfig)\n : null;\n useRegistry(config, pickRegistryMetadata(options));\n}\n","\"use client\";\n\nimport { createContext, type ComponentType } from \"react\";\nimport { useRequiredContext, useStore } from \"@/hooks\";\nimport { definePeer, type ModuleStateOf } from \"@/kernel\";\nimport { createStore, shallowEqual } from \"@/utils\";\nimport {\n type DockActions,\n type DockContextValue,\n type DockState,\n type ErrorActionsProps,\n type GuardActionsProps,\n} from \"./types\";\nimport { getOrCreateGlobalContext } from \"@/kernel/context-registry\";\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\nexport type DockMediaView = ModuleStateOf<\"media\">;\n\nconst mediaPeer = definePeer(\"media\", {\n actions: Object.freeze({\n removeSource: () => {},\n setMuted: () => {},\n toggle: () => {},\n toggleLoop: () => {},\n upsertSource: () => {},\n }),\n store: createStore<ModuleStateOf<\"media\">>({\n audibleElement: null,\n element: null,\n hasMedia: false,\n isPlaying: false,\n kind: null,\n loop: false,\n sourceId: null,\n }),\n});\n\nexport function useDockMedia(): DockMediaView {\n return mediaPeer.useState((state) => state, shallowEqual);\n}\n\nconst selectHasMedia = (state: ModuleStateOf<\"media\">): boolean =>\n state.hasMedia;\n\nexport function useDockHasMedia(): boolean {\n return mediaPeer.useState(selectHasMedia);\n}\n\nexport const useDockMediaActions = mediaPeer.useActions;\n\nconst loadingPeer = definePeer(\"loading\", {\n actions: {\n setLoading: () => {},\n setSkeleton: () => {},\n startLoading: () => {},\n stopLoading: () => {},\n withLoading: async (task) => (typeof task === \"function\" ? task() : task),\n },\n store: createStore<ModuleStateOf<\"loading\">>({\n isLoading: false,\n isPageLoading: false,\n message: null,\n minDuration: 0,\n showOverlay: false,\n skeleton: null,\n }),\n});\n\nexport function useDockLoadingState(): ModuleStateOf<\"loading\"> {\n return loadingPeer.useState((state) => state);\n}\n\nexport const useDockLoadingActions = loadingPeer.useActions;\n\nconst notificationPeer = definePeer(\"notification\", {\n actions: {\n dismissAllNotifications: () => {},\n dismissNotification: () => {},\n showNotification: () => null,\n },\n store: createStore<ModuleStateOf<\"notification\">>({ notifications: {} }),\n});\n\nexport function useDockNotificationVisible(): boolean {\n return notificationPeer.useState(\n ({ notifications }) => Object.keys(notifications).length > 0,\n );\n}\n\nexport const statusActionDefaults: {\n error: ComponentType<ErrorActionsProps> | null;\n guard: ComponentType<GuardActionsProps> | null;\n} = { error: null, guard: null };\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 isSurfaceDescriptor,\n isValidComponentType,\n normalizeSurfaceExtension,\n resolveComponentType,\n resolveRenderableContent,\n createSurfaceReturnHandshake,\n normalizeSurfaceFlowSnapshot,\n resolveSurfaceFlowReturnHandshake,\n} from \"../utils\";\nimport {\n type ActiveSurfaceStep,\n type DockComponentProps,\n type DockItem,\n type NormalizedSurfaceDefinition,\n type NormalizedSurfaceExtension,\n type OpenSurfaceOptions,\n type RenderableSurfaceEntry,\n type SurfaceBuilderDefinition,\n type SurfaceBuilderFactory,\n type SurfaceDescriptor,\n type SurfaceFlowContextValue,\n type SurfaceFlowDefinition,\n type SurfaceFlowDefinitionInput,\n type SurfaceFlowSession,\n type SurfaceFlowState,\n type SurfaceInput,\n type SurfaceResult,\n type SurfaceStep,\n type SurfaceViewModelOptions,\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","export const Z_INDEX = Object.freeze({\n BACKGROUND: 0,\n DOCK_BACKDROP: 100,\n DOCK: 110,\n NOTIFICATION: 120,\n MODAL_BACKDROP: 130,\n MODAL: 140,\n SELECT: 150,\n LOADING: 160,\n ERROR_OVERLAY: 170,\n CONTEXT_MENU_BACKDROP: 180,\n CONTEXT_MENU: 190,\n TOOLTIP: 200,\n\n UI_ELEMENT: 10,\n DOCK_CARD_BACKGROUND: 0,\n DOCK_CARD_CONTENT: 10,\n DOCK_CARD_STACK_BASE: 10,\n DOCK_CARD_BADGE: 20,\n DOCK_CARD_MEDIA: 30,\n DOCK_BREADCRUMBS: 10,\n DOCK_SURFACE_CONTROL: 10,\n DOCK_SURFACE_POPOVER: 30,\n DOCK_SURFACE_CENTER: 0,\n MODAL_FRAME: 1,\n MODAL_STICKY_HEADER: 10,\n} as const);\n\nexport const SURFACE_CLASSES = Object.freeze({\n description: \"text-white/70\",\n icon: \"bg-white/10 text-white\",\n surface: \"bg-black/60 ring-1 ring-inset ring-white/10\",\n title: \"text-white\",\n} as const);\n\nexport const ACTION_TONE_CLASS =\n \"bg-primary/10 text-primary hover:bg-primary hover:text-black\";\n","export const DURATION_TOKENS = Object.freeze({\n INSTANT: 0.08,\n MICRO: 0.18,\n FAST: 0.28,\n BASE: 0.36,\n MODERATE: 0.44,\n SLOW: 0.58,\n CINEMATIC: 0.86,\n} as const);\n\nexport const EASING_CURVES = Object.freeze({\n OUT_EXPO: [0.16, 1, 0.3, 1] as const,\n OUT_QUART: [0.25, 1, 0.5, 1] as const,\n OUT_QUINT: [0.22, 1, 0.36, 1] as const,\n IN_OUT_CUBIC: [0.65, 0, 0.35, 1] as const,\n IN_CUBIC: [0.5, 0, 1, 1] as const,\n OUT_BACK: [0.34, 1.56, 0.64, 1] as const,\n} as const);\n\nexport const MOTION_EASINGS = Object.freeze({\n ENTER: EASING_CURVES.OUT_QUART,\n ENTER_EMPHASIZED: EASING_CURVES.OUT_EXPO,\n EXIT: EASING_CURVES.IN_CUBIC,\n} as const);\n\nexport const MOTION_TIERS = Object.freeze({\n MICRO: Object.freeze({\n distance: 4,\n duration: DURATION_TOKENS.MICRO,\n ease: MOTION_EASINGS.ENTER_EMPHASIZED,\n scaleDelta: 0.008,\n }),\n FAST: Object.freeze({\n distance: 9,\n duration: DURATION_TOKENS.FAST,\n ease: MOTION_EASINGS.ENTER_EMPHASIZED,\n scaleDelta: 0.012,\n }),\n STANDARD: Object.freeze({\n distance: 18,\n duration: DURATION_TOKENS.MODERATE,\n ease: MOTION_EASINGS.ENTER,\n scaleDelta: 0.018,\n }),\n SURFACE: Object.freeze({\n distance: 28,\n duration: DURATION_TOKENS.SLOW,\n ease: MOTION_EASINGS.ENTER_EMPHASIZED,\n scaleDelta: 0.024,\n }),\n} as const);\n\nexport const SPRING_PRESETS = Object.freeze({\n MICRO: Object.freeze({\n damping: 32,\n mass: 0.6,\n stiffness: 520,\n type: \"spring\",\n } as const),\n SNAPPY: Object.freeze({\n damping: 28,\n mass: 0.8,\n stiffness: 380,\n type: \"spring\",\n } as const),\n GENTLE: Object.freeze({\n damping: 30,\n mass: 1,\n stiffness: 260,\n type: \"spring\",\n } as const),\n BOUNCY: Object.freeze({\n damping: 20,\n mass: 0.85,\n stiffness: 340,\n type: \"spring\",\n } as const),\n} as const);\n\nexport const REDUCED_MOTION_TRANSITION = Object.freeze({\n duration: DURATION_TOKENS.INSTANT,\n ease: \"linear\",\n} as const);\n\nexport const COMPOSITOR_GPU_STYLE = Object.freeze({\n backfaceVisibility: \"hidden\",\n transform: \"translate3d(0, 0, 0)\",\n willChange: \"transform, opacity\",\n} as const);\n\nexport const TAP_SCALE_SUBTLE = 0.97;\n\ntype Ease = readonly [number, number, number, number];\n\ntype TweenOptions = {\n duration?: number;\n exitDuration?: number;\n enterEase?: Ease;\n exitEase?: Ease;\n};\n\ntype Spring = {\n type?: \"spring\";\n stiffness: number;\n damping: number;\n mass: number;\n};\n\nfunction tween(duration: number, ease: Ease) {\n return Object.freeze({ type: \"tween\" as const, duration, ease });\n}\n\nfunction safeNumber(value: unknown, fallback: number): number {\n const source =\n value &&\n typeof value === \"object\" &&\n \"get\" in value &&\n typeof value.get === \"function\"\n ? value.get()\n : value;\n const number = Number.parseFloat(String(source));\n return Number.isFinite(number) ? number : fallback;\n}\n\nexport function gpuTransform(\n y: unknown = 0,\n scale: unknown = 1,\n x: unknown = 0,\n): string {\n const translateY = Math.round(safeNumber(y, 0));\n const translateX = Math.round(safeNumber(x, 0));\n const scaleValue = Math.round(safeNumber(scale, 1) * 1000) / 1000;\n return `translate3d(${translateX}px, ${translateY}px, 0) scale(${scaleValue})`;\n}\n\nexport function durationForDistance(\n distancePx: number,\n {\n base = DURATION_TOKENS.FAST,\n min = DURATION_TOKENS.MICRO,\n max = DURATION_TOKENS.SLOW,\n reference = 320,\n gain = 0.22,\n }: {\n base?: number;\n min?: number;\n max?: number;\n reference?: number;\n gain?: number;\n } = {},\n): number {\n const distance = Math.abs(Number(distancePx) || 0);\n const safeMin = Math.max(0, min);\n const safeMax = Math.max(safeMin, max);\n const safeReference = Math.max(1, reference);\n const duration = base + Math.sqrt(distance / safeReference) * gain;\n return Math.min(safeMax, Math.max(safeMin, duration));\n}\n\nexport function surfaceResizeTransition(\n distancePx: number,\n {\n base = DURATION_TOKENS.FAST,\n min = DURATION_TOKENS.MICRO,\n max = DURATION_TOKENS.SLOW,\n reference = 320,\n gain = 0.22,\n ease = EASING_CURVES.IN_OUT_CUBIC,\n }: {\n base?: number;\n min?: number;\n max?: number;\n reference?: number;\n gain?: number;\n ease?: Ease;\n } = {},\n) {\n return tween(\n durationForDistance(distancePx, { base, min, max, reference, gain }),\n ease,\n );\n}\n\nexport function contentSwapTransitions({\n duration = DURATION_TOKENS.FAST,\n exitDuration = DURATION_TOKENS.MICRO,\n enterEase = EASING_CURVES.OUT_EXPO,\n exitEase = EASING_CURVES.IN_CUBIC,\n}: TweenOptions = {}) {\n return Object.freeze({\n enter: tween(duration, enterEase),\n exit: tween(exitDuration, exitEase),\n });\n}\n\nexport function contentSwap({\n travel = 6,\n exitTravel = travel * 0.7,\n enterScale = 0.99,\n exitScale = 0.99,\n ...transitionOptions\n}: TweenOptions & {\n travel?: number;\n exitTravel?: number;\n enterScale?: number;\n exitScale?: number;\n} = {}) {\n const transitions = contentSwapTransitions(transitionOptions);\n return Object.freeze({\n hidden: Object.freeze({\n opacity: 0,\n transform: gpuTransform(travel, enterScale),\n }),\n visible: Object.freeze({\n opacity: 1,\n transform: gpuTransform(0),\n transition: transitions.enter,\n }),\n exit: Object.freeze({\n opacity: 0,\n transform: gpuTransform(-exitTravel, exitScale),\n transition: transitions.exit,\n }),\n });\n}\n\nexport function overlaySurface({\n travel = 16,\n exitTravel = travel * 0.5,\n enterScale = 0.97,\n exitScale = 0.985,\n distance,\n duration,\n exitDuration,\n enterEase = EASING_CURVES.OUT_EXPO,\n exitEase = EASING_CURVES.IN_CUBIC,\n}: {\n travel?: number;\n exitTravel?: number;\n enterScale?: number;\n exitScale?: number;\n distance?: number;\n duration?: number;\n exitDuration?: number;\n enterEase?: Ease;\n exitEase?: Ease;\n} = {}) {\n const enterDuration =\n duration ??\n (distance === undefined\n ? DURATION_TOKENS.BASE\n : durationForDistance(distance));\n const transitions = contentSwapTransitions({\n duration: enterDuration,\n exitDuration: exitDuration ?? enterDuration * 0.68,\n enterEase,\n exitEase,\n });\n\n return Object.freeze({\n hidden: Object.freeze({\n opacity: 0,\n transform: gpuTransform(travel, enterScale),\n }),\n visible: Object.freeze({\n opacity: 1,\n transform: gpuTransform(0),\n transition: transitions.enter,\n }),\n exit: Object.freeze({\n opacity: 0,\n transform: gpuTransform(exitTravel, exitScale),\n transition: transitions.exit,\n }),\n });\n}\n\nexport function staggerDelay(\n index: number,\n { base = 0.028, cap = 0.16, exponent = 0.82 } = {},\n): number {\n const safeIndex = Math.max(0, Number(index) || 0);\n return Math.min(cap, base * Math.pow(safeIndex, exponent));\n}\n\nexport function staggerItem({\n base = 0.028,\n cap = 0.16,\n duration = DURATION_TOKENS.BASE,\n travel = 10,\n enterEase = EASING_CURVES.OUT_EXPO,\n exitDuration = DURATION_TOKENS.MICRO,\n exitEase = EASING_CURVES.IN_CUBIC,\n}: {\n base?: number;\n cap?: number;\n duration?: number;\n travel?: number;\n enterEase?: Ease;\n exitDuration?: number;\n exitEase?: Ease;\n} = {}) {\n return Object.freeze({\n hidden: Object.freeze({\n opacity: 0,\n transform: gpuTransform(travel, 0.985),\n }),\n visible: (index: number = 0) => ({\n opacity: 1,\n transform: gpuTransform(0),\n transition: Object.freeze({\n ...tween(duration, enterEase),\n delay: staggerDelay(index, { base, cap }),\n }),\n }),\n exit: Object.freeze({\n opacity: 0,\n transform: gpuTransform(-travel * 0.6, 0.99),\n transition: tween(exitDuration, exitEase),\n }),\n });\n}\n\nexport function chip({\n duration = DURATION_TOKENS.FAST,\n exitDuration = DURATION_TOKENS.MICRO,\n enterEase = EASING_CURVES.IN_OUT_CUBIC,\n exitEase = EASING_CURVES.IN_CUBIC,\n}: TweenOptions = {}) {\n const transitions = contentSwapTransitions({\n duration,\n exitDuration,\n enterEase,\n exitEase,\n });\n return Object.freeze({\n hidden: Object.freeze({ opacity: 0, transform: gpuTransform(0, 0.96) }),\n visible: Object.freeze({\n opacity: 1,\n transform: gpuTransform(0),\n transition: transitions.enter,\n }),\n exit: Object.freeze({\n opacity: 0,\n transform: gpuTransform(0, 0.96),\n transition: transitions.exit,\n }),\n });\n}\n\nexport function press({\n tapScale = TAP_SCALE_SUBTLE,\n spring = SPRING_PRESETS.MICRO,\n}: { tapScale?: number; spring?: Spring } = {}) {\n return Object.freeze({\n variants: Object.freeze({\n idle: Object.freeze({ transform: gpuTransform(0, 1) }),\n hover: Object.freeze({ transform: gpuTransform(0, 1) }),\n tap: Object.freeze({ transform: gpuTransform(0, tapScale) }),\n }),\n transition: Object.freeze({ type: \"spring\" as const, ...spring }),\n });\n}\n\nexport function dragDismiss({\n constraints = { top: 0, bottom: 0 },\n elastic = { top: 0.05, bottom: 0.5 },\n thresholds = { offsetY: 65, velocityY: 400 },\n interpolation = {\n range: [0, 180] as const,\n opacity: [1, 0.75] as const,\n scale: [1, 0.96] as const,\n },\n} = {}) {\n return Object.freeze({\n constraints: Object.freeze(constraints),\n elastic: Object.freeze(elastic),\n thresholds: Object.freeze(thresholds),\n interpolation: Object.freeze(interpolation),\n });\n}\n","import {\n DURATION_TOKENS,\n EASING_CURVES,\n MOTION_TIERS,\n contentSwapTransitions,\n press,\n surfaceResizeTransition,\n overlaySurface,\n chip,\n contentSwap,\n gpuTransform,\n staggerDelay,\n staggerItem,\n} from \"@/tokens\";\nimport { type TargetAndTransition, type Transition, type Variants } from \"motion/react\";\nimport { DOCK_CARD_DIMENSIONS, DOCK_SURFACE_PHASE } from \"./constants\";\n\nexport const DOCK_DURATIONS = Object.freeze({\n MICRO: DURATION_TOKENS.MICRO,\n FAST: DURATION_TOKENS.FAST,\n BASE: DURATION_TOKENS.BASE,\n ACTION_DISMISS: 0.32,\n EXPAND: DURATION_TOKENS.CINEMATIC,\n COLLAPSE: 0.52,\n HEADER: 0.32,\n MODERATE: DURATION_TOKENS.MODERATE,\n SLOW: DURATION_TOKENS.SLOW,\n} as const);\n\nconst DOCK_GLIDE_EASE = EASING_CURVES.OUT_QUART;\n\nconst DOCK_REVEAL_EASE = EASING_CURVES.OUT_EXPO;\n\nconst DOCK_WEIGHT_EASE = EASING_CURVES.OUT_QUINT;\n\nexport const DOCK_EASINGS = Object.freeze({\n FLUID: DOCK_GLIDE_EASE,\n FLUID_RESIZE: DOCK_GLIDE_EASE,\n PROGRESSIVE_EXIT: EASING_CURVES.IN_CUBIC,\n CINEMATIC: DOCK_REVEAL_EASE,\n EMPHASIZED: DOCK_REVEAL_EASE,\n SOFT: DOCK_GLIDE_EASE,\n SURFACE_WEIGHT: DOCK_WEIGHT_EASE,\n EXIT: EASING_CURVES.IN_CUBIC,\n SURFACE_ARRIVAL: EASING_CURVES.OUT_BACK,\n} as const);\n\nexport const DOCK_SURFACE_STACK_SCALE = Object.freeze({\n REST: 1,\n OPEN_ANTICIPATION_COMPRESS: 0.94,\n CLOSE_ANTICIPATION_COMPRESS: 0.96,\n} as const);\n\nexport const dockHeaderSwapTransitions = contentSwapTransitions({\n duration: DOCK_DURATIONS.HEADER,\n exitDuration: DOCK_DURATIONS.FAST,\n enterEase: DOCK_EASINGS.FLUID,\n exitEase: DOCK_EASINGS.EXIT,\n});\n\nexport const dockControlSwapTransitions = contentSwapTransitions({\n duration: DOCK_DURATIONS.BASE,\n exitDuration: DOCK_DURATIONS.FAST,\n enterEase: DOCK_EASINGS.FLUID,\n exitEase: DOCK_EASINGS.EXIT,\n});\n\nexport const dockTextSwapTransitions = contentSwapTransitions({\n duration: DOCK_DURATIONS.BASE,\n exitDuration: DOCK_DURATIONS.FAST,\n enterEase: DOCK_EASINGS.EMPHASIZED,\n exitEase: DOCK_EASINGS.EXIT,\n});\n\nexport const DOCK_TIERS = MOTION_TIERS;\n\nexport const DOCK_SPRINGS = Object.freeze({\n PRESS: Object.freeze({\n type: \"spring\" as const,\n stiffness: 420,\n damping: 34,\n mass: 0.35,\n }),\n BADGE: Object.freeze({\n type: \"spring\" as const,\n stiffness: 360,\n damping: 30,\n mass: 0.45,\n }),\n DECK: Object.freeze({\n type: \"spring\" as const,\n stiffness: 210,\n damping: 34,\n mass: 1.2,\n }),\n PEEK: Object.freeze({\n type: \"spring\" as const,\n stiffness: 280,\n damping: 32,\n mass: 0.6,\n }),\n SCRUBBER_TOOLTIP: Object.freeze({\n damping: 28,\n stiffness: 350,\n }),\n} as const);\n\nexport const DOCK_STAGGER_TIMINGS = Object.freeze({\n EXPAND: 0.055,\n COLLAPSE: 0.02,\n PEEK: 0.016,\n STANDARD: 0.032,\n FAST: 0.02,\n CONTENT_REVEAL: 0.06,\n} as const);\n\nexport const DOCK_SURFACE_CHOREOGRAPHY_TIMINGS = Object.freeze({\n SURFACE_ANTICIPATION_MS: 240,\n ANTICIPATION_LEAD_MS: 70,\n ACTION_DISMISS_MS: DOCK_DURATIONS.ACTION_DISMISS * 1000,\n ACTION_DISMISS_OVERLAP_MS: 220,\n BODY_ENTER_MS: DOCK_DURATIONS.EXPAND * 1000,\n BODY_ENTER_DELAY_MS: 100,\n BODY_EXIT_MS: 760,\n BODY_COLLAPSE_SETTLE_MS: 100,\n HEADER_RESTORE_MS: 360,\n RESTORE_SETTLE_MS: 0,\n} as const);\n\nconst DOCK_SURFACE_HEADER_REVEAL_DELAY_MS = 80;\n\nexport const DOCK_SURFACE_HEADER_RESTORE_TRANSITION = Object.freeze({\n type: \"tween\" as const,\n duration:\n (DOCK_SURFACE_CHOREOGRAPHY_TIMINGS.HEADER_RESTORE_MS -\n DOCK_SURFACE_HEADER_REVEAL_DELAY_MS) /\n 1000,\n delay: DOCK_SURFACE_HEADER_REVEAL_DELAY_MS / 1000,\n ease: DOCK_EASINGS.SOFT,\n});\n\nexport const DOCK_TAP_SCALE = 0.97;\n\nexport const DOCK_SURFACE_DRAG_CONSTRAINTS = Object.freeze({\n top: 0,\n bottom: 0,\n} as const);\n\nexport const DOCK_SURFACE_DRAG_ELASTIC = Object.freeze({\n top: 0.05,\n bottom: 0.5,\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 const DOCK_SURFACE_DRAG_INTERPOLATION = Object.freeze({\n DRAG_RANGE: Object.freeze([0, 180] as const),\n OPACITY_RANGE: Object.freeze([1, 0.75] as const),\n SCALE_RANGE: Object.freeze([1, 0.96] as const),\n} as const);\n\nexport const DOCK_STACK_ELEVATION = Object.freeze({\n REST: \"0px 12px 32px 0px rgba(0,0,0,0.35), 0px 2px 8px 0px rgba(0,0,0,0.25)\",\n ELEVATED:\n \"0px 32px 80px 0px rgba(0,0,0,0.55), 0px 8px 24px 0px rgba(0,0,0,0.35)\",\n} as const);\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\nexport const DOCK_STACK_TRANSITION = Object.freeze({\n type: \"tween\" as const,\n duration: DOCK_DURATIONS.COLLAPSE,\n ease: DOCK_EASINGS.SOFT,\n});\n\nexport const DOCK_CARD_EXPAND_TRANSITION = Object.freeze({\n type: \"tween\" as const,\n duration: DOCK_DURATIONS.EXPAND,\n ease: DOCK_EASINGS.SURFACE_WEIGHT,\n});\n\nexport const dockSurfaceBodyRole = overlaySurface({\n travel: 14,\n exitTravel: 14,\n enterScale: 0.985,\n exitScale: 0.985,\n duration:\n (DOCK_SURFACE_CHOREOGRAPHY_TIMINGS.BODY_ENTER_MS -\n DOCK_SURFACE_CHOREOGRAPHY_TIMINGS.BODY_ENTER_DELAY_MS) /\n 1000,\n exitDuration:\n DOCK_SURFACE_CHOREOGRAPHY_TIMINGS.SURFACE_ANTICIPATION_MS / 1000,\n enterEase: DOCK_EASINGS.SURFACE_WEIGHT,\n exitEase: DOCK_EASINGS.SURFACE_WEIGHT,\n});\n\nexport const DOCK_SURFACE_BODY_ENTER_TRANSITION = Object.freeze({\n ...dockSurfaceBodyRole.visible.transition,\n delay: DOCK_SURFACE_CHOREOGRAPHY_TIMINGS.BODY_ENTER_DELAY_MS / 1000,\n});\n\nexport const DOCK_SURFACE_BODY_EXIT_TRANSITION =\n dockSurfaceBodyRole.exit.transition;\n\nexport const DOCK_SURFACE_ANTICIPATION_HIDE_TRANSITION = Object.freeze({\n type: \"tween\" as const,\n duration: DOCK_SURFACE_CHOREOGRAPHY_TIMINGS.SURFACE_ANTICIPATION_MS / 1000,\n ease: DOCK_EASINGS.SURFACE_WEIGHT,\n});\n\nconst DOCK_SURFACE_STEP_RESIZE_BASE = 0.5;\nconst DOCK_SURFACE_STEP_RESIZE_MIN = 0.4;\nconst DOCK_SURFACE_STEP_RESIZE_MAX = DOCK_DURATIONS.EXPAND;\n\nfunction createDockSurfaceResizeTransition(distancePx: number) {\n const resize = surfaceResizeTransition(distancePx, {\n base: DOCK_SURFACE_STEP_RESIZE_BASE,\n min: DOCK_SURFACE_STEP_RESIZE_MIN,\n max: DOCK_SURFACE_STEP_RESIZE_MAX,\n ease: DOCK_EASINGS.SURFACE_WEIGHT,\n });\n return Object.freeze({\n ...resize,\n height: resize,\n width: resize,\n });\n}\n\nexport const DOCK_SURFACE_RESIZE_TRANSITION =\n createDockSurfaceResizeTransition(260);\n\nexport const DOCK_SURFACE_STACK_ARRIVAL_TRANSITION = Object.freeze({\n type: \"tween\" as const,\n duration: DOCK_DURATIONS.EXPAND,\n ease: DOCK_EASINGS.SURFACE_ARRIVAL,\n});\n\nexport function getDockSurfaceResizeTransition(distancePx: number) {\n return createDockSurfaceResizeTransition(distancePx);\n}\n\nexport const DOCK_SURFACE_BODY_STEP_TRANSITION = contentSwapTransitions({\n duration: DOCK_DURATIONS.BASE,\n exitDuration: DOCK_DURATIONS.FAST,\n enterEase: DOCK_EASINGS.FLUID_RESIZE,\n exitEase: DOCK_EASINGS.EXIT,\n}).enter;\n\nexport const DOCK_ACTION_DISMISS_TRANSITION = Object.freeze({\n type: \"tween\" as const,\n duration: DOCK_DURATIONS.ACTION_DISMISS,\n ease: DOCK_EASINGS.EXIT,\n});\n\nexport const DOCK_HEADER_SWAP_TRANSITION = dockHeaderSwapTransitions.enter;\n\nexport const DOCK_SURFACE_CONTROLS_CONTAINER_TRANSITION =\n dockControlSwapTransitions.enter;\n\nexport const DOCK_SURFACE_CONTROLS_CONTAINER_EXIT_TRANSITION =\n dockControlSwapTransitions.exit;\n\nexport const DOCK_SURFACE_CONTROLS_ITEM_TRANSITION =\n dockControlSwapTransitions.enter;\n\nexport const DOCK_SURFACE_CONTROLS_ITEM_EXIT_TRANSITION =\n dockControlSwapTransitions.exit;\n\nexport const DOCK_SURFACE_CONTROLS_ACTION_TRANSITION =\n dockControlSwapTransitions.enter;\n\nexport const DOCK_SURFACE_CONTROLS_ACTION_EXIT_TRANSITION =\n dockControlSwapTransitions.exit;\n\nexport const DOCK_SURFACE_EXTENSIONS_ENTER_TRANSITION = Object.freeze({\n type: \"tween\" as const,\n duration: DOCK_DURATIONS.MODERATE,\n ease: DOCK_EASINGS.CINEMATIC,\n});\n\nexport const DOCK_SURFACE_EXTENSIONS_EXIT_TRANSITION = Object.freeze({\n type: \"tween\" as const,\n duration: DOCK_DURATIONS.BASE,\n ease: DOCK_EASINGS.EXIT,\n});\n\nexport const DOCK_CARD_TRANSITION = Object.freeze({\n type: \"tween\" as const,\n duration: DOCK_DURATIONS.COLLAPSE,\n ease: DOCK_EASINGS.SOFT,\n});\n\nexport const DOCK_CARD_COLLAPSE_TRANSITION = Object.freeze({\n type: \"tween\" as const,\n duration: DOCK_DURATIONS.BASE,\n ease: DOCK_EASINGS.EXIT,\n});\n\nexport const DOCK_PEEK_TRANSITION = Object.freeze({\n type: \"tween\" as const,\n duration: DOCK_DURATIONS.FAST,\n ease: DOCK_EASINGS.SOFT,\n});\n\nexport const DOCK_CARD_SPRING = DOCK_SPRINGS.DECK;\n\nexport function getDockBackdropTransition({\n expanded = false,\n isSurface = false,\n}: {\n expanded?: boolean;\n isSurface?: boolean;\n} = {}) {\n return isSurface || expanded\n ? DOCK_CARD_EXPAND_TRANSITION\n : DOCK_STACK_TRANSITION;\n}\n\nexport const DOCK_FADE_TRANSITION = Object.freeze({\n type: \"tween\" as const,\n duration: DOCK_TIERS.STANDARD.duration,\n ease: DOCK_EASINGS.EMPHASIZED,\n});\n\nexport const DOCK_TEXT_ENTER_TRANSITION = dockTextSwapTransitions.enter;\n\nexport const DOCK_TEXT_EXIT_TRANSITION = dockTextSwapTransitions.exit;\n\nexport const DOCK_ICON_TRANSITION = Object.freeze({\n type: \"tween\" as const,\n duration: DOCK_DURATIONS.FAST,\n ease: DOCK_EASINGS.SOFT,\n});\n\nexport const DOCK_HUD_TRANSITION = Object.freeze({\n type: \"tween\" as const,\n duration: DOCK_DURATIONS.MODERATE,\n ease: DOCK_EASINGS.CINEMATIC,\n});\n\nexport const DOCK_STAGGER_TRANSITION = Object.freeze({\n type: \"tween\" as const,\n duration: DOCK_DURATIONS.MODERATE,\n ease: DOCK_EASINGS.EMPHASIZED,\n});\n\nexport const dockPressRole = press({\n tapScale: DOCK_TAP_SCALE,\n spring: DOCK_SPRINGS.PRESS,\n});\n\nexport const DOCK_BUTTON_TRANSITION = dockPressRole.transition;\n\nexport const DOCK_BADGE_TRANSITION = DOCK_SPRINGS.BADGE;\n\nexport const DOCK_SCRUBBER_TOOLTIP_TRANSITION = Object.freeze({\n type: \"tween\" as const,\n duration: DOCK_DURATIONS.FAST,\n ease: DOCK_EASINGS.EMPHASIZED,\n});\n\nexport const DOCK_SCRUBBER_TOOLTIP_SPRING = DOCK_SPRINGS.SCRUBBER_TOOLTIP;\n\nconst DOCK_EASING_CSS = `cubic-bezier(${DOCK_EASINGS.FLUID.join(\", \")})`;\n\nconst DOCK_FAST_MS = `${Math.round(DOCK_DURATIONS.FAST * 1000)}ms`;\n\nexport const DOCK_MEDIA_VOLUME_FILL_TRANSITION = `width ${DOCK_FAST_MS} ${DOCK_EASING_CSS}`;\n\nexport const DOCK_MEDIA_VOLUME_THUMB_POSITION_TRANSITION = `left ${DOCK_FAST_MS} ${DOCK_EASING_CSS}`;\n\nexport const DOCK_SKELETON_PULSE_CLASS =\n \"animate-pulse motion-reduce:animate-none\";\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 const dockActionVariants = dockPressRole.variants;\n\nexport const dockMediaVolumeThumbVariants = Object.freeze({\n idle: Object.freeze({\n scale: 1,\n }),\n dragging: Object.freeze({\n scale: 1.18,\n }),\n});\n\nfunction buildVariants(\n tierName: keyof typeof DOCK_TIERS,\n { distanceScale = 0 }: { distanceScale?: number } = {},\n): Variants {\n const tier = DOCK_TIERS[tierName];\n const distance = Math.round(tier.distance * distanceScale);\n const exitDuration = Math.min(tier.duration * 0.7, DOCK_DURATIONS.MODERATE);\n const hidden: TargetAndTransition = {\n opacity: 0,\n };\n const visible: TargetAndTransition = {\n opacity: 1,\n transition: {\n duration: tier.duration,\n ease: tier.ease,\n },\n };\n const exit: TargetAndTransition = {\n opacity: 0,\n transition: {\n duration: exitDuration,\n ease: DOCK_EASINGS.EXIT,\n },\n };\n if (distance) {\n hidden.transform = toGpuTransform(distance, 1 - tier.scaleDelta);\n visible.transform = toGpuTransform(0);\n exit.transform = toGpuTransform(distance, 1 - tier.scaleDelta);\n }\n return Object.freeze({\n hidden,\n visible,\n exit,\n });\n}\n\nexport const textCrossfadeVariants = buildVariants(\"STANDARD\", {\n distanceScale: 0.42,\n});\n\nexport const dockHeaderSwapVariants = contentSwap({\n travel: 4,\n exitTravel: 4,\n duration: DOCK_DURATIONS.HEADER,\n exitDuration: DOCK_DURATIONS.FAST,\n enterEase: DOCK_EASINGS.FLUID,\n exitEase: DOCK_EASINGS.EXIT,\n});\n\nexport const dockExtensionShelfVariants = Object.freeze({\n hidden: {\n opacity: 0,\n transform: toGpuTransform(5, 0.99),\n },\n visible: {\n opacity: 1,\n transform: toGpuTransform(0, 1),\n transition: DOCK_SURFACE_EXTENSIONS_ENTER_TRANSITION,\n },\n exit: {\n opacity: 0,\n transform: toGpuTransform(-4, 0.99),\n transition: DOCK_SURFACE_EXTENSIONS_EXIT_TRANSITION,\n },\n});\n\nexport const dockHeaderRestoreVariants = Object.freeze({\n hidden: {\n opacity: 0,\n transform: toGpuTransform(-4, 0.99),\n },\n visible: {\n opacity: 1,\n transform: toGpuTransform(0),\n transition: DOCK_SURFACE_HEADER_RESTORE_TRANSITION,\n },\n exit: {\n opacity: 0,\n transform: toGpuTransform(4, 0.99),\n transition: DOCK_TEXT_EXIT_TRANSITION,\n },\n});\n\nexport const dockSurfaceControlsContainerVariants = Object.freeze({\n hidden: (targetY: unknown = 0) => ({\n opacity: 0,\n transform: toGpuTransform((Number(targetY) || 0) + 6, 0.97),\n transition: DOCK_SURFACE_CONTROLS_CONTAINER_EXIT_TRANSITION,\n }),\n visible: (targetY: unknown = 0) => ({\n opacity: 1,\n transform: toGpuTransform(Number(targetY) || 0, 1),\n transition: DOCK_SURFACE_CONTROLS_CONTAINER_TRANSITION,\n }),\n exit: (targetY: unknown = 0) => ({\n opacity: 0,\n transform: toGpuTransform((Number(targetY) || 0) + 6, 0.97),\n transition: DOCK_SURFACE_CONTROLS_CONTAINER_EXIT_TRANSITION,\n }),\n});\n\nexport const dockSurfaceControlsActionVariants = Object.freeze({\n hidden: {\n opacity: 0,\n scale: 0.96,\n width: 0,\n marginRight: -2,\n },\n visible: {\n opacity: 1,\n scale: 1,\n width: \"auto\",\n marginRight: 0,\n transition: DOCK_SURFACE_CONTROLS_ACTION_TRANSITION,\n },\n exit: {\n opacity: 0,\n scale: 0.96,\n width: 0,\n marginRight: -2,\n transition: DOCK_SURFACE_CONTROLS_ACTION_EXIT_TRANSITION,\n },\n});\n\nexport const dockSurfaceControlsBackVariants = Object.freeze({\n hidden: {\n opacity: 0,\n scale: 0.96,\n width: 0,\n marginRight: -2,\n },\n visible: {\n opacity: 1,\n scale: 1,\n width: \"auto\",\n marginRight: 0,\n transition: DOCK_SURFACE_CONTROLS_ITEM_TRANSITION,\n },\n exit: {\n opacity: 0,\n scale: 0.96,\n width: 0,\n marginRight: -2,\n transition: DOCK_SURFACE_CONTROLS_ITEM_EXIT_TRANSITION,\n },\n});\n\nexport const dockSurfaceControlsCloseVariants = chip({\n duration: DOCK_DURATIONS.BASE,\n exitDuration: DOCK_DURATIONS.FAST,\n enterEase: DOCK_EASINGS.FLUID,\n exitEase: DOCK_EASINGS.EXIT,\n});\n\nexport const dockCommandBarSwapVariants = Object.freeze({\n hidden: {\n opacity: 0,\n transform: \"translate3d(5px, 0, 0) scale(0.97)\",\n },\n visible: (customIndex: unknown = 0) => ({\n opacity: 1,\n transform: \"translate3d(0px, 0, 0) scale(1)\",\n transition: {\n duration: DOCK_DURATIONS.BASE,\n delay: staggerDelay(Number(customIndex) || 0, {\n base: DOCK_STAGGER_TIMINGS.FAST,\n cap: 0.12,\n }),\n ease: DOCK_EASINGS.FLUID,\n },\n }),\n exit: {\n opacity: 0,\n transform: \"translate3d(4px, 0, 0) scale(0.98)\",\n transition: {\n duration: DOCK_DURATIONS.FAST,\n ease: DOCK_EASINGS.EXIT,\n },\n },\n});\n\nexport const dockActionDismissVariants = Object.freeze({\n hidden: {\n opacity: 0,\n transform: toGpuTransform(6, 0.99),\n },\n visible: {\n opacity: 1,\n transform: toGpuTransform(0),\n transition: {\n duration: DOCK_DURATIONS.FAST,\n ease: DOCK_EASINGS.SOFT,\n },\n },\n exit: {\n opacity: 0,\n transform: toGpuTransform(-5, 0.99),\n transition: {\n duration: DOCK_DURATIONS.ACTION_DISMISS,\n ease: DOCK_EASINGS.EXIT,\n },\n },\n});\n\nconst dockListStaggerRole = staggerItem({\n base: DOCK_STAGGER_TIMINGS.STANDARD,\n cap: 0.18,\n duration: DOCK_STAGGER_TRANSITION.duration,\n travel: 7,\n enterEase: DOCK_STAGGER_TRANSITION.ease,\n exitDuration: DOCK_TEXT_EXIT_TRANSITION.duration,\n exitEase: DOCK_TEXT_EXIT_TRANSITION.ease,\n});\n\nexport const dockListItemVariants = Object.freeze({\n hidden: dockListStaggerRole.hidden,\n visible: (index: unknown = 0) =>\n dockListStaggerRole.visible(Number(index) || 0),\n exit: dockListStaggerRole.exit,\n});\n\nexport const dockFadeVariants = Object.freeze({\n hidden: {\n opacity: 0,\n transform: toGpuTransform(6, 0.99),\n },\n visible: {\n opacity: 1,\n transform: toGpuTransform(0),\n transition: DOCK_TEXT_ENTER_TRANSITION,\n },\n exit: {\n opacity: 0,\n transform: toGpuTransform(-4, 0.99),\n transition: DOCK_TEXT_EXIT_TRANSITION,\n },\n});\n\nexport const dockIconVariants = Object.freeze({\n hidden: {\n opacity: 0,\n transform: toGpuTransform(0, 0.92),\n },\n visible: {\n opacity: 1,\n transform: toGpuTransform(0, 1),\n transition: {\n duration: DOCK_DURATIONS.FAST,\n ease: DOCK_EASINGS.SOFT,\n },\n },\n exit: {\n opacity: 0,\n transform: toGpuTransform(0, 0.92),\n transition: {\n duration: DOCK_DURATIONS.FAST,\n ease: DOCK_EASINGS.EXIT,\n },\n },\n});\n\nexport const dockBadgeVariants = Object.freeze({\n hidden: {\n opacity: 0,\n transform: toGpuTransform(0, 0.88),\n },\n visible: {\n opacity: 1,\n transform: toGpuTransform(0),\n },\n exit: {\n opacity: 0,\n transform: toGpuTransform(0, 0.9),\n },\n});\n\nexport const dockBackdropVariants = Object.freeze({\n hidden: {\n opacity: 0,\n },\n visible: {\n opacity: 1,\n },\n exit: {\n opacity: 0,\n },\n});\n\nexport const dockBreadcrumbsVariants = Object.freeze({\n hidden: {\n opacity: 0,\n transform: toGpuTransform(-5, 0.985),\n },\n visible: {\n opacity: 1,\n transform: toGpuTransform(0),\n transition: DOCK_CARD_EXPAND_TRANSITION,\n },\n exit: {\n opacity: 0,\n transform: toGpuTransform(-3, 0.99),\n transition: DOCK_CARD_TRANSITION,\n },\n});\n\nexport const dockHudVariants = Object.freeze({\n hidden: {\n opacity: 0,\n transform: toGpuTransform(4, 0.99),\n },\n visible: {\n opacity: 1,\n transform: toGpuTransform(0),\n transition: DOCK_HUD_TRANSITION,\n },\n exit: {\n opacity: 0,\n transform: toGpuTransform(3, 0.99),\n transition: DOCK_TEXT_EXIT_TRANSITION,\n },\n});\n\nexport const dockScrubberTooltipVariants = Object.freeze({\n hidden: {\n opacity: 0,\n transform: toGpuTransform(4, 0.98),\n },\n visible: {\n opacity: 1,\n transform: toGpuTransform(0),\n },\n exit: {\n opacity: 0,\n transform: toGpuTransform(3, 0.99),\n },\n});\n\nexport function getDockDescriptionVariants(targetOpacity = 0.7) {\n return {\n hidden: {\n opacity: 0,\n transform: toGpuTransform(4, 0.99),\n },\n visible: {\n opacity: targetOpacity,\n transform: toGpuTransform(0),\n transition: {\n duration: DOCK_DURATIONS.BASE,\n ease: DOCK_EASINGS.EMPHASIZED,\n },\n },\n exit: {\n opacity: 0,\n transform: toGpuTransform(-3, 0.99),\n transition: {\n duration: DOCK_DURATIONS.FAST,\n ease: DOCK_EASINGS.EXIT,\n },\n },\n };\n}\n\nexport function getDockActionMotionProps({\n disabled = false,\n reduceMotion = false,\n}: {\n disabled?: boolean;\n reduceMotion?: boolean;\n} = {}) {\n const canMove = !disabled && !reduceMotion;\n return {\n initial: false as const,\n animate: \"idle\",\n whileTap: canMove ? \"tap\" : undefined,\n variants: dockActionVariants,\n transition: DOCK_BUTTON_TRANSITION,\n };\n}\n\nexport function getDockMediaVolumeFillTransition({\n isDragging = false,\n}: { isDragging?: boolean } = {}) {\n return isDragging ? \"none\" : DOCK_MEDIA_VOLUME_FILL_TRANSITION;\n}\n\nexport function getDockMediaVolumeThumbAnimateProps({\n isDragging = false,\n}: {\n isDragging?: boolean;\n} = {}) {\n return isDragging\n ? dockMediaVolumeThumbVariants.dragging\n : dockMediaVolumeThumbVariants.idle;\n}\n\nexport function getDockMediaVolumeThumbPositionTransition({\n isDragging = false,\n}: {\n isDragging?: boolean;\n} = {}) {\n return isDragging ? \"none\" : DOCK_MEDIA_VOLUME_THUMB_POSITION_TRANSITION;\n}\n\nfunction getDockSurfaceStackScale(surfacePhase?: string | null): number {\n if (surfacePhase === DOCK_SURFACE_PHASE.DISMISSING_ACTION) {\n return DOCK_SURFACE_STACK_SCALE.OPEN_ANTICIPATION_COMPRESS;\n }\n if (surfacePhase === DOCK_SURFACE_PHASE.CLOSING_ANTICIPATION) {\n return DOCK_SURFACE_STACK_SCALE.CLOSE_ANTICIPATION_COMPRESS;\n }\n return DOCK_SURFACE_STACK_SCALE.REST;\n}\n\nexport function getDockStackTransformTransition(\n surfacePhase: string | null | undefined,\n fallbackTransition: Transition,\n) {\n if (surfacePhase === DOCK_SURFACE_PHASE.EXPANDING_BODY) {\n return DOCK_SURFACE_STACK_ARRIVAL_TRANSITION;\n }\n if (\n surfacePhase === DOCK_SURFACE_PHASE.DISMISSING_ACTION ||\n surfacePhase === DOCK_SURFACE_PHASE.CLOSING_ANTICIPATION\n ) {\n return DOCK_SURFACE_ANTICIPATION_HIDE_TRANSITION;\n }\n return fallbackTransition;\n}\n\nexport function getDockStackAnimateProps({\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 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(surfacePhase),\n ),\n opacity: isFullscreen ? 0 : 1,\n boxShadow: isSurfaceActive\n ? DOCK_STACK_ELEVATION.ELEVATED\n : DOCK_STACK_ELEVATION.REST,\n pointerEvents: isFullscreen ? (\"none\" as const) : (\"auto\" as const),\n };\n}\n\nexport function getDockCardDelay({\n expanded = false,\n isStackHovered = false,\n position = 0,\n}: {\n expanded?: boolean;\n isStackHovered?: boolean;\n position?: number;\n} = {}) {\n const safePosition = Math.max(0, Number(position) || 0);\n if (expanded && safePosition > 0) {\n return staggerDelay(safePosition, {\n base: DOCK_STAGGER_TIMINGS.EXPAND,\n cap: 0.16,\n });\n }\n if (isStackHovered && safePosition > 0) {\n return staggerDelay(safePosition - 1, {\n base: DOCK_STAGGER_TIMINGS.PEEK,\n cap: 0.064,\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 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 if (!motionValues) return {};\n const safePosition = Math.max(0, Number(position) || 0);\n const isHoveredOffset =\n !expanded && isStackHovered && safePosition > 0 && !isSurfaceActive;\n const peekProgress = Math.min(safePosition / 3, 1);\n const peekOffset = DOCK_TIERS.MICRO.distance * (0.85 + peekProgress * 0.35);\n const peekScale = DOCK_TIERS.MICRO.scaleDelta * (1 - peekProgress * 0.25);\n const y = isHoveredOffset\n ? motionValues.y - safePosition * peekOffset\n : motionValues.y;\n const scale = isHoveredOffset\n ? motionValues.scale * (1 + peekScale)\n : motionValues.scale;\n\n return {\n transform: toGpuTransform(y, scale),\n opacity: motionValues.opacity,\n };\n}\n\nexport function getDockItemTransition({\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 const safePosition = Math.max(0, Number(position) || 0);\n const baseTransition = expanded\n ? DOCK_CARD_SPRING\n : isStackHovered && safePosition > 0\n ? DOCK_PEEK_TRANSITION\n : DOCK_CARD_TRANSITION;\n return {\n ...baseTransition,\n delay: Number(delay) || 0,\n };\n}\n\nexport function getDockItemExitValues({\n motionValues,\n position = 0,\n}: {\n motionValues?: DockItemMotionValues;\n position?: number;\n} = {}) {\n const safePosition = Math.max(0, Number(position) || 0);\n const targetY =\n motionValues && Number.isFinite(motionValues.y)\n ? motionValues.y\n : safePosition * DOCK_CARD_DIMENSIONS.collapsedY;\n const targetScale =\n motionValues && Number.isFinite(motionValues.scale)\n ? motionValues.scale * 0.98\n : 0.98 - Math.min(safePosition * 0.008, 0.024);\n\n return {\n opacity: 0,\n transform: toGpuTransform(targetY, targetScale),\n transition: {\n ...DOCK_CARD_COLLAPSE_TRANSITION,\n },\n };\n}\n\nexport function getDockCardContentAnimateProps({\n expanded = false,\n position = 0,\n isExtensionShelf = false,\n}: {\n expanded?: boolean;\n position?: number;\n isExtensionShelf?: boolean;\n} = {}) {\n const isHidden = !expanded && position > 0 && !isExtensionShelf;\n return {\n opacity: isHidden ? 0 : 1,\n transform: toGpuTransform(\n isHidden ? DOCK_TIERS.STANDARD.distance * 0.35 : 0,\n isHidden ? 1 - DOCK_TIERS.MICRO.scaleDelta : 1,\n ),\n };\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} from \"../types\";\nimport { normalizeSurfaceFlowSnapshot, createDockScheduler } from \"../utils\";\nimport { DOCK_SURFACE_PHASE, DOCK_LIFECYCLE } from \"../constants\";\nimport { DOCK_SURFACE_CHOREOGRAPHY_TIMINGS } from \"../motion\";\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\nfunction createScheduledTransition(\n delayMs: number,\n label: string,\n): SurfaceTransitionEffect {\n return {\n delayMs: Math.max(0, Number(delayMs) || 0),\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): 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 holdMs = event.skipActionDismiss\n ? DOCK_SURFACE_CHOREOGRAPHY_TIMINGS.ANTICIPATION_LEAD_MS\n : DOCK_SURFACE_CHOREOGRAPHY_TIMINGS.ACTION_DISMISS_MS -\n DOCK_SURFACE_CHOREOGRAPHY_TIMINGS.ACTION_DISMISS_OVERLAP_MS;\n const effects = isStacked\n ? [Object.freeze({ surfaceId, type: SURFACE_TRANSITION_EFFECTS.MOUNT })]\n : [createScheduledTransition(holdMs, \"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 DOCK_SURFACE_CHOREOGRAPHY_TIMINGS.ANTICIPATION_LEAD_MS,\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 DOCK_SURFACE_CHOREOGRAPHY_TIMINGS.ANTICIPATION_LEAD_MS,\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 DOCK_SURFACE_CHOREOGRAPHY_TIMINGS.BODY_EXIT_MS +\n DOCK_SURFACE_CHOREOGRAPHY_TIMINGS.BODY_COLLAPSE_SETTLE_MS,\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 DOCK_SURFACE_CHOREOGRAPHY_TIMINGS.BODY_ENTER_MS,\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 DOCK_SURFACE_CHOREOGRAPHY_TIMINGS.HEADER_RESTORE_MS > 0\n ) {\n return createTransitionResult(\n freezeSurfaceTransitionState({\n ...state,\n phase: DOCK_SURFACE_PHASE.RESTORING_HEADER,\n }),\n [\n createScheduledTransition(\n DOCK_SURFACE_CHOREOGRAPHY_TIMINGS.HEADER_RESTORE_MS,\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}: {\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} = {}) {\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);\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 use,\n useCallback,\n useMemo,\n useEffect,\n useRef,\n useInsertionEffect,\n useState,\n type RefObject,\n type CSSProperties,\n} from \"react\";\nimport { usePathname } from \"next/navigation\";\nimport { useStore, useIsomorphicLayoutEffect } from \"@/hooks\";\nimport { useModuleRegistration, type RegistryMetadata } from \"@/kernel\";\nimport { createStore, shallowEqual, cn } from \"@/utils\";\nimport { useModuleTheme } from \"../theme\";\nimport { Z_INDEX } from \"@/tokens\";\nimport {\n DockContext,\n EMPTY_DOCK_STATE,\n useDockActions,\n useDockHeight,\n useDockSelector,\n useDockState,\n} from \"./context\";\nimport {\n isSamePath,\n blurActiveElement,\n focusDockElement,\n getDockFocusableElements,\n isEditableDockTarget,\n isInteractiveTarget,\n shouldRestoreDockFocus,\n isInlineActionPathMatch,\n getImageIconStyle,\n getItemKey,\n getItemMeasurementKey,\n getLineClampStyle,\n getRouteMeasurementKey,\n resolveDockActionClass,\n splitStyle,\n toObject,\n} from \"./utils\";\nimport {\n type DockBannerInput,\n type DockPageConfig,\n type DockState,\n type DockReturnHandoff,\n type DockActions,\n type DockItem,\n type ContainerHeightOptions,\n type DockItemCardPropsOptions,\n type DockStyleSectionName,\n type DockVisualStyle,\n type DockVisualStyleInput,\n type DockVisualStyleSection,\n type DockVisualStyleSections,\n type UseDockHeightControllerOptions,\n} from \"./types\";\nimport {\n DOCK_STYLE_SECTIONS,\n HEIGHT_EPSILON,\n DOCK_CARD_LAYOUT,\n DOCK_HEIGHT_BUFFER,\n DOCK_SURFACE_PHASE,\n VIEWPORT_MARGIN,\n dockTheme,\n} from \"./constants\";\n\nexport {\n DockContext,\n useDockActions,\n useDockHeight,\n useDockSelector,\n useDockState,\n};\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\nexport { blurActiveElement, focusDockElement, shouldRestoreDockFocus };\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 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 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\nexport {\n getImageIconStyle,\n getItemKey,\n getItemMeasurementKey,\n getLineClampStyle,\n getRouteMeasurementKey,\n splitStyle,\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 getViewportMaxHeight(): number {\n if (typeof window === \"undefined\") return Infinity;\n return window.innerHeight - VIEWPORT_MARGIN;\n}\n\nfunction 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\nfunction 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> | ResizeObserverSize | 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 if (entry?.contentRect?.height != null)\n return Math.round(entry.contentRect.height);\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\nfunction 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 const surfacePhaseRef = useRef(surfacePhase);\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 useInsertionEffect(() => {\n isHudRef.current = isHud;\n surfacePhaseRef.current = surfacePhase;\n }, [isHud, surfacePhase]);\n\n const applyHeight = useCallback(() => {\n if (rafRef.current !== null) {\n cancelAnimationFrame(rafRef.current);\n rafRef.current = null;\n }\n\n const { content } = heightRef.current;\n const currentPhase = surfacePhaseRef.current;\n const isLockedToBaseHeight =\n currentPhase === DOCK_SURFACE_PHASE.DISMISSING_ACTION ||\n currentPhase === DOCK_SURFACE_PHASE.COLLAPSING_BODY ||\n currentPhase === DOCK_SURFACE_PHASE.RESTORING_HEADER;\n\n const computedContentHeight = isLockedToBaseHeight ? 0 : content;\n const height = getContainerHeight({\n cardContentHeight: computedContentHeight,\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\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 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\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\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 createContext,\n isValidElement,\n use,\n useMemo,\n useRef,\n useSyncExternalStore,\n useId,\n useState,\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 DockScheduledTaskId,\n type DockScheduler,\n type DockSurfaceActions,\n type SurfaceFlowDefinition,\n type SurfaceFlowDefinitionInput,\n type SurfaceFlowHandle,\n type SurfaceResult,\n type SurfaceStackEntry,\n type ActiveSurfaceStep,\n type DockComponentProps,\n type DockItem,\n type NormalizedSurfaceDefinition,\n type NormalizedSurfaceExtension,\n type OpenSurfaceOptions,\n type RenderableSurfaceEntry,\n type SurfaceBuilderDefinition,\n type SurfaceBuilderFactory,\n type SurfaceDescriptor,\n type SurfaceFlowContextValue,\n type SurfaceFlowSession,\n type SurfaceFlowState,\n type SurfaceInput,\n type SurfaceStep,\n type SurfaceViewModelOptions,\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 \"../utils\";\nimport { useDockFocusTrap } from \"../hooks\";\nimport {\n DOCK_SURFACE_BODY_ENTER_TRANSITION,\n DOCK_SURFACE_BODY_EXIT_TRANSITION,\n DOCK_SURFACE_BODY_STEP_TRANSITION,\n DOCK_SURFACE_DRAG_INTERPOLATION,\n DOCK_SURFACE_DRAG_THRESHOLDS,\n dockSurfaceBodyRole,\n} from \"../motion\";\nimport { report } from \"@/utils\";\n\n/* eslint-disable react-hooks/immutability -- the surface shell forwards its element through a caller-supplied ref */\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 || \"global\";\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 id,\n order = 0,\n unstyled = false,\n}: {\n align?: string;\n children?: ReactNode;\n className?: string;\n id?: string;\n order?: number;\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 useEffect(() => {\n if (!store) return;\n store.setExtension(surfaceId, {\n align,\n className,\n content: children,\n id: effectiveId,\n order,\n unstyled,\n });\n });\n\n useEffect(() => {\n return () => {\n if (store) store.removeExtension(surfaceId, effectiveId);\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 || \"global\";\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 && 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 || \"global\";\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\nconst DRAG_RANGE = [...DOCK_SURFACE_DRAG_INTERPOLATION.DRAG_RANGE];\n\nconst OPACITY_RANGE = [...DOCK_SURFACE_DRAG_INTERPOLATION.OPACITY_RANGE];\n\nconst SCALE_RANGE = [...DOCK_SURFACE_DRAG_INTERPOLATION.SCALE_RANGE];\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 dragY = useMotionValue(0);\n const dragOpacity = useTransform(dragY, DRAG_RANGE, OPACITY_RANGE);\n const dragScale = useTransform(dragY, DRAG_RANGE, SCALE_RANGE);\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 () => ({\n hidden: dockSurfaceBodyRole.hidden,\n visible: {\n ...dockSurfaceBodyRole.visible,\n transition:\n surfacePhase === DOCK_SURFACE_PHASE.EXPANDING_BODY\n ? DOCK_SURFACE_BODY_ENTER_TRANSITION\n : DOCK_SURFACE_BODY_STEP_TRANSITION,\n },\n exit: {\n ...dockSurfaceBodyRole.exit,\n transition: DOCK_SURFACE_BODY_EXIT_TRANSITION,\n },\n }),\n [surfacePhase],\n );\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","\"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 }) => boolean;\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 { useCallback, useEffect, useMemo, useReducer, useRef } from \"react\";\nimport {\n DOCK_TRANSACTION_EVENTS,\n DOCK_TRANSACTION_REASON,\n DOCK_TRANSACTION_STATUS,\n DOCK_TRANSACTION_TIMEOUT_MS,\n} from \"../constants\";\nimport { isSamePath } from \"../utils\";\nimport {\n type DockTransaction,\n type DockTransactionAction,\n type DockTransactionEvent,\n type DockTransactionState,\n} from \"../types\";\n\nfunction createDockTransactionState(): DockTransactionState {\n return { active: null, last: null };\n}\n\nfunction createDockTransaction({\n from = \"\",\n id,\n source = \"dock\",\n startedAt = Date.now(),\n to = \"\",\n}: {\n from?: string;\n id: number;\n source?: string;\n startedAt?: number;\n to?: string;\n}): DockTransaction {\n return {\n from: String(from || \"\"),\n id,\n source,\n startedAt,\n status: DOCK_TRANSACTION_STATUS.PENDING as string,\n to: String(to || \"\"),\n };\n}\n\nfunction settleDockTransaction(\n transaction: DockTransaction,\n action: Omit<DockTransactionAction, \"type\">,\n status: string,\n): DockTransaction {\n return {\n ...transaction,\n endedAt: action.endedAt ?? Date.now(),\n error: action.error ?? null,\n reason: action.reason ?? null,\n status,\n };\n}\n\nconst TRANSACTION_STATUS_MAP: Record<string, string> = Object.freeze({\n [DOCK_TRANSACTION_EVENTS.COMPLETE]: DOCK_TRANSACTION_STATUS.COMPLETED,\n [DOCK_TRANSACTION_EVENTS.CANCEL]: DOCK_TRANSACTION_STATUS.CANCELLED,\n [DOCK_TRANSACTION_EVENTS.FAIL]: DOCK_TRANSACTION_STATUS.FAILED,\n [DOCK_TRANSACTION_EVENTS.TIME_OUT]: DOCK_TRANSACTION_STATUS.TIMED_OUT,\n});\n\nfunction dockTransactionReducer(\n state: DockTransactionState,\n action: DockTransactionAction | null | undefined,\n): DockTransactionState {\n if (action?.type === DOCK_TRANSACTION_EVENTS.START) {\n const nextTransaction = action.transaction;\n if (nextTransaction?.id == null) return state;\n\n const supersededTransaction = state.active\n ? settleDockTransaction(\n state.active,\n { reason: DOCK_TRANSACTION_REASON.SUPERSEDED },\n DOCK_TRANSACTION_STATUS.CANCELLED,\n )\n : state.last;\n\n return { active: nextTransaction, last: supersededTransaction };\n }\n\n const newStatus = action ? TRANSACTION_STATUS_MAP[action.type] : undefined;\n if (newStatus && action && state.active && state.active.id === action.id) {\n return {\n active: null,\n last: settleDockTransaction(state.active, action, newStatus),\n };\n }\n\n return state;\n}\n\nexport function useDockTransactions({\n onTransactionEvent = null,\n onTimeout = null,\n timeoutMs = DOCK_TRANSACTION_TIMEOUT_MS,\n}: {\n onTransactionEvent?: ((event: DockTransactionEvent) => void) | null;\n onTimeout?: ((transaction: DockTransaction) => void) | null;\n timeoutMs?: number;\n} = {}) {\n const [state, dispatch] = useReducer(\n dockTransactionReducer,\n undefined,\n createDockTransactionState,\n );\n\n const activeTransactionRef = useRef<DockTransaction | null>(null);\n const nextTransactionIdRef = useRef(0);\n const timeoutRef = useRef<ReturnType<typeof setTimeout> | null>(null);\n\n const onTimeoutRef = useRef(onTimeout);\n const onTransactionEventRef = useRef(onTransactionEvent);\n\n useEffect(() => {\n onTimeoutRef.current = onTimeout;\n }, [onTimeout]);\n useEffect(() => {\n onTransactionEventRef.current = onTransactionEvent;\n }, [onTransactionEvent]);\n\n const clearTransactionTimeout = useCallback(() => {\n if (timeoutRef.current !== null) {\n clearTimeout(timeoutRef.current);\n timeoutRef.current = null;\n }\n }, []);\n\n const settleTransaction = useCallback(\n (\n id: number,\n type: string,\n details: Pick<DockTransactionAction, \"error\" | \"reason\"> = {},\n ) => {\n const activeTransaction = activeTransactionRef.current;\n if (!activeTransaction || activeTransaction.id !== id) return false;\n\n clearTransactionTimeout();\n activeTransactionRef.current = null;\n\n const event = { ...details, endedAt: Date.now(), id, type };\n const settledTransaction = settleDockTransaction(\n activeTransaction,\n event,\n TRANSACTION_STATUS_MAP[type] || DOCK_TRANSACTION_STATUS.TIMED_OUT,\n );\n\n dispatch(event);\n onTransactionEventRef.current?.({\n transaction: settledTransaction,\n type,\n });\n return true;\n },\n [clearTransactionTimeout],\n );\n\n const beginTransaction = useCallback(\n ({\n from,\n source,\n to,\n }: { from?: string; source?: string; to?: string } = {}) => {\n const activeTransaction = activeTransactionRef.current;\n if (activeTransaction) {\n settleTransaction(\n activeTransaction.id,\n DOCK_TRANSACTION_EVENTS.CANCEL,\n { reason: DOCK_TRANSACTION_REASON.SUPERSEDED },\n );\n }\n\n const transaction = createDockTransaction({\n from,\n id: ++nextTransactionIdRef.current,\n source,\n to,\n });\n activeTransactionRef.current = transaction;\n\n dispatch({ transaction, type: DOCK_TRANSACTION_EVENTS.START });\n onTransactionEventRef.current?.({\n transaction,\n type: DOCK_TRANSACTION_EVENTS.START,\n });\n\n const safeTimeout = Number(timeoutMs);\n if (Number.isFinite(safeTimeout) && safeTimeout > 0) {\n timeoutRef.current = setTimeout(() => {\n if (\n !settleTransaction(\n transaction.id,\n DOCK_TRANSACTION_EVENTS.TIME_OUT,\n { reason: DOCK_TRANSACTION_REASON.TIME_OUT },\n )\n )\n return;\n onTimeoutRef.current?.(transaction);\n }, safeTimeout);\n }\n return transaction;\n },\n [settleTransaction, timeoutMs],\n );\n\n const completeTransaction = useCallback(\n (id: number) => settleTransaction(id, DOCK_TRANSACTION_EVENTS.COMPLETE),\n [settleTransaction],\n );\n const cancelTransaction = useCallback(\n (id: number, reason: string | null = null) =>\n settleTransaction(id, DOCK_TRANSACTION_EVENTS.CANCEL, { reason }),\n [settleTransaction],\n );\n const cancelActiveTransaction = useCallback(\n (reason: string | null = null) =>\n activeTransactionRef.current\n ? cancelTransaction(activeTransactionRef.current.id, reason)\n : false,\n [cancelTransaction],\n );\n const failTransaction = useCallback(\n (id: number, error: unknown) =>\n settleTransaction(id, DOCK_TRANSACTION_EVENTS.FAIL, { error }),\n [settleTransaction],\n );\n\n const completeTransactionForPath = useCallback(\n (pathname: string) => {\n const activeTransaction = activeTransactionRef.current;\n if (!activeTransaction || !isSamePath(activeTransaction.to, pathname))\n return false;\n return completeTransaction(activeTransaction.id);\n },\n [completeTransaction],\n );\n\n const isTransactionCurrent = useCallback(\n (id: number) => activeTransactionRef.current?.id === id,\n [],\n );\n\n useEffect(() => {\n return () => {\n clearTransactionTimeout();\n activeTransactionRef.current = null;\n };\n }, [clearTransactionTimeout]);\n\n return useMemo(\n () => ({\n activeTransaction: state.active,\n beginTransaction,\n cancelActiveTransaction,\n cancelTransaction,\n completeTransaction,\n completeTransactionForPath,\n failTransaction,\n isTransactionCurrent,\n lastTransaction: state.last,\n }),\n [\n state.active,\n state.last,\n beginTransaction,\n cancelActiveTransaction,\n cancelTransaction,\n completeTransaction,\n completeTransactionForPath,\n failTransaction,\n isTransactionCurrent,\n ],\n );\n}\n","\"use client\";\n\nimport { normalizePath } from \"@/utils\";\nimport {\n useCallback,\n useEffect,\n useMemo,\n useRef,\n useSyncExternalStore,\n} from \"react\";\nimport { usePathname, useRouter } from \"next/navigation\";\nimport { useRequiredContext } from \"@/hooks\";\nimport { globalEvents } from \"@/events\";\nimport { isSafeInternalHref, isSamePath, getDockLocationKey } from \"../utils\";\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 type DockTransaction,\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 \"../hooks\";\nimport { openDockGuardConfirmation } from \"./guards\";\nimport { useDockTransactions } from \"./transactions\";\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 }: { intentDelayMs?: number } = {},\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 (!isSafeInternalHref(href) || typeof router?.prefetch !== \"function\")\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 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, 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\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 previousLocationKeyRef = useRef(locationKey);\n\n const handleTransactionTimeout = useCallback(() => {\n clearPreparedRouteReset();\n stopLoading();\n }, [clearPreparedRouteReset, stopLoading]);\n\n const {\n activeTransaction,\n beginTransaction,\n cancelActiveTransaction,\n cancelTransaction,\n completeTransactionForPath,\n failTransaction,\n isTransactionCurrent,\n lastTransaction,\n } = useDockTransactions({\n onTimeout: handleTransactionTimeout,\n });\n\n const cancelDock = useCallback(\n (reason = \"guard\") => {\n cancelActiveTransaction(reason);\n clearPreparedRouteReset();\n closeSurface({ cancelled: true, reason, success: false });\n },\n [cancelActiveTransaction, clearPreparedRouteReset, closeSurface],\n );\n\n const commitDock = useCallback(\n ({\n from,\n href,\n routePolicy,\n source = \"dock\",\n transaction = null,\n }: {\n from: string;\n href: string;\n routePolicy: DockRoutePolicy;\n source?: string;\n transaction?: DockTransaction | null;\n }) => {\n const activeRouteTransaction =\n transaction || beginTransaction({ from, source, to: href });\n if (!isTransactionCurrent(activeRouteTransaction.id)) return false;\n\n try {\n continuity?.remember?.(from);\n blurActiveElement();\n prepareRouteReset(routePolicy);\n\n emitDockEvent(DOCK_EVENTS.NAVIGATE_START, { from, to: href });\n router.push(href);\n emitDockEvent(DOCK_EVENTS.NAVIGATE, {\n from,\n item: undefined,\n to: href,\n });\n\n if (typeof window !== \"undefined\") {\n const currentUrl = new URL(window.location.href);\n const destinationUrl = new URL(href, window.location.origin);\n\n if (\n normalizePath(currentUrl.pathname) ===\n normalizePath(destinationUrl.pathname)\n ) {\n window.requestAnimationFrame(() => {\n const currentLocKey = getDockLocationKey({\n hash: window.location.hash,\n pathname: window.location.pathname,\n search: window.location.search,\n });\n if (\n !isSamePath(currentLocKey, href) ||\n !completeTransactionForPath(currentLocKey)\n )\n return;\n\n emitDockEvent(DOCK_EVENTS.NAVIGATE_END, {\n duration: undefined,\n from,\n to: currentLocKey,\n });\n previousLocationKeyRef.current = currentLocKey;\n syncLocationKey();\n stopLoading();\n });\n }\n }\n return true;\n } catch (error) {\n clearPreparedRouteReset();\n failTransaction(activeRouteTransaction.id, error);\n stopLoading();\n report(\"Dock route transition\", error);\n return false;\n }\n },\n [\n beginTransaction,\n clearPreparedRouteReset,\n completeTransactionForPath,\n continuity,\n failTransaction,\n isTransactionCurrent,\n prepareRouteReset,\n router,\n stopLoading,\n syncLocationKey,\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 const transaction = beginTransaction({ from, source, to: href });\n\n try {\n if (!force && guards.count() > 0) {\n const guardResult = await guards.check(href, from);\n if (!isTransactionCurrent(transaction.id)) return false;\n if (guardResult.blocked) {\n cancelTransaction(transaction.id, \"guard\");\n blurActiveElement();\n openDockGuardConfirmation({\n closeSurface,\n commit: commitDock,\n from,\n href,\n message: guardResult.message,\n routePolicy,\n });\n return false;\n }\n }\n return commitDock({\n from,\n href,\n routePolicy,\n source,\n transaction,\n });\n } catch (error) {\n failTransaction(transaction.id, error);\n stopLoading();\n report(\"Dock navigation guard\", error);\n return false;\n }\n },\n [\n guards,\n beginTransaction,\n cancelTransaction,\n commitDock,\n failTransaction,\n isTransactionCurrent,\n closeSurface,\n locationKey,\n stopLoading,\n ],\n );\n\n useEffect(() => {\n if (previousLocationKeyRef.current === locationKey) return;\n emitDockEvent(DOCK_EVENTS.NAVIGATE_END, {\n duration: undefined,\n from: previousLocationKeyRef.current,\n to: locationKey,\n });\n completeTransactionForPath(locationKey);\n previousLocationKeyRef.current = locationKey;\n stopLoading();\n }, [completeTransactionForPath, locationKey, 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 { Icon } from \"@/atoms\";\nimport { useMotionValue, useSpring } from \"motion/react\";\nimport {\n isInlineActionPathMatch,\n isValidBannerUrl,\n resolveDockHeaderKey,\n} from \"./utils\";\nimport {\n DockCardBannerProps,\n DockCardItemProps,\n type DockActionDescriptor,\n type DockItem,\n type DockBadgeState,\n type DockIconSource,\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 shouldRenderInlineAction,\n getItemMeasurementKey,\n getRouteMeasurementKey,\n resolveDockVisualStyle,\n getDockItemCardProps,\n useDockTheme,\n useElementHeight,\n} from \"./hooks\";\nimport { useDockHasMedia, useDockMedia, useDockMediaActions } from \"./context\";\nimport {\n DOCK_SURFACE_BODY_ENTER_TRANSITION,\n getDockCardDelay,\n dockHeaderRestoreVariants,\n DOCK_SCRUBBER_TOOLTIP_SPRING,\n} from \"./motion\";\nimport { resolveDockRoutePolicy, useRoutePrefetch } from \"./routing/navigation\";\n\n/* eslint-disable react-hooks/immutability, react-hooks/set-state-in-effect -- imperative media-element control and ref forwarding sit outside React Compiler's model */\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\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 { action, isLoading, isOverlay, path, isStatus, isSurface } = item;\n const hasMedia = useDockHasMedia();\n\n return useMemo(() => {\n if (isLoading || (isOverlay && !isStatus) || isSurface) 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 isSurface,\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 { cancelRoutePrefetch, prefetchRoute } = useRoutePrefetch(router);\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 renderedActionSlot =\n (item.isSurface && !isHeaderRestoring) || isTopHudActive\n ? null\n : actionSlot;\n const hasNestedInteractiveContent = Boolean(\n renderedActionSlot || (item.isSurface && !isHeaderRestoring),\n );\n const headerRestoreVariants = useMemo(\n () => ({\n hidden: dockHeaderRestoreVariants.hidden,\n visible: {\n ...dockHeaderRestoreVariants.visible,\n transition:\n item.surfacePhase === DOCK_SURFACE_PHASE.COLLAPSING_BODY\n ? DOCK_SURFACE_BODY_ENTER_TRANSITION\n : dockHeaderRestoreVariants.visible.transition,\n },\n exit: dockHeaderRestoreVariants.exit,\n }),\n [item.surfacePhase],\n );\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({ expanded, isStackHovered, position }),\n [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 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 smoothHoverX = useSpring(hoverX, DOCK_SCRUBBER_TOOLTIP_SPRING);\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 \"./utils\";\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 isValidComponentType,\n resolveComponentType,\n resolveRenderableContent,\n} from \"../utils\";\nimport { normalizeExtensions } from \"./definition\";\nimport {\n type ActiveSurfaceStep,\n type DockComponentProps,\n type DockItem,\n type NormalizedSurfaceDefinition,\n type NormalizedSurfaceExtension,\n type OpenSurfaceOptions,\n type RenderableSurfaceEntry,\n type SurfaceBuilderDefinition,\n type SurfaceBuilderFactory,\n type SurfaceDescriptor,\n type SurfaceFlowContextValue,\n type SurfaceFlowDefinition,\n type SurfaceFlowDefinitionInput,\n type SurfaceFlowSession,\n type SurfaceFlowState,\n type SurfaceInput,\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 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 \"../utils\";\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 StatusState,\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 \"../utils\";\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 { useMemo, 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 {\n toSearchableText,\n isPathPrefix,\n isSamePath,\n resolveActiveIndex,\n} from \"../utils\";\nimport { useModuleTheme } from \"../../theme\";\nimport { DOCK_ATTENTION_KIND, dockTheme } 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\nfunction resolveBaseActiveItem({\n rawItems,\n dockItems,\n pathname,\n isNotFoundPage,\n}: {\n rawItems: DockItem[];\n dockItems: DockItem[];\n pathname: string;\n isNotFoundPage: boolean;\n}): DockItem | null {\n const normalizedPathname = normalizePath(pathname);\n\n const selectedDataSource = dockItems.find(\n (item) => item.isDataSource && item.isSelected,\n );\n if (selectedDataSource) return selectedDataSource;\n\n if (isNotFoundPage)\n return 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 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 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 return (\n dockItems.find(\n (entry) =>\n isSamePath(entry?.path, prefixMatchedRawItem?.path) ||\n (entry?.name && entry.name === prefixMatchedRawItem?.name),\n ) || prefixMatchedRawItem\n );\n }\n return rawItems[0] || null;\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}: {\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}): DockItem | null {\n const baseActiveItem = resolveBaseActiveItem({\n rawItems,\n dockItems,\n pathname,\n isNotFoundPage,\n });\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(overridePathname?: string) {\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 activeItem = useMemo(\n () =>\n resolveActiveItem({\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 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 useInsertionEffect,\n useReducer,\n} from \"react\";\nimport { usePathname, useRouter } from \"next/navigation\";\nimport { useRequiredContext, useClickOutside } from \"@/hooks\";\nimport { normalizePath, shallowEqual } from \"@/utils\";\nimport { useIsFullscreenStateActive } from \"@/atoms\";\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 isSameItem,\n removeAncestorDuplicates,\n removeInactiveLoadingItems,\n reorderItemsWithActiveFirst,\n replaceActiveItem,\n} from \"../utils\";\nimport {\n type DockItem,\n type DockNavigateOptions,\n type DockOperationInput,\n type DockActions,\n type DockRouteSnapshot,\n type DockViewBridge,\n} from \"../types\";\nimport {\n useDockRouteReset,\n getIsItemActive,\n getItemKey,\n useDockHeightController,\n useDockViewport,\n useDockKeyboard,\n} from \"../hooks\";\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 {\n DOCK_CARD_EXPAND_TRANSITION,\n DOCK_STACK_TRANSITION,\n DOCK_SURFACE_RESIZE_TRANSITION,\n getDockSurfaceResizeTransition,\n} 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 items = dockItems || [];\n const activeIndex = findDockItemIndex(items, activeItem ?? null, pathname);\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 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 useInsertionEffect(() => {\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 // eslint-disable-next-line react-hooks/refs\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 dockStackTransition = useMemo(() => {\n if (activeItem?.surfacePhase === DOCK_SURFACE_PHASE.EXPANDING_BODY) {\n return DOCK_CARD_EXPAND_TRANSITION;\n }\n if (\n activeItem?.surfacePhase === DOCK_SURFACE_PHASE.OPEN ||\n activeItem?.surfacePhase === DOCK_SURFACE_PHASE.CLOSING_ANTICIPATION\n ) {\n return surfaceResizeDistance > 0\n ? getDockSurfaceResizeTransition(surfaceResizeDistance)\n : DOCK_SURFACE_RESIZE_TRANSITION;\n }\n if (\n activeItem?.surfacePhase === DOCK_SURFACE_PHASE.COLLAPSING_BODY ||\n activeItem?.surfacePhase === DOCK_SURFACE_PHASE.RESTORING_HEADER\n ) {\n return DOCK_CARD_EXPAND_TRANSITION;\n }\n return expanded ? DOCK_CARD_EXPAND_TRANSITION : DOCK_STACK_TRANSITION;\n }, [activeItem?.surfacePhase, expanded, surfaceResizeDistance]);\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 type CSSProperties,\n type ComponentType,\n type ReactElement,\n type ReactNode,\n type ReactPortal,\n} from \"react\";\nimport { motion, AnimatePresence, MotionConfig } 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_FADE_TRANSITION,\n getDockActionMotionProps,\n DOCK_BADGE_TRANSITION,\n dockBadgeVariants,\n dockCommandBarSwapVariants,\n DOCK_TEXT_ENTER_TRANSITION,\n getDockDescriptionVariants,\n dockFadeVariants,\n DOCK_ICON_TRANSITION,\n dockIconVariants,\n DOCK_HEADER_SWAP_TRANSITION,\n dockHeaderSwapVariants,\n DOCK_SCRUBBER_TOOLTIP_TRANSITION,\n dockScrubberTooltipVariants,\n dockSurfaceControlsActionVariants,\n dockSurfaceControlsBackVariants,\n dockSurfaceControlsCloseVariants,\n dockSurfaceControlsContainerVariants,\n DOCK_SURFACE_DRAG_CONSTRAINTS,\n DOCK_SURFACE_DRAG_ELASTIC,\n dockSurfaceDragTransformTemplate,\n DOCK_HUD_TRANSITION,\n DOCK_SKELETON_PULSE_CLASS,\n dockHudVariants,\n DOCK_ACTION_DISMISS_TRANSITION,\n DOCK_BUTTON_TRANSITION,\n DOCK_SURFACE_ANTICIPATION_HIDE_TRANSITION,\n DOCK_TAP_SCALE,\n getDockCardContentAnimateProps,\n getDockItemAnimateValues,\n getDockItemExitValues,\n getDockItemTransition,\n dockActionDismissVariants,\n dockExtensionShelfVariants,\n textCrossfadeVariants,\n getDockMediaVolumeFillTransition,\n getDockMediaVolumeThumbAnimateProps,\n getDockMediaVolumeThumbPositionTransition,\n DOCK_CARD_EXPAND_TRANSITION,\n dockBreadcrumbsVariants,\n getDockBackdropTransition,\n getDockStackAnimateProps,\n getDockStackTransformTransition,\n dockBackdropVariants,\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 useDockActionClass,\n useDockActions,\n useDockTheme,\n} from \"./hooks\";\nimport { isValidComponentType, formatMediaTime } from \"./utils\";\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 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={DOCK_FADE_TRANSITION}\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 theme = useDockTheme();\n return (\n <Tooltip\n className={theme.slots.commandTooltip}\n text={action.tooltip ?? undefined}\n >\n <motion.button\n {...getDockActionMotionProps({ 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={dockBadgeVariants}\n initial=\"hidden\"\n animate=\"visible\"\n exit=\"exit\"\n transition={DOCK_BADGE_TRANSITION}\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 { 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={dockCommandBarSwapVariants}\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 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={getDockDescriptionVariants(targetOpacity)}\n initial=\"hidden\"\n animate=\"visible\"\n exit=\"exit\"\n transition={DOCK_TEXT_ENTER_TRANSITION}\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 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={dockFadeVariants}\n initial=\"hidden\"\n animate=\"visible\"\n exit=\"exit\"\n transition={DOCK_TEXT_ENTER_TRANSITION}\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 theme = useDockTheme();\n return (\n <AnimatePresence mode=\"wait\">\n {badge?.visible ? (\n <motion.div\n key={badge.value}\n variants={dockBadgeVariants}\n initial=\"hidden\"\n animate=\"visible\"\n exit=\"exit\"\n transition={DOCK_BADGE_TRANSITION}\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 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={dockBadgeVariants}\n initial=\"hidden\"\n animate=\"visible\"\n exit=\"exit\"\n transition={DOCK_BADGE_TRANSITION}\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={dockBadgeVariants}\n initial=\"hidden\"\n animate=\"visible\"\n exit=\"exit\"\n transition={DOCK_BADGE_TRANSITION}\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 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={dockIconVariants}\n initial=\"hidden\"\n animate=\"visible\"\n exit=\"exit\"\n transition={DOCK_ICON_TRANSITION}\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()}\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 { 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={dockHeaderSwapVariants}\n initial=\"hidden\"\n animate=\"visible\"\n exit=\"exit\"\n transition={DOCK_HEADER_SWAP_TRANSITION}\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 {\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={dockScrubberTooltipVariants}\n initial=\"hidden\"\n animate=\"visible\"\n exit=\"exit\"\n transition={DOCK_SCRUBBER_TOOLTIP_TRANSITION}\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 { 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={dockSurfaceControlsContainerVariants}\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={dockSurfaceControlsActionVariants}\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={dockSurfaceControlsBackVariants}\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={dockSurfaceControlsCloseVariants}\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 {\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={DOCK_SURFACE_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 theme = useDockTheme();\n return (\n <div className={theme.slots.loading}>\n <div className={cn(theme.slots.loadingIcon, DOCK_SKELETON_PULSE_CLASS)} />\n <div className={theme.slots.loadingText}>\n <div\n className={cn(theme.slots.loadingTitle, DOCK_SKELETON_PULSE_CLASS)}\n />\n <div\n className={cn(\n theme.slots.loadingDescription,\n DOCK_SKELETON_PULSE_CLASS,\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 isHudActive = false,\n hud = null,\n clearHud = null,\n contextCommands = [],\n pathname,\n}: StandardItemContentProps) {\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={dockHudVariants}\n initial=\"hidden\"\n animate=\"visible\"\n exit=\"exit\"\n transition={DOCK_HUD_TRANSITION}\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={dockFadeVariants}\n initial={false}\n animate=\"visible\"\n exit=\"exit\"\n transition={DOCK_TEXT_ENTER_TRANSITION}\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 {footerNode ? (\n <div\n key=\"dock-surface-footer\"\n className={theme.slots.cardFooter}\n style={theme.styles.cardFooter}\n >\n {footerNode}\n </div>\n ) : null}\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 {\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 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 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({\n motionValues,\n expanded,\n isStackHovered,\n isSurfaceActive,\n position,\n })}\n transition={getDockItemTransition({\n expanded,\n isStackHovered,\n position,\n delay: cardDelay,\n })}\n exit={getDockItemExitValues({ 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({\n motionValues,\n expanded,\n isStackHovered,\n isSurfaceActive,\n position,\n })}\n transition={getDockItemTransition({\n expanded,\n isStackHovered,\n position,\n delay: cardDelay,\n })}\n whileTap={\n !item.isOverlay && !item.isStatus && !isCollapsedBackgroundCard\n ? {\n scale: (motionValues?.scale || 1) * DOCK_TAP_SCALE,\n transition: DOCK_BUTTON_TRANSITION,\n }\n : undefined\n }\n exit={getDockItemExitValues({ 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({\n expanded,\n position,\n isExtensionShelf,\n })}\n transition={DOCK_TEXT_ENTER_TRANSITION}\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 {item.isSurface &&\n item.surfacePhase !== DOCK_SURFACE_PHASE.DISMISSING_ACTION &&\n item.surfacePhase !== DOCK_SURFACE_PHASE.COLLAPSING_BODY &&\n item.surfacePhase !== DOCK_SURFACE_PHASE.RESTORING_HEADER ? (\n <motion.div\n key=\"surface-content-layer\"\n variants={dockHeaderSwapVariants}\n initial=\"hidden\"\n animate=\"visible\"\n exit=\"exit\"\n transition={DOCK_HEADER_SWAP_TRANSITION}\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={dockExtensionShelfVariants}\n initial=\"hidden\"\n animate=\"visible\"\n exit=\"exit\"\n transition={DOCK_HEADER_SWAP_TRANSITION}\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=\"exit\"\n transition={\n item.surfacePhase === DOCK_SURFACE_PHASE.DISMISSING_ACTION\n ? DOCK_SURFACE_ANTICIPATION_HIDE_TRANSITION\n : DOCK_HEADER_SWAP_TRANSITION\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 <AnimatePresence mode=\"popLayout\" initial={false}>\n {item.surfacePhase ===\n DOCK_SURFACE_PHASE.DISMISSING_ACTION ? (\n <motion.div\n key=\"dock-action-component-dismiss\"\n variants={dockActionDismissVariants}\n initial=\"visible\"\n animate=\"exit\"\n exit=\"exit\"\n transition={DOCK_ACTION_DISMISS_TRANSITION}\n className={theme.slots.cardAction}\n onClick={stopPropagationOnly}\n >\n <Suspense>{renderedActionNode}</Suspense>\n </motion.div>\n ) : (\n <motion.div\n key=\"dock-action-component\"\n variants={textCrossfadeVariants}\n initial=\"hidden\"\n animate=\"visible\"\n exit=\"exit\"\n transition={DOCK_FADE_TRANSITION}\n className={theme.slots.cardAction}\n onClick={stopPropagationOnly}\n >\n <Suspense>{renderedActionNode}</Suspense>\n </motion.div>\n )}\n </AnimatePresence>\n ) : null\n }\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 {\n handleVolumeKeyDown,\n videoElement,\n toggleLoop,\n setVideoMuted,\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()}\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()}\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()}\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({ 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({\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({\n isDragging: isDraggingVolume,\n })}\n transition={DOCK_BUTTON_TRANSITION}\n style={{\n left: `${effectiveVolume * 100}%`,\n transition: getDockMediaVolumeThumbPositionTransition({\n isDragging: isDraggingVolume,\n }),\n }}\n />\n </div>\n </motion.div>\n\n {isPipSupported && (\n <motion.button\n {...getDockActionMotionProps()}\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()}\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 { 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={dockBreadcrumbsVariants}\n initial=\"hidden\"\n animate=\"visible\"\n exit=\"exit\"\n transition={DOCK_CARD_EXPAND_TRANSITION}\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 {\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 <MotionConfig reducedMotion=\"user\">\n <>\n <AnimatePresence>\n {isBackdropVisible && (\n <motion.div\n key=\"dock-backdrop\"\n variants={dockBackdropVariants}\n initial=\"hidden\"\n animate=\"visible\"\n exit=\"exit\"\n transition={getDockBackdropTransition({\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({\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(\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 </MotionConfig>\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 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={textCrossfadeVariants}\n initial=\"hidden\"\n animate=\"visible\"\n transition={DOCK_FADE_TRANSITION}\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 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={textCrossfadeVariants}\n initial=\"hidden\"\n animate=\"visible\"\n transition={DOCK_FADE_TRANSITION}\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 theme = useDockTheme();\n const actionClass = useDockActionClass();\n const router = useRouter();\n const { navigate } = useDockActions();\n return (\n <motion.div\n variants={textCrossfadeVariants}\n initial=\"hidden\"\n animate=\"visible\"\n transition={DOCK_FADE_TRANSITION}\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 \"../utils\";\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 useInsertionEffect,\n useMemo,\n useRef,\n useState,\n} from \"react\";\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 SurfacePayload,\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 \"../hooks\";\nimport { createDockScheduler, isValidComponentType } from \"../utils\";\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 { 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 [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 useInsertionEffect(() => {\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 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],\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 \"./hooks\";\nimport { BreadcrumbProvider } from \"./routing/breadcrumbs\";\nimport { isSamePath, createDockScheduler } from \"./utils\";\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 useInsertionEffect,\n useMemo,\n useRef,\n type ReactNode,\n} from \"react\";\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 useInsertionEffect(() => {\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\", \"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"]}
|
|
1
|
+
{"version":3,"sources":["../../../src/utils/cn.ts","../../../src/utils/string.ts","../../../src/utils/dom.ts","../../../src/utils/number.ts","../../../src/utils/object.ts","../../../src/utils/report.ts","../../../src/utils/user-message.ts","../../../src/utils/store.ts","../../../src/utils/scheduler.ts","../../../src/atoms/icon.tsx","../../../src/atoms/spinner.tsx","../../../src/atoms/tooltip.tsx","../../../src/atoms/button.tsx","../../../src/kernel/constants.ts","../../../src/kernel/context-registry.ts","../../../src/kernel/utils.ts","../../../src/kernel/schema.ts","../../../src/hooks/use-required-context.ts","../../../src/hooks/use-store.ts","../../../src/hooks/use-click-outside.ts","../../../src/hooks/use-isomorphic-layout-effect.ts","../../../src/events.ts","../../../src/hooks/use-global-event.ts","../../../src/hooks/use-fullscreen-state.ts","../../../src/kernel/provider.tsx","../../../src/kernel/installed.ts","../../../src/kernel/handlers.ts","../../../src/kernel/hooks.ts","../../../src/kernel/module.tsx","../../../src/kernel/adapters.ts","../../../src/theme.tsx","../../../src/modules/dock/constants.ts","../../../src/modules/dock/utils.ts","../../../src/modules/dock/surface/context.tsx","../../../src/modules/media/constants.ts","../../../src/modules/media/context.tsx","../../../src/modules/loading/constants.ts","../../../src/modules/loading/context.tsx","../../../src/modules/notification/constants.ts","../../../src/modules/notification/context.tsx","../../../src/tokens/tokens.ts","../../../src/tokens/motion.ts","../../../src/modules/dock/context.ts","../../../src/modules/dock/surface/definition.ts","../../../src/modules/dock/motion.ts","../../../src/modules/dock/surface/machine.ts","../../../src/modules/dock/hooks.ts","../../../src/modules/dock/surface/hooks.tsx","../../../src/modules/dock/routing/guards.ts","../../../src/modules/dock/routing/transactions.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":["listeners","IconifyIcon","jsx","useCallback","useEffect","useRef","useSyncExternalStore","subscribe","use","hasChanged","stabilizedValue","useState","useMemo","isValidElement","createContext","useContext","surfaceEntryFactory","stepSurfaceFactory","usePathname","useId","getSnapshot","useRouter","jsxs","useMotionValue","operation","useReducer","useInsertionEffect","DockCardBanner","DockCommand","DockCommandBar","DockDescription","DockTitle","Badge","DockIconOverlay","DockIcon","DockCardHeader","DockSurfaceExtensionsBar","DockMediaScrubber","DockHudView","DockSurfaceControls","createElement","cloneElement","LoadingItemContent","Fragment","DockCardItem","DockMediaControls","DockBreadcrumbsCard","maxEntries","useLayoutEffect"],"mappings":"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","file":"index.js","sourcesContent":["import { clsx, type ClassValue } from \"clsx\";\nimport { twMerge } from \"tailwind-merge\";\n\nexport function cn(...inputs: ClassValue[]): string {\n return twMerge(clsx(inputs));\n}\n","export function trimToNull(value: unknown): string | null {\n if (value === null || value === undefined) return null;\n const trimmed = String(value).trim();\n return trimmed.length > 0 ? trimmed : null;\n}\n\nexport function stripTrailingSlash(url: unknown): string {\n if (typeof url !== \"string\") return \"\";\n return url.replace(/\\/+$/, \"\");\n}\n\nexport function normalizePath(path: unknown): string {\n const trimmed = trimToNull(path);\n if (!trimmed) return \"\";\n if (trimmed === \"/\") return \"/\";\n return stripTrailingSlash(trimmed);\n}\n\nexport function isImageIconSource(icon: unknown): boolean {\n return (\n typeof icon === \"string\" &&\n (icon.startsWith(\"http://\") ||\n icon.startsWith(\"https://\") ||\n icon.startsWith(\"/\") ||\n icon.startsWith(\"data:image/\"))\n );\n}\n","import { stripTrailingSlash } from \"./string\";\n\nexport const isBrowser: boolean = typeof window !== \"undefined\";\n\nlet globalScrollLockCount = 0;\n\nlet globalScrollLockStyles: {\n bodyOverflow: string;\n bodyOverscrollBehavior: string;\n htmlOverflow: string;\n htmlOverscrollBehavior: string;\n} | null = null;\n\nexport function acquireGlobalScrollLock(): () => void {\n if (typeof document === \"undefined\") return () => {};\n\n if (globalScrollLockCount === 0) {\n globalScrollLockStyles = {\n bodyOverflow: document.body.style.overflow,\n bodyOverscrollBehavior: document.body.style.overscrollBehavior,\n htmlOverflow: document.documentElement.style.overflow,\n htmlOverscrollBehavior: document.documentElement.style.overscrollBehavior,\n };\n }\n\n globalScrollLockCount += 1;\n document.body.style.overflow = \"hidden\";\n document.body.style.overscrollBehavior = \"none\";\n document.documentElement.style.overflow = \"hidden\";\n document.documentElement.style.overscrollBehavior = \"none\";\n\n let released = false;\n return () => {\n if (released) return;\n released = true;\n globalScrollLockCount = Math.max(0, globalScrollLockCount - 1);\n if (globalScrollLockCount > 0 || !globalScrollLockStyles) return;\n\n document.body.style.overflow = globalScrollLockStyles.bodyOverflow;\n document.body.style.overscrollBehavior =\n globalScrollLockStyles.bodyOverscrollBehavior;\n document.documentElement.style.overflow =\n globalScrollLockStyles.htmlOverflow;\n document.documentElement.style.overscrollBehavior =\n globalScrollLockStyles.htmlOverscrollBehavior;\n globalScrollLockStyles = null;\n };\n}\n\nexport function getSiteUrl(): string {\n return stripTrailingSlash(\n process.env.NEXT_PUBLIC_SITE_URL || \"http://localhost:3000\",\n );\n}\n\nexport function getCurrentPath(): string {\n if (!isBrowser) return \"/\";\n return `${window.location.pathname}${window.location.search}`;\n}\n\n","export function clamp(value: unknown, min: number, max: number): number {\n const num = Number(value);\n const finite = Number.isFinite(num) ? num : min;\n return Math.min(Math.max(finite, min), max);\n}\n\nexport function toFiniteNumber(value: unknown, fallback: number = 0): number {\n const parsed = Number(value);\n return Number.isFinite(parsed) ? parsed : fallback;\n}\n","export function isObject(value: unknown): value is Record<string, unknown> {\n return Boolean(value) && typeof value === \"object\" && !Array.isArray(value);\n}\n\nexport function isPlainObject(\n value: unknown,\n): value is Record<string, unknown> {\n if (!isObject(value)) return false;\n const proto = Object.getPrototypeOf(value);\n return proto === Object.prototype || proto === null;\n}\n\nexport function shallowEqual(a: unknown, b: unknown): boolean {\n if (Object.is(a, b)) return true;\n if (\n typeof a !== \"object\" ||\n a === null ||\n typeof b !== \"object\" ||\n b === null\n ) {\n return false;\n }\n\n const keysA = Object.keys(a as object);\n const keysB = Object.keys(b as object);\n\n if (keysA.length !== keysB.length) return false;\n\n for (const key of keysA) {\n if (\n !Object.prototype.hasOwnProperty.call(b, key) ||\n !Object.is(\n (a as Record<string, unknown>)[key],\n (b as Record<string, unknown>)[key],\n )\n ) {\n return false;\n }\n }\n\n return true;\n}\n\nexport function toArray<T>(value: T | T[] | null | undefined): T[] {\n if (value === null || value === undefined) return [];\n return Array.isArray(value) ? value : [value];\n}\n","export type ReportLevel = \"error\" | \"warn\";\n\nexport type ReportSink = (\n scope: string,\n error: unknown,\n level: ReportLevel,\n) => void;\n\nlet sink: ReportSink | null = null;\n\nexport function report(\n scope: string,\n error: unknown,\n level: ReportLevel = \"error\",\n): void {\n if (sink) {\n try {\n sink(scope, error, level);\n return;\n } catch {}\n }\n\n if (process.env.NODE_ENV === \"production\" && typeof window !== \"undefined\") {\n return;\n }\n console[level](`[${scope}]`, error);\n}\n\nexport function setReportSink(next: ReportSink): () => void {\n sink = next;\n return () => {\n if (sink === next) sink = null;\n };\n}\n","export const USER_MESSAGES = Object.freeze({\n generic: \"Something went wrong. Please try again\",\n network: \"You appear to be offline. Check your connection and try again\",\n timeout: \"That took too long. Please try again\",\n unauthorized: \"Your session has expired. Please sign in again\",\n forbidden: \"You don't have permission to do that\",\n notFound: \"We couldn't find what you were looking for\",\n rateLimited: \"Too many attempts. Please wait a moment and try again\",\n server: \"We're having trouble on our end. Please try again in a moment\",\n} as const);\n\nexport class UserError extends Error {\n readonly status?: number;\n\n constructor(message: string, status?: number) {\n super(message);\n this.name = \"UserError\";\n this.status = status;\n }\n}\n\nexport interface UserMessageOptions {\n fallback?: string;\n codes?: Readonly<Record<string, string>>;\n}\n\nconst NETWORK_FAILURE = /failed to fetch|network|load failed|fetch failed/i;\n\nfunction readField<T>(\n source: unknown,\n field: string,\n type: \"string\" | \"number\",\n): T | undefined {\n const value = (source as Record<string, unknown> | null)?.[field];\n return typeof value === type ? (value as T) : undefined;\n}\n\nfunction readPayloadMessage(error: unknown): string | undefined {\n const payload = (error as { payload?: unknown } | null)?.payload;\n const message = readField<string>(payload, \"error\", \"string\")?.trim();\n return message || undefined;\n}\n\nexport function toUserMessage(\n error: unknown,\n { codes, fallback = USER_MESSAGES.generic }: UserMessageOptions = {},\n): string {\n if (typeof error === \"string\") return error.trim() || fallback;\n if (!error || typeof error !== \"object\") return fallback;\n\n if (error instanceof UserError) {\n if (error.status === 401) return USER_MESSAGES.unauthorized;\n return error.message || fallback;\n }\n if ((error as { name?: string }).name === \"AbortError\") return fallback;\n\n const code = readField<string>(error, \"code\", \"string\");\n if (code && codes?.[code]) return codes[code];\n\n const status = readField<number>(error, \"status\", \"number\");\n\n if (status === 401) return USER_MESSAGES.unauthorized;\n if (status === 429) return USER_MESSAGES.rateLimited;\n if (status === 408 || status === 504) return USER_MESSAGES.timeout;\n if (status !== undefined && status >= 500) return USER_MESSAGES.server;\n\n if (status !== undefined && status >= 400) {\n const authored = readPayloadMessage(error);\n if (authored) return authored;\n if (status === 403) return USER_MESSAGES.forbidden;\n if (status === 404) return USER_MESSAGES.notFound;\n return fallback;\n }\n\n const isOffline =\n typeof navigator !== \"undefined\" && navigator.onLine === false;\n if (\n isOffline ||\n (NETWORK_FAILURE.test((error as Error).message ?? \"\") &&\n (error instanceof TypeError || /fetch/i.test((error as Error).name)))\n ) {\n return USER_MESSAGES.network;\n }\n\n return fallback;\n}\n","import { report } from \"./report\";\nexport interface ExternalStore<TState = unknown> {\n readonly getSnapshot: () => TState;\n readonly publish: (\n nextState: TState | ((currentState: TState) => TState),\n ) => boolean;\n readonly setState: (\n updater: Partial<TState> | ((currentState: TState) => TState),\n ) => boolean;\n readonly subscribe: (listener: () => void) => () => void;\n}\n\nfunction freezeStoreSnapshot<TState>(state: TState): TState {\n if (\n process.env.NODE_ENV === \"production\" ||\n !state ||\n typeof state !== \"object\"\n ) {\n return state;\n }\n\n const seen = new WeakSet<object>();\n const freeze = (value: object): void => {\n if (seen.has(value) || Object.isFrozen(value)) return;\n seen.add(value);\n\n const prototype = Object.getPrototypeOf(value);\n if (\n Array.isArray(value) ||\n prototype === Object.prototype ||\n prototype === null\n ) {\n for (const key of Reflect.ownKeys(value)) {\n const descriptor = Object.getOwnPropertyDescriptor(value, key);\n if (descriptor && \"value\" in descriptor && descriptor.value !== null) {\n if (typeof descriptor.value === \"object\") freeze(descriptor.value);\n }\n }\n }\n\n Object.freeze(value);\n };\n\n freeze(state);\n return state;\n}\n\nexport interface CreateStoreOptions {\n freezeSnapshots?: boolean;\n}\n\nexport function createStore<TState = Record<string, unknown>>(\n initialState: TState,\n { freezeSnapshots = true }: CreateStoreOptions = {},\n): ExternalStore<TState> {\n const listeners = new Set<() => void>();\n const prepare = freezeSnapshots\n ? freezeStoreSnapshot\n : <T>(state: T): T => state;\n let snapshot = prepare(initialState);\n\n const publish = (\n nextStateOrUpdater: TState | ((currentState: TState) => TState),\n ): boolean => {\n const nextState =\n typeof nextStateOrUpdater === \"function\"\n ? (nextStateOrUpdater as (currentState: TState) => TState)(snapshot)\n : nextStateOrUpdater;\n if (Object.is(snapshot, nextState)) return false;\n snapshot = prepare(nextState);\n\n for (const listener of listeners) {\n try {\n listener();\n } catch (error) {\n report(\"CoreStore subscriber\", error, \"warn\");\n }\n }\n return true;\n };\n\n const setState = (\n updater: Partial<TState> | ((currentState: TState) => TState),\n ): boolean => {\n if (typeof updater === \"function\") {\n return publish(updater as (currentState: TState) => TState);\n }\n if (\n snapshot &&\n typeof snapshot === \"object\" &&\n updater &&\n typeof updater === \"object\"\n ) {\n return publish({ ...snapshot, ...updater });\n }\n return publish(updater as TState);\n };\n\n return Object.freeze({\n getSnapshot() {\n return snapshot;\n },\n publish,\n setState,\n subscribe(listener: () => void) {\n if (typeof listener !== \"function\") return () => {};\n listeners.add(listener);\n return () => listeners.delete(listener);\n },\n });\n}\n","import { report } from \"./report\";\nconst DEFAULT_SCHEDULER_FRAME_MS = 16;\n\nconst EMPTY_SCHEDULER_TASKS: readonly ScheduledTaskSnapshot[] = Object.freeze(\n [],\n);\n\nfunction getDefaultSchedulerNow(): number {\n return typeof performance !== \"undefined\" &&\n typeof performance.now === \"function\"\n ? performance.now()\n : Date.now();\n}\n\nexport interface ScheduledTaskSnapshot {\n readonly createdAt: number;\n readonly dueAt: number;\n readonly id: number;\n readonly kind: \"timer\" | \"frame\";\n readonly label: string;\n}\n\nexport interface SchedulerSnapshot {\n readonly pendingCount: number;\n readonly tasks: readonly ScheduledTaskSnapshot[];\n}\n\nexport type ScheduleHandle = ReturnType<typeof setTimeout> | number;\n\nexport interface CoreSchedulerOptions {\n cancelFrame?: (id: ScheduleHandle) => void;\n clearTimer?: (id: ScheduleHandle) => void;\n defaultLabel?: string;\n now?: () => number;\n requestFrame?: (cb: (time: number) => void) => ScheduleHandle;\n scheduleTimer?: (cb: () => void, delayMs?: number) => ScheduleHandle;\n}\n\nexport function createScheduler({\n cancelFrame = typeof window !== \"undefined\" &&\n typeof window.cancelAnimationFrame === \"function\"\n ? (id: ScheduleHandle) => window.cancelAnimationFrame(id as number)\n : (id: ScheduleHandle) => clearTimeout(id),\n clearTimer = (id: ScheduleHandle) => clearTimeout(id),\n defaultLabel = \"scheduled-task\",\n now = getDefaultSchedulerNow,\n requestFrame = typeof window !== \"undefined\" &&\n typeof window.requestAnimationFrame === \"function\"\n ? (cb: FrameRequestCallback) => window.requestAnimationFrame(cb)\n : (cb: FrameRequestCallback) =>\n setTimeout(cb, DEFAULT_SCHEDULER_FRAME_MS) as unknown as number,\n scheduleTimer = (cb: () => void, delayMs?: number) => setTimeout(cb, delayMs),\n}: CoreSchedulerOptions = {}) {\n const listeners = new Set<() => void>();\n const tasks = new Map<\n number,\n {\n cancel: (id: ScheduleHandle) => void;\n createdAt: number;\n dueAt: number;\n id: number;\n kind: \"timer\" | \"frame\";\n label: string;\n nativeId: ScheduleHandle;\n }\n >();\n let nextTaskId = 0;\n let snapshot: SchedulerSnapshot = {\n pendingCount: 0,\n tasks: EMPTY_SCHEDULER_TASKS,\n };\n\n const publish = () => {\n const currentTasks: ScheduledTaskSnapshot[] = [];\n for (const task of tasks.values()) {\n currentTasks.push({\n createdAt: task.createdAt,\n dueAt: task.dueAt,\n id: task.id,\n kind: task.kind,\n label: task.label,\n });\n }\n\n snapshot = {\n pendingCount: tasks.size,\n tasks: currentTasks,\n };\n\n for (const listener of listeners) {\n try {\n listener();\n } catch (error) {\n report(\"Scheduler subscriber\", error, \"warn\");\n }\n }\n };\n\n const scheduleInternal = (\n kind: \"timer\" | \"frame\",\n callback: (timestamp: number) => void,\n delayMs: number,\n options: { label?: string } = {},\n ): number | null => {\n if (typeof callback !== \"function\") return null;\n\n const safeDelay = Math.max(0, Number(delayMs) || 0);\n const taskId = ++nextTaskId;\n const createdAt = now();\n\n const invoke = (timestamp = now()) => {\n if (!tasks.has(taskId)) return;\n tasks.delete(taskId);\n publish();\n callback(timestamp);\n };\n\n const nativeId =\n kind === \"frame\"\n ? requestFrame(invoke)\n : scheduleTimer(invoke, safeDelay);\n\n tasks.set(taskId, {\n cancel: kind === \"frame\" ? cancelFrame : clearTimer,\n createdAt,\n dueAt:\n createdAt + (kind === \"frame\" ? DEFAULT_SCHEDULER_FRAME_MS : safeDelay),\n id: taskId,\n kind,\n label:\n typeof options.label === \"string\" && options.label\n ? options.label\n : defaultLabel,\n nativeId,\n });\n\n publish();\n return taskId;\n };\n\n const cancel = (taskId: number): boolean => {\n const task = tasks.get(taskId);\n if (!task) return false;\n\n tasks.delete(taskId);\n try {\n task.cancel(task.nativeId);\n } catch (error) {\n report(\"Scheduler cancellation\", error, \"warn\");\n }\n\n publish();\n return true;\n };\n\n return Object.freeze({\n cancel,\n cancelAll(): number[] {\n if (tasks.size === 0) return [];\n\n const taskIds: number[] = [];\n for (const [taskId, task] of tasks) {\n taskIds.push(taskId);\n try {\n task.cancel(task.nativeId);\n } catch (error) {\n report(\"Scheduler cancellation\", error, \"warn\");\n }\n }\n\n tasks.clear();\n publish();\n return taskIds;\n },\n getSnapshot(): SchedulerSnapshot {\n return snapshot;\n },\n now,\n schedule(\n callback: (timestamp: number) => void,\n delayMs = 0,\n options: { label?: string } = {},\n ): number | null {\n return scheduleInternal(\"timer\", callback, delayMs, options);\n },\n scheduleFrame(\n callback: (timestamp: number) => void,\n options: { label?: string } = {},\n ): number | null {\n return scheduleInternal(\n \"frame\",\n callback,\n DEFAULT_SCHEDULER_FRAME_MS,\n options,\n );\n },\n subscribe(listener: () => void): () => void {\n if (typeof listener !== \"function\") return () => {};\n listeners.add(listener);\n return () => listeners.delete(listener);\n },\n });\n}\n","\"use client\";\n\nimport { Icon as IconifyIcon } from \"@iconify-icon/react\";\nimport type { ComponentProps, CSSProperties } from \"react\";\n\nexport interface IconProps\n extends Omit<ComponentProps<typeof IconifyIcon>, \"icon\" | \"size\"> {\n icon: string | ComponentProps<typeof IconifyIcon>[\"icon\"];\n size?: number | string;\n color?: string;\n className?: string;\n style?: CSSProperties;\n onClick?: () => void;\n}\n\nexport function Icon({\n className = \"center\",\n color,\n icon,\n onClick,\n size = 20,\n style,\n ...props\n}: IconProps) {\n return (\n <IconifyIcon\n className={className}\n height={size}\n icon={icon}\n onClick={onClick}\n style={{ color, ...style }}\n width={size}\n {...props}\n />\n );\n}\n\nIcon.displayName = \"Icon\";\n","\"use client\";\n\nimport { Icon } from \"./icon\";\n\nexport interface SpinnerProps {\n className?: string;\n size?: number;\n}\n\nexport function Spinner({ className = \"\", size = 15 }: SpinnerProps) {\n return (\n <div\n className={className}\n aria-label=\"Loading\"\n role=\"status\"\n >\n <Icon icon=\"mingcute:loading-3-fill\" size={size} />\n </div>\n );\n}\n\nSpinner.displayName = \"Spinner\";\n","\"use client\";\n\nimport * as TooltipPrimitive from \"@radix-ui/react-tooltip\";\nimport type { ReactNode } from \"react\";\n\nexport interface TooltipProps {\n children: ReactNode;\n text: ReactNode;\n className?: string;\n open?: boolean;\n defaultOpen?: boolean;\n delayMs?: number;\n position?: \"top\" | \"bottom\" | \"left\" | \"right\";\n sideOffset?: number;\n collisionPadding?: number;\n onOpenChange?: (open: boolean) => void;\n}\n\nexport function Tooltip({\n children,\n className,\n collisionPadding = 8,\n defaultOpen,\n delayMs,\n onOpenChange,\n open,\n position = \"top\",\n sideOffset = 6,\n text,\n ...props\n}: TooltipProps) {\n return (\n <TooltipPrimitive.Root\n defaultOpen={defaultOpen}\n delayDuration={delayMs}\n onOpenChange={onOpenChange}\n open={open}\n >\n <TooltipPrimitive.Trigger asChild>\n {children}\n </TooltipPrimitive.Trigger>\n\n <TooltipPrimitive.Portal>\n <TooltipPrimitive.Content\n side={position}\n align=\"center\"\n sideOffset={sideOffset}\n collisionPadding={collisionPadding}\n className={className}\n {...props}\n >\n {text}\n </TooltipPrimitive.Content>\n </TooltipPrimitive.Portal>\n </TooltipPrimitive.Root>\n );\n}\n\nTooltip.displayName = \"Tooltip\";\n","\"use client\";\n\nimport type { ButtonHTMLAttributes, ReactNode, Ref } from \"react\";\n\nexport interface ButtonProps extends ButtonHTMLAttributes<HTMLButtonElement> {\n ref?: Ref<HTMLButtonElement>;\n children?: ReactNode;\n loading?: boolean;\n}\n\nexport function Button({\n ref,\n children,\n className,\n disabled = false,\n loading = false,\n type = \"button\",\n ...props\n}: ButtonProps) {\n return (\n <button\n ref={ref}\n type={type}\n disabled={disabled || loading}\n aria-busy={loading ? true : undefined}\n className={className}\n {...props}\n >\n {children}\n </button>\n );\n}\n\nButton.displayName = \"Button\";\n","import type {\n RegistryLifecycle,\n RegistryScopeKind,\n RegistrySource,\n RegistryValidationMode,\n} from \"./types\";\n\nexport const DEFAULT_SOURCE: RegistrySource = \"dynamic\";\n\nexport const REGISTRY_SOURCES: Readonly<Record<string, RegistrySource>> =\n Object.freeze({\n STATIC: \"static\",\n DYNAMIC: \"dynamic\",\n USER: \"user\",\n });\n\nexport const REGISTRY_LIFECYCLES: Readonly<Record<string, RegistryLifecycle>> =\n Object.freeze({\n IMMEDIATE: \"immediate\",\n GRACEFUL: \"graceful\",\n PERSISTENT: \"persistent\",\n ROUTE: \"route\",\n });\n\nexport const REGISTRY_VALIDATION_MODES: Readonly<\n Record<string, RegistryValidationMode>\n> = Object.freeze({\n WARN: \"warn\",\n STRICT: \"strict\",\n});\n\nexport const REGISTRY_METADATA_KEYS: readonly string[] = Object.freeze([\n \"cleanup\",\n \"cleanupDelayMs\",\n \"instanceId\",\n \"lifecycle\",\n \"priority\",\n \"source\",\n \"scope\",\n \"validation\",\n]);\n\nexport const REGISTRY_SOURCE_PRIORITY: Readonly<Record<string, number>> =\n Object.freeze({\n [REGISTRY_SOURCES.STATIC]: 100,\n [REGISTRY_SOURCES.DYNAMIC]: 200,\n [REGISTRY_SOURCES.USER]: 300,\n });\n\nexport const REGISTRY_SOURCE_RANK: Readonly<Record<string, number>> =\n Object.freeze({\n [REGISTRY_SOURCES.STATIC]: 10,\n [REGISTRY_SOURCES.DYNAMIC]: 20,\n [REGISTRY_SOURCES.USER]: 30,\n });\n\nexport const REGISTRY_LIFECYCLE_VALUES: ReadonlySet<string> = new Set(\n Object.values(REGISTRY_LIFECYCLES),\n);\n\nexport const REGISTRY_METADATA_KEY_SET: ReadonlySet<string> = new Set(\n REGISTRY_METADATA_KEYS,\n);\n\nconst REGISTRY_SCOPE_KINDS: Readonly<Record<string, RegistryScopeKind>> =\n Object.freeze({\n APP: \"app\",\n SESSION: \"session\",\n ROUTE: \"route\",\n INSTANCE: \"instance\",\n WORKSPACE: \"workspace\",\n });\n\nexport const DEFAULT_REGISTRY_SCOPE: RegistryScopeKind =\n REGISTRY_SCOPE_KINDS.APP;\n","import { createContext, type Context } from \"react\";\n\nexport function getOrCreateGlobalContext<T>(\n name: string,\n defaultValue: T,\n): Context<T> {\n const sym = Symbol.for(`@omerdlw/base-framework/context/${name}`);\n const store = globalThis as unknown as Record<symbol, Context<T>>;\n if (!store[sym]) {\n store[sym] = createContext<T>(defaultValue);\n }\n return store[sym];\n}\n","import {\n DEFAULT_REGISTRY_SCOPE,\n DEFAULT_SOURCE,\n REGISTRY_SOURCE_RANK,\n} from \"./constants\";\nimport type { RegistryMetadata } from \"./types\";\nimport {\n isObject,\n isPlainObject,\n shallowEqual,\n trimToNull,\n} from \"@/utils\";\n\nexport { isObject, isPlainObject, shallowEqual };\n\nexport function hasOwnProperty(target: object, key: string): boolean {\n return Object.prototype.hasOwnProperty.call(target, key);\n}\n\nexport function parseFiniteNumber(value: unknown): number | null {\n const parsed = Number(value);\n return Number.isFinite(parsed) ? parsed : null;\n}\n\nexport function getValidString(\n value: unknown,\n fallback: string | null = null,\n): string | null {\n return trimToNull(value) ?? fallback;\n}\n\nexport function resolveInstanceId(value: unknown): string | null {\n return isObject(value) && typeof value.instanceId === \"string\"\n ? value.instanceId\n : null;\n}\n\nexport function getSourceRank(source: string): number {\n return REGISTRY_SOURCE_RANK[source] ?? 0;\n}\n\nexport function resolveRegisterInput(\n sourceOrOptions: unknown,\n optionsArg?: unknown,\n): { source: string; options: RegistryMetadata } {\n if (typeof sourceOrOptions === \"string\") {\n return {\n source: sourceOrOptions,\n options: isObject(optionsArg) ? optionsArg : {},\n };\n }\n if (isObject(sourceOrOptions)) {\n return {\n source:\n typeof sourceOrOptions.source === \"string\"\n ? sourceOrOptions.source\n : DEFAULT_SOURCE,\n options: sourceOrOptions,\n };\n }\n return {\n source: DEFAULT_SOURCE,\n options: isObject(optionsArg) ? optionsArg : {},\n };\n}\n\nexport function resolveScope(\n options: RegistryMetadata | null | undefined,\n): string {\n return typeof options?.scope === \"string\" && options.scope.trim()\n ? options.scope.trim()\n : DEFAULT_REGISTRY_SCOPE;\n}\n\nexport function resolveUnregisterInput(sourceOrOptions: unknown): {\n instanceId: string | null;\n scope: string | null;\n source: string;\n} {\n if (typeof sourceOrOptions === \"string\") {\n return { instanceId: null, scope: null, source: sourceOrOptions };\n }\n if (isObject(sourceOrOptions)) {\n return {\n instanceId: resolveInstanceId(sourceOrOptions),\n scope:\n typeof sourceOrOptions.scope === \"string\" &&\n sourceOrOptions.scope.trim()\n ? sourceOrOptions.scope.trim()\n : null,\n source:\n typeof sourceOrOptions.source === \"string\"\n ? sourceOrOptions.source\n : DEFAULT_SOURCE,\n };\n }\n return { instanceId: null, scope: null, source: DEFAULT_SOURCE };\n}\n\nexport function mergeModuleConfigs<T extends object>(\n base: T,\n patch: Partial<T>,\n): T {\n const source = base as Record<string, unknown>;\n const changes = patch as Record<string, unknown>;\n const result: Record<string, unknown> = { ...source };\n Object.keys(changes).forEach((key) => {\n const baseVal = source[key];\n const patchVal = changes[key];\n if (\n baseVal &&\n typeof baseVal === \"object\" &&\n !Array.isArray(baseVal) &&\n patchVal &&\n typeof patchVal === \"object\" &&\n !Array.isArray(patchVal)\n ) {\n result[key] = { ...baseVal, ...patchVal };\n } else {\n result[key] = patchVal;\n }\n });\n return result as T;\n}\n","import {\n DEFAULT_SOURCE,\n REGISTRY_LIFECYCLE_VALUES,\n REGISTRY_LIFECYCLES,\n REGISTRY_METADATA_KEY_SET,\n REGISTRY_METADATA_KEYS,\n REGISTRY_SOURCES,\n REGISTRY_VALIDATION_MODES,\n} from \"./constants\";\nimport {\n getValidString,\n isObject,\n isPlainObject,\n parseFiniteNumber,\n} from \"./utils\";\nimport type {\n NormalizedRegistryMetadata,\n RegistryDefinitions,\n RegistryLifecycle,\n RegistryMetadata,\n RegistryValidationMode,\n ValidationResult,\n} from \"./types\";\n\nexport {\n DEFAULT_SOURCE,\n REGISTRY_LIFECYCLES,\n REGISTRY_SOURCES,\n REGISTRY_VALIDATION_MODES,\n};\n\nfunction resolveLifecycle(\n metadata: RegistryMetadata | null | undefined,\n fallback: RegistryLifecycle | null,\n): RegistryLifecycle | null {\n const lifecycle = metadata?.lifecycle ?? metadata?.cleanup;\n return lifecycle && REGISTRY_LIFECYCLE_VALUES.has(lifecycle)\n ? lifecycle\n : fallback;\n}\n\nexport function validateRegistryMetadata(metadata: unknown): ValidationResult {\n if (metadata === undefined || metadata === null)\n return { issues: [], valid: true };\n if (!isObject(metadata))\n return { issues: [\"registry metadata must be an object\"], valid: false };\n\n const issues: string[] = [];\n\n Object.keys(metadata).forEach((key) => {\n if (!REGISTRY_METADATA_KEY_SET.has(key))\n issues.push(`unknown registry metadata field: ${key}`);\n });\n\n if (metadata.source !== undefined && !getValidString(metadata.source))\n issues.push(\"source must be a non-empty string\");\n if (metadata.instanceId !== undefined && !getValidString(metadata.instanceId))\n issues.push(\"instanceId must be a non-empty string\");\n if (metadata.scope !== undefined && !getValidString(metadata.scope))\n issues.push(\"scope must be a non-empty string\");\n if (\n metadata.priority !== undefined &&\n parseFiniteNumber(metadata.priority) === null\n )\n issues.push(\"priority must be a finite number\");\n\n if (metadata.cleanupDelayMs !== undefined) {\n const delay = parseFiniteNumber(metadata.cleanupDelayMs);\n if (delay === null || delay < 0)\n issues.push(\"cleanupDelayMs must be a non-negative finite number\");\n }\n\n const lifecycle = metadata.lifecycle ?? metadata.cleanup;\n if (\n lifecycle !== undefined &&\n !REGISTRY_LIFECYCLE_VALUES.has(String(lifecycle))\n ) {\n issues.push(\n `lifecycle must be one of: ${[...REGISTRY_LIFECYCLE_VALUES].join(\", \")}`,\n );\n }\n\n if (\n metadata.validation !== undefined &&\n !Object.values<unknown>(REGISTRY_VALIDATION_MODES).includes(\n metadata.validation,\n )\n ) {\n issues.push(\n `validation must be one of: ${Object.values(REGISTRY_VALIDATION_MODES).join(\", \")}`,\n );\n }\n\n return { issues, valid: issues.length === 0 };\n}\n\nexport function validateRegistryKey(\n type: string,\n key: unknown,\n definitions: RegistryDefinitions,\n): ValidationResult {\n const definition = definitions.get(type);\n const issues: string[] = [];\n\n if (!definition) issues.push(`unknown registry type: ${String(type)}`);\n if (!getValidString(key))\n return {\n issues: [...issues, \"key must be a non-empty string\"],\n valid: false,\n };\n\n const normalizedKey = String(key).trim();\n\n if (definition?.keyPolicy === \"singleton\") {\n const expectedKey = definition.singletonKey;\n if (expectedKey && normalizedKey !== expectedKey)\n issues.push(`${type} key must be ${expectedKey}`);\n } else if (definition?.keyPolicy === \"path\") {\n if (!normalizedKey.startsWith(\"/\"))\n issues.push(`${type} key must be an absolute path`);\n } else if (definition?.keyPolicy === \"route\") {\n if (\n !normalizedKey.startsWith(\"/\") &&\n !definition.reservedKeys?.includes(normalizedKey)\n ) {\n issues.push(`${type} key must be a route path or a reserved route key`);\n }\n }\n\n return { issues, valid: issues.length === 0 };\n}\n\nexport function validateRegistryValue(\n type: string,\n key: unknown,\n value: unknown,\n definitions: RegistryDefinitions,\n): ValidationResult {\n const definition = definitions.get(type);\n const issues = [...validateRegistryKey(type, key, definitions).issues];\n const valueKind = definition?.valueKind ?? \"object\";\n\n if (definition && valueKind === \"object\" && !isPlainObject(value)) {\n issues.push(`${type} values must be plain objects`);\n }\n if (\n definition &&\n valueKind === \"component\" &&\n typeof value !== \"function\" &&\n !isPlainObject(value)\n ) {\n issues.push(\n `${type} values must be component functions or component objects`,\n );\n }\n\n const validation = definition?.validate?.(value);\n if (validation && !validation.valid && Array.isArray(validation.issues)) {\n issues.push(...validation.issues);\n }\n\n return { issues, valid: issues.length === 0 };\n}\n\nexport function normalizeRegistryMetadata(\n metadata: unknown,\n {\n defaultCleanupDelayMs = null,\n defaultLifecycle = null,\n defaultSource = DEFAULT_SOURCE,\n }: {\n defaultCleanupDelayMs?: number | null;\n defaultLifecycle?: RegistryLifecycle | null;\n defaultSource?: string;\n } = {},\n): NormalizedRegistryMetadata {\n const registryMeta = isObject(metadata) ? metadata : {};\n\n const normalizedDefaultDelay = parseFiniteNumber(defaultCleanupDelayMs);\n const fallbackCleanupDelayMs =\n normalizedDefaultDelay !== null && normalizedDefaultDelay >= 0\n ? normalizedDefaultDelay\n : null;\n const fallbackLifecycle =\n defaultLifecycle && REGISTRY_LIFECYCLE_VALUES.has(defaultLifecycle)\n ? defaultLifecycle\n : null;\n\n const source =\n getValidString(registryMeta.source) ||\n getValidString(defaultSource, DEFAULT_SOURCE) ||\n DEFAULT_SOURCE;\n const scope = getValidString(registryMeta.scope);\n const priority = parseFiniteNumber(registryMeta.priority);\n const lifecycle = resolveLifecycle(registryMeta, fallbackLifecycle);\n const validation = isValidationMode(registryMeta.validation)\n ? registryMeta.validation\n : null;\n\n const cleanupDelayCandidate = parseFiniteNumber(registryMeta.cleanupDelayMs);\n let cleanupDelayMs =\n cleanupDelayCandidate !== null && cleanupDelayCandidate >= 0\n ? cleanupDelayCandidate\n : fallbackCleanupDelayMs;\n\n if (lifecycle === REGISTRY_LIFECYCLES.IMMEDIATE) {\n cleanupDelayMs = 0;\n } else if (\n (lifecycle === REGISTRY_LIFECYCLES.GRACEFUL ||\n lifecycle === REGISTRY_LIFECYCLES.ROUTE) &&\n cleanupDelayMs === null\n ) {\n cleanupDelayMs = fallbackCleanupDelayMs;\n }\n\n return {\n cleanupDelayMs,\n lifecycle,\n priority,\n registerOptions: {\n ...(priority !== null && { priority }),\n ...(validation === REGISTRY_VALIDATION_MODES.STRICT && { validation }),\n ...(scope && { scope }),\n },\n source,\n ...(scope && { scope }),\n ...(validation && { validation }),\n };\n}\n\nfunction isValidationMode(value: unknown): value is RegistryValidationMode {\n return Object.values<unknown>(REGISTRY_VALIDATION_MODES).includes(value);\n}\n\nexport function pickRegistryMetadata(options: unknown): RegistryMetadata {\n if (!isObject(options)) return {};\n return Object.fromEntries(\n REGISTRY_METADATA_KEYS.filter((key) => options[key] !== undefined).map(\n (key) => [key, options[key]],\n ),\n );\n}\n","\"use client\";\n\nimport { use, type Context } from \"react\";\n\nexport function useRequiredContext<T>(\n context: Context<T | null>,\n hookName: string,\n providerName: string,\n): T {\n const value = use(context);\n if (value === null) {\n throw new Error(`${hookName} must be used within ${providerName}`);\n }\n return value;\n}\n","\"use client\";\n\nimport { useCallback, useRef, useSyncExternalStore } from \"react\";\nimport { type ExternalStore } from \"../utils\";\n\nexport function useStore<TState, TSlice = TState>(\n store: ExternalStore<TState>,\n selector: (state: TState) => TSlice = (state: TState) =>\n state as unknown as TSlice,\n isEqual: (a: TSlice, b: TSlice) => boolean = Object.is,\n): TSlice {\n const cacheRef = useRef<{\n isEqual: ((a: TSlice, b: TSlice) => boolean) | null;\n selected: TSlice | undefined;\n selector: ((state: TState) => TSlice) | null;\n snapshot: TState | null;\n }>({\n isEqual: null,\n selected: undefined,\n selector: null,\n snapshot: null,\n });\n\n const getSelectedSnapshot = useCallback(() => {\n const snapshot = store.getSnapshot();\n const cache = cacheRef.current;\n if (\n cache.snapshot === snapshot &&\n cache.selector === selector &&\n cache.isEqual === isEqual\n ) {\n return cache.selected as TSlice;\n }\n\n const selected = selector(snapshot);\n if (\n cache.snapshot !== null &&\n cache.isEqual === isEqual &&\n isEqual(cache.selected as TSlice, selected)\n ) {\n cache.snapshot = snapshot;\n cache.selector = selector;\n return cache.selected as TSlice;\n }\n\n cacheRef.current = {\n isEqual,\n selected,\n selector,\n snapshot,\n };\n return selected;\n }, [isEqual, selector, store]);\n\n return useSyncExternalStore(\n store.subscribe,\n getSelectedSnapshot,\n getSelectedSnapshot,\n );\n}\n","\"use client\";\n\nimport { useCallback, useEffect, type RefObject } from \"react\";\n\nexport function useClickOutside<T extends HTMLElement = HTMLElement>(\n ref: RefObject<T | null> | null | undefined,\n callback?: (event: PointerEvent) => void,\n): void {\n const handlePointer = useCallback(\n (event: PointerEvent) => {\n if (ref?.current && !ref.current.contains(event.target as Node)) {\n callback?.(event);\n }\n },\n [callback, ref],\n );\n\n useEffect(() => {\n document.addEventListener(\"pointerdown\", handlePointer);\n return () => document.removeEventListener(\"pointerdown\", handlePointer);\n }, [handlePointer]);\n}\n","\"use client\";\n\nimport { useEffect, useLayoutEffect } from \"react\";\nimport { isBrowser } from \"../utils\";\n\nexport const useIsomorphicLayoutEffect = isBrowser\n ? useLayoutEffect\n : useEffect;\n","import { report } from \"./utils/report\";\nexport type EventListener<T = unknown> = (payload: T) => void;\n\nexport const EVENT_TYPES = Object.freeze({\n API_UNAUTHORIZED: \"API_UNAUTHORIZED\",\n STATE_CHANGE: \"STATE_CHANGE\",\n API_ERROR: \"API_ERROR\",\n APP_ERROR: \"APP_ERROR\",\n} as const);\n\nexport interface FrameworkEventMap {\n [EVENT_TYPES.API_UNAUTHORIZED]: {\n error?: unknown;\n status?: number;\n [key: string]: unknown;\n };\n [EVENT_TYPES.API_ERROR]: {\n error: unknown;\n isCritical?: boolean;\n message?: string;\n retry?: () => void;\n status?: number;\n [key: string]: unknown;\n };\n [EVENT_TYPES.APP_ERROR]: {\n error?: unknown;\n message?: string;\n resetError?: () => void;\n source?: string;\n [key: string]: unknown;\n };\n [EVENT_TYPES.STATE_CHANGE]: {\n message?: string;\n status?: \"success\" | \"warning\" | \"info\" | \"error\" | string;\n [key: string]: unknown;\n };\n}\n\nexport class EventEmitter<TEvents extends object = FrameworkEventMap> {\n private events: Map<string, Set<EventListener<never>>> = new Map();\n private debounceTimers: Map<string, ReturnType<typeof setTimeout>> =\n new Map();\n\n subscribe<K extends keyof TEvents>(\n event: K,\n callback: EventListener<TEvents[K]>,\n ): () => void;\n subscribe<T = unknown>(event: string, callback: EventListener<T>): () => void;\n subscribe(event: string, callback: EventListener<never>): () => void {\n if (typeof event !== \"string\" || !event || typeof callback !== \"function\") {\n return () => {};\n }\n const listeners = this.events.get(event) || new Set<EventListener<never>>();\n listeners.add(callback);\n this.events.set(event, listeners);\n\n return () => {\n listeners.delete(callback);\n if (listeners.size === 0) this.events.delete(event);\n };\n }\n\n emit<K extends keyof TEvents>(\n event: K,\n ...args: TEvents[K] extends void | undefined\n ? [payload?: TEvents[K]]\n : [payload: TEvents[K]]\n ): void;\n emit<T = unknown>(event: string, payload?: T): void;\n emit(event: string, payload?: unknown): void {\n const listeners = this.events.get(event);\n if (!listeners || listeners.size === 0) return;\n const snapshot = Array.from(listeners);\n for (const callback of snapshot) {\n try {\n (callback as EventListener<unknown>)(payload);\n } catch (error) {\n report(`Event listener (${String(event)})`, error);\n }\n }\n }\n\n emitDebounced<K extends keyof TEvents>(\n event: K,\n payload: TEvents[K],\n waitMs?: number,\n ): void;\n emitDebounced<T = unknown>(event: string, payload?: T, waitMs?: number): void;\n emitDebounced(event: string, payload?: unknown, waitMs: number = 100): void {\n const existing = this.debounceTimers.get(event);\n if (existing) clearTimeout(existing);\n\n const timer = setTimeout(() => {\n this.debounceTimers.delete(event);\n this.emit(event, payload);\n }, waitMs);\n\n this.debounceTimers.set(event, timer);\n }\n\n cancelDebounced(event?: string): void {\n if (event) {\n const timer = this.debounceTimers.get(event);\n if (timer) {\n clearTimeout(timer);\n this.debounceTimers.delete(event);\n }\n } else {\n for (const timer of this.debounceTimers.values()) {\n clearTimeout(timer);\n }\n this.debounceTimers.clear();\n }\n }\n\n unsubscribeAll(event?: string): void {\n this.cancelDebounced(event);\n if (event) this.events.delete(event);\n else this.events.clear();\n }\n\n hasListeners(event: string): boolean {\n return Boolean(this.events.get(event)?.size);\n }\n\n getListenerCount(event: string): number {\n return this.events.get(event)?.size || 0;\n }\n\n getAllEvents(): string[] {\n return [...this.events.keys()];\n }\n}\n\nconst GLOBAL_EVENTS_KEY = Symbol.for(\"__base_framework_global_events__\");\ntype GlobalWithEvents = typeof globalThis & {\n [GLOBAL_EVENTS_KEY]?: EventEmitter<FrameworkEventMap>;\n};\n\nconst _global = globalThis as GlobalWithEvents;\nexport const globalEvents: EventEmitter<FrameworkEventMap> =\n _global[GLOBAL_EVENTS_KEY] ??\n (_global[GLOBAL_EVENTS_KEY] = new EventEmitter<FrameworkEventMap>());\n","\"use client\";\n\nimport { useEffect, useRef } from \"react\";\nimport { globalEvents, type FrameworkEventMap } from \"@/events\";\nimport { useIsomorphicLayoutEffect } from \"./use-isomorphic-layout-effect\";\nimport { UseGlobalEventOptions } from \"./types\";\n\nexport function useGlobalEvent<K extends keyof FrameworkEventMap>(\n event: K | K[] | null | undefined,\n callback: (payload: FrameworkEventMap[K]) => void,\n options?: UseGlobalEventOptions,\n): void;\n\nexport function useGlobalEvent<T = unknown>(\n event: string | string[] | null | undefined,\n callback: (payload: T) => void,\n options?: UseGlobalEventOptions,\n): void;\n\nexport function useGlobalEvent(\n event: string | string[] | null | undefined,\n callback: (payload: never) => void,\n options?: UseGlobalEventOptions,\n): void {\n const callbackRef = useRef(callback);\n const debounceTimerRef = useRef<ReturnType<typeof setTimeout> | null>(null);\n const lastThrottleTimeRef = useRef<number>(0);\n const throttleTimerRef = useRef<ReturnType<typeof setTimeout> | null>(null);\n\n useIsomorphicLayoutEffect(() => {\n callbackRef.current = callback;\n });\n\n const debounceMs = options?.debounceMs;\n const throttleMs = options?.throttleMs;\n\n useEffect(() => {\n if (!event) return;\n const events = Array.isArray(event) ? event.filter(Boolean) : [event];\n if (events.length === 0) return;\n\n const handler = (payload: never) => {\n if (debounceMs != null && debounceMs > 0) {\n if (debounceTimerRef.current !== null) {\n clearTimeout(debounceTimerRef.current);\n }\n debounceTimerRef.current = setTimeout(() => {\n debounceTimerRef.current = null;\n callbackRef.current?.(payload);\n }, debounceMs);\n return;\n }\n\n if (throttleMs != null && throttleMs > 0) {\n const now = Date.now();\n const remaining = throttleMs - (now - lastThrottleTimeRef.current);\n if (remaining <= 0) {\n if (throttleTimerRef.current !== null) {\n clearTimeout(throttleTimerRef.current);\n throttleTimerRef.current = null;\n }\n lastThrottleTimeRef.current = now;\n callbackRef.current?.(payload);\n } else if (throttleTimerRef.current === null) {\n throttleTimerRef.current = setTimeout(() => {\n lastThrottleTimeRef.current = Date.now();\n throttleTimerRef.current = null;\n callbackRef.current?.(payload);\n }, remaining);\n }\n return;\n }\n\n callbackRef.current?.(payload);\n };\n\n const unsubs = events.map((ev) => globalEvents.subscribe(ev, handler));\n\n return () => {\n unsubs.forEach((unsub) => unsub());\n if (debounceTimerRef.current !== null) {\n clearTimeout(debounceTimerRef.current);\n debounceTimerRef.current = null;\n }\n if (throttleTimerRef.current !== null) {\n clearTimeout(throttleTimerRef.current);\n throttleTimerRef.current = null;\n }\n };\n }, [event, debounceMs, throttleMs]);\n}\n","\"use client\";\n\nimport { useSyncExternalStore } from \"react\";\n\nconst listeners = new Set<() => void>();\nconst activeFullscreenStateIds = new Set<string>();\n\nconst ACTIVE_FULLSCREEN_ROOT_SELECTOR =\n '[data-fullscreen-state-root=\"true\"][data-affect-global-state=\"true\"]';\n\nlet domObserver: MutationObserver | null = null;\nlet lastSnapshot = false;\n\nfunction getDomSnapshot(): boolean {\n if (typeof document === \"undefined\") {\n return activeFullscreenStateIds.size > 0;\n }\n\n return document.querySelector(ACTIVE_FULLSCREEN_ROOT_SELECTOR) !== null;\n}\n\nfunction emitChange(): void {\n listeners.forEach((listener) => listener());\n}\n\nfunction emitIfSnapshotChanged(): void {\n const nextSnapshot = getDomSnapshot();\n\n if (nextSnapshot === lastSnapshot) {\n return;\n }\n\n lastSnapshot = nextSnapshot;\n emitChange();\n}\n\nfunction ensureDomObserver(): void {\n if (typeof document === \"undefined\" || domObserver || listeners.size === 0) {\n return;\n }\n\n domObserver = new MutationObserver(() => {\n emitIfSnapshotChanged();\n });\n\n domObserver.observe(document.documentElement, {\n attributes: true,\n childList: true,\n subtree: true,\n attributeFilter: [\n \"data-fullscreen-state\",\n \"data-fullscreen-state-root\",\n \"data-affect-global-state\",\n ],\n });\n}\n\nfunction releaseDomObserver(): void {\n if (listeners.size > 0 || !domObserver) {\n return;\n }\n\n domObserver.disconnect();\n domObserver = null;\n}\n\nfunction subscribe(listener: () => void): () => void {\n listeners.add(listener);\n ensureDomObserver();\n emitIfSnapshotChanged();\n\n return () => {\n listeners.delete(listener);\n releaseDomObserver();\n };\n}\n\nfunction getSnapshot(): boolean {\n return getDomSnapshot();\n}\n\nexport function registerFullscreenState(id: string): void {\n activeFullscreenStateIds.add(id);\n emitIfSnapshotChanged();\n}\n\nexport function unregisterFullscreenState(id: string): void {\n activeFullscreenStateIds.delete(id);\n emitIfSnapshotChanged();\n}\n\nexport function useIsFullscreenStateActive(): boolean {\n return useSyncExternalStore(subscribe, getSnapshot, () => false);\n}\n","\"use client\";\n\nimport {\n useCallback,\n useMemo,\n useState,\n useSyncExternalStore,\n type ReactNode,\n} from \"react\";\nimport { useRequiredContext } from \"@/hooks\";\nimport { getOrCreateGlobalContext } from \"./context-registry\";\n\nimport type {\n RegistryDefinitions,\n RegistrySchema,\n RegistryStore,\n} from \"./types\";\nimport { createRegistryStore, type InitialRegistryEntries } from \"./store\";\n\ntype RegistryValueOf<K extends string> = K extends keyof RegistrySchema\n ? RegistrySchema[K]\n : unknown;\n\ninterface RegistryContextValue {\n actions: Pick<\n RegistryStore,\n \"batch\" | \"register\" | \"transaction\" | \"unregister\"\n >;\n subscription: Pick<\n RegistryStore,\n \"getEntriesSnapshot\" | \"getSnapshot\" | \"subscribe\"\n >;\n}\n\nconst RegistryContext = getOrCreateGlobalContext<RegistryContextValue | null>(\n\n \"RegistryContext\",\n null,\n);\n\nexport function RegistryProvider({\n children,\n definitions,\n initialEntries = [],\n}: {\n children?: ReactNode;\n definitions?: RegistryDefinitions;\n initialEntries?: InitialRegistryEntries;\n}) {\n const [store] = useState(() =>\n createRegistryStore(initialEntries, definitions),\n );\n\n const contextValue = useMemo(\n () => ({\n actions: {\n batch: store.batch,\n register: store.register,\n transaction: store.transaction,\n unregister: store.unregister,\n },\n subscription: {\n getEntriesSnapshot: store.getEntriesSnapshot,\n getSnapshot: store.getSnapshot,\n subscribe: store.subscribe,\n },\n }),\n [store],\n );\n\n return <RegistryContext value={contextValue}>{children}</RegistryContext>;\n}\n\nexport function useRegistryActions(): RegistryContextValue[\"actions\"] {\n return useRequiredContext(\n RegistryContext,\n \"useRegistryActions\",\n \"RegistryProvider\",\n ).actions;\n}\n\nfunction useRegistrySubscription(): RegistryContextValue[\"subscription\"] {\n return useRequiredContext(\n RegistryContext,\n \"useRegistrySubscription\",\n \"RegistryProvider\",\n ).subscription;\n}\n\nexport function useRegistryValue<\n K extends string = string,\n T = RegistryValueOf<K>,\n>(type: K, key: string): T | undefined {\n const { getSnapshot, subscribe } = useRegistrySubscription();\n\n const subscribeToKey = useCallback(\n (listener: () => void) => subscribe(type, key, listener),\n [key, subscribe, type],\n );\n const getValue = useCallback(\n () => getSnapshot<K, T>(type, key),\n [getSnapshot, key, type],\n );\n\n return useSyncExternalStore(subscribeToKey, getValue, getValue);\n}\n\nexport function useRegistryEntries<\n K extends string = string,\n T = RegistryValueOf<K>,\n>(type: K): Record<string, T> {\n const { getEntriesSnapshot, subscribe } = useRegistrySubscription();\n\n const subscribeToType = useCallback(\n (listener: () => void) => subscribe(type, null, listener),\n [subscribe, type],\n );\n const getEntries = useCallback(\n () => getEntriesSnapshot<K, T>(type),\n [getEntriesSnapshot, type],\n );\n\n return useSyncExternalStore(subscribeToType, getEntries, getEntries);\n}\n","\"use client\";\n\nimport { use, type ComponentType, type ReactNode } from \"react\";\nimport { isObject } from \"@/utils\";\nimport { getOrCreateGlobalContext } from \"./context-registry\";\nimport type {\n AnyCoreModule,\n PageConfig,\n RegistryDefinition,\n RegistryDefinitions,\n RegistryMetadata,\n} from \"./types\";\n\nexport type BoundaryComponent = ComponentType<{\n children?: ReactNode;\n name?: string;\n}>;\n\nexport interface ModuleHostValue {\n Boundary: BoundaryComponent;\n byId: ReadonlyMap<string, AnyCoreModule>;\n definitions: RegistryDefinitions;\n modules: readonly AnyCoreModule[];\n}\n\nexport const EMPTY_MODULES: readonly AnyCoreModule[] = Object.freeze([]);\n\nexport const PassthroughBoundary: BoundaryComponent = ({ children }) =>\n children;\n\nexport const ModuleHostContext =\n getOrCreateGlobalContext<ModuleHostValue | null>(\"ModuleHostContext\", null);\n\n\nexport function selectModuleSlice(\n coreModule: AnyCoreModule,\n config: PageConfig,\n): unknown {\n const slice = coreModule.page?.select\n ? coreModule.page.select(config)\n : (config as Record<string, unknown>)[coreModule.id];\n return slice ?? null;\n}\n\nexport function createModulePayload(\n modules: readonly AnyCoreModule[],\n config: PageConfig,\n metadata: RegistryMetadata = {},\n): PageConfig | null {\n const payload: Record<string, unknown> = {};\n let hasSlices = false;\n for (const coreModule of modules) {\n if (!coreModule.page?.entries) continue;\n const slice = selectModuleSlice(coreModule, config);\n if (slice === null) continue;\n payload[coreModule.id] = slice;\n hasSlices = true;\n }\n if (!hasSlices) return null;\n return {\n ...payload,\n registry: {\n ...metadata,\n ...(isObject(config.registry) ? config.registry : {}),\n },\n } as PageConfig;\n}\n\nconst MODULE_ID_PATTERN = /^[a-z][a-zA-Z0-9]*$/;\n\nexport function sortModules(\n modules: readonly AnyCoreModule[],\n): AnyCoreModule[] {\n const byId = new Map<string, AnyCoreModule>();\n for (const coreModule of modules) {\n if (!MODULE_ID_PATTERN.test(coreModule.id)) {\n throw new Error(\n `[Core] Invalid module id \"${coreModule.id}\": use a camelCase name such as \"contextMenu\".`,\n );\n }\n if (byId.has(coreModule.id)) {\n throw new Error(`[Core] Module \"${coreModule.id}\" is installed twice.`);\n }\n byId.set(coreModule.id, coreModule);\n }\n\n const sorted: AnyCoreModule[] = [];\n const state = new Map<string, \"visiting\" | \"done\">();\n const visit = (coreModule: AnyCoreModule, path: string[]) => {\n const current = state.get(coreModule.id);\n if (current === \"done\") return;\n if (current === \"visiting\") {\n throw new Error(\n `[Core] Module dependency cycle: ${[...path, coreModule.id].join(\" -> \")}`,\n );\n }\n state.set(coreModule.id, \"visiting\");\n for (const id of coreModule.uses ?? []) {\n const dependency = byId.get(id);\n if (dependency) visit(dependency, [...path, coreModule.id]);\n }\n state.set(coreModule.id, \"done\");\n sorted.push(coreModule);\n };\n modules.forEach((coreModule) => visit(coreModule, []));\n return sorted;\n}\n\nexport function createModuleRegistryDefinitions(\n modules: readonly AnyCoreModule[],\n): RegistryDefinitions {\n const definitions = new Map<string, RegistryDefinition>();\n for (const coreModule of modules) {\n if (coreModule.registry)\n definitions.set(coreModule.id, coreModule.registry);\n }\n return definitions;\n}\n\nexport function useInstalledModules(): readonly AnyCoreModule[] {\n return use(ModuleHostContext)?.modules ?? EMPTY_MODULES;\n}\n","import {\n DEFAULT_SOURCE,\n REGISTRY_LIFECYCLES,\n normalizeRegistryMetadata,\n validateRegistryMetadata,\n} from \"./schema\";\nimport { isObject } from \"./utils\";\nimport type {\n AnyCoreModule,\n PageConfig,\n RegistrationEntry,\n RegistryApplyContext,\n RegistryCleanupTimer,\n RegistryMetadata,\n RegistryQueue,\n} from \"./types\";\nimport { report } from \"@/utils\";\n\ntype CleanupScope = Map<string, RegistryCleanupTimer>;\n\nfunction isPersistentLifecycle(lifecycle: unknown): boolean {\n return lifecycle === REGISTRY_LIFECYCLES.PERSISTENT;\n}\n\nfunction runRegistrationBatch(\n context: RegistryApplyContext,\n executor: (queue: RegistryQueue) => void,\n): number | void {\n return typeof context.batch === \"function\"\n ? context.batch(executor)\n : executor(context);\n}\n\nfunction createEntryCleanupKey(\n type: string,\n key: string,\n source: string,\n instanceId: string | null,\n scope: string | undefined,\n): string {\n return JSON.stringify([\n \"entry\",\n type,\n key,\n scope ?? null,\n source,\n instanceId,\n ]);\n}\n\nfunction getCleanupScope(\n context: RegistryApplyContext | null | undefined,\n): CleanupScope {\n return context?.cleanupScope || new Map();\n}\n\nfunction clearCleanupTimer(scope: CleanupScope, cleanupKey: string): void {\n const lifecycle = scope.get(cleanupKey);\n if (!lifecycle) return;\n lifecycle.cancelled = true;\n if (lifecycle.timerId !== null) clearTimeout(lifecycle.timerId);\n scope.delete(cleanupKey);\n}\n\nfunction scheduleCleanup(\n scope: CleanupScope,\n cleanupKey: string,\n callback: () => void,\n delayMs: number,\n): void {\n clearCleanupTimer(scope, cleanupKey);\n const lifecycle: RegistryCleanupTimer = {\n cancelled: false,\n timerId: null,\n };\n\n lifecycle.timerId = setTimeout(() => {\n if (lifecycle.cancelled || scope.get(cleanupKey) !== lifecycle) return;\n scope.delete(cleanupKey);\n callback();\n }, delayMs);\n\n scope.set(cleanupKey, lifecycle);\n}\n\ntype ModuleRegistration = RegistrationEntry & {\n cleanupKey: string;\n type: string;\n};\n\nfunction collectModuleRegistrations(\n coreModule: AnyCoreModule,\n slice: unknown,\n pageMetadata: RegistryMetadata,\n context: RegistryApplyContext,\n): ModuleRegistration[] {\n const definition = coreModule.registry;\n const toEntries = coreModule.page?.entries;\n if (!definition || !toEntries || slice == null || slice === false) return [];\n\n const type = coreModule.id;\n const items = Array.isArray(slice) ? slice : [slice];\n const registrations: ModuleRegistration[] = [];\n\n for (const item of items) {\n if (item == null || item === false) continue;\n const itemMetadata =\n isObject(item) && isObject(item.registry) ? item.registry : {};\n const metadata = { ...pageMetadata, ...itemMetadata };\n if (\n metadata.validation === \"strict\" &&\n !validateRegistryMetadata(metadata).valid\n ) {\n continue;\n }\n\n const payload = isObject(item)\n ? Object.fromEntries(\n Object.entries(item).filter(([key]) => key !== \"registry\"),\n )\n : item;\n const { cleanupDelayMs, lifecycle, registerOptions, scope, source } =\n normalizeRegistryMetadata(metadata, {\n defaultCleanupDelayMs: definition.cleanupDelayMs ?? null,\n defaultLifecycle: definition.lifecycle,\n defaultSource: DEFAULT_SOURCE,\n });\n\n for (const { key, value } of toEntries(payload, context) ?? []) {\n const validation = definition.validate?.(value);\n if (validation && !validation.valid) {\n report(`Registry ${type} config is invalid`, validation.issues, \"warn\");\n continue;\n }\n registrations.push({\n cleanupDelayMs,\n cleanupKey: createEntryCleanupKey(\n type,\n key,\n source,\n context.instanceId,\n scope,\n ),\n key,\n lifecycle,\n registerOptions,\n scope,\n source,\n type,\n value,\n });\n }\n }\n return registrations;\n}\n\nconst NO_CLEANUP = () => {};\n\nexport function applyRegistryConfig(\n config: PageConfig | null | undefined,\n context: RegistryApplyContext,\n): () => void {\n const modules = context.modules ?? [];\n if (!config || modules.length === 0) return NO_CLEANUP;\n const pageMetadata = isObject(config.registry) ? config.registry : {};\n const slices = config as Record<string, unknown>;\n\n const registrations = modules.flatMap((coreModule) => {\n try {\n return collectModuleRegistrations(\n coreModule,\n slices[coreModule.id],\n pageMetadata,\n context,\n );\n } catch (error) {\n report(`Registry apply (${coreModule.id})`, error);\n return [];\n }\n });\n if (registrations.length === 0) return NO_CLEANUP;\n\n const cleanupScope = getCleanupScope(context);\n const owner = (registration: ModuleRegistration) => ({\n instanceId: context.instanceId,\n scope: registration.scope,\n source: registration.source,\n });\n\n runRegistrationBatch(context, (queue) => {\n registrations.forEach(\n ({ cleanupKey, key, registerOptions, source, type, value }) => {\n clearCleanupTimer(cleanupScope, cleanupKey);\n queue.register(type, key, value, source, registerOptions);\n },\n );\n });\n\n return () => {\n const immediate: ModuleRegistration[] = [];\n registrations.forEach((registration) => {\n if (isPersistentLifecycle(registration.lifecycle)) return;\n const { cleanupDelayMs, cleanupKey, key, type } = registration;\n if (typeof cleanupDelayMs === \"number\" && cleanupDelayMs > 0) {\n scheduleCleanup(\n cleanupScope,\n cleanupKey,\n () => context.unregister(type, key, owner(registration)),\n cleanupDelayMs,\n );\n } else {\n immediate.push(registration);\n }\n });\n if (immediate.length === 0) return;\n runRegistrationBatch(context, (queue) => {\n immediate.forEach((registration) =>\n queue.unregister(\n registration.type,\n registration.key,\n owner(registration),\n ),\n );\n });\n };\n}\n","\"use client\";\n\nimport { usePathname } from \"next/navigation\";\nimport { useIsomorphicLayoutEffect } from \"@/hooks\";\nimport {\n Children,\n cloneElement,\n isValidElement,\n useId,\n useMemo,\n useRef,\n useState,\n} from \"react\";\nimport { applyRegistryConfig } from \"./handlers\";\nimport { createModulePayload, useInstalledModules } from \"./installed\";\nimport { useRegistryActions } from \"./provider\";\nimport { isObject, shallowEqual } from \"@/utils\";\nimport type {\n PageConfig,\n RegistryCleanupTimer,\n RegistryApplyContext,\n RegistryMetadata,\n RegistryQueue,\n RegistrySourceOrOptions,\n StableFunctionEntry,\n AnyFunction,\n} from \"./types\";\n\nfunction withInstanceId(\n instanceId: string,\n sourceOrOptions: RegistrySourceOrOptions | undefined,\n optionsArg?: RegistryMetadata,\n): {\n optionsArg: RegistryMetadata | undefined;\n sourceOrOptions: RegistrySourceOrOptions;\n} {\n if (typeof sourceOrOptions === \"string\") {\n return {\n optionsArg: { ...(isObject(optionsArg) ? optionsArg : {}), instanceId },\n sourceOrOptions,\n };\n }\n if (isObject(sourceOrOptions)) {\n return {\n optionsArg,\n sourceOrOptions: { ...sourceOrOptions, instanceId },\n };\n }\n return {\n optionsArg: undefined,\n sourceOrOptions: {\n ...(isObject(optionsArg) ? optionsArg : {}),\n instanceId,\n },\n };\n}\n\nfunction withInstanceIdForUnregister(\n instanceId: string,\n sourceOrOptions: RegistrySourceOrOptions | undefined,\n): RegistryMetadata {\n if (typeof sourceOrOptions === \"string\") {\n return { instanceId, source: sourceOrOptions };\n }\n if (isObject(sourceOrOptions)) {\n return { ...sourceOrOptions, instanceId };\n }\n return { instanceId };\n}\n\nfunction resolveRegisterArgsWithInstance(\n instanceId: string,\n sourceOrOptions: RegistrySourceOrOptions | undefined,\n optionsArg?: RegistryMetadata,\n): [RegistrySourceOrOptions, RegistryMetadata | undefined] {\n const input = withInstanceId(instanceId, sourceOrOptions, optionsArg);\n return [input.sourceOrOptions, input.optionsArg];\n}\n\n/* eslint-disable react-hooks/refs */\nexport function useShallowStable<T extends object>(value: T): T {\n const ref = useRef(value);\n if (ref.current !== value && !shallowEqual(ref.current, value)) {\n ref.current = value;\n }\n return ref.current;\n}\n/* eslint-enable react-hooks/refs */\n\nconst MAX_STABILIZATION_DEPTH = 64;\n\nfunction createStableFunctionEntry(fn: AnyFunction): StableFunctionEntry {\n const entry: StableFunctionEntry = {\n current: fn,\n stable(this: unknown, ...args: unknown[]) {\n return entry.current?.apply(this, args);\n },\n };\n return entry;\n}\n\ninterface StabilizeScope {\n componentSlices: ReadonlySet<string>;\n functionEntries: Map<string, StableFunctionEntry>;\n usedPaths: Set<string>;\n}\n\nfunction isDirectRegistryComponentPath(\n path: string,\n componentSlices: ReadonlySet<string>,\n): boolean {\n const match = /^config\\.([^.[]+)\\.[^.[]+$/.exec(path);\n return Boolean(match && componentSlices.has(match[1]));\n}\n\nfunction isReactNodeLike(value: unknown): boolean {\n return (\n value === null ||\n value === undefined ||\n typeof value === \"boolean\" ||\n typeof value === \"string\" ||\n typeof value === \"number\" ||\n isValidElement(value)\n );\n}\n\nfunction isStabilizableObject(\n value: unknown,\n): value is Record<string, unknown> {\n return (\n typeof value === \"object\" &&\n value !== null &&\n !Array.isArray(value) &&\n !isValidElement(value)\n );\n}\n\nfunction hasSameObjectKeys(\n previousValue: unknown,\n nextValue: unknown,\n): boolean {\n if (\n !isStabilizableObject(previousValue) ||\n !isStabilizableObject(nextValue)\n ) {\n return false;\n }\n const previousKeys = Object.keys(previousValue);\n const nextKeys = Object.keys(nextValue);\n if (previousKeys.length !== nextKeys.length) return false;\n return nextKeys.every((key) =>\n Object.prototype.hasOwnProperty.call(previousValue, key),\n );\n}\n\nfunction stabilizeRegistryValue(\n value: unknown,\n path: string,\n scope: StabilizeScope,\n previousValue?: unknown,\n seen = new WeakSet<object>(),\n depth = 0,\n): unknown {\n if (depth > MAX_STABILIZATION_DEPTH) return value;\n\n if (typeof value === \"function\") {\n const isComponent = value.name && /^[A-Z]/.test(value.name);\n if (\n isComponent ||\n isDirectRegistryComponentPath(path, scope.componentSlices)\n ) {\n return value;\n }\n scope.usedPaths.add(path);\n let entry = scope.functionEntries.get(path);\n if (!entry) {\n entry = createStableFunctionEntry(value as AnyFunction);\n scope.functionEntries.set(path, entry);\n } else {\n entry.current = value as AnyFunction;\n }\n return entry.stable;\n }\n\n if (value && typeof value === \"object\") {\n if (seen.has(value)) return value;\n seen.add(value);\n }\n\n if (isValidElement(value)) {\n const nextProps = stabilizeRegistryValue(\n value.props,\n `${path}.props`,\n scope,\n isValidElement(previousValue) ? previousValue.props : undefined,\n seen,\n depth + 1,\n ) as Record<string, unknown>;\n if (\n isValidElement(previousValue) &&\n previousValue.type === value.type &&\n previousValue.key === value.key &&\n previousValue.props === nextProps\n ) {\n return previousValue;\n }\n return cloneElement(value, nextProps);\n }\n\n if (Array.isArray(value)) {\n const nextValue = value.every(isReactNodeLike)\n ? Children.toArray(value)\n : value;\n const previousArray = Array.isArray(previousValue) ? previousValue : null;\n let hasChanged =\n !previousArray || previousArray.length !== nextValue.length;\n\n const stabilizedValue: unknown[] = nextValue.map((item, index) => {\n const nextItem = stabilizeRegistryValue(\n item,\n `${path}[${index}]`,\n scope,\n previousArray?.[index],\n seen,\n depth + 1,\n );\n if (!previousArray || nextItem !== previousArray[index]) {\n hasChanged = true;\n }\n return nextItem;\n });\n return !hasChanged ? previousArray : stabilizedValue;\n }\n\n if (typeof value !== \"object\" || value === null) {\n return value;\n }\n\n const source = value as Record<string, unknown>;\n const previousRecord = previousValue as Record<string, unknown> | undefined;\n const stabilizedValue: Record<string, unknown> = {};\n const canReusePrevious = hasSameObjectKeys(previousValue, value);\n let hasChanged = !canReusePrevious;\n\n Object.keys(source).forEach((key) => {\n const nextValue = stabilizeRegistryValue(\n source[key],\n `${path}.${key}`,\n scope,\n previousRecord?.[key],\n seen,\n depth + 1,\n );\n stabilizedValue[key] = nextValue;\n if (!canReusePrevious || nextValue !== previousRecord?.[key]) {\n hasChanged = true;\n }\n });\n\n return !hasChanged ? previousValue : stabilizedValue;\n}\n\nfunction useAppliedRegistryConfig(\n payload: PageConfig | null,\n context: RegistryApplyContext,\n componentSlices: ReadonlySet<string>,\n): void {\n const functionEntriesRef = useRef(new Map<string, StableFunctionEntry>());\n const appliedRef = useRef<{\n cleanup: () => void;\n config: unknown;\n context: RegistryApplyContext;\n payload: PageConfig | null;\n } | null>(null);\n\n useIsomorphicLayoutEffect(() => {\n const previous = appliedRef.current;\n if (\n previous &&\n previous.payload === payload &&\n previous.context === context\n ) {\n return;\n }\n const functionEntries = functionEntriesRef.current;\n const usedPaths = new Set<string>();\n const config = stabilizeRegistryValue(\n payload,\n \"config\",\n { componentSlices, functionEntries, usedPaths },\n previous?.config,\n );\n functionEntries.forEach((_entry, path) => {\n if (!usedPaths.has(path)) functionEntries.delete(path);\n });\n\n if (\n previous &&\n previous.config === config &&\n previous.context === context\n ) {\n previous.payload = payload;\n return;\n }\n previous?.cleanup();\n appliedRef.current = {\n cleanup: applyRegistryConfig(config as PageConfig | null, context),\n config,\n context,\n payload,\n };\n });\n\n useIsomorphicLayoutEffect(\n () => () => {\n appliedRef.current?.cleanup();\n appliedRef.current = null;\n },\n [],\n );\n}\n\nexport function createRegistryApplyContext(\n actions: RegistryQueue & Pick<RegistryApplyContext, \"batch\">,\n {\n cleanupScope = new Map<string, RegistryCleanupTimer>(),\n instanceId,\n modules = [],\n pathname,\n }: Pick<RegistryApplyContext, \"instanceId\" | \"modules\" | \"pathname\"> & {\n cleanupScope?: RegistryApplyContext[\"cleanupScope\"];\n },\n): RegistryApplyContext {\n const stamp = (queue: RegistryQueue): RegistryQueue =>\n ({\n register: (\n type: string,\n key: string,\n item: unknown,\n sourceOrOptions?: RegistrySourceOrOptions,\n optionsArg?: RegistryMetadata,\n ) =>\n queue.register(\n type,\n key,\n item,\n ...resolveRegisterArgsWithInstance(\n instanceId,\n sourceOrOptions,\n optionsArg,\n ),\n ),\n unregister: (\n type: string,\n key: string,\n sourceOrOptions?: RegistrySourceOrOptions,\n ) =>\n queue.unregister(\n type,\n key,\n withInstanceIdForUnregister(instanceId, sourceOrOptions),\n ),\n }) as RegistryQueue;\n\n return {\n ...stamp(actions),\n batch: (executor) =>\n typeof executor === \"function\"\n ? actions.batch((queue) => executor(stamp(queue)))\n : 0,\n cleanupScope,\n instanceId,\n modules,\n pathname,\n };\n}\n\nexport function useRegistry(\n config?: PageConfig | null,\n metadata?: RegistryMetadata,\n): void {\n const { batch, register, unregister } = useRegistryActions();\n const pathname = usePathname();\n const modules = useInstalledModules();\n const instanceId = `registry-instance-${useId()}`;\n const [cleanupScope] = useState(\n () => new Map<string, RegistryCleanupTimer>(),\n );\n\n const context = useMemo(\n () =>\n createRegistryApplyContext(\n { batch, register, unregister },\n {\n cleanupScope,\n instanceId,\n modules,\n pathname,\n },\n ),\n [batch, cleanupScope, instanceId, modules, pathname, register, unregister],\n );\n\n const payload = useMemo(\n () => (config ? createModulePayload(modules, config, metadata) : null),\n [config, metadata, modules],\n );\n const componentSlices = useMemo(\n () =>\n new Set(\n modules\n .filter(\n (coreModule) => coreModule.registry?.valueKind === \"component\",\n )\n .map((coreModule) => coreModule.id),\n ),\n [modules],\n );\n useAppliedRegistryConfig(payload, context, componentSlices);\n}\n","\"use client\";\n\nimport { createElement, use, useState, type ReactNode } from \"react\";\nimport { useStore } from \"@/hooks\";\nimport { createStore, type ExternalStore } from \"@/utils\";\nimport {\n EMPTY_MODULES,\n ModuleHostContext,\n PassthroughBoundary,\n createModuleRegistryDefinitions,\n sortModules,\n type BoundaryComponent,\n type ModuleHostValue,\n} from \"./installed\";\nimport { PageControllerProvider } from \"./page-controller\";\nimport { RegistryProvider } from \"./provider\";\nimport type {\n AnyCoreModule,\n AppRegistryEntry,\n CoreModule,\n CoreModules,\n ModuleId,\n ModuleRuntimeOf,\n ModuleStateOf,\n} from \"./types\";\nimport { report } from \"@/utils\";\n\nexport function defineModule<\n TId extends string,\n TRuntime = never,\n TSlice = never,\n TController = never,\n>(\n coreModule: CoreModule<TId, TRuntime, TSlice, TController>,\n): CoreModule<TId, TRuntime, TSlice, TController> {\n return Object.freeze({ ...coreModule });\n}\n\nfunction warnMissingPeers(modules: readonly AnyCoreModule[]): void {\n const installed = new Set(modules.map((coreModule) => coreModule.id));\n for (const { id, uses } of modules) {\n const missing = (uses ?? []).filter((peer) => !installed.has(peer));\n if (missing.length > 0) {\n report(\n `Module \"${id}\" runs without its optional peers`,\n missing.join(\", \"),\n \"warn\",\n );\n }\n }\n}\n\nfunction createModuleHost(\n modules: readonly AnyCoreModule[],\n Boundary: BoundaryComponent,\n): ModuleHostValue {\n const sorted = sortModules(modules);\n if (process.env.NODE_ENV !== \"production\") warnMissingPeers(sorted);\n return {\n Boundary,\n byId: new Map(sorted.map((coreModule) => [coreModule.id, coreModule])),\n definitions: createModuleRegistryDefinitions(sorted),\n modules: Object.freeze(sorted),\n };\n}\n\nexport interface ModuleHostProps {\n boundary?: BoundaryComponent;\n children?: ReactNode;\n modules?: readonly AnyCoreModule[];\n registryEntries?: readonly AppRegistryEntry[];\n}\n\nexport function ModuleHost({\n boundary = PassthroughBoundary,\n children,\n modules = EMPTY_MODULES,\n registryEntries,\n}: ModuleHostProps) {\n const [host] = useState(() => createModuleHost(modules, boundary));\n const { Boundary } = host;\n\n const content = (\n <>\n {host.modules.map(({ Backdrop, id }) =>\n Backdrop ? (\n <Boundary key={id} name={id}>\n <Backdrop />\n </Boundary>\n ) : null,\n )}\n {children}\n {host.modules.map(({ Overlay, id }) =>\n Overlay ? (\n <Boundary key={id} name={id}>\n <Overlay />\n </Boundary>\n ) : null,\n )}\n </>\n );\n\n const tree = host.modules.reduceRight<ReactNode>(\n (inner, { Provider }) => (Provider ? <Provider>{inner}</Provider> : inner),\n content,\n );\n\n return (\n <RegistryProvider\n definitions={host.definitions}\n initialEntries={registryEntries}\n >\n <ModuleHostContext value={host}>\n <PageControllerProvider>{tree}</PageControllerProvider>\n </ModuleHostContext>\n </RegistryProvider>\n );\n}\n\nexport function useModule<K extends ModuleId>(\n id: K,\n): ModuleRuntimeOf<CoreModules[K]> | null {\n const coreModule = use(ModuleHostContext)?.byId.get(id);\n return coreModule?.context ? (use(coreModule.context) ?? null) : null;\n}\n\ntype ModuleActionsOf<K extends ModuleId> =\n ModuleRuntimeOf<CoreModules[K]> extends { actions: infer TActions }\n ? TActions\n : never;\n\nexport interface ModulePeer<K extends ModuleId> {\n useActions(): ModuleActionsOf<K>;\n useRuntime(): ModuleRuntimeOf<CoreModules[K]>;\n useState<T>(\n selector: (state: ModuleStateOf<K>) => T,\n isEqual?: (a: T, b: T) => boolean,\n ): T;\n}\n\nexport function definePeer<K extends ModuleId>(\n id: K,\n inert: ModuleRuntimeOf<CoreModules[K]>,\n): ModulePeer<K> {\n const useRuntime = (): ModuleRuntimeOf<CoreModules[K]> =>\n useModule(id) ?? inert;\n return {\n useRuntime,\n useActions: () => useRuntime().actions as ModuleActionsOf<K>,\n useState: <T,>(\n selector: (state: ModuleStateOf<K>) => T,\n isEqual?: (a: T, b: T) => boolean,\n ) =>\n useStore<ModuleStateOf<K>, T>(\n (useRuntime() as { store: ExternalStore<ModuleStateOf<K>> }).store,\n selector,\n isEqual,\n ),\n };\n}\n\nconst NO_MODULE_STORE: ExternalStore<unknown> = createStore<unknown>(undefined);\n\nexport function useModuleState<K extends ModuleId, T>(\n id: K,\n selector: (state: ModuleStateOf<K>) => T,\n fallback: T,\n isEqual: (a: T, b: T) => boolean = Object.is,\n): T {\n const runtime = useModule(id) as { store: ExternalStore<unknown> } | null;\n return useStore<unknown, T>(\n runtime?.store ?? NO_MODULE_STORE,\n (state) => (runtime ? selector(state as ModuleStateOf<K>) : fallback),\n isEqual,\n );\n}\n\nexport function ModuleBoundary({\n children,\n name,\n}: {\n children?: ReactNode;\n name?: string;\n}) {\n const Boundary = use(ModuleHostContext)?.Boundary ?? PassthroughBoundary;\n return createElement(Boundary, { name }, children);\n}\n\nexport function useIsModuleInstalled(id: ModuleId): boolean {\n return use(ModuleHostContext)?.byId.has(id) ?? false;\n}\n","\"use client\";\n\nimport { pickRegistryMetadata } from \"./schema\";\nimport { useRegistry } from \"./hooks\";\nimport { useInstalledModules } from \"./installed\";\nimport type { ModuleId, PageConfig, RegistryMetadata } from \"./types\";\n\nexport function useModuleRegistration(\n id: ModuleId,\n value: unknown,\n options?: RegistryMetadata & { enabled?: boolean },\n): void {\n const coreModule = useInstalledModules().find(\n (candidate) => candidate.id === id,\n );\n const config =\n coreModule && options?.enabled !== false && value != null\n ? ({ [id]: value } as PageConfig)\n : null;\n useRegistry(config, pickRegistryMetadata(options));\n}\n","\"use client\";\n\nimport {\n createElement,\n useContext,\n type CSSProperties,\n type ReactNode,\n} from \"react\";\nimport { getOrCreateGlobalContext } from \"@/kernel\";\n\nexport interface ThemeSpec<S extends string = string> {\n readonly id: string;\n readonly _slots?: S;\n}\n\nexport interface ThemeConfig<S extends string> {\n slots: Readonly<Record<S, string>>;\n styles?: Readonly<Partial<Record<S, CSSProperties>>>;\n}\n\nexport interface ResolvedTheme<S extends string> {\n readonly slots: Readonly<Record<S, string>>;\n readonly styles: Readonly<Partial<Record<S, CSSProperties>>>;\n}\n\nexport interface ThemeEntry {\n readonly id: string;\n readonly config: ThemeConfig<string>;\n}\n\nexport function defineThemeSpec<S extends string>(id: string): ThemeSpec<S> {\n return Object.freeze({ id });\n}\n\nexport function defineTheme<S extends string>(\n spec: ThemeSpec<S>,\n config: ThemeConfig<NoInfer<S>>,\n): ThemeEntry {\n return { id: spec.id, config: config as ThemeEntry[\"config\"] };\n}\n\nconst EMPTY: ReadonlyMap<string, ThemeEntry[\"config\"]> = new Map();\nconst ThemeContext = getOrCreateGlobalContext<\n ReadonlyMap<string, ThemeEntry[\"config\"]>\n>(\"ThemeContext\", EMPTY);\n\n\nexport function ThemeProvider({\n children,\n themes,\n}: {\n children?: ReactNode;\n themes: readonly ThemeEntry[];\n}) {\n const configs = new Map(themes.map((entry) => [entry.id, entry.config]));\n return createElement(ThemeContext.Provider, { value: configs }, children);\n}\n\nexport function useTheme<S extends string>(\n spec: ThemeSpec<S>,\n): ResolvedTheme<S> {\n const config = useContext(ThemeContext).get(spec.id);\n if (!config) {\n throw new Error(\n `Theme \"${spec.id}\" is missing. Ensure its theme configuration is provided to <ThemeProvider themes={[...]}> (e.g. in src/config/ or your theme setup).`,\n );\n }\n return {\n slots: config.slots,\n styles: config.styles ?? {},\n } as ResolvedTheme<S>;\n}\n\nexport { useTheme as useModuleTheme };\n\n","import { defineThemeSpec } from \"@/theme\";\nimport { 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_TRANSACTION_EVENTS = Object.freeze({\n START: \"START\",\n COMPLETE: \"COMPLETE\",\n CANCEL: \"CANCEL\",\n FAIL: \"FAIL\",\n TIME_OUT: \"TIME_OUT\",\n} as const);\n\nexport const DOCK_TRANSACTION_STATUS = Object.freeze({\n PENDING: \"pending\",\n COMPLETED: \"completed\",\n CANCELLED: \"cancelled\",\n FAILED: \"failed\",\n TIMED_OUT: \"timed-out\",\n} as const);\n\nexport const DOCK_TRANSACTION_REASON = Object.freeze({\n GUARD: \"guard\",\n SUPERSEDED: \"superseded\",\n TIME_OUT: \"time-out\",\n} as const);\n\nexport const DOCK_TRANSACTION_TIMEOUT_MS = 15_000;\nexport const DOCK_PREFETCH_INTENT_DELAY_MS = 90;\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>(\"dock\");\n","import {\n normalizePath,\n isObject as isObjectLike,\n trimToNull,\n cn,\n isPlainObject,\n createScheduler,\n type CoreSchedulerOptions,\n} from \"@/utils\";\nimport { isValidElement, type ReactNode, type CSSProperties } from \"react\";\nimport {\n type DockComponent,\n type DockVisualStyleSection,\n type DockItem,\n type DockHudDescriptor,\n type NormalizedSurfaceExtension,\n type SurfaceDescriptor,\n type DockTheme,\n type SurfaceExtension,\n type SurfaceFlowDefinition,\n type SurfaceFlowReturnInput,\n type SurfaceReturnHandshake,\n type SurfaceReturnHandshakeInput,\n} from \"./types\";\nimport {\n DOCK_FOCUSABLE_SELECTOR,\n DOCK_FOCUS_RESTORE_BLOCKED_REASONS,\n} from \"./constants\";\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\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 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 toObject(value: unknown): Record<string, unknown> {\n return isObjectLike(value) ? value : {};\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 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 type DockStyleInput = DockVisualStyleSection;\n\nexport function normalizeUpper(value: unknown): string {\n return String(value || \"\")\n .trim()\n .toUpperCase();\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: DockTheme[\"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\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\ntype AncestorAwareItem = DockItem & {\n keepWhenDescendant?:\n boolean | ((activePath: string, item: DockItem) => boolean);\n statusType?: string;\n};\n\nfunction 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 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\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 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 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 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\" ||\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\nexport function createDockScheduler(options: CoreSchedulerOptions = {}) {\n return createScheduler({\n defaultLabel: \"dock-task\",\n ...options,\n });\n}\n","\"use client\";\n\nimport {\n createContext,\n use,\n useCallback,\n useEffect,\n useMemo,\n type ReactNode,\n} from \"react\";\nimport { createStore } from \"@/utils\";\nimport {\n type NormalizedSurfaceExtension,\n type DockSlotContent,\n type SurfaceId,\n} from \"../types\";\nimport { normalizeSurfaceExtension } from \"../utils\";\n\nexport type SurfaceKey = SurfaceId | string | null | undefined;\n\nexport const SurfaceExtensionsContext = createContext<{\n extensions: SurfaceExtensionsStore;\n headerActions: SurfaceHeaderActionStore;\n} | null>(null);\n\nexport const SurfaceItemContext = createContext<{\n id: SurfaceKey;\n width: number | string | null;\n}>({\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) : \"global\";\n const { actionsBySurface } = this.store.getSnapshot();\n return actionsBySurface[sId] ?? actionsBySurface.global ?? null;\n };\n\n setAction = (surfaceId: SurfaceKey, action: DockSlotContent) => {\n const sId = surfaceId != null ? String(surfaceId) : \"global\";\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) : \"global\";\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) : \"global\";\n if (this.cachedListBySurface.has(sId))\n return this.cachedListBySurface.get(sId)!;\n\n const globalExts = this.extensionsBySurface.get(\"global\");\n const surfaceExts = this.extensionsBySurface.get(sId);\n\n if (!globalExts && !surfaceExts) {\n const empty: NormalizedSurfaceExtension[] = [];\n this.cachedListBySurface.set(sId, empty);\n return empty;\n }\n\n const merged = new Map([...(globalExts || []), ...(surfaceExts || [])]);\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) : \"global\";\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) : \"global\";\n const surfaceMap = this.extensionsBySurface.get(sId);\n if (!surfaceMap || !surfaceMap.has(extensionId)) return;\n\n surfaceMap.delete(extensionId);\n if (surfaceMap.size === 0) this.extensionsBySurface.delete(sId);\n this.notify();\n };\n\n clearSurface = (surfaceId: SurfaceKey) => {\n const sId = surfaceId != null ? String(surfaceId) : \"global\";\n if (!this.extensionsBySurface.has(sId)) return;\n this.extensionsBySurface.delete(sId);\n this.notify();\n };\n}\n","import { type MediaActions, type MediaState } from \"./types\";\n\nexport const DEFAULT_MEDIA_STATE: MediaState = Object.freeze({\n audibleElement: null,\n element: null,\n hasMedia: false,\n isPlaying: false,\n kind: null,\n loop: false,\n sourceId: null,\n});\n\nexport const INERT_MEDIA_ACTIONS: MediaActions = Object.freeze({\n removeSource: () => {},\n setMuted: () => {},\n toggle: () => {},\n toggleLoop: () => {},\n upsertSource: () => {},\n});\n\n\nexport const MEDIA_SYNC_DRIFT_SECONDS = 0.3;\n\nexport const MEDIA_REGISTRY_KEY = \"page-media\";\n\n/** Id of the audio source registered through `usePage({ media })`. */\nexport const PAGE_MEDIA_ID = \"page\";\n","\"use client\";\n\nimport { useContext, useEffect, useMemo, useRef, useState } from \"react\";\nimport { useRequiredContext, useStore } from \"@/hooks\";\nimport { getOrCreateGlobalContext } from \"@/kernel\";\nimport { createStore } from \"@/utils\";\n\nimport { DEFAULT_MEDIA_STATE, INERT_MEDIA_ACTIONS } from \"./constants\";\n\nimport {\n type MediaActions,\n type MediaContextValue,\n type MediaProviderProps,\n type MediaSession,\n type MediaEntry,\n type MediaState,\n} from \"./types\";\nimport {\n bindFollowers,\n createMediaState,\n findDisplacedAudio,\n mediaStatesEqual,\n mergeMediaSource,\n resolveMediaSession,\n sameElements,\n toggleElement,\n} from \"./utils\";\n\nexport const MediaContext = getOrCreateGlobalContext<MediaContextValue | null>(\n\n \"MediaContext\",\n null,\n);\n\ninterface Binding {\n cleanup: () => void;\n followers: readonly (HTMLMediaElement | null)[];\n transport: HTMLMediaElement;\n}\n\nexport function MediaProvider({ children }: MediaProviderProps) {\n const [store] = useState(() =>\n createStore<MediaState>(DEFAULT_MEDIA_STATE, { freezeSnapshots: false }),\n );\n const sourcesRef = useRef(new Map<string, MediaEntry>());\n const sessionRef = useRef<MediaSession | null>(null);\n const orderRef = useRef(0);\n const bindingRef = useRef<Binding | null>(null);\n\n const actions = useMemo<MediaActions>(() => {\n const unbind = () => {\n bindingRef.current?.cleanup();\n bindingRef.current = null;\n };\n\n const rebind = (session: MediaSession | null) => {\n const transport = session?.transport.element ?? null;\n const followers = (session?.followers ?? []).map(\n (source) => source.element,\n );\n const current = bindingRef.current;\n if (\n current &&\n current.transport === transport &&\n sameElements(current.followers, followers)\n ) {\n return;\n }\n unbind();\n const live = followers.filter(\n (element): element is HTMLMediaElement => element !== null,\n );\n if (!transport || live.length === 0) return;\n bindingRef.current = {\n cleanup: bindFollowers(transport, live),\n followers,\n transport,\n };\n };\n\n const commit = () => {\n const session = resolveMediaSession([...sourcesRef.current.values()]);\n sessionRef.current = session;\n rebind(session);\n const next = createMediaState(session);\n store.publish((prev) => (mediaStatesEqual(prev, next) ? prev : next));\n };\n\n const patch = (id: string, changes: Partial<MediaEntry>) => {\n const current = sourcesRef.current.get(id);\n if (!current) return;\n sourcesRef.current.set(id, { ...current, ...changes });\n commit();\n };\n\n return {\n removeSource: (id) => {\n if (sourcesRef.current.delete(id)) commit();\n },\n setMuted: (muted) => {\n const audible = sessionRef.current?.audible;\n if (!audible) return;\n if (audible.controls?.setMuted) audible.controls.setMuted(muted);\n else if (audible.element) audible.element.muted = muted;\n },\n toggle: () => {\n const transport = sessionRef.current?.transport;\n if (!transport) return;\n if (transport.controls?.toggle) transport.controls.toggle();\n else toggleElement(transport.element);\n },\n toggleLoop: () => {\n const transport = sessionRef.current?.transport;\n if (!transport) return;\n if (transport.controls?.toggleLoop) {\n transport.controls.toggleLoop();\n return;\n }\n const loop = !transport.loop;\n if (transport.element) transport.element.loop = loop;\n patch(transport.id, { loop });\n },\n upsertSource: (input) => {\n const current = sourcesRef.current.get(input.id);\n if (!current) orderRef.current += 1;\n sourcesRef.current.set(\n input.id,\n mergeMediaSource(current, input, orderRef.current),\n );\n commit();\n if (!current) {\n findDisplacedAudio(\n [...sourcesRef.current.values()],\n sessionRef.current,\n input.id,\n ).forEach((entry) => entry.element?.pause());\n }\n },\n };\n }, [store]);\n\n useEffect(\n () => () => {\n bindingRef.current?.cleanup();\n bindingRef.current = null;\n },\n [],\n );\n\n const value = useMemo<MediaContextValue>(\n () => ({ actions, store }),\n [actions, store],\n );\n\n return <MediaContext value={value}>{children}</MediaContext>;\n}\n\nexport function useMediaState(): MediaState {\n const { store } = useRequiredContext(\n MediaContext,\n \"useMediaState\",\n \"MediaProvider\",\n );\n return useStore(store);\n}\n\nexport function useMediaActions(): MediaActions {\n return useRequiredContext(MediaContext, \"useMediaActions\", \"MediaProvider\")\n .actions;\n}\n\nconst NOOP_MEDIA_STORE = createStore<MediaState>(DEFAULT_MEDIA_STATE);\n\nexport function useOptionalMediaState(): MediaState;\nexport function useOptionalMediaState<T>(\n selector: (state: MediaState) => T,\n isEqual?: (a: T, b: T) => boolean,\n): T;\nexport function useOptionalMediaState<T = MediaState>(\n selector?: (state: MediaState) => T,\n isEqual?: (a: T, b: T) => boolean,\n): T {\n const ctx = useContext(MediaContext);\n return useStore(\n ctx?.store ?? NOOP_MEDIA_STORE,\n selector as (state: MediaState) => T,\n isEqual,\n );\n}\n\nexport function useOptionalMediaActions(): MediaActions {\n const ctx = useContext(MediaContext);\n return ctx?.actions ?? INERT_MEDIA_ACTIONS;\n}\n\n\n","import { defineThemeSpec } from \"@/theme\";\nimport {\n type LoadingActions,\n type LoadingState,\n type LoadingStateWithPage,\n type LoadingThemeSlot,\n} from \"./types\";\n\nexport const DEFAULT_LOADING_STATE: LoadingState = Object.freeze({\n isLoading: false,\n skeleton: null,\n minDuration: 0,\n showOverlay: true,\n message: null,\n});\n\nexport const DEFAULT_LOADING_STATE_WITH_PAGE: LoadingStateWithPage = Object.freeze({\n ...DEFAULT_LOADING_STATE,\n isPageLoading: false,\n});\n\nexport const INERT_LOADING_ACTIONS: LoadingActions = Object.freeze({\n setLoading: () => {},\n setSkeleton: () => {},\n startLoading: () => {},\n stopLoading: () => {},\n withLoading: async <T,>(task: Promise<T> | (() => Promise<T>)) =>\n typeof task === \"function\" ? task() : task,\n});\n\nexport const LOADING_REGISTRY_KEY = \"page-loading\";\n\nexport const loadingTheme = defineThemeSpec<LoadingThemeSlot>(\"loading\");\n","\"use client\";\n\nimport {\n useCallback,\n useContext,\n useEffect,\n useMemo,\n useRef,\n useState,\n} from \"react\";\nimport {\n useIsomorphicLayoutEffect,\n useRequiredContext,\n useStore,\n} from \"@/hooks\";\nimport {\n getOrCreateGlobalContext,\n useModuleRegistration,\n useRegistryValue,\n type RegistryMetadata,\n} from \"@/kernel\";\n\nimport { createStore } from \"@/utils\";\nimport {\n DEFAULT_LOADING_STATE,\n DEFAULT_LOADING_STATE_WITH_PAGE,\n INERT_LOADING_ACTIONS,\n LOADING_REGISTRY_KEY,\n} from \"./constants\";\nimport {\n type LoadingActions,\n type LoadingContextValue,\n type LoadingOptions,\n type LoadingPageConfig,\n type LoadingProviderProps,\n type LoadingState,\n type LoadingStateWithPage,\n type SkeletonValue,\n} from \"./types\";\nimport { normalizeLoadingOptions } from \"./utils\";\n\nexport const LoadingContext =\n\n getOrCreateGlobalContext<LoadingContextValue | null>(\"LoadingContext\", null);\n\nexport function useLoadingRegistration(\n config: LoadingPageConfig | null | undefined,\n options?: RegistryMetadata & { enabled?: boolean },\n): void {\n useModuleRegistration(\"loading\", config, options);\n}\n\nexport function LoadingProvider({ children }: LoadingProviderProps) {\n const [manualState, setManualState] = useState<LoadingState>(\n DEFAULT_LOADING_STATE,\n );\n\n const startTimeRef = useRef<number | null>(null);\n const minDurationRef = useRef<number>(0);\n const stopTimerRef = useRef<ReturnType<typeof setTimeout> | null>(null);\n\n const registryLoading = useRegistryValue<\"loading\", LoadingOptions>(\n \"loading\",\n LOADING_REGISTRY_KEY,\n );\n\n const clearStopTimer = useCallback(() => {\n if (stopTimerRef.current !== null) {\n clearTimeout(stopTimerRef.current);\n stopTimerRef.current = null;\n }\n }, []);\n\n const resetState = useCallback(() => {\n clearStopTimer();\n minDurationRef.current = 0;\n startTimeRef.current = null;\n setManualState(DEFAULT_LOADING_STATE);\n }, [clearStopTimer]);\n\n const startLoading = useCallback(\n (options: LoadingOptions = {}) => {\n clearStopTimer();\n const nextState = normalizeLoadingOptions(options);\n startTimeRef.current = Date.now();\n minDurationRef.current = nextState.minDuration;\n setManualState({\n ...nextState,\n isLoading: true,\n });\n },\n [clearStopTimer],\n );\n\n const stopLoading = useCallback(() => {\n const startTime = startTimeRef.current;\n const activeMinDuration = minDurationRef.current;\n\n if (startTime === null || activeMinDuration === 0) {\n resetState();\n return;\n }\n\n const elapsed = Date.now() - startTime;\n const remaining = activeMinDuration - elapsed;\n\n if (remaining <= 0) {\n resetState();\n return;\n }\n\n clearStopTimer();\n stopTimerRef.current = setTimeout(resetState, remaining);\n }, [clearStopTimer, resetState]);\n\n const setLoading = useCallback(\n (value: boolean) => {\n if (value) startLoading();\n else stopLoading();\n },\n [startLoading, stopLoading],\n );\n\n const setSkeleton = useCallback((nextSkeleton: SkeletonValue) => {\n setManualState((currentState) => {\n const skeleton =\n typeof nextSkeleton === \"function\"\n ? nextSkeleton(currentState.skeleton)\n : nextSkeleton;\n\n return currentState.skeleton === skeleton\n ? currentState\n : { ...currentState, skeleton };\n });\n }, []);\n\n const withLoading = useCallback(\n async <T,>(\n task: Promise<T> | (() => Promise<T>),\n options: LoadingOptions | string = {},\n ): Promise<T> => {\n startLoading(\n typeof options === \"string\" ? { message: options } : options,\n );\n try {\n return typeof task === \"function\" ? await task() : await task;\n } finally {\n stopLoading();\n }\n },\n [startLoading, stopLoading],\n );\n\n useEffect(() => clearStopTimer, [clearStopTimer]);\n\n const state = useMemo<LoadingStateWithPage>(() => {\n if (registryLoading?.isLoading) {\n const normalized = normalizeLoadingOptions(registryLoading);\n return {\n ...normalized,\n isLoading: true,\n isPageLoading: true,\n };\n }\n return {\n ...manualState,\n isPageLoading: manualState.isLoading,\n };\n }, [manualState, registryLoading]);\n\n const actions = useMemo<LoadingActions>(\n () => ({\n setLoading,\n setSkeleton,\n startLoading,\n stopLoading,\n withLoading,\n }),\n [setLoading, setSkeleton, startLoading, stopLoading, withLoading],\n );\n\n const [store] = useState(() =>\n createStore<LoadingStateWithPage>(state, { freezeSnapshots: false }),\n );\n useIsomorphicLayoutEffect(() => {\n store.publish(state);\n }, [state, store]);\n\n const value = useMemo<LoadingContextValue>(\n () => ({ actions, store }),\n [actions, store],\n );\n\n return <LoadingContext value={value}>{children}</LoadingContext>;\n}\n\nexport function useLoadingState(): LoadingStateWithPage {\n const { store } = useRequiredContext(\n LoadingContext,\n \"useLoadingState\",\n \"LoadingProvider\",\n );\n return useStore(store);\n}\n\nexport function useLoadingActions(): LoadingActions {\n return useRequiredContext(\n LoadingContext,\n \"useLoadingActions\",\n \"LoadingProvider\",\n ).actions;\n}\n\nexport function useLoading(\n config?: LoadingPageConfig | null,\n options?: RegistryMetadata & { enabled?: boolean },\n): LoadingStateWithPage & LoadingActions {\n useLoadingRegistration(config, options);\n\n const actions = useLoadingActions();\n const state = useLoadingState();\n\n return useMemo(() => ({ ...state, ...actions }), [actions, state]);\n}\n\nconst NOOP_LOADING_STORE = createStore<LoadingStateWithPage>(\n DEFAULT_LOADING_STATE_WITH_PAGE,\n);\n\nexport function useOptionalLoadingState(): LoadingStateWithPage;\nexport function useOptionalLoadingState<T>(\n selector: (state: LoadingStateWithPage) => T,\n isEqual?: (a: T, b: T) => boolean,\n): T;\nexport function useOptionalLoadingState<T = LoadingStateWithPage>(\n selector?: (state: LoadingStateWithPage) => T,\n isEqual?: (a: T, b: T) => boolean,\n): T {\n const ctx = useContext(LoadingContext);\n return useStore(\n ctx?.store ?? NOOP_LOADING_STORE,\n selector as (state: LoadingStateWithPage) => T,\n isEqual,\n );\n}\n\nexport function useOptionalLoadingActions(): LoadingActions {\n const ctx = useContext(LoadingContext);\n return ctx?.actions ?? INERT_LOADING_ACTIONS;\n}\n\n","import { USER_MESSAGES } from \"@/utils\";\nimport { defineThemeSpec } from \"@/theme\";\nimport {\n type NotificationActions,\n type NotificationState,\n type NotificationThemeSlot,\n} from \"./types\";\n\nexport const TOAST_DURATIONS = Object.freeze({\n DEFAULT: 2000,\n SHORT: 1500,\n} as const);\n\nexport const SESSION_EXPIRED_MESSAGE = USER_MESSAGES.unauthorized;\n\nexport const DOCK_STACK_ELEMENT_ID = \"dock-card-stack\";\n\nexport const notificationTheme =\n defineThemeSpec<NotificationThemeSlot>(\"notification\");\n\nexport const INITIAL_NOTIFICATION_STATE: NotificationState = Object.freeze({\n notifications: {},\n});\n\nexport const INERT_NOTIFICATION_ACTIONS: NotificationActions = Object.freeze({\n dismissAllNotifications: () => {},\n dismissNotification: () => {},\n showNotification: () => null,\n});\n\n","\"use client\";\n\nimport {\n useCallback,\n useContext,\n useEffect,\n useMemo,\n useRef,\n useState,\n type ReactNode,\n} from \"react\";\nimport { useRequiredContext, useStore } from \"@/hooks\";\nimport { getOrCreateGlobalContext } from \"@/kernel\";\nimport { createStore } from \"@/utils\";\n\nimport {\n INITIAL_NOTIFICATION_STATE,\n INERT_NOTIFICATION_ACTIONS,\n TOAST_DURATIONS,\n} from \"./constants\";\nimport {\n type NotificationActions,\n type NotificationContextValue,\n type NotificationData,\n type NotificationEntry,\n type NotificationProviderProps,\n type NotificationState,\n type ToastOptionsInput,\n} from \"./types\";\nimport {\n isNotificationDataObject,\n normalizeFeedbackText,\n normalizeToastOptions,\n} from \"./utils\";\n\nexport const NotificationContext =\n\n getOrCreateGlobalContext<NotificationContextValue | null>(\n \"NotificationContext\",\n null,\n );\n\nlet notificationIdCounter = 0;\n\nfunction normalizeDuration(value: unknown): number | null {\n if (value === null) return null;\n if (value === undefined) return TOAST_DURATIONS.DEFAULT;\n const duration = Number(value);\n return Number.isFinite(duration) && duration > 0 ? duration : null;\n}\n\nexport const NotificationProvider = ({\n children,\n}: NotificationProviderProps) => {\n const [store] = useState(() =>\n createStore<NotificationState>(INITIAL_NOTIFICATION_STATE, {\n freezeSnapshots: false,\n }),\n );\n const timersRef = useRef<Map<string, ReturnType<typeof setTimeout>>>(\n new Map(),\n );\n\n const clearTimers = useCallback(() => {\n timersRef.current.forEach(clearTimeout);\n timersRef.current.clear();\n }, []);\n\n useEffect(() => clearTimers, [clearTimers]);\n\n const dismissNotification = useCallback(\n (id: string) => {\n clearTimeout(timersRef.current.get(id));\n timersRef.current.delete(id);\n\n store.publish((prev) => {\n if (!Object.hasOwn(prev.notifications, id)) return prev;\n const notifications = { ...prev.notifications };\n delete notifications[id];\n return { notifications };\n });\n },\n [store],\n );\n\n const dismissAllNotifications = useCallback(() => {\n clearTimers();\n store.publish((prev) =>\n Object.keys(prev.notifications).length === 0\n ? prev\n : { notifications: {} },\n );\n }, [clearTimers, store]);\n\n const showNotification = useCallback(\n (\n messageOrData: ReactNode | NotificationData,\n options?: ToastOptionsInput,\n ): string | null => {\n const normalizedOptions = normalizeToastOptions(options);\n const payload: NotificationData = isNotificationDataObject(messageOrData)\n ? { ...normalizedOptions, ...messageOrData }\n : { ...normalizedOptions, message: messageOrData };\n\n const normalizedMessage = normalizeFeedbackText(payload.message);\n if (\n normalizedMessage === null ||\n normalizedMessage === undefined ||\n normalizedMessage === \"\"\n ) {\n return null;\n }\n\n const id =\n payload.dedupeKey ||\n payload.id ||\n (typeof normalizedMessage === \"string\"\n ? normalizedMessage.slice(0, 64)\n : `notification-${++notificationIdCounter}`);\n\n clearTimers();\n\n const entry: NotificationEntry = {\n dedupeKey: payload.dedupeKey,\n duration: payload.duration,\n id,\n message: normalizedMessage,\n timestamp: Date.now(),\n };\n\n store.publish({ notifications: { [id]: entry } });\n\n const duration = normalizeDuration(payload.duration);\n if (duration) {\n timersRef.current.set(\n id,\n setTimeout(() => dismissNotification(id), duration),\n );\n }\n\n return id;\n },\n [clearTimers, dismissNotification, store],\n );\n\n const actions = useMemo<NotificationActions>(\n () => ({\n dismissAllNotifications,\n dismissNotification,\n showNotification,\n }),\n [dismissAllNotifications, dismissNotification, showNotification],\n );\n\n const value = useMemo<NotificationContextValue>(\n () => ({ actions, store }),\n [actions, store],\n );\n\n return <NotificationContext value={value}>{children}</NotificationContext>;\n};\n\nexport function useNotificationActions(): NotificationActions {\n return useRequiredContext(\n NotificationContext,\n \"useNotificationActions\",\n \"NotificationProvider\",\n ).actions;\n}\n\nexport function useNotificationState(): NotificationState {\n const { store } = useRequiredContext(\n NotificationContext,\n \"useNotificationState\",\n \"NotificationProvider\",\n );\n return useStore(store);\n}\n\nexport function useNotification(): NotificationState & NotificationActions {\n const actions = useNotificationActions();\n const state = useNotificationState();\n return useMemo(() => ({ ...actions, ...state }), [actions, state]);\n}\n\nconst NOOP_NOTIFICATION_STORE = createStore<NotificationState>(\n INITIAL_NOTIFICATION_STATE,\n);\n\nexport function useOptionalNotificationState(): NotificationState;\nexport function useOptionalNotificationState<T>(\n selector: (state: NotificationState) => T,\n isEqual?: (a: T, b: T) => boolean,\n): T;\nexport function useOptionalNotificationState<T = NotificationState>(\n selector?: (state: NotificationState) => T,\n isEqual?: (a: T, b: T) => boolean,\n): T {\n const ctx = useContext(NotificationContext);\n return useStore(\n ctx?.store ?? NOOP_NOTIFICATION_STORE,\n selector as (state: NotificationState) => T,\n isEqual,\n );\n}\n\nexport function useOptionalNotificationActions(): NotificationActions {\n const ctx = useContext(NotificationContext);\n return ctx?.actions ?? INERT_NOTIFICATION_ACTIONS;\n}\n\nexport function useNotificationVisible(): boolean {\n return useOptionalNotificationState(\n ({ notifications }) => Object.keys(notifications).length > 0,\n );\n}\n\n","export const Z_INDEX = Object.freeze({\n BACKGROUND: 0,\n DOCK_BACKDROP: 100,\n DOCK: 110,\n NOTIFICATION: 120,\n MODAL_BACKDROP: 130,\n MODAL: 140,\n SELECT: 150,\n LOADING: 160,\n ERROR_OVERLAY: 170,\n CONTEXT_MENU_BACKDROP: 180,\n CONTEXT_MENU: 190,\n TOOLTIP: 200,\n\n UI_ELEMENT: 10,\n DOCK_CARD_BACKGROUND: 0,\n DOCK_CARD_CONTENT: 10,\n DOCK_CARD_STACK_BASE: 10,\n DOCK_CARD_BADGE: 20,\n DOCK_CARD_MEDIA: 30,\n DOCK_BREADCRUMBS: 10,\n DOCK_SURFACE_CONTROL: 10,\n DOCK_SURFACE_POPOVER: 30,\n DOCK_SURFACE_CENTER: 0,\n MODAL_FRAME: 1,\n MODAL_STICKY_HEADER: 10,\n} as const);\n\nexport const SURFACE_CLASSES = Object.freeze({\n description: \"text-white/70\",\n icon: \"bg-white/10 text-white\",\n surface: \"bg-black/60 ring-1 ring-inset ring-white/10\",\n title: \"text-white\",\n} as const);\n\nexport const ACTION_TONE_CLASS =\n \"bg-primary/10 text-primary hover:bg-primary hover:text-black\";\n","export const DURATION_TOKENS = Object.freeze({\n INSTANT: 0.08,\n MICRO: 0.18,\n FAST: 0.28,\n BASE: 0.36,\n MODERATE: 0.44,\n SLOW: 0.58,\n CINEMATIC: 0.86,\n} as const);\n\nexport const EASING_CURVES = Object.freeze({\n OUT_EXPO: [0.16, 1, 0.3, 1] as const,\n OUT_QUART: [0.25, 1, 0.5, 1] as const,\n OUT_QUINT: [0.22, 1, 0.36, 1] as const,\n IN_OUT_CUBIC: [0.65, 0, 0.35, 1] as const,\n IN_CUBIC: [0.5, 0, 1, 1] as const,\n OUT_BACK: [0.34, 1.56, 0.64, 1] as const,\n} as const);\n\nexport const MOTION_EASINGS = Object.freeze({\n ENTER: EASING_CURVES.OUT_QUART,\n ENTER_EMPHASIZED: EASING_CURVES.OUT_EXPO,\n EXIT: EASING_CURVES.IN_CUBIC,\n} as const);\n\nexport const MOTION_TIERS = Object.freeze({\n MICRO: Object.freeze({\n distance: 4,\n duration: DURATION_TOKENS.MICRO,\n ease: MOTION_EASINGS.ENTER_EMPHASIZED,\n scaleDelta: 0.008,\n }),\n FAST: Object.freeze({\n distance: 9,\n duration: DURATION_TOKENS.FAST,\n ease: MOTION_EASINGS.ENTER_EMPHASIZED,\n scaleDelta: 0.012,\n }),\n STANDARD: Object.freeze({\n distance: 18,\n duration: DURATION_TOKENS.MODERATE,\n ease: MOTION_EASINGS.ENTER,\n scaleDelta: 0.018,\n }),\n SURFACE: Object.freeze({\n distance: 28,\n duration: DURATION_TOKENS.SLOW,\n ease: MOTION_EASINGS.ENTER_EMPHASIZED,\n scaleDelta: 0.024,\n }),\n} as const);\n\nexport const SPRING_PRESETS = Object.freeze({\n MICRO: Object.freeze({\n damping: 32,\n mass: 0.6,\n stiffness: 520,\n type: \"spring\",\n } as const),\n SNAPPY: Object.freeze({\n damping: 28,\n mass: 0.8,\n stiffness: 380,\n type: \"spring\",\n } as const),\n GENTLE: Object.freeze({\n damping: 30,\n mass: 1,\n stiffness: 260,\n type: \"spring\",\n } as const),\n BOUNCY: Object.freeze({\n damping: 20,\n mass: 0.85,\n stiffness: 340,\n type: \"spring\",\n } as const),\n} as const);\n\nexport const REDUCED_MOTION_TRANSITION = Object.freeze({\n duration: DURATION_TOKENS.INSTANT,\n ease: \"linear\",\n} as const);\n\nexport const COMPOSITOR_GPU_STYLE = Object.freeze({\n backfaceVisibility: \"hidden\",\n transform: \"translate3d(0, 0, 0)\",\n willChange: \"transform, opacity\",\n} as const);\n\nexport const TAP_SCALE_SUBTLE = 0.97;\n\ntype Ease = readonly [number, number, number, number];\n\ntype TweenOptions = {\n duration?: number;\n exitDuration?: number;\n enterEase?: Ease;\n exitEase?: Ease;\n};\n\ntype Spring = {\n type?: \"spring\";\n stiffness: number;\n damping: number;\n mass: number;\n};\n\nfunction tween(duration: number, ease: Ease) {\n return Object.freeze({ type: \"tween\" as const, duration, ease });\n}\n\nfunction safeNumber(value: unknown, fallback: number): number {\n const source =\n value &&\n typeof value === \"object\" &&\n \"get\" in value &&\n typeof value.get === \"function\"\n ? value.get()\n : value;\n const number = Number.parseFloat(String(source));\n return Number.isFinite(number) ? number : fallback;\n}\n\nexport function gpuTransform(\n y: unknown = 0,\n scale: unknown = 1,\n x: unknown = 0,\n): string {\n const translateY = Math.round(safeNumber(y, 0));\n const translateX = Math.round(safeNumber(x, 0));\n const scaleValue = Math.round(safeNumber(scale, 1) * 1000) / 1000;\n return `translate3d(${translateX}px, ${translateY}px, 0) scale(${scaleValue})`;\n}\n\nexport function durationForDistance(\n distancePx: number,\n {\n base = DURATION_TOKENS.FAST,\n min = DURATION_TOKENS.MICRO,\n max = DURATION_TOKENS.SLOW,\n reference = 320,\n gain = 0.22,\n }: {\n base?: number;\n min?: number;\n max?: number;\n reference?: number;\n gain?: number;\n } = {},\n): number {\n const distance = Math.abs(Number(distancePx) || 0);\n const safeMin = Math.max(0, min);\n const safeMax = Math.max(safeMin, max);\n const safeReference = Math.max(1, reference);\n const duration = base + Math.sqrt(distance / safeReference) * gain;\n return Math.min(safeMax, Math.max(safeMin, duration));\n}\n\nexport function surfaceResizeTransition(\n distancePx: number,\n {\n base = DURATION_TOKENS.FAST,\n min = DURATION_TOKENS.MICRO,\n max = DURATION_TOKENS.SLOW,\n reference = 320,\n gain = 0.22,\n ease = EASING_CURVES.IN_OUT_CUBIC,\n }: {\n base?: number;\n min?: number;\n max?: number;\n reference?: number;\n gain?: number;\n ease?: Ease;\n } = {},\n) {\n return tween(\n durationForDistance(distancePx, { base, min, max, reference, gain }),\n ease,\n );\n}\n\nexport function contentSwapTransitions({\n duration = DURATION_TOKENS.FAST,\n exitDuration = DURATION_TOKENS.MICRO,\n enterEase = EASING_CURVES.OUT_EXPO,\n exitEase = EASING_CURVES.IN_CUBIC,\n}: TweenOptions = {}) {\n return Object.freeze({\n enter: tween(duration, enterEase),\n exit: tween(exitDuration, exitEase),\n });\n}\n\nexport function contentSwap({\n travel = 6,\n exitTravel = travel * 0.7,\n enterScale = 0.99,\n exitScale = 0.99,\n ...transitionOptions\n}: TweenOptions & {\n travel?: number;\n exitTravel?: number;\n enterScale?: number;\n exitScale?: number;\n} = {}) {\n const transitions = contentSwapTransitions(transitionOptions);\n return Object.freeze({\n hidden: Object.freeze({\n opacity: 0,\n transform: gpuTransform(travel, enterScale),\n }),\n visible: Object.freeze({\n opacity: 1,\n transform: gpuTransform(0),\n transition: transitions.enter,\n }),\n exit: Object.freeze({\n opacity: 0,\n transform: gpuTransform(-exitTravel, exitScale),\n transition: transitions.exit,\n }),\n });\n}\n\nexport function overlaySurface({\n travel = 16,\n exitTravel = travel * 0.5,\n enterScale = 0.97,\n exitScale = 0.985,\n distance,\n duration,\n exitDuration,\n enterEase = EASING_CURVES.OUT_EXPO,\n exitEase = EASING_CURVES.IN_CUBIC,\n}: {\n travel?: number;\n exitTravel?: number;\n enterScale?: number;\n exitScale?: number;\n distance?: number;\n duration?: number;\n exitDuration?: number;\n enterEase?: Ease;\n exitEase?: Ease;\n} = {}) {\n const enterDuration =\n duration ??\n (distance === undefined\n ? DURATION_TOKENS.BASE\n : durationForDistance(distance));\n const transitions = contentSwapTransitions({\n duration: enterDuration,\n exitDuration: exitDuration ?? enterDuration * 0.68,\n enterEase,\n exitEase,\n });\n\n return Object.freeze({\n hidden: Object.freeze({\n opacity: 0,\n transform: gpuTransform(travel, enterScale),\n }),\n visible: Object.freeze({\n opacity: 1,\n transform: gpuTransform(0),\n transition: transitions.enter,\n }),\n exit: Object.freeze({\n opacity: 0,\n transform: gpuTransform(exitTravel, exitScale),\n transition: transitions.exit,\n }),\n });\n}\n\nexport function staggerDelay(\n index: number,\n { base = 0.028, cap = 0.16, exponent = 0.82 } = {},\n): number {\n const safeIndex = Math.max(0, Number(index) || 0);\n return Math.min(cap, base * Math.pow(safeIndex, exponent));\n}\n\nexport function staggerItem({\n base = 0.028,\n cap = 0.16,\n duration = DURATION_TOKENS.BASE,\n travel = 10,\n enterEase = EASING_CURVES.OUT_EXPO,\n exitDuration = DURATION_TOKENS.MICRO,\n exitEase = EASING_CURVES.IN_CUBIC,\n}: {\n base?: number;\n cap?: number;\n duration?: number;\n travel?: number;\n enterEase?: Ease;\n exitDuration?: number;\n exitEase?: Ease;\n} = {}) {\n return Object.freeze({\n hidden: Object.freeze({\n opacity: 0,\n transform: gpuTransform(travel, 0.985),\n }),\n visible: (index: number = 0) => ({\n opacity: 1,\n transform: gpuTransform(0),\n transition: Object.freeze({\n ...tween(duration, enterEase),\n delay: staggerDelay(index, { base, cap }),\n }),\n }),\n exit: Object.freeze({\n opacity: 0,\n transform: gpuTransform(-travel * 0.6, 0.99),\n transition: tween(exitDuration, exitEase),\n }),\n });\n}\n\nexport function chip({\n duration = DURATION_TOKENS.FAST,\n exitDuration = DURATION_TOKENS.MICRO,\n enterEase = EASING_CURVES.IN_OUT_CUBIC,\n exitEase = EASING_CURVES.IN_CUBIC,\n}: TweenOptions = {}) {\n const transitions = contentSwapTransitions({\n duration,\n exitDuration,\n enterEase,\n exitEase,\n });\n return Object.freeze({\n hidden: Object.freeze({ opacity: 0, transform: gpuTransform(0, 0.96) }),\n visible: Object.freeze({\n opacity: 1,\n transform: gpuTransform(0),\n transition: transitions.enter,\n }),\n exit: Object.freeze({\n opacity: 0,\n transform: gpuTransform(0, 0.96),\n transition: transitions.exit,\n }),\n });\n}\n\nexport function press({\n tapScale = TAP_SCALE_SUBTLE,\n spring = SPRING_PRESETS.MICRO,\n}: { tapScale?: number; spring?: Spring } = {}) {\n return Object.freeze({\n variants: Object.freeze({\n idle: Object.freeze({ transform: gpuTransform(0, 1) }),\n hover: Object.freeze({ transform: gpuTransform(0, 1) }),\n tap: Object.freeze({ transform: gpuTransform(0, tapScale) }),\n }),\n transition: Object.freeze({ type: \"spring\" as const, ...spring }),\n });\n}\n\nexport function dragDismiss({\n constraints = { top: 0, bottom: 0 },\n elastic = { top: 0.05, bottom: 0.5 },\n thresholds = { offsetY: 65, velocityY: 400 },\n interpolation = {\n range: [0, 180] as const,\n opacity: [1, 0.75] as const,\n scale: [1, 0.96] as const,\n },\n} = {}) {\n return Object.freeze({\n constraints: Object.freeze(constraints),\n elastic: Object.freeze(elastic),\n thresholds: Object.freeze(thresholds),\n interpolation: Object.freeze(interpolation),\n });\n}\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 isSurfaceDescriptor,\n isValidComponentType,\n normalizeSurfaceExtension,\n resolveComponentType,\n resolveRenderableContent,\n createSurfaceReturnHandshake,\n normalizeSurfaceFlowSnapshot,\n resolveSurfaceFlowReturnHandshake,\n} from \"../utils\";\nimport {\n type ActiveSurfaceStep,\n type DockComponentProps,\n type DockItem,\n type NormalizedSurfaceDefinition,\n type NormalizedSurfaceExtension,\n type OpenSurfaceOptions,\n type RenderableSurfaceEntry,\n type SurfaceBuilderDefinition,\n type SurfaceBuilderFactory,\n type SurfaceDescriptor,\n type SurfaceFlowContextValue,\n type SurfaceFlowDefinition,\n type SurfaceFlowDefinitionInput,\n type SurfaceFlowSession,\n type SurfaceFlowState,\n type SurfaceInput,\n type SurfaceResult,\n type SurfaceStep,\n type SurfaceViewModelOptions,\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","import {\n DURATION_TOKENS,\n EASING_CURVES,\n MOTION_TIERS,\n contentSwapTransitions,\n press,\n surfaceResizeTransition,\n overlaySurface,\n chip,\n contentSwap,\n gpuTransform,\n staggerDelay,\n staggerItem,\n} from \"@/tokens\";\nimport { type TargetAndTransition, type Transition, type Variants } from \"motion/react\";\nimport { DOCK_CARD_DIMENSIONS, DOCK_SURFACE_PHASE } from \"./constants\";\n\nexport const DOCK_DURATIONS = Object.freeze({\n MICRO: DURATION_TOKENS.MICRO,\n FAST: DURATION_TOKENS.FAST,\n BASE: DURATION_TOKENS.BASE,\n ACTION_DISMISS: 0.32,\n EXPAND: DURATION_TOKENS.CINEMATIC,\n COLLAPSE: 0.52,\n HEADER: 0.32,\n MODERATE: DURATION_TOKENS.MODERATE,\n SLOW: DURATION_TOKENS.SLOW,\n} as const);\n\nconst DOCK_GLIDE_EASE = EASING_CURVES.OUT_QUART;\n\nconst DOCK_REVEAL_EASE = EASING_CURVES.OUT_EXPO;\n\nconst DOCK_WEIGHT_EASE = EASING_CURVES.OUT_QUINT;\n\nexport const DOCK_EASINGS = Object.freeze({\n FLUID: DOCK_GLIDE_EASE,\n FLUID_RESIZE: DOCK_GLIDE_EASE,\n PROGRESSIVE_EXIT: EASING_CURVES.IN_CUBIC,\n CINEMATIC: DOCK_REVEAL_EASE,\n EMPHASIZED: DOCK_REVEAL_EASE,\n SOFT: DOCK_GLIDE_EASE,\n SURFACE_WEIGHT: DOCK_WEIGHT_EASE,\n EXIT: EASING_CURVES.IN_CUBIC,\n SURFACE_ARRIVAL: EASING_CURVES.OUT_BACK,\n} as const);\n\nexport const DOCK_SURFACE_STACK_SCALE = Object.freeze({\n REST: 1,\n OPEN_ANTICIPATION_COMPRESS: 0.94,\n CLOSE_ANTICIPATION_COMPRESS: 0.96,\n} as const);\n\nexport const dockHeaderSwapTransitions = contentSwapTransitions({\n duration: DOCK_DURATIONS.HEADER,\n exitDuration: DOCK_DURATIONS.FAST,\n enterEase: DOCK_EASINGS.FLUID,\n exitEase: DOCK_EASINGS.EXIT,\n});\n\nexport const dockControlSwapTransitions = contentSwapTransitions({\n duration: DOCK_DURATIONS.BASE,\n exitDuration: DOCK_DURATIONS.FAST,\n enterEase: DOCK_EASINGS.FLUID,\n exitEase: DOCK_EASINGS.EXIT,\n});\n\nexport const dockTextSwapTransitions = contentSwapTransitions({\n duration: DOCK_DURATIONS.BASE,\n exitDuration: DOCK_DURATIONS.FAST,\n enterEase: DOCK_EASINGS.EMPHASIZED,\n exitEase: DOCK_EASINGS.EXIT,\n});\n\nexport const DOCK_TIERS = MOTION_TIERS;\n\nexport const DOCK_SPRINGS = Object.freeze({\n PRESS: Object.freeze({\n type: \"spring\" as const,\n stiffness: 420,\n damping: 34,\n mass: 0.35,\n }),\n BADGE: Object.freeze({\n type: \"spring\" as const,\n stiffness: 360,\n damping: 30,\n mass: 0.45,\n }),\n DECK: Object.freeze({\n type: \"spring\" as const,\n stiffness: 210,\n damping: 34,\n mass: 1.2,\n }),\n PEEK: Object.freeze({\n type: \"spring\" as const,\n stiffness: 280,\n damping: 32,\n mass: 0.6,\n }),\n SCRUBBER_TOOLTIP: Object.freeze({\n damping: 28,\n stiffness: 350,\n }),\n} as const);\n\nexport const DOCK_STAGGER_TIMINGS = Object.freeze({\n EXPAND: 0.055,\n COLLAPSE: 0.02,\n PEEK: 0.016,\n STANDARD: 0.032,\n FAST: 0.02,\n CONTENT_REVEAL: 0.06,\n} as const);\n\nexport const DOCK_SURFACE_CHOREOGRAPHY_TIMINGS = Object.freeze({\n SURFACE_ANTICIPATION_MS: 240,\n ANTICIPATION_LEAD_MS: 70,\n ACTION_DISMISS_MS: DOCK_DURATIONS.ACTION_DISMISS * 1000,\n ACTION_DISMISS_OVERLAP_MS: 220,\n BODY_ENTER_MS: DOCK_DURATIONS.EXPAND * 1000,\n BODY_ENTER_DELAY_MS: 100,\n BODY_EXIT_MS: 760,\n BODY_COLLAPSE_SETTLE_MS: 100,\n HEADER_RESTORE_MS: 360,\n RESTORE_SETTLE_MS: 0,\n} as const);\n\nconst DOCK_SURFACE_HEADER_REVEAL_DELAY_MS = 80;\n\nexport const DOCK_SURFACE_HEADER_RESTORE_TRANSITION = Object.freeze({\n type: \"tween\" as const,\n duration:\n (DOCK_SURFACE_CHOREOGRAPHY_TIMINGS.HEADER_RESTORE_MS -\n DOCK_SURFACE_HEADER_REVEAL_DELAY_MS) /\n 1000,\n delay: DOCK_SURFACE_HEADER_REVEAL_DELAY_MS / 1000,\n ease: DOCK_EASINGS.SOFT,\n});\n\nexport const DOCK_TAP_SCALE = 0.97;\n\nexport const DOCK_SURFACE_DRAG_CONSTRAINTS = Object.freeze({\n top: 0,\n bottom: 0,\n} as const);\n\nexport const DOCK_SURFACE_DRAG_ELASTIC = Object.freeze({\n top: 0.05,\n bottom: 0.5,\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 const DOCK_SURFACE_DRAG_INTERPOLATION = Object.freeze({\n DRAG_RANGE: Object.freeze([0, 180] as const),\n OPACITY_RANGE: Object.freeze([1, 0.75] as const),\n SCALE_RANGE: Object.freeze([1, 0.96] as const),\n} as const);\n\nexport const DOCK_STACK_ELEVATION = Object.freeze({\n REST: \"0px 12px 32px 0px rgba(0,0,0,0.35), 0px 2px 8px 0px rgba(0,0,0,0.25)\",\n ELEVATED:\n \"0px 32px 80px 0px rgba(0,0,0,0.55), 0px 8px 24px 0px rgba(0,0,0,0.35)\",\n} as const);\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\nexport const DOCK_STACK_TRANSITION = Object.freeze({\n type: \"tween\" as const,\n duration: DOCK_DURATIONS.COLLAPSE,\n ease: DOCK_EASINGS.SOFT,\n});\n\nexport const DOCK_CARD_EXPAND_TRANSITION = Object.freeze({\n type: \"tween\" as const,\n duration: DOCK_DURATIONS.EXPAND,\n ease: DOCK_EASINGS.SURFACE_WEIGHT,\n});\n\nexport const dockSurfaceBodyRole = overlaySurface({\n travel: 14,\n exitTravel: 14,\n enterScale: 0.985,\n exitScale: 0.985,\n duration:\n (DOCK_SURFACE_CHOREOGRAPHY_TIMINGS.BODY_ENTER_MS -\n DOCK_SURFACE_CHOREOGRAPHY_TIMINGS.BODY_ENTER_DELAY_MS) /\n 1000,\n exitDuration:\n DOCK_SURFACE_CHOREOGRAPHY_TIMINGS.SURFACE_ANTICIPATION_MS / 1000,\n enterEase: DOCK_EASINGS.SURFACE_WEIGHT,\n exitEase: DOCK_EASINGS.SURFACE_WEIGHT,\n});\n\nexport const DOCK_SURFACE_BODY_ENTER_TRANSITION = Object.freeze({\n ...dockSurfaceBodyRole.visible.transition,\n delay: DOCK_SURFACE_CHOREOGRAPHY_TIMINGS.BODY_ENTER_DELAY_MS / 1000,\n});\n\nexport const DOCK_SURFACE_BODY_EXIT_TRANSITION =\n dockSurfaceBodyRole.exit.transition;\n\nexport const DOCK_SURFACE_ANTICIPATION_HIDE_TRANSITION = Object.freeze({\n type: \"tween\" as const,\n duration: DOCK_SURFACE_CHOREOGRAPHY_TIMINGS.SURFACE_ANTICIPATION_MS / 1000,\n ease: DOCK_EASINGS.SURFACE_WEIGHT,\n});\n\nconst DOCK_SURFACE_STEP_RESIZE_BASE = 0.5;\nconst DOCK_SURFACE_STEP_RESIZE_MIN = 0.4;\nconst DOCK_SURFACE_STEP_RESIZE_MAX = DOCK_DURATIONS.EXPAND;\n\nfunction createDockSurfaceResizeTransition(distancePx: number) {\n const resize = surfaceResizeTransition(distancePx, {\n base: DOCK_SURFACE_STEP_RESIZE_BASE,\n min: DOCK_SURFACE_STEP_RESIZE_MIN,\n max: DOCK_SURFACE_STEP_RESIZE_MAX,\n ease: DOCK_EASINGS.SURFACE_WEIGHT,\n });\n return Object.freeze({\n ...resize,\n height: resize,\n width: resize,\n });\n}\n\nexport const DOCK_SURFACE_RESIZE_TRANSITION =\n createDockSurfaceResizeTransition(260);\n\nexport const DOCK_SURFACE_STACK_ARRIVAL_TRANSITION = Object.freeze({\n type: \"tween\" as const,\n duration: DOCK_DURATIONS.EXPAND,\n ease: DOCK_EASINGS.SURFACE_ARRIVAL,\n});\n\nexport function getDockSurfaceResizeTransition(distancePx: number) {\n return createDockSurfaceResizeTransition(distancePx);\n}\n\nexport const DOCK_SURFACE_BODY_STEP_TRANSITION = contentSwapTransitions({\n duration: DOCK_DURATIONS.BASE,\n exitDuration: DOCK_DURATIONS.FAST,\n enterEase: DOCK_EASINGS.FLUID_RESIZE,\n exitEase: DOCK_EASINGS.EXIT,\n}).enter;\n\nexport const DOCK_ACTION_DISMISS_TRANSITION = Object.freeze({\n type: \"tween\" as const,\n duration: DOCK_DURATIONS.ACTION_DISMISS,\n ease: DOCK_EASINGS.EXIT,\n});\n\nexport const DOCK_HEADER_SWAP_TRANSITION = dockHeaderSwapTransitions.enter;\n\nexport const DOCK_SURFACE_CONTROLS_CONTAINER_TRANSITION =\n dockControlSwapTransitions.enter;\n\nexport const DOCK_SURFACE_CONTROLS_CONTAINER_EXIT_TRANSITION =\n dockControlSwapTransitions.exit;\n\nexport const DOCK_SURFACE_CONTROLS_ITEM_TRANSITION =\n dockControlSwapTransitions.enter;\n\nexport const DOCK_SURFACE_CONTROLS_ITEM_EXIT_TRANSITION =\n dockControlSwapTransitions.exit;\n\nexport const DOCK_SURFACE_CONTROLS_ACTION_TRANSITION =\n dockControlSwapTransitions.enter;\n\nexport const DOCK_SURFACE_CONTROLS_ACTION_EXIT_TRANSITION =\n dockControlSwapTransitions.exit;\n\nexport const DOCK_SURFACE_EXTENSIONS_ENTER_TRANSITION = Object.freeze({\n type: \"tween\" as const,\n duration: DOCK_DURATIONS.MODERATE,\n ease: DOCK_EASINGS.CINEMATIC,\n});\n\nexport const DOCK_SURFACE_EXTENSIONS_EXIT_TRANSITION = Object.freeze({\n type: \"tween\" as const,\n duration: DOCK_DURATIONS.BASE,\n ease: DOCK_EASINGS.EXIT,\n});\n\nexport const DOCK_CARD_TRANSITION = Object.freeze({\n type: \"tween\" as const,\n duration: DOCK_DURATIONS.COLLAPSE,\n ease: DOCK_EASINGS.SOFT,\n});\n\nexport const DOCK_CARD_COLLAPSE_TRANSITION = Object.freeze({\n type: \"tween\" as const,\n duration: DOCK_DURATIONS.BASE,\n ease: DOCK_EASINGS.EXIT,\n});\n\nexport const DOCK_PEEK_TRANSITION = Object.freeze({\n type: \"tween\" as const,\n duration: DOCK_DURATIONS.FAST,\n ease: DOCK_EASINGS.SOFT,\n});\n\nexport const DOCK_CARD_SPRING = DOCK_SPRINGS.DECK;\n\nexport function getDockBackdropTransition({\n expanded = false,\n isSurface = false,\n}: {\n expanded?: boolean;\n isSurface?: boolean;\n} = {}) {\n return isSurface || expanded\n ? DOCK_CARD_EXPAND_TRANSITION\n : DOCK_STACK_TRANSITION;\n}\n\nexport const DOCK_FADE_TRANSITION = Object.freeze({\n type: \"tween\" as const,\n duration: DOCK_TIERS.STANDARD.duration,\n ease: DOCK_EASINGS.EMPHASIZED,\n});\n\nexport const DOCK_TEXT_ENTER_TRANSITION = dockTextSwapTransitions.enter;\n\nexport const DOCK_TEXT_EXIT_TRANSITION = dockTextSwapTransitions.exit;\n\nexport const DOCK_ICON_TRANSITION = Object.freeze({\n type: \"tween\" as const,\n duration: DOCK_DURATIONS.FAST,\n ease: DOCK_EASINGS.SOFT,\n});\n\nexport const DOCK_HUD_TRANSITION = Object.freeze({\n type: \"tween\" as const,\n duration: DOCK_DURATIONS.MODERATE,\n ease: DOCK_EASINGS.CINEMATIC,\n});\n\nexport const DOCK_STAGGER_TRANSITION = Object.freeze({\n type: \"tween\" as const,\n duration: DOCK_DURATIONS.MODERATE,\n ease: DOCK_EASINGS.EMPHASIZED,\n});\n\nexport const dockPressRole = press({\n tapScale: DOCK_TAP_SCALE,\n spring: DOCK_SPRINGS.PRESS,\n});\n\nexport const DOCK_BUTTON_TRANSITION = dockPressRole.transition;\n\nexport const DOCK_BADGE_TRANSITION = DOCK_SPRINGS.BADGE;\n\nexport const DOCK_SCRUBBER_TOOLTIP_TRANSITION = Object.freeze({\n type: \"tween\" as const,\n duration: DOCK_DURATIONS.FAST,\n ease: DOCK_EASINGS.EMPHASIZED,\n});\n\nexport const DOCK_SCRUBBER_TOOLTIP_SPRING = DOCK_SPRINGS.SCRUBBER_TOOLTIP;\n\nconst DOCK_EASING_CSS = `cubic-bezier(${DOCK_EASINGS.FLUID.join(\", \")})`;\n\nconst DOCK_FAST_MS = `${Math.round(DOCK_DURATIONS.FAST * 1000)}ms`;\n\nexport const DOCK_MEDIA_VOLUME_FILL_TRANSITION = `width ${DOCK_FAST_MS} ${DOCK_EASING_CSS}`;\n\nexport const DOCK_MEDIA_VOLUME_THUMB_POSITION_TRANSITION = `left ${DOCK_FAST_MS} ${DOCK_EASING_CSS}`;\n\nexport const DOCK_SKELETON_PULSE_CLASS =\n \"animate-pulse motion-reduce:animate-none\";\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 const dockActionVariants = dockPressRole.variants;\n\nexport const dockMediaVolumeThumbVariants = Object.freeze({\n idle: Object.freeze({\n scale: 1,\n }),\n dragging: Object.freeze({\n scale: 1.18,\n }),\n});\n\nfunction buildVariants(\n tierName: keyof typeof DOCK_TIERS,\n { distanceScale = 0 }: { distanceScale?: number } = {},\n): Variants {\n const tier = DOCK_TIERS[tierName];\n const distance = Math.round(tier.distance * distanceScale);\n const exitDuration = Math.min(tier.duration * 0.7, DOCK_DURATIONS.MODERATE);\n const hidden: TargetAndTransition = {\n opacity: 0,\n };\n const visible: TargetAndTransition = {\n opacity: 1,\n transition: {\n duration: tier.duration,\n ease: tier.ease,\n },\n };\n const exit: TargetAndTransition = {\n opacity: 0,\n transition: {\n duration: exitDuration,\n ease: DOCK_EASINGS.EXIT,\n },\n };\n if (distance) {\n hidden.transform = toGpuTransform(distance, 1 - tier.scaleDelta);\n visible.transform = toGpuTransform(0);\n exit.transform = toGpuTransform(distance, 1 - tier.scaleDelta);\n }\n return Object.freeze({\n hidden,\n visible,\n exit,\n });\n}\n\nexport const textCrossfadeVariants = buildVariants(\"STANDARD\", {\n distanceScale: 0.42,\n});\n\nexport const dockHeaderSwapVariants = contentSwap({\n travel: 4,\n exitTravel: 4,\n duration: DOCK_DURATIONS.HEADER,\n exitDuration: DOCK_DURATIONS.FAST,\n enterEase: DOCK_EASINGS.FLUID,\n exitEase: DOCK_EASINGS.EXIT,\n});\n\nexport const dockExtensionShelfVariants = Object.freeze({\n hidden: {\n opacity: 0,\n transform: toGpuTransform(5, 0.99),\n },\n visible: {\n opacity: 1,\n transform: toGpuTransform(0, 1),\n transition: DOCK_SURFACE_EXTENSIONS_ENTER_TRANSITION,\n },\n exit: {\n opacity: 0,\n transform: toGpuTransform(-4, 0.99),\n transition: DOCK_SURFACE_EXTENSIONS_EXIT_TRANSITION,\n },\n});\n\nexport const dockHeaderRestoreVariants = Object.freeze({\n hidden: {\n opacity: 0,\n transform: toGpuTransform(-4, 0.99),\n },\n visible: {\n opacity: 1,\n transform: toGpuTransform(0),\n transition: DOCK_SURFACE_HEADER_RESTORE_TRANSITION,\n },\n exit: {\n opacity: 0,\n transform: toGpuTransform(4, 0.99),\n transition: DOCK_TEXT_EXIT_TRANSITION,\n },\n});\n\nexport const dockSurfaceControlsContainerVariants = Object.freeze({\n hidden: (targetY: unknown = 0) => ({\n opacity: 0,\n transform: toGpuTransform((Number(targetY) || 0) + 6, 0.97),\n transition: DOCK_SURFACE_CONTROLS_CONTAINER_EXIT_TRANSITION,\n }),\n visible: (targetY: unknown = 0) => ({\n opacity: 1,\n transform: toGpuTransform(Number(targetY) || 0, 1),\n transition: DOCK_SURFACE_CONTROLS_CONTAINER_TRANSITION,\n }),\n exit: (targetY: unknown = 0) => ({\n opacity: 0,\n transform: toGpuTransform((Number(targetY) || 0) + 6, 0.97),\n transition: DOCK_SURFACE_CONTROLS_CONTAINER_EXIT_TRANSITION,\n }),\n});\n\nexport const dockSurfaceControlsActionVariants = Object.freeze({\n hidden: {\n opacity: 0,\n scale: 0.96,\n width: 0,\n marginRight: -2,\n },\n visible: {\n opacity: 1,\n scale: 1,\n width: \"auto\",\n marginRight: 0,\n transition: DOCK_SURFACE_CONTROLS_ACTION_TRANSITION,\n },\n exit: {\n opacity: 0,\n scale: 0.96,\n width: 0,\n marginRight: -2,\n transition: DOCK_SURFACE_CONTROLS_ACTION_EXIT_TRANSITION,\n },\n});\n\nexport const dockSurfaceControlsBackVariants = Object.freeze({\n hidden: {\n opacity: 0,\n scale: 0.96,\n width: 0,\n marginRight: -2,\n },\n visible: {\n opacity: 1,\n scale: 1,\n width: \"auto\",\n marginRight: 0,\n transition: DOCK_SURFACE_CONTROLS_ITEM_TRANSITION,\n },\n exit: {\n opacity: 0,\n scale: 0.96,\n width: 0,\n marginRight: -2,\n transition: DOCK_SURFACE_CONTROLS_ITEM_EXIT_TRANSITION,\n },\n});\n\nexport const dockSurfaceControlsCloseVariants = chip({\n duration: DOCK_DURATIONS.BASE,\n exitDuration: DOCK_DURATIONS.FAST,\n enterEase: DOCK_EASINGS.FLUID,\n exitEase: DOCK_EASINGS.EXIT,\n});\n\nexport const dockCommandBarSwapVariants = Object.freeze({\n hidden: {\n opacity: 0,\n transform: \"translate3d(5px, 0, 0) scale(0.97)\",\n },\n visible: (customIndex: unknown = 0) => ({\n opacity: 1,\n transform: \"translate3d(0px, 0, 0) scale(1)\",\n transition: {\n duration: DOCK_DURATIONS.BASE,\n delay: staggerDelay(Number(customIndex) || 0, {\n base: DOCK_STAGGER_TIMINGS.FAST,\n cap: 0.12,\n }),\n ease: DOCK_EASINGS.FLUID,\n },\n }),\n exit: {\n opacity: 0,\n transform: \"translate3d(4px, 0, 0) scale(0.98)\",\n transition: {\n duration: DOCK_DURATIONS.FAST,\n ease: DOCK_EASINGS.EXIT,\n },\n },\n});\n\nexport const dockActionDismissVariants = Object.freeze({\n hidden: {\n opacity: 0,\n transform: toGpuTransform(6, 0.99),\n },\n visible: {\n opacity: 1,\n transform: toGpuTransform(0),\n transition: {\n duration: DOCK_DURATIONS.FAST,\n ease: DOCK_EASINGS.SOFT,\n },\n },\n exit: {\n opacity: 0,\n transform: toGpuTransform(-5, 0.99),\n transition: {\n duration: DOCK_DURATIONS.ACTION_DISMISS,\n ease: DOCK_EASINGS.EXIT,\n },\n },\n});\n\nconst dockListStaggerRole = staggerItem({\n base: DOCK_STAGGER_TIMINGS.STANDARD,\n cap: 0.18,\n duration: DOCK_STAGGER_TRANSITION.duration,\n travel: 7,\n enterEase: DOCK_STAGGER_TRANSITION.ease,\n exitDuration: DOCK_TEXT_EXIT_TRANSITION.duration,\n exitEase: DOCK_TEXT_EXIT_TRANSITION.ease,\n});\n\nexport const dockListItemVariants = Object.freeze({\n hidden: dockListStaggerRole.hidden,\n visible: (index: unknown = 0) =>\n dockListStaggerRole.visible(Number(index) || 0),\n exit: dockListStaggerRole.exit,\n});\n\nexport const dockFadeVariants = Object.freeze({\n hidden: {\n opacity: 0,\n transform: toGpuTransform(6, 0.99),\n },\n visible: {\n opacity: 1,\n transform: toGpuTransform(0),\n transition: DOCK_TEXT_ENTER_TRANSITION,\n },\n exit: {\n opacity: 0,\n transform: toGpuTransform(-4, 0.99),\n transition: DOCK_TEXT_EXIT_TRANSITION,\n },\n});\n\nexport const dockIconVariants = Object.freeze({\n hidden: {\n opacity: 0,\n transform: toGpuTransform(0, 0.92),\n },\n visible: {\n opacity: 1,\n transform: toGpuTransform(0, 1),\n transition: {\n duration: DOCK_DURATIONS.FAST,\n ease: DOCK_EASINGS.SOFT,\n },\n },\n exit: {\n opacity: 0,\n transform: toGpuTransform(0, 0.92),\n transition: {\n duration: DOCK_DURATIONS.FAST,\n ease: DOCK_EASINGS.EXIT,\n },\n },\n});\n\nexport const dockBadgeVariants = Object.freeze({\n hidden: {\n opacity: 0,\n transform: toGpuTransform(0, 0.88),\n },\n visible: {\n opacity: 1,\n transform: toGpuTransform(0),\n },\n exit: {\n opacity: 0,\n transform: toGpuTransform(0, 0.9),\n },\n});\n\nexport const dockBackdropVariants = Object.freeze({\n hidden: {\n opacity: 0,\n },\n visible: {\n opacity: 1,\n },\n exit: {\n opacity: 0,\n },\n});\n\nexport const dockBreadcrumbsVariants = Object.freeze({\n hidden: {\n opacity: 0,\n transform: toGpuTransform(-5, 0.985),\n },\n visible: {\n opacity: 1,\n transform: toGpuTransform(0),\n transition: DOCK_CARD_EXPAND_TRANSITION,\n },\n exit: {\n opacity: 0,\n transform: toGpuTransform(-3, 0.99),\n transition: DOCK_CARD_TRANSITION,\n },\n});\n\nexport const dockHudVariants = Object.freeze({\n hidden: {\n opacity: 0,\n transform: toGpuTransform(4, 0.99),\n },\n visible: {\n opacity: 1,\n transform: toGpuTransform(0),\n transition: DOCK_HUD_TRANSITION,\n },\n exit: {\n opacity: 0,\n transform: toGpuTransform(3, 0.99),\n transition: DOCK_TEXT_EXIT_TRANSITION,\n },\n});\n\nexport const dockScrubberTooltipVariants = Object.freeze({\n hidden: {\n opacity: 0,\n transform: toGpuTransform(4, 0.98),\n },\n visible: {\n opacity: 1,\n transform: toGpuTransform(0),\n },\n exit: {\n opacity: 0,\n transform: toGpuTransform(3, 0.99),\n },\n});\n\nexport function getDockDescriptionVariants(targetOpacity = 0.7) {\n return {\n hidden: {\n opacity: 0,\n transform: toGpuTransform(4, 0.99),\n },\n visible: {\n opacity: targetOpacity,\n transform: toGpuTransform(0),\n transition: {\n duration: DOCK_DURATIONS.BASE,\n ease: DOCK_EASINGS.EMPHASIZED,\n },\n },\n exit: {\n opacity: 0,\n transform: toGpuTransform(-3, 0.99),\n transition: {\n duration: DOCK_DURATIONS.FAST,\n ease: DOCK_EASINGS.EXIT,\n },\n },\n };\n}\n\nexport function getDockActionMotionProps({\n disabled = false,\n reduceMotion = false,\n}: {\n disabled?: boolean;\n reduceMotion?: boolean;\n} = {}) {\n const canMove = !disabled && !reduceMotion;\n return {\n initial: false as const,\n animate: \"idle\",\n whileTap: canMove ? \"tap\" : undefined,\n variants: dockActionVariants,\n transition: DOCK_BUTTON_TRANSITION,\n };\n}\n\nexport function getDockMediaVolumeFillTransition({\n isDragging = false,\n}: { isDragging?: boolean } = {}) {\n return isDragging ? \"none\" : DOCK_MEDIA_VOLUME_FILL_TRANSITION;\n}\n\nexport function getDockMediaVolumeThumbAnimateProps({\n isDragging = false,\n}: {\n isDragging?: boolean;\n} = {}) {\n return isDragging\n ? dockMediaVolumeThumbVariants.dragging\n : dockMediaVolumeThumbVariants.idle;\n}\n\nexport function getDockMediaVolumeThumbPositionTransition({\n isDragging = false,\n}: {\n isDragging?: boolean;\n} = {}) {\n return isDragging ? \"none\" : DOCK_MEDIA_VOLUME_THUMB_POSITION_TRANSITION;\n}\n\nfunction getDockSurfaceStackScale(surfacePhase?: string | null): number {\n if (surfacePhase === DOCK_SURFACE_PHASE.DISMISSING_ACTION) {\n return DOCK_SURFACE_STACK_SCALE.OPEN_ANTICIPATION_COMPRESS;\n }\n if (surfacePhase === DOCK_SURFACE_PHASE.CLOSING_ANTICIPATION) {\n return DOCK_SURFACE_STACK_SCALE.CLOSE_ANTICIPATION_COMPRESS;\n }\n return DOCK_SURFACE_STACK_SCALE.REST;\n}\n\nexport function getDockStackTransformTransition(\n surfacePhase: string | null | undefined,\n fallbackTransition: Transition,\n) {\n if (surfacePhase === DOCK_SURFACE_PHASE.EXPANDING_BODY) {\n return DOCK_SURFACE_STACK_ARRIVAL_TRANSITION;\n }\n if (\n surfacePhase === DOCK_SURFACE_PHASE.DISMISSING_ACTION ||\n surfacePhase === DOCK_SURFACE_PHASE.CLOSING_ANTICIPATION\n ) {\n return DOCK_SURFACE_ANTICIPATION_HIDE_TRANSITION;\n }\n return fallbackTransition;\n}\n\nexport function getDockStackAnimateProps({\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 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(surfacePhase),\n ),\n opacity: isFullscreen ? 0 : 1,\n boxShadow: isSurfaceActive\n ? DOCK_STACK_ELEVATION.ELEVATED\n : DOCK_STACK_ELEVATION.REST,\n pointerEvents: isFullscreen ? (\"none\" as const) : (\"auto\" as const),\n };\n}\n\nexport function getDockCardDelay({\n expanded = false,\n isStackHovered = false,\n position = 0,\n}: {\n expanded?: boolean;\n isStackHovered?: boolean;\n position?: number;\n} = {}) {\n const safePosition = Math.max(0, Number(position) || 0);\n if (expanded && safePosition > 0) {\n return staggerDelay(safePosition, {\n base: DOCK_STAGGER_TIMINGS.EXPAND,\n cap: 0.16,\n });\n }\n if (isStackHovered && safePosition > 0) {\n return staggerDelay(safePosition - 1, {\n base: DOCK_STAGGER_TIMINGS.PEEK,\n cap: 0.064,\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 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 if (!motionValues) return {};\n const safePosition = Math.max(0, Number(position) || 0);\n const isHoveredOffset =\n !expanded && isStackHovered && safePosition > 0 && !isSurfaceActive;\n const peekProgress = Math.min(safePosition / 3, 1);\n const peekOffset = DOCK_TIERS.MICRO.distance * (0.85 + peekProgress * 0.35);\n const peekScale = DOCK_TIERS.MICRO.scaleDelta * (1 - peekProgress * 0.25);\n const y = isHoveredOffset\n ? motionValues.y - safePosition * peekOffset\n : motionValues.y;\n const scale = isHoveredOffset\n ? motionValues.scale * (1 + peekScale)\n : motionValues.scale;\n\n return {\n transform: toGpuTransform(y, scale),\n opacity: motionValues.opacity,\n };\n}\n\nexport function getDockItemTransition({\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 const safePosition = Math.max(0, Number(position) || 0);\n const baseTransition = expanded\n ? DOCK_CARD_SPRING\n : isStackHovered && safePosition > 0\n ? DOCK_PEEK_TRANSITION\n : DOCK_CARD_TRANSITION;\n return {\n ...baseTransition,\n delay: Number(delay) || 0,\n };\n}\n\nexport function getDockItemExitValues({\n motionValues,\n position = 0,\n}: {\n motionValues?: DockItemMotionValues;\n position?: number;\n} = {}) {\n const safePosition = Math.max(0, Number(position) || 0);\n const targetY =\n motionValues && Number.isFinite(motionValues.y)\n ? motionValues.y\n : safePosition * DOCK_CARD_DIMENSIONS.collapsedY;\n const targetScale =\n motionValues && Number.isFinite(motionValues.scale)\n ? motionValues.scale * 0.98\n : 0.98 - Math.min(safePosition * 0.008, 0.024);\n\n return {\n opacity: 0,\n transform: toGpuTransform(targetY, targetScale),\n transition: {\n ...DOCK_CARD_COLLAPSE_TRANSITION,\n },\n };\n}\n\nexport function getDockCardContentAnimateProps({\n expanded = false,\n position = 0,\n isExtensionShelf = false,\n}: {\n expanded?: boolean;\n position?: number;\n isExtensionShelf?: boolean;\n} = {}) {\n const isHidden = !expanded && position > 0 && !isExtensionShelf;\n return {\n opacity: isHidden ? 0 : 1,\n transform: toGpuTransform(\n isHidden ? DOCK_TIERS.STANDARD.distance * 0.35 : 0,\n isHidden ? 1 - DOCK_TIERS.MICRO.scaleDelta : 1,\n ),\n };\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} from \"../types\";\nimport { normalizeSurfaceFlowSnapshot, createDockScheduler } from \"../utils\";\nimport { DOCK_SURFACE_PHASE, DOCK_LIFECYCLE } from \"../constants\";\nimport { DOCK_SURFACE_CHOREOGRAPHY_TIMINGS } from \"../motion\";\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\nfunction createScheduledTransition(\n delayMs: number,\n label: string,\n): SurfaceTransitionEffect {\n return {\n delayMs: Math.max(0, Number(delayMs) || 0),\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): 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 holdMs = event.skipActionDismiss\n ? DOCK_SURFACE_CHOREOGRAPHY_TIMINGS.ANTICIPATION_LEAD_MS\n : DOCK_SURFACE_CHOREOGRAPHY_TIMINGS.ACTION_DISMISS_MS -\n DOCK_SURFACE_CHOREOGRAPHY_TIMINGS.ACTION_DISMISS_OVERLAP_MS;\n const effects = isStacked\n ? [Object.freeze({ surfaceId, type: SURFACE_TRANSITION_EFFECTS.MOUNT })]\n : [createScheduledTransition(holdMs, \"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 DOCK_SURFACE_CHOREOGRAPHY_TIMINGS.ANTICIPATION_LEAD_MS,\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 DOCK_SURFACE_CHOREOGRAPHY_TIMINGS.ANTICIPATION_LEAD_MS,\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 DOCK_SURFACE_CHOREOGRAPHY_TIMINGS.BODY_EXIT_MS +\n DOCK_SURFACE_CHOREOGRAPHY_TIMINGS.BODY_COLLAPSE_SETTLE_MS,\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 DOCK_SURFACE_CHOREOGRAPHY_TIMINGS.BODY_ENTER_MS,\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 DOCK_SURFACE_CHOREOGRAPHY_TIMINGS.HEADER_RESTORE_MS > 0\n ) {\n return createTransitionResult(\n freezeSurfaceTransitionState({\n ...state,\n phase: DOCK_SURFACE_PHASE.RESTORING_HEADER,\n }),\n [\n createScheduledTransition(\n DOCK_SURFACE_CHOREOGRAPHY_TIMINGS.HEADER_RESTORE_MS,\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}: {\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} = {}) {\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);\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 use,\n useCallback,\n useMemo,\n useEffect,\n useRef,\n useInsertionEffect,\n useState,\n type RefObject,\n type CSSProperties,\n} from \"react\";\nimport { usePathname } from \"next/navigation\";\nimport { useStore, useIsomorphicLayoutEffect } from \"@/hooks\";\nimport { useModuleRegistration, type RegistryMetadata } from \"@/kernel\";\nimport { createStore, shallowEqual, cn } from \"@/utils\";\nimport { useModuleTheme } from \"@/theme\";\nimport { Z_INDEX } from \"@/tokens\";\nimport {\n DockContext,\n EMPTY_DOCK_STATE,\n useDockActions,\n useDockHeight,\n useDockSelector,\n useDockState,\n useOptionalDockActions,\n useOptionalDockState,\n} from \"./context\";\nimport {\n isSamePath,\n blurActiveElement,\n focusDockElement,\n getDockFocusableElements,\n isEditableDockTarget,\n isInteractiveTarget,\n shouldRestoreDockFocus,\n isInlineActionPathMatch,\n getImageIconStyle,\n getItemKey,\n getItemMeasurementKey,\n getLineClampStyle,\n getRouteMeasurementKey,\n resolveDockActionClass,\n splitStyle,\n toObject,\n} from \"./utils\";\nimport {\n type DockBannerInput,\n type DockPageConfig,\n type DockState,\n type DockReturnHandoff,\n type DockActions,\n type DockItem,\n type ContainerHeightOptions,\n type DockItemCardPropsOptions,\n type DockStyleSectionName,\n type DockVisualStyle,\n type DockVisualStyleInput,\n type DockVisualStyleSection,\n type DockVisualStyleSections,\n type UseDockHeightControllerOptions,\n} from \"./types\";\nimport {\n DOCK_STYLE_SECTIONS,\n HEIGHT_EPSILON,\n DOCK_CARD_LAYOUT,\n DOCK_HEIGHT_BUFFER,\n DOCK_SURFACE_PHASE,\n VIEWPORT_MARGIN,\n dockTheme,\n} from \"./constants\";\n\nexport {\n DockContext,\n useDockActions,\n useDockHeight,\n useDockSelector,\n useDockState,\n useOptionalDockActions,\n useOptionalDockState,\n};\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\nexport { blurActiveElement, focusDockElement, shouldRestoreDockFocus };\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 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 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\nexport {\n getImageIconStyle,\n getItemKey,\n getItemMeasurementKey,\n getLineClampStyle,\n getRouteMeasurementKey,\n splitStyle,\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 getViewportMaxHeight(): number {\n if (typeof window === \"undefined\") return Infinity;\n return window.innerHeight - VIEWPORT_MARGIN;\n}\n\nfunction 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\nfunction 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> | ResizeObserverSize | 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 if (entry?.contentRect?.height != null)\n return Math.round(entry.contentRect.height);\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\nfunction 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 const surfacePhaseRef = useRef(surfacePhase);\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 useInsertionEffect(() => {\n isHudRef.current = isHud;\n surfacePhaseRef.current = surfacePhase;\n }, [isHud, surfacePhase]);\n\n const applyHeight = useCallback(() => {\n if (rafRef.current !== null) {\n cancelAnimationFrame(rafRef.current);\n rafRef.current = null;\n }\n\n const { content } = heightRef.current;\n const currentPhase = surfacePhaseRef.current;\n const isLockedToBaseHeight =\n currentPhase === DOCK_SURFACE_PHASE.DISMISSING_ACTION ||\n currentPhase === DOCK_SURFACE_PHASE.COLLAPSING_BODY ||\n currentPhase === DOCK_SURFACE_PHASE.RESTORING_HEADER;\n\n const computedContentHeight = isLockedToBaseHeight ? 0 : content;\n const height = getContainerHeight({\n cardContentHeight: computedContentHeight,\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\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 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\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\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 createContext,\n isValidElement,\n use,\n useMemo,\n useRef,\n useSyncExternalStore,\n useId,\n useState,\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 DockScheduledTaskId,\n type DockScheduler,\n type DockSurfaceActions,\n type SurfaceFlowDefinition,\n type SurfaceFlowDefinitionInput,\n type SurfaceFlowHandle,\n type SurfaceResult,\n type SurfaceStackEntry,\n type ActiveSurfaceStep,\n type DockComponentProps,\n type DockItem,\n type NormalizedSurfaceDefinition,\n type NormalizedSurfaceExtension,\n type OpenSurfaceOptions,\n type RenderableSurfaceEntry,\n type SurfaceBuilderDefinition,\n type SurfaceBuilderFactory,\n type SurfaceDescriptor,\n type SurfaceFlowContextValue,\n type SurfaceFlowSession,\n type SurfaceFlowState,\n type SurfaceInput,\n type SurfaceStep,\n type SurfaceViewModelOptions,\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 \"../utils\";\nimport { useDockFocusTrap } from \"../hooks\";\nimport {\n DOCK_SURFACE_BODY_ENTER_TRANSITION,\n DOCK_SURFACE_BODY_EXIT_TRANSITION,\n DOCK_SURFACE_BODY_STEP_TRANSITION,\n DOCK_SURFACE_DRAG_INTERPOLATION,\n DOCK_SURFACE_DRAG_THRESHOLDS,\n dockSurfaceBodyRole,\n} from \"../motion\";\nimport { report } from \"@/utils\";\n\n/* eslint-disable react-hooks/immutability -- the surface shell forwards its element through a caller-supplied ref */\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 || \"global\";\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 id,\n order = 0,\n unstyled = false,\n}: {\n align?: string;\n children?: ReactNode;\n className?: string;\n id?: string;\n order?: number;\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 useEffect(() => {\n if (!store) return;\n store.setExtension(surfaceId, {\n align,\n className,\n content: children,\n id: effectiveId,\n order,\n unstyled,\n });\n });\n\n useEffect(() => {\n return () => {\n if (store) store.removeExtension(surfaceId, effectiveId);\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 || \"global\";\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 && 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 || \"global\";\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\nconst DRAG_RANGE = [...DOCK_SURFACE_DRAG_INTERPOLATION.DRAG_RANGE];\n\nconst OPACITY_RANGE = [...DOCK_SURFACE_DRAG_INTERPOLATION.OPACITY_RANGE];\n\nconst SCALE_RANGE = [...DOCK_SURFACE_DRAG_INTERPOLATION.SCALE_RANGE];\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 dragY = useMotionValue(0);\n const dragOpacity = useTransform(dragY, DRAG_RANGE, OPACITY_RANGE);\n const dragScale = useTransform(dragY, DRAG_RANGE, SCALE_RANGE);\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 () => ({\n hidden: dockSurfaceBodyRole.hidden,\n visible: {\n ...dockSurfaceBodyRole.visible,\n transition:\n surfacePhase === DOCK_SURFACE_PHASE.EXPANDING_BODY\n ? DOCK_SURFACE_BODY_ENTER_TRANSITION\n : DOCK_SURFACE_BODY_STEP_TRANSITION,\n },\n exit: {\n ...dockSurfaceBodyRole.exit,\n transition: DOCK_SURFACE_BODY_EXIT_TRANSITION,\n },\n }),\n [surfacePhase],\n );\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","\"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 }) => boolean;\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 { useCallback, useEffect, useMemo, useReducer, useRef } from \"react\";\nimport {\n DOCK_TRANSACTION_EVENTS,\n DOCK_TRANSACTION_REASON,\n DOCK_TRANSACTION_STATUS,\n DOCK_TRANSACTION_TIMEOUT_MS,\n} from \"../constants\";\nimport { isSamePath } from \"../utils\";\nimport {\n type DockTransaction,\n type DockTransactionAction,\n type DockTransactionEvent,\n type DockTransactionState,\n} from \"../types\";\n\nfunction createDockTransactionState(): DockTransactionState {\n return { active: null, last: null };\n}\n\nfunction createDockTransaction({\n from = \"\",\n id,\n source = \"dock\",\n startedAt = Date.now(),\n to = \"\",\n}: {\n from?: string;\n id: number;\n source?: string;\n startedAt?: number;\n to?: string;\n}): DockTransaction {\n return {\n from: String(from || \"\"),\n id,\n source,\n startedAt,\n status: DOCK_TRANSACTION_STATUS.PENDING as string,\n to: String(to || \"\"),\n };\n}\n\nfunction settleDockTransaction(\n transaction: DockTransaction,\n action: Omit<DockTransactionAction, \"type\">,\n status: string,\n): DockTransaction {\n return {\n ...transaction,\n endedAt: action.endedAt ?? Date.now(),\n error: action.error ?? null,\n reason: action.reason ?? null,\n status,\n };\n}\n\nconst TRANSACTION_STATUS_MAP: Record<string, string> = Object.freeze({\n [DOCK_TRANSACTION_EVENTS.COMPLETE]: DOCK_TRANSACTION_STATUS.COMPLETED,\n [DOCK_TRANSACTION_EVENTS.CANCEL]: DOCK_TRANSACTION_STATUS.CANCELLED,\n [DOCK_TRANSACTION_EVENTS.FAIL]: DOCK_TRANSACTION_STATUS.FAILED,\n [DOCK_TRANSACTION_EVENTS.TIME_OUT]: DOCK_TRANSACTION_STATUS.TIMED_OUT,\n});\n\nfunction dockTransactionReducer(\n state: DockTransactionState,\n action: DockTransactionAction | null | undefined,\n): DockTransactionState {\n if (action?.type === DOCK_TRANSACTION_EVENTS.START) {\n const nextTransaction = action.transaction;\n if (nextTransaction?.id == null) return state;\n\n const supersededTransaction = state.active\n ? settleDockTransaction(\n state.active,\n { reason: DOCK_TRANSACTION_REASON.SUPERSEDED },\n DOCK_TRANSACTION_STATUS.CANCELLED,\n )\n : state.last;\n\n return { active: nextTransaction, last: supersededTransaction };\n }\n\n const newStatus = action ? TRANSACTION_STATUS_MAP[action.type] : undefined;\n if (newStatus && action && state.active && state.active.id === action.id) {\n return {\n active: null,\n last: settleDockTransaction(state.active, action, newStatus),\n };\n }\n\n return state;\n}\n\nexport function useDockTransactions({\n onTransactionEvent = null,\n onTimeout = null,\n timeoutMs = DOCK_TRANSACTION_TIMEOUT_MS,\n}: {\n onTransactionEvent?: ((event: DockTransactionEvent) => void) | null;\n onTimeout?: ((transaction: DockTransaction) => void) | null;\n timeoutMs?: number;\n} = {}) {\n const [state, dispatch] = useReducer(\n dockTransactionReducer,\n undefined,\n createDockTransactionState,\n );\n\n const activeTransactionRef = useRef<DockTransaction | null>(null);\n const nextTransactionIdRef = useRef(0);\n const timeoutRef = useRef<ReturnType<typeof setTimeout> | null>(null);\n\n const onTimeoutRef = useRef(onTimeout);\n const onTransactionEventRef = useRef(onTransactionEvent);\n\n useEffect(() => {\n onTimeoutRef.current = onTimeout;\n }, [onTimeout]);\n useEffect(() => {\n onTransactionEventRef.current = onTransactionEvent;\n }, [onTransactionEvent]);\n\n const clearTransactionTimeout = useCallback(() => {\n if (timeoutRef.current !== null) {\n clearTimeout(timeoutRef.current);\n timeoutRef.current = null;\n }\n }, []);\n\n const settleTransaction = useCallback(\n (\n id: number,\n type: string,\n details: Pick<DockTransactionAction, \"error\" | \"reason\"> = {},\n ) => {\n const activeTransaction = activeTransactionRef.current;\n if (!activeTransaction || activeTransaction.id !== id) return false;\n\n clearTransactionTimeout();\n activeTransactionRef.current = null;\n\n const event = { ...details, endedAt: Date.now(), id, type };\n const settledTransaction = settleDockTransaction(\n activeTransaction,\n event,\n TRANSACTION_STATUS_MAP[type] || DOCK_TRANSACTION_STATUS.TIMED_OUT,\n );\n\n dispatch(event);\n onTransactionEventRef.current?.({\n transaction: settledTransaction,\n type,\n });\n return true;\n },\n [clearTransactionTimeout],\n );\n\n const beginTransaction = useCallback(\n ({\n from,\n source,\n to,\n }: { from?: string; source?: string; to?: string } = {}) => {\n const activeTransaction = activeTransactionRef.current;\n if (activeTransaction) {\n settleTransaction(\n activeTransaction.id,\n DOCK_TRANSACTION_EVENTS.CANCEL,\n { reason: DOCK_TRANSACTION_REASON.SUPERSEDED },\n );\n }\n\n const transaction = createDockTransaction({\n from,\n id: ++nextTransactionIdRef.current,\n source,\n to,\n });\n activeTransactionRef.current = transaction;\n\n dispatch({ transaction, type: DOCK_TRANSACTION_EVENTS.START });\n onTransactionEventRef.current?.({\n transaction,\n type: DOCK_TRANSACTION_EVENTS.START,\n });\n\n const safeTimeout = Number(timeoutMs);\n if (Number.isFinite(safeTimeout) && safeTimeout > 0) {\n timeoutRef.current = setTimeout(() => {\n if (\n !settleTransaction(\n transaction.id,\n DOCK_TRANSACTION_EVENTS.TIME_OUT,\n { reason: DOCK_TRANSACTION_REASON.TIME_OUT },\n )\n )\n return;\n onTimeoutRef.current?.(transaction);\n }, safeTimeout);\n }\n return transaction;\n },\n [settleTransaction, timeoutMs],\n );\n\n const completeTransaction = useCallback(\n (id: number) => settleTransaction(id, DOCK_TRANSACTION_EVENTS.COMPLETE),\n [settleTransaction],\n );\n const cancelTransaction = useCallback(\n (id: number, reason: string | null = null) =>\n settleTransaction(id, DOCK_TRANSACTION_EVENTS.CANCEL, { reason }),\n [settleTransaction],\n );\n const cancelActiveTransaction = useCallback(\n (reason: string | null = null) =>\n activeTransactionRef.current\n ? cancelTransaction(activeTransactionRef.current.id, reason)\n : false,\n [cancelTransaction],\n );\n const failTransaction = useCallback(\n (id: number, error: unknown) =>\n settleTransaction(id, DOCK_TRANSACTION_EVENTS.FAIL, { error }),\n [settleTransaction],\n );\n\n const completeTransactionForPath = useCallback(\n (pathname: string) => {\n const activeTransaction = activeTransactionRef.current;\n if (!activeTransaction || !isSamePath(activeTransaction.to, pathname))\n return false;\n return completeTransaction(activeTransaction.id);\n },\n [completeTransaction],\n );\n\n const isTransactionCurrent = useCallback(\n (id: number) => activeTransactionRef.current?.id === id,\n [],\n );\n\n useEffect(() => {\n return () => {\n clearTransactionTimeout();\n activeTransactionRef.current = null;\n };\n }, [clearTransactionTimeout]);\n\n return useMemo(\n () => ({\n activeTransaction: state.active,\n beginTransaction,\n cancelActiveTransaction,\n cancelTransaction,\n completeTransaction,\n completeTransactionForPath,\n failTransaction,\n isTransactionCurrent,\n lastTransaction: state.last,\n }),\n [\n state.active,\n state.last,\n beginTransaction,\n cancelActiveTransaction,\n cancelTransaction,\n completeTransaction,\n completeTransactionForPath,\n failTransaction,\n isTransactionCurrent,\n ],\n );\n}\n","\"use client\";\n\nimport { normalizePath } from \"@/utils\";\nimport {\n useCallback,\n useEffect,\n useMemo,\n useRef,\n useSyncExternalStore,\n} from \"react\";\nimport { usePathname, useRouter } from \"next/navigation\";\nimport { useRequiredContext } from \"@/hooks\";\nimport { globalEvents } from \"@/events\";\nimport { isSafeInternalHref, isSamePath, getDockLocationKey } from \"../utils\";\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 type DockTransaction,\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 \"../hooks\";\nimport { openDockGuardConfirmation } from \"./guards\";\nimport { useDockTransactions } from \"./transactions\";\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 }: { intentDelayMs?: number } = {},\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 (!isSafeInternalHref(href) || typeof router?.prefetch !== \"function\")\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 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, 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\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 previousLocationKeyRef = useRef(locationKey);\n\n const handleTransactionTimeout = useCallback(() => {\n clearPreparedRouteReset();\n stopLoading();\n }, [clearPreparedRouteReset, stopLoading]);\n\n const {\n activeTransaction,\n beginTransaction,\n cancelActiveTransaction,\n cancelTransaction,\n completeTransactionForPath,\n failTransaction,\n isTransactionCurrent,\n lastTransaction,\n } = useDockTransactions({\n onTimeout: handleTransactionTimeout,\n });\n\n const cancelDock = useCallback(\n (reason = \"guard\") => {\n cancelActiveTransaction(reason);\n clearPreparedRouteReset();\n closeSurface({ cancelled: true, reason, success: false });\n },\n [cancelActiveTransaction, clearPreparedRouteReset, closeSurface],\n );\n\n const commitDock = useCallback(\n ({\n from,\n href,\n routePolicy,\n source = \"dock\",\n transaction = null,\n }: {\n from: string;\n href: string;\n routePolicy: DockRoutePolicy;\n source?: string;\n transaction?: DockTransaction | null;\n }) => {\n const activeRouteTransaction =\n transaction || beginTransaction({ from, source, to: href });\n if (!isTransactionCurrent(activeRouteTransaction.id)) return false;\n\n try {\n continuity?.remember?.(from);\n blurActiveElement();\n prepareRouteReset(routePolicy);\n\n emitDockEvent(DOCK_EVENTS.NAVIGATE_START, { from, to: href });\n router.push(href);\n emitDockEvent(DOCK_EVENTS.NAVIGATE, {\n from,\n item: undefined,\n to: href,\n });\n\n if (typeof window !== \"undefined\") {\n const currentUrl = new URL(window.location.href);\n const destinationUrl = new URL(href, window.location.origin);\n\n if (\n normalizePath(currentUrl.pathname) ===\n normalizePath(destinationUrl.pathname)\n ) {\n window.requestAnimationFrame(() => {\n const currentLocKey = getDockLocationKey({\n hash: window.location.hash,\n pathname: window.location.pathname,\n search: window.location.search,\n });\n if (\n !isSamePath(currentLocKey, href) ||\n !completeTransactionForPath(currentLocKey)\n )\n return;\n\n emitDockEvent(DOCK_EVENTS.NAVIGATE_END, {\n duration: undefined,\n from,\n to: currentLocKey,\n });\n previousLocationKeyRef.current = currentLocKey;\n syncLocationKey();\n stopLoading();\n });\n }\n }\n return true;\n } catch (error) {\n clearPreparedRouteReset();\n failTransaction(activeRouteTransaction.id, error);\n stopLoading();\n report(\"Dock route transition\", error);\n return false;\n }\n },\n [\n beginTransaction,\n clearPreparedRouteReset,\n completeTransactionForPath,\n continuity,\n failTransaction,\n isTransactionCurrent,\n prepareRouteReset,\n router,\n stopLoading,\n syncLocationKey,\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 const transaction = beginTransaction({ from, source, to: href });\n\n try {\n if (!force && guards.count() > 0) {\n const guardResult = await guards.check(href, from);\n if (!isTransactionCurrent(transaction.id)) return false;\n if (guardResult.blocked) {\n cancelTransaction(transaction.id, \"guard\");\n blurActiveElement();\n openDockGuardConfirmation({\n closeSurface,\n commit: commitDock,\n from,\n href,\n message: guardResult.message,\n routePolicy,\n });\n return false;\n }\n }\n return commitDock({\n from,\n href,\n routePolicy,\n source,\n transaction,\n });\n } catch (error) {\n failTransaction(transaction.id, error);\n stopLoading();\n report(\"Dock navigation guard\", error);\n return false;\n }\n },\n [\n guards,\n beginTransaction,\n cancelTransaction,\n commitDock,\n failTransaction,\n isTransactionCurrent,\n closeSurface,\n locationKey,\n stopLoading,\n ],\n );\n\n useEffect(() => {\n if (previousLocationKeyRef.current === locationKey) return;\n emitDockEvent(DOCK_EVENTS.NAVIGATE_END, {\n duration: undefined,\n from: previousLocationKeyRef.current,\n to: locationKey,\n });\n completeTransactionForPath(locationKey);\n previousLocationKeyRef.current = locationKey;\n stopLoading();\n }, [completeTransactionForPath, locationKey, 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 { Icon } from \"@/atoms\";\nimport { useMotionValue, useSpring } from \"motion/react\";\nimport {\n isInlineActionPathMatch,\n isValidBannerUrl,\n resolveDockHeaderKey,\n} from \"./utils\";\nimport {\n DockCardBannerProps,\n DockCardItemProps,\n type DockActionDescriptor,\n type DockItem,\n type DockBadgeState,\n type DockIconSource,\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 shouldRenderInlineAction,\n getItemMeasurementKey,\n getRouteMeasurementKey,\n resolveDockVisualStyle,\n getDockItemCardProps,\n useDockTheme,\n useElementHeight,\n} from \"./hooks\";\nimport { useDockHasMedia, useDockMedia, useDockMediaActions } from \"./context\";\nimport {\n DOCK_SURFACE_BODY_ENTER_TRANSITION,\n getDockCardDelay,\n dockHeaderRestoreVariants,\n DOCK_SCRUBBER_TOOLTIP_SPRING,\n} from \"./motion\";\nimport { resolveDockRoutePolicy, useRoutePrefetch } from \"./routing/navigation\";\n\n/* eslint-disable react-hooks/immutability, react-hooks/set-state-in-effect -- imperative media-element control and ref forwarding sit outside React Compiler's model */\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\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 { action, isLoading, isOverlay, path, isStatus, isSurface } = item;\n const hasMedia = useDockHasMedia();\n\n return useMemo(() => {\n if (isLoading || (isOverlay && !isStatus) || isSurface) 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 isSurface,\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 { cancelRoutePrefetch, prefetchRoute } = useRoutePrefetch(router);\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 renderedActionSlot =\n (item.isSurface && !isHeaderRestoring) || isTopHudActive\n ? null\n : actionSlot;\n const hasNestedInteractiveContent = Boolean(\n renderedActionSlot || (item.isSurface && !isHeaderRestoring),\n );\n const headerRestoreVariants = useMemo(\n () => ({\n hidden: dockHeaderRestoreVariants.hidden,\n visible: {\n ...dockHeaderRestoreVariants.visible,\n transition:\n item.surfacePhase === DOCK_SURFACE_PHASE.COLLAPSING_BODY\n ? DOCK_SURFACE_BODY_ENTER_TRANSITION\n : dockHeaderRestoreVariants.visible.transition,\n },\n exit: dockHeaderRestoreVariants.exit,\n }),\n [item.surfacePhase],\n );\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({ expanded, isStackHovered, position }),\n [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 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 smoothHoverX = useSpring(hoverX, DOCK_SCRUBBER_TOOLTIP_SPRING);\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 \"./utils\";\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 isValidComponentType,\n resolveComponentType,\n resolveRenderableContent,\n} from \"../utils\";\nimport { normalizeExtensions } from \"./definition\";\nimport {\n type ActiveSurfaceStep,\n type DockComponentProps,\n type DockItem,\n type NormalizedSurfaceDefinition,\n type NormalizedSurfaceExtension,\n type OpenSurfaceOptions,\n type RenderableSurfaceEntry,\n type SurfaceBuilderDefinition,\n type SurfaceBuilderFactory,\n type SurfaceDescriptor,\n type SurfaceFlowContextValue,\n type SurfaceFlowDefinition,\n type SurfaceFlowDefinitionInput,\n type SurfaceFlowSession,\n type SurfaceFlowState,\n type SurfaceInput,\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 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 \"../utils\";\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 StatusState,\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 \"../utils\";\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 { useMemo, 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 {\n toSearchableText,\n isPathPrefix,\n isSamePath,\n resolveActiveIndex,\n} from \"../utils\";\nimport { useModuleTheme } from \"@/theme\";\nimport { DOCK_ATTENTION_KIND, dockTheme } 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\nfunction resolveBaseActiveItem({\n rawItems,\n dockItems,\n pathname,\n isNotFoundPage,\n}: {\n rawItems: DockItem[];\n dockItems: DockItem[];\n pathname: string;\n isNotFoundPage: boolean;\n}): DockItem | null {\n const normalizedPathname = normalizePath(pathname);\n\n const selectedDataSource = dockItems.find(\n (item) => item.isDataSource && item.isSelected,\n );\n if (selectedDataSource) return selectedDataSource;\n\n if (isNotFoundPage)\n return 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 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 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 return (\n dockItems.find(\n (entry) =>\n isSamePath(entry?.path, prefixMatchedRawItem?.path) ||\n (entry?.name && entry.name === prefixMatchedRawItem?.name),\n ) || prefixMatchedRawItem\n );\n }\n return rawItems[0] || null;\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}: {\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}): DockItem | null {\n const baseActiveItem = resolveBaseActiveItem({\n rawItems,\n dockItems,\n pathname,\n isNotFoundPage,\n });\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(overridePathname?: string) {\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 activeItem = useMemo(\n () =>\n resolveActiveItem({\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 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 useInsertionEffect,\n useReducer,\n} from \"react\";\nimport { usePathname, useRouter } from \"next/navigation\";\nimport { useRequiredContext, useClickOutside, useIsFullscreenStateActive } 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 isSameItem,\n removeAncestorDuplicates,\n removeInactiveLoadingItems,\n reorderItemsWithActiveFirst,\n replaceActiveItem,\n} from \"../utils\";\nimport {\n type DockItem,\n type DockNavigateOptions,\n type DockOperationInput,\n type DockActions,\n type DockRouteSnapshot,\n type DockViewBridge,\n} from \"../types\";\nimport {\n useDockRouteReset,\n getIsItemActive,\n getItemKey,\n useDockHeightController,\n useDockViewport,\n useDockKeyboard,\n} from \"../hooks\";\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 {\n DOCK_CARD_EXPAND_TRANSITION,\n DOCK_STACK_TRANSITION,\n DOCK_SURFACE_RESIZE_TRANSITION,\n getDockSurfaceResizeTransition,\n} 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 items = dockItems || [];\n const activeIndex = findDockItemIndex(items, activeItem ?? null, pathname);\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 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 useInsertionEffect(() => {\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 // eslint-disable-next-line react-hooks/refs\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 dockStackTransition = useMemo(() => {\n if (activeItem?.surfacePhase === DOCK_SURFACE_PHASE.EXPANDING_BODY) {\n return DOCK_CARD_EXPAND_TRANSITION;\n }\n if (\n activeItem?.surfacePhase === DOCK_SURFACE_PHASE.OPEN ||\n activeItem?.surfacePhase === DOCK_SURFACE_PHASE.CLOSING_ANTICIPATION\n ) {\n return surfaceResizeDistance > 0\n ? getDockSurfaceResizeTransition(surfaceResizeDistance)\n : DOCK_SURFACE_RESIZE_TRANSITION;\n }\n if (\n activeItem?.surfacePhase === DOCK_SURFACE_PHASE.COLLAPSING_BODY ||\n activeItem?.surfacePhase === DOCK_SURFACE_PHASE.RESTORING_HEADER\n ) {\n return DOCK_CARD_EXPAND_TRANSITION;\n }\n return expanded ? DOCK_CARD_EXPAND_TRANSITION : DOCK_STACK_TRANSITION;\n }, [activeItem?.surfacePhase, expanded, surfaceResizeDistance]);\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 type CSSProperties,\n type ComponentType,\n type ReactElement,\n type ReactNode,\n type ReactPortal,\n} from \"react\";\nimport { motion, AnimatePresence, MotionConfig } 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_FADE_TRANSITION,\n getDockActionMotionProps,\n DOCK_BADGE_TRANSITION,\n dockBadgeVariants,\n dockCommandBarSwapVariants,\n DOCK_TEXT_ENTER_TRANSITION,\n getDockDescriptionVariants,\n dockFadeVariants,\n DOCK_ICON_TRANSITION,\n dockIconVariants,\n DOCK_HEADER_SWAP_TRANSITION,\n dockHeaderSwapVariants,\n DOCK_SCRUBBER_TOOLTIP_TRANSITION,\n dockScrubberTooltipVariants,\n dockSurfaceControlsActionVariants,\n dockSurfaceControlsBackVariants,\n dockSurfaceControlsCloseVariants,\n dockSurfaceControlsContainerVariants,\n DOCK_SURFACE_DRAG_CONSTRAINTS,\n DOCK_SURFACE_DRAG_ELASTIC,\n dockSurfaceDragTransformTemplate,\n DOCK_HUD_TRANSITION,\n DOCK_SKELETON_PULSE_CLASS,\n dockHudVariants,\n DOCK_ACTION_DISMISS_TRANSITION,\n DOCK_BUTTON_TRANSITION,\n DOCK_SURFACE_ANTICIPATION_HIDE_TRANSITION,\n DOCK_TAP_SCALE,\n getDockCardContentAnimateProps,\n getDockItemAnimateValues,\n getDockItemExitValues,\n getDockItemTransition,\n dockActionDismissVariants,\n dockExtensionShelfVariants,\n textCrossfadeVariants,\n getDockMediaVolumeFillTransition,\n getDockMediaVolumeThumbAnimateProps,\n getDockMediaVolumeThumbPositionTransition,\n DOCK_CARD_EXPAND_TRANSITION,\n dockBreadcrumbsVariants,\n getDockBackdropTransition,\n getDockStackAnimateProps,\n getDockStackTransformTransition,\n dockBackdropVariants,\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 useDockActionClass,\n useDockActions,\n useDockTheme,\n} from \"./hooks\";\nimport { isValidComponentType, formatMediaTime } from \"./utils\";\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 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={DOCK_FADE_TRANSITION}\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 theme = useDockTheme();\n return (\n <Tooltip\n className={theme.slots.commandTooltip}\n text={action.tooltip ?? undefined}\n >\n <motion.button\n {...getDockActionMotionProps({ 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={dockBadgeVariants}\n initial=\"hidden\"\n animate=\"visible\"\n exit=\"exit\"\n transition={DOCK_BADGE_TRANSITION}\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 { 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={dockCommandBarSwapVariants}\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 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={getDockDescriptionVariants(targetOpacity)}\n initial=\"hidden\"\n animate=\"visible\"\n exit=\"exit\"\n transition={DOCK_TEXT_ENTER_TRANSITION}\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 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={dockFadeVariants}\n initial=\"hidden\"\n animate=\"visible\"\n exit=\"exit\"\n transition={DOCK_TEXT_ENTER_TRANSITION}\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 theme = useDockTheme();\n return (\n <AnimatePresence mode=\"wait\">\n {badge?.visible ? (\n <motion.div\n key={badge.value}\n variants={dockBadgeVariants}\n initial=\"hidden\"\n animate=\"visible\"\n exit=\"exit\"\n transition={DOCK_BADGE_TRANSITION}\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 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={dockBadgeVariants}\n initial=\"hidden\"\n animate=\"visible\"\n exit=\"exit\"\n transition={DOCK_BADGE_TRANSITION}\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={dockBadgeVariants}\n initial=\"hidden\"\n animate=\"visible\"\n exit=\"exit\"\n transition={DOCK_BADGE_TRANSITION}\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 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={dockIconVariants}\n initial=\"hidden\"\n animate=\"visible\"\n exit=\"exit\"\n transition={DOCK_ICON_TRANSITION}\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()}\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 { 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={dockHeaderSwapVariants}\n initial=\"hidden\"\n animate=\"visible\"\n exit=\"exit\"\n transition={DOCK_HEADER_SWAP_TRANSITION}\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 {\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={dockScrubberTooltipVariants}\n initial=\"hidden\"\n animate=\"visible\"\n exit=\"exit\"\n transition={DOCK_SCRUBBER_TOOLTIP_TRANSITION}\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 { 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={dockSurfaceControlsContainerVariants}\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={dockSurfaceControlsActionVariants}\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={dockSurfaceControlsBackVariants}\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={dockSurfaceControlsCloseVariants}\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 {\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={DOCK_SURFACE_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 theme = useDockTheme();\n return (\n <div className={theme.slots.loading}>\n <div className={cn(theme.slots.loadingIcon, DOCK_SKELETON_PULSE_CLASS)} />\n <div className={theme.slots.loadingText}>\n <div\n className={cn(theme.slots.loadingTitle, DOCK_SKELETON_PULSE_CLASS)}\n />\n <div\n className={cn(\n theme.slots.loadingDescription,\n DOCK_SKELETON_PULSE_CLASS,\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 isHudActive = false,\n hud = null,\n clearHud = null,\n contextCommands = [],\n pathname,\n}: StandardItemContentProps) {\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={dockHudVariants}\n initial=\"hidden\"\n animate=\"visible\"\n exit=\"exit\"\n transition={DOCK_HUD_TRANSITION}\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={dockFadeVariants}\n initial={false}\n animate=\"visible\"\n exit=\"exit\"\n transition={DOCK_TEXT_ENTER_TRANSITION}\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 {footerNode ? (\n <div\n key=\"dock-surface-footer\"\n className={theme.slots.cardFooter}\n style={theme.styles.cardFooter}\n >\n {footerNode}\n </div>\n ) : null}\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 {\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 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 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({\n motionValues,\n expanded,\n isStackHovered,\n isSurfaceActive,\n position,\n })}\n transition={getDockItemTransition({\n expanded,\n isStackHovered,\n position,\n delay: cardDelay,\n })}\n exit={getDockItemExitValues({ 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({\n motionValues,\n expanded,\n isStackHovered,\n isSurfaceActive,\n position,\n })}\n transition={getDockItemTransition({\n expanded,\n isStackHovered,\n position,\n delay: cardDelay,\n })}\n whileTap={\n !item.isOverlay && !item.isStatus && !isCollapsedBackgroundCard\n ? {\n scale: (motionValues?.scale || 1) * DOCK_TAP_SCALE,\n transition: DOCK_BUTTON_TRANSITION,\n }\n : undefined\n }\n exit={getDockItemExitValues({ 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({\n expanded,\n position,\n isExtensionShelf,\n })}\n transition={DOCK_TEXT_ENTER_TRANSITION}\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 {item.isSurface &&\n item.surfacePhase !== DOCK_SURFACE_PHASE.DISMISSING_ACTION &&\n item.surfacePhase !== DOCK_SURFACE_PHASE.COLLAPSING_BODY &&\n item.surfacePhase !== DOCK_SURFACE_PHASE.RESTORING_HEADER ? (\n <motion.div\n key=\"surface-content-layer\"\n variants={dockHeaderSwapVariants}\n initial=\"hidden\"\n animate=\"visible\"\n exit=\"exit\"\n transition={DOCK_HEADER_SWAP_TRANSITION}\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={dockExtensionShelfVariants}\n initial=\"hidden\"\n animate=\"visible\"\n exit=\"exit\"\n transition={DOCK_HEADER_SWAP_TRANSITION}\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=\"exit\"\n transition={\n item.surfacePhase === DOCK_SURFACE_PHASE.DISMISSING_ACTION\n ? DOCK_SURFACE_ANTICIPATION_HIDE_TRANSITION\n : DOCK_HEADER_SWAP_TRANSITION\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 <AnimatePresence mode=\"popLayout\" initial={false}>\n {item.surfacePhase ===\n DOCK_SURFACE_PHASE.DISMISSING_ACTION ? (\n <motion.div\n key=\"dock-action-component-dismiss\"\n variants={dockActionDismissVariants}\n initial=\"visible\"\n animate=\"exit\"\n exit=\"exit\"\n transition={DOCK_ACTION_DISMISS_TRANSITION}\n className={theme.slots.cardAction}\n onClick={stopPropagationOnly}\n >\n <Suspense>{renderedActionNode}</Suspense>\n </motion.div>\n ) : (\n <motion.div\n key=\"dock-action-component\"\n variants={textCrossfadeVariants}\n initial=\"hidden\"\n animate=\"visible\"\n exit=\"exit\"\n transition={DOCK_FADE_TRANSITION}\n className={theme.slots.cardAction}\n onClick={stopPropagationOnly}\n >\n <Suspense>{renderedActionNode}</Suspense>\n </motion.div>\n )}\n </AnimatePresence>\n ) : null\n }\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 {\n handleVolumeKeyDown,\n videoElement,\n toggleLoop,\n setVideoMuted,\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()}\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()}\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()}\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({ 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({\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({\n isDragging: isDraggingVolume,\n })}\n transition={DOCK_BUTTON_TRANSITION}\n style={{\n left: `${effectiveVolume * 100}%`,\n transition: getDockMediaVolumeThumbPositionTransition({\n isDragging: isDraggingVolume,\n }),\n }}\n />\n </div>\n </motion.div>\n\n {isPipSupported && (\n <motion.button\n {...getDockActionMotionProps()}\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()}\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 { 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={dockBreadcrumbsVariants}\n initial=\"hidden\"\n animate=\"visible\"\n exit=\"exit\"\n transition={DOCK_CARD_EXPAND_TRANSITION}\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 {\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 <MotionConfig reducedMotion=\"user\">\n <>\n <AnimatePresence>\n {isBackdropVisible && (\n <motion.div\n key=\"dock-backdrop\"\n variants={dockBackdropVariants}\n initial=\"hidden\"\n animate=\"visible\"\n exit=\"exit\"\n transition={getDockBackdropTransition({\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({\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(\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 </MotionConfig>\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 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={textCrossfadeVariants}\n initial=\"hidden\"\n animate=\"visible\"\n transition={DOCK_FADE_TRANSITION}\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 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={textCrossfadeVariants}\n initial=\"hidden\"\n animate=\"visible\"\n transition={DOCK_FADE_TRANSITION}\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 theme = useDockTheme();\n const actionClass = useDockActionClass();\n const router = useRouter();\n const { navigate } = useDockActions();\n return (\n <motion.div\n variants={textCrossfadeVariants}\n initial=\"hidden\"\n animate=\"visible\"\n transition={DOCK_FADE_TRANSITION}\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 \"../utils\";\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 useInsertionEffect,\n useMemo,\n useRef,\n useState,\n} from \"react\";\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 SurfacePayload,\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 \"../hooks\";\nimport { createDockScheduler, isValidComponentType } from \"../utils\";\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 { 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 [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 useInsertionEffect(() => {\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 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],\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 \"./hooks\";\nimport { BreadcrumbProvider } from \"./routing/breadcrumbs\";\nimport { isSamePath, createDockScheduler } from \"./utils\";\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 useInsertionEffect,\n useMemo,\n useRef,\n type ReactNode,\n} from \"react\";\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 useInsertionEffect(() => {\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\", \"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"]}
|