@geenius/docs 0.5.0 → 0.9.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 +6 -0
- package/package.json +19 -6
- 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 +83 -41
- package/packages/react/dist/index.js.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 +6 -6
- package/packages/shared/dist/index.js +1 -1
- 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 +58 -28
- package/packages/solidjs/dist/index.js.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/lib/cx.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/hooks/useDocSearch.ts","../src/hooks/useDocs.ts","../src/hooks/useDocsAdmin.ts","../src/hooks/useTableOfContents.ts","../src/pages/DocSearchPage.tsx","../src/pages/DocsAdminPage.tsx","../src/pages/DocsIndexPage.tsx","../src/pages/DocViewPage.tsx"],"names":["jsxs","jsx","useState","useMemo","useEffect","useRef","useCallback","query","Fragment"],"mappings":"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","file":"index.js","sourcesContent":["/**\n * @module docsReactCssCx\n * @package @geenius/docs-react-css\n * @description Exposes the CSS-variant class name composer so React CSS\n * components can opt into conditional modifiers without depending on Tailwind\n * utilities or ad-hoc string concatenation.\n */\n\nimport clsx, { type ClassValue } from 'clsx'\n\n/**\n * Merges CSS class names for the React CSS docs variant.\n *\n * @param values - Class name values that may be conditionally present.\n * @returns A normalized class name string.\n */\nexport function cx(...values: ClassValue[]): string {\n return clsx(...values)\n}\n","/**\n * @module docsReactCssBreadcrumbs\n * @package @geenius/docs-react-css\n * @description Renders breadcrumb navigation for the React CSS variant using\n * the shared vanilla CSS class contract.\n */\n\n\nimport type { BreadcrumbItem } from '@geenius/docs-shared'\nimport React from 'react'\n\nimport { cx } from '../lib/cx'\n\ninterface BreadcrumbsProps {\n items: BreadcrumbItem[]\n}\n\n/**\n * Renders a breadcrumb trail for docs pages.\n *\n * @param props - Breadcrumb items describing the current page path.\n * @returns The breadcrumb navigation or `null` when there are no items.\n */\nexport function Breadcrumbs({ items }: BreadcrumbsProps): React.JSX.Element | null {\n if (items.length === 0) {\n return null\n }\n\n return (\n <nav className=\"docs__breadcrumbs\" aria-label=\"Breadcrumb\">\n {items.map((item, index) => (\n <React.Fragment key={`${item.href}-${item.title}`}>\n {index > 0 ? (\n <svg\n className=\"docs__breadcrumb-separator\"\n viewBox=\"0 0 16 16\"\n fill=\"none\"\n aria-hidden=\"true\"\n >\n <path d=\"M6 4l4 4-4 4\" stroke=\"currentColor\" strokeWidth=\"1.5\" />\n </svg>\n ) : null}\n {index === items.length - 1 ? (\n <span\n className={cx(\n 'docs__breadcrumb-item',\n 'docs__breadcrumb-item--current',\n )}\n aria-current=\"page\"\n >\n {item.title}\n </span>\n ) : (\n <a href={item.href} className=\"docs__breadcrumb-item\">\n {item.title}\n </a>\n )}\n </React.Fragment>\n ))}\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 docsReactCssDocPage\n * @package @geenius/docs-react-css\n * @description Renders markdown content for the standalone React CSS docs\n * variant using the package-local vanilla CSS class contract.\n */\n\n\nimport type { DocPage as DocPageType } from '@geenius/docs-shared'\nimport { slugify } from '@geenius/docs-shared'\nimport type { ReactNode } from 'react'\nimport { Children, isValidElement } from 'react'\nimport type { Components } from 'react-markdown'\nimport ReactMarkdown from 'react-markdown'\nimport remarkGfm from 'remark-gfm'\n\ninterface DocPageProps {\n page: DocPageType\n}\n\nfunction getNodeText(children: ReactNode): string {\n return Children.toArray(children)\n .map((child) => {\n if (typeof child === 'string' || typeof child === 'number') {\n return String(child)\n }\n\n if (isValidElement<{ children?: ReactNode }>(child)) {\n return getNodeText(child.props.children)\n }\n\n return ''\n })\n .join(' ')\n}\n\nfunction createHeading(\n Tag: 'h1' | 'h2' | 'h3' | 'h4',\n className?: string,\n): NonNullable<Components[typeof Tag]> {\n return ({ children }) => {\n const text = getNodeText(children)\n const id = slugify(text)\n\n return (\n <Tag id={id} className={className}>\n {children}\n <a href={`#${id}`} className=\"docs__heading-anchor\" aria-label={`Link to ${text}`}>\n #\n </a>\n </Tag>\n )\n }\n}\n\n/**\n * Markdown page renderer for the React CSS docs variant.\n *\n * @param props - Page record containing the markdown body to render.\n * @returns Rendered docs article markup.\n */\nexport function DocPage({ page }: DocPageProps): React.JSX.Element {\n return (\n <article className=\"docs__article\">\n <div className=\"docs__article-body docs__content-main\">\n <ReactMarkdown\n remarkPlugins={[remarkGfm]}\n components={{\n h1: createHeading('h1', 'docs__article-title'),\n h2: createHeading('h2'),\n h3: createHeading('h3'),\n h4: createHeading('h4'),\n a: ({ href, children }) => (\n <a\n href={href}\n target={href?.startsWith('/') ? undefined : '_blank'}\n rel={href?.startsWith('/') ? undefined : 'noreferrer noopener'}\n >\n {children}\n </a>\n ),\n pre: ({ children }) => (\n <div className=\"docs__code-block\">\n <pre>{children}</pre>\n </div>\n ),\n table: ({ children }) => (\n <div className=\"docs__table-wrapper\">\n <table className=\"docs__table\">{children}</table>\n </div>\n ),\n }}\n >\n {page.content}\n </ReactMarkdown>\n </div>\n </article>\n )\n}\n","/**\n * @module docsReactCssDocSearch\n * @package @geenius/docs-react-css\n * @description Provides the standalone React CSS command-palette style docs\n * search modal with keyboard navigation and vanilla CSS styling.\n */\n\n\nimport type { SearchResult } from '@geenius/docs-shared'\nimport { highlightMatch } from '@geenius/docs-shared'\nimport { useEffect, useId, useMemo, useRef, useState } from 'react'\n\nimport { cx } from '../lib/cx'\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 * Search modal for the standalone React CSS docs variant.\n *\n * @param props - Search state, result list, and modal event handlers.\n * @returns Search dialog markup when open, otherwise `null`.\n */\nexport function DocSearch({\n results,\n query,\n onQuery,\n onSelect,\n isOpen,\n onClose,\n}: DocSearchProps): React.JSX.Element | null {\n const [activeIndex, setActiveIndex] = useState(0)\n const dialogId = useId()\n const inputRef = useRef<HTMLInputElement>(null)\n const dialogRef = useRef<HTMLDivElement>(null)\n const resultRefs = useRef<Array<HTMLButtonElement | null>>([])\n const previousFocusRef = useRef<HTMLElement | null>(null)\n\n const activeResultId = useMemo(() => {\n const activeResult = results[activeIndex]\n\n return activeResult ? `${dialogId}-result-${activeResult.pageId}` : undefined\n }, [activeIndex, dialogId, results])\n\n useEffect(() => {\n if (!isOpen) {\n return\n }\n\n previousFocusRef.current = getActiveElement()\n inputRef.current?.focus()\n setActiveIndex(0)\n\n return () => {\n previousFocusRef.current?.focus()\n }\n }, [isOpen])\n\n useEffect(() => {\n void query\n void results\n setActiveIndex(0)\n }, [query, results])\n\n useEffect(() => {\n resultRefs.current[activeIndex]?.scrollIntoView({ block: 'nearest' })\n }, [activeIndex])\n\n if (!isOpen) {\n return null\n }\n\n const handleKeyDown = (event: React.KeyboardEvent<HTMLDivElement>): void => {\n if (event.key === 'Escape') {\n event.preventDefault()\n onClose()\n return\n }\n\n if (event.key === 'ArrowDown') {\n event.preventDefault()\n setActiveIndex((index) => Math.min(index + 1, results.length - 1))\n return\n }\n\n if (event.key === 'ArrowUp') {\n event.preventDefault()\n setActiveIndex((index) => Math.max(index - 1, 0))\n return\n }\n\n if (event.key === 'Enter' && results[activeIndex]) {\n event.preventDefault()\n onSelect(results[activeIndex])\n return\n }\n\n if (event.key !== 'Tab' || !dialogRef.current) {\n return\n }\n\n const focusableElements = Array.from(\n dialogRef.current.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 (event.shiftKey && document.activeElement === firstElement) {\n event.preventDefault()\n lastElement.focus()\n }\n\n if (!event.shiftKey && document.activeElement === lastElement) {\n event.preventDefault()\n firstElement.focus()\n }\n }\n\n return (\n <div className=\"docs__search-modal\">\n <button type=\"button\" className=\"docs__search-backdrop\" aria-label=\"Close search\" onClick={onClose} />\n <div\n ref={dialogRef}\n className=\"docs__search-panel\"\n role=\"dialog\"\n aria-modal=\"true\"\n aria-labelledby={`${dialogId}-title`}\n onKeyDown={handleKeyDown}\n >\n <div className=\"docs__search-header\">\n <h2 id={`${dialogId}-title`} className=\"docs__search-title\">\n Search documentation\n </h2>\n <input\n ref={inputRef}\n type=\"search\"\n value={query}\n onChange={(event) => onQuery(event.target.value)}\n className=\"docs__search-input\"\n placeholder=\"Search documentation\"\n aria-label=\"Search documentation\"\n aria-controls={`${dialogId}-results`}\n aria-activedescendant={activeResultId}\n />\n </div>\n\n <div id={`${dialogId}-results`} className=\"docs__search-results\" role=\"listbox\">\n {results.length === 0 ? (\n <div className=\"docs__search-empty\">\n <div className=\"docs__search-empty-title\">\n {query.trim() ? `No results for “${query}”` : 'Start typing to search'}\n </div>\n <div className=\"docs__search-empty-desc\">\n {query.trim()\n ? 'Try a broader keyword or check your spelling.'\n : 'Search across sections, titles, and content snippets.'}\n </div>\n </div>\n ) : (\n results.map((result, index) => (\n <button\n key={result.pageId}\n ref={(element) => {\n resultRefs.current[index] = element\n }}\n id={`${dialogId}-result-${result.pageId}`}\n type=\"button\"\n role=\"option\"\n aria-selected={index === activeIndex}\n onMouseEnter={() => setActiveIndex(index)}\n onClick={() => onSelect(result)}\n className={cx(\n 'docs__search-result-item',\n index === activeIndex && 'docs__search-result-item--active',\n )}\n >\n <div className=\"docs__search-result-header\">\n <span className=\"docs__search-result-section\">\n {result.sectionTitle}\n </span>\n <strong className=\"docs__search-result-title\">{result.pageTitle}</strong>\n </div>\n <span className=\"docs__search-result-highlight\">\n {highlightMatch(result.highlight, query)}\n </span>\n {result.tags.length > 0 ? (\n <div className=\"docs__search-tags\">\n {result.tags.slice(0, 3).map((tag) => (\n <span key={tag} className=\"docs__tag\">\n {tag}\n </span>\n ))}\n </div>\n ) : null}\n </button>\n ))\n )}\n </div>\n\n <div className=\"docs__search-footer\">\n <span className=\"docs__search-hint\">Up/Down to navigate</span>\n <span className=\"docs__search-hint\">Enter to select</span>\n <span className=\"docs__search-hint\">Esc to close</span>\n </div>\n </div>\n </div>\n )\n}\n","/**\n * @module docsReactCssDocSidebar\n * @package @geenius/docs-react-css\n * @description Renders the standalone React CSS sidebar navigation for docs\n * trees using the shared vanilla CSS layout and BEM-style class contract.\n */\n\n\nimport type { DocPage, DocSection } from '@geenius/docs-shared'\nimport { useEffect, useMemo, useState } from 'react'\n\nimport { cx } from '../lib/cx'\n\ninterface DocSidebarProps {\n sections: (DocSection & { pages?: DocPage[]; pageCount?: number })[]\n currentPageId?: string\n onNavigate: (page: DocPage, section: DocSection) => void\n}\n\ntype SidebarSection = DocSection & { pages?: DocPage[]; pageCount?: number }\n\nfunction collectAncestorIds(\n section: SidebarSection,\n sectionMap: Map<string, SidebarSection>,\n): string[] {\n const ids = [section.id]\n let parentId = section.parentId\n\n while (parentId) {\n ids.push(parentId)\n parentId = sectionMap.get(parentId)?.parentId\n }\n\n return ids\n}\n\n/**\n * Sidebar navigation for section and page browsing in the React CSS variant.\n *\n * @param props - Sections, active page id, and page navigation handler.\n * @returns Sidebar navigation markup for the docs tree.\n */\nexport function DocSidebar({\n sections,\n currentPageId,\n onNavigate,\n}: DocSidebarProps): React.JSX.Element {\n const [expandedIds, setExpandedIds] = useState<Set<string>>(new Set())\n\n const sectionMap = useMemo(\n () => new Map(sections.map((section) => [section.id, section])),\n [sections],\n )\n\n useEffect(() => {\n if (!currentPageId) {\n return\n }\n\n const owningSection = sections.find((section) =>\n (section.pages ?? []).some((page) => page.id === currentPageId),\n )\n\n if (!owningSection) {\n return\n }\n\n const ids = collectAncestorIds(owningSection, sectionMap)\n\n setExpandedIds((previous) => {\n const next = new Set(previous)\n\n for (const id of ids) {\n next.add(id)\n }\n\n return next\n })\n }, [currentPageId, sectionMap, sections])\n\n const topLevelSections = useMemo(\n () => sections.filter((section) => !section.parentId),\n [sections],\n )\n const childSections = (parentId: string): SidebarSection[] =>\n sections.filter((section) => section.parentId === parentId)\n\n const toggleSection = (sectionId: string): void => {\n setExpandedIds((previous) => {\n const next = new Set(previous)\n\n if (next.has(sectionId)) {\n next.delete(sectionId)\n } else {\n next.add(sectionId)\n }\n\n return next\n })\n }\n\n const renderSection = (\n section: SidebarSection,\n depth = 0,\n ): React.JSX.Element => {\n const children = childSections(section.id)\n const pages = section.pages ?? []\n const hasContent = children.length > 0 || pages.length > 0\n const isExpanded = expandedIds.has(section.id)\n const containsCurrentPage = Boolean(\n currentPageId &&\n (pages.some((page) => page.id === currentPageId) ||\n children.some((child) =>\n child.pages?.some((page) => page.id === currentPageId),\n )),\n )\n const regionId = `docs-sidebar-section-${section.id}`\n\n return (\n <div\n key={section.id}\n className={cx(\n 'docs__sidebar-section',\n containsCurrentPage && 'docs__sidebar-section--active',\n )}\n style={depth > 0 ? { paddingLeft: `${depth * 12}px` } : undefined}\n >\n <button\n type=\"button\"\n className=\"docs__sidebar-section-btn\"\n aria-expanded={hasContent ? isExpanded : undefined}\n aria-controls={hasContent ? regionId : undefined}\n onClick={() => {\n if (hasContent) {\n toggleSection(section.id)\n }\n }}\n >\n {section.icon ? (\n <span className=\"docs__sidebar-section-icon\" aria-hidden=\"true\">\n {section.icon}\n </span>\n ) : null}\n <span className=\"docs__sidebar-section-title\">{section.title}</span>\n {section.pageCount != null ? (\n <span className=\"docs__sidebar-section-count\">{section.pageCount}</span>\n ) : null}\n {hasContent ? (\n <svg\n className={cx(\n 'docs__sidebar-section-chevron',\n isExpanded && 'docs__sidebar-section-chevron--open',\n )}\n viewBox=\"0 0 16 16\"\n fill=\"none\"\n aria-hidden=\"true\"\n >\n <path d=\"M6 4l4 4-4 4\" stroke=\"currentColor\" strokeWidth=\"1.5\" />\n </svg>\n ) : null}\n </button>\n\n {hasContent && isExpanded ? (\n <div id={regionId} className=\"docs__sidebar-pages\">\n {pages.map((page) => (\n <button\n key={page.id}\n type=\"button\"\n onClick={() => onNavigate(page, section)}\n className={cx(\n 'docs__sidebar-link',\n page.id === currentPageId && 'docs__sidebar-link--active',\n )}\n aria-current={page.id === currentPageId ? 'page' : undefined}\n >\n <span className=\"docs__sidebar-section-title\">{page.title}</span>\n </button>\n ))}\n {children.map((child) => renderSection(child, depth + 1))}\n </div>\n ) : null}\n </div>\n )\n }\n\n return (\n <nav className=\"docs__sidebar-nav\" aria-label=\"Documentation navigation\">\n <div className=\"docs__sidebar-header\">Documentation</div>\n {topLevelSections.map((section) => renderSection(section))}\n </nav>\n )\n}\n","/**\n * @module docsReactCssTableOfContents\n * @package @geenius/docs-react-css\n * @description Renders the CSS-backed table of contents tree for docs pages so\n * heading navigation remains consistent with the shared vanilla CSS contract.\n */\n\n\nimport type { TocItem } from '@geenius/docs-shared'\nimport type React from 'react'\n\nimport { cx } from '../lib/cx'\n\ninterface TableOfContentsProps {\n toc: TocItem[]\n activeId?: string\n}\n\nfunction TocEntry({\n item,\n activeId,\n depth = 0,\n}: {\n item: TocItem\n activeId?: string\n depth?: number\n}): React.JSX.Element {\n return (\n <>\n <a\n href={`#${item.id}`}\n className={cx(\n 'docs__toc-item',\n activeId === item.id && 'docs__toc-item--active',\n depth === 1 && 'docs__toc-item--h3',\n depth >= 2 && 'docs__toc-item--h4',\n )}\n >\n {item.text}\n </a>\n {item.children.map((child) => (\n <TocEntry key={child.id} item={child} activeId={activeId} depth={depth + 1} />\n ))}\n </>\n )\n}\n\n/**\n * Renders the page table of contents.\n *\n * @param props - TOC entries and the currently active heading id.\n * @returns The TOC nav or `null` when the page has no headings.\n */\nexport function TableOfContents({\n toc,\n activeId,\n}: TableOfContentsProps): React.JSX.Element | null {\n if (toc.length === 0) {\n return null\n }\n\n return (\n <nav className=\"docs__toc\" aria-label=\"On this page\">\n <h2 className=\"docs__toc-title\">On this page</h2>\n <div className=\"docs__toc-list\">\n {toc.map((item) => (\n <TocEntry key={item.id} item={item} activeId={activeId} />\n ))}\n </div>\n </nav>\n )\n}\n","/**\n * @module docsReactCssDocsLayout\n * @package @geenius/docs-react-css\n * @description Composes the standalone React CSS layout shell for docs pages,\n * including sidebar navigation, content chrome, and the right-rail TOC.\n */\n\nimport type { BreadcrumbItem, DocPage, DocSection, TocItem } from '@geenius/docs-shared'\n\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: React.ReactNode\n}\n\n/**\n * Layout shell used by standalone React CSS docs pages.\n *\n * @param props - Docs navigation state, TOC state, and page content.\n * @returns Full page layout for docs screens.\n */\nexport function DocsLayout({\n sections,\n toc,\n activeHeadingId,\n breadcrumbs,\n currentPageId,\n onNavigate,\n children,\n}: DocsLayoutProps): React.JSX.Element {\n return (\n <div className=\"docs__layout\">\n <aside className=\"docs__sidebar\">\n <DocSidebar\n sections={sections}\n currentPageId={currentPageId}\n onNavigate={onNavigate}\n />\n </aside>\n\n <main className=\"docs__main\">\n <div className=\"docs__content\">\n <div className=\"docs__content-inner\">\n <div className=\"docs__content-main\">\n {breadcrumbs?.length ? <Breadcrumbs items={breadcrumbs} /> : null}\n {children}\n </div>\n {toc?.length ? (\n <aside className=\"docs__article-toc\">\n <TableOfContents toc={toc} activeId={activeHeadingId} />\n </aside>\n ) : null}\n </div>\n </div>\n </main>\n </div>\n )\n}\n","/**\n * @module docsReactCssEditButton\n * @package @geenius/docs-react-css\n * @description Exposes the CSS-backed edit-link affordance for docs pages so\n * hosts can route users to the source repository without Tailwind classes.\n */\n\nimport type React from 'react'\n\ninterface EditButtonProps {\n pageSlug: string\n editUrl?: string\n}\n\n/**\n * Renders the \"Edit this page\" link when source editing is configured.\n *\n * @param props - Page slug and optional base edit URL.\n * @returns The edit link or `null` when editing is disabled.\n */\nexport function EditButton({\n pageSlug,\n editUrl,\n}: EditButtonProps): React.JSX.Element | null {\n if (!editUrl) {\n return null\n }\n\n const href = `${editUrl.replace(/\\/$/, '')}/${pageSlug}.mdx`\n\n return (\n <a\n href={href}\n target=\"_blank\"\n rel=\"noreferrer noopener\"\n className=\"docs__edit-link\"\n >\n <svg aria-hidden=\"true\" viewBox=\"0 0 16 16\" fill=\"none\" stroke=\"currentColor\" width=\"14\" height=\"14\">\n <path\n d=\"M11.5 1.5l3 3-9 9H2.5v-3l9-9z\"\n strokeWidth=\"1.5\"\n strokeLinejoin=\"round\"\n />\n </svg>\n Edit this page\n </a>\n )\n}\n","/**\n * @module docsReactCssPageNavigation\n * @package @geenius/docs-react-css\n * @description Renders previous and next page affordances for the React CSS\n * docs variant using the shared vanilla CSS navigation classes.\n */\n\nimport type React from 'react'\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 article.\n *\n * @param props - Optional previous and next navigation links.\n * @returns Page navigation markup or `null` when neither link exists.\n */\nexport function PageNavigation({\n prev,\n next,\n}: PageNavigationProps): React.JSX.Element | null {\n if (!prev && !next) {\n return null\n }\n\n return (\n <nav className=\"docs__page-nav\" aria-label=\"Page navigation\">\n {prev ? (\n <a href={prev.href} className=\"docs__page-nav-prev\">\n <span className=\"docs__page-nav-label\">Previous</span>\n <span className=\"docs__page-nav-title\">{prev.title}</span>\n </a>\n ) : (\n <div className=\"docs__page-nav-prev\" aria-hidden=\"true\" />\n )}\n {next ? (\n <a href={next.href} className=\"docs__page-nav-next\">\n <span className=\"docs__page-nav-label\">Next</span>\n <span className=\"docs__page-nav-title\">{next.title}</span>\n </a>\n ) : (\n <div className=\"docs__page-nav-next\" aria-hidden=\"true\" />\n )}\n </nav>\n )\n}\n","/**\n * @module docsReactCssVersionSelector\n * @package @geenius/docs-react-css\n * @description Provides the CSS-backed version selector for versioned docs\n * surfaces using a native select for accessibility and low runtime overhead.\n */\n\nimport type React from 'react'\n\ninterface VersionSelectorProps {\n versions: string[]\n current: string\n onSelect: (version: string) => void\n}\n\n/**\n * Renders a version switcher when multiple docs versions exist.\n *\n * @param props - Supported versions, current version, and selection callback.\n * @returns The version selector or `null` when only one version exists.\n */\nexport function VersionSelector({\n versions,\n current,\n onSelect,\n}: VersionSelectorProps): React.JSX.Element | null {\n if (versions.length <= 1) {\n return null\n }\n\n return (\n <div className=\"docs__version-selector\">\n <select\n className=\"docs__version-select docs__version-select--active\"\n aria-label=\"Select documentation version\"\n value={current}\n onChange={(event) => onSelect(event.target.value)}\n >\n {versions.map((version) => (\n <option key={version} value={version}>\n v{version}\n </option>\n ))}\n </select>\n </div>\n )\n}\n","/**\n * @module docsReactCssUseDocSearch\n * @package @geenius/docs-react-css\n * @description Implements debounced search state for the React CSS docs\n * variant so modal and page-level search experiences share the same query and\n * loading lifecycle.\n */\n\n\nimport type { SearchResult } from '@geenius/docs-shared'\nimport { useCallback, useEffect, useRef, useState } from 'react'\n\n/**\n * Search state returned by the React CSS search hook.\n */\nexport interface DocSearchState {\n results: SearchResult[]\n isSearching: boolean\n query: string\n setQuery: (query: string) => void\n clearSearch: () => void\n}\n\n/**\n * Debounces doc search calls for the React CSS variant.\n *\n * @param searchFn - Search function that returns ranked docs results.\n * @param debounceMs - Delay before the search function is executed.\n * @returns Search state and control helpers.\n */\nexport function useDocSearch(\n searchFn: (query: string) => SearchResult[] | Promise<SearchResult[]>,\n debounceMs = 250,\n): DocSearchState {\n const [query, setQuery] = useState('')\n const [results, setResults] = useState<SearchResult[]>([])\n const [isSearching, setIsSearching] = useState(false)\n const timerRef = useRef<ReturnType<typeof setTimeout> | null>(null)\n\n useEffect(() => {\n if (!query.trim()) {\n setResults([])\n setIsSearching(false)\n return\n }\n\n setIsSearching(true)\n\n if (timerRef.current) {\n clearTimeout(timerRef.current)\n }\n\n timerRef.current = setTimeout(async () => {\n try {\n const nextResults = await searchFn(query)\n setResults(nextResults)\n } catch {\n setResults([])\n } finally {\n setIsSearching(false)\n }\n }, debounceMs)\n\n return () => {\n if (timerRef.current) {\n clearTimeout(timerRef.current)\n }\n }\n }, [debounceMs, query, searchFn])\n\n const clearSearch = useCallback(() => {\n setQuery('')\n setResults([])\n setIsSearching(false)\n }, [])\n\n return { results, isSearching, query, setQuery, clearSearch }\n}\n","/**\n * @module docsReactCssUseDocs\n * @package @geenius/docs-react-css\n * @description Provides the React CSS variant state bridge for docs trees. The\n * hook mirrors the Tailwind React surface while staying local to the CSS\n * package so the published CSS entry does not depend on the React variant.\n */\n\n\nimport {\n type DocPage,\n type DocSection,\n type DocsConfig,\n defaultDocsConfig,\n} from '@geenius/docs-shared'\nimport { useCallback, useMemo, useState } from 'react'\n\n/**\n * Local docs state returned by the React CSS hook.\n */\nexport interface DocsState {\n sections: (DocSection & { pages: DocPage[]; pageCount: number })[]\n currentSection: DocSection | null\n setSection: (section: DocSection | null) => void\n currentPage: DocPage | null\n setPage: (page: DocPage | null) => void\n searchQuery: string\n setSearchQuery: (query: string) => void\n isLoading: boolean\n config: DocsConfig\n flatPages: DocPage[]\n}\n\n/**\n * Resolves docs tree state for the React CSS variant.\n *\n * @param tree - Section tree with pages or `undefined` while data loads.\n * @param config - Optional runtime config overrides.\n * @returns Derived docs state for CSS-backed pages and components.\n */\nexport function useDocs(\n tree: (DocSection & { pages: DocPage[]; pageCount: number })[] | undefined,\n config?: Partial<DocsConfig>,\n): DocsState {\n const [currentSection, setSection] = useState<DocSection | null>(null)\n const [currentPage, setPage] = useState<DocPage | null>(null)\n const [searchQuery, setSearchQuery] = useState('')\n\n const mergedConfig = useMemo(\n () => ({ ...defaultDocsConfig, ...config }),\n [config],\n )\n const sections = useMemo(() => tree ?? [], [tree])\n const flatPages = useMemo(\n () => sections.flatMap((section) => section.pages ?? []),\n [sections],\n )\n const isLoading = tree === undefined\n\n const handleSetSection = useCallback((section: DocSection | null) => {\n setSection(section)\n setPage(null)\n }, [])\n\n return {\n sections,\n currentSection,\n setSection: handleSetSection,\n currentPage,\n setPage,\n searchQuery,\n setSearchQuery,\n isLoading,\n config: mergedConfig,\n flatPages,\n }\n}\n","/**\n * @module docsReactCssUseDocsAdmin\n * @package @geenius/docs-react-css\n * @description Adapts the docs admin mutation contract to stable React CSS\n * callbacks so admin surfaces can stay framework-native while the backend\n * remains transport-agnostic.\n */\n\nimport { useCallback } from 'react'\n\n/**\n * Stable admin actions exposed by the React CSS package.\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 * Binds transport-level mutation functions to stable admin callbacks.\n *\n * @param mutations - Low-level mutation handlers supplied by the host app.\n * @returns Stable admin actions for docs authoring flows.\n */\nexport function useDocsAdmin(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}): DocsAdminActions {\n const createSection = useCallback(\n async (data: Parameters<DocsAdminActions['createSection']>[0]) => {\n await mutations.createSection(data)\n },\n [mutations],\n )\n const updateSection = useCallback(\n async (sectionId: string, data: Record<string, unknown>) => {\n await mutations.updateSection({ sectionId, ...data })\n },\n [mutations],\n )\n const deleteSection = useCallback(\n async (sectionId: string) => {\n await mutations.deleteSection({ sectionId })\n },\n [mutations],\n )\n const reorderSections = useCallback(\n async (sectionIds: string[]) => {\n await mutations.reorderSections({ sectionIds })\n },\n [mutations],\n )\n const createPage = useCallback(\n async (data: Parameters<DocsAdminActions['createPage']>[0]) => {\n await mutations.createPage(data)\n },\n [mutations],\n )\n const updatePage = useCallback(\n async (pageId: string, data: Record<string, unknown>) => {\n await mutations.updatePage({ pageId, ...data })\n },\n [mutations],\n )\n const publishPage = useCallback(\n async (pageId: string) => {\n await mutations.publishPage({ pageId })\n },\n [mutations],\n )\n const archivePage = useCallback(\n async (pageId: string) => {\n await mutations.archivePage({ pageId })\n },\n [mutations],\n )\n const deletePage = useCallback(\n async (pageId: string) => {\n await mutations.deletePage({ pageId })\n },\n [mutations],\n )\n const reorderPages = useCallback(\n async (pageIds: string[]) => {\n await mutations.reorderPages({ pageIds })\n },\n [mutations],\n )\n const movePage = useCallback(\n async (pageId: string, newSectionId: string, newOrder: number) => {\n await mutations.movePage({ pageId, newSectionId, newOrder })\n },\n [mutations],\n )\n\n return {\n createSection,\n updateSection,\n deleteSection,\n reorderSections,\n createPage,\n updatePage,\n publishPage,\n archivePage,\n deletePage,\n reorderPages,\n movePage,\n }\n}\n","/**\n * @module docsReactCssUseTableOfContents\n * @package @geenius/docs-react-css\n * @description Tracks the extracted table of contents and active heading for\n * the React CSS docs variant so CSS-backed page chrome can stay in sync with\n * the rendered article structure.\n */\n\n\nimport { extractToc, type TocItem } from '@geenius/docs-shared'\nimport { useCallback, useEffect, useMemo, useRef, useState } from 'react'\n\n/**\n * Table-of-contents state returned by the React CSS hook.\n */\nexport interface TableOfContentsState {\n toc: TocItem[]\n activeId: string\n setActiveId: (id: string) => void\n}\n\n/**\n * Extracts and tracks the active table of contents entry for a page body.\n *\n * @param mdxContent - Markdown content used to derive headings.\n * @returns Extracted TOC entries and the current active heading id.\n */\nexport function useTableOfContents(\n mdxContent: string | undefined,\n): TableOfContentsState {\n const [activeId, setActiveId] = useState('')\n const observerRef = useRef<IntersectionObserver | null>(null)\n\n const toc = useMemo(() => {\n if (!mdxContent) {\n return []\n }\n\n return extractToc(mdxContent)\n }, [mdxContent])\n\n const flatIds = useMemo(() => {\n const ids: string[] = []\n\n const collect = (items: TocItem[]): void => {\n for (const item of items) {\n ids.push(item.id)\n collect(item.children)\n }\n }\n\n collect(toc)\n return ids\n }, [toc])\n\n const handleSetActiveId = useCallback((id: string) => {\n setActiveId(id)\n }, [])\n\n useEffect(() => {\n if (flatIds.length === 0) {\n return\n }\n\n observerRef.current?.disconnect()\n\n observerRef.current = 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 {\n rootMargin: '-80px 0px -70% 0px',\n threshold: 0,\n },\n )\n\n for (const id of flatIds) {\n const element = document.getElementById(id)\n if (element) {\n observerRef.current.observe(element)\n }\n }\n\n return () => {\n observerRef.current?.disconnect()\n }\n }, [flatIds])\n\n return { toc, activeId, setActiveId: handleSetActiveId }\n}\n","/**\n * @module docsReactCssDocSearchPage\n * @package @geenius/docs-react-css\n * @description Renders the standalone React CSS full-page docs search\n * experience using local search results and vanilla CSS layouts.\n */\n\n\nimport type { DocPage, DocSection, SearchResult } from '@geenius/docs-shared'\nimport { buildDocsIndex, highlightMatch, searchDocs } from '@geenius/docs-shared'\nimport { useCallback } from 'react'\n\nimport { useDocSearch } from '../hooks/useDocSearch'\n\ninterface DocSearchPageProps {\n tree: (DocSection & { pages: DocPage[]; pageCount: number })[] | undefined\n onSelectPage?: (page: DocPage, section: DocSection) => void\n}\n\n/**\n * Full-page search experience for the standalone React CSS docs variant.\n *\n * @param props - Docs tree and optional page selection callback.\n * @returns Full-page search UI for docs results.\n */\nexport function DocSearchPage({\n tree,\n onSelectPage,\n}: DocSearchPageProps): React.JSX.Element {\n const sections = tree ?? []\n const flatPages = sections.flatMap((section) => section.pages ?? [])\n\n const searchFn = useCallback(\n (query: string): SearchResult[] => {\n const index = buildDocsIndex(flatPages, sections)\n return searchDocs(query, index)\n },\n [flatPages, sections],\n )\n\n const { query, results, isSearching, setQuery } = useDocSearch(searchFn)\n\n if (tree === undefined) {\n return (\n <div className=\"docs__empty\" style={{ minHeight: '100vh' }}>\n <div className=\"docs__skeleton\" style={{ width: '24rem', height: '3rem' }} />\n </div>\n )\n }\n\n return (\n <div className=\"docs__main\">\n <div className=\"docs__content\">\n <div className=\"docs__content-inner\" style={{ display: 'block' }}>\n <header className=\"docs__header\">\n <h1 className=\"docs__title\">Search documentation</h1>\n </header>\n\n <div className=\"docs__search-page\">\n <input\n type=\"search\"\n value={query}\n onChange={(event) => setQuery(event.target.value)}\n placeholder=\"Type to search\"\n className=\"docs__search-input\"\n aria-label=\"Search documentation\"\n />\n\n {isSearching ? <p className=\"docs__search-status\">Searching…</p> : null}\n\n {results.length > 0 ? (\n <div className=\"docs__search-page-results\">\n {results.map((result) => {\n const section = sections.find(\n (currentSection) => currentSection.slug === result.sectionSlug,\n )\n const page = flatPages.find(\n (currentPage) => currentPage.id === result.pageId,\n )\n\n return (\n <button\n key={result.pageId}\n type=\"button\"\n className=\"docs__search-result-item\"\n onClick={() => {\n if (page && section) {\n onSelectPage?.(page, section)\n }\n }}\n >\n <div className=\"docs__search-result-header\">\n <span className=\"docs__search-result-section\">\n {result.sectionTitle}\n </span>\n <strong className=\"docs__search-result-title\">\n {result.pageTitle}\n </strong>\n </div>\n <span className=\"docs__search-result-highlight\">\n {highlightMatch(result.highlight, query)}\n </span>\n </button>\n )\n })}\n </div>\n ) : query.trim() && !isSearching ? (\n <div className=\"docs__empty\" style={{ minHeight: '16rem' }}>\n <div className=\"docs__empty-icon\" aria-hidden=\"true\">\n 🔍\n </div>\n <div className=\"docs__empty-title\">No results found</div>\n <div className=\"docs__empty-desc\">\n Try a different keyword or phrase.\n </div>\n </div>\n ) : null}\n </div>\n </div>\n </div>\n </div>\n )\n}\n","/**\n * @module docsReactCssDocsAdminPage\n * @package @geenius/docs-react-css\n * @description Renders the standalone React CSS admin surface for managing doc\n * sections and pages using the package-local vanilla CSS panel styles.\n */\n\n\nimport type { DocAccess, DocPage, DocSection } from '@geenius/docs-shared'\nimport { useMemo, useState } from 'react'\n\nimport type { DocsAdminActions } from '../hooks/useDocsAdmin'\n\nconst DEFAULT_DOC_ACCESS: DocAccess = 'team'\n\nfunction isDocAccess(value: string): value is DocAccess {\n return value === 'public' || value === 'team' || value === 'admin'\n}\n\nfunction parseDocAccess(value: string): DocAccess {\n return isDocAccess(value) ? value : DEFAULT_DOC_ACCESS\n}\n\ninterface DocsAdminPageProps {\n tree: (DocSection & { pages: DocPage[]; pageCount: number })[] | undefined\n allPages?: DocPage[]\n admin: DocsAdminActions\n}\n\n/**\n * Admin page for section and page management in the React CSS variant.\n *\n * @param props - Tree data, optional page list, and admin actions.\n * @returns Admin UI for managing docs content.\n */\nexport function DocsAdminPage({\n tree,\n allPages,\n admin,\n}: DocsAdminPageProps): React.JSX.Element {\n const sections = useMemo(() => tree ?? [], [tree])\n const [selectedSectionId, setSelectedSectionId] = useState<string | null>(null)\n const [showSectionForm, setShowSectionForm] = useState(false)\n const [showPageForm, setShowPageForm] = useState(false)\n const [sectionForm, setSectionForm] = useState({\n title: '',\n slug: '',\n description: '',\n icon: '',\n access: DEFAULT_DOC_ACCESS,\n })\n const [pageForm, setPageForm] = useState({\n title: '',\n slug: '',\n content: '',\n access: DEFAULT_DOC_ACCESS,\n tags: '',\n })\n\n const selectedSection = sections.find((section) => section.id === selectedSectionId)\n const sectionPages = useMemo(() => {\n if (!selectedSection) {\n return []\n }\n\n if (allPages) {\n return allPages.filter((page) => page.sectionId === selectedSection.id)\n }\n\n return selectedSection.pages ?? []\n }, [allPages, selectedSection])\n const canCreateSection =\n sectionForm.title.trim().length > 0 && sectionForm.slug.trim().length > 0\n const canCreatePage =\n pageForm.title.trim().length > 0 &&\n pageForm.slug.trim().length > 0 &&\n pageForm.content.trim().length > 0\n\n if (tree === undefined) {\n return (\n <div className=\"docs__empty\" style={{ minHeight: '100vh' }}>\n <div className=\"docs__skeleton\" style={{ width: '24rem', height: '3rem' }} />\n </div>\n )\n }\n\n return (\n <div className=\"docs__main\">\n <div className=\"docs__content\">\n <div className=\"docs__content-inner\" style={{ display: 'block' }}>\n <header className=\"docs__header\">\n <h1 className=\"docs__title\">Docs admin</h1>\n </header>\n\n <div className=\"docs__admin-grid\">\n <section className=\"docs__admin-panel\">\n <div className=\"docs__admin-panel-header\">\n <h2 className=\"docs__admin-panel-title\">Sections</h2>\n <button\n type=\"button\"\n className=\"docs__admin-add-btn\"\n onClick={() => setShowSectionForm((value) => !value)}\n >\n Add section\n </button>\n </div>\n\n {showSectionForm ? (\n <div className=\"docs__admin-form\">\n <label className=\"docs__admin-field\" htmlFor=\"docs-admin-section-title\">\n <span className=\"docs__admin-label\">Title</span>\n <input\n id=\"docs-admin-section-title\"\n className=\"docs__admin-input\"\n value={sectionForm.title}\n onChange={(event) =>\n setSectionForm((current) => ({\n ...current,\n title: event.target.value,\n }))\n }\n />\n </label>\n <label className=\"docs__admin-field\" htmlFor=\"docs-admin-section-slug\">\n <span className=\"docs__admin-label\">Slug</span>\n <input\n id=\"docs-admin-section-slug\"\n className=\"docs__admin-input\"\n value={sectionForm.slug}\n onChange={(event) =>\n setSectionForm((current) => ({\n ...current,\n slug: event.target.value,\n }))\n }\n />\n </label>\n <label className=\"docs__admin-field\" htmlFor=\"docs-admin-section-icon\">\n <span className=\"docs__admin-label\">Icon</span>\n <input\n id=\"docs-admin-section-icon\"\n className=\"docs__admin-input\"\n value={sectionForm.icon}\n onChange={(event) =>\n setSectionForm((current) => ({\n ...current,\n icon: event.target.value,\n }))\n }\n />\n </label>\n <label\n className=\"docs__admin-field\"\n htmlFor=\"docs-admin-section-description\"\n >\n <span className=\"docs__admin-label\">Description</span>\n <input\n id=\"docs-admin-section-description\"\n className=\"docs__admin-input\"\n value={sectionForm.description}\n onChange={(event) =>\n setSectionForm((current) => ({\n ...current,\n description: event.target.value,\n }))\n }\n />\n </label>\n <label className=\"docs__admin-field\" htmlFor=\"docs-admin-section-access\">\n <span className=\"docs__admin-label\">Access</span>\n <select\n id=\"docs-admin-section-access\"\n className=\"docs__admin-input\"\n value={sectionForm.access}\n onChange={(event) =>\n setSectionForm((current) => ({\n ...current,\n access: parseDocAccess(event.target.value),\n }))\n }\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 className=\"docs__admin-form-actions\">\n <button\n type=\"button\"\n className=\"docs__admin-add-btn\"\n disabled={!canCreateSection}\n onClick={async () => {\n await admin.createSection({\n ...sectionForm,\n order: sections.length,\n icon: sectionForm.icon || undefined,\n description: sectionForm.description || undefined,\n })\n setSectionForm({\n title: '',\n slug: '',\n description: '',\n icon: '',\n access: DEFAULT_DOC_ACCESS,\n })\n setShowSectionForm(false)\n }}\n >\n Create\n </button>\n <button\n type=\"button\"\n className=\"docs__admin-action-btn\"\n onClick={() => setShowSectionForm(false)}\n >\n Cancel\n </button>\n </div>\n </div>\n ) : null}\n\n {sections.length === 0 ? (\n <div className=\"docs__empty\" style={{ minHeight: '14rem' }}>\n <div className=\"docs__empty-title\">No sections</div>\n <div className=\"docs__empty-desc\">\n Create the first section to start authoring documentation.\n </div>\n </div>\n ) : (\n sections.map((section) => (\n <button\n key={section.id}\n type=\"button\"\n className={[\n 'docs__admin-section-item',\n section.id === selectedSectionId\n ? 'docs__admin-section-item--selected'\n : '',\n ]\n .filter(Boolean)\n .join(' ')}\n onClick={() => setSelectedSectionId(section.id)}\n >\n {section.icon ? <span>{section.icon}</span> : null}\n <span className=\"docs__sidebar-section-title\">{section.title}</span>\n <span className=\"docs__sidebar-section-count\">\n {section.pageCount ?? 0}\n </span>\n </button>\n ))\n )}\n </section>\n\n <section className=\"docs__admin-panel\">\n <div className=\"docs__admin-panel-header\">\n <h2 className=\"docs__admin-panel-title\">\n {selectedSection ? `Pages — ${selectedSection.title}` : 'Pages'}\n </h2>\n {selectedSection ? (\n <button\n type=\"button\"\n className=\"docs__admin-add-btn\"\n onClick={() => setShowPageForm((value) => !value)}\n >\n Add page\n </button>\n ) : null}\n </div>\n\n {selectedSection && showPageForm ? (\n <div className=\"docs__admin-form\">\n <label className=\"docs__admin-field\" htmlFor=\"docs-admin-page-title\">\n <span className=\"docs__admin-label\">Title</span>\n <input\n id=\"docs-admin-page-title\"\n className=\"docs__admin-input\"\n value={pageForm.title}\n onChange={(event) =>\n setPageForm((current) => ({\n ...current,\n title: event.target.value,\n }))\n }\n />\n </label>\n <label className=\"docs__admin-field\" htmlFor=\"docs-admin-page-slug\">\n <span className=\"docs__admin-label\">Slug</span>\n <input\n id=\"docs-admin-page-slug\"\n className=\"docs__admin-input\"\n value={pageForm.slug}\n onChange={(event) =>\n setPageForm((current) => ({\n ...current,\n slug: event.target.value,\n }))\n }\n />\n </label>\n <label className=\"docs__admin-field\" htmlFor=\"docs-admin-page-content\">\n <span className=\"docs__admin-label\">Content</span>\n <textarea\n id=\"docs-admin-page-content\"\n className=\"docs__admin-input docs__admin-textarea\"\n value={pageForm.content}\n onChange={(event) =>\n setPageForm((current) => ({\n ...current,\n content: event.target.value,\n }))\n }\n />\n </label>\n <label className=\"docs__admin-field\" htmlFor=\"docs-admin-page-tags\">\n <span className=\"docs__admin-label\">Tags</span>\n <input\n id=\"docs-admin-page-tags\"\n className=\"docs__admin-input\"\n value={pageForm.tags}\n onChange={(event) =>\n setPageForm((current) => ({\n ...current,\n tags: event.target.value,\n }))\n }\n />\n </label>\n <label className=\"docs__admin-field\" htmlFor=\"docs-admin-page-access\">\n <span className=\"docs__admin-label\">Access</span>\n <select\n id=\"docs-admin-page-access\"\n className=\"docs__admin-input\"\n value={pageForm.access}\n onChange={(event) =>\n setPageForm((current) => ({\n ...current,\n access: parseDocAccess(event.target.value),\n }))\n }\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 className=\"docs__admin-form-actions\">\n <button\n type=\"button\"\n className=\"docs__admin-add-btn\"\n disabled={!canCreatePage}\n onClick={async () => {\n await admin.createPage({\n title: pageForm.title,\n slug: pageForm.slug,\n content: pageForm.content,\n sectionId: selectedSection.id,\n access: pageForm.access,\n tags: pageForm.tags\n ? pageForm.tags.split(',').map((tag) => tag.trim())\n : [],\n order: sectionPages.length,\n })\n setPageForm({\n title: '',\n slug: '',\n content: '',\n access: DEFAULT_DOC_ACCESS,\n tags: '',\n })\n setShowPageForm(false)\n }}\n >\n Create\n </button>\n <button\n type=\"button\"\n className=\"docs__admin-action-btn\"\n onClick={() => setShowPageForm(false)}\n >\n Cancel\n </button>\n </div>\n </div>\n ) : null}\n\n {!selectedSection ? (\n <div className=\"docs__empty\" style={{ minHeight: '14rem' }}>\n <div className=\"docs__empty-title\">Select a section</div>\n <div className=\"docs__empty-desc\">\n Pick a section to inspect or create docs pages.\n </div>\n </div>\n ) : sectionPages.length === 0 ? (\n <div className=\"docs__empty\" style={{ minHeight: '14rem' }}>\n <div className=\"docs__empty-title\">No pages in this section</div>\n <div className=\"docs__empty-desc\">\n Add the first page to begin writing content.\n </div>\n </div>\n ) : (\n sectionPages.map((page) => (\n <div key={page.id} className=\"docs__admin-page-item\">\n <div className=\"docs__admin-page-info\">\n <div className=\"docs__admin-page-title\">{page.title}</div>\n <div className=\"docs__admin-page-slug\">/{page.slug}</div>\n </div>\n <span\n className={[\n 'docs__status-badge',\n page.status === 'published'\n ? 'docs__status-badge--published'\n : page.status === 'archived'\n ? 'docs__status-badge--archived'\n : 'docs__status-badge--draft',\n ].join(' ')}\n >\n {page.status}\n </span>\n <div className=\"docs__admin-actions\">\n {page.status === 'draft' ? (\n <button\n type=\"button\"\n className=\"docs__admin-action-btn docs__admin-action-btn--publish\"\n onClick={() => admin.publishPage(page.id)}\n >\n Publish\n </button>\n ) : null}\n {page.status === 'published' ? (\n <button\n type=\"button\"\n className=\"docs__admin-action-btn docs__admin-action-btn--archive\"\n onClick={() => admin.archivePage(page.id)}\n >\n Archive\n </button>\n ) : null}\n <button\n type=\"button\"\n className=\"docs__admin-action-btn docs__admin-action-btn--delete\"\n onClick={() => admin.deletePage(page.id)}\n >\n Delete\n </button>\n </div>\n </div>\n ))\n )}\n </section>\n </div>\n </div>\n </div>\n </div>\n )\n}\n","/**\n * @module docsReactCssDocsIndexPage\n * @package @geenius/docs-react-css\n * @description Renders the standalone React CSS docs landing page with\n * section cards, recent pages, and a package-local search trigger.\n */\n\n\nimport type { DocPage, DocSection, SearchResult } from '@geenius/docs-shared'\nimport { buildDocsIndex, searchDocs } from '@geenius/docs-shared'\nimport { useCallback, useEffect, useState } from 'react'\n\nimport { DocSearch } from '../components/DocSearch'\nimport { useDocSearch } from '../hooks/useDocSearch'\nimport { useDocs } from '../hooks/useDocs'\n\ninterface DocsIndexPageProps {\n tree: (DocSection & { pages: DocPage[]; pageCount: number })[] | undefined\n onSelectPage?: (page: DocPage, section: DocSection) => void\n}\n\n/**\n * Landing page for the standalone React CSS docs experience.\n *\n * @param props - Docs tree plus optional page selection handler.\n * @returns Landing page UI for the React CSS docs variant.\n */\nexport function DocsIndexPage({\n tree,\n onSelectPage,\n}: DocsIndexPageProps): React.JSX.Element {\n const docs = useDocs(tree)\n const [isSearchOpen, setIsSearchOpen] = useState(false)\n\n const searchFn = useCallback(\n (query: string): SearchResult[] => {\n const index = buildDocsIndex(docs.flatPages, docs.sections)\n return searchDocs(query, index)\n },\n [docs.flatPages, docs.sections],\n )\n\n const search = useDocSearch(searchFn)\n\n useEffect(() => {\n const handleKeydown = (event: KeyboardEvent): void => {\n if (\n docs.config.cmdKEnabled &&\n (event.metaKey || event.ctrlKey) &&\n event.key.toLowerCase() === 'k'\n ) {\n event.preventDefault()\n setIsSearchOpen(true)\n }\n }\n\n document.addEventListener('keydown', handleKeydown)\n return () => document.removeEventListener('keydown', handleKeydown)\n }, [docs.config.cmdKEnabled])\n\n if (docs.isLoading) {\n return (\n <div className=\"docs__empty\" style={{ minHeight: '100vh' }}>\n <div className=\"docs__skeleton\" style={{ width: '24rem', height: '3rem' }} />\n </div>\n )\n }\n\n if (docs.sections.length === 0) {\n return (\n <div className=\"docs__empty\" style={{ minHeight: '100vh' }}>\n <div className=\"docs__empty-icon\" aria-hidden=\"true\">\n 📚\n </div>\n <div className=\"docs__empty-title\">No documentation yet</div>\n <div className=\"docs__empty-desc\">\n Create a section and at least one page to populate the docs index.\n </div>\n </div>\n )\n }\n\n const recentPages = docs.flatPages\n .slice()\n .sort(\n (left, right) =>\n new Date(right.updatedAt).getTime() - new Date(left.updatedAt).getTime(),\n )\n .slice(0, 6)\n\n return (\n <div className=\"docs__main\">\n <div className=\"docs__content\">\n <div className=\"docs__content-inner\" style={{ display: 'block' }}>\n <header className=\"docs__header\">\n <h1 className=\"docs__title\">Documentation</h1>\n <p>\n Browse guides, references, and implementation notes across the docs\n workspace.\n </p>\n </header>\n\n <div className=\"docs__search-bar\">\n <button\n type=\"button\"\n className=\"docs__search-trigger\"\n aria-haspopup=\"dialog\"\n onClick={() => setIsSearchOpen(true)}\n >\n <svg\n className=\"docs__search-trigger-icon\"\n viewBox=\"0 0 20 20\"\n fill=\"currentColor\"\n aria-hidden=\"true\"\n >\n <path\n fillRule=\"evenodd\"\n 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\"\n clipRule=\"evenodd\"\n />\n </svg>\n <span className=\"docs__search-trigger-text\">\n Search documentation…\n </span>\n <span className=\"docs__search-trigger-kbd\">⌘K</span>\n </button>\n </div>\n\n <div className=\"docs__section-grid\">\n {docs.sections\n .filter((section) => !section.parentId)\n .map((section) => (\n <button\n key={section.id}\n type=\"button\"\n className=\"docs__section-card\"\n onClick={() => {\n const firstPage = section.pages?.[0]\n if (firstPage) {\n onSelectPage?.(firstPage, section)\n }\n }}\n >\n {section.icon ? (\n <span className=\"docs__section-card-icon\" aria-hidden=\"true\">\n {section.icon}\n </span>\n ) : null}\n <span className=\"docs__section-card-title\">{section.title}</span>\n {section.description ? (\n <span className=\"docs__section-card-desc\">\n {section.description}\n </span>\n ) : null}\n <span className=\"docs__section-card-meta\">\n {section.pageCount ?? section.pages?.length ?? 0} pages\n </span>\n </button>\n ))}\n </div>\n\n {recentPages.length > 0 ? (\n <>\n <h2>Recently updated</h2>\n <div className=\"docs__section-grid\">\n {recentPages.map((page) => {\n const section = docs.sections.find(\n (currentSection) => currentSection.id === page.sectionId,\n )\n\n return (\n <button\n key={page.id}\n type=\"button\"\n className=\"docs__section-card\"\n onClick={() => {\n if (section) {\n onSelectPage?.(page, section)\n }\n }}\n >\n <span className=\"docs__section-card-title\">{page.title}</span>\n <span className=\"docs__section-card-desc\">\n {section?.title ?? 'Unsectioned'}\n </span>\n <span className=\"docs__section-card-meta\">\n {page.readingTime} min read\n </span>\n </button>\n )\n })}\n </div>\n </>\n ) : null}\n </div>\n </div>\n\n <DocSearch\n results={search.results}\n query={search.query}\n onQuery={search.setQuery}\n onSelect={(result) => {\n setIsSearchOpen(false)\n search.clearSearch()\n\n const section = docs.sections.find(\n (currentSection) => currentSection.slug === result.sectionSlug,\n )\n const page = docs.flatPages.find(\n (currentPage) => currentPage.id === result.pageId,\n )\n\n if (page && section) {\n onSelectPage?.(page, section)\n }\n }}\n isOpen={isSearchOpen}\n onClose={() => {\n setIsSearchOpen(false)\n search.clearSearch()\n }}\n />\n </div>\n )\n}\n","/**\n * @module docsReactCssDocViewPage\n * @package @geenius/docs-react-css\n * @description Renders the standalone React CSS docs detail page with local\n * layout, TOC tracking, navigation footer, and metadata presentation.\n */\n\n\nimport type { DocPage as DocPageType, DocSection } from '@geenius/docs-shared'\nimport { buildBreadcrumbs } from '@geenius/docs-shared'\nimport { useEffect, useMemo } from 'react'\n\nimport { DocPage } from '../components/DocPage'\nimport { DocsLayout } from '../components/DocsLayout'\nimport { EditButton } from '../components/EditButton'\nimport { PageNavigation } from '../components/PageNavigation'\nimport { useDocs } from '../hooks/useDocs'\nimport { useTableOfContents } from '../hooks/useTableOfContents'\n\ninterface DocViewPageProps {\n tree: (DocSection & { pages: DocPageType[]; pageCount: number })[] | undefined\n page: DocPageType | null | undefined\n editPageUrl?: string\n onNavigate: (page: DocPageType, section: DocSection) => void\n onIncrementView?: (pageId: string) => void\n}\n\n/**\n * Page view for the standalone React CSS docs variant.\n *\n * @param props - Docs tree, selected page, and page-level event handlers.\n * @returns Detailed page view or an appropriate empty/loading state.\n */\nexport function DocViewPage({\n tree,\n page,\n editPageUrl,\n onNavigate,\n onIncrementView,\n}: DocViewPageProps): React.JSX.Element {\n const docs = useDocs(tree)\n const { toc, activeId } = useTableOfContents(page?.content)\n\n useEffect(() => {\n if (page?.id) {\n onIncrementView?.(page.id)\n }\n }, [onIncrementView, page?.id])\n\n const breadcrumbs = useMemo(() => {\n if (!page) {\n return []\n }\n\n return buildBreadcrumbs(docs.sections, page.sectionId, page.slug)\n }, [docs.sections, page])\n\n const navigation = useMemo(() => {\n if (!page) {\n return { prev: undefined, next: undefined }\n }\n\n const flatPages = docs.flatPages\n const currentIndex = flatPages.findIndex(\n (currentPage) => currentPage.id === page.id,\n )\n const prevPage = currentIndex > 0 ? flatPages[currentIndex - 1] : undefined\n const nextPage =\n currentIndex >= 0 && currentIndex < flatPages.length - 1\n ? flatPages[currentIndex + 1]\n : undefined\n const prevSection = prevPage\n ? docs.sections.find((currentSection) => currentSection.id === prevPage.sectionId)\n : undefined\n const nextSection = nextPage\n ? docs.sections.find((currentSection) => currentSection.id === nextPage.sectionId)\n : undefined\n\n return {\n prev: prevPage\n ? {\n title: prevPage.title,\n href: `/docs/${prevSection?.slug ?? ''}/${prevPage.slug}`,\n }\n : undefined,\n next: nextPage\n ? {\n title: nextPage.title,\n href: `/docs/${nextSection?.slug ?? ''}/${nextPage.slug}`,\n }\n : undefined,\n }\n }, [docs.flatPages, docs.sections, page])\n\n if (docs.isLoading || page === undefined) {\n return (\n <div className=\"docs__empty\" style={{ minHeight: '100vh' }}>\n <div className=\"docs__skeleton\" style={{ width: '24rem', height: '3rem' }} />\n </div>\n )\n }\n\n if (!page) {\n return (\n <div className=\"docs__empty\" style={{ minHeight: '100vh' }}>\n <div className=\"docs__empty-icon\" aria-hidden=\"true\">\n 🔍\n </div>\n <div className=\"docs__empty-title\">Page not found</div>\n <div className=\"docs__empty-desc\">\n The requested documentation page could not be resolved.\n </div>\n </div>\n )\n }\n\n return (\n <DocsLayout\n sections={docs.sections}\n toc={toc}\n activeHeadingId={activeId}\n breadcrumbs={breadcrumbs}\n currentPageId={page.id}\n onNavigate={onNavigate}\n >\n <header className=\"docs__page-header\">\n <h1 className=\"docs__page-title\">{page.title}</h1>\n <div className=\"docs__reading-meta\">\n <span className=\"docs__reading-meta-author\">\n {page.author.avatar ? (\n <img\n src={page.author.avatar}\n alt=\"\"\n className=\"docs__reading-meta-avatar\"\n />\n ) : (\n <span className=\"docs__reading-meta-avatar-placeholder\">\n {page.author.name[0]}\n </span>\n )}\n {page.author.name}\n </span>\n {docs.config.showReadingTime ? <span>{page.readingTime} min read</span> : null}\n {page.lastEditedBy ? (\n <span>Edited by {page.lastEditedBy.name}</span>\n ) : null}\n {docs.config.showViewCount && page.viewCount > 0 ? (\n <span>{page.viewCount.toLocaleString()} views</span>\n ) : null}\n </div>\n {page.tags.length ? (\n <div className=\"docs__tag-list\">\n {page.tags.map((tag) => (\n <span key={tag} className=\"docs__tag docs__tag--badge\">\n {tag}\n </span>\n ))}\n </div>\n ) : null}\n </header>\n\n <DocPage page={page} />\n\n <div className=\"docs__page-footer\">\n <EditButton pageSlug={page.slug} editUrl={editPageUrl} />\n {page.version ? <span>v{page.version}</span> : null}\n </div>\n\n <PageNavigation prev={navigation.prev} next={navigation.next} />\n </DocsLayout>\n )\n}\n"]}
|
|
1
|
+
{"version":3,"sources":["../src/lib/cx.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/hooks/useDocSearch.ts","../src/hooks/useDocs.ts","../src/hooks/useDocsAdmin.ts","../src/hooks/useTableOfContents.ts","../src/pages/DocSearchPage.tsx","../src/pages/DocsAdminPage.tsx","../src/pages/DocsIndexPage.tsx","../src/pages/DocViewPage.tsx"],"names":["jsxs","jsx","useState","useMemo","useEffect","useRef","useCallback","query","Fragment"],"mappings":"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","file":"index.js","sourcesContent":["/**\n * @module docsReactCssCx\n * @package @geenius/docs/react-css\n * @description Exposes the lightweight CSS-variant class composer so React CSS\n * components can opt into conditional modifiers without carrying Tailwind or\n * extra runtime merge dependencies.\n */\n\n/**\n * Merges CSS class names for the React CSS docs variant.\n *\n * @param classes - Class name values that may be conditionally present.\n * @returns A normalized class name string.\n */\nexport function cx(...classes: (string | false | null | undefined)[]): string {\n return classes.filter(Boolean).join(' ')\n}\n","/**\n * @module docsReactCssBreadcrumbs\n * @package @geenius/docs/react-css\n * @description Renders breadcrumb navigation for the React CSS variant using\n * the shared vanilla CSS class contract.\n */\n\n\nimport type { BreadcrumbItem } from '@geenius/docs/shared'\nimport React from 'react'\n\nimport { cx } from '../lib/cx'\n\ninterface BreadcrumbsProps {\n items: BreadcrumbItem[]\n className?: string\n}\n\n/**\n * Renders a breadcrumb trail for docs pages.\n *\n * @param props - Breadcrumb items describing the current page path.\n * @returns The breadcrumb navigation or `null` when there are no items.\n */\nexport function Breadcrumbs({\n items,\n className,\n}: BreadcrumbsProps): React.JSX.Element | null {\n if (items.length === 0) {\n return null\n }\n\n return (\n <nav className={cx('docs__breadcrumbs', className)} aria-label=\"Breadcrumb\">\n {items.map((item, index) => (\n <React.Fragment key={`${item.href}-${item.title}`}>\n {index > 0 ? (\n <svg\n className=\"docs__breadcrumb-separator\"\n viewBox=\"0 0 16 16\"\n fill=\"none\"\n aria-hidden=\"true\"\n >\n <path d=\"M6 4l4 4-4 4\" stroke=\"currentColor\" strokeWidth=\"1.5\" />\n </svg>\n ) : null}\n {index === items.length - 1 ? (\n <span\n className={cx(\n 'docs__breadcrumb-item',\n 'docs__breadcrumb-item--current',\n )}\n aria-current=\"page\"\n >\n {item.title}\n </span>\n ) : (\n <a href={item.href} className=\"docs__breadcrumb-item\">\n {item.title}\n </a>\n )}\n </React.Fragment>\n ))}\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 docsReactCssDocPage\n * @package @geenius/docs/react-css\n * @description Renders markdown content for the standalone React CSS docs\n * variant using the package-local vanilla CSS class contract.\n */\n\n\nimport type { DocPage as DocPageType } from '@geenius/docs/shared'\nimport { slugify } from '@geenius/docs/shared'\nimport type { ReactNode } from 'react'\nimport { Children, isValidElement } from 'react'\nimport type { Components } from 'react-markdown'\nimport ReactMarkdown from 'react-markdown'\nimport remarkGfm from 'remark-gfm'\n\nimport { cx } from '../lib/cx'\n\ninterface DocPageProps {\n page: DocPageType\n className?: string\n}\n\nfunction getNodeText(children: ReactNode): string {\n return Children.toArray(children)\n .map((child) => {\n if (typeof child === 'string' || typeof child === 'number') {\n return String(child)\n }\n\n if (isValidElement<{ children?: ReactNode }>(child)) {\n return getNodeText(child.props.children)\n }\n\n return ''\n })\n .join(' ')\n}\n\nfunction createHeading(\n Tag: 'h1' | 'h2' | 'h3' | 'h4',\n className?: string,\n): NonNullable<Components[typeof Tag]> {\n return ({ children }) => {\n const text = getNodeText(children)\n const id = slugify(text)\n\n return (\n <Tag id={id} className={className}>\n {children}\n <a href={`#${id}`} className=\"docs__heading-anchor\" aria-label={`Link to ${text}`}>\n #\n </a>\n </Tag>\n )\n }\n}\n\n/**\n * Markdown page renderer for the React CSS docs variant.\n *\n * @param props - Page record containing the markdown body to render.\n * @returns Rendered docs article markup.\n */\nexport function DocPage({ page, className }: DocPageProps): React.JSX.Element {\n return (\n <article className={cx('docs__article', className)}>\n <div className=\"docs__article-body docs__content-main\">\n <ReactMarkdown\n remarkPlugins={[remarkGfm]}\n components={{\n h1: createHeading('h1', 'docs__article-title'),\n h2: createHeading('h2'),\n h3: createHeading('h3'),\n h4: createHeading('h4'),\n a: ({ href, children }) => (\n <a\n href={href}\n target={href?.startsWith('/') ? undefined : '_blank'}\n rel={href?.startsWith('/') ? undefined : 'noreferrer noopener'}\n >\n {children}\n </a>\n ),\n pre: ({ children }) => (\n <div className=\"docs__code-block\">\n <pre>{children}</pre>\n </div>\n ),\n table: ({ children }) => (\n <div className=\"docs__table-wrapper\">\n <table className=\"docs__table\">{children}</table>\n </div>\n ),\n }}\n >\n {page.content}\n </ReactMarkdown>\n </div>\n </article>\n )\n}\n","/**\n * @module docsReactCssDocSearch\n * @package @geenius/docs/react-css\n * @description Provides the standalone React CSS command-palette style docs\n * search modal with keyboard navigation and vanilla CSS styling.\n */\n\n\nimport type { SearchResult } from '@geenius/docs/shared'\nimport { highlightMatch } from '@geenius/docs/shared'\nimport { useEffect, useId, useMemo, useRef, useState } from 'react'\n\nimport { cx } from '../lib/cx'\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 className?: 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 * Search modal for the standalone React CSS docs variant.\n *\n * @param props - Search state, result list, and modal event handlers.\n * @returns Search dialog markup when open, otherwise `null`.\n */\nexport function DocSearch({\n results,\n query,\n onQuery,\n onSelect,\n isOpen,\n onClose,\n className,\n}: DocSearchProps): React.JSX.Element | null {\n const [activeIndex, setActiveIndex] = useState(0)\n const dialogId = useId()\n const inputRef = useRef<HTMLInputElement>(null)\n const dialogRef = useRef<HTMLDivElement>(null)\n const resultRefs = useRef<Array<HTMLButtonElement | null>>([])\n const previousFocusRef = useRef<HTMLElement | null>(null)\n\n const activeResultId = useMemo(() => {\n const activeResult = results[activeIndex]\n\n return activeResult ? `${dialogId}-result-${activeResult.pageId}` : undefined\n }, [activeIndex, dialogId, results])\n\n useEffect(() => {\n if (!isOpen) {\n return\n }\n\n previousFocusRef.current = getActiveElement()\n inputRef.current?.focus()\n setActiveIndex(0)\n\n return () => {\n previousFocusRef.current?.focus()\n }\n }, [isOpen])\n\n useEffect(() => {\n void query\n void results\n setActiveIndex(0)\n }, [query, results])\n\n useEffect(() => {\n resultRefs.current[activeIndex]?.scrollIntoView({ block: 'nearest' })\n }, [activeIndex])\n\n if (!isOpen) {\n return null\n }\n\n const handleKeyDown = (event: React.KeyboardEvent<HTMLDivElement>): void => {\n if (event.key === 'Escape') {\n event.preventDefault()\n onClose()\n return\n }\n\n if (event.key === 'ArrowDown') {\n event.preventDefault()\n setActiveIndex((index) => Math.min(index + 1, results.length - 1))\n return\n }\n\n if (event.key === 'ArrowUp') {\n event.preventDefault()\n setActiveIndex((index) => Math.max(index - 1, 0))\n return\n }\n\n if (event.key === 'Enter' && results[activeIndex]) {\n event.preventDefault()\n onSelect(results[activeIndex])\n return\n }\n\n if (event.key !== 'Tab' || !dialogRef.current) {\n return\n }\n\n const focusableElements = Array.from(\n dialogRef.current.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 (event.shiftKey && document.activeElement === firstElement) {\n event.preventDefault()\n lastElement.focus()\n }\n\n if (!event.shiftKey && document.activeElement === lastElement) {\n event.preventDefault()\n firstElement.focus()\n }\n }\n\n return (\n <div className={cx('docs__search-modal', className)}>\n <button type=\"button\" className=\"docs__search-backdrop\" aria-label=\"Close search\" onClick={onClose} />\n <div\n ref={dialogRef}\n className=\"docs__search-panel\"\n role=\"dialog\"\n aria-modal=\"true\"\n aria-labelledby={`${dialogId}-title`}\n onKeyDown={handleKeyDown}\n >\n <div className=\"docs__search-header\">\n <h2 id={`${dialogId}-title`} className=\"docs__search-title\">\n Search documentation\n </h2>\n <input\n ref={inputRef}\n type=\"search\"\n value={query}\n onChange={(event) => onQuery(event.target.value)}\n className=\"docs__search-input\"\n placeholder=\"Search documentation\"\n aria-label=\"Search documentation\"\n aria-controls={`${dialogId}-results`}\n aria-activedescendant={activeResultId}\n />\n </div>\n\n <div id={`${dialogId}-results`} className=\"docs__search-results\" role=\"listbox\">\n {results.length === 0 ? (\n <div className=\"docs__search-empty\">\n <div className=\"docs__search-empty-title\">\n {query.trim() ? `No results for “${query}”` : 'Start typing to search'}\n </div>\n <div className=\"docs__search-empty-desc\">\n {query.trim()\n ? 'Try a broader keyword or check your spelling.'\n : 'Search across sections, titles, and content snippets.'}\n </div>\n </div>\n ) : (\n results.map((result, index) => (\n <button\n key={result.pageId}\n ref={(element) => {\n resultRefs.current[index] = element\n }}\n id={`${dialogId}-result-${result.pageId}`}\n type=\"button\"\n role=\"option\"\n aria-selected={index === activeIndex}\n onMouseEnter={() => setActiveIndex(index)}\n onClick={() => onSelect(result)}\n className={cx(\n 'docs__search-result-item',\n index === activeIndex && 'docs__search-result-item--active',\n )}\n >\n <div className=\"docs__search-result-header\">\n <span className=\"docs__search-result-section\">\n {result.sectionTitle}\n </span>\n <strong className=\"docs__search-result-title\">{result.pageTitle}</strong>\n </div>\n <span className=\"docs__search-result-highlight\">\n {highlightMatch(result.highlight, query)}\n </span>\n {result.tags.length > 0 ? (\n <div className=\"docs__search-tags\">\n {result.tags.slice(0, 3).map((tag) => (\n <span key={tag} className=\"docs__tag\">\n {tag}\n </span>\n ))}\n </div>\n ) : null}\n </button>\n ))\n )}\n </div>\n\n <div className=\"docs__search-footer\">\n <span className=\"docs__search-hint\">Up/Down to navigate</span>\n <span className=\"docs__search-hint\">Enter to select</span>\n <span className=\"docs__search-hint\">Esc to close</span>\n </div>\n </div>\n </div>\n )\n}\n","/**\n * @module docsReactCssDocSidebar\n * @package @geenius/docs/react-css\n * @description Renders the standalone React CSS sidebar navigation for docs\n * trees using the shared vanilla CSS layout and BEM-style class contract.\n */\n\n\nimport type { DocPage, DocSection } from '@geenius/docs/shared'\nimport { useEffect, useMemo, useState } from 'react'\n\nimport { cx } from '../lib/cx'\n\ninterface DocSidebarProps {\n sections: (DocSection & { pages?: DocPage[]; pageCount?: number })[]\n currentPageId?: string\n onNavigate: (page: DocPage, section: DocSection) => void\n className?: string\n}\n\ntype SidebarSection = DocSection & { pages?: DocPage[]; pageCount?: number }\n\nfunction collectAncestorIds(\n section: SidebarSection,\n sectionMap: Map<string, SidebarSection>,\n): string[] {\n const ids = [section.id]\n let parentId = section.parentId\n\n while (parentId) {\n ids.push(parentId)\n parentId = sectionMap.get(parentId)?.parentId\n }\n\n return ids\n}\n\n/**\n * Sidebar navigation for section and page browsing in the React CSS variant.\n *\n * @param props - Sections, active page id, and page navigation handler.\n * @returns Sidebar navigation markup for the docs tree.\n */\nexport function DocSidebar({\n sections,\n currentPageId,\n onNavigate,\n className,\n}: DocSidebarProps): React.JSX.Element {\n const [expandedIds, setExpandedIds] = useState<Set<string>>(new Set())\n\n const sectionMap = useMemo(\n () => new Map(sections.map((section) => [section.id, section])),\n [sections],\n )\n\n useEffect(() => {\n if (!currentPageId) {\n return\n }\n\n const owningSection = sections.find((section) =>\n (section.pages ?? []).some((page) => page.id === currentPageId),\n )\n\n if (!owningSection) {\n return\n }\n\n const ids = collectAncestorIds(owningSection, sectionMap)\n\n setExpandedIds((previous) => {\n const next = new Set(previous)\n\n for (const id of ids) {\n next.add(id)\n }\n\n return next\n })\n }, [currentPageId, sectionMap, sections])\n\n const topLevelSections = useMemo(\n () => sections.filter((section) => !section.parentId),\n [sections],\n )\n const childSections = (parentId: string): SidebarSection[] =>\n sections.filter((section) => section.parentId === parentId)\n\n const toggleSection = (sectionId: string): void => {\n setExpandedIds((previous) => {\n const next = new Set(previous)\n\n if (next.has(sectionId)) {\n next.delete(sectionId)\n } else {\n next.add(sectionId)\n }\n\n return next\n })\n }\n\n const renderSection = (\n section: SidebarSection,\n depth = 0,\n ): React.JSX.Element => {\n const children = childSections(section.id)\n const pages = section.pages ?? []\n const hasContent = children.length > 0 || pages.length > 0\n const isExpanded = expandedIds.has(section.id)\n const containsCurrentPage = Boolean(\n currentPageId &&\n (pages.some((page) => page.id === currentPageId) ||\n children.some((child) =>\n child.pages?.some((page) => page.id === currentPageId),\n )),\n )\n const regionId = `docs-sidebar-section-${section.id}`\n\n return (\n <div\n key={section.id}\n className={cx(\n 'docs__sidebar-section',\n containsCurrentPage && 'docs__sidebar-section--active',\n )}\n style={depth > 0 ? { paddingLeft: `${depth * 12}px` } : undefined}\n >\n <button\n type=\"button\"\n className=\"docs__sidebar-section-btn\"\n aria-expanded={hasContent ? isExpanded : undefined}\n aria-controls={hasContent ? regionId : undefined}\n onClick={() => {\n if (hasContent) {\n toggleSection(section.id)\n }\n }}\n >\n {section.icon ? (\n <span className=\"docs__sidebar-section-icon\" aria-hidden=\"true\">\n {section.icon}\n </span>\n ) : null}\n <span className=\"docs__sidebar-section-title\">{section.title}</span>\n {section.pageCount != null ? (\n <span className=\"docs__sidebar-section-count\">{section.pageCount}</span>\n ) : null}\n {hasContent ? (\n <svg\n className={cx(\n 'docs__sidebar-section-chevron',\n isExpanded && 'docs__sidebar-section-chevron--open',\n )}\n viewBox=\"0 0 16 16\"\n fill=\"none\"\n aria-hidden=\"true\"\n >\n <path d=\"M6 4l4 4-4 4\" stroke=\"currentColor\" strokeWidth=\"1.5\" />\n </svg>\n ) : null}\n </button>\n\n {hasContent && isExpanded ? (\n <div id={regionId} className=\"docs__sidebar-pages\">\n {pages.map((page) => (\n <button\n key={page.id}\n type=\"button\"\n onClick={() => onNavigate(page, section)}\n className={cx(\n 'docs__sidebar-link',\n page.id === currentPageId && 'docs__sidebar-link--active',\n )}\n aria-current={page.id === currentPageId ? 'page' : undefined}\n >\n <span className=\"docs__sidebar-section-title\">{page.title}</span>\n </button>\n ))}\n {children.map((child) => renderSection(child, depth + 1))}\n </div>\n ) : null}\n </div>\n )\n }\n\n return (\n <nav\n className={cx('docs__sidebar-nav', className)}\n aria-label=\"Documentation navigation\"\n >\n <div className=\"docs__sidebar-header\">Documentation</div>\n {topLevelSections.map((section) => renderSection(section))}\n </nav>\n )\n}\n","/**\n * @module docsReactCssTableOfContents\n * @package @geenius/docs/react-css\n * @description Renders the CSS-backed table of contents tree for docs pages so\n * heading navigation remains consistent with the shared vanilla CSS contract.\n */\n\n\nimport type { TocItem } from '@geenius/docs/shared'\nimport type React from 'react'\n\nimport { cx } from '../lib/cx'\n\ninterface TableOfContentsProps {\n toc: TocItem[]\n activeId?: string\n className?: string\n}\n\nfunction TocEntry({\n item,\n activeId,\n depth = 0,\n}: {\n item: TocItem\n activeId?: string\n depth?: number\n}): React.JSX.Element {\n return (\n <>\n <a\n href={`#${item.id}`}\n className={cx(\n 'docs__toc-item',\n activeId === item.id && 'docs__toc-item--active',\n depth === 1 && 'docs__toc-item--h3',\n depth >= 2 && 'docs__toc-item--h4',\n )}\n >\n {item.text}\n </a>\n {item.children.map((child) => (\n <TocEntry key={child.id} item={child} activeId={activeId} depth={depth + 1} />\n ))}\n </>\n )\n}\n\n/**\n * Renders the page table of contents.\n *\n * @param props - TOC entries and the currently active heading id.\n * @returns The TOC nav or `null` when the page has no headings.\n */\nexport function TableOfContents({\n toc,\n activeId,\n className,\n}: TableOfContentsProps): React.JSX.Element | null {\n if (toc.length === 0) {\n return null\n }\n\n return (\n <nav className={cx('docs__toc', className)} aria-label=\"On this page\">\n <h2 className=\"docs__toc-title\">On this page</h2>\n <div className=\"docs__toc-list\">\n {toc.map((item) => (\n <TocEntry key={item.id} item={item} activeId={activeId} />\n ))}\n </div>\n </nav>\n )\n}\n","/**\n * @module docsReactCssDocsLayout\n * @package @geenius/docs/react-css\n * @description Composes the standalone React CSS layout shell for docs pages,\n * including sidebar navigation, content chrome, and the right-rail TOC.\n */\n\nimport type { BreadcrumbItem, DocPage, DocSection, TocItem } from '@geenius/docs/shared'\nimport { cx } from '../lib/cx'\nimport { Breadcrumbs } from './Breadcrumbs'\nimport { DocSidebar } from './DocSidebar'\nimport { TableOfContents } from './TableOfContents'\n\ninterface DocsLayoutProps {\n sections: (DocSection & { pages?: DocPage[]; pageCount?: number })[]\n currentPage?: DocPage\n toc?: TocItem[]\n activeHeadingId?: string\n breadcrumbs?: BreadcrumbItem[]\n currentPageId?: string\n onNavigate: (page: DocPage, section: DocSection) => void\n children: React.ReactNode\n className?: string\n}\n\n/**\n * Layout shell used by standalone React CSS docs pages.\n *\n * @param props - Docs navigation state, TOC state, and page content.\n * @returns Full page layout for docs screens.\n */\nexport function DocsLayout({\n sections,\n toc,\n activeHeadingId,\n breadcrumbs,\n currentPageId,\n onNavigate,\n children,\n className,\n}: DocsLayoutProps): React.JSX.Element {\n return (\n <div className={cx('docs__layout', className)}>\n <aside className=\"docs__sidebar\">\n <DocSidebar\n sections={sections}\n currentPageId={currentPageId}\n onNavigate={onNavigate}\n />\n </aside>\n\n <main className=\"docs__main\">\n <div className=\"docs__content\">\n <div className=\"docs__content-inner\">\n <div className=\"docs__content-main\">\n {breadcrumbs?.length ? <Breadcrumbs items={breadcrumbs} /> : null}\n {children}\n </div>\n {toc?.length ? (\n <aside className=\"docs__article-toc\">\n <TableOfContents toc={toc} activeId={activeHeadingId} />\n </aside>\n ) : null}\n </div>\n </div>\n </main>\n </div>\n )\n}\n","/**\n * @module docsReactCssEditButton\n * @package @geenius/docs/react-css\n * @description Exposes the CSS-backed edit-link affordance for docs pages so\n * hosts can route users to the source repository without Tailwind classes.\n */\n\nimport type React from 'react'\n\nimport { cx } from '../lib/cx'\n\ninterface EditButtonProps {\n pageSlug: string\n editUrl?: string\n className?: string\n}\n\n/**\n * Renders the \"Edit this page\" link when source editing is configured.\n *\n * @param props - Page slug and optional base edit URL.\n * @returns The edit link or `null` when editing is disabled.\n */\nexport function EditButton({\n pageSlug,\n editUrl,\n className,\n}: EditButtonProps): React.JSX.Element | null {\n if (!editUrl) {\n return null\n }\n\n const href = `${editUrl.replace(/\\/$/, '')}/${pageSlug}.mdx`\n\n return (\n <a\n href={href}\n target=\"_blank\"\n rel=\"noreferrer noopener\"\n className={cx('docs__edit-link', className)}\n >\n <svg aria-hidden=\"true\" viewBox=\"0 0 16 16\" fill=\"none\" stroke=\"currentColor\" width=\"14\" height=\"14\">\n <path\n d=\"M11.5 1.5l3 3-9 9H2.5v-3l9-9z\"\n strokeWidth=\"1.5\"\n strokeLinejoin=\"round\"\n />\n </svg>\n Edit this page\n </a>\n )\n}\n","/**\n * @module docsReactCssPageNavigation\n * @package @geenius/docs/react-css\n * @description Renders previous and next page affordances for the React CSS\n * docs variant using the shared vanilla CSS navigation classes.\n */\n\nimport type React from 'react'\n\nimport { cx } from '../lib/cx'\n\ninterface PageNavigationProps {\n prev?: { title: string; href: string }\n next?: { title: string; href: string }\n className?: string\n}\n\n/**\n * Renders previous and next page links for the current article.\n *\n * @param props - Optional previous and next navigation links.\n * @returns Page navigation markup or `null` when neither link exists.\n */\nexport function PageNavigation({\n prev,\n next,\n className,\n}: PageNavigationProps): React.JSX.Element | null {\n if (!prev && !next) {\n return null\n }\n\n return (\n <nav className={cx('docs__page-nav', className)} aria-label=\"Page navigation\">\n {prev ? (\n <a href={prev.href} className=\"docs__page-nav-prev\">\n <span className=\"docs__page-nav-label\">Previous</span>\n <span className=\"docs__page-nav-title\">{prev.title}</span>\n </a>\n ) : (\n <div className=\"docs__page-nav-prev\" aria-hidden=\"true\" />\n )}\n {next ? (\n <a href={next.href} className=\"docs__page-nav-next\">\n <span className=\"docs__page-nav-label\">Next</span>\n <span className=\"docs__page-nav-title\">{next.title}</span>\n </a>\n ) : (\n <div className=\"docs__page-nav-next\" aria-hidden=\"true\" />\n )}\n </nav>\n )\n}\n","/**\n * @module docsReactCssVersionSelector\n * @package @geenius/docs/react-css\n * @description Provides the CSS-backed version selector for versioned docs\n * surfaces using a native select for accessibility and low runtime overhead.\n */\n\nimport type React from 'react'\n\nimport { cx } from '../lib/cx'\n\ninterface VersionSelectorProps {\n versions: string[]\n current: string\n onSelect: (version: string) => void\n className?: string\n}\n\n/**\n * Renders a version switcher when multiple docs versions exist.\n *\n * @param props - Supported versions, current version, and selection callback.\n * @returns The version selector or `null` when only one version exists.\n */\nexport function VersionSelector({\n versions,\n current,\n onSelect,\n className,\n}: VersionSelectorProps): React.JSX.Element | null {\n if (versions.length <= 1) {\n return null\n }\n\n return (\n <div className={cx('docs__version-selector', className)}>\n <select\n className=\"docs__version-select docs__version-select--active\"\n aria-label=\"Select documentation version\"\n value={current}\n onChange={(event) => onSelect(event.target.value)}\n >\n {versions.map((version) => (\n <option key={version} value={version}>\n v{version}\n </option>\n ))}\n </select>\n </div>\n )\n}\n","/**\n * @module docsReactCssUseDocSearch\n * @package @geenius/docs/react-css\n * @description Implements debounced search state for the React CSS docs\n * variant so modal and page-level search experiences share the same query and\n * loading lifecycle.\n */\n\n\nimport type { SearchResult } from '@geenius/docs/shared'\nimport { useCallback, useEffect, useRef, useState } from 'react'\n\n/**\n * Search state returned by the React CSS search hook.\n */\nexport interface DocSearchState {\n results: SearchResult[]\n isSearching: boolean\n query: string\n setQuery: (query: string) => void\n clearSearch: () => void\n}\n\n/**\n * Debounces doc search calls for the React CSS variant.\n *\n * @param searchFn - Search function that returns ranked docs results.\n * @param debounceMs - Delay before the search function is executed.\n * @returns Search state and control helpers.\n */\nexport function useDocSearch(\n searchFn: (query: string) => SearchResult[] | Promise<SearchResult[]>,\n debounceMs = 250,\n): DocSearchState {\n const [query, setQuery] = useState('')\n const [results, setResults] = useState<SearchResult[]>([])\n const [isSearching, setIsSearching] = useState(false)\n const timerRef = useRef<ReturnType<typeof setTimeout> | null>(null)\n\n useEffect(() => {\n if (!query.trim()) {\n setResults([])\n setIsSearching(false)\n return\n }\n\n setIsSearching(true)\n\n if (timerRef.current) {\n clearTimeout(timerRef.current)\n }\n\n timerRef.current = setTimeout(async () => {\n try {\n const nextResults = await searchFn(query)\n setResults(nextResults)\n } catch {\n setResults([])\n } finally {\n setIsSearching(false)\n }\n }, debounceMs)\n\n return () => {\n if (timerRef.current) {\n clearTimeout(timerRef.current)\n }\n }\n }, [debounceMs, query, searchFn])\n\n const clearSearch = useCallback(() => {\n setQuery('')\n setResults([])\n setIsSearching(false)\n }, [])\n\n return { results, isSearching, query, setQuery, clearSearch }\n}\n","/**\n * @module docsReactCssUseDocs\n * @package @geenius/docs/react-css\n * @description Provides the React CSS variant state bridge for docs trees. The\n * hook mirrors the Tailwind React surface while staying local to the CSS\n * package so the published CSS entry does not depend on the React variant.\n */\n\n\nimport {\n type DocPage,\n type DocSection,\n type DocsConfig,\n defaultDocsConfig,\n} from '@geenius/docs/shared'\nimport { useCallback, useMemo, useState } from 'react'\n\n/**\n * Local docs state returned by the React CSS hook.\n */\nexport interface DocsState {\n sections: (DocSection & { pages: DocPage[]; pageCount: number })[]\n currentSection: DocSection | null\n setSection: (section: DocSection | null) => void\n currentPage: DocPage | null\n setPage: (page: DocPage | null) => void\n searchQuery: string\n setSearchQuery: (query: string) => void\n isLoading: boolean\n config: DocsConfig\n flatPages: DocPage[]\n}\n\n/**\n * Resolves docs tree state for the React CSS variant.\n *\n * @param tree - Section tree with pages or `undefined` while data loads.\n * @param config - Optional runtime config overrides.\n * @returns Derived docs state for CSS-backed pages and components.\n */\nexport function useDocs(\n tree: (DocSection & { pages: DocPage[]; pageCount: number })[] | undefined,\n config?: Partial<DocsConfig>,\n): DocsState {\n const [currentSection, setSection] = useState<DocSection | null>(null)\n const [currentPage, setPage] = useState<DocPage | null>(null)\n const [searchQuery, setSearchQuery] = useState('')\n\n const mergedConfig = useMemo(\n () => ({ ...defaultDocsConfig, ...config }),\n [config],\n )\n const sections = useMemo(() => tree ?? [], [tree])\n const flatPages = useMemo(\n () => sections.flatMap((section) => section.pages ?? []),\n [sections],\n )\n const isLoading = tree === undefined\n\n const handleSetSection = useCallback((section: DocSection | null) => {\n setSection(section)\n setPage(null)\n }, [])\n\n return {\n sections,\n currentSection,\n setSection: handleSetSection,\n currentPage,\n setPage,\n searchQuery,\n setSearchQuery,\n isLoading,\n config: mergedConfig,\n flatPages,\n }\n}\n","/**\n * @module docsReactCssUseDocsAdmin\n * @package @geenius/docs/react-css\n * @description Adapts the docs admin mutation contract to stable React CSS\n * callbacks so admin surfaces can stay framework-native while the backend\n * remains transport-agnostic.\n */\n\nimport { useCallback } from 'react'\n\n/**\n * Stable admin actions exposed by the React CSS package.\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 * Binds transport-level mutation functions to stable admin callbacks.\n *\n * @param mutations - Low-level mutation handlers supplied by the host app.\n * @returns Stable admin actions for docs authoring flows.\n */\nexport function useDocsAdmin(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}): DocsAdminActions {\n const createSection = useCallback(\n async (data: Parameters<DocsAdminActions['createSection']>[0]) => {\n await mutations.createSection(data)\n },\n [mutations],\n )\n const updateSection = useCallback(\n async (sectionId: string, data: Record<string, unknown>) => {\n await mutations.updateSection({ sectionId, ...data })\n },\n [mutations],\n )\n const deleteSection = useCallback(\n async (sectionId: string) => {\n await mutations.deleteSection({ sectionId })\n },\n [mutations],\n )\n const reorderSections = useCallback(\n async (sectionIds: string[]) => {\n await mutations.reorderSections({ sectionIds })\n },\n [mutations],\n )\n const createPage = useCallback(\n async (data: Parameters<DocsAdminActions['createPage']>[0]) => {\n await mutations.createPage(data)\n },\n [mutations],\n )\n const updatePage = useCallback(\n async (pageId: string, data: Record<string, unknown>) => {\n await mutations.updatePage({ pageId, ...data })\n },\n [mutations],\n )\n const publishPage = useCallback(\n async (pageId: string) => {\n await mutations.publishPage({ pageId })\n },\n [mutations],\n )\n const archivePage = useCallback(\n async (pageId: string) => {\n await mutations.archivePage({ pageId })\n },\n [mutations],\n )\n const deletePage = useCallback(\n async (pageId: string) => {\n await mutations.deletePage({ pageId })\n },\n [mutations],\n )\n const reorderPages = useCallback(\n async (pageIds: string[]) => {\n await mutations.reorderPages({ pageIds })\n },\n [mutations],\n )\n const movePage = useCallback(\n async (pageId: string, newSectionId: string, newOrder: number) => {\n await mutations.movePage({ pageId, newSectionId, newOrder })\n },\n [mutations],\n )\n\n return {\n createSection,\n updateSection,\n deleteSection,\n reorderSections,\n createPage,\n updatePage,\n publishPage,\n archivePage,\n deletePage,\n reorderPages,\n movePage,\n }\n}\n","/**\n * @module docsReactCssUseTableOfContents\n * @package @geenius/docs/react-css\n * @description Tracks the extracted table of contents and active heading for\n * the React CSS docs variant so CSS-backed page chrome can stay in sync with\n * the rendered article structure.\n */\n\n\nimport { extractToc, type TocItem } from '@geenius/docs/shared'\nimport { useCallback, useEffect, useMemo, useRef, useState } from 'react'\n\n/**\n * Table-of-contents state returned by the React CSS hook.\n */\nexport interface TableOfContentsState {\n toc: TocItem[]\n activeId: string\n setActiveId: (id: string) => void\n}\n\n/**\n * Extracts and tracks the active table of contents entry for a page body.\n *\n * @param mdxContent - Markdown content used to derive headings.\n * @returns Extracted TOC entries and the current active heading id.\n */\nexport function useTableOfContents(\n mdxContent: string | undefined,\n): TableOfContentsState {\n const [activeId, setActiveId] = useState('')\n const observerRef = useRef<IntersectionObserver | null>(null)\n\n const toc = useMemo(() => {\n if (!mdxContent) {\n return []\n }\n\n return extractToc(mdxContent)\n }, [mdxContent])\n\n const flatIds = useMemo(() => {\n const ids: string[] = []\n\n const collect = (items: TocItem[]): void => {\n for (const item of items) {\n ids.push(item.id)\n collect(item.children)\n }\n }\n\n collect(toc)\n return ids\n }, [toc])\n\n const handleSetActiveId = useCallback((id: string) => {\n setActiveId(id)\n }, [])\n\n useEffect(() => {\n if (flatIds.length === 0) {\n return\n }\n\n observerRef.current?.disconnect()\n\n observerRef.current = 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 {\n rootMargin: '-80px 0px -70% 0px',\n threshold: 0,\n },\n )\n\n for (const id of flatIds) {\n const element = document.getElementById(id)\n if (element) {\n observerRef.current.observe(element)\n }\n }\n\n return () => {\n observerRef.current?.disconnect()\n }\n }, [flatIds])\n\n return { toc, activeId, setActiveId: handleSetActiveId }\n}\n","/**\n * @module docsReactCssDocSearchPage\n * @package @geenius/docs/react-css\n * @description Renders the standalone React CSS full-page docs search\n * experience using local search results and vanilla CSS layouts.\n */\n\n\nimport type { DocPage, DocSection, SearchResult } from '@geenius/docs/shared'\nimport { buildDocsIndex, highlightMatch, searchDocs } from '@geenius/docs/shared'\nimport { useCallback } from 'react'\n\nimport { useDocSearch } from '../hooks/useDocSearch'\nimport { cx } from '../lib/cx'\n\ninterface DocSearchPageProps {\n tree: (DocSection & { pages: DocPage[]; pageCount: number })[] | undefined\n onSelectPage?: (page: DocPage, section: DocSection) => void\n className?: string\n}\n\n/**\n * Full-page search experience for the standalone React CSS docs variant.\n *\n * @param props - Docs tree and optional page selection callback.\n * @returns Full-page search UI for docs results.\n */\nexport function DocSearchPage({\n tree,\n onSelectPage,\n className,\n}: DocSearchPageProps): React.JSX.Element {\n const sections = tree ?? []\n const flatPages = sections.flatMap((section) => section.pages ?? [])\n\n const searchFn = useCallback(\n (query: string): SearchResult[] => {\n const index = buildDocsIndex(flatPages, sections)\n return searchDocs(query, index)\n },\n [flatPages, sections],\n )\n\n const { query, results, isSearching, setQuery } = useDocSearch(searchFn)\n\n if (tree === undefined) {\n return (\n <div className={cx('docs__empty', className)} style={{ minHeight: '100vh' }}>\n <div className=\"docs__skeleton\" style={{ width: '24rem', height: '3rem' }} />\n </div>\n )\n }\n\n return (\n <div className={cx('docs__main', className)}>\n <div className=\"docs__content\">\n <div className=\"docs__content-inner\" style={{ display: 'block' }}>\n <header className=\"docs__header\">\n <h1 className=\"docs__title\">Search documentation</h1>\n </header>\n\n <div className=\"docs__search-page\">\n <input\n type=\"search\"\n value={query}\n onChange={(event) => setQuery(event.target.value)}\n placeholder=\"Type to search\"\n className=\"docs__search-input\"\n aria-label=\"Search documentation\"\n />\n\n {isSearching ? <p className=\"docs__search-status\">Searching…</p> : null}\n\n {results.length > 0 ? (\n <div className=\"docs__search-page-results\">\n {results.map((result) => {\n const section = sections.find(\n (currentSection) => currentSection.slug === result.sectionSlug,\n )\n const page = flatPages.find(\n (currentPage) => currentPage.id === result.pageId,\n )\n\n return (\n <button\n key={result.pageId}\n type=\"button\"\n className=\"docs__search-result-item\"\n onClick={() => {\n if (page && section) {\n onSelectPage?.(page, section)\n }\n }}\n >\n <div className=\"docs__search-result-header\">\n <span className=\"docs__search-result-section\">\n {result.sectionTitle}\n </span>\n <strong className=\"docs__search-result-title\">\n {result.pageTitle}\n </strong>\n </div>\n <span className=\"docs__search-result-highlight\">\n {highlightMatch(result.highlight, query)}\n </span>\n </button>\n )\n })}\n </div>\n ) : query.trim() && !isSearching ? (\n <div className=\"docs__empty\" style={{ minHeight: '16rem' }}>\n <div className=\"docs__empty-icon\" aria-hidden=\"true\">\n 🔍\n </div>\n <div className=\"docs__empty-title\">No results found</div>\n <div className=\"docs__empty-desc\">\n Try a different keyword or phrase.\n </div>\n </div>\n ) : null}\n </div>\n </div>\n </div>\n </div>\n )\n}\n","/**\n * @module docsReactCssDocsAdminPage\n * @package @geenius/docs/react-css\n * @description Renders the standalone React CSS admin surface for managing doc\n * sections and pages using the package-local vanilla CSS panel styles.\n */\n\n\nimport type { DocAccess, DocPage, DocSection } from '@geenius/docs/shared'\nimport { useMemo, useState } from 'react'\n\nimport type { DocsAdminActions } from '../hooks/useDocsAdmin'\nimport { cx } from '../lib/cx'\n\nconst DEFAULT_DOC_ACCESS: DocAccess = 'team'\n\nfunction isDocAccess(value: string): value is DocAccess {\n return value === 'public' || value === 'team' || value === 'admin'\n}\n\nfunction parseDocAccess(value: string): DocAccess {\n return isDocAccess(value) ? value : DEFAULT_DOC_ACCESS\n}\n\ninterface DocsAdminPageProps {\n tree: (DocSection & { pages: DocPage[]; pageCount: number })[] | undefined\n allPages?: DocPage[]\n admin: DocsAdminActions\n className?: string\n}\n\n/**\n * Admin page for section and page management in the React CSS variant.\n *\n * @param props - Tree data, optional page list, and admin actions.\n * @returns Admin UI for managing docs content.\n */\nexport function DocsAdminPage({\n tree,\n allPages,\n admin,\n className,\n}: DocsAdminPageProps): React.JSX.Element {\n const sections = useMemo(() => tree ?? [], [tree])\n const [selectedSectionId, setSelectedSectionId] = useState<string | null>(null)\n const [showSectionForm, setShowSectionForm] = useState(false)\n const [showPageForm, setShowPageForm] = useState(false)\n const [sectionForm, setSectionForm] = useState({\n title: '',\n slug: '',\n description: '',\n icon: '',\n access: DEFAULT_DOC_ACCESS,\n })\n const [pageForm, setPageForm] = useState({\n title: '',\n slug: '',\n content: '',\n access: DEFAULT_DOC_ACCESS,\n tags: '',\n })\n\n const selectedSection = sections.find((section) => section.id === selectedSectionId)\n const sectionPages = useMemo(() => {\n if (!selectedSection) {\n return []\n }\n\n if (allPages) {\n return allPages.filter((page) => page.sectionId === selectedSection.id)\n }\n\n return selectedSection.pages ?? []\n }, [allPages, selectedSection])\n const canCreateSection =\n sectionForm.title.trim().length > 0 && sectionForm.slug.trim().length > 0\n const canCreatePage =\n pageForm.title.trim().length > 0 &&\n pageForm.slug.trim().length > 0 &&\n pageForm.content.trim().length > 0\n\n if (tree === undefined) {\n return (\n <div className={cx('docs__empty', className)} style={{ minHeight: '100vh' }}>\n <div className=\"docs__skeleton\" style={{ width: '24rem', height: '3rem' }} />\n </div>\n )\n }\n\n return (\n <div className={cx('docs__main', className)}>\n <div className=\"docs__content\">\n <div className=\"docs__content-inner\" style={{ display: 'block' }}>\n <header className=\"docs__header\">\n <h1 className=\"docs__title\">Docs admin</h1>\n </header>\n\n <div className=\"docs__admin-grid\">\n <section className=\"docs__admin-panel\">\n <div className=\"docs__admin-panel-header\">\n <h2 className=\"docs__admin-panel-title\">Sections</h2>\n <button\n type=\"button\"\n className=\"docs__admin-add-btn\"\n onClick={() => setShowSectionForm((value) => !value)}\n >\n Add section\n </button>\n </div>\n\n {showSectionForm ? (\n <div className=\"docs__admin-form\">\n <label className=\"docs__admin-field\" htmlFor=\"docs-admin-section-title\">\n <span className=\"docs__admin-label\">Title</span>\n <input\n id=\"docs-admin-section-title\"\n className=\"docs__admin-input\"\n value={sectionForm.title}\n onChange={(event) =>\n setSectionForm((current) => ({\n ...current,\n title: event.target.value,\n }))\n }\n />\n </label>\n <label className=\"docs__admin-field\" htmlFor=\"docs-admin-section-slug\">\n <span className=\"docs__admin-label\">Slug</span>\n <input\n id=\"docs-admin-section-slug\"\n className=\"docs__admin-input\"\n value={sectionForm.slug}\n onChange={(event) =>\n setSectionForm((current) => ({\n ...current,\n slug: event.target.value,\n }))\n }\n />\n </label>\n <label className=\"docs__admin-field\" htmlFor=\"docs-admin-section-icon\">\n <span className=\"docs__admin-label\">Icon</span>\n <input\n id=\"docs-admin-section-icon\"\n className=\"docs__admin-input\"\n value={sectionForm.icon}\n onChange={(event) =>\n setSectionForm((current) => ({\n ...current,\n icon: event.target.value,\n }))\n }\n />\n </label>\n <label\n className=\"docs__admin-field\"\n htmlFor=\"docs-admin-section-description\"\n >\n <span className=\"docs__admin-label\">Description</span>\n <input\n id=\"docs-admin-section-description\"\n className=\"docs__admin-input\"\n value={sectionForm.description}\n onChange={(event) =>\n setSectionForm((current) => ({\n ...current,\n description: event.target.value,\n }))\n }\n />\n </label>\n <label className=\"docs__admin-field\" htmlFor=\"docs-admin-section-access\">\n <span className=\"docs__admin-label\">Access</span>\n <select\n id=\"docs-admin-section-access\"\n className=\"docs__admin-input\"\n value={sectionForm.access}\n onChange={(event) =>\n setSectionForm((current) => ({\n ...current,\n access: parseDocAccess(event.target.value),\n }))\n }\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 className=\"docs__admin-form-actions\">\n <button\n type=\"button\"\n className=\"docs__admin-add-btn\"\n disabled={!canCreateSection}\n onClick={async () => {\n await admin.createSection({\n ...sectionForm,\n order: sections.length,\n icon: sectionForm.icon || undefined,\n description: sectionForm.description || undefined,\n })\n setSectionForm({\n title: '',\n slug: '',\n description: '',\n icon: '',\n access: DEFAULT_DOC_ACCESS,\n })\n setShowSectionForm(false)\n }}\n >\n Create\n </button>\n <button\n type=\"button\"\n className=\"docs__admin-action-btn\"\n onClick={() => setShowSectionForm(false)}\n >\n Cancel\n </button>\n </div>\n </div>\n ) : null}\n\n {sections.length === 0 ? (\n <div className=\"docs__empty\" style={{ minHeight: '14rem' }}>\n <div className=\"docs__empty-title\">No sections</div>\n <div className=\"docs__empty-desc\">\n Create the first section to start authoring documentation.\n </div>\n </div>\n ) : (\n sections.map((section) => (\n <button\n key={section.id}\n type=\"button\"\n className={[\n 'docs__admin-section-item',\n section.id === selectedSectionId\n ? 'docs__admin-section-item--selected'\n : '',\n ]\n .filter(Boolean)\n .join(' ')}\n onClick={() => setSelectedSectionId(section.id)}\n >\n {section.icon ? <span>{section.icon}</span> : null}\n <span className=\"docs__sidebar-section-title\">{section.title}</span>\n <span className=\"docs__sidebar-section-count\">\n {section.pageCount ?? 0}\n </span>\n </button>\n ))\n )}\n </section>\n\n <section className=\"docs__admin-panel\">\n <div className=\"docs__admin-panel-header\">\n <h2 className=\"docs__admin-panel-title\">\n {selectedSection ? `Pages — ${selectedSection.title}` : 'Pages'}\n </h2>\n {selectedSection ? (\n <button\n type=\"button\"\n className=\"docs__admin-add-btn\"\n onClick={() => setShowPageForm((value) => !value)}\n >\n Add page\n </button>\n ) : null}\n </div>\n\n {selectedSection && showPageForm ? (\n <div className=\"docs__admin-form\">\n <label className=\"docs__admin-field\" htmlFor=\"docs-admin-page-title\">\n <span className=\"docs__admin-label\">Title</span>\n <input\n id=\"docs-admin-page-title\"\n className=\"docs__admin-input\"\n value={pageForm.title}\n onChange={(event) =>\n setPageForm((current) => ({\n ...current,\n title: event.target.value,\n }))\n }\n />\n </label>\n <label className=\"docs__admin-field\" htmlFor=\"docs-admin-page-slug\">\n <span className=\"docs__admin-label\">Slug</span>\n <input\n id=\"docs-admin-page-slug\"\n className=\"docs__admin-input\"\n value={pageForm.slug}\n onChange={(event) =>\n setPageForm((current) => ({\n ...current,\n slug: event.target.value,\n }))\n }\n />\n </label>\n <label className=\"docs__admin-field\" htmlFor=\"docs-admin-page-content\">\n <span className=\"docs__admin-label\">Content</span>\n <textarea\n id=\"docs-admin-page-content\"\n className=\"docs__admin-input docs__admin-textarea\"\n value={pageForm.content}\n onChange={(event) =>\n setPageForm((current) => ({\n ...current,\n content: event.target.value,\n }))\n }\n />\n </label>\n <label className=\"docs__admin-field\" htmlFor=\"docs-admin-page-tags\">\n <span className=\"docs__admin-label\">Tags</span>\n <input\n id=\"docs-admin-page-tags\"\n className=\"docs__admin-input\"\n value={pageForm.tags}\n onChange={(event) =>\n setPageForm((current) => ({\n ...current,\n tags: event.target.value,\n }))\n }\n />\n </label>\n <label className=\"docs__admin-field\" htmlFor=\"docs-admin-page-access\">\n <span className=\"docs__admin-label\">Access</span>\n <select\n id=\"docs-admin-page-access\"\n className=\"docs__admin-input\"\n value={pageForm.access}\n onChange={(event) =>\n setPageForm((current) => ({\n ...current,\n access: parseDocAccess(event.target.value),\n }))\n }\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 className=\"docs__admin-form-actions\">\n <button\n type=\"button\"\n className=\"docs__admin-add-btn\"\n disabled={!canCreatePage}\n onClick={async () => {\n await admin.createPage({\n title: pageForm.title,\n slug: pageForm.slug,\n content: pageForm.content,\n sectionId: selectedSection.id,\n access: pageForm.access,\n tags: pageForm.tags\n ? pageForm.tags.split(',').map((tag) => tag.trim())\n : [],\n order: sectionPages.length,\n })\n setPageForm({\n title: '',\n slug: '',\n content: '',\n access: DEFAULT_DOC_ACCESS,\n tags: '',\n })\n setShowPageForm(false)\n }}\n >\n Create\n </button>\n <button\n type=\"button\"\n className=\"docs__admin-action-btn\"\n onClick={() => setShowPageForm(false)}\n >\n Cancel\n </button>\n </div>\n </div>\n ) : null}\n\n {!selectedSection ? (\n <div className=\"docs__empty\" style={{ minHeight: '14rem' }}>\n <div className=\"docs__empty-title\">Select a section</div>\n <div className=\"docs__empty-desc\">\n Pick a section to inspect or create docs pages.\n </div>\n </div>\n ) : sectionPages.length === 0 ? (\n <div className=\"docs__empty\" style={{ minHeight: '14rem' }}>\n <div className=\"docs__empty-title\">No pages in this section</div>\n <div className=\"docs__empty-desc\">\n Add the first page to begin writing content.\n </div>\n </div>\n ) : (\n sectionPages.map((page) => (\n <div key={page.id} className=\"docs__admin-page-item\">\n <div className=\"docs__admin-page-info\">\n <div className=\"docs__admin-page-title\">{page.title}</div>\n <div className=\"docs__admin-page-slug\">/{page.slug}</div>\n </div>\n <span\n className={[\n 'docs__status-badge',\n page.status === 'published'\n ? 'docs__status-badge--published'\n : page.status === 'archived'\n ? 'docs__status-badge--archived'\n : 'docs__status-badge--draft',\n ].join(' ')}\n >\n {page.status}\n </span>\n <div className=\"docs__admin-actions\">\n {page.status === 'draft' ? (\n <button\n type=\"button\"\n className=\"docs__admin-action-btn docs__admin-action-btn--publish\"\n onClick={() => admin.publishPage(page.id)}\n >\n Publish\n </button>\n ) : null}\n {page.status === 'published' ? (\n <button\n type=\"button\"\n className=\"docs__admin-action-btn docs__admin-action-btn--archive\"\n onClick={() => admin.archivePage(page.id)}\n >\n Archive\n </button>\n ) : null}\n <button\n type=\"button\"\n className=\"docs__admin-action-btn docs__admin-action-btn--delete\"\n onClick={() => admin.deletePage(page.id)}\n >\n Delete\n </button>\n </div>\n </div>\n ))\n )}\n </section>\n </div>\n </div>\n </div>\n </div>\n )\n}\n","/**\n * @module docsReactCssDocsIndexPage\n * @package @geenius/docs/react-css\n * @description Renders the standalone React CSS docs landing page with\n * section cards, recent pages, and a package-local search trigger.\n */\n\n\nimport type { DocPage, DocSection, SearchResult } from '@geenius/docs/shared'\nimport { buildDocsIndex, searchDocs } from '@geenius/docs/shared'\nimport { useCallback, useEffect, useState } from 'react'\n\nimport { DocSearch } from '../components/DocSearch'\nimport { useDocSearch } from '../hooks/useDocSearch'\nimport { useDocs } from '../hooks/useDocs'\nimport { cx } from '../lib/cx'\n\ninterface DocsIndexPageProps {\n tree: (DocSection & { pages: DocPage[]; pageCount: number })[] | undefined\n onSelectPage?: (page: DocPage, section: DocSection) => void\n className?: string\n}\n\n/**\n * Landing page for the standalone React CSS docs experience.\n *\n * @param props - Docs tree plus optional page selection handler.\n * @returns Landing page UI for the React CSS docs variant.\n */\nexport function DocsIndexPage({\n tree,\n onSelectPage,\n className,\n}: DocsIndexPageProps): React.JSX.Element {\n const docs = useDocs(tree)\n const [isSearchOpen, setIsSearchOpen] = useState(false)\n\n const searchFn = useCallback(\n (query: string): SearchResult[] => {\n const index = buildDocsIndex(docs.flatPages, docs.sections)\n return searchDocs(query, index)\n },\n [docs.flatPages, docs.sections],\n )\n\n const search = useDocSearch(searchFn)\n\n useEffect(() => {\n const handleKeydown = (event: KeyboardEvent): void => {\n if (\n docs.config.cmdKEnabled &&\n (event.metaKey || event.ctrlKey) &&\n event.key.toLowerCase() === 'k'\n ) {\n event.preventDefault()\n setIsSearchOpen(true)\n }\n }\n\n document.addEventListener('keydown', handleKeydown)\n return () => document.removeEventListener('keydown', handleKeydown)\n }, [docs.config.cmdKEnabled])\n\n if (docs.isLoading) {\n return (\n <div className={cx('docs__empty', className)} style={{ minHeight: '100vh' }}>\n <div className=\"docs__skeleton\" style={{ width: '24rem', height: '3rem' }} />\n </div>\n )\n }\n\n if (docs.sections.length === 0) {\n return (\n <div className={cx('docs__empty', className)} style={{ minHeight: '100vh' }}>\n <div className=\"docs__empty-icon\" aria-hidden=\"true\">\n 📚\n </div>\n <div className=\"docs__empty-title\">No documentation yet</div>\n <div className=\"docs__empty-desc\">\n Create a section and at least one page to populate the docs index.\n </div>\n </div>\n )\n }\n\n const recentPages = docs.flatPages\n .slice()\n .sort(\n (left, right) =>\n new Date(right.updatedAt).getTime() - new Date(left.updatedAt).getTime(),\n )\n .slice(0, 6)\n\n return (\n <div className={cx('docs__main', className)}>\n <div className=\"docs__content\">\n <div className=\"docs__content-inner\" style={{ display: 'block' }}>\n <header className=\"docs__header\">\n <h1 className=\"docs__title\">Documentation</h1>\n <p>\n Browse guides, references, and implementation notes across the docs\n workspace.\n </p>\n </header>\n\n <div className=\"docs__search-bar\">\n <button\n type=\"button\"\n className=\"docs__search-trigger\"\n aria-haspopup=\"dialog\"\n onClick={() => setIsSearchOpen(true)}\n >\n <svg\n className=\"docs__search-trigger-icon\"\n viewBox=\"0 0 20 20\"\n fill=\"currentColor\"\n aria-hidden=\"true\"\n >\n <path\n fillRule=\"evenodd\"\n 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\"\n clipRule=\"evenodd\"\n />\n </svg>\n <span className=\"docs__search-trigger-text\">\n Search documentation…\n </span>\n <span className=\"docs__search-trigger-kbd\">⌘K</span>\n </button>\n </div>\n\n <div className=\"docs__section-grid\">\n {docs.sections\n .filter((section) => !section.parentId)\n .map((section) => (\n <button\n key={section.id}\n type=\"button\"\n className=\"docs__section-card\"\n onClick={() => {\n const firstPage = section.pages?.[0]\n if (firstPage) {\n onSelectPage?.(firstPage, section)\n }\n }}\n >\n {section.icon ? (\n <span className=\"docs__section-card-icon\" aria-hidden=\"true\">\n {section.icon}\n </span>\n ) : null}\n <span className=\"docs__section-card-title\">{section.title}</span>\n {section.description ? (\n <span className=\"docs__section-card-desc\">\n {section.description}\n </span>\n ) : null}\n <span className=\"docs__section-card-meta\">\n {section.pageCount ?? section.pages?.length ?? 0} pages\n </span>\n </button>\n ))}\n </div>\n\n {recentPages.length > 0 ? (\n <>\n <h2>Recently updated</h2>\n <div className=\"docs__section-grid\">\n {recentPages.map((page) => {\n const section = docs.sections.find(\n (currentSection) => currentSection.id === page.sectionId,\n )\n\n return (\n <button\n key={page.id}\n type=\"button\"\n className=\"docs__section-card\"\n onClick={() => {\n if (section) {\n onSelectPage?.(page, section)\n }\n }}\n >\n <span className=\"docs__section-card-title\">{page.title}</span>\n <span className=\"docs__section-card-desc\">\n {section?.title ?? 'Unsectioned'}\n </span>\n <span className=\"docs__section-card-meta\">\n {page.readingTime} min read\n </span>\n </button>\n )\n })}\n </div>\n </>\n ) : null}\n </div>\n </div>\n\n <DocSearch\n results={search.results}\n query={search.query}\n onQuery={search.setQuery}\n onSelect={(result) => {\n setIsSearchOpen(false)\n search.clearSearch()\n\n const section = docs.sections.find(\n (currentSection) => currentSection.slug === result.sectionSlug,\n )\n const page = docs.flatPages.find(\n (currentPage) => currentPage.id === result.pageId,\n )\n\n if (page && section) {\n onSelectPage?.(page, section)\n }\n }}\n isOpen={isSearchOpen}\n onClose={() => {\n setIsSearchOpen(false)\n search.clearSearch()\n }}\n />\n </div>\n )\n}\n","/**\n * @module docsReactCssDocViewPage\n * @package @geenius/docs/react-css\n * @description Renders the standalone React CSS docs detail page with local\n * layout, TOC tracking, navigation footer, and metadata presentation.\n */\n\n\nimport type { DocPage as DocPageType, DocSection } from '@geenius/docs/shared'\nimport { buildBreadcrumbs } from '@geenius/docs/shared'\nimport { useEffect, useMemo } from 'react'\n\nimport { DocPage } from '../components/DocPage'\nimport { DocsLayout } from '../components/DocsLayout'\nimport { EditButton } from '../components/EditButton'\nimport { PageNavigation } from '../components/PageNavigation'\nimport { useDocs } from '../hooks/useDocs'\nimport { useTableOfContents } from '../hooks/useTableOfContents'\nimport { cx } from '../lib/cx'\n\ninterface DocViewPageProps {\n tree: (DocSection & { pages: DocPageType[]; pageCount: number })[] | undefined\n page: DocPageType | null | undefined\n editPageUrl?: string\n onNavigate: (page: DocPageType, section: DocSection) => void\n onIncrementView?: (pageId: string) => void\n className?: string\n}\n\n/**\n * Page view for the standalone React CSS docs variant.\n *\n * @param props - Docs tree, selected page, and page-level event handlers.\n * @returns Detailed page view or an appropriate empty/loading state.\n */\nexport function DocViewPage({\n tree,\n page,\n editPageUrl,\n onNavigate,\n onIncrementView,\n className,\n}: DocViewPageProps): React.JSX.Element {\n const docs = useDocs(tree)\n const { toc, activeId } = useTableOfContents(page?.content)\n\n useEffect(() => {\n if (page?.id) {\n onIncrementView?.(page.id)\n }\n }, [onIncrementView, page?.id])\n\n const breadcrumbs = useMemo(() => {\n if (!page) {\n return []\n }\n\n return buildBreadcrumbs(docs.sections, page.sectionId, page.slug)\n }, [docs.sections, page])\n\n const navigation = useMemo(() => {\n if (!page) {\n return { prev: undefined, next: undefined }\n }\n\n const flatPages = docs.flatPages\n const currentIndex = flatPages.findIndex(\n (currentPage) => currentPage.id === page.id,\n )\n const prevPage = currentIndex > 0 ? flatPages[currentIndex - 1] : undefined\n const nextPage =\n currentIndex >= 0 && currentIndex < flatPages.length - 1\n ? flatPages[currentIndex + 1]\n : undefined\n const prevSection = prevPage\n ? docs.sections.find((currentSection) => currentSection.id === prevPage.sectionId)\n : undefined\n const nextSection = nextPage\n ? docs.sections.find((currentSection) => currentSection.id === nextPage.sectionId)\n : undefined\n\n return {\n prev: prevPage\n ? {\n title: prevPage.title,\n href: `/docs/${prevSection?.slug ?? ''}/${prevPage.slug}`,\n }\n : undefined,\n next: nextPage\n ? {\n title: nextPage.title,\n href: `/docs/${nextSection?.slug ?? ''}/${nextPage.slug}`,\n }\n : undefined,\n }\n }, [docs.flatPages, docs.sections, page])\n\n if (docs.isLoading || page === undefined) {\n return (\n <div className={cx('docs__empty', className)} style={{ minHeight: '100vh' }}>\n <div className=\"docs__skeleton\" style={{ width: '24rem', height: '3rem' }} />\n </div>\n )\n }\n\n if (!page) {\n return (\n <div className={cx('docs__empty', className)} style={{ minHeight: '100vh' }}>\n <div className=\"docs__empty-icon\" aria-hidden=\"true\">\n 🔍\n </div>\n <div className=\"docs__empty-title\">Page not found</div>\n <div className=\"docs__empty-desc\">\n The requested documentation page could not be resolved.\n </div>\n </div>\n )\n }\n\n return (\n <DocsLayout\n sections={docs.sections}\n toc={toc}\n activeHeadingId={activeId}\n breadcrumbs={breadcrumbs}\n currentPageId={page.id}\n onNavigate={onNavigate}\n className={className}\n >\n <header className=\"docs__page-header\">\n <h1 className=\"docs__page-title\">{page.title}</h1>\n <div className=\"docs__reading-meta\">\n <span className=\"docs__reading-meta-author\">\n {page.author.avatar ? (\n <img\n src={page.author.avatar}\n alt=\"\"\n className=\"docs__reading-meta-avatar\"\n />\n ) : (\n <span className=\"docs__reading-meta-avatar-placeholder\">\n {page.author.name[0]}\n </span>\n )}\n {page.author.name}\n </span>\n {docs.config.showReadingTime ? <span>{page.readingTime} min read</span> : null}\n {page.lastEditedBy ? (\n <span>Edited by {page.lastEditedBy.name}</span>\n ) : null}\n {docs.config.showViewCount && page.viewCount > 0 ? (\n <span>{page.viewCount.toLocaleString()} views</span>\n ) : null}\n </div>\n {page.tags.length ? (\n <div className=\"docs__tag-list\">\n {page.tags.map((tag) => (\n <span key={tag} className=\"docs__tag docs__tag--badge\">\n {tag}\n </span>\n ))}\n </div>\n ) : null}\n </header>\n\n <DocPage page={page} />\n\n <div className=\"docs__page-footer\">\n <EditButton pageSlug={page.slug} editUrl={editPageUrl} />\n {page.version ? <span>v{page.version}</span> : null}\n </div>\n\n <PageNavigation prev={navigation.prev} next={navigation.next} />\n </DocsLayout>\n )\n}\n"]}
|