export declare const mdxComponentsTemplate = "import React from \"react\";\nimport Link from \"next/link\";\n\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\ntype MDXComponents = Record>;\nimport { Badge } from \"@/components/layout/Badge\";\nimport { Code as CodeBlock, CodeTabs } from \"@/components/layout/Code\";\nimport { Card } from \"@/components/layout/Card\";\nimport { Accordion } from \"@/components/layout/Accordion\";\nimport { Tabs, TabContent } from \"@/components/layout/Tabs\";\nimport { Callout } from \"@/components/layout/Callout\";\nimport { Icon } from \"@/components/layout/Icon\";\nimport { Columns } from \"@/components/layout/Columns\";\nimport { Field } from \"@/components/layout/Field\";\nimport { Frame } from \"@/components/layout/Frame\";\nimport { Prompt } from \"@/components/layout/Prompt\";\nimport { SidePanel } from \"@/components/layout/SidePanel\";\nimport { Space } from \"@/components/layout/Space\";\nimport { Update } from \"@/components/layout/Update\";\nimport { Steps, Step } from \"@/components/layout/Steps\";\nimport { Button } from \"@/components/layout/Button\";\nimport { ColorSwatch, ColorSwatchGroup } from \"@/components/layout/ColorSwatch\";\nimport { DemoTheme } from \"@/components/layout/DemoTheme\";\nimport { Tooltip } from \"@/components/layout/Tooltip\";\nimport { Tree as TreeRoot } from \"@/components/layout/Tree\";\nimport {\n parseTreeChildren,\n TreeFolder,\n TreeFile,\n} from \"@/components/layout/TreeData\";\nimport { createSlugger } from \"@/components/layout/Slug\";\n\ninterface HeadingProps extends React.HTMLAttributes {\n children?: React.ReactNode;\n}\n\ninterface PreProps extends React.HTMLAttributes {\n children?: React.ReactNode;\n}\n\n// The Tree compound is assembled here in shared code: statics attached to\n// the client component would not survive the client-reference boundary, and\n// the Tree.Folder / Tree.File elements MDX creates must be parsed in the\n// same runtime that created them, where marker identity is guaranteed. Only\n// the resulting plain TreeNode data crosses to the client component.\nconst Tree = Object.assign(\n function Tree({ children }: { children?: React.ReactNode }) {\n return ;\n },\n { Folder: TreeFolder, File: TreeFile },\n);\n\n// and are aliases; either tag supports either syntax.\nconst FileTree = Tree;\n\nexport function extractAllTextFromChildren(children: React.ReactNode): string {\n if (children == null) return \"\";\n if (typeof children === \"string\") return children;\n if (typeof children === \"number\") return String(children);\n if (typeof children === \"boolean\") return \"\";\n if (Array.isArray(children))\n return children.map(extractAllTextFromChildren).join(\"\");\n if (React.isValidElement(children)) {\n const element = children as React.ReactElement<{\n children?: React.ReactNode;\n }>;\n return extractAllTextFromChildren(element.props.children);\n }\n return \"\";\n}\n\n// Map
 to our  component\nexport function Pre(props: PreProps) {\n  const child = React.Children.only(props.children) as React.ReactElement<{\n    className?: string;\n    children?: React.ReactNode;\n  }> | null;\n  if (child && child.type === \"code\") {\n    const className = child.props.className || \"\";\n    const match = /language-(\\w+)/.exec(className);\n    const language = match ? match[1] : undefined;\n    const code = extractAllTextFromChildren(child.props.children).replace(\n      /\\n$/,\n      \"\",\n    );\n    if (language) {\n      return (\n        \n      );\n    }\n  }\n  return 
;\n}\n\nexport function useMDXComponents(components: MDXComponents): MDXComponents {\n  // One slugger per render so repeated heading text (and  labels)\n  // resolve to unique, document-order ids that match the index sidebar built\n  // in components/Docs.tsx.\n  const slug = createSlugger();\n  return {\n    // Headings with auto-generated ids for TOC and deep links\n    h1: ({ children, ...props }: HeadingProps) => {\n      const id = slug(extractAllTextFromChildren(children));\n      return (\n        

\n {children}\n

\n );\n },\n h2: ({ children, ...props }: HeadingProps) => {\n const id = slug(extractAllTextFromChildren(children));\n return (\n

\n {children}\n

\n );\n },\n h3: ({ children, ...props }: HeadingProps) => {\n const id = slug(extractAllTextFromChildren(children));\n return (\n

\n {children}\n

\n );\n },\n h4: ({ children, ...props }: HeadingProps) => {\n const id = slug(extractAllTextFromChildren(children));\n return (\n

\n {children}\n

\n );\n },\n h5: ({ children, ...props }: HeadingProps) => {\n const id = slug(extractAllTextFromChildren(children));\n return (\n
\n {children}\n
\n );\n },\n h6: ({ children, ...props }: HeadingProps) => {\n const id = slug(extractAllTextFromChildren(children));\n return (\n
\n {children}\n
\n );\n },\n\n // Links - use Next.js Link for internal paths\n a: ({\n href,\n children,\n ...props\n }: React.AnchorHTMLAttributes) => {\n if (href && href.startsWith(\"/\")) {\n return (\n \n {children}\n \n );\n }\n return (\n \n {children}\n \n );\n },\n\n // Tables - wrap in a div for responsive overflow\n table: (props: React.TableHTMLAttributes) => (\n
\n \n \n ),\n\n // Code blocks\n pre: Pre,\n\n // Expose your custom components for MDX usage\n Badge,\n Code: CodeBlock,\n CodeTabs,\n Card,\n Accordion,\n Tabs,\n TabContent,\n Callout,\n Icon,\n Columns,\n Field,\n Frame,\n Prompt,\n SidePanel,\n // Share the heading slugger so an label anchor stays unique and\n // in document order alongside the surrounding headings. Only consume a\n // slug when a label is present so a label-less does not crash the\n // slugger (Update itself renders gracefully without a label anchor).\n Update: (props: React.ComponentProps) => (\n \n ),\n Steps,\n Step,\n Button,\n ColorSwatch,\n ColorSwatchGroup,\n DemoTheme,\n Tooltip,\n Tree,\n FileTree,\n Space,\n ...components,\n };\n}\n";