@ox-content/vite-plugin 2.5.0 → 2.7.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/index.d.mts CHANGED
@@ -83,10 +83,18 @@ interface ThemeFooter {
83
83
  /** Copyright text (supports HTML) */
84
84
  copyright?: string;
85
85
  }
86
- /**
87
- * Social links configuration.
88
- */
89
- interface SocialLinks {
86
+ /** Custom social link icon. */
87
+ type SocialLinkIcon = string | {
88
+ svg: string;
89
+ };
90
+ /** Custom social link. */
91
+ interface SocialLink {
92
+ icon: SocialLinkIcon;
93
+ link: string;
94
+ ariaLabel?: string;
95
+ }
96
+ /** Legacy social links configuration. */
97
+ interface LegacySocialLinks {
90
98
  /** GitHub URL */
91
99
  github?: string;
92
100
  /** Twitter/X URL */
@@ -94,6 +102,8 @@ interface SocialLinks {
94
102
  /** Discord URL */
95
103
  discord?: string;
96
104
  }
105
+ /** Social links configuration. */
106
+ type SocialLinks = LegacySocialLinks | SocialLink[];
97
107
  /**
98
108
  * Embedded HTML content for specific positions in the page layout.
99
109
  */
@@ -117,6 +127,12 @@ interface ThemeEmbed {
117
127
  /** Custom footer content (replaces default footer) */
118
128
  footer?: string;
119
129
  }
130
+ interface SidebarItem {
131
+ text?: string;
132
+ link?: string;
133
+ items?: SidebarItem[];
134
+ collapsed?: boolean;
135
+ }
120
136
  /**
121
137
  * Complete theme configuration.
122
138
  */
@@ -141,6 +157,7 @@ interface ThemeConfig {
141
157
  footer?: ThemeFooter;
142
158
  /** Social links configuration */
143
159
  socialLinks?: SocialLinks;
160
+ sidebar?: SidebarItem[];
144
161
  /** Embedded HTML content at specific positions */
145
162
  embed?: ThemeEmbed;
146
163
  /** Additional custom CSS */
@@ -161,6 +178,7 @@ interface ResolvedThemeConfig {
161
178
  header: ThemeHeader;
162
179
  footer: ThemeFooter;
163
180
  socialLinks: SocialLinks;
181
+ sidebar: SidebarItem[];
164
182
  embed: ThemeEmbed;
165
183
  css: string;
166
184
  js: string;
@@ -323,6 +341,11 @@ interface SsgOptions {
323
341
  * @default false
324
342
  */
325
343
  generateOgImage?: boolean;
344
+ /**
345
+ * Add each page's last git commit timestamp to the default theme.
346
+ * @default false
347
+ */
348
+ lastUpdated?: boolean;
326
349
  /**
327
350
  * Site URL for generating absolute OG image URLs.
328
351
  * Required for proper SNS sharing.
@@ -346,6 +369,7 @@ interface ResolvedSsgOptions {
346
369
  siteName?: string;
347
370
  ogImage?: string;
348
371
  generateOgImage: boolean;
372
+ lastUpdated: boolean;
349
373
  siteUrl?: string;
350
374
  theme?: ResolvedThemeConfig;
351
375
  }
@@ -723,7 +747,7 @@ interface DocsOptions {
723
747
  out?: string;
724
748
  /**
725
749
  * Glob patterns for files to include.
726
- * @default ['**\/*.ts', '**\/*.tsx']
750
+ * @default ['**\/*.ts', '**\/*.tsx', '**\/*.js', '**\/*.jsx', '**\/*.mts', '**\/*.mjs', '**\/*.cts', '**\/*.cjs']
727
751
  */
728
752
  include?: string[];
729
753
  /**
@@ -820,12 +844,25 @@ interface ExtractedDocs {
820
844
  file: string;
821
845
  entries: DocEntry[];
822
846
  }
847
+ /**
848
+ * Summary counts emitted with generated documentation data.
849
+ */
850
+ interface DocsSummary {
851
+ modules: number;
852
+ entries: number;
853
+ byKind: Record<string, number>;
854
+ params: number;
855
+ returns: number;
856
+ examples: number;
857
+ deprecated: number;
858
+ }
823
859
  /**
824
860
  * Machine-readable payload emitted alongside generated docs.
825
861
  */
826
862
  interface GeneratedDocsData {
827
863
  version: 1;
828
864
  generatedAt: string;
865
+ summary: DocsSummary;
829
866
  modules: ExtractedDocs[];
830
867
  }
831
868
  /**
@@ -1094,7 +1131,7 @@ declare function transformMarkdown(source: string, filePath: string, options: Re
1094
1131
  *
1095
1132
  * 1. **File Discovery**: Recursively walks directories, applying filters
1096
1133
  * 2. **File Reading**: Loads each matching file's content
1097
- * 3. **JSDoc Extraction**: Parses JSDoc comments using regex patterns
1134
+ * 3. **JSDoc Extraction**: Parses JSDoc comments using the native parser
1098
1135
  * 4. **Declaration Matching**: Pairs JSDoc comments with source declarations
1099
1136
  * 5. **Result Collection**: Aggregates extracted documentation by file
1100
1137
  *
@@ -1432,7 +1469,7 @@ declare function lintMarkdownFiles(options?: MarkdownLintFileOptions): Promise<M
1432
1469
  /**
1433
1470
  * Default HTML template for SSG pages with navigation.
1434
1471
  */
1435
- declare const DEFAULT_HTML_TEMPLATE = "<!DOCTYPE html>\n<html lang=\"en\">\n<head>\n <meta charset=\"UTF-8\">\n <meta name=\"viewport\" content=\"width=device-width, initial-scale=1.0\">\n <title>{{title}}{{#siteName}} - {{siteName}}{{/siteName}}</title>\n {{#description}}<meta name=\"description\" content=\"{{description}}\">{{/description}}\n <!-- Open Graph -->\n <meta property=\"og:type\" content=\"website\">\n <meta property=\"og:title\" content=\"{{title}}{{#siteName}} - {{siteName}}{{/siteName}}\">\n {{#description}}<meta property=\"og:description\" content=\"{{description}}\">{{/description}}\n {{#ogImage}}<meta property=\"og:image\" content=\"{{ogImage}}\">{{/ogImage}}\n <!-- Twitter Card -->\n {{#ogImage}}<meta name=\"twitter:card\" content=\"summary_large_image\">{{/ogImage}}\n {{^ogImage}}<meta name=\"twitter:card\" content=\"summary\">{{/ogImage}}\n <meta name=\"twitter:title\" content=\"{{title}}{{#siteName}} - {{siteName}}{{/siteName}}\">\n {{#description}}<meta name=\"twitter:description\" content=\"{{description}}\">{{/description}}\n {{#ogImage}}<meta name=\"twitter:image\" content=\"{{ogImage}}\">{{/ogImage}}\n <style>\n :root {\n --sidebar-width: 260px;\n --header-height: 60px;\n --max-content-width: 960px;\n --font-sans: 'IBM Plex Sans', 'Avenir Next', 'Segoe UI Variable', 'Segoe UI', sans-serif;\n --font-mono: 'IBM Plex Mono', 'SFMono-Regular', Consolas, monospace;\n --color-bg: #ffffff;\n --color-bg-alt: #f5f7fb;\n --color-text: #131a30;\n --color-text-muted: #4f607b;\n --color-border: #d2dbea;\n --color-primary: #4f6fae;\n --color-primary-hover: #425f96;\n --color-code-bg: #101a31;\n --color-code-bg-top: #18264a;\n --color-code-text: #edf3ff;\n --color-code-line-highlight: rgba(56, 189, 248, 0.16);\n --color-code-line-warning: rgba(245, 158, 11, 0.18);\n --color-code-line-warning-border: #f59e0b;\n --color-code-line-error: rgba(239, 68, 68, 0.18);\n --color-code-line-error-border: #ef4444;\n --color-code-frame-border: rgba(147, 166, 200, 0.46);\n --surface-noise-image: url(\"data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 180 180'%3E%3Cfilter id='noise'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='1.2' numOctaves='2' stitchTiles='stitch'/%3E%3C/filter%3E%3Crect width='180' height='180' filter='url(%23noise)' opacity='0.062'/%3E%3C/svg%3E\");\n --surface-noise-size: 164px 164px;\n }\n [data-theme=\"dark\"] {\n --color-bg: #060816;\n --color-bg-alt: #0d1528;\n --color-text: #ebf2ff;\n --color-text-muted: #8ea0bf;\n --color-border: #223252;\n --color-primary: #86a4da;\n --color-primary-hover: #a3bbe8;\n --color-code-bg: #0a1020;\n --color-code-bg-top: #0a1020;\n --color-code-text: #e7f0ff;\n --color-code-line-highlight: rgba(14, 165, 233, 0.2);\n --color-code-line-warning: rgba(245, 158, 11, 0.2);\n --color-code-line-warning-border: #f59e0b;\n --color-code-line-error: rgba(239, 68, 68, 0.22);\n --color-code-line-error-border: #f87171;\n --color-code-frame-border: rgba(34, 50, 82, 0.92);\n --surface-noise-image: url(\"data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 180 180'%3E%3Cfilter id='noise'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='1.25' numOctaves='2' stitchTiles='stitch'/%3E%3C/filter%3E%3Crect width='180' height='180' filter='url(%23noise)' opacity='0.098'/%3E%3C/svg%3E\");\n }\n @media (prefers-color-scheme: dark) {\n :root:not([data-theme=\"light\"]) {\n --color-bg: #060816;\n --color-bg-alt: #0d1528;\n --color-text: #ebf2ff;\n --color-text-muted: #8ea0bf;\n --color-border: #223252;\n --color-primary: #86a4da;\n --color-primary-hover: #a3bbe8;\n --color-code-bg: #0a1020;\n --color-code-bg-top: #0a1020;\n --color-code-text: #e7f0ff;\n --color-code-line-highlight: rgba(14, 165, 233, 0.2);\n --color-code-line-warning: rgba(245, 158, 11, 0.2);\n --color-code-line-warning-border: #f59e0b;\n --color-code-line-error: rgba(239, 68, 68, 0.22);\n --color-code-line-error-border: #f87171;\n --color-code-frame-border: rgba(34, 50, 82, 0.92);\n --surface-noise-image: url(\"data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 180 180'%3E%3Cfilter id='noise'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='1.25' numOctaves='2' stitchTiles='stitch'/%3E%3C/filter%3E%3Crect width='180' height='180' filter='url(%23noise)' opacity='0.098'/%3E%3C/svg%3E\");\n }\n }\n * { box-sizing: border-box; margin: 0; padding: 0; }\n html { scroll-behavior: smooth; }\n body {\n font-family: var(--font-sans);\n line-height: 1.7;\n color: var(--color-text);\n background: var(--color-bg);\n background-image: var(--surface-noise-image);\n background-size: var(--surface-noise-size);\n background-repeat: repeat;\n background-blend-mode: soft-light;\n }\n a { color: var(--color-primary); text-decoration: none; }\n a:hover { color: var(--color-primary-hover); text-decoration: underline; }\n\n /* Header */\n .header {\n position: fixed;\n top: 0;\n left: 0;\n right: 0;\n height: var(--header-height);\n background: var(--color-bg);\n border-bottom: 1px solid var(--color-border);\n display: flex;\n align-items: center;\n padding: 0 1.5rem;\n z-index: 100;\n }\n .header,\n .sidebar,\n .search-modal,\n .mobile-footer,\n .content .ox-api-entry,\n .content .ox-api-module,\n .content blockquote.ox-callout {\n background-image: var(--surface-noise-image);\n background-size: var(--surface-noise-size);\n background-repeat: repeat;\n background-blend-mode: soft-light;\n }\n .header-title {\n font-size: 1.25rem;\n font-weight: 600;\n color: var(--color-text);\n }\n .header-title:hover { text-decoration: none; }\n .menu-toggle {\n display: none;\n background: none;\n border: none;\n cursor: pointer;\n padding: 0.5rem;\n margin-right: 0.75rem;\n }\n .menu-toggle svg { display: block; }\n .menu-toggle path { stroke: var(--color-text); }\n .header-actions { margin-left: auto; display: flex; align-items: center; gap: 0.5rem; }\n .search-button {\n display: flex;\n align-items: center;\n gap: 0.5rem;\n padding: 0.5rem 0.75rem;\n background: var(--color-bg-alt);\n border: 1px solid var(--color-border);\n border-radius: 4px;\n color: var(--color-text-muted);\n cursor: pointer;\n font-size: 0.875rem;\n transition: border-color 0.15s, color 0.15s;\n }\n .search-button:hover { border-color: var(--color-primary); color: var(--color-text); }\n .search-button svg { width: 16px; height: 16px; }\n .search-button kbd {\n padding: 0.125rem 0.375rem;\n background: var(--color-bg);\n border: 1px solid var(--color-border);\n border-radius: 4px;\n font-family: var(--font-mono);\n font-size: 0.75rem;\n }\n @media (max-width: 640px) {\n .search-button span, .search-button kbd { display: none; }\n .search-button { padding: 0.5rem; }\n }\n .search-modal-overlay {\n display: none;\n position: fixed;\n inset: 0;\n z-index: 200;\n background: rgba(0,0,0,0.6);\n justify-content: center;\n padding-top: 10vh;\n }\n .search-modal-overlay.open { display: flex; }\n .search-modal {\n width: 100%;\n max-width: 560px;\n margin: 0 1rem;\n background: var(--color-bg);\n border: 1px solid var(--color-border);\n border-radius: 4px;\n overflow: hidden;\n max-height: 70vh;\n display: flex;\n flex-direction: column;\n }\n .search-header {\n display: flex;\n align-items: center;\n gap: 0.75rem;\n padding: 1rem;\n border-bottom: 1px solid var(--color-border);\n }\n .search-header svg { flex-shrink: 0; color: var(--color-text-muted); }\n .search-input {\n flex: 1;\n background: none;\n border: none;\n outline: none;\n font-size: 1rem;\n color: var(--color-text);\n }\n .search-input::placeholder { color: var(--color-text-muted); }\n .search-close {\n padding: 0.25rem 0.5rem;\n background: var(--color-bg-alt);\n border: 1px solid var(--color-border);\n border-radius: 4px;\n color: var(--color-text-muted);\n font-family: var(--font-mono);\n font-size: 0.75rem;\n cursor: pointer;\n }\n .search-results {\n flex: 1;\n overflow-y: auto;\n padding: 0.5rem;\n }\n .search-result {\n display: block;\n padding: 0.75rem 1rem;\n border-radius: 4px;\n color: var(--color-text);\n text-decoration: none;\n }\n .search-result:hover, .search-result.selected { background: var(--color-bg-alt); text-decoration: none; }\n .search-result-title { font-weight: 600; font-size: 0.875rem; margin-bottom: 0.25rem; }\n .search-result-snippet { font-size: 0.8125rem; color: var(--color-text-muted); }\n .search-empty { padding: 2rem 1rem; text-align: center; color: var(--color-text-muted); }\n .search-footer {\n display: flex;\n align-items: center;\n justify-content: center;\n gap: 1rem;\n padding: 0.75rem 1rem;\n border-top: 1px solid var(--color-border);\n background: var(--color-bg-alt);\n font-size: 0.75rem;\n color: var(--color-text-muted);\n }\n .search-footer kbd {\n padding: 0.125rem 0.375rem;\n background: var(--color-bg);\n border: 1px solid var(--color-border);\n border-radius: 4px;\n font-family: var(--font-mono);\n }\n .theme-toggle {\n background: none;\n border: none;\n cursor: pointer;\n padding: 0.5rem;\n border-radius: 4px;\n color: var(--color-text-muted);\n transition: background 0.15s, color 0.15s;\n }\n .theme-toggle:hover { background: var(--color-bg-alt); color: var(--color-text); }\n .theme-toggle svg { display: block; width: 20px; height: 20px; }\n .theme-toggle .icon-sun { display: none; }\n .theme-toggle .icon-moon { display: block; }\n [data-theme=\"dark\"] .theme-toggle .icon-sun { display: block; }\n [data-theme=\"dark\"] .theme-toggle .icon-moon { display: none; }\n @media (prefers-color-scheme: dark) {\n :root:not([data-theme=\"light\"]) .theme-toggle .icon-sun { display: block; }\n :root:not([data-theme=\"light\"]) .theme-toggle .icon-moon { display: none; }\n }\n\n /* Layout */\n .layout {\n display: flex;\n padding-top: var(--header-height);\n min-height: 100vh;\n }\n\n /* Sidebar */\n .sidebar {\n position: fixed;\n top: var(--header-height);\n left: 0;\n bottom: 0;\n width: var(--sidebar-width);\n background: color-mix(in srgb, var(--color-bg-alt) 16%, var(--color-bg));\n border-right: 1px solid color-mix(in srgb, var(--color-border) 48%, transparent);\n overflow-y: auto;\n padding: 1rem 0.875rem 1.5rem;\n }\n .sidebar--entry { display: none; }\n .sidebar nav {\n display: flex;\n flex-direction: column;\n gap: 1rem;\n }\n .nav-section { margin-bottom: 0; }\n .nav-title {\n font-size: 0.6875rem;\n font-weight: 600;\n text-transform: uppercase;\n letter-spacing: 0.08em;\n color: var(--color-text-muted);\n margin-bottom: 0.4rem;\n padding: 0 0.625rem;\n }\n .nav-list {\n list-style: none;\n display: flex;\n flex-direction: column;\n gap: 0.125rem;\n }\n .nav-item { margin: 0; }\n .nav-link {\n display: block;\n padding: 0.45rem 0.625rem;\n border-radius: 0;\n color: color-mix(in srgb, var(--color-text) 92%, var(--color-text-muted));\n font-size: 0.875rem;\n }\n .nav-link:hover {\n background: color-mix(in srgb, var(--color-bg-alt) 58%, transparent);\n color: var(--color-text);\n text-decoration: none;\n }\n .nav-link.active {\n background: color-mix(in srgb, var(--color-bg-alt) 72%, transparent);\n color: var(--color-text);\n font-weight: 600;\n }\n\n /* Main content */\n .main {\n flex: 1;\n margin-left: var(--sidebar-width);\n padding: 2rem;\n min-width: 0;\n overflow-x: hidden;\n }\n .content {\n max-width: var(--max-content-width);\n margin: 0 auto;\n overflow-wrap: break-word;\n word-wrap: break-word;\n word-break: break-word;\n }\n\n /* TOC (right sidebar) */\n .toc {\n position: fixed;\n top: calc(var(--header-height) + 2rem);\n right: 2rem;\n width: 200px;\n font-size: 0.8125rem;\n }\n .toc-title {\n font-weight: 600;\n margin-bottom: 0.75rem;\n color: var(--color-text-muted);\n }\n .toc-list { list-style: none; }\n .toc-item { margin: 0.375rem 0; }\n .toc-link {\n color: var(--color-text-muted);\n display: block;\n padding-left: calc((var(--depth, 1) - 1) * 0.75rem);\n }\n .toc-link:hover { color: var(--color-primary); }\n @media (max-width: 1200px) { .toc { display: none; } }\n\n /* Typography */\n .content h1 { font-size: 2.25rem; margin-bottom: 1rem; line-height: 1.2; }\n .content h2 { font-size: 1.5rem; margin-top: 2.5rem; margin-bottom: 1rem; padding-bottom: 0.5rem; border-bottom: 1px solid var(--color-border); }\n .content h3 { font-size: 1.25rem; margin-top: 2rem; margin-bottom: 0.75rem; }\n .content h4 { font-size: 1rem; margin-top: 1.5rem; margin-bottom: 0.5rem; }\n .content p { margin-bottom: 1rem; }\n .content ul, .content ol { margin: 1rem 0; padding-left: 1.5rem; }\n .content li { margin: 0.375rem 0; }\n .content blockquote {\n border-left: 4px solid var(--color-primary);\n padding: 0.5rem 1rem;\n margin: 1rem 0;\n background: var(--color-bg-alt);\n border-radius: 0 4px 4px 0;\n }\n .content blockquote.ox-callout {\n --callout-accent: var(--color-primary);\n border-left-width: 3px;\n border-left-color: var(--callout-accent);\n padding: 0.9rem 1rem;\n border-radius: 4px;\n background: color-mix(in srgb, var(--color-bg-alt) 92%, var(--callout-accent) 8%);\n }\n .content blockquote.ox-callout.ox-callout--note,\n .content blockquote.ox-callout.ox-callout--important { --callout-accent: var(--color-primary); }\n .content blockquote.ox-callout.ox-callout--tip { --callout-accent: #0891b2; }\n .content blockquote.ox-callout.ox-callout--warning { --callout-accent: #d97706; }\n .content blockquote.ox-callout.ox-callout--caution { --callout-accent: #dc2626; }\n .content .ox-callout-title {\n margin: 0 0 0.5rem;\n font-size: 0.75rem;\n font-weight: 700;\n letter-spacing: 0.08em;\n text-transform: uppercase;\n color: var(--callout-accent, var(--color-primary));\n }\n .content blockquote.ox-callout > :last-child { margin-bottom: 0; }\n .content blockquote.ox-callout > :not(.ox-callout-title):first-of-type { margin-top: 0; }\n .content code {\n font-family: var(--font-mono);\n font-size: 0.875em;\n background: var(--color-bg-alt);\n padding: 0.2em 0.4em;\n border-radius: 4px;\n word-break: break-all;\n }\n .content pre {\n background: linear-gradient(\n 180deg,\n var(--color-code-bg-top) 0,\n var(--color-code-bg) 3.5rem\n ) !important;\n color: var(--color-code-text);\n padding: 1rem 1.25rem;\n border-radius: 4px;\n border: 1px solid var(--color-code-frame-border);\n overflow-x: auto;\n margin: 1.5rem 0;\n line-height: 1.5;\n }\n .content pre code {\n background: transparent;\n border: 0;\n padding: 0;\n border-radius: 0;\n font-size: 0.8125rem;\n word-break: normal;\n }\n .content pre.ox-code-block code {\n display: block;\n }\n .content pre.ox-code-block .line {\n display: block;\n margin: 0 -1.25rem;\n padding: 0 1.25rem;\n }\n .content pre.ox-code-block .ox-code-line--highlight {\n background: var(--color-code-line-highlight);\n }\n .content pre.ox-code-block .ox-code-line--warning {\n background: var(--color-code-line-warning);\n border-left: 3px solid var(--color-code-line-warning-border);\n }\n .content pre.ox-code-block .ox-code-line--error {\n background: var(--color-code-line-error);\n border-left: 3px solid var(--color-code-line-error-border);\n }\n .content table {\n width: 100%;\n border-collapse: collapse;\n margin: 1.5rem 0;\n font-size: 0.875rem;\n }\n .content th, .content td {\n border: 1px solid var(--color-border);\n padding: 0.75rem 1rem;\n text-align: left;\n }\n .content th { background: var(--color-bg-alt); font-weight: 600; }\n .content img { max-width: 100%; height: auto; border-radius: 4px; display: block; }\n .content img[alt*=\"Logo\"] { max-width: 200px; display: block; margin: 1rem 0; }\n .content img[alt*=\"Architecture\"] { max-width: 600px; }\n .content img[alt*=\"Benchmark\"] { max-width: 680px; }\n .content hr { border: none; border-top: 1px solid var(--color-border); margin: 2rem 0; }\n .content .ox-api-controls {\n display: flex;\n justify-content: flex-end;\n align-items: center;\n gap: 0.5rem;\n margin: 0 0 1rem;\n }\n .content .ox-api-controls__button {\n appearance: none;\n border: 1px solid color-mix(in srgb, var(--color-border) 82%, transparent);\n background: color-mix(in srgb, var(--color-bg-alt) 82%, var(--color-bg));\n padding: 0.4rem 0.7rem;\n border-radius: 4px;\n color: color-mix(in srgb, var(--color-text) 82%, var(--color-text-muted));\n font-family: var(--font-mono);\n font-size: 0.78rem;\n font-weight: 600;\n line-height: 1.4;\n cursor: pointer;\n }\n .content .ox-api-controls__button:hover {\n color: var(--color-primary);\n border-color: color-mix(in srgb, var(--color-primary) 38%, var(--color-border));\n background: color-mix(in srgb, var(--color-bg-alt) 68%, var(--color-primary) 6%);\n }\n .content .ox-api-entry,\n .content .ox-api-module {\n margin: 0;\n border: 0;\n border-top: 1px solid color-mix(in srgb, var(--color-border) 74%, transparent);\n border-radius: 0;\n background: transparent;\n overflow: visible;\n }\n .content .ox-api-entry:last-child,\n .content .ox-api-module:last-child {\n border-bottom: 1px solid color-mix(in srgb, var(--color-border) 74%, transparent);\n }\n .content .ox-api-entry summary,\n .content .ox-api-module summary {\n list-style: none;\n cursor: pointer;\n padding: 1rem 0;\n position: relative;\n }\n .content .ox-api-entry summary::-webkit-details-marker,\n .content .ox-api-module summary::-webkit-details-marker { display: none; }\n .content .ox-api-entry summary {\n display: grid;\n grid-template-columns: var(--octc-api-kind-width, 6.5rem) minmax(0, 1fr) auto;\n align-items: start;\n gap: 0.95rem;\n }\n .content .ox-api-entry summary::after,\n .content .ox-api-module summary::after {\n content: \"+\";\n align-self: center;\n color: var(--color-text-muted);\n font-family: var(--font-mono);\n font-size: 0.95rem;\n font-weight: 600;\n line-height: 1;\n }\n .content .ox-api-entry[open] summary::after,\n .content .ox-api-module[open] summary::after {\n content: \"\u2212\";\n color: var(--color-primary);\n }\n .content .ox-api-entry[open] summary,\n .content .ox-api-module[open] summary {\n border-bottom: 1px solid color-mix(in srgb, var(--color-border) 72%, transparent);\n }\n .content .ox-api-entry__kind,\n .content .ox-api-module__kind {\n display: block;\n width: var(--octc-api-kind-width, 6.5rem);\n padding: 0.3rem 0 0;\n background: transparent;\n border: 0;\n font-family: var(--font-mono);\n font-size: 0.76rem;\n font-weight: 600;\n letter-spacing: 0.01em;\n text-align: left;\n white-space: nowrap;\n color: var(--color-text-muted);\n }\n .content .ox-api-module__count {\n display: inline-flex;\n align-items: center;\n padding: 0.2rem 0.48rem;\n border-radius: 4px;\n background: color-mix(in srgb, var(--color-bg-alt) 84%, var(--color-primary) 8%);\n border: 1px solid color-mix(in srgb, var(--color-border) 82%, transparent);\n color: var(--color-text-muted);\n font-family: var(--font-mono);\n font-size: 0.72rem;\n font-weight: 600;\n letter-spacing: 0.03em;\n white-space: nowrap;\n }\n .content .ox-api-entry__name {\n display: block;\n font-family: var(--font-mono);\n font-size: 0.95rem;\n font-weight: 600;\n line-height: 1.55;\n }\n .content .ox-api-entry__signature,\n .content .ox-api-module__signature {\n display: block;\n width: 100%;\n min-width: 0;\n font-family: var(--font-mono);\n font-size: 0.95rem;\n line-height: 1.55;\n white-space: nowrap;\n overflow-x: auto;\n overflow-y: hidden;\n -webkit-overflow-scrolling: touch;\n }\n .content .ox-api-entry__description {\n display: block;\n color: color-mix(in srgb, var(--color-text) 78%, var(--color-text-muted));\n font-size: 0.9rem;\n line-height: 1.6;\n max-width: 72ch;\n }\n .content .ox-api-entry__summary-main {\n min-width: 0;\n display: flex;\n flex-direction: column;\n gap: 0.55rem;\n }\n .content .ox-api-entry__name,\n .content .ox-api-entry__signature,\n .content .ox-api-module__name,\n .content .ox-api-module__signature {\n background: transparent;\n padding: 0;\n border-radius: 0;\n word-break: normal;\n }\n .content code.shiki-inline.ox-api-entry__signature--highlighted,\n .content code.shiki-inline.ox-api-module__signature--highlighted {\n display: block;\n width: 100%;\n max-width: 100%;\n background: linear-gradient(\n 180deg,\n var(--color-code-bg-top) 0,\n var(--color-code-bg) 2.75rem\n ) !important;\n border: 1px solid var(--color-code-frame-border) !important;\n padding: 0.55rem 0.7rem !important;\n border-radius: 4px !important;\n white-space: nowrap;\n overflow-x: auto;\n overflow-y: hidden;\n -webkit-overflow-scrolling: touch;\n }\n .content code.shiki-inline.ox-api-entry__signature--highlighted .line,\n .content code.shiki-inline.ox-api-module__signature--highlighted .line {\n display: block;\n width: max-content;\n min-width: 100%;\n }\n .content .ox-api-entry__body,\n .content .ox-api-module__body { padding: 0.7rem 0 1.9rem; }\n .content .ox-api-entry__body {\n margin-left: calc(var(--octc-api-kind-width, 6.5rem) + 0.95rem);\n margin-top: 0.7rem;\n padding: 1.45rem 1rem 2.1rem 1.1rem;\n border: 1px solid color-mix(in srgb, var(--color-border) 72%, transparent);\n border-radius: 4px;\n background: color-mix(in srgb, var(--color-bg-alt) 68%, transparent);\n }\n .content .ox-api-entry__body > :first-child { margin-top: 0; }\n .content .ox-api-entry__body > :last-child { margin-bottom: 0; }\n .content .ox-api-entry[open] summary {\n padding-bottom: 0.35rem;\n }\n .content .ox-api-entry__section {\n display: grid;\n grid-template-columns: 6.5rem minmax(0, 1fr);\n gap: 0.2rem 1.25rem;\n align-items: start;\n margin-top: 1rem;\n padding-top: 1rem;\n border-top: 1px solid color-mix(in srgb, var(--color-border) 72%, transparent);\n }\n .content .ox-api-entry__section h4 {\n margin-top: 0;\n margin-bottom: 0;\n padding-top: 0.25rem;\n font-family: var(--font-mono);\n font-size: 0.78rem;\n font-weight: 700;\n letter-spacing: 0.04em;\n text-transform: uppercase;\n color: var(--color-text-muted);\n }\n .content .ox-api-entry__section > :not(h4) { min-width: 0; }\n .content .ox-api-entry__source {\n margin: 0 0 0.15rem;\n font-family: var(--font-mono);\n font-size: 0.78rem;\n color: var(--color-text-muted);\n }\n .content .ox-api-entry__source a {\n color: inherit;\n text-decoration-color: color-mix(in srgb, var(--color-text-muted) 38%, transparent);\n }\n .content .ox-api-entry__tags,\n .content .ox-api-module__list {\n list-style: none;\n padding-left: 0;\n margin: 0;\n }\n .content .ox-api-entry__tags {\n display: flex;\n flex-wrap: wrap;\n gap: 0.6rem;\n }\n .content .ox-api-entry__tags li {\n display: inline-flex;\n align-items: center;\n gap: 0.45rem;\n padding: 0.4rem 0.55rem;\n border: 1px solid color-mix(in srgb, var(--color-border) 80%, transparent);\n border-radius: 4px;\n background: color-mix(in srgb, var(--color-bg-alt) 72%, transparent);\n }\n .content .ox-api-module__list li {\n display: grid;\n grid-template-columns: var(--octc-api-kind-width, 6.5rem) minmax(0, 1fr);\n align-items: start;\n gap: 1rem;\n padding: 0.85rem 0;\n border-top: 1px solid color-mix(in srgb, var(--color-border) 70%, transparent);\n }\n .content .ox-api-module__list li:first-child { border-top: none; }\n .content .ox-api-entry__tag-name,\n .content .ox-api-module__title { font-weight: 700; }\n .content .ox-api-entry__tag-name {\n color: var(--color-primary);\n font-family: var(--font-mono);\n font-size: 0.74rem;\n }\n .content .ox-api-entry__tag-value {\n color: var(--color-text);\n font-size: 0.84rem;\n line-height: 1.45;\n }\n .content .ox-api-module summary {\n display: grid;\n grid-template-columns: minmax(0, 1fr) auto auto;\n align-items: center;\n gap: 0.9rem;\n }\n .content .ox-api-module__body { padding-top: 0.15rem; }\n .content .ox-api-module__item { min-width: 0; }\n .content .ox-api-module__link {\n display: block;\n text-decoration: none;\n }\n .content .ox-api-module__link:hover { text-decoration: none; }\n .content .ox-api-module__name,\n .content .ox-api-module__signature {\n display: block;\n font-family: var(--font-mono);\n font-size: 0.91rem;\n line-height: 1.55;\n color: var(--color-text);\n }\n .content .ox-api-module__summary {\n display: block;\n margin-top: 0.45rem;\n color: color-mix(in srgb, var(--color-text) 76%, var(--color-text-muted));\n font-size: 0.88rem;\n line-height: 1.55;\n }\n .content .ox-api-entry__section--examples pre {\n margin: 0;\n border: 1px solid var(--color-code-frame-border);\n border-radius: 4px;\n }\n .content .ox-api-entry__params {\n list-style: none;\n padding: 0;\n margin: 0;\n }\n .content .ox-api-entry__param {\n padding: 0.8rem 0;\n border-top: 1px solid color-mix(in srgb, var(--color-border) 70%, transparent);\n }\n .content .ox-api-entry__param:first-child {\n padding-top: 0;\n border-top: 0;\n }\n .content .ox-api-entry__param-heading {\n display: flex;\n flex-wrap: wrap;\n align-items: center;\n gap: 0.5rem;\n }\n .content .ox-api-entry__param-name,\n .content .ox-api-entry__return-type {\n font-family: var(--font-mono);\n font-size: 0.84rem;\n font-weight: 600;\n color: var(--color-text);\n background: color-mix(in srgb, var(--color-bg-alt) 84%, transparent);\n border: 1px solid color-mix(in srgb, var(--color-border) 82%, transparent);\n padding: 0.28rem 0.42rem;\n border-radius: 4px;\n }\n .content .ox-api-entry__param-type {\n font-family: var(--font-mono);\n font-size: 0.78rem;\n color: var(--color-code-text);\n background: color-mix(in srgb, var(--color-code-bg) 96%, #243556);\n border: 1px solid color-mix(in srgb, var(--color-code-bg) 82%, var(--color-border));\n padding: 0.26rem 0.42rem;\n border-radius: 4px;\n }\n .content .ox-api-entry__param-description,\n .content .ox-api-entry__return-description {\n margin: 0.55rem 0 0;\n font-size: 0.88rem;\n line-height: 1.6;\n color: color-mix(in srgb, var(--color-text) 78%, var(--color-text-muted));\n }\n .content .ox-api-entry__return { margin: 0; }\n\n /* Responsive */\n @media (max-width: 768px) {\n .menu-toggle { display: block; }\n .sidebar {\n transform: translateX(-100%);\n z-index: 99;\n width: 280px;\n }\n .sidebar--entry { display: block; }\n .sidebar.open { transform: translateX(0); }\n .main { margin-left: 0; padding: 1rem 0.75rem; }\n .content { padding: 0 0.25rem; }\n .content h1 { font-size: 1.5rem; line-height: 1.3; margin-bottom: 0.75rem; }\n .content h2 { font-size: 1.2rem; margin-top: 2rem; }\n .content h3 { font-size: 1.1rem; }\n .content p { font-size: 0.9375rem; margin-bottom: 0.875rem; }\n .content ul, .content ol { padding-left: 1.25rem; font-size: 0.9375rem; }\n .content pre {\n padding: 0.75rem;\n font-size: 0.75rem;\n margin: 1rem -0.75rem;\n border-radius: 0;\n overflow-x: auto;\n -webkit-overflow-scrolling: touch;\n }\n .content .ox-api-controls {\n justify-content: flex-start;\n gap: 0.75rem;\n }\n .content .ox-api-entry__body {\n margin-left: 0;\n margin-top: 0.55rem;\n padding: 1.2rem 0 1.7rem;\n border-left: 0;\n border-right: 0;\n border-bottom: 0;\n border-radius: 0;\n background: transparent;\n }\n .content .ox-api-entry__section {\n grid-template-columns: 1fr;\n gap: 0.5rem;\n }\n .content .ox-api-entry__tags li,\n .content .ox-api-module__list li,\n .content .ox-api-module summary {\n grid-template-columns: 1fr;\n }\n .content .ox-api-entry__signature { width: 100%; }\n .content pre.ox-code-block .line {\n margin: 0 -0.75rem;\n padding: 0 0.75rem;\n }\n .content code { font-size: 0.8125em; }\n .content table {\n display: block;\n width: max-content;\n min-width: 100%;\n max-width: calc(100vw - 1.5rem);\n overflow-x: auto;\n -webkit-overflow-scrolling: touch;\n font-size: 0.8125rem;\n margin: 1rem 0;\n border-collapse: separate;\n border-spacing: 0;\n }\n .content th, .content td { padding: 0.5rem 0.75rem; white-space: nowrap; vertical-align: top; }\n .content img { margin: 1rem 0; }\n .content img[alt*=\"Logo\"] { max-width: 150px; }\n .content img[alt*=\"Architecture\"] { max-width: 100%; }\n .content img[alt*=\"Benchmark\"] { max-width: 100%; }\n .content blockquote { padding: 0.5rem 0.75rem; margin: 1rem 0; font-size: 0.9375rem; }\n .header { padding: 0 1rem; }\n .header-title { font-size: 1rem; }\n .header-title:not(.header-title--logo-only) img { width: 24px; height: 24px; }\n .header-title--logo-only .header-logo { width: 152px; height: auto; }\n .overlay {\n display: none;\n position: fixed;\n inset: 0;\n background: transparent;\n z-index: 98;\n }\n .overlay.open { display: block; }\n }\n\n /* Extra small devices */\n @media (max-width: 480px) {\n .main { padding: 0.75rem 0.5rem; }\n .content h1 { font-size: 1.35rem; }\n .content pre { font-size: 0.6875rem; padding: 0.625rem; }\n .content table { max-width: calc(100vw - 1rem); font-size: 0.75rem; }\n .content th, .content td { padding: 0.375rem 0.5rem; }\n }\n </style>\n</head>\n<body>\n <header class=\"header\">\n <button class=\"menu-toggle\" aria-label=\"Toggle menu\">\n <svg width=\"24\" height=\"24\" viewBox=\"0 0 24 24\" fill=\"none\" stroke-width=\"2\" stroke-linecap=\"round\">\n <path d=\"M3 12h18M3 6h18M3 18h18\"/>\n </svg>\n </button>\n <a href=\"{{base}}index.html\" class=\"header-title\">\n <img src=\"{{base}}logo.svg\" alt=\"\" width=\"28\" height=\"28\" style=\"margin-right: 8px; vertical-align: middle;\" />\n {{siteName}}\n </a>\n <div class=\"header-actions\">\n <button class=\"search-button\" aria-label=\"Search\">\n <svg viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\" stroke-linecap=\"round\">\n <circle cx=\"11\" cy=\"11\" r=\"8\"/><path d=\"m21 21-4.3-4.3\"/>\n </svg>\n <span>Search</span>\n <kbd>/</kbd>\n </button>\n <button class=\"theme-toggle\" aria-label=\"Toggle theme\">\n <svg class=\"icon-sun\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\" stroke-linecap=\"round\">\n <circle cx=\"12\" cy=\"12\" r=\"5\"/><path d=\"M12 1v2M12 21v2M4.22 4.22l1.42 1.42M18.36 18.36l1.42 1.42M1 12h2M21 12h2M4.22 19.78l1.42-1.42M18.36 5.64l1.42-1.42\"/>\n </svg>\n <svg class=\"icon-moon\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\" stroke-linecap=\"round\">\n <path d=\"M21 12.79A9 9 0 1 1 11.21 3 7 7 0 0 0 21 12.79z\"/>\n </svg>\n </button>\n </div>\n </header>\n <div class=\"search-modal-overlay\">\n <div class=\"search-modal\">\n <div class=\"search-header\">\n <svg width=\"20\" height=\"20\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\" stroke-linecap=\"round\">\n <circle cx=\"11\" cy=\"11\" r=\"8\"/><path d=\"m21 21-4.3-4.3\"/>\n </svg>\n <input type=\"text\" class=\"search-input\" placeholder=\"Search documentation...\" />\n <button class=\"search-close\">Esc</button>\n </div>\n <div class=\"search-results\"></div>\n <div class=\"search-footer\">\n <span><kbd>\u2191</kbd><kbd>\u2193</kbd> to navigate</span>\n <span><kbd>Enter</kbd> to select</span>\n <span><kbd>Esc</kbd> to close</span>\n </div>\n </div>\n </div>\n <div class=\"overlay\"></div>\n <div class=\"layout\">\n <aside class=\"sidebar{{#entryPage}} sidebar--entry{{/entryPage}}\">\n <nav>\n{{navigation}}\n </nav>\n </aside>\n <main class=\"main\">\n <article class=\"content\">\n{{content}}\n </article>\n </main>\n{{#hasToc}}\n <aside class=\"toc\">\n <div class=\"toc-title\">On this page</div>\n <ul class=\"toc-list\">\n{{toc}}\n </ul>\n </aside>\n{{/hasToc}}\n </div>\n <script>\n // Menu toggle\n const toggle = document.querySelector('.menu-toggle');\n const sidebar = document.querySelector('.sidebar');\n const overlay = document.querySelector('.overlay');\n if (toggle && sidebar && overlay) {\n const close = () => { sidebar.classList.remove('open'); overlay.classList.remove('open'); };\n toggle.addEventListener('click', () => {\n sidebar.classList.toggle('open');\n overlay.classList.toggle('open');\n });\n overlay.addEventListener('click', close);\n sidebar.querySelectorAll('a').forEach(a => a.addEventListener('click', close));\n }\n\n // Theme toggle\n const themeToggle = document.querySelector('.theme-toggle');\n const getPreferredTheme = () => {\n const stored = localStorage.getItem('theme');\n if (stored) return stored;\n return window.matchMedia('(prefers-color-scheme: dark)').matches ? 'dark' : 'light';\n };\n const setTheme = (theme) => {\n document.documentElement.setAttribute('data-theme', theme);\n localStorage.setItem('theme', theme);\n };\n // Initialize theme\n setTheme(getPreferredTheme());\n if (themeToggle) {\n themeToggle.addEventListener('click', () => {\n const current = document.documentElement.getAttribute('data-theme') || getPreferredTheme();\n setTheme(current === 'dark' ? 'light' : 'dark');\n });\n }\n\n document.querySelectorAll('.ox-api-controls').forEach((controls) => {\n const targetSelector = controls.getAttribute('data-ox-api-target');\n if (!targetSelector) return;\n\n controls.querySelectorAll('[data-ox-api-toggle]').forEach((button) => {\n button.addEventListener('click', () => {\n const shouldOpen = button.getAttribute('data-ox-api-toggle') === 'expand';\n document.querySelectorAll(targetSelector).forEach((entry) => {\n if (entry instanceof HTMLDetailsElement) {\n entry.open = shouldOpen;\n }\n });\n });\n });\n });\n\n // Search functionality\n const searchButton = document.querySelector('.search-button');\n const searchOverlay = document.querySelector('.search-modal-overlay');\n const searchInput = document.querySelector('.search-input');\n const searchResults = document.querySelector('.search-results');\n const searchClose = document.querySelector('.search-close');\n let searchIndex = null;\n let selectedIndex = 0;\n let results = [];\n\n const openSearch = () => {\n searchOverlay.classList.add('open');\n searchInput.focus();\n };\n const closeSearch = () => {\n searchOverlay.classList.remove('open');\n searchInput.value = '';\n searchResults.innerHTML = '';\n selectedIndex = 0;\n results = [];\n };\n\n // Load search index\n const loadSearchIndex = async () => {\n if (searchIndex) return;\n try {\n const res = await fetch('{{base}}search-index.json');\n searchIndex = await res.json();\n } catch (e) {\n console.warn('Failed to load search index:', e);\n }\n };\n\n const parseScopedQuery = (query) => {\n const scopes = [];\n const terms = [];\n for (const part of query.trim().split(/\\s+/).filter(Boolean)) {\n if (part.startsWith('@') && part.length > 1) {\n scopes.push(part.slice(1).toLowerCase());\n } else {\n terms.push(part);\n }\n }\n return { text: terms.join(' ').trim(), scopes: [...new Set(scopes)] };\n };\n\n const getScopesForDoc = (doc) => {\n const source = (doc.id || doc.url || '').replace(/^\\/+/, '').toLowerCase();\n const segments = source.split('/').filter(Boolean);\n if (segments.length <= 1) return [];\n\n const scopes = [];\n let current = '';\n for (const segment of segments.slice(0, -1)) {\n current = current ? current + '/' + segment : segment;\n scopes.push(current);\n }\n return scopes;\n };\n\n const matchesScopes = (doc, scopes) => {\n if (!scopes.length) return true;\n const docScopes = new Set(getScopesForDoc(doc));\n return scopes.some((scope) => docScopes.has(scope));\n };\n\n // Tokenize query\n const tokenize = (text) => {\n const tokens = [];\n let current = '';\n for (const char of text) {\n const isCjk = /[\\u4E00-\\u9FFF\\u3400-\\u4DBF\\u3040-\\u309F\\u30A0-\\u30FF\\uAC00-\\uD7AF]/.test(char);\n if (isCjk) {\n if (current) { tokens.push(current.toLowerCase()); current = ''; }\n tokens.push(char);\n } else if (/[a-zA-Z0-9_]/.test(char)) {\n current += char;\n } else if (current) {\n tokens.push(current.toLowerCase());\n current = '';\n }\n }\n if (current) tokens.push(current.toLowerCase());\n return tokens;\n };\n\n // Perform search\n const performSearch = async (query) => {\n await loadSearchIndex();\n if (!searchIndex) {\n searchResults.innerHTML = '<div class=\"search-empty\">Search index not available</div>';\n return;\n }\n\n const parsedQuery = parseScopedQuery(query);\n if (!parsedQuery.text && parsedQuery.scopes.length === 0) {\n searchResults.innerHTML = '';\n results = [];\n return;\n }\n\n const tokens = tokenize(parsedQuery.text);\n const k1 = 1.2, b = 0.75;\n const docScores = new Map();\n\n if (!tokens.length) {\n searchIndex.documents.forEach((doc, docIdx) => {\n if (matchesScopes(doc, parsedQuery.scopes)) {\n docScores.set(docIdx, { score: 0, matches: new Set() });\n }\n });\n }\n\n for (let i = 0; i < tokens.length; i++) {\n const token = tokens[i];\n const isLast = i === tokens.length - 1;\n let matchingTerms = [];\n if (isLast && token.length >= 2) {\n matchingTerms = Object.keys(searchIndex.index).filter(t => t.startsWith(token));\n } else if (searchIndex.index[token]) {\n matchingTerms = [token];\n }\n\n for (const term of matchingTerms) {\n const postings = searchIndex.index[term] || [];\n const df = searchIndex.df[term] || 1;\n const idf = Math.log((searchIndex.doc_count - df + 0.5) / (df + 0.5) + 1.0);\n\n for (const posting of postings) {\n const doc = searchIndex.documents[posting.doc_idx];\n if (!doc) continue;\n if (!matchesScopes(doc, parsedQuery.scopes)) continue;\n const boost = posting.field === 'Title' ? 10 : posting.field === 'Heading' ? 5 : 1;\n const tf = posting.tf;\n const docLen = doc.body.length;\n const score = idf * ((tf * (k1 + 1)) / (tf + k1 * (1 - b + b * docLen / searchIndex.avg_dl))) * boost;\n\n if (!docScores.has(posting.doc_idx)) {\n docScores.set(posting.doc_idx, { score: 0, matches: new Set() });\n }\n const entry = docScores.get(posting.doc_idx);\n entry.score += score;\n entry.matches.add(term);\n }\n }\n }\n\n results = Array.from(docScores.entries())\n .map(([docIdx, data]) => {\n const doc = searchIndex.documents[docIdx];\n const scopes = getScopesForDoc(doc);\n let snippet = '';\n if (doc.body) {\n const bodyLower = doc.body.toLowerCase();\n let firstPos = -1;\n for (const match of data.matches) {\n const pos = bodyLower.indexOf(match);\n if (pos !== -1 && (firstPos === -1 || pos < firstPos)) firstPos = pos;\n }\n const start = firstPos === -1 ? 0 : Math.max(0, firstPos - 50);\n const end = Math.min(doc.body.length, start + 150);\n snippet = doc.body.slice(start, end);\n if (start > 0) snippet = '...' + snippet;\n if (end < doc.body.length) snippet += '...';\n }\n return { ...doc, score: data.score, scopes, snippet };\n })\n .sort((a, b) => b.score - a.score || a.title.localeCompare(b.title))\n .slice(0, 10);\n\n selectedIndex = 0;\n renderResults();\n };\n\n const renderResults = () => {\n if (!results.length) {\n searchResults.innerHTML = '<div class=\"search-empty\">No results found</div>';\n return;\n }\n searchResults.innerHTML = results.map((r, i) =>\n '<a href=\"' + r.url + '\" class=\"search-result' + (i === selectedIndex ? ' selected' : '') + '\">' +\n '<div class=\"search-result-title\">' + r.title + (r.scopes?.length ? '<span class=\"search-result-scope\">@' + r.scopes[0] + '</span>' : '') + '</div>' +\n (r.snippet ? '<div class=\"search-result-snippet\">' + r.snippet + '</div>' : '') +\n '</a>'\n ).join('');\n };\n\n // Event listeners\n if (searchButton) searchButton.addEventListener('click', openSearch);\n if (searchClose) searchClose.addEventListener('click', closeSearch);\n if (searchOverlay) searchOverlay.addEventListener('click', (e) => { if (e.target === searchOverlay) closeSearch(); });\n\n let searchTimeout = null;\n if (searchInput) {\n searchInput.addEventListener('input', () => {\n if (searchTimeout) clearTimeout(searchTimeout);\n searchTimeout = setTimeout(() => performSearch(searchInput.value), 150);\n });\n searchInput.addEventListener('keydown', (e) => {\n if (e.key === 'Escape') closeSearch();\n else if (e.key === 'ArrowDown') {\n e.preventDefault();\n if (selectedIndex < results.length - 1) { selectedIndex++; renderResults(); }\n } else if (e.key === 'ArrowUp') {\n e.preventDefault();\n if (selectedIndex > 0) { selectedIndex--; renderResults(); }\n } else if (e.key === 'Enter' && results[selectedIndex]) {\n e.preventDefault();\n window.location.href = results[selectedIndex].url;\n }\n });\n }\n\n // Global keyboard shortcut (/ or Cmd+K)\n document.addEventListener('keydown', (e) => {\n if ((e.key === '/' && !(e.target instanceof HTMLInputElement)) ||\n ((e.metaKey || e.ctrlKey) && e.key.toLowerCase() === 'k')) {\n e.preventDefault();\n openSearch();\n }\n });\n </script>\n</body>\n</html>";
1472
+ declare const DEFAULT_HTML_TEMPLATE = "<!DOCTYPE html>\n<html lang=\"en\">\n<head>\n <meta charset=\"UTF-8\">\n <meta name=\"viewport\" content=\"width=device-width, initial-scale=1.0\">\n <title>{{title}}{{#siteName}} - {{siteName}}{{/siteName}}</title>\n {{#description}}<meta name=\"description\" content=\"{{description}}\">{{/description}}\n <!-- Open Graph -->\n <meta property=\"og:type\" content=\"website\">\n <meta property=\"og:title\" content=\"{{title}}{{#siteName}} - {{siteName}}{{/siteName}}\">\n {{#description}}<meta property=\"og:description\" content=\"{{description}}\">{{/description}}\n {{#ogImage}}<meta property=\"og:image\" content=\"{{ogImage}}\">{{/ogImage}}\n <!-- Twitter Card -->\n {{#ogImage}}<meta name=\"twitter:card\" content=\"summary_large_image\">{{/ogImage}}\n {{^ogImage}}<meta name=\"twitter:card\" content=\"summary\">{{/ogImage}}\n <meta name=\"twitter:title\" content=\"{{title}}{{#siteName}} - {{siteName}}{{/siteName}}\">\n {{#description}}<meta name=\"twitter:description\" content=\"{{description}}\">{{/description}}\n {{#ogImage}}<meta name=\"twitter:image\" content=\"{{ogImage}}\">{{/ogImage}}\n <style>\n :root {\n --sidebar-width: 260px;\n --header-height: 60px;\n --max-content-width: 960px;\n --font-sans: 'IBM Plex Sans', 'Avenir Next', 'Segoe UI Variable', 'Segoe UI', sans-serif;\n --font-mono: 'IBM Plex Mono', 'SFMono-Regular', Consolas, monospace;\n --color-bg: #ffffff;\n --color-bg-alt: #f5f7fb;\n --color-text: #131a30;\n --color-text-muted: #4f607b;\n --color-border: #d2dbea;\n --color-primary: #4f6fae;\n --color-primary-hover: #425f96;\n --color-code-bg: #101a31;\n --color-code-bg-top: #18264a;\n --color-code-text: #edf3ff;\n --color-code-line-highlight: rgba(56, 189, 248, 0.16);\n --color-code-line-warning: rgba(245, 158, 11, 0.18);\n --color-code-line-warning-border: #f59e0b;\n --color-code-line-error: rgba(239, 68, 68, 0.18);\n --color-code-line-error-border: #ef4444;\n --color-code-frame-border: rgba(147, 166, 200, 0.46);\n --surface-noise-image: url(\"data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 180 180'%3E%3Cfilter id='noise'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='1.2' numOctaves='2' stitchTiles='stitch'/%3E%3C/filter%3E%3Crect width='180' height='180' filter='url(%23noise)' opacity='0.062'/%3E%3C/svg%3E\");\n --surface-noise-size: 164px 164px;\n }\n [data-theme=\"dark\"] {\n --color-bg: #060816;\n --color-bg-alt: #0d1528;\n --color-text: #ebf2ff;\n --color-text-muted: #8ea0bf;\n --color-border: #223252;\n --color-primary: #86a4da;\n --color-primary-hover: #a3bbe8;\n --color-code-bg: #0a1020;\n --color-code-bg-top: #0a1020;\n --color-code-text: #e7f0ff;\n --color-code-line-highlight: rgba(14, 165, 233, 0.2);\n --color-code-line-warning: rgba(245, 158, 11, 0.2);\n --color-code-line-warning-border: #f59e0b;\n --color-code-line-error: rgba(239, 68, 68, 0.22);\n --color-code-line-error-border: #f87171;\n --color-code-frame-border: rgba(34, 50, 82, 0.92);\n --surface-noise-image: url(\"data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 180 180'%3E%3Cfilter id='noise'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='1.25' numOctaves='2' stitchTiles='stitch'/%3E%3C/filter%3E%3Crect width='180' height='180' filter='url(%23noise)' opacity='0.098'/%3E%3C/svg%3E\");\n }\n @media (prefers-color-scheme: dark) {\n :root:not([data-theme=\"light\"]) {\n --color-bg: #060816;\n --color-bg-alt: #0d1528;\n --color-text: #ebf2ff;\n --color-text-muted: #8ea0bf;\n --color-border: #223252;\n --color-primary: #86a4da;\n --color-primary-hover: #a3bbe8;\n --color-code-bg: #0a1020;\n --color-code-bg-top: #0a1020;\n --color-code-text: #e7f0ff;\n --color-code-line-highlight: rgba(14, 165, 233, 0.2);\n --color-code-line-warning: rgba(245, 158, 11, 0.2);\n --color-code-line-warning-border: #f59e0b;\n --color-code-line-error: rgba(239, 68, 68, 0.22);\n --color-code-line-error-border: #f87171;\n --color-code-frame-border: rgba(34, 50, 82, 0.92);\n --surface-noise-image: url(\"data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 180 180'%3E%3Cfilter id='noise'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='1.25' numOctaves='2' stitchTiles='stitch'/%3E%3C/filter%3E%3Crect width='180' height='180' filter='url(%23noise)' opacity='0.098'/%3E%3C/svg%3E\");\n }\n }\n * { box-sizing: border-box; margin: 0; padding: 0; }\n html { scroll-behavior: smooth; }\n body {\n font-family: var(--font-sans);\n line-height: 1.7;\n color: var(--color-text);\n background: var(--color-bg);\n background-image: var(--surface-noise-image);\n background-size: var(--surface-noise-size);\n background-repeat: repeat;\n background-blend-mode: soft-light;\n }\n a { color: var(--color-primary); text-decoration: none; }\n a:hover { color: var(--color-primary-hover); text-decoration: underline; }\n\n /* Header */\n .header {\n position: fixed;\n top: 0;\n left: 0;\n right: 0;\n height: var(--header-height);\n background: var(--color-bg);\n border-bottom: 1px solid var(--color-border);\n display: flex;\n align-items: center;\n padding: 0 1.5rem;\n z-index: 100;\n }\n .header,\n .sidebar,\n .search-modal,\n .mobile-footer,\n .content .ox-api-entry,\n .content .ox-api-module,\n .content blockquote.ox-callout {\n background-image: var(--surface-noise-image);\n background-size: var(--surface-noise-size);\n background-repeat: repeat;\n background-blend-mode: soft-light;\n }\n .header-title {\n font-size: 1.25rem;\n font-weight: 600;\n color: var(--color-text);\n }\n .header-title:hover { text-decoration: none; }\n .menu-toggle {\n display: none;\n background: none;\n border: none;\n cursor: pointer;\n padding: 0.5rem;\n margin-right: 0.75rem;\n }\n .menu-toggle svg { display: block; }\n .menu-toggle path { stroke: var(--color-text); }\n .header-actions { margin-left: auto; display: flex; align-items: center; gap: 0.5rem; }\n .search-button {\n display: flex;\n align-items: center;\n gap: 0.5rem;\n padding: 0.5rem 0.75rem;\n background: var(--color-bg-alt);\n border: 1px solid var(--color-border);\n border-radius: 4px;\n color: var(--color-text-muted);\n cursor: pointer;\n font-size: 0.875rem;\n transition: border-color 0.15s, color 0.15s;\n }\n .search-button:hover { border-color: var(--color-primary); color: var(--color-text); }\n .search-button svg { width: 16px; height: 16px; }\n .search-button kbd {\n padding: 0.125rem 0.375rem;\n background: var(--color-bg);\n border: 1px solid var(--color-border);\n border-radius: 4px;\n font-family: var(--font-mono);\n font-size: 0.75rem;\n }\n @media (max-width: 640px) {\n .search-button span, .search-button kbd { display: none; }\n .search-button { padding: 0.5rem; }\n }\n .search-modal-overlay {\n display: none;\n position: fixed;\n inset: 0;\n z-index: 200;\n background: rgba(0,0,0,0.6);\n justify-content: center;\n padding-top: 10vh;\n }\n .search-modal-overlay.open { display: flex; }\n .search-modal {\n width: 100%;\n max-width: 560px;\n margin: 0 1rem;\n background: var(--color-bg);\n border: 1px solid var(--color-border);\n border-radius: 4px;\n overflow: hidden;\n max-height: 70vh;\n display: flex;\n flex-direction: column;\n }\n .search-header {\n display: flex;\n align-items: center;\n gap: 0.75rem;\n padding: 1rem;\n border-bottom: 1px solid var(--color-border);\n }\n .search-header svg { flex-shrink: 0; color: var(--color-text-muted); }\n .search-input {\n flex: 1;\n background: none;\n border: none;\n outline: none;\n font-size: 1rem;\n color: var(--color-text);\n }\n .search-input::placeholder { color: var(--color-text-muted); }\n .search-close {\n padding: 0.25rem 0.5rem;\n background: var(--color-bg-alt);\n border: 1px solid var(--color-border);\n border-radius: 4px;\n color: var(--color-text-muted);\n font-family: var(--font-mono);\n font-size: 0.75rem;\n cursor: pointer;\n }\n .search-results {\n flex: 1;\n overflow-y: auto;\n padding: 0.5rem;\n }\n .search-result {\n display: block;\n padding: 0.75rem 1rem;\n border-radius: 4px;\n color: var(--color-text);\n text-decoration: none;\n }\n .search-result:hover, .search-result.selected { background: var(--color-bg-alt); text-decoration: none; }\n .search-result-title { font-weight: 600; font-size: 0.875rem; margin-bottom: 0.25rem; }\n .search-result-snippet { font-size: 0.8125rem; color: var(--color-text-muted); }\n .search-empty { padding: 2rem 1rem; text-align: center; color: var(--color-text-muted); }\n .search-footer {\n display: flex;\n align-items: center;\n justify-content: center;\n gap: 1rem;\n padding: 0.75rem 1rem;\n border-top: 1px solid var(--color-border);\n background: var(--color-bg-alt);\n font-size: 0.75rem;\n color: var(--color-text-muted);\n }\n .search-footer kbd {\n padding: 0.125rem 0.375rem;\n background: var(--color-bg);\n border: 1px solid var(--color-border);\n border-radius: 4px;\n font-family: var(--font-mono);\n }\n .theme-toggle {\n background: none;\n border: none;\n cursor: pointer;\n padding: 0.5rem;\n border-radius: 4px;\n color: var(--color-text-muted);\n transition: background 0.15s, color 0.15s;\n }\n .theme-toggle:hover { background: var(--color-bg-alt); color: var(--color-text); }\n .theme-toggle svg { display: block; width: 20px; height: 20px; }\n .theme-toggle .icon-sun { display: none; }\n .theme-toggle .icon-moon { display: block; }\n [data-theme=\"dark\"] .theme-toggle .icon-sun { display: block; }\n [data-theme=\"dark\"] .theme-toggle .icon-moon { display: none; }\n @media (prefers-color-scheme: dark) {\n :root:not([data-theme=\"light\"]) .theme-toggle .icon-sun { display: block; }\n :root:not([data-theme=\"light\"]) .theme-toggle .icon-moon { display: none; }\n }\n\n /* Layout */\n .layout {\n display: flex;\n padding-top: var(--header-height);\n min-height: 100vh;\n }\n\n /* Sidebar */\n .sidebar {\n position: fixed;\n top: var(--header-height);\n left: 0;\n bottom: 0;\n width: var(--sidebar-width);\n background: color-mix(in srgb, var(--color-bg-alt) 16%, var(--color-bg));\n border-right: 1px solid color-mix(in srgb, var(--color-border) 48%, transparent);\n overflow-y: auto;\n padding: 1rem 0.875rem 1.5rem;\n }\n .sidebar--entry { display: none; }\n .sidebar nav {\n display: flex;\n flex-direction: column;\n gap: 1rem;\n }\n .nav-section { margin-bottom: 0; }\n .nav-title {\n font-size: 0.6875rem;\n font-weight: 600;\n text-transform: uppercase;\n letter-spacing: 0.08em;\n color: var(--color-text-muted);\n margin-bottom: 0.4rem;\n padding: 0 0.625rem;\n }\n .nav-list {\n list-style: none;\n display: flex;\n flex-direction: column;\n gap: 0.125rem;\n }\n .nav-item { margin: 0; }\n .nav-link {\n display: block;\n padding: 0.45rem 0.625rem;\n border-radius: 0;\n color: color-mix(in srgb, var(--color-text) 92%, var(--color-text-muted));\n font-size: 0.875rem;\n }\n .nav-link:hover {\n background: color-mix(in srgb, var(--color-bg-alt) 58%, transparent);\n color: var(--color-text);\n text-decoration: none;\n }\n .nav-link.active {\n background: color-mix(in srgb, var(--color-bg-alt) 72%, transparent);\n color: var(--color-text);\n font-weight: 600;\n }\n\n /* Main content */\n .main {\n flex: 1;\n margin-left: var(--sidebar-width);\n padding: 2rem;\n min-width: 0;\n overflow-x: hidden;\n }\n .content {\n max-width: var(--max-content-width);\n margin: 0 auto;\n overflow-wrap: break-word;\n word-wrap: break-word;\n word-break: break-word;\n }\n\n /* TOC (right sidebar) */\n .toc {\n position: fixed;\n top: calc(var(--header-height) + 2rem);\n right: 2rem;\n width: 200px;\n font-size: 0.8125rem;\n }\n .toc-title {\n font-weight: 600;\n margin-bottom: 0.75rem;\n color: var(--color-text-muted);\n }\n .toc-list { list-style: none; }\n .toc-item { margin: 0.375rem 0; }\n .toc-link {\n color: var(--color-text-muted);\n display: block;\n padding-left: calc((var(--depth, 1) - 1) * 0.75rem);\n }\n .toc-link:hover { color: var(--color-primary); }\n @media (max-width: 1200px) { .toc { display: none; } }\n\n /* Typography */\n .content h1 { font-size: 2.25rem; margin-bottom: 1rem; line-height: 1.2; }\n .content h2 { font-size: 1.5rem; margin-top: 2.5rem; margin-bottom: 1rem; padding-bottom: 0.5rem; border-bottom: 1px solid var(--color-border); }\n .content h3 { font-size: 1.25rem; margin-top: 2rem; margin-bottom: 0.75rem; }\n .content h4 { font-size: 1rem; margin-top: 1.5rem; margin-bottom: 0.5rem; }\n .content p { margin-bottom: 1rem; }\n .content ul, .content ol { margin: 1rem 0; padding-left: 1.5rem; }\n .content li { margin: 0.375rem 0; }\n .content blockquote {\n border-left: 4px solid var(--color-primary);\n padding: 0.5rem 1rem;\n margin: 1rem 0;\n background: var(--color-bg-alt);\n border-radius: 0 4px 4px 0;\n }\n .content blockquote.ox-callout {\n --callout-accent: var(--color-primary);\n border-left-width: 3px;\n border-left-color: var(--callout-accent);\n padding: 0.9rem 1rem;\n border-radius: 4px;\n background: color-mix(in srgb, var(--color-bg-alt) 92%, var(--callout-accent) 8%);\n }\n .content blockquote.ox-callout.ox-callout--note,\n .content blockquote.ox-callout.ox-callout--important { --callout-accent: var(--color-primary); }\n .content blockquote.ox-callout.ox-callout--tip { --callout-accent: #0891b2; }\n .content blockquote.ox-callout.ox-callout--warning { --callout-accent: #d97706; }\n .content blockquote.ox-callout.ox-callout--caution { --callout-accent: #dc2626; }\n .content .ox-callout-title {\n margin: 0 0 0.5rem;\n font-size: 0.75rem;\n font-weight: 700;\n letter-spacing: 0.08em;\n text-transform: uppercase;\n color: var(--callout-accent, var(--color-primary));\n }\n .content blockquote.ox-callout > :last-child { margin-bottom: 0; }\n .content blockquote.ox-callout > :not(.ox-callout-title):first-of-type { margin-top: 0; }\n .content code {\n font-family: var(--font-mono);\n font-size: 0.875em;\n background: var(--color-bg-alt);\n padding: 0.2em 0.4em;\n border-radius: 4px;\n word-break: break-all;\n }\n .content pre {\n background: linear-gradient(\n 180deg,\n var(--color-code-bg-top) 0,\n var(--color-code-bg) 3.5rem\n ) !important;\n color: var(--color-code-text);\n padding: 1rem 1.25rem;\n border-radius: 4px;\n border: 1px solid var(--color-code-frame-border);\n overflow-x: auto;\n margin: 1.5rem 0;\n line-height: 1.5;\n }\n .content pre code {\n background: transparent;\n border: 0;\n padding: 0;\n border-radius: 0;\n font-size: 0.8125rem;\n word-break: normal;\n }\n .content pre.ox-code-block code {\n display: block;\n }\n .content pre.ox-code-block .line {\n display: block;\n margin: 0 -1.25rem;\n padding: 0 1.25rem;\n }\n .content pre.ox-code-block .ox-code-line--highlight {\n background: var(--color-code-line-highlight);\n }\n .content pre.ox-code-block .ox-code-line--warning {\n background: var(--color-code-line-warning);\n border-left: 3px solid var(--color-code-line-warning-border);\n }\n .content pre.ox-code-block .ox-code-line--error {\n background: var(--color-code-line-error);\n border-left: 3px solid var(--color-code-line-error-border);\n }\n .content table {\n width: 100%;\n border-collapse: collapse;\n margin: 1.5rem 0;\n font-size: 0.875rem;\n }\n .content th, .content td {\n border: 1px solid var(--color-border);\n padding: 0.75rem 1rem;\n text-align: left;\n }\n .content th { background: var(--color-bg-alt); font-weight: 600; }\n .content img { max-width: 100%; height: auto; border-radius: 4px; display: block; }\n .content img[alt*=\"Logo\"] { max-width: 200px; display: block; margin: 1rem 0; }\n .content img[alt*=\"Architecture\"] { max-width: 600px; }\n .content img[alt*=\"Benchmark\"] { max-width: 680px; }\n .content hr { border: none; border-top: 1px solid var(--color-border); margin: 2rem 0; }\n .content .ox-api-controls {\n display: flex;\n justify-content: flex-end;\n align-items: center;\n gap: 0.5rem;\n margin: 0 0 1rem;\n }\n .content .ox-api-controls__button {\n appearance: none;\n border: 1px solid color-mix(in srgb, var(--color-border) 82%, transparent);\n background: color-mix(in srgb, var(--color-bg-alt) 82%, var(--color-bg));\n padding: 0.4rem 0.7rem;\n border-radius: 4px;\n color: color-mix(in srgb, var(--color-text) 82%, var(--color-text-muted));\n font-family: var(--font-mono);\n font-size: 0.78rem;\n font-weight: 600;\n line-height: 1.4;\n cursor: pointer;\n }\n .content .ox-api-controls__button:hover {\n color: var(--color-primary);\n border-color: color-mix(in srgb, var(--color-primary) 38%, var(--color-border));\n background: color-mix(in srgb, var(--color-bg-alt) 68%, var(--color-primary) 6%);\n }\n .content .ox-api-stats {\n display: grid;\n grid-template-columns: repeat(auto-fit, minmax(7rem, 1fr));\n gap: 0.55rem;\n margin: 1rem 0 1.35rem;\n }\n .content .ox-api-stat {\n min-width: 0;\n padding: 0.7rem 0.75rem;\n border: 1px solid color-mix(in srgb, var(--color-border) 76%, transparent);\n border-radius: 4px;\n background: color-mix(in srgb, var(--color-bg-alt) 72%, transparent);\n }\n .content .ox-api-stat strong {\n display: block;\n font-family: var(--font-mono);\n font-size: 1rem;\n line-height: 1.2;\n color: var(--color-text);\n }\n .content .ox-api-stat span {\n display: block;\n margin-top: 0.25rem;\n font-family: var(--font-mono);\n font-size: 0.7rem;\n font-weight: 600;\n letter-spacing: 0.04em;\n text-transform: uppercase;\n color: var(--color-text-muted);\n }\n .content .ox-api-stat--warning {\n border-color: color-mix(in srgb, #f59e0b 42%, var(--color-border));\n background: color-mix(in srgb, var(--color-bg-alt) 78%, #f59e0b 8%);\n }\n .content .ox-api-entry,\n .content .ox-api-module {\n margin: 0;\n border: 0;\n border-top: 1px solid color-mix(in srgb, var(--color-border) 74%, transparent);\n border-radius: 0;\n background: transparent;\n overflow: visible;\n }\n .content .ox-api-entry:last-child,\n .content .ox-api-module:last-child {\n border-bottom: 1px solid color-mix(in srgb, var(--color-border) 74%, transparent);\n }\n .content .ox-api-entry summary,\n .content .ox-api-module summary {\n list-style: none;\n cursor: pointer;\n padding: 1rem 0;\n position: relative;\n }\n .content .ox-api-entry summary::-webkit-details-marker,\n .content .ox-api-module summary::-webkit-details-marker { display: none; }\n .content .ox-api-entry summary {\n display: grid;\n grid-template-columns: var(--octc-api-kind-width, 6.5rem) minmax(0, 1fr) auto;\n align-items: start;\n gap: 0.95rem;\n }\n .content .ox-api-entry summary::after,\n .content .ox-api-module summary::after {\n content: \"+\";\n align-self: center;\n color: var(--color-text-muted);\n font-family: var(--font-mono);\n font-size: 0.95rem;\n font-weight: 600;\n line-height: 1;\n }\n .content .ox-api-entry[open] summary::after,\n .content .ox-api-module[open] summary::after {\n content: \"\u2212\";\n color: var(--color-primary);\n }\n .content .ox-api-entry[open] summary,\n .content .ox-api-module[open] summary {\n border-bottom: 1px solid color-mix(in srgb, var(--color-border) 72%, transparent);\n }\n .content .ox-api-entry__kind,\n .content .ox-api-module__kind {\n display: block;\n width: var(--octc-api-kind-width, 6.5rem);\n padding: 0.3rem 0 0;\n background: transparent;\n border: 0;\n font-family: var(--font-mono);\n font-size: 0.76rem;\n font-weight: 600;\n letter-spacing: 0.01em;\n text-align: left;\n white-space: nowrap;\n color: var(--color-text-muted);\n }\n .content .ox-api-module__count {\n display: inline-flex;\n align-items: center;\n padding: 0.2rem 0.48rem;\n border-radius: 4px;\n background: color-mix(in srgb, var(--color-bg-alt) 84%, var(--color-primary) 8%);\n border: 1px solid color-mix(in srgb, var(--color-border) 82%, transparent);\n color: var(--color-text-muted);\n font-family: var(--font-mono);\n font-size: 0.72rem;\n font-weight: 600;\n letter-spacing: 0.03em;\n white-space: nowrap;\n }\n .content .ox-api-entry__name {\n display: block;\n font-family: var(--font-mono);\n font-size: 0.95rem;\n font-weight: 600;\n line-height: 1.55;\n }\n .content .ox-api-entry__signature,\n .content .ox-api-module__signature {\n display: block;\n width: 100%;\n min-width: 0;\n font-family: var(--font-mono);\n font-size: 0.95rem;\n line-height: 1.55;\n white-space: nowrap;\n overflow-x: auto;\n overflow-y: hidden;\n -webkit-overflow-scrolling: touch;\n }\n .content .ox-api-entry__description {\n display: block;\n color: color-mix(in srgb, var(--color-text) 78%, var(--color-text-muted));\n font-size: 0.9rem;\n line-height: 1.6;\n max-width: 72ch;\n }\n .content .ox-api-entry__summary-main {\n min-width: 0;\n display: flex;\n flex-direction: column;\n gap: 0.55rem;\n }\n .content .ox-api-entry__meta,\n .content .ox-api-module__meta {\n display: flex;\n flex-wrap: wrap;\n gap: 0.35rem;\n }\n .content .ox-api-badge {\n display: inline-flex;\n align-items: center;\n max-width: 100%;\n padding: 0.18rem 0.42rem;\n border: 1px solid color-mix(in srgb, var(--color-border) 78%, transparent);\n border-radius: 4px;\n background: color-mix(in srgb, var(--color-bg-alt) 78%, var(--color-primary) 6%);\n color: color-mix(in srgb, var(--color-text) 74%, var(--color-text-muted));\n font-family: var(--font-mono);\n font-size: 0.68rem;\n font-weight: 600;\n line-height: 1.35;\n }\n .content .ox-api-badge--warning {\n border-color: color-mix(in srgb, #f59e0b 46%, var(--color-border));\n background: color-mix(in srgb, var(--color-bg-alt) 78%, #f59e0b 9%);\n color: color-mix(in srgb, var(--color-text) 86%, #f59e0b);\n }\n .content .ox-api-entry__name,\n .content .ox-api-entry__signature,\n .content .ox-api-module__name,\n .content .ox-api-module__signature {\n background: transparent;\n padding: 0;\n border-radius: 0;\n word-break: normal;\n }\n .content code.shiki-inline.ox-api-entry__signature--highlighted,\n .content code.shiki-inline.ox-api-module__signature--highlighted {\n display: block;\n width: 100%;\n max-width: 100%;\n background: linear-gradient(\n 180deg,\n var(--color-code-bg-top) 0,\n var(--color-code-bg) 2.75rem\n ) !important;\n border: 1px solid var(--color-code-frame-border) !important;\n padding: 0.55rem 0.7rem !important;\n border-radius: 4px !important;\n white-space: nowrap;\n overflow-x: auto;\n overflow-y: hidden;\n -webkit-overflow-scrolling: touch;\n }\n .content code.shiki-inline.ox-api-entry__signature--highlighted .line,\n .content code.shiki-inline.ox-api-module__signature--highlighted .line {\n display: block;\n width: max-content;\n min-width: 100%;\n }\n .content .ox-api-entry__body,\n .content .ox-api-module__body { padding: 0.7rem 0 1.9rem; }\n .content .ox-api-entry__body {\n margin-left: calc(var(--octc-api-kind-width, 6.5rem) + 0.95rem);\n margin-top: 0.7rem;\n padding: 1.45rem 1rem 2.1rem 1.1rem;\n border: 1px solid color-mix(in srgb, var(--color-border) 72%, transparent);\n border-radius: 4px;\n background: color-mix(in srgb, var(--color-bg-alt) 68%, transparent);\n }\n .content .ox-api-entry__body > :first-child { margin-top: 0; }\n .content .ox-api-entry__body > :last-child { margin-bottom: 0; }\n .content .ox-api-entry[open] summary {\n padding-bottom: 0.35rem;\n }\n .content .ox-api-entry__section {\n display: grid;\n grid-template-columns: 6.5rem minmax(0, 1fr);\n gap: 0.2rem 1.25rem;\n align-items: start;\n margin-top: 1rem;\n padding-top: 1rem;\n border-top: 1px solid color-mix(in srgb, var(--color-border) 72%, transparent);\n }\n .content .ox-api-entry__section h4 {\n margin-top: 0;\n margin-bottom: 0;\n padding-top: 0.25rem;\n font-family: var(--font-mono);\n font-size: 0.78rem;\n font-weight: 700;\n letter-spacing: 0.04em;\n text-transform: uppercase;\n color: var(--color-text-muted);\n }\n .content .ox-api-entry__section > :not(h4) { min-width: 0; }\n .content .ox-api-entry__source {\n margin: 0 0 0.15rem;\n font-family: var(--font-mono);\n font-size: 0.78rem;\n color: var(--color-text-muted);\n }\n .content .ox-api-entry__source a {\n color: inherit;\n text-decoration-color: color-mix(in srgb, var(--color-text-muted) 38%, transparent);\n }\n .content .ox-api-entry__tags,\n .content .ox-api-module__list {\n list-style: none;\n padding-left: 0;\n margin: 0;\n }\n .content .ox-api-entry__tags {\n display: flex;\n flex-wrap: wrap;\n gap: 0.6rem;\n }\n .content .ox-api-entry__tags li {\n display: inline-flex;\n align-items: center;\n gap: 0.45rem;\n padding: 0.4rem 0.55rem;\n border: 1px solid color-mix(in srgb, var(--color-border) 80%, transparent);\n border-radius: 4px;\n background: color-mix(in srgb, var(--color-bg-alt) 72%, transparent);\n }\n .content .ox-api-module__list li {\n display: grid;\n grid-template-columns: var(--octc-api-kind-width, 6.5rem) minmax(0, 1fr);\n align-items: start;\n gap: 1rem;\n padding: 0.85rem 0;\n border-top: 1px solid color-mix(in srgb, var(--color-border) 70%, transparent);\n }\n .content .ox-api-module__list li:first-child { border-top: none; }\n .content .ox-api-entry__tag-name,\n .content .ox-api-module__title { font-weight: 700; }\n .content .ox-api-entry__tag-name {\n color: var(--color-primary);\n font-family: var(--font-mono);\n font-size: 0.74rem;\n }\n .content .ox-api-entry__tag-value {\n color: var(--color-text);\n font-size: 0.84rem;\n line-height: 1.45;\n }\n .content .ox-api-module summary {\n display: grid;\n grid-template-columns: minmax(0, 1fr) auto auto;\n align-items: center;\n gap: 0.9rem;\n }\n .content .ox-api-module__body { padding-top: 0.15rem; }\n .content .ox-api-module__item { min-width: 0; }\n .content .ox-api-module__link {\n display: block;\n text-decoration: none;\n }\n .content .ox-api-module__link:hover { text-decoration: none; }\n .content .ox-api-module__name,\n .content .ox-api-module__signature {\n display: block;\n font-family: var(--font-mono);\n font-size: 0.91rem;\n line-height: 1.55;\n color: var(--color-text);\n }\n .content .ox-api-module__summary {\n display: block;\n margin-top: 0.45rem;\n color: color-mix(in srgb, var(--color-text) 76%, var(--color-text-muted));\n font-size: 0.88rem;\n line-height: 1.55;\n }\n .content .ox-api-entry__section--signature pre {\n margin: 0;\n border: 1px solid var(--color-code-frame-border);\n border-radius: 4px;\n }\n .content .ox-api-entry__example + .ox-api-entry__example {\n margin-top: 0.85rem;\n }\n .content .ox-api-entry__example-heading {\n margin-bottom: 0.45rem;\n font-family: var(--font-mono);\n font-size: 0.72rem;\n font-weight: 700;\n letter-spacing: 0.04em;\n text-transform: uppercase;\n color: var(--color-text-muted);\n }\n .content .ox-api-entry__section--examples pre {\n margin: 0;\n border: 1px solid var(--color-code-frame-border);\n border-radius: 4px;\n }\n .content .ox-api-entry__params {\n list-style: none;\n padding: 0;\n margin: 0;\n }\n .content .ox-api-entry__param {\n padding: 0.8rem 0;\n border-top: 1px solid color-mix(in srgb, var(--color-border) 70%, transparent);\n }\n .content .ox-api-entry__param:first-child {\n padding-top: 0;\n border-top: 0;\n }\n .content .ox-api-entry__param-heading {\n display: flex;\n flex-wrap: wrap;\n align-items: center;\n gap: 0.5rem;\n }\n .content .ox-api-entry__param-name,\n .content .ox-api-entry__return-type {\n font-family: var(--font-mono);\n font-size: 0.84rem;\n font-weight: 600;\n color: var(--color-text);\n background: color-mix(in srgb, var(--color-bg-alt) 84%, transparent);\n border: 1px solid color-mix(in srgb, var(--color-border) 82%, transparent);\n padding: 0.28rem 0.42rem;\n border-radius: 4px;\n }\n .content .ox-api-entry__param-type {\n font-family: var(--font-mono);\n font-size: 0.78rem;\n color: var(--color-code-text);\n background: color-mix(in srgb, var(--color-code-bg) 96%, #243556);\n border: 1px solid color-mix(in srgb, var(--color-code-bg) 82%, var(--color-border));\n padding: 0.26rem 0.42rem;\n border-radius: 4px;\n }\n .content .ox-api-entry__param-description,\n .content .ox-api-entry__return-description {\n margin: 0.55rem 0 0;\n font-size: 0.88rem;\n line-height: 1.6;\n color: color-mix(in srgb, var(--color-text) 78%, var(--color-text-muted));\n }\n .content .ox-api-entry__return { margin: 0; }\n\n /* Responsive */\n @media (max-width: 768px) {\n .menu-toggle { display: block; }\n .sidebar {\n transform: translateX(-100%);\n z-index: 99;\n width: 280px;\n }\n .sidebar--entry { display: block; }\n .sidebar.open { transform: translateX(0); }\n .main { margin-left: 0; padding: 1rem 0.75rem; }\n .content { padding: 0 0.25rem; }\n .content h1 { font-size: 1.5rem; line-height: 1.3; margin-bottom: 0.75rem; }\n .content h2 { font-size: 1.2rem; margin-top: 2rem; }\n .content h3 { font-size: 1.1rem; }\n .content p { font-size: 0.9375rem; margin-bottom: 0.875rem; }\n .content ul, .content ol { padding-left: 1.25rem; font-size: 0.9375rem; }\n .content pre {\n padding: 0.75rem;\n font-size: 0.75rem;\n margin: 1rem -0.75rem;\n border-radius: 0;\n overflow-x: auto;\n -webkit-overflow-scrolling: touch;\n }\n .content .ox-api-controls {\n justify-content: flex-start;\n gap: 0.75rem;\n }\n .content .ox-api-entry__body {\n margin-left: 0;\n margin-top: 0.55rem;\n padding: 1.2rem 0 1.7rem;\n border-left: 0;\n border-right: 0;\n border-bottom: 0;\n border-radius: 0;\n background: transparent;\n }\n .content .ox-api-entry__section {\n grid-template-columns: 1fr;\n gap: 0.5rem;\n }\n .content .ox-api-entry__tags li,\n .content .ox-api-module__list li,\n .content .ox-api-module summary {\n grid-template-columns: 1fr;\n }\n .content .ox-api-entry__signature { width: 100%; }\n .content pre.ox-code-block .line {\n margin: 0 -0.75rem;\n padding: 0 0.75rem;\n }\n .content code { font-size: 0.8125em; }\n .content table {\n display: block;\n width: max-content;\n min-width: 100%;\n max-width: calc(100vw - 1.5rem);\n overflow-x: auto;\n -webkit-overflow-scrolling: touch;\n font-size: 0.8125rem;\n margin: 1rem 0;\n border-collapse: separate;\n border-spacing: 0;\n }\n .content th, .content td { padding: 0.5rem 0.75rem; white-space: nowrap; vertical-align: top; }\n .content img { margin: 1rem 0; }\n .content img[alt*=\"Logo\"] { max-width: 150px; }\n .content img[alt*=\"Architecture\"] { max-width: 100%; }\n .content img[alt*=\"Benchmark\"] { max-width: 100%; }\n .content blockquote { padding: 0.5rem 0.75rem; margin: 1rem 0; font-size: 0.9375rem; }\n .header { padding: 0 1rem; }\n .header-title { font-size: 1rem; }\n .header-title:not(.header-title--logo-only) img { width: 24px; height: 24px; }\n .header-title--logo-only .header-logo { width: 152px; height: auto; }\n .overlay {\n display: none;\n position: fixed;\n inset: 0;\n background: transparent;\n z-index: 98;\n }\n .overlay.open { display: block; }\n }\n\n /* Extra small devices */\n @media (max-width: 480px) {\n .main { padding: 0.75rem 0.5rem; }\n .content h1 { font-size: 1.35rem; }\n .content pre { font-size: 0.6875rem; padding: 0.625rem; }\n .content table { max-width: calc(100vw - 1rem); font-size: 0.75rem; }\n .content th, .content td { padding: 0.375rem 0.5rem; }\n }\n </style>\n</head>\n<body>\n <header class=\"header\">\n <button class=\"menu-toggle\" aria-label=\"Toggle menu\">\n <svg width=\"24\" height=\"24\" viewBox=\"0 0 24 24\" fill=\"none\" stroke-width=\"2\" stroke-linecap=\"round\">\n <path d=\"M3 12h18M3 6h18M3 18h18\"/>\n </svg>\n </button>\n <a href=\"{{base}}index.html\" class=\"header-title\">\n <img src=\"{{base}}logo.svg\" alt=\"\" width=\"28\" height=\"28\" style=\"margin-right: 8px; vertical-align: middle;\" />\n {{siteName}}\n </a>\n <div class=\"header-actions\">\n <button class=\"search-button\" aria-label=\"Search\">\n <svg viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\" stroke-linecap=\"round\">\n <circle cx=\"11\" cy=\"11\" r=\"8\"/><path d=\"m21 21-4.3-4.3\"/>\n </svg>\n <span>Search</span>\n <kbd>/</kbd>\n </button>\n <button class=\"theme-toggle\" aria-label=\"Toggle theme\">\n <svg class=\"icon-sun\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\" stroke-linecap=\"round\">\n <circle cx=\"12\" cy=\"12\" r=\"5\"/><path d=\"M12 1v2M12 21v2M4.22 4.22l1.42 1.42M18.36 18.36l1.42 1.42M1 12h2M21 12h2M4.22 19.78l1.42-1.42M18.36 5.64l1.42-1.42\"/>\n </svg>\n <svg class=\"icon-moon\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\" stroke-linecap=\"round\">\n <path d=\"M21 12.79A9 9 0 1 1 11.21 3 7 7 0 0 0 21 12.79z\"/>\n </svg>\n </button>\n </div>\n </header>\n <div class=\"search-modal-overlay\">\n <div class=\"search-modal\">\n <div class=\"search-header\">\n <svg width=\"20\" height=\"20\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\" stroke-linecap=\"round\">\n <circle cx=\"11\" cy=\"11\" r=\"8\"/><path d=\"m21 21-4.3-4.3\"/>\n </svg>\n <input type=\"text\" class=\"search-input\" placeholder=\"Search documentation...\" />\n <button class=\"search-close\">Esc</button>\n </div>\n <div class=\"search-results\"></div>\n <div class=\"search-footer\">\n <span><kbd>\u2191</kbd><kbd>\u2193</kbd> to navigate</span>\n <span><kbd>Enter</kbd> to select</span>\n <span><kbd>Esc</kbd> to close</span>\n </div>\n </div>\n </div>\n <div class=\"overlay\"></div>\n <div class=\"layout\">\n <aside class=\"sidebar{{#entryPage}} sidebar--entry{{/entryPage}}\">\n <nav>\n{{navigation}}\n </nav>\n </aside>\n <main class=\"main\">\n <article class=\"content\">\n{{content}}\n </article>\n </main>\n{{#hasToc}}\n <aside class=\"toc\">\n <div class=\"toc-title\">On this page</div>\n <ul class=\"toc-list\">\n{{toc}}\n </ul>\n </aside>\n{{/hasToc}}\n </div>\n <script>\n // Menu toggle\n const toggle = document.querySelector('.menu-toggle');\n const sidebar = document.querySelector('.sidebar');\n const overlay = document.querySelector('.overlay');\n if (toggle && sidebar && overlay) {\n const close = () => { sidebar.classList.remove('open'); overlay.classList.remove('open'); };\n toggle.addEventListener('click', () => {\n sidebar.classList.toggle('open');\n overlay.classList.toggle('open');\n });\n overlay.addEventListener('click', close);\n sidebar.querySelectorAll('a').forEach(a => a.addEventListener('click', close));\n }\n\n // Theme toggle\n const themeToggle = document.querySelector('.theme-toggle');\n const getPreferredTheme = () => {\n const stored = localStorage.getItem('theme');\n if (stored) return stored;\n return window.matchMedia('(prefers-color-scheme: dark)').matches ? 'dark' : 'light';\n };\n const setTheme = (theme) => {\n document.documentElement.setAttribute('data-theme', theme);\n localStorage.setItem('theme', theme);\n };\n // Initialize theme\n setTheme(getPreferredTheme());\n if (themeToggle) {\n themeToggle.addEventListener('click', () => {\n const current = document.documentElement.getAttribute('data-theme') || getPreferredTheme();\n setTheme(current === 'dark' ? 'light' : 'dark');\n });\n }\n\n document.querySelectorAll('.ox-api-controls').forEach((controls) => {\n const targetSelector = controls.getAttribute('data-ox-api-target');\n if (!targetSelector) return;\n\n controls.querySelectorAll('[data-ox-api-toggle]').forEach((button) => {\n button.addEventListener('click', () => {\n const shouldOpen = button.getAttribute('data-ox-api-toggle') === 'expand';\n document.querySelectorAll(targetSelector).forEach((entry) => {\n if (entry instanceof HTMLDetailsElement) {\n entry.open = shouldOpen;\n }\n });\n });\n });\n });\n\n // Search functionality\n const searchButton = document.querySelector('.search-button');\n const searchOverlay = document.querySelector('.search-modal-overlay');\n const searchInput = document.querySelector('.search-input');\n const searchResults = document.querySelector('.search-results');\n const searchClose = document.querySelector('.search-close');\n let searchIndex = null;\n let selectedIndex = 0;\n let results = [];\n\n const openSearch = () => {\n searchOverlay.classList.add('open');\n searchInput.focus();\n };\n const closeSearch = () => {\n searchOverlay.classList.remove('open');\n searchInput.value = '';\n searchResults.innerHTML = '';\n selectedIndex = 0;\n results = [];\n };\n\n // Load search index\n const loadSearchIndex = async () => {\n if (searchIndex) return;\n try {\n const res = await fetch('{{base}}search-index.json');\n searchIndex = await res.json();\n } catch (e) {\n console.warn('Failed to load search index:', e);\n }\n };\n\n const parseScopedQuery = (query) => {\n const scopes = [];\n const terms = [];\n for (const part of query.trim().split(/\\s+/).filter(Boolean)) {\n if (part.startsWith('@') && part.length > 1) {\n scopes.push(part.slice(1).toLowerCase());\n } else {\n terms.push(part);\n }\n }\n return { text: terms.join(' ').trim(), scopes: [...new Set(scopes)] };\n };\n\n const getScopesForDoc = (doc) => {\n const source = (doc.id || doc.url || '').replace(/^\\/+/, '').toLowerCase();\n const segments = source.split('/').filter(Boolean);\n if (segments.length <= 1) return [];\n\n const scopes = [];\n let current = '';\n for (const segment of segments.slice(0, -1)) {\n current = current ? current + '/' + segment : segment;\n scopes.push(current);\n }\n return scopes;\n };\n\n const matchesScopes = (doc, scopes) => {\n if (!scopes.length) return true;\n const docScopes = new Set(getScopesForDoc(doc));\n return scopes.some((scope) => docScopes.has(scope));\n };\n\n // Tokenize query\n const tokenize = (text) => {\n const tokens = [];\n let current = '';\n for (const char of text) {\n const isCjk = /[\\u4E00-\\u9FFF\\u3400-\\u4DBF\\u3040-\\u309F\\u30A0-\\u30FF\\uAC00-\\uD7AF]/.test(char);\n if (isCjk) {\n if (current) { tokens.push(current.toLowerCase()); current = ''; }\n tokens.push(char);\n } else if (/[a-zA-Z0-9_]/.test(char)) {\n current += char;\n } else if (current) {\n tokens.push(current.toLowerCase());\n current = '';\n }\n }\n if (current) tokens.push(current.toLowerCase());\n return tokens;\n };\n\n // Perform search\n const performSearch = async (query) => {\n await loadSearchIndex();\n if (!searchIndex) {\n searchResults.innerHTML = '<div class=\"search-empty\">Search index not available</div>';\n return;\n }\n\n const parsedQuery = parseScopedQuery(query);\n if (!parsedQuery.text && parsedQuery.scopes.length === 0) {\n searchResults.innerHTML = '';\n results = [];\n return;\n }\n\n const tokens = tokenize(parsedQuery.text);\n const k1 = 1.2, b = 0.75;\n const docScores = new Map();\n\n if (!tokens.length) {\n searchIndex.documents.forEach((doc, docIdx) => {\n if (matchesScopes(doc, parsedQuery.scopes)) {\n docScores.set(docIdx, { score: 0, matches: new Set() });\n }\n });\n }\n\n for (let i = 0; i < tokens.length; i++) {\n const token = tokens[i];\n const isLast = i === tokens.length - 1;\n let matchingTerms = [];\n if (isLast && token.length >= 2) {\n matchingTerms = Object.keys(searchIndex.index).filter(t => t.startsWith(token));\n } else if (searchIndex.index[token]) {\n matchingTerms = [token];\n }\n\n for (const term of matchingTerms) {\n const postings = searchIndex.index[term] || [];\n const df = searchIndex.df[term] || 1;\n const idf = Math.log((searchIndex.doc_count - df + 0.5) / (df + 0.5) + 1.0);\n\n for (const posting of postings) {\n const doc = searchIndex.documents[posting.doc_idx];\n if (!doc) continue;\n if (!matchesScopes(doc, parsedQuery.scopes)) continue;\n const boost = posting.field === 'Title' ? 10 : posting.field === 'Heading' ? 5 : 1;\n const tf = posting.tf;\n const docLen = doc.body.length;\n const score = idf * ((tf * (k1 + 1)) / (tf + k1 * (1 - b + b * docLen / searchIndex.avg_dl))) * boost;\n\n if (!docScores.has(posting.doc_idx)) {\n docScores.set(posting.doc_idx, { score: 0, matches: new Set() });\n }\n const entry = docScores.get(posting.doc_idx);\n entry.score += score;\n entry.matches.add(term);\n }\n }\n }\n\n results = Array.from(docScores.entries())\n .map(([docIdx, data]) => {\n const doc = searchIndex.documents[docIdx];\n const scopes = getScopesForDoc(doc);\n let snippet = '';\n if (doc.body) {\n const bodyLower = doc.body.toLowerCase();\n let firstPos = -1;\n for (const match of data.matches) {\n const pos = bodyLower.indexOf(match);\n if (pos !== -1 && (firstPos === -1 || pos < firstPos)) firstPos = pos;\n }\n const start = firstPos === -1 ? 0 : Math.max(0, firstPos - 50);\n const end = Math.min(doc.body.length, start + 150);\n snippet = doc.body.slice(start, end);\n if (start > 0) snippet = '...' + snippet;\n if (end < doc.body.length) snippet += '...';\n }\n return { ...doc, score: data.score, scopes, snippet };\n })\n .sort((a, b) => b.score - a.score || a.title.localeCompare(b.title))\n .slice(0, 10);\n\n selectedIndex = 0;\n renderResults();\n };\n\n const renderResults = () => {\n if (!results.length) {\n searchResults.innerHTML = '<div class=\"search-empty\">No results found</div>';\n return;\n }\n searchResults.innerHTML = results.map((r, i) =>\n '<a href=\"' + r.url + '\" class=\"search-result' + (i === selectedIndex ? ' selected' : '') + '\">' +\n '<div class=\"search-result-title\">' + r.title + (r.scopes?.length ? '<span class=\"search-result-scope\">@' + r.scopes[0] + '</span>' : '') + '</div>' +\n (r.snippet ? '<div class=\"search-result-snippet\">' + r.snippet + '</div>' : '') +\n '</a>'\n ).join('');\n };\n\n // Event listeners\n if (searchButton) searchButton.addEventListener('click', openSearch);\n if (searchClose) searchClose.addEventListener('click', closeSearch);\n if (searchOverlay) searchOverlay.addEventListener('click', (e) => { if (e.target === searchOverlay) closeSearch(); });\n\n let searchTimeout = null;\n if (searchInput) {\n searchInput.addEventListener('input', () => {\n if (searchTimeout) clearTimeout(searchTimeout);\n searchTimeout = setTimeout(() => performSearch(searchInput.value), 150);\n });\n searchInput.addEventListener('keydown', (e) => {\n if (e.key === 'Escape') closeSearch();\n else if (e.key === 'ArrowDown') {\n e.preventDefault();\n if (selectedIndex < results.length - 1) { selectedIndex++; renderResults(); }\n } else if (e.key === 'ArrowUp') {\n e.preventDefault();\n if (selectedIndex > 0) { selectedIndex--; renderResults(); }\n } else if (e.key === 'Enter' && results[selectedIndex]) {\n e.preventDefault();\n window.location.href = results[selectedIndex].url;\n }\n });\n }\n\n // Global keyboard shortcut (/ or Cmd+K)\n document.addEventListener('keydown', (e) => {\n if ((e.key === '/' && !(e.target instanceof HTMLInputElement)) ||\n ((e.metaKey || e.ctrlKey) && e.key.toLowerCase() === 'k')) {\n e.preventDefault();\n openSearch();\n }\n });\n </script>\n</body>\n</html>";
1436
1473
  /**
1437
1474
  * Resolves SSG options with defaults.
1438
1475
  */
@@ -1571,6 +1608,8 @@ interface BasePageProps {
1571
1608
  html: string;
1572
1609
  /** Table of contents entries */
1573
1610
  toc: TocEntry[];
1611
+ /** Last git commit timestamp in milliseconds */
1612
+ lastUpdated?: number;
1574
1613
  /** Source file path (relative to docs root) */
1575
1614
  path: string;
1576
1615
  /** Output URL path */
@@ -1768,6 +1807,8 @@ interface PageData {
1768
1807
  html: string;
1769
1808
  /** Table of contents */
1770
1809
  toc: TocEntry[];
1810
+ /** Last git commit timestamp in milliseconds */
1811
+ lastUpdated?: number;
1771
1812
  /** Source file path */
1772
1813
  path: string;
1773
1814
  /** Output URL path */
@@ -2225,5 +2266,5 @@ declare function createI18nPlugin(resolvedOptions: ResolvedOptions): Plugin;
2225
2266
  */
2226
2267
  declare function oxContent(options?: OxContentOptions): Plugin[];
2227
2268
  //#endregion
2228
- export { type BasePageProps, CodeAnnotationKind, type CodeAnnotationSyntax, type CodeAnnotationsOptions, DEFAULT_HTML_TEMPLATE, DefaultTheme, type DocEntry, type DocsOptions, type EntryPageConfig, type ExtractedDocs, type FeatureConfig, Fragment, type FrontmatterSchema, GeneratedDocsData, type GitHubOptions, type GitHubRepoData, type HeroAction, type HeroConfig, type HeroImage, HeroNotice, type I18nOptions, type IslandInfo, type JSXChild, type JSXElementType, type JSXNode, type JSXProps, type LanguageRegistration, type LoadStrategy, type LocaleConfig, type MarkdownLintFileDiagnostic as MarkdownLintBatchDiagnostic, type MarkdownLintFileDiagnostic, type MarkdownLintDiagnostic, type MarkdownLintDictionaryOptions, type MarkdownLintFileOptions, type MarkdownLintFileOptions as MarkdownLintProjectOptions, type MarkdownLintFileResult, type MarkdownLintFilesResult, type MarkdownLintLanguage, type MarkdownLintOptions, type MarkdownLintResult, type MarkdownLintRuleOptions, type MarkdownLintSeverity, type MarkdownLintStandardDictionaryOptions, MarkdownNode, MarkdownTransformer, type MermaidOptions, type NavGroup, type NavItem, type OgBrowserSession, type OgImageOptions, type OgImagePageEntry, type OgImageOptions$1 as OgImagePluginOptions, type OgImageResult, type OgImageTemplateFn, type OgImageTemplateProps, type OgpData, type OgpOptions, type OxContentOptions, type PageData, type PageProps, type ParamDoc, type ParseIslandsResult, type RenderContext, type ResolvedCodeAnnotationsOptions, type ResolvedDocsOptions, type ResolvedI18nOptions, type ResolvedOgImageOptions, ResolvedOptions, type ResolvedSearchOptions, type ResolvedSsgOptions, type ResolvedThemeConfig, type ReturnDoc, ScopedSearchQuery, type SearchDocument, type SearchOptions, type SearchResult, type SiteConfig, type SocialLinks, type SsgOptions, type ThemeColors, type ThemeComponent, type ThemeConfig, type ThemeEmbed, type ThemeEntryPage, type ThemeFonts, type ThemeFooter, type ThemeHeader, type ThemeLayout, type ThemeProps, type ThemeRegistration, type ThemeRenderOptions, TocEntry, type TransformAllOptions, TransformContext, TransformResult, type YouTubeOptions, buildSearchIndex, buildSsg, clearRenderContext, collectGitHubRepos, collectOgpUrls, createI18nPlugin, createMarkdownEnvironment, createTheme, defaultTheme, defineTheme, each, extractDocs, extractIslandInfo, extractVideoId, fetchOgpData, fetchRepoData, generateFrontmatterTypes, generateHydrationScript, generateMarkdown, generateOgImages, generateTabsCSS, generateTypes, hasIslands, inferType, jsx, jsxs, lintMarkdown, lintMarkdownAsync, lintMarkdownFile, lintMarkdownFiles, mergeThemes, mermaidClientScript, oxContent, prefetchGitHubRepos, prefetchOgpData, raw, renderAllPages, renderPage, renderToString, resolveDocsOptions, resolveI18nOptions, resolveOgImageOptions, resolveSearchOptions, resolveSsgOptions, resolveTheme, setRenderContext, shouldLintMarkdownFile, transformAllPlugins, transformGitHub, transformIslands, transformMarkdown, transformMermaidStatic, transformOgp, transformTabs, transformYouTube, useIsActive, useNav, usePageProps, useRenderContext, useSiteConfig, when, writeDocs, writeSearchIndex };
2269
+ export { type BasePageProps, CodeAnnotationKind, type CodeAnnotationSyntax, type CodeAnnotationsOptions, DEFAULT_HTML_TEMPLATE, DefaultTheme, type DocEntry, type DocsOptions, DocsSummary, type EntryPageConfig, type ExtractedDocs, type FeatureConfig, Fragment, type FrontmatterSchema, GeneratedDocsData, type GitHubOptions, type GitHubRepoData, type HeroAction, type HeroConfig, type HeroImage, HeroNotice, type I18nOptions, type IslandInfo, type JSXChild, type JSXElementType, type JSXNode, type JSXProps, type LanguageRegistration, type LoadStrategy, type LocaleConfig, type MarkdownLintFileDiagnostic as MarkdownLintBatchDiagnostic, type MarkdownLintFileDiagnostic, type MarkdownLintDiagnostic, type MarkdownLintDictionaryOptions, type MarkdownLintFileOptions, type MarkdownLintFileOptions as MarkdownLintProjectOptions, type MarkdownLintFileResult, type MarkdownLintFilesResult, type MarkdownLintLanguage, type MarkdownLintOptions, type MarkdownLintResult, type MarkdownLintRuleOptions, type MarkdownLintSeverity, type MarkdownLintStandardDictionaryOptions, MarkdownNode, MarkdownTransformer, type MermaidOptions, type NavGroup, type NavItem, type OgBrowserSession, type OgImageOptions, type OgImagePageEntry, type OgImageOptions$1 as OgImagePluginOptions, type OgImageResult, type OgImageTemplateFn, type OgImageTemplateProps, type OgpData, type OgpOptions, type OxContentOptions, type PageData, type PageProps, type ParamDoc, type ParseIslandsResult, type RenderContext, type ResolvedCodeAnnotationsOptions, type ResolvedDocsOptions, type ResolvedI18nOptions, type ResolvedOgImageOptions, ResolvedOptions, type ResolvedSearchOptions, type ResolvedSsgOptions, type ResolvedThemeConfig, type ReturnDoc, ScopedSearchQuery, type SearchDocument, type SearchOptions, type SearchResult, type SiteConfig, type SocialLinks, type SsgOptions, type ThemeColors, type ThemeComponent, type ThemeConfig, type ThemeEmbed, type ThemeEntryPage, type ThemeFonts, type ThemeFooter, type ThemeHeader, type ThemeLayout, type ThemeProps, type ThemeRegistration, type ThemeRenderOptions, TocEntry, type TransformAllOptions, TransformContext, TransformResult, type YouTubeOptions, buildSearchIndex, buildSsg, clearRenderContext, collectGitHubRepos, collectOgpUrls, createI18nPlugin, createMarkdownEnvironment, createTheme, defaultTheme, defineTheme, each, extractDocs, extractIslandInfo, extractVideoId, fetchOgpData, fetchRepoData, generateFrontmatterTypes, generateHydrationScript, generateMarkdown, generateOgImages, generateTabsCSS, generateTypes, hasIslands, inferType, jsx, jsxs, lintMarkdown, lintMarkdownAsync, lintMarkdownFile, lintMarkdownFiles, mergeThemes, mermaidClientScript, oxContent, prefetchGitHubRepos, prefetchOgpData, raw, renderAllPages, renderPage, renderToString, resolveDocsOptions, resolveI18nOptions, resolveOgImageOptions, resolveSearchOptions, resolveSsgOptions, resolveTheme, setRenderContext, shouldLintMarkdownFile, transformAllPlugins, transformGitHub, transformIslands, transformMarkdown, transformMermaidStatic, transformOgp, transformTabs, transformYouTube, useIsActive, useNav, usePageProps, useRenderContext, useSiteConfig, when, writeDocs, writeSearchIndex };
2229
2270
  //# sourceMappingURL=index.d.mts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.mts","names":[],"sources":["../src/theme.ts","../src/types.ts","../src/environment.ts","../src/transform.ts","../src/docs.ts","../src/lint.ts","../src/lint-files.ts","../src/ssg.ts","../src/search.ts","../src/jsx-runtime.ts","../src/page-context.ts","../src/theme-renderer.ts","../src/plugins/tabs.ts","../src/plugins/youtube.ts","../src/plugins/github.ts","../src/plugins/ogp.ts","../src/plugins/mermaid.ts","../src/plugins/index.ts","../src/island/parse.ts","../src/og-image/types.ts","../src/og-image/browser.ts","../src/og-image/index.ts","../src/i18n.ts","../src/index.ts"],"mappings":"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"}
1
+ {"version":3,"file":"index.d.mts","names":[],"sources":["../src/theme.ts","../src/types.ts","../src/environment.ts","../src/transform.ts","../src/docs.ts","../src/lint.ts","../src/lint-files.ts","../src/ssg.ts","../src/search.ts","../src/jsx-runtime.ts","../src/page-context.ts","../src/theme-renderer.ts","../src/plugins/tabs.ts","../src/plugins/youtube.ts","../src/plugins/github.ts","../src/plugins/ogp.ts","../src/plugins/mermaid.ts","../src/plugins/index.ts","../src/island/parse.ts","../src/og-image/types.ts","../src/og-image/browser.ts","../src/og-image/index.ts","../src/i18n.ts","../src/index.ts"],"mappings":"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"}