import * as React from "react" import { cn } from "@/lib/utils" import { useChartConfig } from "@/hooks/use-chart-config" import { useMediaQuery } from "@/hooks/use-media-query" import { BlockCopyButton } from "@/components/block-copy-button" import { V0Button } from "@/components/v0-button" import { Button } from "@/registry/new-york/ui/button" import { Drawer, DrawerContent, DrawerTrigger, } from "@/registry/new-york/ui/drawer" import { Sheet, SheetContent, SheetTrigger } from "@/registry/new-york/ui/sheet" import { Tabs, TabsContent, TabsList, TabsTrigger, } from "@/registry/new-york/ui/tabs" import { Block } from "@/registry/schema" export function ChartCodeViewer({ chart, className, children, }: { chart: Block } & React.ComponentProps<"div">) { const [tab, setTab] = React.useState("code") const { chartConfig } = useChartConfig() const isDesktop = useMediaQuery("(min-width: 768px)") const themeCode = React.useMemo(() => { return `\ @layer base { :root { ${Object.entries(chartConfig.theme.cssVars.light) .map(([key, value]) => ` ${key}: ${value};`) .join("\n")} } .dark { ${Object.entries(chartConfig.theme.cssVars.dark) .map(([key, value]) => ` ${key}: ${value};`) .join("\n")} } } ` }, [chartConfig]) const button = ( ) const content = ( <>
{`/* ${chartConfig.theme.name} */`}
{themeCode.split("\n").map((line, index) => (
{line}
))}