Replaced specific object paths with generic type helpers across several files to enhance readability and maintainability. This change standardizes the import patterns and type definitions for database tables and enums.
55 lines
1.2 KiB
TypeScript
55 lines
1.2 KiB
TypeScript
import { Enums } from '@kit/supabase/database';
|
|
import { Alert, AlertDescription, AlertTitle } from '@kit/ui/alert';
|
|
import { Trans } from '@kit/ui/trans';
|
|
|
|
export function CurrentPlanAlert(
|
|
props: React.PropsWithoutRef<{
|
|
status: Enums<'subscription_status'>
|
|
}>,
|
|
) {
|
|
let variant: 'success' | 'warning' | 'destructive';
|
|
const prefix = 'billing:status';
|
|
|
|
const text = `${prefix}.${props.status}.description`;
|
|
const title = `${prefix}.${props.status}.heading`;
|
|
|
|
switch (props.status) {
|
|
case 'active':
|
|
variant = 'success';
|
|
break;
|
|
case 'trialing':
|
|
variant = 'success';
|
|
break;
|
|
case 'past_due':
|
|
variant = 'destructive';
|
|
break;
|
|
case 'canceled':
|
|
variant = 'destructive';
|
|
break;
|
|
case 'unpaid':
|
|
variant = 'destructive';
|
|
break;
|
|
case 'incomplete':
|
|
variant = 'warning';
|
|
break;
|
|
case 'incomplete_expired':
|
|
variant = 'destructive';
|
|
break;
|
|
case 'paused':
|
|
variant = 'warning';
|
|
break;
|
|
}
|
|
|
|
return (
|
|
<Alert variant={variant}>
|
|
<AlertTitle>
|
|
<Trans i18nKey={title} />
|
|
</AlertTitle>
|
|
|
|
<AlertDescription>
|
|
<Trans i18nKey={text} />
|
|
</AlertDescription>
|
|
</Alert>
|
|
);
|
|
}
|