on 4c90121 help sign in
urbit.org/components/CopyLink.js
61 lines 2.4 kB history raw
1import { useCopyToClipboard } from "../lib/hooks";
3export default function CopyLink({ content, className }) {
4 const [copyStatus, copy] = useCopyToClipboard(content);
6 const buttonIcon =
7 copyStatus === "inactive" ? (
8 <svg
9 width="16"
10 height="16"
11 viewBox="0 0 16 16"
12 className="fill-white"
13 xmlns="http://www.w3.org/2000/svg"
14 >
15 <path
16 fillRule="evenodd"
17 clipRule="evenodd"
18 d="M3.2 1.6C3.2 0.716344 3.91634 0 4.8 0H11.3615L14.9333 2.38124V12.2667C14.9333 13.1503 14.217 13.8667 13.3333 13.8667H12.8V14.4C12.8 15.2837 12.0837 16 11.2 16H2.66667C1.78301 16 1.06667 15.2837 1.06667 14.4V3.73333C1.06667 2.84968 1.78301 2.13333 2.66667 2.13333H3.2V1.6ZM3.2 3.2H2.66667C2.37211 3.2 2.13333 3.43878 2.13333 3.73333V14.4C2.13333 14.6946 2.37211 14.9333 2.66667 14.9333H11.2C11.4946 14.9333 11.7333 14.6946 11.7333 14.4V13.8667H4.8C3.91634 13.8667 3.2 13.1503 3.2 12.2667V3.2Z"
19 />
20 </svg>
21 ) : copyStatus === "copied" ? (
22 <svg
23 width="16"
24 height="16"
25 viewBox="0 0 16 16"
26 xmlns="http://www.w3.org/2000/svg"
27 >
28 <path
29 fillRule="evenodd"
30 clipRule="evenodd"
31 d="M0 8C0 3.58172 3.58172 0 8 0C12.4183 0 16 3.58172 16 8C16 12.4183 12.4183 16 8 16C3.58172 16 0 12.4183 0 8ZM7.54325 11.4247L12.1498 5.66647L11.3169 5.00013L7.39013 9.90859L4.60812 7.59025L3.92526 8.40969L7.54325 11.4247Z"
32 />
33 </svg>
34 ) : (
35 <svg
36 width="16"
37 height="16"
38 viewBox="0 0 16 16"
39 className="fill-white"
40 xmlns="http://www.w3.org/2000/svg"
41 >
42 <path
43 fillRule="evenodd"
44 clipRule="evenodd"
45 d="M0 8C0 3.58172 3.58172 0 8 0C12.4183 0 16 3.58172 16 8C16 12.4183 12.4183 16 8 16C3.58172 16 0 12.4183 0 8ZM10.8229 11.5772L8.00004 8.75429L5.17716 11.5772L4.42292 10.8229L7.24579 8.00004L4.42292 5.17716L5.17716 4.42292L8.00004 7.24579L10.8229 4.42292L11.5772 5.17716L8.75429 8.00004L11.5772 10.8229L10.8229 11.5772Z"
46 />
47 </svg>
48 );
50 return (
51 <button
52 className={`bg-wall-600 p-4 rounded-xl button-sm text-white flex items-center justify-center space-x-2 ${className}`}
53 onClick={() => copy()}
54 >
55 <p className="leading-5">
56 {copyStatus === "copied" ? "Copied" : "Shortcode"}
57 </p>
58 {buttonIcon}
59 </button>
60 );