Files
blitzkit/packages/website/src/components/CopyButton.tsx
T

32 lines
830 B
TypeScript
Raw Normal View History

2024-09-14 19:43:14 -05:00
import { Button, type ButtonProps, Tooltip } from '@radix-ui/themes';
2024-08-11 12:44:16 -05:00
import { useState } from 'react';
2025-01-07 13:09:05 -06:00
import { useLocale } from '../hooks/useLocale';
2024-08-11 12:44:16 -05:00
interface CopyButtonProps extends ButtonProps {
copy: () => string | undefined;
}
export function CopyButton({ copy, ...props }: CopyButtonProps) {
const [tooltipOpen, setTooltipOpen] = useState(false);
2025-01-07 13:09:05 -06:00
const { strings } = useLocale();
2024-08-11 12:44:16 -05:00
return (
2025-01-07 13:09:05 -06:00
<Tooltip
open={tooltipOpen}
content={strings.website.common.copy_button.copied}
>
2024-08-11 12:44:16 -05:00
<Button
{...props}
onClick={() => {
const content = copy();
if (content === undefined) return;
navigator.clipboard.writeText(content);
setTooltipOpen(true);
setTimeout(() => setTooltipOpen(false), 2000);
}}
/>
</Tooltip>
);
}