@clarify-labs/renderer 0.9.4 → 0.10.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/output/{ClarifyShell-D2P0iZ_m.js → ClarifyShell-1LuBliwt.js} +124 -40
- package/output/ClarifyShell-1LuBliwt.js.map +1 -0
- package/output/{ClarifyShell-7r92MZg9.cjs → ClarifyShell-C6li72Ce.cjs} +138 -54
- package/output/ClarifyShell-C6li72Ce.cjs.map +1 -0
- package/output/MermaidViewer-B6-BMCJG.cjs +101 -0
- package/output/MermaidViewer-B6-BMCJG.cjs.map +1 -0
- package/output/MermaidViewer-dXsomvM7.js +98 -0
- package/output/MermaidViewer-dXsomvM7.js.map +1 -0
- package/output/{OpenApiOperation-Dhlz3JSx.js → OpenApiOperation-CqNM-no4.js} +274 -206
- package/output/OpenApiOperation-CqNM-no4.js.map +1 -0
- package/output/{OpenApiOperation-CyyPlZL6.cjs → OpenApiOperation-DK46w2dq.cjs} +305 -225
- package/output/OpenApiOperation-DK46w2dq.cjs.map +1 -0
- package/output/{PageActions-CTn2XkPg.cjs → PageActions-BjB6PYmL.cjs} +76 -735
- package/output/PageActions-BjB6PYmL.cjs.map +1 -0
- package/output/{PageActions-D0PA8Zv5.js → PageActions-D7K9LDGf.js} +67 -678
- package/output/PageActions-D7K9LDGf.js.map +1 -0
- package/output/SearchDialog-CIPvXMT3.cjs +414 -0
- package/output/SearchDialog-CIPvXMT3.cjs.map +1 -0
- package/output/SearchDialog-CxYLjRi5.js +411 -0
- package/output/SearchDialog-CxYLjRi5.js.map +1 -0
- package/output/app/AppShell.d.ts +2 -2
- package/output/app/SectionHashSync.d.ts +6 -0
- package/output/client.cjs +3 -3
- package/output/client.js +3 -3
- package/output/components/MermaidViewer.d.ts +7 -0
- package/output/context.d.ts +1 -1
- package/output/core/context.d.ts +3 -4
- package/output/core/i18n.d.ts +1 -1
- package/output/core/index.d.ts +1 -1
- package/output/core/types.d.ts +36 -19
- package/output/i18n-DnqZHFT7.js +247 -0
- package/output/i18n-DnqZHFT7.js.map +1 -0
- package/output/i18n-b4iTLeia.cjs +294 -0
- package/output/i18n-b4iTLeia.cjs.map +1 -0
- package/output/index.cjs +91 -94
- package/output/index.cjs.map +1 -1
- package/output/index.d.ts +5 -5
- package/output/index.js +83 -86
- package/output/index.js.map +1 -1
- package/output/markdown.cjs +1 -1
- package/output/openapi/components/EndpointSections.d.ts +3 -1
- package/output/openapi/components/ExamplePanels.d.ts +3 -1
- package/output/openapi/components/OpenApiOperation.d.ts +3 -1
- package/output/openapi/components/OpenApiOperation.state.d.ts +3 -3
- package/output/openapi/components/SchemaProperties.d.ts +1 -0
- package/output/openapi/components/helpers.d.ts +2 -2
- package/output/openapi/entry.d.ts +0 -1
- package/output/openapi/lib/helpers.d.ts +5 -3
- package/output/openapi/lib/request-code.d.ts +2 -1
- package/output/openapi/lib/spec-path.d.ts +6 -1
- package/output/openapi/lib/utils.d.ts +10 -4
- package/output/preview.cjs +7 -5
- package/output/preview.cjs.map +1 -1
- package/output/preview.js +5 -3
- package/output/preview.js.map +1 -1
- package/output/remark-Dd2WU50s.js.map +1 -1
- package/output/{remark-Dv3owbSH.cjs → remark-zSQT0MBv.cjs} +3 -3
- package/output/{remark-Dv3owbSH.cjs.map → remark-zSQT0MBv.cjs.map} +1 -1
- package/output/{render-CwSsfrs7.js → render-DKj24Jqw.js} +15 -8
- package/output/render-DKj24Jqw.js.map +1 -0
- package/output/{render-DXDSIfZ8.cjs → render-Di5B6Zc0.cjs} +15 -8
- package/output/render-Di5B6Zc0.cjs.map +1 -0
- package/output/renderer.css +55 -1
- package/output/runtime/ClarifyShell.d.ts +5 -6
- package/output/server.cjs +4 -4
- package/output/server.cjs.map +1 -1
- package/output/server.js +4 -4
- package/output/server.js.map +1 -1
- package/output/shell/Navigation.d.ts +1 -0
- package/output/shell/search/SearchDialog.d.ts +1 -1
- package/output/slots/RuntimeSlot.d.ts +7 -7
- package/output/slots/context.d.ts +5 -5
- package/output/slots/index.d.ts +2 -2
- package/output/slots/types.d.ts +1 -1
- package/output/utils/path.d.ts +1 -1
- package/package.json +10 -10
- package/output/ClarifyShell-7r92MZg9.cjs.map +0 -1
- package/output/ClarifyShell-D2P0iZ_m.js.map +0 -1
- package/output/OpenApiOperation-CyyPlZL6.cjs.map +0 -1
- package/output/OpenApiOperation-Dhlz3JSx.js.map +0 -1
- package/output/PageActions-CTn2XkPg.cjs.map +0 -1
- package/output/PageActions-D0PA8Zv5.js.map +0 -1
- package/output/render-CwSsfrs7.js.map +0 -1
- package/output/render-DXDSIfZ8.cjs.map +0 -1
- /package/output/{chunk-DakpK96I.cjs → rolldown-runtime-DakpK96I.cjs} +0 -0
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"PageActions-BjB6PYmL.cjs","names":[],"sources":["../source/utils/clipboard.ts","../source/utils/href.ts","../source/shell/ContentActions.tsx","../source/theme/cookies.ts","../source/theme/ThemeProvider.tsx","../source/theme/ThemeToggle.tsx","../source/utils/localized-text.ts","../source/utils/path.ts","../source/utils/lucide.ts","../source/shell/icons.tsx","../source/utils/remToPx.ts","../source/app/SectionProvider.tsx","../source/shell/Navigation.tsx","../source/shell/mobile.tsx","../source/shell/search/useSearchProps.ts","../source/shell/Search.tsx","../source/shell/SiteLogo.tsx","../source/shell/Header.tsx","../source/app/PageActions.tsx"],"sourcesContent":["export async function copyTextToClipboard(text: string): Promise<boolean> {\n if (typeof navigator !== 'undefined' && navigator.clipboard?.writeText) {\n try {\n await navigator.clipboard.writeText(text)\n return true\n } catch {\n // Fall back to a temporary textarea below.\n }\n }\n\n if (typeof document === 'undefined') return false\n\n const textarea = document.createElement('textarea')\n textarea.value = text\n textarea.setAttribute('readonly', '')\n textarea.style.position = 'fixed'\n textarea.style.top = '-9999px'\n textarea.style.opacity = '0'\n document.body.appendChild(textarea)\n\n try {\n textarea.select()\n return document.execCommand('copy')\n } catch {\n return false\n } finally {\n textarea.remove()\n }\n}\n","import type { Config } from '../types'\n\nexport function isExternalHref(href: string): boolean {\n return /^[a-z][a-z\\d+.-]*:/i.test(href) || href.startsWith('//')\n}\n\nexport function hasLocalePrefix(href: string, config: Config): boolean {\n const firstSegment = href.replace(/^\\/+/, '').split('/')[0]\n return Boolean(firstSegment && config.i18n?.locales.some((locale) => locale.code === firstSegment))\n}\n\nexport function localizeHref(href: string, config: Config, locale?: string): string {\n if (!locale || !config.i18n || isExternalHref(href) || href.startsWith('#')) return href\n if (hasLocalePrefix(href, config)) return href\n if (locale === config.i18n.defaultLocale) return href.startsWith('/') ? href : `/${href}`\n\n const cleanHref = href === '/' ? '' : href.replace(/^\\/+/, '')\n return `/${locale}${cleanHref ? `/${cleanHref}` : ''}`\n}\n\nexport function prefixHref(href: string, routePrefix: string = '/'): string {\n if (isExternalHref(href) || href.startsWith('#')) return href\n if (!routePrefix || routePrefix === '/') return href.startsWith('/') ? href : `/${href}`\n\n const prefix = routePrefix.replace(/^\\/+|\\/+$/g, '')\n const path = href.replace(/^\\/+/, '')\n if (!path) return `/${prefix}`\n if (path === prefix || path.startsWith(`${prefix}/`)) return `/${path}`\n return `/${prefix}/${path}`\n}\n","import { Menu, MenuButton, MenuItem, MenuItems } from '@headlessui/react'\nimport { Check, ChevronDown, Copy, ExternalLink, FileText, Link2, PencilLine } from 'lucide-react'\nimport { useState } from 'react'\n\nimport { useBuiltInText } from '../i18n'\nimport type { RouteItem } from '../types'\nimport { copyTextToClipboard } from '../utils/clipboard'\nimport { prefixHref } from '../utils/href'\n\ntype ContentActionsProps = {\n route?: RouteItem\n routePrefix?: string\n}\n\ntype CopyState = 'idle' | 'content' | 'link' | 'llms'\ntype CopyAction = {\n key: Exclude<CopyState, 'idle'>\n label: string\n description: string\n icon: typeof Copy\n run: () => Promise<void>\n copiedLabel?: string\n}\n\nfunction resolveContentArtifactUrl(contentArtifactUrl: string, routePrefix: string = '/'): string {\n return prefixHref(contentArtifactUrl, routePrefix)\n}\n\nfunction getAbsoluteUrl(path: string): string {\n if (typeof window === 'undefined') return path\n return new URL(path, window.location.href).href\n}\n\nexport function ContentActions(arg0: ContentActionsProps) {\n const { route, routePrefix } = arg0\n const t = useBuiltInText()\n const [copied, setCopied] = useState<CopyState>('idle')\n\n if (!route?.contentArtifactUrl && !route?.sourceEditUrl) return null\n\n const contentArtifactUrl = route.contentArtifactUrl ? resolveContentArtifactUrl(route.contentArtifactUrl, routePrefix) : undefined\n const isOpenApi = route.kind === 'openapi'\n const contentTypeLabel = isOpenApi ? 'OpenAPI' : 'Markdown'\n const replacements = { contentType: contentTypeLabel }\n const viewLabel = isOpenApi ? t('contentActions.viewOpenApi') : t('contentActions.viewMarkdown')\n const viewDescription = isOpenApi ? t('contentActions.viewOpenApiDescription') : t('contentActions.viewMarkdownDescription')\n\n function markCopied(state: Exclude<CopyState, 'idle'>) {\n setCopied(state)\n setTimeout(() => setCopied('idle'), 1600)\n }\n\n async function handleCopyContent() {\n if (!contentArtifactUrl) return\n const response = await fetch(contentArtifactUrl)\n const text = await response.text()\n if (await copyTextToClipboard(text)) markCopied('content')\n }\n\n const llmsArtifactUrl = resolveContentArtifactUrl('/llms.txt', routePrefix)\n\n async function handleCopyLink() {\n if (!contentArtifactUrl) return\n if (await copyTextToClipboard(getAbsoluteUrl(contentArtifactUrl))) markCopied('link')\n }\n\n async function handleCopyLlms() {\n if (await copyTextToClipboard(getAbsoluteUrl(llmsArtifactUrl))) markCopied('llms')\n }\n\n const actions: CopyAction[] = contentArtifactUrl\n ? [\n {\n key: 'content',\n label: t('contentActions.copyContent'),\n description: t('contentActions.copyContentDescription', replacements),\n icon: Copy,\n run: handleCopyContent,\n copiedLabel: t('contentActions.copiedContent'),\n },\n {\n key: 'link',\n label: t('contentActions.copyLink', replacements),\n description: t('contentActions.copyLinkDescription', replacements),\n icon: Link2,\n run: handleCopyLink,\n copiedLabel: t('contentActions.copiedLink'),\n },\n ]\n : []\n\n const llmsAction: CopyAction = {\n key: 'llms',\n label: t('contentActions.copyLlms'),\n description: t('contentActions.copyLlmsDescription'),\n icon: FileText,\n run: handleCopyLlms,\n copiedLabel: t('contentActions.copiedLlms'),\n }\n const primaryAction = actions[0]\n const PrimaryIcon = primaryAction && copied === primaryAction.key ? Check : primaryAction?.icon ?? PencilLine\n\n return (\n <div className=\"clarify-content-actions not-prose flex shrink-0 justify-start sm:justify-end\">\n <Menu as=\"div\" className=\"clarify-content-actions-menu relative inline-flex min-w-0 text-sm font-medium\">\n <div className=\"clarify-content-actions-group inline-flex min-w-0 overflow-hidden rounded-full border border-(--clarify-theme-tokens-colors-border) bg-(--clarify-theme-tokens-colors-surface) shadow-sm shadow-zinc-900/5\">\n {primaryAction ? (\n <button\n type=\"button\"\n onClick={primaryAction.run}\n className=\"clarify-content-actions-primary clarify-ui-control inline-flex h-8 min-w-0 items-center gap-1.5 px-2.5 transition sm:px-3\"\n >\n <PrimaryIcon className=\"h-3.5 w-3.5 shrink-0\" />\n <span className=\"truncate\">{copied === primaryAction.key ? t('actions.copied') : primaryAction.label}</span>\n </button>\n ) : (\n <a\n href={route.sourceEditUrl}\n target=\"_blank\"\n rel=\"noreferrer\"\n className=\"clarify-content-actions-primary clarify-ui-control inline-flex h-8 min-w-0 items-center gap-1.5 px-2.5 no-underline transition sm:px-3\"\n >\n <PrimaryIcon className=\"h-3.5 w-3.5 shrink-0\" />\n <span className=\"truncate\">{t('contentActions.editPage')}</span>\n </a>\n )}\n <MenuButton className=\"clarify-content-actions-trigger clarify-ui-control inline-flex h-8 w-8 items-center justify-center border-l border-(--clarify-theme-tokens-colors-border) transition\" aria-label={t('contentActions.copyOptions')}>\n <ChevronDown className=\"h-3.5 w-3.5\" />\n </MenuButton>\n </div>\n <MenuItems\n modal={false}\n anchor=\"bottom end\"\n className=\"clarify-content-actions-list clarify-ui-menu z-30 mt-2 w-(--clarify-ui-action-menu-width) origin-top-right rounded-(--clarify-theme-tokens-radius-xl) border border-(--clarify-theme-tokens-colors-border) bg-(--clarify-theme-tokens-colors-surface) p-1.5 shadow-xl shadow-zinc-900/5 transition [--anchor-gap:--spacing(2)] focus:outline-none data-closed:scale-95 data-closed:opacity-0\"\n >\n {route.sourceEditUrl ? (\n <MenuItem>\n <a\n href={route.sourceEditUrl}\n target=\"_blank\"\n rel=\"noreferrer\"\n className=\"clarify-content-actions-item clarify-ui-menu-item group flex w-full items-center gap-2 rounded-(--clarify-theme-tokens-radius-lg) px-1.5 py-1.5 text-left no-underline transition\"\n >\n <span className=\"clarify-ui-menu-icon flex shrink-0 rounded-(--clarify-theme-tokens-radius-md) border border-(--clarify-theme-tokens-colors-border) p-1.5\">\n <PencilLine className=\"h-4 w-4\" />\n </span>\n <span className=\"flex min-w-0 flex-1 flex-col px-1\">\n <span className=\"clarify-ui-menu-title flex items-center gap-1\">\n {t('contentActions.editPage')}\n <ExternalLink className=\"clarify-ui-menu-icon h-3 w-3\" />\n </span>\n <span className=\"clarify-ui-menu-description truncate\">{t('contentActions.editPageDescription')}</span>\n </span>\n <Check className=\"h-3.5 w-3.5 shrink-0 text-(--clarify-theme-tokens-colors-primary) opacity-0\" />\n </a>\n </MenuItem>\n ) : null}\n {actions.slice(0, 1).map((action) => {\n const Icon = action.icon\n const isCopied = copied === action.key\n\n return (\n <MenuItem key={action.key}>\n <button\n type=\"button\"\n onClick={action.run}\n className=\"clarify-content-actions-item clarify-ui-menu-item group flex w-full items-center gap-2 rounded-(--clarify-theme-tokens-radius-lg) px-1.5 py-1.5 text-left transition\"\n >\n <span className=\"clarify-ui-menu-icon flex shrink-0 rounded-(--clarify-theme-tokens-radius-md) border border-(--clarify-theme-tokens-colors-border) p-1.5\">\n <Icon className=\"h-4 w-4\" />\n </span>\n <span className=\"flex min-w-0 flex-1 flex-col px-1\">\n <span className=\"clarify-ui-menu-title\">{isCopied ? t('contentActions.copiedContent') : action.label}</span>\n <span className=\"clarify-ui-menu-description truncate\">{action.description}</span>\n </span>\n <Check className={`h-3.5 w-3.5 shrink-0 text-(--clarify-theme-tokens-colors-primary) transition ${isCopied ? 'opacity-100' : 'opacity-0'}`} />\n </button>\n </MenuItem>\n )\n })}\n {contentArtifactUrl ? (\n <MenuItem>\n <a\n href={contentArtifactUrl}\n target=\"_blank\"\n rel=\"noreferrer\"\n className=\"clarify-content-actions-item clarify-ui-menu-item group flex w-full items-center gap-2 rounded-(--clarify-theme-tokens-radius-lg) px-1.5 py-1.5 text-left no-underline transition\"\n >\n <span className=\"clarify-ui-menu-icon flex shrink-0 rounded-(--clarify-theme-tokens-radius-md) border border-(--clarify-theme-tokens-colors-border) p-1.5\">\n <FileText className=\"h-4 w-4\" />\n </span>\n <span className=\"flex min-w-0 flex-1 flex-col px-1\">\n <span className=\"clarify-ui-menu-title flex items-center gap-1\">\n {viewLabel}\n <ExternalLink className=\"clarify-ui-menu-icon h-3 w-3\" />\n </span>\n <span className=\"clarify-ui-menu-description truncate\">{viewDescription}</span>\n </span>\n <Check className=\"h-3.5 w-3.5 shrink-0 text-(--clarify-theme-tokens-colors-primary) opacity-0\" />\n </a>\n </MenuItem>\n ) : null}\n {actions.slice(1).map((action) => {\n const Icon = action.icon\n const isCopied = copied === action.key\n\n return (\n <MenuItem key={action.key}>\n <button\n type=\"button\"\n onClick={action.run}\n className=\"clarify-content-actions-item clarify-ui-menu-item group flex w-full items-center gap-2 rounded-(--clarify-theme-tokens-radius-lg) px-1.5 py-1.5 text-left transition\"\n >\n <span className=\"clarify-ui-menu-icon flex shrink-0 rounded-(--clarify-theme-tokens-radius-md) border border-(--clarify-theme-tokens-colors-border) p-1.5\">\n <Icon className=\"h-4 w-4\" />\n </span>\n <span className=\"flex min-w-0 flex-1 flex-col px-1\">\n <span className=\"clarify-ui-menu-title\">{isCopied ? action.copiedLabel ?? action.label : action.label}</span>\n <span className=\"clarify-ui-menu-description truncate\">{action.description}</span>\n </span>\n <Check className={`h-3.5 w-3.5 shrink-0 text-(--clarify-theme-tokens-colors-primary) transition ${isCopied ? 'opacity-100' : 'opacity-0'}`} />\n </button>\n </MenuItem>\n )\n })}\n <MenuItem key={llmsAction.key}>\n <button\n type=\"button\"\n onClick={llmsAction.run}\n className=\"clarify-content-actions-item clarify-ui-menu-item group flex w-full items-center gap-2 rounded-(--clarify-theme-tokens-radius-lg) px-1.5 py-1.5 text-left transition\"\n >\n <span className=\"clarify-ui-menu-icon flex shrink-0 rounded-(--clarify-theme-tokens-radius-md) border border-(--clarify-theme-tokens-colors-border) p-1.5\">\n <FileText className=\"h-4 w-4\" />\n </span>\n <span className=\"flex min-w-0 flex-1 flex-col px-1\">\n <span className=\"clarify-ui-menu-title\">{copied === llmsAction.key ? llmsAction.copiedLabel ?? llmsAction.label : llmsAction.label}</span>\n <span className=\"clarify-ui-menu-description truncate\">{llmsAction.description}</span>\n </span>\n <Check className={`h-3.5 w-3.5 shrink-0 text-(--clarify-theme-tokens-colors-primary) transition ${copied === llmsAction.key ? 'opacity-100' : 'opacity-0'}`} />\n </button>\n </MenuItem>\n </MenuItems>\n </Menu>\n </div>\n )\n}\n","export type ThemePreference = 'light' | 'dark' | 'system'\n\ntype CookieOptions = { domain?: string }\ntype WritableCookieOptions = CookieOptions & { maxAge: number }\n\nexport const themeCookieName = 'clarify-theme'\nexport const localeCookieName = 'clarify-locale'\n\nconst preferenceCookieMaxAge = 60 * 60 * 24 * 365\nconst cookiePath = '/'\n\nexport function isThemePreference(value: string | null | undefined): value is ThemePreference {\n return value === 'light' || value === 'dark' || value === 'system'\n}\n\nexport function readThemeCookie(): ThemePreference | null {\n if (typeof document === 'undefined') return null\n\n const value = readCookieValue(themeCookieName)\n return isThemePreference(value) ? value : null\n}\n\nexport function getStoredThemePreference(): ThemePreference {\n return readThemeCookie() ?? 'system'\n}\n\nexport function storeThemePreference(theme: ThemePreference): void {\n storeSharedPreferenceCookie(themeCookieName, theme)\n}\n\nexport function readLocaleCookie(): string | null {\n if (typeof document === 'undefined') return null\n return readCookieValue(localeCookieName)\n}\n\nexport function getStoredLocalePreference(locales?: readonly string[]): string | null {\n const locale = readLocaleCookie()\n if (!locale) return null\n return locales && !locales.includes(locale) ? null : locale\n}\n\nexport function storeLocalePreference(locale: string): void {\n storeSharedPreferenceCookie(localeCookieName, locale)\n}\n\nfunction storeSharedPreferenceCookie(name: string, value: string): void {\n if (typeof document === 'undefined') return\n\n const domains = resolveSharedCookieDomains()\n const domain = resolveWritableSharedCookieDomain(domains, name)\n\n deleteCookie(name)\n\n for (const candidateDomain of domains) {\n deleteCookie(name, { domain: candidateDomain })\n }\n\n writeCookie(name, value, { domain: domain ?? undefined, maxAge: preferenceCookieMaxAge })\n}\n\nexport function resolveSharedCookieDomains(hostname = typeof window !== 'undefined' ? window.location.hostname : ''): string[] {\n const normalizedHostname = hostname.toLowerCase().replace(/\\.$/, '')\n\n if (!normalizedHostname || normalizedHostname === 'localhost' || normalizedHostname.endsWith('.localhost') || isIpAddress(normalizedHostname)) {\n return []\n }\n\n const parts = normalizedHostname.split('.')\n\n if (parts.length < 2) return []\n\n const domains: string[] = []\n\n for (let index = parts.length - 2; index >= 0; index -= 1) {\n domains.push(parts.slice(index).join('.'))\n }\n\n return domains\n}\n\nfunction resolveWritableSharedCookieDomain(domains: string[], probePrefix = themeCookieName): string | null {\n for (const domain of domains) {\n const probeName = `${probePrefix}-probe-${Date.now()}-${Math.random().toString(36).slice(2)}`\n const probeValue = '1'\n\n writeCookie(probeName, probeValue, { domain, maxAge: 60 })\n\n const isWritable = readCookieValue(probeName) === probeValue\n deleteCookie(probeName, { domain })\n\n if (isWritable) return domain\n }\n\n return null\n}\n\nfunction readCookieValue(cookieName: string): string | null {\n const cookies = document.cookie ? document.cookie.split('; ') : []\n\n for (const cookie of cookies) {\n const separatorIndex = cookie.indexOf('=')\n const name = separatorIndex === -1 ? cookie : cookie.slice(0, separatorIndex)\n\n if (decodeURIComponent(name) !== cookieName) continue\n\n return separatorIndex === -1 ? '' : decodeURIComponent(cookie.slice(separatorIndex + 1))\n }\n\n return null\n}\n\nfunction deleteCookie(name: string, options: CookieOptions = {}): void {\n writeCookie(name, '', { domain: options.domain, maxAge: 0 })\n}\n\nfunction writeCookie(name: string, value: string, options: WritableCookieOptions): void {\n const attributes = [\n `${encodeURIComponent(name)}=${encodeURIComponent(value)}`,\n `Path=${cookiePath}`,\n `Max-Age=${options.maxAge}`,\n 'SameSite=Lax',\n ]\n\n if (options.domain) attributes.push(`Domain=.${options.domain}`)\n if (typeof window !== 'undefined' && window.location.protocol === 'https:') attributes.push('Secure')\n\n try {\n document.cookie = attributes.join('; ')\n } catch {\n // Ignore cookie write failures from restricted embeds.\n }\n}\n\nfunction isIpAddress(hostname: string): boolean {\n return /^\\d{1,3}(?:\\.\\d{1,3}){3}$/.test(hostname) || hostname.includes(':')\n}\n","import { createContext, useContext, useEffect, useMemo, useState } from 'react'\nimport type { ReactNode } from 'react'\n\nimport { getStoredThemePreference, storeThemePreference } from './cookies'\nimport type { ThemePreference } from './cookies'\n\nexport type Theme = ThemePreference\nexport type ResolvedTheme = 'light' | 'dark'\n\ntype ThemeContextValue = {\n theme: Theme\n resolvedTheme: ResolvedTheme\n setTheme: (theme: Theme) => void\n}\n\nconst ThemeContext = createContext<ThemeContextValue | null>(null)\n\nfunction getSystemTheme(): ResolvedTheme {\n if (typeof window === 'undefined') {\n return 'light'\n }\n\n return window.matchMedia('(prefers-color-scheme: dark)').matches ? 'dark' : 'light'\n}\n\nfunction getStoredTheme(): Theme {\n if (typeof window === 'undefined') {\n return 'system'\n }\n\n return getStoredThemePreference()\n}\n\nfunction storeTheme(theme: Theme) {\n storeThemePreference(theme)\n}\n\nfunction applyTheme(resolvedTheme: ResolvedTheme) {\n if (typeof document === 'undefined') {\n return\n }\n\n document.documentElement.classList.toggle('dark', resolvedTheme === 'dark')\n document.documentElement.style.colorScheme = resolvedTheme\n}\n\ntype ThemeProviderProps = { children: ReactNode }\n\nexport function ThemeProvider(props: ThemeProviderProps) {\n const { children } = props\n\n const [theme, setThemeState] = useState<Theme>(() => getStoredTheme())\n const [systemTheme, setSystemTheme] = useState<ResolvedTheme>(() => getSystemTheme())\n const resolvedTheme = theme === 'system' ? systemTheme : theme\n\n useEffect(() => {\n applyTheme(resolvedTheme)\n }, [resolvedTheme])\n\n useEffect(() => {\n if (typeof window === 'undefined') {\n return undefined\n }\n\n const mediaQuery = window.matchMedia('(prefers-color-scheme: dark)')\n\n function updateSystemTheme() {\n setSystemTheme(mediaQuery.matches ? 'dark' : 'light')\n }\n\n updateSystemTheme()\n mediaQuery.addEventListener('change', updateSystemTheme)\n\n return () => mediaQuery.removeEventListener('change', updateSystemTheme)\n }, [])\n\n const value = useMemo<ThemeContextValue>(\n () => ({\n theme,\n resolvedTheme,\n setTheme(nextTheme) {\n setThemeState(nextTheme)\n storeTheme(nextTheme)\n },\n }),\n [resolvedTheme, theme],\n )\n\n return <ThemeContext.Provider value={value}>{children}</ThemeContext.Provider>\n}\n\nexport function useTheme() {\n const context = useContext(ThemeContext)\n\n if (!context) {\n throw new Error('[clarify] useTheme must be used within ThemeProvider')\n }\n\n return context\n}\n","import { Monitor, Moon, Sun } from 'lucide-react'\n\nimport { useBuiltInText } from '../core/i18n'\n\nimport { useTheme } from './ThemeProvider'\n\nexport function ThemeToggle() {\n const { theme, setTheme } = useTheme()\n const t = useBuiltInText()\n const nextTheme = getNextTheme(theme)\n const label = getThemeLabel(nextTheme, t)\n\n return (\n <button\n type=\"button\"\n className=\"clarify-theme-toggle relative flex size-8 items-center justify-center rounded-(--clarify-theme-tokens-radius-md) transition hover:bg-(--clarify-ui-hover-background)\"\n aria-label={label}\n title={label}\n onClick={() => setTheme(nextTheme)}\n >\n <span className=\"absolute size-12 pointer-fine:hidden\" />\n {theme === 'system' ? <Monitor className=\"h-5 w-5 stroke-(--clarify-theme-tokens-colors-foreground)\" /> : null}\n {theme === 'light' ? <Sun className=\"h-5 w-5 stroke-(--clarify-theme-tokens-colors-foreground)\" /> : null}\n {theme === 'dark' ? <Moon className=\"h-5 w-5 stroke-white\" /> : null}\n </button>\n )\n}\n\nfunction getNextTheme(theme: 'light' | 'dark' | 'system') {\n if (theme === 'system') return 'light'\n if (theme === 'light') return 'dark'\n return 'system'\n}\n\nfunction getThemeLabel(theme: 'light' | 'dark' | 'system', t: ReturnType<typeof useBuiltInText>) {\n if (theme === 'dark') return t('theme.switchToDark')\n if (theme === 'light') return t('theme.switchToLight')\n return t('theme.switchToSystem')\n}\n","import type { LocalizedText } from '../core/types'\n\n/**\n * Resolve a localized text value for the given locale.\n * Falls back to the fallback locale, then the first available value,\n * then an empty string.\n */\nexport function resolveLocalizedText(text: LocalizedText, locale?: string, fallbackLocale?: string): string {\n if (typeof text === 'string') return text\n return (locale ? text[locale] : undefined)\n ?? (fallbackLocale ? text[fallbackLocale] : undefined)\n ?? Object.values(text)[0]\n ?? ''\n}\n","export function normalizeRoutePath(path: string): string {\n const [pathname, suffix = ''] = path.split(/([?#].*)/, 2)\n const normalizedPathname = pathname.replace(/^\\/+/, '/').replace(/\\/+$/, '') || '/'\n return `${normalizedPathname}${suffix}`\n}\n\nfunction stripLocalePathPrefix(path: string, locale?: string): string {\n if (!locale) return normalizeRoutePath(path)\n const [pathname, suffix = ''] = normalizeRoutePath(path).split(/([?#].*)/, 2)\n const localePrefix = `/${locale}`\n if (pathname === localePrefix) return `/${suffix}`.replace(/^\\/$/, '/')\n if (!pathname.startsWith(`${localePrefix}/`)) return `${pathname}${suffix}`\n return `${pathname.slice(localePrefix.length) || '/'}${suffix}`\n}\n\nexport function isSameRoutePath(a: string | undefined, b: string | undefined, locale?: string): boolean {\n if (!a || !b) return false\n const normalizedA = normalizeRoutePath(a)\n const normalizedB = normalizeRoutePath(b)\n return normalizedA === normalizedB || stripLocalePathPrefix(normalizedA, locale) === normalizedB || normalizedA === stripLocalePathPrefix(normalizedB, locale)\n}\n","import * as LucideIcons from 'lucide-react'\nimport type { ComponentType, SVGProps } from 'react'\n\nexport type LucideIconComponent = ComponentType<SVGProps<SVGSVGElement>>\n\n/**\n * Registry of all Lucide icon components keyed by their PascalCase export name.\n *\n * Access icons via index lookup (e.g. `lucideIconRegistry[name]`) so React\n * tooling does not mistake the access for a component created during render.\n */\nexport const lucideIconRegistry = LucideIcons as unknown as Record<string, LucideIconComponent | undefined>\n\nfunction toPascalCase(value: string): string {\n return value\n .split(/[^a-zA-Z0-9]+/)\n .filter(Boolean)\n .map(part => `${part.charAt(0).toUpperCase()}${part.slice(1)}`)\n .join('')\n}\n\n/**\n * Resolve an icon name into the matching Lucide registry key.\n *\n * Accepts both the exact PascalCase export name (e.g. `ArrowRight`) and\n * kebab/space/snake variants (e.g. `arrow-right`), returning `undefined`\n * when no matching icon exists.\n */\nexport function resolveLucideIconName(name: string | undefined): string | undefined {\n if (!name) return undefined\n if (lucideIconRegistry[name]) return name\n const pascalName = toPascalCase(name)\n return lucideIconRegistry[pascalName] ? pascalName : undefined\n}\n","import clsx from 'clsx'\n\nimport { lucideIconRegistry, resolveLucideIconName } from '../utils/lucide'\n\nexport type NavigationIconProps = { name?: string; className?: string }\n\nexport function NavigationIcon(arg0: NavigationIconProps) {\n const { name, className } = arg0\n\n if (!name) return null\n\n const iconName = resolveLucideIconName(name)\n if (!iconName) return null\n\n const Icon = lucideIconRegistry[iconName]\n if (!Icon) return null\n\n return <Icon className={clsx('shrink-0 stroke-current', className)} aria-hidden=\"true\" />\n}\n","export function remToPx(remValue: number) {\n const rootFontSize =\n typeof window === 'undefined'\n ? 16\n : Number.parseFloat(window.getComputedStyle(document.documentElement).fontSize)\n\n return remValue * rootFontSize\n}\n","import {\n useCallback,\n createContext,\n useContext,\n useEffect,\n useLayoutEffect,\n useRef,\n useState,\n type ReactNode,\n type RefObject,\n} from 'react'\nimport { createStore, useStore, type StoreApi } from 'zustand'\n\nimport { remToPx } from '../utils/remToPx'\n\nexport interface Section {\n id: string\n title: string\n level?: number\n offsetRem?: number\n badge?: string\n tags?: string[]\n headingRef?: RefObject<HTMLHeadingElement | null>\n}\n\ninterface SectionState {\n sections: Section[]\n visibleSections: string[]\n setVisibleSections: (visibleSections: string[]) => void\n registerHeading: (heading: {\n id: string\n ref: RefObject<HTMLHeadingElement | null>\n offsetRem: number\n }) => void\n}\n\nfunction createSectionStore(sections: Section[]) {\n return createStore<SectionState>()((set) => ({\n sections,\n visibleSections: [],\n setVisibleSections: (visibleSections) =>\n set((state) =>\n state.visibleSections.join() === visibleSections.join()\n ? {}\n : { visibleSections },\n ),\n registerHeading: ({ id, ref, offsetRem }) =>\n set((state) => ({\n sections: state.sections.map((section) =>\n section.id === id\n ? {\n ...section,\n headingRef: ref,\n offsetRem,\n }\n : section,\n ),\n })),\n }))\n}\n\nfunction getHeaderBlockedTop(innerHeight: number, headerTopAreaRef?: RefObject<HTMLDivElement | null>) {\n const blockedTop = headerTopAreaRef?.current?.offsetHeight ?? 0\n return Math.max(0, Math.min(innerHeight, blockedTop))\n}\n\nfunction getVisibleViewportTop(scrollY: number, innerHeight: number, headerTopAreaRef?: RefObject<HTMLDivElement | null>) {\n return scrollY + getHeaderBlockedTop(innerHeight, headerTopAreaRef)\n}\n\nfunction getVisibleViewportBottom(scrollY: number, innerHeight: number, headerTopAreaRef?: RefObject<HTMLDivElement | null>) {\n const blockedTop = getHeaderBlockedTop(innerHeight, headerTopAreaRef)\n\n return scrollY + Math.max(0, innerHeight - blockedTop)\n}\n\ntype VisibilitySnapshot = {\n scrollY: number\n innerHeight: number\n blockedTop: number\n viewportTop: number\n viewportBottom: number\n visibleSections: string[]\n}\n\nfunction computeVisibleSections(sections: Section[], scrollY: number, viewportTop: number, viewportBottom: number) {\n const visibleSections: string[] = []\n\n for (let sectionIndex = 0; sectionIndex < sections.length; sectionIndex += 1) {\n const { id, headingRef, offsetRem = 0 } = sections[sectionIndex]\n\n if (!headingRef?.current) continue\n\n const offset = remToPx(offsetRem)\n const top = headingRef.current.getBoundingClientRect().top + scrollY\n const sectionTop = top - offset\n\n if (sectionIndex === 0 && sectionTop > viewportTop) {\n visibleSections.push('_top')\n }\n\n const nextSection = sections[sectionIndex + 1]\n const nextOffset = remToPx(nextSection?.offsetRem ?? offsetRem)\n const sectionBottom =\n (nextSection?.headingRef?.current?.getBoundingClientRect().top ?? Infinity) +\n scrollY -\n nextOffset\n\n if (sectionBottom > viewportTop && sectionTop < viewportBottom) {\n visibleSections.push(id)\n }\n }\n\n return visibleSections\n}\n\nfunction useSectionVisibilityDebug(_headerTopAreaRef?: RefObject<HTMLDivElement | null>) {\n const lastDebugSignatureRef = useRef('')\n\n return (snapshot: VisibilitySnapshot) => {\n const { scrollY, innerHeight, blockedTop, visibleSections } = snapshot\n const debugSignature = [\n Math.round(scrollY),\n innerHeight,\n Math.round(blockedTop),\n visibleSections.join(','),\n ].join('|')\n\n if (lastDebugSignatureRef.current === debugSignature) return\n lastDebugSignatureRef.current = debugSignature\n }\n}\n\nfunction useSectionVisibilityObserver(checkVisibleSections: () => void, headerTopAreaRef?: RefObject<HTMLDivElement | null>) {\n useEffect(() => {\n if (typeof window === 'undefined') return undefined\n\n const raf = window.requestAnimationFrame(() => checkVisibleSections())\n window.addEventListener('scroll', checkVisibleSections, { passive: true })\n window.addEventListener('resize', checkVisibleSections)\n\n const resizeObserver =\n typeof ResizeObserver === 'undefined'\n ? undefined\n : new ResizeObserver(() => {\n checkVisibleSections()\n })\n if (resizeObserver && headerTopAreaRef?.current) {\n resizeObserver.observe(headerTopAreaRef.current)\n }\n\n return () => {\n window.cancelAnimationFrame(raf)\n window.removeEventListener('scroll', checkVisibleSections)\n window.removeEventListener('resize', checkVisibleSections)\n resizeObserver?.disconnect()\n }\n }, [checkVisibleSections, headerTopAreaRef])\n}\n\nfunction useVisibleSections(sectionStore: StoreApi<SectionState>, headerTopAreaRef?: RefObject<HTMLDivElement | null>) {\n const setVisibleSections = useStore(sectionStore, (state) => state.setVisibleSections)\n const sections = useStore(sectionStore, (state) => state.sections)\n const emitVisibilityDebug = useSectionVisibilityDebug(headerTopAreaRef)\n\n const checkVisibleSections = useCallback(() => {\n if (typeof window === 'undefined') return\n\n const { innerHeight, scrollY } = window\n const viewportTop = getVisibleViewportTop(scrollY, innerHeight, headerTopAreaRef)\n const viewportBottom = getVisibleViewportBottom(scrollY, innerHeight, headerTopAreaRef)\n const blockedTop = getHeaderBlockedTop(innerHeight, headerTopAreaRef)\n const newVisibleSections = computeVisibleSections(sections, scrollY, viewportTop, viewportBottom)\n\n emitVisibilityDebug({\n scrollY,\n innerHeight,\n blockedTop,\n viewportTop,\n viewportBottom,\n visibleSections: newVisibleSections,\n })\n\n setVisibleSections(newVisibleSections)\n }, [emitVisibilityDebug, headerTopAreaRef, sections, setVisibleSections])\n\n useSectionVisibilityObserver(checkVisibleSections, headerTopAreaRef)\n}\n\nfunction useSyncSections(sectionStore: StoreApi<SectionState>, sections: Section[]) {\n useIsomorphicLayoutEffect(() => {\n sectionStore.setState((state) => ({\n sections: sections.map((section) => {\n const registeredSection = state.sections.find((item) => item.id === section.id)\n return {\n ...section,\n headingRef: registeredSection?.headingRef,\n offsetRem: registeredSection?.offsetRem ?? section.offsetRem,\n }\n }),\n visibleSections: [],\n }))\n }, [sectionStore, sections])\n}\n\nconst SectionStoreContext = createContext<StoreApi<SectionState> | null>(null)\n\nconst useIsomorphicLayoutEffect = typeof window === 'undefined' ? useEffect : useLayoutEffect\n\ntype SectionProviderProps = {\n sections: Section[]\n headerTopAreaRef?: RefObject<HTMLDivElement | null>\n children: ReactNode\n}\n\nexport function SectionProvider(arg0: SectionProviderProps) { const {\n sections,\n headerTopAreaRef,\n children,\n} = arg0\n\n const [sectionStore] = useState(() => createSectionStore(sections))\n\n useVisibleSections(sectionStore, headerTopAreaRef)\n useSyncSections(sectionStore, sections)\n\n return <SectionStoreContext.Provider value={sectionStore}>{children}</SectionStoreContext.Provider>\n}\n\nexport function useSectionStore<T>(selector: (state: SectionState) => T) {\n const store = useContext(SectionStoreContext)\n\n if (!store) {\n throw new Error('[clarify] useSectionStore must be used within SectionProvider')\n }\n\n return useStore(store, selector)\n}\n","import { CloseButton } from '@headlessui/react'\nimport clsx from 'clsx'\nimport { AnimatePresence, motion, useIsPresent } from 'framer-motion'\nimport { useState } from 'react'\nimport { Link, useLocation } from 'react-router-dom'\n\nimport { useSectionStore } from '../app/SectionProvider'\nimport { useBuiltInText } from '../i18n'\nimport type { NavigationNode } from '../types'\nimport { isSameRoutePath, normalizeRoutePath } from '../utils/path'\nimport { remToPx } from '../utils/remToPx'\n\nimport { NavigationIcon } from './icons'\nimport { useIsInsideMobileNavigation } from './mobile'\n\ntype NavGroup = {\n title: string\n icon?: string\n links: Array<{\n title: string\n href: string\n icon?: string\n }>\n}\n\nfunction useInitialValue<T>(value: T, condition = true) {\n const [initialValue] = useState(value)\n return condition ? initialValue : value\n}\n\nfunction normalizePath(path: string) {\n return path === '' ? '/' : path\n}\n\nfunction navigationToGroups(navigation: NavigationNode[], defaultTitle: string): NavGroup[] {\n return navigation.map((node) => {\n const children = node.children?.length ? node.children : [node]\n\n return {\n title: node.children?.length ? node.title : defaultTitle,\n icon: node.icon,\n links: children.map((child) => ({\n title: child.title,\n href: normalizePath(child.path),\n icon: child.icon,\n })),\n }\n })\n}\n\nconst sectionBadgeColorStyles: Record<string, string> = {\n GET: 'text-emerald-500 dark:text-emerald-400',\n POST: 'text-sky-500 dark:text-sky-400',\n PUT: 'text-amber-500 dark:text-amber-400',\n PATCH: 'text-amber-500 dark:text-amber-400',\n DELETE: 'text-red-500 dark:text-rose-500',\n OPTIONS: 'text-violet-500 dark:text-violet-400',\n HEAD: 'text-zinc-500 dark:text-zinc-400',\n TRACE: 'text-fuchsia-500 dark:text-fuchsia-400',\n WEBHOOK: 'text-violet-500 dark:text-violet-400',\n}\n\ntype SectionBadgeProps = { children: string }\n\nfunction SectionBadge(arg0: SectionBadgeProps) { const { children } = arg0\n\n return (\n <span\n className={clsx(\n 'clarify-navigation-section-badge inline-flex shrink-0 justify-end font-semibold uppercase tracking-wide',\n sectionBadgeColorStyles[children.toUpperCase()] ?? 'clarify-ui-menu-description',\n )}\n >\n {children}\n </span>\n )\n}\n\ntype NavLinkProps = {\n href: string\n children: React.ReactNode\n badge?: string\n icon?: string\n tags?: string[]\n active?: boolean\n isAnchorLink?: boolean\n level?: number\n}\n\nfunction NavLink(arg0: NavLinkProps) { const {\n href,\n children,\n badge,\n icon,\n active = false,\n isAnchorLink = false,\n level,\n} = arg0\n\n return (\n <CloseButton\n as={Link}\n to={href}\n aria-current={active ? 'page' : undefined}\n className={clsx(\n 'clarify-navigation-link flex h-8 items-center justify-between gap-2 pr-3 transition',\n isAnchorLink ? 'clarify-navigation-anchor-link' : 'pl-4',\n )}\n style={isAnchorLink ? { paddingLeft: `${1.75 + Math.max(0, (level ?? 2) - 2) * 0.75}rem` } : undefined}\n >\n <span className=\"flex min-w-0 flex-1 items-center gap-2\">\n {icon ? <NavigationIcon name={icon} className=\"h-3.5 w-3.5\" /> : null}\n {badge ? <SectionBadge>{badge}</SectionBadge> : null}\n <span className=\"min-w-0 truncate whitespace-nowrap\">{children}</span>\n </span>\n </CloseButton>\n )\n}\n\ntype VisibleSectionHighlightProps = { group: NavGroup; pathname: string; currentLocale?: string }\n\nfunction VisibleSectionHighlight(arg0: VisibleSectionHighlightProps) { const { group, pathname, currentLocale } = arg0\n\n const [sections, visibleSections] = useInitialValue(\n [useSectionStore((s) => s.sections), useSectionStore((s) => s.visibleSections)],\n useIsInsideMobileNavigation(),\n )\n\n const isPresent = useIsPresent()\n const firstVisibleSectionIndex = Math.max(\n 0,\n [{ id: '_top' }, ...sections].findIndex((section) => section.id === visibleSections[0]),\n )\n const itemHeight = remToPx(2)\n const height = isPresent ? Math.max(1, visibleSections.length) * itemHeight : itemHeight\n const top = group.links.findIndex((link) => isSameRoutePath(link.href, pathname, currentLocale)) * itemHeight + firstVisibleSectionIndex * itemHeight\n\n return (\n <motion.div\n initial={{ opacity: 0, height: 0 }}\n animate={{ opacity: 1, top, height, transition: { duration: 0.2, ease: 'easeOut' } }}\n exit={{ opacity: 0, height: 0, transition: { duration: 0.15, ease: 'easeIn' } }}\n className=\"clarify-navigation-section-highlight absolute inset-x-0 top-0 will-change-transform\"\n style={{ borderRadius: 'var(--clarify-theme-tokens-radius-sm)', height, top }}\n />\n )\n}\n\ntype ActivePageMarkerProps = { group: NavGroup; pathname: string; currentLocale?: string }\n\nfunction ActivePageMarker(arg0: ActivePageMarkerProps) { const { group, pathname, currentLocale } = arg0\n\n const itemHeight = remToPx(2)\n const offset = remToPx(0.25)\n const activePageIndex = group.links.findIndex((link) => isSameRoutePath(link.href, pathname, currentLocale))\n const top = offset + activePageIndex * itemHeight\n\n return (\n <motion.div\n className=\"absolute left-2 h-6 w-px bg-(--clarify-theme-tokens-colors-primary)\"\n initial={{ opacity: 0, top }}\n animate={{ opacity: 1, top, transition: { duration: 0.2, ease: 'easeOut' } }}\n exit={{ opacity: 0, transition: { duration: 0.15, ease: 'easeIn' } }}\n style={{ top }}\n />\n )\n}\n\ntype NavigationGroupProps = { group: NavGroup; className?: string; currentLocale?: string }\n\nfunction NavigationGroup(arg0: NavigationGroupProps) { const { group, className, currentLocale } = arg0\n\n const isInsideMobileNavigation = useIsInsideMobileNavigation()\n const [pathname, sections] = useInitialValue(\n [normalizeRoutePath(useLocation().pathname), useSectionStore((s) => s.sections)],\n isInsideMobileNavigation,\n )\n const isActiveGroup = group.links.findIndex((link) => isSameRoutePath(link.href, pathname, currentLocale)) !== -1\n\n return (\n <li className={clsx('clarify-navigation-group relative mb-6', className)}>\n <h2 className=\"clarify-navigation-group-title flex items-center gap-2\">\n <NavigationIcon name={group.icon} className=\"clarify-navigation-group-title-icon h-3.5 w-3.5\" />\n <span>{group.title}</span>\n </h2>\n <div className=\"relative mt-3 pl-2\">\n <AnimatePresence initial={!isInsideMobileNavigation}>\n {isActiveGroup ? <VisibleSectionHighlight group={group} pathname={pathname} currentLocale={currentLocale} /> : null}\n </AnimatePresence>\n <div className=\"absolute inset-y-0 left-2 w-px bg-(--clarify-theme-tokens-colors-border) dark:bg-white/5\" />\n <AnimatePresence initial={false}>\n {isActiveGroup ? <ActivePageMarker group={group} pathname={pathname} currentLocale={currentLocale} /> : null}\n </AnimatePresence>\n <ul role=\"list\" className=\"border-l border-transparent\">\n {group.links.map((link) => {\n const active = isSameRoutePath(link.href, pathname, currentLocale)\n return (\n <li key={link.href} className=\"relative\">\n <NavLink href={link.href} icon={link.icon} active={active}>\n {link.title}\n </NavLink>\n <AnimatePresence initial={false}>\n {active && sections.length > 0 ? (\n <motion.ul\n role=\"list\"\n initial={{ opacity: 0 }}\n animate={{ opacity: 1, transition: { delay: 0.1 } }}\n exit={{ opacity: 0, transition: { duration: 0.15 } }}\n >\n {sections.map((section) => (\n <li key={section.id}>\n <NavLink href={`${link.href}#${section.id}`} badge={section.badge} tags={section.tags} isAnchorLink level={section.level}>\n {section.title}\n </NavLink>\n </li>\n ))}\n </motion.ul>\n ) : null}\n </AnimatePresence>\n </li>\n )\n })}\n </ul>\n </div>\n </li>\n )\n}\n\nexport type NavigationProps = { navigation: NavigationNode[]; className?: string; currentLocale?: string }\n\nexport function Navigation(arg0: NavigationProps) { const { navigation, className, currentLocale } = arg0\n\n const t = useBuiltInText()\n const groups = navigationToGroups(navigation, t('navigation.documentation'))\n\n return (\n <nav className={clsx('clarify-navigation', className)}>\n <ul role=\"list\" className=\"clarify-navigation-list\">\n {groups.map((group, groupIndex) => (\n <NavigationGroup key={group.title} group={group} className={groupIndex === 0 ? 'mt-0' : ''} currentLocale={currentLocale} />\n ))}\n </ul>\n </nav>\n )\n}\n","import { Dialog, DialogBackdrop, DialogPanel, Menu, MenuButton, MenuItem, MenuItems, TransitionChild } from '@headlessui/react'\nimport clsx from 'clsx'\nimport { motion } from 'framer-motion'\nimport { Check, ChevronDown, Menu as MenuGlyph, X } from 'lucide-react'\nimport { createContext, Suspense, useContext } from 'react'\nimport { Link, useLocation } from 'react-router-dom'\nimport { create } from 'zustand'\n\nimport { useBuiltInText } from '../i18n'\nimport type { Config, NavigationNode, NavigationTab, RouteItem } from '../types'\nimport { isSameRoutePath, normalizeRoutePath } from '../utils/path'\n\nimport { Header } from './Header'\nimport { NavigationIcon } from './icons'\nimport { Navigation } from './Navigation'\n\nconst IsInsideMobileNavigationContext = createContext(false)\n\nfunction hasPath(nodes: NavigationNode[], pathname: string, currentLocale?: string): boolean {\n return nodes.some((node) => isSameRoutePath(node.path, pathname, currentLocale) || hasPath(node.children ?? [], pathname, currentLocale))\n}\n\nfunction isActiveTab(tab: NavigationTab, pathname: string, currentLocale?: string): boolean {\n return isSameRoutePath(tab.path, pathname, currentLocale) || hasPath(tab.children, pathname, currentLocale)\n}\n\ntype MobileTabsSelectProps = { tabs?: NavigationTab[]; currentLocale?: string }\n\nfunction MobileTabsSelect(arg0: MobileTabsSelectProps) {\n const { tabs, currentLocale } = arg0\n const pathname = normalizeRoutePath(useLocation().pathname)\n if (!tabs?.length) return null\n\n const activeTab = tabs.find((tab) => isActiveTab(tab, pathname, currentLocale)) ?? tabs[0]\n\n return (\n <Menu as=\"div\" className=\"clarify-mobile-tabs-select mb-6\">\n <MenuButton className=\"clarify-mobile-tabs-select-trigger clarify-ui-control group flex h-10 w-full items-center justify-between gap-2 rounded-(--clarify-theme-tokens-radius-xl) border border-(--clarify-theme-tokens-colors-border) px-4 text-left font-semibold shadow-xs shadow-zinc-900/5 transition dark:border-white/10\">\n <span className=\"flex min-w-0 items-center gap-2\">\n <NavigationIcon name={activeTab.icon} className=\"h-4 w-4 shrink-0 text-(--clarify-theme-tokens-colors-primary)\" />\n <span className=\"truncate\">{activeTab.title}</span>\n </span>\n <ChevronDown className=\"h-4 w-4 shrink-0 text-(--clarify-theme-tokens-colors-muted) transition-transform group-aria-expanded:rotate-180\" />\n </MenuButton>\n <MenuItems className=\"clarify-mobile-tabs-select-list clarify-ui-menu mt-2 flex flex-col gap-1 rounded-(--clarify-theme-tokens-radius-xl) border border-(--clarify-theme-tokens-colors-border) bg-(--clarify-theme-tokens-colors-surface) p-1 shadow-lg shadow-zinc-900/5 focus:outline-none dark:border-white/10 dark:bg-zinc-900 dark:shadow-none\">\n {tabs.map((tab) => {\n const active = isActiveTab(tab, pathname, currentLocale)\n\n return (\n <MenuItem key={`${tab.title}-${tab.path}`}>\n <Link\n to={tab.path}\n className={clsx(\n 'clarify-mobile-tabs-select-item clarify-ui-menu-item flex items-center justify-between gap-3 rounded-(--clarify-theme-tokens-radius-lg) px-3 py-2.5 no-underline transition',\n active && 'clarify-ui-menu-item-active',\n )}\n aria-current={active ? 'page' : undefined}\n >\n <span className=\"flex min-w-0 items-start gap-2\">\n <NavigationIcon name={tab.icon} className=\"mt-0.5 h-4 w-4 shrink-0\" />\n <span className=\"min-w-0 whitespace-normal wrap-anywhere font-medium leading-5\">{tab.title}</span>\n </span>\n {active ? <Check className=\"mt-0.5 h-4 w-4 shrink-0\" /> : null}\n </Link>\n </MenuItem>\n )\n })}\n </MenuItems>\n </Menu>\n )\n}\n\ntype MobileNavigationDialogProps = {\n config: Config\n isOpen: boolean\n navigation: NavigationNode[]\n tabs?: NavigationTab[]\n routes: RouteItem[]\n currentLocale?: string\n currentRoute?: RouteItem\n close: () => void\n}\n\nfunction MobileNavigationDialog(arg0: MobileNavigationDialogProps) { const {\n config,\n isOpen,\n navigation,\n tabs,\n routes,\n currentLocale,\n currentRoute,\n close,\n} = arg0\n\n return (\n <Dialog transition open={isOpen} onClose={close} className=\"clarify-mobile-navigation-dialog fixed inset-0 z-50 lg:hidden\">\n <DialogBackdrop\n transition\n className=\"clarify-mobile-navigation-backdrop clarify-ui-backdrop fixed inset-0 top-14 backdrop-blur-xs data-closed:opacity-0 data-enter:duration-300 data-enter:ease-out data-leave:duration-200 data-leave:ease-in\"\n />\n\n <DialogPanel>\n <TransitionChild>\n <Header\n config={config}\n navigation={navigation}\n tabs={tabs}\n routes={routes}\n currentLocale={currentLocale}\n currentRoute={currentRoute}\n className=\"data-closed:opacity-0 data-enter:duration-300 data-enter:ease-out data-leave:duration-200 data-leave:ease-in\"\n />\n </TransitionChild>\n\n <TransitionChild>\n <motion.div\n layoutScroll\n className=\"clarify-mobile-navigation-panel fixed top-14 bottom-0 left-0 w-full max-w-sm overflow-y-auto bg-(--clarify-theme-tokens-colors-background) px-4 pt-6 pb-4 shadow-lg ring-1 shadow-zinc-900/10 ring-(--clarify-theme-tokens-colors-border) duration-500 ease-in-out data-closed:-translate-x-full sm:px-6 sm:pb-10 dark:bg-zinc-950 dark:ring-zinc-800\"\n >\n <MobileTabsSelect tabs={tabs} currentLocale={currentLocale} />\n <Navigation navigation={navigation} currentLocale={currentLocale} />\n </motion.div>\n </TransitionChild>\n </DialogPanel>\n </Dialog>\n )\n}\n\nexport function useIsInsideMobileNavigation() {\n return useContext(IsInsideMobileNavigationContext)\n}\n\nexport const useMobileNavigationStore = create<{\n isOpen: boolean\n open: () => void\n close: () => void\n toggle: () => void\n}>()((set) => ({\n isOpen: false,\n open: () => set({ isOpen: true }),\n close: () => set({ isOpen: false }),\n toggle: () => set((state) => ({ isOpen: !state.isOpen })),\n}))\n\nexport type MobileNavigationProps = {\n config: Config\n navigation: NavigationNode[]\n tabs?: NavigationTab[]\n routes: RouteItem[]\n currentLocale?: string\n currentRoute?: RouteItem\n}\n\nexport function MobileNavigation(arg0: MobileNavigationProps) { const {\n config,\n navigation,\n tabs,\n routes,\n currentLocale,\n currentRoute,\n} = arg0\n\n const isInsideMobileNavigation = useIsInsideMobileNavigation()\n const { isOpen, toggle, close } = useMobileNavigationStore()\n const t = useBuiltInText()\n const ToggleIcon = isOpen ? X : MenuGlyph\n\n return (\n <IsInsideMobileNavigationContext.Provider value={true}>\n <button\n type=\"button\"\n className=\"clarify-mobile-navigation-button clarify-ui-icon-button relative flex size-8 items-center justify-center rounded-(--clarify-theme-tokens-radius-md) transition\"\n aria-label={t('navigation.toggle')}\n onClick={toggle}\n >\n <span className=\"absolute size-12 pointer-fine:hidden\" />\n <ToggleIcon className=\"h-4 w-4 stroke-(--clarify-theme-tokens-colors-foreground) dark:stroke-white\" />\n </button>\n {!isInsideMobileNavigation ? (\n <Suspense fallback={null}>\n <MobileNavigationDialog\n config={config}\n navigation={navigation}\n tabs={tabs}\n routes={routes}\n currentLocale={currentLocale}\n currentRoute={currentRoute}\n isOpen={isOpen}\n close={close}\n />\n </Suspense>\n ) : null}\n </IsInsideMobileNavigationContext.Provider>\n )\n}\n","import { useRef, useState } from 'react'\n\nexport function useSearchProps() {\n const buttonRef = useRef<React.ElementRef<'button'>>(null)\n const [open, setOpen] = useState(false)\n\n return {\n buttonProps: {\n ref: buttonRef,\n onClick() {\n setOpen(true)\n },\n },\n dialogProps: {\n open,\n setOpen,\n },\n }\n}\n","import { Search as SearchIcon } from 'lucide-react'\nimport { lazy, Suspense } from 'react'\n\nimport { useBuiltInText } from '../i18n'\nimport type { NavigationNode, RouteItem } from '../types'\n\nimport { useSearchProps } from './search/useSearchProps'\n\nconst SearchDialog = lazy(() => import('./search/SearchDialog'))\n\nfunction getModifierKey() {\n if (typeof navigator === 'undefined') return 'Ctrl '\n return /(Mac|iPhone|iPod|iPad)/i.test(navigator.platform) ? '⌘' : 'Ctrl '\n}\n\nexport type SearchProps = { routes: RouteItem[]; navigation: NavigationNode[]; routePrefix?: string; currentLocale?: string }\n\nexport function Search(arg0: SearchProps) { const { routes, navigation, routePrefix, currentLocale } = arg0\n\n const t = useBuiltInText()\n const modifierKey = getModifierKey()\n const { buttonProps, dialogProps } = useSearchProps()\n\n return (\n <div className=\"clarify-search hidden w-80 max-w-(--clarify-search-max-width) lg:block\">\n <button\n type=\"button\"\n className=\"clarify-search-button hidden h-9 w-full items-center gap-2 rounded-(--clarify-theme-tokens-radius-lg) bg-(--clarify-theme-tokens-colors-surface) pr-3 pl-2.5 font-medium ring-1 ring-(--clarify-theme-tokens-colors-border) transition hover:bg-(--clarify-theme-tokens-colors-background) lg:flex dark:bg-white/5 dark:ring-white/10 dark:ring-inset dark:hover:bg-white/10\"\n {...buttonProps}\n >\n <SearchIcon className=\"h-5 w-5 stroke-current\" />\n {t('search.button')}\n <kbd className=\"clarify-search-shortcut ml-auto rounded-(--clarify-theme-tokens-radius-sm) bg-(--clarify-theme-tokens-colors-background) px-1.5 py-0.5 ring-1 ring-(--clarify-theme-tokens-colors-border) dark:bg-white/5 dark:ring-white/10\">\n <kbd className=\"font-sans\">{modifierKey}</kbd>\n <kbd className=\"font-sans\">K</kbd>\n </kbd>\n </button>\n <Suspense fallback={null}>\n <SearchDialog className=\"hidden lg:block\" routes={routes} navigation={navigation} routePrefix={routePrefix} currentLocale={currentLocale} {...dialogProps} />\n </Suspense>\n </div>\n )\n}\n\nexport type MobileSearchProps = {\n routes: RouteItem[]\n navigation: NavigationNode[]\n routePrefix?: string\n currentLocale?: string\n onNavigate?: () => void\n}\n\nexport function MobileSearch(arg0: MobileSearchProps) { const {\n routes,\n navigation,\n routePrefix,\n currentLocale,\n onNavigate,\n} = arg0\n\n const t = useBuiltInText()\n const { buttonProps, dialogProps } = useSearchProps()\n\n return (\n <div className=\"clarify-mobile-search contents lg:hidden\">\n <button\n type=\"button\"\n className=\"clarify-mobile-search-button clarify-ui-control relative flex size-8 items-center justify-center rounded-(--clarify-theme-tokens-radius-md) transition lg:hidden\"\n aria-label={t('search.placeholder')}\n {...buttonProps}\n >\n <span className=\"absolute size-12 pointer-fine:hidden\" />\n <SearchIcon className=\"h-5 w-5 stroke-(--clarify-theme-tokens-colors-foreground) dark:stroke-white\" />\n </button>\n <Suspense fallback={null}>\n <SearchDialog className=\"lg:hidden\" routes={routes} navigation={navigation} routePrefix={routePrefix} currentLocale={currentLocale} onNavigate={onNavigate} {...dialogProps} />\n </Suspense>\n </div>\n )\n}\n","import clsx from 'clsx'\n\nimport type { LogoConfig } from '../core/types'\n\nexport type SiteLogoProps = {\n logo?: LogoConfig\n className?: string\n}\n\nexport function SiteLogo(arg0: SiteLogoProps) { const { logo, className } = arg0\n if (!logo) return null\n\n if (typeof logo === 'string') {\n return <img src={logo} alt=\"\" className={clsx('clarify-logo', className)} />\n }\n\n const lightLogo = logo.light ?? logo.dark\n const darkLogo = logo.dark ?? logo.light\n\n if (!lightLogo || !darkLogo) return null\n if (lightLogo === darkLogo) {\n return <img src={lightLogo} alt=\"\" className={clsx('clarify-logo', className)} />\n }\n\n return (\n <>\n <img src={lightLogo} alt=\"\" className={clsx('clarify-logo clarify-logo-light', className, 'dark:hidden')} />\n <img src={darkLogo} alt=\"\" className={clsx('clarify-logo clarify-logo-dark', className, 'hidden dark:block')} />\n </>\n )\n}\n","import { CloseButton, Menu, MenuButton, MenuItem, MenuItems } from '@headlessui/react'\nimport clsx from 'clsx'\nimport { motion, useScroll, useTransform } from 'framer-motion'\nimport { Globe2, MoreHorizontal } from 'lucide-react'\nimport { forwardRef } from 'react'\nimport type { RefObject } from 'react'\nimport { Link, useLocation } from 'react-router-dom'\n\nimport { useBuiltInText } from '../i18n'\nimport { storeLocalePreference } from '../theme/cookies'\nimport { ThemeToggle } from '../theme/ThemeToggle'\nimport type { Config, LocaleConfig, NavbarLink, NavigationNode, NavigationTab, RouteItem } from '../types'\nimport { isExternalHref, localizeHref } from '../utils/href'\nimport { resolveLocalizedText } from '../utils/localized-text'\nimport { isSameRoutePath, normalizeRoutePath } from '../utils/path'\n\nimport { NavigationIcon } from './icons'\nimport { MobileNavigation, useIsInsideMobileNavigation, useMobileNavigationStore } from './mobile'\nimport { MobileSearch, Search } from './Search'\nimport { SiteLogo } from './SiteLogo'\n\nfunction localizedRoutePath(config: Config, locale: string, route?: RouteItem): string | undefined {\n const alternatePath = route?.alternates?.[locale]\n if (alternatePath) return alternatePath\n if (route?.alternates) return undefined\n return localizeHref(route?.basePath ?? route?.path ?? '/', config, locale)\n}\n\ntype LanguageSwitcherProps = { config: Config; currentLocale?: string; currentRoute?: RouteItem }\n\nfunction LanguageSwitcher(arg0: LanguageSwitcherProps) { const { config, currentLocale, currentRoute } = arg0\n\n const t = useBuiltInText()\n const location = useLocation()\n const i18n = config.i18n\n if (!i18n || i18n.locales.length < 2) return null\n\n const selectedLocale = currentLocale ?? i18n.defaultLocale\n const selectedLocaleConfig = i18n.locales.find(locale => locale.code === selectedLocale) ?? i18n.locales[0]\n const suffix = `${location.search}${location.hash}`\n\n return (\n <Menu as=\"div\" className=\"clarify-language-switcher relative\">\n <MenuButton\n className=\"clarify-language-switcher-button clarify-ui-control flex h-8 items-center gap-1.5 rounded-(--clarify-theme-tokens-radius-md) px-1.5 transition\"\n aria-label={t('language.switch')}\n >\n <span className=\"absolute size-12 pointer-fine:hidden\" />\n <Globe2 className=\"h-5 w-5 stroke-current\" />\n <span className=\"hidden sm:inline\">{selectedLocaleConfig?.label ?? selectedLocale}</span>\n </MenuButton>\n <MenuItems\n transition\n className=\"clarify-language-switcher-menu clarify-ui-menu absolute right-0 z-50 mt-2 w-(--clarify-ui-menu-width) rounded-(--clarify-theme-tokens-radius-xl) bg-(--clarify-theme-tokens-colors-surface) p-1 shadow-lg ring-1 shadow-zinc-900/5 ring-(--clarify-theme-tokens-colors-border) transition data-closed:scale-95 data-closed:opacity-0 data-enter:duration-100 data-enter:ease-out data-leave:duration-75 data-leave:ease-in dark:bg-zinc-900 dark:ring-white/10\"\n >\n {i18n.locales.flatMap((locale: LocaleConfig) => {\n const localizedPath = localizedRoutePath(config, locale.code, currentRoute)\n if (!localizedPath) return []\n\n const selected = locale.code === selectedLocale\n return [\n <MenuItem key={locale.code}>\n {({ focus }) => (\n <Link\n to={`${localizedPath}${suffix}`}\n onClick={() => storeLocalePreference(locale.code)}\n className={clsx(\n 'clarify-language-switcher-item clarify-ui-menu-item flex items-center justify-between rounded-(--clarify-theme-tokens-radius-lg) px-3 py-2 no-underline transition',\n focus && 'clarify-ui-menu-item-focus',\n selected && 'clarify-ui-menu-item-active',\n )}\n aria-current={selected ? 'true' : undefined}\n lang={locale.code}\n dir={locale.dir}\n >\n <span>{locale.label}</span>\n <span className=\"clarify-ui-menu-code\">{locale.code}</span>\n </Link>\n )}\n </MenuItem>,\n ]\n })}\n </MenuItems>\n </Menu>\n )\n}\n\ntype TopLevelNavItemProps = { href: string; children: React.ReactNode }\n\nfunction TopLevelNavItem(arg0: TopLevelNavItemProps) { const { href, children } = arg0\n\n const external = isExternalHref(href)\n\n if (external) {\n return (\n <li>\n <a\n href={href}\n className=\"clarify-ui-top-link transition\"\n target=\"_blank\"\n rel=\"noreferrer\"\n >\n {children}\n </a>\n </li>\n )\n }\n\n return (\n <li>\n <Link\n to={href}\n className=\"clarify-ui-top-link transition\"\n >\n {children}\n </Link>\n </li>\n )\n}\n\ntype MobileNavbarMenuProps = { links?: NavbarLink[]; config: Config; currentLocale?: string }\n\nfunction resolveHomeHref(config: Config, currentLocale?: string): string {\n const homeUrl = config.homeUrl ?? '/'\n return isExternalHref(homeUrl) ? homeUrl : localizeHref(homeUrl, config, currentLocale)\n}\n\nfunction MobileNavbarMenu(arg0: MobileNavbarMenuProps) {\n const { links, config, currentLocale } = arg0\n const t = useBuiltInText()\n if (!links?.length) return null\n\n return (\n <Menu as=\"div\" className=\"clarify-mobile-navbar-menu relative md:hidden\">\n <MenuButton\n className=\"clarify-mobile-navbar-menu-button clarify-ui-control relative flex size-8 items-center justify-center rounded-(--clarify-theme-tokens-radius-md) transition\"\n aria-label={t('navbar.openLinks')}\n >\n <span className=\"absolute size-12 pointer-fine:hidden\" />\n <MoreHorizontal className=\"h-5 w-5\" />\n </MenuButton>\n <MenuItems\n transition\n anchor=\"bottom end\"\n className=\"clarify-mobile-navbar-menu-list clarify-ui-menu z-50 mt-2 w-(--clarify-ui-menu-width) rounded-(--clarify-theme-tokens-radius-xl) border border-(--clarify-theme-tokens-colors-border) bg-(--clarify-theme-tokens-colors-surface) p-1 shadow-lg transition [--anchor-gap:--spacing(2)] focus:outline-none data-closed:scale-95 data-closed:opacity-0 dark:border-white/10 dark:bg-zinc-900\"\n >\n {links.map((link) => {\n const label = resolveLocalizedText(link.label, currentLocale, config.i18n?.defaultLocale)\n const href = localizeHref(link.href, config, currentLocale)\n const external = isExternalHref(href)\n\n return (\n <MenuItem key={link.href}>\n {({ focus }) => {\n const className = clsx(\n 'clarify-mobile-navbar-menu-item clarify-ui-menu-item block rounded-(--clarify-theme-tokens-radius-lg) px-3 py-2 no-underline transition',\n focus && 'clarify-ui-menu-item-focus',\n )\n\n return external ? (\n <a href={href} target=\"_blank\" rel=\"noreferrer\" className={className}>\n {label}\n </a>\n ) : (\n <Link to={href} className={className}>\n {label}\n </Link>\n )\n }}\n </MenuItem>\n )\n })}\n </MenuItems>\n </Menu>\n )\n}\n\nfunction hasPath(nodes: NavigationNode[], pathname: string, currentLocale?: string): boolean {\n return nodes.some((node) => isSameRoutePath(node.path, pathname, currentLocale) || hasPath(node.children ?? [], pathname, currentLocale))\n}\n\nfunction isActiveTab(tab: NavigationTab, pathname: string, currentLocale?: string): boolean {\n return isSameRoutePath(tab.path, pathname, currentLocale) || hasPath(tab.children, pathname, currentLocale)\n}\n\ntype ProductTabsProps = { tabs?: NavigationTab[]; currentLocale?: string }\n\nfunction ProductTabs(arg0: ProductTabsProps) { const { tabs, currentLocale } = arg0\n\n const t = useBuiltInText()\n const pathname = normalizeRoutePath(useLocation().pathname)\n if (!tabs?.length) return null\n\n return (\n <div data-clarify-header-tabs className=\"clarify-product-tabs hidden h-14 border-t border-(--clarify-theme-tokens-colors-border) lg:block dark:border-white/10\">\n <nav className=\"clarify-product-tabs-nav mx-auto flex h-full w-full max-w-(--clarify-theme-layout-max-width) items-stretch gap-6 overflow-x-auto px-5\" aria-label={t('navbar.sections')}>\n {tabs.map((tab) => {\n const active = isActiveTab(tab, pathname, currentLocale)\n return (\n <Link\n key={`${tab.title}-${tab.path}`}\n to={tab.path}\n aria-current={active ? 'page' : undefined}\n className={clsx(\n 'clarify-product-tab clarify-ui-tab relative inline-flex h-full shrink-0 items-center gap-2 px-0 transition',\n active && 'clarify-ui-tab-active',\n )}\n >\n <NavigationIcon name={tab.icon} className=\"h-4 w-4\" />\n <span>{tab.title}</span>\n {active ? (\n <motion.span\n layoutId=\"clarify-product-tab-indicator\"\n className=\"absolute inset-x-0 bottom-0 h-0.5 rounded-full bg-(--clarify-theme-tokens-colors-foreground) dark:bg-white\"\n transition={{ type: 'tween', duration: 0.16, ease: 'easeOut' }}\n />\n ) : null}\n </Link>\n )\n })}\n </nav>\n </div>\n )\n}\n\nexport const Header = forwardRef<\n React.ComponentRef<'header'>,\n React.ComponentPropsWithoutRef<typeof motion.header> & {\n config: Config\n navigation: NavigationNode[]\n tabs?: NavigationTab[]\n routes: RouteItem[]\n currentLocale?: string\n currentRoute?: RouteItem\n banner?: React.ReactNode\n topAreaRef?: RefObject<HTMLDivElement | null>\n }\n>(function Header(arg0, ref) { const { config, navigation, tabs, routes, currentLocale, currentRoute, banner, topAreaRef, className, ...props } = arg0\n\n const t = useBuiltInText()\n const { isOpen: mobileNavIsOpen } = useMobileNavigationStore()\n const isInsideMobileNavigation = useIsInsideMobileNavigation()\n const homeHref = resolveHomeHref(config, currentLocale)\n const homeExternal = isExternalHref(homeHref)\n\n const { scrollY } = useScroll()\n const bgOpacityLight = useTransform(scrollY, [0, 72], ['70%', '95%'])\n const bgOpacityDark = useTransform(scrollY, [0, 72], ['60%', '92%'])\n const hasNavbarLinks = Boolean(config.navbar?.links?.length)\n\n function renderBrand() {\n if (homeExternal) {\n return (\n <CloseButton as=\"a\" href={homeHref} aria-label={t('navbar.home')} className=\"clarify-brand flex min-w-0 items-center gap-2 no-underline\">\n <SiteLogo logo={config.logo} className=\"h-6 w-auto shrink-0 object-contain\" />\n <span className=\"clarify-brand-title truncate font-semibold\">{config.title}</span>\n </CloseButton>\n )\n }\n\n return (\n <CloseButton as={Link} to={homeHref} aria-label={t('navbar.home')} className=\"clarify-brand flex min-w-0 items-center gap-2 no-underline\">\n <SiteLogo logo={config.logo} className=\"h-6 w-auto shrink-0 object-contain\" />\n <span className=\"clarify-brand-title truncate font-semibold\">{config.title}</span>\n </CloseButton>\n )\n }\n\n function renderTopLinks() {\n if (!hasNavbarLinks) return null\n\n return (\n <nav className=\"clarify-top-nav hidden md:block\">\n <ul role=\"list\" className=\"flex items-center gap-8\">\n {config.navbar?.links?.map((link) => (\n <TopLevelNavItem key={link.href} href={localizeHref(link.href, config, currentLocale)}>\n {resolveLocalizedText(link.label, currentLocale, config.i18n?.defaultLocale)}\n </TopLevelNavItem>\n ))}\n </ul>\n </nav>\n )\n }\n\n function renderHeaderActions() {\n return (\n <div className=\"clarify-header-actions flex shrink-0 items-center gap-5\">\n {renderTopLinks()}\n {hasNavbarLinks ? <div className=\"hidden md:block md:h-5 md:w-px md:bg-(--clarify-theme-tokens-colors-border) md:dark:bg-white/15\" /> : null}\n <MobileSearch routes={routes} navigation={navigation} routePrefix={config.routePrefix} currentLocale={currentLocale} />\n <LanguageSwitcher config={config} currentLocale={currentLocale} currentRoute={currentRoute} />\n <ThemeToggle />\n <MobileNavbarMenu links={config.navbar?.links} config={config} currentLocale={currentLocale} />\n </div>\n )\n }\n\n function renderHeaderMain() {\n return (\n <div\n data-clarify-header-main\n className={clsx(\n 'clarify-header-main relative mx-auto flex h-14 w-full max-w-(--clarify-theme-layout-max-width) items-center justify-between gap-6 px-4 sm:px-6 lg:px-5',\n (isInsideMobileNavigation || !mobileNavIsOpen) && 'shadow-none',\n )}\n >\n <div className=\"clarify-header-left flex min-w-0 items-center gap-5\">\n <div className=\"clarify-mobile-brand flex items-center gap-5 lg:hidden\">\n <MobileNavigation config={config} navigation={navigation} tabs={tabs} routes={routes} currentLocale={currentLocale} currentRoute={currentRoute} />\n </div>\n {renderBrand()}\n </div>\n <div className=\"clarify-header-center absolute left-1/2 hidden -translate-x-1/2 lg:block\">\n <Search routes={routes} navigation={navigation} routePrefix={config.routePrefix} currentLocale={currentLocale} />\n </div>\n {renderHeaderActions()}\n </div>\n )\n }\n\n function renderTopArea() {\n return (\n <div ref={topAreaRef}>\n {renderHeaderMain()}\n <div data-clarify-header-banner>{banner}</div>\n <ProductTabs tabs={tabs} currentLocale={currentLocale} />\n </div>\n )\n }\n\n return (\n <motion.header\n {...props}\n ref={ref}\n data-pagefind-ignore\n className={clsx(\n className,\n 'clarify-header fixed inset-x-0 top-0 z-50 border-b border-(--clarify-theme-tokens-colors-border) bg-(--clarify-theme-tokens-colors-background)/(--bg-opacity-light) backdrop-blur-xs transition dark:border-white/10 dark:bg-zinc-950/(--bg-opacity-dark) dark:backdrop-blur-sm',\n isInsideMobileNavigation && 'bg-(--clarify-theme-tokens-colors-background) dark:bg-zinc-950',\n )}\n style={\n {\n '--bg-opacity-light': bgOpacityLight,\n '--bg-opacity-dark': bgOpacityDark,\n } as React.CSSProperties\n }\n >\n {renderTopArea()}\n </motion.header>\n )\n})\n","import { createContext, useContext, type ReactNode } from 'react'\n\nimport { ContentActions } from '../shell/ContentActions'\nimport type { RouteItem } from '../types'\n\ntype PageActionsContextValue = {\n route?: RouteItem\n routePrefix?: string\n}\n\ntype PageActionsProviderProps = PageActionsContextValue & {\n children: ReactNode\n}\n\nconst PageActionsContext = createContext<PageActionsContextValue>({})\n\nexport function PageActionsProvider(props: PageActionsProviderProps) {\n const { children, route, routePrefix } = props\n\n return (\n <PageActionsContext.Provider value={{ route, routePrefix }}>\n {children}\n </PageActionsContext.Provider>\n )\n}\n\nexport function PageTitleActions() {\n const { route, routePrefix } = useContext(PageActionsContext)\n\n return <ContentActions route={route} routePrefix={routePrefix} />\n}\n"],"mappings":"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"}
|