@geenius/docs 0.8.10 → 0.11.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/CHANGELOG.md +18 -0
- package/package.json +32 -20
- package/packages/convex/dist/index.d.ts +4 -4
- package/packages/convex/dist/index.js.map +1 -1
- package/packages/react/dist/index.css +2 -0
- package/packages/react/dist/index.css.map +1 -0
- package/packages/react/dist/index.d.ts +67 -49
- package/packages/react/dist/index.js +267 -172
- package/packages/react/dist/index.js.map +1 -1
- package/packages/react-css/dist/index.css +30 -18
- package/packages/react-css/dist/index.css.map +1 -1
- package/packages/react-css/dist/index.d.ts +68 -33
- package/packages/react-css/dist/index.js +61 -38
- package/packages/react-css/dist/index.js.map +1 -1
- package/packages/shared/dist/{chunk-BR2XBF64.js → chunk-QKKVTCRJ.js} +2 -2
- package/packages/shared/dist/{chunk-BR2XBF64.js.map → chunk-QKKVTCRJ.js.map} +1 -1
- package/packages/shared/dist/index.d.ts +55 -10
- package/packages/shared/dist/index.js +52 -6
- package/packages/shared/dist/index.js.map +1 -1
- package/packages/shared/dist/providers.d.ts +4 -4
- package/packages/shared/dist/providers.js +1 -1
- package/packages/shared/dist/providers.js.map +1 -1
- package/packages/shared/dist/{types-n-Ryn258.d.ts → types-D8ITXVwj.d.ts} +1 -1
- package/packages/solidjs/dist/index.css +2 -0
- package/packages/solidjs/dist/index.css.map +1 -0
- package/packages/solidjs/dist/index.d.ts +57 -27
- package/packages/solidjs/dist/index.js +231 -154
- package/packages/solidjs/dist/index.js.map +1 -1
- package/packages/solidjs-css/dist/index.css +30 -18
- package/packages/solidjs-css/dist/index.css.map +1 -1
- package/packages/solidjs-css/dist/index.d.ts +55 -20
- package/packages/solidjs-css/dist/index.js +34 -25
- package/packages/solidjs-css/dist/index.js.map +1 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/components/Breadcrumbs.tsx","../../shared/src/utilities.ts","../src/components/DocPage.tsx","../src/components/DocSearch.tsx","../src/components/DocSidebar.tsx","../src/components/TableOfContents.tsx","../src/components/DocsLayout.tsx","../src/components/EditButton.tsx","../src/components/PageNavigation.tsx","../src/components/VersionSelector.tsx","../src/primitives/createDocSearch.ts","../src/pages/DocSearchPage.tsx","../src/pages/DocsAdminPage.tsx","../src/primitives/createDocs.ts","../src/pages/DocsIndexPage.tsx","../src/primitives/createTableOfContents.ts","../src/pages/DocViewPage.tsx","../src/primitives/createDocsAdmin.ts"],"names":["children","jsx","jsxs","Show","For","createSignal","motion","AnimatePresence","Fragment","createEffect","createMemo","onCleanup"],"mappings":"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","file":"index.js","sourcesContent":["/**\n * @module solidjsBreadcrumbs\n * @package @geenius/docs-solidjs\n * @description Renders the SolidJS docs breadcrumb trail using shared route\n * metadata and the Tailwind-styled docs presentation contract.\n */\n\nimport type { BreadcrumbItem } from '@geenius/docs-shared'\nimport { For, type JSX, Show } from 'solid-js'\n\ninterface BreadcrumbsProps {\n items: BreadcrumbItem[]\n}\n\n/**\n * Renders the current docs breadcrumb hierarchy.\n *\n * @param props - Breadcrumb items describing the active page ancestry.\n * @returns Breadcrumb navigation for the current page when items exist.\n */\nexport function Breadcrumbs(props: BreadcrumbsProps): JSX.Element | null {\n if (props.items.length === 0) {\n return null\n }\n\n return (\n <nav class=\"flex items-center gap-1.5 text-sm\" aria-label=\"Breadcrumb\">\n <For each={props.items}>\n {(item, idx) => (\n <>\n <Show when={idx() > 0}>\n <svg aria-hidden=\"true\" class=\"h-3.5 w-3.5 shrink-0 text-white/20\" viewBox=\"0 0 16 16\" fill=\"none\">\n <path d=\"M6 4l4 4-4 4\" stroke=\"currentColor\" stroke-width=\"1.5\" />\n </svg>\n </Show>\n <Show when={idx() === props.items.length - 1} fallback={\n <a href={item.href} class=\"truncate text-white/40 transition-colors hover:text-white/70\">{item.title}</a>\n }>\n <span class=\"truncate text-white/60\">{item.title}</span>\n </Show>\n </>\n )}\n </For>\n </nav>\n )\n}\n","/**\n * @module docsUtilities\n * @package @geenius/docs-shared\n * @description Hosts the framework-agnostic docs helpers used by the shared\n * barrel and provider implementations for search, slugging, breadcrumbs, table\n * of contents extraction, and default config resolution.\n */\n\nimport type {\n BreadcrumbItem,\n DocPage,\n DocSection,\n DocsConfig,\n SearchResult,\n TocItem,\n} from './types'\n\nfunction toTocLevel(level: number): TocItem['level'] {\n if (level === 2 || level === 3 || level === 4) {\n return level\n }\n\n return 4\n}\n\n/**\n * Extracts a nested table of contents from Markdown heading lines.\n *\n * @param mdxContent - Markdown or MDX content to parse.\n * @returns A nested heading tree containing only level 2 through 4 headings.\n */\nexport function extractToc(mdxContent: string): TocItem[] {\n const headingRegex = /^(#{2,4})\\s+(.+)$/gm\n const items: TocItem[] = []\n let match = headingRegex.exec(mdxContent)\n\n while (match !== null) {\n const text = match[2].trim()\n items.push({\n id: slugify(text),\n text,\n level: toTocLevel(match[1].length),\n children: [],\n })\n match = headingRegex.exec(mdxContent)\n }\n\n const nested: TocItem[] = []\n let currentH2: TocItem | null = null\n let currentH3: TocItem | null = null\n\n for (const item of items) {\n if (item.level === 2) {\n currentH2 = item\n currentH3 = null\n nested.push(item)\n continue\n }\n\n if (item.level === 3) {\n currentH3 = item\n if (currentH2) {\n currentH2.children.push(item)\n } else {\n nested.push(item)\n }\n continue\n }\n\n if (currentH3) {\n currentH3.children.push(item)\n } else if (currentH2) {\n currentH2.children.push(item)\n } else {\n nested.push(item)\n }\n }\n\n return nested\n}\n\n/**\n * Calculates approximate word count and reading time for page content.\n *\n * @param content - Markdown or MDX content to measure.\n * @returns Word count and reading-time metadata derived from the content.\n */\nexport function calcWordCount(\n content: string,\n): { wordCount: number; readingTime: number } {\n const stripped = content\n .replace(/```[\\s\\S]*?```/g, '')\n .replace(/`[^`]+`/g, '')\n .replace(/!\\[.*?\\]\\(.*?\\)/g, '')\n .replace(/\\[([^\\]]+)\\]\\(.*?\\)/g, '$1')\n .replace(/[#*_~>|-]/g, '')\n .trim()\n\n const words = stripped.split(/\\s+/).filter(Boolean)\n\n return {\n wordCount: words.length,\n readingTime: Math.max(1, Math.ceil(words.length / 225)),\n }\n}\n\n/**\n * Builds a breadcrumb trail for a page from a section tree.\n *\n * @param sections - Full section list used to resolve parent relationships.\n * @param sectionId - Identifier of the page's containing section.\n * @param slug - Page slug appended as the terminal breadcrumb.\n * @returns Breadcrumb items suitable for page-level navigation UI.\n */\nexport function buildBreadcrumbs(\n sections: DocSection[],\n sectionId: string,\n slug: string,\n): BreadcrumbItem[] {\n const crumbs: BreadcrumbItem[] = [{ title: 'Docs', href: '/docs' }]\n const sectionMap = new Map(sections.map((section) => [section.id, section]))\n const trail: DocSection[] = []\n let current = sectionMap.get(sectionId)\n\n while (current) {\n trail.unshift(current)\n current = current.parentId ? sectionMap.get(current.parentId) : undefined\n }\n\n for (const section of trail) {\n crumbs.push({ title: section.title, href: `/docs/${section.slug}` })\n }\n\n if (slug) {\n const parentSlug = trail[trail.length - 1]?.slug ?? ''\n crumbs.push({ title: slug, href: `/docs/${parentSlug}/${slug}` })\n }\n\n return crumbs\n}\n\n/**\n * Builds a full-text search index from published pages and their sections.\n *\n * @param pages - Page records to index.\n * @param sections - Section metadata used to enrich each result.\n * @returns Search index entries derived from the published pages.\n */\nexport function buildDocsIndex(\n pages: DocPage[],\n sections: DocSection[],\n): SearchResult[] {\n const sectionMap = new Map(sections.map((section) => [section.id, section]))\n\n return pages\n .filter((page) => page.status === 'published')\n .map((page) => {\n const section = sectionMap.get(page.sectionId)\n\n return {\n pageId: page.id,\n pageTitle: page.title,\n sectionTitle: section?.title ?? '',\n sectionSlug: section?.slug ?? '',\n slug: page.slug,\n highlight: page.excerpt ?? page.content.slice(0, 160),\n score: 0,\n tags: page.tags,\n }\n })\n}\n\n/**\n * Searches a shared search index and returns ranked matches.\n *\n * @param query - User-entered search query.\n * @param index - Search index entries to rank.\n * @returns Ranked search results limited to the top twenty entries.\n */\nexport function searchDocs(\n query: string,\n index: SearchResult[],\n): SearchResult[] {\n if (!query.trim()) {\n return []\n }\n\n const terms = query.toLowerCase().split(/\\s+/).filter(Boolean)\n\n return index\n .map((entry) => {\n let score = 0\n const titleLower = entry.pageTitle.toLowerCase()\n const highlightLower = entry.highlight.toLowerCase()\n const sectionLower = entry.sectionTitle.toLowerCase()\n const tagsLower = entry.tags.map((tag) => tag.toLowerCase())\n\n for (const term of terms) {\n if (titleLower.includes(term)) {\n score += 10\n }\n if (tagsLower.some((tag) => tag.includes(term))) {\n score += 5\n }\n if (sectionLower.includes(term)) {\n score += 3\n }\n if (highlightLower.includes(term)) {\n score += 2\n }\n }\n\n return { ...entry, score }\n })\n .filter((entry) => entry.score > 0)\n .sort((left, right) => right.score - left.score)\n .slice(0, 20)\n}\n\n/**\n * Creates a URL-safe slug from arbitrary text.\n *\n * @param title - Source text to slugify.\n * @returns A lower-case kebab-case slug.\n */\nexport function slugify(title: string): string {\n return title\n .toLowerCase()\n .replace(/[^a-z0-9]+/g, '-')\n .replace(/(^-|-$)/g, '')\n}\n\n/**\n * Produces a search-result snippet centred around a matching query.\n *\n * @param text - Source text used to build the snippet.\n * @param query - User-entered search query.\n * @param maxLen - Maximum snippet length.\n * @returns A trimmed snippet containing the best query match when available.\n */\nexport function highlightMatch(\n text: string,\n query: string,\n maxLen = 160,\n): string {\n if (!query.trim()) {\n return text.slice(0, maxLen)\n }\n\n const lowerText = text.toLowerCase()\n const lowerQuery = query.toLowerCase()\n const index = lowerText.indexOf(lowerQuery)\n\n if (index === -1) {\n return text.slice(0, maxLen)\n }\n\n const start = Math.max(0, index - 40)\n const end = Math.min(text.length, index + query.length + (maxLen - 80))\n let snippet = text.slice(start, end)\n\n if (start > 0) {\n snippet = `…${snippet}`\n }\n if (end < text.length) {\n snippet = `${snippet}…`\n }\n\n return snippet\n}\n\n/**\n * Baseline config used by the framework variants when no explicit config is provided.\n */\nexport const defaultDocsConfig: DocsConfig = {\n siteName: 'Docs',\n cmdKEnabled: true,\n showReadingTime: true,\n showLastEdited: true,\n versionsEnabled: false,\n defaultAccess: 'public',\n printModeEnabled: true,\n}\n","/**\n * @module solidDocPage\n * @package @geenius/docs-solidjs\n * @description Renders a docs page body with safe Markdown semantics, heading\n * anchors, and package-consistent typography. The component deliberately avoids\n * raw HTML injection so authored docs content stays within the Markdown runtime.\n */\n\n\nimport type { DocPage as DocPageType } from '@geenius/docs-shared'\nimport { slugify } from '@geenius/docs-shared'\nimport remarkGfm from 'remark-gfm'\nimport type { JSX } from 'solid-js'\nimport { SolidMarkdown } from 'solid-markdown'\n\ninterface DocPageProps {\n page: DocPageType\n}\n\nfunction getNodeText(children: unknown): string {\n if (Array.isArray(children)) {\n return children.map((entry) => getNodeText(entry)).join(' ')\n }\n\n if (typeof children === 'string' || typeof children === 'number') {\n return String(children)\n }\n\n return ''\n}\n\nfunction createHeading(\n Tag: 'h1' | 'h2' | 'h3' | 'h4',\n className: string,\n): (props: { children: JSX.Element }) => JSX.Element {\n return (props) => {\n const text = getNodeText(props.children)\n const id = slugify(text)\n\n return (\n <Tag id={id} class={className}>\n <a href={`#${id}`} class=\"transition-colors hover:text-indigo-300\">\n {props.children}\n </a>\n </Tag>\n )\n }\n}\n\n/**\n * Renders a docs page body using safe Markdown rendering.\n *\n * @param props - Docs page record containing the Markdown body to render.\n * @returns The rendered page article.\n */\nexport function DocPage(props: DocPageProps): JSX.Element {\n return (\n <article class=\"prose-custom max-w-none\">\n <SolidMarkdown\n remarkPlugins={[remarkGfm]}\n components={{\n h1: createHeading('h1', 'scroll-mt-20 mt-8 mb-4 text-3xl font-bold'),\n h2: createHeading(\n 'h2',\n 'scroll-mt-20 mt-8 mb-3 border-b border-white/10 pb-2 text-2xl font-bold',\n ),\n h3: createHeading('h3', 'scroll-mt-20 mt-6 mb-2 text-xl font-semibold'),\n h4: createHeading('h4', 'scroll-mt-20 mt-4 mb-2 text-lg font-medium'),\n p: (componentProps) => (\n <p class=\"my-3 leading-relaxed text-white/80\">\n {componentProps.children}\n </p>\n ),\n a: (componentProps) => (\n <a\n href={componentProps.href}\n target={componentProps.href?.startsWith('/') ? undefined : '_blank'}\n rel={componentProps.href?.startsWith('/') ? undefined : 'noreferrer noopener'}\n class=\"underline underline-offset-2 transition-colors hover:text-indigo-300\"\n >\n {componentProps.children}\n </a>\n ),\n code: (componentProps) =>\n componentProps.class ? (\n <code class={componentProps.class}>{componentProps.children}</code>\n ) : (\n <code class=\"rounded bg-white/10 px-1.5 py-0.5 text-sm text-indigo-300\">\n {componentProps.children}\n </code>\n ),\n pre: (componentProps) => (\n <pre class=\"my-4 overflow-x-auto rounded-lg bg-black/30 p-4 text-sm leading-relaxed\">\n {componentProps.children}\n </pre>\n ),\n blockquote: (componentProps) => (\n <blockquote class=\"my-4 rounded-r-lg border-l-4 border-indigo-500/40 bg-white/5 py-3 pl-4 pr-4 text-white/70 italic\">\n {componentProps.children}\n </blockquote>\n ),\n table: (componentProps) => (\n <div class=\"my-4 overflow-x-auto rounded-lg border border-white/10\">\n <table class=\"w-full text-sm\">{componentProps.children}</table>\n </div>\n ),\n th: (componentProps) => (\n <th class=\"border-b border-white/10 bg-white/5 px-4 py-2.5 text-left font-semibold\">\n {componentProps.children}\n </th>\n ),\n td: (componentProps) => (\n <td class=\"border-b border-white/5 px-4 py-2 text-white/70 last:border-none\">\n {componentProps.children}\n </td>\n ),\n }}\n >\n {props.page.content}\n </SolidMarkdown>\n </article>\n )\n}\n","/**\n * @module solidjsDocSearch\n * @package @geenius/docs-solidjs\n * @description Provides the SolidJS command-palette style docs search modal\n * with keyboard navigation, animated presentation, and highlighted matches.\n */\n\nimport type { SearchResult } from '@geenius/docs-shared'\nimport { highlightMatch } from '@geenius/docs-shared'\nimport { AnimatePresence, motion } from '@geenius/motion/solidjs'\nimport {\n createEffect,\n createMemo,\n createSignal,\n createUniqueId,\n For,\n type JSX,\n Show,\n} from 'solid-js'\n\ninterface DocSearchProps {\n results: SearchResult[]\n query: string\n onQuery: (query: string) => void\n onSelect: (result: SearchResult) => void\n isOpen: boolean\n onClose: () => void\n}\n\nconst FOCUSABLE_SELECTOR =\n 'button, [href], input, select, textarea, [tabindex]:not([tabindex=\"-1\"])'\n\nfunction getActiveElement(): HTMLElement | null {\n return document.activeElement instanceof HTMLElement\n ? document.activeElement\n : null\n}\n\n/**\n * Renders the SolidJS docs search modal and result list.\n *\n * @param props - Search state, callbacks, and result entries to present.\n * @returns An animated search overlay for navigating docs content.\n */\nexport function DocSearch(props: DocSearchProps): JSX.Element | null {\n const [activeIndex, setActiveIndex] = createSignal(0)\n const dialogId = `docs-search-${createUniqueId()}`\n let inputRef: HTMLInputElement | undefined\n let dialogRef: HTMLDivElement | undefined\n let previousFocus: HTMLElement | null = null\n const resultRefs: Array<HTMLButtonElement | undefined> = []\n\n const activeResultId = createMemo(() => {\n const activeResult = props.results[activeIndex()]\n\n return activeResult ? `${dialogId}-result-${activeResult.pageId}` : undefined\n })\n\n createEffect(() => {\n if (!props.isOpen) {\n return\n }\n\n previousFocus = getActiveElement()\n inputRef?.focus()\n setActiveIndex(0)\n })\n\n createEffect(() => {\n props.query\n props.results\n setActiveIndex(0)\n })\n\n createEffect(() => {\n resultRefs[activeIndex()]?.scrollIntoView({ block: 'nearest' })\n })\n\n const handleKeyDown = (e: KeyboardEvent): void => {\n if (e.key === 'ArrowDown') {\n e.preventDefault()\n setActiveIndex((i) => Math.min(i + 1, props.results.length - 1))\n } else if (e.key === 'ArrowUp') {\n e.preventDefault()\n setActiveIndex((i) => Math.max(i - 1, 0))\n } else if (e.key === 'Enter' && props.results[activeIndex()]) {\n e.preventDefault()\n props.onSelect(props.results[activeIndex()])\n } else if (e.key === 'Escape') {\n e.preventDefault()\n props.onClose()\n previousFocus?.focus()\n } else if (e.key === 'Tab' && dialogRef) {\n const focusableElements = Array.from(\n dialogRef.querySelectorAll<HTMLElement>(FOCUSABLE_SELECTOR),\n ).filter((element) => !element.hasAttribute('disabled'))\n\n if (focusableElements.length === 0) {\n return\n }\n\n const firstElement = focusableElements[0]\n const lastElement = focusableElements[focusableElements.length - 1]\n\n if (e.shiftKey && document.activeElement === firstElement) {\n e.preventDefault()\n lastElement.focus()\n } else if (!e.shiftKey && document.activeElement === lastElement) {\n e.preventDefault()\n firstElement.focus()\n }\n }\n }\n\n if (!props.isOpen) {\n return null\n }\n\n return (\n <AnimatePresence>\n <div class=\"fixed inset-0 z-50 flex items-start justify-center pt-[15vh]\">\n <motion.button\n type=\"button\"\n aria-label=\"Close search\"\n initial={{ opacity: 0 }}\n animate={{ opacity: 1 }}\n exit={{ opacity: 0 }}\n class=\"fixed inset-0 bg-black/60 backdrop-blur-md\"\n onClick={() => {\n props.onClose()\n previousFocus?.focus()\n }}\n />\n <motion.div\n ref={dialogRef}\n initial={{ opacity: 0, scale: 0.95, y: -20 }}\n animate={{ opacity: 1, scale: 1, y: 0 }}\n exit={{ opacity: 0, scale: 0.95, y: -20 }}\n transition={{ type: 'spring', damping: 25, stiffness: 250 }}\n class=\"relative z-10 w-full max-w-xl overflow-hidden rounded-2xl border border-white/10 bg-zinc-900/40 backdrop-blur-3xl shadow-2xl ring-1 ring-white/5\"\n role=\"dialog\"\n aria-modal=\"true\"\n aria-labelledby={`${dialogId}-title`}\n onKeyDown={handleKeyDown}\n onClick={(e: MouseEvent) => e.stopPropagation()}\n >\n <div class=\"flex items-center gap-3 border-b border-white/10 px-5 py-4 bg-white/5\">\n <h2 id={`${dialogId}-title`} class=\"sr-only\">\n Search documentation\n </h2>\n <svg aria-hidden=\"true\" class=\"h-5 w-5 shrink-0 text-white/40\" viewBox=\"0 0 20 20\" fill=\"currentColor\">\n <path fill-rule=\"evenodd\" d=\"M9 3.5a5.5 5.5 0 100 11 5.5 5.5 0 000-11zM2 9a7 7 0 1112.452 4.391l3.328 3.329a.75.75 0 11-1.06 1.06l-3.329-3.328A7 7 0 012 9z\" clip-rule=\"evenodd\" />\n </svg>\n <input\n ref={inputRef}\n type=\"search\"\n value={props.query}\n onInput={(e) => props.onQuery(e.currentTarget.value)}\n placeholder=\"Search documentation…\"\n aria-label=\"Search documentation\"\n aria-controls={`${dialogId}-results`}\n aria-activedescendant={activeResultId()}\n class=\"flex-1 bg-transparent text-sm text-white placeholder-white/30 outline-none\"\n />\n <kbd class=\"rounded border border-white/10 bg-white/5 px-1.5 py-0.5 text-[11px] text-white/30 font-medium\">ESC</kbd>\n </div>\n \n <div\n id={`${dialogId}-results`}\n class=\"max-h-80 overflow-y-auto p-2\"\n role=\"listbox\"\n >\n <AnimatePresence>\n <Show when={props.results.length === 0 && props.query.trim()}>\n <motion.div\n initial={{ opacity: 0 }}\n animate={{ opacity: 1 }}\n exit={{ opacity: 0 }}\n class=\"flex flex-col items-center py-10 text-center text-white/30\"\n >\n <svg aria-hidden=\"true\" class=\"mb-3 h-10 w-10 opacity-50\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\">\n <circle cx=\"11\" cy=\"11\" r=\"8\" stroke-width=\"1.5\" />\n <path d=\"M21 21l-4.35-4.35\" stroke-width=\"1.5\" />\n </svg>\n <p class=\"text-sm\">No results for \"{props.query}\"</p>\n <p class=\"mt-1 text-xs opacity-60\">Try different keywords</p>\n </motion.div>\n </Show>\n\n <Show when={props.results.length === 0 && !props.query.trim()}>\n <motion.div\n initial={{ opacity: 0 }}\n animate={{ opacity: 1 }}\n exit={{ opacity: 0 }}\n class=\"py-8 text-center text-sm text-white/30\"\n >\n Start typing to search…\n </motion.div>\n </Show>\n </AnimatePresence>\n\n <For each={props.results}>\n {(result, idx) => (\n <button\n ref={(element) => {\n resultRefs[idx()] = element\n }}\n id={`${dialogId}-result-${result.pageId}`}\n type=\"button\"\n role=\"option\"\n aria-selected={idx() === activeIndex()}\n onMouseEnter={() => setActiveIndex(idx())}\n onClick={() => props.onSelect(result)}\n class={`group relative flex w-full flex-col gap-1 rounded-xl px-4 py-3 text-left transition-colors my-0.5 ${\n idx() === activeIndex() ? 'bg-indigo-500/15 text-white ring-1 ring-indigo-500/30' : 'text-white/70 hover:bg-white/5'\n }`}\n >\n <Show when={idx() === activeIndex()}>\n <motion.div\n layoutId=\"search-active-bg\"\n class=\"absolute inset-0 bg-indigo-500/10 rounded-xl\"\n transition={{ type: 'spring', stiffness: 300, damping: 30 }}\n />\n </Show>\n <div class=\"relative z-10 flex items-center gap-2\">\n <span class=\"rounded bg-indigo-500/20 px-1.5 py-0.5 text-[10px] font-medium text-indigo-300\">{result.sectionTitle}</span>\n <span class=\"text-sm font-medium\">{result.pageTitle}</span>\n </div>\n <p class=\"relative z-10 truncate text-xs text-white/40\">\n {highlightMatch(result.highlight, props.query)}\n </p>\n <Show when={result.tags.length > 0}>\n <div class=\"relative z-10 flex gap-1 mt-1\">\n <For each={result.tags.slice(0, 3)}>\n {(tag) => <span class=\"rounded bg-white/5 px-1.5 py-0.5 text-[10px] text-white/30 border border-white/5\">{tag}</span>}\n </For>\n </div>\n </Show>\n </button>\n )}\n </For>\n </div>\n <div class=\"flex items-center gap-4 border-t border-white/10 px-5 py-2.5 text-[11px] text-white/30 bg-black/20\">\n <span class=\"flex items-center gap-1\"><kbd class=\"rounded border border-white/10 bg-white/5 px-1 pb-0.5 text-[10px]\">↑</kbd> <kbd class=\"rounded border border-white/10 bg-white/5 px-1 pb-0.5 text-[10px]\">↓</kbd> navigate</span>\n <span class=\"flex items-center gap-1\"><kbd class=\"rounded border border-white/10 bg-white/5 px-1 pb-0.5 text-[10px]\">↵</kbd> select</span>\n <span class=\"flex items-center gap-1\"><kbd class=\"rounded border border-white/10 bg-white/5 px-1 pb-0.5 text-[10px]\">esc</kbd> close</span>\n </div>\n </motion.div>\n </div>\n </AnimatePresence>\n )\n}\n","/**\n * @module solidjsDocSidebar\n * @package @geenius/docs-solidjs\n * @description Renders the hierarchical SolidJS docs sidebar with expandable\n * sections, nested pages, and the active-page highlight state.\n */\n\nimport type { DocPage, DocSection } from '@geenius/docs-shared'\nimport { AnimatePresence, motion } from '@geenius/motion/solidjs'\nimport { createSignal, For, type JSX, Show } from 'solid-js'\n\ninterface DocSidebarProps {\n sections: (DocSection & { pages?: DocPage[]; pageCount?: number })[]\n currentPageId?: string\n onNavigate: (page: DocPage, section: DocSection) => void\n}\n\n/**\n * Renders the docs section tree for sidebar navigation.\n *\n * @param props - Section hierarchy, active page id, and page navigation handler.\n * @returns A nested docs sidebar with expandable sections and pages.\n */\nexport function DocSidebar(props: DocSidebarProps): JSX.Element {\n const [expandedIds, setExpandedIds] = createSignal<Set<string>>(new Set())\n\n const toggle = (id: string): void => {\n setExpandedIds((prev) => {\n const next = new Set(prev)\n if (next.has(id)) next.delete(id)\n else next.add(id)\n return next\n })\n }\n\n const topLevel = (): (DocSection & { pages?: DocPage[]; pageCount?: number })[] =>\n props.sections.filter((s) => !s.parentId)\n const childrenOf = (\n parentId: string\n ): (DocSection & { pages?: DocPage[]; pageCount?: number })[] =>\n props.sections.filter((s) => s.parentId === parentId)\n\n const renderSection = (\n section: DocSection & { pages?: DocPage[]; pageCount?: number },\n depth: number\n ): JSX.Element => {\n const children = () => childrenOf(section.id)\n const isExpanded = () => expandedIds().has(section.id)\n const pages = () => section.pages ?? []\n const hasContent = () => children().length > 0 || pages().length > 0\n\n return (\n <div style={{ 'padding-left': `${depth * 12}px` }} class=\"mb-1\">\n <motion.button\n type=\"button\"\n onClick={() => toggle(section.id)}\n class=\"flex w-full items-center gap-2 rounded-xl px-3 py-2 text-left text-sm font-medium transition-colors hover:bg-white/10\"\n whileHover={{ x: 2 }}\n whileTap={{ scale: 0.98 }}\n >\n <Show when={section.icon}>\n <span class=\"text-base\">{section.icon}</span>\n </Show>\n <span class=\"flex-1 truncate text-zinc-800 dark:text-zinc-200\">{section.title}</span>\n <Show when={section.pageCount != null}>\n <span class=\"text-xs tabular-nums opacity-50 dark:text-zinc-400\">{section.pageCount}</span>\n </Show>\n <Show when={hasContent()}>\n <motion.svg\n animate={{ rotate: isExpanded() ? 90 : 0 }}\n class=\"h-3.5 w-3.5 shrink-0 text-zinc-500\"\n viewBox=\"0 0 16 16\"\n fill=\"currentColor\"\n >\n <path d=\"M6 4l4 4-4 4\" stroke=\"currentColor\" stroke-width=\"2\" fill=\"none\" />\n </motion.svg>\n </Show>\n </motion.button>\n\n <AnimatePresence>\n <Show when={isExpanded()}>\n <motion.div\n initial={{ height: 0, opacity: 0 }}\n animate={{ height: 'auto', opacity: 1 }}\n exit={{ height: 0, opacity: 0 }}\n transition={{ duration: 0.2, ease: 'easeInOut' }}\n class=\"ml-2 overflow-hidden border-l border-white/10 pl-2 dark:border-zinc-800\"\n >\n <For each={pages()}>\n {(page) => (\n <motion.button\n type=\"button\"\n onClick={() => props.onNavigate(page, section)}\n whileHover={{ x: 2 }}\n whileTap={{ scale: 0.98 }}\n class={`flex w-full items-center gap-2 rounded-lg px-3 py-1.5 my-0.5 text-left text-sm transition-all outline-none ${\n props.currentPageId === page.id\n ? 'bg-indigo-500/10 text-indigo-600 dark:text-indigo-400 font-semibold ring-1 ring-indigo-500/20'\n : 'text-zinc-600 dark:text-zinc-400 hover:text-zinc-900 dark:hover:text-white hover:bg-zinc-100 dark:hover:bg-white/5'\n }`}\n >\n <span class=\"truncate\">{page.title}</span>\n </motion.button>\n )}\n </For>\n <For each={children()}>\n {(child) => renderSection(child, depth + 1)}\n </For>\n </motion.div>\n </Show>\n </AnimatePresence>\n </div>\n )\n }\n\n return (\n <nav class=\"flex flex-col gap-1 py-4\">\n <div class=\"px-4 pb-3 text-xs font-bold uppercase tracking-widest text-zinc-400 dark:text-zinc-500\">\n Documentation\n </div>\n <For each={topLevel()}>\n {(s) => renderSection(s, 0)}\n </For>\n </nav>\n )\n}\n","/**\n * @module solidjsTableOfContents\n * @package @geenius/docs-solidjs\n * @description Renders the SolidJS docs table of contents with nested anchor\n * links and animated active-heading highlighting.\n */\n\nimport type { TocItem } from '@geenius/docs-shared'\nimport { AnimatePresence, motion } from '@geenius/motion/solidjs'\nimport { For, type JSX } from 'solid-js'\n\ninterface TableOfContentsProps {\n toc: TocItem[]\n activeId?: string\n}\n\nfunction TocLink(props: {\n item: TocItem\n activeId?: string\n depth?: number\n}): JSX.Element {\n const depth = () => props.depth ?? 0\n const isActive = () => props.activeId === props.item.id\n\n return (\n <>\n <motion.a\n href={`#${props.item.id}`}\n class={`block truncate border-l-2 py-1 text-[13px] transition-all relative ${\n isActive()\n ? 'border-indigo-500 text-indigo-400 font-medium'\n : 'border-transparent text-white/40 hover:text-white/80 hover:border-white/20'\n }`}\n style={{ 'padding-left': `${12 + depth() * 12}px` }}\n whileHover={{ x: 2 }}\n whileTap={{ scale: 0.98 }}\n layout\n >\n {props.item.text}\n </motion.a>\n <For each={props.item.children}>\n {(child) => <TocLink item={child} activeId={props.activeId} depth={depth() + 1} />}\n </For>\n </>\n )\n}\n\n/**\n * Renders the page-local table of contents rail.\n *\n * @param props - Structured heading tree and current active heading id.\n * @returns A nested table of contents for the active docs page.\n */\nexport function TableOfContents(props: TableOfContentsProps): JSX.Element | null {\n if (props.toc.length === 0) {\n return null\n }\n\n return (\n <nav class=\"sticky top-24\">\n <h4 class=\"mb-3 text-xs font-semibold uppercase tracking-widest text-white/40\">\n On this page\n </h4>\n <motion.div class=\"flex flex-col relative\" layoutRoot>\n <AnimatePresence>\n <For each={props.toc}>\n {(item) => (\n <motion.div initial={{ opacity: 0, x: -10 }} animate={{ opacity: 1, x: 0 }}>\n <TocLink item={item} activeId={props.activeId} />\n </motion.div>\n )}\n </For>\n </AnimatePresence>\n </motion.div>\n </nav>\n )\n}\n","/**\n * @module solidjsDocsLayout\n * @package @geenius/docs-solidjs\n * @description Composes the SolidJS docs chrome, including sidebar,\n * breadcrumbs, main content region, and table of contents rail.\n */\n\nimport type { BreadcrumbItem, DocPage, DocSection, TocItem } from '@geenius/docs-shared'\nimport { AnimatePresence, motion } from '@geenius/motion/solidjs'\nimport { children, type JSX, Show } from 'solid-js'\nimport { Breadcrumbs } from './Breadcrumbs'\nimport { DocSidebar } from './DocSidebar'\nimport { TableOfContents } from './TableOfContents'\n\ninterface DocsLayoutProps {\n sections: (DocSection & { pages?: DocPage[] })[]\n currentPage?: DocPage\n toc?: TocItem[]\n activeHeadingId?: string\n breadcrumbs?: BreadcrumbItem[]\n currentPageId?: string\n onNavigate: (page: DocPage, section: DocSection) => void\n children: JSX.Element\n}\n\n/**\n * Renders the shared SolidJS docs page shell.\n *\n * @param props - Section tree, active-page metadata, and page content.\n * @returns The full docs application layout for a single page view.\n */\nexport function DocsLayout(props: DocsLayoutProps): JSX.Element {\n const resolvedChildren = children(() => props.children)\n const breadcrumbs = () => props.breadcrumbs ?? []\n const toc = () => props.toc ?? []\n\n return (\n <div class=\"flex min-h-screen bg-[#090a0f] text-white\">\n <aside class=\"sticky top-0 hidden h-screen w-[260px] shrink-0 overflow-y-auto border-r border-white/5 bg-[#0b0c12] lg:block\">\n <DocSidebar\n sections={props.sections}\n currentPageId={props.currentPageId}\n onNavigate={props.onNavigate}\n />\n </aside>\n\n <main class=\"flex-1 overflow-hidden\">\n <div class=\"mx-auto flex max-w-6xl gap-8 px-6 py-8 lg:px-10\">\n <motion.div\n class=\"min-w-0 flex-1\"\n initial={{ opacity: 0, y: 10 }}\n animate={{ opacity: 1, y: 0 }}\n transition={{ type: 'spring', delay: 0.1 }}\n >\n <Show when={breadcrumbs().length > 0}>\n <div class=\"mb-6\">\n <Breadcrumbs items={breadcrumbs()} />\n </div>\n </Show>\n \n <AnimatePresence>\n <Show when={props.currentPageId}>\n <motion.div \n initial={{ opacity: 0, x: -10 }}\n animate={{ opacity: 1, x: 0 }}\n exit={{ opacity: 0, x: 10 }}\n transition={{ type: 'spring', damping: 25, stiffness: 200 }}\n >\n {resolvedChildren()}\n </motion.div>\n </Show>\n </AnimatePresence>\n </motion.div>\n\n <Show when={toc().length > 0}>\n <motion.aside\n class=\"hidden w-[220px] shrink-0 xl:block\"\n initial={{ opacity: 0, x: 10 }}\n animate={{ opacity: 1, x: 0 }}\n transition={{ delay: 0.2 }}\n >\n <TableOfContents toc={toc()} activeId={props.activeHeadingId} />\n </motion.aside>\n </Show>\n </div>\n </main>\n </div>\n )\n}\n","/**\n * @module solidjsEditButton\n * @package @geenius/docs-solidjs\n * @description Renders the external edit-source affordance for the SolidJS\n * docs variant when an upstream repository edit URL is configured.\n */\n\nimport type { JSX } from 'solid-js'\n\ninterface EditButtonProps {\n pageSlug: string\n editUrl?: string\n}\n\n/**\n * Renders an external link for editing the current docs page source.\n *\n * @param props - Page slug and optional base repository edit URL.\n * @returns An edit link when editing is enabled for the current page.\n */\nexport function EditButton(props: EditButtonProps): JSX.Element | null {\n if (!props.editUrl) {\n return null\n }\n\n return (\n <a\n href={`${props.editUrl.replace(/\\/$/, '')}/${props.pageSlug}.mdx`}\n target=\"_blank\"\n rel=\"noopener noreferrer\"\n class=\"inline-flex items-center gap-1.5 rounded-lg border border-white/10 px-3 py-1.5 text-xs text-white/40 transition-colors hover:border-white/20 hover:text-white/60\"\n >\n <svg aria-hidden=\"true\" class=\"h-3.5 w-3.5\" viewBox=\"0 0 16 16\" fill=\"none\" stroke=\"currentColor\">\n <path d=\"M11.5 1.5l3 3-9 9H2.5v-3l9-9z\" stroke-width=\"1.5\" stroke-linejoin=\"round\" />\n </svg>\n Edit this page\n </a>\n )\n}\n","/**\n * @module solidjsPageNavigation\n * @package @geenius/docs-solidjs\n * @description Renders previous and next page affordances for the SolidJS\n * docs variant so readers can move linearly through the content graph.\n */\n\nimport { type JSX, Show } from 'solid-js'\n\ninterface PageNavigationProps {\n prev?: { title: string; href: string }\n next?: { title: string; href: string }\n}\n\n/**\n * Renders previous and next page links for the current docs page.\n *\n * @param props - Optional previous and next page descriptors.\n * @returns Navigation cards when adjacent pages are available.\n */\nexport function PageNavigation(props: PageNavigationProps): JSX.Element | null {\n if (!props.prev && !props.next) {\n return null\n }\n\n return (\n <div class=\"mt-12 flex items-stretch gap-4 border-t border-white/10 pt-8\">\n <Show when={props.prev} fallback={<div class=\"flex-1\" />}>\n {(prev) => (\n <a href={prev().href} class=\"group flex flex-1 flex-col rounded-xl border border-white/10 p-4 transition-all hover:border-indigo-500/40 hover:bg-white/5\">\n <span class=\"text-xs text-white/40 group-hover:text-indigo-400 transition-colors\">← Previous</span>\n <span class=\"mt-1 text-sm font-medium text-white/80 group-hover:text-white transition-colors truncate\">{prev().title}</span>\n </a>\n )}\n </Show>\n <Show when={props.next} fallback={<div class=\"flex-1\" />}>\n {(next) => (\n <a href={next().href} class=\"group flex flex-1 flex-col items-end rounded-xl border border-white/10 p-4 text-right transition-all hover:border-indigo-500/40 hover:bg-white/5\">\n <span class=\"text-xs text-white/40 group-hover:text-indigo-400 transition-colors\">Next →</span>\n <span class=\"mt-1 text-sm font-medium text-white/80 group-hover:text-white transition-colors truncate\">{next().title}</span>\n </a>\n )}\n </Show>\n </div>\n )\n}\n","/**\n * @module solidjsVersionSelector\n * @package @geenius/docs-solidjs\n * @description Presents the SolidJS docs version switcher for packages that\n * expose multiple documentation versions in the same surface.\n */\n\nimport { createSignal, For, type JSX, Show } from 'solid-js'\n\ninterface VersionSelectorProps {\n versions: string[]\n current: string\n onSelect: (version: string) => void\n}\n\n/**\n * Renders a version picker when more than one docs version is available.\n *\n * @param props - Available versions, current version, and selection callback.\n * @returns A dropdown-style version switcher for the docs surface.\n */\nexport function VersionSelector(props: VersionSelectorProps): JSX.Element | null {\n if (props.versions.length <= 1) {\n return null\n }\n\n const [isOpen, setIsOpen] = createSignal(false)\n\n return (\n <div class=\"relative\">\n <button\n type=\"button\"\n onClick={() => setIsOpen(!isOpen())}\n class=\"flex items-center gap-1.5 rounded-lg border border-white/10 bg-white/5 px-3 py-1.5 text-xs font-medium text-white/60 transition-colors hover:border-indigo-500/30\"\n >\n <span>v{props.current}</span>\n <svg\n aria-hidden=\"true\"\n class={`h-3 w-3 transition-transform ${isOpen() ? 'rotate-180' : ''}`}\n viewBox=\"0 0 16 16\"\n >\n <path d=\"M4 6l4 4 4-4\" stroke=\"currentColor\" stroke-width=\"2\" fill=\"none\" />\n </svg>\n </button>\n <Show when={isOpen()}>\n <div class=\"absolute right-0 top-full z-20 mt-1 min-w-[120px] overflow-hidden rounded-lg border border-white/10 bg-[#111218] shadow-xl\">\n <For each={props.versions}>\n {(v) => (\n <button\n type=\"button\"\n onClick={() => {\n props.onSelect(v)\n setIsOpen(false)\n }}\n class={`flex w-full items-center px-3 py-2 text-xs transition-colors ${v === props.current ? 'bg-indigo-500/15 text-indigo-300' : 'text-white/60 hover:bg-white/5'}`}\n >\n v{v}\n {v === props.current && (\n <span class=\"ml-auto text-[10px]\">✓</span>\n )}\n </button>\n )}\n </For>\n </div>\n </Show>\n </div>\n )\n}\n","/**\n * @module solidjsCreateDocSearch\n * @package @geenius/docs-solidjs\n * @description Creates the SolidJS docs search state machine, including the\n * query signal, debounced execution, and normalized result lifecycle.\n */\n\nimport type { SearchResult } from '@geenius/docs-shared'\nimport { type Accessor, createEffect, createSignal, onCleanup } from 'solid-js'\n\n/**\n * Search state returned by the SolidJS docs search primitive.\n *\n * @property results - Accessor returning the current ranked search results.\n * @property isSearching - Accessor describing whether a search request is pending.\n * @property query - Accessor returning the active search query.\n * @property setQuery - Updates the active search query.\n * @property clearSearch - Resets the query, results, and loading state.\n */\nexport interface DocSearchState {\n results: Accessor<SearchResult[]>\n isSearching: Accessor<boolean>\n query: Accessor<string>\n setQuery: (query: string) => void\n clearSearch: () => void\n}\n\n/**\n * Creates debounced docs search state for SolidJS consumers.\n *\n * @param searchFn - Search implementation returning matching docs results.\n * @param debounceMs - Delay before search execution after each query update.\n * @returns Signals and actions for driving a docs search experience.\n */\nexport function createDocSearch(\n searchFn: (query: string) => SearchResult[] | Promise<SearchResult[]>,\n debounceMs = 250,\n): DocSearchState {\n const [query, setQuery] = createSignal('')\n const [results, setResults] = createSignal<SearchResult[]>([])\n const [isSearching, setIsSearching] = createSignal(false)\n\n createEffect(() => {\n const q = query()\n if (!q.trim()) {\n setResults([])\n setIsSearching(false)\n return\n }\n\n setIsSearching(true)\n const timer = setTimeout(async () => {\n try {\n const r = await searchFn(q)\n setResults(r)\n } catch {\n setResults([])\n } finally {\n setIsSearching(false)\n }\n }, debounceMs)\n\n onCleanup(() => clearTimeout(timer))\n })\n\n const clearSearch = (): void => {\n setQuery('')\n setResults([])\n setIsSearching(false)\n }\n\n const handleSetQuery = (nextQuery: string): void => {\n setQuery(nextQuery)\n }\n\n return { results, isSearching, query, setQuery: handleSetQuery, clearSearch }\n}\n","/**\n * @module solidjsDocSearchPage\n * @package @geenius/docs-solidjs\n * @description Renders the dedicated SolidJS docs search page, including\n * query input, derived search results, and empty or loading states.\n */\n\nimport type { DocPage, DocSection, SearchResult } from '@geenius/docs-shared'\nimport { buildDocsIndex, highlightMatch, searchDocs } from '@geenius/docs-shared'\nimport { type Accessor, createMemo, For, type JSX, Show } from 'solid-js'\nimport { createDocSearch } from '../primitives/createDocSearch'\n\ninterface DocSearchPageProps {\n tree: Accessor<(DocSection & { pages: DocPage[]; pageCount: number })[] | undefined>\n onSelectPage?: (page: DocPage, section: DocSection) => void\n}\n\n/**\n * Renders a full-page docs search experience for SolidJS consumers.\n *\n * @param props - Docs tree accessor and page selection callback.\n * @returns The search page with loading, empty, and result states.\n */\nexport function DocSearchPage(props: DocSearchPageProps): JSX.Element {\n const sections = createMemo(() => props.tree() ?? [])\n const flatPages = createMemo(() => sections().flatMap((s) => s.pages ?? []))\n\n const searchFn = (q: string): SearchResult[] => {\n const index = buildDocsIndex(flatPages(), sections())\n return searchDocs(q, index)\n }\n\n const { results, isSearching, query, setQuery } = createDocSearch(searchFn)\n\n return (\n <Show\n when={props.tree() !== undefined}\n fallback={\n <div class=\"min-h-screen bg-[#090a0f] px-6 py-16\">\n <div class=\"mx-auto max-w-2xl\">\n <div class=\"mb-8 h-12 animate-pulse rounded-xl bg-white/5\" />\n </div>\n </div>\n }\n >\n <div class=\"min-h-screen bg-[#090a0f] text-white\">\n <div class=\"mx-auto max-w-2xl px-6 py-16\">\n <h1 class=\"mb-8 text-2xl font-bold\">Search Documentation</h1>\n <div class=\"relative mb-8\">\n <input\n type=\"text\"\n value={query()}\n onInput={(e) => setQuery(e.currentTarget.value)}\n placeholder=\"Type to search…\"\n autofocus\n class=\"w-full rounded-xl border border-white/10 bg-white/5 py-3.5 pl-12 pr-4 text-sm text-white placeholder-white/30 outline-none focus:border-indigo-500/40\"\n />\n <Show when={isSearching()}>\n <div class=\"absolute right-4 top-1/2 -translate-y-1/2\">\n <div class=\"h-4 w-4 animate-spin rounded-full border-2 border-white/10 border-t-indigo-400\" />\n </div>\n </Show>\n </div>\n <Show when={results().length > 0}>\n <div class=\"space-y-2\">\n <For each={results()}>\n {(result) => {\n const section = () => sections().find(s => s.slug === result.sectionSlug)\n const page = () => flatPages().find(p => p.id === result.pageId)\n return (\n <button\n type=\"button\"\n onClick={() => {\n const p = page()\n const s = section()\n if (p && s && props.onSelectPage) props.onSelectPage(p, s)\n }}\n class=\"flex w-full flex-col gap-1.5 rounded-xl border border-white/5 bg-white/[0.02] p-4 text-left transition-all hover:border-indigo-500/20 hover:bg-white/[0.05]\">\n <div class=\"flex items-center gap-2\">\n <span class=\"rounded bg-indigo-500/20 px-2 py-0.5 text-[10px] font-medium text-indigo-300\">{result.sectionTitle}</span>\n <span class=\"text-sm font-medium text-white/90\">{result.pageTitle}</span>\n </div>\n <p class=\"text-xs leading-relaxed text-white/40\">{highlightMatch(result.highlight, query())}</p>\n </button>\n )\n }}\n </For>\n </div>\n </Show>\n <Show when={query().trim() && results().length === 0 && !isSearching()}>\n <div class=\"flex flex-col items-center py-16 text-center\">\n <div class=\"mb-4 text-5xl opacity-30\">🔍</div>\n <h3 class=\"text-lg font-medium text-white/60\">No results found</h3>\n </div>\n </Show>\n <Show when={!query().trim()}>\n <div class=\"flex flex-col items-center py-16 text-center\">\n <div class=\"mb-4 text-5xl opacity-20\">📖</div>\n <p class=\"text-sm text-white/30\">Start typing to search across all documentation</p>\n </div>\n </Show>\n </div>\n </div>\n </Show>\n )\n}\n","/**\n * @module solidjsDocsAdminPage\n * @package @geenius/docs-solidjs\n * @description Renders the SolidJS docs administration surface for creating,\n * selecting, publishing, archiving, and deleting sections and pages.\n */\n\nimport type { DocAccess, DocPage, DocSection } from '@geenius/docs-shared'\nimport type { Accessor } from 'solid-js'\nimport { createMemo, createSignal, For, type JSX, Show } from 'solid-js'\nimport type { DocsAdminActions } from '../primitives/createDocsAdmin'\n\ninterface DocsAdminPageProps {\n tree: Accessor<(DocSection & { pages: DocPage[]; pageCount: number })[] | undefined>\n allPages?: DocPage[]\n admin: DocsAdminActions\n}\n\ninterface SectionForm {\n title: string\n slug: string\n description: string\n icon: string\n access: DocAccess\n}\n\ninterface PageForm {\n title: string\n slug: string\n content: string\n access: DocAccess\n tags: string\n}\n\nfunction toDocAccess(value: string): DocAccess {\n if (value === 'public' || value === 'team' || value === 'admin') {\n return value\n }\n\n return 'team'\n}\n\nfunction initialSectionForm(): SectionForm {\n return {\n title: '',\n slug: '',\n description: '',\n icon: '',\n access: 'team',\n }\n}\n\nfunction initialPageForm(): PageForm {\n return {\n title: '',\n slug: '',\n content: '',\n access: 'team',\n tags: '',\n }\n}\n\n/**\n * Renders the docs administration dashboard for SolidJS consumers.\n *\n * @param props - Docs tree accessors, page collections, and admin actions.\n * @returns The docs admin page with section and page management tools.\n */\nexport function DocsAdminPage(props: DocsAdminPageProps): JSX.Element {\n const sections = createMemo(() => props.tree?.() ?? [])\n const [selectedId, setSelectedId] = createSignal<string | null>(null)\n const [showSF, setShowSF] = createSignal(false)\n const [showPF, setShowPF] = createSignal(false)\n const [sectionForm, setSectionForm] = createSignal<SectionForm>(initialSectionForm())\n const [pageForm, setPageForm] = createSignal<PageForm>(initialPageForm())\n\n const selectedSection = createMemo(() => sections().find(s => s.id === selectedId()))\n const sectionPages = createMemo(() => {\n const sec = selectedSection()\n if (!sec) return []\n if (props.allPages) return props.allPages.filter(p => p.sectionId === selectedId())\n return sec.pages ?? []\n })\n const canCreateSection = createMemo(\n () => sectionForm().title.trim().length > 0 && sectionForm().slug.trim().length > 0,\n )\n const canCreatePage = createMemo(\n () =>\n pageForm().title.trim().length > 0 &&\n pageForm().slug.trim().length > 0 &&\n pageForm().content.trim().length > 0,\n )\n\n return (\n <Show\n when={props.tree?.() !== undefined}\n fallback={\n <div class=\"min-h-screen bg-[#090a0f] px-6 py-12\">\n <div class=\"mx-auto max-w-6xl\">\n <div class=\"mb-8 h-10 w-48 animate-pulse rounded bg-white/5\" />\n </div>\n </div>\n }\n >\n <div class=\"min-h-screen bg-[#090a0f] text-white\">\n <div class=\"mx-auto max-w-6xl px-6 py-12\">\n <h1 class=\"mb-8 text-2xl font-bold\">Docs Admin</h1>\n <div class=\"grid gap-6 md:grid-cols-2\">\n <div class=\"rounded-xl border border-white/8 bg-white/[0.02] p-5\">\n <div class=\"mb-4 flex items-center justify-between\">\n <h2 class=\"text-lg font-semibold text-white/80\">Sections</h2>\n <button type=\"button\" onClick={() => setShowSF(!showSF())} class=\"rounded-lg bg-indigo-600 px-3 py-1.5 text-xs font-medium hover:bg-indigo-500\">+ Add</button>\n </div>\n <Show when={showSF()}>\n <div class=\"mb-4 space-y-2 rounded-lg border border-white/10 bg-white/5 p-4\">\n <label class=\"block space-y-1\" for=\"docs-admin-section-title\">\n <span class=\"text-xs font-medium text-white/50\">Title</span>\n <input\n id=\"docs-admin-section-title\"\n type=\"text\"\n placeholder=\"Getting Started\"\n value={sectionForm().title}\n onInput={e => setSectionForm({...sectionForm(), title: e.currentTarget.value})}\n class=\"w-full rounded-lg border border-white/10 bg-white/5 px-3 py-2 text-sm outline-none focus:border-indigo-500/40\"\n />\n </label>\n <label class=\"block space-y-1\" for=\"docs-admin-section-slug\">\n <span class=\"text-xs font-medium text-white/50\">Slug</span>\n <input\n id=\"docs-admin-section-slug\"\n type=\"text\"\n placeholder=\"getting-started\"\n value={sectionForm().slug}\n onInput={e => setSectionForm({...sectionForm(), slug: e.currentTarget.value})}\n class=\"w-full rounded-lg border border-white/10 bg-white/5 px-3 py-2 text-sm outline-none focus:border-indigo-500/40\"\n />\n </label>\n <label class=\"block space-y-1\" for=\"docs-admin-section-icon\">\n <span class=\"text-xs font-medium text-white/50\">Icon</span>\n <input\n id=\"docs-admin-section-icon\"\n type=\"text\"\n placeholder=\"📚\"\n value={sectionForm().icon}\n onInput={e => setSectionForm({...sectionForm(), icon: e.currentTarget.value})}\n class=\"w-full rounded-lg border border-white/10 bg-white/5 px-3 py-2 text-sm outline-none focus:border-indigo-500/40\"\n />\n </label>\n <label class=\"block space-y-1\" for=\"docs-admin-section-description\">\n <span class=\"text-xs font-medium text-white/50\">Description</span>\n <input\n id=\"docs-admin-section-description\"\n type=\"text\"\n placeholder=\"Overview pages and onboarding guides.\"\n value={sectionForm().description}\n onInput={e => setSectionForm({...sectionForm(), description: e.currentTarget.value})}\n class=\"w-full rounded-lg border border-white/10 bg-white/5 px-3 py-2 text-sm outline-none focus:border-indigo-500/40\"\n />\n </label>\n <label class=\"block space-y-1\" for=\"docs-admin-section-access\">\n <span class=\"text-xs font-medium text-white/50\">Access</span>\n <select\n id=\"docs-admin-section-access\"\n value={sectionForm().access}\n onChange={(e) => setSectionForm({ ...sectionForm(), access: toDocAccess(e.currentTarget.value) })}\n class=\"w-full rounded-lg border border-white/10 bg-white/5 px-3 py-2 text-sm outline-none focus:border-indigo-500/40\"\n >\n <option value=\"public\">Public</option>\n <option value=\"team\">Team</option>\n <option value=\"admin\">Admin</option>\n </select>\n </label>\n <div class=\"flex gap-2\">\n <button\n type=\"button\"\n disabled={!canCreateSection()}\n onClick={async () => { await props.admin.createSection({...sectionForm(), order: sections().length}); setSectionForm(initialSectionForm()); setShowSF(false) }}\n class=\"rounded-lg bg-indigo-600 px-4 py-2 text-xs font-medium disabled:cursor-not-allowed disabled:opacity-40 hover:bg-indigo-500\"\n >\n Create\n </button>\n <button type=\"button\" onClick={() => setShowSF(false)} class=\"rounded-lg border border-white/10 px-4 py-2 text-xs hover:bg-white/5\">Cancel</button>\n </div>\n </div>\n </Show>\n <div class=\"space-y-1\">\n <Show when={sections().length === 0}><p class=\"py-8 text-center text-sm text-white/30\">No sections</p></Show>\n <For each={sections()}>\n {(section) => (\n <div class={`group flex items-center gap-2 rounded-lg px-3 py-2.5 cursor-pointer ${selectedId() === section.id ? 'bg-indigo-500/15 text-indigo-300' : 'hover:bg-white/5 text-white/70'}`}>\n <button\n type=\"button\"\n class=\"flex min-w-0 flex-1 items-center gap-2 text-left\"\n onClick={() => setSelectedId(section.id)}\n >\n <Show when={section.icon}><span>{section.icon}</span></Show>\n <span class=\"flex-1 text-sm font-medium truncate\">{section.title}</span>\n <span class=\"text-[11px] tabular-nums opacity-40\">{section.pageCount ?? 0}</span>\n </button>\n <button\n type=\"button\"\n onClick={(e) => { e.stopPropagation(); if (confirm(`Delete \"${section.title}\"?`)) props.admin.deleteSection(section.id) }}\n class=\"rounded p-1 text-white/20 opacity-0 group-hover:opacity-100 hover:text-red-400\"\n aria-label={`Delete section ${section.title}`}\n >\n ✕\n </button>\n </div>\n )}\n </For>\n </div>\n </div>\n <div class=\"rounded-xl border border-white/8 bg-white/[0.02] p-5\">\n <div class=\"mb-4 flex items-center justify-between\">\n <h2 class=\"text-lg font-semibold text-white/80\">{selectedSection() ? `Pages — ${selectedSection()?.title}` : 'Pages'}</h2>\n <Show when={selectedSection()}><button type=\"button\" onClick={() => setShowPF(!showPF())} class=\"rounded-lg bg-indigo-600 px-3 py-1.5 text-xs font-medium hover:bg-indigo-500\">+ Add</button></Show>\n </div>\n <Show when={!selectedSection()}><p class=\"py-16 text-center text-sm text-white/30\">Select a section</p></Show>\n <Show when={showPF() && selectedSection()}>\n <div class=\"mb-4 space-y-2 rounded-lg border border-white/10 bg-white/5 p-4\">\n <label class=\"block space-y-1\" for=\"docs-admin-page-title\">\n <span class=\"text-xs font-medium text-white/50\">Title</span>\n <input\n id=\"docs-admin-page-title\"\n type=\"text\"\n placeholder=\"Install the package\"\n value={pageForm().title}\n onInput={e => setPageForm({...pageForm(), title: e.currentTarget.value})}\n class=\"w-full rounded-lg border border-white/10 bg-white/5 px-3 py-2 text-sm outline-none focus:border-indigo-500/40\"\n />\n </label>\n <label class=\"block space-y-1\" for=\"docs-admin-page-slug\">\n <span class=\"text-xs font-medium text-white/50\">Slug</span>\n <input\n id=\"docs-admin-page-slug\"\n type=\"text\"\n placeholder=\"install\"\n value={pageForm().slug}\n onInput={e => setPageForm({...pageForm(), slug: e.currentTarget.value})}\n class=\"w-full rounded-lg border border-white/10 bg-white/5 px-3 py-2 text-sm outline-none focus:border-indigo-500/40\"\n />\n </label>\n <label class=\"block space-y-1\" for=\"docs-admin-page-content\">\n <span class=\"text-xs font-medium text-white/50\">Content (MDX)</span>\n <textarea\n id=\"docs-admin-page-content\"\n placeholder=\"# Install\"\n value={pageForm().content}\n onInput={e => setPageForm({...pageForm(), content: e.currentTarget.value})}\n rows={4}\n class=\"w-full rounded-lg border border-white/10 bg-white/5 px-3 py-2 text-sm outline-none focus:border-indigo-500/40 resize-y\"\n />\n </label>\n <label class=\"block space-y-1\" for=\"docs-admin-page-tags\">\n <span class=\"text-xs font-medium text-white/50\">Tags</span>\n <input\n id=\"docs-admin-page-tags\"\n type=\"text\"\n placeholder=\"setup, install\"\n value={pageForm().tags}\n onInput={e => setPageForm({...pageForm(), tags: e.currentTarget.value})}\n class=\"w-full rounded-lg border border-white/10 bg-white/5 px-3 py-2 text-sm outline-none focus:border-indigo-500/40\"\n />\n </label>\n <label class=\"block space-y-1\" for=\"docs-admin-page-access\">\n <span class=\"text-xs font-medium text-white/50\">Access</span>\n <select\n id=\"docs-admin-page-access\"\n value={pageForm().access}\n onChange={(e) => setPageForm({ ...pageForm(), access: toDocAccess(e.currentTarget.value) })}\n class=\"w-full rounded-lg border border-white/10 bg-white/5 px-3 py-2 text-sm outline-none focus:border-indigo-500/40\"\n >\n <option value=\"public\">Public</option>\n <option value=\"team\">Team</option>\n <option value=\"admin\">Admin</option>\n </select>\n </label>\n <div class=\"flex gap-2\">\n <button\n type=\"button\"\n disabled={!canCreatePage()}\n onClick={async () => { const sectionId = selectedId(); if (!sectionId) return; await props.admin.createPage({title:pageForm().title,slug:pageForm().slug,content:pageForm().content,sectionId,access:pageForm().access,tags:pageForm().tags?pageForm().tags.split(',').map(t=>t.trim()):[],order:sectionPages().length}); setPageForm(initialPageForm()); setShowPF(false) }}\n class=\"rounded-lg bg-indigo-600 px-4 py-2 text-xs font-medium disabled:cursor-not-allowed disabled:opacity-40 hover:bg-indigo-500\"\n >\n Create\n </button>\n <button type=\"button\" onClick={() => setShowPF(false)} class=\"rounded-lg border border-white/10 px-4 py-2 text-xs hover:bg-white/5\">Cancel</button>\n </div>\n </div>\n </Show>\n <Show when={selectedSection() && sectionPages().length > 0}>\n <div class=\"space-y-1\">\n <For each={sectionPages()}>\n {(page) => (\n <div class=\"group flex items-center gap-3 rounded-lg px-3 py-2.5 hover:bg-white/5\">\n <div class=\"flex-1 min-w-0\">\n <p class=\"text-sm font-medium text-white/80 truncate\">{page.title}</p>\n <p class=\"text-[11px] text-white/30\">/{page.slug}</p>\n </div>\n <span class={`shrink-0 rounded-full px-2 py-0.5 text-[10px] font-medium ${page.status === 'published' ? 'bg-emerald-500/15 text-emerald-400' : page.status === 'archived' ? 'bg-white/5 text-white/30' : 'bg-amber-500/15 text-amber-400'}`}>{page.status}</span>\n <div class=\"flex items-center gap-1 opacity-0 group-hover:opacity-100\">\n <Show when={page.status === 'draft'}><button type=\"button\" onClick={() => props.admin.publishPage(page.id)} class=\"rounded px-2 py-1 text-[11px] text-emerald-400 hover:bg-emerald-500/10\">Publish</button></Show>\n <Show when={page.status === 'published'}><button type=\"button\" onClick={() => props.admin.archivePage(page.id)} class=\"rounded px-2 py-1 text-[11px] text-amber-400 hover:bg-amber-500/10\">Archive</button></Show>\n <button\n type=\"button\"\n onClick={() => { if (confirm(`Delete \"${page.title}\"?`)) props.admin.deletePage(page.id) }}\n class=\"rounded p-1 text-white/20 hover:text-red-400\"\n aria-label={`Delete page ${page.title}`}\n >\n ✕\n </button>\n </div>\n </div>\n )}\n </For>\n </div>\n </Show>\n <Show when={selectedSection() && sectionPages().length === 0 && !showPF()}>\n <p class=\"py-12 text-center text-sm text-white/30\">No pages in this section</p>\n </Show>\n </div>\n </div>\n </div>\n </div>\n </Show>\n )\n}\n","/**\n * @module solidjsCreateDocs\n * @package @geenius/docs-solidjs\n * @description Creates the canonical SolidJS docs state container that merges\n * config, flattens pages, and tracks section, page, and search selection state.\n */\n\nimport type { DocPage, DocSection, DocsConfig } from '@geenius/docs-shared'\nimport { defaultDocsConfig } from '@geenius/docs-shared'\nimport {\n type Accessor,\n createMemo,\n createSignal,\n} from 'solid-js'\n\n/**\n * Aggregate docs state returned by the SolidJS docs primitive.\n *\n * @property sections - Accessor returning the normalized docs sections.\n * @property currentSection - Accessor for the currently selected section.\n * @property setSection - Updates the selected section and resets the page selection.\n * @property currentPage - Accessor for the currently selected page.\n * @property setPage - Updates the selected page.\n * @property searchQuery - Accessor for the active docs search query.\n * @property setSearchQuery - Updates the active docs search query.\n * @property isLoading - Accessor describing whether the tree is still unresolved.\n * @property config - Accessor returning the merged docs configuration.\n * @property flatPages - Accessor returning the flattened page list.\n */\nexport interface DocsState {\n sections: Accessor<(DocSection & { pages: DocPage[]; pageCount: number })[]>\n currentSection: Accessor<DocSection | null>\n setSection: (section: DocSection | null) => void\n currentPage: Accessor<DocPage | null>\n setPage: (page: DocPage | null) => void\n searchQuery: Accessor<string>\n setSearchQuery: (query: string) => void\n isLoading: Accessor<boolean>\n config: Accessor<DocsConfig>\n flatPages: Accessor<DocPage[]>\n}\n\n/**\n * Creates normalized docs state for the SolidJS docs surface.\n *\n * @param tree - Docs section tree accessor with eagerly attached pages.\n * @param config - Optional overrides merged onto the shared docs config.\n * @returns A shared docs state object used by SolidJS pages and components.\n */\nexport function createDocs(\n tree: Accessor<\n (DocSection & { pages: DocPage[]; pageCount: number })[] | undefined\n >,\n config?: Partial<DocsConfig>,\n): DocsState {\n const [currentSection, setSection] = createSignal<DocSection | null>(null)\n const [currentPage, setPage] = createSignal<DocPage | null>(null)\n const [searchQuery, setSearchQuery] = createSignal('')\n\n const mergedConfig = createMemo(() => ({ ...defaultDocsConfig, ...config }))\n const sections = createMemo(() => tree() ?? [])\n const flatPages = createMemo(() => sections().flatMap((s) => s.pages ?? []))\n const isLoading = createMemo(() => tree() === undefined)\n\n const handleSetSection = (section: DocSection | null): void => {\n setSection(section)\n setPage(null)\n }\n\n const handleSetPage = (page: DocPage | null): void => {\n setPage(page)\n }\n\n const handleSetSearchQuery = (query: string): void => {\n setSearchQuery(query)\n }\n\n return {\n sections,\n currentSection,\n setSection: handleSetSection,\n currentPage,\n setPage: handleSetPage,\n searchQuery,\n setSearchQuery: handleSetSearchQuery,\n isLoading,\n config: mergedConfig,\n flatPages,\n }\n}\n","/**\n * @module solidjsDocsIndexPage\n * @package @geenius/docs-solidjs\n * @description Renders the SolidJS docs landing page with section cards,\n * keyboard-accessible search launch, and empty or loading states.\n */\n\nimport type { DocPage, DocSection, SearchResult } from '@geenius/docs-shared'\nimport { buildDocsIndex, searchDocs } from '@geenius/docs-shared'\nimport { type Accessor, createEffect, createSignal, For, type JSX, onCleanup, Show } from 'solid-js'\nimport { DocSearch } from '../components/DocSearch'\nimport { createDocSearch } from '../primitives/createDocSearch'\nimport { createDocs } from '../primitives/createDocs'\n\ninterface DocsIndexPageProps {\n tree: Accessor<(DocSection & { pages: DocPage[]; pageCount: number })[] | undefined>\n onSelectPage?: (page: DocPage, section: DocSection) => void\n}\n\n/**\n * Renders the root docs landing page for the SolidJS variant.\n *\n * @param props - Docs tree accessor and page selection callback.\n * @returns The docs home page with search and section navigation.\n */\nexport function DocsIndexPage(props: DocsIndexPageProps): JSX.Element {\n const docs = createDocs(props.tree)\n const [isSearchOpen, setIsSearchOpen] = createSignal(false)\n\n const searchFn = (q: string): SearchResult[] => {\n const index = buildDocsIndex(docs.flatPages(), docs.sections())\n return searchDocs(q, index)\n }\n\n const search = createDocSearch(searchFn)\n\n createEffect(() => {\n const handler = (e: KeyboardEvent) => {\n if ((e.metaKey || e.ctrlKey) && e.key === 'k') { e.preventDefault(); setIsSearchOpen(true) }\n }\n document.addEventListener('keydown', handler)\n onCleanup(() => document.removeEventListener('keydown', handler))\n })\n\n return (\n <Show\n when={!docs.isLoading()}\n fallback={\n <div class=\"min-h-screen bg-[#090a0f] px-6 py-16\">\n <div class=\"mx-auto max-w-5xl\">\n <div class=\"mb-10 h-10 w-64 animate-pulse rounded-lg bg-white/5\" />\n <div class=\"mb-8 h-12 w-full max-w-xl animate-pulse rounded-xl bg-white/5\" />\n <div class=\"grid gap-4 md:grid-cols-2 lg:grid-cols-3\">\n <For each={Array(6)}>\n {() => <div class=\"h-36 animate-pulse rounded-xl bg-white/5\" />}\n </For>\n </div>\n </div>\n </div>\n }\n >\n <Show\n when={docs.sections().length > 0}\n fallback={\n <div class=\"flex min-h-screen flex-col items-center justify-center bg-[#090a0f] text-center\">\n <div class=\"mb-4 text-6xl opacity-30\">📚</div>\n <h2 class=\"mb-2 text-xl font-semibold text-white/80\">No documentation yet</h2>\n <p class=\"max-w-sm text-sm text-white/40\">Create your first section and pages to get started.</p>\n </div>\n }\n >\n <div class=\"min-h-screen bg-[#090a0f] text-white\">\n <div class=\"mx-auto max-w-5xl px-6 py-16\">\n <h1 class=\"mb-2 text-4xl font-bold tracking-tight\">Documentation</h1>\n <p class=\"mb-10 text-lg text-white/50\">Browse guides, API references, and tutorials.</p>\n <button\n type=\"button\"\n onClick={() => setIsSearchOpen(true)}\n class=\"mb-12 flex w-full max-w-xl items-center gap-3 rounded-xl border border-white/10 bg-white/5 px-5 py-3.5 text-left text-sm text-white/30 transition-colors hover:border-white/20\"\n >\n <svg aria-hidden=\"true\" class=\"h-4.5 w-4.5 shrink-0\" viewBox=\"0 0 20 20\" fill=\"currentColor\">\n <path fill-rule=\"evenodd\" d=\"M9 3.5a5.5 5.5 0 100 11 5.5 5.5 0 000-11zM2 9a7 7 0 1112.452 4.391l3.328 3.329a.75.75 0 11-1.06 1.06l-3.329-3.328A7 7 0 012 9z\" clip-rule=\"evenodd\" />\n </svg>\n <span class=\"flex-1\">Search documentation…</span>\n <kbd class=\"rounded border border-white/10 bg-white/5 px-2 py-0.5 text-[11px]\">⌘K</kbd>\n </button>\n <div class=\"grid gap-4 md:grid-cols-2 lg:grid-cols-3\">\n <For each={docs.sections().filter((s) => !s.parentId)}>\n {(section) => (\n <button\n type=\"button\"\n onClick={() => {\n const fp = section.pages?.[0]\n if (fp && props.onSelectPage) props.onSelectPage(fp, section)\n }}\n class=\"group flex flex-col rounded-xl border border-white/8 bg-white/[0.03] p-5 text-left transition-all hover:border-indigo-500/30 hover:bg-white/[0.06]\">\n <Show when={section.icon}>\n <span class=\"mb-3 text-2xl\">{section.icon}</span>\n </Show>\n <h3 class=\"mb-1.5 text-base font-semibold text-white/90 group-hover:text-white\">{section.title}</h3>\n <Show when={section.description}>\n <p class=\"mb-3 flex-1 text-sm leading-relaxed text-white/40\">{section.description}</p>\n </Show>\n <div class=\"text-xs text-white/25\">\n <span>{section.pageCount ?? 0} pages</span>\n </div>\n </button>\n )}\n </For>\n </div>\n </div>\n <DocSearch\n results={search.results()}\n query={search.query()}\n onQuery={search.setQuery}\n onSelect={(result) => {\n setIsSearchOpen(false)\n search.clearSearch()\n const section = docs.sections().find((s) => s.slug === result.sectionSlug)\n const page = docs.flatPages().find((p) => p.id === result.pageId)\n if (page && section && props.onSelectPage) props.onSelectPage(page, section)\n }}\n isOpen={isSearchOpen()}\n onClose={() => setIsSearchOpen(false)}\n />\n </div>\n </Show>\n </Show>\n )\n}\n","/**\n * @module solidjsCreateTableOfContents\n * @package @geenius/docs-solidjs\n * @description Derives the SolidJS docs table of contents from MDX content\n * and tracks the active heading via intersection observer updates.\n */\n\nimport type { TocItem } from '@geenius/docs-shared'\nimport { extractToc } from '@geenius/docs-shared'\nimport { type Accessor, createEffect, createMemo, createSignal, onCleanup } from 'solid-js'\n\n/**\n * Table-of-contents state returned by the SolidJS docs TOC primitive.\n *\n * @property toc - Accessor returning the extracted heading tree.\n * @property activeId - Accessor returning the currently active heading id.\n * @property setActiveId - Updates the currently active heading id.\n */\nexport interface TableOfContentsState {\n toc: Accessor<TocItem[]>\n activeId: Accessor<string>\n setActiveId: (id: string) => void\n}\n\n/**\n * Creates table-of-contents state for a docs page.\n *\n * @param mdxContent - Accessor returning the current page MDX source.\n * @returns Derived TOC state and active-heading controls.\n */\nexport function createTableOfContents(\n mdxContent: Accessor<string | undefined>,\n): TableOfContentsState {\n const [activeId, setActiveId] = createSignal('')\n\n const toc = createMemo<TocItem[]>(() => {\n const content = mdxContent()\n if (!content) return []\n return extractToc(content)\n })\n\n const flatIds = createMemo(() => {\n const ids: string[] = []\n const collect = (items: TocItem[]) => {\n for (const item of items) {\n ids.push(item.id)\n collect(item.children)\n }\n }\n collect(toc())\n return ids\n })\n\n createEffect(() => {\n const ids = flatIds()\n if (ids.length === 0) return\n\n const observer = new IntersectionObserver(\n (entries) => {\n for (const entry of entries) {\n if (entry.isIntersecting) {\n setActiveId(entry.target.id)\n break\n }\n }\n },\n { rootMargin: '-80px 0px -70% 0px', threshold: 0 }\n )\n\n for (const id of ids) {\n const el = document.getElementById(id)\n if (el) observer.observe(el)\n }\n\n onCleanup(() => observer.disconnect())\n })\n\n const handleSetActiveId = (id: string): void => {\n setActiveId(id)\n }\n\n return { toc, activeId, setActiveId: handleSetActiveId }\n}\n","/**\n * @module solidjsDocViewPage\n * @package @geenius/docs-solidjs\n * @description Renders the main SolidJS docs reading experience, including\n * layout chrome, MDX content, table of contents, and sibling navigation.\n */\n\nimport type { DocPage as DocPageType, DocSection } from '@geenius/docs-shared'\nimport { buildBreadcrumbs } from '@geenius/docs-shared'\nimport { type Accessor, createEffect, createMemo, type JSX, Show } from 'solid-js'\nimport { DocPage } from '../components/DocPage'\nimport { DocsLayout } from '../components/DocsLayout'\nimport { EditButton } from '../components/EditButton'\nimport { PageNavigation } from '../components/PageNavigation'\nimport { createDocs } from '../primitives/createDocs'\nimport { createTableOfContents } from '../primitives/createTableOfContents'\n\ninterface DocViewPageProps {\n tree: Accessor<\n (DocSection & { pages: DocPageType[]; pageCount: number })[] | undefined\n >\n page: Accessor<DocPageType | null | undefined>\n editPageUrl?: string\n onNavigate: (page: DocPageType, section: DocSection) => void\n onIncrementView?: (pageId: string) => void\n}\n\n/**\n * Renders the docs reader view for a selected SolidJS page.\n *\n * @param props - Docs tree, selected page accessor, and navigation callbacks.\n * @returns The full docs reading experience or an empty-state fallback.\n */\nexport function DocViewPage(props: DocViewPageProps): JSX.Element {\n const docs = createDocs(props.tree)\n const { toc, activeId } = createTableOfContents(() => props.page()?.content)\n\n createEffect(() => {\n const p = props.page()\n if (p?.id && props.onIncrementView) props.onIncrementView(p.id)\n })\n\n const breadcrumbs = createMemo(() => {\n const p = props.page()\n if (!p) return []\n return buildBreadcrumbs(docs.sections(), p.sectionId, p.slug)\n })\n\n const nav = createMemo(() => {\n const p = props.page()\n if (!p) return { prev: undefined, next: undefined }\n const all = docs.flatPages()\n const idx = all.findIndex((pg) => pg.id === p.id)\n const section = docs.sections().find((s) => s.id === p.sectionId)\n return {\n prev: idx > 0\n ? {\n title: all[idx - 1].title,\n href: `/docs/${section?.slug ?? ''}/${all[idx - 1].slug}`,\n }\n : undefined,\n next: idx < all.length - 1\n ? {\n title: all[idx + 1].title,\n href: `/docs/${section?.slug ?? ''}/${all[idx + 1].slug}`,\n }\n : undefined,\n }\n })\n\n return (\n <Show\n when={!docs.isLoading() && props.page() !== undefined}\n fallback={\n <div class=\"flex min-h-screen bg-[#090a0f]\">\n <div class=\"hidden w-[260px] shrink-0 border-r border-white/5 bg-[#0b0c12] lg:block\">\n <div class=\"space-y-3 p-4\">\n {Array.from({ length: 8 }).map(() => (\n <div class=\"h-8 animate-pulse rounded-lg bg-white/5\" />\n ))}\n </div>\n </div>\n <div class=\"flex-1 px-10 py-8\">\n <div class=\"mx-auto max-w-3xl space-y-4\">\n <div class=\"h-10 w-96 animate-pulse rounded bg-white/5\" />\n </div>\n </div>\n </div>\n }\n >\n <Show\n when={props.page()}\n fallback={\n <div class=\"flex min-h-screen flex-col items-center justify-center bg-[#090a0f] text-center\">\n <div class=\"mb-4 text-6xl opacity-30\">🔍</div>\n <h2 class=\"mb-2 text-xl font-semibold text-white/80\">Page not found</h2>\n </div>\n }\n >\n {(page) => (\n <DocsLayout\n sections={docs.sections()}\n toc={toc()}\n activeHeadingId={activeId()}\n breadcrumbs={breadcrumbs()}\n currentPageId={page().id}\n onNavigate={props.onNavigate}\n >\n <div class=\"mb-8\">\n <h1 class=\"mb-3 text-3xl font-bold tracking-tight\">{page().title}</h1>\n <div class=\"flex flex-wrap items-center gap-4 text-sm text-white/40\">\n <span>{page().author.name}</span>\n <Show when={page().readingTime > 0}>\n <span>{page().readingTime} min read</span>\n </Show>\n <Show when={page().viewCount > 0}>\n <span>{page().viewCount.toLocaleString()} views</span>\n </Show>\n </div>\n </div>\n <DocPage page={page()} />\n <div class=\"mt-10 flex items-center justify-between border-t border-white/5 pt-6\">\n <EditButton pageSlug={page().slug} editUrl={props.editPageUrl} />\n </div>\n <PageNavigation prev={nav().prev} next={nav().next} />\n </DocsLayout>\n )}\n </Show>\n </Show>\n )\n}\n","/**\n * @module solidjsCreateDocsAdmin\n * @package @geenius/docs-solidjs\n * @description Adapts caller-provided section and page mutations into a\n * stable SolidJS admin controller with normalized method signatures.\n */\n\nexport interface DocsAdminActions {\n createSection: (data: {\n title: string\n slug: string\n parentId?: string\n order: number\n icon?: string\n description?: string\n access: 'public' | 'team' | 'admin'\n }) => Promise<void>\n updateSection: (sectionId: string, data: Record<string, unknown>) => Promise<void>\n deleteSection: (sectionId: string) => Promise<void>\n reorderSections: (sectionIds: string[]) => Promise<void>\n createPage: (data: {\n title: string\n slug: string\n content: string\n sectionId: string\n access: 'public' | 'team' | 'admin'\n tags?: string[]\n version?: string\n status?: 'draft' | 'published' | 'archived'\n author?: { name: string; avatar?: string }\n excerpt?: string\n order?: number\n }) => Promise<void>\n updatePage: (pageId: string, data: Record<string, unknown>) => Promise<void>\n publishPage: (pageId: string) => Promise<void>\n archivePage: (pageId: string) => Promise<void>\n deletePage: (pageId: string) => Promise<void>\n reorderPages: (pageIds: string[]) => Promise<void>\n movePage: (pageId: string, newSectionId: string, newOrder: number) => Promise<void>\n}\n\n/**\n * Creates a SolidJS-friendly docs admin controller around async mutations.\n *\n * @param mutations - Low-level CRUD and reorder operations for docs content.\n * @returns An admin controller with normalized section and page methods.\n */\nexport function createDocsAdmin(\n mutations: {\n createSection: (args: Record<string, unknown>) => Promise<unknown>\n updateSection: (args: Record<string, unknown>) => Promise<unknown>\n deleteSection: (args: Record<string, unknown>) => Promise<unknown>\n reorderSections: (args: Record<string, unknown>) => Promise<unknown>\n createPage: (args: Record<string, unknown>) => Promise<unknown>\n updatePage: (args: Record<string, unknown>) => Promise<unknown>\n publishPage: (args: Record<string, unknown>) => Promise<unknown>\n archivePage: (args: Record<string, unknown>) => Promise<unknown>\n deletePage: (args: Record<string, unknown>) => Promise<unknown>\n reorderPages: (args: Record<string, unknown>) => Promise<unknown>\n movePage: (args: Record<string, unknown>) => Promise<unknown>\n },\n): DocsAdminActions {\n return {\n createSection: async (data: {\n title: string\n slug: string\n parentId?: string\n order: number\n icon?: string\n description?: string\n access: 'public' | 'team' | 'admin'\n }): Promise<void> => {\n await mutations.createSection(data)\n },\n\n updateSection: async (\n sectionId: string,\n data: Record<string, unknown>,\n ): Promise<void> => {\n await mutations.updateSection({ sectionId, ...data })\n },\n\n deleteSection: async (sectionId: string): Promise<void> => {\n await mutations.deleteSection({ sectionId })\n },\n\n reorderSections: async (sectionIds: string[]): Promise<void> => {\n await mutations.reorderSections({ sectionIds })\n },\n\n createPage: async (data: {\n title: string\n slug: string\n content: string\n sectionId: string\n access: 'public' | 'team' | 'admin'\n tags?: string[]\n version?: string\n status?: 'draft' | 'published' | 'archived'\n author?: { name: string; avatar?: string }\n excerpt?: string\n order?: number\n }): Promise<void> => {\n await mutations.createPage(data)\n },\n\n updatePage: async (\n pageId: string,\n data: Record<string, unknown>,\n ): Promise<void> => {\n await mutations.updatePage({ pageId, ...data })\n },\n\n publishPage: async (pageId: string): Promise<void> => {\n await mutations.publishPage({ pageId })\n },\n\n archivePage: async (pageId: string): Promise<void> => {\n await mutations.archivePage({ pageId })\n },\n\n deletePage: async (pageId: string): Promise<void> => {\n await mutations.deletePage({ pageId })\n },\n\n reorderPages: async (pageIds: string[]): Promise<void> => {\n await mutations.reorderPages({ pageIds })\n },\n\n movePage: async (\n pageId: string,\n newSectionId: string,\n newOrder: number,\n ): Promise<void> => {\n await mutations.movePage({ pageId, newSectionId, newOrder })\n },\n }\n}\n"]}
|
|
1
|
+
{"version":3,"sources":["../src/lib/utils.ts","../src/components/Breadcrumbs.tsx","../../shared/src/utilities.ts","../src/components/DocPage.tsx","../src/components/DocSearch.tsx","../src/components/DocSidebar.tsx","../src/components/TableOfContents.tsx","../src/components/DocsLayout.tsx","../src/components/EditButton.tsx","../src/components/PageNavigation.tsx","../src/components/VersionSelector.tsx","../src/primitives/createDocSearch.ts","../src/pages/DocSearchPage.tsx","../src/pages/DocsAdminPage.tsx","../src/primitives/createDocs.ts","../src/pages/DocsIndexPage.tsx","../src/primitives/createTableOfContents.ts","../src/pages/DocViewPage.tsx","../src/primitives/createDocsAdmin.ts"],"names":["children","jsx","jsxs","Show","For","createSignal","motion","AnimatePresence","Fragment","createUniqueId","createEffect","createMemo","onCleanup"],"mappings":"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","file":"index.js","sourcesContent":["/**\n * @module docsSolidUtils\n * @package @geenius/docs/solidjs\n * @description Provides the Tailwind-aware class composition helper for the\n * SolidJS docs variant so exported components can expose a stable optional\n * `class` override without duplicating merge logic.\n */\n\nimport { type ClassValue, clsx } from 'clsx'\nimport { twMerge } from 'tailwind-merge'\n\n/**\n * Merges conditional class fragments while preserving Tailwind conflict\n * resolution.\n *\n * @param inputs - Class fragments that may include arrays, objects, and falsy values.\n * @returns A merged Tailwind-safe class string.\n */\nexport function cn(...inputs: ClassValue[]): string {\n return twMerge(clsx(inputs))\n}\n","/**\n * @module solidjsBreadcrumbs\n * @package @geenius/docs/solidjs\n * @description Renders the SolidJS docs breadcrumb trail using shared route\n * metadata and the Tailwind-styled docs presentation contract.\n */\n\nimport type { BreadcrumbItem } from '@geenius/docs/shared'\nimport { For, type JSX, Show } from 'solid-js'\nimport { cn } from '../lib/utils'\n\ninterface BreadcrumbsProps {\n items: BreadcrumbItem[]\n class?: string\n}\n\n/**\n * Renders the current docs breadcrumb hierarchy.\n *\n * @param props - Breadcrumb items describing the active page ancestry.\n * @returns Breadcrumb navigation for the current page when items exist.\n */\nexport function Breadcrumbs(props: BreadcrumbsProps): JSX.Element | null {\n if (props.items.length === 0) {\n return null\n }\n\n return (\n <nav class={cn('flex items-center gap-1.5 text-sm', props.class)} aria-label=\"Breadcrumb\">\n <For each={props.items}>\n {(item, idx) => (\n <>\n <Show when={idx() > 0}>\n <svg aria-hidden=\"true\" class=\"h-3.5 w-3.5 shrink-0 text-foreground/20\" viewBox=\"0 0 16 16\" fill=\"none\">\n <path d=\"M6 4l4 4-4 4\" stroke=\"currentColor\" stroke-width=\"1.5\" />\n </svg>\n </Show>\n <Show when={idx() === props.items.length - 1} fallback={\n <a href={item.href} class=\"truncate text-foreground/40 transition-colors hover:text-foreground/70\">{item.title}</a>\n }>\n <span class=\"truncate text-foreground/60\">{item.title}</span>\n </Show>\n </>\n )}\n </For>\n </nav>\n )\n}\n","/**\n * @module docsUtilities\n * @package @geenius/docs/shared\n * @description Hosts the framework-agnostic docs helpers used by the shared\n * barrel and provider implementations for search, slugging, breadcrumbs, table\n * of contents extraction, and default config resolution.\n */\n\nimport type {\n BreadcrumbItem,\n DocPage,\n DocSection,\n DocsConfig,\n SearchResult,\n TocItem,\n} from './types'\n\nfunction toTocLevel(level: number): TocItem['level'] {\n if (level === 2 || level === 3 || level === 4) {\n return level\n }\n\n return 4\n}\n\n/**\n * Extracts a nested table of contents from Markdown heading lines.\n *\n * @param mdxContent - Markdown or MDX content to parse.\n * @returns A nested heading tree containing only level 2 through 4 headings.\n */\nexport function extractToc(mdxContent: string): TocItem[] {\n const headingRegex = /^(#{2,4})\\s+(.+)$/gm\n const items: TocItem[] = []\n let match = headingRegex.exec(mdxContent)\n\n while (match !== null) {\n const text = match[2].trim()\n items.push({\n id: slugify(text),\n text,\n level: toTocLevel(match[1].length),\n children: [],\n })\n match = headingRegex.exec(mdxContent)\n }\n\n const nested: TocItem[] = []\n let currentH2: TocItem | null = null\n let currentH3: TocItem | null = null\n\n for (const item of items) {\n if (item.level === 2) {\n currentH2 = item\n currentH3 = null\n nested.push(item)\n continue\n }\n\n if (item.level === 3) {\n currentH3 = item\n if (currentH2) {\n currentH2.children.push(item)\n } else {\n nested.push(item)\n }\n continue\n }\n\n if (currentH3) {\n currentH3.children.push(item)\n } else if (currentH2) {\n currentH2.children.push(item)\n } else {\n nested.push(item)\n }\n }\n\n return nested\n}\n\n/**\n * Calculates approximate word count and reading time for page content.\n *\n * @param content - Markdown or MDX content to measure.\n * @returns Word count and reading-time metadata derived from the content.\n */\nexport function calcWordCount(\n content: string,\n): { wordCount: number; readingTime: number } {\n const stripped = content\n .replace(/```[\\s\\S]*?```/g, '')\n .replace(/`[^`]+`/g, '')\n .replace(/!\\[.*?\\]\\(.*?\\)/g, '')\n .replace(/\\[([^\\]]+)\\]\\(.*?\\)/g, '$1')\n .replace(/[#*_~>|-]/g, '')\n .trim()\n\n const words = stripped.split(/\\s+/).filter(Boolean)\n\n return {\n wordCount: words.length,\n readingTime: Math.max(1, Math.ceil(words.length / 225)),\n }\n}\n\n/**\n * Builds a breadcrumb trail for a page from a section tree.\n *\n * @param sections - Full section list used to resolve parent relationships.\n * @param sectionId - Identifier of the page's containing section.\n * @param slug - Page slug appended as the terminal breadcrumb.\n * @returns Breadcrumb items suitable for page-level navigation UI.\n */\nexport function buildBreadcrumbs(\n sections: DocSection[],\n sectionId: string,\n slug: string,\n): BreadcrumbItem[] {\n const crumbs: BreadcrumbItem[] = [{ title: 'Docs', href: '/docs' }]\n const sectionMap = new Map(sections.map((section) => [section.id, section]))\n const trail: DocSection[] = []\n let current = sectionMap.get(sectionId)\n\n while (current) {\n trail.unshift(current)\n current = current.parentId ? sectionMap.get(current.parentId) : undefined\n }\n\n for (const section of trail) {\n crumbs.push({ title: section.title, href: `/docs/${section.slug}` })\n }\n\n if (slug) {\n const parentSlug = trail[trail.length - 1]?.slug ?? ''\n crumbs.push({ title: slug, href: `/docs/${parentSlug}/${slug}` })\n }\n\n return crumbs\n}\n\n/**\n * Builds a full-text search index from published pages and their sections.\n *\n * @param pages - Page records to index.\n * @param sections - Section metadata used to enrich each result.\n * @returns Search index entries derived from the published pages.\n */\nexport function buildDocsIndex(\n pages: DocPage[],\n sections: DocSection[],\n): SearchResult[] {\n const sectionMap = new Map(sections.map((section) => [section.id, section]))\n\n return pages\n .filter((page) => page.status === 'published')\n .map((page) => {\n const section = sectionMap.get(page.sectionId)\n\n return {\n pageId: page.id,\n pageTitle: page.title,\n sectionTitle: section?.title ?? '',\n sectionSlug: section?.slug ?? '',\n slug: page.slug,\n highlight: page.excerpt ?? page.content.slice(0, 160),\n score: 0,\n tags: page.tags,\n }\n })\n}\n\n/**\n * Searches a shared search index and returns ranked matches.\n *\n * @param query - User-entered search query.\n * @param index - Search index entries to rank.\n * @returns Ranked search results limited to the top twenty entries.\n */\nexport function searchDocs(\n query: string,\n index: SearchResult[],\n): SearchResult[] {\n if (!query.trim()) {\n return []\n }\n\n const terms = query.toLowerCase().split(/\\s+/).filter(Boolean)\n\n return index\n .map((entry) => {\n let score = 0\n const titleLower = entry.pageTitle.toLowerCase()\n const highlightLower = entry.highlight.toLowerCase()\n const sectionLower = entry.sectionTitle.toLowerCase()\n const tagsLower = entry.tags.map((tag) => tag.toLowerCase())\n\n for (const term of terms) {\n if (titleLower.includes(term)) {\n score += 10\n }\n if (tagsLower.some((tag) => tag.includes(term))) {\n score += 5\n }\n if (sectionLower.includes(term)) {\n score += 3\n }\n if (highlightLower.includes(term)) {\n score += 2\n }\n }\n\n return { ...entry, score }\n })\n .filter((entry) => entry.score > 0)\n .sort((left, right) => right.score - left.score)\n .slice(0, 20)\n}\n\n/**\n * Creates a URL-safe slug from arbitrary text.\n *\n * @param title - Source text to slugify.\n * @returns A lower-case kebab-case slug.\n */\nexport function slugify(title: string): string {\n return title\n .toLowerCase()\n .replace(/[^a-z0-9]+/g, '-')\n .replace(/(^-|-$)/g, '')\n}\n\n/**\n * Produces a search-result snippet centred around a matching query.\n *\n * @param text - Source text used to build the snippet.\n * @param query - User-entered search query.\n * @param maxLen - Maximum snippet length.\n * @returns A trimmed snippet containing the best query match when available.\n */\nexport function highlightMatch(\n text: string,\n query: string,\n maxLen = 160,\n): string {\n if (!query.trim()) {\n return text.slice(0, maxLen)\n }\n\n const lowerText = text.toLowerCase()\n const lowerQuery = query.toLowerCase()\n const index = lowerText.indexOf(lowerQuery)\n\n if (index === -1) {\n return text.slice(0, maxLen)\n }\n\n const start = Math.max(0, index - 40)\n const end = Math.min(text.length, index + query.length + (maxLen - 80))\n let snippet = text.slice(start, end)\n\n if (start > 0) {\n snippet = `…${snippet}`\n }\n if (end < text.length) {\n snippet = `${snippet}…`\n }\n\n return snippet\n}\n\n/**\n * Baseline config used by the framework variants when no explicit config is provided.\n */\nexport const defaultDocsConfig: DocsConfig = {\n siteName: 'Docs',\n cmdKEnabled: true,\n showReadingTime: true,\n showLastEdited: true,\n versionsEnabled: false,\n defaultAccess: 'public',\n printModeEnabled: true,\n}\n","/**\n * @module solidDocPage\n * @package @geenius/docs/solidjs\n * @description Renders a docs page body with safe Markdown semantics, heading\n * anchors, and package-consistent typography. The component deliberately avoids\n * raw HTML injection so authored docs content stays within the Markdown runtime.\n */\n\n\nimport type { DocPage as DocPageType } from '@geenius/docs/shared'\nimport { slugify } from '@geenius/docs/shared'\nimport remarkGfm from 'remark-gfm'\nimport type { JSX } from 'solid-js'\nimport { Dynamic } from 'solid-js/web'\nimport { SolidMarkdown } from 'solid-markdown'\nimport { cn } from '../lib/utils'\n\ninterface DocPageProps {\n page: DocPageType\n class?: string\n}\n\nfunction getNodeText(children: unknown): string {\n if (Array.isArray(children)) {\n return children.map((entry) => getNodeText(entry)).join(' ')\n }\n\n if (typeof children === 'string' || typeof children === 'number') {\n return String(children)\n }\n\n return ''\n}\n\nfunction createHeading(\n Tag: 'h1' | 'h2' | 'h3' | 'h4',\n className: string,\n): (props: { children: JSX.Element }) => JSX.Element {\n return (props) => {\n const text = getNodeText(props.children)\n const id = slugify(text)\n\n return (\n <Dynamic component={Tag} id={id} class={cn(className)}>\n <a href={`#${id}`} class=\"transition-colors hover:text-primary\">\n {props.children}\n </a>\n </Dynamic>\n )\n }\n}\n\n/**\n * Renders a docs page body using safe Markdown rendering.\n *\n * @param props - Docs page record containing the Markdown body to render.\n * @returns The rendered page article.\n */\nexport function DocPage(props: DocPageProps): JSX.Element {\n return (\n <article class={cn('prose-custom max-w-none', props.class)}>\n <SolidMarkdown\n remarkPlugins={[remarkGfm]}\n components={{\n h1: createHeading('h1', 'scroll-mt-20 mt-8 mb-4 text-3xl font-bold'),\n h2: createHeading(\n 'h2',\n 'scroll-mt-20 mt-8 mb-3 border-b border-border/60 pb-2 text-2xl font-bold',\n ),\n h3: createHeading('h3', 'scroll-mt-20 mt-6 mb-2 text-xl font-semibold'),\n h4: createHeading('h4', 'scroll-mt-20 mt-4 mb-2 text-lg font-medium'),\n p: (componentProps) => (\n <p class=\"my-3 leading-relaxed text-foreground/80\">\n {componentProps.children}\n </p>\n ),\n a: (componentProps) => (\n <a\n href={componentProps.href}\n target={componentProps.href?.startsWith('/') ? undefined : '_blank'}\n rel={componentProps.href?.startsWith('/') ? undefined : 'noreferrer noopener'}\n class=\"underline underline-offset-2 transition-colors hover:text-primary\"\n >\n {componentProps.children}\n </a>\n ),\n code: (componentProps) =>\n componentProps.class ? (\n <code class={componentProps.class}>{componentProps.children}</code>\n ) : (\n <code class=\"rounded bg-foreground/10 px-1.5 py-0.5 text-sm text-primary\">\n {componentProps.children}\n </code>\n ),\n pre: (componentProps) => (\n <pre class=\"my-4 overflow-x-auto rounded-lg bg-background/80 p-4 text-sm leading-relaxed\">\n {componentProps.children}\n </pre>\n ),\n blockquote: (componentProps) => (\n <blockquote class=\"my-4 rounded-r-lg border-l-4 border-primary/40 bg-foreground/5 py-3 pl-4 pr-4 text-foreground/70 italic\">\n {componentProps.children}\n </blockquote>\n ),\n table: (componentProps) => (\n <div class=\"my-4 overflow-x-auto rounded-lg border border-border/60\">\n <table class=\"w-full text-sm\">{componentProps.children}</table>\n </div>\n ),\n th: (componentProps) => (\n <th class=\"border-b border-border/60 bg-foreground/5 px-4 py-2.5 text-left font-semibold\">\n {componentProps.children}\n </th>\n ),\n td: (componentProps) => (\n <td class=\"border-b border-border/40 px-4 py-2 text-foreground/70 last:border-none\">\n {componentProps.children}\n </td>\n ),\n }}\n >\n {props.page.content}\n </SolidMarkdown>\n </article>\n )\n}\n","/**\n * @module solidjsDocSearch\n * @package @geenius/docs/solidjs\n * @description Provides the SolidJS command-palette style docs search modal\n * with keyboard navigation, animated presentation, and highlighted matches.\n */\n\nimport type { SearchResult } from '@geenius/docs/shared'\nimport { highlightMatch } from '@geenius/docs/shared'\nimport { AnimatePresence, motion } from '@geenius/motion/solidjs'\nimport {\n createEffect,\n createMemo,\n createSignal,\n createUniqueId,\n For,\n type JSX,\n Show,\n} from 'solid-js'\nimport { cn } from '../lib/utils'\n\ninterface DocSearchProps {\n results: SearchResult[]\n query: string\n onQuery: (query: string) => void\n onSelect: (result: SearchResult) => void\n isOpen: boolean\n onClose: () => void\n class?: string\n}\n\nconst FOCUSABLE_SELECTOR =\n 'button, [href], input, select, textarea, [tabindex]:not([tabindex=\"-1\"])'\n\nfunction getActiveElement(): HTMLElement | null {\n return document.activeElement instanceof HTMLElement\n ? document.activeElement\n : null\n}\n\n/**\n * Renders the SolidJS docs search modal and result list.\n *\n * @param props - Search state, callbacks, and result entries to present.\n * @returns An animated search overlay for navigating docs content.\n */\nexport function DocSearch(props: DocSearchProps): JSX.Element | null {\n const [activeIndex, setActiveIndex] = createSignal(0)\n const dialogId = `docs-search-${createUniqueId()}`\n let inputRef: HTMLInputElement | undefined\n let dialogRef: HTMLDivElement | undefined\n let previousFocus: HTMLElement | null = null\n const resultRefs: Array<HTMLButtonElement | undefined> = []\n\n const activeResultId = createMemo(() => {\n const activeResult = props.results[activeIndex()]\n\n return activeResult ? `${dialogId}-result-${activeResult.pageId}` : undefined\n })\n\n createEffect(() => {\n if (!props.isOpen) {\n return\n }\n\n previousFocus = getActiveElement()\n inputRef?.focus()\n setActiveIndex(0)\n })\n\n createEffect(() => {\n props.query\n props.results\n setActiveIndex(0)\n })\n\n createEffect(() => {\n resultRefs[activeIndex()]?.scrollIntoView({ block: 'nearest' })\n })\n\n const handleKeyDown = (e: KeyboardEvent): void => {\n if (e.key === 'ArrowDown') {\n e.preventDefault()\n setActiveIndex((i) => Math.min(i + 1, props.results.length - 1))\n } else if (e.key === 'ArrowUp') {\n e.preventDefault()\n setActiveIndex((i) => Math.max(i - 1, 0))\n } else if (e.key === 'Enter' && props.results[activeIndex()]) {\n e.preventDefault()\n props.onSelect(props.results[activeIndex()])\n } else if (e.key === 'Escape') {\n e.preventDefault()\n props.onClose()\n previousFocus?.focus()\n } else if (e.key === 'Tab' && dialogRef) {\n const focusableElements = Array.from(\n dialogRef.querySelectorAll<HTMLElement>(FOCUSABLE_SELECTOR),\n ).filter((element) => !element.hasAttribute('disabled'))\n\n if (focusableElements.length === 0) {\n return\n }\n\n const firstElement = focusableElements[0]\n const lastElement = focusableElements[focusableElements.length - 1]\n\n if (e.shiftKey && document.activeElement === firstElement) {\n e.preventDefault()\n lastElement.focus()\n } else if (!e.shiftKey && document.activeElement === lastElement) {\n e.preventDefault()\n firstElement.focus()\n }\n }\n }\n\n if (!props.isOpen) {\n return null\n }\n\n return (\n <AnimatePresence>\n <div class={cn('fixed inset-0 z-50 flex items-start justify-center pt-[15vh]', props.class)}>\n <motion.button\n type=\"button\"\n aria-label=\"Close search\"\n initial={{ opacity: 0 }}\n animate={{ opacity: 1 }}\n exit={{ opacity: 0 }}\n class=\"fixed inset-0 bg-background/80 backdrop-blur-md\"\n onClick={() => {\n props.onClose()\n previousFocus?.focus()\n }}\n />\n <motion.div\n ref={dialogRef}\n initial={{ opacity: 0, scale: 0.95, y: -20 }}\n animate={{ opacity: 1, scale: 1, y: 0 }}\n exit={{ opacity: 0, scale: 0.95, y: -20 }}\n transition={{ type: 'spring', damping: 25, stiffness: 250 }}\n class=\"relative z-10 w-full max-w-xl overflow-hidden rounded-2xl border border-border/60 bg-card/40 backdrop-blur-3xl shadow-2xl ring-1 ring-border/40\"\n role=\"dialog\"\n aria-modal=\"true\"\n aria-labelledby={`${dialogId}-title`}\n onKeyDown={handleKeyDown}\n onClick={(e: MouseEvent) => e.stopPropagation()}\n >\n <div class=\"flex items-center gap-3 border-b border-border/60 px-5 py-4 bg-foreground/5\">\n <h2 id={`${dialogId}-title`} class=\"sr-only\">\n Search documentation\n </h2>\n <svg aria-hidden=\"true\" class=\"h-5 w-5 shrink-0 text-foreground/40\" viewBox=\"0 0 20 20\" fill=\"currentColor\">\n <path fill-rule=\"evenodd\" d=\"M9 3.5a5.5 5.5 0 100 11 5.5 5.5 0 000-11zM2 9a7 7 0 1112.452 4.391l3.328 3.329a.75.75 0 11-1.06 1.06l-3.329-3.328A7 7 0 012 9z\" clip-rule=\"evenodd\" />\n </svg>\n <input\n ref={inputRef}\n type=\"search\"\n value={props.query}\n onInput={(e) => props.onQuery(e.currentTarget.value)}\n placeholder=\"Search documentation…\"\n aria-label=\"Search documentation\"\n aria-controls={`${dialogId}-results`}\n aria-activedescendant={activeResultId()}\n class=\"flex-1 bg-transparent text-sm text-foreground placeholder:text-muted-foreground outline-none focus-visible:ring-0\"\n />\n <kbd class=\"rounded border border-border/60 bg-foreground/5 px-1.5 py-0.5 text-[11px] text-foreground/30 font-medium\">ESC</kbd>\n </div>\n \n <div\n id={`${dialogId}-results`}\n class=\"max-h-80 overflow-y-auto p-2\"\n role=\"listbox\"\n >\n <AnimatePresence>\n <Show when={props.results.length === 0 && props.query.trim()}>\n <motion.div\n initial={{ opacity: 0 }}\n animate={{ opacity: 1 }}\n exit={{ opacity: 0 }}\n class=\"flex flex-col items-center py-10 text-center text-foreground/30\"\n >\n <svg aria-hidden=\"true\" class=\"mb-3 h-10 w-10 opacity-50\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\">\n <circle cx=\"11\" cy=\"11\" r=\"8\" stroke-width=\"1.5\" />\n <path d=\"M21 21l-4.35-4.35\" stroke-width=\"1.5\" />\n </svg>\n <p class=\"text-sm\">No results for \"{props.query}\"</p>\n <p class=\"mt-1 text-xs opacity-60\">Try different keywords</p>\n </motion.div>\n </Show>\n\n <Show when={props.results.length === 0 && !props.query.trim()}>\n <motion.div\n initial={{ opacity: 0 }}\n animate={{ opacity: 1 }}\n exit={{ opacity: 0 }}\n class=\"py-8 text-center text-sm text-foreground/30\"\n >\n Start typing to search…\n </motion.div>\n </Show>\n </AnimatePresence>\n\n <For each={props.results}>\n {(result, idx) => (\n <button\n ref={(element) => {\n resultRefs[idx()] = element\n }}\n id={`${dialogId}-result-${result.pageId}`}\n type=\"button\"\n role=\"option\"\n aria-selected={idx() === activeIndex()}\n onMouseEnter={() => setActiveIndex(idx())}\n onClick={() => props.onSelect(result)}\n class={cn(\n 'group relative my-0.5 flex w-full flex-col gap-1 rounded-xl px-4 py-3 text-left transition-colors focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring/40',\n idx() === activeIndex()\n ? 'bg-primary/15 text-foreground ring-1 ring-primary/30'\n : 'text-muted-foreground hover:bg-muted hover:text-foreground',\n )}\n >\n <Show when={idx() === activeIndex()}>\n <motion.div\n layoutId=\"search-active-bg\"\n class=\"absolute inset-0 rounded-xl bg-primary/10\"\n transition={{ type: 'spring', stiffness: 300, damping: 30 }}\n />\n </Show>\n <div class=\"relative z-10 flex items-center gap-2\">\n <span class=\"rounded bg-primary/20 px-1.5 py-0.5 text-[10px] font-medium text-primary\">{result.sectionTitle}</span>\n <span class=\"text-sm font-medium\">{result.pageTitle}</span>\n </div>\n <p class=\"relative z-10 truncate text-xs text-foreground/40\">\n {highlightMatch(result.highlight, props.query)}\n </p>\n <Show when={result.tags.length > 0}>\n <div class=\"relative z-10 flex gap-1 mt-1\">\n <For each={result.tags.slice(0, 3)}>\n {(tag) => <span class=\"rounded border border-border bg-muted px-1.5 py-0.5 text-[10px] text-muted-foreground\">{tag}</span>}\n </For>\n </div>\n </Show>\n </button>\n )}\n </For>\n </div>\n <div class=\"flex items-center gap-4 border-t border-border/60 px-5 py-2.5 text-[11px] text-foreground/30 bg-background/70\">\n <span class=\"flex items-center gap-1\"><kbd class=\"rounded border border-border/60 bg-foreground/5 px-1 pb-0.5 text-[10px]\">↑</kbd> <kbd class=\"rounded border border-border/60 bg-foreground/5 px-1 pb-0.5 text-[10px]\">↓</kbd> navigate</span>\n <span class=\"flex items-center gap-1\"><kbd class=\"rounded border border-border/60 bg-foreground/5 px-1 pb-0.5 text-[10px]\">↵</kbd> select</span>\n <span class=\"flex items-center gap-1\"><kbd class=\"rounded border border-border/60 bg-foreground/5 px-1 pb-0.5 text-[10px]\">esc</kbd> close</span>\n </div>\n </motion.div>\n </div>\n </AnimatePresence>\n )\n}\n","/**\n * @module solidjsDocSidebar\n * @package @geenius/docs/solidjs\n * @description Renders the hierarchical SolidJS docs sidebar with expandable\n * sections, nested pages, and the active-page highlight state.\n */\n\nimport type { DocPage, DocSection } from '@geenius/docs/shared'\nimport { AnimatePresence, motion } from '@geenius/motion/solidjs'\nimport { createSignal, For, type JSX, Show } from 'solid-js'\nimport { cn } from '../lib/utils'\nimport type { DocsSectionWithPages } from '../types'\n\ninterface DocSidebarProps {\n sections: DocsSectionWithPages[]\n currentPageId?: string\n onNavigate: (page: DocPage, section: DocSection) => void\n class?: string\n}\n\n/**\n * Renders the docs section tree for sidebar navigation.\n *\n * @param props - Section hierarchy, active page id, and page navigation handler.\n * @returns A nested docs sidebar with expandable sections and pages.\n */\nexport function DocSidebar(props: DocSidebarProps): JSX.Element {\n const [expandedIds, setExpandedIds] = createSignal<Set<string>>(new Set())\n\n const toggle = (id: string): void => {\n setExpandedIds((prev) => {\n const next = new Set(prev)\n if (next.has(id)) next.delete(id)\n else next.add(id)\n return next\n })\n }\n\n const topLevel = (): DocsSectionWithPages[] =>\n props.sections.filter((s) => !s.parentId)\n const childrenOf = (\n parentId: string\n ): DocsSectionWithPages[] =>\n props.sections.filter((s) => s.parentId === parentId)\n\n const renderSection = (\n section: DocsSectionWithPages,\n depth: number\n ): JSX.Element => {\n const children = () => childrenOf(section.id)\n const isExpanded = () => expandedIds().has(section.id)\n const pages = () => section.pages ?? []\n const hasContent = () => children().length > 0 || pages().length > 0\n\n return (\n <div style={{ 'padding-left': `${depth * 12}px` }} class=\"mb-1\">\n <motion.button\n type=\"button\"\n onClick={() => toggle(section.id)}\n aria-expanded={hasContent() ? isExpanded() : undefined}\n class={cn(\n 'flex w-full items-center gap-2 rounded-xl px-3 py-2 text-left text-sm font-medium transition-colors focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring/40',\n isExpanded()\n ? 'bg-muted text-foreground'\n : 'text-foreground hover:bg-muted/70',\n )}\n whileHover={{ x: 2 }}\n whileTap={{ scale: 0.98 }}\n >\n <Show when={section.icon}>\n <span class=\"text-base\">{section.icon}</span>\n </Show>\n <span class=\"flex-1 truncate\">{section.title}</span>\n <Show when={section.pageCount != null}>\n <span class=\"text-xs tabular-nums opacity-50 text-muted-foreground\">{section.pageCount}</span>\n </Show>\n <Show when={hasContent()}>\n <motion.svg\n animate={{ rotate: isExpanded() ? 90 : 0 }}\n class=\"h-3.5 w-3.5 shrink-0 text-muted-foreground\"\n viewBox=\"0 0 16 16\"\n fill=\"currentColor\"\n >\n <path d=\"M6 4l4 4-4 4\" stroke=\"currentColor\" stroke-width=\"2\" fill=\"none\" />\n </motion.svg>\n </Show>\n </motion.button>\n\n <AnimatePresence>\n <Show when={isExpanded()}>\n <motion.div\n initial={{ height: 0, opacity: 0 }}\n animate={{ height: 'auto', opacity: 1 }}\n exit={{ height: 0, opacity: 0 }}\n transition={{ duration: 0.2, ease: 'easeInOut' }}\n class=\"ml-2 overflow-hidden border-l border-border pl-2\"\n >\n <For each={pages()}>\n {(page) => (\n <motion.button\n type=\"button\"\n onClick={() => props.onNavigate(page, section)}\n whileHover={{ x: 2 }}\n whileTap={{ scale: 0.98 }}\n class={cn(\n 'my-0.5 flex w-full items-center gap-2 rounded-lg px-3 py-1.5 text-left text-sm transition-all focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring/40',\n props.currentPageId === page.id\n ? 'bg-primary/10 font-semibold text-primary ring-1 ring-primary/20'\n : 'text-muted-foreground hover:bg-muted hover:text-foreground',\n )}\n >\n <span class=\"truncate\">{page.title}</span>\n </motion.button>\n )}\n </For>\n <For each={children()}>\n {(child) => renderSection(child, depth + 1)}\n </For>\n </motion.div>\n </Show>\n </AnimatePresence>\n </div>\n )\n }\n\n return (\n <nav class={cn('flex flex-col gap-1 py-4', props.class)}>\n <div class=\"px-4 pb-3 text-xs font-bold uppercase tracking-widest text-muted-foreground\">\n Documentation\n </div>\n <For each={topLevel()}>\n {(s) => renderSection(s, 0)}\n </For>\n </nav>\n )\n}\n","/**\n * @module solidjsTableOfContents\n * @package @geenius/docs/solidjs\n * @description Renders the SolidJS docs table of contents with nested anchor\n * links and animated active-heading highlighting.\n */\n\nimport type { TocItem } from '@geenius/docs/shared'\nimport { AnimatePresence, motion } from '@geenius/motion/solidjs'\nimport { For, type JSX } from 'solid-js'\nimport { cn } from '../lib/utils'\n\ninterface TableOfContentsProps {\n toc: TocItem[]\n activeId?: string\n class?: string\n}\n\nfunction TocLink(props: {\n item: TocItem\n activeId?: string\n depth?: number\n}): JSX.Element {\n const depth = () => props.depth ?? 0\n const isActive = () => props.activeId === props.item.id\n\n return (\n <>\n <motion.a\n href={`#${props.item.id}`}\n class={cn(\n 'block truncate border-l-2 py-1 text-[13px] transition-all relative',\n isActive()\n ? 'border-primary text-primary font-medium'\n : 'border-transparent text-foreground/40 hover:text-foreground/80 hover:border-border/80',\n )}\n style={{ 'padding-left': `${12 + depth() * 12}px` }}\n whileHover={{ x: 2 }}\n whileTap={{ scale: 0.98 }}\n layout\n >\n {props.item.text}\n </motion.a>\n <For each={props.item.children}>\n {(child) => <TocLink item={child} activeId={props.activeId} depth={depth() + 1} />}\n </For>\n </>\n )\n}\n\n/**\n * Renders the page-local table of contents rail.\n *\n * @param props - Structured heading tree and current active heading id.\n * @returns A nested table of contents for the active docs page.\n */\nexport function TableOfContents(props: TableOfContentsProps): JSX.Element | null {\n if (props.toc.length === 0) {\n return null\n }\n\n return (\n <nav class={cn('sticky top-24', props.class)}>\n <h4 class=\"mb-3 text-xs font-semibold uppercase tracking-widest text-foreground/40\">\n On this page\n </h4>\n <motion.div class=\"flex flex-col relative\" layoutRoot>\n <AnimatePresence>\n <For each={props.toc}>\n {(item) => (\n <motion.div initial={{ opacity: 0, x: -10 }} animate={{ opacity: 1, x: 0 }}>\n <TocLink item={item} activeId={props.activeId} />\n </motion.div>\n )}\n </For>\n </AnimatePresence>\n </motion.div>\n </nav>\n )\n}\n","/**\n * @module solidjsDocsLayout\n * @package @geenius/docs/solidjs\n * @description Composes the SolidJS docs chrome, including sidebar,\n * breadcrumbs, main content region, and table of contents rail.\n */\n\nimport type { BreadcrumbItem, DocPage, DocSection, TocItem } from '@geenius/docs/shared'\nimport { AnimatePresence, motion } from '@geenius/motion/solidjs'\nimport { children, type JSX, Show } from 'solid-js'\nimport { cn } from '../lib/utils'\nimport type { DocsSectionWithPages } from '../types'\nimport { Breadcrumbs } from './Breadcrumbs'\nimport { DocSidebar } from './DocSidebar'\nimport { TableOfContents } from './TableOfContents'\n\ninterface DocsLayoutProps {\n sections: DocsSectionWithPages[]\n currentPage?: DocPage\n toc?: TocItem[]\n activeHeadingId?: string\n breadcrumbs?: BreadcrumbItem[]\n currentPageId?: string\n onNavigate: (page: DocPage, section: DocSection) => void\n children: JSX.Element\n class?: string\n}\n\n/**\n * Renders the shared SolidJS docs page shell.\n *\n * @param props - Section tree, active-page metadata, and page content.\n * @returns The full docs application layout for a single page view.\n */\nexport function DocsLayout(props: DocsLayoutProps): JSX.Element {\n const resolvedChildren = children(() => props.children)\n const breadcrumbs = () => props.breadcrumbs ?? []\n const toc = () => props.toc ?? []\n\n return (\n <div class={cn('flex min-h-screen bg-background text-foreground', props.class)}>\n <aside class=\"sticky top-0 hidden h-screen w-[260px] shrink-0 overflow-y-auto border-r border-border bg-card lg:block\">\n <DocSidebar\n sections={props.sections}\n currentPageId={props.currentPageId}\n onNavigate={props.onNavigate}\n />\n </aside>\n\n <main class=\"flex-1 overflow-hidden\">\n <div class=\"mx-auto flex max-w-6xl gap-8 px-6 py-8 lg:px-10\">\n <motion.div\n class=\"min-w-0 flex-1\"\n initial={{ opacity: 0, y: 10 }}\n animate={{ opacity: 1, y: 0 }}\n transition={{ type: 'spring', delay: 0.1 }}\n >\n <Show when={breadcrumbs().length > 0}>\n <div class=\"mb-6\">\n <Breadcrumbs items={breadcrumbs()} />\n </div>\n </Show>\n \n <AnimatePresence>\n <Show when={props.currentPageId}>\n <motion.div \n initial={{ opacity: 0, x: -10 }}\n animate={{ opacity: 1, x: 0 }}\n exit={{ opacity: 0, x: 10 }}\n transition={{ type: 'spring', damping: 25, stiffness: 200 }}\n >\n {resolvedChildren()}\n </motion.div>\n </Show>\n </AnimatePresence>\n </motion.div>\n\n <Show when={toc().length > 0}>\n <motion.aside\n class=\"hidden w-[220px] shrink-0 xl:block\"\n initial={{ opacity: 0, x: 10 }}\n animate={{ opacity: 1, x: 0 }}\n transition={{ delay: 0.2 }}\n >\n <TableOfContents toc={toc()} activeId={props.activeHeadingId} />\n </motion.aside>\n </Show>\n </div>\n </main>\n </div>\n )\n}\n","/**\n * @module solidjsEditButton\n * @package @geenius/docs/solidjs\n * @description Renders the external edit-source affordance for the SolidJS\n * docs variant when an upstream repository edit URL is configured.\n */\n\nimport type { JSX } from 'solid-js'\nimport { cn } from '../lib/utils'\n\ninterface EditButtonProps {\n pageSlug: string\n editUrl?: string\n class?: string\n}\n\n/**\n * Renders an external link for editing the current docs page source.\n *\n * @param props - Page slug and optional base repository edit URL.\n * @returns An edit link when editing is enabled for the current page.\n */\nexport function EditButton(props: EditButtonProps): JSX.Element | null {\n if (!props.editUrl) {\n return null\n }\n\n return (\n <a\n href={`${props.editUrl.replace(/\\/$/, '')}/${props.pageSlug}.mdx`}\n target=\"_blank\"\n rel=\"noopener noreferrer\"\n class={cn(\n 'inline-flex items-center gap-1.5 rounded-lg border border-border/60 px-3 py-1.5 text-xs text-foreground/40 transition-colors hover:border-border/80 hover:text-foreground/60',\n props.class,\n )}\n >\n <svg aria-hidden=\"true\" class=\"h-3.5 w-3.5\" viewBox=\"0 0 16 16\" fill=\"none\" stroke=\"currentColor\">\n <path d=\"M11.5 1.5l3 3-9 9H2.5v-3l9-9z\" stroke-width=\"1.5\" stroke-linejoin=\"round\" />\n </svg>\n Edit this page\n </a>\n )\n}\n","/**\n * @module solidjsPageNavigation\n * @package @geenius/docs/solidjs\n * @description Renders previous and next page affordances for the SolidJS\n * docs variant so readers can move linearly through the content graph.\n */\n\nimport { type JSX, Show } from 'solid-js'\nimport { cn } from '../lib/utils'\n\ninterface PageNavigationProps {\n prev?: { title: string; href: string }\n next?: { title: string; href: string }\n class?: string\n}\n\n/**\n * Renders previous and next page links for the current docs page.\n *\n * @param props - Optional previous and next page descriptors.\n * @returns Navigation cards when adjacent pages are available.\n */\nexport function PageNavigation(props: PageNavigationProps): JSX.Element | null {\n if (!props.prev && !props.next) {\n return null\n }\n\n return (\n <div class={cn('mt-12 flex items-stretch gap-4 border-t border-border/60 pt-8', props.class)}>\n <Show when={props.prev} fallback={<div class=\"flex-1\" />}>\n {(prev) => (\n <a href={prev().href} class=\"group flex flex-1 flex-col rounded-xl border border-border/60 p-4 transition-all hover:border-primary/40 hover:bg-foreground/5\">\n <span class=\"text-xs text-foreground/40 group-hover:text-primary transition-colors\">← Previous</span>\n <span class=\"mt-1 text-sm font-medium text-foreground/80 group-hover:text-foreground transition-colors truncate\">{prev().title}</span>\n </a>\n )}\n </Show>\n <Show when={props.next} fallback={<div class=\"flex-1\" />}>\n {(next) => (\n <a href={next().href} class=\"group flex flex-1 flex-col items-end rounded-xl border border-border/60 p-4 text-right transition-all hover:border-primary/40 hover:bg-foreground/5\">\n <span class=\"text-xs text-foreground/40 group-hover:text-primary transition-colors\">Next →</span>\n <span class=\"mt-1 text-sm font-medium text-foreground/80 group-hover:text-foreground transition-colors truncate\">{next().title}</span>\n </a>\n )}\n </Show>\n </div>\n )\n}\n","/**\n * @module solidjsVersionSelector\n * @package @geenius/docs/solidjs\n * @description Presents the SolidJS docs version switcher for packages that\n * expose multiple documentation versions in the same surface.\n */\n\nimport { createSignal, createUniqueId, For, type JSX, Show } from 'solid-js'\nimport { cn } from '../lib/utils'\n\ninterface VersionSelectorProps {\n versions: string[]\n current: string\n onSelect: (version: string) => void\n class?: string\n}\n\n/**\n * Renders a version picker when more than one docs version is available.\n *\n * @param props - Available versions, current version, and selection callback.\n * @returns A dropdown-style version switcher for the docs surface.\n */\nexport function VersionSelector(props: VersionSelectorProps): JSX.Element | null {\n if (props.versions.length <= 1) {\n return null\n }\n\n const [isOpen, setIsOpen] = createSignal(false)\n const menuId = createUniqueId()\n\n return (\n <div class={cn('relative', props.class)}>\n <button\n type=\"button\"\n onClick={() => setIsOpen(!isOpen())}\n aria-expanded={isOpen()}\n aria-haspopup=\"listbox\"\n aria-controls={menuId}\n class={cn(\n 'flex items-center gap-1.5 rounded-lg border border-border bg-card/60 px-3 py-1.5 text-xs font-medium text-muted-foreground transition-colors focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring/40',\n isOpen() && 'border-primary/30 text-foreground',\n )}\n >\n <span>v{props.current}</span>\n <svg\n aria-hidden=\"true\"\n class={cn('h-3 w-3 transition-transform', isOpen() && 'rotate-180')}\n viewBox=\"0 0 16 16\"\n >\n <path d=\"M4 6l4 4 4-4\" stroke=\"currentColor\" stroke-width=\"2\" fill=\"none\" />\n </svg>\n </button>\n <Show when={isOpen()}>\n <div\n id={menuId}\n role=\"listbox\"\n class=\"absolute right-0 top-full z-20 mt-1 min-w-[120px] overflow-hidden rounded-lg border border-border bg-popover shadow-xl\"\n onKeyDown={(event) => {\n if (event.key === 'Escape') {\n event.preventDefault()\n setIsOpen(false)\n }\n }}\n >\n <For each={props.versions}>\n {(v) => (\n <button\n type=\"button\"\n role=\"option\"\n aria-selected={v === props.current}\n onClick={() => {\n props.onSelect(v)\n setIsOpen(false)\n }}\n class={cn(\n 'flex w-full items-center px-3 py-2 text-xs transition-colors focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-inset focus-visible:ring-ring/40',\n v === props.current\n ? 'bg-primary/15 text-primary'\n : 'text-muted-foreground hover:bg-muted hover:text-foreground',\n )}\n >\n v{v}\n {v === props.current && (\n <span class=\"ml-auto text-[10px]\">✓</span>\n )}\n </button>\n )}\n </For>\n </div>\n </Show>\n </div>\n )\n}\n","/**\n * @module solidjsCreateDocSearch\n * @package @geenius/docs/solidjs\n * @description Creates the SolidJS docs search state machine, including the\n * query signal, debounced execution, and normalized result lifecycle.\n */\n\nimport type { SearchResult } from '@geenius/docs/shared'\nimport { type Accessor, createEffect, createSignal, onCleanup } from 'solid-js'\n\n/**\n * Search state returned by the SolidJS docs search primitive.\n *\n * @property results - Accessor returning the current ranked search results.\n * @property isSearching - Accessor describing whether a search request is pending.\n * @property query - Accessor returning the active search query.\n * @property setQuery - Updates the active search query.\n * @property clearSearch - Resets the query, results, and loading state.\n */\nexport interface DocSearchState {\n results: Accessor<SearchResult[]>\n isSearching: Accessor<boolean>\n query: Accessor<string>\n setQuery: (query: string) => void\n clearSearch: () => void\n}\n\n/**\n * Creates debounced docs search state for SolidJS consumers.\n *\n * @param searchFn - Search implementation returning matching docs results.\n * @param debounceMs - Delay before search execution after each query update.\n * @returns Signals and actions for driving a docs search experience.\n */\nexport function createDocSearch(\n searchFn: (query: string) => SearchResult[] | Promise<SearchResult[]>,\n debounceMs = 250,\n): DocSearchState {\n const [query, setQuery] = createSignal('')\n const [results, setResults] = createSignal<SearchResult[]>([])\n const [isSearching, setIsSearching] = createSignal(false)\n\n createEffect(() => {\n const q = query()\n if (!q.trim()) {\n setResults([])\n setIsSearching(false)\n return\n }\n\n setIsSearching(true)\n const timer = setTimeout(async () => {\n try {\n const r = await searchFn(q)\n setResults(r)\n } catch {\n setResults([])\n } finally {\n setIsSearching(false)\n }\n }, debounceMs)\n\n onCleanup(() => clearTimeout(timer))\n })\n\n const clearSearch = (): void => {\n setQuery('')\n setResults([])\n setIsSearching(false)\n }\n\n const handleSetQuery = (nextQuery: string): void => {\n setQuery(nextQuery)\n }\n\n return { results, isSearching, query, setQuery: handleSetQuery, clearSearch }\n}\n","/**\n * @module solidjsDocSearchPage\n * @package @geenius/docs/solidjs\n * @description Renders the dedicated SolidJS docs search page, including\n * query input, derived search results, and empty or loading states.\n */\n\nimport type { DocPage, DocSection, SearchResult } from '@geenius/docs/shared'\nimport { buildDocsIndex, highlightMatch, searchDocs } from '@geenius/docs/shared'\nimport { type Accessor, createMemo, For, type JSX, Show } from 'solid-js'\n\nimport { cn } from '../lib/utils'\nimport { createDocSearch } from '../primitives/createDocSearch'\n\ninterface DocSearchPageProps {\n tree: Accessor<(DocSection & { pages: DocPage[]; pageCount: number })[] | undefined>\n onSelectPage?: (page: DocPage, section: DocSection) => void\n class?: string\n}\n\n/**\n * Renders a full-page docs search experience for SolidJS consumers.\n *\n * @param props - Docs tree accessor and page selection callback.\n * @returns The search page with loading, empty, and result states.\n */\nexport function DocSearchPage(props: DocSearchPageProps): JSX.Element {\n const sections = createMemo(() => props.tree() ?? [])\n const flatPages = createMemo(() => sections().flatMap((s) => s.pages ?? []))\n\n const searchFn = (q: string): SearchResult[] => {\n const index = buildDocsIndex(flatPages(), sections())\n return searchDocs(q, index)\n }\n\n const { results, isSearching, query, setQuery } = createDocSearch(searchFn)\n\n return (\n <Show\n when={props.tree() !== undefined}\n fallback={\n <div class={cn('min-h-screen bg-background px-6 py-16', props.class)}>\n <div class=\"mx-auto max-w-2xl\">\n <div class=\"mb-8 h-12 animate-pulse rounded-xl bg-foreground/5\" />\n </div>\n </div>\n }\n >\n <div class={cn('min-h-screen bg-background text-foreground', props.class)}>\n <div class=\"mx-auto max-w-2xl px-6 py-16\">\n <h1 class=\"mb-8 text-2xl font-bold\">Search Documentation</h1>\n <div class=\"relative mb-8\">\n <input\n type=\"text\"\n value={query()}\n onInput={(e) => setQuery(e.currentTarget.value)}\n placeholder=\"Type to search…\"\n autofocus\n aria-label=\"Search documentation\"\n class=\"w-full rounded-xl border border-border bg-card/60 py-3.5 pl-12 pr-4 text-sm text-foreground placeholder:text-muted-foreground outline-none focus:border-primary/40 focus:ring-2 focus:ring-ring/20\"\n />\n <Show when={isSearching()}>\n <div class=\"absolute right-4 top-1/2 -translate-y-1/2\">\n <div class=\"h-4 w-4 animate-spin rounded-full border-2 border-border/60 border-t-primary\" />\n </div>\n </Show>\n </div>\n <Show when={results().length > 0}>\n <div class=\"space-y-2\">\n <For each={results()}>\n {(result) => {\n const section = () => sections().find(s => s.slug === result.sectionSlug)\n const page = () => flatPages().find(p => p.id === result.pageId)\n return (\n <button\n type=\"button\"\n onClick={() => {\n const p = page()\n const s = section()\n if (p && s && props.onSelectPage) props.onSelectPage(p, s)\n }}\n class=\"flex w-full flex-col gap-1.5 rounded-xl border border-border bg-card/40 p-4 text-left transition-all hover:border-primary/20 hover:bg-card\">\n <div class=\"flex items-center gap-2\">\n <span class=\"rounded bg-primary/20 px-2 py-0.5 text-[10px] font-medium text-primary\">{result.sectionTitle}</span>\n <span class=\"text-sm font-medium text-foreground/90\">{result.pageTitle}</span>\n </div>\n <p class=\"text-xs leading-relaxed text-foreground/40\">{highlightMatch(result.highlight, query())}</p>\n </button>\n )\n }}\n </For>\n </div>\n </Show>\n <Show when={query().trim() && results().length === 0 && !isSearching()}>\n <div class=\"flex flex-col items-center py-16 text-center\">\n <div class=\"mb-4 text-5xl opacity-30\">🔍</div>\n <h3 class=\"text-lg font-medium text-foreground/60\">No results found</h3>\n </div>\n </Show>\n <Show when={!query().trim()}>\n <div class=\"flex flex-col items-center py-16 text-center\">\n <div class=\"mb-4 text-5xl opacity-20\">📖</div>\n <p class=\"text-sm text-foreground/30\">Start typing to search across all documentation</p>\n </div>\n </Show>\n </div>\n </div>\n </Show>\n )\n}\n","/**\n * @module solidjsDocsAdminPage\n * @package @geenius/docs/solidjs\n * @description Renders the SolidJS docs administration surface for creating,\n * selecting, publishing, archiving, and deleting sections and pages.\n */\n\nimport type { DocAccess, DocPage, DocSection } from '@geenius/docs/shared'\nimport type { Accessor } from 'solid-js'\nimport { createMemo, createSignal, For, type JSX, Show } from 'solid-js'\n\nimport { cn } from '../lib/utils'\nimport type { DocsAdminActions } from '../primitives/createDocsAdmin'\n\ninterface DocsAdminPageProps {\n tree: Accessor<(DocSection & { pages: DocPage[]; pageCount: number })[] | undefined>\n allPages?: DocPage[]\n admin: DocsAdminActions\n class?: string\n}\n\ninterface SectionForm {\n title: string\n slug: string\n description: string\n icon: string\n access: DocAccess\n}\n\ninterface PageForm {\n title: string\n slug: string\n content: string\n access: DocAccess\n tags: string\n}\n\nfunction toDocAccess(value: string): DocAccess {\n if (value === 'public' || value === 'team' || value === 'admin') {\n return value\n }\n\n return 'team'\n}\n\nfunction initialSectionForm(): SectionForm {\n return {\n title: '',\n slug: '',\n description: '',\n icon: '',\n access: 'team',\n }\n}\n\nfunction initialPageForm(): PageForm {\n return {\n title: '',\n slug: '',\n content: '',\n access: 'team',\n tags: '',\n }\n}\n\n/**\n * Renders the docs administration dashboard for SolidJS consumers.\n *\n * @param props - Docs tree accessors, page collections, and admin actions.\n * @returns The docs admin page with section and page management tools.\n */\nexport function DocsAdminPage(props: DocsAdminPageProps): JSX.Element {\n const sections = createMemo(() => props.tree?.() ?? [])\n const [selectedId, setSelectedId] = createSignal<string | null>(null)\n const [showSF, setShowSF] = createSignal(false)\n const [showPF, setShowPF] = createSignal(false)\n const [sectionForm, setSectionForm] = createSignal<SectionForm>(initialSectionForm())\n const [pageForm, setPageForm] = createSignal<PageForm>(initialPageForm())\n\n const selectedSection = createMemo(() => sections().find(s => s.id === selectedId()))\n const sectionPages = createMemo(() => {\n const sec = selectedSection()\n if (!sec) return []\n if (props.allPages) return props.allPages.filter(p => p.sectionId === selectedId())\n return sec.pages ?? []\n })\n const canCreateSection = createMemo(\n () => sectionForm().title.trim().length > 0 && sectionForm().slug.trim().length > 0,\n )\n const canCreatePage = createMemo(\n () =>\n pageForm().title.trim().length > 0 &&\n pageForm().slug.trim().length > 0 &&\n pageForm().content.trim().length > 0,\n )\n\n return (\n <Show\n when={props.tree?.() !== undefined}\n fallback={\n <div class={cn('min-h-screen bg-background px-6 py-12', props.class)}>\n <div class=\"mx-auto max-w-6xl\">\n <div class=\"mb-8 h-10 w-48 animate-pulse rounded bg-muted/60\" />\n </div>\n </div>\n }\n >\n <div class={cn('min-h-screen bg-background text-foreground', props.class)}>\n <div class=\"mx-auto max-w-6xl px-6 py-12\">\n <h1 class=\"mb-8 text-2xl font-bold\">Docs Admin</h1>\n <div class=\"grid gap-6 md:grid-cols-2\">\n <div class=\"rounded-xl border border-border bg-card/40 p-5\">\n <div class=\"mb-4 flex items-center justify-between\">\n <h2 class=\"text-lg font-semibold text-foreground\">Sections</h2>\n <button type=\"button\" onClick={() => setShowSF(!showSF())} class=\"rounded-lg bg-primary px-3 py-1.5 text-xs font-medium hover:bg-primary/90\">+ Add</button>\n </div>\n <Show when={showSF()}>\n <div class=\"mb-4 space-y-2 rounded-lg border border-border bg-card/60 p-4\">\n <label class=\"block space-y-1\" for=\"docs-admin-section-title\">\n <span class=\"text-xs font-medium text-muted-foreground\">Title</span>\n <input\n id=\"docs-admin-section-title\"\n type=\"text\"\n placeholder=\"Getting Started\"\n value={sectionForm().title}\n onInput={e => setSectionForm({...sectionForm(), title: e.currentTarget.value})}\n class=\"w-full rounded-lg border border-border bg-card/70 px-3 py-2 text-sm outline-none focus:border-primary/40 focus:ring-2 focus:ring-ring/20\"\n />\n </label>\n <label class=\"block space-y-1\" for=\"docs-admin-section-slug\">\n <span class=\"text-xs font-medium text-muted-foreground\">Slug</span>\n <input\n id=\"docs-admin-section-slug\"\n type=\"text\"\n placeholder=\"getting-started\"\n value={sectionForm().slug}\n onInput={e => setSectionForm({...sectionForm(), slug: e.currentTarget.value})}\n class=\"w-full rounded-lg border border-border bg-card/70 px-3 py-2 text-sm outline-none focus:border-primary/40 focus:ring-2 focus:ring-ring/20\"\n />\n </label>\n <label class=\"block space-y-1\" for=\"docs-admin-section-icon\">\n <span class=\"text-xs font-medium text-muted-foreground\">Icon</span>\n <input\n id=\"docs-admin-section-icon\"\n type=\"text\"\n placeholder=\"📚\"\n value={sectionForm().icon}\n onInput={e => setSectionForm({...sectionForm(), icon: e.currentTarget.value})}\n class=\"w-full rounded-lg border border-border bg-card/70 px-3 py-2 text-sm outline-none focus:border-primary/40 focus:ring-2 focus:ring-ring/20\"\n />\n </label>\n <label class=\"block space-y-1\" for=\"docs-admin-section-description\">\n <span class=\"text-xs font-medium text-muted-foreground\">Description</span>\n <input\n id=\"docs-admin-section-description\"\n type=\"text\"\n placeholder=\"Overview pages and onboarding guides.\"\n value={sectionForm().description}\n onInput={e => setSectionForm({...sectionForm(), description: e.currentTarget.value})}\n class=\"w-full rounded-lg border border-border bg-card/70 px-3 py-2 text-sm outline-none focus:border-primary/40 focus:ring-2 focus:ring-ring/20\"\n />\n </label>\n <label class=\"block space-y-1\" for=\"docs-admin-section-access\">\n <span class=\"text-xs font-medium text-muted-foreground\">Access</span>\n <select\n id=\"docs-admin-section-access\"\n value={sectionForm().access}\n onChange={(e) => setSectionForm({ ...sectionForm(), access: toDocAccess(e.currentTarget.value) })}\n class=\"w-full rounded-lg border border-border bg-card/70 px-3 py-2 text-sm outline-none focus:border-primary/40 focus:ring-2 focus:ring-ring/20\"\n >\n <option value=\"public\">Public</option>\n <option value=\"team\">Team</option>\n <option value=\"admin\">Admin</option>\n </select>\n </label>\n <div class=\"flex gap-2\">\n <button\n type=\"button\"\n disabled={!canCreateSection()}\n onClick={async () => {\n await props.admin.createSection({\n ...sectionForm(),\n order: sections().length,\n icon: sectionForm().icon || undefined,\n description: sectionForm().description || undefined,\n })\n setSectionForm(initialSectionForm())\n setShowSF(false)\n }}\n class=\"rounded-lg bg-primary px-4 py-2 text-xs font-medium disabled:cursor-not-allowed disabled:opacity-40 hover:bg-primary/90\"\n >\n Create\n </button>\n <button type=\"button\" onClick={() => setShowSF(false)} class=\"rounded-lg border border-border px-4 py-2 text-xs text-muted-foreground transition-colors hover:bg-muted hover:text-foreground\">Cancel</button>\n </div>\n </div>\n </Show>\n <div class=\"space-y-1\">\n <Show when={sections().length === 0}><p class=\"py-8 text-center text-sm text-muted-foreground\">No sections</p></Show>\n <For each={sections()}>\n {(section) => (\n <div class={cn(\n 'group flex items-center gap-2 rounded-lg px-3 py-2.5',\n selectedId() === section.id\n ? 'bg-primary/15 text-primary'\n : 'text-muted-foreground hover:bg-muted hover:text-foreground',\n )}>\n <button\n type=\"button\"\n class=\"flex min-w-0 flex-1 items-center gap-2 text-left\"\n onClick={() => setSelectedId(section.id)}\n >\n <Show when={section.icon}><span>{section.icon}</span></Show>\n <span class=\"flex-1 text-sm font-medium truncate\">{section.title}</span>\n <span class=\"text-[11px] tabular-nums opacity-40\">{section.pageCount ?? 0}</span>\n </button>\n <button\n type=\"button\"\n onClick={(e) => { e.stopPropagation(); if (confirm(`Delete \"${section.title}\"?`)) props.admin.deleteSection(section.id) }}\n class=\"rounded p-1 text-muted-foreground/60 opacity-0 transition-opacity group-hover:opacity-100 hover:text-destructive\"\n aria-label={`Delete section ${section.title}`}\n >\n ✕\n </button>\n </div>\n )}\n </For>\n </div>\n </div>\n <div class=\"rounded-xl border border-border bg-card/40 p-5\">\n <div class=\"mb-4 flex items-center justify-between\">\n <h2 class=\"text-lg font-semibold text-foreground\">{selectedSection() ? `Pages — ${selectedSection()?.title}` : 'Pages'}</h2>\n <Show when={selectedSection()}><button type=\"button\" onClick={() => setShowPF(!showPF())} class=\"rounded-lg bg-primary px-3 py-1.5 text-xs font-medium hover:bg-primary/90\">+ Add</button></Show>\n </div>\n <Show when={!selectedSection()}><p class=\"py-16 text-center text-sm text-muted-foreground\">Select a section</p></Show>\n <Show when={showPF() && selectedSection()}>\n <div class=\"mb-4 space-y-2 rounded-lg border border-border bg-card/60 p-4\">\n <label class=\"block space-y-1\" for=\"docs-admin-page-title\">\n <span class=\"text-xs font-medium text-muted-foreground\">Title</span>\n <input\n id=\"docs-admin-page-title\"\n type=\"text\"\n placeholder=\"Install the package\"\n value={pageForm().title}\n onInput={e => setPageForm({...pageForm(), title: e.currentTarget.value})}\n class=\"w-full rounded-lg border border-border bg-card/70 px-3 py-2 text-sm outline-none focus:border-primary/40 focus:ring-2 focus:ring-ring/20\"\n />\n </label>\n <label class=\"block space-y-1\" for=\"docs-admin-page-slug\">\n <span class=\"text-xs font-medium text-muted-foreground\">Slug</span>\n <input\n id=\"docs-admin-page-slug\"\n type=\"text\"\n placeholder=\"install\"\n value={pageForm().slug}\n onInput={e => setPageForm({...pageForm(), slug: e.currentTarget.value})}\n class=\"w-full rounded-lg border border-border bg-card/70 px-3 py-2 text-sm outline-none focus:border-primary/40 focus:ring-2 focus:ring-ring/20\"\n />\n </label>\n <label class=\"block space-y-1\" for=\"docs-admin-page-content\">\n <span class=\"text-xs font-medium text-muted-foreground\">Content (MDX)</span>\n <textarea\n id=\"docs-admin-page-content\"\n placeholder=\"# Install\"\n value={pageForm().content}\n onInput={e => setPageForm({...pageForm(), content: e.currentTarget.value})}\n rows={4}\n class=\"w-full rounded-lg border border-border bg-card/70 px-3 py-2 text-sm outline-none focus:border-primary/40 focus:ring-2 focus:ring-ring/20 resize-y\"\n />\n </label>\n <label class=\"block space-y-1\" for=\"docs-admin-page-tags\">\n <span class=\"text-xs font-medium text-muted-foreground\">Tags</span>\n <input\n id=\"docs-admin-page-tags\"\n type=\"text\"\n placeholder=\"setup, install\"\n value={pageForm().tags}\n onInput={e => setPageForm({...pageForm(), tags: e.currentTarget.value})}\n class=\"w-full rounded-lg border border-border bg-card/70 px-3 py-2 text-sm outline-none focus:border-primary/40 focus:ring-2 focus:ring-ring/20\"\n />\n </label>\n <label class=\"block space-y-1\" for=\"docs-admin-page-access\">\n <span class=\"text-xs font-medium text-muted-foreground\">Access</span>\n <select\n id=\"docs-admin-page-access\"\n value={pageForm().access}\n onChange={(e) => setPageForm({ ...pageForm(), access: toDocAccess(e.currentTarget.value) })}\n class=\"w-full rounded-lg border border-border bg-card/70 px-3 py-2 text-sm outline-none focus:border-primary/40 focus:ring-2 focus:ring-ring/20\"\n >\n <option value=\"public\">Public</option>\n <option value=\"team\">Team</option>\n <option value=\"admin\">Admin</option>\n </select>\n </label>\n <div class=\"flex gap-2\">\n <button\n type=\"button\"\n disabled={!canCreatePage()}\n onClick={async () => { const sectionId = selectedId(); if (!sectionId) return; await props.admin.createPage({title:pageForm().title,slug:pageForm().slug,content:pageForm().content,sectionId,access:pageForm().access,tags:pageForm().tags?pageForm().tags.split(',').map(t=>t.trim()):[],order:sectionPages().length}); setPageForm(initialPageForm()); setShowPF(false) }}\n class=\"rounded-lg bg-primary px-4 py-2 text-xs font-medium disabled:cursor-not-allowed disabled:opacity-40 hover:bg-primary/90\"\n >\n Create\n </button>\n <button type=\"button\" onClick={() => setShowPF(false)} class=\"rounded-lg border border-border px-4 py-2 text-xs text-muted-foreground transition-colors hover:bg-muted hover:text-foreground\">Cancel</button>\n </div>\n </div>\n </Show>\n <Show when={selectedSection() && sectionPages().length > 0}>\n <div class=\"space-y-1\">\n <For each={sectionPages()}>\n {(page) => (\n <div class=\"group flex items-center gap-3 rounded-lg px-3 py-2.5 transition-colors hover:bg-muted\">\n <div class=\"flex-1 min-w-0\">\n <p class=\"text-sm font-medium text-foreground truncate\">{page.title}</p>\n <p class=\"text-[11px] text-muted-foreground\">/{page.slug}</p>\n </div>\n <span class={cn('shrink-0 rounded-full px-2 py-0.5 text-[10px] font-medium', page.status === 'published' ? 'bg-success/15 text-success' : page.status === 'archived' ? 'bg-muted text-muted-foreground' : 'bg-warning/15 text-warning')}>{page.status}</span>\n <div class=\"flex items-center gap-1 opacity-0 group-hover:opacity-100\">\n <Show when={page.status === 'draft'}><button type=\"button\" onClick={() => props.admin.publishPage(page.id)} class=\"rounded px-2 py-1 text-[11px] text-success hover:bg-success/10\">Publish</button></Show>\n <Show when={page.status === 'published'}><button type=\"button\" onClick={() => props.admin.archivePage(page.id)} class=\"rounded px-2 py-1 text-[11px] text-warning hover:bg-warning/10\">Archive</button></Show>\n <button\n type=\"button\"\n onClick={() => { if (confirm(`Delete \"${page.title}\"?`)) props.admin.deletePage(page.id) }}\n class=\"rounded p-1 text-muted-foreground/60 hover:text-destructive\"\n aria-label={`Delete page ${page.title}`}\n >\n ✕\n </button>\n </div>\n </div>\n )}\n </For>\n </div>\n </Show>\n <Show when={selectedSection() && sectionPages().length === 0 && !showPF()}>\n <p class=\"py-12 text-center text-sm text-muted-foreground\">No pages in this section</p>\n </Show>\n </div>\n </div>\n </div>\n </div>\n </Show>\n )\n}\n","/**\n * @module solidjsCreateDocs\n * @package @geenius/docs/solidjs\n * @description Creates the canonical SolidJS docs state container that merges\n * config, flattens pages, and tracks section, page, and search selection state.\n */\n\nimport type { DocPage, DocSection, DocsConfig } from '@geenius/docs/shared'\nimport { defaultDocsConfig } from '@geenius/docs/shared'\nimport {\n type Accessor,\n createMemo,\n createSignal,\n} from 'solid-js'\n\n/**\n * Aggregate docs state returned by the SolidJS docs primitive.\n *\n * @property sections - Accessor returning the normalized docs sections.\n * @property currentSection - Accessor for the currently selected section.\n * @property setSection - Updates the selected section and resets the page selection.\n * @property currentPage - Accessor for the currently selected page.\n * @property setPage - Updates the selected page.\n * @property searchQuery - Accessor for the active docs search query.\n * @property setSearchQuery - Updates the active docs search query.\n * @property isLoading - Accessor describing whether the tree is still unresolved.\n * @property config - Accessor returning the merged docs configuration.\n * @property flatPages - Accessor returning the flattened page list.\n */\nexport interface DocsState {\n sections: Accessor<(DocSection & { pages: DocPage[]; pageCount: number })[]>\n currentSection: Accessor<DocSection | null>\n setSection: (section: DocSection | null) => void\n currentPage: Accessor<DocPage | null>\n setPage: (page: DocPage | null) => void\n searchQuery: Accessor<string>\n setSearchQuery: (query: string) => void\n isLoading: Accessor<boolean>\n config: Accessor<DocsConfig>\n flatPages: Accessor<DocPage[]>\n}\n\n/**\n * Creates normalized docs state for the SolidJS docs surface.\n *\n * @param tree - Docs section tree accessor with eagerly attached pages.\n * @param config - Optional overrides merged onto the shared docs config.\n * @returns A shared docs state object used by SolidJS pages and components.\n */\nexport function createDocs(\n tree: Accessor<\n (DocSection & { pages: DocPage[]; pageCount: number })[] | undefined\n >,\n config?: Partial<DocsConfig>,\n): DocsState {\n const [currentSection, setSection] = createSignal<DocSection | null>(null)\n const [currentPage, setPage] = createSignal<DocPage | null>(null)\n const [searchQuery, setSearchQuery] = createSignal('')\n\n const mergedConfig = createMemo(() => ({ ...defaultDocsConfig, ...config }))\n const sections = createMemo(() => tree() ?? [])\n const flatPages = createMemo(() => sections().flatMap((s) => s.pages ?? []))\n const isLoading = createMemo(() => tree() === undefined)\n\n const handleSetSection = (section: DocSection | null): void => {\n setSection(section)\n setPage(null)\n }\n\n const handleSetPage = (page: DocPage | null): void => {\n setPage(page)\n }\n\n const handleSetSearchQuery = (query: string): void => {\n setSearchQuery(query)\n }\n\n return {\n sections,\n currentSection,\n setSection: handleSetSection,\n currentPage,\n setPage: handleSetPage,\n searchQuery,\n setSearchQuery: handleSetSearchQuery,\n isLoading,\n config: mergedConfig,\n flatPages,\n }\n}\n","/**\n * @module solidjsDocsIndexPage\n * @package @geenius/docs/solidjs\n * @description Renders the SolidJS docs landing page with section cards,\n * keyboard-accessible search launch, and empty or loading states.\n */\n\nimport type { DocPage, DocSection, SearchResult } from '@geenius/docs/shared'\nimport { buildDocsIndex, searchDocs } from '@geenius/docs/shared'\nimport { type Accessor, createEffect, createSignal, For, type JSX, onCleanup, Show } from 'solid-js'\n\nimport { DocSearch } from '../components/DocSearch'\nimport { cn } from '../lib/utils'\nimport { createDocSearch } from '../primitives/createDocSearch'\nimport { createDocs } from '../primitives/createDocs'\n\ninterface DocsIndexPageProps {\n tree: Accessor<(DocSection & { pages: DocPage[]; pageCount: number })[] | undefined>\n onSelectPage?: (page: DocPage, section: DocSection) => void\n class?: string\n}\n\n/**\n * Renders the root docs landing page for the SolidJS variant.\n *\n * @param props - Docs tree accessor and page selection callback.\n * @returns The docs home page with search and section navigation.\n */\nexport function DocsIndexPage(props: DocsIndexPageProps): JSX.Element {\n const docs = createDocs(props.tree)\n const [isSearchOpen, setIsSearchOpen] = createSignal(false)\n\n const searchFn = (q: string): SearchResult[] => {\n const index = buildDocsIndex(docs.flatPages(), docs.sections())\n return searchDocs(q, index)\n }\n\n const search = createDocSearch(searchFn)\n\n createEffect(() => {\n const handler = (e: KeyboardEvent) => {\n if ((e.metaKey || e.ctrlKey) && e.key === 'k') { e.preventDefault(); setIsSearchOpen(true) }\n }\n document.addEventListener('keydown', handler)\n onCleanup(() => document.removeEventListener('keydown', handler))\n })\n\n return (\n <Show\n when={!docs.isLoading()}\n fallback={\n <div class={cn('min-h-screen bg-background px-6 py-16', props.class)}>\n <div class=\"mx-auto max-w-5xl\">\n <div class=\"mb-10 h-10 w-64 animate-pulse rounded-lg bg-foreground/5\" />\n <div class=\"mb-8 h-12 w-full max-w-xl animate-pulse rounded-xl bg-foreground/5\" />\n <div class=\"grid gap-4 md:grid-cols-2 lg:grid-cols-3\">\n <For each={Array(6)}>\n {() => <div class=\"h-36 animate-pulse rounded-xl bg-foreground/5\" />}\n </For>\n </div>\n </div>\n </div>\n }\n >\n <Show\n when={docs.sections().length > 0}\n fallback={\n <div\n class={cn(\n 'flex min-h-screen flex-col items-center justify-center bg-background text-center',\n props.class,\n )}\n >\n <div class=\"mb-4 text-6xl opacity-30\">📚</div>\n <h2 class=\"mb-2 text-xl font-semibold text-foreground/80\">No documentation yet</h2>\n <p class=\"max-w-sm text-sm text-foreground/40\">Create your first section and pages to get started.</p>\n </div>\n }\n >\n <div class={cn('min-h-screen bg-background text-foreground', props.class)}>\n <div class=\"mx-auto max-w-5xl px-6 py-16\">\n <h1 class=\"mb-2 text-4xl font-bold tracking-tight\">Documentation</h1>\n <p class=\"mb-10 text-lg text-foreground/50\">Browse guides, API references, and tutorials.</p>\n <button\n type=\"button\"\n onClick={() => setIsSearchOpen(true)}\n aria-haspopup=\"dialog\"\n class=\"mb-12 flex w-full max-w-xl items-center gap-3 rounded-xl border border-border bg-card/60 px-5 py-3.5 text-left text-sm text-muted-foreground transition-colors hover:border-primary/20 hover:bg-card\"\n >\n <svg aria-hidden=\"true\" class=\"h-4.5 w-4.5 shrink-0\" viewBox=\"0 0 20 20\" fill=\"currentColor\">\n <path fill-rule=\"evenodd\" d=\"M9 3.5a5.5 5.5 0 100 11 5.5 5.5 0 000-11zM2 9a7 7 0 1112.452 4.391l3.328 3.329a.75.75 0 11-1.06 1.06l-3.329-3.328A7 7 0 012 9z\" clip-rule=\"evenodd\" />\n </svg>\n <span class=\"flex-1\">Search documentation…</span>\n <kbd class=\"rounded border border-border/60 bg-foreground/5 px-2 py-0.5 text-[11px]\">⌘K</kbd>\n </button>\n <div class=\"grid gap-4 md:grid-cols-2 lg:grid-cols-3\">\n <For each={docs.sections().filter((s) => !s.parentId)}>\n {(section) => (\n <button\n type=\"button\"\n onClick={() => {\n const fp = section.pages?.[0]\n if (fp && props.onSelectPage) props.onSelectPage(fp, section)\n }}\n class=\"group flex flex-col rounded-xl border border-border bg-card/40 p-5 text-left transition-all hover:border-primary/30 hover:bg-card\">\n <Show when={section.icon}>\n <span class=\"mb-3 text-2xl\">{section.icon}</span>\n </Show>\n <h3 class=\"mb-1.5 text-base font-semibold text-foreground/90 group-hover:text-foreground\">{section.title}</h3>\n <Show when={section.description}>\n <p class=\"mb-3 flex-1 text-sm leading-relaxed text-foreground/40\">{section.description}</p>\n </Show>\n <div class=\"text-xs text-foreground/25\">\n <span>{section.pageCount ?? 0} pages</span>\n </div>\n </button>\n )}\n </For>\n </div>\n </div>\n <DocSearch\n results={search.results()}\n query={search.query()}\n onQuery={search.setQuery}\n onSelect={(result) => {\n setIsSearchOpen(false)\n search.clearSearch()\n const section = docs.sections().find((s) => s.slug === result.sectionSlug)\n const page = docs.flatPages().find((p) => p.id === result.pageId)\n if (page && section && props.onSelectPage) props.onSelectPage(page, section)\n }}\n isOpen={isSearchOpen()}\n onClose={() => setIsSearchOpen(false)}\n />\n </div>\n </Show>\n </Show>\n )\n}\n","/**\n * @module solidjsCreateTableOfContents\n * @package @geenius/docs/solidjs\n * @description Derives the SolidJS docs table of contents from MDX content\n * and tracks the active heading via intersection observer updates.\n */\n\nimport type { TocItem } from '@geenius/docs/shared'\nimport { extractToc } from '@geenius/docs/shared'\nimport { type Accessor, createEffect, createMemo, createSignal, onCleanup } from 'solid-js'\n\n/**\n * Table-of-contents state returned by the SolidJS docs TOC primitive.\n *\n * @property toc - Accessor returning the extracted heading tree.\n * @property activeId - Accessor returning the currently active heading id.\n * @property setActiveId - Updates the currently active heading id.\n */\nexport interface TableOfContentsState {\n toc: Accessor<TocItem[]>\n activeId: Accessor<string>\n setActiveId: (id: string) => void\n}\n\n/**\n * Creates table-of-contents state for a docs page.\n *\n * @param mdxContent - Accessor returning the current page MDX source.\n * @returns Derived TOC state and active-heading controls.\n */\nexport function createTableOfContents(\n mdxContent: Accessor<string | undefined>,\n): TableOfContentsState {\n const [activeId, setActiveId] = createSignal('')\n\n const toc = createMemo<TocItem[]>(() => {\n const content = mdxContent()\n if (!content) return []\n return extractToc(content)\n })\n\n const flatIds = createMemo(() => {\n const ids: string[] = []\n const collect = (items: TocItem[]) => {\n for (const item of items) {\n ids.push(item.id)\n collect(item.children)\n }\n }\n collect(toc())\n return ids\n })\n\n createEffect(() => {\n const ids = flatIds()\n if (ids.length === 0) return\n\n const observer = new IntersectionObserver(\n (entries) => {\n for (const entry of entries) {\n if (entry.isIntersecting) {\n setActiveId(entry.target.id)\n break\n }\n }\n },\n { rootMargin: '-80px 0px -70% 0px', threshold: 0 }\n )\n\n for (const id of ids) {\n const el = document.getElementById(id)\n if (el) observer.observe(el)\n }\n\n onCleanup(() => observer.disconnect())\n })\n\n const handleSetActiveId = (id: string): void => {\n setActiveId(id)\n }\n\n return { toc, activeId, setActiveId: handleSetActiveId }\n}\n","/**\n * @module solidjsDocViewPage\n * @package @geenius/docs/solidjs\n * @description Renders the main SolidJS docs reading experience, including\n * layout chrome, MDX content, table of contents, and sibling navigation.\n */\n\nimport type { DocPage as DocPageType, DocSection } from '@geenius/docs/shared'\nimport { buildBreadcrumbs } from '@geenius/docs/shared'\nimport { type Accessor, createEffect, createMemo, type JSX, Show } from 'solid-js'\nimport { DocPage } from '../components/DocPage'\nimport { DocsLayout } from '../components/DocsLayout'\nimport { EditButton } from '../components/EditButton'\nimport { PageNavigation } from '../components/PageNavigation'\nimport { cn } from '../lib/utils'\nimport { createDocs } from '../primitives/createDocs'\nimport { createTableOfContents } from '../primitives/createTableOfContents'\n\ninterface DocViewPageProps {\n tree: Accessor<\n (DocSection & { pages: DocPageType[]; pageCount: number })[] | undefined\n >\n page: Accessor<DocPageType | null | undefined>\n editPageUrl?: string\n onNavigate: (page: DocPageType, section: DocSection) => void\n onIncrementView?: (pageId: string) => void\n class?: string\n}\n\n/**\n * Renders the docs reader view for a selected SolidJS page.\n *\n * @param props - Docs tree, selected page accessor, and navigation callbacks.\n * @returns The full docs reading experience or an empty-state fallback.\n */\nexport function DocViewPage(props: DocViewPageProps): JSX.Element {\n const docs = createDocs(props.tree)\n const { toc, activeId } = createTableOfContents(() => props.page()?.content)\n\n createEffect(() => {\n const p = props.page()\n if (p?.id && props.onIncrementView) props.onIncrementView(p.id)\n })\n\n const breadcrumbs = createMemo(() => {\n const p = props.page()\n if (!p) return []\n return buildBreadcrumbs(docs.sections(), p.sectionId, p.slug)\n })\n\n const nav = createMemo(() => {\n const p = props.page()\n if (!p) return { prev: undefined, next: undefined }\n const all = docs.flatPages()\n const idx = all.findIndex((pg) => pg.id === p.id)\n const section = docs.sections().find((s) => s.id === p.sectionId)\n return {\n prev: idx > 0\n ? {\n title: all[idx - 1].title,\n href: `/docs/${section?.slug ?? ''}/${all[idx - 1].slug}`,\n }\n : undefined,\n next: idx < all.length - 1\n ? {\n title: all[idx + 1].title,\n href: `/docs/${section?.slug ?? ''}/${all[idx + 1].slug}`,\n }\n : undefined,\n }\n })\n\n return (\n <Show\n when={!docs.isLoading() && props.page() !== undefined}\n fallback={\n <div class={cn('flex min-h-screen bg-background', props.class)}>\n <div class=\"hidden w-[260px] shrink-0 border-r border-border bg-card lg:block\">\n <div class=\"space-y-3 p-4\">\n {Array.from({ length: 8 }).map(() => (\n <div class=\"h-8 animate-pulse rounded-lg bg-foreground/5\" />\n ))}\n </div>\n </div>\n <div class=\"flex-1 px-10 py-8\">\n <div class=\"mx-auto max-w-3xl space-y-4\">\n <div class=\"h-10 w-96 animate-pulse rounded bg-foreground/5\" />\n </div>\n </div>\n </div>\n }\n >\n <Show\n when={props.page()}\n fallback={\n <div\n class={cn(\n 'flex min-h-screen flex-col items-center justify-center bg-background text-center',\n props.class,\n )}\n >\n <div class=\"mb-4 text-6xl opacity-30\">🔍</div>\n <h2 class=\"mb-2 text-xl font-semibold text-foreground/80\">Page not found</h2>\n </div>\n }\n >\n {(page) => (\n <DocsLayout\n sections={docs.sections()}\n toc={toc()}\n activeHeadingId={activeId()}\n breadcrumbs={breadcrumbs()}\n currentPageId={page().id}\n onNavigate={props.onNavigate}\n class={props.class}\n >\n <div class=\"mb-8\">\n <h1 class=\"mb-3 text-3xl font-bold tracking-tight\">{page().title}</h1>\n <div class=\"flex flex-wrap items-center gap-4 text-sm text-foreground/40\">\n <span>{page().author.name}</span>\n <Show when={page().readingTime > 0}>\n <span>{page().readingTime} min read</span>\n </Show>\n <Show when={page().viewCount > 0}>\n <span>{page().viewCount.toLocaleString()} views</span>\n </Show>\n </div>\n </div>\n <DocPage page={page()} />\n <div class=\"mt-10 flex items-center justify-between border-t border-border/40 pt-6\">\n <EditButton pageSlug={page().slug} editUrl={props.editPageUrl} />\n </div>\n <PageNavigation prev={nav().prev} next={nav().next} />\n </DocsLayout>\n )}\n </Show>\n </Show>\n )\n}\n","/**\n * @module solidjsCreateDocsAdmin\n * @package @geenius/docs/solidjs\n * @description Adapts caller-provided section and page mutations into a\n * stable SolidJS admin controller with normalized method signatures.\n */\n\nexport interface DocsAdminActions {\n createSection: (data: {\n title: string\n slug: string\n parentId?: string\n order: number\n icon?: string\n description?: string\n access: 'public' | 'team' | 'admin'\n }) => Promise<void>\n updateSection: (sectionId: string, data: Record<string, unknown>) => Promise<void>\n deleteSection: (sectionId: string) => Promise<void>\n reorderSections: (sectionIds: string[]) => Promise<void>\n createPage: (data: {\n title: string\n slug: string\n content: string\n sectionId: string\n access: 'public' | 'team' | 'admin'\n tags?: string[]\n version?: string\n status?: 'draft' | 'published' | 'archived'\n author?: { name: string; avatar?: string }\n excerpt?: string\n order?: number\n }) => Promise<void>\n updatePage: (pageId: string, data: Record<string, unknown>) => Promise<void>\n publishPage: (pageId: string) => Promise<void>\n archivePage: (pageId: string) => Promise<void>\n deletePage: (pageId: string) => Promise<void>\n reorderPages: (pageIds: string[]) => Promise<void>\n movePage: (pageId: string, newSectionId: string, newOrder: number) => Promise<void>\n}\n\n/**\n * Creates a SolidJS-friendly docs admin controller around async mutations.\n *\n * @param mutations - Low-level CRUD and reorder operations for docs content.\n * @returns An admin controller with normalized section and page methods.\n */\nexport function createDocsAdmin(\n mutations: {\n createSection: (args: Record<string, unknown>) => Promise<unknown>\n updateSection: (args: Record<string, unknown>) => Promise<unknown>\n deleteSection: (args: Record<string, unknown>) => Promise<unknown>\n reorderSections: (args: Record<string, unknown>) => Promise<unknown>\n createPage: (args: Record<string, unknown>) => Promise<unknown>\n updatePage: (args: Record<string, unknown>) => Promise<unknown>\n publishPage: (args: Record<string, unknown>) => Promise<unknown>\n archivePage: (args: Record<string, unknown>) => Promise<unknown>\n deletePage: (args: Record<string, unknown>) => Promise<unknown>\n reorderPages: (args: Record<string, unknown>) => Promise<unknown>\n movePage: (args: Record<string, unknown>) => Promise<unknown>\n },\n): DocsAdminActions {\n return {\n createSection: async (data: {\n title: string\n slug: string\n parentId?: string\n order: number\n icon?: string\n description?: string\n access: 'public' | 'team' | 'admin'\n }): Promise<void> => {\n await mutations.createSection(data)\n },\n\n updateSection: async (\n sectionId: string,\n data: Record<string, unknown>,\n ): Promise<void> => {\n await mutations.updateSection({ sectionId, ...data })\n },\n\n deleteSection: async (sectionId: string): Promise<void> => {\n await mutations.deleteSection({ sectionId })\n },\n\n reorderSections: async (sectionIds: string[]): Promise<void> => {\n await mutations.reorderSections({ sectionIds })\n },\n\n createPage: async (data: {\n title: string\n slug: string\n content: string\n sectionId: string\n access: 'public' | 'team' | 'admin'\n tags?: string[]\n version?: string\n status?: 'draft' | 'published' | 'archived'\n author?: { name: string; avatar?: string }\n excerpt?: string\n order?: number\n }): Promise<void> => {\n await mutations.createPage(data)\n },\n\n updatePage: async (\n pageId: string,\n data: Record<string, unknown>,\n ): Promise<void> => {\n await mutations.updatePage({ pageId, ...data })\n },\n\n publishPage: async (pageId: string): Promise<void> => {\n await mutations.publishPage({ pageId })\n },\n\n archivePage: async (pageId: string): Promise<void> => {\n await mutations.archivePage({ pageId })\n },\n\n deletePage: async (pageId: string): Promise<void> => {\n await mutations.deletePage({ pageId })\n },\n\n reorderPages: async (pageIds: string[]): Promise<void> => {\n await mutations.reorderPages({ pageIds })\n },\n\n movePage: async (\n pageId: string,\n newSectionId: string,\n newOrder: number,\n ): Promise<void> => {\n await mutations.movePage({ pageId, newSectionId, newOrder })\n },\n }\n}\n"]}
|