@flamingo-stack/openframe-frontend-core 0.0.423 → 0.0.424-snapshot.20260715083847

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (138) hide show
  1. package/dist/{chunk-MOBZMJAP.js → chunk-2NHRQU5S.js} +3 -3
  2. package/dist/{chunk-B2255TIZ.js → chunk-3RVXNWM4.js} +35 -4
  3. package/dist/chunk-3RVXNWM4.js.map +1 -0
  4. package/dist/{chunk-GR2CMONR.js → chunk-7DLIR4M3.js} +7 -7
  5. package/dist/{chunk-4XLJWX2N.js → chunk-7EUIW46X.js} +2 -2
  6. package/dist/{chunk-IRIPRXO5.cjs → chunk-AXQ6VG3I.cjs} +14 -14
  7. package/dist/{chunk-IRIPRXO5.cjs.map → chunk-AXQ6VG3I.cjs.map} +1 -1
  8. package/dist/{chunk-OTNL36LC.cjs → chunk-BOL6YTLK.cjs} +40 -40
  9. package/dist/{chunk-OTNL36LC.cjs.map → chunk-BOL6YTLK.cjs.map} +1 -1
  10. package/dist/{chunk-JPZE2P4Y.js → chunk-BZE76SU7.js} +6 -6
  11. package/dist/{chunk-VFKQMAUF.cjs → chunk-C5RS3QLV.cjs} +3 -3
  12. package/dist/{chunk-VFKQMAUF.cjs.map → chunk-C5RS3QLV.cjs.map} +1 -1
  13. package/dist/{chunk-ZKIYCRVQ.cjs → chunk-EE5NH5SH.cjs} +3 -3
  14. package/dist/{chunk-ZKIYCRVQ.cjs.map → chunk-EE5NH5SH.cjs.map} +1 -1
  15. package/dist/{chunk-MSZ4WBCD.cjs → chunk-EOKZ25ZX.cjs} +21 -21
  16. package/dist/{chunk-MSZ4WBCD.cjs.map → chunk-EOKZ25ZX.cjs.map} +1 -1
  17. package/dist/{chunk-TMSP5FYV.cjs → chunk-F5NW3B2W.cjs} +36 -36
  18. package/dist/{chunk-TMSP5FYV.cjs.map → chunk-F5NW3B2W.cjs.map} +1 -1
  19. package/dist/{chunk-FVI2ESVQ.cjs → chunk-GS5QSGGP.cjs} +118 -87
  20. package/dist/chunk-GS5QSGGP.cjs.map +1 -0
  21. package/dist/{chunk-WO2NOBF3.cjs → chunk-JUICPZB2.cjs} +43 -43
  22. package/dist/{chunk-WO2NOBF3.cjs.map → chunk-JUICPZB2.cjs.map} +1 -1
  23. package/dist/{chunk-7W4474XS.js → chunk-KJKLNI4T.js} +5 -5
  24. package/dist/{chunk-CBY3VQKJ.cjs → chunk-LC47IZTB.cjs} +86 -86
  25. package/dist/{chunk-CBY3VQKJ.cjs.map → chunk-LC47IZTB.cjs.map} +1 -1
  26. package/dist/{chunk-SMUKHJJM.cjs → chunk-LMJ6E6EL.cjs} +27 -27
  27. package/dist/{chunk-SMUKHJJM.cjs.map → chunk-LMJ6E6EL.cjs.map} +1 -1
  28. package/dist/{chunk-2Q2SKYCZ.js → chunk-LRSJJVYR.js} +6 -6
  29. package/dist/{chunk-SR6LEWCF.cjs → chunk-N2TJ3HAM.cjs} +10 -10
  30. package/dist/{chunk-SR6LEWCF.cjs.map → chunk-N2TJ3HAM.cjs.map} +1 -1
  31. package/dist/{chunk-YOEQWHUD.js → chunk-NAASWINZ.js} +2 -2
  32. package/dist/{chunk-WOHMJJKD.cjs → chunk-QA3KNB3D.cjs} +29 -29
  33. package/dist/{chunk-WOHMJJKD.cjs.map → chunk-QA3KNB3D.cjs.map} +1 -1
  34. package/dist/{chunk-LK3KXZIN.js → chunk-QQOR52ER.js} +3 -3
  35. package/dist/{chunk-FFCGB73K.js → chunk-QXYOGJQJ.js} +2 -2
  36. package/dist/{chunk-OMUCATVA.js → chunk-RVWC4P3H.js} +2 -2
  37. package/dist/{chunk-G7UE6RKV.cjs → chunk-SSJNN5BS.cjs} +20 -3
  38. package/dist/chunk-SSJNN5BS.cjs.map +1 -0
  39. package/dist/{chunk-KNO5CB3W.cjs → chunk-T6MEF4BK.cjs} +7 -7
  40. package/dist/{chunk-KNO5CB3W.cjs.map → chunk-T6MEF4BK.cjs.map} +1 -1
  41. package/dist/{chunk-SVUDKNS7.js → chunk-UVDVZB6I.js} +3 -3
  42. package/dist/{chunk-WWS3R3UD.js → chunk-UYC52F32.js} +4 -4
  43. package/dist/{chunk-I4YIWY3O.js → chunk-XDBFXCLE.js} +7 -7
  44. package/dist/{chunk-NNF5XOMH.js → chunk-XRZSYFLR.js} +2 -2
  45. package/dist/{chunk-TIFJIHV2.cjs → chunk-Z7HY7C7P.cjs} +77 -77
  46. package/dist/{chunk-TIFJIHV2.cjs.map → chunk-Z7HY7C7P.cjs.map} +1 -1
  47. package/dist/{chunk-PLJLE4A4.js → chunk-ZJJERZUA.js} +20 -3
  48. package/dist/chunk-ZJJERZUA.js.map +1 -0
  49. package/dist/{chunk-HGBEKYXL.cjs → chunk-ZKN4UR2X.cjs} +5 -5
  50. package/dist/{chunk-HGBEKYXL.cjs.map → chunk-ZKN4UR2X.cjs.map} +1 -1
  51. package/dist/components/case-studies/index.cjs +11 -11
  52. package/dist/components/case-studies/index.js +5 -5
  53. package/dist/components/chat/index.cjs +5 -5
  54. package/dist/components/chat/index.js +4 -4
  55. package/dist/components/contact/index.cjs +6 -6
  56. package/dist/components/contact/index.js +5 -5
  57. package/dist/components/docs/index.cjs +8 -8
  58. package/dist/components/docs/index.js +7 -7
  59. package/dist/components/embeds/index.cjs +6 -6
  60. package/dist/components/embeds/index.js +5 -5
  61. package/dist/components/faq/index.cjs +7 -7
  62. package/dist/components/faq/index.js +6 -6
  63. package/dist/components/features/index.cjs +5 -5
  64. package/dist/components/features/index.js +4 -4
  65. package/dist/components/features/seo-editor-preview.d.ts.map +1 -1
  66. package/dist/components/help-center-pages/index.cjs +24 -24
  67. package/dist/components/help-center-pages/index.js +15 -15
  68. package/dist/components/index.cjs +141 -141
  69. package/dist/components/index.js +13 -13
  70. package/dist/components/navigation/index.cjs +5 -5
  71. package/dist/components/navigation/index.js +4 -4
  72. package/dist/components/onboarding-guides/index.cjs +9 -9
  73. package/dist/components/onboarding-guides/index.js +8 -8
  74. package/dist/components/related-content/index.cjs +7 -7
  75. package/dist/components/related-content/index.js +6 -6
  76. package/dist/components/tickets/index.cjs +8 -8
  77. package/dist/components/tickets/index.js +7 -7
  78. package/dist/components/ui/index.cjs +5 -5
  79. package/dist/components/ui/index.js +4 -4
  80. package/dist/components/ui/stacked-rows-panel.d.ts +3 -0
  81. package/dist/components/ui/stacked-rows-panel.d.ts.map +1 -1
  82. package/dist/embed-shims/index.cjs +3 -3
  83. package/dist/embed-shims/index.js +2 -2
  84. package/dist/embed-shims/next-navigation.cjs +3 -3
  85. package/dist/embed-shims/next-navigation.d.ts.map +1 -1
  86. package/dist/embed-shims/next-navigation.js +1 -1
  87. package/dist/hooks/index.cjs +3 -3
  88. package/dist/hooks/index.js +2 -2
  89. package/dist/index.cjs +7 -5
  90. package/dist/index.cjs.map +1 -1
  91. package/dist/index.js +6 -4
  92. package/dist/utils/index.cjs +4 -0
  93. package/dist/utils/index.cjs.map +1 -1
  94. package/dist/utils/index.d.ts +1 -0
  95. package/dist/utils/index.d.ts.map +1 -1
  96. package/dist/utils/index.js +4 -1
  97. package/dist/utils/index.js.map +1 -1
  98. package/dist/utils/seo-description.d.ts +14 -0
  99. package/dist/utils/seo-description.d.ts.map +1 -0
  100. package/package.json +1 -1
  101. package/src/components/.tool-icon.md +3 -3
  102. package/src/components/features/seo-editor-preview.tsx +24 -1
  103. package/src/components/icons-v2-generated/brand-logos/.index.md +1 -2
  104. package/src/components/platform/.ShellTypeBadge.md +1 -1
  105. package/src/components/platform/.ToolBadge.md +2 -2
  106. package/src/components/ui/stacked-rows-panel.tsx +14 -0
  107. package/src/embed-shims/__tests__/next-navigation.test.ts +165 -0
  108. package/src/embed-shims/next-navigation.tsx +46 -9
  109. package/src/stories/.OSTypeBadge.stories.md +1 -1
  110. package/src/stories/.ShellTypeBadge.stories.md +1 -1
  111. package/src/stories/.Toaster.stories.md +1 -1
  112. package/src/stories/.ToolBadge.stories.md +2 -2
  113. package/src/stories/.ToolExecutionDisplay.stories.md +4 -4
  114. package/src/stories/StackedRowsPanel.stories.tsx +21 -0
  115. package/src/types/.os.types.md +1 -1
  116. package/src/types/.shell.types.md +1 -1
  117. package/src/types/.tool.types.md +3 -3
  118. package/src/utils/.tool-utils.md +1 -3
  119. package/src/utils/index.ts +1 -0
  120. package/src/utils/seo-description.ts +13 -0
  121. package/dist/chunk-B2255TIZ.js.map +0 -1
  122. package/dist/chunk-FVI2ESVQ.cjs.map +0 -1
  123. package/dist/chunk-G7UE6RKV.cjs.map +0 -1
  124. package/dist/chunk-PLJLE4A4.js.map +0 -1
  125. /package/dist/{chunk-MOBZMJAP.js.map → chunk-2NHRQU5S.js.map} +0 -0
  126. /package/dist/{chunk-GR2CMONR.js.map → chunk-7DLIR4M3.js.map} +0 -0
  127. /package/dist/{chunk-4XLJWX2N.js.map → chunk-7EUIW46X.js.map} +0 -0
  128. /package/dist/{chunk-JPZE2P4Y.js.map → chunk-BZE76SU7.js.map} +0 -0
  129. /package/dist/{chunk-7W4474XS.js.map → chunk-KJKLNI4T.js.map} +0 -0
  130. /package/dist/{chunk-2Q2SKYCZ.js.map → chunk-LRSJJVYR.js.map} +0 -0
  131. /package/dist/{chunk-YOEQWHUD.js.map → chunk-NAASWINZ.js.map} +0 -0
  132. /package/dist/{chunk-LK3KXZIN.js.map → chunk-QQOR52ER.js.map} +0 -0
  133. /package/dist/{chunk-FFCGB73K.js.map → chunk-QXYOGJQJ.js.map} +0 -0
  134. /package/dist/{chunk-OMUCATVA.js.map → chunk-RVWC4P3H.js.map} +0 -0
  135. /package/dist/{chunk-SVUDKNS7.js.map → chunk-UVDVZB6I.js.map} +0 -0
  136. /package/dist/{chunk-WWS3R3UD.js.map → chunk-UYC52F32.js.map} +0 -0
  137. /package/dist/{chunk-I4YIWY3O.js.map → chunk-XDBFXCLE.js.map} +0 -0
  138. /package/dist/{chunk-NNF5XOMH.js.map → chunk-XRZSYFLR.js.map} +0 -0
@@ -1 +0,0 @@
1
- {"version":3,"sources":["/home/runner/work/openframe-oss-lib/openframe-oss-lib/openframe-frontend-core/dist/chunk-G7UE6RKV.cjs","../src/embed-shims/next-navigation.tsx"],"names":[],"mappings":"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","file":"/home/runner/work/openframe-oss-lib/openframe-oss-lib/openframe-frontend-core/dist/chunk-G7UE6RKV.cjs","sourcesContent":[null,"/**\n * `next/navigation` shim — environment-aware app-router hooks.\n *\n * Defaults to lightweight stubs backed by `window.location` and\n * `URLSearchParams` so lib components that read the URL work outside\n * a Next.js router shell. Next.js hosts can opt into the REAL\n * `next/navigation` exports (full client-router integration —\n * `router.replace(href, { scroll: false })`, etc.) by calling\n * {@link registerNavigation} ONCE at app init:\n *\n * // hub: lib/embed-shim-registration.ts\n * import {\n * useRouter, usePathname, useSearchParams, useParams,\n * redirect, permanentRedirect, notFound,\n * } from 'next/navigation'\n * import { registerNavigation } from '@flamingo-stack/openframe-frontend-core/embed-shims'\n * registerNavigation({\n * useRouter, usePathname, useSearchParams, useParams,\n * redirect, permanentRedirect, notFound,\n * })\n *\n * After registration, every exported hook in this file delegates to\n * the real implementation. Without registration, the stubs run:\n *\n * - `useRouter()` → push/replace use `window.location.assign/replace`;\n * back/forward use `history.back/forward`; refresh reloads; prefetch\n * is a no-op.\n * - `usePathname()` → returns `window.location.pathname` (popstate-\n * subscribed so back/forward re-renders).\n * - `useSearchParams()` → returns `URLSearchParams` view of\n * `window.location.search` (popstate-subscribed).\n * - `useParams()` → returns `{}` — embedders that need dynamic\n * params should parse them from `usePathname()` themselves.\n * - `notFound()` / `redirect()` / `permanentRedirect()` —\n * best-effort equivalents using `window.location`.\n *\n * The fallback path subscribes to `popstate` only. Programmatic\n * `pushState`/`replaceState` does NOT fire popstate, so the fallback\n * does not auto-re-render on programmatic navigation. Embedders that\n * need that should register a real router or supply their own.\n */\n'use client'\nimport { useEffect, useState } from 'react'\n\n// --- Router shape — matches Next's AppRouterInstance surface enough to\n// --- satisfy hub callsites that pass options like `{ scroll: false }`.\ninterface NavigateOptions {\n scroll?: boolean\n}\n\ninterface PrefetchOptions {\n kind?: unknown\n}\n\ninterface RouterStub {\n push: (href: string, options?: NavigateOptions) => void\n replace: (href: string, options?: NavigateOptions) => void\n back: () => void\n forward: () => void\n refresh: () => void\n prefetch: (href: string, options?: PrefetchOptions) => void\n}\n\n// --- Registration surface — partial so a host can register only the\n// --- hooks it needs (e.g. routes that don't use redirect()).\nexport interface NavigationImpl {\n useRouter: () => RouterStub\n usePathname: () => string\n useSearchParams: () => URLSearchParams\n useParams: <T extends Record<string, string | string[]>>() => T\n redirect: (url: string, type?: unknown) => never\n permanentRedirect: (url: string, type?: unknown) => never\n notFound: () => never\n}\n\nlet impl: Partial<NavigationImpl> = {}\n\n/**\n * Register real `next/navigation` exports. Merges with any prior\n * registration so partial-overrides are safe. Call ONCE at app init\n * in a Next.js host.\n */\nexport function registerNavigation(nav: Partial<NavigationImpl>): void {\n impl = { ...impl, ...nav }\n}\n\n// --- Fallback impls ----------------------------------------------------\n\nconst noopRouter: RouterStub = {\n push: () => {},\n replace: () => {},\n back: () => {},\n forward: () => {},\n refresh: () => {},\n prefetch: () => {},\n}\n\nfunction fallbackUseRouter(): RouterStub {\n if (typeof window === 'undefined') return noopRouter\n return {\n push: (href: string) => window.location.assign(href),\n replace: (href: string) => window.location.replace(href),\n back: () => window.history.back(),\n forward: () => window.history.forward(),\n refresh: () => window.location.reload(),\n prefetch: () => {},\n }\n}\n\nfunction readLocation<T>(read: () => T, fallback: T): T {\n return typeof window === 'undefined' ? fallback : read()\n}\n\n/** Subscribes to `popstate` only. pushState/replaceState do NOT fire\n * popstate by design — callers that mutate the URL programmatically\n * (and want their component to re-render in response) need a real\n * router. */\nfunction useLocationSubscription(): number {\n const [tick, setTick] = useState(0)\n useEffect(() => {\n if (typeof window === 'undefined') return\n const onChange = () => setTick((t) => t + 1)\n window.addEventListener('popstate', onChange)\n return () => window.removeEventListener('popstate', onChange)\n }, [])\n return tick\n}\n\nfunction fallbackUsePathname(): string {\n useLocationSubscription()\n return readLocation(() => window.location.pathname, '/')\n}\n\nfunction fallbackUseSearchParams(): URLSearchParams {\n useLocationSubscription()\n return readLocation(\n () => new URLSearchParams(window.location.search),\n new URLSearchParams(),\n )\n}\n\nfunction fallbackUseParams<T extends Record<string, string | string[]>>(): T {\n return {} as T\n}\n\nfunction fallbackRedirect(url: string): never {\n if (typeof window !== 'undefined') window.location.assign(url)\n throw new Error(`[next-navigation shim] redirect(${url})`)\n}\n\nfunction fallbackPermanentRedirect(url: string): never {\n if (typeof window !== 'undefined') window.location.replace(url)\n throw new Error(`[next-navigation shim] permanentRedirect(${url})`)\n}\n\nfunction fallbackNotFound(): never {\n throw new Error('[next-navigation shim] notFound()')\n}\n\n// --- Public surface — each export checks the registry and falls\n// --- through to the fallback. Hooks must remain hooks (no early-\n// --- return-before-hook) — the registry lookup is itself synchronous\n// --- and the registered impl is a hook in its own right.\n\nexport function useRouter(): RouterStub {\n return (impl.useRouter ?? fallbackUseRouter)()\n}\n\nexport function usePathname(): string {\n return (impl.usePathname ?? fallbackUsePathname)()\n}\n\nexport function useSearchParams(): URLSearchParams {\n return (impl.useSearchParams ?? fallbackUseSearchParams)()\n}\n\nexport function useParams<T extends Record<string, string | string[]>>(): T {\n return ((impl.useParams as (() => T) | undefined) ?? fallbackUseParams)()\n}\n\nexport function redirect(url: string, type?: unknown): never {\n return (impl.redirect ?? fallbackRedirect)(url, type)\n}\n\nexport function permanentRedirect(url: string, type?: unknown): never {\n return (impl.permanentRedirect ?? fallbackPermanentRedirect)(url, type)\n}\n\nexport function notFound(): never {\n return (impl.notFound ?? fallbackNotFound)()\n}\n\n/** Match Next's RedirectType enum surface for code that imports it. */\nexport const RedirectType = {\n push: 'push' as const,\n replace: 'replace' as const,\n}\n\n/** Match Next's ServerInsertedHTMLContext surface — non-functional in\n * the embed environment but importable so consumers don't crash. */\nexport const ServerInsertedHTMLContext = null as any\n"]}
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../src/embed-shims/next-navigation.tsx"],"sourcesContent":["/**\n * `next/navigation` shim — environment-aware app-router hooks.\n *\n * Defaults to lightweight stubs backed by `window.location` and\n * `URLSearchParams` so lib components that read the URL work outside\n * a Next.js router shell. Next.js hosts can opt into the REAL\n * `next/navigation` exports (full client-router integration —\n * `router.replace(href, { scroll: false })`, etc.) by calling\n * {@link registerNavigation} ONCE at app init:\n *\n * // hub: lib/embed-shim-registration.ts\n * import {\n * useRouter, usePathname, useSearchParams, useParams,\n * redirect, permanentRedirect, notFound,\n * } from 'next/navigation'\n * import { registerNavigation } from '@flamingo-stack/openframe-frontend-core/embed-shims'\n * registerNavigation({\n * useRouter, usePathname, useSearchParams, useParams,\n * redirect, permanentRedirect, notFound,\n * })\n *\n * After registration, every exported hook in this file delegates to\n * the real implementation. Without registration, the stubs run:\n *\n * - `useRouter()` → push/replace use `window.location.assign/replace`;\n * back/forward use `history.back/forward`; refresh reloads; prefetch\n * is a no-op.\n * - `usePathname()` → returns `window.location.pathname` (popstate-\n * subscribed so back/forward re-renders).\n * - `useSearchParams()` → returns `URLSearchParams` view of\n * `window.location.search` (popstate-subscribed).\n * - `useParams()` → returns `{}` — embedders that need dynamic\n * params should parse them from `usePathname()` themselves.\n * - `notFound()` / `redirect()` / `permanentRedirect()` —\n * best-effort equivalents using `window.location`.\n *\n * The fallback path subscribes to `popstate` only. Programmatic\n * `pushState`/`replaceState` does NOT fire popstate, so the fallback\n * does not auto-re-render on programmatic navigation. Embedders that\n * need that should register a real router or supply their own.\n */\n'use client'\nimport { useEffect, useState } from 'react'\n\n// --- Router shape — matches Next's AppRouterInstance surface enough to\n// --- satisfy hub callsites that pass options like `{ scroll: false }`.\ninterface NavigateOptions {\n scroll?: boolean\n}\n\ninterface PrefetchOptions {\n kind?: unknown\n}\n\ninterface RouterStub {\n push: (href: string, options?: NavigateOptions) => void\n replace: (href: string, options?: NavigateOptions) => void\n back: () => void\n forward: () => void\n refresh: () => void\n prefetch: (href: string, options?: PrefetchOptions) => void\n}\n\n// --- Registration surface — partial so a host can register only the\n// --- hooks it needs (e.g. routes that don't use redirect()).\nexport interface NavigationImpl {\n useRouter: () => RouterStub\n usePathname: () => string\n useSearchParams: () => URLSearchParams\n useParams: <T extends Record<string, string | string[]>>() => T\n redirect: (url: string, type?: unknown) => never\n permanentRedirect: (url: string, type?: unknown) => never\n notFound: () => never\n}\n\nlet impl: Partial<NavigationImpl> = {}\n\n/**\n * Register real `next/navigation` exports. Merges with any prior\n * registration so partial-overrides are safe. Call ONCE at app init\n * in a Next.js host.\n */\nexport function registerNavigation(nav: Partial<NavigationImpl>): void {\n impl = { ...impl, ...nav }\n}\n\n// --- Fallback impls ----------------------------------------------------\n\nconst noopRouter: RouterStub = {\n push: () => {},\n replace: () => {},\n back: () => {},\n forward: () => {},\n refresh: () => {},\n prefetch: () => {},\n}\n\nfunction fallbackUseRouter(): RouterStub {\n if (typeof window === 'undefined') return noopRouter\n return {\n push: (href: string) => window.location.assign(href),\n replace: (href: string) => window.location.replace(href),\n back: () => window.history.back(),\n forward: () => window.history.forward(),\n refresh: () => window.location.reload(),\n prefetch: () => {},\n }\n}\n\nfunction readLocation<T>(read: () => T, fallback: T): T {\n return typeof window === 'undefined' ? fallback : read()\n}\n\n/** Subscribes to `popstate` only. pushState/replaceState do NOT fire\n * popstate by design — callers that mutate the URL programmatically\n * (and want their component to re-render in response) need a real\n * router. */\nfunction useLocationSubscription(): number {\n const [tick, setTick] = useState(0)\n useEffect(() => {\n if (typeof window === 'undefined') return\n const onChange = () => setTick((t) => t + 1)\n window.addEventListener('popstate', onChange)\n return () => window.removeEventListener('popstate', onChange)\n }, [])\n return tick\n}\n\nfunction fallbackUsePathname(): string {\n useLocationSubscription()\n return readLocation(() => window.location.pathname, '/')\n}\n\nfunction fallbackUseSearchParams(): URLSearchParams {\n useLocationSubscription()\n return readLocation(\n () => new URLSearchParams(window.location.search),\n new URLSearchParams(),\n )\n}\n\nfunction fallbackUseParams<T extends Record<string, string | string[]>>(): T {\n return {} as T\n}\n\nfunction fallbackRedirect(url: string): never {\n if (typeof window !== 'undefined') window.location.assign(url)\n throw new Error(`[next-navigation shim] redirect(${url})`)\n}\n\nfunction fallbackPermanentRedirect(url: string): never {\n if (typeof window !== 'undefined') window.location.replace(url)\n throw new Error(`[next-navigation shim] permanentRedirect(${url})`)\n}\n\nfunction fallbackNotFound(): never {\n throw new Error('[next-navigation shim] notFound()')\n}\n\n// --- Public surface — each export checks the registry and falls\n// --- through to the fallback. Hooks must remain hooks (no early-\n// --- return-before-hook) — the registry lookup is itself synchronous\n// --- and the registered impl is a hook in its own right.\n\nexport function useRouter(): RouterStub {\n return (impl.useRouter ?? fallbackUseRouter)()\n}\n\nexport function usePathname(): string {\n return (impl.usePathname ?? fallbackUsePathname)()\n}\n\nexport function useSearchParams(): URLSearchParams {\n return (impl.useSearchParams ?? fallbackUseSearchParams)()\n}\n\nexport function useParams<T extends Record<string, string | string[]>>(): T {\n return ((impl.useParams as (() => T) | undefined) ?? fallbackUseParams)()\n}\n\nexport function redirect(url: string, type?: unknown): never {\n return (impl.redirect ?? fallbackRedirect)(url, type)\n}\n\nexport function permanentRedirect(url: string, type?: unknown): never {\n return (impl.permanentRedirect ?? fallbackPermanentRedirect)(url, type)\n}\n\nexport function notFound(): never {\n return (impl.notFound ?? fallbackNotFound)()\n}\n\n/** Match Next's RedirectType enum surface for code that imports it. */\nexport const RedirectType = {\n push: 'push' as const,\n replace: 'replace' as const,\n}\n\n/** Match Next's ServerInsertedHTMLContext surface — non-functional in\n * the embed environment but importable so consumers don't crash. */\nexport const ServerInsertedHTMLContext = null as any\n"],"mappings":";;;;;;AA0CA,SAAS,WAAW,gBAAgB;AAwC7B,SAAS,mBAAmB,KAAoC;AACrE,SAAO,EAAE,GAAG,MAAM,GAAG,IAAI;AAC3B;AAaA,SAAS,oBAAgC;AACvC,MAAI,OAAO,WAAW,YAAa,QAAO;AAC1C,SAAO;AAAA,IACL,MAAM,CAAC,SAAiB,OAAO,SAAS,OAAO,IAAI;AAAA,IACnD,SAAS,CAAC,SAAiB,OAAO,SAAS,QAAQ,IAAI;AAAA,IACvD,MAAM,MAAM,OAAO,QAAQ,KAAK;AAAA,IAChC,SAAS,MAAM,OAAO,QAAQ,QAAQ;AAAA,IACtC,SAAS,MAAM,OAAO,SAAS,OAAO;AAAA,IACtC,UAAU,MAAM;AAAA,IAAC;AAAA,EACnB;AACF;AAEA,SAAS,aAAgB,MAAe,UAAgB;AACtD,SAAO,OAAO,WAAW,cAAc,WAAW,KAAK;AACzD;AAMA,SAAS,0BAAkC;AACzC,QAAM,CAAC,MAAM,OAAO,IAAI,SAAS,CAAC;AAClC,YAAU,MAAM;AACd,QAAI,OAAO,WAAW,YAAa;AACnC,UAAM,WAAW,MAAM,QAAQ,CAAC,MAAM,IAAI,CAAC;AAC3C,WAAO,iBAAiB,YAAY,QAAQ;AAC5C,WAAO,MAAM,OAAO,oBAAoB,YAAY,QAAQ;AAAA,EAC9D,GAAG,CAAC,CAAC;AACL,SAAO;AACT;AAEA,SAAS,sBAA8B;AACrC,0BAAwB;AACxB,SAAO,aAAa,MAAM,OAAO,SAAS,UAAU,GAAG;AACzD;AAEA,SAAS,0BAA2C;AAClD,0BAAwB;AACxB,SAAO;AAAA,IACL,MAAM,IAAI,gBAAgB,OAAO,SAAS,MAAM;AAAA,IAChD,IAAI,gBAAgB;AAAA,EACtB;AACF;AAEA,SAAS,oBAAoE;AAC3E,SAAO,CAAC;AACV;AAEA,SAAS,iBAAiB,KAAoB;AAC5C,MAAI,OAAO,WAAW,YAAa,QAAO,SAAS,OAAO,GAAG;AAC7D,QAAM,IAAI,MAAM,mCAAmC,GAAG,GAAG;AAC3D;AAEA,SAAS,0BAA0B,KAAoB;AACrD,MAAI,OAAO,WAAW,YAAa,QAAO,SAAS,QAAQ,GAAG;AAC9D,QAAM,IAAI,MAAM,4CAA4C,GAAG,GAAG;AACpE;AAEA,SAAS,mBAA0B;AACjC,QAAM,IAAI,MAAM,mCAAmC;AACrD;AAOO,SAAS,YAAwB;AACtC,UAAQ,KAAK,aAAa,mBAAmB;AAC/C;AAEO,SAAS,cAAsB;AACpC,UAAQ,KAAK,eAAe,qBAAqB;AACnD;AAEO,SAAS,kBAAmC;AACjD,UAAQ,KAAK,mBAAmB,yBAAyB;AAC3D;AAEO,SAAS,YAA4D;AAC1E,UAAS,KAAK,aAAuC,mBAAmB;AAC1E;AAEO,SAAS,SAAS,KAAa,MAAuB;AAC3D,UAAQ,KAAK,YAAY,kBAAkB,KAAK,IAAI;AACtD;AAEO,SAAS,kBAAkB,KAAa,MAAuB;AACpE,UAAQ,KAAK,qBAAqB,2BAA2B,KAAK,IAAI;AACxE;AAEO,SAAS,WAAkB;AAChC,UAAQ,KAAK,YAAY,kBAAkB;AAC7C;AA9LA,IA2EI,MAaE,YAyGO,cAOA;AAxMb;AAAA;AA2EA,IAAI,OAAgC,CAAC;AAarC,IAAM,aAAyB;AAAA,MAC7B,MAAM,MAAM;AAAA,MAAC;AAAA,MACb,SAAS,MAAM;AAAA,MAAC;AAAA,MAChB,MAAM,MAAM;AAAA,MAAC;AAAA,MACb,SAAS,MAAM;AAAA,MAAC;AAAA,MAChB,SAAS,MAAM;AAAA,MAAC;AAAA,MAChB,UAAU,MAAM;AAAA,MAAC;AAAA,IACnB;AAkGO,IAAM,eAAe;AAAA,MAC1B,MAAM;AAAA,MACN,SAAS;AAAA,IACX;AAIO,IAAM,4BAA4B;AAAA;AAAA;","names":[]}