@geenius/docs 0.1.0 → 0.4.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.
Files changed (158) hide show
  1. package/CHANGELOG.md +7 -0
  2. package/README.md +53 -1
  3. package/package.json +96 -13
  4. package/packages/convex/dist/index.d.ts +503 -0
  5. package/packages/convex/dist/index.js +482 -0
  6. package/packages/convex/dist/index.js.map +1 -0
  7. package/packages/react/dist/index.d.ts +439 -0
  8. package/packages/react/dist/index.js +4954 -0
  9. package/packages/react/dist/index.js.map +1 -0
  10. package/packages/react-css/{src/styles.css → dist/index.css} +183 -223
  11. package/packages/react-css/dist/index.css.map +1 -0
  12. package/packages/react-css/dist/index.d.ts +443 -0
  13. package/packages/react-css/dist/index.js +5058 -0
  14. package/packages/react-css/dist/index.js.map +1 -0
  15. package/packages/shared/dist/index.d.ts +684 -0
  16. package/packages/shared/dist/index.js +788 -0
  17. package/packages/shared/dist/index.js.map +1 -0
  18. package/packages/solidjs/dist/index.d.ts +435 -0
  19. package/packages/solidjs/dist/index.js +4584 -0
  20. package/packages/solidjs/dist/index.js.map +1 -0
  21. package/packages/solidjs-css/{src/styles.css → dist/index.css} +183 -223
  22. package/packages/solidjs-css/dist/index.css.map +1 -0
  23. package/packages/solidjs-css/dist/index.d.ts +432 -0
  24. package/packages/solidjs-css/dist/index.js +4934 -0
  25. package/packages/solidjs-css/dist/index.js.map +1 -0
  26. package/.changeset/config.json +0 -11
  27. package/.github/CODEOWNERS +0 -1
  28. package/.github/ISSUE_TEMPLATE/bug_report.md +0 -16
  29. package/.github/ISSUE_TEMPLATE/feature_request.md +0 -11
  30. package/.github/PULL_REQUEST_TEMPLATE.md +0 -10
  31. package/.github/dependabot.yml +0 -11
  32. package/.github/workflows/ci.yml +0 -23
  33. package/.github/workflows/release.yml +0 -29
  34. package/.nvmrc +0 -1
  35. package/.project/ACCOUNT.yaml +0 -4
  36. package/.project/IDEAS.yaml +0 -7
  37. package/.project/PROJECT.yaml +0 -11
  38. package/.project/ROADMAP.yaml +0 -15
  39. package/CODE_OF_CONDUCT.md +0 -16
  40. package/CONTRIBUTING.md +0 -26
  41. package/SECURITY.md +0 -15
  42. package/SUPPORT.md +0 -8
  43. package/packages/convex/README.md +0 -1
  44. package/packages/convex/package.json +0 -12
  45. package/packages/convex/src/convex.config.ts +0 -3
  46. package/packages/convex/src/index.ts +0 -3
  47. package/packages/convex/src/mutations.ts +0 -270
  48. package/packages/convex/src/queries.ts +0 -175
  49. package/packages/convex/src/schema.ts +0 -55
  50. package/packages/react/README.md +0 -1
  51. package/packages/react/package.json +0 -36
  52. package/packages/react/src/DocsLayout.tsx +0 -116
  53. package/packages/react/src/DocsProvider.tsx +0 -93
  54. package/packages/react/src/RouterDocsContent.tsx +0 -148
  55. package/packages/react/src/RouterDocsLayout.tsx +0 -161
  56. package/packages/react/src/components/Breadcrumbs.tsx +0 -34
  57. package/packages/react/src/components/DocPage.tsx +0 -191
  58. package/packages/react/src/components/DocSearch.tsx +0 -140
  59. package/packages/react/src/components/DocSidebar.tsx +0 -86
  60. package/packages/react/src/components/DocsLayout.tsx +0 -62
  61. package/packages/react/src/components/EditButton.tsx +0 -26
  62. package/packages/react/src/components/PageNavigation.tsx +0 -45
  63. package/packages/react/src/components/TableOfContents.tsx +0 -46
  64. package/packages/react/src/components/VersionSelector.tsx +0 -60
  65. package/packages/react/src/components/index.ts +0 -9
  66. package/packages/react/src/hooks/index.ts +0 -8
  67. package/packages/react/src/hooks/useDocSearch.ts +0 -55
  68. package/packages/react/src/hooks/useDocs.ts +0 -57
  69. package/packages/react/src/hooks/useDocsAdmin.ts +0 -151
  70. package/packages/react/src/hooks/useTableOfContents.ts +0 -66
  71. package/packages/react/src/index.ts +0 -38
  72. package/packages/react/src/pages/DocSearchPage.tsx +0 -129
  73. package/packages/react/src/pages/DocViewPage.tsx +0 -158
  74. package/packages/react/src/pages/DocsAdminPage.tsx +0 -330
  75. package/packages/react/src/pages/DocsIndexPage.tsx +0 -172
  76. package/packages/react/src/pages/index.ts +0 -4
  77. package/packages/react/src/useDocs.ts +0 -58
  78. package/packages/react/tsup.config.ts +0 -12
  79. package/packages/react-css/README.md +0 -1
  80. package/packages/react-css/package.json +0 -37
  81. package/packages/react-css/src/DocsLayout.tsx +0 -117
  82. package/packages/react-css/src/DocsProvider.tsx +0 -93
  83. package/packages/react-css/src/RouterDocsContent.tsx +0 -60
  84. package/packages/react-css/src/RouterDocsLayout.tsx +0 -101
  85. package/packages/react-css/src/components/DocPage.tsx +0 -21
  86. package/packages/react-css/src/components/DocSearch.tsx +0 -55
  87. package/packages/react-css/src/components/DocSidebar.tsx +0 -56
  88. package/packages/react-css/src/components/DocsLayout.tsx +0 -28
  89. package/packages/react-css/src/components/common.tsx +0 -93
  90. package/packages/react-css/src/components/index.ts +0 -5
  91. package/packages/react-css/src/hooks/index.ts +0 -2
  92. package/packages/react-css/src/index.ts +0 -6
  93. package/packages/react-css/src/index.tsx +0 -3
  94. package/packages/react-css/src/pages/DocViewPage.tsx +0 -78
  95. package/packages/react-css/src/pages/DocsAdminPage.tsx +0 -101
  96. package/packages/react-css/src/pages/DocsIndexPage.tsx +0 -68
  97. package/packages/react-css/src/pages/index.ts +0 -3
  98. package/packages/react-css/src/useDocs.ts +0 -58
  99. package/packages/react-css/tsconfig.json +0 -19
  100. package/packages/react-css/tsup.config.ts +0 -10
  101. package/packages/shared/README.md +0 -1
  102. package/packages/shared/package.json +0 -31
  103. package/packages/shared/src/__tests__/docs.test.ts +0 -69
  104. package/packages/shared/src/config.ts +0 -80
  105. package/packages/shared/src/index.ts +0 -179
  106. package/packages/shared/src/providers/astro.ts +0 -94
  107. package/packages/shared/src/providers/fumadocs.ts +0 -116
  108. package/packages/shared/src/providers/internal.ts +0 -80
  109. package/packages/shared/src/types.ts +0 -73
  110. package/packages/shared/tsconfig.json +0 -18
  111. package/packages/shared/tsup.config.ts +0 -12
  112. package/packages/shared/vitest.config.ts +0 -4
  113. package/packages/solidjs/README.md +0 -1
  114. package/packages/solidjs/package.json +0 -33
  115. package/packages/solidjs/src/DocsLayout.tsx +0 -87
  116. package/packages/solidjs/src/DocsProvider.tsx +0 -95
  117. package/packages/solidjs/src/RouterDocsContent.tsx +0 -147
  118. package/packages/solidjs/src/RouterDocsLayout.tsx +0 -161
  119. package/packages/solidjs/src/components/Breadcrumbs.tsx +0 -27
  120. package/packages/solidjs/src/components/DocPage.tsx +0 -110
  121. package/packages/solidjs/src/components/DocSearch.tsx +0 -81
  122. package/packages/solidjs/src/components/DocSidebar.tsx +0 -92
  123. package/packages/solidjs/src/components/DocsLayout.tsx +0 -38
  124. package/packages/solidjs/src/components/EditButton.tsx +0 -15
  125. package/packages/solidjs/src/components/PageNavigation.tsx +0 -31
  126. package/packages/solidjs/src/components/TableOfContents.tsx +0 -41
  127. package/packages/solidjs/src/components/VersionSelector.tsx +0 -30
  128. package/packages/solidjs/src/components/index.ts +0 -9
  129. package/packages/solidjs/src/createDocs.ts +0 -62
  130. package/packages/solidjs/src/index.ts +0 -28
  131. package/packages/solidjs/src/pages/DocSearchPage.tsx +0 -72
  132. package/packages/solidjs/src/pages/DocViewPage.tsx +0 -80
  133. package/packages/solidjs/src/pages/DocsAdminPage.tsx +0 -123
  134. package/packages/solidjs/src/pages/DocsIndexPage.tsx +0 -85
  135. package/packages/solidjs/src/pages/index.ts +0 -4
  136. package/packages/solidjs/src/primitives/createDocSearch.ts +0 -42
  137. package/packages/solidjs/src/primitives/createDocs.ts +0 -35
  138. package/packages/solidjs/src/primitives/createDocsAdmin.ts +0 -63
  139. package/packages/solidjs/src/primitives/createTableOfContents.ts +0 -51
  140. package/packages/solidjs/src/primitives/index.ts +0 -4
  141. package/packages/solidjs/tsup.config.ts +0 -12
  142. package/packages/solidjs-css/README.md +0 -1
  143. package/packages/solidjs-css/package.json +0 -36
  144. package/packages/solidjs-css/src/DocsLayout.tsx +0 -106
  145. package/packages/solidjs-css/src/DocsProvider.tsx +0 -95
  146. package/packages/solidjs-css/src/RouterDocsContent.tsx +0 -54
  147. package/packages/solidjs-css/src/RouterDocsLayout.tsx +0 -104
  148. package/packages/solidjs-css/src/createDocs.ts +0 -62
  149. package/packages/solidjs-css/src/index.ts +0 -7
  150. package/packages/solidjs-css/src/index.tsx +0 -17
  151. package/packages/solidjs-css/src/pages/DocViewPage.tsx +0 -111
  152. package/packages/solidjs-css/src/pages/DocsAdminPage.tsx +0 -332
  153. package/packages/solidjs-css/src/pages/DocsIndexPage.tsx +0 -116
  154. package/packages/solidjs-css/src/pages/index.ts +0 -3
  155. package/packages/solidjs-css/src/primitives/index.ts +0 -1
  156. package/packages/solidjs-css/tsconfig.json +0 -20
  157. package/packages/solidjs-css/tsup.config.ts +0 -10
  158. package/pnpm-workspace.yaml +0 -2
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/errors.ts","../src/config.ts","../src/utilities.ts","../src/providers/astro.ts","../src/providers/fumadocs.ts","../src/providers/internal.ts"],"names":["ErrorCode","sectionTitle","asString","asAccess","asStatus","asTags","createSidebar"],"mappings":"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","file":"index.js","sourcesContent":["/**\n * @module docsErrors\n * @package @geenius/docs-shared\n * @description Defines the typed error hierarchy used by the docs package so\n * configuration, provider, and context failures can be caught and handled without\n * relying on raw `Error` instances.\n */\n\nimport {\n ErrorCode,\n GeeniusError,\n type GeeniusErrorOptions,\n} from '@geenius/tools/errors'\n\n/**\n * Supported structured error codes for docs-specific failures.\n */\nexport type DocsErrorCode =\n | ErrorCode.INVALID_CONFIG\n | ErrorCode.MISSING_CONFIG\n | ErrorCode.NOT_FOUND\n | ErrorCode.INTERNAL_ERROR\n\n/**\n * Structured error options for docs-specific failures.\n */\nexport interface DocsErrorOptions\n extends Omit<GeeniusErrorOptions, 'code'> {\n code: DocsErrorCode\n}\n\n/**\n * Base structured error for the docs package.\n *\n * @param options - Error metadata describing the docs failure.\n */\nexport class DocsError extends GeeniusError {\n constructor(options: DocsErrorOptions) {\n super(options)\n this.name = 'DocsError'\n Object.setPrototypeOf(this, DocsError.prototype)\n }\n}\n\n/**\n * Error thrown when docs configuration is missing or invalid.\n *\n * @param options - Error metadata describing the configuration problem.\n */\nexport class DocsConfigurationError extends DocsError {\n constructor(\n options: Omit<DocsErrorOptions, 'code'> & {\n code?: ErrorCode.INVALID_CONFIG | ErrorCode.MISSING_CONFIG\n },\n ) {\n super({\n ...options,\n code: options.code ?? ErrorCode.INVALID_CONFIG,\n })\n this.name = 'DocsConfigurationError'\n Object.setPrototypeOf(this, DocsConfigurationError.prototype)\n }\n}\n\n/**\n * Error thrown when a docs provider or provider-backed hook is used incorrectly.\n *\n * @param options - Error metadata describing the provider failure.\n */\nexport class DocsProviderError extends DocsError {\n constructor(\n options: Omit<DocsErrorOptions, 'code'> & {\n code?: ErrorCode.NOT_FOUND | ErrorCode.INTERNAL_ERROR\n },\n ) {\n super({\n ...options,\n code: options.code ?? ErrorCode.INTERNAL_ERROR,\n })\n this.name = 'DocsProviderError'\n Object.setPrototypeOf(this, DocsProviderError.prototype)\n }\n}\n","/**\n * @module docsConfig\n * @package @geenius/docs-shared\n * @description Stores and resolves the shared docs configuration used by every\n * framework variant. The config is intentionally process-local so applications\n * can opt into a single docs baseline during bootstrap.\n */\n\nimport { ErrorCode } from '@geenius/tools/errors'\nimport { DocsConfigurationError } from './errors'\nimport type { DocsConfig } from './types'\n\nlet _config: DocsConfig | null = null\n\n/**\n * Initialize the docs system with a configuration.\n * Call this once at app startup before using any docs features.\n *\n * @param config - Configuration overrides applied for the current app runtime.\n * @returns Nothing. The docs config is stored in module state.\n *\n * @example\n * ```ts\n * import { configureDocs } from '@geenius/docs-shared'\n *\n * configureDocs({\n * baseUrl: '/docs',\n * siteName: 'My Docs',\n * versionsEnabled: true,\n * })\n * ```\n */\nexport function configureDocs(config: DocsConfig): void {\n _config = config\n}\n\n/**\n * Get the current docs configuration.\n * Throws if `configureDocs()` has not been called.\n *\n * @returns The active docs configuration for the current runtime.\n * @throws {DocsConfigurationError} When the docs config has not been initialised.\n */\nexport function getDocsConfig(): DocsConfig {\n if (!_config) {\n throw new DocsConfigurationError({\n code: ErrorCode.MISSING_CONFIG,\n message: 'Docs not configured. Call configureDocs() first.',\n context: { function: 'getDocsConfig' },\n })\n }\n return _config\n}\n\n/**\n * Check if docs have been configured.\n *\n * @returns `true` when a config has been registered for the current runtime.\n */\nexport function isDocsConfigured(): boolean {\n return _config !== null\n}\n\n/**\n * Reset docs configuration (useful for testing).\n *\n * @returns Nothing. The stored docs config is cleared.\n */\nexport function resetDocsConfig(): void {\n _config = null\n}\n\n/**\n * Create a fully resolved docs config with defaults.\n *\n * @param overrides - Partial config overrides supplied by the caller.\n * @returns A complete docs config with package defaults applied.\n */\nexport function defineDocsConfig(\n overrides: Partial<DocsConfig>\n): DocsConfig {\n return {\n baseUrl: '/docs',\n defaultAccess: 'public',\n versionsEnabled: false,\n cmdKEnabled: true,\n showReadingTime: true,\n showLastEdited: true,\n printModeEnabled: true,\n ...overrides,\n }\n}\n\n/**\n * Merge an existing config with partial overrides.\n *\n * @param base - Existing base config to extend.\n * @param overrides - Partial config overrides supplied by the caller.\n * @returns A merged docs config object.\n */\nexport function mergeDocsConfig(\n base: DocsConfig,\n overrides: Partial<DocsConfig>\n): DocsConfig {\n return {\n ...base,\n ...overrides,\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 astroDocsProvider\n * @package @geenius/docs-shared\n * @description Implements the Astro-oriented provider used to normalise Markdown\n * and MDX files discovered from Astro content collections into the shared docs\n * contract consumed by the framework variants.\n */\n\nimport matter from 'gray-matter'\n\nimport type {\n DocAccess,\n DocNavigationLink,\n DocPage,\n DocStatus,\n DocsPage,\n DocsProvider,\n DocsSearchResult,\n DocsSidebar,\n DocsSidebarItem,\n} from '../types'\nimport { calcWordCount, extractToc, highlightMatch, slugify } from '../utilities'\n\nfunction sectionTitle(sectionId: string): string {\n return sectionId\n .split(/[-_/]/)\n .filter(Boolean)\n .map((part) => `${part[0]?.toUpperCase() ?? ''}${part.slice(1)}`)\n .join(' ') || 'General'\n}\n\nfunction asString(value: unknown): string | undefined {\n return typeof value === 'string' && value.trim().length > 0\n ? value.trim()\n : undefined\n}\n\nfunction asNumber(value: unknown): number {\n if (typeof value === 'number' && Number.isFinite(value)) {\n return value\n }\n\n if (typeof value === 'string') {\n const parsed = Number.parseInt(value, 10)\n if (Number.isFinite(parsed)) {\n return parsed\n }\n }\n\n return 0\n}\n\nfunction asAccess(value: unknown): DocAccess {\n if (value === 'team' || value === 'admin') {\n return value\n }\n\n return 'public'\n}\n\nfunction asStatus(value: unknown): DocStatus {\n if (value === 'draft' || value === 'archived') {\n return value\n }\n\n return 'published'\n}\n\nfunction asTags(value: unknown): string[] {\n if (Array.isArray(value)) {\n return value.filter((entry): entry is string => typeof entry === 'string')\n }\n\n if (typeof value === 'string') {\n return value\n .split(',')\n .map((entry) => entry.trim())\n .filter(Boolean)\n }\n\n return []\n}\n\nfunction createSidebar(pages: DocsPage[]): DocsSidebar {\n const sections = new Map<string, DocsSidebarItem>()\n\n for (const page of pages.filter((entry) => entry.status === 'published')) {\n const title = sectionTitle(page.sectionId)\n const existing = sections.get(page.sectionId) ?? {\n id: page.sectionId,\n title,\n slug: slugify(title),\n pages: [],\n }\n\n existing.pages.push({ slug: page.slug, title: page.title })\n sections.set(page.sectionId, existing)\n }\n\n return [...sections.values()]\n}\n\n/**\n * Normalises Astro Markdown and MDX files into the shared docs contract.\n */\nexport class AstroDocsProvider implements DocsProvider {\n private pages: DocsPage[] = []\n\n /**\n * Loads docs from an Astro-style `import.meta.glob()` result.\n *\n * @param globResult - Lazy or eager Astro content loaders keyed by path.\n * @returns Nothing. The provider page set is replaced in memory.\n */\n async loadFromGlob(\n globResult: Record<string, (() => Promise<string>) | string>,\n ): Promise<void> {\n const parsed = await Promise.all(\n Object.entries(globResult).map(async ([path, loader]) => {\n const raw = typeof loader === 'function' ? await loader() : loader\n return this.parseDoc(path, raw)\n }),\n )\n\n this.pages = this.linkPages(parsed)\n }\n\n /**\n * Loads docs from already-read file contents.\n *\n * @param files - File path and content pairs to normalise.\n * @returns Nothing. The provider page set is replaced in memory.\n */\n async loadFromFiles(\n files: Array<{ path: string; content: string }>,\n ): Promise<void> {\n this.pages = this.linkPages(\n files.map((file) => this.parseDoc(file.path, file.content)),\n )\n }\n\n private parseDoc(path: string, raw: string): DocPage {\n const parsed = matter(raw)\n const pathParts = path\n .replace(/.*content\\/docs\\//, '')\n .replace(/\\.(mdx?|md)$/, '')\n .split('/')\n .filter(Boolean)\n const slug = pathParts.join('/')\n const sectionId = pathParts[0] ?? 'general'\n const titleFromPath = pathParts[pathParts.length - 1] ?? slug\n const { wordCount, readingTime } = calcWordCount(parsed.content)\n const authorName = asString(parsed.data.author) ?? 'Geenius'\n const now = new Date().toISOString()\n const status = parsed.data.draft === true\n ? 'draft'\n : asStatus(parsed.data.status)\n\n return {\n id: asString(parsed.data.id) ?? slug,\n title: asString(parsed.data.title) ?? sectionTitle(titleFromPath),\n slug,\n content: parsed.content,\n excerpt: asString(parsed.data.description),\n sectionId,\n order: asNumber(parsed.data.order),\n author: {\n name: authorName,\n avatar: asString(parsed.data.avatar),\n },\n lastEditedBy: asString(parsed.data.lastEditedBy)\n ? {\n name: asString(parsed.data.lastEditedBy) ?? authorName,\n editedAt: asString(parsed.data.lastEditedAt) ?? now,\n }\n : undefined,\n version: asString(parsed.data.version),\n access: asAccess(parsed.data.access),\n tags: asTags(parsed.data.tags),\n status,\n createdAt: asString(parsed.data.createdAt) ?? now,\n updatedAt: asString(parsed.data.updatedAt) ?? now,\n wordCount,\n readingTime,\n viewCount: asNumber(parsed.data.viewCount),\n }\n }\n\n private linkPages(pages: DocPage[]): DocsPage[] {\n const sorted = [...pages].sort((left, right) => left.order - right.order)\n\n return sorted.map((page, index) => {\n const prev = sorted[index - 1]\n const next = sorted[index + 1]\n const prevLink: DocNavigationLink | null = prev\n ? { slug: prev.slug, title: prev.title }\n : null\n const nextLink: DocNavigationLink | null = next\n ? { slug: next.slug, title: next.title }\n : null\n\n return {\n ...page,\n prev: prevLink,\n next: nextLink,\n toc: extractToc(page.content),\n }\n })\n }\n\n /**\n * Loads the sidebar structure derived from the parsed Astro pages.\n *\n * @returns Sidebar navigation entries derived from the published pages.\n */\n async getSidebar(): Promise<DocsSidebar> {\n return createSidebar(this.pages)\n }\n\n /**\n * Resolves a linked docs page by slug.\n *\n * @param slug - Target page slug.\n * @returns The linked page or `null` when no page matches the slug.\n */\n async getPage(slug: string): Promise<DocsPage | null> {\n return this.pages.find((page) => page.slug === slug) ?? null\n }\n\n /**\n * Returns all published pages managed by the provider.\n *\n * @returns Published pages in their linked navigation order.\n */\n async getAllPages(): Promise<DocsPage[]> {\n return this.pages.filter((page) => page.status === 'published')\n }\n\n /**\n * Searches the parsed Astro page set.\n *\n * @param query - User-entered search query.\n * @returns Ranked search results derived from the published pages.\n */\n async search(query: string): Promise<DocsSearchResult[]> {\n const normalizedQuery = query.trim().toLowerCase()\n\n if (!normalizedQuery) {\n return []\n }\n\n return this.pages\n .filter((page) => page.status === 'published')\n .map((page) => {\n let score = 0\n\n if (page.title.toLowerCase().includes(normalizedQuery)) {\n score += 10\n }\n if (page.tags.some((tag) => tag.toLowerCase().includes(normalizedQuery))) {\n score += 4\n }\n if (page.content.toLowerCase().includes(normalizedQuery)) {\n score += 2\n }\n if (score === 0) {\n return null\n }\n\n return {\n pageId: page.id,\n pageTitle: page.title,\n sectionTitle: sectionTitle(page.sectionId),\n slug: page.slug,\n highlight: highlightMatch(page.excerpt ?? page.content, query),\n score,\n }\n })\n .filter((result): result is DocsSearchResult => result !== null)\n .sort((left, right) => right.score - left.score)\n }\n\n /**\n * Resolves previous and next pages for a slug.\n *\n * @param slug - Target page slug.\n * @returns Linked previous and next page records when available.\n */\n async getNavigation(\n slug: string,\n ): Promise<{ prev: DocsPage | null; next: DocsPage | null }> {\n const page = this.pages.find((entry) => entry.slug === slug)\n\n if (!page) {\n return { prev: null, next: null }\n }\n\n return {\n prev: page.prev\n ? this.pages.find((entry) => entry.slug === page.prev?.slug) ?? null\n : null,\n next: page.next\n ? this.pages.find((entry) => entry.slug === page.next?.slug) ?? null\n : null,\n }\n }\n}\n","/**\n * @module fumadocsProvider\n * @package @geenius/docs-shared\n * @description Implements the Fumadocs-backed provider used to normalise\n * source pages and page-tree metadata from Fumadocs into the shared docs\n * contract consumed by the framework variants.\n */\n\nimport type {\n DocAccess,\n DocNavigationLink,\n DocStatus,\n DocsPage,\n DocsProvider,\n DocsSearchResult,\n DocsSidebar,\n DocsSidebarItem,\n TocItem,\n} from '../types'\nimport { calcWordCount, extractToc, highlightMatch, slugify } from '../utilities'\n\nfunction sectionTitle(sectionId: string): string {\n return sectionId\n .split(/[-_/]/)\n .filter(Boolean)\n .map((part) => `${part[0]?.toUpperCase() ?? ''}${part.slice(1)}`)\n .join(' ') || 'General'\n}\n\nfunction asString(value: unknown): string | undefined {\n return typeof value === 'string' && value.trim().length > 0\n ? value.trim()\n : undefined\n}\n\nfunction _asNumber(value: unknown): number {\n if (typeof value === 'number' && Number.isFinite(value)) {\n return value\n }\n\n return 0\n}\n\nfunction asAccess(value: unknown): DocAccess {\n if (value === 'team' || value === 'admin') {\n return value\n }\n\n return 'public'\n}\n\nfunction asStatus(value: unknown): DocStatus {\n if (value === 'draft' || value === 'archived') {\n return value\n }\n\n return 'published'\n}\n\nfunction asTags(value: unknown): string[] {\n if (Array.isArray(value)) {\n return value.filter((entry): entry is string => typeof entry === 'string')\n }\n\n if (typeof value === 'string') {\n return value\n .split(',')\n .map((entry) => entry.trim())\n .filter(Boolean)\n }\n\n return []\n}\n\nfunction createSidebar(pages: DocsPage[]): DocsSidebar {\n const sections = new Map<string, DocsSidebarItem>()\n\n for (const page of pages.filter((entry) => entry.status === 'published')) {\n const title = sectionTitle(page.sectionId)\n const existing = sections.get(page.sectionId) ?? {\n id: page.sectionId,\n title,\n slug: slugify(title),\n pages: [],\n }\n\n existing.pages.push({ slug: page.slug, title: page.title })\n sections.set(page.sectionId, existing)\n }\n\n return [...sections.values()]\n}\n\n/**\n * Fumadocs source-page shape accepted by the provider.\n */\nexport interface FumadocsSourcePage {\n slug?: string\n slugs?: string[]\n url?: string\n data: {\n title?: string\n description?: string\n body?: string\n icon?: string\n order?: number\n toc?: TocItem[]\n draft?: boolean\n status?: DocStatus\n access?: DocAccess\n author?: string\n avatar?: string\n tags?: string[] | string\n version?: string\n lastModified?: string\n lastUpdated?: string\n [key: string]: unknown\n }\n}\n\n/**\n * Fumadocs tree-node shape accepted by the provider.\n */\nexport interface FumadocsTreeNode {\n type: 'page' | 'folder' | 'separator'\n name?: string\n slug?: string\n icon?: string\n children?: FumadocsTreeNode[]\n}\n\n/**\n * Fumadocs provider that bridges source pages and trees into the shared docs contract.\n */\nexport class FumadocsDocsProvider implements DocsProvider {\n private pages: DocsPage[] = []\n private tree: FumadocsTreeNode[] = []\n\n /**\n * Loads pages and an optional page tree from Fumadocs.\n *\n * @param pages - Source pages supplied by Fumadocs.\n * @param tree - Optional source page tree for nested sidebar rendering.\n * @returns Nothing. The provider page set is replaced in memory.\n */\n loadFromSource(\n pages: FumadocsSourcePage[],\n tree: FumadocsTreeNode[] = [],\n ): void {\n this.tree = tree\n this.pages = this.linkPages(pages.map((page) => this.normalizePage(page)))\n }\n\n private normalizePage(page: FumadocsSourcePage): DocsPage {\n const slugParts = page.slugs ?? page.slug?.split('/') ?? []\n const slug = slugParts.join('/')\n const sectionId = slugParts[0] ?? 'general'\n const title = page.data.title ?? slugParts[slugParts.length - 1] ?? slug\n const content = page.data.body ?? ''\n const { wordCount, readingTime } = calcWordCount(content)\n const now = new Date().toISOString()\n\n return {\n id: slug,\n title,\n slug,\n content,\n excerpt: page.data.description,\n sectionId,\n order: page.data.order ?? 0,\n author: {\n name: page.data.author ?? 'Geenius',\n avatar: asString(page.data.avatar),\n },\n lastEditedBy: asString(page.data.lastModified ?? page.data.lastUpdated)\n ? {\n name: page.data.author ?? 'Geenius',\n editedAt: asString(page.data.lastModified ?? page.data.lastUpdated) ?? now,\n }\n : undefined,\n version: asString(page.data.version),\n access: asAccess(page.data.access),\n tags: asTags(page.data.tags),\n status: page.data.draft === true\n ? 'draft'\n : asStatus(page.data.status),\n createdAt: now,\n updatedAt: asString(page.data.lastModified ?? page.data.lastUpdated) ?? now,\n wordCount,\n readingTime,\n viewCount: 0,\n toc: page.data.toc ?? extractToc(content),\n }\n }\n\n private linkPages(pages: DocsPage[]): DocsPage[] {\n const sorted = [...pages].sort((left, right) => left.order - right.order)\n\n return sorted.map((page, index) => {\n const prev = sorted[index - 1]\n const next = sorted[index + 1]\n const prevLink: DocNavigationLink | null = prev\n ? { slug: prev.slug, title: prev.title }\n : null\n const nextLink: DocNavigationLink | null = next\n ? { slug: next.slug, title: next.title }\n : null\n\n return {\n ...page,\n prev: prevLink,\n next: nextLink,\n }\n })\n }\n\n private treeToSidebar(nodes: FumadocsTreeNode[]): DocsSidebar {\n return nodes\n .filter((node) => node.type === 'folder')\n .map((folder) => {\n const title = folder.name ?? 'Section'\n const children = folder.children ?? []\n const pages = children\n .filter((child) => child.type === 'page')\n .map((child) => ({\n slug: child.slug ?? '',\n title: child.name ?? child.slug ?? 'Untitled',\n }))\n const nestedChildren = this.treeToSidebar(\n children.filter((child) => child.type === 'folder'),\n )\n\n return {\n id: folder.slug ?? slugify(title),\n title,\n slug: folder.slug ?? slugify(title),\n icon: folder.icon,\n pages,\n children: nestedChildren.length > 0 ? nestedChildren : undefined,\n }\n })\n }\n\n /**\n * Loads the sidebar structure derived from the Fumadocs tree or grouped pages.\n *\n * @returns Sidebar navigation entries derived from the published pages.\n */\n async getSidebar(): Promise<DocsSidebar> {\n if (this.tree.length > 0) {\n return this.treeToSidebar(this.tree)\n }\n\n return createSidebar(this.pages)\n }\n\n /**\n * Resolves a linked docs page by slug.\n *\n * @param slug - Target page slug.\n * @returns The linked page or `null` when no page matches the slug.\n */\n async getPage(slug: string): Promise<DocsPage | null> {\n return this.pages.find((page) => page.slug === slug) ?? null\n }\n\n /**\n * Returns all published pages managed by the provider.\n *\n * @returns Published pages in their linked navigation order.\n */\n async getAllPages(): Promise<DocsPage[]> {\n return this.pages.filter((page) => page.status === 'published')\n }\n\n /**\n * Searches the provider-backed page set.\n *\n * @param query - User-entered search query.\n * @returns Ranked search results derived from the published pages.\n */\n async search(query: string): Promise<DocsSearchResult[]> {\n const normalizedQuery = query.trim().toLowerCase()\n\n if (!normalizedQuery) {\n return []\n }\n\n return this.pages\n .filter((page) => page.status === 'published')\n .map((page) => {\n let score = 0\n\n if (page.title.toLowerCase().includes(normalizedQuery)) {\n score += 10\n }\n if (page.tags.some((tag) => tag.toLowerCase().includes(normalizedQuery))) {\n score += 4\n }\n if (page.content.toLowerCase().includes(normalizedQuery)) {\n score += 2\n }\n if (page.excerpt?.toLowerCase().includes(normalizedQuery)) {\n score += 1\n }\n if (score === 0) {\n return null\n }\n\n return {\n pageId: page.id,\n pageTitle: page.title,\n sectionTitle: sectionTitle(page.sectionId),\n slug: page.slug,\n highlight: highlightMatch(page.excerpt ?? page.content, query),\n score,\n }\n })\n .filter((result): result is DocsSearchResult => result !== null)\n .sort((left, right) => right.score - left.score)\n }\n\n /**\n * Resolves previous and next pages for a slug.\n *\n * @param slug - Target page slug.\n * @returns Linked previous and next page records when available.\n */\n async getNavigation(\n slug: string,\n ): Promise<{ prev: DocsPage | null; next: DocsPage | null }> {\n const page = this.pages.find((entry) => entry.slug === slug)\n\n if (!page) {\n return { prev: null, next: null }\n }\n\n return {\n prev: page.prev\n ? this.pages.find((entry) => entry.slug === page.prev?.slug) ?? null\n : null,\n next: page.next\n ? this.pages.find((entry) => entry.slug === page.next?.slug) ?? null\n : null,\n }\n }\n}\n","/**\n * @module internalDocsProvider\n * @package @geenius/docs-shared\n * @description Implements the in-memory docs provider used by local fixtures,\n * tests, and apps that already have page records loaded in process memory.\n */\n\nimport type {\n DocNavigationLink,\n DocPage,\n DocsPage,\n DocsProvider,\n DocsSearchResult,\n DocsSidebar,\n DocsSidebarItem,\n} from '../types'\nimport { extractToc, highlightMatch, slugify } from '../utilities'\n\nfunction sectionTitle(sectionId: string): string {\n return sectionId\n .split(/[-_/]/)\n .filter(Boolean)\n .map((part) => `${part[0]?.toUpperCase() ?? ''}${part.slice(1)}`)\n .join(' ') || 'General'\n}\n\nfunction createSidebar(pages: DocsPage[]): DocsSidebar {\n const sections = new Map<string, DocsSidebarItem>()\n\n for (const page of pages.filter((entry) => entry.status === 'published')) {\n const title = sectionTitle(page.sectionId)\n const entry = sections.get(page.sectionId) ?? {\n id: page.sectionId,\n title,\n slug: slugify(title),\n pages: [],\n }\n\n entry.pages.push({ slug: page.slug, title: page.title })\n sections.set(page.sectionId, entry)\n }\n\n return [...sections.values()].map((entry) => ({\n ...entry,\n pages: [...entry.pages].sort((left, right) =>\n left.title.localeCompare(right.title),\n ),\n }))\n}\n\n/**\n * In-memory provider for already-hydrated docs pages.\n */\nexport class InternalDocsProvider implements DocsProvider {\n private pages: DocsPage[] = []\n\n /**\n * @param pages - Optional initial page records to seed the provider with.\n */\n constructor(pages: DocPage[] = []) {\n this.pages = this.linkPages(pages)\n }\n\n /**\n * Replaces the provider's page set.\n *\n * @param pages - Fresh page records to seed into the provider.\n * @returns Nothing. The provider page set is replaced in memory.\n */\n setPages(pages: DocPage[]): void {\n this.pages = this.linkPages(pages)\n }\n\n private linkPages(pages: DocPage[]): DocsPage[] {\n const sorted = [...pages].sort((left, right) => left.order - right.order)\n\n return sorted.map((page, index) => {\n const prev = sorted[index - 1]\n const next = sorted[index + 1]\n const prevLink: DocNavigationLink | null = prev\n ? { slug: prev.slug, title: prev.title }\n : null\n const nextLink: DocNavigationLink | null = next\n ? { slug: next.slug, title: next.title }\n : null\n\n return {\n ...page,\n prev: prevLink,\n next: nextLink,\n toc: extractToc(page.content),\n }\n })\n }\n\n /**\n * Loads the sidebar structure derived from the current page set.\n *\n * @returns Sidebar navigation entries derived from the published pages.\n */\n async getSidebar(): Promise<DocsSidebar> {\n return createSidebar(this.pages)\n }\n\n /**\n * Resolves a linked docs page by slug.\n *\n * @param slug - Target page slug.\n * @returns The linked page or `null` when no page matches the slug.\n */\n async getPage(slug: string): Promise<DocsPage | null> {\n return this.pages.find((page) => page.slug === slug) ?? null\n }\n\n /**\n * Returns all published pages managed by the provider.\n *\n * @returns Published pages in their linked navigation order.\n */\n async getAllPages(): Promise<DocsPage[]> {\n return this.pages.filter((page) => page.status === 'published')\n }\n\n /**\n * Searches the provider-backed page set.\n *\n * @param query - User-entered search query.\n * @returns Ranked search results derived from the published pages.\n */\n async search(query: string): Promise<DocsSearchResult[]> {\n const normalizedQuery = query.trim().toLowerCase()\n\n if (!normalizedQuery) {\n return []\n }\n\n return this.pages\n .filter((page) => page.status === 'published')\n .map((page) => {\n let score = 0\n\n if (page.title.toLowerCase().includes(normalizedQuery)) {\n score += 10\n }\n if (page.tags.some((tag) => tag.toLowerCase().includes(normalizedQuery))) {\n score += 4\n }\n if (page.content.toLowerCase().includes(normalizedQuery)) {\n score += 2\n }\n if (score === 0) {\n return null\n }\n\n return {\n pageId: page.id,\n pageTitle: page.title,\n sectionTitle: sectionTitle(page.sectionId),\n slug: page.slug,\n highlight: highlightMatch(page.excerpt ?? page.content, query),\n score,\n }\n })\n .filter((result): result is DocsSearchResult => result !== null)\n .sort((left, right) => right.score - left.score)\n }\n\n /**\n * Resolves previous and next pages for a slug.\n *\n * @param slug - Target page slug.\n * @returns Linked previous and next page records when available.\n */\n async getNavigation(\n slug: string,\n ): Promise<{ prev: DocsPage | null; next: DocsPage | null }> {\n const page = this.pages.find((entry) => entry.slug === slug)\n\n if (!page) {\n return { prev: null, next: null }\n }\n\n return {\n prev: page.prev\n ? this.pages.find((entry) => entry.slug === page.prev?.slug) ?? null\n : null,\n next: page.next\n ? this.pages.find((entry) => entry.slug === page.next?.slug) ?? null\n : null,\n }\n }\n}\n"]}
@@ -0,0 +1,435 @@
1
+ import { BreadcrumbItem, DocPage as DocPage$1, SearchResult, DocSection, TocItem, DocsConfig } from '@geenius/docs-shared';
2
+ export { BreadcrumbItem, DocAccess, DocPage as DocPageType, DocSection, DocStatus, DocsConfig, SearchResult, TocItem } from '@geenius/docs-shared';
3
+ import { JSX, Accessor, Setter } from 'solid-js';
4
+
5
+ /**
6
+ * @module solidjsBreadcrumbs
7
+ * @package @geenius/docs-solidjs
8
+ * @description Renders the SolidJS docs breadcrumb trail using shared route
9
+ * metadata and the Tailwind-styled docs presentation contract.
10
+ */
11
+
12
+ /**
13
+ * Renders the current docs breadcrumb hierarchy.
14
+ *
15
+ * @param props - Breadcrumb items describing the active page ancestry.
16
+ * @returns Breadcrumb navigation for the current page when items exist.
17
+ */
18
+ declare function Breadcrumbs(props: {
19
+ items: BreadcrumbItem[];
20
+ }): JSX.Element;
21
+
22
+ /**
23
+ * @module solidDocPage
24
+ * @package @geenius/docs-solidjs
25
+ * @description Renders a docs page body with safe Markdown semantics, heading
26
+ * anchors, and package-consistent typography. The component deliberately avoids
27
+ * raw HTML injection so authored docs content stays within the Markdown runtime.
28
+ */
29
+
30
+ interface DocPageProps {
31
+ page: DocPage$1;
32
+ }
33
+ /**
34
+ * Renders a docs page body using safe Markdown rendering.
35
+ *
36
+ * @param props - Docs page record containing the Markdown body to render.
37
+ * @returns The rendered page article.
38
+ */
39
+ declare function DocPage(props: DocPageProps): JSX.Element;
40
+
41
+ /**
42
+ * @module solidjsDocSearch
43
+ * @package @geenius/docs-solidjs
44
+ * @description Provides the SolidJS command-palette style docs search modal
45
+ * with keyboard navigation, animated presentation, and highlighted matches.
46
+ */
47
+
48
+ interface DocSearchProps {
49
+ results: SearchResult[];
50
+ query: string;
51
+ onQuery: (q: string) => void;
52
+ onSelect: (result: SearchResult) => void;
53
+ isOpen: boolean;
54
+ onClose: () => void;
55
+ }
56
+ /**
57
+ * Renders the SolidJS docs search modal and result list.
58
+ *
59
+ * @param props - Search state, callbacks, and result entries to present.
60
+ * @returns An animated search overlay for navigating docs content.
61
+ */
62
+ declare function DocSearch(props: DocSearchProps): JSX.Element;
63
+
64
+ /**
65
+ * @module solidjsDocSidebar
66
+ * @package @geenius/docs-solidjs
67
+ * @description Renders the hierarchical SolidJS docs sidebar with expandable
68
+ * sections, nested pages, and the active-page highlight state.
69
+ */
70
+
71
+ interface DocSidebarProps {
72
+ sections: (DocSection & {
73
+ pages?: DocPage$1[];
74
+ pageCount?: number;
75
+ })[];
76
+ currentPageId?: string;
77
+ onNavigate: (page: DocPage$1, section: DocSection) => void;
78
+ }
79
+ /**
80
+ * Renders the docs section tree for sidebar navigation.
81
+ *
82
+ * @param props - Section hierarchy, active page id, and page navigation handler.
83
+ * @returns A nested docs sidebar with expandable sections and pages.
84
+ */
85
+ declare function DocSidebar(props: DocSidebarProps): JSX.Element;
86
+
87
+ /**
88
+ * @module solidjsDocsLayout
89
+ * @package @geenius/docs-solidjs
90
+ * @description Composes the SolidJS docs chrome, including sidebar,
91
+ * breadcrumbs, main content region, and table of contents rail.
92
+ */
93
+
94
+ interface DocsLayoutProps {
95
+ sections: (DocSection & {
96
+ pages?: DocPage$1[];
97
+ })[];
98
+ currentPage?: DocPage$1;
99
+ toc?: TocItem[];
100
+ activeHeadingId?: string;
101
+ breadcrumbs?: BreadcrumbItem[];
102
+ currentPageId?: string;
103
+ onNavigate: (page: DocPage$1, section: DocSection) => void;
104
+ children: JSX.Element;
105
+ }
106
+ /**
107
+ * Renders the shared SolidJS docs page shell.
108
+ *
109
+ * @param props - Section tree, active-page metadata, and page content.
110
+ * @returns The full docs application layout for a single page view.
111
+ */
112
+ declare function DocsLayout(props: DocsLayoutProps): JSX.Element;
113
+
114
+ /**
115
+ * @module solidjsEditButton
116
+ * @package @geenius/docs-solidjs
117
+ * @description Renders the external edit-source affordance for the SolidJS
118
+ * docs variant when an upstream repository edit URL is configured.
119
+ */
120
+
121
+ /**
122
+ * Renders an external link for editing the current docs page source.
123
+ *
124
+ * @param props - Page slug and optional base repository edit URL.
125
+ * @returns An edit link when editing is enabled for the current page.
126
+ */
127
+ declare function EditButton(props: {
128
+ pageSlug: string;
129
+ editUrl?: string;
130
+ }): JSX.Element;
131
+
132
+ /**
133
+ * @module solidjsPageNavigation
134
+ * @package @geenius/docs-solidjs
135
+ * @description Renders previous and next page affordances for the SolidJS
136
+ * docs variant so readers can move linearly through the content graph.
137
+ */
138
+
139
+ interface PageNavigationProps {
140
+ prev?: {
141
+ title: string;
142
+ href: string;
143
+ };
144
+ next?: {
145
+ title: string;
146
+ href: string;
147
+ };
148
+ }
149
+ /**
150
+ * Renders previous and next page links for the current docs page.
151
+ *
152
+ * @param props - Optional previous and next page descriptors.
153
+ * @returns Navigation cards when adjacent pages are available.
154
+ */
155
+ declare function PageNavigation(props: PageNavigationProps): JSX.Element;
156
+
157
+ /**
158
+ * @module solidjsTableOfContents
159
+ * @package @geenius/docs-solidjs
160
+ * @description Renders the SolidJS docs table of contents with nested anchor
161
+ * links and animated active-heading highlighting.
162
+ */
163
+
164
+ interface TableOfContentsProps {
165
+ toc: TocItem[];
166
+ activeId?: string;
167
+ }
168
+ /**
169
+ * Renders the page-local table of contents rail.
170
+ *
171
+ * @param props - Structured heading tree and current active heading id.
172
+ * @returns A nested table of contents for the active docs page.
173
+ */
174
+ declare function TableOfContents(props: TableOfContentsProps): JSX.Element;
175
+
176
+ /**
177
+ * @module solidjsVersionSelector
178
+ * @package @geenius/docs-solidjs
179
+ * @description Presents the SolidJS docs version switcher for packages that
180
+ * expose multiple documentation versions in the same surface.
181
+ */
182
+
183
+ interface VersionSelectorProps {
184
+ versions: string[];
185
+ current: string;
186
+ onSelect: (v: string) => void;
187
+ }
188
+ /**
189
+ * Renders a version picker when more than one docs version is available.
190
+ *
191
+ * @param props - Available versions, current version, and selection callback.
192
+ * @returns A dropdown-style version switcher for the docs surface.
193
+ */
194
+ declare function VersionSelector(props: VersionSelectorProps): JSX.Element;
195
+
196
+ /**
197
+ * @module solidjsDocSearchPage
198
+ * @package @geenius/docs-solidjs
199
+ * @description Renders the dedicated SolidJS docs search page, including
200
+ * query input, derived search results, and empty or loading states.
201
+ */
202
+
203
+ interface DocSearchPageProps {
204
+ tree: () => (DocSection & {
205
+ pages: DocPage$1[];
206
+ pageCount: number;
207
+ })[] | undefined;
208
+ onSelectPage?: (page: DocPage$1, section: DocSection) => void;
209
+ }
210
+ /**
211
+ * Renders a full-page docs search experience for SolidJS consumers.
212
+ *
213
+ * @param props - Docs tree accessor and page selection callback.
214
+ * @returns The search page with loading, empty, and result states.
215
+ */
216
+ declare function DocSearchPage(props: DocSearchPageProps): JSX.Element;
217
+
218
+ /**
219
+ * @module solidjsDocsAdminPage
220
+ * @package @geenius/docs-solidjs
221
+ * @description Renders the SolidJS docs administration surface for creating,
222
+ * selecting, publishing, archiving, and deleting sections and pages.
223
+ */
224
+
225
+ interface DocsAdminPageProps {
226
+ tree: () => (DocSection & {
227
+ pages: DocPage$1[];
228
+ pageCount: number;
229
+ })[] | undefined;
230
+ allPages?: DocPage$1[];
231
+ admin: {
232
+ createSection: (d: Record<string, unknown>) => Promise<void>;
233
+ deleteSection: (id: string) => Promise<void>;
234
+ createPage: (d: Record<string, unknown>) => Promise<void>;
235
+ publishPage: (id: string) => Promise<void>;
236
+ archivePage: (id: string) => Promise<void>;
237
+ deletePage: (id: string) => Promise<void>;
238
+ };
239
+ }
240
+ /**
241
+ * Renders the docs administration dashboard for SolidJS consumers.
242
+ *
243
+ * @param props - Docs tree accessors, page collections, and admin actions.
244
+ * @returns The docs admin page with section and page management tools.
245
+ */
246
+ declare function DocsAdminPage(props: DocsAdminPageProps): JSX.Element;
247
+
248
+ /**
249
+ * @module solidjsDocsIndexPage
250
+ * @package @geenius/docs-solidjs
251
+ * @description Renders the SolidJS docs landing page with section cards,
252
+ * keyboard-accessible search launch, and empty or loading states.
253
+ */
254
+
255
+ interface DocsIndexPageProps {
256
+ tree: () => (DocSection & {
257
+ pages: DocPage$1[];
258
+ pageCount: number;
259
+ })[] | undefined;
260
+ onSelectPage?: (page: DocPage$1, section: DocSection) => void;
261
+ }
262
+ /**
263
+ * Renders the root docs landing page for the SolidJS variant.
264
+ *
265
+ * @param props - Docs tree accessor and page selection callback.
266
+ * @returns The docs home page with search and section navigation.
267
+ */
268
+ declare function DocsIndexPage(props: DocsIndexPageProps): JSX.Element;
269
+
270
+ /**
271
+ * @module solidjsDocViewPage
272
+ * @package @geenius/docs-solidjs
273
+ * @description Renders the main SolidJS docs reading experience, including
274
+ * layout chrome, MDX content, table of contents, and sibling navigation.
275
+ */
276
+
277
+ interface DocViewPageProps {
278
+ tree: () => (DocSection & {
279
+ pages: DocPage$1[];
280
+ pageCount: number;
281
+ })[] | undefined;
282
+ page: () => DocPage$1 | null | undefined;
283
+ editPageUrl?: string;
284
+ onNavigate: (page: DocPage$1, section: DocSection) => void;
285
+ onIncrementView?: (pageId: string) => void;
286
+ }
287
+ /**
288
+ * Renders the docs reader view for a selected SolidJS page.
289
+ *
290
+ * @param props - Docs tree, selected page accessor, and navigation callbacks.
291
+ * @returns The full docs reading experience or an empty-state fallback.
292
+ */
293
+ declare function DocViewPage(props: DocViewPageProps): JSX.Element;
294
+
295
+ /**
296
+ * @module solidjsCreateDocSearch
297
+ * @package @geenius/docs-solidjs
298
+ * @description Creates the SolidJS docs search state machine, including the
299
+ * query signal, debounced execution, and normalized result lifecycle.
300
+ */
301
+
302
+ type DocSearchController = {
303
+ results: Accessor<SearchResult[]>;
304
+ isSearching: Accessor<boolean>;
305
+ query: Accessor<string>;
306
+ setQuery: (value: string) => string;
307
+ clearSearch: () => void;
308
+ };
309
+ /**
310
+ * Creates debounced docs search state for SolidJS consumers.
311
+ *
312
+ * @param searchFn - Search implementation returning matching docs results.
313
+ * @param debounceMs - Delay before search execution after each query update.
314
+ * @returns Signals and actions for driving a docs search experience.
315
+ */
316
+ declare function createDocSearch(searchFn: (query: string) => SearchResult[] | Promise<SearchResult[]>, debounceMs?: number): DocSearchController;
317
+
318
+ /**
319
+ * @module solidjsCreateDocs
320
+ * @package @geenius/docs-solidjs
321
+ * @description Creates the canonical SolidJS docs state container that merges
322
+ * config, flattens pages, and tracks section, page, and search selection state.
323
+ */
324
+
325
+ type DocsState = {
326
+ sections: Accessor<(DocSection & {
327
+ pages: DocPage$1[];
328
+ pageCount: number;
329
+ })[]>;
330
+ currentSection: Accessor<DocSection | null>;
331
+ setSection: (section: DocSection | null) => void;
332
+ currentPage: Accessor<DocPage$1 | null>;
333
+ setPage: Setter<DocPage$1 | null>;
334
+ searchQuery: Accessor<string>;
335
+ setSearchQuery: Setter<string>;
336
+ isLoading: Accessor<boolean>;
337
+ config: Accessor<DocsConfig>;
338
+ flatPages: Accessor<DocPage$1[]>;
339
+ };
340
+ /**
341
+ * Creates normalized docs state for the SolidJS docs surface.
342
+ *
343
+ * @param tree - Docs section tree accessor with eagerly attached pages.
344
+ * @param config - Optional overrides merged onto the shared docs config.
345
+ * @returns A shared docs state object used by SolidJS pages and components.
346
+ */
347
+ declare function createDocs(tree: () => (DocSection & {
348
+ pages: DocPage$1[];
349
+ pageCount: number;
350
+ })[] | undefined, config?: Partial<DocsConfig>): DocsState;
351
+
352
+ /**
353
+ * @module solidjsCreateDocsAdmin
354
+ * @package @geenius/docs-solidjs
355
+ * @description Adapts caller-provided section and page mutations into a
356
+ * stable SolidJS admin controller with normalized method signatures.
357
+ */
358
+ type DocsAdminMutations = {
359
+ createSection: (args: Record<string, unknown>) => Promise<unknown>;
360
+ updateSection: (args: Record<string, unknown>) => Promise<unknown>;
361
+ deleteSection: (args: Record<string, unknown>) => Promise<unknown>;
362
+ reorderSections: (args: Record<string, unknown>) => Promise<unknown>;
363
+ createPage: (args: Record<string, unknown>) => Promise<unknown>;
364
+ updatePage: (args: Record<string, unknown>) => Promise<unknown>;
365
+ publishPage: (args: Record<string, unknown>) => Promise<unknown>;
366
+ archivePage: (args: Record<string, unknown>) => Promise<unknown>;
367
+ deletePage: (args: Record<string, unknown>) => Promise<unknown>;
368
+ reorderPages: (args: Record<string, unknown>) => Promise<unknown>;
369
+ movePage: (args: Record<string, unknown>) => Promise<unknown>;
370
+ };
371
+ type DocsAdminController = {
372
+ createSection: (data: {
373
+ title: string;
374
+ slug: string;
375
+ parentId?: string;
376
+ order: number;
377
+ icon?: string;
378
+ description?: string;
379
+ access: 'public' | 'team' | 'admin';
380
+ }) => Promise<void>;
381
+ updateSection: (sectionId: string, data: Record<string, unknown>) => Promise<void>;
382
+ deleteSection: (sectionId: string) => Promise<void>;
383
+ reorderSections: (sectionIds: string[]) => Promise<void>;
384
+ createPage: (data: {
385
+ title: string;
386
+ slug: string;
387
+ content: string;
388
+ sectionId: string;
389
+ access: 'public' | 'team' | 'admin';
390
+ tags?: string[];
391
+ version?: string;
392
+ status?: 'draft' | 'published' | 'archived';
393
+ author?: {
394
+ name: string;
395
+ avatar?: string;
396
+ };
397
+ excerpt?: string;
398
+ order?: number;
399
+ }) => Promise<void>;
400
+ updatePage: (pageId: string, data: Record<string, unknown>) => Promise<void>;
401
+ publishPage: (pageId: string) => Promise<void>;
402
+ archivePage: (pageId: string) => Promise<void>;
403
+ deletePage: (pageId: string) => Promise<void>;
404
+ reorderPages: (pageIds: string[]) => Promise<void>;
405
+ movePage: (pageId: string, newSectionId: string, newOrder: number) => Promise<void>;
406
+ };
407
+ /**
408
+ * Creates a SolidJS-friendly docs admin controller around async mutations.
409
+ *
410
+ * @param mutations - Low-level CRUD and reorder operations for docs content.
411
+ * @returns An admin controller with normalized section and page methods.
412
+ */
413
+ declare function createDocsAdmin(mutations: DocsAdminMutations): DocsAdminController;
414
+
415
+ /**
416
+ * @module solidjsCreateTableOfContents
417
+ * @package @geenius/docs-solidjs
418
+ * @description Derives the SolidJS docs table of contents from MDX content
419
+ * and tracks the active heading via intersection observer updates.
420
+ */
421
+
422
+ type TableOfContentsController = {
423
+ toc: Accessor<TocItem[]>;
424
+ activeId: Accessor<string>;
425
+ setActiveId: (value: string) => string;
426
+ };
427
+ /**
428
+ * Creates table-of-contents state for a docs page.
429
+ *
430
+ * @param mdxContent - Accessor returning the current page MDX source.
431
+ * @returns Derived TOC state and active-heading controls.
432
+ */
433
+ declare function createTableOfContents(mdxContent: () => string | undefined): TableOfContentsController;
434
+
435
+ export { Breadcrumbs, DocPage, DocSearch, DocSearchPage, DocSidebar, DocViewPage, DocsAdminPage, DocsIndexPage, DocsLayout, EditButton, PageNavigation, TableOfContents, VersionSelector, createDocSearch, createDocs, createDocsAdmin, createTableOfContents };