@echothink-ui/domain-widgets 0.1.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +5 -0
- package/dist/index.cjs +3069 -0
- package/dist/index.cjs.map +1 -0
- package/dist/index.css +3956 -0
- package/dist/index.css.map +1 -0
- package/dist/index.d.ts +281 -0
- package/dist/index.js +3029 -0
- package/dist/index.js.map +1 -0
- package/package.json +46 -0
- package/src/index.test.tsx +123 -0
- package/src/index.tsx +3925 -0
- package/src/styles.css +4660 -0
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/index.tsx"],"sourcesContent":["import \"./styles.css\";\n\nimport * as React from \"react\";\nimport { DownloadIcon, PlusIcon, TableIcon } from \"@echothink-ui/icons\";\nimport {\n Badge,\n Button,\n Checkbox,\n LinkButton,\n Select,\n Surface,\n StatusDot,\n TextInput,\n createSurfaceComponent,\n statusLabel,\n type EthAction,\n type EthListItem,\n type EthOperationalStatus,\n type SurfaceComponentProps\n} from \"@echothink-ui/core\";\n\nexport type ApprovalWorkflowMode = \"sequential\" | \"parallel\" | \"conditional\";\n\nexport interface CRMContactPanelProps extends SurfaceComponentProps {\n contacts?: EthListItem[];\n relationshipHealthLabel?: React.ReactNode;\n engagementLabel?: React.ReactNode;\n nextStep?: React.ReactNode;\n}\n\nexport interface SupportTicketQueueProps extends SurfaceComponentProps {\n tickets?: EthListItem[];\n}\n\nfunction textFromNode(node: React.ReactNode): string {\n if (typeof node === \"string\" || typeof node === \"number\") return String(node);\n if (Array.isArray(node)) return node.map(textFromNode).join(\" \");\n return \"\";\n}\n\nfunction getContactInitials(label: React.ReactNode) {\n const words = textFromNode(label).trim().split(/\\s+/).filter(Boolean);\n if (!words.length) return \"CT\";\n return words\n .slice(0, 2)\n .map((word) => word.charAt(0).toUpperCase())\n .join(\"\");\n}\n\nfunction safeDomId(value: string) {\n return value.replace(/[^A-Za-z0-9_-]+/g, \"-\");\n}\n\nfunction splitTicketPriority(label: React.ReactNode) {\n if (typeof label !== \"string\" && typeof label !== \"number\") {\n return { priority: undefined, label };\n }\n\n const text = String(label);\n const match = text.match(/^\\[(P[0-4])\\]\\s*(.+)$/i);\n if (!match) return { priority: undefined, label };\n\n return {\n priority: match[1].toUpperCase(),\n label: match[2]\n };\n}\n\nfunction healthTone(status?: EthOperationalStatus) {\n if (status === \"blocked\" || status === \"failed\" || status === \"stale\") return \"risk\";\n if (status === \"warning\" || status === \"pending-approval\" || status === \"approval-required\") {\n return \"watch\";\n }\n if (status === \"queued\" || status === \"not-started\") return \"new\";\n return \"healthy\";\n}\n\nfunction healthLabel(status?: EthOperationalStatus) {\n if (status === \"blocked\" || status === \"failed\" || status === \"stale\") return \"Needs attention\";\n if (status === \"warning\" || status === \"pending-approval\" || status === \"approval-required\") {\n return \"Monitor closely\";\n }\n if (status === \"queued\" || status === \"not-started\") return \"New relationship\";\n return \"Healthy\";\n}\n\nfunction CRMContactActions({ actions }: { actions?: EthAction[] }) {\n if (!actions?.length) return null;\n\n return (\n <div className=\"eth-domain-crm-contact-panel__contact-actions\">\n {actions.slice(0, 2).map((action) =>\n action.href ? (\n <LinkButton\n key={action.id}\n href={action.disabled ? undefined : action.href}\n intent={action.intent ?? \"ghost\"}\n density=\"compact\"\n aria-disabled={action.disabled ? true : undefined}\n tabIndex={action.disabled ? -1 : undefined}\n >\n {action.label}\n </LinkButton>\n ) : (\n <Button\n key={action.id}\n type=\"button\"\n intent={action.intent ?? \"ghost\"}\n density=\"compact\"\n disabled={action.disabled}\n onClick={action.onSelect}\n >\n {action.label}\n </Button>\n )\n )}\n </div>\n );\n}\n\nfunction SupportTicketActions({ actions }: { actions?: EthAction[] }) {\n if (!actions?.length) return null;\n\n return (\n <div className=\"eth-domain-support-ticket-queue__actions\" aria-label=\"Ticket actions\">\n {actions.slice(0, 2).map((action) =>\n action.href ? (\n <LinkButton\n key={action.id}\n href={action.disabled ? undefined : action.href}\n intent={action.intent ?? \"ghost\"}\n density=\"compact\"\n aria-disabled={action.disabled ? true : undefined}\n tabIndex={action.disabled ? -1 : undefined}\n >\n {action.label}\n </LinkButton>\n ) : (\n <Button\n key={action.id}\n type=\"button\"\n intent={action.intent ?? \"ghost\"}\n density=\"compact\"\n disabled={action.disabled}\n onClick={action.onSelect}\n >\n {action.label}\n </Button>\n )\n )}\n </div>\n );\n}\n\nexport function CRMContactPanel({\n title = \"Account relationship\",\n description,\n status = \"active\",\n metadata,\n items,\n contacts,\n actions,\n footer,\n children,\n className,\n relationshipHealthLabel,\n engagementLabel,\n nextStep,\n ...props\n}: CRMContactPanelProps) {\n const contactItems = contacts ?? items ?? [];\n const contactsHeadingId = React.useId();\n const signalsHeadingId = React.useId();\n const tone = healthTone(status);\n const health = relationshipHealthLabel ?? healthLabel(status);\n const engagement =\n engagementLabel ??\n `${contactItems.length} contact${contactItems.length === 1 ? \"\" : \"s\"} mapped`;\n const nextActivity = nextStep ?? \"Review next activity\";\n\n return (\n <Surface\n {...props}\n data-eth-component=\"CRMContactPanel\"\n title={title}\n description={description}\n status={status}\n metadata={metadata}\n actions={actions}\n footer={footer}\n className={[\"eth-domain-crm-contact-panel\", className].filter(Boolean).join(\" \")}\n >\n <div className=\"eth-domain-crm-contact-panel__body\">\n <section\n className=\"eth-domain-crm-contact-panel__contacts\"\n aria-labelledby={contactsHeadingId}\n >\n <div className=\"eth-domain-crm-contact-panel__section-header\">\n <div>\n <span>Relationship map</span>\n <h3 id={contactsHeadingId}>Key contacts</h3>\n </div>\n <strong>{engagement}</strong>\n </div>\n\n {contactItems.length ? (\n <div className=\"eth-domain-crm-contact-panel__contact-list\" role=\"list\">\n {contactItems.map((item) => (\n <article\n key={item.id}\n className=\"eth-domain-crm-contact-panel__contact\"\n role=\"listitem\"\n >\n <span className=\"eth-domain-crm-contact-panel__avatar\" aria-hidden=\"true\">\n {getContactInitials(item.label)}\n </span>\n <div className=\"eth-domain-crm-contact-panel__contact-main\">\n <strong>{item.href ? <a href={item.href}>{item.label}</a> : item.label}</strong>\n {item.description ? <p>{item.description}</p> : null}\n {item.meta ? (\n <span className=\"eth-domain-crm-contact-panel__contact-meta\">\n {item.meta}\n </span>\n ) : null}\n </div>\n {item.status || item.actions?.length ? (\n <div className=\"eth-domain-crm-contact-panel__contact-aside\">\n {item.status ? (\n <StatusDot status={item.status} label={statusLabel(item.status)} />\n ) : null}\n <CRMContactActions actions={item.actions} />\n </div>\n ) : null}\n </article>\n ))}\n </div>\n ) : (\n <p className=\"eth-domain-crm-contact-panel__empty\">No contacts linked.</p>\n )}\n </section>\n\n <aside className=\"eth-domain-crm-contact-panel__signals\" aria-labelledby={signalsHeadingId}>\n <div className=\"eth-domain-crm-contact-panel__section-header\">\n <div>\n <span>Account signals</span>\n <h3 id={signalsHeadingId}>Relationship health</h3>\n </div>\n </div>\n <div className=\"eth-domain-crm-contact-panel__signal-list\">\n <div className=\"eth-domain-crm-contact-panel__signal\" data-tone={tone}>\n <span>Health</span>\n <strong>{health}</strong>\n </div>\n <div className=\"eth-domain-crm-contact-panel__signal\">\n <span>Coverage</span>\n <strong>{engagement}</strong>\n </div>\n <div className=\"eth-domain-crm-contact-panel__signal\">\n <span>Next step</span>\n <strong>{nextActivity}</strong>\n </div>\n </div>\n </aside>\n </div>\n {children}\n </Surface>\n );\n}\n\nexport function SupportTicketQueue({\n title = \"Support queue\",\n description,\n status,\n metadata,\n items,\n tickets,\n actions,\n footer,\n children,\n className,\n ...props\n}: SupportTicketQueueProps) {\n const ticketItems = tickets ?? items ?? [];\n const queueId = React.useId().replace(/:/g, \"\");\n const blockedCount = ticketItems.filter((item) =>\n [\"blocked\", \"failed\", \"approval-required\"].includes(item.status ?? \"\")\n ).length;\n const runningCount = ticketItems.filter((item) =>\n [\"running\", \"in-progress\"].includes(item.status ?? \"\")\n ).length;\n const nextSla =\n textFromNode(\n ticketItems.find((item) => item.status === \"blocked\")?.description ??\n ticketItems[0]?.description\n ) || \"No active SLA\";\n\n const summary =\n metadata ??\n [\n { label: \"Open tickets\", value: ticketItems.length.toLocaleString() },\n { label: \"Blocked\", value: blockedCount.toLocaleString() },\n { label: \"In progress\", value: runningCount.toLocaleString() },\n { label: \"Next SLA\", value: nextSla }\n ];\n\n return (\n <Surface\n {...props}\n data-eth-component=\"SupportTicketQueue\"\n title={title}\n description={description}\n status={status}\n metadata={summary}\n actions={actions}\n footer={footer}\n className={[\"eth-domain-support-ticket-queue\", className].filter(Boolean).join(\" \")}\n >\n {ticketItems.length ? (\n <div\n className=\"eth-domain-support-ticket-queue__list\"\n role=\"list\"\n aria-label=\"Support tickets\"\n >\n {ticketItems.map((item) => {\n const { priority, label } = splitTicketPriority(item.label);\n const ticketId = `${queueId}-${safeDomId(item.id)}`;\n const labelId = `${ticketId}-label`;\n const slaId = item.description ? `${ticketId}-sla` : undefined;\n\n return (\n <article\n key={item.id}\n className=\"eth-domain-support-ticket-queue__row\"\n data-status={item.status}\n role=\"listitem\"\n aria-labelledby={labelId}\n aria-describedby={slaId}\n >\n <div className=\"eth-domain-support-ticket-queue__ticket\">\n {priority ? (\n <span\n className=\"eth-domain-support-ticket-queue__priority\"\n data-priority={priority}\n >\n {priority}\n </span>\n ) : null}\n <strong id={labelId}>\n {item.href ? <a href={item.href}>{label}</a> : label}\n </strong>\n </div>\n\n {item.description ? (\n <div\n className={[\n \"eth-domain-support-ticket-queue__field\",\n \"eth-domain-support-ticket-queue__field--sla\"\n ].join(\" \")}\n id={slaId}\n >\n <span>SLA</span>\n <strong>{item.description}</strong>\n </div>\n ) : null}\n\n {item.meta ? (\n <div\n className={[\n \"eth-domain-support-ticket-queue__field\",\n \"eth-domain-support-ticket-queue__field--owner\"\n ].join(\" \")}\n >\n <span>Owner</span>\n <strong>{item.meta}</strong>\n </div>\n ) : null}\n\n <div className=\"eth-domain-support-ticket-queue__status\">\n {item.status ? (\n <StatusDot status={item.status} label={statusLabel(item.status)} />\n ) : null}\n <SupportTicketActions actions={item.actions} />\n </div>\n </article>\n );\n })}\n </div>\n ) : (\n <p className=\"eth-domain-support-ticket-queue__empty\">No active support tickets.</p>\n )}\n {children}\n </Surface>\n );\n}\n\nexport interface ApprovalWorkflowStep extends Record<string, unknown> {\n id: string;\n label: string;\n approver?: string;\n condition?: string;\n required?: boolean;\n status?: EthOperationalStatus;\n}\n\nexport interface ComplianceChecklistItem extends EthListItem {\n controlId?: React.ReactNode;\n evidence?: React.ReactNode;\n evidenceHref?: string;\n evidenceLabel?: React.ReactNode;\n owner?: React.ReactNode;\n dueDate?: React.ReactNode;\n updatedAt?: React.ReactNode;\n required?: boolean;\n}\n\nexport interface ComplianceChecklistProps extends Omit<SurfaceComponentProps, \"items\"> {\n items?: ComplianceChecklistItem[];\n}\n\nexport type RiskMatrixImpact = \"low\" | \"medium\" | \"high\" | \"critical\";\nexport type RiskMatrixProbability = \"low\" | \"medium\" | \"high\";\nexport type RiskMatrixSeverity = \"low\" | \"medium\" | \"high\" | \"critical\";\nexport type RiskMatrixView = \"matrix\" | \"register\";\n\nexport interface RiskMatrixItem extends EthListItem {\n impact?: RiskMatrixImpact;\n probability?: RiskMatrixProbability;\n severity?: RiskMatrixSeverity;\n owner?: React.ReactNode;\n mitigation?: React.ReactNode;\n dueDate?: React.ReactNode;\n score?: React.ReactNode;\n}\n\nexport interface RiskMatrixProps extends Omit<SurfaceComponentProps, \"items\"> {\n items?: RiskMatrixItem[];\n selectedItemId?: string;\n view?: RiskMatrixView;\n reviewCadence?: React.ReactNode;\n onViewChange?: (view: RiskMatrixView) => void;\n}\n\nexport interface InvoiceLineItem extends EthListItem {\n quantity?: React.ReactNode;\n rate?: React.ReactNode;\n amount?: React.ReactNode;\n}\n\nexport interface InvoicePaymentMilestone extends EthListItem {\n dueDate?: React.ReactNode;\n amount?: React.ReactNode;\n}\n\nexport interface InvoiceViewerProps extends Omit<SurfaceComponentProps, \"items\"> {\n items?: InvoiceLineItem[];\n customer?: React.ReactNode;\n dueDate?: React.ReactNode;\n terms?: React.ReactNode;\n owner?: React.ReactNode;\n subtotal?: React.ReactNode;\n tax?: React.ReactNode;\n total?: React.ReactNode;\n amountDue?: React.ReactNode;\n payments?: InvoicePaymentMilestone[];\n}\n\nexport interface OrderFulfillmentItem extends EthListItem {\n owner?: React.ReactNode;\n timestamp?: React.ReactNode;\n location?: React.ReactNode;\n quantity?: React.ReactNode;\n exception?: React.ReactNode;\n}\n\nexport interface OrderManagementPanelProps extends Omit<SurfaceComponentProps, \"items\"> {\n items?: OrderFulfillmentItem[];\n customer?: React.ReactNode;\n orderTotal?: React.ReactNode;\n paymentTerms?: React.ReactNode;\n shipTo?: React.ReactNode;\n carrier?: React.ReactNode;\n eta?: React.ReactNode;\n fulfillmentOwner?: React.ReactNode;\n}\n\nexport interface KnowledgeBaseArticleSection {\n id: string;\n title: React.ReactNode;\n body: React.ReactNode;\n status?: EthOperationalStatus;\n}\n\nexport interface KnowledgeBaseRelatedArticle extends EthListItem {\n type?: React.ReactNode;\n updatedAt?: React.ReactNode;\n}\n\nexport interface KnowledgeBaseCitation {\n id: string;\n label: React.ReactNode;\n source?: React.ReactNode;\n excerpt?: React.ReactNode;\n href?: string;\n status?: EthOperationalStatus;\n}\n\nexport interface KnowledgeBaseArticleViewerProps extends Omit<SurfaceComponentProps, \"items\"> {\n body?: React.ReactNode;\n sections?: KnowledgeBaseArticleSection[];\n relatedArticles?: KnowledgeBaseRelatedArticle[];\n citations?: KnowledgeBaseCitation[];\n items?: KnowledgeBaseRelatedArticle[];\n articleStatusLabel?: React.ReactNode;\n}\n\nexport interface DataImportWizardStep extends EthListItem {\n owner?: React.ReactNode;\n}\n\nexport interface DataImportFieldMapping {\n id: string;\n sourceField: React.ReactNode;\n targetField: React.ReactNode;\n sample?: React.ReactNode;\n status?: EthOperationalStatus;\n required?: boolean;\n}\n\nexport interface DataImportValidationIssue {\n id: string;\n field: React.ReactNode;\n message: React.ReactNode;\n count?: React.ReactNode;\n status?: EthOperationalStatus;\n}\n\nexport interface DataImportWizardProps extends Omit<SurfaceComponentProps, \"items\"> {\n items?: DataImportWizardStep[];\n fileName?: React.ReactNode;\n sourceLabel?: React.ReactNode;\n rowCount?: React.ReactNode;\n columnCount?: React.ReactNode;\n mappingCount?: React.ReactNode;\n validationSummary?: React.ReactNode;\n mappings?: DataImportFieldMapping[];\n validationIssues?: DataImportValidationIssue[];\n}\n\nexport interface MappingConfigurationItem extends EthListItem {\n sourceField?: React.ReactNode;\n targetField?: React.ReactNode;\n sourceObject?: React.ReactNode;\n targetObject?: React.ReactNode;\n sourceType?: React.ReactNode;\n targetType?: React.ReactNode;\n sample?: React.ReactNode;\n transform?: React.ReactNode;\n required?: boolean;\n confidence?: React.ReactNode;\n}\n\nexport interface MappingConfigurationIssue {\n id: string;\n field: React.ReactNode;\n message: React.ReactNode;\n status?: EthOperationalStatus;\n count?: React.ReactNode;\n}\n\nexport interface MappingConfigurationWizardProps extends Omit<SurfaceComponentProps, \"items\"> {\n items?: MappingConfigurationItem[];\n sourceObject?: React.ReactNode;\n targetObject?: React.ReactNode;\n mappingCount?: React.ReactNode;\n validationSummary?: React.ReactNode;\n targetOptions?: Array<{ value: string; label: string; disabled?: boolean }>;\n validationIssues?: MappingConfigurationIssue[];\n onMappingChange?: (id: string, targetField: string) => void;\n onAutoMap?: () => void;\n onValidate?: () => void;\n onSubmit?: () => void;\n}\n\nexport interface ReportBuilderSection extends EthListItem {\n owner?: React.ReactNode;\n source?: React.ReactNode;\n updatedAt?: React.ReactNode;\n required?: boolean;\n}\n\nexport interface ReportBuilderProps extends Omit<SurfaceComponentProps, \"items\"> {\n items?: ReportBuilderSection[];\n formatLabel?: React.ReactNode;\n owner?: React.ReactNode;\n updatedAt?: React.ReactNode;\n onAddSection?: () => void;\n onExportPdf?: () => void;\n onExportCsv?: () => void;\n}\n\nexport interface InventoryTableItem extends EthListItem {\n sku?: React.ReactNode;\n location?: React.ReactNode;\n onHand?: React.ReactNode;\n available?: React.ReactNode;\n allocated?: React.ReactNode;\n reorderPoint?: React.ReactNode;\n incoming?: React.ReactNode;\n updatedAt?: React.ReactNode;\n}\n\nexport interface InventoryTableProps extends Omit<SurfaceComponentProps, \"items\"> {\n items?: InventoryTableItem[];\n}\n\nexport interface ApprovalWorkflowEditorProps extends Omit<\n SurfaceComponentProps,\n \"children\" | \"items\" | \"metadata\" | \"onChange\"\n> {\n steps?: ApprovalWorkflowStep[];\n approverOptions?: Array<{ value: string; label: string; disabled?: boolean }>;\n mode?: ApprovalWorkflowMode;\n onChange?: (steps: ApprovalWorkflowStep[]) => void;\n onModeChange?: (mode: ApprovalWorkflowMode) => void;\n}\n\nexport type ProcessDesignerNodeKind = \"start\" | \"task\" | \"decision\" | \"end\";\n\nexport interface ProcessDesignerItem extends EthListItem {\n kind?: ProcessDesignerNodeKind;\n owner?: React.ReactNode;\n lane?: React.ReactNode;\n duration?: React.ReactNode;\n x?: number;\n y?: number;\n}\n\nexport interface ProcessDesignerConnection {\n from: string;\n to: string;\n label?: React.ReactNode;\n status?: EthOperationalStatus;\n}\n\nexport interface ProcessDesignerValidationIssue {\n id: string;\n target?: React.ReactNode;\n message: React.ReactNode;\n status?: EthOperationalStatus;\n}\n\nexport interface ProcessDesignerProps extends Omit<SurfaceComponentProps, \"items\"> {\n items?: ProcessDesignerItem[];\n connections?: ProcessDesignerConnection[];\n validationIssues?: ProcessDesignerValidationIssue[];\n selectedItemId?: string;\n onAddStep?: () => void;\n onValidate?: () => void;\n}\n\nconst defaultApproverOptions = [\n { value: \"\", label: \"Select approver\", disabled: true },\n { value: \"team-lead\", label: \"Team lead\" },\n { value: \"finance-ops\", label: \"Finance operations\" },\n { value: \"legal-review\", label: \"Legal review\" },\n { value: \"security-office\", label: \"Security office\" },\n { value: \"executive-sponsor\", label: \"Executive sponsor\" }\n];\n\nconst defaultApprovalSteps: ApprovalWorkflowStep[] = [\n {\n id: \"manager-review\",\n label: \"Manager review\",\n approver: \"team-lead\",\n condition: \"Spend is above requester limit\",\n required: true,\n status: \"completed\"\n },\n {\n id: \"finance-check\",\n label: \"Finance control check\",\n approver: \"finance-ops\",\n condition: \"Amount is greater than $10,000\",\n required: true,\n status: \"pending-approval\"\n },\n {\n id: \"legal-signoff\",\n label: \"Legal sign-off\",\n approver: \"legal-review\",\n condition: \"Vendor terms changed\",\n required: false,\n status: \"queued\"\n }\n];\n\nconst modeOptions: Array<{ value: ApprovalWorkflowMode; label: string }> = [\n { value: \"sequential\", label: \"Sequential route\" },\n { value: \"parallel\", label: \"Parallel quorum\" },\n { value: \"conditional\", label: \"Conditional branch\" }\n];\n\nconst defaultProcessItems: ProcessDesignerItem[] = [\n {\n id: \"start\",\n label: \"HRIS trigger\",\n description: \"New employee record received from Workday.\",\n status: \"completed\",\n kind: \"start\",\n owner: \"People ops\",\n lane: \"Intake\",\n duration: \"Instant\",\n x: 96,\n y: 170\n },\n {\n id: \"profile\",\n label: \"Collect profile\",\n description: \"Manager confirms role, location, and start date.\",\n status: \"completed\",\n kind: \"task\",\n owner: \"Hiring manager\",\n lane: \"Intake\",\n duration: \"4h SLA\",\n x: 278,\n y: 170\n },\n {\n id: \"approval\",\n label: \"Approval required?\",\n description: \"Route privileged roles through security approval.\",\n status: \"warning\",\n kind: \"decision\",\n owner: \"People systems\",\n lane: \"Policy\",\n duration: \"Conditional\",\n x: 460,\n y: 170\n },\n {\n id: \"security\",\n label: \"Security review\",\n description: \"Validate device, access groups, and background check.\",\n status: \"pending-approval\",\n kind: \"task\",\n owner: \"Security office\",\n lane: \"Controls\",\n duration: \"24h SLA\",\n x: 642,\n y: 92\n },\n {\n id: \"provision\",\n label: \"Provision access\",\n description: \"Create accounts and assign application entitlements.\",\n status: \"in-progress\",\n kind: \"task\",\n owner: \"IT operations\",\n lane: \"Fulfillment\",\n duration: \"2h SLA\",\n x: 642,\n y: 248\n },\n {\n id: \"complete\",\n label: \"Day-one ready\",\n description: \"Welcome package, access, and training tasks are complete.\",\n status: \"queued\",\n kind: \"end\",\n owner: \"People ops\",\n lane: \"Fulfillment\",\n duration: \"Start date\",\n x: 824,\n y: 248\n }\n];\n\nconst defaultProcessConnections: ProcessDesignerConnection[] = [\n { from: \"start\", to: \"profile\" },\n { from: \"profile\", to: \"approval\" },\n { from: \"approval\", to: \"security\", label: \"Needs review\", status: \"warning\" },\n { from: \"approval\", to: \"provision\", label: \"Auto approve\" },\n { from: \"security\", to: \"provision\", label: \"Approved\" },\n { from: \"provision\", to: \"complete\" }\n];\n\nconst defaultProcessValidationIssues: ProcessDesignerValidationIssue[] = [\n {\n id: \"backup-owner\",\n target: \"Approval required?\",\n message: \"Privileged access branch needs a backup owner.\",\n status: \"warning\"\n },\n {\n id: \"sla-policy\",\n target: \"Security review\",\n message: \"Security review SLA is waiting on policy confirmation.\",\n status: \"pending-approval\"\n }\n];\n\nfunction nextApprovalStepId(steps: ApprovalWorkflowStep[]) {\n let index = steps.length + 1;\n let id = `approval-step-${index}`;\n while (steps.some((step) => step.id === id)) {\n index += 1;\n id = `approval-step-${index}`;\n }\n return id;\n}\n\nfunction formatApprovalStatus(status: EthOperationalStatus | undefined, required?: boolean) {\n if (status === \"completed\") return \"Completed\";\n if (status === \"pending-approval\") return \"Pending\";\n if (status === \"blocked\" || status === \"failed\") return \"Blocked\";\n if (status === \"queued\") return \"Queued\";\n return required ? \"Required\" : \"Optional\";\n}\n\nfunction isComplianceComplete(status: EthOperationalStatus | undefined) {\n return status === \"completed\" || status === \"succeeded\" || status === \"synced\";\n}\n\nfunction needsComplianceAttention(status: EthOperationalStatus | undefined) {\n return (\n status === \"approval-required\" ||\n status === \"blocked\" ||\n status === \"failed\" ||\n status === \"pending-approval\" ||\n status === \"stale\" ||\n status === \"warning\"\n );\n}\n\nfunction deriveComplianceStatus(\n items: ComplianceChecklistItem[]\n): EthOperationalStatus | undefined {\n if (!items.length) return undefined;\n if (items.some((item) => item.status === \"blocked\" || item.status === \"failed\")) {\n return \"blocked\";\n }\n if (items.some((item) => item.status === \"approval-required\")) {\n return \"approval-required\";\n }\n if (items.every((item) => isComplianceComplete(item.status))) {\n return \"completed\";\n }\n return \"in-progress\";\n}\n\nfunction hasComplianceEvidence(item: ComplianceChecklistItem) {\n return Boolean(item.evidence ?? item.evidenceLabel ?? item.evidenceHref ?? item.meta);\n}\n\nfunction hasDisplayValue(value: React.ReactNode) {\n return value !== undefined && value !== null && value !== \"\";\n}\n\nfunction isReportSectionIncluded(status: EthOperationalStatus | undefined) {\n return (\n status !== \"inactive\" &&\n status !== \"not-started\" &&\n status !== \"blocked\" &&\n status !== \"failed\"\n );\n}\n\nfunction needsReportSectionAttention(status: EthOperationalStatus | undefined) {\n return (\n status === \"approval-required\" ||\n status === \"blocked\" ||\n status === \"failed\" ||\n status === \"pending-approval\" ||\n status === \"stale\" ||\n status === \"warning\"\n );\n}\n\nfunction deriveReportBuilderStatus(items: ReportBuilderSection[]): EthOperationalStatus {\n if (!items.length) return \"not-started\";\n if (items.some((item) => item.status === \"blocked\" || item.status === \"failed\")) {\n return \"blocked\";\n }\n if (items.some((item) => needsReportSectionAttention(item.status))) return \"warning\";\n if (items.some((item) => item.status === \"in-progress\" || item.status === \"running\")) {\n return \"in-progress\";\n }\n return \"active\";\n}\n\nfunction reportBuilderReadinessLabel(status: EthOperationalStatus, attentionCount: number) {\n if (attentionCount) {\n return `${attentionCount} ${attentionCount === 1 ? \"issue\" : \"issues\"} to resolve`;\n }\n if (status === \"not-started\") return \"Not started\";\n if (status === \"in-progress\" || status === \"running\") return \"Draft in progress\";\n if (status === \"blocked\" || status === \"failed\") return \"Blocked\";\n return \"Ready\";\n}\n\nfunction reportSectionMeta(item: ReportBuilderSection, index: number) {\n return item.meta ?? item.updatedAt ?? item.source ?? `Section ${index + 1}`;\n}\n\nconst riskImpactLevels: RiskMatrixImpact[] = [\"critical\", \"high\", \"medium\", \"low\"];\nconst riskProbabilityLevels: RiskMatrixProbability[] = [\"low\", \"medium\", \"high\"];\nconst riskImpactRank: Record<RiskMatrixImpact, number> = {\n low: 1,\n medium: 2,\n high: 3,\n critical: 4\n};\nconst riskProbabilityRank: Record<RiskMatrixProbability, number> = {\n low: 1,\n medium: 2,\n high: 3\n};\nconst riskSeverityRank: Record<RiskMatrixSeverity, number> = {\n low: 1,\n medium: 2,\n high: 3,\n critical: 4\n};\nconst riskImpactLabels: Record<RiskMatrixImpact, string> = {\n low: \"Low\",\n medium: \"Medium\",\n high: \"High\",\n critical: \"Critical\"\n};\nconst riskProbabilityLabels: Record<RiskMatrixProbability, string> = {\n low: \"Low\",\n medium: \"Medium\",\n high: \"High\"\n};\n\ninterface ResolvedRiskMatrixItem extends RiskMatrixItem {\n resolvedImpact: RiskMatrixImpact;\n resolvedProbability: RiskMatrixProbability;\n resolvedSeverity: RiskMatrixSeverity;\n resolvedScore: number;\n}\n\nfunction isRiskImpact(value: string): value is RiskMatrixImpact {\n return value === \"low\" || value === \"medium\" || value === \"high\" || value === \"critical\";\n}\n\nfunction isRiskProbability(value: string): value is RiskMatrixProbability {\n return value === \"low\" || value === \"medium\" || value === \"high\";\n}\n\nfunction normalizeRiskImpact(value: unknown): RiskMatrixImpact | undefined {\n if (typeof value !== \"string\") return undefined;\n const normalized = value.trim().toLowerCase();\n return isRiskImpact(normalized) ? normalized : undefined;\n}\n\nfunction normalizeRiskProbability(value: unknown): RiskMatrixProbability | undefined {\n if (typeof value !== \"string\") return undefined;\n const normalized = value.trim().toLowerCase();\n return isRiskProbability(normalized) ? normalized : undefined;\n}\n\nfunction riskFieldFromDescription(item: RiskMatrixItem, field: \"impact\" | \"probability\") {\n const text = textFromNode(item.description);\n const match = text.match(new RegExp(`${field}\\\\s*[:=]\\\\s*(critical|high|medium|low)`, \"i\"));\n return match?.[1];\n}\n\nfunction fallbackImpactForStatus(status: EthOperationalStatus | undefined): RiskMatrixImpact {\n if (status === \"blocked\" || status === \"failed\" || status === \"approval-required\") {\n return \"critical\";\n }\n if (status === \"warning\" || status === \"stale\" || status === \"pending-approval\") {\n return \"high\";\n }\n if (status === \"completed\" || status === \"succeeded\" || status === \"synced\") return \"low\";\n return \"medium\";\n}\n\nfunction riskSeverityFromScore(\n impact: RiskMatrixImpact,\n probability: RiskMatrixProbability\n): RiskMatrixSeverity {\n const score = riskImpactRank[impact] * riskProbabilityRank[probability];\n if (score >= 9) return \"critical\";\n if (score >= 6) return \"high\";\n if (score >= 3) return \"medium\";\n return \"low\";\n}\n\nfunction resolveRiskMatrixItem(item: RiskMatrixItem): ResolvedRiskMatrixItem {\n const resolvedImpact =\n normalizeRiskImpact(item.impact) ??\n normalizeRiskImpact(riskFieldFromDescription(item, \"impact\")) ??\n fallbackImpactForStatus(item.status);\n const resolvedProbability =\n normalizeRiskProbability(item.probability) ??\n normalizeRiskProbability(riskFieldFromDescription(item, \"probability\")) ??\n \"medium\";\n const resolvedSeverity =\n item.severity ??\n (item.status === \"blocked\" || item.status === \"failed\"\n ? \"critical\"\n : riskSeverityFromScore(resolvedImpact, resolvedProbability));\n\n return {\n ...item,\n resolvedImpact,\n resolvedProbability,\n resolvedSeverity,\n resolvedScore: riskImpactRank[resolvedImpact] * riskProbabilityRank[resolvedProbability]\n };\n}\n\nfunction compareRiskPriority(a: ResolvedRiskMatrixItem, b: ResolvedRiskMatrixItem) {\n return (\n riskSeverityRank[b.resolvedSeverity] - riskSeverityRank[a.resolvedSeverity] ||\n b.resolvedScore - a.resolvedScore ||\n riskImpactRank[b.resolvedImpact] - riskImpactRank[a.resolvedImpact] ||\n riskProbabilityRank[b.resolvedProbability] - riskProbabilityRank[a.resolvedProbability]\n );\n}\n\nfunction deriveRiskMatrixStatus(items: ResolvedRiskMatrixItem[]): EthOperationalStatus | undefined {\n if (!items.length) return undefined;\n if (items.some((item) => item.resolvedSeverity === \"critical\")) return \"blocked\";\n if (items.some((item) => item.resolvedSeverity === \"high\")) return \"warning\";\n if (items.some((item) => item.resolvedSeverity === \"medium\")) return \"in-progress\";\n return \"active\";\n}\n\nfunction deriveRiskMatrixSurfaceSeverity(items: ResolvedRiskMatrixItem[]) {\n if (items.some((item) => item.resolvedSeverity === \"critical\")) return \"danger\" as const;\n if (items.some((item) => item.resolvedSeverity === \"high\")) return \"warning\" as const;\n return undefined;\n}\n\nfunction riskCountLabel(count: number) {\n return `${count} risk${count === 1 ? \"\" : \"s\"}`;\n}\n\nfunction isCompletedProcessStep(status: EthOperationalStatus | undefined) {\n return status === \"completed\" || status === \"succeeded\" || status === \"synced\";\n}\n\nfunction processStepKind(\n item: ProcessDesignerItem,\n index: number,\n total: number\n): ProcessDesignerNodeKind {\n if (item.kind) return item.kind;\n if (index === 0) return \"start\";\n if (index === total - 1) return \"end\";\n return \"task\";\n}\n\nfunction deriveProcessStatus(\n items: ProcessDesignerItem[],\n validationIssues: ProcessDesignerValidationIssue[]\n): EthOperationalStatus | undefined {\n if (validationIssues.some((issue) => issue.status === \"blocked\" || issue.status === \"failed\")) {\n return \"blocked\";\n }\n if (\n validationIssues.some(\n (issue) =>\n issue.status === \"warning\" ||\n issue.status === \"pending-approval\" ||\n issue.status === \"approval-required\"\n )\n ) {\n return \"warning\";\n }\n if (!items.length) return undefined;\n if (items.some((item) => item.status === \"blocked\" || item.status === \"failed\")) {\n return \"blocked\";\n }\n if (items.every((item) => isCompletedProcessStep(item.status))) {\n return \"completed\";\n }\n if (\n items.some(\n (item) =>\n item.status === \"active\" || item.status === \"in-progress\" || item.status === \"running\"\n )\n ) {\n return \"in-progress\";\n }\n return \"queued\";\n}\n\nfunction sequentialProcessConnections(items: ProcessDesignerItem[]): ProcessDesignerConnection[] {\n return items.slice(1).map((item, index) => ({ from: items[index].id, to: item.id }));\n}\n\nfunction processNodePoint(item: ProcessDesignerItem, index: number) {\n return {\n x: item.x ?? 110 + (index % 4) * 210,\n y: item.y ?? 140 + Math.floor(index / 4) * 140\n };\n}\n\nfunction graphLabelLines(value: React.ReactNode, fallback: string) {\n const label = textFromNode(value).trim() || fallback;\n if (label.length <= 18) return [label];\n\n const lines: string[] = [];\n let current = \"\";\n for (const word of label.split(/\\s+/)) {\n const next = current ? `${current} ${word}` : word;\n if (next.length > 18 && current) {\n lines.push(current);\n current = word;\n } else {\n current = next;\n }\n }\n if (current) lines.push(current);\n\n if (lines.length <= 2) return lines;\n return [lines[0], `${lines.slice(1).join(\" \").slice(0, 16)}...`];\n}\n\nconst defaultOrderFulfillmentItems: OrderFulfillmentItem[] = [\n {\n id: \"received\",\n label: \"Order received\",\n description: \"Purchase order matched against contract pricing and customer terms.\",\n owner: \"Sales operations\",\n timestamp: \"May 29, 08:12\",\n status: \"completed\"\n },\n {\n id: \"payment\",\n label: \"Payment terms cleared\",\n description: \"Net 30 credit check passed; release hold removed by finance.\",\n owner: \"Finance operations\",\n timestamp: \"May 29, 09:05\",\n status: \"completed\"\n },\n {\n id: \"pick-pack\",\n label: \"Pick and pack\",\n description: \"Warehouse B is staging the final cartons for carrier handoff.\",\n owner: \"Fulfillment team\",\n location: \"Warehouse B\",\n quantity: \"18 / 20 cartons\",\n timestamp: \"May 29, 14:40\",\n status: \"in-progress\"\n },\n {\n id: \"carrier\",\n label: \"Carrier handoff\",\n description: \"FedEx pickup booked; ASN will post when scan is received.\",\n owner: \"FedEx Ground\",\n location: \"Dock 4\",\n timestamp: \"May 29, 17:00\",\n status: \"queued\"\n }\n];\n\nfunction isOrderStepComplete(status: EthOperationalStatus | undefined) {\n return status === \"completed\" || status === \"succeeded\" || status === \"synced\";\n}\n\nfunction isOrderStepCurrent(status: EthOperationalStatus | undefined) {\n return status === \"active\" || status === \"in-progress\" || status === \"running\";\n}\n\nfunction needsOrderAttention(item: OrderFulfillmentItem) {\n return (\n hasDisplayValue(item.exception) ||\n item.status === \"approval-required\" ||\n item.status === \"blocked\" ||\n item.status === \"failed\" ||\n item.status === \"pending-approval\" ||\n item.status === \"stale\" ||\n item.status === \"warning\"\n );\n}\n\nfunction deriveOrderStatus(items: OrderFulfillmentItem[]): EthOperationalStatus | undefined {\n if (!items.length) return undefined;\n if (items.some((item) => item.status === \"blocked\" || item.status === \"failed\")) {\n return \"blocked\";\n }\n if (items.some((item) => item.status === \"approval-required\")) {\n return \"approval-required\";\n }\n if (items.every((item) => isOrderStepComplete(item.status))) return \"completed\";\n if (items.some((item) => isOrderStepCurrent(item.status))) return \"in-progress\";\n if (items.some((item) => item.status === \"pending-approval\" || item.status === \"warning\")) {\n return \"pending-approval\";\n }\n return \"queued\";\n}\n\nfunction currentOrderStepIndex(items: OrderFulfillmentItem[]) {\n const activeIndex = items.findIndex((item) => isOrderStepCurrent(item.status));\n if (activeIndex >= 0) return activeIndex;\n\n const nextIndex = items.findIndex((item) => !isOrderStepComplete(item.status));\n return nextIndex >= 0 ? nextIndex : Math.max(items.length - 1, 0);\n}\n\nfunction OrderFulfillmentActions({ actions }: { actions?: EthAction[] }) {\n if (!actions?.length) return null;\n\n return (\n <div className=\"eth-domain-order-management__step-actions\">\n {actions.slice(0, 2).map((action) =>\n action.href ? (\n <LinkButton\n key={action.id}\n href={action.disabled ? undefined : action.href}\n intent={action.intent ?? \"ghost\"}\n density=\"compact\"\n aria-disabled={action.disabled ? true : undefined}\n tabIndex={action.disabled ? -1 : undefined}\n >\n {action.label}\n </LinkButton>\n ) : (\n <Button\n key={action.id}\n type=\"button\"\n intent={action.intent ?? \"ghost\"}\n density=\"compact\"\n disabled={action.disabled}\n onClick={action.onSelect}\n >\n {action.label}\n </Button>\n )\n )}\n </div>\n );\n}\n\nfunction parseInventoryNumber(value: React.ReactNode): number | null {\n if (typeof value === \"number\") return Number.isFinite(value) ? value : null;\n if (typeof value !== \"string\") return null;\n\n const normalized = value.replace(/,/g, \"\").trim();\n if (!/^-?\\d+(\\.\\d+)?$/.test(normalized)) return null;\n\n const parsed = Number(normalized);\n return Number.isFinite(parsed) ? parsed : null;\n}\n\nfunction formatInventoryValue(value: React.ReactNode) {\n if (!hasDisplayValue(value)) return \"--\";\n if (typeof value === \"number\") return new Intl.NumberFormat(\"en-US\").format(value);\n return value;\n}\n\nfunction parseInventoryStockDescription(description: React.ReactNode) {\n const text = textFromNode(description);\n const match = text.match(\n /\\bOn hand:\\s*([0-9,]+(?:\\.\\d+)?)\\s*(?:[^A-Za-z0-9]+\\s*)?Reorder:\\s*([0-9,]+(?:\\.\\d+)?)/i\n );\n\n if (!match) return null;\n return {\n onHand: Number(match[1].replace(/,/g, \"\")),\n reorderPoint: Number(match[2].replace(/,/g, \"\"))\n };\n}\n\nfunction inventoryStatusFromLevels(\n item: InventoryTableItem,\n onHandNumber: number | null,\n reorderNumber: number | null\n): EthOperationalStatus {\n if (item.status) return item.status;\n if (onHandNumber !== null && onHandNumber <= 0) return \"failed\";\n if (onHandNumber !== null && reorderNumber !== null && onHandNumber <= reorderNumber) {\n return \"warning\";\n }\n return \"active\";\n}\n\nfunction inventoryStatusLabel(status: EthOperationalStatus) {\n if (status === \"failed\" || status === \"blocked\") return \"Stockout\";\n if (status === \"warning\" || status === \"stale\") return \"Reorder\";\n if (status === \"in-progress\" || status === \"running\") return \"Replenishing\";\n if (status === \"queued\" || status === \"not-started\") return \"Pending count\";\n if (\n status === \"active\" ||\n status === \"completed\" ||\n status === \"succeeded\" ||\n status === \"synced\"\n ) {\n return \"In stock\";\n }\n return statusLabel(status);\n}\n\ninterface InventoryTableRow {\n item: InventoryTableItem;\n parsedStockDescription: boolean;\n onHand: React.ReactNode;\n onHandNumber: number | null;\n reorderPoint: React.ReactNode;\n reorderNumber: number | null;\n available: React.ReactNode;\n status: EthOperationalStatus;\n}\n\nfunction normalizeInventoryRow(item: InventoryTableItem): InventoryTableRow {\n const parsedStockDescription = parseInventoryStockDescription(item.description);\n const onHand = item.onHand ?? parsedStockDescription?.onHand;\n const reorderPoint = item.reorderPoint ?? parsedStockDescription?.reorderPoint;\n const onHandNumber = parseInventoryNumber(onHand);\n const reorderNumber = parseInventoryNumber(reorderPoint);\n const allocatedNumber = parseInventoryNumber(item.allocated);\n const available =\n item.available ??\n (onHandNumber !== null && allocatedNumber !== null\n ? onHandNumber - allocatedNumber\n : undefined);\n const status = inventoryStatusFromLevels(item, onHandNumber, reorderNumber);\n\n return {\n item,\n parsedStockDescription: Boolean(parsedStockDescription),\n onHand,\n onHandNumber,\n reorderPoint,\n reorderNumber,\n available,\n status\n };\n}\n\nfunction inventoryLevelPercent(row: InventoryTableRow) {\n if (row.onHandNumber === null || row.reorderNumber === null) return 0;\n\n const capacity = Math.max(row.reorderNumber * 2, row.onHandNumber, 1);\n return Math.max(0, Math.min(100, Math.round((row.onHandNumber / capacity) * 100)));\n}\n\nfunction isInventoryReorderRow(row: InventoryTableRow) {\n if (row.onHandNumber !== null && row.reorderNumber !== null) {\n return row.onHandNumber <= row.reorderNumber;\n }\n return row.status === \"warning\" || row.status === \"failed\" || row.status === \"blocked\";\n}\n\nfunction isInventoryStockoutRow(row: InventoryTableRow) {\n if (row.onHandNumber !== null) return row.onHandNumber <= 0;\n return row.status === \"failed\" || row.status === \"blocked\";\n}\n\nexport function InventoryTable({\n title = \"Inventory\",\n description = \"SKU availability, reorder thresholds, and fulfillment readiness.\",\n items = [],\n metadata,\n actions,\n footer,\n children,\n className,\n ...props\n}: InventoryTableProps) {\n const rows = items.map(normalizeInventoryRow);\n const totalOnHand = rows.reduce(\n (sum, row) => (row.onHandNumber === null ? sum : sum + row.onHandNumber),\n 0\n );\n const hasOnHandTotal = rows.some((row) => row.onHandNumber !== null);\n const reorderCount = rows.filter(isInventoryReorderRow).length;\n const stockoutCount = rows.filter(isInventoryStockoutRow).length;\n const computedMetadata =\n metadata ??\n (rows.length\n ? [\n { label: \"SKUs\", value: rows.length },\n { label: \"Below reorder\", value: reorderCount },\n { label: \"Stockouts\", value: stockoutCount },\n ...(hasOnHandTotal\n ? [{ label: \"On hand\", value: new Intl.NumberFormat(\"en-US\").format(totalOnHand) }]\n : [])\n ]\n : undefined);\n\n return (\n <Surface\n {...props}\n data-eth-component=\"InventoryTable\"\n title={title}\n description={description}\n metadata={computedMetadata}\n actions={actions}\n footer={footer}\n className={[\"eth-domain-inventory-table\", className].filter(Boolean).join(\" \")}\n >\n {rows.length ? (\n <div className=\"eth-domain-inventory-table__table-wrap\">\n <table className=\"eth-domain-inventory-table__table\">\n <caption className=\"eth-domain-inventory-table__caption\">\n Inventory stock by SKU and reorder threshold\n </caption>\n <colgroup>\n <col className=\"eth-domain-inventory-table__sku-col\" />\n <col className=\"eth-domain-inventory-table__location-col\" />\n <col className=\"eth-domain-inventory-table__quantity-col\" />\n <col className=\"eth-domain-inventory-table__quantity-col\" />\n <col className=\"eth-domain-inventory-table__quantity-col\" />\n <col className=\"eth-domain-inventory-table__status-col\" />\n </colgroup>\n <thead>\n <tr>\n <th scope=\"col\">SKU</th>\n <th scope=\"col\">Location</th>\n <th scope=\"col\">On hand</th>\n <th scope=\"col\">Available</th>\n <th scope=\"col\">Reorder point</th>\n <th scope=\"col\">Stock status</th>\n </tr>\n </thead>\n <tbody>\n {rows.map((row) => {\n const { item } = row;\n const labelContent = item.href ? <a href={item.href}>{item.label}</a> : item.label;\n const showDescription =\n hasDisplayValue(item.description) && !row.parsedStockDescription;\n const location = item.location ?? item.meta;\n const statusLabelText = inventoryStatusLabel(row.status);\n\n return (\n <tr key={item.id} data-status={row.status}>\n <td>\n <div className=\"eth-domain-inventory-table__sku\">\n <span>{item.sku ?? item.id}</span>\n <strong>{labelContent}</strong>\n {showDescription ? <p>{item.description}</p> : null}\n </div>\n </td>\n <td>\n <div className=\"eth-domain-inventory-table__cell-stack\">\n <strong>{formatInventoryValue(location)}</strong>\n {hasDisplayValue(item.updatedAt) ? (\n <span>{item.updatedAt}</span>\n ) : (\n <span>Cycle count current</span>\n )}\n </div>\n </td>\n <td>\n <div className=\"eth-domain-inventory-table__quantity\">\n <strong>{formatInventoryValue(row.onHand)}</strong>\n <span className=\"eth-domain-inventory-table__level\" aria-hidden=\"true\">\n <span\n className=\"eth-domain-inventory-table__level-fill\"\n style={{ inlineSize: `${inventoryLevelPercent(row)}%` }}\n />\n </span>\n </div>\n </td>\n <td className=\"eth-domain-inventory-table__numeric\">\n {formatInventoryValue(row.available)}\n </td>\n <td className=\"eth-domain-inventory-table__numeric\">\n {formatInventoryValue(row.reorderPoint)}\n </td>\n <td>\n <div className=\"eth-domain-inventory-table__state\">\n <StatusDot status={row.status} label={statusLabelText} />\n {hasDisplayValue(item.incoming) ? (\n <span>Incoming {formatInventoryValue(item.incoming)}</span>\n ) : null}\n </div>\n </td>\n </tr>\n );\n })}\n </tbody>\n </table>\n </div>\n ) : (\n <div className=\"eth-domain-inventory-table__empty\">No inventory items configured.</div>\n )}\n {children}\n </Surface>\n );\n}\n\nexport function OrderManagementPanel({\n title = \"Order\",\n description,\n status,\n metadata,\n actions,\n footer,\n children,\n className,\n items = defaultOrderFulfillmentItems,\n customer,\n orderTotal,\n paymentTerms,\n shipTo,\n carrier,\n eta,\n fulfillmentOwner = \"Fulfillment operations\",\n ...props\n}: OrderManagementPanelProps) {\n const orderStatus = status ?? deriveOrderStatus(items) ?? \"not-started\";\n const currentIndex = currentOrderStepIndex(items);\n const currentStep = items[currentIndex];\n const completedCount = items.filter((item) => isOrderStepComplete(item.status)).length;\n const attentionCount = items.filter(needsOrderAttention).length;\n const lifecycleHeadingId = React.useId();\n const executionHeadingId = React.useId();\n const computedMetadata =\n metadata ??\n [\n {\n label: \"Fulfillment\",\n value: items.length ? `${completedCount}/${items.length} checkpoints` : undefined\n },\n { label: \"Carrier\", value: carrier },\n { label: \"ETA\", value: eta },\n {\n label: \"Exceptions\",\n value: attentionCount ? `${attentionCount} open` : \"None\"\n }\n ].filter((item) => hasDisplayValue(item.value));\n const executionSummary = [\n { label: \"Customer\", value: customer },\n { label: \"Current checkpoint\", value: currentStep?.label },\n { label: \"Owner\", value: currentStep?.owner ?? fulfillmentOwner },\n { label: \"Ship to\", value: shipTo },\n { label: \"Payment terms\", value: paymentTerms },\n { label: \"Order total\", value: orderTotal }\n ].filter((item) => hasDisplayValue(item.value));\n const activeException = items.find(needsOrderAttention);\n\n return (\n <Surface\n {...props}\n data-eth-component=\"OrderManagementPanel\"\n title={title}\n description={description}\n status={orderStatus}\n metadata={computedMetadata.length ? computedMetadata : undefined}\n actions={actions}\n footer={footer}\n className={[\"eth-domain-order-management\", className].filter(Boolean).join(\" \")}\n >\n <div className=\"eth-domain-order-management__body\">\n <section\n className=\"eth-domain-order-management__timeline\"\n aria-labelledby={lifecycleHeadingId}\n >\n <div className=\"eth-domain-order-management__section-header\">\n <div>\n <span>Fulfillment</span>\n <h3 id={lifecycleHeadingId}>Lifecycle</h3>\n </div>\n <strong>\n {items.length ? `${completedCount} of ${items.length} complete` : \"No checkpoints\"}\n </strong>\n </div>\n\n {items.length ? (\n <ol className=\"eth-domain-order-management__steps\">\n {items.map((item, index) => {\n const itemStatus = item.status ?? \"not-started\";\n const labelContent = item.href ? (\n <a href={item.href}>{item.label}</a>\n ) : (\n item.label\n );\n const detailRows = [\n { label: \"Owner\", value: item.owner },\n { label: \"Location\", value: item.location },\n { label: \"Quantity\", value: item.quantity },\n { label: \"Time\", value: item.timestamp ?? item.meta }\n ].filter((detail) => hasDisplayValue(detail.value));\n\n return (\n <li\n key={item.id}\n aria-current={index === currentIndex ? \"step\" : undefined}\n data-current={index === currentIndex ? \"true\" : undefined}\n data-status={itemStatus}\n >\n <span className=\"eth-domain-order-management__step-marker\" aria-hidden=\"true\">\n {index + 1}\n </span>\n <div className=\"eth-domain-order-management__step-main\">\n <div className=\"eth-domain-order-management__step-heading\">\n <strong>{labelContent}</strong>\n <StatusDot status={itemStatus} label={statusLabel(itemStatus)} />\n </div>\n {item.description ? <p>{item.description}</p> : null}\n {detailRows.length ? (\n <dl className=\"eth-domain-order-management__step-meta\">\n {detailRows.map((detail, detailIndex) => (\n <div key={detailIndex}>\n <dt>{detail.label}</dt>\n <dd>{detail.value}</dd>\n </div>\n ))}\n </dl>\n ) : null}\n {item.exception ? (\n <div className=\"eth-domain-order-management__step-exception\">\n {item.exception}\n </div>\n ) : null}\n <OrderFulfillmentActions actions={item.actions} />\n </div>\n </li>\n );\n })}\n </ol>\n ) : (\n <div className=\"eth-domain-order-management__empty\">\n No fulfillment checkpoints configured.\n </div>\n )}\n </section>\n\n <aside\n className=\"eth-domain-order-management__execution\"\n aria-labelledby={executionHeadingId}\n >\n <div className=\"eth-domain-order-management__section-header\">\n <div>\n <span>Execution</span>\n <h3 id={executionHeadingId}>Order controls</h3>\n </div>\n <StatusDot status={orderStatus} label={statusLabel(orderStatus)} />\n </div>\n\n {executionSummary.length ? (\n <dl className=\"eth-domain-order-management__summary\">\n {executionSummary.map((item, index) => (\n <div key={index}>\n <dt>{item.label}</dt>\n <dd>{item.value}</dd>\n </div>\n ))}\n </dl>\n ) : null}\n\n <div\n className=\"eth-domain-order-management__attention\"\n data-status={activeException ? activeException.status ?? \"warning\" : \"completed\"}\n >\n <span>Exception state</span>\n <strong>\n {activeException ? activeException.label : \"No active fulfillment exceptions\"}\n </strong>\n {activeException?.exception ? <p>{activeException.exception}</p> : null}\n </div>\n </aside>\n </div>\n {children}\n </Surface>\n );\n}\n\nconst defaultKnowledgeBaseSections: KnowledgeBaseArticleSection[] = [\n {\n id: \"routing\",\n title: \"Approval routing\",\n body: \"Requests with external recipients enter legal review before delivery. The route records each approver, decision, exception reason, and timestamp for audit export.\",\n status: \"active\"\n },\n {\n id: \"exceptions\",\n title: \"Exception handling\",\n body: \"If legal requests a change, the article owner receives a revision task and external send remains disabled until the legal approval returns.\",\n status: \"pending-approval\"\n }\n];\n\nconst defaultKnowledgeBaseRelatedArticles: KnowledgeBaseRelatedArticle[] = [\n {\n id: \"legal-review-sla\",\n label: \"Legal review SLA\",\n description: \"Response windows, backup approvers, and overdue escalation paths.\",\n meta: \"Policy\",\n type: \"Policy\",\n updatedAt: \"Updated May 20\",\n status: \"active\"\n },\n {\n id: \"external-send-controls\",\n label: \"External send controls\",\n description: \"Controls that keep outbound delivery locked while approval is open.\",\n meta: \"Runbook\",\n type: \"Runbook\",\n updatedAt: \"Updated May 18\",\n status: \"in-progress\"\n }\n];\n\nconst defaultKnowledgeBaseCitations: KnowledgeBaseCitation[] = [\n {\n id: \"approval-policy\",\n label: \"External send approval policy\",\n source: \"Policy KB-214\",\n excerpt: \"Outbound delivery requires recorded legal approval.\",\n status: \"completed\"\n },\n {\n id: \"audit-control\",\n label: \"Audit evidence control\",\n source: \"Control AE-09\",\n excerpt: \"Approval decisions must include owner, timestamp, and reason.\",\n status: \"active\"\n }\n];\n\nfunction knowledgeBaseStatusLabel(status: EthOperationalStatus | undefined) {\n return status ? statusLabel(status) : \"Published\";\n}\n\nfunction hasKnowledgeBaseNode(node: React.ReactNode) {\n return node !== undefined && node !== null && node !== false && node !== \"\";\n}\n\nfunction renderKnowledgeBaseNode(node: React.ReactNode) {\n if (!hasKnowledgeBaseNode(node)) return null;\n if (typeof node === \"string\" || typeof node === \"number\") return <p>{node}</p>;\n return node;\n}\n\nexport function ComplianceChecklist({\n title = \"Compliance checklist\",\n description = \"Evidence readiness, control ownership, and audit state for the current review.\",\n items = [],\n metadata,\n status,\n footer,\n children,\n className,\n ...props\n}: ComplianceChecklistProps) {\n const completeCount = items.filter((item) => isComplianceComplete(item.status)).length;\n const attentionCount = items.filter((item) => needsComplianceAttention(item.status)).length;\n const evidenceCount = items.filter(hasComplianceEvidence).length;\n const computedMetadata =\n metadata ??\n (items.length\n ? [\n { label: \"Complete\", value: `${completeCount}/${items.length}` },\n { label: \"Needs attention\", value: attentionCount },\n { label: \"Evidence linked\", value: `${evidenceCount}/${items.length}` }\n ]\n : undefined);\n\n return (\n <Surface\n {...props}\n data-eth-component=\"ComplianceChecklist\"\n title={title}\n description={description}\n status={status ?? deriveComplianceStatus(items)}\n metadata={computedMetadata}\n footer={footer}\n className={[\"eth-domain-compliance-checklist\", className].filter(Boolean).join(\" \")}\n >\n {items.length ? (\n <div className=\"eth-domain-compliance-checklist__table-wrap\">\n <table className=\"eth-domain-compliance-checklist__table\">\n <caption className=\"eth-domain-compliance-checklist__caption\">\n Compliance evidence checklist\n </caption>\n <colgroup>\n <col className=\"eth-domain-compliance-checklist__control-col\" />\n <col className=\"eth-domain-compliance-checklist__owner-col\" />\n <col className=\"eth-domain-compliance-checklist__evidence-col\" />\n <col className=\"eth-domain-compliance-checklist__state-col\" />\n </colgroup>\n <thead>\n <tr>\n <th scope=\"col\">Control</th>\n <th scope=\"col\">Owner</th>\n <th scope=\"col\">Evidence</th>\n <th scope=\"col\">Audit state</th>\n </tr>\n </thead>\n <tbody>\n {items.map((item) => {\n const itemStatus = item.status ?? \"not-started\";\n const labelContent = item.href ? <a href={item.href}>{item.label}</a> : item.label;\n const evidenceContent = item.evidence ?? item.evidenceLabel ?? item.meta;\n\n return (\n <tr key={item.id} data-status={itemStatus}>\n <td>\n <div className=\"eth-domain-compliance-checklist__control\">\n {item.controlId ? (\n <span className=\"eth-domain-compliance-checklist__control-id\">\n {item.controlId}\n </span>\n ) : null}\n <strong>{labelContent}</strong>\n {item.description ? <p>{item.description}</p> : null}\n </div>\n </td>\n <td>\n <div className=\"eth-domain-compliance-checklist__cell-stack\">\n <strong>{item.owner ?? \"Unassigned\"}</strong>\n {item.dueDate ? (\n <span className=\"eth-domain-compliance-checklist__secondary\">\n Due {item.dueDate}\n </span>\n ) : null}\n </div>\n </td>\n <td>\n <div className=\"eth-domain-compliance-checklist__cell-stack\">\n {evidenceContent ? (\n item.evidenceHref ? (\n <a\n className=\"eth-domain-compliance-checklist__evidence-link\"\n href={item.evidenceHref}\n >\n {evidenceContent}\n </a>\n ) : (\n <strong>{evidenceContent}</strong>\n )\n ) : (\n <span className=\"eth-domain-compliance-checklist__secondary\">\n Evidence not linked\n </span>\n )}\n {item.updatedAt ? (\n <span className=\"eth-domain-compliance-checklist__secondary\">\n {item.updatedAt}\n </span>\n ) : null}\n </div>\n </td>\n <td>\n <div className=\"eth-domain-compliance-checklist__state\">\n <StatusDot status={itemStatus} label={statusLabel(itemStatus)} />\n {item.required ? (\n <span className=\"eth-domain-compliance-checklist__requirement\">\n Required\n </span>\n ) : null}\n </div>\n </td>\n </tr>\n );\n })}\n </tbody>\n </table>\n </div>\n ) : (\n <div className=\"eth-domain-compliance-checklist__empty\">\n No compliance controls configured.\n </div>\n )}\n {children}\n </Surface>\n );\n}\n\nfunction RiskMatrixActions({ actions }: { actions?: EthAction[] }) {\n if (!actions?.length) return null;\n\n return (\n <div className=\"eth-domain-risk-matrix__item-actions\">\n {actions.map((action) =>\n action.href ? (\n <LinkButton\n key={action.id}\n href={action.disabled ? undefined : action.href}\n intent={action.intent ?? \"ghost\"}\n density=\"compact\"\n aria-disabled={action.disabled ? true : undefined}\n tabIndex={action.disabled ? -1 : undefined}\n >\n {action.label}\n </LinkButton>\n ) : (\n <Button\n key={action.id}\n type=\"button\"\n intent={action.intent ?? \"ghost\"}\n density=\"compact\"\n disabled={action.disabled}\n onClick={action.onSelect}\n >\n {action.label}\n </Button>\n )\n )}\n </div>\n );\n}\n\nfunction RiskMatrixFact({\n label,\n value\n}: {\n label: React.ReactNode;\n value: React.ReactNode;\n}) {\n if (!hasDisplayValue(value)) return null;\n\n return (\n <div>\n <dt>{label}</dt>\n <dd>{value}</dd>\n </div>\n );\n}\n\nexport function RiskMatrix({\n title = \"Risk register\",\n description = \"Impact and probability register with mitigation ownership.\",\n status,\n severity,\n metadata,\n actions,\n footer,\n children,\n className,\n items = [],\n selectedItemId,\n view,\n reviewCadence,\n onViewChange,\n ...props\n}: RiskMatrixProps) {\n const matrixHeadingId = React.useId();\n const registerHeadingId = React.useId();\n const [internalView, setInternalView] = React.useState<RiskMatrixView>(\"matrix\");\n const currentView = view ?? internalView;\n const risks = items.map(resolveRiskMatrixItem).sort(compareRiskPriority);\n const priorityRisk = selectedItemId\n ? risks.find((item) => item.id === selectedItemId) ?? risks[0]\n : risks[0];\n const criticalCount = risks.filter((item) => item.resolvedSeverity === \"critical\").length;\n const highCount = risks.filter((item) => item.resolvedSeverity === \"high\").length;\n const mediumCount = risks.filter((item) => item.resolvedSeverity === \"medium\").length;\n const priorityStatus = priorityRisk\n ? priorityRisk.status ?? deriveRiskMatrixStatus([priorityRisk]) ?? \"active\"\n : \"active\";\n const computedMetadata =\n metadata ??\n [\n { label: \"Open risks\", value: risks.length },\n { label: \"Critical\", value: criticalCount },\n { label: \"High\", value: highCount },\n { label: \"Medium\", value: mediumCount }\n ];\n const changeView = (nextView: RiskMatrixView) => {\n if (view === undefined) setInternalView(nextView);\n onViewChange?.(nextView);\n };\n\n return (\n <Surface\n {...props}\n data-eth-component=\"RiskMatrix\"\n title={title}\n description={description}\n status={status ?? deriveRiskMatrixStatus(risks)}\n severity={severity ?? deriveRiskMatrixSurfaceSeverity(risks)}\n metadata={computedMetadata}\n actions={actions}\n footer={footer}\n className={[\"eth-domain-risk-matrix\", className].filter(Boolean).join(\" \")}\n >\n <div\n className=\"eth-domain-risk-matrix__toolbar\"\n role=\"group\"\n aria-label=\"Risk matrix controls\"\n >\n <div className=\"eth-domain-risk-matrix__view-switch\" role=\"group\" aria-label=\"Risk view\">\n <Button\n type=\"button\"\n intent={currentView === \"matrix\" ? \"secondary\" : \"ghost\"}\n density=\"compact\"\n aria-label=\"Matrix view\"\n aria-pressed={currentView === \"matrix\"}\n onClick={() => changeView(\"matrix\")}\n >\n Matrix\n </Button>\n <Button\n type=\"button\"\n intent={currentView === \"register\" ? \"secondary\" : \"ghost\"}\n density=\"compact\"\n aria-label=\"Register view\"\n aria-pressed={currentView === \"register\"}\n onClick={() => changeView(\"register\")}\n >\n Register\n </Button>\n </div>\n {reviewCadence ? (\n <span className=\"eth-domain-risk-matrix__cadence\">\n Review <strong>{reviewCadence}</strong>\n </span>\n ) : null}\n {criticalCount || highCount ? (\n <span className=\"eth-domain-risk-matrix__attention\">\n {criticalCount} critical / {highCount} high\n </span>\n ) : null}\n </div>\n\n {risks.length ? (\n <div className=\"eth-domain-risk-matrix__workspace\" data-view={currentView}>\n {currentView === \"matrix\" ? (\n <section\n className=\"eth-domain-risk-matrix__matrix-panel\"\n aria-labelledby={matrixHeadingId}\n >\n <div className=\"eth-domain-risk-matrix__panel-header\">\n <div>\n <span>Matrix</span>\n <h3 id={matrixHeadingId}>Impact x probability</h3>\n </div>\n <div\n className=\"eth-domain-risk-matrix__legend\"\n role=\"list\"\n aria-label=\"Risk severity legend\"\n >\n {([\"low\", \"medium\", \"high\", \"critical\"] as RiskMatrixSeverity[]).map(\n (riskSeverity) => (\n <span key={riskSeverity} data-severity={riskSeverity} role=\"listitem\">\n {riskImpactLabels[riskSeverity]}\n </span>\n )\n )}\n </div>\n </div>\n\n <div\n className=\"eth-domain-risk-matrix__grid\"\n role=\"grid\"\n aria-label=\"Impact probability risk matrix\"\n >\n <div\n className=\"eth-domain-risk-matrix__grid-row eth-domain-risk-matrix__grid-row--header\"\n role=\"row\"\n >\n <div className=\"eth-domain-risk-matrix__corner\" role=\"columnheader\">\n Impact\n </div>\n {riskProbabilityLevels.map((probability) => (\n <div\n key={probability}\n className=\"eth-domain-risk-matrix__axis\"\n role=\"columnheader\"\n >\n <span>Probability</span>\n <strong>{riskProbabilityLabels[probability]}</strong>\n </div>\n ))}\n </div>\n\n {riskImpactLevels.map((impact) => (\n <div key={impact} className=\"eth-domain-risk-matrix__grid-row\" role=\"row\">\n <div\n className=\"eth-domain-risk-matrix__axis eth-domain-risk-matrix__row-axis\"\n role=\"rowheader\"\n >\n <span>Impact</span>\n <strong>{riskImpactLabels[impact]}</strong>\n </div>\n {riskProbabilityLevels.map((probability) => {\n const cellRisks = risks.filter(\n (item) =>\n item.resolvedImpact === impact && item.resolvedProbability === probability\n );\n const cellSeverity =\n cellRisks[0]?.resolvedSeverity ??\n riskSeverityFromScore(impact, probability);\n\n return (\n <div\n key={`${impact}-${probability}`}\n className=\"eth-domain-risk-matrix__cell\"\n data-severity={cellSeverity}\n role=\"gridcell\"\n aria-label={`${riskImpactLabels[impact]} impact, ${riskProbabilityLabels[probability]} probability: ${riskCountLabel(cellRisks.length)}`}\n >\n {cellRisks.length ? (\n <div className=\"eth-domain-risk-matrix__cell-risks\" role=\"list\">\n {cellRisks.map((risk) => {\n const labelContent = risk.href ? (\n <a href={risk.href}>{risk.label}</a>\n ) : (\n risk.label\n );\n\n return (\n <article\n key={risk.id}\n className=\"eth-domain-risk-matrix__risk-card\"\n data-severity={risk.resolvedSeverity}\n role=\"listitem\"\n >\n <span className=\"eth-domain-risk-matrix__risk-score\">\n {risk.score ?? risk.resolvedScore}\n </span>\n <div className=\"eth-domain-risk-matrix__risk-card-main\">\n <strong>{labelContent}</strong>\n <div className=\"eth-domain-risk-matrix__risk-card-meta\">\n {risk.owner ? <span>{risk.owner}</span> : null}\n {risk.dueDate ? <span>{risk.dueDate}</span> : null}\n </div>\n </div>\n </article>\n );\n })}\n </div>\n ) : (\n <span className=\"eth-domain-risk-matrix__empty-cell\">No risks</span>\n )}\n </div>\n );\n })}\n </div>\n ))}\n </div>\n </section>\n ) : null}\n\n <aside className=\"eth-domain-risk-matrix__detail\" aria-label=\"Highest priority risk\">\n {priorityRisk ? (\n <>\n <div className=\"eth-domain-risk-matrix__panel-header\">\n <div>\n <span>Highest priority</span>\n <h3>{priorityRisk.label}</h3>\n </div>\n <StatusDot status={priorityStatus} label={statusLabel(priorityStatus)} />\n </div>\n {priorityRisk.description ? <p>{priorityRisk.description}</p> : null}\n <dl className=\"eth-domain-risk-matrix__facts\">\n <RiskMatrixFact\n label=\"Impact\"\n value={riskImpactLabels[priorityRisk.resolvedImpact]}\n />\n <RiskMatrixFact\n label=\"Probability\"\n value={riskProbabilityLabels[priorityRisk.resolvedProbability]}\n />\n <RiskMatrixFact label=\"Owner\" value={priorityRisk.owner} />\n <RiskMatrixFact label=\"Due\" value={priorityRisk.dueDate} />\n <RiskMatrixFact\n label=\"Score\"\n value={priorityRisk.score ?? priorityRisk.resolvedScore}\n />\n <RiskMatrixFact label=\"Review\" value={reviewCadence} />\n </dl>\n {priorityRisk.mitigation ? (\n <div className=\"eth-domain-risk-matrix__mitigation\">\n <span>Mitigation</span>\n <strong>{priorityRisk.mitigation}</strong>\n </div>\n ) : null}\n <RiskMatrixActions actions={priorityRisk.actions} />\n </>\n ) : (\n <p className=\"eth-domain-risk-matrix__empty\">No priority risk selected.</p>\n )}\n\n <section\n className=\"eth-domain-risk-matrix__register\"\n aria-labelledby={registerHeadingId}\n >\n <div className=\"eth-domain-risk-matrix__panel-header\">\n <div>\n <span>Register</span>\n <h3 id={registerHeadingId}>Mapped risks</h3>\n </div>\n <strong>{riskCountLabel(risks.length)}</strong>\n </div>\n <div className=\"eth-domain-risk-matrix__register-list\" role=\"list\">\n {risks.map((risk) => {\n const itemStatus = risk.status ?? deriveRiskMatrixStatus([risk]) ?? \"active\";\n return (\n <article\n key={risk.id}\n className=\"eth-domain-risk-matrix__register-item\"\n data-severity={risk.resolvedSeverity}\n role=\"listitem\"\n >\n <div>\n <strong>{risk.label}</strong>\n <span>\n {riskImpactLabels[risk.resolvedImpact]} /{\" \"}\n {riskProbabilityLabels[risk.resolvedProbability]}\n </span>\n </div>\n <StatusDot status={itemStatus} label={statusLabel(itemStatus)} />\n </article>\n );\n })}\n </div>\n </section>\n </aside>\n </div>\n ) : (\n <div className=\"eth-domain-risk-matrix__empty\">No risks mapped.</div>\n )}\n\n {children}\n </Surface>\n );\n}\n\nexport function InvoiceViewer({\n title = \"Invoice\",\n description,\n status = \"pending-approval\",\n items = [],\n metadata,\n actions,\n footer,\n children,\n className,\n customer,\n dueDate,\n terms,\n owner,\n subtotal,\n tax,\n total,\n amountDue,\n payments = [],\n ...props\n}: InvoiceViewerProps) {\n const computedMetadata =\n metadata ??\n [\n { label: \"Amount due\", value: amountDue ?? total },\n { label: \"Due date\", value: dueDate },\n { label: \"Terms\", value: terms },\n { label: \"Owner\", value: owner ?? customer }\n ].filter((item) => hasDisplayValue(item.value));\n const summaryRows: Array<{\n label: React.ReactNode;\n value: React.ReactNode;\n emphasis?: boolean;\n }> = [\n { label: \"Subtotal\", value: subtotal },\n { label: \"Tax\", value: tax },\n { label: \"Total\", value: total },\n { label: \"Amount due\", value: amountDue ?? total, emphasis: true }\n ].filter((item) => hasDisplayValue(item.value));\n\n return (\n <Surface\n {...props}\n data-eth-component=\"InvoiceViewer\"\n title={title}\n description={description}\n status={status}\n metadata={computedMetadata.length ? computedMetadata : undefined}\n actions={actions}\n footer={footer}\n className={[\"eth-domain-invoice-viewer\", className].filter(Boolean).join(\" \")}\n >\n <div className=\"eth-domain-invoice-viewer__body\">\n <section className=\"eth-domain-invoice-viewer__section\" aria-label=\"Invoice line items\">\n <div className=\"eth-domain-invoice-viewer__section-header\">\n <div>\n <span>Charges</span>\n <h3>Line items</h3>\n </div>\n <strong>\n {items.length} item{items.length === 1 ? \"\" : \"s\"}\n </strong>\n </div>\n\n {items.length ? (\n <div className=\"eth-domain-invoice-viewer__table-wrap\">\n <table className=\"eth-domain-invoice-viewer__table\">\n <caption className=\"eth-domain-invoice-viewer__caption\">Invoice line items</caption>\n <thead>\n <tr>\n <th scope=\"col\">Item</th>\n <th scope=\"col\">Qty</th>\n <th scope=\"col\">Rate</th>\n <th scope=\"col\">Amount</th>\n </tr>\n </thead>\n <tbody>\n {items.map((item) => {\n const itemStatus = item.status ?? \"not-started\";\n const labelContent = item.href ? (\n <a href={item.href}>{item.label}</a>\n ) : (\n item.label\n );\n\n return (\n <tr key={item.id} data-status={itemStatus}>\n <td>\n <div className=\"eth-domain-invoice-viewer__line-item\">\n <strong>{labelContent}</strong>\n {item.description ? <p>{item.description}</p> : null}\n {item.status ? (\n <StatusDot status={item.status} label={statusLabel(item.status)} />\n ) : null}\n </div>\n </td>\n <td>{item.quantity ?? \"1\"}</td>\n <td>{item.rate ?? \"-\"}</td>\n <td>{item.amount ?? item.meta ?? \"-\"}</td>\n </tr>\n );\n })}\n </tbody>\n </table>\n </div>\n ) : (\n <p className=\"eth-domain-invoice-viewer__empty\">No invoice line items available.</p>\n )}\n </section>\n\n <aside className=\"eth-domain-invoice-viewer__section\" aria-label=\"Payment summary\">\n <div className=\"eth-domain-invoice-viewer__section-header\">\n <div>\n <span>Payment</span>\n <h3>Summary</h3>\n </div>\n <StatusDot status={status} label={statusLabel(status)} />\n </div>\n\n {summaryRows.length ? (\n <dl className=\"eth-domain-invoice-viewer__totals\">\n {summaryRows.map((row, index) => (\n <div\n key={index}\n className={row.emphasis ? \"eth-domain-invoice-viewer__total\" : undefined}\n >\n <dt>{row.label}</dt>\n <dd>{row.value}</dd>\n </div>\n ))}\n </dl>\n ) : null}\n\n {payments.length ? (\n <ol className=\"eth-domain-invoice-viewer__payments\" aria-label=\"Payment milestones\">\n {payments.map((payment) => {\n const paymentStatus = payment.status ?? \"queued\";\n\n return (\n <li key={payment.id} data-status={paymentStatus}>\n <div className=\"eth-domain-invoice-viewer__payment-main\">\n <strong>{payment.label}</strong>\n {payment.dueDate || payment.description ? (\n <span>{payment.dueDate ?? payment.description}</span>\n ) : null}\n </div>\n {hasDisplayValue(payment.amount ?? payment.meta) ? (\n <span className=\"eth-domain-invoice-viewer__payment-amount\">\n {payment.amount ?? payment.meta}\n </span>\n ) : null}\n </li>\n );\n })}\n </ol>\n ) : null}\n </aside>\n </div>\n {children}\n </Surface>\n );\n}\n\nexport function KnowledgeBaseArticleViewer({\n title = \"Knowledge base article\",\n description,\n status = \"active\",\n metadata,\n actions,\n footer,\n children,\n className,\n body,\n sections,\n relatedArticles,\n citations = defaultKnowledgeBaseCitations,\n items,\n articleStatusLabel,\n ...props\n}: KnowledgeBaseArticleViewerProps) {\n const hasBody = hasKnowledgeBaseNode(body) || React.Children.count(children) > 0;\n const articleSections = sections ?? (hasBody ? [] : defaultKnowledgeBaseSections);\n const related = relatedArticles ?? items ?? defaultKnowledgeBaseRelatedArticles;\n const articleHeadingId = React.useId();\n const relatedHeadingId = React.useId();\n const citationsHeadingId = React.useId();\n\n return (\n <Surface\n {...props}\n data-eth-component=\"KnowledgeBaseArticleViewer\"\n title={title}\n description={description}\n status={status}\n metadata={metadata}\n actions={actions}\n footer={footer}\n className={[\"eth-domain-knowledge-base-viewer\", className].filter(Boolean).join(\" \")}\n >\n <div className=\"eth-domain-knowledge-base-viewer__workspace\">\n <article\n className=\"eth-domain-knowledge-base-viewer__article\"\n aria-labelledby={articleHeadingId}\n >\n <div className=\"eth-domain-knowledge-base-viewer__article-header\">\n <div>\n <span>Article body</span>\n <h3 id={articleHeadingId}>Guidance</h3>\n </div>\n <StatusDot\n status={status}\n label={articleStatusLabel ?? knowledgeBaseStatusLabel(status)}\n />\n </div>\n\n {hasBody ? (\n <div className=\"eth-domain-knowledge-base-viewer__body\">\n {renderKnowledgeBaseNode(body)}\n {children}\n </div>\n ) : null}\n\n {articleSections.length ? (\n <div className=\"eth-domain-knowledge-base-viewer__sections\">\n {articleSections.map((section) => (\n <section\n key={section.id}\n className=\"eth-domain-knowledge-base-viewer__section\"\n data-status={section.status}\n >\n <div className=\"eth-domain-knowledge-base-viewer__section-heading\">\n <h4>{section.title}</h4>\n {section.status ? (\n <StatusDot status={section.status} label={statusLabel(section.status)} />\n ) : null}\n </div>\n {renderKnowledgeBaseNode(section.body)}\n </section>\n ))}\n </div>\n ) : null}\n </article>\n\n <aside className=\"eth-domain-knowledge-base-viewer__rail\">\n <section\n className=\"eth-domain-knowledge-base-viewer__panel\"\n aria-labelledby={relatedHeadingId}\n >\n <div className=\"eth-domain-knowledge-base-viewer__panel-header\">\n <span>Knowledge graph</span>\n <h3 id={relatedHeadingId}>Related content</h3>\n </div>\n {related.length ? (\n <div className=\"eth-domain-knowledge-base-viewer__related-list\" role=\"list\">\n {related.map((item) => {\n const labelContent = item.href ? (\n <a href={item.href}>{item.label}</a>\n ) : (\n item.label\n );\n return (\n <article\n key={item.id}\n className=\"eth-domain-knowledge-base-viewer__related-item\"\n role=\"listitem\"\n >\n <div>\n <strong>{labelContent}</strong>\n {item.description ? <p>{item.description}</p> : null}\n </div>\n <div className=\"eth-domain-knowledge-base-viewer__item-meta\">\n {(item.type ?? item.meta) ? <span>{item.type ?? item.meta}</span> : null}\n {item.updatedAt ? <span>{item.updatedAt}</span> : null}\n {item.status ? (\n <StatusDot status={item.status} label={statusLabel(item.status)} />\n ) : null}\n </div>\n </article>\n );\n })}\n </div>\n ) : (\n <p className=\"eth-domain-knowledge-base-viewer__empty\">No related content linked.</p>\n )}\n </section>\n\n <section\n className=\"eth-domain-knowledge-base-viewer__panel\"\n aria-labelledby={citationsHeadingId}\n >\n <div className=\"eth-domain-knowledge-base-viewer__panel-header\">\n <span>Evidence</span>\n <h3 id={citationsHeadingId}>Citations</h3>\n </div>\n {citations.length ? (\n <ol className=\"eth-domain-knowledge-base-viewer__citations\">\n {citations.map((citation) => {\n const labelContent = citation.href ? (\n <a href={citation.href}>{citation.label}</a>\n ) : (\n citation.label\n );\n return (\n <li key={citation.id}>\n <div className=\"eth-domain-knowledge-base-viewer__citation-main\">\n <strong>{labelContent}</strong>\n {citation.source ? <span>{citation.source}</span> : null}\n {renderKnowledgeBaseNode(citation.excerpt)}\n </div>\n {citation.status ? (\n <StatusDot status={citation.status} label={statusLabel(citation.status)} />\n ) : null}\n </li>\n );\n })}\n </ol>\n ) : (\n <p className=\"eth-domain-knowledge-base-viewer__empty\">No citations attached.</p>\n )}\n </section>\n </aside>\n </div>\n </Surface>\n );\n}\n\nconst defaultDataImportSteps: DataImportWizardStep[] = [\n {\n id: \"upload\",\n label: \"Upload CSV\",\n description: \"File accepted and parsed into a preview set.\",\n status: \"completed\"\n },\n {\n id: \"map\",\n label: \"Map fields\",\n description: \"Match source columns to the destination object.\",\n status: \"in-progress\"\n },\n {\n id: \"validate\",\n label: \"Validate\",\n description: \"Run required field and duplicate checks.\",\n status: \"queued\"\n },\n {\n id: \"submit\",\n label: \"Submit\",\n description: \"Create records after validation passes.\",\n status: \"not-started\"\n }\n];\n\nfunction dataImportStatusFromSteps(\n steps: DataImportWizardStep[]\n): EthOperationalStatus | undefined {\n if (!steps.length) return undefined;\n if (steps.some((step) => step.status === \"blocked\" || step.status === \"failed\")) {\n return \"blocked\";\n }\n if (steps.every((step) => step.status === \"completed\" || step.status === \"succeeded\")) {\n return \"completed\";\n }\n if (\n steps.some(\n (step) =>\n step.status === \"in-progress\" || step.status === \"running\" || step.status === \"active\"\n )\n ) {\n return \"in-progress\";\n }\n if (steps.some((step) => step.status === \"queued\" || step.status === \"pending-approval\")) {\n return \"queued\";\n }\n return \"not-started\";\n}\n\nfunction isCompletedImportStep(status: EthOperationalStatus | undefined) {\n return status === \"completed\" || status === \"succeeded\" || status === \"synced\";\n}\n\nfunction isCurrentImportStep(status: EthOperationalStatus | undefined) {\n return status === \"in-progress\" || status === \"running\" || status === \"active\";\n}\n\nfunction currentImportStepIndex(steps: DataImportWizardStep[]) {\n const activeIndex = steps.findIndex((step) => isCurrentImportStep(step.status));\n if (activeIndex >= 0) return activeIndex;\n\n const nextIndex = steps.findIndex((step) => !isCompletedImportStep(step.status));\n return nextIndex >= 0 ? nextIndex : Math.max(steps.length - 1, 0);\n}\n\nexport function DataImportWizard({\n title = \"Data import\",\n description = \"Import, map, validate, and submit records.\",\n items = defaultDataImportSteps,\n metadata,\n status,\n actions,\n footer,\n children,\n className,\n fileName,\n sourceLabel,\n rowCount,\n columnCount,\n mappingCount,\n validationSummary,\n mappings = [],\n validationIssues = [],\n ...props\n}: DataImportWizardProps) {\n const currentIndex = currentImportStepIndex(items);\n const completeCount = items.filter((item) => isCompletedImportStep(item.status)).length;\n const computedMetadata =\n metadata ??\n [\n { label: \"File\", value: fileName },\n { label: \"Rows\", value: rowCount },\n { label: \"Columns\", value: columnCount },\n { label: \"Mapped\", value: mappingCount },\n { label: \"Validation\", value: validationSummary }\n ].filter((item) => hasDisplayValue(item.value));\n\n return (\n <Surface\n {...props}\n data-eth-component=\"DataImportWizard\"\n title={title}\n description={description}\n status={status ?? dataImportStatusFromSteps(items)}\n metadata={computedMetadata.length ? computedMetadata : undefined}\n actions={actions}\n footer={footer}\n className={[\"eth-domain-data-import-wizard\", className].filter(Boolean).join(\" \")}\n >\n <ol className=\"eth-domain-data-import-wizard__steps\" aria-label=\"Data import progress\">\n {items.map((step, index) => {\n const stepStatus = step.status ?? \"not-started\";\n\n return (\n <li\n key={step.id}\n aria-current={index === currentIndex ? \"step\" : undefined}\n className=\"eth-domain-data-import-wizard__step\"\n data-current={index === currentIndex ? \"true\" : undefined}\n data-status={stepStatus}\n >\n <span className=\"eth-domain-data-import-wizard__step-marker\" aria-hidden=\"true\">\n {index + 1}\n </span>\n <span className=\"eth-domain-data-import-wizard__step-copy\">\n <strong>{step.label}</strong>\n {step.description ? <span>{step.description}</span> : null}\n </span>\n <StatusDot status={stepStatus} label={statusLabel(stepStatus)} />\n </li>\n );\n })}\n </ol>\n\n <div className=\"eth-domain-data-import-wizard__workspace\">\n <section className=\"eth-domain-data-import-wizard__panel\" aria-label=\"Upload summary\">\n <div className=\"eth-domain-data-import-wizard__panel-header\">\n <span>Source</span>\n <strong>{fileName ?? \"No file selected\"}</strong>\n </div>\n <dl className=\"eth-domain-data-import-wizard__facts\">\n {hasDisplayValue(sourceLabel) ? (\n <div>\n <dt>Import type</dt>\n <dd>{sourceLabel}</dd>\n </div>\n ) : null}\n {hasDisplayValue(rowCount) ? (\n <div>\n <dt>Rows detected</dt>\n <dd>{rowCount}</dd>\n </div>\n ) : null}\n {hasDisplayValue(columnCount) ? (\n <div>\n <dt>Columns</dt>\n <dd>{columnCount}</dd>\n </div>\n ) : null}\n <div>\n <dt>Progress</dt>\n <dd>\n {items.length\n ? `${completeCount}/${items.length} steps complete`\n : \"No steps configured\"}\n </dd>\n </div>\n </dl>\n </section>\n\n {mappings.length ? (\n <section className=\"eth-domain-data-import-wizard__panel eth-domain-data-import-wizard__panel--wide\">\n <div className=\"eth-domain-data-import-wizard__panel-header\">\n <span>Field mapping</span>\n <strong>{mappingCount ?? `${mappings.length} fields`}</strong>\n </div>\n <div className=\"eth-domain-data-import-wizard__table-wrap\">\n <table className=\"eth-domain-data-import-wizard__table\">\n <caption>CSV fields mapped to destination properties</caption>\n <thead>\n <tr>\n <th scope=\"col\">Source field</th>\n <th scope=\"col\">Destination</th>\n <th scope=\"col\">Sample</th>\n <th scope=\"col\">State</th>\n </tr>\n </thead>\n <tbody>\n {mappings.map((mapping) => {\n const mappingStatus = mapping.status ?? \"not-started\";\n\n return (\n <tr key={mapping.id} data-status={mappingStatus}>\n <td>\n <strong>{mapping.sourceField}</strong>\n {mapping.required ? <span>Required</span> : null}\n </td>\n <td>{mapping.targetField}</td>\n <td>{mapping.sample ?? \"No sample\"}</td>\n <td>\n <StatusDot status={mappingStatus} label={statusLabel(mappingStatus)} />\n </td>\n </tr>\n );\n })}\n </tbody>\n </table>\n </div>\n </section>\n ) : null}\n\n {validationIssues.length || hasDisplayValue(validationSummary) ? (\n <section className=\"eth-domain-data-import-wizard__panel\">\n <div className=\"eth-domain-data-import-wizard__panel-header\">\n <span>Validation</span>\n <strong>{validationSummary ?? \"Ready to run\"}</strong>\n </div>\n {validationIssues.length ? (\n <ul className=\"eth-domain-data-import-wizard__issues\" aria-label=\"Validation issues\">\n {validationIssues.map((issue) => {\n const issueStatus = issue.status ?? \"warning\";\n\n return (\n <li key={issue.id} data-status={issueStatus}>\n <div>\n <strong>{issue.field}</strong>\n <span>{issue.message}</span>\n </div>\n {hasDisplayValue(issue.count) ? <span>{issue.count}</span> : null}\n </li>\n );\n })}\n </ul>\n ) : (\n <p className=\"eth-domain-data-import-wizard__empty-note\">\n No validation issues have been detected.\n </p>\n )}\n </section>\n ) : null}\n </div>\n {children}\n </Surface>\n );\n}\n\nconst defaultMappingTargetOptions = [\n { value: \"\", label: \"Select target field\", disabled: true },\n { value: \"contact.firstName\", label: \"Contact / First name\" },\n { value: \"contact.lastName\", label: \"Contact / Last name\" },\n { value: \"account.name\", label: \"Account / Name\" },\n { value: \"account.domain\", label: \"Account / Domain\" },\n { value: \"opportunity.amount\", label: \"Opportunity / Amount\" },\n { value: \"opportunity.closeDate\", label: \"Opportunity / Close date\" }\n];\n\nfunction parseMappingLabel(label: React.ReactNode) {\n const text = textFromNode(label).trim();\n const match = text.match(/^(.*?)\\s*(?:→|->)\\s*(.*?)$/);\n if (!match) return undefined;\n\n return {\n source: match[1].trim(),\n target: match[2].trim()\n };\n}\n\nfunction mappingSource(item: MappingConfigurationItem) {\n return item.sourceField ?? parseMappingLabel(item.label)?.source ?? item.label;\n}\n\nfunction mappingTarget(item: MappingConfigurationItem) {\n return item.targetField ?? parseMappingLabel(item.label)?.target;\n}\n\nfunction selectableValue(value: React.ReactNode) {\n if (typeof value === \"string\" || typeof value === \"number\") return String(value);\n return undefined;\n}\n\nfunction mappingItemStatus(item: MappingConfigurationItem) {\n return item.status ?? (hasDisplayValue(mappingTarget(item)) ? \"active\" : \"warning\");\n}\n\nfunction isMappingUnresolved(item: MappingConfigurationItem) {\n const status = mappingItemStatus(item);\n return (\n !hasDisplayValue(mappingTarget(item)) ||\n status === \"warning\" ||\n status === \"blocked\" ||\n status === \"failed\" ||\n status === \"approval-required\"\n );\n}\n\nfunction mappingWizardStatus(\n items: MappingConfigurationItem[],\n issues: MappingConfigurationIssue[]\n): EthOperationalStatus {\n if (!items.length) return \"not-started\";\n if (\n items.some((item) =>\n [\"blocked\", \"failed\", \"approval-required\"].includes(mappingItemStatus(item))\n ) ||\n issues.some((issue) =>\n [\"blocked\", \"failed\", \"approval-required\"].includes(issue.status ?? \"warning\")\n )\n ) {\n return \"blocked\";\n }\n if (items.some(isMappingUnresolved) || issues.length) return \"warning\";\n return \"active\";\n}\n\nfunction optionsForMapping(\n options: Array<{ value: string; label: string; disabled?: boolean }>,\n value: string | undefined\n) {\n if (!value || options.some((option) => option.value === value)) return options;\n return [...options, { value, label: value }];\n}\n\nexport function MappingConfigurationWizard({\n title = \"Mapping configuration\",\n description = \"Configure how source fields map into destination objects.\",\n items = [],\n sourceObject,\n targetObject,\n mappingCount,\n validationSummary,\n targetOptions = defaultMappingTargetOptions,\n validationIssues = [],\n metadata,\n status,\n actions,\n footer,\n children,\n className,\n onMappingChange,\n onAutoMap,\n onValidate,\n onSubmit,\n ...props\n}: MappingConfigurationWizardProps) {\n const [targetOverrides, setTargetOverrides] = React.useState<Record<string, string>>({});\n\n React.useEffect(() => {\n setTargetOverrides({});\n }, [items]);\n\n const resolvedMappingTarget = React.useCallback(\n (item: MappingConfigurationItem) => targetOverrides[item.id] ?? mappingTarget(item),\n [targetOverrides]\n );\n const resolvedMappingStatus = React.useCallback(\n (item: MappingConfigurationItem) =>\n item.status ?? (hasDisplayValue(resolvedMappingTarget(item)) ? \"active\" : \"warning\"),\n [resolvedMappingTarget]\n );\n const isResolvedMappingUnresolved = React.useCallback(\n (item: MappingConfigurationItem) => {\n const itemStatus = resolvedMappingStatus(item);\n\n return (\n !hasDisplayValue(resolvedMappingTarget(item)) ||\n itemStatus === \"warning\" ||\n itemStatus === \"blocked\" ||\n itemStatus === \"failed\" ||\n itemStatus === \"approval-required\"\n );\n },\n [resolvedMappingStatus, resolvedMappingTarget]\n );\n const mappedCount = items.filter((item) => hasDisplayValue(resolvedMappingTarget(item))).length;\n const unresolvedCount =\n items.filter(isResolvedMappingUnresolved).length + validationIssues.length;\n const resolvedItems = items.map((item) => ({\n ...item,\n targetField: resolvedMappingTarget(item),\n status: resolvedMappingStatus(item)\n }));\n const computedStatus = status ?? mappingWizardStatus(resolvedItems, validationIssues);\n const computedValidationSummary =\n validationSummary ??\n (unresolvedCount\n ? `${unresolvedCount} ${unresolvedCount === 1 ? \"issue\" : \"issues\"} to resolve`\n : \"Ready to apply\");\n const mappingProgressLabel =\n mappingCount ?? (items.length ? `${mappedCount}/${items.length}` : \"No fields\");\n const computedMetadata =\n metadata ??\n [\n { label: \"Source object\", value: sourceObject },\n { label: \"Target object\", value: targetObject },\n { label: \"Mapped\", value: mappingProgressLabel },\n { label: \"Validation\", value: computedValidationSummary }\n ].filter((item) => hasDisplayValue(item.value));\n const wizardSteps = [\n {\n id: \"source\",\n label: \"Source\",\n description: items.length ? `${items.length} fields detected` : \"No fields loaded\",\n status: items.length ? \"completed\" : \"not-started\"\n },\n {\n id: \"mapping\",\n label: \"Map\",\n description: items.length ? `${mappedCount}/${items.length} mapped` : \"Awaiting source\",\n status: !items.length\n ? \"not-started\"\n : mappedCount === items.length\n ? \"completed\"\n : \"in-progress\"\n },\n {\n id: \"validation\",\n label: \"Validate\",\n description: computedValidationSummary,\n status: computedStatus === \"blocked\" ? \"blocked\" : unresolvedCount ? \"warning\" : \"completed\"\n },\n {\n id: \"review\",\n label: \"Review\",\n description: unresolvedCount ? \"Resolve issues first\" : \"Ready for sync\",\n status: unresolvedCount ? \"not-started\" : \"queued\"\n }\n ] satisfies Array<{\n id: string;\n label: string;\n description: React.ReactNode;\n status: EthOperationalStatus;\n }>;\n const currentStepIndex = wizardSteps.findIndex((step) => !isCompletedImportStep(step.status));\n const currentIndex = currentStepIndex >= 0 ? currentStepIndex : wizardSteps.length - 1;\n\n return (\n <Surface\n {...props}\n data-eth-component=\"MappingConfigurationWizard\"\n title={title}\n description={description}\n status={computedStatus}\n metadata={computedMetadata.length ? computedMetadata : undefined}\n actions={actions}\n className={[\"eth-domain-mapping-config-wizard\", className].filter(Boolean).join(\" \")}\n >\n <ol className=\"eth-domain-mapping-config-wizard__steps\" aria-label=\"Mapping progress\">\n {wizardSteps.map((step, index) => (\n <li\n key={step.id}\n aria-current={index === currentIndex ? \"step\" : undefined}\n className=\"eth-domain-mapping-config-wizard__step\"\n data-current={index === currentIndex ? \"true\" : undefined}\n data-status={step.status}\n >\n <span className=\"eth-domain-mapping-config-wizard__step-marker\" aria-hidden=\"true\">\n {index + 1}\n </span>\n <span className=\"eth-domain-mapping-config-wizard__step-copy\">\n <strong>{step.label}</strong>\n <span>{step.description}</span>\n </span>\n <StatusDot status={step.status} label={statusLabel(step.status)} />\n </li>\n ))}\n </ol>\n\n <div className=\"eth-domain-mapping-config-wizard__workspace\">\n <aside className=\"eth-domain-mapping-config-wizard__panel\" aria-label=\"Object scope\">\n <div className=\"eth-domain-mapping-config-wizard__panel-header\">\n <span>Objects</span>\n <strong>\n {sourceObject ?? \"Source object\"}\n <span aria-hidden=\"true\"> -> </span>\n {targetObject ?? \"Target object\"}\n </strong>\n </div>\n <dl className=\"eth-domain-mapping-config-wizard__facts\">\n <div>\n <dt>Source object</dt>\n <dd>{sourceObject ?? \"Not selected\"}</dd>\n </div>\n <div>\n <dt>Target object</dt>\n <dd>{targetObject ?? \"Not selected\"}</dd>\n </div>\n <div>\n <dt>Mapped fields</dt>\n <dd>{mappingProgressLabel}</dd>\n </div>\n <div>\n <dt>Validation</dt>\n <dd>{computedValidationSummary}</dd>\n </div>\n </dl>\n </aside>\n\n <section\n className=\"eth-domain-mapping-config-wizard__panel eth-domain-mapping-config-wizard__panel--mapping\"\n aria-label=\"Field mappings\"\n >\n <div className=\"eth-domain-mapping-config-wizard__panel-header eth-domain-mapping-config-wizard__panel-header--inline\">\n <div>\n <span>Field mapping</span>\n <strong>\n {mappingCount ??\n (items.length ? `${mappedCount}/${items.length} mapped` : \"No fields\")}\n </strong>\n </div>\n <Button type=\"button\" intent=\"tertiary\" density=\"compact\" onClick={onAutoMap}>\n Auto-map\n </Button>\n </div>\n\n {items.length ? (\n <div className=\"eth-domain-mapping-config-wizard__table-wrap\">\n <table className=\"eth-domain-mapping-config-wizard__table\">\n <caption>Source fields mapped to destination fields</caption>\n <thead>\n <tr>\n <th scope=\"col\">Source field</th>\n <th scope=\"col\">Destination field</th>\n <th scope=\"col\">Transform</th>\n <th scope=\"col\">State</th>\n </tr>\n </thead>\n <tbody>\n {items.map((item) => {\n const source = mappingSource(item);\n const target = resolvedMappingTarget(item);\n const targetValue = selectableValue(target);\n const itemStatus = resolvedMappingStatus(item);\n const sourceLabel = textFromNode(source) || `mapping-${item.id}`;\n\n return (\n <tr key={item.id} data-status={itemStatus}>\n <td>\n <div className=\"eth-domain-mapping-config-wizard__field-stack\">\n <strong>{source}</strong>\n {hasDisplayValue(item.sourceType) ? (\n <span>{item.sourceType}</span>\n ) : null}\n {hasDisplayValue(item.sample) ? <p>Sample: {item.sample}</p> : null}\n </div>\n </td>\n <td>\n <div className=\"eth-domain-mapping-config-wizard__target-field\">\n <Select\n labelText={`Destination for ${sourceLabel}`}\n hideLabel\n density=\"compact\"\n value={targetValue ?? \"\"}\n options={optionsForMapping(targetOptions, targetValue)}\n invalid={!hasDisplayValue(target)}\n invalidText=\"Select a destination field.\"\n onChange={(event) => {\n const nextTarget = event.currentTarget.value;\n setTargetOverrides((current) => ({\n ...current,\n [item.id]: nextTarget\n }));\n onMappingChange?.(item.id, nextTarget);\n }}\n />\n {hasDisplayValue(item.targetType) ? (\n <span>{item.targetType}</span>\n ) : null}\n </div>\n </td>\n <td>\n <div className=\"eth-domain-mapping-config-wizard__field-stack\">\n <strong>{item.transform ?? \"Direct copy\"}</strong>\n {hasDisplayValue(item.description) ? <p>{item.description}</p> : null}\n </div>\n </td>\n <td>\n <div className=\"eth-domain-mapping-config-wizard__state\">\n <StatusDot status={itemStatus} label={statusLabel(itemStatus)} />\n <div className=\"eth-domain-mapping-config-wizard__badges\">\n {item.required ? <Badge severity=\"info\">Required</Badge> : null}\n {hasDisplayValue(item.confidence) ? (\n <Badge severity={itemStatus === \"warning\" ? \"warning\" : \"neutral\"}>\n {item.confidence}\n </Badge>\n ) : null}\n </div>\n </div>\n </td>\n </tr>\n );\n })}\n </tbody>\n </table>\n </div>\n ) : (\n <p className=\"eth-domain-mapping-config-wizard__empty\">No fields are ready to map.</p>\n )}\n </section>\n\n <aside className=\"eth-domain-mapping-config-wizard__panel\" aria-label=\"Validation issues\">\n <div className=\"eth-domain-mapping-config-wizard__panel-header\">\n <span>Validation</span>\n <strong>{computedValidationSummary}</strong>\n </div>\n {validationIssues.length ? (\n <ul\n className=\"eth-domain-mapping-config-wizard__issues\"\n aria-label=\"Mapping validation issues\"\n >\n {validationIssues.map((issue) => {\n const issueStatus = issue.status ?? \"warning\";\n\n return (\n <li key={issue.id} data-status={issueStatus}>\n <div>\n <strong>{issue.field}</strong>\n <span>{issue.message}</span>\n </div>\n {hasDisplayValue(issue.count) ? <span>{issue.count}</span> : null}\n </li>\n );\n })}\n </ul>\n ) : (\n <p className=\"eth-domain-mapping-config-wizard__empty-note\">\n No mapping validation issues.\n </p>\n )}\n </aside>\n </div>\n\n {children}\n\n <footer className=\"eth-domain-mapping-config-wizard__footer\">\n {footer ?? (\n <>\n <span>{computedValidationSummary}</span>\n <div className=\"eth-domain-mapping-config-wizard__footer-actions\">\n <Button type=\"button\" intent=\"ghost\" density=\"compact\">\n Back\n </Button>\n <Button type=\"button\" intent=\"secondary\" density=\"compact\" onClick={onValidate}>\n Validate\n </Button>\n <Button\n type=\"button\"\n intent=\"primary\"\n density=\"compact\"\n disabled={Boolean(unresolvedCount)}\n onClick={onSubmit}\n >\n Apply mapping\n </Button>\n </div>\n </>\n )}\n </footer>\n </Surface>\n );\n}\n\nexport function ReportBuilder({\n title = \"Report builder\",\n description,\n status,\n metadata,\n actions,\n footer,\n children,\n className,\n items = [],\n formatLabel = \"PDF / CSV\",\n owner,\n updatedAt,\n onAddSection,\n onExportPdf,\n onExportCsv,\n ...props\n}: ReportBuilderProps) {\n const sectionsHeadingId = React.useId();\n const previewHeadingId = React.useId();\n const includedSections = items.filter((item) => isReportSectionIncluded(item.status));\n const attentionCount = items.filter((item) => needsReportSectionAttention(item.status)).length;\n const computedStatus = status ?? deriveReportBuilderStatus(items);\n const readinessLabel = reportBuilderReadinessLabel(computedStatus, attentionCount);\n const computedMetadata =\n metadata ??\n [\n {\n label: \"Sections\",\n value: items.length\n ? `${items.length} ${items.length === 1 ? \"section\" : \"sections\"}`\n : \"No sections\"\n },\n {\n label: \"Included\",\n value: items.length ? `${includedSections.length}/${items.length}` : \"0/0\"\n },\n { label: \"Readiness\", value: readinessLabel },\n { label: \"Export\", value: formatLabel }\n ].filter((item) => hasDisplayValue(item.value));\n const currentSectionIndex = items.findIndex(\n (item) => item.status === \"in-progress\" || item.status === \"running\"\n );\n const currentIndex = currentSectionIndex >= 0 ? currentSectionIndex : 0;\n const exportSummary = items.length\n ? `${includedSections.length}/${items.length} sections included`\n : \"No sections selected\";\n\n return (\n <Surface\n {...props}\n data-eth-component=\"ReportBuilder\"\n title={title}\n description={description}\n status={computedStatus}\n metadata={computedMetadata.length ? computedMetadata : undefined}\n actions={actions}\n footer={footer}\n className={[\"eth-domain-report-builder\", className].filter(Boolean).join(\" \")}\n >\n <div className=\"eth-domain-report-builder__workspace\">\n <section\n className=\"eth-domain-report-builder__sections\"\n aria-labelledby={sectionsHeadingId}\n >\n <div className=\"eth-domain-report-builder__panel-header eth-domain-report-builder__panel-header--inline\">\n <div>\n <span>Composition</span>\n <h3 id={sectionsHeadingId}>Report sections</h3>\n </div>\n <Button\n type=\"button\"\n intent=\"tertiary\"\n density=\"compact\"\n icon={<PlusIcon size={16} />}\n onClick={onAddSection}\n >\n Add section\n </Button>\n </div>\n\n {items.length ? (\n <ol className=\"eth-domain-report-builder__section-list\" aria-label=\"Report sections\">\n {items.map((item, index) => {\n const itemStatus = item.status ?? \"not-started\";\n const labelContent = item.href ? <a href={item.href}>{item.label}</a> : item.label;\n const meta = reportSectionMeta(item, index);\n\n return (\n <li\n key={item.id}\n aria-current={index === currentIndex ? \"step\" : undefined}\n className=\"eth-domain-report-builder__section-item\"\n data-current={index === currentIndex ? \"true\" : undefined}\n data-status={itemStatus}\n >\n <span className=\"eth-domain-report-builder__section-index\" aria-hidden=\"true\">\n {index + 1}\n </span>\n <div className=\"eth-domain-report-builder__section-main\">\n <strong>{labelContent}</strong>\n {item.description ? <p>{item.description}</p> : null}\n {hasDisplayValue(meta) ? (\n <span className=\"eth-domain-report-builder__section-meta\">{meta}</span>\n ) : null}\n </div>\n <div className=\"eth-domain-report-builder__section-state\">\n <StatusDot status={itemStatus} label={statusLabel(itemStatus)} />\n {item.required ? <Badge severity=\"info\">Required</Badge> : null}\n </div>\n </li>\n );\n })}\n </ol>\n ) : (\n <p className=\"eth-domain-report-builder__empty\">No report sections configured.</p>\n )}\n </section>\n\n <section className=\"eth-domain-report-builder__preview\" aria-label=\"Report preview\">\n <div className=\"eth-domain-report-builder__panel-header eth-domain-report-builder__panel-header--inline\">\n <div>\n <span>Preview</span>\n <h3 id={previewHeadingId}>{title}</h3>\n </div>\n <StatusDot status={computedStatus} label={statusLabel(computedStatus)} />\n </div>\n\n <div\n className=\"eth-domain-report-builder__preview-page\"\n aria-labelledby={previewHeadingId}\n >\n <span className=\"eth-domain-report-builder__preview-kicker\">Draft report</span>\n <strong className=\"eth-domain-report-builder__preview-title\">{title}</strong>\n <div className=\"eth-domain-report-builder__preview-meta\">\n {hasDisplayValue(owner) ? <span>Owner: {owner}</span> : null}\n {hasDisplayValue(updatedAt) ? <span>Updated: {updatedAt}</span> : null}\n <span>{formatLabel}</span>\n </div>\n {includedSections.length ? (\n <div className=\"eth-domain-report-builder__preview-lines\">\n {includedSections.slice(0, 4).map((item, index) => (\n <div key={item.id} className=\"eth-domain-report-builder__preview-line\">\n <span>{item.label}</span>\n <span>{reportSectionMeta(item, index)}</span>\n </div>\n ))}\n </div>\n ) : (\n <p className=\"eth-domain-report-builder__empty-note\">\n Select at least one section to generate a preview.\n </p>\n )}\n </div>\n\n <div className=\"eth-domain-report-builder__export-bar\" aria-label=\"Export actions\">\n <span>{exportSummary}</span>\n <div className=\"eth-domain-report-builder__export-actions\">\n <Button\n type=\"button\"\n intent=\"primary\"\n density=\"compact\"\n icon={<DownloadIcon size={16} />}\n disabled={!includedSections.length}\n onClick={onExportPdf}\n >\n Export PDF\n </Button>\n <Button\n type=\"button\"\n intent=\"secondary\"\n density=\"compact\"\n icon={<TableIcon size={16} />}\n disabled={!includedSections.length}\n onClick={onExportCsv}\n >\n Export CSV\n </Button>\n </div>\n </div>\n </section>\n </div>\n\n {children}\n </Surface>\n );\n}\n\nexport function ApprovalWorkflowEditor({\n title = \"Approval workflow\",\n description = \"Configure approval routing, ownership, and conditional gates.\",\n steps,\n approverOptions = defaultApproverOptions,\n mode,\n onChange,\n onModeChange,\n className,\n status,\n ...props\n}: ApprovalWorkflowEditorProps) {\n const [internalSteps, setInternalSteps] = React.useState<ApprovalWorkflowStep[]>(() =>\n defaultApprovalSteps.map((step) => ({ ...step }))\n );\n const [internalMode, setInternalMode] = React.useState<ApprovalWorkflowMode>(\"sequential\");\n const currentSteps = steps ?? internalSteps;\n const currentMode = mode ?? internalMode;\n const missingApproverCount = currentSteps.filter((step) => !step.approver).length;\n const requiredCount = currentSteps.filter((step) => step.required).length;\n const readyCount = currentSteps.length - missingApproverCount;\n const validationMessage = missingApproverCount\n ? `${missingApproverCount} approval ${missingApproverCount === 1 ? \"step needs\" : \"steps need\"} an approver.`\n : \"All approval steps have owners and can be simulated.\";\n\n const commitSteps = (nextSteps: ApprovalWorkflowStep[]) => {\n if (!steps) setInternalSteps(nextSteps);\n onChange?.(nextSteps);\n };\n\n const updateStep = (index: number, next: ApprovalWorkflowStep) => {\n const nextSteps = [...currentSteps];\n nextSteps[index] = next;\n commitSteps(nextSteps);\n };\n\n const addStep = () => {\n commitSteps([\n ...currentSteps,\n {\n id: nextApprovalStepId(currentSteps),\n label: \"Approval step\",\n approver: \"\",\n condition: \"Define routing condition\",\n required: true,\n status: \"queued\"\n }\n ]);\n };\n\n const removeStep = (id: string) => {\n commitSteps(currentSteps.filter((step) => step.id !== id));\n };\n\n const changeMode = (nextMode: ApprovalWorkflowMode) => {\n if (!mode) setInternalMode(nextMode);\n onModeChange?.(nextMode);\n };\n\n return (\n <Surface\n {...props}\n data-eth-component=\"ApprovalWorkflowEditor\"\n title={title}\n description={description}\n status={status ?? (missingApproverCount ? \"pending-approval\" : \"active\")}\n metadata={[\n { label: \"Steps\", value: currentSteps.length },\n { label: \"Required gates\", value: requiredCount },\n { label: \"Ready\", value: `${readyCount}/${currentSteps.length || 0}` }\n ]}\n className={`eth-domain-approval-workflow-editor ${className ?? \"\"}`}\n >\n <div className=\"eth-domain-approval-workflow-editor__settings\">\n <Select\n labelText=\"Routing mode\"\n density=\"compact\"\n value={currentMode}\n options={modeOptions}\n onChange={(event) => changeMode(event.currentTarget.value as ApprovalWorkflowMode)}\n />\n <div className=\"eth-domain-approval-workflow-editor__validation\" role=\"status\">\n <span>Validation</span>\n <strong>{validationMessage}</strong>\n </div>\n </div>\n\n {currentSteps.length ? (\n <>\n <div className=\"eth-domain-approval-workflow-editor__route\" aria-label=\"Approval route\">\n {currentSteps.map((step, index) => (\n <React.Fragment key={step.id}>\n <span className=\"eth-domain-approval-workflow-editor__route-node\">\n <strong>{index + 1}</strong>\n <span>{step.label}</span>\n </span>\n {index < currentSteps.length - 1 ? (\n <span\n className=\"eth-domain-approval-workflow-editor__route-arrow\"\n aria-hidden=\"true\"\n >\n ->\n </span>\n ) : null}\n </React.Fragment>\n ))}\n </div>\n\n <ol className=\"eth-domain-approval-workflow-editor__steps\">\n {currentSteps.map((step, index) => (\n <li key={step.id} className=\"eth-domain-approval-workflow-editor__step\">\n <div className=\"eth-domain-approval-workflow-editor__step-index\" aria-hidden=\"true\">\n {index + 1}\n </div>\n <div className=\"eth-domain-approval-workflow-editor__step-main\">\n <div className=\"eth-domain-approval-workflow-editor__step-header\">\n <div>\n <span>Gate {index + 1}</span>\n <strong>{formatApprovalStatus(step.status, step.required)}</strong>\n </div>\n <Button\n type=\"button\"\n intent=\"ghost\"\n density=\"compact\"\n disabled={currentSteps.length <= 1}\n onClick={() => removeStep(step.id)}\n >\n Remove\n </Button>\n </div>\n <div className=\"eth-domain-approval-workflow-editor__fields\">\n <TextInput\n labelText=\"Step name\"\n density=\"compact\"\n value={step.label}\n onChange={(event) =>\n updateStep(index, { ...step, label: event.currentTarget.value })\n }\n />\n <Select\n labelText=\"Approver\"\n density=\"compact\"\n value={step.approver ?? \"\"}\n options={approverOptions}\n invalid={!step.approver}\n invalidText=\"Choose an approver.\"\n onChange={(event) =>\n updateStep(index, { ...step, approver: event.currentTarget.value })\n }\n />\n <TextInput\n labelText=\"Condition\"\n density=\"compact\"\n value={step.condition ?? \"\"}\n onChange={(event) =>\n updateStep(index, { ...step, condition: event.currentTarget.value })\n }\n />\n </div>\n <div className=\"eth-domain-approval-workflow-editor__step-footer\">\n <Checkbox\n label=\"Required gate\"\n checked={Boolean(step.required)}\n onChange={(event) =>\n updateStep(index, { ...step, required: event.currentTarget.checked })\n }\n />\n <span>Escalates to workflow owner when overdue by 24h.</span>\n </div>\n </div>\n </li>\n ))}\n </ol>\n </>\n ) : (\n <div className=\"eth-domain-approval-workflow-editor__empty\">\n No approval steps configured.\n </div>\n )}\n\n <div className=\"eth-domain-approval-workflow-editor__footer\">\n <Button type=\"button\" intent=\"secondary\" density=\"compact\" onClick={addStep}>\n Add approval\n </Button>\n <Button\n type=\"button\"\n intent=\"tertiary\"\n density=\"compact\"\n disabled={Boolean(missingApproverCount)}\n >\n Simulate route\n </Button>\n </div>\n </Surface>\n );\n}\n\nexport function ProcessDesigner({\n title = \"Business process\",\n description = \"Design, validate, and inspect a multi-step process.\",\n items,\n connections,\n validationIssues: validationIssuesProp,\n selectedItemId,\n metadata,\n actions,\n footer,\n children,\n className,\n status,\n onAddStep,\n onValidate,\n ...props\n}: ProcessDesignerProps) {\n const canvasTitleId = React.useId();\n const graphTitleId = React.useId();\n const graphDescriptionId = React.useId();\n const markerId = React.useId().replace(/:/g, \"\");\n const panelTitleId = React.useId();\n const processItems = items ?? defaultProcessItems;\n const validationIssues =\n validationIssuesProp ?? (items ? [] : defaultProcessValidationIssues);\n const processConnections =\n connections ?? (items ? sequentialProcessConnections(processItems) : defaultProcessConnections);\n const titleText = textFromNode(title).trim() || \"Business process\";\n const [internalSelectedId, setInternalSelectedId] = React.useState<string | undefined>(\n selectedItemId ?? processItems[0]?.id\n );\n\n React.useEffect(() => {\n if (selectedItemId) {\n setInternalSelectedId(selectedItemId);\n return;\n }\n\n setInternalSelectedId((current) =>\n processItems.some((item) => item.id === current) ? current : processItems[0]?.id\n );\n }, [processItems, selectedItemId]);\n\n const activeItem =\n processItems.find((item) => item.id === (selectedItemId ?? internalSelectedId)) ??\n processItems[0];\n const completedCount = processItems.filter((item) => isCompletedProcessStep(item.status)).length;\n const decisionCount = processItems.filter(\n (item, index) => processStepKind(item, index, processItems.length) === \"decision\"\n ).length;\n const processStatus = status ?? deriveProcessStatus(processItems, validationIssues);\n const validationLabel = validationIssues.length\n ? `${validationIssues.length} open ${validationIssues.length === 1 ? \"issue\" : \"issues\"}`\n : \"No open issues\";\n\n const selectNode = (id: string) => {\n if (!selectedItemId) setInternalSelectedId(id);\n };\n\n return (\n <Surface\n {...props}\n data-eth-component=\"ProcessDesigner\"\n title={title}\n description={description}\n status={processStatus}\n metadata={\n metadata ?? [\n { label: \"Steps\", value: processItems.length },\n { label: \"Completed\", value: `${completedCount}/${processItems.length || 0}` },\n { label: \"Branches\", value: decisionCount },\n { label: \"Validation\", value: validationLabel }\n ]\n }\n actions={actions}\n footer={\n footer ?? (\n <div className=\"eth-domain-process-designer__footer\">\n <span>Draft process: {titleText}</span>\n <span>Last validated 12 minutes ago</span>\n </div>\n )\n }\n className={`eth-domain-process-designer ${className ?? \"\"}`}\n >\n <div className=\"eth-domain-process-designer__workspace\">\n <section\n className=\"eth-domain-process-designer__canvas-shell\"\n aria-labelledby={canvasTitleId}\n >\n <div className=\"eth-domain-process-designer__toolbar\">\n <div>\n <span>Canvas</span>\n <strong id={canvasTitleId}>\n {processItems.length ? titleText : \"No workflow steps\"}\n </strong>\n </div>\n <div className=\"eth-domain-process-designer__toolbar-actions\">\n {processStatus ? <StatusDot status={processStatus} label={validationLabel} /> : null}\n <Button type=\"button\" intent=\"secondary\" density=\"compact\" onClick={onAddStep}>\n Add step\n </Button>\n <Button type=\"button\" intent=\"tertiary\" density=\"compact\" onClick={onValidate}>\n Validate\n </Button>\n </div>\n </div>\n\n {processItems.length ? (\n <div className=\"eth-domain-process-designer__canvas\">\n <svg\n viewBox=\"0 0 920 340\"\n role=\"group\"\n aria-labelledby={graphTitleId}\n aria-describedby={graphDescriptionId}\n >\n <title id={graphTitleId}>Business process graph</title>\n <desc id={graphDescriptionId}>\n Process graph with {processItems.length} steps and {processConnections.length}{\" \"}\n connections.\n </desc>\n <defs>\n <marker\n id={markerId}\n viewBox=\"0 0 10 10\"\n refX=\"8\"\n refY=\"5\"\n markerWidth=\"6\"\n markerHeight=\"6\"\n orient=\"auto-start-reverse\"\n >\n <path d=\"M 0 0 L 10 5 L 0 10 z\" />\n </marker>\n </defs>\n\n {processConnections.map((connection, index) => {\n const fromIndex = processItems.findIndex((item) => item.id === connection.from);\n const toIndex = processItems.findIndex((item) => item.id === connection.to);\n const from = processItems[fromIndex];\n const to = processItems[toIndex];\n if (!from || !to) return null;\n\n const fromPoint = processNodePoint(from, fromIndex);\n const toPoint = processNodePoint(to, toIndex);\n const midX = (fromPoint.x + toPoint.x) / 2;\n const midY = (fromPoint.y + toPoint.y) / 2;\n const label = textFromNode(connection.label).trim();\n\n return (\n <g\n key={`${connection.from}-${connection.to}-${index}`}\n className=\"eth-domain-process-designer__edge\"\n data-status={connection.status}\n >\n <line\n x1={fromPoint.x}\n y1={fromPoint.y}\n x2={toPoint.x}\n y2={toPoint.y}\n markerEnd={`url(#${markerId})`}\n />\n {label ? (\n <text x={midX} y={midY - 10} textAnchor=\"middle\">\n {label}\n </text>\n ) : null}\n </g>\n );\n })}\n\n {processItems.map((item, index) => {\n const point = processNodePoint(item, index);\n const kind = processStepKind(item, index, processItems.length);\n const selected = activeItem?.id === item.id;\n const lines = graphLabelLines(item.label, item.id);\n\n return (\n <g\n key={item.id}\n className=\"eth-domain-process-designer__node\"\n data-kind={kind}\n data-status={item.status}\n data-selected={selected ? \"true\" : undefined}\n transform={`translate(${point.x}, ${point.y})`}\n role=\"button\"\n tabIndex={0}\n aria-label={`${textFromNode(item.label) || item.id}, ${statusLabel(\n item.status ?? \"queued\"\n )}`}\n onClick={() => selectNode(item.id)}\n onKeyDown={(event) => {\n if (event.key === \"Enter\" || event.key === \" \") {\n event.preventDefault();\n selectNode(item.id);\n }\n }}\n >\n {kind === \"decision\" ? (\n <polygon points=\"0,-44 78,0 0,44 -78,0\" />\n ) : (\n <rect x=\"-72\" y=\"-36\" width=\"144\" height=\"72\" rx=\"0\" />\n )}\n <circle\n className=\"eth-domain-process-designer__node-status\"\n cx={kind === \"decision\" ? -44 : -52}\n cy={kind === \"decision\" ? -18 : -18}\n r=\"5\"\n />\n <text textAnchor=\"middle\">\n {lines.map((line, lineIndex) => (\n <tspan\n key={`${line}-${lineIndex}`}\n x=\"0\"\n dy={\n lineIndex === 0\n ? lines.length > 1\n ? \"-0.35em\"\n : \"0.35em\"\n : \"1.2em\"\n }\n >\n {line}\n </tspan>\n ))}\n </text>\n </g>\n );\n })}\n </svg>\n </div>\n ) : (\n <div className=\"eth-domain-process-designer__empty\">No process steps configured.</div>\n )}\n </section>\n\n <aside className=\"eth-domain-process-designer__inspector\" aria-labelledby={panelTitleId}>\n <div className=\"eth-domain-process-designer__panel-header\">\n <span>Step properties</span>\n <h3 id={panelTitleId}>{activeItem ? activeItem.label : \"No step selected\"}</h3>\n </div>\n {activeItem ? (\n <>\n <StatusDot\n status={activeItem.status ?? \"queued\"}\n label={statusLabel(activeItem.status ?? \"queued\")}\n />\n {activeItem.description ? (\n <p className=\"eth-domain-process-designer__description\">\n {activeItem.description}\n </p>\n ) : null}\n <dl className=\"eth-domain-process-designer__facts\">\n <div>\n <dt>Owner</dt>\n <dd>{activeItem.owner ?? \"Unassigned\"}</dd>\n </div>\n <div>\n <dt>Lane</dt>\n <dd>{activeItem.lane ?? \"Default lane\"}</dd>\n </div>\n <div>\n <dt>SLA</dt>\n <dd>{activeItem.duration ?? activeItem.meta ?? \"Not set\"}</dd>\n </div>\n </dl>\n </>\n ) : (\n <p className=\"eth-domain-process-designer__description\">\n No selected step.\n </p>\n )}\n\n <section className=\"eth-domain-process-designer__validation\" aria-label=\"Validation\">\n <div className=\"eth-domain-process-designer__panel-header\">\n <span>Validation</span>\n <strong>{validationLabel}</strong>\n </div>\n {validationIssues.length ? (\n <ul>\n {validationIssues.map((issue) => (\n <li key={issue.id} data-status={issue.status ?? \"warning\"}>\n <StatusDot\n status={issue.status ?? \"warning\"}\n label={statusLabel(issue.status ?? \"warning\")}\n />\n <div>\n {issue.target ? <strong>{issue.target}</strong> : null}\n <span>{issue.message}</span>\n </div>\n </li>\n ))}\n </ul>\n ) : (\n <p className=\"eth-domain-process-designer__empty-note\">\n No validation issues detected.\n </p>\n )}\n </section>\n </aside>\n </div>\n\n {children}\n </Surface>\n );\n}\n\nexport const SalesPipelineBoard = createSurfaceComponent(\"SalesPipelineBoard\");\nexport const ContractReviewPanel = createSurfaceComponent(\"ContractReviewPanel\");\nexport const RuleSimulationPanel = createSurfaceComponent(\"RuleSimulationPanel\");\n\nexport type SalesPipelineBoardProps = SurfaceComponentProps;\nexport type ContractReviewPanelProps = SurfaceComponentProps;\nexport type RuleSimulationPanelProps = SurfaceComponentProps;\n\nexport const DomainWidgetsComponentNames = [\n \"CRMContactPanel\",\n \"SalesPipelineBoard\",\n \"SupportTicketQueue\",\n \"KnowledgeBaseArticleViewer\",\n \"InventoryTable\",\n \"OrderManagementPanel\",\n \"InvoiceViewer\",\n \"ContractReviewPanel\",\n \"ComplianceChecklist\",\n \"RiskMatrix\",\n \"ApprovalWorkflowEditor\",\n \"DataImportWizard\",\n \"MappingConfigurationWizard\",\n \"ReportBuilder\",\n \"ProcessDesigner\",\n \"RuleSimulationPanel\"\n] as const;\nexport type DomainWidgetsComponentName = (typeof DomainWidgetsComponentNames)[number];\n"],"mappings":"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","names":[]}
|