@geenius/docs 0.1.0 → 0.4.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +13 -0
- package/README.md +53 -1
- package/package.json +101 -13
- package/packages/convex/dist/index.d.ts +503 -0
- package/packages/convex/dist/index.js +482 -0
- package/packages/convex/dist/index.js.map +1 -0
- package/packages/react/dist/index.d.ts +439 -0
- package/packages/react/dist/index.js +4954 -0
- package/packages/react/dist/index.js.map +1 -0
- package/packages/react-css/{src/styles.css → dist/index.css} +183 -223
- package/packages/react-css/dist/index.css.map +1 -0
- package/packages/react-css/dist/index.d.ts +443 -0
- package/packages/react-css/dist/index.js +5058 -0
- package/packages/react-css/dist/index.js.map +1 -0
- package/packages/shared/dist/index.d.ts +684 -0
- package/packages/shared/dist/index.js +788 -0
- package/packages/shared/dist/index.js.map +1 -0
- package/packages/solidjs/dist/index.d.ts +435 -0
- package/packages/solidjs/dist/index.js +4584 -0
- package/packages/solidjs/dist/index.js.map +1 -0
- package/packages/solidjs-css/{src/styles.css → dist/index.css} +183 -223
- package/packages/solidjs-css/dist/index.css.map +1 -0
- package/packages/solidjs-css/dist/index.d.ts +432 -0
- package/packages/solidjs-css/dist/index.js +4934 -0
- package/packages/solidjs-css/dist/index.js.map +1 -0
- package/.changeset/config.json +0 -11
- package/.github/CODEOWNERS +0 -1
- package/.github/ISSUE_TEMPLATE/bug_report.md +0 -16
- package/.github/ISSUE_TEMPLATE/feature_request.md +0 -11
- package/.github/PULL_REQUEST_TEMPLATE.md +0 -10
- package/.github/dependabot.yml +0 -11
- package/.github/workflows/ci.yml +0 -23
- package/.github/workflows/release.yml +0 -29
- package/.nvmrc +0 -1
- package/.project/ACCOUNT.yaml +0 -4
- package/.project/IDEAS.yaml +0 -7
- package/.project/PROJECT.yaml +0 -11
- package/.project/ROADMAP.yaml +0 -15
- package/CODE_OF_CONDUCT.md +0 -16
- package/CONTRIBUTING.md +0 -26
- package/SECURITY.md +0 -15
- package/SUPPORT.md +0 -8
- package/packages/convex/README.md +0 -1
- package/packages/convex/package.json +0 -12
- package/packages/convex/src/convex.config.ts +0 -3
- package/packages/convex/src/index.ts +0 -3
- package/packages/convex/src/mutations.ts +0 -270
- package/packages/convex/src/queries.ts +0 -175
- package/packages/convex/src/schema.ts +0 -55
- package/packages/react/README.md +0 -1
- package/packages/react/package.json +0 -36
- package/packages/react/src/DocsLayout.tsx +0 -116
- package/packages/react/src/DocsProvider.tsx +0 -93
- package/packages/react/src/RouterDocsContent.tsx +0 -148
- package/packages/react/src/RouterDocsLayout.tsx +0 -161
- package/packages/react/src/components/Breadcrumbs.tsx +0 -34
- package/packages/react/src/components/DocPage.tsx +0 -191
- package/packages/react/src/components/DocSearch.tsx +0 -140
- package/packages/react/src/components/DocSidebar.tsx +0 -86
- package/packages/react/src/components/DocsLayout.tsx +0 -62
- package/packages/react/src/components/EditButton.tsx +0 -26
- package/packages/react/src/components/PageNavigation.tsx +0 -45
- package/packages/react/src/components/TableOfContents.tsx +0 -46
- package/packages/react/src/components/VersionSelector.tsx +0 -60
- package/packages/react/src/components/index.ts +0 -9
- package/packages/react/src/hooks/index.ts +0 -8
- package/packages/react/src/hooks/useDocSearch.ts +0 -55
- package/packages/react/src/hooks/useDocs.ts +0 -57
- package/packages/react/src/hooks/useDocsAdmin.ts +0 -151
- package/packages/react/src/hooks/useTableOfContents.ts +0 -66
- package/packages/react/src/index.ts +0 -38
- package/packages/react/src/pages/DocSearchPage.tsx +0 -129
- package/packages/react/src/pages/DocViewPage.tsx +0 -158
- package/packages/react/src/pages/DocsAdminPage.tsx +0 -330
- package/packages/react/src/pages/DocsIndexPage.tsx +0 -172
- package/packages/react/src/pages/index.ts +0 -4
- package/packages/react/src/useDocs.ts +0 -58
- package/packages/react/tsup.config.ts +0 -12
- package/packages/react-css/README.md +0 -1
- package/packages/react-css/package.json +0 -37
- package/packages/react-css/src/DocsLayout.tsx +0 -117
- package/packages/react-css/src/DocsProvider.tsx +0 -93
- package/packages/react-css/src/RouterDocsContent.tsx +0 -60
- package/packages/react-css/src/RouterDocsLayout.tsx +0 -101
- package/packages/react-css/src/components/DocPage.tsx +0 -21
- package/packages/react-css/src/components/DocSearch.tsx +0 -55
- package/packages/react-css/src/components/DocSidebar.tsx +0 -56
- package/packages/react-css/src/components/DocsLayout.tsx +0 -28
- package/packages/react-css/src/components/common.tsx +0 -93
- package/packages/react-css/src/components/index.ts +0 -5
- package/packages/react-css/src/hooks/index.ts +0 -2
- package/packages/react-css/src/index.ts +0 -6
- package/packages/react-css/src/index.tsx +0 -3
- package/packages/react-css/src/pages/DocViewPage.tsx +0 -78
- package/packages/react-css/src/pages/DocsAdminPage.tsx +0 -101
- package/packages/react-css/src/pages/DocsIndexPage.tsx +0 -68
- package/packages/react-css/src/pages/index.ts +0 -3
- package/packages/react-css/src/useDocs.ts +0 -58
- package/packages/react-css/tsconfig.json +0 -19
- package/packages/react-css/tsup.config.ts +0 -10
- package/packages/shared/README.md +0 -1
- package/packages/shared/package.json +0 -31
- package/packages/shared/src/__tests__/docs.test.ts +0 -69
- package/packages/shared/src/config.ts +0 -80
- package/packages/shared/src/index.ts +0 -179
- package/packages/shared/src/providers/astro.ts +0 -94
- package/packages/shared/src/providers/fumadocs.ts +0 -116
- package/packages/shared/src/providers/internal.ts +0 -80
- package/packages/shared/src/types.ts +0 -73
- package/packages/shared/tsconfig.json +0 -18
- package/packages/shared/tsup.config.ts +0 -12
- package/packages/shared/vitest.config.ts +0 -4
- package/packages/solidjs/README.md +0 -1
- package/packages/solidjs/package.json +0 -33
- package/packages/solidjs/src/DocsLayout.tsx +0 -87
- package/packages/solidjs/src/DocsProvider.tsx +0 -95
- package/packages/solidjs/src/RouterDocsContent.tsx +0 -147
- package/packages/solidjs/src/RouterDocsLayout.tsx +0 -161
- package/packages/solidjs/src/components/Breadcrumbs.tsx +0 -27
- package/packages/solidjs/src/components/DocPage.tsx +0 -110
- package/packages/solidjs/src/components/DocSearch.tsx +0 -81
- package/packages/solidjs/src/components/DocSidebar.tsx +0 -92
- package/packages/solidjs/src/components/DocsLayout.tsx +0 -38
- package/packages/solidjs/src/components/EditButton.tsx +0 -15
- package/packages/solidjs/src/components/PageNavigation.tsx +0 -31
- package/packages/solidjs/src/components/TableOfContents.tsx +0 -41
- package/packages/solidjs/src/components/VersionSelector.tsx +0 -30
- package/packages/solidjs/src/components/index.ts +0 -9
- package/packages/solidjs/src/createDocs.ts +0 -62
- package/packages/solidjs/src/index.ts +0 -28
- package/packages/solidjs/src/pages/DocSearchPage.tsx +0 -72
- package/packages/solidjs/src/pages/DocViewPage.tsx +0 -80
- package/packages/solidjs/src/pages/DocsAdminPage.tsx +0 -123
- package/packages/solidjs/src/pages/DocsIndexPage.tsx +0 -85
- package/packages/solidjs/src/pages/index.ts +0 -4
- package/packages/solidjs/src/primitives/createDocSearch.ts +0 -42
- package/packages/solidjs/src/primitives/createDocs.ts +0 -35
- package/packages/solidjs/src/primitives/createDocsAdmin.ts +0 -63
- package/packages/solidjs/src/primitives/createTableOfContents.ts +0 -51
- package/packages/solidjs/src/primitives/index.ts +0 -4
- package/packages/solidjs/tsup.config.ts +0 -12
- package/packages/solidjs-css/README.md +0 -1
- package/packages/solidjs-css/package.json +0 -36
- package/packages/solidjs-css/src/DocsLayout.tsx +0 -106
- package/packages/solidjs-css/src/DocsProvider.tsx +0 -95
- package/packages/solidjs-css/src/RouterDocsContent.tsx +0 -54
- package/packages/solidjs-css/src/RouterDocsLayout.tsx +0 -104
- package/packages/solidjs-css/src/createDocs.ts +0 -62
- package/packages/solidjs-css/src/index.ts +0 -7
- package/packages/solidjs-css/src/index.tsx +0 -17
- package/packages/solidjs-css/src/pages/DocViewPage.tsx +0 -111
- package/packages/solidjs-css/src/pages/DocsAdminPage.tsx +0 -332
- package/packages/solidjs-css/src/pages/DocsIndexPage.tsx +0 -116
- package/packages/solidjs-css/src/pages/index.ts +0 -3
- package/packages/solidjs-css/src/primitives/index.ts +0 -1
- package/packages/solidjs-css/tsconfig.json +0 -20
- package/packages/solidjs-css/tsup.config.ts +0 -10
- 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 };
|