feat: add support for license validity defined in days alongside months

This commit is contained in:
estifanos
2026-08-29 08:41:08 +00:00
parent 53c0ec98af
commit e25a786139
7 changed files with 82 additions and 25 deletions

View File

@@ -14,6 +14,8 @@ interface Props {
onRankChange: (id: string | null) => void;
/** Shown for context only; edited on Certificate Requirements → Behaviour. */
validityMonths: number;
/** Non-null when the type is configured in days rather than months. */
validityDays?: number | null;
canEdit: boolean;
onNewVersion: () => void;
}
@@ -27,6 +29,7 @@ export function DesignerToolbar({
rankId,
onRankChange,
validityMonths,
validityDays,
canEdit,
onNewVersion,
}: Props) {
@@ -75,11 +78,15 @@ export function DesignerToolbar({
{typeId && (
<Stack gap={2}>
<Text size="xs" c="dimmed" fw={500}>
{t('designer.validityYears', 'Valid for (years)')}
{t('designer.validity', 'Valid for')}
</Text>
<Group gap={6} align="baseline">
<Text size="sm" fw={600}>
{Number((validityMonths / 12).toFixed(2))}
{validityDays != null
? t('designer.validityDays', '{{count}} days', { count: validityDays })
: t('designer.validityMonths', '{{count}} months', {
count: validityMonths,
})}
</Text>
<Text size="xs" c="dimmed">
{t('designer.validityEditedOn', '— set on Certificate Requirements → Behaviour')}

View File

@@ -163,6 +163,7 @@ export function CertificateDesignerPage() {
draft.setSelectedId(null);
}}
validityMonths={selectedType?.validityMonths ?? 12}
validityDays={selectedType?.validityDays ?? null}
canEdit={canEdit}
onNewVersion={startNewVersion}
/>