{
  "$schema": "https://ui.shadcn.com/schema/registry-item.json",
  "name": "docs-page",
  "title": "Docs page",
  "description": "DocsPage, DocsTitle, DocsDescription and DocsBody, with the breadcrumb, previous/next links, the table of contents (a popover on small screens), EditOnGitHub and PageLastUpdate.",
  "dependencies": [
    "cn",
    "@fuma-translate/react@^1.0.2",
    "fumadocs-core@^16.17.8",
    "lucide-react"
  ],
  "registryDependencies": [
    "breadcrumb",
    "button",
    "collapsible",
    "@docscn/toc",
    "@docscn/typography",
    "@docscn/page-actions",
    "@docscn/docs-layout",
    "@docscn/tree-context",
    "@docscn/docs-utils"
  ],
  "files": [
    {
      "path": "registry/base/docs/layouts/docs/page/index.tsx",
      "content": "// Adapted from Fumadocs UI (https://github.com/fuma-nama/fumadocs)\n// Copyright (c) 2023 Fuma, MIT License\n\"use client\";\n\nimport { useTranslations } from \"@fuma-translate/react\";\nimport { cn } from \"cn\";\nimport type { TOCItemType } from \"fumadocs-core/toc\";\nimport { Edit } from \"lucide-react\";\nimport {\n  type ComponentProps,\n  createContext,\n  use,\n  useSyncExternalStore,\n} from \"react\";\nimport { buttonVariants } from \"@/components/ui/button\";\nimport { Breadcrumb, type BreadcrumbProps } from \"./slots/breadcrumb\";\nimport { Container } from \"./slots/container\";\nimport { Footer, type FooterProps } from \"./slots/footer\";\nimport {\n  TOC,\n  TOCPopover,\n  type TOCPopoverProps,\n  type TOCProps,\n  TOCProvider,\n  type TOCProviderProps,\n} from \"./slots/toc\";\n\nexport interface DocsPageProps extends ComponentProps<\"article\"> {\n  toc?: TOCItemType[];\n\n  /**\n   * Extend the page to fill all available space\n   *\n   * @defaultValue false\n   */\n  full?: boolean | undefined;\n\n  footer?: FooterOptions;\n  breadcrumb?: BreadcrumbOptions;\n  tableOfContent?: TableOfContentOptions;\n  tableOfContentPopover?: TableOfContentPopoverOptions;\n}\n\ninterface BreadcrumbOptions extends BreadcrumbProps {\n  enabled?: boolean;\n}\n\ninterface FooterOptions extends FooterProps {\n  enabled?: boolean;\n}\n\ntype TableOfContentOptions = Pick<TOCProviderProps, \"single\"> &\n  TOCProps & {\n    enabled?: boolean;\n  };\n\ntype TableOfContentPopoverOptions = TOCPopoverProps & {\n  enabled?: boolean;\n};\n\nconst PageContext = createContext<{\n  full: NonNullable<DocsPageProps[\"full\"]>;\n} | null>(null);\n\nexport function useDocsPage() {\n  const context = use(PageContext);\n  if (!context)\n    throw new Error(\n      \"Please use page components under <DocsPage /> (`components/docs/layouts/docs/page`).\",\n    );\n  return context;\n}\n\nexport function DocsPage({\n  full = false,\n  tableOfContent: { enabled: tocEnabled = !full, single, ...tocProps } = {},\n  tableOfContentPopover: {\n    enabled: tocPopoverEnabled,\n    ...tocPopoverProps\n  } = {},\n  breadcrumb: { enabled: breadcrumbEnabled = true, ...breadcrumb } = {},\n  footer: { enabled: footerEnabled = true, ...footer } = {},\n  toc = [],\n  children,\n  ...containerProps\n}: DocsPageProps) {\n  tocPopoverEnabled ??= Boolean(\n    toc.length > 0 || tocPopoverProps.header || tocPopoverProps.footer,\n  );\n\n  return (\n    <PageContext value={{ full }}>\n      <TOCProvider\n        single={single}\n        toc={tocEnabled || tocPopoverEnabled ? toc : []}\n      >\n        {tocPopoverEnabled && <TOCPopover {...tocPopoverProps} />}\n        <div\n          data-docs-page=\"\"\n          className={cn(\n            \"mx-auto flex w-full flex-1\",\n            tocEnabled ? \"max-w-[calc(900px+268px)]\" : \"max-w-[1168px]\",\n          )}\n        >\n          <Container {...containerProps}>\n            {breadcrumbEnabled && <Breadcrumb {...breadcrumb} />}\n            {children}\n            {footerEnabled && <Footer {...footer} />}\n          </Container>\n          {tocEnabled && <TOC {...tocProps} />}\n        </div>\n      </TOCProvider>\n    </PageContext>\n  );\n}\n\nexport function EditOnGitHub(props: ComponentProps<\"a\">) {\n  const t = useTranslations({ note: \"edit page\" });\n\n  return (\n    <a\n      target=\"_blank\"\n      rel=\"noreferrer noopener\"\n      {...props}\n      className={cn(\n        buttonVariants({\n          variant: \"secondary\",\n          size: \"sm\",\n        }),\n        \"not-docs-typeset gap-1.5\",\n        props.className,\n      )}\n    >\n      {props.children ?? (\n        <>\n          <Edit className=\"size-3.5\" />\n          {t(\"Edit on GitHub\")}\n        </>\n      )}\n    </a>\n  );\n}\n\n/**\n * Add typography styles\n */\nexport function DocsBody({\n  children,\n  className,\n  ...props\n}: ComponentProps<\"div\">) {\n  return (\n    <div {...props} className={cn(\"docs-typeset flex-1\", className)}>\n      {children}\n    </div>\n  );\n}\n\nexport function DocsDescription({\n  children,\n  className,\n  ...props\n}: ComponentProps<\"p\">) {\n  // Don't render if no description provided\n  if (children === undefined) return null;\n\n  return (\n    <p\n      {...props}\n      className={cn(\"mb-8 text-lg text-muted-foreground\", className)}\n    >\n      {children}\n    </p>\n  );\n}\n\nexport function DocsTitle({\n  children,\n  className,\n  ...props\n}: ComponentProps<\"h1\">) {\n  return (\n    <h1\n      {...props}\n      className={cn(\"text-[1.75em] font-semibold tracking-tight\", className)}\n    >\n      {children}\n    </h1>\n  );\n}\n\nconst noop = () => () => {};\n\nexport function PageLastUpdate({\n  date: value,\n  ...props\n}: Omit<ComponentProps<\"p\">, \"children\"> & { date: Date }) {\n  const t = useTranslations({ note: \"page footer\" });\n  // formatted in the reader's locale and timezone, so empty on the server\n  const date = useSyncExternalStore(\n    noop,\n    () => value.toLocaleDateString(),\n    () => \"\",\n  );\n\n  return (\n    <p\n      {...props}\n      className={cn(\"text-sm text-muted-foreground\", props.className)}\n    >\n      {t(\"Last updated on\")} {date}\n    </p>\n  );\n}\n\nexport {\n  type BreadcrumbProps,\n  Breadcrumb as PageBreadcrumb,\n} from \"./slots/breadcrumb\";\nexport { type FooterProps, Footer as PageFooter } from \"./slots/footer\";\nexport {\n  MarkdownCopyButton,\n  ViewOptionsPopover,\n} from \"../../shared/page-actions\";\n",
      "type": "registry:component",
      "target": "@components/docs/layouts/docs/page/index.tsx"
    },
    {
      "path": "registry/base/docs/layouts/docs/page/slots/breadcrumb.tsx",
      "content": "// Adapted from Fumadocs UI (https://github.com/fuma-nama/fumadocs)\n// Copyright (c) 2023 Fuma, MIT License\n\"use client\";\n\nimport {\n  type BreadcrumbOptions,\n  getBreadcrumbItemsFromPath,\n} from \"fumadocs-core/breadcrumb\";\nimport Link from \"fumadocs-core/link\";\nimport { type ComponentProps, Fragment, useMemo } from \"react\";\nimport {\n  BreadcrumbItem,\n  BreadcrumbLink,\n  BreadcrumbList,\n  BreadcrumbPage,\n  BreadcrumbSeparator,\n  Breadcrumb as BreadcrumbRoot,\n} from \"@/components/ui/breadcrumb\";\nimport { useTreeContext, useTreePath } from \"../../../../contexts/tree\";\n\nexport type BreadcrumbProps = BreadcrumbOptions & ComponentProps<\"nav\">;\n\nexport function Breadcrumb({\n  includeRoot,\n  includeSeparator,\n  includePage,\n  ...props\n}: BreadcrumbProps) {\n  const path = useTreePath();\n  const { root } = useTreeContext();\n  const items = useMemo(() => {\n    return getBreadcrumbItemsFromPath(root, path, {\n      includePage,\n      includeSeparator,\n      includeRoot,\n    });\n  }, [includePage, includeRoot, includeSeparator, path, root]);\n\n  if (items.length === 0) return null;\n\n  return (\n    <BreadcrumbRoot {...props}>\n      <BreadcrumbList>\n        {items.map((item, i) => {\n          const last = i === items.length - 1;\n\n          return (\n            <Fragment key={i}>\n              {i !== 0 && <BreadcrumbSeparator />}\n              <BreadcrumbItem className=\"min-w-0\">\n                {item.url && !last ? (\n                  <BreadcrumbLink\n                    className=\"truncate\"\n                    render={<Link href={item.url} />}\n                  >\n                    {item.name}\n                  </BreadcrumbLink>\n                ) : last ? (\n                  <BreadcrumbPage className=\"truncate\">\n                    {item.name}\n                  </BreadcrumbPage>\n                ) : (\n                  <span className=\"truncate\">{item.name}</span>\n                )}\n              </BreadcrumbItem>\n            </Fragment>\n          );\n        })}\n      </BreadcrumbList>\n    </BreadcrumbRoot>\n  );\n}\n",
      "type": "registry:component",
      "target": "@components/docs/layouts/docs/page/slots/breadcrumb.tsx"
    },
    {
      "path": "registry/base/docs/layouts/docs/page/slots/container.tsx",
      "content": "// Adapted from Fumadocs UI (https://github.com/fuma-nama/fumadocs)\n// Copyright (c) 2023 Fuma, MIT License\n\"use client\";\n\nimport { cn } from \"cn\";\nimport type { ComponentProps } from \"react\";\nimport { useDocsPage } from \"..\";\n\nexport function Container(props: ComponentProps<\"article\">) {\n  const { full } = useDocsPage();\n\n  return (\n    <article\n      id=\"nd-page\"\n      data-layout-content=\"\"\n      data-full={full}\n      {...props}\n      className={cn(\n        \"mx-auto flex w-full max-w-[900px] min-w-0 flex-col gap-4 px-4 py-6 md:px-6 md:pt-[calc(--spacing(8)+var(--docs-page-offset,0px))] xl:px-8 xl:pt-14\",\n        full && \"max-w-[1168px]\",\n        props.className,\n      )}\n    >\n      {props.children}\n    </article>\n  );\n}\n",
      "type": "registry:component",
      "target": "@components/docs/layouts/docs/page/slots/container.tsx"
    },
    {
      "path": "registry/base/docs/layouts/docs/page/slots/footer.tsx",
      "content": "// Adapted from Fumadocs UI (https://github.com/fuma-nama/fumadocs)\n// Copyright (c) 2023 Fuma, MIT License\n\"use client\";\n\nimport { useTranslations } from \"@fuma-translate/react\";\nimport { cn } from \"cn\";\nimport { usePathname } from \"fumadocs-core/framework\";\nimport Link from \"fumadocs-core/link\";\nimport type * as PageTree from \"fumadocs-core/page-tree\";\nimport { ChevronLeft, ChevronRight } from \"lucide-react\";\nimport { type ComponentProps, useMemo } from \"react\";\nimport { isActive } from \"../../../../utils/urls\";\nimport { useFooterItems } from \"../../../../utils/use-footer-items\";\n\ntype Item = Pick<PageTree.Item, \"name\" | \"description\" | \"url\">;\n\nexport interface FooterProps extends ComponentProps<\"div\"> {\n  /**\n   * Items including information for the next and previous page\n   */\n  items?: {\n    previous?: Item;\n    next?: Item;\n  };\n}\n\nexport function Footer({ items, children, className, ...props }: FooterProps) {\n  const footerList = useFooterItems();\n  const pathname = usePathname();\n  const { previous, next } = useMemo(() => {\n    if (items) return items;\n\n    const idx = footerList.findIndex((item) => isActive(item.url, pathname));\n\n    if (idx === -1) return {};\n    return {\n      previous: footerList[idx - 1],\n      next: footerList[idx + 1],\n    };\n  }, [footerList, items, pathname]);\n\n  return (\n    <>\n      <div\n        className={cn(\n          \"@container grid gap-4\",\n          previous && next ? \"grid-cols-2\" : \"grid-cols-1\",\n          className,\n        )}\n        {...props}\n      >\n        {previous && <FooterItem item={previous} index={0} />}\n        {next && <FooterItem item={next} index={1} />}\n      </div>\n      {children}\n    </>\n  );\n}\n\nfunction FooterItem({ item, index }: { item: Item; index: 0 | 1 }) {\n  const t = useTranslations({ note: \"pagination\" });\n  const Icon = index === 0 ? ChevronLeft : ChevronRight;\n\n  return (\n    <Link\n      href={item.url}\n      className={cn(\n        \"flex flex-col gap-2 rounded-xl border p-4 text-sm transition-colors hover:bg-accent/80 hover:text-accent-foreground @max-lg:col-span-full\",\n        index === 1 && \"text-end\",\n      )}\n    >\n      <div\n        className={cn(\n          \"inline-flex items-center gap-1.5 font-medium\",\n          index === 1 && \"flex-row-reverse\",\n        )}\n      >\n        <Icon className=\"-mx-1 size-4 shrink-0 rtl:rotate-180\" />\n        <p>{item.name}</p>\n      </div>\n      <p className=\"text-muted-foreground\">\n        {item.description ??\n          (index === 0 ? t(\"Previous Page\") : t(\"Next Page\"))}\n      </p>\n    </Link>\n  );\n}\n",
      "type": "registry:component",
      "target": "@components/docs/layouts/docs/page/slots/footer.tsx"
    },
    {
      "path": "registry/base/docs/layouts/docs/page/slots/toc.tsx",
      "content": "// Adapted from Fumadocs UI (https://github.com/fuma-nama/fumadocs)\n// Copyright (c) 2023 Fuma, MIT License\n\"use client\";\nimport { useTranslations } from \"@fuma-translate/react\";\nimport * as TocDefault from \"../../../../components/toc/default\";\nimport * as TocClerk from \"../../../../components/toc/clerk\";\nimport * as TocBlock from \"../../../../components/toc/block\";\nimport * as Base from \"../../../../components/toc\";\nimport { cn } from \"cn\";\nimport { ChevronDown, Text } from \"lucide-react\";\nimport {\n  createContext,\n  use,\n  useEffect,\n  useEffectEvent,\n  useMemo,\n  useRef,\n  useState,\n  type ComponentProps,\n  type ReactNode,\n} from \"react\";\nimport { useTreePath } from \"../../../../contexts/tree\";\nimport {\n  Collapsible,\n  CollapsibleTrigger,\n  CollapsibleContent,\n} from \"@/components/ui/collapsible\";\nimport { useDocsLayout } from \"../../client\";\nimport { findLastIndex } from \"../../../../utils/array\";\n\nconst variants = { normal: TocDefault, clerk: TocClerk, block: TocBlock };\n\nexport type TOCProviderProps = Base.TOCProviderProps;\n\nexport function TOCProvider(props: TOCProviderProps) {\n  return <Base.TOCProvider {...props} />;\n}\n\nexport type TOCProps = {\n  container?: ComponentProps<\"div\">;\n  /**\n   * Custom content in TOC container, before the main TOC\n   */\n  header?: ReactNode;\n\n  /**\n   * Custom content in TOC container, after the main TOC\n   */\n  footer?: ReactNode;\n} & (\n  | {\n      style?: \"normal\";\n      list?: TocDefault.TOCItemsProps;\n    }\n  | {\n      style: \"clerk\";\n      list?: TocClerk.TOCItemsProps;\n    }\n  | {\n      style: \"block\";\n      list?: TocBlock.TOCItemsProps;\n    }\n);\n\nexport function TOC({\n  container,\n  header,\n  footer,\n  style = \"normal\",\n  list,\n}: TOCProps) {\n  const t = useTranslations({ note: \"table of contents\" });\n  const items = Base.useTOCItems();\n  const { TOCItems, TOCEmpty, TOCItem } = variants[style];\n  const {\n    props: { aiChat },\n  } = useDocsLayout();\n  // AI chat takes its place\n  const chatOpen = Boolean(aiChat?.open && aiChat.panel);\n\n  if (items.length === 0 && !header && !footer) {\n    return (\n      <div\n        id=\"nd-toc-placeholder\"\n        className={cn(\"w-[268px] shrink-0 max-xl:hidden\", chatOpen && \"hidden\")}\n      />\n    );\n  }\n\n  return (\n    <div\n      id=\"nd-toc\"\n      {...container}\n      className={cn(\n        \"sticky top-(--docs-banner-height,0px) flex h-[calc(100svh-var(--docs-banner-height,0px))] w-[268px] shrink-0 flex-col pe-4 pt-12 pb-2 max-xl:hidden\",\n        chatOpen && \"hidden\",\n        container?.className,\n      )}\n    >\n      {header}\n      <h3\n        id=\"toc-title\"\n        className=\"inline-flex items-center gap-1.5 text-sm text-muted-foreground\"\n      >\n        <Text className=\"size-4\" />\n        {t(\"On this page\")}\n      </h3>\n      <Base.TOCScrollArea className=\"ms-px\">\n        <TOCItems {...list}>\n          {items.length === 0 && <TOCEmpty />}\n          {items.map((item) => (\n            <TOCItem key={item.url} item={item} />\n          ))}\n        </TOCItems>\n      </Base.TOCScrollArea>\n      {footer}\n    </div>\n  );\n}\n\nconst TocPopoverContext = createContext<{\n  open: boolean;\n  setOpen: (open: boolean) => void;\n} | null>(null);\n\nexport type TOCPopoverProps = {\n  container?: ComponentProps<\"div\">;\n  trigger?: ComponentProps<\"button\">;\n  content?: ComponentProps<\"div\">;\n\n  /**\n   * Custom content in TOC container, before the main TOC\n   */\n  header?: ReactNode;\n\n  /**\n   * Custom content in TOC container, after the main TOC\n   */\n  footer?: ReactNode;\n} & (\n  | {\n      style?: \"normal\";\n      list?: TocDefault.TOCItemsProps;\n    }\n  | {\n      style: \"clerk\";\n      list?: TocClerk.TOCItemsProps;\n    }\n  | {\n      style: \"block\";\n      list?: TocBlock.TOCItemsProps;\n    }\n);\n\nexport function TOCPopover({\n  container,\n  trigger,\n  content,\n  header,\n  footer,\n  style = \"normal\",\n  list,\n}: TOCPopoverProps) {\n  const items = Base.useTOCItems();\n  const ref = useRef<HTMLElement>(null);\n  const [open, setOpen] = useState(false);\n  const { isNavTransparent } = useDocsLayout();\n  const { TOCItems, TOCItem, TOCEmpty } = variants[style];\n\n  const onClickOutside = useEffectEvent((e: Event) => {\n    if (!open || !(e.target instanceof HTMLElement)) return;\n\n    if (ref.current && !ref.current.contains(e.target)) setOpen(false);\n  });\n\n  const onClickItem = () => {\n    setOpen(false);\n  };\n\n  useEffect(() => {\n    window.addEventListener(\"click\", onClickOutside);\n\n    return () => {\n      window.removeEventListener(\"click\", onClickOutside);\n    };\n  }, []);\n\n  return (\n    <TocPopoverContext\n      value={useMemo(\n        () => ({\n          open,\n          setOpen,\n        }),\n        [setOpen, open],\n      )}\n    >\n      <Collapsible\n        open={open}\n        onOpenChange={setOpen}\n        data-toc-popover=\"\"\n        {...container}\n        className={cn(\n          \"sticky top-[calc(var(--docs-header-height)+var(--docs-banner-height,0px))] z-10 h-10 xl:hidden\",\n          container?.className,\n        )}\n      >\n        <header\n          ref={ref}\n          className={cn(\n            \"border-b backdrop-blur-sm transition-colors\",\n            (!isNavTransparent || open) && \"bg-background/80\",\n            open && \"shadow-lg\",\n          )}\n        >\n          <PageTOCPopoverTrigger {...trigger} />\n          <PageTOCPopoverContent {...content}>\n            {header}\n            <Base.TOCScrollArea className=\"ms-px\">\n              <TOCItems {...list}>\n                {items.length === 0 && <TOCEmpty />}\n                {items.map((item) => (\n                  <TOCItem key={item.url} item={item} onClick={onClickItem} />\n                ))}\n              </TOCItems>\n            </Base.TOCScrollArea>\n            {footer}\n          </PageTOCPopoverContent>\n        </header>\n      </Collapsible>\n    </TocPopoverContext>\n  );\n}\n\nfunction PageTOCPopoverTrigger({\n  className,\n  ...props\n}: ComponentProps<\"button\">) {\n  const t = useTranslations({ note: \"table of contents\" });\n  const { open } = use(TocPopoverContext)!;\n  const items = Base.useItems();\n  const selectedIdx = items.findIndex((item) => item.active);\n  const path = useTreePath().at(-1);\n  const showItem = selectedIdx !== -1 && !open;\n\n  return (\n    <CollapsibleTrigger\n      className={cn(\n        \"flex h-10 w-full items-center gap-2.5 px-4 py-2.5 text-start text-sm text-muted-foreground focus-visible:outline-none md:px-6 [&_svg]:size-4\",\n        className,\n      )}\n      data-toc-popover-trigger=\"\"\n      {...props}\n    >\n      <ProgressCircle\n        value={\n          (findLastIndex(items, (item) => item.active) + 1) /\n          Math.max(1, items.length)\n        }\n        max={1}\n        className={cn(\"shrink-0\", open && \"text-primary\")}\n      />\n      <span className=\"grid flex-1 *:col-start-1 *:row-start-1 *:my-auto\">\n        <span\n          className={cn(\n            \"truncate transition-[opacity,translate,color]\",\n            open && \"text-foreground\",\n            showItem && \"pointer-events-none -translate-y-full opacity-0\",\n          )}\n        >\n          {path?.name ?? t(\"On this page\")}\n        </span>\n        <span\n          className={cn(\n            \"truncate transition-[opacity,translate]\",\n            !showItem && \"pointer-events-none translate-y-full opacity-0\",\n          )}\n        >\n          {items[selectedIdx]?.original.title}\n        </span>\n      </span>\n      <ChevronDown\n        className={cn(\n          \"mx-0.5 shrink-0 transition-transform\",\n          open && \"rotate-180\",\n        )}\n      />\n    </CollapsibleTrigger>\n  );\n}\n\ninterface ProgressCircleProps extends Omit<\n  React.ComponentProps<\"svg\">,\n  \"strokeWidth\"\n> {\n  value: number;\n  strokeWidth?: number;\n  size?: number;\n  min?: number;\n  max?: number;\n}\n\nfunction clamp(input: number, min: number, max: number): number {\n  if (input < min) return min;\n  if (input > max) return max;\n  return input;\n}\n\nfunction ProgressCircle({\n  value,\n  strokeWidth = 1.5,\n  size = 18,\n  min = 0,\n  max = 100,\n  style,\n  ...restSvgProps\n}: ProgressCircleProps) {\n  const normalizedValue = clamp(value, min, max);\n  const radius = size / 2 - strokeWidth;\n  const circumference = 2 * Math.PI * radius;\n  const progress = (normalizedValue / max) * circumference;\n  const circleProps = {\n    cx: size / 2,\n    cy: size / 2,\n    r: radius,\n    fill: \"none\",\n    strokeWidth,\n  };\n\n  return (\n    <svg\n      role=\"progressbar\"\n      viewBox={`0 0 ${size} ${size}`}\n      aria-valuenow={normalizedValue}\n      aria-valuemin={min}\n      aria-valuemax={max}\n      style={{ width: size, height: size, ...style }}\n      {...restSvgProps}\n    >\n      <circle {...circleProps} className=\"stroke-current/25\" />\n      <circle\n        {...circleProps}\n        stroke=\"currentColor\"\n        strokeDasharray={circumference}\n        strokeDashoffset={circumference - progress}\n        strokeLinecap=\"round\"\n        transform={`rotate(-90 ${size / 2} ${size / 2})`}\n        className=\"transition-all\"\n      />\n    </svg>\n  );\n}\n\nfunction PageTOCPopoverContent(props: ComponentProps<\"div\">) {\n  return (\n    <CollapsibleContent data-toc-popover-content=\"\" {...props}>\n      <div className=\"flex max-h-[50vh] flex-col px-4 md:px-6\">\n        {props.children}\n      </div>\n    </CollapsibleContent>\n  );\n}\n",
      "type": "registry:component",
      "target": "@components/docs/layouts/docs/page/slots/toc.tsx"
    }
  ],
  "type": "registry:component"
}