MCPcopy
hub / github.com/chronark/highstorm / CopyWithClassNames

Function CopyWithClassNames

apps/web/components/copy-button.tsx:61–104  ·  view source on GitHub ↗
({
  value,
  classNames,
  className,
  ...props
}: CopyWithClassNamesProps)

Source from the content-addressed store, hash-verified

59}
60
61export function CopyWithClassNames({
62 value,
63 classNames,
64 className,
65 ...props
66}: CopyWithClassNamesProps) {
67 const [hasCopied, setHasCopied] = React.useState(false);
68
69 React.useEffect(() => {
70 setTimeout(() => {
71 setHasCopied(false);
72 }, 2000);
73 }, [hasCopied]);
74
75 const copyToClipboard = React.useCallback((value: string) => {
76 copyToClipboardWithMeta(value);
77 setHasCopied(true);
78 }, []);
79
80 return (
81 <DropdownMenu>
82 <DropdownMenuTrigger
83 className={cn(
84 "relative z-20 inline-flex h-8 items-center justify-center rounded-md p-2 text-sm font-medium text-zinc-900 transition-all hover:bg-zinc-100 focus:outline-none dark:text-zinc-100 dark:hover:bg-zinc-800",
85 className,
86 )}
87 {...props}
88 >
89 {hasCopied ? <Icons.check className="w-4 h-4" /> : <Icons.copy className="w-4 h-4" />}
90 <span className="sr-only">Copy</span>
91 </DropdownMenuTrigger>
92 <DropdownMenuContent>
93 <DropdownMenuItem onClick={() => copyToClipboard(value)}>
94 <Icons.react className="w-4 h-4 mr-2" />
95 <span>Component</span>
96 </DropdownMenuItem>
97 <DropdownMenuItem onClick={() => copyToClipboard(classNames)}>
98 <Icons.tailwind className="w-4 h-4 mr-2" />
99 <span>Classname</span>
100 </DropdownMenuItem>
101 </DropdownMenuContent>
102 </DropdownMenu>
103 );
104}

Callers

nothing calls this directly

Calls 2

cnFunction · 0.90
copyToClipboardWithMetaFunction · 0.85

Tested by

no test coverage detected