Home / File/ copy-button.tsx — ui Source File

copy-button.tsx — ui Source File

Architecture documentation for copy-button.tsx, a tsx file in the ui codebase. 8 imports, 0 dependents.

File tsx ComponentRegistry UIPrimitives 8 imports 4 functions

Entity Profile

Dependency Diagram

graph LR
  40c3b834_cac9_e0e3_2ccf_6a31f24f5b75["copy-button.tsx"]
  1d141819_425e_b5fd_4c8e_32f7c6a42cf2["react"]
  40c3b834_cac9_e0e3_2ccf_6a31f24f5b75 --> 1d141819_425e_b5fd_4c8e_32f7c6a42cf2
  47f728a3_cc6c_d22e_bf91_fe0738b65927["react-dropdown-menu"]
  40c3b834_cac9_e0e3_2ccf_6a31f24f5b75 --> 47f728a3_cc6c_d22e_bf91_fe0738b65927
  d39cd1e4_1b2d_9aa2_1d29_fd0b4bfb61c3["lucide-react"]
  40c3b834_cac9_e0e3_2ccf_6a31f24f5b75 --> d39cd1e4_1b2d_9aa2_1d29_fd0b4bfb61c3
  0730df87_79db_5696_d5e4_371255b3036a["unist"]
  40c3b834_cac9_e0e3_2ccf_6a31f24f5b75 --> 0730df87_79db_5696_d5e4_371255b3036a
  a9903b11_2f1d_8437_2ec7_acd8ba077fa8["events"]
  40c3b834_cac9_e0e3_2ccf_6a31f24f5b75 --> a9903b11_2f1d_8437_2ec7_acd8ba077fa8
  79081a1f_55a3_945a_fb8c_d53d6d3eab81["utils"]
  40c3b834_cac9_e0e3_2ccf_6a31f24f5b75 --> 79081a1f_55a3_945a_fb8c_d53d6d3eab81
  aa2f3ec6_f291_3763_88ec_65a3f5ad5939["button"]
  40c3b834_cac9_e0e3_2ccf_6a31f24f5b75 --> aa2f3ec6_f291_3763_88ec_65a3f5ad5939
  194a9418_8170_2169_6f94_b2f555b74f26["dropdown-menu"]
  40c3b834_cac9_e0e3_2ccf_6a31f24f5b75 --> 194a9418_8170_2169_6f94_b2f555b74f26
  style 40c3b834_cac9_e0e3_2ccf_6a31f24f5b75 fill:#6366f1,stroke:#818cf8,color:#fff

Relationship Graph

Source Code

"use client"

import * as React from "react"
import { DropdownMenuTriggerProps } from "@radix-ui/react-dropdown-menu"
import { CheckIcon, ClipboardIcon } from "lucide-react"
import { NpmCommands } from "types/unist"

import { Event, trackEvent } from "@/lib/events"
import { cn } from "@/lib/utils"
import { Button, ButtonProps } from "@/registry/new-york/ui/button"
import {
  DropdownMenu,
  DropdownMenuContent,
  DropdownMenuItem,
  DropdownMenuTrigger,
} from "@/registry/new-york/ui/dropdown-menu"

interface CopyButtonProps extends ButtonProps {
  value: string
  src?: string
  event?: Event["name"]
}

export async function copyToClipboardWithMeta(value: string, event?: Event) {
  navigator.clipboard.writeText(value)
  if (event) {
    trackEvent(event)
  }
}

export function CopyButton({
  value,
  className,
  src,
  variant = "ghost",
  event,
  ...props
}: CopyButtonProps) {
  const [hasCopied, setHasCopied] = React.useState(false)

  React.useEffect(() => {
    setTimeout(() => {
      setHasCopied(false)
    }, 2000)
  }, [hasCopied])

  return (
    <Button
      size="icon"
      variant={variant}
      className={cn(
        "relative z-10 h-6 w-6 text-zinc-50 hover:bg-zinc-700 hover:text-zinc-50 [&_svg]:h-3 [&_svg]:w-3",
        className
      )}
      onClick={() => {
        copyToClipboardWithMeta(
          value,
          event
            ? {
                name: event,
// ... (148 more lines)

Subdomains

Dependencies

  • button
  • dropdown-menu
  • events
  • lucide-react
  • react
  • react-dropdown-menu
  • unist
  • utils

Frequently Asked Questions

What does copy-button.tsx do?
copy-button.tsx is a source file in the ui codebase, written in tsx. It belongs to the ComponentRegistry domain, UIPrimitives subdomain.
What functions are defined in copy-button.tsx?
copy-button.tsx defines 4 function(s): CopyButton, CopyNpmCommandButton, CopyWithClassNames, copyToClipboardWithMeta.
What does copy-button.tsx depend on?
copy-button.tsx imports 8 module(s): button, dropdown-menu, events, lucide-react, react, react-dropdown-menu, unist, utils.
Where is copy-button.tsx in the architecture?
copy-button.tsx is located at deprecated/www/components/copy-button.tsx (domain: ComponentRegistry, subdomain: UIPrimitives, directory: deprecated/www/components).

Analyze Your Own Codebase

Get architecture documentation, dependency graphs, and domain analysis for your codebase in minutes.

Try Supermodel Free