import type { TCachedLicense } from '@documenso/lib/types/license'; import { SUBSCRIPTION_CLAIM_FEATURE_FLAGS } from '@documenso/lib/types/subscription'; import { trpc } from '@documenso/trpc/react'; import { Badge } from '@documenso/ui/primitives/badge'; import { Button } from '@documenso/ui/primitives/button'; import { Tooltip, TooltipContent, TooltipProvider, TooltipTrigger } from '@documenso/ui/primitives/tooltip'; import { useToast } from '@documenso/ui/primitives/use-toast'; import { Trans, useLingui } from '@lingui/react/macro'; import { ArrowRightIcon, CheckCircle2Icon, EyeIcon, EyeOffIcon, KeyRoundIcon, Loader2Icon, RefreshCwIcon, XCircleIcon, } from 'lucide-react'; import { DateTime } from 'luxon'; import { useState } from 'react'; import { Link, useRevalidator } from 'react-router'; import { match } from 'ts-pattern'; import { CardMetric } from './metric-card'; type AdminLicenseCardProps = { licenseData: TCachedLicense | null; }; export const AdminLicenseCard = ({ licenseData }: AdminLicenseCardProps) => { const { t, i18n } = useLingui(); const [isLicenseKeyVisible, setIsLicenseKeyVisible] = useState(false); const { license } = licenseData || {}; if (!license) { return (
{licenseData.requestedLicenseKey}
> ) : (
{license.name}
{i18n.date(license.periodEnd, DateTime.DATE_MED)}
{isLicenseKeyVisible ? license.licenseKey : '•'.repeat(license.licenseKey.length)}
{enabledFlags.length > 0 ? (
enabledFlags
.map(
([flag]) =>
SUBSCRIPTION_CLAIM_FEATURE_FLAGS[
// eslint-disable-next-line @typescript-eslint/consistent-type-assertions
flag as keyof typeof SUBSCRIPTION_CLAIM_FEATURE_FLAGS
]?.label || flag,
)
.join(', ')
) : (