diff --git a/src/features/dashboard/settings/general/team-info.tsx b/src/features/dashboard/settings/general/team-info.tsx index 6e2a2682f..c5a4b9d56 100644 --- a/src/features/dashboard/settings/general/team-info.tsx +++ b/src/features/dashboard/settings/general/team-info.tsx @@ -1,30 +1,24 @@ 'use client' -import { ClipboardEvent } from 'react' import { useDashboard } from '@/features/dashboard/context' import { formatDate } from '@/lib/utils/formatting' +import CopyButtonInline from '@/ui/copy-button-inline' -const InfoRow = ({ label, value }: { label: string; value: string }) => { - const handleCopy = (e: ClipboardEvent) => { - if (!window.getSelection()?.toString()) return - e.preventDefault() - e.clipboardData.setData('text/plain', value) - } - - return ( -
- - {label} - - - {value} - -
- ) -} +const InfoRow = ({ label, value }: { label: string; value: string }) => ( +
+ + {label} + + + {value} + +
+) export const TeamInfo = () => { const { team } = useDashboard() diff --git a/src/ui/copy-button-inline.tsx b/src/ui/copy-button-inline.tsx index cb4036402..3e5771bb0 100644 --- a/src/ui/copy-button-inline.tsx +++ b/src/ui/copy-button-inline.tsx @@ -1,47 +1,79 @@ +'use client' + +import { AnimatePresence, motion } from 'motion/react' import { useClipboard } from '@/lib/hooks/use-clipboard' -import { cn } from '@/lib/utils/ui' +import { cn, EASE_APPEAR } from '@/lib/utils/ui' import { CheckIcon, CopyIcon } from '@/ui/primitives/icons' export default function CopyButtonInline({ value, children, className, + iconPosition = 'right', + 'aria-label': ariaLabel, }: { value: string children: React.ReactNode className?: string + iconPosition?: 'left' | 'right' + 'aria-label'?: string }) { - const [wasCopied, copy] = useClipboard(2000) + const [wasCopied, copy] = useClipboard(1000) const handleClick = (e: React.MouseEvent) => { e.stopPropagation() copy(value) } + const icon = ( + + ) + return ( ) }