@blaaiz/docs-core 0.1.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 (71) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +103 -0
  3. package/dist/chunk-3ZX4WIE3.js +2984 -0
  4. package/dist/chunk-3ZX4WIE3.js.map +1 -0
  5. package/dist/chunk-JCYR6RPE.js +31 -0
  6. package/dist/chunk-JCYR6RPE.js.map +1 -0
  7. package/dist/chunk-ZKOOKLZ3.js +124 -0
  8. package/dist/chunk-ZKOOKLZ3.js.map +1 -0
  9. package/dist/cli.js +534 -0
  10. package/dist/cli.js.map +1 -0
  11. package/dist/generator.cjs +508 -0
  12. package/dist/generator.cjs.map +1 -0
  13. package/dist/generator.d.cts +122 -0
  14. package/dist/generator.d.ts +122 -0
  15. package/dist/generator.js +177 -0
  16. package/dist/generator.js.map +1 -0
  17. package/dist/index.cjs +3024 -0
  18. package/dist/index.cjs.map +1 -0
  19. package/dist/index.d.cts +1182 -0
  20. package/dist/index.d.ts +1182 -0
  21. package/dist/index.js +3 -0
  22. package/dist/index.js.map +1 -0
  23. package/dist/navigation-CGqFIPlP.d.cts +498 -0
  24. package/dist/navigation-CGqFIPlP.d.ts +498 -0
  25. package/dist/openapi-types-CJ6p5Cux.d.cts +78 -0
  26. package/dist/openapi-types-CJ6p5Cux.d.ts +78 -0
  27. package/dist/ui/api-try-it.cjs +654 -0
  28. package/dist/ui/api-try-it.cjs.map +1 -0
  29. package/dist/ui/api-try-it.d.cts +78 -0
  30. package/dist/ui/api-try-it.d.ts +78 -0
  31. package/dist/ui/api-try-it.js +509 -0
  32. package/dist/ui/api-try-it.js.map +1 -0
  33. package/dist/ui/ask-ai.cjs +810 -0
  34. package/dist/ui/ask-ai.cjs.map +1 -0
  35. package/dist/ui/ask-ai.d.cts +57 -0
  36. package/dist/ui/ask-ai.d.ts +57 -0
  37. package/dist/ui/ask-ai.js +808 -0
  38. package/dist/ui/ask-ai.js.map +1 -0
  39. package/dist/ui/copy-page.cjs +312 -0
  40. package/dist/ui/copy-page.cjs.map +1 -0
  41. package/dist/ui/copy-page.d.cts +33 -0
  42. package/dist/ui/copy-page.d.ts +33 -0
  43. package/dist/ui/copy-page.js +183 -0
  44. package/dist/ui/copy-page.js.map +1 -0
  45. package/dist/ui/mermaid.cjs +363 -0
  46. package/dist/ui/mermaid.cjs.map +1 -0
  47. package/dist/ui/mermaid.d.cts +13 -0
  48. package/dist/ui/mermaid.d.ts +13 -0
  49. package/dist/ui/mermaid.js +361 -0
  50. package/dist/ui/mermaid.js.map +1 -0
  51. package/dist/ui.cjs +661 -0
  52. package/dist/ui.cjs.map +1 -0
  53. package/dist/ui.d.cts +428 -0
  54. package/dist/ui.d.ts +428 -0
  55. package/dist/ui.js +537 -0
  56. package/dist/ui.js.map +1 -0
  57. package/package.json +145 -0
  58. package/patches/fumadocs-openapi.patch +173 -0
  59. package/skills/AGENTS-section.md +36 -0
  60. package/skills/SKILL.md +363 -0
  61. package/styles/api-reference.css +1417 -0
  62. package/styles/ask-ai.css +563 -0
  63. package/styles/auth.css +462 -0
  64. package/styles/docs.css +247 -0
  65. package/styles/home.css +376 -0
  66. package/templates/init/content/docs/index.mdx.tmpl +52 -0
  67. package/templates/init/content/docs/meta.json.tmpl +3 -0
  68. package/templates/init/content/docs.json.tmpl +12 -0
  69. package/templates/init/content/nav.json.tmpl +7 -0
  70. package/templates/init/docs.config.ts.tmpl +36 -0
  71. package/templates/init/env.example.tmpl +15 -0
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/ui/accordion.tsx","../src/ui/api-layout.tsx","../src/ui/api-sidebar.tsx","../src/ui/icons.tsx","../src/ui/auth-screen.tsx","../src/ui/callout.tsx","../src/ui/card.tsx","../src/ui/docs-icons.tsx","../src/ui/error-screen.tsx","../src/ui/steps.tsx","../src/ui/mdx.tsx","../src/ui/sidebar.tsx"],"names":["jsxs","jsx","isValidElement","cloneElement","Fragment"],"mappings":"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","file":"ui.cjs","sourcesContent":["import type { ReactNode } from 'react';\n\n/**\n * Accordion components — the Mintlify `<Accordion>` and `<AccordionGroup>`.\n * Built on the native `<details>` element, so they are interactive with zero\n * client JavaScript and render in a Server Component. The hairline uses the\n * framework's border token, so it follows the site's palette and the dark theme.\n *\n * @packageDocumentation\n */\n\n/**\n * A single collapsible section.\n *\n * @public\n */\nexport function Accordion({ title, children }: { title: string; children?: ReactNode }) {\n return (\n <details\n style={{\n border: '1px solid var(--color-fd-border)',\n borderRadius: 8,\n padding: '10px 14px',\n margin: '8px 0',\n }}\n >\n <summary style={{ cursor: 'pointer', fontWeight: 600 }}>{title}</summary>\n <div style={{ marginTop: 8 }}>{children}</div>\n </details>\n );\n}\n\n/**\n * A group of accordions.\n *\n * @public\n */\nexport function AccordionGroup({ children }: { children?: ReactNode }) {\n return <div style={{ margin: '16px 0' }}>{children}</div>;\n}\n","import { cloneElement, isValidElement, type ReactElement, type ReactNode } from 'react';\n\n/**\n * The Mintlify-style API operation layout: one two-column row for the whole\n * operation, so the code rail starts level with the endpoint title. Pass it to\n * fumadocs-openapi — the slots type is structural, so this module needs no\n * fumadocs dependency and the site keeps ownership of that package.\n *\n * @example\n * ```tsx\n * export const APIPage = createOpenAPIPage({\n * content: { renderOperationLayout: apiOperationLayout },\n * });\n * ```\n *\n * @packageDocumentation\n */\n\n/**\n * The slots fumadocs-openapi hands to `renderOperationLayout`.\n *\n * @public\n */\nexport interface ApiOperationSlots {\n readonly header: ReactNode;\n readonly description: ReactNode;\n readonly apiPlayground: ReactNode;\n readonly authSchemes: ReactNode;\n readonly parameters: ReactNode;\n readonly body: ReactNode;\n readonly responses: ReactNode;\n readonly callbacks: ReactNode;\n readonly apiExample: ReactNode;\n}\n\n/**\n * Render an API operation as title → description → playground → request details\n * on the left, with the code/response rail as the right column. Pair with\n * `@blaaiz/docs-core/styles/api-reference.css`, which anchors the rail to the\n * viewport.\n *\n * @param slots - the operation slots from fumadocs-openapi\n * @returns the two-column operation layout\n * @public\n */\nexport function apiOperationLayout(slots: ApiOperationSlots): ReactNode {\n // When the playground is our ApiTryIt (it declares `acceptsExample`), hand it\n // the code/response column so its modal can show form and sample side by side.\n let playground = slots.apiPlayground;\n if (\n isValidElement(playground) &&\n (playground.type as { acceptsExample?: boolean }).acceptsExample === true\n ) {\n playground = cloneElement(playground as ReactElement<{ example?: ReactNode }>, {\n example: slots.apiExample,\n });\n }\n\n return (\n <div className=\"flex flex-col gap-x-6 gap-y-4 @4xl:flex-row @4xl:items-start\">\n <div className=\"min-w-0 flex-1\">\n {slots.header}\n {slots.description}\n {playground}\n {slots.authSchemes}\n {slots.parameters}\n {slots.body}\n {slots.responses}\n {slots.callbacks}\n </div>\n <div className=\"@4xl:sticky @4xl:top-[calc(var(--fd-docs-row-1,2rem)+1rem)] @4xl:w-[400px]\">\n {slots.apiExample}\n </div>\n </div>\n );\n}\n","import type { ReactNode } from 'react';\n\n/**\n * Sidebar helpers for the API reference: a coloured HTTP-method badge and a\n * page-tree transformer that prefixes each API page's sidebar entry with it —\n * the Mintlify look (POST · GET · … next to the endpoint name). Server-\n * compatible; styled by `styles/api-reference.css`.\n *\n * @packageDocumentation\n */\n\n/**\n * A coloured HTTP-method pill (GET, POST, …).\n *\n * @param props - the HTTP method\n * @public\n */\nexport function MethodBadge({ method }: { method: string }) {\n const upper = method.toUpperCase();\n return (\n <span className=\"api-method-badge\" data-method={method.toLowerCase()}>\n {upper}\n </span>\n );\n}\n\n/**\n * The minimal page-tree item this transformer touches. Structural, so the\n * framework needs no fumadocs types; a site passes the result straight into\n * `loader({ pageTree: { transformers } })`.\n *\n * @public\n */\nexport interface SidebarItem {\n readonly type?: string;\n readonly url?: string;\n name?: ReactNode;\n}\n\n/**\n * A page-tree transformer with a `file` hook, generic over the tree's own item\n * type so it slots into fumadocs' `loader({ pageTree: { transformers } })`\n * without a cast: `file` returns exactly the item type it was given.\n *\n * @public\n */\nexport interface SidebarBadgeTransformer {\n file<T extends SidebarItem>(node: T): T;\n}\n\n/**\n * A page-tree transformer that prefixes every API page's sidebar entry with its\n * HTTP-method badge, matching endpoint URLs against the `methods` map the\n * generator emits (`content/api-methods.json`).\n *\n * @example\n * ```ts\n * import methods from '@/content/api-methods.json';\n * loader({ pageTree: { transformers: [apiMethodBadges(methods)] } });\n * ```\n *\n * @param methods - map of page URL to HTTP method\n * @returns a transformer with a `file` hook\n * @public\n */\nexport function apiMethodBadges(\n methods: Readonly<Record<string, string>>,\n): SidebarBadgeTransformer {\n return {\n file<T extends SidebarItem>(node: T): T {\n const method = node.url ? methods[node.url] : undefined;\n if (!method) {\n return node;\n }\n // Only `name` is rewritten; every other field is carried through, so the\n // item keeps its original type.\n return {\n ...node,\n name: (\n <span className=\"api-nav-item\">\n <MethodBadge method={method} />\n <span className=\"api-nav-text\">{node.name}</span>\n </span>\n ),\n };\n },\n };\n}\n","import type { ReactNode } from 'react';\n\n/**\n * The framework's inline-SVG glyph set — internal.\n *\n * Five UI modules drew their own icons, and four glyphs were drawn twice: the\n * house on the error screen and in the sidebar icon map, the padlock on the\n * sign-in and the `403` screen, the info circle on both of those, the key in\n * both places again, and the check mark in the copy-page button and the\n * playground. One drawing per glyph now lives here.\n *\n * Nothing is exported from the package: the modules below compose these paths,\n * and `docsIcon` remains the only public icon surface. Zero dependencies — the\n * paths are Lucide-shaped, on the same 24×24 grid, so any glyph works at any\n * size.\n *\n * @packageDocumentation\n */\n\n/**\n * The glyph paths, keyed by name. Each value is the *inside* of an `<svg>`, so\n * a caller decides the size, the stroke, and the class.\n */\nconst GLYPHS = {\n house: (\n <>\n <path d=\"m3 9 9-7 9 7v11a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2z\" />\n <path d=\"M9 22V12h6v10\" />\n </>\n ),\n book: <path d=\"M4 19.5v-15A2.5 2.5 0 0 1 6.5 2H20v20H6.5a2.5 2.5 0 0 1 0-5H20\" />,\n code: (\n <>\n <path d=\"m16 18 6-6-6-6\" />\n <path d=\"m8 6-6 6 6 6\" />\n </>\n ),\n rocket: (\n <>\n <path d=\"M4.5 16.5c-1.5 1.26-2 5-2 5s3.74-.5 5-2c.71-.84.7-2.13-.09-2.91a2.18 2.18 0 0 0-2.91 0z\" />\n <path d=\"m12 15-3-3a22 22 0 0 1 2-3.95A12.88 12.88 0 0 1 22 2c0 2.72-.78 7.5-6 11a22.35 22.35 0 0 1-4 2z\" />\n <path d=\"M9 12H4s.55-3.03 2-4c1.62-1.08 5 0 5 0\" />\n <path d=\"M12 15v5s3.03-.55 4-2c1.08-1.62 0-5 0-5\" />\n </>\n ),\n terminal: (\n <>\n <path d=\"m4 17 6-6-6-6\" />\n <path d=\"M12 19h8\" />\n </>\n ),\n wallet: (\n <>\n <path d=\"M19 7V4a1 1 0 0 0-1-1H5a2 2 0 0 0 0 4h15a1 1 0 0 1 1 1v4h-3a2 2 0 0 0 0 4h3a1 1 0 0 0 1-1v-2a1 1 0 0 0-1-1\" />\n <path d=\"M3 5v14a2 2 0 0 0 2 2h15a1 1 0 0 0 1-1v-4\" />\n </>\n ),\n key: (\n <>\n <path d=\"m15.5 7.5 2.3 2.3a1 1 0 0 0 1.4 0l2.1-2.1a1 1 0 0 0 0-1.4L19 4\" />\n <path d=\"m21 2-9.6 9.6\" />\n <circle cx=\"7.5\" cy=\"15.5\" r=\"5.5\" />\n </>\n ),\n webhook: (\n <>\n <path d=\"M18 16.98h-5.99c-1.1 0-1.95.94-2.48 1.9A4 4 0 0 1 2 17c.01-.7.2-1.4.57-2\" />\n <path d=\"m6 17 3.13-5.78c.53-.97.1-2.18-.5-3.1a4 4 0 1 1 6.89-4.06\" />\n <path d=\"m12 6 3.13 5.73C15.66 12.7 16.9 13 18 13a4 4 0 0 1 0 8\" />\n </>\n ),\n globe: (\n <>\n <circle cx=\"12\" cy=\"12\" r=\"10\" />\n <path d=\"M12 2a14.5 14.5 0 0 0 0 20 14.5 14.5 0 0 0 0-20\" />\n <path d=\"M2 12h20\" />\n </>\n ),\n mail: (\n <>\n <rect x=\"2\" y=\"4\" width=\"20\" height=\"16\" rx=\"2\" />\n <path d=\"m22 7-8.97 5.7a1.94 1.94 0 0 1-2.06 0L2 7\" />\n </>\n ),\n user: (\n <>\n <circle cx=\"12\" cy=\"8\" r=\"4\" />\n <path d=\"M4 21a8 8 0 0 1 16 0\" />\n </>\n ),\n lock: (\n <>\n <rect x=\"3\" y=\"11\" width=\"18\" height=\"11\" rx=\"2\" />\n <path d=\"M7 11V7a5 5 0 0 1 10 0v4\" />\n </>\n ),\n /** A circled `i` — an informational note, and the generic error state. */\n info: (\n <>\n <circle cx=\"12\" cy=\"12\" r=\"10\" />\n <path d=\"M12 8v4M12 16h.01\" strokeLinecap=\"round\" />\n </>\n ),\n /** A warning triangle — a caution, and the `500` screen. */\n alert: (\n <>\n <path d=\"M10.29 3.86 1.82 18a2 2 0 0 0 1.71 3h16.94a2 2 0 0 0 1.71-3L13.71 3.86a2 2 0 0 0-3.42 0z\" />\n <path d=\"M12 9v4M12 17h.01\" strokeLinecap=\"round\" />\n </>\n ),\n /** A light bulb — a tip. */\n bulb: (\n <path d=\"M9 18h6M10 22h4M12 2a7 7 0 0 0-4 12.7c.6.5 1 1.3 1 2.1V17h6v-.2c0-.8.4-1.6 1-2.1A7 7 0 0 0 12 2Z\" />\n ),\n /** A circle with a cross — the `404` screen. */\n crossCircle: (\n <>\n <circle cx=\"12\" cy=\"12\" r=\"10\" />\n <path d=\"m14.31 8-1.31 2.4M9.69 8l4.62 8M14.31 16 9.69 8\" strokeLinecap=\"round\" />\n </>\n ),\n /** Struck-through signal bars — the offline screen. */\n offline: (\n <>\n <path d=\"M5 12.55a11 11 0 0 1 14 0M8.5 16.11a6 6 0 0 1 7 0M12 20h.01\" strokeLinecap=\"round\" />\n <path d=\"m2 2 20 20\" strokeLinecap=\"round\" />\n </>\n ),\n copy: (\n <path d=\"M9 9h9a2 2 0 0 1 2 2v9a2 2 0 0 1-2 2H9a2 2 0 0 1-2-2v-9a2 2 0 0 1 2-2ZM5 15H4a2 2 0 0 1-2-2V4a2 2 0 0 1 2-2h9a2 2 0 0 1 2 2v1\" />\n ),\n check: <path d=\"M20 6 9 17l-5-5\" />,\n chevronDown: <path d=\"m6 9 6 6 6-6\" />,\n /** Stacked chevrons — a value this control switches between. */\n chevronUpDown: <path d=\"m7 15 5 5 5-5M7 9l5-5 5 5\" />,\n /** An open arc — one turn of a loading spinner. */\n spinner: <path d=\"M21 12a9 9 0 1 1-6.219-8.56\" strokeLinecap=\"round\" />,\n markdown: (\n <>\n <rect x=\"2\" y=\"5\" width=\"20\" height=\"14\" rx=\"2\" />\n <path d=\"M6 15V9l3 3 3-3v6M17 9v4m0 0 2-2m-2 2-2-2\" />\n </>\n ),\n} satisfies Record<string, ReactNode>;\n\n/** A glyph in {@link GLYPHS}. */\nexport type GlyphName = keyof typeof GLYPHS;\n\n/**\n * How one icon is drawn. Every field is optional, and the defaults match the\n * house style: 24×24 grid, current colour, hidden from assistive technology.\n */\nexport interface IconOptions {\n /**\n * React key for the `<svg>`. Set it when a host may place the icon in an\n * array of children — fumadocs renders a sidebar link as `[icon, text]`, and\n * an unkeyed element there raises React's \"unique key\" warning in the\n * consuming site's console.\n */\n readonly key?: string;\n /** Pixel size for `width` and `height`. Omit to let CSS size the icon. */\n readonly size?: number;\n /** Stroke width. Default 2. */\n readonly strokeWidth?: number;\n /** Round the stroke's ends and joins. Default `false`. */\n readonly rounded?: boolean;\n /** Class for the `<svg>`, e.g. a spin animation. */\n readonly className?: string;\n}\n\n/**\n * Draw a stroked glyph.\n *\n * @param name - the glyph\n * @param options - size, stroke, and class\n * @returns the `<svg>` element\n */\nexport function strokeIcon(name: GlyphName, options: IconOptions = {}): ReactNode {\n return (\n <svg\n key={options.key}\n {...(options.className === undefined ? {} : { className: options.className })}\n {...(options.size === undefined ? {} : { width: options.size, height: options.size })}\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n stroke=\"currentColor\"\n strokeWidth={options.strokeWidth ?? 2}\n {...(options.rounded ? { strokeLinecap: 'round', strokeLinejoin: 'round' } : {})}\n aria-hidden=\"true\"\n >\n {GLYPHS[name]}\n </svg>\n );\n}\n\n/**\n * Draw a filled glyph. Used by the solid play triangle, where a stroke would\n * read as an outline.\n *\n * @param path - the path data\n * @param options - size and class\n * @returns the `<svg>` element\n */\nexport function filledIcon(path: string, options: IconOptions = {}): ReactNode {\n return (\n <svg\n key={options.key}\n {...(options.className === undefined ? {} : { className: options.className })}\n {...(options.size === undefined ? {} : { width: options.size, height: options.size })}\n viewBox=\"0 0 24 24\"\n fill=\"currentColor\"\n aria-hidden=\"true\"\n >\n <path d={path} />\n </svg>\n );\n}\n\n/** A solid right-pointing triangle: run this request. */\nexport const PLAY_PATH = 'M8 5v14l11-7z';\n","/**\n * The sign-in screen for a workspace-gated docs site.\n *\n * A site renders one element — `<AuthScreen config={config} .../>` — and gets\n * the whole gate: brand, the allowed-domain note, the providers its config\n * declares (email, shared secret, Google), and an inline error banner. The\n * shared-secret provider is a two-step flow — email, then secret — rendered by\n * the `step` prop. The framework owns the layout and copy; the site owns only\n * its config. Server-rendered: every form is a native POST, no client JS.\n *\n * @packageDocumentation\n */\n\nimport type { ReactNode } from 'react';\n\nimport type { DocsConfig } from '../core/config.js';\n\nimport { strokeIcon } from './icons.js';\n\n/**\n * Map a sign-in error code (carried on `?error=` after a failed attempt) to a\n * human sentence. Unknown codes get a safe generic message.\n *\n * @param code - the error code, or undefined\n * @param domains - the allowed email domains, for the domain-mismatch message\n * @returns the message to show, or null when there is no error\n * @public\n */\nexport function authErrorMessage(\n code: string | undefined,\n domains: readonly string[],\n): string | null {\n if (!code) {\n return null;\n }\n const list = domains.join(', ');\n switch (code) {\n case 'forbidden':\n case 'domain':\n return list\n ? `That email isn't on an allowed domain. Sign in with your ${list} account.`\n : `That account isn't allowed to access these docs.`;\n case 'oauth':\n case 'state':\n return `Google sign-in didn't complete. Please try again.`;\n case 'badsecret':\n return `That secret is incorrect. Please try again.`;\n case 'expired':\n return `Your session expired. Sign in again to continue.`;\n case 'config':\n return `Sign-in isn't configured for this site. Contact the site owner.`;\n default:\n return `Something went wrong signing in. Please try again.`;\n }\n}\n\n/**\n * Props for {@link AuthScreen}.\n *\n * @public\n */\nexport interface AuthScreenProps {\n /** The site configuration; drives brand, providers, and allowed domains. */\n readonly config: DocsConfig;\n /** The path to return to after sign-in (from the gate's `?from=`). */\n readonly from?: string;\n /** A sign-in error code to surface inline (from `?error=`). */\n readonly error?: string;\n /**\n * Which step of the shared-secret flow to render. `'email'` (default) shows\n * the email field; `'secret'` shows the secret field for the already-validated\n * {@link AuthScreenProps.email}. Ignored unless the secret provider is enabled.\n */\n readonly step?: 'email' | 'secret';\n /** The domain-checked email to show on the secret step (from the site's cookie). */\n readonly email?: string;\n /**\n * Whether to offer the shared-secret flow. Defaults to whether config declares\n * the secret provider; pass `false` when its env secret is absent. When on, it\n * supersedes plain email sign-in.\n */\n readonly secretEnabled?: boolean;\n /**\n * Whether to offer the Google button. Defaults to whether config declares the\n * Google provider; pass `false` to hide it when its env vars are absent.\n */\n readonly googleEnabled?: boolean;\n /** The email sign-in endpoint. Default `/api/auth/email`. */\n readonly emailAction?: string;\n /** The shared-secret sign-in endpoint (both steps post here). Default `/api/auth/secret`. */\n readonly secretAction?: string;\n /** The Google sign-in start path. Default `/api/auth/google/start`. */\n readonly googleStartPath?: string;\n /** The sign-in page path, for the \"use a different email\" link. Default `/signin`. */\n readonly signInPath?: string;\n}\n\nfunction mailIcon(): ReactNode {\n return strokeIcon('mail');\n}\n\nfunction lockIcon(): ReactNode {\n return strokeIcon('lock');\n}\n\nfunction alertIcon(): ReactNode {\n return strokeIcon('info');\n}\n\nfunction keyIcon(): ReactNode {\n return strokeIcon('key');\n}\n\nfunction userIcon(): ReactNode {\n return strokeIcon('user');\n}\n\n/** Google's multicolour \"G\" mark. */\nfunction googleIcon(): ReactNode {\n return (\n <svg viewBox=\"0 0 24 24\" aria-hidden=\"true\">\n <path\n fill=\"#4285F4\"\n d=\"M23.52 12.27c0-.82-.07-1.6-.2-2.36H12v4.46h6.47a5.53 5.53 0 0 1-2.4 3.63v3.02h3.88c2.27-2.09 3.57-5.17 3.57-8.75z\"\n />\n <path\n fill=\"#34A853\"\n d=\"M12 24c3.24 0 5.96-1.08 7.95-2.91l-3.88-3.02c-1.08.72-2.45 1.16-4.07 1.16-3.13 0-5.78-2.11-6.73-4.96H1.29v3.12A12 12 0 0 0 12 24z\"\n />\n <path\n fill=\"#FBBC05\"\n d=\"M5.27 14.27a7.2 7.2 0 0 1 0-4.54V6.61H1.29a12 12 0 0 0 0 10.78l3.98-3.12z\"\n />\n <path\n fill=\"#EA4335\"\n d=\"M12 4.75c1.77 0 3.35.61 4.6 1.8l3.44-3.44A11.5 11.5 0 0 0 12 0 12 12 0 0 0 1.29 6.61l3.98 3.12C6.22 6.86 8.87 4.75 12 4.75z\"\n />\n </svg>\n );\n}\n\n/**\n * Render the sign-in screen.\n *\n * @param props - see {@link AuthScreenProps}\n * @public\n */\nexport function AuthScreen(props: AuthScreenProps): ReactNode {\n const { config, from, error } = props;\n const auth = config.auth;\n const workspace = auth === 'public' ? null : auth;\n const domains = workspace?.allowedDomains ?? [];\n const target = from ?? '/';\n const emailAction = props.emailAction ?? '/api/auth/email';\n const secretAction = props.secretAction ?? '/api/auth/secret';\n const googleStartPath = props.googleStartPath ?? '/api/auth/google/start';\n const signInPath = props.signInPath ?? '/signin';\n\n const secretEnabled = props.secretEnabled ?? Boolean(workspace?.providers.secret);\n const emailProvider = workspace?.providers.email ?? false;\n // The secret flow supersedes plain email sign-in: offering email-only too\n // would let a reader skip the secret.\n const hasEmailFlow = secretEnabled || emailProvider;\n const showGoogle = props.googleEnabled ?? Boolean(workspace?.providers.google);\n const message = authErrorMessage(error, domains);\n const logo = config.theme.logo;\n\n // The secret step: only when the flow is enabled and we hold a validated email.\n const onSecretStep = props.step === 'secret' && secretEnabled && Boolean(props.email);\n\n const brand = (\n <div className=\"auth-brand\">\n {logo ? (\n <>\n <img className=\"auth-logo-light\" src={logo.light} alt={config.theme.name} />\n <img className=\"auth-logo-dark\" src={logo.dark} alt={config.theme.name} />\n </>\n ) : (\n <>\n <span className=\"auth-dot\" aria-hidden=\"true\" />\n {config.theme.name}\n </>\n )}\n </div>\n );\n\n const errorBanner = message ? (\n <div className=\"auth-error\" role=\"alert\">\n {alertIcon()}\n <span>{message}</span>\n </div>\n ) : null;\n\n if (onSecretStep) {\n return (\n <div className=\"auth-screen\">\n <div className=\"auth-ambient\" aria-hidden=\"true\" />\n <main className=\"auth-card\">\n {brand}\n <h1 className=\"auth-title\">Enter access secret</h1>\n <p className=\"auth-sub\">One more step — enter the shared secret to continue.</p>\n\n <div className=\"auth-identity\">\n {userIcon()}\n <span className=\"auth-identity-email\">{props.email}</span>\n <a className=\"auth-change\" href={signInPath}>\n Change\n </a>\n </div>\n\n {errorBanner}\n\n <form className=\"auth-form\" action={secretAction} method=\"post\">\n <input type=\"hidden\" name=\"from\" value={target} />\n <label className=\"auth-label\" htmlFor=\"auth-secret\">\n Access secret\n </label>\n <div className=\"auth-field\">\n {keyIcon()}\n <input\n id=\"auth-secret\"\n name=\"secret\"\n type=\"password\"\n required\n autoFocus\n autoComplete=\"off\"\n placeholder=\"Enter the access secret\"\n className=\"auth-input\"\n />\n </div>\n <button type=\"submit\" className=\"auth-submit\">\n Sign in\n </button>\n </form>\n\n <p className=\"auth-foot\">\n {lockIcon()}\n Access is limited to your workspace.\n </p>\n </main>\n </div>\n );\n }\n\n return (\n <div className=\"auth-screen\">\n <div className=\"auth-ambient\" aria-hidden=\"true\" />\n <main className=\"auth-card\">\n {brand}\n <h1 className=\"auth-title\">Sign in</h1>\n <p className=\"auth-sub\">\n {domains.length ? (\n <>\n These docs are restricted to <b>{domains.join(', ')}</b> accounts.\n </>\n ) : (\n 'These docs are restricted to your workspace.'\n )}\n </p>\n\n {errorBanner}\n\n {hasEmailFlow ? (\n <form\n className=\"auth-form\"\n action={secretEnabled ? secretAction : emailAction}\n method=\"post\"\n >\n <input type=\"hidden\" name=\"from\" value={target} />\n <label className=\"auth-label\" htmlFor=\"auth-email\">\n Work email\n </label>\n <div className=\"auth-field\">\n {mailIcon()}\n <input\n id=\"auth-email\"\n name=\"email\"\n type=\"email\"\n required\n autoComplete=\"email\"\n autoFocus\n placeholder={`you@${domains[0] ?? 'company.com'}`}\n className=\"auth-input\"\n />\n </div>\n <button type=\"submit\" className=\"auth-submit\">\n {secretEnabled ? 'Continue' : 'Continue with email'}\n </button>\n </form>\n ) : null}\n\n {hasEmailFlow && showGoogle ? <div className=\"auth-divider\">or</div> : null}\n\n {showGoogle ? (\n <a className=\"auth-google\" href={`${googleStartPath}?from=${encodeURIComponent(target)}`}>\n {googleIcon()}\n Continue with Google\n </a>\n ) : null}\n\n <p className=\"auth-foot\">\n {lockIcon()}\n Access is limited to your workspace.\n </p>\n </main>\n </div>\n );\n}\n","import type { ReactNode } from 'react';\n\nimport { type GlyphName, strokeIcon } from './icons.js';\n\n/**\n * Callout components — the Mintlify `<Note>`, `<Warning>`, `<Info>`, and `<Tip>`\n * blocks. Server-compatible: no client state, so they render in a React Server\n * Component without a `'use client'` boundary.\n *\n * The box is styled by the `.cl` classes in `@blaaiz/docs-core/styles/docs.css`,\n * which a site already imports. That is what makes a callout follow the dark\n * theme: the class set carries a light and a dark palette per tone, where the\n * inline colours these components used before could only ever be light.\n *\n * @packageDocumentation\n */\n\ntype Tone = 'note' | 'warning' | 'info' | 'tip';\n\n/** The glyph each tone shows: a circled `i`, a bulb for a tip, a triangle to warn. */\nconst TONE_GLYPHS: Record<Tone, GlyphName> = {\n note: 'info',\n info: 'info',\n tip: 'bulb',\n warning: 'alert',\n};\n\n/**\n * A tinted callout box with the tone's icon.\n *\n * @public\n */\nexport function Callout({ tone = 'note', children }: { tone?: Tone; children?: ReactNode }) {\n return (\n <div className={`cl cl-${tone}`}>\n <span className=\"cl-icon\">{strokeIcon(TONE_GLYPHS[tone], { size: 18, rounded: true })}</span>\n <div className=\"cl-body\">{children}</div>\n </div>\n );\n}\n\n/** Mintlify `<Note>`. @public */\nexport function Note({ children }: { children?: ReactNode }) {\n return <Callout tone=\"note\">{children}</Callout>;\n}\n\n/** Mintlify `<Warning>`. @public */\nexport function Warning({ children }: { children?: ReactNode }) {\n return <Callout tone=\"warning\">{children}</Callout>;\n}\n\n/** Mintlify `<Info>`. @public */\nexport function Info({ children }: { children?: ReactNode }) {\n return <Callout tone=\"info\">{children}</Callout>;\n}\n\n/** Mintlify `<Tip>`. @public */\nexport function Tip({ children }: { children?: ReactNode }) {\n return <Callout tone=\"tip\">{children}</Callout>;\n}\n","import type { CSSProperties, ReactNode } from 'react';\n\n/**\n * Card components — the Mintlify `<Card>` and `<CardGroup>`. Server-compatible.\n *\n * Colours come from the framework's `--color-fd-*` theme variables, so a card\n * follows the site's palette and the dark theme. Nothing here is a fixed hue.\n *\n * @packageDocumentation\n */\n\n/**\n * A card. When `href` is set it renders as a link.\n *\n * @public\n */\nexport function Card({\n title,\n href,\n children,\n}: {\n title?: string;\n href?: string;\n children?: ReactNode;\n}) {\n const style: CSSProperties = {\n display: 'block',\n border: '1px solid var(--color-fd-border)',\n borderRadius: 12,\n padding: '16px 18px',\n textDecoration: 'none',\n color: 'inherit',\n background: 'var(--color-fd-card)',\n };\n const body = (\n <>\n {title !== undefined && (\n <div style={{ fontWeight: 700, fontSize: 15, marginBottom: 4 }}>{title}</div>\n )}\n <div style={{ color: 'var(--color-fd-muted-foreground)', fontSize: 14 }}>{children}</div>\n </>\n );\n if (href !== undefined) {\n return (\n <a href={href} style={style}>\n {body}\n </a>\n );\n }\n return <div style={style}>{body}</div>;\n}\n\n/**\n * A responsive grid of cards. `cols` sets the column count (default 2).\n *\n * @public\n */\nexport function CardGroup({ cols = 2, children }: { cols?: number; children?: ReactNode }) {\n const style: CSSProperties = {\n display: 'grid',\n gridTemplateColumns: `repeat(${String(cols)}, minmax(0, 1fr))`,\n gap: 12,\n margin: '16px 0',\n };\n return <div style={style}>{children}</div>;\n}\n","import type { ReactNode } from 'react';\n\n/**\n * Inline-SVG icon resolver for navigation icons named in `docs.json` (Mintlify\n * uses icon names like `house`, `book`, `code`). Zero dependency: a curated set\n * of common docs-nav icons plus a graceful no-icon fallback. Pass it to\n * `loader({ icon: docsIcon })`.\n *\n * @packageDocumentation\n */\n\nimport { type GlyphName, strokeIcon } from './icons.js';\n\n/** The glyphs a docs navigation reaches for, keyed by the names authors write. */\nconst ICONS: Record<string, GlyphName> = {\n house: 'house',\n book: 'book',\n code: 'code',\n rocket: 'rocket',\n terminal: 'terminal',\n wallet: 'wallet',\n key: 'key',\n webhook: 'webhook',\n globe: 'globe',\n};\n\n// Aliases point several common spellings at one glyph.\nconst ALIASES: Record<string, string> = {\n home: 'house',\n 'book-open': 'book',\n api: 'code',\n reference: 'code',\n terminal: 'terminal',\n bank: 'wallet',\n 'credit-card': 'wallet',\n auth: 'key',\n lock: 'key',\n world: 'globe',\n};\n\n/**\n * Resolve a `docs.json` icon name to an inline SVG. Unknown names resolve to\n * nothing, so the sidebar simply shows no icon rather than a broken one.\n *\n * @param name - the icon name from `docs.json`, or undefined\n * @returns the icon element, or undefined\n * @public\n */\nexport function docsIcon(name: string | undefined): ReactNode {\n if (!name) {\n return undefined;\n }\n const key = name.toLowerCase();\n const glyph = ICONS[key] ?? ICONS[ALIASES[key] ?? ''];\n // The key matters: fumadocs renders a nav link as the array [icon, text], and\n // an unkeyed element in that array raises React's \"unique key\" warning in the\n // consuming site's console.\n return glyph === undefined\n ? undefined\n : strokeIcon(glyph, { size: 16, rounded: true, key: `docs-icon-${glyph}` });\n}\n","/**\n * A general error screen with per-kind states.\n *\n * One component covers every full-page error a docs site shows — a missing page\n * (404), a forbidden account (403), a runtime failure (500), an offline state —\n * each with its own icon, eyebrow, and default copy. A site picks the `kind`\n * and, for runtime errors, passes a retry action; the framework owns the rest.\n * Server-compatible: the site's `error.tsx` wrapper carries the `'use client'`\n * boundary and hands in the retry button.\n *\n * @packageDocumentation\n */\n\nimport type { ReactNode } from 'react';\n\nimport { type GlyphName, strokeIcon } from './icons.js';\n\n/**\n * The error states the screen renders.\n *\n * @public\n */\nexport type ErrorKind = 'not-found' | 'forbidden' | 'server' | 'offline' | 'unknown';\n\n/**\n * The default eyebrow, title, description, and icon for a {@link ErrorKind}.\n *\n * @public\n */\nexport interface ErrorPreset {\n readonly code: string;\n readonly title: string;\n readonly description: string;\n readonly icon: ReactNode;\n}\n\n/** The screens' icons are drawn a hair lighter than the rest of the UI. */\nfunction icon(name: GlyphName): ReactNode {\n return strokeIcon(name, { strokeWidth: 1.75 });\n}\n\nconst PRESETS: Record<ErrorKind, ErrorPreset> = {\n 'not-found': {\n code: '404',\n title: 'Page not found',\n description: \"The page you're looking for doesn't exist or may have moved.\",\n icon: icon('crossCircle'),\n },\n forbidden: {\n code: '403',\n title: 'Access restricted',\n description: 'Your account is not allowed to view this page. Sign in with an allowed account.',\n icon: icon('lock'),\n },\n server: {\n code: '500',\n title: 'Something went wrong',\n description: 'An unexpected error occurred on our side. Please try again in a moment.',\n icon: icon('alert'),\n },\n offline: {\n code: 'Offline',\n title: \"You're offline\",\n description: 'Check your connection and try again.',\n icon: icon('offline'),\n },\n unknown: {\n code: 'Error',\n title: 'Something went wrong',\n description: 'An unexpected error occurred. Please try again.',\n icon: icon('info'),\n },\n};\n\n/**\n * The default preset for an error kind — its icon, eyebrow, and copy.\n *\n * @param kind - the error state\n * @returns the preset a site can render or override\n * @public\n */\nexport function errorPreset(kind: ErrorKind): ErrorPreset {\n return PRESETS[kind];\n}\n\n/**\n * Props for {@link ErrorScreen}. Everything but `kind` is optional: the kind's\n * preset fills the eyebrow, title, description, and icon unless overridden.\n *\n * @public\n */\nexport interface ErrorScreenProps {\n /** Which error state to render. Default `unknown`. */\n readonly kind?: ErrorKind;\n /** Override the eyebrow code (e.g. a specific status). */\n readonly code?: string;\n /** Override the title. */\n readonly title?: string;\n /** Override the description. */\n readonly description?: string;\n /** When set, render a primary button linking here (e.g. `/docs`). */\n readonly homeHref?: string;\n /** Label for the home button. Default \"Back to docs\". */\n readonly homeLabel?: string;\n /** An extra action rendered beside the home button (e.g. a retry button). */\n readonly action?: ReactNode;\n}\n\nfunction homeIcon(): ReactNode {\n return strokeIcon('house');\n}\n\n/**\n * Render the error screen.\n *\n * @param props - see {@link ErrorScreenProps}\n * @public\n */\nexport function ErrorScreen(props: ErrorScreenProps): ReactNode {\n const kind = props.kind ?? 'unknown';\n const preset = PRESETS[kind];\n const code = props.code ?? preset.code;\n const title = props.title ?? preset.title;\n const description = props.description ?? preset.description;\n\n return (\n <div className=\"error-screen\">\n <div className=\"auth-ambient\" aria-hidden=\"true\" />\n <main className=\"error-card\">\n <div className=\"error-glyph\" data-kind={kind}>\n {preset.icon}\n </div>\n <p className=\"error-code\">{code}</p>\n <h1 className=\"error-title\">{title}</h1>\n <p className=\"error-desc\">{description}</p>\n {props.homeHref || props.action ? (\n <div className=\"error-actions\">\n {props.homeHref ? (\n <a className=\"error-btn error-btn-primary\" href={props.homeHref}>\n {homeIcon()}\n {props.homeLabel ?? 'Back to docs'}\n </a>\n ) : null}\n {props.action}\n </div>\n ) : null}\n </main>\n </div>\n );\n}\n","import type { ReactNode } from 'react';\n\n/**\n * Steps components — the Mintlify `<Steps>` and `<Step>`. Server-compatible.\n *\n * The spine uses the framework's border token, so it follows the site's palette\n * and the dark theme.\n *\n * @packageDocumentation\n */\n\n/**\n * An ordered list of steps.\n *\n * @public\n */\nexport function Steps({ children }: { children?: ReactNode }) {\n return (\n <div\n style={{\n borderLeft: '2px solid var(--color-fd-border)',\n paddingLeft: 20,\n margin: '16px 0',\n display: 'flex',\n flexDirection: 'column',\n gap: 16,\n }}\n >\n {children}\n </div>\n );\n}\n\n/**\n * A single step with an optional title.\n *\n * @public\n */\nexport function Step({ title, children }: { title?: string; children?: ReactNode }) {\n return (\n <div>\n {title !== undefined && (\n <div style={{ fontWeight: 700, fontSize: 15, marginBottom: 4 }}>{title}</div>\n )}\n <div>{children}</div>\n </div>\n );\n}\n","import { Accordion, AccordionGroup } from './accordion.js';\nimport { Info, Note, Tip, Warning } from './callout.js';\nimport { Card, CardGroup } from './card.js';\nimport { Step, Steps } from './steps.js';\n\n/**\n * The Mintlify-compatible MDX component map.\n *\n * Pass this to an MDX renderer (for example `next-mdx-remote`'s `compileMDX`)\n * so real Mintlify guides render unchanged. A site no longer needs to shim\n * these itself.\n *\n * @public\n */\nexport const mdxComponents = {\n Note,\n Warning,\n Info,\n Tip,\n Card,\n CardGroup,\n Accordion,\n AccordionGroup,\n Steps,\n Step,\n};\n","import type { CSSProperties } from 'react';\n\nimport type { NavItem, NavPage, Navigation } from '../core/index.js';\n\n/**\n * The navigation sidebar. Renders a {@link Navigation} tree (produced by\n * `parseNavigation`) as tabs, groups, and page links. Framework-agnostic: it\n * emits plain anchors and takes an optional `resolveHref` so a site controls\n * its own routing. Server-compatible.\n *\n * @packageDocumentation\n */\n\n/**\n * Map a navigation page to a URL. Override to control routing — the default\n * assumes one specific site shape, which is why {@link DocsSidebar} is\n * deprecated.\n *\n * @public\n */\nexport type ResolveHref = (page: NavPage) => string;\n\nconst defaultResolveHref: ResolveHref = (page) => {\n if (page.kind === 'openapi') {\n return '/reference';\n }\n if (page.file === 'introduction') {\n return '/';\n }\n return `/${page.file}`;\n};\n\n/**\n * The method palette. The three status hues are the ones\n * `styles/api-reference.css` uses for its badges, so a method reads the same\n * colour everywhere; `POST` follows the site's own accent.\n */\nconst METHOD_COLORS: Record<string, string> = {\n GET: '#16a34a',\n POST: 'var(--color-fd-primary)',\n PUT: '#d97706',\n PATCH: '#d97706',\n DELETE: '#dc2626',\n};\n\nfunction labelForDoc(file: string): string {\n const last = file.split('/').pop() ?? file;\n return last.replace(/-/g, ' ').replace(/\\b\\w/g, (c) => c.toUpperCase());\n}\n\nfunction Items({\n items,\n depth,\n resolveHref,\n}: {\n items: readonly NavItem[];\n depth: number;\n resolveHref: ResolveHref;\n}) {\n const list: CSSProperties = { listStyle: 'none', margin: 0, paddingLeft: depth === 0 ? 0 : 12 };\n const groupLabel: CSSProperties = {\n fontSize: 11,\n fontWeight: 700,\n textTransform: 'uppercase',\n letterSpacing: '0.04em',\n color: 'var(--color-fd-muted-foreground)',\n margin: '6px 0',\n };\n const link: CSSProperties = {\n display: 'flex',\n alignItems: 'center',\n gap: 8,\n padding: '5px 8px',\n borderRadius: 6,\n color: 'var(--color-fd-foreground)',\n textDecoration: 'none',\n fontSize: 14,\n };\n return (\n <ul style={list}>\n {items.map((item, index) => {\n if (item.kind === 'group') {\n return (\n <li key={`g-${String(index)}`} style={{ marginTop: 10 }}>\n <div style={groupLabel}>{item.title}</div>\n <Items items={item.items} depth={depth + 1} resolveHref={resolveHref} />\n </li>\n );\n }\n return (\n <li key={`p-${String(index)}`}>\n <a href={resolveHref(item)} style={link}>\n {item.kind === 'openapi' && (\n <span\n style={{\n fontSize: 9,\n fontWeight: 700,\n color: METHOD_COLORS[item.method] ?? 'var(--color-fd-muted-foreground)',\n minWidth: 34,\n }}\n >\n {item.method}\n </span>\n )}\n <span>\n {item.kind === 'openapi'\n ? item.apiPath.replace(/^\\/api\\//, '')\n : labelForDoc(item.file)}\n </span>\n </a>\n </li>\n );\n })}\n </ul>\n );\n}\n\n/**\n * Render the documentation sidebar.\n *\n * @deprecated Use fumadocs' `DocsLayout` with `loader({ icon: docsIcon })`,\n * which both shipped sites use. This component predates that wiring: it renders\n * plain anchors with no active state, no collapsible groups, and no search, and\n * its default `resolveHref` assumes a routing shape (`/reference`, and\n * `introduction` at the root) that no site now uses. Pass your own\n * {@link ResolveHref} if you keep it. It stays exported, and behaves exactly as\n * before, until the next major version.\n *\n * @public\n */\nexport function DocsSidebar({\n nav,\n resolveHref = defaultResolveHref,\n}: {\n nav: Navigation;\n resolveHref?: ResolveHref;\n}) {\n return (\n <nav style={{ padding: '20px 16px' }}>\n {nav.map((tab, index) => (\n <div key={`t-${String(index)}`} style={{ marginBottom: 18 }}>\n <div\n style={{\n fontSize: 13,\n fontWeight: 800,\n color: 'var(--color-fd-foreground)',\n marginBottom: 4,\n }}\n >\n {tab.title}\n </div>\n <Items items={tab.items} depth={0} resolveHref={resolveHref} />\n </div>\n ))}\n </nav>\n );\n}\n"]}
package/dist/ui.d.cts ADDED
@@ -0,0 +1,428 @@
1
+ import * as react from 'react';
2
+ import { ReactNode } from 'react';
3
+ import { D as DocsConfig, N as Navigation, l as NavPage } from './navigation-CGqFIPlP.cjs';
4
+
5
+ /**
6
+ * Accordion components — the Mintlify `<Accordion>` and `<AccordionGroup>`.
7
+ * Built on the native `<details>` element, so they are interactive with zero
8
+ * client JavaScript and render in a Server Component. The hairline uses the
9
+ * framework's border token, so it follows the site's palette and the dark theme.
10
+ *
11
+ * @packageDocumentation
12
+ */
13
+ /**
14
+ * A single collapsible section.
15
+ *
16
+ * @public
17
+ */
18
+ declare function Accordion({ title, children }: {
19
+ title: string;
20
+ children?: ReactNode;
21
+ }): react.JSX.Element;
22
+ /**
23
+ * A group of accordions.
24
+ *
25
+ * @public
26
+ */
27
+ declare function AccordionGroup({ children }: {
28
+ children?: ReactNode;
29
+ }): react.JSX.Element;
30
+
31
+ /**
32
+ * The Mintlify-style API operation layout: one two-column row for the whole
33
+ * operation, so the code rail starts level with the endpoint title. Pass it to
34
+ * fumadocs-openapi — the slots type is structural, so this module needs no
35
+ * fumadocs dependency and the site keeps ownership of that package.
36
+ *
37
+ * @example
38
+ * ```tsx
39
+ * export const APIPage = createOpenAPIPage({
40
+ * content: { renderOperationLayout: apiOperationLayout },
41
+ * });
42
+ * ```
43
+ *
44
+ * @packageDocumentation
45
+ */
46
+ /**
47
+ * The slots fumadocs-openapi hands to `renderOperationLayout`.
48
+ *
49
+ * @public
50
+ */
51
+ interface ApiOperationSlots {
52
+ readonly header: ReactNode;
53
+ readonly description: ReactNode;
54
+ readonly apiPlayground: ReactNode;
55
+ readonly authSchemes: ReactNode;
56
+ readonly parameters: ReactNode;
57
+ readonly body: ReactNode;
58
+ readonly responses: ReactNode;
59
+ readonly callbacks: ReactNode;
60
+ readonly apiExample: ReactNode;
61
+ }
62
+ /**
63
+ * Render an API operation as title → description → playground → request details
64
+ * on the left, with the code/response rail as the right column. Pair with
65
+ * `@blaaiz/docs-core/styles/api-reference.css`, which anchors the rail to the
66
+ * viewport.
67
+ *
68
+ * @param slots - the operation slots from fumadocs-openapi
69
+ * @returns the two-column operation layout
70
+ * @public
71
+ */
72
+ declare function apiOperationLayout(slots: ApiOperationSlots): ReactNode;
73
+
74
+ /**
75
+ * Sidebar helpers for the API reference: a coloured HTTP-method badge and a
76
+ * page-tree transformer that prefixes each API page's sidebar entry with it —
77
+ * the Mintlify look (POST · GET · … next to the endpoint name). Server-
78
+ * compatible; styled by `styles/api-reference.css`.
79
+ *
80
+ * @packageDocumentation
81
+ */
82
+ /**
83
+ * A coloured HTTP-method pill (GET, POST, …).
84
+ *
85
+ * @param props - the HTTP method
86
+ * @public
87
+ */
88
+ declare function MethodBadge({ method }: {
89
+ method: string;
90
+ }): react.JSX.Element;
91
+ /**
92
+ * The minimal page-tree item this transformer touches. Structural, so the
93
+ * framework needs no fumadocs types; a site passes the result straight into
94
+ * `loader({ pageTree: { transformers } })`.
95
+ *
96
+ * @public
97
+ */
98
+ interface SidebarItem {
99
+ readonly type?: string;
100
+ readonly url?: string;
101
+ name?: ReactNode;
102
+ }
103
+ /**
104
+ * A page-tree transformer with a `file` hook, generic over the tree's own item
105
+ * type so it slots into fumadocs' `loader({ pageTree: { transformers } })`
106
+ * without a cast: `file` returns exactly the item type it was given.
107
+ *
108
+ * @public
109
+ */
110
+ interface SidebarBadgeTransformer {
111
+ file<T extends SidebarItem>(node: T): T;
112
+ }
113
+ /**
114
+ * A page-tree transformer that prefixes every API page's sidebar entry with its
115
+ * HTTP-method badge, matching endpoint URLs against the `methods` map the
116
+ * generator emits (`content/api-methods.json`).
117
+ *
118
+ * @example
119
+ * ```ts
120
+ * import methods from '@/content/api-methods.json';
121
+ * loader({ pageTree: { transformers: [apiMethodBadges(methods)] } });
122
+ * ```
123
+ *
124
+ * @param methods - map of page URL to HTTP method
125
+ * @returns a transformer with a `file` hook
126
+ * @public
127
+ */
128
+ declare function apiMethodBadges(methods: Readonly<Record<string, string>>): SidebarBadgeTransformer;
129
+
130
+ /**
131
+ * The sign-in screen for a workspace-gated docs site.
132
+ *
133
+ * A site renders one element — `<AuthScreen config={config} .../>` — and gets
134
+ * the whole gate: brand, the allowed-domain note, the providers its config
135
+ * declares (email, shared secret, Google), and an inline error banner. The
136
+ * shared-secret provider is a two-step flow — email, then secret — rendered by
137
+ * the `step` prop. The framework owns the layout and copy; the site owns only
138
+ * its config. Server-rendered: every form is a native POST, no client JS.
139
+ *
140
+ * @packageDocumentation
141
+ */
142
+
143
+ /**
144
+ * Map a sign-in error code (carried on `?error=` after a failed attempt) to a
145
+ * human sentence. Unknown codes get a safe generic message.
146
+ *
147
+ * @param code - the error code, or undefined
148
+ * @param domains - the allowed email domains, for the domain-mismatch message
149
+ * @returns the message to show, or null when there is no error
150
+ * @public
151
+ */
152
+ declare function authErrorMessage(code: string | undefined, domains: readonly string[]): string | null;
153
+ /**
154
+ * Props for {@link AuthScreen}.
155
+ *
156
+ * @public
157
+ */
158
+ interface AuthScreenProps {
159
+ /** The site configuration; drives brand, providers, and allowed domains. */
160
+ readonly config: DocsConfig;
161
+ /** The path to return to after sign-in (from the gate's `?from=`). */
162
+ readonly from?: string;
163
+ /** A sign-in error code to surface inline (from `?error=`). */
164
+ readonly error?: string;
165
+ /**
166
+ * Which step of the shared-secret flow to render. `'email'` (default) shows
167
+ * the email field; `'secret'` shows the secret field for the already-validated
168
+ * {@link AuthScreenProps.email}. Ignored unless the secret provider is enabled.
169
+ */
170
+ readonly step?: 'email' | 'secret';
171
+ /** The domain-checked email to show on the secret step (from the site's cookie). */
172
+ readonly email?: string;
173
+ /**
174
+ * Whether to offer the shared-secret flow. Defaults to whether config declares
175
+ * the secret provider; pass `false` when its env secret is absent. When on, it
176
+ * supersedes plain email sign-in.
177
+ */
178
+ readonly secretEnabled?: boolean;
179
+ /**
180
+ * Whether to offer the Google button. Defaults to whether config declares the
181
+ * Google provider; pass `false` to hide it when its env vars are absent.
182
+ */
183
+ readonly googleEnabled?: boolean;
184
+ /** The email sign-in endpoint. Default `/api/auth/email`. */
185
+ readonly emailAction?: string;
186
+ /** The shared-secret sign-in endpoint (both steps post here). Default `/api/auth/secret`. */
187
+ readonly secretAction?: string;
188
+ /** The Google sign-in start path. Default `/api/auth/google/start`. */
189
+ readonly googleStartPath?: string;
190
+ /** The sign-in page path, for the "use a different email" link. Default `/signin`. */
191
+ readonly signInPath?: string;
192
+ }
193
+ /**
194
+ * Render the sign-in screen.
195
+ *
196
+ * @param props - see {@link AuthScreenProps}
197
+ * @public
198
+ */
199
+ declare function AuthScreen(props: AuthScreenProps): ReactNode;
200
+
201
+ /**
202
+ * Callout components — the Mintlify `<Note>`, `<Warning>`, `<Info>`, and `<Tip>`
203
+ * blocks. Server-compatible: no client state, so they render in a React Server
204
+ * Component without a `'use client'` boundary.
205
+ *
206
+ * The box is styled by the `.cl` classes in `@blaaiz/docs-core/styles/docs.css`,
207
+ * which a site already imports. That is what makes a callout follow the dark
208
+ * theme: the class set carries a light and a dark palette per tone, where the
209
+ * inline colours these components used before could only ever be light.
210
+ *
211
+ * @packageDocumentation
212
+ */
213
+ type Tone = 'note' | 'warning' | 'info' | 'tip';
214
+ /**
215
+ * A tinted callout box with the tone's icon.
216
+ *
217
+ * @public
218
+ */
219
+ declare function Callout({ tone, children }: {
220
+ tone?: Tone;
221
+ children?: ReactNode;
222
+ }): react.JSX.Element;
223
+ /** Mintlify `<Note>`. @public */
224
+ declare function Note({ children }: {
225
+ children?: ReactNode;
226
+ }): react.JSX.Element;
227
+ /** Mintlify `<Warning>`. @public */
228
+ declare function Warning({ children }: {
229
+ children?: ReactNode;
230
+ }): react.JSX.Element;
231
+ /** Mintlify `<Info>`. @public */
232
+ declare function Info({ children }: {
233
+ children?: ReactNode;
234
+ }): react.JSX.Element;
235
+ /** Mintlify `<Tip>`. @public */
236
+ declare function Tip({ children }: {
237
+ children?: ReactNode;
238
+ }): react.JSX.Element;
239
+
240
+ /**
241
+ * Card components — the Mintlify `<Card>` and `<CardGroup>`. Server-compatible.
242
+ *
243
+ * Colours come from the framework's `--color-fd-*` theme variables, so a card
244
+ * follows the site's palette and the dark theme. Nothing here is a fixed hue.
245
+ *
246
+ * @packageDocumentation
247
+ */
248
+ /**
249
+ * A card. When `href` is set it renders as a link.
250
+ *
251
+ * @public
252
+ */
253
+ declare function Card({ title, href, children, }: {
254
+ title?: string;
255
+ href?: string;
256
+ children?: ReactNode;
257
+ }): react.JSX.Element;
258
+ /**
259
+ * A responsive grid of cards. `cols` sets the column count (default 2).
260
+ *
261
+ * @public
262
+ */
263
+ declare function CardGroup({ cols, children }: {
264
+ cols?: number;
265
+ children?: ReactNode;
266
+ }): react.JSX.Element;
267
+
268
+ /**
269
+ * Resolve a `docs.json` icon name to an inline SVG. Unknown names resolve to
270
+ * nothing, so the sidebar simply shows no icon rather than a broken one.
271
+ *
272
+ * @param name - the icon name from `docs.json`, or undefined
273
+ * @returns the icon element, or undefined
274
+ * @public
275
+ */
276
+ declare function docsIcon(name: string | undefined): ReactNode;
277
+
278
+ /**
279
+ * A general error screen with per-kind states.
280
+ *
281
+ * One component covers every full-page error a docs site shows — a missing page
282
+ * (404), a forbidden account (403), a runtime failure (500), an offline state —
283
+ * each with its own icon, eyebrow, and default copy. A site picks the `kind`
284
+ * and, for runtime errors, passes a retry action; the framework owns the rest.
285
+ * Server-compatible: the site's `error.tsx` wrapper carries the `'use client'`
286
+ * boundary and hands in the retry button.
287
+ *
288
+ * @packageDocumentation
289
+ */
290
+
291
+ /**
292
+ * The error states the screen renders.
293
+ *
294
+ * @public
295
+ */
296
+ type ErrorKind = 'not-found' | 'forbidden' | 'server' | 'offline' | 'unknown';
297
+ /**
298
+ * The default eyebrow, title, description, and icon for a {@link ErrorKind}.
299
+ *
300
+ * @public
301
+ */
302
+ interface ErrorPreset {
303
+ readonly code: string;
304
+ readonly title: string;
305
+ readonly description: string;
306
+ readonly icon: ReactNode;
307
+ }
308
+ /**
309
+ * The default preset for an error kind — its icon, eyebrow, and copy.
310
+ *
311
+ * @param kind - the error state
312
+ * @returns the preset a site can render or override
313
+ * @public
314
+ */
315
+ declare function errorPreset(kind: ErrorKind): ErrorPreset;
316
+ /**
317
+ * Props for {@link ErrorScreen}. Everything but `kind` is optional: the kind's
318
+ * preset fills the eyebrow, title, description, and icon unless overridden.
319
+ *
320
+ * @public
321
+ */
322
+ interface ErrorScreenProps {
323
+ /** Which error state to render. Default `unknown`. */
324
+ readonly kind?: ErrorKind;
325
+ /** Override the eyebrow code (e.g. a specific status). */
326
+ readonly code?: string;
327
+ /** Override the title. */
328
+ readonly title?: string;
329
+ /** Override the description. */
330
+ readonly description?: string;
331
+ /** When set, render a primary button linking here (e.g. `/docs`). */
332
+ readonly homeHref?: string;
333
+ /** Label for the home button. Default "Back to docs". */
334
+ readonly homeLabel?: string;
335
+ /** An extra action rendered beside the home button (e.g. a retry button). */
336
+ readonly action?: ReactNode;
337
+ }
338
+ /**
339
+ * Render the error screen.
340
+ *
341
+ * @param props - see {@link ErrorScreenProps}
342
+ * @public
343
+ */
344
+ declare function ErrorScreen(props: ErrorScreenProps): ReactNode;
345
+
346
+ /**
347
+ * Steps components — the Mintlify `<Steps>` and `<Step>`. Server-compatible.
348
+ *
349
+ * The spine uses the framework's border token, so it follows the site's palette
350
+ * and the dark theme.
351
+ *
352
+ * @packageDocumentation
353
+ */
354
+ /**
355
+ * An ordered list of steps.
356
+ *
357
+ * @public
358
+ */
359
+ declare function Steps({ children }: {
360
+ children?: ReactNode;
361
+ }): react.JSX.Element;
362
+ /**
363
+ * A single step with an optional title.
364
+ *
365
+ * @public
366
+ */
367
+ declare function Step({ title, children }: {
368
+ title?: string;
369
+ children?: ReactNode;
370
+ }): react.JSX.Element;
371
+
372
+ /**
373
+ * The Mintlify-compatible MDX component map.
374
+ *
375
+ * Pass this to an MDX renderer (for example `next-mdx-remote`'s `compileMDX`)
376
+ * so real Mintlify guides render unchanged. A site no longer needs to shim
377
+ * these itself.
378
+ *
379
+ * @public
380
+ */
381
+ declare const mdxComponents: {
382
+ Note: typeof Note;
383
+ Warning: typeof Warning;
384
+ Info: typeof Info;
385
+ Tip: typeof Tip;
386
+ Card: typeof Card;
387
+ CardGroup: typeof CardGroup;
388
+ Accordion: typeof Accordion;
389
+ AccordionGroup: typeof AccordionGroup;
390
+ Steps: typeof Steps;
391
+ Step: typeof Step;
392
+ };
393
+
394
+ /**
395
+ * The navigation sidebar. Renders a {@link Navigation} tree (produced by
396
+ * `parseNavigation`) as tabs, groups, and page links. Framework-agnostic: it
397
+ * emits plain anchors and takes an optional `resolveHref` so a site controls
398
+ * its own routing. Server-compatible.
399
+ *
400
+ * @packageDocumentation
401
+ */
402
+ /**
403
+ * Map a navigation page to a URL. Override to control routing — the default
404
+ * assumes one specific site shape, which is why {@link DocsSidebar} is
405
+ * deprecated.
406
+ *
407
+ * @public
408
+ */
409
+ type ResolveHref = (page: NavPage) => string;
410
+ /**
411
+ * Render the documentation sidebar.
412
+ *
413
+ * @deprecated Use fumadocs' `DocsLayout` with `loader({ icon: docsIcon })`,
414
+ * which both shipped sites use. This component predates that wiring: it renders
415
+ * plain anchors with no active state, no collapsible groups, and no search, and
416
+ * its default `resolveHref` assumes a routing shape (`/reference`, and
417
+ * `introduction` at the root) that no site now uses. Pass your own
418
+ * {@link ResolveHref} if you keep it. It stays exported, and behaves exactly as
419
+ * before, until the next major version.
420
+ *
421
+ * @public
422
+ */
423
+ declare function DocsSidebar({ nav, resolveHref, }: {
424
+ nav: Navigation;
425
+ resolveHref?: ResolveHref;
426
+ }): react.JSX.Element;
427
+
428
+ export { Accordion, AccordionGroup, type ApiOperationSlots, AuthScreen, type AuthScreenProps, Callout, Card, CardGroup, DocsSidebar, type ErrorKind, type ErrorPreset, ErrorScreen, type ErrorScreenProps, Info, MethodBadge, Note, type ResolveHref, type SidebarBadgeTransformer, type SidebarItem, Step, Steps, Tip, Warning, apiMethodBadges, apiOperationLayout, authErrorMessage, docsIcon, errorPreset, mdxComponents };