import * as React from "react" import Image from "next/image" import Link from "next/link" import { type PageTreeFolder } from "@/lib/page-tree" import { source } from "@/lib/source" import { cn } from "@/lib/utils" import { Callout } from "@/components/callout" import { CodeBlockCommand } from "@/components/code-block-command" import { CodeCollapsibleWrapper } from "@/components/code-collapsible-wrapper" import { CodeTabs } from "@/components/code-tabs" import { ComponentPreview } from "@/components/component-preview" import { ComponentSource } from "@/components/component-source" import { ComponentsList } from "@/components/components-list" import { CopyButton } from "@/components/copy-button" import { DirectoryList } from "@/components/directory-list" import { getIconForLanguageExtension } from "@/components/icons" import { Accordion, AccordionContent, AccordionItem, AccordionTrigger, } from "@/registry/new-york-v4/ui/accordion" import { Alert, AlertDescription, AlertTitle, } from "@/registry/new-york-v4/ui/alert" import { AspectRatio } from "@/registry/new-york-v4/ui/aspect-ratio" import { Button } from "@/registry/new-york-v4/ui/button" import { Kbd } from "@/registry/new-york-v4/ui/kbd" import { Tabs, TabsContent, TabsList, TabsTrigger, } from "@/registry/new-york-v4/ui/tabs" // Wrapper component that passes the components folder from the server. // This is only used on /docs/components/ index page, so default to radix. function ComponentsListWrapper() { const componentsFolder = source.pageTree.children.find( (page) => page.$id === "components" ) if (componentsFolder?.type !== "folder") { return null } return ( ) } function getNodeText(node: React.ReactNode): string { if (typeof node === "string" || typeof node === "number") { return String(node) } if (Array.isArray(node)) { return node.map((child) => getNodeText(child)).join("") } if (React.isValidElement<{ children?: React.ReactNode }>(node)) { return getNodeText(node.props.children) } return "" } function getHeadingId(children: React.ReactNode) { const id = getNodeText(children) .trim() .replace(/\s+/g, "-") .replace(/'/g, "") .replace(/\?/g, "") .toLowerCase() return id || undefined } function HeadingAnchor({ id, children, }: { id?: string children: React.ReactNode }) { if (!id) { return children } return ( {children} ) } export const mdxComponents = { h1: ({ className, children, id, ...props }: React.ComponentProps<"h1">) => { const headingId = id ?? getHeadingId(children) return (

{children}

) }, h2: ({ className, children, id, ...props }: React.ComponentProps<"h2">) => { const headingId = id ?? getHeadingId(children) return (

h3]:mt-4! [&+h3]:mt-6! [&+p]:mt-4!", className )} {...props} > {children}

) }, h3: ({ className, children, id, ...props }: React.ComponentProps<"h3">) => { const headingId = id ?? getHeadingId(children) return (

{children}

) }, h4: ({ className, children, id, ...props }: React.ComponentProps<"h4">) => { const headingId = id ?? getHeadingId(children) return (

{children}

) }, h5: ({ className, children, id, ...props }: React.ComponentProps<"h5">) => { const headingId = id ?? getHeadingId(children) return (
{children}
) }, h6: ({ className, children, id, ...props }: React.ComponentProps<"h6">) => { const headingId = id ?? getHeadingId(children) return (
{children}
) }, a: ({ className, ...props }: React.ComponentProps<"a">) => ( ), p: ({ className, ...props }: React.ComponentProps<"p">) => (

), strong: ({ className, ...props }: React.HTMLAttributes) => ( ), ul: ({ className, ...props }: React.ComponentProps<"ul">) => (