mirror of
https://github.com/documenso/documenso.git
synced 2025-11-15 09:12:02 +10:00
78 lines
2.1 KiB
TypeScript
78 lines
2.1 KiB
TypeScript
'use client';
|
||
|
||
import type { HTMLAttributes } from 'react';
|
||
|
||
import Link from 'next/link';
|
||
|
||
import { Trans } from '@lingui/macro';
|
||
import { DateTime } from 'luxon';
|
||
|
||
import type { DocumentData, Prisma } from '@documenso/prisma/client';
|
||
import { SignatureIcon } from '@documenso/ui/icons/signature';
|
||
import { Button } from '@documenso/ui/primitives/button';
|
||
import { Tooltip, TooltipContent, TooltipTrigger } from '@documenso/ui/primitives/tooltip';
|
||
|
||
type GetNextInboxDocumentResult = Prisma.DocumentGetPayload<{
|
||
select: {
|
||
createdAt: true;
|
||
title: true;
|
||
Recipient: {
|
||
select: {
|
||
token: true;
|
||
};
|
||
};
|
||
documentMeta: true;
|
||
};
|
||
}> | null;
|
||
|
||
export type NextInboxItemButtonProps = HTMLAttributes<HTMLButtonElement> & {
|
||
disabled?: boolean;
|
||
documentData?: DocumentData;
|
||
userEmail: string | undefined;
|
||
nextInboxDocument: GetNextInboxDocumentResult;
|
||
};
|
||
|
||
export const NextInboxItemButton = ({
|
||
className,
|
||
documentData,
|
||
nextInboxDocument,
|
||
userEmail,
|
||
disabled,
|
||
...props
|
||
}: NextInboxItemButtonProps) => {
|
||
const recipientToken = nextInboxDocument?.Recipient[0]?.token ?? null;
|
||
|
||
return (
|
||
<Tooltip>
|
||
<TooltipTrigger>
|
||
<Link href={'/sign/' + recipientToken}>
|
||
<Button
|
||
type="button"
|
||
variant="outline"
|
||
className={className}
|
||
disabled={disabled || !documentData || !userEmail}
|
||
{...props}
|
||
>
|
||
<SignatureIcon className="mr-2 h-5 w-5" />
|
||
<Trans>Sign Next Document</Trans>
|
||
</Button>
|
||
</Link>
|
||
</TooltipTrigger>
|
||
|
||
<TooltipContent className="flex flex-row items-start gap-x-2 p-4">
|
||
<div className="gap-y-2">
|
||
<p className="text-foreground text-base font-semibold">{nextInboxDocument?.title}</p>
|
||
|
||
{nextInboxDocument?.createdAt && (
|
||
<p className="text-muted-foreground text-sm">
|
||
<Trans>
|
||
Created {DateTime.fromJSDate(nextInboxDocument?.createdAt).toFormat('LLL ‘yy')}
|
||
</Trans>
|
||
</p>
|
||
)}
|
||
</div>
|
||
</TooltipContent>
|
||
</Tooltip>
|
||
);
|
||
};
|