From eeb9931d87152c0175bdd7dd09cb44b048dcf0ff Mon Sep 17 00:00:00 2001 From: Sharang Parnerkar <30073382+mighty840@users.noreply.github.com> Date: Tue, 14 Apr 2026 23:01:56 +0200 Subject: [PATCH] refactor(admin): split document-generator page.tsx into colocated components Split 1130-LOC document-generator page into _components and _constants modules. page.tsx now 243 LOC (wire-up only). Behavior preserved. Co-Authored-By: Claude Opus 4.6 (1M context) --- .../_components/ContextSectionForm.tsx | 102 ++ .../_components/GeneratorPlaceholdersTab.tsx | 148 +++ .../_components/GeneratorPreviewTab.tsx | 116 +++ .../_components/GeneratorSection.tsx | 231 +++++ .../_components/LibraryCard.tsx | 67 ++ .../_components/LicenseBadge.tsx | 26 + .../_components/TemplateLibrary.tsx | 138 +++ .../app/sdk/document-generator/_constants.ts | 192 ++++ .../app/sdk/document-generator/page.tsx | 927 +----------------- 9 files changed, 1040 insertions(+), 907 deletions(-) create mode 100644 admin-compliance/app/sdk/document-generator/_components/ContextSectionForm.tsx create mode 100644 admin-compliance/app/sdk/document-generator/_components/GeneratorPlaceholdersTab.tsx create mode 100644 admin-compliance/app/sdk/document-generator/_components/GeneratorPreviewTab.tsx create mode 100644 admin-compliance/app/sdk/document-generator/_components/GeneratorSection.tsx create mode 100644 admin-compliance/app/sdk/document-generator/_components/LibraryCard.tsx create mode 100644 admin-compliance/app/sdk/document-generator/_components/LicenseBadge.tsx create mode 100644 admin-compliance/app/sdk/document-generator/_components/TemplateLibrary.tsx create mode 100644 admin-compliance/app/sdk/document-generator/_constants.ts diff --git a/admin-compliance/app/sdk/document-generator/_components/ContextSectionForm.tsx b/admin-compliance/app/sdk/document-generator/_components/ContextSectionForm.tsx new file mode 100644 index 0000000..96ee0b2 --- /dev/null +++ b/admin-compliance/app/sdk/document-generator/_components/ContextSectionForm.tsx @@ -0,0 +1,102 @@ +'use client' + +import { TemplateContext } from '../contextBridge' +import { SECTION_FIELDS } from '../_constants' + +export default function ContextSectionForm({ + section, + context, + onChange, +}: { + section: keyof TemplateContext + context: TemplateContext + onChange: (section: keyof TemplateContext, key: string, value: unknown) => void +}) { + const fields = SECTION_FIELDS[section] + const sectionData = context[section] as unknown as Record + + return ( +
+ {fields.map((field) => { + const rawValue = sectionData[field.key] + const inputCls = 'w-full px-3 py-2 border border-gray-200 rounded-lg text-sm focus:outline-none focus:ring-2 focus:ring-purple-400' + + if (field.type === 'boolean') { + return ( +
+ onChange(section, field.key, e.target.checked)} + className="w-4 h-4 accent-purple-600" + /> + +
+ ) + } + + if (field.type === 'select' && field.opts) { + return ( +
+ + +
+ ) + } + + if (field.type === 'textarea') { + return ( +
+ +