motto/src/app/[...file]/components/copy.tsx

18 lines
595 B
TypeScript
Raw Normal View History

'use client'
import { useState } from 'react';
import * as style from './copy.css';
export default function Copy({ className, text, children }: { className?: string, text: string, children: React.ReactNode }) {
const [copied, set_copied ] = useState(false);
function make_copy_text(text: string) {
return () => {
navigator.clipboard.writeText(text);
set_copied(true);
setTimeout(() => { set_copied(false); }, 2000);
};
}
return <button onClick={make_copy_text(text)} className={`${style.copy} ${className ?? ''}`}>{copied ? '[ Copied ]' : '[ Copy ]'} {children}</button>
}