+ |
+ {registry.name}
+ |
+
+
+ {registry.purpose || "-"}
+
+ |
+ {registry.dataSubjectCategory || "-"} |
+ {getLawfulBasisLabel(registry.lawfulBasis, __)} |
+ {registry.location || "-"} |
+
+
+ {registry.internationalTransfers ? __("Yes") : __("No")}
+
+ |
+
+ {registry.audit.name
+ ? `${registry.audit.framework.name} - ${registry.audit.name}`
+ : registry.audit.framework.name
+ }
+ |
+
+
+
+ {__("Delete")}
+
+
+ |
+
+ );
+}
diff --git a/apps/console/src/pages/organizations/processingActivityRegistries/ProcessingActivityRegistryDetailsPage.tsx b/apps/console/src/pages/organizations/processingActivityRegistries/ProcessingActivityRegistryDetailsPage.tsx
new file mode 100644
index 000000000..3dbebec51
--- /dev/null
+++ b/apps/console/src/pages/organizations/processingActivityRegistries/ProcessingActivityRegistryDetailsPage.tsx
@@ -0,0 +1,386 @@
+import {
+ ConnectionHandler,
+ usePreloadedQuery,
+ type PreloadedQuery,
+} from "react-relay";
+import {
+ processingActivityRegistryNodeQuery,
+ useDeleteProcessingActivityRegistry,
+ useUpdateProcessingActivityRegistry,
+ ProcessingActivityRegistriesConnectionKey,
+} from "../../../hooks/graph/ProcessingActivityRegistryGraph";
+import {
+ ActionDropdown,
+ Breadcrumb,
+ Button,
+ DropdownItem,
+ Field,
+ Card,
+ Textarea,
+ useToast,
+ Label,
+ Checkbox,
+ Select,
+} from "@probo/ui";
+import { useTranslate } from "@probo/i18n";
+import { useOrganizationId } from "/hooks/useOrganizationId";
+import { AuditSelectField } from "/components/form/AuditSelectField";
+import { useFormWithSchema } from "/hooks/useFormWithSchema";
+import { Controller } from "react-hook-form";
+import z from "zod";
+import {
+ SpecialOrCriminalDataOptions,
+ LawfulBasisOptions,
+ TransferSafeguardsOptions,
+ DataProtectionImpactAssessmentOptions,
+ TransferImpactAssessmentOptions,
+} from "../../../components/form/ProcessingActivityRegistryEnumOptions";
+
+import type { ProcessingActivityRegistryGraphNodeQuery } from "/hooks/graph/__generated__/ProcessingActivityRegistryGraphNodeQuery.graphql";
+
+const updateRegistrySchema = z.object({
+ name: z.string().min(1, "Name is required"),
+ purpose: z.string().optional(),
+ dataSubjectCategory: z.string().optional(),
+ personalDataCategory: z.string().optional(),
+ specialOrCriminalData: z.enum(["YES", "NO", "POSSIBLE"] as const),
+ consentEvidenceLink: z.string().optional(),
+ lawfulBasis: z.enum(["CONSENT", "CONTRACTUAL_NECESSITY", "LEGAL_OBLIGATION", "LEGITIMATE_INTEREST", "PUBLIC_TASK", "VITAL_INTERESTS"] as const),
+ recipients: z.string().optional(),
+ location: z.string().optional(),
+ internationalTransfers: z.boolean(),
+ transferSafeguards: z.string(),
+ retentionPeriod: z.string().optional(),
+ securityMeasures: z.string().optional(),
+ dataProtectionImpactAssessment: z.enum(["NEEDED", "NOT_NEEDED"] as const),
+ transferImpactAssessment: z.enum(["NEEDED", "NOT_NEEDED"] as const),
+ auditId: z.string().min(1, "Audit is required"),
+});
+
+type Props = {
+ queryRef: PreloadedQuery