From 554320770a3e2262894be3da65a2cf63c3a6fb05 Mon Sep 17 00:00:00 2001 From: Sharang Parnerkar <30073382+mighty840@users.noreply.github.com> Date: Tue, 14 Apr 2026 23:02:35 +0200 Subject: [PATCH] refactor(admin): split advisory-board page.tsx into colocated components Co-Authored-By: Claude Opus 4.6 (1M context) --- .../_components/NavigationButtons.tsx | 54 + .../advisory-board/_components/ResultView.tsx | 40 + .../_components/Step1Basics.tsx | 76 ++ .../_components/Step2DataCategories.tsx | 94 ++ .../_components/Step3Purposes.tsx | 49 + .../_components/Step4Automation.tsx | 47 + .../_components/Step5Hosting.tsx | 105 ++ .../_components/Step6Transfer.tsx | 83 ++ .../_components/Step7Retention.tsx | 55 + .../_components/Step8Contracts.tsx | 49 + .../_components/StepIndicator.tsx | 36 + .../sdk/advisory-board/_data-categories.ts | 112 +++ .../app/sdk/advisory-board/_data.ts | 62 ++ .../app/sdk/advisory-board/_tiles.ts | 110 ++ .../app/sdk/advisory-board/_types.ts | 25 + .../app/sdk/advisory-board/page.tsx | 949 +----------------- 16 files changed, 1048 insertions(+), 898 deletions(-) create mode 100644 admin-compliance/app/sdk/advisory-board/_components/NavigationButtons.tsx create mode 100644 admin-compliance/app/sdk/advisory-board/_components/ResultView.tsx create mode 100644 admin-compliance/app/sdk/advisory-board/_components/Step1Basics.tsx create mode 100644 admin-compliance/app/sdk/advisory-board/_components/Step2DataCategories.tsx create mode 100644 admin-compliance/app/sdk/advisory-board/_components/Step3Purposes.tsx create mode 100644 admin-compliance/app/sdk/advisory-board/_components/Step4Automation.tsx create mode 100644 admin-compliance/app/sdk/advisory-board/_components/Step5Hosting.tsx create mode 100644 admin-compliance/app/sdk/advisory-board/_components/Step6Transfer.tsx create mode 100644 admin-compliance/app/sdk/advisory-board/_components/Step7Retention.tsx create mode 100644 admin-compliance/app/sdk/advisory-board/_components/Step8Contracts.tsx create mode 100644 admin-compliance/app/sdk/advisory-board/_components/StepIndicator.tsx create mode 100644 admin-compliance/app/sdk/advisory-board/_data-categories.ts create mode 100644 admin-compliance/app/sdk/advisory-board/_data.ts create mode 100644 admin-compliance/app/sdk/advisory-board/_tiles.ts create mode 100644 admin-compliance/app/sdk/advisory-board/_types.ts diff --git a/admin-compliance/app/sdk/advisory-board/_components/NavigationButtons.tsx b/admin-compliance/app/sdk/advisory-board/_components/NavigationButtons.tsx new file mode 100644 index 0000000..cc76e8e --- /dev/null +++ b/admin-compliance/app/sdk/advisory-board/_components/NavigationButtons.tsx @@ -0,0 +1,54 @@ +'use client' + +import React from 'react' + +interface Props { + currentStep: number + isSubmitting: boolean + isEditMode: boolean + titleEmpty: boolean + onBack: () => void + onNext: () => void + onSubmit: () => void +} + +export function NavigationButtons({ currentStep, isSubmitting, isEditMode, titleEmpty, onBack, onNext, onSubmit }: Props) { + return ( +
+ + + {currentStep < 8 ? ( + + ) : ( + + )} +
+ ) +} diff --git a/admin-compliance/app/sdk/advisory-board/_components/ResultView.tsx b/admin-compliance/app/sdk/advisory-board/_components/ResultView.tsx new file mode 100644 index 0000000..cf3cbed --- /dev/null +++ b/admin-compliance/app/sdk/advisory-board/_components/ResultView.tsx @@ -0,0 +1,40 @@ +'use client' + +import React from 'react' +import { AssessmentResultCard } from '@/components/sdk/use-case-assessment/AssessmentResultCard' + +interface Props { + result: unknown + onGoToAssessment: (id: string) => void + onGoToOverview: () => void +} + +export function ResultView({ result, onGoToAssessment, onGoToOverview }: Props) { + const r = result as { assessment?: { id: string }; result?: Record } + return ( +
+
+

Assessment Ergebnis

+
+ {r.assessment?.id && ( + + )} + +
+
+ {r.result && ( + [0]['result']} /> + )} +
+ ) +} diff --git a/admin-compliance/app/sdk/advisory-board/_components/Step1Basics.tsx b/admin-compliance/app/sdk/advisory-board/_components/Step1Basics.tsx new file mode 100644 index 0000000..573345e --- /dev/null +++ b/admin-compliance/app/sdk/advisory-board/_components/Step1Basics.tsx @@ -0,0 +1,76 @@ +'use client' + +import React from 'react' +import type { StepProps } from '../_types' +import { AI_USE_CATEGORIES } from '../_data' + +interface Props extends StepProps { + profileIndustry: string | string[] | undefined +} + +export function Step1Basics({ form, updateForm, profileIndustry }: Props) { + return ( +
+

Grundlegende Informationen

+ + {/* Branche aus Profil (nur Anzeige) */} + {profileIndustry && (Array.isArray(profileIndustry) ? profileIndustry.length > 0 : true) && ( +
+ Branche (aus Unternehmensprofil) +

+ {Array.isArray(profileIndustry) ? profileIndustry.join(', ') : profileIndustry} +

+
+ )} + +
+ + updateForm({ title: e.target.value })} + placeholder="z.B. Chatbot fuer Kundenservice" + className="w-full px-4 py-2 border border-gray-300 rounded-lg focus:ring-2 focus:ring-purple-500 focus:border-transparent" + /> +
+
+ +