refactor: Blueprint UI — catalog-based field selection
Replace manual field definition with a visual field catalog where admins toggle available attributes on/off and set defaults inline. New files: - blueprint-field-catalog.ts: 36 pre-defined fields across 7 categories (Client & Billing, Technical Specs, Scope, Person Info, Organization, Contract, Skills & Work) for both PROJECT and RESOURCE targets - FieldCard.tsx: toggle card with type icon, expandable default value editor, required/show-in-list toggles, helper text - BlueprintFieldCatalog.tsx: main catalog modal with category sidebar, search bar, collapsible sections, custom field support UX improvements: - All standard fields pre-defined — users toggle instead of typing - Default values set inline on each card (type-appropriate inputs) - Fields grouped by category with enable counts - Search/filter to find fields quickly - Custom fields still supported via "Add Custom Field" - Full backward compatibility: existing fieldDefs auto-map to catalog Co-Authored-By: claude-flow <ruv@ruv.net>
This commit is contained in:
@@ -5,7 +5,7 @@ import type { FormEvent, MouseEvent } from "react";
|
||||
import { BlueprintTarget } from "@planarchy/shared";
|
||||
import type { BlueprintFieldDefinition } from "@planarchy/shared";
|
||||
import { trpc } from "~/lib/trpc/client.js";
|
||||
import { BlueprintFieldEditor } from "./BlueprintFieldEditor.js";
|
||||
import { BlueprintFieldCatalog } from "./BlueprintFieldCatalog.js";
|
||||
import { useSelection } from "~/hooks/useSelection.js";
|
||||
import { BatchActionBar } from "~/components/ui/BatchActionBar.js";
|
||||
import { ConfirmDialog } from "~/components/ui/ConfirmDialog.js";
|
||||
@@ -496,9 +496,10 @@ export function BlueprintsClient() {
|
||||
)}
|
||||
|
||||
{editingBlueprint && (
|
||||
<BlueprintFieldEditor
|
||||
<BlueprintFieldCatalog
|
||||
blueprintId={editingBlueprint.id}
|
||||
blueprintName={editingBlueprint.name}
|
||||
blueprintTarget={editingBlueprint.target}
|
||||
initialFieldDefs={Array.isArray(editingBlueprint.fieldDefs) ? (editingBlueprint.fieldDefs as BlueprintFieldDefinition[]) : []}
|
||||
initialRolePresets={Array.isArray(editingBlueprint.rolePresets) ? (editingBlueprint.rolePresets as import("@planarchy/shared").StaffingRequirement[]) : []}
|
||||
initialTab={editingTab}
|
||||
|
||||
Reference in New Issue
Block a user