"use client" import * as React from "react" import { CheckIcon, ClipboardIcon } from "lucide-react" import { NpmCommands } from "@/types/unist" import { useConfig } from "@/hooks/use-config" import { copyToClipboardWithMeta } from "@/components/copy-button" import { Tabs } from "@/registry/default/ui/tabs" import { Button } from "@/registry/new-york/ui/button" import { TabsContent, TabsList, TabsTrigger } from "@/registry/new-york/ui/tabs" export function CodeBlockCommand({ __npmCommand__, __yarnCommand__, __pnpmCommand__, __bunCommand__, }: React.ComponentProps<"pre"> & NpmCommands) { const [config, setConfig] = useConfig() const [hasCopied, setHasCopied] = React.useState(false) React.useEffect(() => { if (hasCopied) { const timer = setTimeout(() => setHasCopied(false), 2000) return () => clearTimeout(timer) } }, [hasCopied]) const packageManager = config.packageManager || "pnpm" const tabs = React.useMemo(() => { return { pnpm: __pnpmCommand__, npm: __npmCommand__, yarn: __yarnCommand__, bun: __bunCommand__, } }, [__npmCommand__, __pnpmCommand__, __yarnCommand__, __bunCommand__]) const copyCommand = React.useCallback(() => { const command = tabs[packageManager] if (!command) { return } copyToClipboardWithMeta(command, { name: "copy_npm_command", properties: { command, pm: packageManager, }, }) setHasCopied(true) }, [packageManager, tabs]) return (
{ setConfig({ ...config, packageManager: value as "pnpm" | "npm" | "yarn" | "bun", }) }} >
{Object.entries(tabs).map(([key, value]) => { return ( {key} ) })}
{Object.entries(tabs).map(([key, value]) => { return (
                
                  {value}
                
              
) })}
) }