import { Check, Copy } from "lucide-react"
import { useState, type ComponentProps } from "react"
import { cn } from "~/lib/utils"
function CodeBlock({
className,
children,
...props
}: ComponentProps<"div">) {
return (
{children}
)
}
function CodeBlockHeader({ className, ...props }: ComponentProps<"div">) {
return (
)
}
function CodeBlockLang({ className, ...props }: ComponentProps<"span">) {
return (
)
}
function CodeBlockCopyButton({
className,
value,
...props
}: Omit, "onClick" | "children"> & { value: string }) {
const [copied, setCopied] = useState(false)
function handleCopy() {
navigator.clipboard.writeText(value).then(() => {
setCopied(true)
setTimeout(() => setCopied(false), 1500)
})
}
return (
)
}
function CodeBlockContent({ className, ...props }: ComponentProps<"pre">) {
return (
)
}
function CodeBlockKeyword({ className, ...props }: ComponentProps<"span">) {
return (
)
}
function CodeBlockString({ className, ...props }: ComponentProps<"span">) {
return (
)
}
function CodeBlockNumber({ className, ...props }: ComponentProps<"span">) {
return (
)
}
function CodeBlockComment({ className, ...props }: ComponentProps<"span">) {
return (
)
}
function CodeBlockFunction({ className, ...props }: ComponentProps<"span">) {
return (
)
}
function CodeBlockType({ className, ...props }: ComponentProps<"span">) {
return (
)
}
export {
CodeBlock,
CodeBlockHeader,
CodeBlockLang,
CodeBlockCopyButton,
CodeBlockContent,
CodeBlockKeyword,
CodeBlockString,
CodeBlockNumber,
CodeBlockComment,
CodeBlockFunction,
CodeBlockType,
}