Add document classification

Signed-off-by: Bryan Frimin <bryan@getprobo.com>
This commit is contained in:
Bryan Frimin
2025-10-22 16:23:30 +02:00
parent 36ef29299c
commit c7cabf23de
32 changed files with 891 additions and 229 deletions

View File

@@ -14,3 +14,23 @@ export function getDocumentTypeLabel(__: Translator, type: string) {
return __("Procedure");
}
}
export const documentClassifications = [
"PUBLIC",
"INTERNAL",
"CONFIDENTIAL",
"SECRET",
] as const;
export function getDocumentClassificationLabel(__: Translator, classification: string) {
switch (classification) {
case "PUBLIC":
return __("Public");
case "INTERNAL":
return __("Internal");
case "CONFIDENTIAL":
return __("Confidential");
case "SECRET":
return __("Secret");
}
}

View File

@@ -20,7 +20,12 @@ export {
type CountryCode,
} from "./countries";
export { availableFrameworks } from "./frameworks";
export { getDocumentTypeLabel, documentTypes } from "./documents";
export {
getDocumentTypeLabel,
documentTypes,
getDocumentClassificationLabel,
documentClassifications,
} from "./documents";
export { getAssetTypeVariant } from "./assets";
export {
getSnapshotTypeLabel,

View File

@@ -0,0 +1,33 @@
import { Badge } from "../../Atoms/Badge/Badge";
import { getDocumentClassificationLabel } from "@probo/helpers";
import { useTranslate } from "@probo/i18n";
type Props = {
classification: string;
};
export function DocumentClassificationBadge({ classification }: Props) {
const { __ } = useTranslate();
// Choose badge variant based on classification level
const variant = (() => {
switch (classification) {
case "PUBLIC":
return "success" as const;
case "INTERNAL":
return "neutral" as const;
case "CONFIDENTIAL":
return "warning" as const;
case "SECRET":
return "danger" as const;
default:
return "neutral" as const;
}
})();
return (
<Badge variant={variant}>
{getDocumentClassificationLabel(__, classification)}
</Badge>
);
}

View File

@@ -66,6 +66,7 @@ export { MeasureBadge } from "./Molecules/Badge/MeasureBadge";
export { MeasureImplementation } from "./Molecules/MeasureImplementation/MeasureImplementation";
export { FrameworkSelector } from "./Molecules/FrameworkSelector/FrameworkSelector";
export { DocumentTypeBadge } from "./Molecules/Badge/DocumentTypeBadge";
export { DocumentClassificationBadge } from "./Molecules/Badge/DocumentClassificationBadge";
export { SentitivityOptions } from "./Molecules/Select/SentitivityOptions";
export { ImpactOptions } from "./Molecules/Select/ImpactOptions";
export { DurationPicker } from "./Molecules/DurationPicker/DurationPicker";