diff --git a/app/client/[token]/page.tsx b/app/client/[token]/page.tsx index 89309f5..ee92f77 100644 --- a/app/client/[token]/page.tsx +++ b/app/client/[token]/page.tsx @@ -14,6 +14,8 @@ import { Package, RotateCcw, ArrowUpDown, + Copy, + Check, } from 'lucide-react'; import { cn } from '@/lib/utils'; import { Montserrat } from 'next/font/google'; @@ -156,6 +158,15 @@ export default function ClientPortalPage({ setStatusFilter((prev) => (prev === filter ? null : filter)); }; + const [copiedId, setCopiedId] = useState(null); + + const copyToClipboard = (text: string, id: string) => { + navigator.clipboard.writeText(text).then(() => { + setCopiedId(id); + setTimeout(() => setCopiedId(null), 1500); + }); + }; + useEffect(() => { params.then(({ token: t }) => { setToken(t); @@ -458,14 +469,27 @@ export default function ClientPortalPage({ /> )} -

- {item.label} - {item.description && ( - - {item.description} - - )} -

+
+

+ {item.label} + {item.description && ( + + {item.description} + + )} +

+ +
{ver?.createdAt && (

{formatDate(ver.createdAt)} @@ -481,9 +505,22 @@ export default function ClientPortalPage({ )} >

-

- {task.title} -

+
+

+ {task.title} +

+ +

{TASK_TYPE_LABELS[task.type] ?? task.type}

@@ -597,14 +634,27 @@ export default function ClientPortalPage({ />
)} -

- {shot.shotCode} - {shot.description && ( - - {shot.description} - - )} -

+
+

+ {shot.shotCode} + {shot.description && ( + + {shot.description} + + )} +

+ +
{shot.tasks.map((task) => { @@ -626,9 +676,22 @@ export default function ClientPortalPage({ )} >
-

- {task.title} -

+
+

+ {task.title} +

+ +

{TASK_TYPE_LABELS[task.type] ?? task.type}

@@ -719,9 +782,22 @@ export default function ClientPortalPage({

-

- {task.title} -

+
+

+ {task.title} +

+ +
{ver?.notes && (

“{ver.notes}”