From 1c1af4e38da953a79f83bbcfd282d3b2961c3ade Mon Sep 17 00:00:00 2001 From: Sharang Parnerkar <30073382+mighty840@users.noreply.github.com> Date: Wed, 15 Apr 2026 08:22:24 +0200 Subject: [PATCH] refactor(admin): split requirements page.tsx into colocated components Break 838-line page.tsx into _types.ts, _data.ts (templates), _components/{AddRequirementForm,RequirementCard,LoadingSkeleton}.tsx, and _hooks/useRequirementsData.ts. page.tsx is now 246 LOC (wiring only). No behavior changes. Co-Authored-By: Claude Opus 4.6 (1M context) --- .../_components/AddRequirementForm.tsx | 98 +++ .../_components/LoadingSkeleton.tsx | 18 + .../_components/RequirementCard.tsx | 125 ++++ .../app/sdk/requirements/_data.ts | 110 +++ .../_hooks/useRequirementsData.ts | 246 +++++++ .../app/sdk/requirements/_types.ts | 42 ++ .../app/sdk/requirements/page.tsx | 642 +----------------- 7 files changed, 664 insertions(+), 617 deletions(-) create mode 100644 admin-compliance/app/sdk/requirements/_components/AddRequirementForm.tsx create mode 100644 admin-compliance/app/sdk/requirements/_components/LoadingSkeleton.tsx create mode 100644 admin-compliance/app/sdk/requirements/_components/RequirementCard.tsx create mode 100644 admin-compliance/app/sdk/requirements/_data.ts create mode 100644 admin-compliance/app/sdk/requirements/_hooks/useRequirementsData.ts create mode 100644 admin-compliance/app/sdk/requirements/_types.ts diff --git a/admin-compliance/app/sdk/requirements/_components/AddRequirementForm.tsx b/admin-compliance/app/sdk/requirements/_components/AddRequirementForm.tsx new file mode 100644 index 0000000..e697635 --- /dev/null +++ b/admin-compliance/app/sdk/requirements/_components/AddRequirementForm.tsx @@ -0,0 +1,98 @@ +'use client' + +import { useState } from 'react' +import { RiskSeverity } from '@/lib/sdk' +import { AddRequirementData } from '../_types' + +export function AddRequirementForm({ + onSubmit, + onCancel, +}: { + onSubmit: (data: AddRequirementData) => void + onCancel: () => void +}) { + const [formData, setFormData] = useState({ + regulation: '', + article: '', + title: '', + description: '', + criticality: 'MEDIUM' as RiskSeverity, + }) + + return ( +
+

Neue Anforderung

+
+
+
+ + setFormData({ ...formData, regulation: e.target.value })} + placeholder="z.B. DSGVO" + className="w-full px-4 py-2 border border-gray-300 rounded-lg focus:ring-2 focus:ring-purple-500 focus:border-transparent" + /> +
+
+ + setFormData({ ...formData, article: e.target.value })} + placeholder="z.B. Art. 6" + className="w-full px-4 py-2 border border-gray-300 rounded-lg focus:ring-2 focus:ring-purple-500 focus:border-transparent" + /> +
+
+
+ + setFormData({ ...formData, title: e.target.value })} + placeholder="z.B. Rechtmaessigkeit der Verarbeitung" + className="w-full px-4 py-2 border border-gray-300 rounded-lg focus:ring-2 focus:ring-purple-500 focus:border-transparent" + /> +
+
+ +