on 08176cf help sign in
bridge/src/components/CopyButton.js
48 lines 1.0 kB history raw
1import React from 'react';
2import cn from 'classnames';
3import { LinkButton } from 'indigo-react';
5import { CopyButton as BaseCopyButton } from 'components/Buttons';
7import useCopiable from 'lib/useCopiable';
9const renderDefaultCopyText = didCopy => (didCopy ? 'Copied!' : 'Copy');
11export default function CopyButton({
12 as: As = LinkButton,
13 text,
14 children = renderDefaultCopyText,
15 className,
16 ...rest
17}) {
18 const [doCopy, didCopy] = useCopiable(text);
20 return (
21 <As
22 onClick={doCopy}
23 className={cn(className, {
24 black: !didCopy,
25 green3: didCopy,
26 })}
27 {...rest}>
28 {children(didCopy)}
29 </As>
30 );
33export function CopyButtonWide({ text, children, ...rest }) {
34 const [doCopy, didCopy] = useCopiable(text);
35 return (
36 <BaseCopyButton
37 as="span"
38 onClick={doCopy}
39 text={text}
40 className={cn({
41 black: !didCopy,
42 green3: didCopy,
43 })}
44 {...rest}>
45 {children}
46 </BaseCopyButton>
47 );