@adoptai/genui-components 0.1.32
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 +56 -0
- package/dist/builders/BuilderForm.d.ts +25 -0
- package/dist/builders/BuilderForm.d.ts.map +1 -0
- package/dist/builders/BuilderRecap.d.ts +12 -0
- package/dist/builders/BuilderRecap.d.ts.map +1 -0
- package/dist/builders/ContextSlot.d.ts +6 -0
- package/dist/builders/ContextSlot.d.ts.map +1 -0
- package/dist/builders/EscalationCard.d.ts +12 -0
- package/dist/builders/EscalationCard.d.ts.map +1 -0
- package/dist/builders/FieldRenderer.d.ts +12 -0
- package/dist/builders/FieldRenderer.d.ts.map +1 -0
- package/dist/builders/FormBuilder.d.ts +13 -0
- package/dist/builders/FormBuilder.d.ts.map +1 -0
- package/dist/builders/StepperBuilder.d.ts +20 -0
- package/dist/builders/StepperBuilder.d.ts.map +1 -0
- package/dist/builders/fields.d.ts +27 -0
- package/dist/builders/fields.d.ts.map +1 -0
- package/dist/builders/hooks.d.ts +22 -0
- package/dist/builders/hooks.d.ts.map +1 -0
- package/dist/builders/index.d.ts +20 -0
- package/dist/builders/index.d.ts.map +1 -0
- package/dist/builders/resolver.d.ts +10 -0
- package/dist/builders/resolver.d.ts.map +1 -0
- package/dist/builders/schemas.d.ts +130 -0
- package/dist/builders/schemas.d.ts.map +1 -0
- package/dist/builders/validateBuilder.d.ts +10 -0
- package/dist/builders/validateBuilder.d.ts.map +1 -0
- package/dist/composites/aging-report/resolver.cjs +339 -0
- package/dist/composites/aging-report/resolver.cjs.map +1 -0
- package/dist/composites/aging-report/resolver.d.ts +3 -0
- package/dist/composites/aging-report/resolver.d.ts.map +1 -0
- package/dist/composites/aging-report/resolver.js +337 -0
- package/dist/composites/aging-report/resolver.js.map +1 -0
- package/dist/composites/alert/resolver.cjs +510 -0
- package/dist/composites/alert/resolver.cjs.map +1 -0
- package/dist/composites/alert/resolver.d.ts +3 -0
- package/dist/composites/alert/resolver.d.ts.map +1 -0
- package/dist/composites/alert/resolver.js +508 -0
- package/dist/composites/alert/resolver.js.map +1 -0
- package/dist/composites/allocation-donut/resolver.cjs +363 -0
- package/dist/composites/allocation-donut/resolver.cjs.map +1 -0
- package/dist/composites/allocation-donut/resolver.d.ts +3 -0
- package/dist/composites/allocation-donut/resolver.d.ts.map +1 -0
- package/dist/composites/allocation-donut/resolver.js +361 -0
- package/dist/composites/allocation-donut/resolver.js.map +1 -0
- package/dist/composites/amortization-table/resolver.cjs +692 -0
- package/dist/composites/amortization-table/resolver.cjs.map +1 -0
- package/dist/composites/amortization-table/resolver.d.ts +3 -0
- package/dist/composites/amortization-table/resolver.d.ts.map +1 -0
- package/dist/composites/amortization-table/resolver.js +690 -0
- package/dist/composites/amortization-table/resolver.js.map +1 -0
- package/dist/composites/area-chart/resolver.cjs +334 -0
- package/dist/composites/area-chart/resolver.cjs.map +1 -0
- package/dist/composites/area-chart/resolver.d.ts +3 -0
- package/dist/composites/area-chart/resolver.d.ts.map +1 -0
- package/dist/composites/area-chart/resolver.js +332 -0
- package/dist/composites/area-chart/resolver.js.map +1 -0
- package/dist/composites/audit-trail/resolver.cjs +564 -0
- package/dist/composites/audit-trail/resolver.cjs.map +1 -0
- package/dist/composites/audit-trail/resolver.d.ts +3 -0
- package/dist/composites/audit-trail/resolver.d.ts.map +1 -0
- package/dist/composites/audit-trail/resolver.js +562 -0
- package/dist/composites/audit-trail/resolver.js.map +1 -0
- package/dist/composites/balance-sheet/resolver.cjs +475 -0
- package/dist/composites/balance-sheet/resolver.cjs.map +1 -0
- package/dist/composites/balance-sheet/resolver.d.ts +3 -0
- package/dist/composites/balance-sheet/resolver.d.ts.map +1 -0
- package/dist/composites/balance-sheet/resolver.js +469 -0
- package/dist/composites/balance-sheet/resolver.js.map +1 -0
- package/dist/composites/bullet-chart/resolver.cjs +300 -0
- package/dist/composites/bullet-chart/resolver.cjs.map +1 -0
- package/dist/composites/bullet-chart/resolver.d.ts +3 -0
- package/dist/composites/bullet-chart/resolver.d.ts.map +1 -0
- package/dist/composites/bullet-chart/resolver.js +298 -0
- package/dist/composites/bullet-chart/resolver.js.map +1 -0
- package/dist/composites/cash-flow-statement/resolver.cjs +757 -0
- package/dist/composites/cash-flow-statement/resolver.cjs.map +1 -0
- package/dist/composites/cash-flow-statement/resolver.d.ts +3 -0
- package/dist/composites/cash-flow-statement/resolver.d.ts.map +1 -0
- package/dist/composites/cash-flow-statement/resolver.js +751 -0
- package/dist/composites/cash-flow-statement/resolver.js.map +1 -0
- package/dist/composites/chart-of-accounts/resolver.cjs +603 -0
- package/dist/composites/chart-of-accounts/resolver.cjs.map +1 -0
- package/dist/composites/chart-of-accounts/resolver.d.ts +3 -0
- package/dist/composites/chart-of-accounts/resolver.d.ts.map +1 -0
- package/dist/composites/chart-of-accounts/resolver.js +601 -0
- package/dist/composites/chart-of-accounts/resolver.js.map +1 -0
- package/dist/composites/cited-answer/resolver.cjs +829 -0
- package/dist/composites/cited-answer/resolver.cjs.map +1 -0
- package/dist/composites/cited-answer/resolver.d.ts +3 -0
- package/dist/composites/cited-answer/resolver.d.ts.map +1 -0
- package/dist/composites/cited-answer/resolver.js +827 -0
- package/dist/composites/cited-answer/resolver.js.map +1 -0
- package/dist/composites/combo-chart/resolver.cjs +402 -0
- package/dist/composites/combo-chart/resolver.cjs.map +1 -0
- package/dist/composites/combo-chart/resolver.d.ts +3 -0
- package/dist/composites/combo-chart/resolver.d.ts.map +1 -0
- package/dist/composites/combo-chart/resolver.js +400 -0
- package/dist/composites/combo-chart/resolver.js.map +1 -0
- package/dist/composites/comparative-bar-chart/resolver.cjs +366 -0
- package/dist/composites/comparative-bar-chart/resolver.cjs.map +1 -0
- package/dist/composites/comparative-bar-chart/resolver.d.ts +3 -0
- package/dist/composites/comparative-bar-chart/resolver.d.ts.map +1 -0
- package/dist/composites/comparative-bar-chart/resolver.js +364 -0
- package/dist/composites/comparative-bar-chart/resolver.js.map +1 -0
- package/dist/composites/compliance-checklist/resolver.cjs +618 -0
- package/dist/composites/compliance-checklist/resolver.cjs.map +1 -0
- package/dist/composites/compliance-checklist/resolver.d.ts +3 -0
- package/dist/composites/compliance-checklist/resolver.d.ts.map +1 -0
- package/dist/composites/compliance-checklist/resolver.js +616 -0
- package/dist/composites/compliance-checklist/resolver.js.map +1 -0
- package/dist/composites/connect-integration/resolver.d.ts +3 -0
- package/dist/composites/connect-integration/resolver.d.ts.map +1 -0
- package/dist/composites/data-table/resolver.cjs +324 -0
- package/dist/composites/data-table/resolver.cjs.map +1 -0
- package/dist/composites/data-table/resolver.d.ts +3 -0
- package/dist/composites/data-table/resolver.d.ts.map +1 -0
- package/dist/composites/data-table/resolver.js +322 -0
- package/dist/composites/data-table/resolver.js.map +1 -0
- package/dist/composites/depreciation-schedule/resolver.cjs +726 -0
- package/dist/composites/depreciation-schedule/resolver.cjs.map +1 -0
- package/dist/composites/depreciation-schedule/resolver.d.ts +3 -0
- package/dist/composites/depreciation-schedule/resolver.d.ts.map +1 -0
- package/dist/composites/depreciation-schedule/resolver.js +724 -0
- package/dist/composites/depreciation-schedule/resolver.js.map +1 -0
- package/dist/composites/document-preview/ExcelViewer.d.ts +8 -0
- package/dist/composites/document-preview/ExcelViewer.d.ts.map +1 -0
- package/dist/composites/document-preview/PdfViewer.d.ts +10 -0
- package/dist/composites/document-preview/PdfViewer.d.ts.map +1 -0
- package/dist/composites/document-preview/resolver.cjs +1036 -0
- package/dist/composites/document-preview/resolver.cjs.map +1 -0
- package/dist/composites/document-preview/resolver.d.ts +3 -0
- package/dist/composites/document-preview/resolver.d.ts.map +1 -0
- package/dist/composites/document-preview/resolver.js +1011 -0
- package/dist/composites/document-preview/resolver.js.map +1 -0
- package/dist/composites/document-preview/useFullscreen.d.ts +8 -0
- package/dist/composites/document-preview/useFullscreen.d.ts.map +1 -0
- package/dist/composites/download-card/resolver.cjs +1831 -0
- package/dist/composites/download-card/resolver.cjs.map +1 -0
- package/dist/composites/download-card/resolver.d.ts +3 -0
- package/dist/composites/download-card/resolver.d.ts.map +1 -0
- package/dist/composites/download-card/resolver.js +1804 -0
- package/dist/composites/download-card/resolver.js.map +1 -0
- package/dist/composites/engagement-pipeline/resolver.cjs +834 -0
- package/dist/composites/engagement-pipeline/resolver.cjs.map +1 -0
- package/dist/composites/engagement-pipeline/resolver.d.ts +3 -0
- package/dist/composites/engagement-pipeline/resolver.d.ts.map +1 -0
- package/dist/composites/engagement-pipeline/resolver.js +828 -0
- package/dist/composites/engagement-pipeline/resolver.js.map +1 -0
- package/dist/composites/entity-card-grid/resolver.cjs +444 -0
- package/dist/composites/entity-card-grid/resolver.cjs.map +1 -0
- package/dist/composites/entity-card-grid/resolver.d.ts +3 -0
- package/dist/composites/entity-card-grid/resolver.d.ts.map +1 -0
- package/dist/composites/entity-card-grid/resolver.js +442 -0
- package/dist/composites/entity-card-grid/resolver.js.map +1 -0
- package/dist/composites/escalation-card/resolver.cjs +359 -0
- package/dist/composites/escalation-card/resolver.cjs.map +1 -0
- package/dist/composites/escalation-card/resolver.d.ts +3 -0
- package/dist/composites/escalation-card/resolver.d.ts.map +1 -0
- package/dist/composites/escalation-card/resolver.js +357 -0
- package/dist/composites/escalation-card/resolver.js.map +1 -0
- package/dist/composites/file-browser/resolver.cjs +440 -0
- package/dist/composites/file-browser/resolver.cjs.map +1 -0
- package/dist/composites/file-browser/resolver.d.ts +3 -0
- package/dist/composites/file-browser/resolver.d.ts.map +1 -0
- package/dist/composites/file-browser/resolver.js +438 -0
- package/dist/composites/file-browser/resolver.js.map +1 -0
- package/dist/composites/flow-canvas/DiagramStreamParser.d.ts +15 -0
- package/dist/composites/flow-canvas/DiagramStreamParser.d.ts.map +1 -0
- package/dist/composites/flow-canvas/ElementStreamParser.d.ts +19 -0
- package/dist/composites/flow-canvas/ElementStreamParser.d.ts.map +1 -0
- package/dist/composites/flow-canvas/ExcalidrawCanvas.d.ts +8 -0
- package/dist/composites/flow-canvas/ExcalidrawCanvas.d.ts.map +1 -0
- package/dist/composites/flow-canvas/FlowGraph.d.ts +11 -0
- package/dist/composites/flow-canvas/FlowGraph.d.ts.map +1 -0
- package/dist/composites/flow-canvas/layoutFlow.d.ts +18 -0
- package/dist/composites/flow-canvas/layoutFlow.d.ts.map +1 -0
- package/dist/composites/flow-canvas/parseMermaidFlow.d.ts +24 -0
- package/dist/composites/flow-canvas/parseMermaidFlow.d.ts.map +1 -0
- package/dist/composites/flow-canvas/resolver.cjs +1295 -0
- package/dist/composites/flow-canvas/resolver.cjs.map +1 -0
- package/dist/composites/flow-canvas/resolver.d.ts +12 -0
- package/dist/composites/flow-canvas/resolver.d.ts.map +1 -0
- package/dist/composites/flow-canvas/resolver.js +1287 -0
- package/dist/composites/flow-canvas/resolver.js.map +1 -0
- package/dist/composites/funnel-chart/resolver.cjs +315 -0
- package/dist/composites/funnel-chart/resolver.cjs.map +1 -0
- package/dist/composites/funnel-chart/resolver.d.ts +3 -0
- package/dist/composites/funnel-chart/resolver.d.ts.map +1 -0
- package/dist/composites/funnel-chart/resolver.js +313 -0
- package/dist/composites/funnel-chart/resolver.js.map +1 -0
- package/dist/composites/gauge-chart/resolver.cjs +294 -0
- package/dist/composites/gauge-chart/resolver.cjs.map +1 -0
- package/dist/composites/gauge-chart/resolver.d.ts +3 -0
- package/dist/composites/gauge-chart/resolver.d.ts.map +1 -0
- package/dist/composites/gauge-chart/resolver.js +292 -0
- package/dist/composites/gauge-chart/resolver.js.map +1 -0
- package/dist/composites/general-ledger/resolver.cjs +543 -0
- package/dist/composites/general-ledger/resolver.cjs.map +1 -0
- package/dist/composites/general-ledger/resolver.d.ts +3 -0
- package/dist/composites/general-ledger/resolver.d.ts.map +1 -0
- package/dist/composites/general-ledger/resolver.js +541 -0
- package/dist/composites/general-ledger/resolver.js.map +1 -0
- package/dist/composites/grouped-table/resolver.cjs +388 -0
- package/dist/composites/grouped-table/resolver.cjs.map +1 -0
- package/dist/composites/grouped-table/resolver.d.ts +3 -0
- package/dist/composites/grouped-table/resolver.d.ts.map +1 -0
- package/dist/composites/grouped-table/resolver.js +386 -0
- package/dist/composites/grouped-table/resolver.js.map +1 -0
- package/dist/composites/heatmap-table/resolver.cjs +380 -0
- package/dist/composites/heatmap-table/resolver.cjs.map +1 -0
- package/dist/composites/heatmap-table/resolver.d.ts +3 -0
- package/dist/composites/heatmap-table/resolver.d.ts.map +1 -0
- package/dist/composites/heatmap-table/resolver.js +378 -0
- package/dist/composites/heatmap-table/resolver.js.map +1 -0
- package/dist/composites/income-statement/resolver.cjs +583 -0
- package/dist/composites/income-statement/resolver.cjs.map +1 -0
- package/dist/composites/income-statement/resolver.d.ts +3 -0
- package/dist/composites/income-statement/resolver.d.ts.map +1 -0
- package/dist/composites/income-statement/resolver.js +577 -0
- package/dist/composites/income-statement/resolver.js.map +1 -0
- package/dist/composites/integrations-list/resolver.d.ts +3 -0
- package/dist/composites/integrations-list/resolver.d.ts.map +1 -0
- package/dist/composites/invoice-detail/resolver.cjs +1086 -0
- package/dist/composites/invoice-detail/resolver.cjs.map +1 -0
- package/dist/composites/invoice-detail/resolver.d.ts +3 -0
- package/dist/composites/invoice-detail/resolver.d.ts.map +1 -0
- package/dist/composites/invoice-detail/resolver.js +1084 -0
- package/dist/composites/invoice-detail/resolver.js.map +1 -0
- package/dist/composites/job-tracker/resolver.cjs +830 -0
- package/dist/composites/job-tracker/resolver.cjs.map +1 -0
- package/dist/composites/job-tracker/resolver.d.ts +3 -0
- package/dist/composites/job-tracker/resolver.d.ts.map +1 -0
- package/dist/composites/job-tracker/resolver.js +828 -0
- package/dist/composites/job-tracker/resolver.js.map +1 -0
- package/dist/composites/journal-entry/resolver.cjs +324 -0
- package/dist/composites/journal-entry/resolver.cjs.map +1 -0
- package/dist/composites/journal-entry/resolver.d.ts +3 -0
- package/dist/composites/journal-entry/resolver.d.ts.map +1 -0
- package/dist/composites/journal-entry/resolver.js +322 -0
- package/dist/composites/journal-entry/resolver.js.map +1 -0
- package/dist/composites/key-value-list/resolver.cjs +708 -0
- package/dist/composites/key-value-list/resolver.cjs.map +1 -0
- package/dist/composites/key-value-list/resolver.d.ts +3 -0
- package/dist/composites/key-value-list/resolver.d.ts.map +1 -0
- package/dist/composites/key-value-list/resolver.js +702 -0
- package/dist/composites/key-value-list/resolver.js.map +1 -0
- package/dist/composites/legal-test-result/resolver.cjs +666 -0
- package/dist/composites/legal-test-result/resolver.cjs.map +1 -0
- package/dist/composites/legal-test-result/resolver.d.ts +3 -0
- package/dist/composites/legal-test-result/resolver.d.ts.map +1 -0
- package/dist/composites/legal-test-result/resolver.js +664 -0
- package/dist/composites/legal-test-result/resolver.js.map +1 -0
- package/dist/composites/line-chart/resolver.cjs +344 -0
- package/dist/composites/line-chart/resolver.cjs.map +1 -0
- package/dist/composites/line-chart/resolver.d.ts +3 -0
- package/dist/composites/line-chart/resolver.d.ts.map +1 -0
- package/dist/composites/line-chart/resolver.js +342 -0
- package/dist/composites/line-chart/resolver.js.map +1 -0
- package/dist/composites/news-feed/resolver.cjs +539 -0
- package/dist/composites/news-feed/resolver.cjs.map +1 -0
- package/dist/composites/news-feed/resolver.d.ts +3 -0
- package/dist/composites/news-feed/resolver.d.ts.map +1 -0
- package/dist/composites/news-feed/resolver.js +537 -0
- package/dist/composites/news-feed/resolver.js.map +1 -0
- package/dist/composites/ops-dashboard/resolver.cjs +430 -0
- package/dist/composites/ops-dashboard/resolver.cjs.map +1 -0
- package/dist/composites/ops-dashboard/resolver.d.ts +3 -0
- package/dist/composites/ops-dashboard/resolver.d.ts.map +1 -0
- package/dist/composites/ops-dashboard/resolver.js +428 -0
- package/dist/composites/ops-dashboard/resolver.js.map +1 -0
- package/dist/composites/pipeline-preview/layout.d.ts +39 -0
- package/dist/composites/pipeline-preview/layout.d.ts.map +1 -0
- package/dist/composites/pipeline-preview/opMeta.d.ts +9 -0
- package/dist/composites/pipeline-preview/opMeta.d.ts.map +1 -0
- package/dist/composites/pipeline-preview/resolver.d.ts +3 -0
- package/dist/composites/pipeline-preview/resolver.d.ts.map +1 -0
- package/dist/composites/provenance-chain/resolver.cjs +797 -0
- package/dist/composites/provenance-chain/resolver.cjs.map +1 -0
- package/dist/composites/provenance-chain/resolver.d.ts +3 -0
- package/dist/composites/provenance-chain/resolver.d.ts.map +1 -0
- package/dist/composites/provenance-chain/resolver.js +795 -0
- package/dist/composites/provenance-chain/resolver.js.map +1 -0
- package/dist/composites/radar-chart/resolver.cjs +323 -0
- package/dist/composites/radar-chart/resolver.cjs.map +1 -0
- package/dist/composites/radar-chart/resolver.d.ts +3 -0
- package/dist/composites/radar-chart/resolver.d.ts.map +1 -0
- package/dist/composites/radar-chart/resolver.js +321 -0
- package/dist/composites/radar-chart/resolver.js.map +1 -0
- package/dist/composites/reconciliation-view/resolver.cjs +917 -0
- package/dist/composites/reconciliation-view/resolver.cjs.map +1 -0
- package/dist/composites/reconciliation-view/resolver.d.ts +3 -0
- package/dist/composites/reconciliation-view/resolver.d.ts.map +1 -0
- package/dist/composites/reconciliation-view/resolver.js +915 -0
- package/dist/composites/reconciliation-view/resolver.js.map +1 -0
- package/dist/composites/scatter-chart/resolver.cjs +357 -0
- package/dist/composites/scatter-chart/resolver.cjs.map +1 -0
- package/dist/composites/scatter-chart/resolver.d.ts +3 -0
- package/dist/composites/scatter-chart/resolver.d.ts.map +1 -0
- package/dist/composites/scatter-chart/resolver.js +355 -0
- package/dist/composites/scatter-chart/resolver.js.map +1 -0
- package/dist/composites/screener-table/resolver.cjs +372 -0
- package/dist/composites/screener-table/resolver.cjs.map +1 -0
- package/dist/composites/screener-table/resolver.d.ts +3 -0
- package/dist/composites/screener-table/resolver.d.ts.map +1 -0
- package/dist/composites/screener-table/resolver.js +370 -0
- package/dist/composites/screener-table/resolver.js.map +1 -0
- package/dist/composites/search-results/resolver.cjs +391 -0
- package/dist/composites/search-results/resolver.cjs.map +1 -0
- package/dist/composites/search-results/resolver.d.ts +3 -0
- package/dist/composites/search-results/resolver.d.ts.map +1 -0
- package/dist/composites/search-results/resolver.js +389 -0
- package/dist/composites/search-results/resolver.js.map +1 -0
- package/dist/composites/sparkline-table/resolver.cjs +361 -0
- package/dist/composites/sparkline-table/resolver.cjs.map +1 -0
- package/dist/composites/sparkline-table/resolver.d.ts +3 -0
- package/dist/composites/sparkline-table/resolver.d.ts.map +1 -0
- package/dist/composites/sparkline-table/resolver.js +359 -0
- package/dist/composites/sparkline-table/resolver.js.map +1 -0
- package/dist/composites/stacked-breakdown/resolver.cjs +397 -0
- package/dist/composites/stacked-breakdown/resolver.cjs.map +1 -0
- package/dist/composites/stacked-breakdown/resolver.d.ts +3 -0
- package/dist/composites/stacked-breakdown/resolver.d.ts.map +1 -0
- package/dist/composites/stacked-breakdown/resolver.js +395 -0
- package/dist/composites/stacked-breakdown/resolver.js.map +1 -0
- package/dist/composites/stat-grid/resolver.cjs +498 -0
- package/dist/composites/stat-grid/resolver.cjs.map +1 -0
- package/dist/composites/stat-grid/resolver.d.ts +3 -0
- package/dist/composites/stat-grid/resolver.d.ts.map +1 -0
- package/dist/composites/stat-grid/resolver.js +496 -0
- package/dist/composites/stat-grid/resolver.js.map +1 -0
- package/dist/composites/status-card/resolver.cjs +593 -0
- package/dist/composites/status-card/resolver.cjs.map +1 -0
- package/dist/composites/status-card/resolver.d.ts +3 -0
- package/dist/composites/status-card/resolver.d.ts.map +1 -0
- package/dist/composites/status-card/resolver.js +591 -0
- package/dist/composites/status-card/resolver.js.map +1 -0
- package/dist/composites/tabs-panel/resolver.cjs +564 -0
- package/dist/composites/tabs-panel/resolver.cjs.map +1 -0
- package/dist/composites/tabs-panel/resolver.d.ts +3 -0
- package/dist/composites/tabs-panel/resolver.d.ts.map +1 -0
- package/dist/composites/tabs-panel/resolver.js +562 -0
- package/dist/composites/tabs-panel/resolver.js.map +1 -0
- package/dist/composites/transaction-feed/resolver.cjs +830 -0
- package/dist/composites/transaction-feed/resolver.cjs.map +1 -0
- package/dist/composites/transaction-feed/resolver.d.ts +3 -0
- package/dist/composites/transaction-feed/resolver.d.ts.map +1 -0
- package/dist/composites/transaction-feed/resolver.js +828 -0
- package/dist/composites/transaction-feed/resolver.js.map +1 -0
- package/dist/composites/treemap-chart/resolver.cjs +323 -0
- package/dist/composites/treemap-chart/resolver.cjs.map +1 -0
- package/dist/composites/treemap-chart/resolver.d.ts +3 -0
- package/dist/composites/treemap-chart/resolver.d.ts.map +1 -0
- package/dist/composites/treemap-chart/resolver.js +321 -0
- package/dist/composites/treemap-chart/resolver.js.map +1 -0
- package/dist/composites/trial-balance/resolver.cjs +359 -0
- package/dist/composites/trial-balance/resolver.cjs.map +1 -0
- package/dist/composites/trial-balance/resolver.d.ts +3 -0
- package/dist/composites/trial-balance/resolver.d.ts.map +1 -0
- package/dist/composites/trial-balance/resolver.js +353 -0
- package/dist/composites/trial-balance/resolver.js.map +1 -0
- package/dist/composites/variance-analysis/resolver.cjs +310 -0
- package/dist/composites/variance-analysis/resolver.cjs.map +1 -0
- package/dist/composites/variance-analysis/resolver.d.ts +3 -0
- package/dist/composites/variance-analysis/resolver.d.ts.map +1 -0
- package/dist/composites/variance-analysis/resolver.js +308 -0
- package/dist/composites/variance-analysis/resolver.js.map +1 -0
- package/dist/composites/waterfall-chart/resolver.cjs +347 -0
- package/dist/composites/waterfall-chart/resolver.cjs.map +1 -0
- package/dist/composites/waterfall-chart/resolver.d.ts +3 -0
- package/dist/composites/waterfall-chart/resolver.d.ts.map +1 -0
- package/dist/composites/waterfall-chart/resolver.js +345 -0
- package/dist/composites/waterfall-chart/resolver.js.map +1 -0
- package/dist/index.cjs +18271 -0
- package/dist/index.cjs.map +1 -0
- package/dist/index.d.ts +52 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +18184 -0
- package/dist/index.js.map +1 -0
- package/dist/renderer.cjs +17092 -0
- package/dist/renderer.cjs.map +1 -0
- package/dist/renderer.d.ts +7 -0
- package/dist/renderer.d.ts.map +1 -0
- package/dist/renderer.js +17064 -0
- package/dist/renderer.js.map +1 -0
- package/dist/resolver.cjs +17061 -0
- package/dist/resolver.cjs.map +1 -0
- package/dist/resolver.d.ts +6 -0
- package/dist/resolver.d.ts.map +1 -0
- package/dist/resolver.js +17033 -0
- package/dist/resolver.js.map +1 -0
- package/dist/schemas/aging-report.d.ts +74 -0
- package/dist/schemas/aging-report.d.ts.map +1 -0
- package/dist/schemas/alert.d.ts +39 -0
- package/dist/schemas/alert.d.ts.map +1 -0
- package/dist/schemas/allocation-donut.d.ts +53 -0
- package/dist/schemas/allocation-donut.d.ts.map +1 -0
- package/dist/schemas/amortization-table.d.ts +102 -0
- package/dist/schemas/amortization-table.d.ts.map +1 -0
- package/dist/schemas/area-chart.d.ts +61 -0
- package/dist/schemas/area-chart.d.ts.map +1 -0
- package/dist/schemas/audit-trail.d.ts +88 -0
- package/dist/schemas/audit-trail.d.ts.map +1 -0
- package/dist/schemas/balance-sheet.d.ts +170 -0
- package/dist/schemas/balance-sheet.d.ts.map +1 -0
- package/dist/schemas/buildRenderUITool.d.ts +7 -0
- package/dist/schemas/buildRenderUITool.d.ts.map +1 -0
- package/dist/schemas/bullet-chart.d.ts +58 -0
- package/dist/schemas/bullet-chart.d.ts.map +1 -0
- package/dist/schemas/cash-flow-statement.d.ts +165 -0
- package/dist/schemas/cash-flow-statement.d.ts.map +1 -0
- package/dist/schemas/chart-of-accounts.d.ts +93 -0
- package/dist/schemas/chart-of-accounts.d.ts.map +1 -0
- package/dist/schemas/cited-answer.d.ts +76 -0
- package/dist/schemas/cited-answer.d.ts.map +1 -0
- package/dist/schemas/coercePayload.d.ts +16 -0
- package/dist/schemas/coercePayload.d.ts.map +1 -0
- package/dist/schemas/combo-chart.d.ts +111 -0
- package/dist/schemas/combo-chart.d.ts.map +1 -0
- package/dist/schemas/comparative-bar-chart.d.ts +83 -0
- package/dist/schemas/comparative-bar-chart.d.ts.map +1 -0
- package/dist/schemas/compliance-checklist.d.ts +91 -0
- package/dist/schemas/compliance-checklist.d.ts.map +1 -0
- package/dist/schemas/connect-integration.d.ts +47 -0
- package/dist/schemas/connect-integration.d.ts.map +1 -0
- package/dist/schemas/data-table.d.ts +63 -0
- package/dist/schemas/data-table.d.ts.map +1 -0
- package/dist/schemas/depreciation-schedule.d.ts +125 -0
- package/dist/schemas/depreciation-schedule.d.ts.map +1 -0
- package/dist/schemas/document-preview.d.ts +128 -0
- package/dist/schemas/document-preview.d.ts.map +1 -0
- package/dist/schemas/download-card.d.ts +62 -0
- package/dist/schemas/download-card.d.ts.map +1 -0
- package/dist/schemas/engagement-pipeline.d.ts +119 -0
- package/dist/schemas/engagement-pipeline.d.ts.map +1 -0
- package/dist/schemas/entity-card-grid.d.ts +101 -0
- package/dist/schemas/entity-card-grid.d.ts.map +1 -0
- package/dist/schemas/escalation-card.d.ts +44 -0
- package/dist/schemas/escalation-card.d.ts.map +1 -0
- package/dist/schemas/file-browser.d.ts +81 -0
- package/dist/schemas/file-browser.d.ts.map +1 -0
- package/dist/schemas/flow-canvas.d.ts +58 -0
- package/dist/schemas/flow-canvas.d.ts.map +1 -0
- package/dist/schemas/funnel-chart.d.ts +53 -0
- package/dist/schemas/funnel-chart.d.ts.map +1 -0
- package/dist/schemas/gauge-chart.d.ts +58 -0
- package/dist/schemas/gauge-chart.d.ts.map +1 -0
- package/dist/schemas/general-ledger.d.ts +120 -0
- package/dist/schemas/general-ledger.d.ts.map +1 -0
- package/dist/schemas/grouped-table.d.ts +101 -0
- package/dist/schemas/grouped-table.d.ts.map +1 -0
- package/dist/schemas/heatmap-table.d.ts +76 -0
- package/dist/schemas/heatmap-table.d.ts.map +1 -0
- package/dist/schemas/income-statement.d.ts +170 -0
- package/dist/schemas/income-statement.d.ts.map +1 -0
- package/dist/schemas/index.cjs +3509 -0
- package/dist/schemas/index.cjs.map +1 -0
- package/dist/schemas/index.d.ts +5030 -0
- package/dist/schemas/index.d.ts.map +1 -0
- package/dist/schemas/index.js +3505 -0
- package/dist/schemas/index.js.map +1 -0
- package/dist/schemas/integrations-list.d.ts +62 -0
- package/dist/schemas/integrations-list.d.ts.map +1 -0
- package/dist/schemas/invoice-detail.d.ts +157 -0
- package/dist/schemas/invoice-detail.d.ts.map +1 -0
- package/dist/schemas/job-tracker.d.ts +114 -0
- package/dist/schemas/job-tracker.d.ts.map +1 -0
- package/dist/schemas/journal-entry.d.ts +90 -0
- package/dist/schemas/journal-entry.d.ts.map +1 -0
- package/dist/schemas/key-value-list.d.ts +108 -0
- package/dist/schemas/key-value-list.d.ts.map +1 -0
- package/dist/schemas/legal-test-result.d.ts +130 -0
- package/dist/schemas/legal-test-result.d.ts.map +1 -0
- package/dist/schemas/line-chart.d.ts +71 -0
- package/dist/schemas/line-chart.d.ts.map +1 -0
- package/dist/schemas/news-feed.d.ts +63 -0
- package/dist/schemas/news-feed.d.ts.map +1 -0
- package/dist/schemas/ops-dashboard.d.ts +92 -0
- package/dist/schemas/ops-dashboard.d.ts.map +1 -0
- package/dist/schemas/pipeline-preview.d.ts +209 -0
- package/dist/schemas/pipeline-preview.d.ts.map +1 -0
- package/dist/schemas/provenance-chain.d.ts +121 -0
- package/dist/schemas/provenance-chain.d.ts.map +1 -0
- package/dist/schemas/radar-chart.d.ts +70 -0
- package/dist/schemas/radar-chart.d.ts.map +1 -0
- package/dist/schemas/reconciliation-view.d.ts +156 -0
- package/dist/schemas/reconciliation-view.d.ts.map +1 -0
- package/dist/schemas/scatter-chart.d.ts +90 -0
- package/dist/schemas/scatter-chart.d.ts.map +1 -0
- package/dist/schemas/screener-table.d.ts +74 -0
- package/dist/schemas/screener-table.d.ts.map +1 -0
- package/dist/schemas/search-results.d.ts +87 -0
- package/dist/schemas/search-results.d.ts.map +1 -0
- package/dist/schemas/sparkline-table.d.ts +74 -0
- package/dist/schemas/sparkline-table.d.ts.map +1 -0
- package/dist/schemas/stacked-breakdown.d.ts +70 -0
- package/dist/schemas/stacked-breakdown.d.ts.map +1 -0
- package/dist/schemas/stat-grid.d.ts +55 -0
- package/dist/schemas/stat-grid.d.ts.map +1 -0
- package/dist/schemas/status-card.d.ts +84 -0
- package/dist/schemas/status-card.d.ts.map +1 -0
- package/dist/schemas/tabs-panel.d.ts +42 -0
- package/dist/schemas/tabs-panel.d.ts.map +1 -0
- package/dist/schemas/transaction-feed.d.ts +82 -0
- package/dist/schemas/transaction-feed.d.ts.map +1 -0
- package/dist/schemas/treemap-chart.d.ts +53 -0
- package/dist/schemas/treemap-chart.d.ts.map +1 -0
- package/dist/schemas/trial-balance.d.ts +85 -0
- package/dist/schemas/trial-balance.d.ts.map +1 -0
- package/dist/schemas/validatePayload.d.ts +10 -0
- package/dist/schemas/validatePayload.d.ts.map +1 -0
- package/dist/schemas/variance-analysis.d.ts +73 -0
- package/dist/schemas/variance-analysis.d.ts.map +1 -0
- package/dist/schemas/waterfall-chart.d.ts +53 -0
- package/dist/schemas/waterfall-chart.d.ts.map +1 -0
- package/dist/shared/ColumnSettingsPanel.d.ts +13 -0
- package/dist/shared/ColumnSettingsPanel.d.ts.map +1 -0
- package/dist/shared/ComponentActions.d.ts +20 -0
- package/dist/shared/ComponentActions.d.ts.map +1 -0
- package/dist/shared/FileCard.d.ts +35 -0
- package/dist/shared/FileCard.d.ts.map +1 -0
- package/dist/shared/Markdown.d.ts +22 -0
- package/dist/shared/Markdown.d.ts.map +1 -0
- package/dist/shared/PreviewModal.d.ts +19 -0
- package/dist/shared/PreviewModal.d.ts.map +1 -0
- package/dist/shared/ThemeContext.d.ts +18 -0
- package/dist/shared/ThemeContext.d.ts.map +1 -0
- package/dist/shared/brandIcons.d.ts +3 -0
- package/dist/shared/brandIcons.d.ts.map +1 -0
- package/dist/shared/downloadCSV.d.ts +5 -0
- package/dist/shared/downloadCSV.d.ts.map +1 -0
- package/dist/shared/fileType.d.ts +19 -0
- package/dist/shared/fileType.d.ts.map +1 -0
- package/dist/shared/theme.d.ts +48 -0
- package/dist/shared/theme.d.ts.map +1 -0
- package/dist/shared/useColumnVisibility.d.ts +13 -0
- package/dist/shared/useColumnVisibility.d.ts.map +1 -0
- package/dist/shared/useSeriesToggle.d.ts +8 -0
- package/dist/shared/useSeriesToggle.d.ts.map +1 -0
- package/dist/shared/viewers/CsvViewer.d.ts +13 -0
- package/dist/shared/viewers/CsvViewer.d.ts.map +1 -0
- package/dist/shared/viewers/DocxViewer.d.ts +8 -0
- package/dist/shared/viewers/DocxViewer.d.ts.map +1 -0
- package/dist/shared/viewers/PreviewHost.d.ts +17 -0
- package/dist/shared/viewers/PreviewHost.d.ts.map +1 -0
- package/dist/shared/viewers/TextViewer.d.ts +13 -0
- package/dist/shared/viewers/TextViewer.d.ts.map +1 -0
- package/dist/shared/viewers/decode.d.ts +14 -0
- package/dist/shared/viewers/decode.d.ts.map +1 -0
- package/dist/tool-definitions.json +4629 -0
- package/dist/types.d.ts +8 -0
- package/dist/types.d.ts.map +1 -0
- package/package.json +110 -0
- package/styles/contract.css +17 -0
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/shared/theme.ts","../src/shared/ThemeContext.tsx","../src/shared/Markdown.tsx","../src/composites/flow-canvas/parseMermaidFlow.ts","../src/composites/flow-canvas/layoutFlow.ts","../src/composites/flow-canvas/FlowGraph.tsx","../src/composites/document-preview/PdfViewer.tsx","../src/composites/document-preview/ExcelViewer.tsx","../src/shared/viewers/decode.ts","../src/shared/viewers/CsvViewer.tsx","../src/shared/viewers/TextViewer.tsx","../src/shared/viewers/DocxViewer.tsx","../src/index.ts","../src/schemas/data-table.ts","../src/schemas/status-card.ts","../src/schemas/alert.ts","../src/schemas/stat-grid.ts","../src/schemas/tabs-panel.ts","../src/schemas/sparkline-table.ts","../src/schemas/heatmap-table.ts","../src/schemas/screener-table.ts","../src/schemas/grouped-table.ts","../src/schemas/news-feed.ts","../src/schemas/area-chart.ts","../src/schemas/allocation-donut.ts","../src/schemas/waterfall-chart.ts","../src/schemas/flow-canvas.ts","../src/schemas/trial-balance.ts","../src/schemas/journal-entry.ts","../src/schemas/aging-report.ts","../src/schemas/variance-analysis.ts","../src/schemas/stacked-breakdown.ts","../src/schemas/comparative-bar-chart.ts","../src/schemas/compliance-checklist.ts","../src/schemas/reconciliation-view.ts","../src/schemas/audit-trail.ts","../src/schemas/document-preview.ts","../src/schemas/provenance-chain.ts","../src/schemas/search-results.ts","../src/schemas/legal-test-result.ts","../src/schemas/engagement-pipeline.ts","../src/schemas/entity-card-grid.ts","../src/schemas/job-tracker.ts","../src/schemas/cited-answer.ts","../src/schemas/transaction-feed.ts","../src/schemas/file-browser.ts","../src/schemas/download-card.ts","../src/schemas/ops-dashboard.ts","../src/schemas/key-value-list.ts","../src/schemas/balance-sheet.ts","../src/schemas/income-statement.ts","../src/schemas/cash-flow-statement.ts","../src/schemas/general-ledger.ts","../src/schemas/chart-of-accounts.ts","../src/schemas/invoice-detail.ts","../src/schemas/amortization-table.ts","../src/schemas/depreciation-schedule.ts","../src/schemas/escalation-card.ts","../src/schemas/line-chart.ts","../src/schemas/combo-chart.ts","../src/schemas/gauge-chart.ts","../src/schemas/treemap-chart.ts","../src/schemas/radar-chart.ts","../src/schemas/funnel-chart.ts","../src/schemas/bullet-chart.ts","../src/schemas/scatter-chart.ts","../src/schemas/connect-integration.ts","../src/schemas/integrations-list.ts","../src/schemas/pipeline-preview.ts","../src/schemas/buildRenderUITool.ts","../src/schemas/coercePayload.ts","../src/schemas/validatePayload.ts","../src/schemas/index.ts","../src/shared/ColumnSettingsPanel.tsx","../src/shared/ComponentActions.tsx","../src/shared/useColumnVisibility.ts","../src/shared/downloadCSV.ts","../src/composites/data-table/resolver.tsx","../src/composites/status-card/resolver.tsx","../src/composites/alert/resolver.tsx","../src/composites/stat-grid/resolver.tsx","../src/composites/tabs-panel/resolver.tsx","../src/composites/sparkline-table/resolver.tsx","../src/composites/heatmap-table/resolver.tsx","../src/composites/screener-table/resolver.tsx","../src/composites/grouped-table/resolver.tsx","../src/composites/news-feed/resolver.tsx","../src/shared/useSeriesToggle.ts","../src/composites/area-chart/resolver.tsx","../src/composites/allocation-donut/resolver.tsx","../src/composites/waterfall-chart/resolver.tsx","../src/composites/flow-canvas/resolver.tsx","../src/composites/trial-balance/resolver.tsx","../src/composites/journal-entry/resolver.tsx","../src/composites/aging-report/resolver.tsx","../src/composites/variance-analysis/resolver.tsx","../src/composites/stacked-breakdown/resolver.tsx","../src/composites/comparative-bar-chart/resolver.tsx","../src/composites/compliance-checklist/resolver.tsx","../src/composites/reconciliation-view/resolver.tsx","../src/composites/audit-trail/resolver.tsx","../src/composites/document-preview/resolver.tsx","../src/composites/document-preview/useFullscreen.ts","../src/composites/provenance-chain/resolver.tsx","../src/composites/search-results/resolver.tsx","../src/composites/legal-test-result/resolver.tsx","../src/composites/engagement-pipeline/resolver.tsx","../src/composites/entity-card-grid/resolver.tsx","../src/composites/job-tracker/resolver.tsx","../src/composites/cited-answer/resolver.tsx","../src/composites/transaction-feed/resolver.tsx","../src/composites/file-browser/resolver.tsx","../src/shared/FileCard.tsx","../src/shared/fileType.ts","../src/shared/viewers/PreviewHost.tsx","../src/shared/PreviewModal.tsx","../src/composites/download-card/resolver.tsx","../src/composites/ops-dashboard/resolver.tsx","../src/composites/key-value-list/resolver.tsx","../src/composites/balance-sheet/resolver.tsx","../src/composites/income-statement/resolver.tsx","../src/composites/cash-flow-statement/resolver.tsx","../src/composites/general-ledger/resolver.tsx","../src/composites/chart-of-accounts/resolver.tsx","../src/composites/invoice-detail/resolver.tsx","../src/composites/amortization-table/resolver.tsx","../src/composites/depreciation-schedule/resolver.tsx","../src/composites/escalation-card/resolver.tsx","../src/composites/line-chart/resolver.tsx","../src/composites/combo-chart/resolver.tsx","../src/composites/gauge-chart/resolver.tsx","../src/composites/treemap-chart/resolver.tsx","../src/composites/radar-chart/resolver.tsx","../src/composites/funnel-chart/resolver.tsx","../src/composites/bullet-chart/resolver.tsx","../src/composites/scatter-chart/resolver.tsx","../src/composites/connect-integration/resolver.tsx","../src/shared/brandIcons.ts","../src/composites/integrations-list/resolver.tsx","../src/composites/pipeline-preview/resolver.tsx","../src/composites/pipeline-preview/opMeta.ts","../src/composites/pipeline-preview/layout.ts","../src/resolver.tsx","../src/renderer.tsx","../src/builders/schemas.ts","../src/builders/validateBuilder.ts","../src/builders/FormBuilder.tsx","../src/builders/FieldRenderer.tsx","../src/builders/fields.tsx","../src/builders/ContextSlot.tsx","../src/builders/BuilderRecap.tsx","../src/builders/StepperBuilder.tsx","../src/builders/EscalationCard.tsx","../src/builders/hooks.ts","../src/builders/BuilderForm.tsx","../src/builders/resolver.ts"],"names":["jsx","jsxs","Fragment","useState","useRef","useEffect","_a","useMemo","useCallback","TERRACOTTA","BORDER","MUTED","PAPER","z","ACCENT","th","_b","thStyle","tooltipStyle","CHART_PALETTE","ResponsiveContainer","Tooltip","XAxis","YAxis","Cell","FlowGraph","React","_c","fmt","PALETTE","BarChart","Bar","abbreviate","PdfViewer","ExcelViewer","Suspense","statusColor","statusColors","confidenceColor","ConfidenceBar","SECONDARY","formatDate","items","CsvViewer","TextViewer","DocxViewer","createPortal","onLeave","categoryLabels","pctFmt","_d","STATUS_COLORS","tdStyle","ACCENT_SOFT","CartesianGrid","Line","PolarAngleAxis","money","LabelList","GREEN","AMBER","RED","CONNECTED_GREEN","S","makeStyles"],"mappings":"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","file":"index.js","sourcesContent":["export const BORDER = \"#dedede\";\nexport const MUTED = \"#777777\";\nexport const PAPER = \"#f6f6f6\";\nexport const ACCENT = \"#ff5000\";\nexport const ACCENT_SOFT = \"#cc4000\";\nexport const SECONDARY = \"#0364ff\";\n\nexport const ACCOUNT_TYPE_COLORS = {\n asset: { bg: \"#eff6ff\", color: \"#1d4ed8\" },\n liability: { bg: \"#fff7ed\", color: \"#92400e\" },\n equity: { bg: \"#f5f3ff\", color: \"#7c3aed\" },\n revenue: { bg: \"#dcfce7\", color: \"#15803d\" },\n expense: { bg: \"#fef2f2\", color: \"#dc2626\" },\n} as const;\n\nexport const STATUS_COLORS = {\n draft: { bg: \"#fff7ed\", color: \"#92400e\" },\n \"pending-review\": { bg: \"#eff6ff\", color: \"#1d4ed8\" },\n approved: { bg: \"#dcfce7\", color: \"#15803d\" },\n filed: { bg: \"#f5f3ff\", color: \"#7c3aed\" },\n} as const;\n\nexport const CHART_PALETTE = [\n \"#ff5000\",\n \"#0364ff\",\n \"#16a34a\",\n \"#dc2626\",\n \"#7c3aed\",\n \"#0891b2\",\n \"#f59e0b\",\n \"#6366f1\",\n \"#ec4899\",\n \"#84cc16\",\n \"#e11d48\",\n \"#0ea5e9\",\n];\n","\"use client\";\n\nimport React, { createContext, useContext, useMemo } from \"react\";\nimport {\n BORDER,\n MUTED,\n PAPER,\n ACCENT,\n ACCENT_SOFT,\n SECONDARY,\n CHART_PALETTE,\n} from \"./theme\";\n\nexport interface ThemeTokens {\n BORDER: string;\n MUTED: string;\n PAPER: string;\n ACCENT: string;\n ACCENT_SOFT: string;\n SECONDARY: string;\n CHART_PALETTE: string[];\n}\n\nexport const DEFAULT_TOKENS: ThemeTokens = {\n BORDER,\n MUTED,\n PAPER,\n ACCENT,\n ACCENT_SOFT,\n SECONDARY,\n CHART_PALETTE: [...CHART_PALETTE],\n};\n\nconst GenUIThemeContext = createContext<ThemeTokens>(DEFAULT_TOKENS);\n\nexport interface GenUIThemeProviderProps {\n colors?: Partial<ThemeTokens>;\n children: React.ReactNode;\n}\n\nexport function GenUIThemeProvider({ colors, children }: GenUIThemeProviderProps) {\n const merged = useMemo(\n () => (colors ? { ...DEFAULT_TOKENS, ...colors } : DEFAULT_TOKENS),\n [colors]\n );\n return (\n <GenUIThemeContext.Provider value={merged}>\n {children}\n </GenUIThemeContext.Provider>\n );\n}\n\nexport function useTheme(): ThemeTokens {\n return useContext(GenUIThemeContext);\n}\n","\"use client\";\n\nimport React from \"react\";\nimport { ACCENT, SECONDARY } from \"./theme\";\n\n/**\n * Lightweight, dependency-free markdown renderer for prose fields.\n *\n * Inline grammar (always available): `**bold**`, `*italic*`, `` `code` ``,\n * `[text](url)` links.\n * Block grammar (default mode only): `#`–`####` headings, `- `/`* ` bullet\n * lists, `1.` numbered lists, blank-line-separated paragraphs.\n *\n * Pass `inline` for compact fields that live in tight rows/cards — it renders\n * only inline spans (no headings/lists/paragraph margins) so layout height is\n * preserved.\n *\n * Note: underscore italics (`_x_`) are intentionally NOT supported — they\n * collide with snake_case identifiers common in this domain.\n */\nexport function renderInline(text: string): React.ReactNode[] {\n const parts: React.ReactNode[] = [];\n let rest = text;\n let k = 0;\n\n const nextIndex = (needle: string): number => {\n const idx = rest.indexOf(needle);\n return idx >= 0 ? idx : Infinity;\n };\n\n while (rest.length > 0) {\n const boldIdx = nextIndex(\"**\");\n const codeIdx = nextIndex(\"`\");\n const linkIdx = nextIndex(\"[\");\n // single-star italic: ignore the `*` that belongs to a `**` run\n let italicIdx = rest.indexOf(\"*\");\n if (italicIdx === boldIdx) italicIdx = rest.indexOf(\"*\", italicIdx + 2);\n const italicIdxN = italicIdx >= 0 ? italicIdx : Infinity;\n\n const nextSpecial = Math.min(boldIdx, codeIdx, linkIdx, italicIdxN);\n\n if (nextSpecial === Infinity) {\n parts.push(<span key={k++}>{rest}</span>);\n break;\n }\n\n if (nextSpecial > 0) {\n parts.push(<span key={k++}>{rest.slice(0, nextSpecial)}</span>);\n rest = rest.slice(nextSpecial);\n }\n\n if (rest.startsWith(\"**\")) {\n const end = rest.indexOf(\"**\", 2);\n if (end > 2) {\n parts.push(\n <strong key={k++} style={{ fontWeight: 600, color: \"var(--foreground)\" }}>\n {renderInline(rest.slice(2, end))}\n </strong>\n );\n rest = rest.slice(end + 2);\n continue;\n }\n }\n\n if (rest.startsWith(\"`\")) {\n const end = rest.indexOf(\"`\", 1);\n if (end > 1) {\n parts.push(\n <code\n key={k++}\n style={{\n fontSize: \"0.9em\",\n padding: \"1px 5px\",\n borderRadius: \"4px\",\n background: \"#f0f0f0\",\n fontFamily: \"monospace\",\n color: ACCENT,\n }}\n >\n {rest.slice(1, end)}\n </code>\n );\n rest = rest.slice(end + 1);\n continue;\n }\n }\n\n if (rest.startsWith(\"[\")) {\n const closeText = rest.indexOf(\"]\");\n if (closeText > 0 && rest[closeText + 1] === \"(\") {\n const closeUrl = rest.indexOf(\")\", closeText + 2);\n if (closeUrl > closeText + 1) {\n const label = rest.slice(1, closeText);\n const url = rest.slice(closeText + 2, closeUrl);\n parts.push(\n <a\n key={k++}\n href={url}\n target=\"_blank\"\n rel=\"noopener noreferrer\"\n style={{ color: SECONDARY, textDecoration: \"none\" }}\n >\n {renderInline(label)}\n </a>\n );\n rest = rest.slice(closeUrl + 1);\n continue;\n }\n }\n }\n\n if (rest.startsWith(\"*\")) {\n const end = rest.indexOf(\"*\", 1);\n if (end > 1) {\n parts.push(\n <em key={k++} style={{ fontStyle: \"italic\" }}>\n {renderInline(rest.slice(1, end))}\n </em>\n );\n rest = rest.slice(end + 1);\n continue;\n }\n }\n\n parts.push(<span key={k++}>{rest[0]}</span>);\n rest = rest.slice(1);\n }\n\n return parts;\n}\n\nfunction MarkdownBlock({ content }: { content: string }): React.ReactElement {\n const lines = content.split(\"\\n\");\n const elements: React.ReactNode[] = [];\n let key = 0;\n let i = 0;\n\n while (i < lines.length) {\n const trimmed = lines[i].trim();\n\n if (!trimmed) {\n i++;\n continue;\n }\n\n const headingMatch = trimmed.match(/^(#{1,4})\\s+(.+)/);\n if (headingMatch) {\n const level = headingMatch[1].length;\n const cfg: Record<number, { size: string; weight: number; serif: boolean; mt: string }> = {\n 1: { size: \"15px\", weight: 600, serif: true, mt: \"0\" },\n 2: { size: \"14px\", weight: 600, serif: true, mt: \"14px\" },\n 3: { size: \"12px\", weight: 600, serif: false, mt: \"12px\" },\n 4: { size: \"11px\", weight: 600, serif: false, mt: \"10px\" },\n };\n const s = cfg[level] ?? cfg[3];\n elements.push(\n <div\n key={key++}\n style={{\n fontSize: s.size,\n fontWeight: s.weight,\n fontFamily: s.serif ? \"var(--font-serif)\" : \"var(--font-sans)\",\n color: \"var(--foreground)\",\n letterSpacing: s.serif ? \"-0.005em\" : \"0\",\n marginTop: s.mt,\n marginBottom: \"6px\",\n lineHeight: 1.3,\n }}\n >\n {renderInline(headingMatch[2])}\n </div>\n );\n i++;\n continue;\n }\n\n if (trimmed.startsWith(\"- \") || trimmed.startsWith(\"* \")) {\n const items: string[] = [];\n while (i < lines.length) {\n const li = lines[i].trim();\n if (!li.startsWith(\"- \") && !li.startsWith(\"* \")) break;\n items.push(li.slice(2));\n i++;\n }\n elements.push(\n <div key={key++} style={{ margin: \"4px 0 8px 0\", paddingLeft: \"4px\" }}>\n {items.map((text, idx) => (\n <div\n key={idx}\n style={{\n display: \"flex\",\n gap: \"8px\",\n marginBottom: \"5px\",\n alignItems: \"baseline\",\n }}\n >\n <span\n style={{\n width: \"4px\",\n height: \"4px\",\n borderRadius: \"9999px\",\n background: ACCENT,\n opacity: 0.5,\n flexShrink: 0,\n marginTop: \"7px\",\n }}\n />\n <span style={{ flex: 1 }}>{renderInline(text)}</span>\n </div>\n ))}\n </div>\n );\n continue;\n }\n\n const numMatch = trimmed.match(/^(\\d+)\\.\\s+(.+)/);\n if (numMatch) {\n const items: { num: string; text: string }[] = [];\n while (i < lines.length) {\n const li = lines[i].trim();\n const m = li.match(/^(\\d+)\\.\\s+(.+)/);\n if (!m) break;\n items.push({ num: m[1], text: m[2] });\n i++;\n }\n elements.push(\n <div key={key++} style={{ margin: \"4px 0 8px 0\", paddingLeft: \"4px\" }}>\n {items.map((item, idx) => (\n <div\n key={idx}\n style={{\n display: \"flex\",\n gap: \"8px\",\n marginBottom: \"6px\",\n alignItems: \"baseline\",\n }}\n >\n <span\n style={{\n fontSize: \"10px\",\n fontWeight: 700,\n color: ACCENT,\n opacity: 0.7,\n minWidth: \"14px\",\n textAlign: \"right\",\n fontVariantNumeric: \"tabular-nums\",\n flexShrink: 0,\n }}\n >\n {item.num}\n </span>\n <span style={{ flex: 1 }}>{renderInline(item.text)}</span>\n </div>\n ))}\n </div>\n );\n continue;\n }\n\n elements.push(\n <p key={key++} style={{ margin: \"0 0 8px 0\", lineHeight: 1.65 }}>\n {renderInline(trimmed)}\n </p>\n );\n i++;\n }\n\n return <>{elements}</>;\n}\n\nexport function Markdown({\n content,\n inline = false,\n}: {\n content: string | null | undefined;\n inline?: boolean;\n}): React.ReactElement | null {\n if (!content) return null;\n if (inline) {\n return <span style={{ whiteSpace: \"pre-wrap\" }}>{renderInline(content)}</span>;\n }\n return <MarkdownBlock content={content} />;\n}\n","/**\n * Lightweight Mermaid flowchart parser.\n * Handles the common subset of `flowchart TD/LR/TB/RL/BT` syntax used in blog posts.\n * Returns null for non-flowchart diagram types (sequenceDiagram, erDiagram, etc.)\n * so the caller can fall back to Mermaid SVG rendering.\n */\n\nexport type NodeShape = 'rect' | 'rounded' | 'diamond' | 'circle' | 'cylinder';\n\nexport interface FlowNode {\n id: string;\n label: string;\n shape: NodeShape;\n}\n\nexport interface FlowEdge {\n source: string;\n target: string;\n label?: string;\n}\n\nexport interface ParsedFlow {\n direction: 'TB' | 'LR' | 'RL' | 'BT';\n nodes: FlowNode[];\n edges: FlowEdge[];\n}\n\n// ── Shape detection ──────────────────────────────────────────────────────────\n//\n// Mermaid node syntax:\n// id[Label] → rect\n// id([Label]) → rounded (stadium)\n// id{Label} → diamond\n// id((Label)) → circle\n// id[(Label)] → cylinder\n// id[[Label]] → subroutine (treat as rect)\n// id>Label] → asymmetric (treat as rect)\n//\n// A bare `id` with no brackets also represents a node.\n\nfunction detectShape(rawNode: string): { id: string; label: string; shape: NodeShape } {\n // cylinder: id[(label)]\n let m = rawNode.match(/^(\\w+)\\[(?:"|\")?([^\\]]*?)(?:"|\")?\\]$/);\n\n // Try each pattern in order of specificity\n const patterns: [RegExp, NodeShape][] = [\n [/^(\\w+)\\[\\((.+?)\\)\\]$/, 'rounded'], // ([label]) — stadium\n [/^(\\w+)\\[\\[(.+?)\\]\\]$/, 'rect'], // [[label]] — subroutine → rect\n [/^(\\w+)\\[\\((.+?)\\)\\]$/, 'rounded'], // [(label)] — cylinder approximation\n [/^(\\w+)\\(\\((.+?)\\)\\)$/, 'circle'], // ((label))\n [/^(\\w+)\\(\\[(.+?)\\]\\)$/, 'rounded'], // ([label])\n [/^(\\w+)\\[(.+?)\\]$/, 'rect'], // [label]\n [/^(\\w+)\\{(.+?)\\}$/, 'diamond'], // {label}\n ];\n\n for (const [re, shape] of patterns) {\n m = rawNode.match(re);\n if (m) return { id: m[1]!, label: unquote(m[2]!), shape };\n }\n\n // cylinder: id[(label)]\n m = rawNode.match(/^(\\w+)\\[\\((.+?)\\)\\]$/);\n if (m) return { id: m[1]!, label: unquote(m[2]!), shape: 'cylinder' };\n\n // bare id — no brackets\n const bare = rawNode.match(/^(\\w+)$/);\n if (bare) return { id: bare[1]!, label: bare[1]!, shape: 'rect' };\n\n // fallback: use the whole thing as id+label\n return { id: rawNode.replace(/\\W/g, '_'), label: rawNode, shape: 'rect' };\n}\n\nfunction unquote(s: string): string {\n return s.replace(/^[\"']|[\"']$/g, '').trim();\n}\n\n// ── Edge / inline node extraction ────────────────────────────────────────────\n//\n// Supported edge patterns:\n// A --> B\n// A[Label] --> B[Label]\n// A -->|edge label| B\n// A ---> B (long arrow, treat same)\n// A --- B (no arrow, treat same)\n\n// Split a line on edge tokens, returning [left, edgeLabel | undefined, right] or null\nfunction splitEdge(line: string): { left: string; right: string; edgeLabel?: string } | null {\n // Arrow with label: A -->|label| B\n let m = line.match(/^(.+?)\\s*--+>\\|([^|]*)\\|\\s*(.+)$/);\n if (m) return { left: m[1]!.trim(), right: m[3]!.trim(), edgeLabel: m[2]!.trim() || undefined };\n\n // Arrow without label: A --> B or A ---> B or A --- B\n m = line.match(/^(.+?)\\s*---*>?\\s+(.+)$/);\n if (m) return { left: m[1]!.trim(), right: m[2]!.trim() };\n\n return null;\n}\n\n// ── Main parser ───────────────────────────────────────────────────────────────\n\nexport function parseMermaidFlow(source: string): ParsedFlow | null {\n const lines = source\n .split('\\n')\n .map(l => l.trim())\n .filter(l => l && !l.startsWith('%%'));\n\n if (!lines.length) return null;\n\n // First non-empty line must be the flowchart header\n const header = lines[0]!.toLowerCase();\n if (!header.startsWith('flowchart') && !header.startsWith('graph')) return null;\n\n const directionMap: Record<string, ParsedFlow['direction']> = {\n td: 'TB', tb: 'TB', lr: 'LR', rl: 'RL', bt: 'BT',\n };\n const dirToken = header.split(/\\s+/)[1]?.toLowerCase() ?? 'td';\n const direction = directionMap[dirToken] ?? 'TB';\n\n const nodeMap = new Map<string, FlowNode>();\n const edges: FlowEdge[] = [];\n\n function ensureNode(raw: string) {\n const parsed = detectShape(raw);\n if (!nodeMap.has(parsed.id)) {\n nodeMap.set(parsed.id, parsed);\n } else if (parsed.label !== parsed.id) {\n // Update label if we have a more specific one\n const existing = nodeMap.get(parsed.id)!;\n if (existing.label === existing.id) {\n nodeMap.set(parsed.id, { ...existing, label: parsed.label, shape: parsed.shape });\n }\n }\n return parsed.id;\n }\n\n let inSubgraph = false;\n\n for (let i = 1; i < lines.length; i++) {\n const line = lines[i]!;\n\n // Skip subgraph declarations and ends (we ignore grouping for now)\n if (line.startsWith('subgraph')) { inSubgraph = true; continue; }\n if (line === 'end') { inSubgraph = false; continue; }\n\n // Check for edge\n const edgeParts = splitEdge(line);\n if (edgeParts) {\n // Expand chained edges: A --> B --> C → two edges\n let parts = [edgeParts.left];\n let rest = edgeParts.right;\n // Keep splitting right side for chained arrows\n let chain = splitEdge(rest);\n while (chain) {\n parts.push(chain.left);\n rest = chain.right;\n chain = splitEdge(rest);\n }\n parts.push(rest);\n\n for (let j = 0; j < parts.length - 1; j++) {\n const srcId = ensureNode(parts[j]!);\n const dstId = ensureNode(parts[j + 1]!);\n edges.push({\n source: srcId,\n target: dstId,\n label: j === 0 ? edgeParts.edgeLabel : undefined,\n });\n }\n continue;\n }\n\n // Standalone node definition (no edge arrow)\n if (line && !line.startsWith('style') && !line.startsWith('classDef') && !line.startsWith('class ')) {\n ensureNode(line);\n }\n }\n\n return {\n direction,\n nodes: Array.from(nodeMap.values()),\n edges,\n };\n}\n","/**\n * Dagre layout pass for Mermaid-parsed flowcharts.\n *\n * After dagre runs we optionally apply a snake (serpentine) transformation:\n * when a graph is too wide / too tall, we fold it into multiple rows that\n * alternate direction (LR → RL → LR …), keeping the flow continuous without\n * requiring the reader to scroll.\n */\n\nimport dagre from '@dagrejs/dagre';\nimport type { Node, Edge } from '@xyflow/react';\nimport type { ParsedFlow } from './parseMermaidFlow';\n\nconst RANK_DIR: Record<ParsedFlow['direction'], string> = {\n TB: 'TB', BT: 'BT', LR: 'LR', RL: 'RL',\n};\n\n// Apply snake when the primary-axis span exceeds this multiple of the\n// secondary-axis span (e.g., a graph 3× wider than it is tall).\nconst SNAKE_RATIO = 2.6;\n\nexport interface LayoutResult {\n nodes: Node[];\n edges: Edge[];\n graphWidth: number;\n graphHeight: number;\n}\n\n// ── Helpers ───────────────────────────────────────────────────────────────────\n\nfunction reverseDir(dir: ParsedFlow['direction']): ParsedFlow['direction'] {\n return dir === 'LR' ? 'RL' : dir === 'RL' ? 'LR' : dir === 'TB' ? 'BT' : 'TB';\n}\n\nfunction measureBounds(nodes: Node[]): { w: number; h: number } {\n let minX = Infinity, minY = Infinity, maxX = -Infinity, maxY = -Infinity;\n for (const n of nodes) {\n const x2 = n.position.x + (n.width as number);\n const y2 = n.position.y + (n.height as number);\n if (n.position.x < minX) minX = n.position.x;\n if (n.position.y < minY) minY = n.position.y;\n if (x2 > maxX) maxX = x2;\n if (y2 > maxY) maxY = y2;\n }\n return { w: maxX - minX + 40, h: maxY - minY + 40 };\n}\n\n/**\n * Serpentine / snake layout.\n *\n * Groups nodes by dagre rank (their position on the primary axis), then\n * redistributes them into multiple \"snake rows\" that alternate direction.\n * Each row contains at most `nodesPerRow` ranks. The turn points are\n * naturally at the row boundaries — edges between them route cleanly with\n * ReactFlow's smoothstep algorithm.\n *\n * Also updates each node's `data.direction` so that handles in reversed rows\n * are oriented correctly (target→left, source→right becomes target→right,\n * source→left in RL rows).\n */\nfunction applySnake(\n nodes: Node[],\n direction: ParsedFlow['direction'],\n rowGap: number,\n): void {\n const isHoriz = direction === 'LR' || direction === 'RL';\n // primary axis = the axis dagre laid ranks along\n const primary = (isHoriz ? 'x' : 'y') as 'x' | 'y';\n const secondary = (isHoriz ? 'y' : 'x') as 'x' | 'y';\n\n // ── 1. Group by rank (rounded to avoid float drift) ───────────────────────\n const rankMap = new Map<number, Node[]>();\n for (const n of nodes) {\n const key = Math.round(n.position[primary] / 2) * 2;\n if (!rankMap.has(key)) rankMap.set(key, []);\n rankMap.get(key)!.push(n);\n }\n const ranks = [...rankMap.keys()].sort((a, b) => a - b);\n if (ranks.length <= 5) return; // keep up to 5 in a single row before wrapping\n\n // ── 2. How many ranks per snake-row? ─────────────────────────────────────\n // Show up to 5 across, then fold to the next (reversed) row.\n const nodesPerRow = 5;\n\n // Average spacing between consecutive dagre ranks on the primary axis.\n const primarySpan = ranks[ranks.length - 1] - ranks[0];\n const rankStep = primarySpan / Math.max(ranks.length - 1, 1);\n\n // ── 3. Redistribute node positions ───────────────────────────────────────\n let secondaryOffset = 0; // Y offset for the current snake row (for LR graphs)\n\n for (let rowIdx = 0; rowIdx < Math.ceil(ranks.length / nodesPerRow); rowIdx++) {\n const rowRanks = ranks.slice(rowIdx * nodesPerRow, (rowIdx + 1) * nodesPerRow);\n const isReversed = rowIdx % 2 === 1;\n const rowDir = isReversed ? reverseDir(direction) : direction;\n\n let rowSecondaryMax = secondaryOffset;\n\n for (let colIdx = 0; colIdx < rowRanks.length; colIdx++) {\n const rank = rowRanks[colIdx];\n const rankNodes = rankMap.get(rank)!;\n\n // Snake column: even rows go 0→N, odd rows go N→0.\n const effectiveCol = isReversed ? (nodesPerRow - 1 - colIdx) : colIdx;\n const newPrimary = effectiveCol * rankStep;\n\n // Keep relative secondary positioning within the rank (e.g. stacked branches).\n const minSec = Math.min(...rankNodes.map(n => n.position[secondary]));\n\n for (const n of rankNodes) {\n const secOffset = n.position[secondary] - minSec;\n const newPos = { ...n.position };\n newPos[primary] = newPrimary;\n newPos[secondary] = secondaryOffset + secOffset;\n n.position = newPos;\n\n // Update direction so handles flip on reversed rows.\n n.data = { ...n.data, direction: rowDir };\n\n const nodeSecSize = (isHoriz\n ? (n.height as number)\n : (n.width as number)) || 40;\n rowSecondaryMax = Math.max(rowSecondaryMax,\n secondaryOffset + secOffset + nodeSecSize);\n }\n }\n\n secondaryOffset = rowSecondaryMax + rowGap;\n }\n}\n\n// ── Main export ───────────────────────────────────────────────────────────────\n\nexport function computeLayout(\n flow: ParsedFlow,\n nodeWidth = 148,\n nodeHeight = 40,\n): LayoutResult {\n const g = new dagre.graphlib.Graph();\n g.setDefaultEdgeLabel(() => ({}));\n g.setGraph({\n rankdir: RANK_DIR[flow.direction],\n ranksep: 60,\n nodesep: 40,\n marginx: 20,\n marginy: 20,\n });\n\n for (const node of flow.nodes) {\n const w = node.shape === 'diamond' ? nodeWidth + 40 : nodeWidth;\n const h = node.shape === 'diamond' ? nodeHeight + 24 : nodeHeight;\n g.setNode(node.id, { width: w, height: h });\n }\n for (const edge of flow.edges) {\n g.setEdge(edge.source, edge.target, {});\n }\n\n dagre.layout(g);\n\n // ── Build nodes ───────────────────────────────────────────────────────────\n const nodes: Node[] = flow.nodes.map((n) => {\n const pos = g.node(n.id);\n const w = n.shape === 'diamond' ? nodeWidth + 40 : nodeWidth;\n const h = n.shape === 'diamond' ? nodeHeight + 24 : nodeHeight;\n return {\n id: n.id,\n type: n.shape,\n position: { x: pos.x - w / 2, y: pos.y - h / 2 },\n data: { label: n.label, direction: flow.direction },\n width: w,\n height: h,\n };\n });\n\n // ── Snake transform if graph is too elongated ─────────────────────────────\n const pre = measureBounds(nodes);\n const isHoriz = flow.direction === 'LR' || flow.direction === 'RL';\n const preRatio = isHoriz\n ? pre.w / Math.max(pre.h, 1)\n : pre.h / Math.max(pre.w, 1);\n\n if (preRatio > SNAKE_RATIO && nodes.length > 4) {\n applySnake(nodes, flow.direction, 60);\n }\n\n // ── Measure final bounding box ────────────────────────────────────────────\n const { w: graphWidth, h: graphHeight } = measureBounds(nodes);\n\n // ── Build edges ───────────────────────────────────────────────────────────\n const edges: Edge[] = flow.edges.map((e, i) => ({\n id: `e-${e.source}-${e.target}-${i}`,\n source: e.source,\n target: e.target,\n label: e.label,\n type: 'smoothstep',\n style: { stroke: '#c93d1e', strokeWidth: 1.75 },\n labelStyle: {\n fill: '#6b6b6b',\n fontSize: 10,\n fontFamily: 'Plus Jakarta Sans, system-ui, sans-serif',\n },\n labelBgStyle: { fill: '#f8f8f7', fillOpacity: 0.92 },\n labelBgPadding: [3, 5] as [number, number],\n markerEnd: {\n type: 'arrowclosed' as const,\n color: '#c93d1e',\n width: 16,\n height: 16,\n },\n }));\n\n return { nodes, edges, graphWidth, graphHeight };\n}\n","\"use client\";\n\nimport React, { useCallback, useEffect, useMemo, useRef, useState } from \"react\";\nimport { createPortal } from \"react-dom\";\nimport {\n ReactFlow,\n Background,\n BackgroundVariant,\n Handle,\n Position,\n useNodesState,\n useEdgesState,\n useReactFlow,\n ReactFlowProvider,\n type NodeProps,\n type Node,\n type Edge,\n} from \"@xyflow/react\";\nimport \"@xyflow/react/dist/style.css\";\nimport { useTheme, type ThemeTokens } from \"../../shared/ThemeContext\";\nimport { parseMermaidFlow } from \"./parseMermaidFlow\";\nimport { computeLayout } from \"./layoutFlow\";\n\n// Tokens reach the custom nodes (rendered by React Flow, outside our JSX tree)\n// via CSS variables set on the wrapper — this keeps `nodeTypes` a stable module\n// constant, which React Flow requires.\nfunction themeVars(t: ThemeTokens): React.CSSProperties {\n return {\n // eslint-disable-next-line @typescript-eslint/consistent-type-assertions\n [\"--gx-accent\" as string]: t.ACCENT,\n [\"--gx-border\" as string]: t.BORDER,\n [\"--gx-muted\" as string]: t.MUTED,\n [\"--gx-bg\" as string]: \"#ffffff\",\n [\"--gx-bg-subtle\" as string]: t.PAPER,\n [\"--gx-text\" as string]: \"var(--foreground)\",\n [\"--gx-outline\" as string]: \"var(--foreground)\",\n [\"--gx-font\" as string]: \"var(--font-sans, Figtree, system-ui, sans-serif)\",\n } as React.CSSProperties;\n}\n\ntype Dir = \"TB\" | \"BT\" | \"LR\" | \"RL\";\n\nconst hDot: React.CSSProperties = {\n width: 8,\n height: 8,\n background: \"var(--gx-accent)\",\n border: \"2px solid var(--gx-bg)\",\n borderRadius: \"50%\",\n};\n\nfunction Handles({ dir }: { dir?: Dir }) {\n switch (dir) {\n case \"BT\":\n return (\n <>\n <Handle type=\"target\" position={Position.Bottom} style={hDot} />\n <Handle type=\"source\" position={Position.Top} style={hDot} />\n </>\n );\n case \"LR\":\n return (\n <>\n <Handle type=\"target\" position={Position.Left} style={hDot} />\n <Handle type=\"source\" position={Position.Right} style={hDot} />\n </>\n );\n case \"RL\":\n return (\n <>\n <Handle type=\"target\" position={Position.Right} style={hDot} />\n <Handle type=\"source\" position={Position.Left} style={hDot} />\n </>\n );\n default:\n return (\n <>\n <Handle type=\"target\" position={Position.Top} style={hDot} />\n <Handle type=\"source\" position={Position.Bottom} style={hDot} />\n </>\n );\n }\n}\n\ntype Status = \"pending\" | \"active\" | \"done\" | \"error\";\n\n// Per-status styling is class-driven (keyframes can't live in inline styles).\n// The classes override border/background and pulse, with smooth transitions so an\n// in-place state change visibly \"paints\" the next stage.\nconst FLOW_ANIM_CSS = `\n.gx-flow-node{transition:opacity .3s ease,box-shadow .35s ease,border-color .3s ease,background-color .3s ease;}\n.gx-flow-pending{opacity:.45;}\n.gx-flow-active{border-color:var(--gx-accent)!important;background-color:color-mix(in srgb,var(--gx-accent) 9%,#fff)!important;animation:gxFlowPulse 1.5s ease-in-out infinite;}\n.gx-flow-done{border-color:var(--gx-accent)!important;background-color:color-mix(in srgb,var(--gx-accent) 15%,#fff)!important;}\n.gx-flow-error{border-color:#dc2626!important;background-color:#fdecec!important;}\n.gx-flow-poly{transition:stroke .3s ease,fill .3s ease;}\n.gx-flow-active .gx-flow-poly{stroke:var(--gx-accent);fill:color-mix(in srgb,var(--gx-accent) 9%,#fff);}\n.gx-flow-done .gx-flow-poly{stroke:var(--gx-accent);fill:color-mix(in srgb,var(--gx-accent) 15%,#fff);}\n.gx-done-badge{position:absolute;top:-7px;right:-7px;width:15px;height:15px;border-radius:50%;background:var(--gx-accent);color:#fff;display:flex;align-items:center;justify-content:center;z-index:3;box-shadow:0 1px 2px rgba(0,0,0,.2);}\n@keyframes gxFlowPulse{0%,100%{box-shadow:0 0 0 0 color-mix(in srgb,var(--gx-accent) 50%,transparent);}50%{box-shadow:0 0 0 7px color-mix(in srgb,var(--gx-accent) 0%,transparent);}}\n@media (prefers-reduced-motion: reduce){.gx-flow-active{animation:none;}}\n`;\n\nfunction nodeClass(status?: Status): string {\n return \"gx-flow-node\" + (status ? ` gx-flow-${status}` : \"\");\n}\n\nfunction DoneBadge() {\n return (\n <span className=\"gx-done-badge\" aria-hidden=\"true\">\n <svg width=\"9\" height=\"9\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" strokeWidth=\"4\" strokeLinecap=\"round\" strokeLinejoin=\"round\"><path d=\"M20 6 9 17l-5-5\" /></svg>\n </span>\n );\n}\n\nconst nodeBase: React.CSSProperties = {\n position: \"relative\",\n background: \"var(--gx-bg)\",\n color: \"var(--gx-text)\",\n border: \"1.5px solid var(--gx-outline)\",\n fontFamily: \"var(--gx-font)\",\n fontSize: \"12px\",\n fontWeight: 500,\n display: \"flex\",\n alignItems: \"center\",\n justifyContent: \"center\",\n textAlign: \"center\",\n padding: \"8px 14px\",\n width: \"100%\",\n height: \"100%\",\n boxSizing: \"border-box\",\n userSelect: \"none\",\n lineHeight: 1.3,\n};\n\nfunction RectNode({ data }: NodeProps) {\n const s = data.status as Status | undefined;\n return (\n <div className={nodeClass(s)} style={{ ...nodeBase, borderRadius: \"6px\" }}>\n <Handles dir={data.direction as Dir} />\n {s === \"done\" && <DoneBadge />}\n {String(data.label ?? \"\")}\n </div>\n );\n}\n\nfunction RoundedNode({ data }: NodeProps) {\n const s = data.status as Status | undefined;\n return (\n <div className={nodeClass(s)} style={{ ...nodeBase, borderRadius: \"999px\" }}>\n <Handles dir={data.direction as Dir} />\n {s === \"done\" && <DoneBadge />}\n {String(data.label ?? \"\")}\n </div>\n );\n}\n\nfunction CircleNode({ data }: NodeProps) {\n const s = data.status as Status | undefined;\n return (\n <div className={nodeClass(s)} style={{ ...nodeBase, borderRadius: \"50%\", padding: \"6px\" }}>\n <Handles dir={data.direction as Dir} />\n {s === \"done\" && <DoneBadge />}\n {String(data.label ?? \"\")}\n </div>\n );\n}\n\nfunction DiamondNode({ data }: NodeProps) {\n const s = data.status as Status | undefined;\n return (\n <div className={nodeClass(s)} style={{ position: \"relative\", width: \"100%\", height: \"100%\", display: \"flex\", alignItems: \"center\", justifyContent: \"center\", border: \"none\", background: \"transparent\" }}>\n <Handles dir={data.direction as Dir} />\n {s === \"done\" && <DoneBadge />}\n <svg style={{ position: \"absolute\", inset: 0, width: \"100%\", height: \"100%\", overflow: \"visible\" }} viewBox=\"0 0 1 1\" preserveAspectRatio=\"none\">\n <polygon className=\"gx-flow-poly\" points=\"0.5,0.03 0.97,0.5 0.5,0.97 0.03,0.5\" fill=\"var(--gx-bg)\" stroke=\"var(--gx-outline)\" strokeWidth=\"1.5\" vectorEffect=\"non-scaling-stroke\" />\n </svg>\n <span style={{ position: \"relative\", zIndex: 1, fontFamily: \"var(--gx-font)\", fontSize: \"11px\", fontWeight: 500, color: \"var(--gx-text)\", textAlign: \"center\", lineHeight: 1.25, userSelect: \"none\", padding: \"0 22px\", maxWidth: \"100%\" }}>\n {String(data.label ?? \"\")}\n </span>\n </div>\n );\n}\n\nfunction CylinderNode({ data }: NodeProps) {\n const a = 5;\n const s = data.status as Status | undefined;\n return (\n <div className={nodeClass(s)} style={{ position: \"relative\", width: \"100%\", height: \"100%\", border: \"none\", background: \"transparent\" }}>\n <Handles dir={data.direction as Dir} />\n {s === \"done\" && <DoneBadge />}\n <div style={{ position: \"absolute\", top: 0, left: 0, right: 0, height: a * 2, border: \"1.5px solid var(--gx-outline)\", borderRadius: \"50%\", background: \"var(--gx-bg)\", zIndex: 1 }} />\n <div style={{ position: \"absolute\", inset: `${a}px 0`, border: \"1.5px solid var(--gx-outline)\", borderTop: \"none\", borderBottom: \"none\", background: \"var(--gx-bg)\", display: \"flex\", alignItems: \"center\", justifyContent: \"center\", fontFamily: \"var(--gx-font)\", fontSize: \"12px\", fontWeight: 500, color: \"var(--gx-text)\" }}>\n {String(data.label ?? \"\")}\n </div>\n <div style={{ position: \"absolute\", bottom: 0, left: 0, right: 0, height: a * 2, border: \"1.5px solid var(--gx-outline)\", borderRadius: \"50%\", background: \"var(--gx-bg)\", zIndex: 1 }} />\n </div>\n );\n}\n\nconst nodeTypes = {\n rect: RectNode,\n rounded: RoundedNode,\n circle: CircleNode,\n diamond: DiamondNode,\n cylinder: CylinderNode,\n};\n\n// ── Pill button ─────────────────────────────────────────────────────────────\nconst pillStyle: React.CSSProperties = {\n display: \"flex\",\n alignItems: \"center\",\n gap: \"5px\",\n height: \"26px\",\n padding: \"0 10px\",\n background: \"rgba(255,255,255,0.9)\",\n backdropFilter: \"blur(10px)\",\n WebkitBackdropFilter: \"blur(10px)\",\n border: \"1px solid var(--gx-border)\",\n borderRadius: \"100px\",\n cursor: \"pointer\",\n color: \"var(--gx-muted)\",\n fontSize: \"11px\",\n fontFamily: \"var(--gx-font)\",\n fontWeight: 500,\n boxShadow: \"0 1px 3px rgba(0,0,0,0.07)\",\n transition: \"background 0.12s, color 0.12s\",\n};\nconst onEnter = (e: React.MouseEvent<HTMLButtonElement>) => { e.currentTarget.style.background = \"var(--gx-bg)\"; e.currentTarget.style.color = \"var(--gx-text)\"; };\nconst onLeave = (e: React.MouseEvent<HTMLButtonElement>) => { e.currentTarget.style.background = \"rgba(255,255,255,0.9)\"; e.currentTarget.style.color = \"var(--gx-muted)\"; };\n\nconst ExpandIcon = () => <svg width=\"11\" height=\"11\" viewBox=\"0 0 11 11\" fill=\"none\" stroke=\"currentColor\" strokeWidth=\"1.75\" strokeLinecap=\"round\"><path d=\"M1 4V1h3M7 1h3v3M10 7v3H7M4 10H1V7\" /></svg>;\nconst CloseIcon = () => <svg width=\"10\" height=\"10\" viewBox=\"0 0 10 10\" fill=\"none\" stroke=\"currentColor\" strokeWidth=\"2\" strokeLinecap=\"round\"><line x1=\"1\" y1=\"1\" x2=\"9\" y2=\"9\" /><line x1=\"9\" y1=\"1\" x2=\"1\" y2=\"9\" /></svg>;\n\nfunction FitBtn() {\n const { fitView } = useReactFlow();\n return (\n <button style={pillStyle} onClick={() => fitView({ padding: 0.1, duration: 300 })} onMouseEnter={onEnter} onMouseLeave={onLeave}>\n <svg width=\"11\" height=\"11\" viewBox=\"0 0 11 11\" fill=\"none\" stroke=\"currentColor\" strokeWidth=\"1.75\" strokeLinecap=\"round\" strokeLinejoin=\"round\"><path d=\"M1 4V1h3M7 1h3v3M10 7v3H7M4 10H1V7\" /></svg>\n <span>Fit</span>\n </button>\n );\n}\n\n// ── Aspect-derived display height ─────────────────────────────────────────────\n// Height tracks the laid-out graph's natural aspect ratio against the measured\n// container width, clamped to a readable band. Keeps short graphs short and\n// snake-folded graphs compact instead of a tall thin column.\nfunction idealHeight(boxW: number, graphWidth: number, graphHeight: number): number {\n if (!graphWidth || !graphHeight || !boxW) return 300;\n const ratio = graphWidth / graphHeight;\n const h = Math.round(boxW / ratio);\n return Math.max(220, Math.min(480, h));\n}\n\n// ── Mermaid fallback (sequence / ER / class — anything parseMermaidFlow rejects)\nlet mermaidReady = false;\nlet mermaidSig = \"\";\nlet renderSeq = 0;\nasync function getMermaid(t: ThemeTokens) {\n const m = (await import(\"mermaid\")).default;\n const sig = `${t.ACCENT}|${t.BORDER}|${t.PAPER}|${t.MUTED}`;\n if (!mermaidReady || mermaidSig !== sig) {\n m.initialize({\n startOnLoad: false,\n logLevel: 5,\n theme: \"base\",\n themeVariables: {\n primaryColor: \"#ffffff\",\n primaryBorderColor: \"#171717\",\n primaryTextColor: \"#171717\",\n mainBkg: \"#ffffff\",\n nodeBorder: \"#171717\",\n lineColor: t.ACCENT,\n secondaryColor: t.PAPER,\n clusterBkg: t.PAPER,\n clusterBorder: t.BORDER,\n noteBkgColor: t.PAPER,\n noteBorderColor: t.BORDER,\n actorLineColor: t.ACCENT,\n loopTextColor: t.MUTED,\n fontFamily: \"Figtree, system-ui, sans-serif\",\n fontSize: \"12px\",\n },\n });\n mermaidReady = true;\n mermaidSig = sig;\n }\n return m;\n}\nfunction MermaidFallback({ diagram, title }: { diagram: string; title?: string }) {\n const tokens = useTheme();\n const [svg, setSvg] = useState(\"\");\n const [err, setErr] = useState(false);\n const [full, setFull] = useState(false);\n const idRef = useRef(0);\n useEffect(() => {\n const id = ++renderSeq;\n idRef.current = id;\n setErr(false);\n (async () => {\n try {\n const m = await getMermaid(tokens);\n if (idRef.current !== id) return;\n const { svg: out } = await m.render(`gx-mm-${id}`, diagram);\n if (idRef.current !== id) return;\n setSvg(out);\n } catch {\n if (idRef.current === id) setErr(true);\n }\n })();\n }, [diagram, tokens]);\n\n if (err) {\n return (\n <div style={{ height: \"100%\", overflow: \"auto\", padding: 20, fontSize: 12, fontFamily: \"var(--font-sans)\", display: \"flex\", flexDirection: \"column\", gap: 8 }}>\n <span style={{ color: tokens.ACCENT, fontWeight: 500 }}>Diagram syntax error</span>\n <pre style={{ fontSize: 11, background: \"#ffffff\", border: `1px solid ${tokens.BORDER}`, borderRadius: 6, padding: \"10px 12px\", overflowX: \"auto\", whiteSpace: \"pre-wrap\", wordBreak: \"break-word\", color: \"var(--foreground)\", margin: 0 }}>{diagram}</pre>\n </div>\n );\n }\n if (!svg) {\n return <div style={{ height: \"100%\", display: \"flex\", alignItems: \"center\", justifyContent: \"center\", color: tokens.MUTED, fontSize: 11, fontFamily: \"var(--font-sans)\", letterSpacing: \"0.06em\", textTransform: \"uppercase\" }}>rendering</div>;\n }\n return (\n <div style={{ position: \"relative\", height: \"100%\", overflow: \"auto\" }}>\n <div className=\"mermaid-output\" dangerouslySetInnerHTML={{ __html: svg }} />\n <button style={{ ...pillStyle, position: \"absolute\", top: 10, right: 10, zIndex: 10 }} onClick={() => setFull(true)} onMouseEnter={onEnter} onMouseLeave={onLeave}>\n <ExpandIcon /><span>Expand</span>\n </button>\n {full && typeof document !== \"undefined\" && createPortal(\n <div style={{ ...themeVars(tokens), position: \"fixed\", inset: 0, zIndex: 9999, background: \"rgba(23,23,23,0.55)\", display: \"flex\", alignItems: \"center\", justifyContent: \"center\", backdropFilter: \"blur(6px)\", WebkitBackdropFilter: \"blur(6px)\" }} onClick={(e) => { if (e.target === e.currentTarget) setFull(false); }}>\n <div style={{ background: \"#ffffff\", borderRadius: 10, border: `1px solid ${tokens.BORDER}`, boxShadow: \"0 8px 32px rgba(23,23,23,0.12)\", width: \"min(92vw,1280px)\", height: \"min(88vh,960px)\", display: \"flex\", flexDirection: \"column\", overflow: \"hidden\" }}>\n <div style={{ padding: \"8px 12px\", borderBottom: `1px solid ${tokens.BORDER}`, display: \"flex\", alignItems: \"center\", justifyContent: \"space-between\", background: tokens.PAPER }}>\n <span style={{ fontFamily: \"var(--font-sans)\", fontSize: 12, color: tokens.MUTED }}>{title ?? \"Diagram\"}</span>\n <button style={{ ...pillStyle, color: tokens.ACCENT }} onClick={() => setFull(false)}><CloseIcon /><span>Close</span></button>\n </div>\n <div style={{ flex: 1, overflow: \"auto\", display: \"flex\", alignItems: \"center\", justifyContent: \"center\", padding: 32 }}>\n <div dangerouslySetInnerHTML={{ __html: svg }} style={{ maxWidth: \"100%\" }} />\n </div>\n </div>\n </div>,\n document.body,\n )}\n </div>\n );\n}\n\n// ── Fullscreen modal (React Flow — own provider so it doesn't share store) ────\nfunction FullscreenModalInner({ nodes, edges, title, onClose }: { nodes: Node[]; edges: Edge[]; title?: string; onClose: () => void }) {\n const tokens = useTheme();\n const [n, , onNC] = useNodesState(nodes);\n const [e, , onEC] = useEdgesState(edges);\n return (\n <div style={{ ...themeVars(tokens), position: \"fixed\", inset: 0, zIndex: 9999, background: \"rgba(23,23,23,0.55)\", display: \"flex\", alignItems: \"center\", justifyContent: \"center\", backdropFilter: \"blur(6px)\", WebkitBackdropFilter: \"blur(6px)\" }} onClick={(ev) => { if (ev.target === ev.currentTarget) onClose(); }}>\n <div style={{ background: \"#ffffff\", borderRadius: \"10px\", border: `1px solid ${tokens.BORDER}`, boxShadow: \"0 8px 32px rgba(23,23,23,0.12)\", width: \"min(92vw,1280px)\", height: \"min(88vh,960px)\", display: \"flex\", flexDirection: \"column\", overflow: \"hidden\" }}>\n <div style={{ padding: \"8px 12px\", borderBottom: `1px solid ${tokens.BORDER}`, display: \"flex\", alignItems: \"center\", justifyContent: \"space-between\", background: tokens.PAPER, flexShrink: 0 }}>\n <span style={{ fontFamily: \"var(--font-sans)\", fontSize: \"12px\", color: tokens.MUTED }}>{title ?? \"Diagram\"}</span>\n <div style={{ display: \"flex\", gap: \"6px\" }}>\n <FitBtn />\n <button style={{ ...pillStyle, color: tokens.ACCENT }} onClick={onClose}><CloseIcon /><span>Close</span></button>\n </div>\n </div>\n <div style={{ flex: 1, position: \"relative\" }}>\n <ReactFlow nodes={n} edges={e} nodeTypes={nodeTypes} onNodesChange={onNC} onEdgesChange={onEC} fitView fitViewOptions={{ padding: 0.1 }} nodesDraggable={false} nodesConnectable={false} elementsSelectable={false} panOnDrag zoomOnScroll minZoom={0.15} maxZoom={4} proOptions={{ hideAttribution: true }} style={{ background: tokens.PAPER, width: \"100%\", height: \"100%\" }}>\n <Background variant={BackgroundVariant.Dots} gap={20} size={1} color={tokens.BORDER} />\n </ReactFlow>\n </div>\n </div>\n </div>\n );\n}\n\nfunction FullscreenModal({ nodes, edges, title, onClose }: { nodes: Node[]; edges: Edge[]; title?: string; onClose: () => void }) {\n useEffect(() => {\n const h = (e: KeyboardEvent) => { if (e.key === \"Escape\") onClose(); };\n window.addEventListener(\"keydown\", h);\n return () => window.removeEventListener(\"keydown\", h);\n }, [onClose]);\n return createPortal(\n <ReactFlowProvider>\n <FullscreenModalInner nodes={nodes} edges={edges} title={title} onClose={onClose} />\n </ReactFlowProvider>,\n document.body,\n );\n}\n\n// ── Animation helpers ────────────────────────────────────────────────────────\nfunction usePrefersReducedMotion(): boolean {\n const [reduced, setReduced] = useState(false);\n useEffect(() => {\n if (typeof matchMedia === \"undefined\") return;\n const mq = matchMedia(\"(prefers-reduced-motion: reduce)\");\n setReduced(mq.matches);\n const h = () => setReduced(mq.matches);\n mq.addEventListener?.(\"change\", h);\n return () => mq.removeEventListener?.(\"change\", h);\n }, []);\n return reduced;\n}\n\n// Topological order of node ids (Kahn); leftovers (cycles) appended in input order.\nfunction topoOrder(nodeIds: string[], edges: { source: string; target: string }[]): string[] {\n const indeg = new Map<string, number>(nodeIds.map((id) => [id, 0]));\n const adj = new Map<string, string[]>(nodeIds.map((id) => [id, []]));\n for (const e of edges) {\n if (!indeg.has(e.target) || !adj.has(e.source)) continue;\n indeg.set(e.target, (indeg.get(e.target) ?? 0) + 1);\n adj.get(e.source)!.push(e.target);\n }\n const queue = nodeIds.filter((id) => (indeg.get(id) ?? 0) === 0);\n const seen = new Set<string>();\n const order: string[] = [];\n while (queue.length) {\n const id = queue.shift() as string;\n if (seen.has(id)) continue;\n seen.add(id);\n order.push(id);\n for (const t of adj.get(id) ?? []) {\n indeg.set(t, (indeg.get(t) ?? 1) - 1);\n if ((indeg.get(t) ?? 0) <= 0 && !seen.has(t)) queue.push(t);\n }\n }\n for (const id of nodeIds) if (!seen.has(id)) order.push(id);\n return order;\n}\n\n// Walk the graph: each tick advances the active node (prior=done), holds on\n// all-done, then loops. Disabled under reduced-motion.\nfunction useAutoplay(order: string[], enabled: boolean): Record<string, Status> {\n const reduced = usePrefersReducedMotion();\n const [step, setStep] = useState(0);\n const key = order.join(\"|\");\n useEffect(() => {\n if (!enabled || reduced || order.length === 0) { setStep(0); return; }\n let s = 0;\n setStep(0);\n let timer: ReturnType<typeof setTimeout>;\n const tick = () => {\n s += 1;\n if (s > order.length) { s = 0; setStep(0); timer = setTimeout(tick, 850); return; }\n setStep(s);\n timer = setTimeout(tick, s === order.length ? 1100 : 850);\n };\n timer = setTimeout(tick, 850);\n return () => clearTimeout(timer);\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [enabled, reduced, key]);\n return useMemo(() => {\n const m: Record<string, Status> = {};\n order.forEach((id, i) => { m[id] = i < step ? \"done\" : i === step ? \"active\" : \"pending\"; });\n if (step >= order.length) order.forEach((id) => (m[id] = \"done\"));\n return m;\n }, [order, step]);\n}\n\n// Resolve explicit per-node states keyed by node id OR label.\nfunction resolveStates(\n nodes: Node[],\n nodeStates?: Record<string, Status>\n): Record<string, Status> {\n if (!nodeStates) return {};\n const m: Record<string, Status> = {};\n for (const n of nodes) {\n const label = (n.data as { label?: string } | undefined)?.label;\n const st = nodeStates[n.id] ?? (label ? nodeStates[label] : undefined);\n if (st) m[n.id] = st;\n }\n return m;\n}\n\n// ── Main inner component (inside ReactFlowProvider) ──────────────────────────\ninterface FlowGraphProps {\n diagram: string;\n title?: string;\n autoplay?: boolean;\n nodeStates?: Record<string, Status>;\n}\n\nfunction Inner({ diagram, title, autoplay, nodeStates }: FlowGraphProps) {\n const tokens = useTheme();\n const [full, setFull] = useState(false);\n const [focused, setFocused] = useState(false);\n const [boxW, setBoxW] = useState(640);\n const containerRef = useRef<HTMLDivElement>(null);\n\n const parsed = useMemo(() => parseMermaidFlow(diagram), [diagram]);\n const layout = useMemo(() => (parsed ? computeLayout(parsed) : null), [parsed]);\n\n // computeLayout (ported verbatim) bakes the reference's own edge colors —\n // re-theme them here where the platform tokens are available.\n const themedEdges = useMemo<Edge[]>(\n () =>\n (layout?.edges ?? []).map((e) => ({\n ...e,\n style: { ...e.style, stroke: tokens.ACCENT, strokeWidth: 1.75 },\n labelStyle: { fill: tokens.MUTED, fontSize: 10, fontFamily: \"var(--font-sans, Figtree, system-ui, sans-serif)\" },\n labelBgStyle: { fill: \"#ffffff\", fillOpacity: 0.92 },\n markerEnd: { type: \"arrowclosed\" as const, color: tokens.ACCENT, width: 12, height: 12 },\n })),\n [layout, tokens.ACCENT, tokens.MUTED]\n );\n\n // Per-node run status: autoplay walker (demo) or explicit nodeStates (live data).\n const order = useMemo(\n () => topoOrder((layout?.nodes ?? []).map((n) => n.id), layout?.edges ?? []),\n [layout]\n );\n const autoStatus = useAutoplay(order, !!autoplay);\n const staticStatus = useMemo(() => resolveStates(layout?.nodes ?? [], nodeStates), [layout, nodeStates]);\n const statusMap = autoplay ? autoStatus : staticStatus;\n\n // Apply status to nodes (data.status drives styling) and edges (flowing/dim).\n const displayNodes = useMemo<Node[]>(\n () => (layout?.nodes ?? []).map((n) => ({ ...n, data: { ...n.data, status: statusMap[n.id] } })),\n [layout, statusMap]\n );\n const displayEdges = useMemo<Edge[]>(\n () =>\n themedEdges.map((e) => {\n const ss = statusMap[e.source];\n const ts = statusMap[e.target];\n const flowing = ss === \"done\" && ts === \"active\";\n const bothDone = ss === \"done\" && ts === \"done\";\n const anyStatus = !!(ss || ts);\n const lit = flowing || bothDone;\n const stroke = lit || !anyStatus ? tokens.ACCENT : tokens.BORDER;\n return {\n ...e,\n animated: flowing,\n style: { ...e.style, stroke, strokeWidth: flowing ? 2.25 : 1.75, opacity: anyStatus && !lit ? 0.5 : 1, transition: \"stroke 0.3s ease, opacity 0.3s ease\" },\n markerEnd: { type: \"arrowclosed\" as const, color: stroke, width: 12, height: 12 },\n };\n }),\n [themedEdges, statusMap, tokens.ACCENT, tokens.BORDER]\n );\n\n const [nodes, setNodes, onNC] = useNodesState(displayNodes);\n const [edges, setEdges, onEC] = useEdgesState(displayEdges);\n const rf = useReactFlow();\n\n // Push status-updated nodes/edges into React Flow (every tick / state change).\n useEffect(() => { setNodes(displayNodes); }, [displayNodes, setNodes]);\n useEffect(() => { setEdges(displayEdges); }, [displayEdges, setEdges]);\n\n // Fit only when the graph (layout) changes — not on every status tick.\n useEffect(() => {\n const id = requestAnimationFrame(() => { try { rf.fitView({ padding: 0.1 }); } catch { /* not ready */ } });\n return () => cancelAnimationFrame(id);\n }, [layout, rf]);\n\n const handleClickOutside = useCallback((e: MouseEvent) => {\n if (containerRef.current && !containerRef.current.contains(e.target as globalThis.Node)) setFocused(false);\n }, []);\n useEffect(() => {\n document.addEventListener(\"mousedown\", handleClickOutside);\n return () => document.removeEventListener(\"mousedown\", handleClickOutside);\n }, [handleClickOutside]);\n\n // Measure container width to derive display height. Debounced via rAF and\n // guarded on real width change so it can't feedback-loop with React Flow's\n // own ResizeObserver (the height we set would otherwise retrigger it).\n useEffect(() => {\n const el = containerRef.current;\n if (!el) return;\n let raf = 0;\n const measure = () => {\n const w = el.clientWidth || 640;\n setBoxW((prev) => (Math.abs(prev - w) > 1 ? w : prev));\n };\n measure();\n if (typeof ResizeObserver === \"undefined\") return;\n const ro = new ResizeObserver(() => {\n cancelAnimationFrame(raf);\n raf = requestAnimationFrame(measure);\n });\n ro.observe(el);\n return () => { cancelAnimationFrame(raf); ro.disconnect(); };\n }, []);\n\n if (!parsed || !layout) {\n return (\n <div style={{ ...themeVars(tokens), height: 320 }}>\n <MermaidFallback diagram={diagram} title={title} />\n </div>\n );\n }\n\n const h = idealHeight(boxW, layout.graphWidth, layout.graphHeight);\n\n return (\n <div ref={containerRef} style={{ ...themeVars(tokens), position: \"relative\", width: \"100%\", height: h }} onMouseDown={() => setFocused(true)}>\n <style>{FLOW_ANIM_CSS}</style>\n <ReactFlow\n nodes={nodes}\n edges={edges}\n nodeTypes={nodeTypes}\n onNodesChange={onNC}\n onEdgesChange={onEC}\n fitView\n fitViewOptions={{ padding: 0.1 }}\n nodesDraggable={false}\n nodesConnectable={false}\n elementsSelectable={false}\n panOnDrag\n zoomOnScroll={focused}\n preventScrolling={focused}\n minZoom={0.2}\n maxZoom={4}\n proOptions={{ hideAttribution: true }}\n style={{ background: tokens.PAPER, width: \"100%\", height: \"100%\", borderRadius: 10 }}\n >\n <Background variant={BackgroundVariant.Dots} gap={20} size={1} color={tokens.BORDER} />\n </ReactFlow>\n\n <div style={{ position: \"absolute\", top: 10, right: 10, zIndex: 10, display: \"flex\", gap: 6 }}>\n <FitBtn />\n <button style={pillStyle} onClick={() => setFull(true)} onMouseEnter={onEnter} onMouseLeave={onLeave}>\n <ExpandIcon /><span>Expand</span>\n </button>\n </div>\n\n {full && typeof document !== \"undefined\" && (\n <FullscreenModal nodes={displayNodes} edges={displayEdges} title={title} onClose={() => setFull(false)} />\n )}\n </div>\n );\n}\n\nexport function FlowGraph({ diagram, title, autoplay, nodeStates }: FlowGraphProps) {\n return (\n <ReactFlowProvider>\n <Inner diagram={diagram} title={title} autoplay={autoplay} nodeStates={nodeStates} />\n </ReactFlowProvider>\n );\n}\n","\"use client\";\n\nimport React, { useState, useCallback, useEffect } from \"react\";\nimport { Document, Page, pdfjs } from \"react-pdf\";\nimport \"react-pdf/dist/Page/AnnotationLayer.css\";\nimport \"react-pdf/dist/Page/TextLayer.css\";\n\npdfjs.GlobalWorkerOptions.workerSrc = `https://unpkg.com/pdfjs-dist@${pdfjs.version}/build/pdf.worker.min.mjs`;\n\nimport { BORDER, MUTED, ACCENT } from \"../../shared/theme\";\nconst TERRACOTTA = ACCENT;\n\ninterface PdfViewerProps {\n url?: string;\n base64?: string;\n onLoadSuccess?: (numPages: number) => void;\n}\n\nexport function PdfViewer({ url, base64, onLoadSuccess }: PdfViewerProps) {\n const [numPages, setNumPages] = useState(0);\n const [currentPage, setCurrentPage] = useState(1);\n const [loading, setLoading] = useState(true);\n\n const handleLoad = useCallback(({ numPages: n }: { numPages: number }) => {\n setNumPages(n);\n setLoading(false);\n onLoadSuccess?.(n);\n }, [onLoadSuccess]);\n\n useEffect(() => {\n if (numPages <= 1) return;\n const handler = (e: KeyboardEvent) => {\n const tag = (e.target as HTMLElement)?.tagName;\n if (tag === \"INPUT\" || tag === \"TEXTAREA\") return;\n if (e.key === \"ArrowLeft\" || e.key === \"ArrowUp\") {\n e.preventDefault();\n setCurrentPage((p) => Math.max(1, p - 1));\n } else if (e.key === \"ArrowRight\" || e.key === \"ArrowDown\") {\n e.preventDefault();\n setCurrentPage((p) => Math.min(numPages, p + 1));\n }\n };\n window.addEventListener(\"keydown\", handler);\n return () => window.removeEventListener(\"keydown\", handler);\n }, [numPages]);\n\n return (\n <div style={{ display: \"flex\", flexDirection: \"column\", alignItems: \"center\", gap: \"0\" }}>\n {numPages > 1 && (\n <div style={{\n display: \"flex\", alignItems: \"center\", gap: \"8px\", padding: \"8px 14px\",\n background: \"white\", width: \"100%\", justifyContent: \"center\",\n borderBottom: `1px solid ${BORDER}`,\n }}>\n <button\n onClick={() => setCurrentPage((p) => Math.max(1, p - 1))}\n disabled={currentPage === 1}\n style={{\n border: `1px solid ${BORDER}`, borderRadius: \"4px\", padding: \"2px 8px\",\n background: \"white\", cursor: \"pointer\", fontSize: \"12px\",\n color: currentPage === 1 ? BORDER : MUTED,\n }}\n >\n ←\n </button>\n <span style={{ fontSize: \"12px\", color: MUTED }}>\n {currentPage} / {numPages}\n </span>\n <button\n onClick={() => setCurrentPage((p) => Math.min(numPages, p + 1))}\n disabled={currentPage === numPages}\n style={{\n border: `1px solid ${BORDER}`, borderRadius: \"4px\", padding: \"2px 8px\",\n background: \"white\", cursor: \"pointer\", fontSize: \"12px\",\n color: currentPage === numPages ? BORDER : MUTED,\n }}\n >\n →\n </button>\n </div>\n )}\n\n <div style={{ overflow: \"auto\", width: \"100%\", display: \"flex\", justifyContent: \"center\", padding: \"16px\" }}>\n {loading && (\n <div style={{ display: \"flex\", alignItems: \"center\", justifyContent: \"center\", height: \"200px\", color: MUTED, fontSize: \"13px\" }}>\n Loading PDF...\n </div>\n )}\n <Document file={base64 ? `data:application/pdf;base64,${base64}` : url} onLoadSuccess={handleLoad} loading=\"\">\n <Page\n pageNumber={currentPage}\n width={540}\n renderTextLayer={true}\n renderAnnotationLayer={true}\n />\n </Document>\n </div>\n </div>\n );\n}\n","\"use client\";\n\nimport React, { useState, useEffect, useRef } from \"react\";\nimport * as XLSX from \"xlsx\";\n\nimport { BORDER, MUTED, ACCENT, PAPER } from \"../../shared/theme\";\nconst TERRACOTTA = ACCENT;\n\ninterface ExcelViewerProps {\n url?: string;\n base64?: string;\n onLoadSuccess?: (sheetNames: string[]) => void;\n}\n\nexport function ExcelViewer({ url, base64, onLoadSuccess }: ExcelViewerProps) {\n const [sheetNames, setSheetNames] = useState<string[]>([]);\n const [activeSheet, setActiveSheet] = useState(0);\n const [data, setData] = useState<string[][]>([]);\n const [loading, setLoading] = useState(true);\n const [error, setError] = useState<string | null>(null);\n const wbRef = useRef<XLSX.WorkBook | null>(null);\n\n useEffect(() => {\n let cancelled = false;\n setLoading(true);\n setError(null);\n\n const loadFromBuffer = (buf: ArrayBuffer) => {\n if (cancelled) return;\n const wb = XLSX.read(buf, { type: \"array\" });\n wbRef.current = wb;\n setSheetNames(wb.SheetNames);\n onLoadSuccess?.(wb.SheetNames);\n const rows = XLSX.utils.sheet_to_json<string[]>(wb.Sheets[wb.SheetNames[0]], { header: 1 });\n setData(rows);\n setActiveSheet(0);\n setLoading(false);\n };\n\n if (base64) {\n try {\n const binary = atob(base64);\n const bytes = new Uint8Array(binary.length);\n for (let i = 0; i < binary.length; i++) bytes[i] = binary.charCodeAt(i);\n loadFromBuffer(bytes.buffer);\n } catch (e) {\n if (!cancelled) {\n setError(e instanceof Error ? e.message : \"Failed to decode base64\");\n setLoading(false);\n }\n }\n return () => { cancelled = true; };\n }\n\n if (!url) {\n setError(\"No file source provided\");\n setLoading(false);\n return () => { cancelled = true; };\n }\n\n fetch(url)\n .then((r) => {\n if (!r.ok) throw new Error(`Failed to fetch: ${r.status}`);\n return r.arrayBuffer();\n })\n .then((buf) => {\n loadFromBuffer(buf);\n })\n .catch((e) => {\n if (cancelled) return;\n setError(e.message);\n setLoading(false);\n });\n\n return () => { cancelled = true; };\n }, [url, base64, onLoadSuccess]);\n\n const switchSheet = (idx: number) => {\n if (!wbRef.current) return;\n setActiveSheet(idx);\n const rows = XLSX.utils.sheet_to_json<string[]>(wbRef.current.Sheets[wbRef.current.SheetNames[idx]], { header: 1 });\n setData(rows);\n };\n\n useEffect(() => {\n if (sheetNames.length <= 1) return;\n const handler = (e: KeyboardEvent) => {\n const tag = (e.target as HTMLElement)?.tagName;\n if (tag === \"INPUT\" || tag === \"TEXTAREA\") return;\n if (e.key === \"ArrowLeft\") {\n e.preventDefault();\n setActiveSheet((prev) => {\n const next = Math.max(0, prev - 1);\n if (next !== prev && wbRef.current) {\n const rows = XLSX.utils.sheet_to_json<string[]>(wbRef.current.Sheets[wbRef.current.SheetNames[next]], { header: 1 });\n setData(rows);\n }\n return next;\n });\n } else if (e.key === \"ArrowRight\") {\n e.preventDefault();\n setActiveSheet((prev) => {\n const next = Math.min(sheetNames.length - 1, prev + 1);\n if (next !== prev && wbRef.current) {\n const rows = XLSX.utils.sheet_to_json<string[]>(wbRef.current.Sheets[wbRef.current.SheetNames[next]], { header: 1 });\n setData(rows);\n }\n return next;\n });\n }\n };\n window.addEventListener(\"keydown\", handler);\n return () => window.removeEventListener(\"keydown\", handler);\n }, [sheetNames.length]);\n\n if (loading) {\n return (\n <div style={{ display: \"flex\", alignItems: \"center\", justifyContent: \"center\", height: \"200px\", color: MUTED, fontSize: \"13px\" }}>\n Loading spreadsheet...\n </div>\n );\n }\n\n if (error) {\n return (\n <div style={{ display: \"flex\", alignItems: \"center\", justifyContent: \"center\", height: \"120px\", color: \"#dc2626\", fontSize: \"13px\" }}>\n {error}\n </div>\n );\n }\n\n return (\n <div style={{ display: \"flex\", flexDirection: \"column\" }}>\n {sheetNames.length > 1 && (\n <div style={{ display: \"flex\", gap: \"0\", overflowX: \"auto\", borderBottom: `1px solid ${BORDER}` }}>\n {sheetNames.map((name, i) => (\n <button\n key={name}\n onClick={() => switchSheet(i)}\n style={{\n padding: \"6px 14px\", border: \"none\", cursor: \"pointer\", fontSize: \"12px\", fontWeight: 600,\n background: i === activeSheet ? \"white\" : PAPER,\n color: i === activeSheet ? TERRACOTTA : MUTED,\n borderBottom: i === activeSheet ? `2px solid ${TERRACOTTA}` : \"2px solid transparent\",\n whiteSpace: \"nowrap\",\n }}\n >\n {name}\n </button>\n ))}\n </div>\n )}\n\n <div style={{ overflow: \"auto\", maxHeight: \"500px\" }}>\n <table style={{ width: \"100%\", borderCollapse: \"collapse\", fontSize: \"12px\" }}>\n <tbody>\n {data.map((row, ri) => (\n <tr key={ri}>\n {(row as (string | number | boolean | null | undefined)[]).map((cell, ci) => {\n const isHeader = ri === 0 || (ri === 2 && data[0]?.[0] && !data[1]?.[0]);\n const Tag = isHeader ? \"th\" : \"td\";\n return (\n <Tag\n key={ci}\n style={{\n padding: \"6px 10px\",\n borderBottom: `1px solid ${BORDER}`,\n textAlign: typeof cell === \"number\" ? \"right\" : \"left\",\n fontWeight: isHeader ? 600 : 400,\n color: isHeader ? \"var(--foreground)\" : MUTED,\n background: isHeader ? PAPER : \"white\",\n whiteSpace: \"nowrap\",\n fontFamily: typeof cell === \"number\" ? \"var(--font-mono, monospace)\" : \"var(--font-sans)\",\n }}\n >\n {cell != null ? String(cell) : \"\"}\n </Tag>\n );\n })}\n </tr>\n ))}\n </tbody>\n </table>\n </div>\n </div>\n );\n}\n","/** Shared byte/text decode helpers for the preview viewers.\n *\n * Preview sources arrive either as a public `url` (download-card path) or as\n * base64 bytes (the authed harness path, where a blob is fetched then encoded).\n * PDF/Excel/Docx viewers consume base64 directly; CSV/text viewers need a\n * decoded UTF-8 string.\n */\n\n/** Encode a Blob to a bare base64 string (no data: prefix). */\nexport async function blobToBase64(blob: Blob): Promise<string> {\n const buf = await blob.arrayBuffer();\n const bytes = new Uint8Array(buf);\n let binary = \"\";\n const chunk = 0x8000; // avoid arg-count limits on String.fromCharCode\n for (let i = 0; i < bytes.length; i += chunk) {\n binary += String.fromCharCode(...bytes.subarray(i, i + chunk));\n }\n return btoa(binary);\n}\n\n/** Decode a bare base64 string to a UTF-8 text string. */\nexport function base64ToText(base64: string): string {\n const binary = atob(base64);\n const bytes = new Uint8Array(binary.length);\n for (let i = 0; i < binary.length; i++) bytes[i] = binary.charCodeAt(i);\n return new TextDecoder(\"utf-8\").decode(bytes);\n}\n\n/** Decode a bare base64 string to an ArrayBuffer (for docx/mammoth). */\nexport function base64ToArrayBuffer(base64: string): ArrayBuffer {\n const binary = atob(base64);\n const bytes = new Uint8Array(binary.length);\n for (let i = 0; i < binary.length; i++) bytes[i] = binary.charCodeAt(i);\n return bytes.buffer;\n}\n","\"use client\";\n\nimport React, { useEffect, useState } from \"react\";\nimport Papa from \"papaparse\";\nimport { useTheme } from \"../ThemeContext\";\nimport { base64ToText } from \"./decode\";\n\ninterface CsvViewerProps {\n url?: string;\n base64?: string;\n /** Delimiter hint; auto-detected when omitted. */\n delimiter?: string;\n /** Cap rendered rows (peek mode). Omit for all. */\n maxRows?: number;\n}\n\n/** CSV/TSV table preview via papaparse. Renders header + body with the same\n * muted styling as the Excel viewer. */\nexport function CsvViewer({ url, base64, delimiter, maxRows }: CsvViewerProps) {\n const { BORDER, MUTED, PAPER } = useTheme();\n const [rows, setRows] = useState<string[][]>([]);\n const [loading, setLoading] = useState(true);\n const [error, setError] = useState<string | null>(null);\n\n useEffect(() => {\n let cancelled = false;\n setLoading(true);\n setError(null);\n\n const parse = (text: string) => {\n if (cancelled) return;\n const out = Papa.parse<string[]>(text, {\n delimiter: delimiter || \"\",\n skipEmptyLines: true,\n });\n setRows((out.data as string[][]) || []);\n setLoading(false);\n };\n\n if (base64) {\n try {\n parse(base64ToText(base64));\n } catch (e) {\n if (!cancelled) {\n setError(e instanceof Error ? e.message : \"Failed to decode CSV\");\n setLoading(false);\n }\n }\n return () => {\n cancelled = true;\n };\n }\n\n if (!url) {\n setError(\"No file source provided\");\n setLoading(false);\n return () => {\n cancelled = true;\n };\n }\n\n fetch(url)\n .then((r) => {\n if (!r.ok) throw new Error(`Failed to fetch: ${r.status}`);\n return r.text();\n })\n .then(parse)\n .catch((e) => {\n if (cancelled) return;\n setError(e.message);\n setLoading(false);\n });\n\n return () => {\n cancelled = true;\n };\n }, [url, base64, delimiter]);\n\n if (loading) {\n return (\n <div style={{ padding: \"24px\", color: MUTED, fontSize: \"13px\", textAlign: \"center\" }}>\n Loading CSV…\n </div>\n );\n }\n if (error) {\n return (\n <div style={{ padding: \"24px\", color: \"#dc2626\", fontSize: \"13px\", textAlign: \"center\" }}>\n {error}\n </div>\n );\n }\n if (!rows.length) {\n return (\n <div style={{ padding: \"24px\", color: MUTED, fontSize: \"13px\", textAlign: \"center\" }}>\n Empty file\n </div>\n );\n }\n\n const [header, ...body] = rows;\n const shown = maxRows != null ? body.slice(0, maxRows) : body;\n const isNum = (v: string) => v !== \"\" && !isNaN(Number(v));\n\n return (\n <div style={{ overflow: \"auto\", width: \"100%\" }}>\n <table style={{ borderCollapse: \"collapse\", width: \"100%\", fontSize: \"12px\" }}>\n <thead>\n <tr>\n {header.map((h, i) => (\n <th\n key={i}\n style={{\n position: \"sticky\",\n top: 0,\n textAlign: \"left\",\n padding: \"6px 10px\",\n background: PAPER,\n color: \"var(--foreground)\",\n fontWeight: 600,\n borderBottom: `1px solid ${BORDER}`,\n whiteSpace: \"nowrap\",\n }}\n >\n {h}\n </th>\n ))}\n </tr>\n </thead>\n <tbody>\n {shown.map((row, ri) => (\n <tr key={ri}>\n {header.map((_, ci) => {\n const cell = row[ci] ?? \"\";\n return (\n <td\n key={ci}\n style={{\n padding: \"5px 10px\",\n borderBottom: `1px solid ${BORDER}`,\n color: MUTED,\n textAlign: isNum(cell) ? \"right\" : \"left\",\n fontVariantNumeric: isNum(cell) ? \"tabular-nums\" : \"normal\",\n whiteSpace: \"nowrap\",\n }}\n >\n {cell}\n </td>\n );\n })}\n </tr>\n ))}\n </tbody>\n </table>\n {maxRows != null && body.length > maxRows && (\n <div style={{ padding: \"6px 10px\", fontSize: \"11px\", color: MUTED }}>\n +{body.length - maxRows} more rows\n </div>\n )}\n </div>\n );\n}\n","\"use client\";\n\nimport React, { useEffect, useState } from \"react\";\nimport { useTheme } from \"../ThemeContext\";\nimport { Markdown } from \"../Markdown\";\nimport { base64ToText } from \"./decode\";\n\ninterface TextViewerProps {\n url?: string;\n base64?: string;\n /** Render as Markdown instead of raw monospace text. */\n markdown?: boolean;\n /** Cap rendered lines (peek mode). Omit for all. */\n maxLines?: number;\n}\n\n/** Plain-text / Markdown preview. `.txt`/`.log` render as whitespace-preserving\n * monospace; `.md` renders via the shared dependency-free Markdown component. */\nexport function TextViewer({ url, base64, markdown = false, maxLines }: TextViewerProps) {\n const { MUTED } = useTheme();\n const [text, setText] = useState<string>(\"\");\n const [loading, setLoading] = useState(true);\n const [error, setError] = useState<string | null>(null);\n\n useEffect(() => {\n let cancelled = false;\n setLoading(true);\n setError(null);\n\n if (base64) {\n try {\n if (!cancelled) {\n setText(base64ToText(base64));\n setLoading(false);\n }\n } catch (e) {\n if (!cancelled) {\n setError(e instanceof Error ? e.message : \"Failed to decode text\");\n setLoading(false);\n }\n }\n return () => {\n cancelled = true;\n };\n }\n\n if (!url) {\n setError(\"No file source provided\");\n setLoading(false);\n return () => {\n cancelled = true;\n };\n }\n\n fetch(url)\n .then((r) => {\n if (!r.ok) throw new Error(`Failed to fetch: ${r.status}`);\n return r.text();\n })\n .then((t) => {\n if (cancelled) return;\n setText(t);\n setLoading(false);\n })\n .catch((e) => {\n if (cancelled) return;\n setError(e.message);\n setLoading(false);\n });\n\n return () => {\n cancelled = true;\n };\n }, [url, base64]);\n\n if (loading) {\n return (\n <div style={{ padding: \"24px\", color: MUTED, fontSize: \"13px\", textAlign: \"center\" }}>\n Loading…\n </div>\n );\n }\n if (error) {\n return (\n <div style={{ padding: \"24px\", color: \"#dc2626\", fontSize: \"13px\", textAlign: \"center\" }}>\n {error}\n </div>\n );\n }\n\n const shown =\n maxLines != null ? text.split(\"\\n\").slice(0, maxLines).join(\"\\n\") : text;\n const clipped = maxLines != null && text.split(\"\\n\").length > maxLines;\n\n if (markdown) {\n return (\n <div style={{ padding: \"14px 16px\", fontSize: \"13px\", lineHeight: 1.6 }}>\n <Markdown content={shown} />\n {clipped && <div style={{ color: MUTED, fontSize: \"11px\", marginTop: \"6px\" }}>…</div>}\n </div>\n );\n }\n\n return (\n <pre\n style={{\n margin: 0,\n padding: \"14px 16px\",\n fontSize: \"12px\",\n lineHeight: 1.5,\n fontFamily: \"ui-monospace, SFMono-Regular, Menlo, monospace\",\n color: \"var(--foreground)\",\n whiteSpace: \"pre\",\n overflow: \"auto\",\n width: \"100%\",\n boxSizing: \"border-box\",\n }}\n >\n {shown}\n {clipped ? \"\\n…\" : \"\"}\n </pre>\n );\n}\n","\"use client\";\n\nimport React, { useEffect, useState } from \"react\";\nimport * as mammoth from \"mammoth\";\nimport { useTheme } from \"../ThemeContext\";\nimport { base64ToArrayBuffer } from \"./decode\";\n\ninterface DocxViewerProps {\n url?: string;\n base64?: string;\n}\n\n/** Strip anything script-like from mammoth output. Mammoth only emits a small\n * tag set (p, h1-6, ul/ol/li, table, strong/em, a, img-as-dataURI), but we\n * defensively drop <script>/<style> and on* handlers before injecting. */\nfunction sanitize(html: string): string {\n return html\n .replace(/<\\s*(script|style|iframe|object|embed)[\\s\\S]*?<\\/\\s*\\1\\s*>/gi, \"\")\n .replace(/\\son\\w+\\s*=\\s*(\"[^\"]*\"|'[^']*'|[^\\s>]+)/gi, \"\")\n .replace(/javascript:/gi, \"\");\n}\n\n/** DOCX preview via mammoth (docx → HTML). Used for inline peek + modal. */\nexport function DocxViewer({ url, base64 }: DocxViewerProps) {\n const { MUTED, BORDER } = useTheme();\n const [html, setHtml] = useState<string>(\"\");\n const [loading, setLoading] = useState(true);\n const [error, setError] = useState<string | null>(null);\n\n useEffect(() => {\n let cancelled = false;\n setLoading(true);\n setError(null);\n\n const convert = (arrayBuffer: ArrayBuffer) => {\n mammoth\n .convertToHtml({ arrayBuffer })\n .then((res: { value: string }) => {\n if (cancelled) return;\n setHtml(sanitize(res.value || \"\"));\n setLoading(false);\n })\n .catch((e: unknown) => {\n if (cancelled) return;\n setError(e instanceof Error ? e.message : \"Failed to render DOCX\");\n setLoading(false);\n });\n };\n\n try {\n if (base64) {\n convert(base64ToArrayBuffer(base64));\n return () => {\n cancelled = true;\n };\n }\n } catch (e) {\n setError(e instanceof Error ? e.message : \"Failed to decode DOCX\");\n setLoading(false);\n return () => {\n cancelled = true;\n };\n }\n\n if (!url) {\n setError(\"No file source provided\");\n setLoading(false);\n return () => {\n cancelled = true;\n };\n }\n\n fetch(url)\n .then((r) => {\n if (!r.ok) throw new Error(`Failed to fetch: ${r.status}`);\n return r.arrayBuffer();\n })\n .then(convert)\n .catch((e) => {\n if (cancelled) return;\n setError(e.message);\n setLoading(false);\n });\n\n return () => {\n cancelled = true;\n };\n }, [url, base64]);\n\n if (loading) {\n return (\n <div style={{ padding: \"24px\", color: MUTED, fontSize: \"13px\", textAlign: \"center\" }}>\n Loading document…\n </div>\n );\n }\n if (error) {\n return (\n <div style={{ padding: \"24px\", color: \"#dc2626\", fontSize: \"13px\", textAlign: \"center\" }}>\n {error}\n </div>\n );\n }\n\n return (\n <div\n style={{\n padding: \"18px 22px\",\n fontSize: \"13px\",\n lineHeight: 1.6,\n color: \"var(--foreground)\",\n maxWidth: \"720px\",\n margin: \"0 auto\",\n borderLeft: `1px solid ${BORDER}`,\n borderRight: `1px solid ${BORDER}`,\n background: \"white\",\n }}\n // mammoth output sanitized above\n dangerouslySetInnerHTML={{ __html: html }}\n />\n );\n}\n","// Types\nexport type { UISchemaName, AnyPayload, SchemaPayload } from \"./types\";\n\n// Theme\nexport { GenUIThemeProvider, useTheme, DEFAULT_TOKENS } from \"./shared/ThemeContext\";\nexport type { ThemeTokens, GenUIThemeProviderProps } from \"./shared/ThemeContext\";\n\n// Schema registry\nexport { schemaRegistry } from \"./schemas\";\n\n// Tool builder + validation (harness integration)\nexport { buildRenderUITool } from \"./schemas/buildRenderUITool\";\nexport { validatePayload } from \"./schemas/validatePayload\";\nexport { coercePayload } from \"./schemas/coercePayload\";\n\n// Resolver\nexport { resolveUI } from \"./resolver\";\n\n// Renderer\nexport { GenUIRenderer } from \"./renderer\";\n\n// Individual composite resolvers\nexport { DataTableResolver } from \"./composites/data-table/resolver\";\nexport { StatusCardResolver } from \"./composites/status-card/resolver\";\nexport { AlertResolver } from \"./composites/alert/resolver\";\nexport { StatGridResolver } from \"./composites/stat-grid/resolver\";\nexport { TabsPanelResolver } from \"./composites/tabs-panel/resolver\";\nexport { SparklineTableResolver } from \"./composites/sparkline-table/resolver\";\nexport { HeatmapTableResolver } from \"./composites/heatmap-table/resolver\";\nexport { ScreenerTableResolver } from \"./composites/screener-table/resolver\";\nexport { GroupedTableResolver } from \"./composites/grouped-table/resolver\";\nexport { NewsFeedResolver } from \"./composites/news-feed/resolver\";\nexport { AreaChartResolver } from \"./composites/area-chart/resolver\";\nexport { AllocationDonutResolver } from \"./composites/allocation-donut/resolver\";\nexport { WaterfallChartResolver } from \"./composites/waterfall-chart/resolver\";\nexport { FlowCanvasResolver, FlowCanvasRenderer } from \"./composites/flow-canvas/resolver\";\nexport type { FlowCanvasRendererProps } from \"./composites/flow-canvas/resolver\";\nexport { TrialBalanceResolver } from \"./composites/trial-balance/resolver\";\nexport { JournalEntryResolver } from \"./composites/journal-entry/resolver\";\nexport { AgingReportResolver } from \"./composites/aging-report/resolver\";\nexport { VarianceAnalysisResolver } from \"./composites/variance-analysis/resolver\";\nexport { StackedBreakdownResolver } from \"./composites/stacked-breakdown/resolver\";\nexport { ComparativeBarChartResolver } from \"./composites/comparative-bar-chart/resolver\";\nexport { ComplianceChecklistResolver } from \"./composites/compliance-checklist/resolver\";\nexport { ReconciliationViewResolver } from \"./composites/reconciliation-view/resolver\";\nexport { AuditTrailResolver } from \"./composites/audit-trail/resolver\";\nexport { DocumentPreviewResolver } from \"./composites/document-preview/resolver\";\nexport { ProvenanceChainResolver } from \"./composites/provenance-chain/resolver\";\nexport { SearchResultsResolver } from \"./composites/search-results/resolver\";\nexport { LegalTestResultResolver } from \"./composites/legal-test-result/resolver\";\nexport { EngagementPipelineResolver } from \"./composites/engagement-pipeline/resolver\";\n\n// Theme tokens\nexport {\n BORDER,\n MUTED,\n PAPER,\n ACCENT,\n ACCENT_SOFT,\n SECONDARY,\n CHART_PALETTE,\n} from \"./shared/theme\";\n\n// Builder schemas, validation, and composites\nexport {\n builderSchema,\n builderBlockSchema,\n builderFieldSchema,\n BUILDER_FIELD_TYPES,\n validateBuilderPayload,\n BuilderFormResolver,\n BuilderRecap,\n resolveBuilder,\n useBuilderState,\n FieldRenderer,\n ContextSlot,\n FIELD_REGISTRY,\n} from \"./builders\";\nexport type {\n BuilderPayload,\n BuilderBlock,\n BuilderField,\n BuilderFieldType,\n BuilderFieldOption,\n BuilderFormProps,\n BuilderSubmission,\n ResolveBuilderCallbacks,\n BuilderState,\n FieldRendererProps,\n FieldProps,\n} from \"./builders\";\n\n// Shared utilities\nexport { ComponentActions } from \"./shared/ComponentActions\";\nexport { downloadCSV } from \"./shared/downloadCSV\";\nexport { Markdown } from \"./shared/Markdown\";\nexport { FileCard } from \"./shared/FileCard\";\nexport type { FileCardProps } from \"./shared/FileCard\";\nexport { fileTypeMeta, formatExpiry, isExpirySoon, isPreviewable, previewKindFor } from \"./shared/fileType\";\nexport type { FileTypeMeta, PreviewKind } from \"./shared/fileType\";\nexport { PreviewHost } from \"./shared/viewers/PreviewHost\";\nexport type { PreviewSource } from \"./shared/viewers/PreviewHost\";\nexport { PreviewModal } from \"./shared/PreviewModal\";\n","import { z } from \"zod\";\n\nexport const dataTableSchema = z.object({\n type: z.literal(\"data-table\"),\n title: z.string().optional(),\n columns: z\n .array(\n z.object({\n key: z.string(),\n label: z.string(),\n align: z.enum([\"start\", \"center\", \"end\"]).default(\"start\"),\n })\n )\n .min(1)\n .max(10),\n rows: z\n .array(\n z.record(z.string(), z.union([z.string(), z.number(), z.boolean(), z.null()]))\n )\n .max(100),\n pagination: z.boolean().default(false),\n});\n\nexport const dataTableTool = {\n name: \"render_data_table\",\n description: \"Render a structured data table with labeled columns and rows\",\n input_schema: {\n type: \"object\" as const,\n properties: {\n type: { type: \"string\", enum: [\"data-table\"] },\n title: { type: \"string\" },\n columns: {\n type: \"array\",\n items: {\n type: \"object\",\n properties: {\n key: { type: \"string\" },\n label: { type: \"string\" },\n align: { type: \"string\", enum: [\"start\", \"center\", \"end\"] },\n },\n required: [\"key\", \"label\"],\n },\n },\n rows: {\n type: \"array\",\n items: { type: \"object\", additionalProperties: true },\n },\n pagination: { type: \"boolean\" },\n },\n required: [\"type\", \"columns\", \"rows\"],\n },\n};\n","import { z } from \"zod\";\n\nconst variantMap: Record<string, string> = {\n outlined: \"bordered\", outline: \"bordered\", filled: \"solid\",\n solid: \"solid\", bordered: \"bordered\", light: \"light\", flat: \"flat\", ghost: \"ghost\",\n};\n\nconst colorMap: Record<string, string> = {\n default: \"default\", primary: \"primary\", secondary: \"secondary\",\n success: \"success\", warning: \"warning\", danger: \"danger\",\n error: \"danger\", info: \"primary\", neutral: \"default\",\n};\n\nconst validVariants = [\"solid\", \"bordered\", \"light\", \"flat\", \"ghost\"] as const;\nconst validColors = [\"default\", \"primary\", \"secondary\", \"success\", \"warning\", \"danger\"] as const;\n\nexport const statusCardSchema = z.object({\n type: z.literal(\"status-card\"),\n title: z.string(),\n subtitle: z.string().optional(),\n status: z\n .enum([\"default\", \"success\", \"warning\", \"danger\", \"primary\"])\n .default(\"default\"),\n fields: z\n .array(\n z.object({\n label: z.string(),\n value: z.string(),\n highlight: z.boolean().default(false),\n })\n )\n .max(12),\n actions: z\n .array(\n z.object({\n label: z.string(),\n variant: z\n .string()\n .transform((v) => (variantMap[v] ?? \"bordered\") as typeof validVariants[number])\n .default(\"bordered\"),\n color: z\n .string()\n .transform((v) => (colorMap[v] ?? \"default\") as typeof validColors[number])\n .default(\"default\"),\n })\n )\n .max(3)\n .optional(),\n});\n\nexport const statusCardTool = {\n name: \"render_status_card\",\n description: \"Render a card for a single entity — person, order, product, task\",\n input_schema: {\n type: \"object\" as const,\n properties: {\n type: { type: \"string\", enum: [\"status-card\"] },\n title: { type: \"string\" },\n subtitle: { type: \"string\" },\n status: {\n type: \"string\",\n enum: [\"default\", \"success\", \"warning\", \"danger\", \"primary\"],\n },\n fields: {\n type: \"array\",\n items: {\n type: \"object\",\n properties: {\n label: { type: \"string\" },\n value: { type: \"string\" },\n highlight: { type: \"boolean\" },\n },\n required: [\"label\", \"value\"],\n },\n },\n actions: {\n type: \"array\",\n items: {\n type: \"object\",\n properties: {\n label: { type: \"string\" },\n variant: { type: \"string\" },\n color: { type: \"string\" },\n },\n required: [\"label\"],\n },\n },\n },\n required: [\"type\", \"title\", \"fields\"],\n },\n};\n","import { z } from \"zod\";\n\nexport const alertSchema = z.object({\n type: z.literal(\"alert\"),\n color: z.enum([\n \"default\",\n \"primary\",\n \"secondary\",\n \"success\",\n \"warning\",\n \"danger\",\n ]),\n title: z.string(),\n description: z.string().optional(),\n});\n\nexport const alertTool = {\n name: \"render_alert\",\n description: \"Render a short important message — success, warning, error, or info\",\n input_schema: {\n type: \"object\" as const,\n properties: {\n type: { type: \"string\", enum: [\"alert\"] },\n color: {\n type: \"string\",\n enum: [\"default\", \"primary\", \"secondary\", \"success\", \"warning\", \"danger\"],\n },\n title: { type: \"string\" },\n description: { type: \"string\" },\n },\n required: [\"type\", \"color\", \"title\"],\n },\n};\n","import { z } from \"zod\";\n\nexport const statGridSchema = z.object({\n type: z.literal(\"stat-grid\"),\n stats: z\n .array(\n z.object({\n label: z.string(),\n value: z.string(),\n change: z.string().optional(),\n changeType: z.enum([\"positive\", \"negative\", \"neutral\"]).optional(),\n description: z.string().optional(),\n })\n )\n .min(2)\n .max(4),\n});\n\nexport const statGridTool = {\n name: \"render_stat_grid\",\n description: \"Render 2–4 KPI metric cards side by side\",\n input_schema: {\n type: \"object\" as const,\n properties: {\n type: { type: \"string\", enum: [\"stat-grid\"] },\n stats: {\n type: \"array\",\n items: {\n type: \"object\",\n properties: {\n label: { type: \"string\" },\n value: { type: \"string\" },\n change: { type: \"string\" },\n changeType: {\n type: \"string\",\n enum: [\"positive\", \"negative\", \"neutral\"],\n },\n description: { type: \"string\" },\n },\n required: [\"label\", \"value\"],\n },\n },\n },\n required: [\"type\", \"stats\"],\n },\n};\n","import { z } from \"zod\";\n\nexport const tabsPanelSchema = z.object({\n type: z.literal(\"tabs-panel\"),\n tabs: z\n .array(\n z.object({\n key: z.string(),\n label: z.string(),\n content: z.string(),\n })\n )\n .min(2)\n .max(6),\n});\n\nexport const tabsPanelTool = {\n name: \"render_tabs_panel\",\n description: \"Render multiple sections the user can switch between via tabs\",\n input_schema: {\n type: \"object\" as const,\n properties: {\n type: { type: \"string\", enum: [\"tabs-panel\"] },\n tabs: {\n type: \"array\",\n items: {\n type: \"object\",\n properties: {\n key: { type: \"string\" },\n label: { type: \"string\" },\n content: { type: \"string\" },\n },\n required: [\"key\", \"label\", \"content\"],\n },\n },\n },\n required: [\"type\", \"tabs\"],\n },\n};\n","import { z } from \"zod\";\n\nexport const sparklineTableSchema = z.object({\n type: z.literal(\"sparkline-table\"),\n title: z.string().optional(),\n sparklineLabel: z.string().default(\"Trend\"),\n columns: z\n .array(z.object({ key: z.string(), label: z.string(), align: z.enum([\"start\", \"center\", \"end\"]).default(\"start\") }))\n .min(1)\n .max(12),\n rows: z\n .array(\n z.object({\n sparkline: z.array(z.number()).min(2).max(60),\n }).catchall(z.union([z.string(), z.number(), z.boolean(), z.null()]))\n )\n .max(50),\n});\n\nexport const sparklineTableTool = {\n name: \"render_sparkline_table\",\n description: \"Render a table where one column shows a 30-day sparkline trend per row — watchlist, holdings, options chain\",\n input_schema: {\n type: \"object\" as const,\n properties: {\n type: { type: \"string\", enum: [\"sparkline-table\"] },\n title: { type: \"string\" },\n sparklineLabel: { type: \"string\" },\n columns: {\n type: \"array\",\n items: {\n type: \"object\",\n properties: { key: { type: \"string\" }, label: { type: \"string\" }, align: { type: \"string\", enum: [\"start\", \"center\", \"end\"] } },\n required: [\"key\", \"label\"],\n },\n },\n rows: {\n type: \"array\",\n items: {\n type: \"object\",\n properties: { sparkline: { type: \"array\", items: { type: \"number\" } } },\n required: [\"sparkline\"],\n additionalProperties: true,\n },\n },\n },\n required: [\"type\", \"columns\", \"rows\"],\n },\n};\n","import { z } from \"zod\";\n\nconst heatmapCellSchema = z.object({ value: z.string(), zScore: z.number() });\n\nexport const heatmapTableSchema = z.object({\n type: z.literal(\"heatmap-table\"),\n title: z.string().optional(),\n columns: z\n .array(z.object({ key: z.string(), label: z.string() }))\n .min(1)\n .max(12),\n rows: z\n .array(\n z.object({\n rowLabel: z.string(),\n cells: z.array(heatmapCellSchema),\n })\n )\n .max(30),\n});\n\nexport const heatmapTableTool = {\n name: \"render_heatmap_table\",\n description: \"Render a comparison table where cells are color-scaled by z-score — fund comparison, peer group, macro heatmap\",\n input_schema: {\n type: \"object\" as const,\n properties: {\n type: { type: \"string\", enum: [\"heatmap-table\"] },\n title: { type: \"string\" },\n columns: {\n type: \"array\",\n items: { type: \"object\", properties: { key: { type: \"string\" }, label: { type: \"string\" } }, required: [\"key\", \"label\"] },\n },\n rows: {\n type: \"array\",\n items: {\n type: \"object\",\n properties: {\n rowLabel: { type: \"string\" },\n cells: {\n type: \"array\",\n items: {\n type: \"object\",\n properties: { value: { type: \"string\" }, zScore: { type: \"number\" } },\n required: [\"value\", \"zScore\"],\n },\n },\n },\n required: [\"rowLabel\", \"cells\"],\n },\n },\n },\n required: [\"type\", \"columns\", \"rows\"],\n },\n};\n","import { z } from \"zod\";\n\nexport const screenerTableSchema = z.object({\n type: z.literal(\"screener-table\"),\n title: z.string().optional(),\n columns: z\n .array(\n z.object({\n key: z.string(),\n label: z.string(),\n align: z.enum([\"start\", \"center\", \"end\"]).default(\"start\"),\n meterKey: z.boolean().default(false),\n meterMax: z.number().optional(),\n })\n )\n .min(1)\n .max(10),\n rows: z\n .array(z.record(z.string(), z.union([z.string(), z.number(), z.boolean(), z.null()])))\n .max(100),\n activeFilters: z.array(z.string()).default([]),\n});\n\nexport const screenerTableTool = {\n name: \"render_screener_table\",\n description: \"Render a sortable table with inline meter bars for scores/ratings — stock screener, fund search, bond filter\",\n input_schema: {\n type: \"object\" as const,\n properties: {\n type: { type: \"string\", enum: [\"screener-table\"] },\n title: { type: \"string\" },\n columns: {\n type: \"array\",\n items: {\n type: \"object\",\n properties: {\n key: { type: \"string\" },\n label: { type: \"string\" },\n align: { type: \"string\", enum: [\"start\", \"center\", \"end\"] },\n meterKey: { type: \"boolean\" },\n meterMax: { type: \"number\" },\n },\n required: [\"key\", \"label\"],\n },\n },\n rows: { type: \"array\", items: { type: \"object\", additionalProperties: true } },\n activeFilters: { type: \"array\", items: { type: \"string\" } },\n },\n required: [\"type\", \"columns\", \"rows\"],\n },\n};\n","import { z } from \"zod\";\n\nconst groupedRowSchema = z.record(z.string(), z.union([z.string(), z.number(), z.boolean(), z.null()]));\n\nconst groupSchema: z.ZodType<{\n groupLabel: string;\n rows: Record<string, string | number | boolean | null>[];\n subGroups?: { groupLabel: string; rows: Record<string, string | number | boolean | null>[]; subGroups?: never[] }[];\n}> = z.object({\n groupLabel: z.string(),\n rows: z.array(groupedRowSchema).max(20),\n subGroups: z.array(z.object({ groupLabel: z.string(), rows: z.array(groupedRowSchema).max(20) })).optional(),\n});\n\nexport const groupedTableSchema = z.object({\n type: z.literal(\"grouped-table\"),\n title: z.string().optional(),\n columns: z\n .array(z.object({\n key: z.string(),\n label: z.string(),\n align: z.string().transform((v) => {\n const map: Record<string, string> = { left: \"start\", right: \"end\", start: \"start\", center: \"center\", end: \"end\" };\n return (map[v] ?? \"start\") as \"start\" | \"center\" | \"end\";\n }).default(\"start\"),\n }))\n .min(1)\n .max(10),\n groups: z.array(groupSchema).min(1).max(20),\n});\n\nexport const groupedTableTool = {\n name: \"render_grouped_table\",\n description: \"Render a table with collapsible row groups — portfolio hierarchy, sleeve breakdown, consolidated view\",\n input_schema: {\n type: \"object\" as const,\n properties: {\n type: { type: \"string\", enum: [\"grouped-table\"] },\n title: { type: \"string\" },\n columns: {\n type: \"array\",\n items: { type: \"object\", properties: { key: { type: \"string\" }, label: { type: \"string\" }, align: { type: \"string\" } }, required: [\"key\", \"label\"] },\n },\n groups: {\n type: \"array\",\n items: {\n type: \"object\",\n properties: {\n groupLabel: { type: \"string\" },\n rows: { type: \"array\", items: { type: \"object\", additionalProperties: true } },\n subGroups: {\n type: \"array\",\n items: {\n type: \"object\",\n properties: {\n groupLabel: { type: \"string\" },\n rows: { type: \"array\", items: { type: \"object\", additionalProperties: true } },\n },\n required: [\"groupLabel\", \"rows\"],\n },\n },\n },\n required: [\"groupLabel\", \"rows\"],\n },\n },\n },\n required: [\"type\", \"columns\", \"groups\"],\n },\n};\n","import { z } from \"zod\";\n\nexport const newsFeedSchema = z.object({\n type: z.literal(\"news-feed\"),\n title: z.string().optional(),\n items: z\n .array(\n z.object({\n headline: z.string(),\n source: z.string(),\n timestamp: z.string(),\n sentiment: z.enum([\"positive\", \"neutral\", \"negative\"]),\n summary: z.string().optional(),\n url: z.string().optional(),\n })\n )\n .min(1)\n .max(20),\n});\n\nexport const newsFeedTool = {\n name: \"render_news_feed\",\n description: \"Render a list of news items with AI sentiment chips — news, catalysts, sentiment, macro\",\n input_schema: {\n type: \"object\" as const,\n properties: {\n type: { type: \"string\", enum: [\"news-feed\"] },\n title: { type: \"string\" },\n items: {\n type: \"array\",\n items: {\n type: \"object\",\n properties: {\n headline: { type: \"string\" },\n source: { type: \"string\" },\n timestamp: { type: \"string\" },\n sentiment: { type: \"string\", enum: [\"positive\", \"neutral\", \"negative\"] },\n summary: { type: \"string\" },\n url: { type: \"string\" },\n },\n required: [\"headline\", \"source\", \"timestamp\", \"sentiment\"],\n },\n },\n },\n required: [\"type\", \"items\"],\n },\n};\n","import { z } from \"zod\";\n\nexport const areaChartSchema = z.object({\n type: z.literal(\"area-chart\"),\n title: z.string().optional(),\n xKey: z.string(),\n series: z\n .array(z.object({ name: z.string(), dataKey: z.string(), color: z.string() }))\n .min(1)\n .max(4),\n data: z\n .array(z.record(z.string(), z.union([z.string(), z.number()])))\n .min(2)\n .max(500),\n});\n\nexport const areaChartTool = {\n name: \"render_area_chart\",\n description: \"Render a multi-series area chart for time series — cumulative return, benchmark comparison, drawdown\",\n input_schema: {\n type: \"object\" as const,\n properties: {\n type: { type: \"string\", enum: [\"area-chart\"] },\n title: { type: \"string\" },\n xKey: { type: \"string\", description: \"The key in each data row used as the X-axis label (e.g. 'date')\" },\n series: {\n type: \"array\",\n items: {\n type: \"object\",\n properties: { name: { type: \"string\" }, dataKey: { type: \"string\" }, color: { type: \"string\", description: \"CSS color, e.g. #6366f1\" } },\n required: [\"name\", \"dataKey\", \"color\"],\n },\n },\n data: {\n type: \"array\",\n items: { type: \"object\", additionalProperties: true },\n description: \"Array of data rows. Each row must have xKey and all series dataKeys.\",\n },\n },\n required: [\"type\", \"xKey\", \"series\", \"data\"],\n },\n};\n","import { z } from \"zod\";\n\nexport const allocationDonutSchema = z.object({\n type: z.literal(\"allocation-donut\"),\n title: z.string().optional(),\n slices: z\n .array(\n z.object({\n label: z.string(),\n value: z.number(),\n color: z.string().optional(),\n benchmark: z.number().optional(),\n })\n )\n .min(2)\n .max(12),\n});\n\nexport const allocationDonutTool = {\n name: \"render_allocation_donut\",\n description: \"Render a donut chart with allocation breakdown table — portfolio, asset class, sector, geography\",\n input_schema: {\n type: \"object\" as const,\n properties: {\n type: { type: \"string\", enum: [\"allocation-donut\"] },\n title: { type: \"string\" },\n slices: {\n type: \"array\",\n items: {\n type: \"object\",\n properties: {\n label: { type: \"string\" },\n value: { type: \"number\", description: \"Percentage 0-100\" },\n color: { type: \"string\", description: \"Optional CSS color\" },\n benchmark: { type: \"number\", description: \"Benchmark weight for over/underweight chip\" },\n },\n required: [\"label\", \"value\"],\n },\n },\n },\n required: [\"type\", \"slices\"],\n },\n};\n","import { z } from \"zod\";\n\nexport const waterfallChartSchema = z.object({\n type: z.literal(\"waterfall-chart\"),\n title: z.string().optional(),\n bars: z\n .array(\n z.object({\n label: z.string(),\n value: z.number(),\n isTotal: z.boolean().default(false),\n })\n )\n .min(2)\n .max(20),\n unit: z.string().default(\"%\"),\n});\n\nexport const waterfallChartTool = {\n name: \"render_waterfall_chart\",\n description: \"Render a waterfall bar chart showing contribution of each factor to total return — factor attribution, P&L attribution\",\n input_schema: {\n type: \"object\" as const,\n properties: {\n type: { type: \"string\", enum: [\"waterfall-chart\"] },\n title: { type: \"string\" },\n bars: {\n type: \"array\",\n items: {\n type: \"object\",\n properties: {\n label: { type: \"string\" },\n value: { type: \"number\", description: \"Positive or negative contribution\" },\n isTotal: { type: \"boolean\", description: \"True for the total/net bar\" },\n },\n required: [\"label\", \"value\"],\n },\n },\n unit: { type: \"string\", description: \"Unit label, e.g. '%' or 'bps'\" },\n },\n required: [\"type\", \"bars\"],\n },\n};\n","import { z } from \"zod\";\n\nexport const flowCanvasSchema = z.object({\n type: z.literal(\"flow-canvas\"),\n // Stable identity. Re-send render_flow_canvas with the SAME id to update the\n // existing card in place (e.g. as pipeline stages progress) instead of adding a\n // new one.\n id: z.string().optional(),\n title: z.string().optional(),\n description: z.string().optional(),\n diagram: z.string().min(1),\n // Per-node run status, keyed by Mermaid node id OR its label. Drives the\n // pending/active/done/error styling + transition animation.\n node_states: z.record(z.string(), z.enum([\"pending\", \"active\", \"done\", \"error\"])).optional(),\n // Auto-animate the flow running (loops) — for live demos. No on-screen controls.\n autoplay: z.boolean().optional(),\n});\n\nexport const flowCanvasTool = {\n name: \"render_flow_canvas\",\n description: `Render a Mermaid diagram for user flows, workflows, system architecture, process maps, mind maps, ER diagrams, sequence diagrams, and any visual design artifact. Use when the user asks to visualize a process, flow, system, or diagram of any kind.`,\n input_schema: {\n type: \"object\" as const,\n properties: {\n type: { type: \"string\", enum: [\"flow-canvas\"] },\n id: {\n type: \"string\",\n description:\n \"Stable id for this diagram. To UPDATE a previously shown flow (e.g. a pipeline as its stages progress), re-render with the SAME id and updated node_states — the existing card updates in place instead of a new one being added. Omit for one-off diagrams.\",\n },\n title: { type: \"string\", description: \"Diagram title, shown above the canvas\" },\n description: { type: \"string\", description: \"One-line description of what the diagram shows\" },\n node_states: {\n type: \"object\",\n description:\n \"Optional per-node run status, keyed by the Mermaid node id or its label, value one of 'pending' | 'active' | 'done' | 'error'. Drives stage coloring + a paint animation. Update these (with the same id) as the workflow progresses.\",\n additionalProperties: { type: \"string\", enum: [\"pending\", \"active\", \"done\", \"error\"] },\n },\n autoplay: {\n type: \"boolean\",\n description:\n \"When true, the flow auto-animates each node lighting up in sequence (loops) — use only to DEMO a workflow running when there is no real per-stage status to report.\",\n },\n diagram: {\n type: \"string\",\n description: `A valid Mermaid diagram string. Keep diagrams COMPACT — max 15 nodes, short labels (1-4 words each). No emojis anywhere.\n\nflowchart TD (top-down flows and processes):\n flowchart TD\n A([Start]) --> B[Step One]\n B --> C{Decision?}\n C -->|Yes| D[Path A]\n C -->|No| E[Path B]\n D --> F([End])\n E --> F\n\nflowchart LR (left-right pipelines):\n flowchart LR\n A[Input] --> B[Process] --> C[Output]\n\nsequenceDiagram (actor interactions):\n sequenceDiagram\n participant U as User\n participant S as Server\n U->>S: POST /login\n S-->>U: 200 OK\n\nerDiagram:\n erDiagram\n USER ||--o{ ORDER : places\n ORDER ||--|{ LINE_ITEM : contains\n\nclassDiagram:\n classDiagram\n Animal <|-- Dog\n Animal: +name string\n\nRULES — follow these exactly:\n- Max 15 nodes total. For complex topics, show the happy path only; omit edge cases\n- Labels: 1-4 words, no punctuation other than / or &\n- No emojis anywhere\n- No inline style directives (style A fill:#...)\n- Prefer TD for flows, LR for pipelines, sequence for interactions\n- Use subgraph only when 2+ clear groups exist; max 2 subgraphs\n- Do NOT wrap output in \\`\\`\\`mermaid fences`,\n },\n },\n required: [\"type\", \"diagram\"],\n },\n};\n","import { z } from \"zod\";\n\nexport const trialBalanceSchema = z.object({\n type: z.literal(\"trial-balance\"),\n title: z.string().optional(),\n asOfDate: z.string().optional(),\n currency: z.string().default(\"USD\"),\n groups: z\n .array(\n z.object({\n category: z.enum([\"assets\", \"liabilities\", \"equity\", \"revenue\", \"expenses\", \"other\"]),\n accounts: z\n .array(\n z.object({\n code: z.string(),\n name: z.string(),\n debit: z.number().min(0).default(0),\n credit: z.number().min(0).default(0),\n })\n )\n .min(1)\n .max(30),\n })\n )\n .min(1)\n .max(6),\n});\n\nexport const trialBalanceTool = {\n name: \"render_trial_balance\",\n description:\n \"Render a debit/credit trial balance grouped by account category — chart of accounts, balance verification\",\n input_schema: {\n type: \"object\" as const,\n properties: {\n type: { type: \"string\", enum: [\"trial-balance\"] },\n title: { type: \"string\" },\n asOfDate: { type: \"string\", description: \"As-of date for the balance\" },\n currency: { type: \"string\", description: \"ISO currency code, e.g. USD\" },\n groups: {\n type: \"array\",\n items: {\n type: \"object\",\n properties: {\n category: {\n type: \"string\",\n enum: [\"assets\", \"liabilities\", \"equity\", \"revenue\", \"expenses\", \"other\"],\n },\n accounts: {\n type: \"array\",\n items: {\n type: \"object\",\n properties: {\n code: { type: \"string\" },\n name: { type: \"string\" },\n debit: { type: \"number\", minimum: 0 },\n credit: { type: \"number\", minimum: 0 },\n },\n required: [\"code\", \"name\"],\n },\n },\n },\n required: [\"category\", \"accounts\"],\n },\n },\n },\n required: [\"type\", \"groups\"],\n },\n};\n","import { z } from \"zod\";\n\nexport const journalEntrySchema = z.object({\n type: z.literal(\"journal-entry\"),\n title: z.string().optional(),\n entries: z\n .array(\n z.object({\n entryId: z.string(),\n date: z.string(),\n memo: z.string().optional(),\n status: z.enum([\"draft\", \"posted\", \"reversed\", \"pending-approval\"]).default(\"posted\"),\n lines: z\n .array(\n z.object({\n account: z.string(),\n description: z.string().optional(),\n debit: z.number().min(0).default(0),\n credit: z.number().min(0).default(0),\n })\n )\n .min(2)\n .max(20),\n })\n )\n .min(1)\n .max(10),\n currency: z.string().default(\"USD\"),\n});\n\nexport const journalEntryTool = {\n name: \"render_journal_entry\",\n description:\n \"Render journal entries with debit/credit lines — transactions, adjusting entries, postings\",\n input_schema: {\n type: \"object\" as const,\n properties: {\n type: { type: \"string\", enum: [\"journal-entry\"] },\n title: { type: \"string\" },\n entries: {\n type: \"array\",\n items: {\n type: \"object\",\n properties: {\n entryId: { type: \"string\" },\n date: { type: \"string\", description: \"ISO date\" },\n memo: { type: \"string\" },\n status: { type: \"string\", enum: [\"draft\", \"posted\", \"reversed\", \"pending-approval\"] },\n lines: {\n type: \"array\",\n items: {\n type: \"object\",\n properties: {\n account: { type: \"string\" },\n description: { type: \"string\" },\n debit: { type: \"number\", minimum: 0 },\n credit: { type: \"number\", minimum: 0 },\n },\n required: [\"account\"],\n },\n },\n },\n required: [\"entryId\", \"date\", \"lines\"],\n },\n },\n currency: { type: \"string\" },\n },\n required: [\"type\", \"entries\"],\n },\n};\n","import { z } from \"zod\";\n\nexport const agingReportSchema = z.object({\n type: z.literal(\"aging-report\"),\n title: z.string().optional(),\n reportType: z.enum([\"receivable\", \"payable\"]).default(\"receivable\"),\n asOfDate: z.string().optional(),\n currency: z.string().default(\"USD\"),\n buckets: z.array(z.string()).min(2).max(7),\n entities: z\n .array(\n z.object({\n name: z.string(),\n amounts: z.array(z.number()).min(2).max(7),\n total: z.number(),\n })\n )\n .min(1)\n .max(50),\n});\n\nexport const agingReportTool = {\n name: \"render_aging_report\",\n description:\n \"Render an AR/AP aging report with time buckets — overdue invoices, collections, payables aging\",\n input_schema: {\n type: \"object\" as const,\n properties: {\n type: { type: \"string\", enum: [\"aging-report\"] },\n title: { type: \"string\" },\n reportType: { type: \"string\", enum: [\"receivable\", \"payable\"] },\n asOfDate: { type: \"string\" },\n currency: { type: \"string\" },\n buckets: {\n type: \"array\",\n items: { type: \"string\" },\n description: \"Aging bucket labels, e.g. ['Current','1-30','31-60','61-90','90+']\",\n },\n entities: {\n type: \"array\",\n items: {\n type: \"object\",\n properties: {\n name: { type: \"string\" },\n amounts: { type: \"array\", items: { type: \"number\" }, description: \"One amount per bucket\" },\n total: { type: \"number\" },\n },\n required: [\"name\", \"amounts\", \"total\"],\n },\n },\n },\n required: [\"type\", \"buckets\", \"entities\"],\n },\n};\n","import { z } from \"zod\";\n\nexport const varianceAnalysisSchema = z.object({\n type: z.literal(\"variance-analysis\"),\n title: z.string().optional(),\n currency: z.string().default(\"USD\"),\n period: z.string().optional(),\n rows: z\n .array(\n z.object({\n lineItem: z.string(),\n budget: z.number(),\n actual: z.number(),\n isSubtotal: z.boolean().default(false),\n indent: z.number().min(0).max(3).default(0),\n })\n )\n .min(1)\n .max(50),\n favorableDirection: z.enum([\"higher\", \"lower\"]).default(\"higher\"),\n});\n\nexport const varianceAnalysisTool = {\n name: \"render_variance_analysis\",\n description:\n \"Render a budget vs actual table with variance columns — cost analysis, performance vs target\",\n input_schema: {\n type: \"object\" as const,\n properties: {\n type: { type: \"string\", enum: [\"variance-analysis\"] },\n title: { type: \"string\" },\n currency: { type: \"string\" },\n period: { type: \"string\" },\n rows: {\n type: \"array\",\n items: {\n type: \"object\",\n properties: {\n lineItem: { type: \"string\" },\n budget: { type: \"number\" },\n actual: { type: \"number\" },\n isSubtotal: { type: \"boolean\" },\n indent: { type: \"number\", minimum: 0, maximum: 3 },\n },\n required: [\"lineItem\", \"budget\", \"actual\"],\n },\n },\n favorableDirection: {\n type: \"string\",\n enum: [\"higher\", \"lower\"],\n description: \"Whether higher actual is favorable (revenue) or unfavorable (cost)\",\n },\n },\n required: [\"type\", \"rows\"],\n },\n};\n","import { z } from \"zod\";\n\nexport const stackedBreakdownSchema = z.object({\n type: z.literal(\"stacked-breakdown\"),\n title: z.string().optional(),\n currency: z.string().default(\"USD\"),\n periods: z.array(z.string()).min(1).max(12),\n categories: z\n .array(\n z.object({\n name: z.string(),\n color: z.string().optional(),\n values: z.array(z.number()).min(1).max(12),\n })\n )\n .min(1)\n .max(8),\n totals: z.array(z.number()).optional(),\n});\n\nexport const stackedBreakdownTool = {\n name: \"render_stacked_breakdown\",\n description:\n \"Render a stacked bar chart with category breakdown across periods — cost breakdown, revenue by segment, liability composition, budget allocation\",\n input_schema: {\n type: \"object\" as const,\n properties: {\n type: { type: \"string\", enum: [\"stacked-breakdown\"] },\n title: { type: \"string\" },\n currency: { type: \"string\" },\n periods: {\n type: \"array\",\n items: { type: \"string\" },\n description: \"Period labels, e.g. ['Q1 2024','Q2 2024']\",\n },\n categories: {\n type: \"array\",\n items: {\n type: \"object\",\n properties: {\n name: { type: \"string\" },\n color: { type: \"string\" },\n values: { type: \"array\", items: { type: \"number\" }, description: \"One value per period\" },\n },\n required: [\"name\", \"values\"],\n },\n },\n totals: { type: \"array\", items: { type: \"number\" }, description: \"Optional pre-computed totals per period\" },\n },\n required: [\"type\", \"periods\", \"categories\"],\n },\n};\n","import { z } from \"zod\";\n\nexport const comparativeBarChartSchema = z.object({\n type: z.literal(\"comparative-bar-chart\"),\n title: z.string().optional(),\n mode: z.enum([\"grouped\", \"stacked\"]).default(\"grouped\"),\n orientation: z.enum([\"vertical\", \"horizontal\"]).default(\"vertical\"),\n xKey: z.string(),\n series: z\n .array(\n z.object({\n name: z.string(),\n dataKey: z.string(),\n color: z.string().optional(),\n })\n )\n .min(1)\n .max(6),\n data: z.array(z.record(z.string(), z.union([z.string(), z.number()]))).min(1).max(24),\n unit: z.string().default(\"\"),\n showValues: z.boolean().default(false),\n});\n\nexport const comparativeBarChartTool = {\n name: \"render_comparative_bar_chart\",\n description:\n \"Render a grouped or stacked bar chart for comparisons — period-over-period, multi-entity benchmarks\",\n input_schema: {\n type: \"object\" as const,\n properties: {\n type: { type: \"string\", enum: [\"comparative-bar-chart\"] },\n title: { type: \"string\" },\n mode: { type: \"string\", enum: [\"grouped\", \"stacked\"] },\n orientation: { type: \"string\", enum: [\"vertical\", \"horizontal\"] },\n xKey: { type: \"string\", description: \"Key in data objects for x-axis labels\" },\n series: {\n type: \"array\",\n items: {\n type: \"object\",\n properties: {\n name: { type: \"string\" },\n dataKey: { type: \"string\" },\n color: { type: \"string\" },\n },\n required: [\"name\", \"dataKey\"],\n },\n },\n data: { type: \"array\", items: { type: \"object\", additionalProperties: true } },\n unit: { type: \"string\" },\n showValues: { type: \"boolean\" },\n },\n required: [\"type\", \"xKey\", \"series\", \"data\"],\n },\n};\n","import { z } from \"zod\";\n\nexport const complianceChecklistSchema = z.object({\n type: z.literal(\"compliance-checklist\"),\n title: z.string().optional(),\n sections: z\n .array(\n z.object({\n sectionTitle: z.string(),\n items: z\n .array(\n z.object({\n id: z.string(),\n description: z.string(),\n status: z.enum([\"completed\", \"in-progress\", \"not-started\", \"overdue\", \"blocked\", \"na\"]),\n dueDate: z.string().optional(),\n assignee: z.string().optional(),\n notes: z.string().optional(),\n priority: z.enum([\"critical\", \"high\", \"medium\", \"low\"]).default(\"medium\"),\n })\n )\n .min(1)\n .max(25),\n })\n )\n .min(1)\n .max(10),\n});\n\nexport const complianceChecklistTool = {\n name: \"render_compliance_checklist\",\n description:\n \"Render a regulatory checklist with status tracking — audit checklist, SOX, filing deadlines\",\n input_schema: {\n type: \"object\" as const,\n properties: {\n type: { type: \"string\", enum: [\"compliance-checklist\"] },\n title: { type: \"string\" },\n sections: {\n type: \"array\",\n items: {\n type: \"object\",\n properties: {\n sectionTitle: { type: \"string\" },\n items: {\n type: \"array\",\n items: {\n type: \"object\",\n properties: {\n id: { type: \"string\" },\n description: { type: \"string\" },\n status: {\n type: \"string\",\n enum: [\"completed\", \"in-progress\", \"not-started\", \"overdue\", \"blocked\", \"na\"],\n },\n dueDate: { type: \"string\" },\n assignee: { type: \"string\" },\n notes: { type: \"string\" },\n priority: { type: \"string\", enum: [\"critical\", \"high\", \"medium\", \"low\"] },\n },\n required: [\"id\", \"description\", \"status\"],\n },\n },\n },\n required: [\"sectionTitle\", \"items\"],\n },\n },\n },\n required: [\"type\", \"sections\"],\n },\n};\n","import { z } from \"zod\";\n\nexport const reconciliationViewSchema = z.object({\n type: z.literal(\"reconciliation-view\"),\n title: z.string().optional(),\n currency: z.string().default(\"USD\"),\n sourceA: z.object({ label: z.string() }),\n sourceB: z.object({ label: z.string() }),\n matched: z\n .array(\n z.object({\n date: z.string(),\n description: z.string(),\n amountA: z.number(),\n amountB: z.number(),\n reference: z.string().optional(),\n })\n )\n .max(50)\n .default([]),\n unmatchedA: z\n .array(\n z.object({\n date: z.string(),\n description: z.string(),\n amount: z.number(),\n reference: z.string().optional(),\n })\n )\n .max(30)\n .default([]),\n unmatchedB: z\n .array(\n z.object({\n date: z.string(),\n description: z.string(),\n amount: z.number(),\n reference: z.string().optional(),\n })\n )\n .max(30)\n .default([]),\n summary: z\n .object({\n balanceA: z.number(),\n balanceB: z.number(),\n difference: z.number(),\n })\n .optional(),\n});\n\nexport const reconciliationViewTool = {\n name: \"render_reconciliation_view\",\n description:\n \"Render a side-by-side reconciliation of two sources — bank recon, intercompany matching\",\n input_schema: {\n type: \"object\" as const,\n properties: {\n type: { type: \"string\", enum: [\"reconciliation-view\"] },\n title: { type: \"string\" },\n currency: { type: \"string\" },\n sourceA: {\n type: \"object\",\n properties: { label: { type: \"string\" } },\n required: [\"label\"],\n },\n sourceB: {\n type: \"object\",\n properties: { label: { type: \"string\" } },\n required: [\"label\"],\n },\n matched: {\n type: \"array\",\n items: {\n type: \"object\",\n properties: {\n date: { type: \"string\" },\n description: { type: \"string\" },\n amountA: { type: \"number\" },\n amountB: { type: \"number\" },\n reference: { type: \"string\" },\n },\n required: [\"date\", \"description\", \"amountA\", \"amountB\"],\n },\n },\n unmatchedA: {\n type: \"array\",\n items: {\n type: \"object\",\n properties: {\n date: { type: \"string\" },\n description: { type: \"string\" },\n amount: { type: \"number\" },\n reference: { type: \"string\" },\n },\n required: [\"date\", \"description\", \"amount\"],\n },\n },\n unmatchedB: {\n type: \"array\",\n items: {\n type: \"object\",\n properties: {\n date: { type: \"string\" },\n description: { type: \"string\" },\n amount: { type: \"number\" },\n reference: { type: \"string\" },\n },\n required: [\"date\", \"description\", \"amount\"],\n },\n },\n summary: {\n type: \"object\",\n properties: {\n balanceA: { type: \"number\" },\n balanceB: { type: \"number\" },\n difference: { type: \"number\" },\n },\n required: [\"balanceA\", \"balanceB\", \"difference\"],\n },\n },\n required: [\"type\", \"sourceA\", \"sourceB\"],\n },\n};\n","import { z } from \"zod\";\n\nexport const auditTrailSchema = z.object({\n type: z.literal(\"audit-trail\"),\n title: z.string().optional(),\n entityName: z.string().optional(),\n events: z\n .array(\n z.object({\n timestamp: z.string(),\n actor: z.string(),\n action: z.enum([\n \"created\",\n \"modified\",\n \"approved\",\n \"rejected\",\n \"deleted\",\n \"restored\",\n \"submitted\",\n \"commented\",\n ]),\n summary: z.string(),\n changes: z\n .array(\n z.object({\n field: z.string(),\n oldValue: z.string().optional(),\n newValue: z.string().optional(),\n })\n )\n .max(10)\n .optional(),\n })\n )\n .min(1)\n .max(50),\n});\n\nexport const auditTrailTool = {\n name: \"render_audit_trail\",\n description:\n \"Render a chronological change log with diffs — revision history, modification tracking\",\n input_schema: {\n type: \"object\" as const,\n properties: {\n type: { type: \"string\", enum: [\"audit-trail\"] },\n title: { type: \"string\" },\n entityName: { type: \"string\" },\n events: {\n type: \"array\",\n items: {\n type: \"object\",\n properties: {\n timestamp: { type: \"string\", description: \"ISO datetime\" },\n actor: { type: \"string\" },\n action: {\n type: \"string\",\n enum: [\"created\", \"modified\", \"approved\", \"rejected\", \"deleted\", \"restored\", \"submitted\", \"commented\"],\n },\n summary: { type: \"string\" },\n changes: {\n type: \"array\",\n items: {\n type: \"object\",\n properties: {\n field: { type: \"string\" },\n oldValue: { type: \"string\" },\n newValue: { type: \"string\" },\n },\n required: [\"field\"],\n },\n },\n },\n required: [\"timestamp\", \"actor\", \"action\", \"summary\"],\n },\n },\n },\n required: [\"type\", \"events\"],\n },\n};\n","import { z } from \"zod\";\n\nexport const documentPreviewSchema = z.object({\n type: z.literal(\"document-preview\"),\n title: z.string().optional(),\n documentType: z.enum([\"pdf\", \"excel\"]),\n source: z.object({\n url: z.string().optional(),\n base64: z.string().optional(),\n filename: z.string(),\n }),\n pages: z\n .array(\n z.object({\n label: z.string(),\n content: z.string().optional(),\n imageUrl: z.string().optional(),\n })\n )\n .min(1)\n .max(100),\n metadata: z\n .object({\n pageCount: z.number().optional(),\n fileSize: z.string().optional(),\n lastModified: z.string().optional(),\n })\n .optional(),\n highlights: z\n .array(\n z.object({\n pageIndex: z.number(),\n text: z.string(),\n color: z.enum([\"yellow\", \"red\", \"green\", \"blue\"]).default(\"yellow\"),\n note: z.string().optional(),\n })\n )\n .max(50)\n .optional(),\n});\n\nexport const documentPreviewTool = {\n name: \"render_document_preview\",\n description:\n \"Render a read-only document viewer for PDF/Excel — tax returns, financial statements, supporting docs. Demo files available: source.url='/demos/sample-tax-return.pdf' (3-page Q4 2024 tax return) and source.url='/demos/sample-budget.xlsx' (3-sheet Q4 2024 budget). When using a demo file, set source.url and provide pages with labels for fallback.\",\n input_schema: {\n type: \"object\" as const,\n properties: {\n type: { type: \"string\", enum: [\"document-preview\"] },\n title: { type: \"string\" },\n documentType: { type: \"string\", enum: [\"pdf\", \"excel\"] },\n source: {\n type: \"object\",\n properties: {\n url: { type: \"string\" },\n base64: { type: \"string\" },\n filename: { type: \"string\" },\n },\n required: [\"filename\"],\n },\n pages: {\n type: \"array\",\n items: {\n type: \"object\",\n properties: {\n label: { type: \"string\" },\n content: { type: \"string\", description: \"Text content for accessibility\" },\n imageUrl: { type: \"string\", description: \"Pre-rendered page image URL\" },\n },\n required: [\"label\"],\n },\n },\n metadata: {\n type: \"object\",\n properties: {\n pageCount: { type: \"number\" },\n fileSize: { type: \"string\" },\n lastModified: { type: \"string\" },\n },\n },\n highlights: {\n type: \"array\",\n items: {\n type: \"object\",\n properties: {\n pageIndex: { type: \"number\" },\n text: { type: \"string\" },\n color: { type: \"string\", enum: [\"yellow\", \"red\", \"green\", \"blue\"] },\n note: { type: \"string\" },\n },\n required: [\"pageIndex\", \"text\"],\n },\n },\n },\n required: [\"type\", \"documentType\", \"source\", \"pages\"],\n },\n};\n","import { z } from \"zod\";\n\nexport const provenanceChainSchema = z.object({\n type: z.literal(\"provenance-chain\"),\n title: z.string().optional(),\n entity: z.object({\n name: z.string(),\n type: z.string(),\n value: z.string(),\n }),\n steps: z\n .array(\n z.object({\n stepType: z.enum([\"source\", \"extraction\", \"rag-query\", \"reasoning\", \"computation\"]),\n label: z.string(),\n detail: z.string(),\n source: z.string().optional(),\n location: z.string().optional(),\n confidence: z.number().min(0).max(1).optional(),\n metadata: z.record(z.string(), z.string()).optional(),\n })\n )\n .min(1)\n .max(20),\n conclusion: z.object({\n value: z.string(),\n confidence: z.number().min(0).max(1),\n status: z.enum([\"qualified\", \"partially-qualified\", \"not-qualified\"]),\n }),\n});\n\nexport const provenanceChainTool = {\n name: \"render_provenance_chain\",\n description:\n \"Render a provenance chain showing how a data value was derived — source documents, extractions, reasoning steps, confidence scores. Use for employee qualification traces, data lineage, audit provenance.\",\n input_schema: {\n type: \"object\" as const,\n properties: {\n type: { type: \"string\", enum: [\"provenance-chain\"] },\n title: { type: \"string\" },\n entity: {\n type: \"object\",\n properties: {\n name: { type: \"string\" },\n type: { type: \"string\" },\n value: { type: \"string\" },\n },\n required: [\"name\", \"type\", \"value\"],\n },\n steps: {\n type: \"array\",\n items: {\n type: \"object\",\n properties: {\n stepType: {\n type: \"string\",\n enum: [\"source\", \"extraction\", \"rag-query\", \"reasoning\", \"computation\"],\n },\n label: { type: \"string\" },\n detail: { type: \"string\" },\n source: { type: \"string\" },\n location: { type: \"string\" },\n confidence: { type: \"number\", minimum: 0, maximum: 1 },\n metadata: {\n type: \"object\",\n additionalProperties: { type: \"string\" },\n },\n },\n required: [\"stepType\", \"label\", \"detail\"],\n },\n },\n conclusion: {\n type: \"object\",\n properties: {\n value: { type: \"string\" },\n confidence: { type: \"number\", minimum: 0, maximum: 1 },\n status: {\n type: \"string\",\n enum: [\"qualified\", \"partially-qualified\", \"not-qualified\"],\n },\n },\n required: [\"value\", \"confidence\", \"status\"],\n },\n },\n required: [\"type\", \"entity\", \"steps\", \"conclusion\"],\n },\n};\n","import { z } from \"zod\";\n\nexport const searchResultsSchema = z.object({\n type: z.literal(\"search-results\"),\n title: z.string().optional(),\n query: z.string(),\n totalResults: z.number(),\n results: z.array(z.object({\n title: z.string(),\n source: z.string(),\n sourceType: z.enum([\"tech-memo\", \"questionnaire\", \"contract\", \"workpaper\", \"regulation\", \"other\"]).optional(),\n relevance: z.number().min(0).max(1),\n snippet: z.string(),\n highlights: z.array(z.string()).optional(),\n location: z.string().optional(),\n url: z.string().optional(),\n })).min(1).max(20),\n});\n\nexport const searchResultsTool = {\n name: \"render_search_results\",\n description:\n \"Render ranked search results with relevance scores, source attribution, and content snippets — document search, regulatory search, knowledge base queries.\",\n input_schema: {\n type: \"object\" as const,\n properties: {\n type: { type: \"string\", enum: [\"search-results\"] },\n title: { type: \"string\" },\n query: { type: \"string\" },\n totalResults: { type: \"number\" },\n results: {\n type: \"array\",\n items: {\n type: \"object\",\n properties: {\n title: { type: \"string\" },\n source: { type: \"string\" },\n sourceType: {\n type: \"string\",\n enum: [\"tech-memo\", \"questionnaire\", \"contract\", \"workpaper\", \"regulation\", \"other\"],\n },\n relevance: { type: \"number\", minimum: 0, maximum: 1 },\n snippet: { type: \"string\" },\n highlights: { type: \"array\", items: { type: \"string\" } },\n location: { type: \"string\" },\n url: { type: \"string\" },\n },\n required: [\"title\", \"source\", \"relevance\", \"snippet\"],\n },\n },\n },\n required: [\"type\", \"query\", \"totalResults\", \"results\"],\n },\n};\n","import { z } from \"zod\";\n\nexport const legalTestResultSchema = z.object({\n type: z.literal(\"legal-test-result\"),\n title: z.string().optional(),\n citation: z.string().optional(),\n overallResult: z.enum([\"pass\", \"fail\", \"inconclusive\", \"partial\"]),\n overallNarrative: z.string().optional(),\n parts: z\n .array(\n z.object({\n partLabel: z.string(),\n result: z.enum([\"pass\", \"fail\", \"inconclusive\", \"na\"]),\n narrative: z.string(),\n subRequirements: z\n .array(\n z.object({\n label: z.string(),\n result: z.enum([\"pass\", \"fail\", \"inconclusive\", \"na\"]),\n detail: z.string().optional(),\n threshold: z.string().optional(),\n evidence: z.string().optional(),\n })\n )\n .max(10)\n .optional(),\n examples: z\n .array(\n z.object({\n scenario: z.string(),\n qualifies: z.boolean(),\n explanation: z.string(),\n })\n )\n .max(6)\n .optional(),\n })\n )\n .min(1)\n .max(8),\n});\n\nexport const legalTestResultTool = {\n name: \"render_legal_test_result\",\n description:\n \"Render a hierarchical legal test result — IRC 41 four-part test, funded-research exclusion two-prong test, regulatory compliance determinations with pass/fail at each level, narrative reasoning, and evidence.\",\n input_schema: {\n type: \"object\" as const,\n properties: {\n type: { type: \"string\", enum: [\"legal-test-result\"] },\n title: { type: \"string\" },\n citation: { type: \"string\" },\n overallResult: {\n type: \"string\",\n enum: [\"pass\", \"fail\", \"inconclusive\", \"partial\"],\n },\n overallNarrative: { type: \"string\" },\n parts: {\n type: \"array\",\n items: {\n type: \"object\",\n properties: {\n partLabel: { type: \"string\" },\n result: {\n type: \"string\",\n enum: [\"pass\", \"fail\", \"inconclusive\", \"na\"],\n },\n narrative: { type: \"string\" },\n subRequirements: {\n type: \"array\",\n items: {\n type: \"object\",\n properties: {\n label: { type: \"string\" },\n result: {\n type: \"string\",\n enum: [\"pass\", \"fail\", \"inconclusive\", \"na\"],\n },\n detail: { type: \"string\" },\n threshold: { type: \"string\" },\n evidence: { type: \"string\" },\n },\n required: [\"label\", \"result\"],\n },\n },\n examples: {\n type: \"array\",\n items: {\n type: \"object\",\n properties: {\n scenario: { type: \"string\" },\n qualifies: { type: \"boolean\" },\n explanation: { type: \"string\" },\n },\n required: [\"scenario\", \"qualifies\", \"explanation\"],\n },\n },\n },\n required: [\"partLabel\", \"result\", \"narrative\"],\n },\n },\n },\n required: [\"type\", \"overallResult\", \"parts\"],\n },\n};\n","import { z } from \"zod\";\n\nexport const engagementPipelineSchema = z.object({\n type: z.literal(\"engagement-pipeline\"),\n title: z.string().optional(),\n clientName: z.string(),\n taxYear: z.string(),\n currentPhase: z.string(),\n phases: z\n .array(\n z.object({\n label: z.string(),\n status: z.enum([\"completed\", \"in-progress\", \"pending\", \"blocked\"]),\n completedDate: z.string().optional(),\n progress: z.number().min(0).max(100).optional(),\n milestones: z\n .array(\n z.object({\n label: z.string(),\n completed: z.boolean(),\n note: z.string().optional(),\n })\n )\n .max(10)\n .optional(),\n blockers: z.array(z.string()).max(5).optional(),\n })\n )\n .min(2)\n .max(8),\n summary: z\n .object({\n totalCredit: z.string().optional(),\n daysRemaining: z.number().optional(),\n lastActivity: z.string().optional(),\n })\n .optional(),\n});\n\nexport const engagementPipelineTool = {\n name: \"render_engagement_pipeline\",\n description:\n \"Render a multi-phase engagement pipeline with progress tracking — client engagement status, tax year progress, sequential workflow phases with milestones and blockers.\",\n input_schema: {\n type: \"object\" as const,\n properties: {\n type: { type: \"string\", enum: [\"engagement-pipeline\"] },\n title: { type: \"string\" },\n clientName: { type: \"string\" },\n taxYear: { type: \"string\" },\n currentPhase: { type: \"string\" },\n phases: {\n type: \"array\",\n items: {\n type: \"object\",\n properties: {\n label: { type: \"string\" },\n status: {\n type: \"string\",\n enum: [\"completed\", \"in-progress\", \"pending\", \"blocked\"],\n },\n completedDate: { type: \"string\" },\n progress: { type: \"number\", minimum: 0, maximum: 100 },\n milestones: {\n type: \"array\",\n items: {\n type: \"object\",\n properties: {\n label: { type: \"string\" },\n completed: { type: \"boolean\" },\n note: { type: \"string\" },\n },\n required: [\"label\", \"completed\"],\n },\n },\n blockers: { type: \"array\", items: { type: \"string\" } },\n },\n required: [\"label\", \"status\"],\n },\n },\n summary: {\n type: \"object\",\n properties: {\n totalCredit: { type: \"string\" },\n daysRemaining: { type: \"number\" },\n lastActivity: { type: \"string\" },\n },\n },\n },\n required: [\"type\", \"clientName\", \"taxYear\", \"currentPhase\", \"phases\"],\n },\n};\n","import { z } from \"zod\";\n\nexport const entityCardGridSchema = z.object({\n type: z.literal(\"entity-card-grid\"),\n title: z.string().optional(),\n columns: z.union([z.literal(2), z.literal(3), z.literal(4)]).default(3),\n items: z\n .array(\n z.object({\n id: z.string(),\n name: z.string(),\n subtitle: z.string().optional(),\n avatar: z.string().optional(),\n badges: z\n .array(\n z.object({\n label: z.string(),\n color: z\n .enum([\"green\", \"red\", \"amber\", \"blue\", \"purple\", \"gray\"])\n .default(\"gray\"),\n })\n )\n .optional(),\n fields: z\n .array(z.object({ label: z.string(), value: z.string() }))\n .max(6)\n .optional(),\n })\n )\n .min(1)\n .max(24),\n});\n\nexport const entityCardGridTool = {\n name: \"render_entity_card_grid\",\n description:\n \"Render a grid of entity cards for browsing collections — clients, contacts, products, teams, resources\",\n input_schema: {\n type: \"object\" as const,\n properties: {\n type: { type: \"string\", enum: [\"entity-card-grid\"] },\n title: { type: \"string\" },\n columns: { type: \"number\", enum: [2, 3, 4] },\n items: {\n type: \"array\",\n items: {\n type: \"object\",\n properties: {\n id: { type: \"string\" },\n name: { type: \"string\" },\n subtitle: { type: \"string\" },\n avatar: { type: \"string\" },\n badges: {\n type: \"array\",\n items: {\n type: \"object\",\n properties: {\n label: { type: \"string\" },\n color: {\n type: \"string\",\n enum: [\"green\", \"red\", \"amber\", \"blue\", \"purple\", \"gray\"],\n },\n },\n required: [\"label\"],\n },\n },\n fields: {\n type: \"array\",\n items: {\n type: \"object\",\n properties: {\n label: { type: \"string\" },\n value: { type: \"string\" },\n },\n required: [\"label\", \"value\"],\n },\n },\n },\n required: [\"id\", \"name\"],\n },\n },\n },\n required: [\"type\", \"items\"],\n },\n};\n","import { z } from \"zod\";\n\nexport const jobTrackerSchema = z.object({\n type: z.literal(\"job-tracker\"),\n title: z.string().optional(),\n jobId: z.string(),\n status: z.enum([\"queued\", \"running\", \"completed\", \"failed\", \"cancelled\"]),\n progress: z.number().min(0).max(100).optional(),\n startedAt: z.string().optional(),\n completedAt: z.string().optional(),\n steps: z.array(z.object({\n label: z.string(),\n status: z.enum([\"pending\", \"running\", \"completed\", \"failed\", \"skipped\"]),\n duration: z.string().optional(),\n })).optional(),\n result: z.object({\n summary: z.string(),\n data: z.record(z.string(), z.unknown()).optional(),\n }).optional(),\n error: z.object({\n message: z.string(),\n code: z.string().optional(),\n }).optional(),\n});\n\nexport const jobTrackerTool = {\n name: \"render_job_tracker\",\n description: \"Render a job or task status tracker with progress bar, steps, and result — for async operations, builds, imports, exports\",\n input_schema: {\n type: \"object\" as const,\n properties: {\n type: { type: \"string\", enum: [\"job-tracker\"] },\n title: { type: \"string\" },\n jobId: { type: \"string\" },\n status: { type: \"string\", enum: [\"queued\", \"running\", \"completed\", \"failed\", \"cancelled\"] },\n progress: { type: \"number\", minimum: 0, maximum: 100 },\n startedAt: { type: \"string\" },\n completedAt: { type: \"string\" },\n steps: {\n type: \"array\",\n items: {\n type: \"object\",\n properties: {\n label: { type: \"string\" },\n status: { type: \"string\", enum: [\"pending\", \"running\", \"completed\", \"failed\", \"skipped\"] },\n duration: { type: \"string\" },\n },\n required: [\"label\", \"status\"],\n },\n },\n result: {\n type: \"object\",\n properties: {\n summary: { type: \"string\" },\n data: { type: \"object\" },\n },\n required: [\"summary\"],\n },\n error: {\n type: \"object\",\n properties: {\n message: { type: \"string\" },\n code: { type: \"string\" },\n },\n required: [\"message\"],\n },\n },\n required: [\"type\", \"jobId\", \"status\"],\n },\n};\n","import { z } from \"zod\";\n\nexport const citedAnswerSchema = z.object({\n type: z.literal(\"cited-answer\"),\n title: z.string().optional(),\n answer: z.string(),\n citations: z.array(z.object({\n id: z.string(),\n label: z.string(),\n source: z.string(),\n sourceType: z.string().optional(),\n snippet: z.string(),\n url: z.string().optional(),\n confidence: z.number().min(0).max(1).optional(),\n })).min(1).max(20),\n followUps: z.array(z.string()).max(5).optional(),\n});\n\nexport const citedAnswerTool = {\n name: \"render_cited_answer\",\n description: \"Render an AI-synthesized answer with inline numbered citations linking to source documents — for RAG answers, research synthesis, document Q&A\",\n input_schema: {\n type: \"object\" as const,\n properties: {\n type: { type: \"string\", enum: [\"cited-answer\"] },\n title: { type: \"string\" },\n answer: { type: \"string\", description: \"Answer text with [n] citation markers\" },\n citations: {\n type: \"array\",\n items: {\n type: \"object\",\n properties: {\n id: { type: \"string\" },\n label: { type: \"string\" },\n source: { type: \"string\" },\n sourceType: { type: \"string\" },\n snippet: { type: \"string\" },\n url: { type: \"string\" },\n confidence: { type: \"number\", minimum: 0, maximum: 1 },\n },\n required: [\"id\", \"label\", \"source\", \"snippet\"],\n },\n },\n followUps: { type: \"array\", items: { type: \"string\" } },\n },\n required: [\"type\", \"answer\", \"citations\"],\n },\n};\n","import { z } from \"zod\";\n\nexport const transactionFeedSchema = z.object({\n type: z.literal(\"transaction-feed\"),\n title: z.string().optional(),\n currency: z.string().default(\"USD\"),\n transactions: z.array(z.object({\n id: z.string().optional(),\n date: z.string(),\n description: z.string(),\n amount: z.number(),\n category: z.string().optional(),\n counterparty: z.string().optional(),\n balance: z.number().optional(),\n status: z.enum([\"cleared\", \"pending\", \"reversed\"]).default(\"cleared\"),\n metadata: z.record(z.string(), z.string()).optional(),\n })).min(1).max(100),\n});\n\nexport const transactionFeedTool = {\n name: \"render_transaction_feed\",\n description: \"Render a chronological transaction feed with amounts, categories, and running balance — for bank statements, ledger activity, order history\",\n input_schema: {\n type: \"object\" as const,\n properties: {\n type: { type: \"string\", enum: [\"transaction-feed\"] },\n title: { type: \"string\" },\n currency: { type: \"string\" },\n transactions: {\n type: \"array\",\n items: {\n type: \"object\",\n properties: {\n id: { type: \"string\" },\n date: { type: \"string\" },\n description: { type: \"string\" },\n amount: { type: \"number\" },\n category: { type: \"string\" },\n counterparty: { type: \"string\" },\n balance: { type: \"number\" },\n status: { type: \"string\", enum: [\"cleared\", \"pending\", \"reversed\"] },\n metadata: { type: \"object\", additionalProperties: { type: \"string\" } },\n },\n required: [\"date\", \"description\", \"amount\"],\n },\n },\n },\n required: [\"type\", \"transactions\"],\n },\n};\n","import { z } from \"zod\";\n\nexport const fileBrowserSchema = z.object({\n type: z.literal(\"file-browser\"),\n title: z.string().optional(),\n items: z.array(z.object({\n id: z.string(),\n name: z.string(),\n docType: z.string().optional(),\n group: z.string().optional(),\n size: z.string().optional(),\n createdAt: z.string().optional(),\n modifiedAt: z.string().optional(),\n author: z.string().optional(),\n tags: z.array(z.string()).optional(),\n // Optional: sandbox/agent-harness files often have no public URL. The\n // resolver falls back to read-only display when url is absent.\n url: z.string().optional(),\n preview: z.string().optional(),\n })).min(1).max(50),\n});\n\nexport const fileBrowserTool = {\n name: \"render_file_browser\",\n description: \"Render a document or file browser with type badges, grouping, and metadata — for document collections, file libraries, client documents\",\n input_schema: {\n type: \"object\" as const,\n properties: {\n type: { type: \"string\", enum: [\"file-browser\"] },\n title: { type: \"string\" },\n items: {\n type: \"array\",\n items: {\n type: \"object\",\n properties: {\n id: { type: \"string\" },\n name: { type: \"string\" },\n docType: { type: \"string\" },\n group: { type: \"string\" },\n size: { type: \"string\" },\n createdAt: { type: \"string\" },\n modifiedAt: { type: \"string\" },\n author: { type: \"string\" },\n tags: { type: \"array\", items: { type: \"string\" } },\n url: { type: \"string\" },\n preview: { type: \"string\" },\n },\n required: [\"id\", \"name\"],\n },\n },\n },\n required: [\"type\", \"items\"],\n },\n};\n","import { z } from \"zod\";\n\nexport const downloadCardSchema = z.object({\n type: z.literal(\"download-card\"),\n title: z.string().optional(),\n files: z.array(z.object({\n filename: z.string(),\n url: z.string(),\n fileType: z.string().optional(),\n size: z.string().optional(),\n expiresAt: z.string().optional(),\n description: z.string().optional(),\n // Opt out of inline preview for an otherwise-previewable type. Preview is\n // auto-enabled from the file type when the url is present; set false to\n // force download-only.\n preview: z.boolean().optional(),\n })).min(1).max(10),\n});\n\nexport const downloadCardTool = {\n name: \"render_download_card\",\n description: \"Render download cards for files with filename, size, and download link — for export results, generated reports, file delivery\",\n input_schema: {\n type: \"object\" as const,\n properties: {\n type: { type: \"string\", enum: [\"download-card\"] },\n title: { type: \"string\" },\n files: {\n type: \"array\",\n items: {\n type: \"object\",\n properties: {\n filename: { type: \"string\" },\n url: { type: \"string\" },\n fileType: { type: \"string\" },\n size: { type: \"string\" },\n expiresAt: { type: \"string\" },\n description: { type: \"string\" },\n preview: { type: \"boolean\" },\n },\n required: [\"filename\", \"url\"],\n },\n },\n },\n required: [\"type\", \"files\"],\n },\n};\n","import { z } from \"zod\";\n\nexport const opsDashboardSchema = z.object({\n type: z.literal(\"ops-dashboard\"),\n title: z.string().optional(),\n items: z.array(z.object({\n id: z.string(),\n name: z.string(),\n state: z.enum([\"running\", \"paused\", \"stopped\", \"error\"]),\n schedule: z.string().optional(),\n lastRunAt: z.string().optional(),\n nextRunAt: z.string().optional(),\n metrics: z.array(z.object({ label: z.string(), value: z.string() })).max(4).optional(),\n health: z.enum([\"healthy\", \"degraded\", \"down\"]).optional(),\n })).min(1).max(12),\n});\n\nexport const opsDashboardTool = {\n name: \"render_ops_dashboard\",\n description: \"Render an operational dashboard grid showing pipeline or service status cards — for monitoring pipelines, services, cron jobs, microservices\",\n input_schema: {\n type: \"object\" as const,\n properties: {\n type: { type: \"string\", enum: [\"ops-dashboard\"] },\n title: { type: \"string\" },\n items: {\n type: \"array\",\n items: {\n type: \"object\",\n properties: {\n id: { type: \"string\" },\n name: { type: \"string\" },\n state: { type: \"string\", enum: [\"running\", \"paused\", \"stopped\", \"error\"] },\n schedule: { type: \"string\" },\n lastRunAt: { type: \"string\" },\n nextRunAt: { type: \"string\" },\n metrics: { type: \"array\", items: { type: \"object\", properties: { label: { type: \"string\" }, value: { type: \"string\" } }, required: [\"label\", \"value\"] } },\n health: { type: \"string\", enum: [\"healthy\", \"degraded\", \"down\"] },\n },\n required: [\"id\", \"name\", \"state\"],\n },\n },\n },\n required: [\"type\", \"items\"],\n },\n};\n","import { z } from \"zod\";\n\nconst kvItemSchema = z.object({\n key: z.string(),\n value: z.string(),\n type: z.enum([\"text\", \"date\", \"url\", \"boolean\", \"code\", \"currency\"]).default(\"text\"),\n copyable: z.boolean().default(false),\n});\n\nexport const keyValueListSchema = z.object({\n type: z.literal(\"key-value-list\"),\n title: z.string().optional(),\n groups: z.array(z.object({\n label: z.string(),\n items: z.array(kvItemSchema).min(1).max(20),\n })).optional(),\n items: z.array(kvItemSchema).max(30).optional(),\n});\n\nexport const keyValueListTool = {\n name: \"render_key_value_list\",\n description: \"Render a structured key-value list with optional grouping and type-aware formatting — for API responses, config displays, metadata, extraction results\",\n input_schema: {\n type: \"object\" as const,\n properties: {\n type: { type: \"string\", enum: [\"key-value-list\"] },\n title: { type: \"string\" },\n groups: {\n type: \"array\",\n items: {\n type: \"object\",\n properties: {\n label: { type: \"string\" },\n items: {\n type: \"array\",\n items: {\n type: \"object\",\n properties: {\n key: { type: \"string\" },\n value: { type: \"string\" },\n type: { type: \"string\", enum: [\"text\", \"date\", \"url\", \"boolean\", \"code\", \"currency\"] },\n copyable: { type: \"boolean\" },\n },\n required: [\"key\", \"value\"],\n },\n },\n },\n required: [\"label\", \"items\"],\n },\n },\n items: {\n type: \"array\",\n items: {\n type: \"object\",\n properties: {\n key: { type: \"string\" },\n value: { type: \"string\" },\n type: { type: \"string\", enum: [\"text\", \"date\", \"url\", \"boolean\", \"code\", \"currency\"] },\n copyable: { type: \"boolean\" },\n },\n required: [\"key\", \"value\"],\n },\n },\n },\n required: [\"type\"],\n },\n};\n","import { z } from \"zod\";\n\nconst totalLineSchema = z.object({\n currentPeriod: z.number(),\n priorPeriod: z.number().optional(),\n});\n\nexport const balanceSheetSchema = z.object({\n type: z.literal(\"balance-sheet\"),\n title: z.string().optional(),\n currency: z.string().default(\"USD\"),\n metadata: z.object({\n companyName: z.string().optional(),\n preparedBy: z.string().optional(),\n reviewedBy: z.string().optional(),\n approvedBy: z.string().optional(),\n status: z.enum([\"draft\", \"pending-review\", \"approved\", \"filed\"]).optional(),\n date: z.string().optional(),\n }).optional(),\n currentPeriodLabel: z.string(),\n priorPeriodLabel: z.string().optional(),\n sections: z\n .array(\n z.object({\n category: z.enum([\"assets\", \"liabilities\", \"equity\"]),\n subsections: z\n .array(\n z.object({\n label: z.string(),\n items: z\n .array(\n z.object({\n name: z.string(),\n currentPeriod: z.number(),\n priorPeriod: z.number().optional(),\n })\n )\n .max(15),\n subtotal: totalLineSchema.optional(),\n })\n )\n .min(1)\n .max(5),\n total: totalLineSchema.optional(),\n })\n )\n .min(1)\n .max(3),\n totalLiabilitiesAndEquity: totalLineSchema.optional(),\n});\n\nexport const balanceSheetTool = {\n name: \"render_balance_sheet\",\n description:\n \"Render a balance sheet with assets, liabilities, and equity sections — statement of financial position, A = L + E comparison\",\n input_schema: {\n type: \"object\" as const,\n properties: {\n type: { type: \"string\", enum: [\"balance-sheet\"] },\n title: { type: \"string\" },\n currency: { type: \"string\", description: \"ISO currency code, e.g. USD\" },\n metadata: {\n type: \"object\",\n properties: {\n companyName: { type: \"string\" },\n preparedBy: { type: \"string\" },\n reviewedBy: { type: \"string\" },\n approvedBy: { type: \"string\" },\n status: { type: \"string\", enum: [\"draft\", \"pending-review\", \"approved\", \"filed\"] },\n date: { type: \"string\" },\n },\n },\n currentPeriodLabel: { type: \"string\", description: \"Label for current period column, e.g. Dec 31, 2024\" },\n priorPeriodLabel: { type: \"string\", description: \"Label for prior period column, e.g. Dec 31, 2023\" },\n sections: {\n type: \"array\",\n items: {\n type: \"object\",\n properties: {\n category: {\n type: \"string\",\n enum: [\"assets\", \"liabilities\", \"equity\"],\n },\n subsections: {\n type: \"array\",\n items: {\n type: \"object\",\n properties: {\n label: { type: \"string\", description: \"Subsection label, e.g. Current Assets\" },\n items: {\n type: \"array\",\n items: {\n type: \"object\",\n properties: {\n name: { type: \"string\" },\n currentPeriod: { type: \"number\" },\n priorPeriod: { type: \"number\" },\n },\n required: [\"name\", \"currentPeriod\"],\n },\n },\n subtotal: {\n type: \"object\",\n properties: {\n currentPeriod: { type: \"number\" },\n priorPeriod: { type: \"number\" },\n },\n required: [\"currentPeriod\"],\n },\n },\n required: [\"label\", \"items\"],\n },\n },\n },\n required: [\"category\", \"subsections\"],\n },\n },\n totalLiabilitiesAndEquity: {\n type: \"object\",\n properties: {\n currentPeriod: { type: \"number\" },\n priorPeriod: { type: \"number\" },\n },\n required: [\"currentPeriod\"],\n },\n },\n required: [\"type\", \"currentPeriodLabel\", \"sections\"],\n },\n};\n","import { z } from \"zod\";\n\nexport const incomeStatementSchema = z.object({\n type: z.literal(\"income-statement\"),\n title: z.string().optional(),\n currency: z.string().default(\"USD\"),\n metadata: z.object({\n companyName: z.string().optional(),\n preparedBy: z.string().optional(),\n reviewedBy: z.string().optional(),\n approvedBy: z.string().optional(),\n status: z.enum([\"draft\", \"pending-review\", \"approved\", \"filed\"]).optional(),\n date: z.string().optional(),\n }).optional(),\n periods: z.array(z.string()).min(1).max(8),\n showPercentOfRevenue: z.boolean().default(false),\n sections: z\n .array(\n z.object({\n label: z.string(),\n lineItems: z\n .array(\n z.object({\n name: z.string(),\n amounts: z.array(z.number()),\n indent: z.number().min(0).max(2).default(0),\n isSubtotal: z.boolean().optional(),\n })\n )\n .max(20),\n sectionType: z.enum([\"detail\", \"subtotal\"]).default(\"detail\"),\n })\n )\n .min(1)\n .max(10),\n calculatedTotals: z.object({\n grossProfit: z.array(z.number()).optional(),\n operatingIncome: z.array(z.number()).optional(),\n netIncome: z.array(z.number()),\n }),\n});\n\nexport const incomeStatementTool = {\n name: \"render_income_statement\",\n description:\n \"Render a multi-period income statement with revenue, COGS, gross profit, operating expenses, and net income — P&L, profit and loss\",\n input_schema: {\n type: \"object\" as const,\n properties: {\n type: { type: \"string\", enum: [\"income-statement\"] },\n title: { type: \"string\" },\n currency: { type: \"string\", description: \"ISO currency code, e.g. USD\" },\n metadata: {\n type: \"object\",\n properties: {\n companyName: { type: \"string\" },\n preparedBy: { type: \"string\" },\n reviewedBy: { type: \"string\" },\n approvedBy: { type: \"string\" },\n status: { type: \"string\", enum: [\"draft\", \"pending-review\", \"approved\", \"filed\"] },\n date: { type: \"string\" },\n },\n },\n periods: {\n type: \"array\",\n items: { type: \"string\" },\n minItems: 1,\n maxItems: 8,\n description: \"Period labels, e.g. Q1 2024, Q2 2024\",\n },\n showPercentOfRevenue: {\n type: \"boolean\",\n description: \"Show each line item as a percentage of revenue\",\n },\n sections: {\n type: \"array\",\n items: {\n type: \"object\",\n properties: {\n label: { type: \"string\" },\n lineItems: {\n type: \"array\",\n items: {\n type: \"object\",\n properties: {\n name: { type: \"string\" },\n amounts: {\n type: \"array\",\n items: { type: \"number\" },\n description: \"One amount per period\",\n },\n indent: {\n type: \"number\",\n minimum: 0,\n maximum: 2,\n description: \"Indentation level 0-2\",\n },\n isSubtotal: {\n type: \"boolean\",\n description:\n \"True for a subtotal/total row (e.g. 'Total Revenue'). \"\n + \"Excluded from the %-of-revenue base so it isn't double-counted.\",\n },\n },\n required: [\"name\", \"amounts\"],\n },\n },\n sectionType: {\n type: \"string\",\n enum: [\"detail\", \"subtotal\"],\n },\n },\n required: [\"label\", \"lineItems\"],\n },\n },\n calculatedTotals: {\n type: \"object\",\n properties: {\n grossProfit: {\n type: \"array\",\n items: { type: \"number\" },\n description: \"Gross profit per period\",\n },\n operatingIncome: {\n type: \"array\",\n items: { type: \"number\" },\n description: \"Operating income per period\",\n },\n netIncome: {\n type: \"array\",\n items: { type: \"number\" },\n description: \"Net income per period\",\n },\n },\n required: [\"netIncome\"],\n },\n },\n required: [\"type\", \"periods\", \"sections\", \"calculatedTotals\"],\n },\n};\n","import { z } from \"zod\";\n\nexport const cashFlowStatementSchema = z.object({\n type: z.literal(\"cash-flow-statement\"),\n title: z.string().optional(),\n currency: z.string().default(\"USD\"),\n metadata: z.object({\n companyName: z.string().optional(),\n preparedBy: z.string().optional(),\n reviewedBy: z.string().optional(),\n approvedBy: z.string().optional(),\n status: z.enum([\"draft\", \"pending-review\", \"approved\", \"filed\"]).optional(),\n date: z.string().optional(),\n }).optional(),\n periodLabel: z.string().optional(),\n priorPeriodLabel: z.string().optional(),\n activities: z\n .array(\n z.object({\n activityType: z.enum([\"operating\", \"investing\", \"financing\"]),\n lineItems: z\n .array(\n z.object({\n name: z.string(),\n amount: z.number(),\n priorAmount: z.number().optional(),\n indent: z.number().min(0).max(2).default(0),\n isSubtotal: z.boolean().default(false),\n })\n )\n .min(1)\n .max(20),\n netCash: z.number(),\n priorNetCash: z.number().optional(),\n })\n )\n .min(1)\n .max(3),\n netChange: z.number(),\n priorNetChange: z.number().optional(),\n beginningCash: z.number(),\n endingCash: z.number(),\n priorBeginningCash: z.number().optional(),\n priorEndingCash: z.number().optional(),\n});\n\nexport const cashFlowStatementTool = {\n name: \"render_cash_flow_statement\",\n description:\n \"Render a cash flow statement with operating, investing, and financing activities — statement of cash flows, net change in cash\",\n input_schema: {\n type: \"object\" as const,\n properties: {\n type: { type: \"string\", enum: [\"cash-flow-statement\"] },\n title: { type: \"string\" },\n currency: { type: \"string\", description: \"ISO currency code, e.g. USD\" },\n metadata: {\n type: \"object\",\n properties: {\n companyName: { type: \"string\" },\n preparedBy: { type: \"string\" },\n reviewedBy: { type: \"string\" },\n approvedBy: { type: \"string\" },\n status: { type: \"string\", enum: [\"draft\", \"pending-review\", \"approved\", \"filed\"] },\n date: { type: \"string\" },\n },\n },\n periodLabel: {\n type: \"string\",\n description: \"Label for the current period, e.g. Year Ended Dec 31, 2024\",\n },\n priorPeriodLabel: {\n type: \"string\",\n description: \"Label for the prior period, e.g. Year Ended Dec 31, 2023\",\n },\n activities: {\n type: \"array\",\n minItems: 1,\n maxItems: 3,\n items: {\n type: \"object\",\n properties: {\n activityType: {\n type: \"string\",\n enum: [\"operating\", \"investing\", \"financing\"],\n },\n lineItems: {\n type: \"array\",\n minItems: 1,\n maxItems: 20,\n items: {\n type: \"object\",\n properties: {\n name: { type: \"string\" },\n amount: { type: \"number\" },\n priorAmount: { type: \"number\" },\n indent: {\n type: \"number\",\n minimum: 0,\n maximum: 2,\n description: \"Indentation level 0-2\",\n },\n isSubtotal: { type: \"boolean\" },\n },\n required: [\"name\", \"amount\"],\n },\n },\n netCash: { type: \"number\" },\n priorNetCash: { type: \"number\" },\n },\n required: [\"activityType\", \"lineItems\", \"netCash\"],\n },\n },\n netChange: { type: \"number\" },\n priorNetChange: { type: \"number\" },\n beginningCash: { type: \"number\" },\n endingCash: { type: \"number\" },\n priorBeginningCash: { type: \"number\" },\n priorEndingCash: { type: \"number\" },\n },\n required: [\"type\", \"activities\", \"netChange\", \"beginningCash\", \"endingCash\"],\n },\n};\n","import { z } from \"zod\";\n\nexport const generalLedgerSchema = z.object({\n type: z.literal(\"general-ledger\"),\n title: z.string().optional(),\n currency: z.string().default(\"USD\"),\n account: z.object({\n code: z.string(),\n name: z.string(),\n accountType: z.enum([\"asset\", \"liability\", \"equity\", \"revenue\", \"expense\"]).optional(),\n }),\n dateRange: z.object({\n from: z.string(),\n to: z.string(),\n }).optional(),\n openingBalance: z.number().default(0),\n transactions: z\n .array(\n z.object({\n date: z.string(),\n description: z.string(),\n reference: z.string().optional(),\n source: z.string().optional(),\n debit: z.number().default(0),\n credit: z.number().default(0),\n runningBalance: z.number(),\n })\n )\n .min(1)\n .max(100),\n closingBalance: z.number(),\n});\n\nexport const generalLedgerTool = {\n name: \"render_general_ledger\",\n description:\n \"Render a general ledger with account-level transaction detail and running balance — GL detail, account ledger, ledger entries\",\n input_schema: {\n type: \"object\" as const,\n properties: {\n type: { type: \"string\", enum: [\"general-ledger\"] },\n title: { type: \"string\" },\n currency: { type: \"string\", description: \"ISO currency code, e.g. USD\" },\n account: {\n type: \"object\",\n properties: {\n code: { type: \"string\" },\n name: { type: \"string\" },\n accountType: {\n type: \"string\",\n enum: [\"asset\", \"liability\", \"equity\", \"revenue\", \"expense\"],\n },\n },\n required: [\"code\", \"name\"],\n },\n dateRange: {\n type: \"object\",\n properties: {\n from: { type: \"string\" },\n to: { type: \"string\" },\n },\n required: [\"from\", \"to\"],\n },\n openingBalance: { type: \"number\", description: \"Opening balance for the period\" },\n transactions: {\n type: \"array\",\n items: {\n type: \"object\",\n properties: {\n date: { type: \"string\" },\n description: { type: \"string\" },\n reference: { type: \"string\" },\n source: { type: \"string\", description: \"Source document, e.g. JE-001, AP-INV-042\" },\n debit: { type: \"number\" },\n credit: { type: \"number\" },\n runningBalance: { type: \"number\" },\n },\n required: [\"date\", \"description\", \"runningBalance\"],\n },\n },\n closingBalance: { type: \"number\" },\n },\n required: [\"type\", \"account\", \"transactions\", \"closingBalance\"],\n },\n};\n","import { z } from \"zod\";\n\nexport const chartOfAccountsSchema = z.object({\n type: z.literal(\"chart-of-accounts\"),\n title: z.string().optional(),\n currency: z.string().default(\"USD\"),\n showBalances: z.boolean().default(false),\n accounts: z\n .array(\n z.object({\n code: z.string(),\n name: z.string(),\n accountType: z.enum([\"asset\", \"liability\", \"equity\", \"revenue\", \"expense\"]),\n subType: z.string().optional(),\n status: z.enum([\"active\", \"inactive\"]).default(\"active\"),\n indent: z.number().min(0).max(3).default(0),\n isHeader: z.boolean().default(false),\n balance: z.number().optional(),\n })\n )\n .min(1)\n .max(100),\n});\n\nexport const chartOfAccountsTool = {\n name: \"render_chart_of_accounts\",\n description:\n \"Render a chart of accounts with account codes, types, hierarchy, and optional balances — COA, account structure, account directory\",\n input_schema: {\n type: \"object\" as const,\n properties: {\n type: { type: \"string\", enum: [\"chart-of-accounts\"] },\n title: { type: \"string\" },\n currency: { type: \"string\", description: \"ISO currency code, e.g. USD\" },\n showBalances: { type: \"boolean\", description: \"Whether to show balance column\" },\n accounts: {\n type: \"array\",\n items: {\n type: \"object\",\n properties: {\n code: { type: \"string\", description: \"Account code, e.g. 1000\" },\n name: { type: \"string\", description: \"Account name\" },\n accountType: {\n type: \"string\",\n enum: [\"asset\", \"liability\", \"equity\", \"revenue\", \"expense\"],\n },\n subType: { type: \"string\", description: \"Sub-type, e.g. Current Asset, Fixed Asset, COGS\" },\n status: { type: \"string\", enum: [\"active\", \"inactive\"] },\n indent: { type: \"number\", description: \"Indentation level 0-3\" },\n isHeader: { type: \"boolean\", description: \"Whether this row is a section header\" },\n balance: { type: \"number\", description: \"Account balance\" },\n },\n required: [\"code\", \"name\", \"accountType\"],\n },\n },\n },\n required: [\"type\", \"accounts\"],\n },\n};\n","import { z } from \"zod\";\n\nexport const invoiceDetailSchema = z.object({\n type: z.literal(\"invoice-detail\"),\n invoiceNumber: z.string(),\n status: z.enum([\"draft\", \"sent\", \"paid\", \"partial\", \"overdue\", \"void\"]),\n issueDate: z.string(),\n dueDate: z.string(),\n currency: z.string().default(\"USD\"),\n client: z.object({\n name: z.string(),\n address: z.string().optional(),\n email: z.string().optional(),\n }),\n lineItems: z\n .array(\n z.object({\n description: z.string(),\n quantity: z.number(),\n unitPrice: z.number(),\n amount: z.number(),\n })\n )\n .min(1)\n .max(30),\n subtotal: z.number(),\n taxLabel: z.string().optional(),\n taxAmount: z.number().default(0),\n discount: z.number().default(0),\n total: z.number(),\n amountPaid: z.number().default(0),\n amountDue: z.number(),\n payments: z\n .array(\n z.object({\n date: z.string(),\n method: z.string(),\n amount: z.number(),\n reference: z.string().optional(),\n })\n )\n .optional(),\n notes: z.string().optional(),\n terms: z.string().optional(),\n});\n\nexport const invoiceDetailTool = {\n name: \"render_invoice_detail\",\n description:\n \"Render a single invoice with line items, totals, tax, payments, and status — invoice detail, billing, AR invoice\",\n input_schema: {\n type: \"object\" as const,\n properties: {\n type: { type: \"string\", enum: [\"invoice-detail\"] },\n invoiceNumber: { type: \"string\" },\n status: {\n type: \"string\",\n enum: [\"draft\", \"sent\", \"paid\", \"partial\", \"overdue\", \"void\"],\n },\n issueDate: { type: \"string\" },\n dueDate: { type: \"string\" },\n currency: { type: \"string\" },\n client: {\n type: \"object\",\n properties: {\n name: { type: \"string\" },\n address: { type: \"string\" },\n email: { type: \"string\" },\n },\n required: [\"name\"],\n },\n lineItems: {\n type: \"array\",\n items: {\n type: \"object\",\n properties: {\n description: { type: \"string\" },\n quantity: { type: \"number\" },\n unitPrice: { type: \"number\" },\n amount: { type: \"number\" },\n },\n required: [\"description\", \"quantity\", \"unitPrice\", \"amount\"],\n },\n },\n subtotal: { type: \"number\" },\n taxLabel: { type: \"string\" },\n taxAmount: { type: \"number\" },\n discount: { type: \"number\" },\n total: { type: \"number\" },\n amountPaid: { type: \"number\" },\n amountDue: { type: \"number\" },\n payments: {\n type: \"array\",\n items: {\n type: \"object\",\n properties: {\n date: { type: \"string\" },\n method: { type: \"string\" },\n amount: { type: \"number\" },\n reference: { type: \"string\" },\n },\n required: [\"date\", \"method\", \"amount\"],\n },\n },\n notes: { type: \"string\" },\n terms: { type: \"string\" },\n },\n required: [\n \"type\",\n \"invoiceNumber\",\n \"status\",\n \"issueDate\",\n \"dueDate\",\n \"client\",\n \"lineItems\",\n \"subtotal\",\n \"total\",\n \"amountDue\",\n ],\n },\n};\n","import { z } from \"zod\";\n\nexport const amortizationTableSchema = z.object({\n type: z.literal(\"amortization-table\"),\n title: z.string().optional(),\n currency: z.string().default(\"USD\"),\n summary: z\n .object({\n originalAmount: z.number(),\n interestRate: z.string(),\n term: z.string(),\n monthlyPayment: z.number().optional(),\n totalInterest: z.number().optional(),\n startDate: z.string().optional(),\n })\n .optional(),\n payments: z\n .array(\n z.object({\n period: z.string(),\n paymentDate: z.string().optional(),\n payment: z.number(),\n principal: z.number(),\n interest: z.number(),\n balance: z.number(),\n extra: z.number().default(0),\n })\n )\n .min(1)\n .max(372),\n});\n\nexport const amortizationTableTool = {\n name: \"render_amortization_table\",\n description:\n \"Render a loan or lease amortization schedule with principal, interest, and remaining balance — mortgage, lease payments, ASC 842, loan servicing\",\n input_schema: {\n type: \"object\" as const,\n properties: {\n type: { type: \"string\", enum: [\"amortization-table\"] },\n title: { type: \"string\" },\n currency: { type: \"string\", default: \"USD\" },\n summary: {\n type: \"object\",\n properties: {\n originalAmount: { type: \"number\" },\n interestRate: { type: \"string\" },\n term: { type: \"string\" },\n monthlyPayment: { type: \"number\" },\n totalInterest: { type: \"number\" },\n startDate: { type: \"string\" },\n },\n required: [\"originalAmount\", \"interestRate\", \"term\"],\n },\n payments: {\n type: \"array\",\n items: {\n type: \"object\",\n properties: {\n period: { type: \"string\" },\n paymentDate: { type: \"string\" },\n payment: { type: \"number\" },\n principal: { type: \"number\" },\n interest: { type: \"number\" },\n balance: { type: \"number\" },\n extra: { type: \"number\", default: 0 },\n },\n required: [\"period\", \"payment\", \"principal\", \"interest\", \"balance\"],\n },\n minItems: 1,\n maxItems: 372,\n },\n },\n required: [\"type\", \"payments\"],\n },\n};\n","import { z } from \"zod\";\n\nexport const depreciationScheduleSchema = z.object({\n type: z.literal(\"depreciation-schedule\"),\n title: z.string().optional(),\n currency: z.string().default(\"USD\"),\n asOfDate: z.string().optional(),\n method: z.string().optional(),\n assets: z\n .array(\n z.object({\n id: z.string(),\n name: z.string(),\n category: z\n .enum([\"Buildings\", \"Equipment\", \"Vehicles\", \"Furniture\"])\n .optional(),\n acquiredDate: z.string(),\n cost: z.number(),\n salvageValue: z.number().default(0),\n usefulLife: z.string().optional(),\n method: z.string().optional(),\n currentYearDepreciation: z.number(),\n accumulatedDepreciation: z.number(),\n bookValue: z.number(),\n })\n )\n .min(1)\n .max(50),\n totals: z\n .object({\n totalCost: z.number(),\n totalCurrentYear: z.number(),\n totalAccumulated: z.number(),\n totalBookValue: z.number(),\n })\n .optional(),\n});\n\nexport const depreciationScheduleTool = {\n name: \"render_depreciation_schedule\",\n description:\n \"Render a fixed asset depreciation schedule with cost, useful life, method, annual depreciation, accumulated depreciation, and book value — asset register, MACRS, straight-line\",\n input_schema: {\n type: \"object\" as const,\n properties: {\n type: { type: \"string\", enum: [\"depreciation-schedule\"] },\n title: { type: \"string\" },\n currency: {\n type: \"string\",\n description: \"ISO currency code, e.g. USD\",\n },\n asOfDate: {\n type: \"string\",\n description: \"As-of date for the schedule\",\n },\n method: {\n type: \"string\",\n description:\n \"Default depreciation method, e.g. Straight-Line, MACRS\",\n },\n assets: {\n type: \"array\",\n items: {\n type: \"object\",\n properties: {\n id: { type: \"string\" },\n name: { type: \"string\" },\n category: {\n type: \"string\",\n enum: [\"Buildings\", \"Equipment\", \"Vehicles\", \"Furniture\"],\n },\n acquiredDate: { type: \"string\" },\n cost: { type: \"number\" },\n salvageValue: { type: \"number\" },\n usefulLife: {\n type: \"string\",\n description: \"e.g. 5 years, 39 years\",\n },\n method: {\n type: \"string\",\n description: \"Per-asset depreciation method override\",\n },\n currentYearDepreciation: { type: \"number\" },\n accumulatedDepreciation: { type: \"number\" },\n bookValue: { type: \"number\" },\n },\n required: [\n \"id\",\n \"name\",\n \"acquiredDate\",\n \"cost\",\n \"currentYearDepreciation\",\n \"accumulatedDepreciation\",\n \"bookValue\",\n ],\n },\n },\n totals: {\n type: \"object\",\n properties: {\n totalCost: { type: \"number\" },\n totalCurrentYear: { type: \"number\" },\n totalAccumulated: { type: \"number\" },\n totalBookValue: { type: \"number\" },\n },\n required: [\n \"totalCost\",\n \"totalCurrentYear\",\n \"totalAccumulated\",\n \"totalBookValue\",\n ],\n },\n },\n required: [\"type\", \"assets\"],\n },\n};\n","import { z } from \"zod\";\n\nexport const escalationCardSchema = z.object({\n type: z.literal(\"escalation-card\"),\n title: z.string().optional(),\n description: z.string().optional(),\n url: z.string(),\n ctaLabel: z.string().optional(),\n priority: z.enum([\"low\", \"medium\", \"high\"]).optional(),\n});\n\nexport const escalationCardTool = {\n name: \"render_escalation_card\",\n description:\n \"Render a human-in-the-loop (HITL) escalation card with a title, description, priority, and a deeplink CTA button to resolve it — use for review requests, low-confidence extractions, data conflicts, or any item needing manual resolution in the review portal\",\n input_schema: {\n type: \"object\" as const,\n properties: {\n type: { type: \"string\", enum: [\"escalation-card\"] },\n title: { type: \"string\" },\n description: { type: \"string\" },\n url: { type: \"string\" },\n ctaLabel: { type: \"string\" },\n priority: { type: \"string\", enum: [\"low\", \"medium\", \"high\"] },\n },\n required: [\"type\", \"url\"],\n },\n};\n","import { z } from \"zod\";\n\nexport const lineChartSchema = z.object({\n type: z.literal(\"line-chart\"),\n title: z.string().optional(),\n xKey: z.string(),\n unit: z.string().optional(),\n smooth: z.boolean().optional(),\n series: z\n .array(z.object({ name: z.string(), dataKey: z.string(), color: z.string().optional() }))\n .min(1)\n .max(6),\n data: z\n .array(z.record(z.string(), z.union([z.string(), z.number()])))\n .min(2)\n .max(500),\n});\n\nexport const lineChartTool = {\n name: \"render_line_chart\",\n description:\n \"Render a multi-series line chart for trends over time — net income trend, cash position, revenue vs expense, KPI over months/quarters. Use when comparing how one or more numeric measures move across an ordered axis (lines, not filled areas).\",\n input_schema: {\n type: \"object\" as const,\n properties: {\n type: { type: \"string\", enum: [\"line-chart\"] },\n title: { type: \"string\" },\n xKey: { type: \"string\", description: \"Key in each data row for the X-axis label (e.g. 'month')\" },\n unit: { type: \"string\", description: \"Value unit/prefix, e.g. '$', '%', 'bps'\" },\n smooth: { type: \"boolean\", description: \"Use smooth (monotone) curves instead of straight segments\" },\n series: {\n type: \"array\",\n items: {\n type: \"object\",\n properties: {\n name: { type: \"string\" },\n dataKey: { type: \"string\" },\n color: { type: \"string\", description: \"Optional CSS color; auto-assigned from palette if omitted\" },\n },\n required: [\"name\", \"dataKey\"],\n },\n },\n data: {\n type: \"array\",\n items: { type: \"object\", additionalProperties: true },\n description: \"Data rows; each row has xKey and every series dataKey\",\n },\n },\n required: [\"type\", \"xKey\", \"series\", \"data\"],\n },\n};\n","import { z } from \"zod\";\n\nconst seriesRef = z.object({\n name: z.string(),\n dataKey: z.string(),\n color: z.string().optional(),\n axis: z.enum([\"left\", \"right\"]).optional(),\n});\n\nexport const comboChartSchema = z\n .object({\n type: z.literal(\"combo-chart\"),\n title: z.string().optional(),\n xKey: z.string(),\n leftUnit: z.string().optional(),\n rightUnit: z.string().optional(),\n bars: z.array(seriesRef).max(4).optional(),\n lines: z.array(seriesRef).max(4).optional(),\n data: z\n .array(z.record(z.string(), z.union([z.string(), z.number()])))\n .min(2)\n .max(500),\n })\n .refine((v) => (v.bars?.length ?? 0) + (v.lines?.length ?? 0) >= 1, {\n message: \"combo-chart needs at least one bar or line series\",\n });\n\nexport const comboChartTool = {\n name: \"render_combo_chart\",\n description:\n \"Render a combined bar + line chart with an optional secondary (right) Y-axis — revenue bars with a margin % line, actuals bars with a cumulative budget line, volume vs rate. Use when one measure is best shown as bars and another (often a %, ratio, or running total on a different scale) as a line.\",\n input_schema: {\n type: \"object\" as const,\n properties: {\n type: { type: \"string\", enum: [\"combo-chart\"] },\n title: { type: \"string\" },\n xKey: { type: \"string\", description: \"Key in each data row for the X-axis label\" },\n leftUnit: { type: \"string\", description: \"Unit for the left Y-axis (e.g. '$')\" },\n rightUnit: { type: \"string\", description: \"Unit for the right Y-axis (e.g. '%')\" },\n bars: {\n type: \"array\",\n items: {\n type: \"object\",\n properties: {\n name: { type: \"string\" },\n dataKey: { type: \"string\" },\n color: { type: \"string\" },\n axis: { type: \"string\", enum: [\"left\", \"right\"], description: \"Which Y-axis; default left\" },\n },\n required: [\"name\", \"dataKey\"],\n },\n },\n lines: {\n type: \"array\",\n items: {\n type: \"object\",\n properties: {\n name: { type: \"string\" },\n dataKey: { type: \"string\" },\n color: { type: \"string\" },\n axis: { type: \"string\", enum: [\"left\", \"right\"], description: \"Which Y-axis; default right\" },\n },\n required: [\"name\", \"dataKey\"],\n },\n },\n data: {\n type: \"array\",\n items: { type: \"object\", additionalProperties: true },\n description: \"Data rows; each row has xKey and every bar/line dataKey\",\n },\n },\n required: [\"type\", \"xKey\", \"data\"],\n },\n};\n","import { z } from \"zod\";\n\nexport const gaugeChartSchema = z.object({\n type: z.literal(\"gauge-chart\"),\n title: z.string().optional(),\n items: z\n .array(\n z.object({\n label: z.string(),\n value: z.number(),\n max: z.number(),\n target: z.number().optional(),\n unit: z.string().optional(),\n })\n )\n .min(1)\n .max(4),\n});\n\nexport const gaugeChartTool = {\n name: \"render_gauge_chart\",\n description:\n \"Render one to four radial gauge dials showing a single KPI against its max and an optional target — budget utilization %, DSO/DPO vs target, collection rate, cash-runway months, capacity used. The arc colors green/amber/red relative to the target.\",\n input_schema: {\n type: \"object\" as const,\n properties: {\n type: { type: \"string\", enum: [\"gauge-chart\"] },\n title: { type: \"string\" },\n items: {\n type: \"array\",\n items: {\n type: \"object\",\n properties: {\n label: { type: \"string\" },\n value: { type: \"number\", description: \"Current value\" },\n max: { type: \"number\", description: \"Full-scale value of the dial\" },\n target: { type: \"number\", description: \"Optional goal threshold; drives arc color\" },\n unit: { type: \"string\", description: \"e.g. '%', '$', 'days'\" },\n },\n required: [\"label\", \"value\", \"max\"],\n },\n },\n },\n required: [\"type\", \"items\"],\n },\n};\n","import { z } from \"zod\";\n\nexport const treemapChartSchema = z.object({\n type: z.literal(\"treemap-chart\"),\n title: z.string().optional(),\n currency: z.string().optional(),\n nodes: z\n .array(\n z.object({\n name: z.string(),\n value: z.number(),\n color: z.string().optional(),\n })\n )\n .min(1)\n .max(30),\n});\n\nexport const treemapChartTool = {\n name: \"render_treemap_chart\",\n description:\n \"Render a treemap where each rectangle's area is proportional to its value — expense breakdown by GL account, revenue by segment or product, spend by cost center, asset mix. Use to show how a total decomposes into many parts ranked by magnitude.\",\n input_schema: {\n type: \"object\" as const,\n properties: {\n type: { type: \"string\", enum: [\"treemap-chart\"] },\n title: { type: \"string\" },\n currency: { type: \"string\", description: \"Currency symbol/prefix for values, e.g. '$'\" },\n nodes: {\n type: \"array\",\n items: {\n type: \"object\",\n properties: {\n name: { type: \"string\" },\n value: { type: \"number\", description: \"Positive magnitude; sets rectangle area\" },\n color: { type: \"string\", description: \"Optional; auto-assigned from palette if omitted\" },\n },\n required: [\"name\", \"value\"],\n },\n },\n },\n required: [\"type\", \"nodes\"],\n },\n};\n","import { z } from \"zod\";\n\nexport const radarChartSchema = z.object({\n type: z.literal(\"radar-chart\"),\n title: z.string().optional(),\n unit: z.string().optional(),\n series: z\n .array(z.object({ name: z.string(), dataKey: z.string(), color: z.string().optional() }))\n .min(1)\n .max(4),\n data: z\n .array(\n z\n .object({ metric: z.string() })\n .catchall(z.union([z.string(), z.number()]))\n )\n .min(3)\n .max(12),\n});\n\nexport const radarChartTool = {\n name: \"render_radar_chart\",\n description:\n \"Render a radar (spider) chart comparing several entities or periods across the same set of metrics — financial-ratio profiles (liquidity, profitability, leverage, efficiency, coverage), scorecard comparison, multi-dimensional benchmarking. One axis per metric; one shape per series.\",\n input_schema: {\n type: \"object\" as const,\n properties: {\n type: { type: \"string\", enum: [\"radar-chart\"] },\n title: { type: \"string\" },\n unit: { type: \"string\", description: \"Optional value unit, e.g. 'x', '%'\" },\n series: {\n type: \"array\",\n items: {\n type: \"object\",\n properties: {\n name: { type: \"string\" },\n dataKey: { type: \"string\" },\n color: { type: \"string\", description: \"Optional; auto-assigned from palette if omitted\" },\n },\n required: [\"name\", \"dataKey\"],\n },\n },\n data: {\n type: \"array\",\n items: {\n type: \"object\",\n properties: { metric: { type: \"string\", description: \"Axis label\" } },\n required: [\"metric\"],\n additionalProperties: true,\n },\n description: \"One row per metric; each row has 'metric' and every series dataKey\",\n },\n },\n required: [\"type\", \"series\", \"data\"],\n },\n};\n","import { z } from \"zod\";\n\nexport const funnelChartSchema = z.object({\n type: z.literal(\"funnel-chart\"),\n title: z.string().optional(),\n currency: z.string().optional(),\n stages: z\n .array(\n z.object({\n label: z.string(),\n value: z.number(),\n color: z.string().optional(),\n })\n )\n .min(2)\n .max(8),\n});\n\nexport const funnelChartTool = {\n name: \"render_funnel_chart\",\n description:\n \"Render a funnel chart showing how a quantity narrows across ordered stages — collections funnel (billed → collected → overdue → written off), quote → invoice → paid, lead → close. Use for stage-to-stage conversion or drop-off. Each stage shows its value and % of the prior stage.\",\n input_schema: {\n type: \"object\" as const,\n properties: {\n type: { type: \"string\", enum: [\"funnel-chart\"] },\n title: { type: \"string\" },\n currency: { type: \"string\", description: \"Currency symbol/prefix, e.g. '$'\" },\n stages: {\n type: \"array\",\n description: \"Ordered widest → narrowest\",\n items: {\n type: \"object\",\n properties: {\n label: { type: \"string\" },\n value: { type: \"number\" },\n color: { type: \"string\", description: \"Optional; auto-assigned from palette if omitted\" },\n },\n required: [\"label\", \"value\"],\n },\n },\n },\n required: [\"type\", \"stages\"],\n },\n};\n","import { z } from \"zod\";\n\nexport const bulletChartSchema = z.object({\n type: z.literal(\"bullet-chart\"),\n title: z.string().optional(),\n items: z\n .array(\n z.object({\n label: z.string(),\n value: z.number(),\n target: z.number(),\n max: z.number().optional(),\n unit: z.string().optional(),\n })\n )\n .min(1)\n .max(10),\n});\n\nexport const bulletChartTool = {\n name: \"render_bullet_chart\",\n description:\n \"Render a compact bullet-chart scorecard: one horizontal row per KPI showing actual value vs target against a qualitative range — actual vs budget, vs forecast, vs prior year. Use for dense KPI-vs-target dashboards where each measure has its own target. The bar turns green/amber/red by how the value compares to its target.\",\n input_schema: {\n type: \"object\" as const,\n properties: {\n type: { type: \"string\", enum: [\"bullet-chart\"] },\n title: { type: \"string\" },\n items: {\n type: \"array\",\n items: {\n type: \"object\",\n properties: {\n label: { type: \"string\" },\n value: { type: \"number\", description: \"Actual measured value\" },\n target: { type: \"number\", description: \"Goal / budget marker\" },\n max: { type: \"number\", description: \"Optional scale max; defaults to max(value,target)*1.25\" },\n unit: { type: \"string\", description: \"e.g. '$', '%', 'days'\" },\n },\n required: [\"label\", \"value\", \"target\"],\n },\n },\n },\n required: [\"type\", \"items\"],\n },\n};\n","import { z } from \"zod\";\n\nexport const scatterChartSchema = z.object({\n type: z.literal(\"scatter-chart\"),\n title: z.string().optional(),\n xLabel: z.string().optional(),\n yLabel: z.string().optional(),\n xUnit: z.string().optional(),\n yUnit: z.string().optional(),\n series: z\n .array(\n z.object({\n name: z.string(),\n color: z.string().optional(),\n points: z\n .array(\n z.object({\n x: z.number(),\n y: z.number(),\n z: z.number().optional(),\n label: z.string().optional(),\n })\n )\n .min(1)\n .max(200),\n })\n )\n .min(1)\n .max(4),\n});\n\nexport const scatterChartTool = {\n name: \"render_scatter_chart\",\n description:\n \"Render a scatter / bubble chart plotting points on two numeric axes (optional bubble size as a third dimension) — AR aging days vs outstanding amount, account size vs activity, risk vs return, price vs volume. Use to reveal correlation, clustering, or outliers across accounts/entities.\",\n input_schema: {\n type: \"object\" as const,\n properties: {\n type: { type: \"string\", enum: [\"scatter-chart\"] },\n title: { type: \"string\" },\n xLabel: { type: \"string\" },\n yLabel: { type: \"string\" },\n xUnit: { type: \"string\", description: \"e.g. 'days'\" },\n yUnit: { type: \"string\", description: \"e.g. '$'\" },\n series: {\n type: \"array\",\n items: {\n type: \"object\",\n properties: {\n name: { type: \"string\" },\n color: { type: \"string\", description: \"Optional; auto-assigned from palette if omitted\" },\n points: {\n type: \"array\",\n items: {\n type: \"object\",\n properties: {\n x: { type: \"number\" },\n y: { type: \"number\" },\n z: { type: \"number\", description: \"Optional magnitude → bubble size\" },\n label: { type: \"string\", description: \"Optional point name for tooltip\" },\n },\n required: [\"x\", \"y\"],\n },\n },\n },\n required: [\"name\", \"points\"],\n },\n },\n },\n required: [\"type\", \"series\"],\n },\n};\n","import { z } from \"zod\";\n\nexport const connectIntegrationSchema = z.object({\n type: z.literal(\"connect-integration\"),\n integrationName: z.string(),\n description: z.string().optional(),\n url: z.string(),\n status: z.enum([\"connected\", \"not_connected\"]).optional(),\n iconUrl: z.string().optional(),\n ctaLabel: z.string().optional(),\n});\n\nexport const connectIntegrationTool = {\n name: \"render_connect_integration\",\n description:\n \"Render a compact card for a single third-party integration (e.g. Gmail, Slack, Google Drive). Use it three ways via `status`: (1) status='not_connected' — prompt the user to connect it, the button deep-links to the connections settings page (set `url` to /settings/connections?integration=<id>); (2) status='connected' — show it as connected, the button is an Open deep-link into the integration or its settings; (3) as a plain deep-link to an external resource. `url` is the button target; `ctaLabel` overrides the button text (defaults: Connect when not connected, Open when connected).\",\n input_schema: {\n type: \"object\" as const,\n properties: {\n type: { type: \"string\", enum: [\"connect-integration\"] },\n integrationName: { type: \"string\" },\n description: { type: \"string\" },\n url: { type: \"string\" },\n status: { type: \"string\", enum: [\"connected\", \"not_connected\"] },\n iconUrl: { type: \"string\" },\n ctaLabel: { type: \"string\" },\n },\n required: [\"type\", \"integrationName\", \"url\"],\n },\n};\n","import { z } from \"zod\";\n\nexport const integrationsListSchema = z.object({\n type: z.literal(\"integrations-list\"),\n title: z.string().optional(),\n description: z.string().optional(),\n integrations: z.array(\n z.object({\n name: z.string(),\n status: z.enum([\"connected\", \"not_connected\"]),\n capability: z.string().optional(),\n connectUrl: z.string().optional(),\n iconUrl: z.string().optional(),\n })\n ),\n});\n\nexport const integrationsListTool = {\n name: \"render_integrations_list\",\n description:\n \"Render a grouped list of multiple third-party integrations with their connection status (connected vs not connected) and a per-row Connect link for the ones that are not connected. Prefer this over multiple separate connect-integration cards whenever there are 2 or more integrations — e.g. to orient the user on what's available, or to offer several providers to connect (Gmail, Outlook, ...). Optional `description` is a one-line subtitle under the title.\",\n input_schema: {\n type: \"object\" as const,\n properties: {\n type: { type: \"string\", enum: [\"integrations-list\"] },\n title: { type: \"string\" },\n description: { type: \"string\" },\n integrations: {\n type: \"array\",\n items: {\n type: \"object\",\n properties: {\n name: { type: \"string\" },\n status: { type: \"string\", enum: [\"connected\", \"not_connected\"] },\n capability: { type: \"string\" },\n connectUrl: { type: \"string\" },\n iconUrl: { type: \"string\" },\n },\n required: [\"name\", \"status\"],\n },\n },\n },\n required: [\"type\", \"integrations\"],\n },\n};\n","import { z } from \"zod\";\n\n// A single WDL step. Recursive: FAN_OUT carries `subSteps`, CONDITION/BRANCH\n// carries `branches` (each branch has its own ordered `steps`).\nexport type PipelineStep = {\n id: string;\n operation: string;\n label?: string;\n description?: string;\n subSteps?: PipelineStep[];\n branches?: { label: string; condition?: string; steps: PipelineStep[] }[];\n};\n\nconst pipelineStepSchema: z.ZodType<PipelineStep> = z.lazy(() =>\n z.object({\n id: z.string(),\n operation: z.string(),\n label: z.string().optional(),\n description: z.string().optional(),\n subSteps: z.array(pipelineStepSchema).optional(),\n branches: z\n .array(\n z.object({\n label: z.string(),\n condition: z.string().optional(),\n steps: z.array(pipelineStepSchema),\n })\n )\n .optional(),\n })\n);\n\nexport const pipelinePreviewSchema = z.object({\n type: z.literal(\"pipeline-preview\"),\n name: z.string(),\n description: z.string().optional(),\n state: z.enum([\"draft\", \"running\", \"paused\"]).optional(),\n source: z\n .object({ name: z.string(), kind: z.string().optional() })\n .optional(),\n destinations: z\n .array(z.object({ name: z.string(), kind: z.string().optional() }))\n .optional(),\n schedule: z\n .object({\n type: z.enum([\"manual\", \"cron\"]),\n cron: z.string().optional(),\n label: z.string().optional(),\n })\n .optional(),\n steps: z.array(pipelineStepSchema).min(1),\n workstreams: z.array(z.string()).optional(),\n cta: z.object({ label: z.string(), url: z.string() }).optional(),\n});\n\n// JSON tool definition mirroring the Zod schema. The recursive step is modeled\n// to two levels of nesting (top step → subSteps / branches.steps → leaf) which\n// covers virtually all real WDL. Leaf objects do NOT forbid extra keys, so\n// deeper nesting still validates (the resolver renders arbitrary depth).\nconst STEP_LEAF_PROPS = {\n id: { type: \"string\" },\n operation: { type: \"string\" },\n label: { type: \"string\" },\n description: { type: \"string\" },\n} as const;\n\nconst STEP_LEAF = {\n type: \"object\" as const,\n properties: STEP_LEAF_PROPS,\n required: [\"id\", \"operation\"],\n};\n\nconst BRANCH_LEAF = {\n type: \"object\" as const,\n properties: {\n label: { type: \"string\" },\n condition: { type: \"string\" },\n steps: { type: \"array\", items: STEP_LEAF },\n },\n required: [\"label\", \"steps\"],\n};\n\nconst STEP_NODE = {\n type: \"object\" as const,\n properties: {\n ...STEP_LEAF_PROPS,\n subSteps: { type: \"array\", items: STEP_LEAF },\n branches: { type: \"array\", items: BRANCH_LEAF },\n },\n required: [\"id\", \"operation\"],\n};\n\nexport const pipelinePreviewTool = {\n name: \"render_pipeline_preview\",\n description:\n \"Render a read-only blueprint preview of a data pipeline / workflow — its name, source → destination(s), schedule, and the ordered flow of WDL operation steps (with nested FAN_OUT sub-steps and CONDITION branches) plus an optional deeplink CTA. Use to show a pipeline you designed or are proposing before it is created/activated. NOT for live run status (use job-tracker) or a grid of running services (use ops-dashboard).\",\n input_schema: {\n type: \"object\" as const,\n properties: {\n type: { type: \"string\", enum: [\"pipeline-preview\"] },\n name: { type: \"string\" },\n description: { type: \"string\" },\n state: { type: \"string\", enum: [\"draft\", \"running\", \"paused\"] },\n source: {\n type: \"object\",\n properties: {\n name: { type: \"string\" },\n kind: { type: \"string\" },\n },\n required: [\"name\"],\n },\n destinations: {\n type: \"array\",\n items: {\n type: \"object\",\n properties: {\n name: { type: \"string\" },\n kind: { type: \"string\" },\n },\n required: [\"name\"],\n },\n },\n schedule: {\n type: \"object\",\n properties: {\n type: { type: \"string\", enum: [\"manual\", \"cron\"] },\n cron: { type: \"string\" },\n label: { type: \"string\" },\n },\n required: [\"type\"],\n },\n steps: { type: \"array\", items: STEP_NODE },\n workstreams: { type: \"array\", items: { type: \"string\" } },\n cta: {\n type: \"object\",\n properties: {\n label: { type: \"string\" },\n url: { type: \"string\" },\n },\n required: [\"label\", \"url\"],\n },\n },\n required: [\"type\", \"name\", \"steps\"],\n },\n};\n","import { schemaRegistry } from \"./index\";\nimport type { UISchemaName } from \"../types\";\n\nexport function buildRenderUITool(\n selectedSchemas: UISchemaName[]\n): { name: string; description: string; input_schema: object } {\n const selected = selectedSchemas\n .filter((name) => name in schemaRegistry)\n .map((name) => schemaRegistry[name].tool.input_schema);\n\n if (selected.length === 0) {\n throw new Error(\"buildRenderUITool: no valid schemas selected\");\n }\n\n return {\n name: \"render_ui\",\n description:\n \"Render a rich UI component for the user. Use this when the response \" +\n \"benefits from structured visual presentation (tables, charts, metrics, \" +\n \"cards) rather than plain text. The `type` field selects the component. \" +\n \"You may call this tool multiple times in a single response to render \" +\n \"multiple components.\",\n input_schema:\n selected.length === 1\n ? selected[0]\n : { type: \"object\" as const, anyOf: selected },\n };\n}\n","import { schemaRegistry } from \"./index\";\nimport type { UISchemaName } from \"../types\";\n\n/**\n * Tolerate the most common LLM marshalling error: an array/object field\n * arriving as a JSON-encoded *string* (e.g. `columns: \"[{...}]\"`) when the\n * component schema expects a real array/object.\n *\n * Schema-guided + shallow: only top-level fields the component's tool\n * `input_schema` types as `array`/`object` are parsed, and only when the\n * string parses to the matching type. A legitimately string-valued field\n * (e.g. a title that happens to start with \"[\") is left untouched.\n *\n * Mirrors the backend `_coerce_json_strings` in adoptai-workflows so the FE\n * renders correctly even though the streamed tool_use payload carries the raw\n * (stringified) LLM output. Returns the input unchanged when nothing coerces.\n */\nexport function coercePayload<T>(data: T): T {\n if (!data || typeof data !== \"object\" || Array.isArray(data)) return data;\n const obj = data as Record<string, unknown>;\n const type = obj.type;\n if (typeof type !== \"string\" || !(type in schemaRegistry)) return data;\n\n const props = (\n schemaRegistry[type as UISchemaName] as {\n tool?: { input_schema?: { properties?: Record<string, { type?: string }> } };\n }\n )?.tool?.input_schema?.properties;\n if (!props || typeof props !== \"object\") return data;\n\n let out: Record<string, unknown> | null = null;\n for (const [key, propSchema] of Object.entries(props)) {\n const expected = propSchema?.type;\n if (expected !== \"array\" && expected !== \"object\") continue;\n const value = obj[key];\n if (typeof value !== \"string\") continue;\n const trimmed = value.trim();\n if (!trimmed || (trimmed[0] !== \"[\" && trimmed[0] !== \"{\")) continue;\n try {\n const parsed = JSON.parse(trimmed);\n const ok =\n expected === \"array\"\n ? Array.isArray(parsed)\n : parsed !== null && typeof parsed === \"object\" && !Array.isArray(parsed);\n if (ok) {\n if (!out) out = { ...obj };\n out[key] = parsed;\n }\n } catch {\n // leave as-is; validation will surface the real error\n }\n }\n return (out ?? data) as T;\n}\n","import { schemaRegistry } from \"./index\";\nimport { coercePayload } from \"./coercePayload\";\nimport type { UISchemaName } from \"../types\";\n\ntype ValidationResult =\n | { success: true; data: unknown }\n | { success: false; error: string };\n\nexport function validatePayload(\n schemaName: string,\n data: unknown\n): ValidationResult {\n if (!(schemaName in schemaRegistry)) {\n return { success: false, error: `Unknown schema: ${schemaName}` };\n }\n\n const { schema } = schemaRegistry[schemaName as UISchemaName];\n // Coerce stringified-JSON array/object fields before validating so a\n // payload whose `columns` arrived as a JSON string still validates.\n const result = schema.safeParse(coercePayload(data));\n\n if (result.success) {\n return { success: true, data: result.data };\n }\n\n return {\n success: false,\n error: result.error.issues\n .map((i) => `${i.path.join(\".\")}: ${i.message}`)\n .join(\"; \"),\n };\n}\n","import { z } from \"zod\";\nimport { dataTableSchema, dataTableTool } from \"./data-table\";\nimport { statusCardSchema, statusCardTool } from \"./status-card\";\nimport { alertSchema, alertTool } from \"./alert\";\nimport { statGridSchema, statGridTool } from \"./stat-grid\";\nimport { tabsPanelSchema, tabsPanelTool } from \"./tabs-panel\";\nimport { sparklineTableSchema, sparklineTableTool } from \"./sparkline-table\";\nimport { heatmapTableSchema, heatmapTableTool } from \"./heatmap-table\";\nimport { screenerTableSchema, screenerTableTool } from \"./screener-table\";\nimport { groupedTableSchema, groupedTableTool } from \"./grouped-table\";\nimport { newsFeedSchema, newsFeedTool } from \"./news-feed\";\nimport { areaChartSchema, areaChartTool } from \"./area-chart\";\nimport { allocationDonutSchema, allocationDonutTool } from \"./allocation-donut\";\nimport { waterfallChartSchema, waterfallChartTool } from \"./waterfall-chart\";\nimport { flowCanvasSchema, flowCanvasTool } from \"./flow-canvas\";\nimport { trialBalanceSchema, trialBalanceTool } from \"./trial-balance\";\nimport { journalEntrySchema, journalEntryTool } from \"./journal-entry\";\nimport { agingReportSchema, agingReportTool } from \"./aging-report\";\nimport { varianceAnalysisSchema, varianceAnalysisTool } from \"./variance-analysis\";\nimport { stackedBreakdownSchema, stackedBreakdownTool } from \"./stacked-breakdown\";\nimport { comparativeBarChartSchema, comparativeBarChartTool } from \"./comparative-bar-chart\";\nimport { complianceChecklistSchema, complianceChecklistTool } from \"./compliance-checklist\";\nimport { reconciliationViewSchema, reconciliationViewTool } from \"./reconciliation-view\";\nimport { auditTrailSchema, auditTrailTool } from \"./audit-trail\";\nimport { documentPreviewSchema, documentPreviewTool } from \"./document-preview\";\nimport { provenanceChainSchema, provenanceChainTool } from \"./provenance-chain\";\nimport { searchResultsSchema, searchResultsTool } from \"./search-results\";\nimport { legalTestResultSchema, legalTestResultTool } from \"./legal-test-result\";\nimport { engagementPipelineSchema, engagementPipelineTool } from \"./engagement-pipeline\";\nimport { entityCardGridSchema, entityCardGridTool } from \"./entity-card-grid\";\nimport { jobTrackerSchema, jobTrackerTool } from \"./job-tracker\";\nimport { citedAnswerSchema, citedAnswerTool } from \"./cited-answer\";\nimport { transactionFeedSchema, transactionFeedTool } from \"./transaction-feed\";\nimport { fileBrowserSchema, fileBrowserTool } from \"./file-browser\";\nimport { downloadCardSchema, downloadCardTool } from \"./download-card\";\nimport { opsDashboardSchema, opsDashboardTool } from \"./ops-dashboard\";\nimport { keyValueListSchema, keyValueListTool } from \"./key-value-list\";\nimport { balanceSheetSchema, balanceSheetTool } from \"./balance-sheet\";\nimport { incomeStatementSchema, incomeStatementTool } from \"./income-statement\";\nimport { cashFlowStatementSchema, cashFlowStatementTool } from \"./cash-flow-statement\";\nimport { generalLedgerSchema, generalLedgerTool } from \"./general-ledger\";\nimport { chartOfAccountsSchema, chartOfAccountsTool } from \"./chart-of-accounts\";\nimport { invoiceDetailSchema, invoiceDetailTool } from \"./invoice-detail\";\nimport { amortizationTableSchema, amortizationTableTool } from \"./amortization-table\";\nimport { depreciationScheduleSchema, depreciationScheduleTool } from \"./depreciation-schedule\";\nimport { escalationCardSchema, escalationCardTool } from \"./escalation-card\";\nimport { lineChartSchema, lineChartTool } from \"./line-chart\";\nimport { comboChartSchema, comboChartTool } from \"./combo-chart\";\nimport { gaugeChartSchema, gaugeChartTool } from \"./gauge-chart\";\nimport { treemapChartSchema, treemapChartTool } from \"./treemap-chart\";\nimport { radarChartSchema, radarChartTool } from \"./radar-chart\";\nimport { funnelChartSchema, funnelChartTool } from \"./funnel-chart\";\nimport { bulletChartSchema, bulletChartTool } from \"./bullet-chart\";\nimport { scatterChartSchema, scatterChartTool } from \"./scatter-chart\";\nimport { connectIntegrationSchema, connectIntegrationTool } from \"./connect-integration\";\nimport { integrationsListSchema, integrationsListTool } from \"./integrations-list\";\nimport { pipelinePreviewSchema, pipelinePreviewTool } from \"./pipeline-preview\";\nexport const schemaRegistry = {\n \"data-table\": { schema: dataTableSchema, tool: dataTableTool },\n \"status-card\": { schema: statusCardSchema, tool: statusCardTool },\n \"alert\": { schema: alertSchema, tool: alertTool },\n \"stat-grid\": { schema: statGridSchema, tool: statGridTool },\n \"tabs-panel\": { schema: tabsPanelSchema, tool: tabsPanelTool },\n \"sparkline-table\": { schema: sparklineTableSchema, tool: sparklineTableTool },\n \"heatmap-table\": { schema: heatmapTableSchema, tool: heatmapTableTool },\n \"screener-table\": { schema: screenerTableSchema, tool: screenerTableTool },\n \"grouped-table\": { schema: groupedTableSchema, tool: groupedTableTool },\n \"news-feed\": { schema: newsFeedSchema, tool: newsFeedTool },\n \"area-chart\": { schema: areaChartSchema, tool: areaChartTool },\n \"allocation-donut\": { schema: allocationDonutSchema, tool: allocationDonutTool },\n \"waterfall-chart\": { schema: waterfallChartSchema, tool: waterfallChartTool },\n \"flow-canvas\": { schema: flowCanvasSchema, tool: flowCanvasTool },\n \"trial-balance\": { schema: trialBalanceSchema, tool: trialBalanceTool },\n \"journal-entry\": { schema: journalEntrySchema, tool: journalEntryTool },\n \"aging-report\": { schema: agingReportSchema, tool: agingReportTool },\n \"variance-analysis\": { schema: varianceAnalysisSchema, tool: varianceAnalysisTool },\n \"stacked-breakdown\": { schema: stackedBreakdownSchema, tool: stackedBreakdownTool },\n \"comparative-bar-chart\": { schema: comparativeBarChartSchema, tool: comparativeBarChartTool },\n \"compliance-checklist\": { schema: complianceChecklistSchema, tool: complianceChecklistTool },\n \"reconciliation-view\": { schema: reconciliationViewSchema, tool: reconciliationViewTool },\n \"audit-trail\": { schema: auditTrailSchema, tool: auditTrailTool },\n \"document-preview\": { schema: documentPreviewSchema, tool: documentPreviewTool },\n \"provenance-chain\": { schema: provenanceChainSchema, tool: provenanceChainTool },\n \"search-results\": { schema: searchResultsSchema, tool: searchResultsTool },\n \"legal-test-result\": { schema: legalTestResultSchema, tool: legalTestResultTool },\n \"engagement-pipeline\": { schema: engagementPipelineSchema, tool: engagementPipelineTool },\n \"entity-card-grid\": { schema: entityCardGridSchema, tool: entityCardGridTool },\n \"job-tracker\": { schema: jobTrackerSchema, tool: jobTrackerTool },\n \"cited-answer\": { schema: citedAnswerSchema, tool: citedAnswerTool },\n \"transaction-feed\": { schema: transactionFeedSchema, tool: transactionFeedTool },\n \"file-browser\": { schema: fileBrowserSchema, tool: fileBrowserTool },\n \"download-card\": { schema: downloadCardSchema, tool: downloadCardTool },\n \"ops-dashboard\": { schema: opsDashboardSchema, tool: opsDashboardTool },\n \"key-value-list\": { schema: keyValueListSchema, tool: keyValueListTool },\n \"balance-sheet\": { schema: balanceSheetSchema, tool: balanceSheetTool },\n \"income-statement\": { schema: incomeStatementSchema, tool: incomeStatementTool },\n \"cash-flow-statement\": { schema: cashFlowStatementSchema, tool: cashFlowStatementTool },\n \"general-ledger\": { schema: generalLedgerSchema, tool: generalLedgerTool },\n \"chart-of-accounts\": { schema: chartOfAccountsSchema, tool: chartOfAccountsTool },\n \"invoice-detail\": { schema: invoiceDetailSchema, tool: invoiceDetailTool },\n \"amortization-table\": { schema: amortizationTableSchema, tool: amortizationTableTool },\n \"depreciation-schedule\": { schema: depreciationScheduleSchema, tool: depreciationScheduleTool },\n \"escalation-card\": { schema: escalationCardSchema, tool: escalationCardTool },\n \"line-chart\": { schema: lineChartSchema, tool: lineChartTool },\n \"combo-chart\": { schema: comboChartSchema, tool: comboChartTool },\n \"gauge-chart\": { schema: gaugeChartSchema, tool: gaugeChartTool },\n \"treemap-chart\": { schema: treemapChartSchema, tool: treemapChartTool },\n \"radar-chart\": { schema: radarChartSchema, tool: radarChartTool },\n \"funnel-chart\": { schema: funnelChartSchema, tool: funnelChartTool },\n \"bullet-chart\": { schema: bulletChartSchema, tool: bulletChartTool },\n \"scatter-chart\": { schema: scatterChartSchema, tool: scatterChartTool },\n \"connect-integration\": { schema: connectIntegrationSchema, tool: connectIntegrationTool },\n \"integrations-list\": { schema: integrationsListSchema, tool: integrationsListTool },\n \"pipeline-preview\": { schema: pipelinePreviewSchema, tool: pipelinePreviewTool },\n} satisfies Record<string, { schema: z.ZodTypeAny; tool: object }>;\n\nexport type SchemaPayload<T extends keyof typeof schemaRegistry> =\n z.infer<(typeof schemaRegistry)[T][\"schema\"]>;\n\nexport { buildRenderUITool } from \"./buildRenderUITool\";\nexport { validatePayload } from \"./validatePayload\";\n","\"use client\";\n\nimport React from \"react\";\nimport { BORDER, MUTED, ACCENT } from \"./theme\";\n\ninterface ColumnSettingsPanelProps {\n columns: { key: string; label: string }[];\n hidden: Set<string>;\n onToggle: (key: string) => void;\n onShowAll: () => void;\n onHideAll: () => void;\n}\n\nexport function ColumnSettingsPanel({ columns, hidden, onToggle, onShowAll, onHideAll }: ColumnSettingsPanelProps) {\n return (\n <div style={{ display: \"flex\", flexDirection: \"column\", gap: \"6px\", minWidth: \"180px\" }}>\n <div style={{ display: \"flex\", justifyContent: \"space-between\", paddingBottom: \"4px\", borderBottom: `1px solid ${BORDER}` }}>\n <button\n onClick={onShowAll}\n style={{ background: \"none\", border: \"none\", cursor: \"pointer\", fontSize: \"11px\", color: ACCENT, fontWeight: 500, padding: 0 }}\n >\n Show all\n </button>\n <button\n onClick={onHideAll}\n style={{ background: \"none\", border: \"none\", cursor: \"pointer\", fontSize: \"11px\", color: MUTED, fontWeight: 500, padding: 0 }}\n >\n Hide all\n </button>\n </div>\n {columns.map((col) => (\n <label\n key={col.key}\n style={{ display: \"flex\", alignItems: \"center\", gap: \"8px\", cursor: \"pointer\", fontSize: \"12px\", color: \"var(--foreground)\" }}\n >\n <input\n type=\"checkbox\"\n checked={!hidden.has(col.key)}\n onChange={() => onToggle(col.key)}\n style={{ accentColor: ACCENT, width: \"14px\", height: \"14px\", margin: 0, cursor: \"pointer\" }}\n />\n {col.label}\n </label>\n ))}\n </div>\n );\n}\n","\"use client\";\n\nimport React, { useState, useRef, useEffect, useCallback } from \"react\";\nimport { toPng } from \"html-to-image\";\nimport { ColumnSettingsPanel } from \"./ColumnSettingsPanel\";\nimport { BORDER, MUTED } from \"./theme\";\n\nconst DOT_COLOR = \"#aaaaaa\";\nconst DOT_HOVER = \"#555555\";\n\ninterface ColumnConfig {\n columns: { key: string; label: string }[];\n hidden: Set<string>;\n onToggle: (key: string) => void;\n onShowAll: () => void;\n onHideAll: () => void;\n}\n\ninterface ComponentActionsProps {\n children: React.ReactNode;\n onDownloadCSV?: () => void;\n columnConfig?: ColumnConfig;\n filename?: string;\n}\n\ntype MenuView = \"main\" | \"columns\";\n\nexport function ComponentActions({ children, onDownloadCSV, columnConfig, filename = \"component\" }: ComponentActionsProps) {\n const [open, setOpen] = useState(false);\n const [view, setView] = useState<MenuView>(\"main\");\n const contentRef = useRef<HTMLDivElement>(null);\n const menuRef = useRef<HTMLDivElement>(null);\n const btnRef = useRef<HTMLButtonElement>(null);\n\n const close = useCallback(() => {\n setOpen(false);\n setView(\"main\");\n }, []);\n\n useEffect(() => {\n if (!open) return;\n const handler = (e: MouseEvent) => {\n if (menuRef.current?.contains(e.target as Node)) return;\n if (btnRef.current?.contains(e.target as Node)) return;\n close();\n };\n document.addEventListener(\"mousedown\", handler);\n return () => document.removeEventListener(\"mousedown\", handler);\n }, [open, close]);\n\n const handleDownloadPNG = useCallback(async () => {\n if (!contentRef.current) return;\n try {\n const url = await toPng(contentRef.current, { backgroundColor: \"white\", pixelRatio: 2 });\n const a = document.createElement(\"a\");\n a.href = url;\n a.download = `${filename}.png`;\n a.click();\n } catch {\n // silent fail\n }\n close();\n }, [filename, close]);\n\n const handleCSV = useCallback(() => {\n onDownloadCSV?.();\n close();\n }, [onDownloadCSV, close]);\n\n return (\n <div style={{ width: \"100%\", display: \"flex\", flexDirection: \"column\" }}>\n <div ref={contentRef} style={{ width: \"100%\" }}>\n {children}\n </div>\n <div style={{ display: \"flex\", justifyContent: \"flex-end\", marginTop: \"4px\", position: \"relative\", zIndex: 10, flexShrink: 0 }}>\n <button\n ref={btnRef}\n onClick={() => { setOpen((o) => !o); setView(\"main\"); }}\n aria-label=\"Component actions\"\n style={{\n background: \"none\",\n border: \"none\",\n cursor: \"pointer\",\n padding: \"4px 8px\",\n display: \"flex\",\n gap: \"3px\",\n alignItems: \"center\",\n borderRadius: \"6px\",\n transition: \"background 0.15s\",\n }}\n onMouseEnter={(e) => {\n e.currentTarget.style.background = \"#f2f2f2\";\n e.currentTarget.querySelectorAll<SVGCircleElement>(\"circle\").forEach((c) => (c.style.fill = DOT_HOVER));\n }}\n onMouseLeave={(e) => {\n e.currentTarget.style.background = \"none\";\n e.currentTarget.querySelectorAll<SVGCircleElement>(\"circle\").forEach((c) => (c.style.fill = DOT_COLOR));\n }}\n >\n <svg width=\"20\" height=\"6\" viewBox=\"0 0 20 6\">\n <circle cx=\"3\" cy=\"3\" r=\"2\" style={{ fill: DOT_COLOR, transition: \"fill 0.15s\" }} />\n <circle cx=\"10\" cy=\"3\" r=\"2\" style={{ fill: DOT_COLOR, transition: \"fill 0.15s\" }} />\n <circle cx=\"17\" cy=\"3\" r=\"2\" style={{ fill: DOT_COLOR, transition: \"fill 0.15s\" }} />\n </svg>\n </button>\n\n {open && (\n <div\n ref={menuRef}\n style={{\n position: \"absolute\",\n bottom: \"100%\",\n right: 0,\n marginBottom: \"4px\",\n background: \"white\",\n border: `1px solid ${BORDER}`,\n borderRadius: \"0.75rem\",\n boxShadow: \"0 4px 12px rgba(0,0,0,0.06)\",\n zIndex: 50,\n padding: view === \"columns\" ? \"10px\" : \"4px\",\n minWidth: view === \"columns\" ? \"200px\" : \"160px\",\n }}\n >\n {view === \"main\" ? (\n <div style={{ display: \"flex\", flexDirection: \"column\" }}>\n {columnConfig && (\n <MenuButton label=\"Customize columns\" onClick={() => setView(\"columns\")} />\n )}\n {onDownloadCSV && (\n <MenuButton label=\"Download CSV\" onClick={handleCSV} />\n )}\n <MenuButton label=\"Download PNG\" onClick={handleDownloadPNG} />\n </div>\n ) : (\n <div>\n <button\n onClick={() => setView(\"main\")}\n style={{ background: \"none\", border: \"none\", cursor: \"pointer\", fontSize: \"11px\", color: MUTED, marginBottom: \"6px\", padding: 0 }}\n >\n ← Back\n </button>\n <ColumnSettingsPanel\n columns={columnConfig!.columns}\n hidden={columnConfig!.hidden}\n onToggle={columnConfig!.onToggle}\n onShowAll={columnConfig!.onShowAll}\n onHideAll={columnConfig!.onHideAll}\n />\n </div>\n )}\n </div>\n )}\n </div>\n </div>\n );\n}\n\nfunction MenuButton({ label, onClick }: { label: string; onClick: () => void }) {\n return (\n <button\n onClick={onClick}\n style={{\n background: \"none\",\n border: \"none\",\n cursor: \"pointer\",\n padding: \"8px 12px\",\n fontSize: \"12.5px\",\n color: \"var(--foreground)\",\n textAlign: \"left\",\n borderRadius: \"8px\",\n transition: \"background 0.15s\",\n whiteSpace: \"nowrap\",\n }}\n onMouseEnter={(e) => (e.currentTarget.style.background = \"#f2f2f2\")}\n onMouseLeave={(e) => (e.currentTarget.style.background = \"none\")}\n >\n {label}\n </button>\n );\n}\n","\"use client\";\n\nimport { useState, useMemo, useCallback } from \"react\";\n\nexport interface ColumnDef {\n key: string;\n label: string;\n}\n\nexport function useColumnVisibility<T extends ColumnDef>(columns: T[]) {\n const [hidden, setHidden] = useState<Set<string>>(new Set());\n\n const visibleColumns = useMemo(\n () => columns.filter((c) => !hidden.has(c.key)),\n [columns, hidden]\n );\n\n const toggle = useCallback((key: string) => {\n setHidden((prev) => {\n const next = new Set(prev);\n if (next.has(key)) next.delete(key);\n else next.add(key);\n return next;\n });\n }, []);\n\n const showAll = useCallback(() => setHidden(new Set()), []);\n\n const hideAll = useCallback(\n () => setHidden(new Set(columns.map((c) => c.key))),\n [columns]\n );\n\n return { visibleColumns, hidden, toggle, showAll, hideAll, allColumns: columns };\n}\n","function escapeCSV(value: unknown): string {\n const str = value == null ? \"\" : String(value);\n if (str.includes(\",\") || str.includes('\"') || str.includes(\"\\n\")) {\n return `\"${str.replace(/\"/g, '\"\"')}\"`;\n }\n return str;\n}\n\nexport function downloadCSV(\n columns: { key: string; label: string }[],\n rows: Record<string, unknown>[],\n filename: string\n): void {\n const header = columns.map((c) => escapeCSV(c.label)).join(\",\");\n const body = rows\n .map((row) => columns.map((c) => escapeCSV(row[c.key])).join(\",\"))\n .join(\"\\n\");\n const csv = `${header}\\n${body}`;\n const blob = new Blob([csv], { type: \"text/csv;charset=utf-8;\" });\n const url = URL.createObjectURL(blob);\n const a = document.createElement(\"a\");\n a.href = url;\n a.download = filename.endsWith(\".csv\") ? filename : `${filename}.csv`;\n a.click();\n URL.revokeObjectURL(url);\n}\n","\"use client\";\n\nimport React from \"react\";\nimport type { SchemaPayload } from \"../../schemas\";\nimport { ComponentActions } from \"../../shared/ComponentActions\";\nimport { useColumnVisibility } from \"../../shared/useColumnVisibility\";\nimport { downloadCSV } from \"../../shared/downloadCSV\";\nimport { BORDER, MUTED, PAPER } from \"../../shared/theme\";\nimport { useTheme } from \"../../shared/ThemeContext\";\n\ntype ColDef = SchemaPayload<\"data-table\">[\"columns\"][number];\n\nconst th = (align: ColDef[\"align\"]): React.CSSProperties => ({\n fontSize: \"11px\", fontWeight: 500, color: MUTED,\n padding: \"8px 10px\", letterSpacing: \"0.02em\", textTransform: \"uppercase\",\n borderBottom: `1px solid ${BORDER}`,\n background: PAPER,\n textAlign: align === \"end\" ? \"right\" : align === \"center\" ? \"center\" : \"left\",\n whiteSpace: \"nowrap\",\n});\n\nconst td = (align: ColDef[\"align\"], last: boolean): React.CSSProperties => ({\n padding: \"8px 10px\",\n fontSize: \"13px\",\n color: \"var(--foreground)\",\n fontVariantNumeric: \"tabular-nums\",\n borderBottom: last ? \"none\" : \"1px solid #f2f2f2\",\n textAlign: align === \"end\" ? \"right\" : align === \"center\" ? \"center\" : \"left\",\n whiteSpace: align === \"end\" || align === \"center\" ? \"nowrap\" : \"normal\",\n});\n\nexport function DataTableResolver(p: SchemaPayload<\"data-table\">) {\n const { BORDER, MUTED, PAPER } = useTheme();\n const columns = p.columns ?? [];\n const rows = p.rows ?? [];\n const { visibleColumns, hidden, toggle, showAll, hideAll, allColumns } = useColumnVisibility(columns);\n\n return (\n <ComponentActions\n filename={p.title ?? \"data-table\"}\n onDownloadCSV={() => downloadCSV(visibleColumns, rows as Record<string, unknown>[], p.title ?? \"data-table\")}\n columnConfig={{ columns: allColumns, hidden, onToggle: toggle, onShowAll: showAll, onHideAll: hideAll }}\n >\n <div style={{ width: \"100%\", display: \"flex\", flexDirection: \"column\", gap: \"10px\" }}>\n {p.title && (\n <p style={{ fontFamily: \"var(--font-serif)\", fontSize: \"15px\", fontWeight: 600, color: \"var(--foreground)\", letterSpacing: \"-0.005em\" }}>\n {p.title}\n </p>\n )}\n <div style={{ overflowX: \"auto\", borderRadius: \"0.75rem\", border: `1px solid ${BORDER}`, boxShadow: \"0 1px 2px rgba(0,0,0,0.03), 0 4px 12px rgba(0,0,0,0.05)\" }}>\n <table style={{ width: \"100%\", borderCollapse: \"collapse\" }}>\n <thead>\n <tr>\n {visibleColumns.map((col) => (\n <th key={col.key} style={th(col.align)}>{col.label}</th>\n ))}\n </tr>\n </thead>\n <tbody>\n {rows.map((row, ri) => (\n <tr key={ri} style={{ background: ri % 2 === 0 ? \"white\" : \"#fafafa\" }}>\n {visibleColumns.map((col) => (\n <td key={col.key} style={td(col.align, ri === rows.length - 1)}>\n {String((row as Record<string, unknown>)[col.key] ?? \"—\")}\n </td>\n ))}\n </tr>\n ))}\n </tbody>\n </table>\n </div>\n </div>\n </ComponentActions>\n );\n}\n","\"use client\";\n\nimport React from \"react\";\nimport type { SchemaPayload } from \"../../schemas\";\nimport { ComponentActions } from \"../../shared/ComponentActions\";\nimport { Markdown } from \"../../shared/Markdown\";\nimport { MUTED } from \"../../shared/theme\";\nimport { useTheme } from \"../../shared/ThemeContext\";\n\ntype ChipColor = \"default\" | \"accent\" | \"success\" | \"warning\" | \"danger\";\ntype ButtonVariant = \"primary\" | \"secondary\" | \"tertiary\" | \"outline\" | \"ghost\" | \"danger\" | \"danger-soft\";\n\nfunction toChipColor(status: \"default\" | \"success\" | \"warning\" | \"danger\" | \"primary\"): ChipColor {\n const map: Record<typeof status, ChipColor> = { default: \"default\", primary: \"accent\", success: \"success\", warning: \"warning\", danger: \"danger\" };\n return map[status];\n}\n\nfunction toButtonVariant(\n variant: string,\n color: string\n): ButtonVariant {\n if (color === \"danger\") return variant === \"light\" ? \"danger-soft\" : \"danger\";\n if (variant === \"solid\" && color === \"primary\") return \"primary\";\n if (variant === \"solid\") return \"secondary\";\n if (variant === \"bordered\") return \"outline\";\n if (variant === \"light\" || variant === \"ghost\") return \"ghost\";\n return \"secondary\";\n}\n\nconst chipBg: Record<ChipColor, { bg: string; color: string }> = {\n default: { bg: \"#f0f0f0\", color: \"#555\" },\n accent: { bg: \"#fff1eb\", color: \"#ff5000\" },\n success: { bg: \"#f0fdf4\", color: \"#16a34a\" },\n warning: { bg: \"#fffbeb\", color: \"#b45309\" },\n danger: { bg: \"#fef2f2\", color: \"#dc2626\" },\n};\n\nconst btnStyles: Record<ButtonVariant, React.CSSProperties> = {\n primary: { background: \"#ff5000\", color: \"white\", border: \"none\" },\n secondary: { background: \"#f0f0f0\", color: \"#333\", border: \"none\" },\n tertiary: { background: \"transparent\", color: \"#555\", border: \"none\" },\n outline: { background: \"transparent\", color: \"#333\", border: \"1px solid #dedede\" },\n ghost: { background: \"transparent\", color: \"#555\", border: \"none\" },\n danger: { background: \"#dc2626\", color: \"white\", border: \"none\" },\n \"danger-soft\": { background: \"#fef2f2\", color: \"#dc2626\", border: \"none\" },\n};\n\nconst S = {\n card: { width: \"100%\", border: \"1px solid #dedede\", borderRadius: \"0.75rem\", background: \"white\", overflow: \"hidden\" as const },\n header: { padding: \"16px 16px 12px\" },\n content: { padding: \"0 16px 16px\" },\n footer: { padding: \"12px 16px\", borderTop: \"1px solid #dedede\" },\n title: { fontFamily: \"var(--font-serif)\", fontSize: \"16px\", fontWeight: 600, color: \"var(--foreground)\", letterSpacing: \"-0.005em\" } as React.CSSProperties,\n subtitle: { fontSize: \"12.5px\", color: \"#888888\", marginTop: \"3px\" } as React.CSSProperties,\n fieldRow: { display: \"flex\", justifyContent: \"space-between\", alignItems: \"baseline\", gap: \"12px\", padding: \"6px 0\", borderBottom: \"1px solid #e5e5e5\" } as React.CSSProperties,\n label: { fontSize: \"12px\", color: MUTED, flexShrink: 0 } as React.CSSProperties,\n};\n\nexport function StatusCardResolver(p: SchemaPayload<\"status-card\">) {\n const { ACCENT, MUTED } = useTheme();\n const status = p.status ?? \"default\";\n return (\n <ComponentActions filename={p.title ?? \"status-card\"}>\n <div style={S.card}>\n <div style={S.header}>\n <div style={{ display: \"flex\", alignItems: \"center\", gap: \"8px\", flexWrap: \"wrap\" }}>\n <span style={S.title}>{p.title}</span>\n {status !== \"default\" && (() => {\n const c = chipBg[toChipColor(status)];\n return (\n <span style={{\n fontSize: \"11px\",\n fontWeight: 600,\n padding: \"2px 8px\",\n borderRadius: \"9999px\",\n background: c.bg,\n color: c.color,\n textTransform: \"capitalize\",\n lineHeight: \"18px\",\n display: \"inline-block\",\n }}>\n {status}\n </span>\n );\n })()}\n </div>\n {p.subtitle && <p style={S.subtitle}><Markdown inline content={p.subtitle} /></p>}\n </div>\n <div style={S.content}>\n <div style={{ display: \"flex\", flexDirection: \"column\" }}>\n {(p.fields ?? []).map((field, i) => (\n <div key={i} style={{ ...S.fieldRow, ...(i === (p.fields ?? []).length - 1 ? { borderBottom: \"none\" } : {}) }}>\n <span style={S.label}>{field.label}</span>\n <span style={{\n fontSize: \"13px\",\n fontWeight: field.highlight ? 600 : 400,\n color: field.highlight ? ACCENT : \"var(--foreground)\",\n fontVariantNumeric: \"tabular-nums\",\n textAlign: \"right\",\n }}>\n {field.value}\n </span>\n </div>\n ))}\n </div>\n </div>\n {p.actions && (p.actions ?? []).length > 0 && (\n <div style={S.footer}>\n <div style={{ display: \"flex\", gap: \"8px\", flexWrap: \"wrap\", width: \"100%\" }}>\n {(p.actions ?? []).map((action, i) => {\n const v = toButtonVariant(action.variant, action.color);\n return (\n <button\n key={i}\n style={{\n ...btnStyles[v],\n fontSize: \"13px\",\n fontWeight: 500,\n padding: \"6px 14px\",\n borderRadius: \"0.5rem\",\n cursor: \"pointer\",\n lineHeight: \"20px\",\n }}\n >\n {action.label}\n </button>\n );\n })}\n </div>\n </div>\n )}\n </div>\n </ComponentActions>\n );\n}\n","\"use client\";\n\nimport React from \"react\";\nimport type { SchemaPayload } from \"../../schemas\";\nimport { ComponentActions } from \"../../shared/ComponentActions\";\nimport { Markdown } from \"../../shared/Markdown\";\n\ntype AlertStatus = \"default\" | \"accent\" | \"success\" | \"warning\" | \"danger\";\n\nfunction toAlertStatus(\n color: \"default\" | \"primary\" | \"secondary\" | \"success\" | \"warning\" | \"danger\"\n): AlertStatus {\n const map: Record<typeof color, AlertStatus> = {\n default: \"default\",\n primary: \"accent\",\n secondary: \"default\",\n success: \"success\",\n warning: \"warning\",\n danger: \"danger\",\n };\n return map[color];\n}\n\nconst statusStyles: Record<AlertStatus, { border: string; bg: string; icon: string }> = {\n success: { border: \"#16a34a\", bg: \"#f0fdf4\", icon: \"✓\" },\n warning: { border: \"#f59e0b\", bg: \"#fffbeb\", icon: \"⚠\" },\n danger: { border: \"#dc2626\", bg: \"#fef2f2\", icon: \"✗\" },\n accent: { border: \"#ff5000\", bg: \"#fff7ed\", icon: \"●\" },\n default: { border: \"#dedede\", bg: \"#f6f6f6\", icon: \"ℹ\" },\n};\n\nexport function AlertResolver(p: SchemaPayload<\"alert\">) {\n const status = toAlertStatus(p.color ?? \"default\");\n const s = statusStyles[status];\n\n return (\n <ComponentActions filename={p.title ?? \"alert\"}>\n <div style={{ width: \"100%\" }}>\n <div\n role=\"alert\"\n style={{\n display: \"flex\",\n alignItems: \"flex-start\",\n gap: \"10px\",\n padding: \"12px 14px\",\n borderLeft: `4px solid ${s.border}`,\n background: s.bg,\n borderRadius: \"0.5rem\",\n }}\n >\n <span\n style={{\n flexShrink: 0,\n width: \"20px\",\n height: \"20px\",\n display: \"flex\",\n alignItems: \"center\",\n justifyContent: \"center\",\n fontSize: \"14px\",\n color: s.border,\n lineHeight: 1,\n }}\n aria-hidden=\"true\"\n >\n {s.icon}\n </span>\n <div style={{ display: \"flex\", flexDirection: \"column\", gap: \"2px\", minWidth: 0 }}>\n <span style={{ fontSize: \"14px\", fontWeight: 600, color: \"var(--foreground, #111)\" }}>\n {p.title}\n </span>\n {p.description && (\n <span style={{ fontSize: \"13px\", color: \"rgba(0,0,0,0.6)\", lineHeight: 1.4 }}>\n <Markdown inline content={p.description} />\n </span>\n )}\n </div>\n </div>\n </div>\n </ComponentActions>\n );\n}\n","\"use client\";\n\nimport React from \"react\";\nimport type { SchemaPayload } from \"../../schemas\";\nimport { ComponentActions } from \"../../shared/ComponentActions\";\nimport { Markdown } from \"../../shared/Markdown\";\nimport { useTheme } from \"../../shared/ThemeContext\";\n\nconst changeColor = (type: \"positive\" | \"negative\" | \"neutral\" | undefined) => {\n if (type === \"positive\") return \"#15803d\";\n if (type === \"negative\") return \"#dc2626\";\n return \"#888888\";\n};\n\nconst cardStyle: React.CSSProperties = {\n border: \"1px solid #dedede\",\n borderRadius: \"0.75rem\",\n background: \"white\",\n padding: \"14px\",\n};\n\nexport function StatGridResolver(p: SchemaPayload<\"stat-grid\">) {\n const { MUTED } = useTheme();\n return (\n <ComponentActions filename=\"stat-grid\">\n <div style={{ width: \"100%\", display: \"grid\", gap: \"10px\", gridTemplateColumns: \"repeat(auto-fill, minmax(140px, 1fr))\" }}>\n {(p.stats ?? []).map((stat, i) => (\n <div key={i} style={cardStyle}>\n <div style={{ display: \"flex\", flexDirection: \"column\", gap: \"4px\", padding: \"4px 0\" }}>\n <p style={{ fontSize: \"11.5px\", color: MUTED, letterSpacing: \"0.02em\", textTransform: \"uppercase\", margin: 0 }}>\n {stat.label}\n </p>\n <p style={{ fontFamily: \"var(--font-serif)\", fontSize: \"22px\", fontWeight: 600, color: \"var(--foreground)\", letterSpacing: \"-0.01em\", lineHeight: 1.1, fontVariantNumeric: \"tabular-nums\", margin: 0 }}>\n {stat.value}\n </p>\n {stat.change && (\n <p style={{ fontSize: \"12px\", fontWeight: 500, color: changeColor(stat.changeType), fontVariantNumeric: \"tabular-nums\", margin: 0 }}>\n {stat.change}\n </p>\n )}\n {stat.description && (\n <p style={{ fontSize: \"11.5px\", color: \"#888888\", lineHeight: 1.4, margin: 0 }}>\n <Markdown inline content={stat.description} />\n </p>\n )}\n </div>\n </div>\n ))}\n </div>\n </ComponentActions>\n );\n}\n","\"use client\";\n\nimport React, { useState } from \"react\";\nimport type { SchemaPayload } from \"../../schemas\";\nimport { ComponentActions } from \"../../shared/ComponentActions\";\nimport { Markdown } from \"../../shared/Markdown\";\nimport { useTheme } from \"../../shared/ThemeContext\";\n\nexport function TabsPanelResolver(p: SchemaPayload<\"tabs-panel\">) {\n const { BORDER, MUTED, PAPER, ACCENT } = useTheme();\n const [activeIdx, setActiveIdx] = useState(0);\n const activeTab = p.tabs[activeIdx];\n\n return (\n <ComponentActions filename=\"tabs-panel\">\n <div style={{ width: \"100%\", display: \"flex\", flexDirection: \"column\", gap: \"0\" }}>\n {/* Tab bar */}\n <div\n style={{\n display: \"flex\",\n gap: \"1px\",\n background: BORDER,\n borderRadius: \"8px 8px 0 0\",\n overflow: \"hidden\",\n borderTop: `1px solid ${BORDER}`,\n borderLeft: `1px solid ${BORDER}`,\n borderRight: `1px solid ${BORDER}`,\n borderBottom: `1px solid ${BORDER}`,\n }}\n >\n {(p.tabs ?? []).map((tab, i) => {\n const isActive = i === activeIdx;\n return (\n <button\n key={tab.key}\n onClick={() => setActiveIdx(i)}\n style={{\n flex: 1,\n padding: \"10px 16px\",\n borderTop: \"none\",\n borderLeft: \"none\",\n borderRight: \"none\",\n borderBottom: \"none\",\n cursor: \"pointer\",\n fontSize: \"12px\",\n fontWeight: 600,\n fontFamily: \"var(--font-sans)\",\n background: isActive ? \"white\" : PAPER,\n color: isActive ? \"var(--foreground)\" : MUTED,\n position: \"relative\",\n transition: \"all 0.15s ease\",\n borderRadius:\n i === 0\n ? \"8px 0 0 0\"\n : i === (p.tabs ?? []).length - 1\n ? \"0 8px 0 0\"\n : \"0\",\n }}\n >\n {isActive && (\n <span\n style={{\n position: \"absolute\",\n bottom: 0,\n left: \"16px\",\n right: \"16px\",\n height: \"2px\",\n background: ACCENT,\n borderRadius: \"2px 2px 0 0\",\n }}\n />\n )}\n {tab.label}\n </button>\n );\n })}\n </div>\n\n {/* Panel */}\n <div\n style={{\n borderTop: \"none\",\n borderLeft: `1px solid ${BORDER}`,\n borderRight: `1px solid ${BORDER}`,\n borderBottom: `1px solid ${BORDER}`,\n borderRadius: \"0 0 10px 10px\",\n background: \"white\",\n padding: \"16px 20px\",\n fontSize: \"13px\",\n lineHeight: 1.65,\n color: \"var(--foreground)\",\n }}\n >\n {activeTab && <Markdown content={activeTab.content} />}\n </div>\n </div>\n </ComponentActions>\n );\n}\n","\"use client\";\n\nimport React from \"react\";\nimport type { SchemaPayload } from \"../../schemas\";\nimport { ComponentActions } from \"../../shared/ComponentActions\";\nimport { useColumnVisibility } from \"../../shared/useColumnVisibility\";\nimport { downloadCSV } from \"../../shared/downloadCSV\";\nimport { BORDER, MUTED, PAPER } from \"../../shared/theme\";\nimport { useTheme } from \"../../shared/ThemeContext\";\n\ntype ColDef = SchemaPayload<\"sparkline-table\">[\"columns\"][number];\ntype RawRow = SchemaPayload<\"sparkline-table\">[\"rows\"][number];\n\nconst SPARK_W = 56;\nconst SPARK_H = 24;\n\nfunction SparklinePath({ points }: { points: number[] }) {\n if (points.length < 2) return null;\n const min = Math.min(...points);\n const max = Math.max(...points);\n const range = max - min || 1;\n const pad = 2;\n const coords = points\n .map((v, i) => `${(i / (points.length - 1)) * SPARK_W},${SPARK_H - pad - ((v - min) / range) * (SPARK_H - pad * 2)}`)\n .join(\" \");\n const isUp = points[points.length - 1] >= points[0];\n const color = isUp ? \"#15803d\" : \"#dc2626\";\n return (\n <svg width={SPARK_W} height={SPARK_H} viewBox={`0 0 ${SPARK_W} ${SPARK_H}`} aria-hidden style={{ display: \"block\" }}>\n <polyline points={coords} fill=\"none\" stroke={color} strokeWidth=\"1.5\" strokeLinecap=\"round\" strokeLinejoin=\"round\" />\n </svg>\n );\n}\n\nconst thStyle: React.CSSProperties = {\n fontSize: \"11px\", fontWeight: 500, color: MUTED,\n padding: \"8px 10px\", letterSpacing: \"0.02em\", textTransform: \"uppercase\",\n borderBottom: `1px solid ${BORDER}`,\n background: PAPER,\n whiteSpace: \"nowrap\",\n};\n\nexport function SparklineTableResolver(p: SchemaPayload<\"sparkline-table\">) {\n const { BORDER, MUTED, PAPER } = useTheme();\n const { visibleColumns, hidden, toggle, showAll, hideAll, allColumns } = useColumnVisibility(p.columns ?? []);\n\n return (\n <ComponentActions\n filename={p.title ?? \"sparkline-table\"}\n onDownloadCSV={() => downloadCSV(visibleColumns, p.rows as Record<string, unknown>[], p.title ?? \"sparkline-table\")}\n columnConfig={{ columns: allColumns, hidden, onToggle: toggle, onShowAll: showAll, onHideAll: hideAll }}\n >\n <div style={{ width: \"100%\", display: \"flex\", flexDirection: \"column\", gap: \"10px\" }}>\n {p.title && (\n <p style={{ fontFamily: \"var(--font-serif)\", fontSize: \"15px\", fontWeight: 600, color: \"var(--foreground)\", letterSpacing: \"-0.005em\" }}>\n {p.title}\n </p>\n )}\n <div style={{ overflowX: \"auto\", borderRadius: \"0.75rem\", border: `1px solid ${BORDER}`, boxShadow: \"0 1px 2px rgba(0,0,0,0.03), 0 4px 12px rgba(0,0,0,0.05)\" }}>\n <table style={{ width: \"100%\", borderCollapse: \"collapse\", minWidth: \"420px\" }}>\n <thead>\n <tr>\n {visibleColumns.map((col) => (\n <th key={col.key} style={{ ...thStyle, textAlign: col.align === \"end\" ? \"right\" : col.align === \"center\" ? \"center\" : \"left\" }}>\n {col.label}\n </th>\n ))}\n <th style={{ ...thStyle, textAlign: \"center\" }}>{p.sparklineLabel}</th>\n </tr>\n </thead>\n <tbody>\n {(p.rows ?? []).map((row, ri) => (\n <tr key={ri} style={{ background: ri % 2 === 0 ? \"white\" : \"#fafafa\", borderBottom: ri < (p.rows ?? []).length - 1 ? \"1px solid #f2f2f2\" : \"none\" }}>\n {visibleColumns.map((col) => (\n <td key={col.key} style={{\n padding: \"8px 10px\", fontSize: \"13px\", color: \"var(--foreground)\",\n fontVariantNumeric: \"tabular-nums\", whiteSpace: (col as ColDef).align === \"end\" || (col as ColDef).align === \"center\" ? \"nowrap\" : \"normal\",\n textAlign: (col as ColDef).align === \"end\" ? \"right\" : (col as ColDef).align === \"center\" ? \"center\" : \"left\",\n }}>\n {String((row as Record<string, unknown>)[col.key] ?? \"—\")}\n </td>\n ))}\n <td style={{ padding: \"6px 12px\", textAlign: \"center\", verticalAlign: \"middle\" }}>\n <SparklinePath points={(row as RawRow).sparkline} />\n </td>\n </tr>\n ))}\n </tbody>\n </table>\n </div>\n </div>\n </ComponentActions>\n );\n}\n","\"use client\";\n\nimport React from \"react\";\nimport type { SchemaPayload } from \"../../schemas\";\nimport { ComponentActions } from \"../../shared/ComponentActions\";\nimport { useColumnVisibility } from \"../../shared/useColumnVisibility\";\nimport { downloadCSV } from \"../../shared/downloadCSV\";\nimport { BORDER, MUTED, PAPER } from \"../../shared/theme\";\nimport { useTheme } from \"../../shared/ThemeContext\";\n\nfunction heatColor(z: number): string {\n const clamped = Math.max(-3, Math.min(3, z));\n const abs = Math.abs(clamped);\n const lightness = 95 - abs * 8;\n const hue = clamped >= 0 ? 142 : 0;\n return `hsl(${hue} 60% ${lightness}%)`;\n}\n\nfunction heatTextColor(z: number): string {\n const abs = Math.abs(z);\n if (abs > 2) return z >= 0 ? \"#14532d\" : \"#7f1d1d\";\n if (abs > 1) return z >= 0 ? \"#166534\" : \"#991b1b\";\n return \"var(--foreground)\";\n}\n\nconst th: React.CSSProperties = {\n fontSize: \"11px\", fontWeight: 500, color: MUTED,\n padding: \"8px 10px\", textAlign: \"center\", letterSpacing: \"0.02em\", textTransform: \"uppercase\",\n borderBottom: `1px solid ${BORDER}`,\n background: PAPER,\n};\n\nexport function HeatmapTableResolver(p: SchemaPayload<\"heatmap-table\">) {\n const { BORDER, MUTED, PAPER } = useTheme();\n const colDefs = (p.columns ?? []).map((c) => ({ key: c.key, label: c.label }));\n const { visibleColumns, hidden, toggle, showAll, hideAll, allColumns } = useColumnVisibility(colDefs);\n const visibleKeys = new Set(visibleColumns.map((c) => c.key));\n\n const csvRows = (p.rows ?? []).map((row) => {\n const obj: Record<string, unknown> = { Asset: row.rowLabel };\n (row.cells ?? []).forEach((cell, ci) => { if (ci < (p.columns ?? []).length) obj[p.columns[ci].key] = cell.value; });\n return obj;\n });\n\n return (\n <ComponentActions\n filename={p.title ?? \"heatmap-table\"}\n onDownloadCSV={() => downloadCSV([{ key: \"Asset\", label: \"Asset\" }, ...visibleColumns], csvRows, p.title ?? \"heatmap-table\")}\n columnConfig={{ columns: allColumns, hidden, onToggle: toggle, onShowAll: showAll, onHideAll: hideAll }}\n >\n <div style={{ width: \"100%\", display: \"flex\", flexDirection: \"column\", gap: \"10px\" }}>\n {p.title && (\n <p style={{ fontFamily: \"var(--font-serif)\", fontSize: \"15px\", fontWeight: 600, color: \"var(--foreground)\", letterSpacing: \"-0.005em\" }}>\n {p.title}\n </p>\n )}\n <div style={{ overflowX: \"auto\", borderRadius: \"0.75rem\", border: `1px solid ${BORDER}`, boxShadow: \"0 1px 2px rgba(0,0,0,0.03), 0 4px 12px rgba(0,0,0,0.05)\" }}>\n <table style={{ width: \"100%\", borderCollapse: \"collapse\", fontSize: \"13px\" }}>\n <thead>\n <tr>\n <th style={{ ...th, textAlign: \"left\" }}>Asset</th>\n {(p.columns ?? []).map((col) => visibleKeys.has(col.key) ? (\n <th key={col.key} style={th}>{col.label}</th>\n ) : null)}\n </tr>\n </thead>\n <tbody>\n {(p.rows ?? []).map((row, ri) => (\n <tr key={ri} style={{ borderBottom: ri < (p.rows ?? []).length - 1 ? \"1px solid #e5e5e5\" : \"none\" }}>\n <td style={{ padding: \"8px 10px\", fontWeight: 500, color: \"var(--foreground)\", fontSize: \"12.5px\", background: \"white\" }}>\n {row.rowLabel}\n </td>\n {(row.cells ?? []).map((cell, ci) => ci < (p.columns ?? []).length && visibleKeys.has(p.columns[ci].key) ? (\n <td\n key={ci}\n style={{\n padding: \"8px 10px\",\n textAlign: \"center\",\n fontVariantNumeric: \"tabular-nums\",\n fontSize: \"12.5px\",\n background: heatColor(cell.zScore),\n color: heatTextColor(cell.zScore),\n fontWeight: Math.abs(cell.zScore) > 1.5 ? 600 : 400,\n }}\n >\n {cell.value}\n </td>\n ) : null)}\n </tr>\n ))}\n </tbody>\n </table>\n </div>\n </div>\n </ComponentActions>\n );\n}\n","\"use client\";\n\nimport React, { useState } from \"react\";\nimport type { SchemaPayload } from \"../../schemas\";\nimport { ComponentActions } from \"../../shared/ComponentActions\";\nimport { useColumnVisibility } from \"../../shared/useColumnVisibility\";\nimport { downloadCSV } from \"../../shared/downloadCSV\";\nimport { BORDER, MUTED, PAPER, ACCENT } from \"../../shared/theme\";\nimport { useTheme } from \"../../shared/ThemeContext\";\n\ntype ColDef = SchemaPayload<\"screener-table\">[\"columns\"][number];\n\nfunction MeterBar({ value, max }: { value: number; max: number }) {\n const pct = Math.min(100, Math.max(0, (value / max) * 100));\n return (\n <div style={{ display: \"flex\", alignItems: \"center\", gap: \"8px\" }}>\n <div style={{ width: \"48px\", height: \"5px\", borderRadius: \"9999px\", background: BORDER, overflow: \"hidden\", flexShrink: 0 }}>\n <div style={{ height: \"100%\", borderRadius: \"9999px\", background: ACCENT, width: `${pct}%`, transition: \"width 0.4s\" }} />\n </div>\n <span style={{ fontSize: \"12px\", fontVariantNumeric: \"tabular-nums\", color: \"var(--foreground)\" }}>{value}</span>\n </div>\n );\n}\n\nconst thStyle: React.CSSProperties = {\n fontSize: \"11px\", fontWeight: 500, color: MUTED,\n padding: \"8px 10px\", letterSpacing: \"0.02em\", textTransform: \"uppercase\",\n borderBottom: `1px solid ${BORDER}`,\n background: PAPER,\n whiteSpace: \"nowrap\",\n};\n\nexport function ScreenerTableResolver(p: SchemaPayload<\"screener-table\">) {\n const { ACCENT, BORDER, MUTED, PAPER } = useTheme();\n const [activeFilters, setActiveFilters] = useState<Set<string>>(new Set(p.activeFilters ?? []));\n const { visibleColumns, hidden, toggle, showAll, hideAll, allColumns } = useColumnVisibility(p.columns ?? []);\n\n const toggleFilter = (f: string) =>\n setActiveFilters((prev) => {\n const next = new Set(prev);\n next.has(f) ? next.delete(f) : next.add(f);\n return next;\n });\n\n return (\n <ComponentActions\n filename={p.title ?? \"screener-table\"}\n onDownloadCSV={() => downloadCSV(visibleColumns, p.rows as Record<string, unknown>[], p.title ?? \"screener-table\")}\n columnConfig={{ columns: allColumns, hidden, onToggle: toggle, onShowAll: showAll, onHideAll: hideAll }}\n >\n <div style={{ width: \"100%\", display: \"flex\", flexDirection: \"column\", gap: \"10px\" }}>\n {p.title && (\n <p style={{ fontFamily: \"var(--font-serif)\", fontSize: \"15px\", fontWeight: 600, color: \"var(--foreground)\", letterSpacing: \"-0.005em\" }}>\n {p.title}\n </p>\n )}\n {(p.activeFilters ?? []).length > 0 && (\n <div style={{ display: \"flex\", flexWrap: \"wrap\", gap: \"6px\" }}>\n {(p.activeFilters ?? []).map((f) => {\n const active = activeFilters.has(f);\n return (\n <button key={f} onClick={() => toggleFilter(f)} style={{\n fontFamily: \"var(--font-sans)\", fontSize: \"11.5px\", fontWeight: 500,\n padding: \"3px 10px\", borderRadius: \"9999px\", cursor: \"pointer\",\n border: \"1.5px solid\",\n borderColor: active ? ACCENT : \"#cccccc\",\n background: active ? \"#fff3ed\" : \"white\",\n color: active ? ACCENT : MUTED,\n transition: \"all 0.15s\",\n }}>\n {f}\n </button>\n );\n })}\n </div>\n )}\n <div style={{ overflowX: \"auto\", borderRadius: \"0.75rem\", border: `1px solid ${BORDER}`, boxShadow: \"0 1px 2px rgba(0,0,0,0.03), 0 4px 12px rgba(0,0,0,0.05)\" }}>\n <table style={{ width: \"100%\", borderCollapse: \"collapse\", minWidth: \"420px\" }}>\n <thead>\n <tr>\n {visibleColumns.map((col) => (\n <th key={col.key} style={{ ...thStyle, textAlign: col.align === \"end\" ? \"right\" : col.align === \"center\" ? \"center\" : \"left\" }}>\n {col.label}\n </th>\n ))}\n </tr>\n </thead>\n <tbody>\n {(p.rows ?? []).map((row, ri) => (\n <tr key={ri} style={{ background: ri % 2 === 0 ? \"white\" : \"#fafafa\", borderBottom: ri < (p.rows ?? []).length - 1 ? \"1px solid #f2f2f2\" : \"none\" }}>\n {visibleColumns.map((col: ColDef) => {\n const raw = (row as Record<string, unknown>)[col.key];\n return (\n <td key={col.key} style={{\n padding: \"8px 10px\", fontSize: \"13px\", color: \"var(--foreground)\",\n fontVariantNumeric: \"tabular-nums\", whiteSpace: col.align === \"end\" || col.align === \"center\" || col.meterKey ? \"nowrap\" : \"normal\",\n textAlign: col.align === \"end\" ? \"right\" : col.align === \"center\" ? \"center\" : \"left\",\n }}>\n {col.meterKey && typeof raw === \"number\"\n ? <MeterBar value={raw} max={col.meterMax ?? 100} />\n : String(raw ?? \"—\")}\n </td>\n );\n })}\n </tr>\n ))}\n </tbody>\n </table>\n </div>\n </div>\n </ComponentActions>\n );\n}\n","\"use client\";\n\nimport React, { useState } from \"react\";\nimport type { SchemaPayload } from \"../../schemas\";\nimport { ComponentActions } from \"../../shared/ComponentActions\";\nimport { useColumnVisibility } from \"../../shared/useColumnVisibility\";\nimport { downloadCSV } from \"../../shared/downloadCSV\";\nimport { BORDER, MUTED, PAPER } from \"../../shared/theme\";\nimport { useTheme } from \"../../shared/ThemeContext\";\n\ntype Col = SchemaPayload<\"grouped-table\">[\"columns\"][number];\ntype Group = SchemaPayload<\"grouped-table\">[\"groups\"][number];\n\nconst th: React.CSSProperties = {\n fontSize: \"11px\", fontWeight: 500, color: MUTED,\n padding: \"8px 10px\", letterSpacing: \"0.02em\", textTransform: \"uppercase\",\n borderBottom: `1px solid ${BORDER}`,\n background: PAPER,\n};\n\nfunction GroupRows({ group, columns, depth }: { group: Group; columns: Col[]; depth: number }) {\n const [open, setOpen] = useState(true);\n const indent = depth * 14;\n\n return (\n <>\n <tr\n onClick={() => setOpen((v) => !v)}\n style={{ background: \"#f6f6f6\", cursor: \"pointer\", userSelect: \"none\", borderBottom: \"1px solid #e5e5e5\" }}\n >\n <td style={{ padding: \"7px 10px\", paddingLeft: `${indent + 12}px` }}>\n <span style={{ display: \"inline-flex\", alignItems: \"center\", gap: \"6px\", fontSize: \"12px\", fontWeight: 600, color: \"#555555\" }}>\n <span style={{ color: \"#888888\", fontSize: \"10px\" }}>{open ? \"▾\" : \"▸\"}</span>\n {group.groupLabel}\n </span>\n </td>\n {columns.slice(1).map((col) => (\n <td key={col.key} style={{ padding: \"7px 10px\" }} />\n ))}\n </tr>\n {open && (\n <>\n {group.subGroups?.map((sub, si) => (\n <GroupRows key={si} group={{ ...sub, subGroups: undefined }} columns={columns} depth={depth + 1} />\n ))}\n {(group.rows ?? []).map((row, ri) => (\n <tr key={ri} style={{ borderBottom: \"1px solid #f2f2f2\" }}>\n {columns.map((col, ci) => (\n <td\n key={col.key}\n style={{\n padding: \"7px 10px\",\n paddingLeft: ci === 0 ? `${indent + 24}px` : \"12px\",\n fontSize: \"12.5px\",\n color: \"var(--foreground)\",\n fontVariantNumeric: \"tabular-nums\",\n textAlign: col.align === \"end\" ? \"right\" : col.align === \"center\" ? \"center\" : \"left\",\n }}\n >\n {String((row as Record<string, unknown>)[col.key] ?? \"—\")}\n </td>\n ))}\n </tr>\n ))}\n </>\n )}\n </>\n );\n}\n\nexport function GroupedTableResolver(p: SchemaPayload<\"grouped-table\">) {\n const { BORDER, MUTED, PAPER } = useTheme();\n const { visibleColumns, hidden, toggle, showAll, hideAll, allColumns } = useColumnVisibility(p.columns ?? []);\n\n const flatRows: Record<string, unknown>[] = [];\n const flatten = (groups: Group[]) => {\n for (const g of groups) {\n for (const row of (g.rows ?? [])) flatRows.push(row as Record<string, unknown>);\n if (g.subGroups) flatten(g.subGroups);\n }\n };\n flatten(p.groups ?? []);\n\n return (\n <ComponentActions\n filename={p.title ?? \"grouped-table\"}\n onDownloadCSV={() => downloadCSV(visibleColumns, flatRows, p.title ?? \"grouped-table\")}\n columnConfig={{ columns: allColumns, hidden, onToggle: toggle, onShowAll: showAll, onHideAll: hideAll }}\n >\n <div style={{ width: \"100%\", display: \"flex\", flexDirection: \"column\", gap: \"10px\" }}>\n {p.title && (\n <p style={{ fontFamily: \"var(--font-serif)\", fontSize: \"15px\", fontWeight: 600, color: \"var(--foreground)\", letterSpacing: \"-0.005em\" }}>\n {p.title}\n </p>\n )}\n <div style={{ overflowX: \"auto\", borderRadius: \"0.75rem\", border: `1px solid ${BORDER}`, boxShadow: \"0 1px 2px rgba(0,0,0,0.03), 0 4px 12px rgba(0,0,0,0.05)\" }}>\n <table style={{ width: \"100%\", borderCollapse: \"collapse\", fontSize: \"13px\" }}>\n <thead>\n <tr>\n {visibleColumns.map((col) => (\n <th\n key={col.key}\n style={{\n ...th,\n textAlign: col.align === \"end\" ? \"right\" : col.align === \"center\" ? \"center\" : \"left\",\n }}\n >\n {col.label}\n </th>\n ))}\n </tr>\n </thead>\n <tbody>\n {(p.groups ?? []).map((group, gi) => (\n <GroupRows key={gi} group={group} columns={visibleColumns} depth={0} />\n ))}\n </tbody>\n </table>\n </div>\n </div>\n </ComponentActions>\n );\n}\n","\"use client\";\n\nimport React, { useState } from \"react\";\nimport type { SchemaPayload } from \"../../schemas\";\nimport { ComponentActions } from \"../../shared/ComponentActions\";\nimport { Markdown } from \"../../shared/Markdown\";\nimport { MUTED, ACCENT } from \"../../shared/theme\";\nimport { useTheme } from \"../../shared/ThemeContext\";\n\ntype Sentiment = \"positive\" | \"neutral\" | \"negative\";\n\nconst sentimentStyle = (s: Sentiment, active: boolean) => ({\n fontSize: \"11px\",\n fontWeight: 500,\n padding: \"3px 10px\",\n borderRadius: \"9999px\",\n cursor: \"pointer\",\n border: \"1.5px solid\",\n borderColor: s === \"positive\"\n ? (active ? \"#15803d\" : \"#cccccc\")\n : s === \"negative\"\n ? (active ? \"#dc2626\" : \"#cccccc\")\n : (active ? ACCENT : \"#cccccc\"),\n background: s === \"positive\"\n ? (active ? \"#dcfce7\" : \"white\")\n : s === \"negative\"\n ? (active ? \"#fef2f2\" : \"white\")\n : (active ? \"#fff3ed\" : \"white\"),\n color: s === \"positive\"\n ? (active ? \"#15803d\" : MUTED)\n : s === \"negative\"\n ? (active ? \"#dc2626\" : MUTED)\n : (active ? ACCENT : MUTED),\n textTransform: \"capitalize\" as const,\n transition: \"all 0.15s\",\n});\n\nconst dotColor: Record<Sentiment, string> = {\n positive: \"#15803d\",\n negative: \"#dc2626\",\n neutral: \"#888888\",\n};\n\nexport function NewsFeedResolver(p: SchemaPayload<\"news-feed\">) {\n const { ACCENT, MUTED } = useTheme();\n const [filter, setFilter] = useState<Sentiment | null>(null);\n\n const sentiments = ([\"positive\", \"neutral\", \"negative\"] as const).filter((s) =>\n (p.items ?? []).some((i) => i.sentiment === s)\n );\n\n const visible = filter ? (p.items ?? []).filter((i) => i.sentiment === filter) : p.items;\n\n return (\n <ComponentActions filename={p.title ?? \"news-feed\"}>\n <div style={{ width: \"100%\", display: \"flex\", flexDirection: \"column\", gap: \"10px\" }}>\n {p.title && (\n <p style={{ fontFamily: \"var(--font-serif)\", fontSize: \"15px\", fontWeight: 600, color: \"var(--foreground)\", letterSpacing: \"-0.005em\" }}>\n {p.title}\n </p>\n )}\n {sentiments.length > 1 && (\n <div style={{ display: \"flex\", flexWrap: \"wrap\", gap: \"6px\" }}>\n {sentiments.map((s) => (\n <button key={s} onClick={() => setFilter(filter === s ? null : s)} style={sentimentStyle(s, filter === s)}>\n {s}\n </button>\n ))}\n </div>\n )}\n <div style={{ display: \"flex\", flexDirection: \"column\", gap: \"8px\" }}>\n {visible.map((item, i) => (\n <div key={i} style={{\n background: \"white\",\n borderRadius: \"0.75rem\",\n border: \"2px solid var(--border)\",\n boxShadow: \"0 1px 2px rgba(0,0,0,0.03), 0 4px 12px rgba(0,0,0,0.05)\",\n padding: \"12px 14px\",\n display: \"flex\",\n flexDirection: \"column\",\n gap: \"5px\",\n }}>\n <div style={{ display: \"flex\", alignItems: \"flex-start\", justifyContent: \"space-between\", gap: \"10px\" }}>\n <p style={{ fontSize: \"13.5px\", fontWeight: 500, lineHeight: 1.45, color: \"var(--foreground)\", flex: 1 }}>\n {item.url\n ? <a href={item.url} target=\"_blank\" rel=\"noopener noreferrer\" style={{ color: \"inherit\", textDecoration: \"none\" }}>{item.headline}</a>\n : item.headline}\n </p>\n <span style={{\n width: \"8px\", height: \"8px\", borderRadius: \"9999px\",\n background: dotColor[item.sentiment],\n flexShrink: 0, marginTop: \"4px\",\n }} />\n </div>\n {item.summary && (\n <p style={{ fontSize: \"12px\", color: MUTED, lineHeight: 1.55 }}><Markdown inline content={item.summary} /></p>\n )}\n <div style={{ display: \"flex\", alignItems: \"center\", gap: \"6px\", marginTop: \"2px\" }}>\n <span style={{ fontSize: \"11px\", fontWeight: 500, color: ACCENT }}>{item.source}</span>\n <span style={{ fontSize: \"11px\", color: \"#aaaaaa\" }}>·</span>\n <span style={{ fontSize: \"11px\", color: \"#888888\" }}>{item.timestamp}</span>\n </div>\n </div>\n ))}\n </div>\n </div>\n </ComponentActions>\n );\n}\n","\"use client\";\n\nimport { useState, useCallback } from \"react\";\n\nexport function useSeriesToggle(seriesKeys: string[]) {\n const [hidden, setHidden] = useState<Set<string>>(new Set());\n\n const isVisible = useCallback((key: string) => !hidden.has(key), [hidden]);\n\n const toggle = useCallback((key: string) => {\n setHidden((prev) => {\n const next = new Set(prev);\n if (next.has(key)) next.delete(key);\n else next.add(key);\n return next;\n });\n }, []);\n\n const showAll = useCallback(() => setHidden(new Set()), []);\n\n return { hidden, isVisible, toggle, showAll, allKeys: seriesKeys };\n}\n","\"use client\";\n\nimport React from \"react\";\nimport { AreaChart, Area, XAxis, YAxis, Tooltip, ResponsiveContainer, CartesianGrid } from \"recharts\";\nimport type { SchemaPayload } from \"../../schemas\";\nimport { ComponentActions } from \"../../shared/ComponentActions\";\nimport { useSeriesToggle } from \"../../shared/useSeriesToggle\";\nimport { BORDER } from \"../../shared/theme\";\nimport { useTheme } from \"../../shared/ThemeContext\";\n\nconst tooltipStyle: React.CSSProperties = {\n fontSize: \"12px\",\n borderRadius: \"8px\",\n border: `1px solid ${BORDER}`,\n background: \"white\",\n boxShadow: \"0 4px 12px rgba(0,0,0,0.08)\",\n color: \"var(--foreground)\",\n};\n\nexport function AreaChartResolver(p: SchemaPayload<\"area-chart\">) {\n const { BORDER, MUTED, ACCENT } = useTheme();\n const series = p.series ?? [];\n const data = p.data ?? [];\n const xKey = p.xKey ?? \"x\";\n const { isVisible, toggle } = useSeriesToggle(series.map((s) => s.dataKey));\n\n return (\n <ComponentActions filename={p.title ?? \"area-chart\"}>\n <div style={{ width: \"100%\", display: \"flex\", flexDirection: \"column\", gap: \"12px\" }}>\n {p.title && (\n <p style={{ fontFamily: \"var(--font-serif)\", fontSize: \"15px\", fontWeight: 600, color: \"var(--foreground)\", letterSpacing: \"-0.005em\" }}>\n {p.title}\n </p>\n )}\n <ResponsiveContainer width=\"100%\" height={220}>\n <AreaChart data={data} margin={{ top: 4, right: 8, left: 0, bottom: 0 }}>\n <CartesianGrid strokeDasharray=\"3 3\" stroke={BORDER} strokeOpacity={1} />\n <XAxis\n dataKey={xKey}\n tick={{ fontSize: 11, fill: MUTED }}\n axisLine={false}\n tickLine={false}\n />\n <YAxis\n tick={{ fontSize: 11, fill: MUTED }}\n axisLine={false}\n tickLine={false}\n width={42}\n />\n <Tooltip contentStyle={tooltipStyle} cursor={{ stroke: ACCENT, strokeWidth: 1, strokeDasharray: \"4 2\" }} />\n {series.map((s) => (\n <Area\n key={s.dataKey}\n type=\"monotone\"\n dataKey={s.dataKey}\n name={s.name}\n stroke={s.color}\n fill={s.color}\n fillOpacity={0.10}\n strokeWidth={2}\n dot={false}\n activeDot={series.length > 1 ? { r: 4, strokeWidth: 2, stroke: \"white\" } : false}\n hide={!isVisible(s.dataKey)}\n />\n ))}\n </AreaChart>\n </ResponsiveContainer>\n {series.length > 1 && (\n <div style={{ display: \"flex\", flexWrap: \"wrap\", gap: \"14px\" }}>\n {series.map((s) => (\n <div\n key={s.dataKey}\n onClick={() => toggle(s.dataKey)}\n style={{\n display: \"flex\", alignItems: \"center\", gap: \"6px\", fontSize: \"12px\",\n color: isVisible(s.dataKey) ? MUTED : \"#bbbbbb\",\n cursor: \"pointer\", userSelect: \"none\", transition: \"color 0.15s\",\n textDecoration: isVisible(s.dataKey) ? \"none\" : \"line-through\",\n }}\n >\n <span style={{\n width: \"16px\", height: \"2px\", borderRadius: \"9999px\",\n background: s.color, display: \"inline-block\",\n opacity: isVisible(s.dataKey) ? 1 : 0.3, transition: \"opacity 0.15s\",\n }} />\n {s.name}\n </div>\n ))}\n </div>\n )}\n </div>\n </ComponentActions>\n );\n}\n","\"use client\";\n\nimport React from \"react\";\nimport { PieChart, Pie, Cell, Tooltip, ResponsiveContainer } from \"recharts\";\nimport type { SchemaPayload } from \"../../schemas\";\nimport { ComponentActions } from \"../../shared/ComponentActions\";\nimport { useSeriesToggle } from \"../../shared/useSeriesToggle\";\nimport { BORDER, CHART_PALETTE } from \"../../shared/theme\";\nimport { useTheme } from \"../../shared/ThemeContext\";\n\nconst PALETTE = CHART_PALETTE;\n\nconst tooltipStyle: React.CSSProperties = {\n fontSize: \"12px\",\n borderRadius: \"8px\",\n border: `1px solid ${BORDER}`,\n background: \"white\",\n boxShadow: \"0 4px 12px rgba(0,0,0,0.08)\",\n color: \"var(--foreground)\",\n};\n\nconst tdStyle: React.CSSProperties = { padding: \"5px 10px 5px 0\", fontSize: \"12.5px\", verticalAlign: \"middle\" };\n\nexport function AllocationDonutResolver(p: SchemaPayload<\"allocation-donut\">) {\n const { BORDER, MUTED, CHART_PALETTE } = useTheme();\n const slices = p.slices ?? [];\n const allData = slices.map((s, i) => ({ ...s, fill: s.color ?? PALETTE[i % PALETTE.length] }));\n const { isVisible, toggle } = useSeriesToggle(allData.map((s) => s.label));\n const data = allData.filter((s) => isVisible(s.label));\n const total = data.reduce((sum, s) => sum + s.value, 0);\n const hasBench = slices.some((s) => s.benchmark != null);\n\n return (\n <ComponentActions filename={p.title ?? \"allocation-donut\"}>\n <div style={{ width: \"100%\", display: \"flex\", flexDirection: \"column\", gap: \"12px\" }}>\n {p.title && (\n <p style={{ fontFamily: \"var(--font-serif)\", fontSize: \"15px\", fontWeight: 600, color: \"var(--foreground)\", letterSpacing: \"-0.005em\" }}>\n {p.title}\n </p>\n )}\n <div style={{ display: \"flex\", flexWrap: \"wrap\", gap: \"20px\", alignItems: \"center\", justifyContent: \"center\" }}>\n <div style={{ flexShrink: 0, width: \"140px\", height: \"140px\" }}>\n <ResponsiveContainer width=\"100%\" height=\"100%\">\n <PieChart>\n <Pie\n data={data}\n dataKey=\"value\"\n nameKey=\"label\"\n cx=\"50%\"\n cy=\"50%\"\n innerRadius={40}\n outerRadius={62}\n paddingAngle={2}\n strokeWidth={0}\n >\n {data.map((entry, i) => (\n <Cell key={i} fill={entry.fill} />\n ))}\n </Pie>\n <Tooltip\n formatter={(value) => [`${Number(value).toFixed(1)}%`, \"\"]}\n contentStyle={tooltipStyle}\n />\n </PieChart>\n </ResponsiveContainer>\n </div>\n <div style={{ flex: 1, minWidth: \"220px\", overflowX: \"auto\" }}>\n <table style={{ width: \"100%\", borderCollapse: \"collapse\" }}>\n <thead>\n <tr style={{ borderBottom: `1px solid ${BORDER}` }}>\n <th style={{ ...tdStyle, fontSize: \"11px\", fontWeight: 500, color: MUTED, textTransform: \"uppercase\", letterSpacing: \"0.02em\", textAlign: \"left\" }}>Asset</th>\n <th style={{ ...tdStyle, fontSize: \"11px\", fontWeight: 500, color: MUTED, textTransform: \"uppercase\", letterSpacing: \"0.02em\", textAlign: \"right\" }}>Weight</th>\n {hasBench && <th style={{ ...tdStyle, fontSize: \"11px\", fontWeight: 500, color: MUTED, textTransform: \"uppercase\", letterSpacing: \"0.02em\", textAlign: \"right\" }}>vs Bench</th>}\n </tr>\n </thead>\n <tbody>\n {allData.map((slice, i) => {\n const visible = isVisible(slice.label);\n const diff = slice.benchmark != null ? slice.value - slice.benchmark : null;\n return (\n <tr\n key={i}\n onClick={() => toggle(slice.label)}\n style={{\n borderBottom: i < allData.length - 1 ? \"1px solid #f2f2f2\" : \"none\",\n cursor: \"pointer\", userSelect: \"none\",\n opacity: visible ? 1 : 0.4, transition: \"opacity 0.15s\",\n }}\n >\n <td style={{ ...tdStyle, textAlign: \"left\" }}>\n <div style={{ display: \"flex\", alignItems: \"center\", gap: \"8px\" }}>\n <span style={{ width: \"10px\", height: \"10px\", borderRadius: \"9999px\", background: slice.fill, flexShrink: 0, opacity: visible ? 1 : 0.3 }} />\n <span style={{ color: \"var(--foreground)\", textDecoration: visible ? \"none\" : \"line-through\" }}>{slice.label}</span>\n </div>\n </td>\n <td style={{ ...tdStyle, textAlign: \"right\", fontVariantNumeric: \"tabular-nums\" }}>\n {total > 0 ? ((slice.value / (allData.reduce((s, d) => s + d.value, 0))) * 100).toFixed(1) : \"0.0\"}%\n </td>\n {hasBench && (\n <td style={{ ...tdStyle, textAlign: \"right\", fontVariantNumeric: \"tabular-nums\" }}>\n {diff != null ? (\n <span style={{\n fontSize: \"11.5px\",\n fontWeight: 500,\n color: diff > 0.5 ? \"#15803d\" : diff < -0.5 ? \"#dc2626\" : MUTED,\n }}>\n {diff > 0 ? \"+\" : \"\"}{diff.toFixed(1)}%\n </span>\n ) : \"—\"}\n </td>\n )}\n </tr>\n );\n })}\n </tbody>\n </table>\n </div>\n </div>\n </div>\n </ComponentActions>\n );\n}\n","\"use client\";\n\nimport React from \"react\";\nimport { BarChart, Bar, XAxis, YAxis, Tooltip, ResponsiveContainer, Cell, ReferenceLine } from \"recharts\";\nimport type { SchemaPayload } from \"../../schemas\";\nimport { ComponentActions } from \"../../shared/ComponentActions\";\nimport { useSeriesToggle } from \"../../shared/useSeriesToggle\";\nimport { BORDER, ACCENT } from \"../../shared/theme\";\nimport { useTheme } from \"../../shared/ThemeContext\";\n\nconst TERRACOTTA = ACCENT;\nconst POS = \"#15803d\";\nconst NEG = \"#dc2626\";\n\nconst tooltipStyle: React.CSSProperties = {\n fontSize: \"12px\",\n borderRadius: \"8px\",\n border: `1px solid ${BORDER}`,\n background: \"white\",\n boxShadow: \"0 4px 12px rgba(0,0,0,0.08)\",\n color: \"var(--foreground)\",\n};\n\nexport function WaterfallChartResolver(p: SchemaPayload<\"waterfall-chart\">) {\n const { ACCENT, BORDER, MUTED } = useTheme();\n const { isVisible, toggle } = useSeriesToggle([\"Positive\", \"Negative\", \"Total\"]);\n\n const unit = p.unit ?? \"\";\n const bars = p.bars ?? [];\n\n let running = 0;\n const chartData = bars\n .map((bar) => {\n const base = bar.isTotal ? 0 : running;\n if (!bar.isTotal) running += bar.value;\n const category = bar.isTotal ? \"Total\" : bar.value >= 0 ? \"Positive\" : \"Negative\";\n return { label: bar.label, value: bar.value, base, isTotal: !!bar.isTotal, positive: bar.value >= 0, category };\n })\n .filter((d) => isVisible(d.category));\n\n return (\n <ComponentActions filename={p.title ?? \"waterfall-chart\"}>\n <div style={{ width: \"100%\", display: \"flex\", flexDirection: \"column\", gap: \"12px\" }}>\n {p.title && (\n <p style={{ fontFamily: \"var(--font-serif)\", fontSize: \"15px\", fontWeight: 600, color: \"var(--foreground)\", letterSpacing: \"-0.005em\" }}>\n {p.title}\n </p>\n )}\n <ResponsiveContainer width=\"100%\" height={200}>\n <BarChart data={chartData} margin={{ top: 4, right: 8, left: 0, bottom: 0 }}>\n <XAxis\n dataKey=\"label\"\n tick={{ fontSize: 10, fill: MUTED }}\n axisLine={false}\n tickLine={false}\n />\n <YAxis\n tick={{ fontSize: 11, fill: MUTED }}\n axisLine={false}\n tickLine={false}\n width={42}\n tickFormatter={(v) => `${v}${unit}`}\n />\n <Tooltip\n formatter={(value) => {\n const v = Number(value);\n return [`${v > 0 ? \"+\" : \"\"}${v}${unit}`, \"\"] as [string, string];\n }}\n contentStyle={tooltipStyle}\n cursor={{ fill: \"#f2f2f2\" }}\n />\n <ReferenceLine y={0} stroke=\"#bbbbbb\" strokeWidth={1.5} />\n <Bar dataKey=\"base\" stackId=\"wf\" fill=\"transparent\" />\n <Bar dataKey=\"value\" stackId=\"wf\" radius={[3, 3, 0, 0]}>\n {chartData.map((entry, i) => (\n <Cell\n key={i}\n fill={entry.isTotal ? TERRACOTTA : entry.positive ? POS : NEG}\n fillOpacity={entry.isTotal ? 1 : 0.80}\n />\n ))}\n </Bar>\n </BarChart>\n </ResponsiveContainer>\n <div style={{ display: \"flex\", flexWrap: \"wrap\", gap: \"14px\" }}>\n {([[\"Positive\", POS], [\"Negative\", NEG], [\"Total\", TERRACOTTA]] as const).map(([label, color]) => (\n <div\n key={label}\n onClick={() => toggle(label)}\n style={{\n display: \"flex\", alignItems: \"center\", gap: \"6px\", fontSize: \"12px\",\n color: isVisible(label) ? MUTED : \"#bbbbbb\",\n cursor: \"pointer\", userSelect: \"none\", transition: \"color 0.15s\",\n textDecoration: isVisible(label) ? \"none\" : \"line-through\",\n }}\n >\n <span style={{\n width: \"10px\", height: \"10px\", borderRadius: \"3px\",\n background: color, display: \"inline-block\",\n opacity: isVisible(label) ? 1 : 0.3, transition: \"opacity 0.15s\",\n }} />\n {label}\n </div>\n ))}\n </div>\n </div>\n </ComponentActions>\n );\n}\n","\"use client\";\n\nimport React, { Suspense } from \"react\";\nimport type { SchemaPayload } from \"../../schemas\";\nimport { ComponentActions } from \"../../shared/ComponentActions\";\nimport { useTheme } from \"../../shared/ThemeContext\";\n\nconst FlowGraph = React.lazy(() =>\n import(\"./FlowGraph\").then((m) => ({ default: m.FlowGraph }))\n);\n\nexport interface FlowCanvasRendererProps {\n diagram: string;\n title?: string;\n description?: string;\n streaming?: boolean;\n autoplay?: boolean;\n nodeStates?: Record<string, \"pending\" | \"active\" | \"done\" | \"error\">;\n}\n\nexport function FlowCanvasRenderer({\n diagram,\n title,\n description,\n streaming = false,\n autoplay,\n nodeStates,\n}: FlowCanvasRendererProps) {\n const { ACCENT, BORDER, MUTED, PAPER } = useTheme();\n return (\n <div style={{ width: \"100%\", display: \"flex\", flexDirection: \"column\", gap: \"8px\" }}>\n {(title || streaming) && (\n <div style={{ display: \"flex\", alignItems: \"center\", gap: \"8px\" }}>\n {title && (\n <p style={{\n fontFamily: \"var(--font-serif)\", fontSize: \"15px\", fontWeight: 600,\n color: \"var(--foreground)\", letterSpacing: \"-0.005em\", margin: 0,\n }}>\n {title}\n </p>\n )}\n {streaming && (\n <span style={{\n display: \"inline-block\",\n width: \"7px\", height: \"7px\", borderRadius: \"50%\",\n background: ACCENT,\n animation: \"canvasPulse 1.2s ease-in-out infinite\",\n flexShrink: 0,\n }} />\n )}\n </div>\n )}\n {description && !streaming && (\n <p style={{ fontSize: \"12.5px\", color: \"#888888\", margin: 0, fontFamily: \"var(--font-sans)\" }}>\n {description}\n </p>\n )}\n\n <div style={{\n width: \"100%\",\n borderRadius: \"0.75rem\",\n border: `1px solid ${BORDER}`,\n boxShadow: \"0 1px 2px rgba(0,0,0,0.03), 0 4px 12px rgba(0,0,0,0.05)\",\n overflow: \"hidden\",\n background: \"#ffffff\",\n position: \"relative\",\n // Height is owned by FlowGraph (derived from the laid-out graph's aspect\n // ratio); only the empty/streaming placeholder needs a fixed stage.\n ...(diagram ? {} : { height: \"320px\" }),\n }}>\n {diagram ? (\n <Suspense fallback={null}>\n <FlowGraph diagram={diagram} title={title} autoplay={autoplay} nodeStates={nodeStates} />\n </Suspense>\n ) : (\n <div style={{\n position: \"absolute\", inset: 0,\n display: \"flex\", alignItems: \"center\", justifyContent: \"center\",\n }}>\n <div style={{ display: \"flex\", flexDirection: \"column\", alignItems: \"center\", gap: \"12px\" }}>\n <div style={{ display: \"flex\", gap: \"5px\" }}>\n {[0, 1, 2].map((i) => (\n <span key={i} style={{\n width: \"6px\", height: \"6px\", borderRadius: \"50%\",\n background: ACCENT,\n display: \"inline-block\",\n animation: `bounce 1s ease-in-out ${i * 0.18}s infinite`,\n }} />\n ))}\n </div>\n <span style={{ fontSize: \"12px\", color: \"#888888\", fontFamily: \"var(--font-sans)\" }}>\n Drawing diagram…\n </span>\n </div>\n </div>\n )}\n </div>\n\n <style>{`\n @keyframes canvasPulse {\n 0%, 100% { opacity: 1; transform: scale(1); }\n 50% { opacity: 0.4; transform: scale(0.75); }\n }\n\n /* ── Mermaid output container ─────────────────────── */\n /* Centering + padding handled by the shared Viewport; let the svg size\n naturally so fit-to-view can scale it. */\n .mermaid-output {\n display: flex;\n align-items: flex-start;\n justify-content: center;\n width: 100%;\n box-sizing: border-box;\n padding: 24px 20px;\n }\n .mermaid-output svg { display: block; max-width: 100%; height: auto; }\n\n /* ── All SVG text ─────────────────────────────────── */\n .mermaid-output text,\n .mermaid-output text tspan {\n font-family: Figtree, system-ui, sans-serif !important;\n font-size: 12px !important;\n fill: #111111 !important;\n }\n\n /* ── Flowchart: node shapes ───────────────────────── */\n .mermaid-output .node rect,\n .mermaid-output .node circle,\n .mermaid-output .node ellipse,\n .mermaid-output .node polygon,\n .mermaid-output .node path {\n stroke: #111111 !important;\n stroke-width: 2 !important;\n }\n\n /* ── Edges / arrows ───────────────────────────────── */\n .mermaid-output .edgePath .path,\n .mermaid-output .flowchart-link {\n stroke: ${ACCENT} !important;\n stroke-width: 2 !important;\n }\n .mermaid-output marker path {\n fill: ${ACCENT} !important;\n stroke: ${ACCENT} !important;\n }\n .mermaid-output .edgeLabel rect {\n fill: #ffffff !important;\n stroke: none !important;\n }\n .mermaid-output .edgeLabel text,\n .mermaid-output .edgeLabel text tspan {\n fill: ${MUTED} !important;\n font-size: 11px !important;\n }\n\n /* ── Clusters / subgraphs ─────────────────────────── */\n .mermaid-output .cluster rect {\n fill: ${PAPER} !important;\n stroke: ${BORDER} !important;\n stroke-width: 2 !important;\n }\n .mermaid-output .cluster text,\n .mermaid-output .cluster text tspan {\n font-size: 10px !important;\n font-weight: 600 !important;\n letter-spacing: 0.05em !important;\n fill: ${MUTED} !important;\n text-transform: uppercase !important;\n }\n\n /* ── Sequence diagrams ────────────────────────────── */\n .mermaid-output .actor {\n fill: #ffffff !important;\n stroke: #111111 !important;\n stroke-width: 2 !important;\n }\n .mermaid-output line.actor-line {\n stroke: ${ACCENT} !important;\n stroke-width: 1.5 !important;\n stroke-dasharray: 5 4 !important;\n }\n .mermaid-output .messageLine0,\n .mermaid-output .messageLine1 {\n stroke: ${ACCENT} !important;\n stroke-width: 2 !important;\n }\n .mermaid-output .note {\n fill: #fef8e7 !important;\n stroke: #e0c97c !important;\n stroke-width: 2 !important;\n }\n .mermaid-output .activation0,\n .mermaid-output .activation1 {\n fill: #fef3c7 !important;\n stroke: ${ACCENT} !important;\n stroke-width: 2 !important;\n }\n .mermaid-output .loopLine {\n stroke: ${BORDER} !important;\n stroke-dasharray: 4 4 !important;\n }\n\n /* ── ER diagrams ──────────────────────────────────── */\n .mermaid-output .er.entityBox {\n fill: #ffffff !important;\n stroke: #111111 !important;\n stroke-width: 2 !important;\n }\n .mermaid-output .er.relationshipLine {\n stroke: ${ACCENT} !important;\n stroke-width: 2 !important;\n }\n .mermaid-output .er.reltext tspan {\n fill: ${MUTED} !important;\n font-size: 11px !important;\n }\n\n /* ── Class diagrams ───────────────────────────────── */\n .mermaid-output g.classGroup rect {\n fill: #ffffff !important;\n stroke: #111111 !important;\n stroke-width: 2 !important;\n }\n .mermaid-output .relation {\n stroke: ${ACCENT} !important;\n stroke-width: 2 !important;\n }\n `}</style>\n </div>\n );\n}\n\nexport function FlowCanvasResolver(p: SchemaPayload<\"flow-canvas\">) {\n const { ACCENT, BORDER } = useTheme();\n return (\n <ComponentActions filename={p.title ?? \"flow-canvas\"}>\n <FlowCanvasRenderer\n diagram={p.diagram}\n title={p.title}\n description={p.description}\n streaming={false}\n autoplay={p.autoplay}\n nodeStates={p.node_states}\n />\n </ComponentActions>\n );\n}\n","\"use client\";\n\nimport React from \"react\";\nimport type { SchemaPayload } from \"../../schemas\";\nimport { ComponentActions } from \"../../shared/ComponentActions\";\nimport { downloadCSV } from \"../../shared/downloadCSV\";\nimport { useTheme } from \"../../shared/ThemeContext\";\n\nconst fmt = (v: number, currency?: string) =>\n new Intl.NumberFormat(\"en-US\", { style: \"currency\", currency: currency || \"USD\", minimumFractionDigits: 2 }).format(v);\n\nconst categoryLabels: Record<string, string> = {\n assets: \"Assets\",\n liabilities: \"Liabilities\",\n equity: \"Equity\",\n revenue: \"Revenue\",\n expenses: \"Expenses\",\n other: \"Other\",\n};\n\nexport function TrialBalanceResolver(p: SchemaPayload<\"trial-balance\">) {\n const { BORDER, MUTED, PAPER } = useTheme();\n let totalDebit = 0;\n let totalCredit = 0;\n (p.groups ?? []).forEach((g) => (g.accounts ?? []).forEach((a) => { totalDebit += a.debit; totalCredit += a.credit; }));\n const balanced = Math.abs(totalDebit - totalCredit) < 0.005;\n\n const csvCols = [{ key: \"category\", label: \"Category\" }, { key: \"code\", label: \"Code\" }, { key: \"name\", label: \"Account\" }, { key: \"debit\", label: \"Debit\" }, { key: \"credit\", label: \"Credit\" }];\n const csvRows = (p.groups ?? []).flatMap((g) => (g.accounts ?? []).map((a) => ({ category: g.category, code: a.code, name: a.name, debit: a.debit, credit: a.credit })));\n\n return (\n <ComponentActions filename={p.title ?? \"trial-balance\"} onDownloadCSV={() => downloadCSV(csvCols, csvRows, p.title ?? \"trial-balance\")}>\n <div style={{ width: \"100%\", display: \"flex\", flexDirection: \"column\", gap: \"10px\" }}>\n <div style={{ display: \"flex\", alignItems: \"center\", gap: \"10px\" }}>\n {p.title && (\n <p style={{ fontFamily: \"var(--font-serif)\", fontSize: \"15px\", fontWeight: 600, color: \"var(--foreground)\", letterSpacing: \"-0.005em\" }}>\n {p.title}\n </p>\n )}\n {p.asOfDate && <span style={{ fontSize: \"11px\", color: MUTED }}>As of {p.asOfDate}</span>}\n <span style={{\n marginLeft: \"auto\", fontSize: \"11px\", fontWeight: 600, padding: \"2px 8px\", borderRadius: \"9999px\",\n background: balanced ? \"#dcfce7\" : \"#fef2f2\", color: balanced ? \"#15803d\" : \"#dc2626\",\n }}>\n {balanced ? \"✓ Balanced\" : \"✗ Unbalanced\"}\n </span>\n </div>\n <div style={{ overflowX: \"auto\", borderRadius: \"0.75rem\", border: `1px solid ${BORDER}`, boxShadow: \"0 1px 2px rgba(0,0,0,0.03), 0 4px 12px rgba(0,0,0,0.05)\" }}>\n <table style={{ width: \"100%\", borderCollapse: \"collapse\", minWidth: \"380px\" }}>\n <thead>\n <tr>\n {[\"Code\", \"Account\", \"Debit\", \"Credit\"].map((h, i) => (\n <th key={h} style={{\n fontSize: \"11px\", fontWeight: 500, color: MUTED, padding: \"8px 10px\",\n letterSpacing: \"0.02em\", textTransform: \"uppercase\", borderBottom: `1px solid ${BORDER}`,\n background: PAPER, textAlign: i >= 2 ? \"right\" : \"left\", whiteSpace: \"nowrap\",\n }}>{h}</th>\n ))}\n </tr>\n </thead>\n <tbody>\n {(p.groups ?? []).map((group) => {\n let gDebit = 0, gCredit = 0;\n (group.accounts ?? []).forEach((a) => { gDebit += a.debit; gCredit += a.credit; });\n return (\n <React.Fragment key={group.category}>\n <tr>\n <td colSpan={4} style={{\n padding: \"8px 12px\", fontSize: \"12px\", fontWeight: 600, color: \"var(--foreground)\",\n background: PAPER, borderBottom: `1px solid ${BORDER}`, textTransform: \"uppercase\",\n letterSpacing: \"0.04em\",\n }}>\n {categoryLabels[group.category] ?? group.category}\n </td>\n </tr>\n {(group.accounts ?? []).map((acc) => (\n <tr key={acc.code} style={{ background: \"white\" }}>\n <td style={{ padding: \"6px 10px\", fontSize: \"12px\", fontFamily: \"monospace\", color: MUTED, borderBottom: `1px solid #f2f2f2` }}>{acc.code}</td>\n <td style={{ padding: \"6px 10px\", fontSize: \"13px\", color: \"var(--foreground)\", borderBottom: `1px solid #f2f2f2` }}>{acc.name}</td>\n <td style={{ padding: \"6px 10px\", fontSize: \"13px\", fontVariantNumeric: \"tabular-nums\", textAlign: \"right\", borderBottom: `1px solid #f2f2f2` }}>{acc.debit > 0 ? fmt(acc.debit, p.currency) : \"—\"}</td>\n <td style={{ padding: \"6px 10px\", fontSize: \"13px\", fontVariantNumeric: \"tabular-nums\", textAlign: \"right\", borderBottom: `1px solid #f2f2f2` }}>{acc.credit > 0 ? fmt(acc.credit, p.currency) : \"—\"}</td>\n </tr>\n ))}\n <tr style={{ background: PAPER }}>\n <td colSpan={2} style={{ padding: \"6px 10px\", fontSize: \"12px\", fontWeight: 600, borderBottom: `1px solid ${BORDER}` }}>Subtotal</td>\n <td style={{ padding: \"6px 10px\", fontSize: \"12px\", fontWeight: 600, textAlign: \"right\", fontVariantNumeric: \"tabular-nums\", borderBottom: `1px solid ${BORDER}` }}>{fmt(gDebit, p.currency)}</td>\n <td style={{ padding: \"6px 10px\", fontSize: \"12px\", fontWeight: 600, textAlign: \"right\", fontVariantNumeric: \"tabular-nums\", borderBottom: `1px solid ${BORDER}` }}>{fmt(gCredit, p.currency)}</td>\n </tr>\n </React.Fragment>\n );\n })}\n <tr style={{ background: PAPER }}>\n <td colSpan={2} style={{ padding: \"10px 10px\", fontSize: \"13px\", fontWeight: 700, borderTop: `2px solid ${BORDER}` }}>TOTAL</td>\n <td style={{ padding: \"10px 10px\", fontSize: \"13px\", fontWeight: 700, textAlign: \"right\", fontVariantNumeric: \"tabular-nums\", borderTop: `2px solid ${BORDER}` }}>{fmt(totalDebit, p.currency)}</td>\n <td style={{ padding: \"10px 10px\", fontSize: \"13px\", fontWeight: 700, textAlign: \"right\", fontVariantNumeric: \"tabular-nums\", borderTop: `2px solid ${BORDER}` }}>{fmt(totalCredit, p.currency)}</td>\n </tr>\n </tbody>\n </table>\n </div>\n </div>\n </ComponentActions>\n );\n}\n","\"use client\";\n\nimport React from \"react\";\nimport type { SchemaPayload } from \"../../schemas\";\nimport { ComponentActions } from \"../../shared/ComponentActions\";\nimport { downloadCSV } from \"../../shared/downloadCSV\";\nimport { ACCENT } from \"../../shared/theme\";\nimport { useTheme } from \"../../shared/ThemeContext\";\n\nconst statusColors: Record<string, { bg: string; color: string }> = {\n draft: { bg: \"#fef3c7\", color: \"#92400e\" },\n posted: { bg: \"#dcfce7\", color: \"#15803d\" },\n reversed: { bg: \"#fef2f2\", color: \"#dc2626\" },\n \"pending-approval\": { bg: \"#fff7ed\", color: ACCENT },\n};\n\nconst fmt = (v: number, currency: string) =>\n new Intl.NumberFormat(\"en-US\", { style: \"currency\", currency: currency || \"USD\", minimumFractionDigits: 2 }).format(v);\n\nexport function JournalEntryResolver(p: SchemaPayload<\"journal-entry\">) {\n const { BORDER, MUTED, PAPER, ACCENT } = useTheme();\n const csvCols = [{ key: \"entryId\", label: \"Entry ID\" }, { key: \"date\", label: \"Date\" }, { key: \"status\", label: \"Status\" }, { key: \"account\", label: \"Account\" }, { key: \"description\", label: \"Description\" }, { key: \"debit\", label: \"Debit\" }, { key: \"credit\", label: \"Credit\" }];\n const csvRows = (p.entries ?? []).flatMap((e) => (e.lines ?? []).map((l) => ({ entryId: e.entryId, date: e.date, status: e.status, account: l.account, description: l.description ?? \"\", debit: l.debit, credit: l.credit })));\n\n return (\n <ComponentActions filename={p.title ?? \"journal-entry\"} onDownloadCSV={() => downloadCSV(csvCols, csvRows, p.title ?? \"journal-entry\")}>\n <div style={{ width: \"100%\", display: \"flex\", flexDirection: \"column\", gap: \"14px\" }}>\n {p.title && (\n <p style={{ fontFamily: \"var(--font-serif)\", fontSize: \"15px\", fontWeight: 600, color: \"var(--foreground)\", letterSpacing: \"-0.005em\" }}>\n {p.title}\n </p>\n )}\n {(p.entries ?? []).map((entry) => {\n let totalDebit = 0, totalCredit = 0;\n (entry.lines ?? []).forEach((l) => { totalDebit += l.debit; totalCredit += l.credit; });\n const sc = statusColors[entry.status] ?? statusColors.draft;\n return (\n <div key={entry.entryId} style={{ borderRadius: \"0.75rem\", border: `1px solid ${BORDER}`, overflow: \"hidden\", boxShadow: \"0 1px 2px rgba(0,0,0,0.03), 0 4px 12px rgba(0,0,0,0.04)\" }}>\n <div style={{ display: \"flex\", alignItems: \"center\", gap: \"10px\", padding: \"10px 14px\", background: PAPER, borderBottom: `1px solid ${BORDER}` }}>\n <span style={{ fontSize: \"13px\", fontWeight: 600, fontFamily: \"monospace\" }}>{entry.entryId}</span>\n <span style={{ fontSize: \"12px\", color: MUTED }}>{entry.date}</span>\n <span style={{ fontSize: \"11px\", fontWeight: 600, padding: \"2px 8px\", borderRadius: \"9999px\", background: sc.bg, color: sc.color }}>\n {entry.status}\n </span>\n {entry.memo && <span style={{ fontSize: \"12px\", color: MUTED, marginLeft: \"auto\", maxWidth: \"200px\", overflow: \"hidden\", textOverflow: \"ellipsis\", whiteSpace: \"nowrap\" }}>{entry.memo}</span>}\n </div>\n <table style={{ width: \"100%\", borderCollapse: \"collapse\" }}>\n <thead>\n <tr>\n {[\"Account\", \"Description\", \"Debit\", \"Credit\"].map((h, i) => (\n <th key={h} style={{\n fontSize: \"11px\", fontWeight: 500, color: MUTED, padding: \"6px 12px\",\n textAlign: i >= 2 ? \"right\" : \"left\", borderBottom: `1px solid ${BORDER}`,\n textTransform: \"uppercase\", letterSpacing: \"0.02em\",\n }}>{h}</th>\n ))}\n </tr>\n </thead>\n <tbody>\n {entry.lines.map((line, li) => (\n <tr key={li} style={{ background: li % 2 === 0 ? \"white\" : \"#fafafa\" }}>\n <td style={{ padding: \"6px 12px\", fontSize: \"13px\" }}>{line.account}</td>\n <td style={{ padding: \"6px 12px\", fontSize: \"12px\", color: MUTED }}>{line.description ?? \"—\"}</td>\n <td style={{ padding: \"6px 12px\", fontSize: \"13px\", textAlign: \"right\", fontVariantNumeric: \"tabular-nums\" }}>{line.debit > 0 ? fmt(line.debit, p.currency) : \"—\"}</td>\n <td style={{ padding: \"6px 12px\", fontSize: \"13px\", textAlign: \"right\", fontVariantNumeric: \"tabular-nums\" }}>{line.credit > 0 ? fmt(line.credit, p.currency) : \"—\"}</td>\n </tr>\n ))}\n <tr style={{ background: PAPER }}>\n <td colSpan={2} style={{ padding: \"6px 12px\", fontSize: \"12px\", fontWeight: 600, borderTop: `1px solid ${BORDER}` }}>Totals</td>\n <td style={{ padding: \"6px 12px\", fontSize: \"12px\", fontWeight: 600, textAlign: \"right\", fontVariantNumeric: \"tabular-nums\", borderTop: `1px solid ${BORDER}` }}>{fmt(totalDebit, p.currency)}</td>\n <td style={{ padding: \"6px 12px\", fontSize: \"12px\", fontWeight: 600, textAlign: \"right\", fontVariantNumeric: \"tabular-nums\", borderTop: `1px solid ${BORDER}` }}>{fmt(totalCredit, p.currency)}</td>\n </tr>\n </tbody>\n </table>\n </div>\n );\n })}\n </div>\n </ComponentActions>\n );\n}\n","\"use client\";\n\nimport React from \"react\";\nimport type { SchemaPayload } from \"../../schemas\";\nimport { ComponentActions } from \"../../shared/ComponentActions\";\nimport { downloadCSV } from \"../../shared/downloadCSV\";\nimport { useTheme } from \"../../shared/ThemeContext\";\n\nconst fmt = (v: number, currency: string) => {\n const abs = Math.abs(v);\n const s = new Intl.NumberFormat(\"en-US\", { style: \"currency\", currency: currency || \"USD\", minimumFractionDigits: 2 }).format(abs);\n return v < 0 ? `(${s})` : s;\n};\n\nfunction agingHeat(index: number, total: number): string {\n if (total <= 1) return \"transparent\";\n const ratio = index / (total - 1);\n const alpha = Math.round(ratio * 15) / 100;\n return `rgba(220, 38, 38, ${alpha})`;\n}\n\nexport function AgingReportResolver(p: SchemaPayload<\"aging-report\">) {\n const { BORDER, MUTED, PAPER, ACCENT } = useTheme();\n const buckets = p.buckets ?? [];\n const entities = p.entities ?? [];\n const currency = p.currency ?? \"USD\";\n const bucketCount = buckets.length;\n const totals = new Array(bucketCount).fill(0) as number[];\n let grandTotal = 0;\n entities.forEach((e) => {\n (e.amounts ?? []).forEach((a, i) => { if (i < bucketCount) totals[i] += a; });\n grandTotal += e.total ?? 0;\n });\n\n const csvCols = [{ key: \"name\", label: \"Entity\" }, ...buckets.map((b) => ({ key: b, label: b })), { key: \"total\", label: \"Total\" }];\n const csvRows = entities.map((e) => {\n const row: Record<string, unknown> = { name: e.name, total: e.total };\n buckets.forEach((b, i) => { row[b] = i < e.amounts.length ? e.amounts[i] : 0; });\n return row;\n });\n\n return (\n <ComponentActions filename={p.title ?? \"aging-report\"} onDownloadCSV={() => downloadCSV(csvCols, csvRows, p.title ?? \"aging-report\")}>\n <div style={{ width: \"100%\", display: \"flex\", flexDirection: \"column\", gap: \"10px\" }}>\n <div style={{ display: \"flex\", alignItems: \"center\", gap: \"10px\" }}>\n {p.title && (\n <p style={{ fontFamily: \"var(--font-serif)\", fontSize: \"15px\", fontWeight: 600, color: \"var(--foreground)\", letterSpacing: \"-0.005em\" }}>\n {p.title}\n </p>\n )}\n <span style={{ fontSize: \"11px\", fontWeight: 600, padding: \"2px 8px\", borderRadius: \"9999px\", background: p.reportType === \"payable\" ? \"#fff7ed\" : \"#eff6ff\", color: p.reportType === \"payable\" ? ACCENT : \"#1d4ed8\" }}>\n {p.reportType === \"payable\" ? \"Payable\" : \"Receivable\"}\n </span>\n {p.asOfDate && <span style={{ fontSize: \"11px\", color: MUTED }}>As of {p.asOfDate}</span>}\n </div>\n <div style={{ overflowX: \"auto\", borderRadius: \"0.75rem\", border: `1px solid ${BORDER}`, boxShadow: \"0 1px 2px rgba(0,0,0,0.03), 0 4px 12px rgba(0,0,0,0.04)\" }}>\n <table style={{ width: \"100%\", borderCollapse: \"collapse\" }}>\n <thead>\n <tr>\n <th style={{ fontSize: \"11px\", fontWeight: 500, color: MUTED, padding: \"8px 12px\", textAlign: \"left\", borderBottom: `1px solid ${BORDER}`, background: PAPER, textTransform: \"uppercase\", letterSpacing: \"0.02em\" }}>Entity</th>\n {buckets.map((b, i) => (\n <th key={i} style={{ fontSize: \"11px\", fontWeight: 500, color: MUTED, padding: \"8px 12px\", textAlign: \"right\", borderBottom: `1px solid ${BORDER}`, background: PAPER, textTransform: \"uppercase\", letterSpacing: \"0.02em\", whiteSpace: \"nowrap\" }}>{b}</th>\n ))}\n <th style={{ fontSize: \"11px\", fontWeight: 500, color: MUTED, padding: \"8px 12px\", textAlign: \"right\", borderBottom: `1px solid ${BORDER}`, background: PAPER, textTransform: \"uppercase\", letterSpacing: \"0.02em\" }}>Total</th>\n </tr>\n </thead>\n <tbody>\n {entities.map((entity, ri) => (\n <tr key={ri} style={{ background: ri % 2 === 0 ? \"white\" : \"#fafafa\" }}>\n <td style={{ padding: \"6px 12px\", fontSize: \"13px\", borderBottom: `1px solid #f2f2f2`, maxWidth: \"200px\", overflow: \"hidden\", textOverflow: \"ellipsis\", whiteSpace: \"nowrap\" }}>{entity.name}</td>\n {buckets.map((_, bi) => {\n const val = bi < (entity.amounts ?? []).length ? (entity.amounts ?? [])[bi] : 0;\n const isLast = bi === bucketCount - 1;\n return (\n <td key={bi} style={{\n padding: \"6px 12px\", fontSize: \"13px\", textAlign: \"right\", fontVariantNumeric: \"tabular-nums\",\n borderBottom: `1px solid #f2f2f2`,\n background: agingHeat(bi, bucketCount),\n color: isLast && val > 0 ? \"#dc2626\" : undefined,\n fontWeight: isLast && val > 0 ? 600 : undefined,\n }}>{val !== 0 ? fmt(val, currency) : \"—\"}</td>\n );\n })}\n <td style={{ padding: \"6px 12px\", fontSize: \"13px\", textAlign: \"right\", fontVariantNumeric: \"tabular-nums\", fontWeight: 600, borderBottom: `1px solid #f2f2f2` }}>{fmt(entity.total ?? 0, currency)}</td>\n </tr>\n ))}\n <tr style={{ background: PAPER }}>\n <td style={{ padding: \"8px 12px\", fontSize: \"12px\", fontWeight: 700, borderTop: `1px solid ${BORDER}` }}>TOTAL</td>\n {totals.map((t, i) => (\n <td key={i} style={{ padding: \"8px 12px\", fontSize: \"12px\", fontWeight: 700, textAlign: \"right\", fontVariantNumeric: \"tabular-nums\", borderTop: `1px solid ${BORDER}` }}>{fmt(t, currency)}</td>\n ))}\n <td style={{ padding: \"8px 12px\", fontSize: \"12px\", fontWeight: 700, textAlign: \"right\", fontVariantNumeric: \"tabular-nums\", borderTop: `1px solid ${BORDER}` }}>{fmt(grandTotal, currency)}</td>\n </tr>\n </tbody>\n </table>\n </div>\n </div>\n </ComponentActions>\n );\n}\n","\"use client\";\n\nimport React from \"react\";\nimport type { SchemaPayload } from \"../../schemas\";\nimport { ComponentActions } from \"../../shared/ComponentActions\";\nimport { downloadCSV } from \"../../shared/downloadCSV\";\nimport { useTheme } from \"../../shared/ThemeContext\";\n\nconst fmt = (v: number, currency: string) =>\n new Intl.NumberFormat(\"en-US\", { style: \"currency\", currency: currency || \"USD\", minimumFractionDigits: 2 }).format(v);\n\nconst pctFmt = (v: number) => (isFinite(v) ? `${v > 0 ? \"+\" : \"\"}${v.toFixed(1)}%` : \"N/A\");\n\nexport function VarianceAnalysisResolver(p: SchemaPayload<\"variance-analysis\">) {\n const { BORDER, MUTED, PAPER } = useTheme();\n const maxAbsVar = Math.max(...(p.rows ?? []).filter((r) => !r.isSubtotal).map((r) => Math.abs(r.actual - r.budget)), 1);\n\n const csvCols = [{ key: \"lineItem\", label: \"Line Item\" }, { key: \"budget\", label: \"Budget\" }, { key: \"actual\", label: \"Actual\" }, { key: \"variance\", label: \"Variance $\" }, { key: \"variancePct\", label: \"Variance %\" }];\n const csvRows = (p.rows ?? []).map((r) => ({ lineItem: r.lineItem, budget: r.budget, actual: r.actual, variance: r.actual - r.budget, variancePct: r.budget !== 0 ? (((r.actual - r.budget) / Math.abs(r.budget)) * 100).toFixed(1) + \"%\" : \"N/A\" }));\n\n return (\n <ComponentActions filename={p.title ?? \"variance-analysis\"} onDownloadCSV={() => downloadCSV(csvCols, csvRows, p.title ?? \"variance-analysis\")}>\n <div style={{ width: \"100%\", display: \"flex\", flexDirection: \"column\", gap: \"10px\" }}>\n <div style={{ display: \"flex\", alignItems: \"center\", gap: \"10px\" }}>\n {p.title && (\n <p style={{ fontFamily: \"var(--font-serif)\", fontSize: \"15px\", fontWeight: 600, color: \"var(--foreground)\", letterSpacing: \"-0.005em\" }}>\n {p.title}\n </p>\n )}\n {p.period && <span style={{ fontSize: \"11px\", color: MUTED }}>{p.period}</span>}\n </div>\n <div style={{ overflowX: \"auto\", borderRadius: \"0.75rem\", border: `1px solid ${BORDER}`, boxShadow: \"0 1px 2px rgba(0,0,0,0.03), 0 4px 12px rgba(0,0,0,0.05)\" }}>\n <table style={{ width: \"100%\", borderCollapse: \"collapse\", minWidth: \"480px\" }}>\n <thead>\n <tr>\n {[\"Line Item\", \"Budget\", \"Actual\", \"Variance $\", \"Variance %\", \"\"].map((h, i) => (\n <th key={h || i} style={{\n fontSize: \"11px\", fontWeight: 500, color: MUTED, padding: \"8px 10px\",\n textAlign: i === 0 ? \"left\" : i === 5 ? \"left\" : \"right\",\n borderBottom: `1px solid ${BORDER}`, background: PAPER,\n textTransform: \"uppercase\", letterSpacing: \"0.02em\", whiteSpace: \"nowrap\",\n width: i === 5 ? \"60px\" : undefined,\n }}>{h}</th>\n ))}\n </tr>\n </thead>\n <tbody>\n {(p.rows ?? []).map((row, ri) => {\n const variance = row.actual - row.budget;\n const pct = row.budget !== 0 ? (variance / Math.abs(row.budget)) * 100 : NaN;\n const favorable = p.favorableDirection === \"higher\" ? variance >= 0 : variance <= 0;\n const color = variance === 0 ? MUTED : favorable ? \"#15803d\" : \"#dc2626\";\n const barWidth = Math.min(Math.abs(variance) / maxAbsVar, 1) * 100;\n\n return (\n <tr key={ri} style={{\n background: row.isSubtotal ? PAPER : ri % 2 === 0 ? \"white\" : \"#fafafa\",\n fontWeight: row.isSubtotal ? 700 : undefined,\n borderTop: row.isSubtotal ? `1px solid ${BORDER}` : undefined,\n }}>\n <td style={{ padding: \"6px 10px\", paddingLeft: `${12 + (row.indent ?? 0) * 16}px`, fontSize: \"13px\", borderBottom: `1px solid #f2f2f2` }}>{row.lineItem}</td>\n <td style={{ padding: \"6px 10px\", fontSize: \"13px\", textAlign: \"right\", fontVariantNumeric: \"tabular-nums\", borderBottom: `1px solid #f2f2f2` }}>{fmt(row.budget, p.currency)}</td>\n <td style={{ padding: \"6px 10px\", fontSize: \"13px\", textAlign: \"right\", fontVariantNumeric: \"tabular-nums\", borderBottom: `1px solid #f2f2f2` }}>{fmt(row.actual, p.currency)}</td>\n <td style={{ padding: \"6px 10px\", fontSize: \"13px\", textAlign: \"right\", fontVariantNumeric: \"tabular-nums\", borderBottom: `1px solid #f2f2f2`, color }}>{variance >= 0 ? \"+\" : \"\"}{fmt(variance, p.currency)}</td>\n <td style={{ padding: \"6px 10px\", fontSize: \"13px\", textAlign: \"right\", fontVariantNumeric: \"tabular-nums\", borderBottom: `1px solid #f2f2f2`, color }}>{pctFmt(pct)}</td>\n <td style={{ padding: \"6px 10px\", borderBottom: `1px solid #f2f2f2` }}>\n {!row.isSubtotal && variance !== 0 && (\n <div style={{ width: \"52px\", height: \"6px\", borderRadius: \"3px\", background: \"#f2f2f2\", overflow: \"hidden\" }}>\n <div style={{ width: `${barWidth}%`, height: \"100%\", borderRadius: \"3px\", background: color, opacity: 0.7 }} />\n </div>\n )}\n </td>\n </tr>\n );\n })}\n </tbody>\n </table>\n </div>\n </div>\n </ComponentActions>\n );\n}\n","\"use client\";\n\nimport React from \"react\";\nimport { BarChart, Bar, XAxis, YAxis, Tooltip, ResponsiveContainer } from \"recharts\";\nimport type { SchemaPayload } from \"../../schemas\";\nimport { ComponentActions } from \"../../shared/ComponentActions\";\nimport { useSeriesToggle } from \"../../shared/useSeriesToggle\";\nimport { downloadCSV } from \"../../shared/downloadCSV\";\nimport { BORDER, CHART_PALETTE } from \"../../shared/theme\";\nimport { useTheme } from \"../../shared/ThemeContext\";\n\nconst PALETTE = CHART_PALETTE;\n\nconst tooltipStyle: React.CSSProperties = {\n fontSize: \"12px\", borderRadius: \"8px\", border: `1px solid ${BORDER}`,\n background: \"white\", boxShadow: \"0 4px 12px rgba(0,0,0,0.08)\", color: \"var(--foreground)\",\n};\n\nfunction abbreviate(v: number): string {\n const abs = Math.abs(v);\n if (abs >= 1e9) return `$${(v / 1e9).toFixed(1)}B`;\n if (abs >= 1e6) return `$${(v / 1e6).toFixed(1)}M`;\n if (abs >= 1e3) return `$${(v / 1e3).toFixed(0)}K`;\n return `$${v}`;\n}\n\nconst fmt = (v: number, currency: string) =>\n new Intl.NumberFormat(\"en-US\", { style: \"currency\", currency: currency || \"USD\", minimumFractionDigits: 2 }).format(v);\n\nexport function StackedBreakdownResolver(p: SchemaPayload<\"stacked-breakdown\">) {\n const { BORDER, MUTED, PAPER, CHART_PALETTE } = useTheme();\n const { isVisible, toggle } = useSeriesToggle((p.categories ?? []).map((c) => c.name));\n\n const chartData = (p.periods ?? []).map((period, pi) => {\n const row: Record<string, string | number> = { period };\n let total = 0;\n (p.categories ?? []).forEach((cat) => {\n const v = pi < (cat.values ?? []).length ? (cat.values ?? [])[pi] : 0;\n row[cat.name] = v;\n total += v;\n });\n row._total = total;\n return row;\n });\n\n const computedTotals = p.totals ?? chartData.map((d) => d._total as number);\n\n const csvCols = [{ key: \"period\", label: \"Period\" }, ...(p.categories ?? []).map((c) => ({ key: c.name, label: c.name })), { key: \"_total\", label: \"Total\" }];\n\n return (\n <ComponentActions\n filename={p.title ?? \"stacked-breakdown\"}\n onDownloadCSV={() => downloadCSV(csvCols, chartData as Record<string, unknown>[], p.title ?? \"stacked-breakdown\")}\n >\n <div style={{ width: \"100%\", display: \"flex\", flexDirection: \"column\", gap: \"12px\" }}>\n {p.title && (\n <p style={{ fontFamily: \"var(--font-serif)\", fontSize: \"15px\", fontWeight: 600, color: \"var(--foreground)\", letterSpacing: \"-0.005em\" }}>\n {p.title}\n </p>\n )}\n <ResponsiveContainer width=\"100%\" height={220}>\n <BarChart data={chartData} margin={{ top: 4, right: 8, left: 0, bottom: 0 }}>\n <XAxis dataKey=\"period\" tick={{ fontSize: 10, fill: MUTED }} axisLine={false} tickLine={false} />\n <YAxis tick={{ fontSize: 11, fill: MUTED }} axisLine={false} tickLine={false} width={52} tickFormatter={abbreviate} />\n <Tooltip contentStyle={tooltipStyle} formatter={(value: unknown) => [fmt(value as number, p.currency), \"\"]} cursor={{ fill: \"#f2f2f2\" }} />\n {(p.categories ?? []).map((cat, ci) => (\n <Bar\n key={cat.name}\n dataKey={cat.name}\n stackId=\"tax\"\n fill={cat.color ?? PALETTE[ci % PALETTE.length]}\n radius={ci === (p.categories ?? []).length - 1 ? [3, 3, 0, 0] : undefined}\n hide={!isVisible(cat.name)}\n />\n ))}\n </BarChart>\n </ResponsiveContainer>\n <div style={{ display: \"flex\", flexWrap: \"wrap\", gap: \"14px\" }}>\n {(p.categories ?? []).map((cat, ci) => (\n <div\n key={cat.name}\n onClick={() => toggle(cat.name)}\n style={{\n display: \"flex\", alignItems: \"center\", gap: \"6px\", fontSize: \"12px\",\n color: isVisible(cat.name) ? MUTED : \"#b3b3b3\",\n cursor: \"pointer\", userSelect: \"none\", transition: \"color 0.15s\",\n textDecoration: isVisible(cat.name) ? \"none\" : \"line-through\",\n }}\n >\n <span style={{\n width: \"10px\", height: \"10px\", borderRadius: \"2px\",\n background: cat.color ?? PALETTE[ci % PALETTE.length], display: \"inline-block\",\n opacity: isVisible(cat.name) ? 1 : 0.3, transition: \"opacity 0.15s\",\n }} />\n {cat.name}\n </div>\n ))}\n </div>\n <div style={{ overflowX: \"auto\", borderRadius: \"0.75rem\", border: `1px solid ${BORDER}` }}>\n <table style={{ width: \"100%\", borderCollapse: \"collapse\" }}>\n <thead>\n <tr>\n <th style={{ fontSize: \"11px\", fontWeight: 500, color: MUTED, padding: \"6px 12px\", textAlign: \"left\", borderBottom: `1px solid ${BORDER}`, background: PAPER, textTransform: \"uppercase\" }}>Category</th>\n {(p.periods ?? []).map((per) => (\n <th key={per} style={{ fontSize: \"11px\", fontWeight: 500, color: MUTED, padding: \"6px 12px\", textAlign: \"right\", borderBottom: `1px solid ${BORDER}`, background: PAPER, textTransform: \"uppercase\", whiteSpace: \"nowrap\" }}>{per}</th>\n ))}\n </tr>\n </thead>\n <tbody>\n {(p.categories ?? []).map((cat, ci) => (\n <tr key={cat.name} style={{ background: ci % 2 === 0 ? \"white\" : \"#fafafa\" }}>\n <td style={{ padding: \"6px 12px\", fontSize: \"13px\", borderBottom: `1px solid #f2f2f2` }}>\n <span style={{ display: \"inline-block\", width: \"8px\", height: \"8px\", borderRadius: \"2px\", background: cat.color ?? PALETTE[ci % PALETTE.length], marginRight: \"6px\" }} />\n {cat.name}\n </td>\n {(p.periods ?? []).map((_, pi) => {\n const v = pi < (cat.values ?? []).length ? (cat.values ?? [])[pi] : 0;\n return (\n <td key={pi} style={{ padding: \"6px 12px\", fontSize: \"13px\", textAlign: \"right\", fontVariantNumeric: \"tabular-nums\", borderBottom: `1px solid #f2f2f2`, color: v < 0 ? \"#dc2626\" : undefined }}>\n {v < 0 ? `(${fmt(Math.abs(v), p.currency)})` : fmt(v, p.currency)}\n </td>\n );\n })}\n </tr>\n ))}\n <tr style={{ background: PAPER }}>\n <td style={{ padding: \"8px 12px\", fontSize: \"12px\", fontWeight: 700, borderTop: `1px solid ${BORDER}` }}>TOTAL</td>\n {computedTotals.map((t, i) => (\n <td key={i} style={{ padding: \"8px 12px\", fontSize: \"12px\", fontWeight: 700, textAlign: \"right\", fontVariantNumeric: \"tabular-nums\", borderTop: `1px solid ${BORDER}` }}>{fmt(t, p.currency)}</td>\n ))}\n </tr>\n </tbody>\n </table>\n </div>\n </div>\n </ComponentActions>\n );\n}\n","\"use client\";\n\nimport React from \"react\";\nimport { BarChart, Bar, XAxis, YAxis, Tooltip, ResponsiveContainer, LabelList } from \"recharts\";\nimport type { SchemaPayload } from \"../../schemas\";\nimport { ComponentActions } from \"../../shared/ComponentActions\";\nimport { useSeriesToggle } from \"../../shared/useSeriesToggle\";\nimport { BORDER, CHART_PALETTE } from \"../../shared/theme\";\nimport { useTheme } from \"../../shared/ThemeContext\";\n\nconst PALETTE = CHART_PALETTE;\n\nfunction abbreviate(v: number, unit?: string): string {\n const abs = Math.abs(v);\n const prefix = unit ?? \"\";\n if (abs >= 1e9) return `${prefix}${(v / 1e9).toFixed(1)}B`;\n if (abs >= 1e6) return `${prefix}${(v / 1e6).toFixed(1)}M`;\n if (abs >= 1e3) return `${prefix}${(v / 1e3).toFixed(0)}K`;\n return `${prefix}${v}`;\n}\n\nconst tooltipStyle: React.CSSProperties = {\n fontSize: \"12px\", borderRadius: \"8px\", border: `1px solid ${BORDER}`,\n background: \"white\", boxShadow: \"0 4px 12px rgba(0,0,0,0.08)\", color: \"var(--foreground)\",\n};\n\nexport function ComparativeBarChartResolver(p: SchemaPayload<\"comparative-bar-chart\">) {\n const { BORDER, MUTED, CHART_PALETTE } = useTheme();\n const series = p.series ?? [];\n const data = p.data ?? [];\n const xKey = p.xKey ?? \"x\";\n const horizontal = p.orientation === \"horizontal\";\n const stacked = p.mode === \"stacked\";\n const layout = horizontal ? \"vertical\" as const : \"horizontal\" as const;\n const { isVisible, toggle } = useSeriesToggle(series.map((s) => s.dataKey));\n\n return (\n <ComponentActions filename={p.title ?? \"comparative-bar-chart\"}>\n <div style={{ width: \"100%\", display: \"flex\", flexDirection: \"column\", gap: \"12px\" }}>\n {p.title && (\n <p style={{ fontFamily: \"var(--font-serif)\", fontSize: \"15px\", fontWeight: 600, color: \"var(--foreground)\", letterSpacing: \"-0.005em\" }}>\n {p.title}\n </p>\n )}\n <ResponsiveContainer width=\"100%\" height={Math.max(200, horizontal ? data.length * 40 + 40 : 200)}>\n <BarChart data={data} layout={layout} margin={{ top: 4, right: 8, left: 0, bottom: 0 }}>\n <XAxis\n {...(horizontal ? { type: \"number\" as const } : { dataKey: xKey })}\n tick={{ fontSize: horizontal ? 11 : 10, fill: MUTED }}\n axisLine={false}\n tickLine={false}\n {...(horizontal ? { tickFormatter: (v: number) => abbreviate(v, p.unit) } : {})}\n />\n <YAxis\n {...(horizontal ? { dataKey: xKey, type: \"category\" as const, width: 72 } : { width: 48 })}\n tick={{ fontSize: horizontal ? 10 : 11, fill: MUTED }}\n axisLine={false}\n tickLine={false}\n {...(!horizontal && p.unit ? { tickFormatter: (v: number) => abbreviate(v, p.unit) } : {})}\n />\n <Tooltip contentStyle={tooltipStyle} cursor={{ fill: \"#f2f2f2\" }} />\n {series.map((s, si) => (\n <Bar\n key={s.dataKey}\n dataKey={s.dataKey}\n name={s.name}\n fill={s.color ?? PALETTE[si % PALETTE.length]}\n stackId={stacked ? \"stack\" : undefined}\n radius={horizontal ? undefined : [3, 3, 0, 0]}\n hide={!isVisible(s.dataKey)}\n >\n {p.showValues && <LabelList dataKey={s.dataKey} position=\"top\" style={{ fontSize: 10, fill: MUTED }} formatter={(v: unknown) => (v as number) ?? \"\"} />}\n </Bar>\n ))}\n </BarChart>\n </ResponsiveContainer>\n {series.length > 1 && (\n <div style={{ display: \"flex\", flexWrap: \"wrap\", gap: \"14px\" }}>\n {series.map((s, si) => (\n <div\n key={s.dataKey}\n onClick={() => toggle(s.dataKey)}\n style={{\n display: \"flex\", alignItems: \"center\", gap: \"6px\", fontSize: \"12px\",\n color: isVisible(s.dataKey) ? MUTED : \"#bbbbbb\",\n cursor: \"pointer\", userSelect: \"none\", transition: \"color 0.15s\",\n textDecoration: isVisible(s.dataKey) ? \"none\" : \"line-through\",\n }}\n >\n <span style={{\n width: \"10px\", height: \"10px\", borderRadius: \"2px\",\n background: s.color ?? PALETTE[si % PALETTE.length], display: \"inline-block\",\n opacity: isVisible(s.dataKey) ? 1 : 0.3, transition: \"opacity 0.15s\",\n }} />\n {s.name}\n </div>\n ))}\n </div>\n )}\n </div>\n </ComponentActions>\n );\n}\n","\"use client\";\n\nimport React, { useState } from \"react\";\nimport type { SchemaPayload } from \"../../schemas\";\nimport { ComponentActions } from \"../../shared/ComponentActions\";\nimport { Markdown } from \"../../shared/Markdown\";\nimport { downloadCSV } from \"../../shared/downloadCSV\";\nimport { BORDER, MUTED, ACCENT } from \"../../shared/theme\";\nimport { useTheme } from \"../../shared/ThemeContext\";\n\ntype Item = SchemaPayload<\"compliance-checklist\">[\"sections\"][number][\"items\"][number];\n\nconst statusConfig: Record<string, { icon: string; color: string; bg: string }> = {\n completed: { icon: \"✓\", color: \"#15803d\", bg: \"#dcfce7\" },\n \"in-progress\": { icon: \"◔\", color: ACCENT, bg: \"#fff7ed\" },\n \"not-started\": { icon: \"○\", color: MUTED, bg: \"#f2f2f2\" },\n overdue: { icon: \"!\", color: \"#dc2626\", bg: \"#fef2f2\" },\n blocked: { icon: \"⊘\", color: \"#7c3aed\", bg: \"#f5f3ff\" },\n na: { icon: \"—\", color: MUTED, bg: \"#f2f2f2\" },\n};\n\nconst priorityConfig: Record<string, { color: string; bg: string }> = {\n critical: { color: \"#dc2626\", bg: \"#fef2f2\" },\n high: { color: ACCENT, bg: \"#fff7ed\" },\n medium: { color: \"#1d4ed8\", bg: \"#eff6ff\" },\n low: { color: MUTED, bg: \"#f2f2f2\" },\n};\n\nfunction ItemRow({ item }: { item: Item }) {\n const sc = statusConfig[item.status] ?? statusConfig[\"not-started\"];\n const pc = priorityConfig[item.priority] ?? priorityConfig.medium;\n\n return (\n <div style={{\n display: \"flex\", alignItems: \"flex-start\", gap: \"10px\", padding: \"8px 12px\",\n background: item.status === \"overdue\" ? \"rgba(220,38,38,0.04)\" : \"white\",\n borderBottom: `1px solid #f2f2f2`,\n }}>\n <span style={{ fontSize: \"13px\", width: \"20px\", height: \"20px\", display: \"flex\", alignItems: \"center\", justifyContent: \"center\", borderRadius: \"9999px\", background: sc.bg, color: sc.color, fontWeight: 700, flexShrink: 0 }}>\n {sc.icon}\n </span>\n <div style={{ flex: 1, minWidth: 0 }}>\n <div style={{ display: \"flex\", alignItems: \"center\", gap: \"8px\", flexWrap: \"wrap\" }}>\n <span style={{ fontSize: \"11px\", fontFamily: \"monospace\", color: MUTED }}>{item.id}</span>\n <span style={{ fontSize: \"13px\", color: \"var(--foreground)\" }}><Markdown inline content={item.description} /></span>\n <span style={{ fontSize: \"10px\", fontWeight: 600, padding: \"1px 6px\", borderRadius: \"9999px\", background: pc.bg, color: pc.color }}>{item.priority}</span>\n <span style={{ fontSize: \"10px\", fontWeight: 600, padding: \"1px 6px\", borderRadius: \"9999px\", background: sc.bg, color: sc.color }}>{item.status}</span>\n </div>\n <div style={{ display: \"flex\", gap: \"12px\", marginTop: \"2px\", fontSize: \"11px\", color: MUTED }}>\n {item.assignee && <span>{item.assignee}</span>}\n {item.dueDate && <span>Due: {item.dueDate}</span>}\n {item.notes && <span style={{ fontStyle: \"italic\" }}><Markdown inline content={item.notes} /></span>}\n </div>\n </div>\n </div>\n );\n}\n\nfunction Section({ section }: { section: SchemaPayload<\"compliance-checklist\">[\"sections\"][number] }) {\n const [open, setOpen] = useState(true);\n return (\n <div>\n <button\n onClick={() => setOpen(!open)}\n style={{\n width: \"100%\", display: \"flex\", alignItems: \"center\", gap: \"6px\", padding: \"8px 12px\",\n background: \"white\", borderTop: \"none\", borderLeft: \"none\", borderRight: \"none\", borderBottom: `1px solid ${BORDER}`, cursor: \"pointer\",\n fontSize: \"12px\", fontWeight: 600, color: \"var(--foreground)\", textTransform: \"uppercase\", letterSpacing: \"0.04em\",\n }}\n >\n <span style={{ transition: \"transform 0.15s\", transform: open ? \"rotate(90deg)\" : \"rotate(0deg)\" }}>▶</span>\n {section.sectionTitle}\n <span style={{ marginLeft: \"auto\", fontSize: \"11px\", color: MUTED, fontWeight: 400, textTransform: \"none\" }}>\n {section.items.filter((i) => i.status === \"completed\").length}/{section.items.length}\n </span>\n </button>\n {open && section.items.map((item) => <ItemRow key={item.id} item={item} />)}\n </div>\n );\n}\n\nexport function ComplianceChecklistResolver(p: SchemaPayload<\"compliance-checklist\">) {\n const { BORDER, MUTED, ACCENT } = useTheme();\n const allItems = (p.sections ?? []).flatMap((s) => s.items);\n const total = allItems.length;\n const completed = allItems.filter((i) => i.status === \"completed\").length;\n const overdue = allItems.filter((i) => i.status === \"overdue\").length;\n const pct = total > 0 ? Math.round((completed / total) * 100) : 0;\n\n const csvCols = [{ key: \"section\", label: \"Section\" }, { key: \"id\", label: \"ID\" }, { key: \"description\", label: \"Description\" }, { key: \"status\", label: \"Status\" }, { key: \"priority\", label: \"Priority\" }, { key: \"assignee\", label: \"Assignee\" }, { key: \"dueDate\", label: \"Due Date\" }];\n const csvRows = (p.sections ?? []).flatMap((s) => (s.items ?? []).map((i) => ({ section: s.sectionTitle, id: i.id, description: i.description, status: i.status, priority: i.priority, assignee: i.assignee ?? \"\", dueDate: i.dueDate ?? \"\" })));\n\n return (\n <ComponentActions filename={p.title ?? \"compliance-checklist\"} onDownloadCSV={() => downloadCSV(csvCols, csvRows, p.title ?? \"compliance-checklist\")}>\n <div style={{ width: \"100%\", display: \"flex\", flexDirection: \"column\", gap: \"10px\" }}>\n {p.title && (\n <p style={{ fontFamily: \"var(--font-serif)\", fontSize: \"15px\", fontWeight: 600, color: \"var(--foreground)\", letterSpacing: \"-0.005em\" }}>\n {p.title}\n </p>\n )}\n <div style={{ display: \"flex\", alignItems: \"center\", gap: \"10px\" }}>\n <div style={{ flex: 1, height: \"8px\", borderRadius: \"4px\", background: \"#f2f2f2\", overflow: \"hidden\" }}>\n <div style={{ width: `${pct}%`, height: \"100%\", borderRadius: \"4px\", background: pct === 100 ? \"#15803d\" : ACCENT, transition: \"width 0.3s\" }} />\n </div>\n <span style={{ fontSize: \"12px\", fontWeight: 600, color: MUTED }}>{pct}%</span>\n {overdue > 0 && <span style={{ fontSize: \"11px\", fontWeight: 600, padding: \"2px 8px\", borderRadius: \"9999px\", background: \"#fef2f2\", color: \"#dc2626\" }}>{overdue} overdue</span>}\n </div>\n <div style={{ borderRadius: \"0.75rem\", border: `1px solid ${BORDER}`, overflow: \"hidden\", boxShadow: \"0 1px 2px rgba(0,0,0,0.03), 0 4px 12px rgba(0,0,0,0.04)\" }}>\n {(p.sections ?? []).map((section, si) => <Section key={si} section={section} />)}\n </div>\n </div>\n </ComponentActions>\n );\n}\n","\"use client\";\n\nimport React, { useState } from \"react\";\nimport type { SchemaPayload } from \"../../schemas\";\nimport { ComponentActions } from \"../../shared/ComponentActions\";\nimport { downloadCSV } from \"../../shared/downloadCSV\";\nimport { BORDER, ACCENT, MUTED } from \"../../shared/theme\";\nimport { useTheme } from \"../../shared/ThemeContext\";\n\nconst INNER_BORDER = \"#f2f2f2\";\nconst MATCH_GREEN = \"#15803d\";\nconst DIFF_RED = \"#dc2626\";\n\nconst fmt = (v: number, currency: string) =>\n new Intl.NumberFormat(\"en-US\", { style: \"currency\", currency: currency || \"USD\", minimumFractionDigits: 2 }).format(v);\n\ntype Tab = \"matched\" | \"unmatchedA\" | \"unmatchedB\";\n\nfunction MatchStatusDot({ matched }: { matched: boolean }) {\n return (\n <span\n style={{\n width: \"6px\",\n height: \"6px\",\n borderRadius: \"9999px\",\n background: matched ? MATCH_GREEN : ACCENT,\n display: \"inline-block\",\n flexShrink: 0,\n opacity: 0.8,\n }}\n />\n );\n}\n\nfunction DiffCell({ diff, currency }: { diff: number; currency: string }) {\n const isZero = Math.abs(diff) < 0.005;\n return (\n <td\n style={{\n padding: \"7px 10px\",\n fontSize: \"12px\",\n textAlign: \"right\",\n fontVariantNumeric: \"tabular-nums\",\n fontWeight: isZero ? 400 : 600,\n color: isZero ? MATCH_GREEN : DIFF_RED,\n borderBottom: `1px solid ${INNER_BORDER}`,\n letterSpacing: \"-0.01em\",\n }}\n >\n {isZero ? (\n <span style={{ display: \"inline-flex\", alignItems: \"center\", gap: \"4px\" }}>\n <svg width=\"10\" height=\"10\" viewBox=\"0 0 10 10\" fill=\"none\">\n <path d=\"M2 5.5L4 7.5L8 3\" stroke={MATCH_GREEN} strokeWidth=\"1.5\" strokeLinecap=\"round\" strokeLinejoin=\"round\" />\n </svg>\n {fmt(diff, currency)}\n </span>\n ) : (\n fmt(diff, currency)\n )}\n </td>\n );\n}\n\nexport function ReconciliationViewResolver(p: SchemaPayload<\"reconciliation-view\">) {\n const { BORDER, MUTED, PAPER, ACCENT } = useTheme();\n const sourceA = p.sourceA ?? { label: \"Source A\" };\n const sourceB = p.sourceB ?? { label: \"Source B\" };\n const [activeTab, setActiveTab] = useState<Tab>(\"matched\");\n\n const balanceA = p.summary?.balanceA ?? 0;\n const balanceB = p.summary?.balanceB ?? 0;\n const difference = p.summary?.difference ?? (balanceA - balanceB);\n\n const csvCols = [\n { key: \"type\", label: \"Type\" },\n { key: \"date\", label: \"Date\" },\n { key: \"description\", label: \"Description\" },\n { key: \"amountA\", label: sourceA.label },\n { key: \"amountB\", label: sourceB.label },\n { key: \"diff\", label: \"Diff\" },\n { key: \"reference\", label: \"Ref\" },\n ];\n const csvRows = [\n ...(p.matched ?? []).map((m) => ({\n type: \"Matched\",\n date: m.date,\n description: m.description,\n amountA: m.amountA,\n amountB: m.amountB,\n diff: m.amountA - m.amountB,\n reference: m.reference ?? \"\",\n })),\n ...(p.unmatchedA ?? []).map((u) => ({\n type: `Unmatched ${sourceA.label}`,\n date: u.date,\n description: u.description,\n amountA: u.amount,\n amountB: \"\",\n diff: \"\",\n reference: u.reference ?? \"\",\n })),\n ...(p.unmatchedB ?? []).map((u) => ({\n type: `Unmatched ${sourceB.label}`,\n date: u.date,\n description: u.description,\n amountA: \"\",\n amountB: u.amount,\n diff: \"\",\n reference: u.reference ?? \"\",\n })),\n ];\n\n const tabs: { key: Tab; label: string; count: number; accent?: string }[] = [\n { key: \"matched\", label: \"Matched\", count: (p.matched ?? []).length, accent: MATCH_GREEN },\n { key: \"unmatchedA\", label: sourceA.label, count: (p.unmatchedA ?? []).length, accent: ACCENT },\n { key: \"unmatchedB\", label: sourceB.label, count: (p.unmatchedB ?? []).length, accent: ACCENT },\n ];\n\n const totalItems = (p.matched ?? []).length + (p.unmatchedA ?? []).length + (p.unmatchedB ?? []).length;\n const matchRate = totalItems > 0 ? Math.round(((p.matched ?? []).length / totalItems) * 100) : 0;\n\n return (\n <ComponentActions\n filename={p.title ?? \"reconciliation-view\"}\n onDownloadCSV={() => downloadCSV(csvCols, csvRows, p.title ?? \"reconciliation-view\")}\n >\n <div style={{ width: \"100%\", display: \"flex\", flexDirection: \"column\", gap: \"0\" }}>\n {/* Title */}\n {p.title && (\n <p\n style={{\n fontFamily: \"var(--font-serif)\",\n fontSize: \"16px\",\n fontWeight: 600,\n color: \"var(--foreground)\",\n letterSpacing: \"-0.005em\",\n margin: \"0 0 12px 0\",\n lineHeight: 1.2,\n }}\n >\n {p.title}\n </p>\n )}\n\n {/* Summary strip */}\n {p.summary && (\n <div\n style={{\n display: \"grid\",\n gridTemplateColumns: \"repeat(auto-fit, minmax(90px, 1fr))\",\n gap: \"0\",\n marginBottom: \"14px\",\n borderRadius: \"10px\",\n border: `1px solid ${BORDER}`,\n overflow: \"hidden\",\n }}\n >\n {/* Source A balance */}\n <div style={{ padding: \"10px 12px\", background: PAPER }}>\n <div\n style={{\n fontSize: \"10px\",\n fontWeight: 500,\n color: MUTED,\n textTransform: \"uppercase\",\n letterSpacing: \"0.04em\",\n marginBottom: \"4px\",\n }}\n >\n {sourceA.label}\n </div>\n <div\n style={{\n fontSize: \"15px\",\n fontWeight: 600,\n color: \"var(--foreground)\",\n fontVariantNumeric: \"tabular-nums\",\n letterSpacing: \"-0.01em\",\n }}\n >\n {fmt(balanceA, p.currency)}\n </div>\n </div>\n\n {/* Source B balance */}\n <div\n style={{\n padding: \"10px 12px\",\n background: PAPER,\n borderLeft: `1px solid ${BORDER}`,\n borderRight: `1px solid ${BORDER}`,\n }}\n >\n <div\n style={{\n fontSize: \"10px\",\n fontWeight: 500,\n color: MUTED,\n textTransform: \"uppercase\",\n letterSpacing: \"0.04em\",\n marginBottom: \"4px\",\n }}\n >\n {sourceB.label}\n </div>\n <div\n style={{\n fontSize: \"15px\",\n fontWeight: 600,\n color: \"var(--foreground)\",\n fontVariantNumeric: \"tabular-nums\",\n letterSpacing: \"-0.01em\",\n }}\n >\n {fmt(balanceB, p.currency)}\n </div>\n </div>\n\n {/* Difference + match rate */}\n <div\n style={{\n padding: \"10px 12px\",\n background: difference === 0 ? \"#f0fdf4\" : \"#fef2f2\",\n }}\n >\n <div\n style={{\n fontSize: \"10px\",\n fontWeight: 500,\n color: difference === 0 ? MATCH_GREEN : DIFF_RED,\n textTransform: \"uppercase\",\n letterSpacing: \"0.04em\",\n marginBottom: \"4px\",\n display: \"flex\",\n alignItems: \"center\",\n gap: \"6px\",\n }}\n >\n Difference\n <span\n style={{\n fontSize: \"9px\",\n fontWeight: 700,\n padding: \"1px 5px\",\n borderRadius: \"9999px\",\n background: difference === 0 ? \"#dcfce7\" : \"#fee2e2\",\n color: difference === 0 ? MATCH_GREEN : DIFF_RED,\n }}\n >\n {matchRate}% match\n </span>\n </div>\n <div\n style={{\n fontSize: \"15px\",\n fontWeight: 700,\n color: difference === 0 ? MATCH_GREEN : DIFF_RED,\n fontVariantNumeric: \"tabular-nums\",\n letterSpacing: \"-0.01em\",\n }}\n >\n {fmt(difference, p.currency)}\n </div>\n </div>\n </div>\n )}\n\n {/* Tabs */}\n <div\n style={{\n display: \"flex\",\n gap: \"1px\",\n background: BORDER,\n borderRadius: \"8px 8px 0 0\",\n overflow: \"hidden\",\n borderTop: `1px solid ${BORDER}`,\n borderLeft: `1px solid ${BORDER}`,\n borderRight: `1px solid ${BORDER}`,\n borderBottom: `1px solid ${BORDER}`,\n }}\n >\n {tabs.map((tab, i) => {\n const isActive = activeTab === tab.key;\n return (\n <button\n key={tab.key}\n onClick={() => setActiveTab(tab.key)}\n style={{\n flex: 1,\n padding: \"10px 14px\",\n borderTop: \"none\",\n borderLeft: \"none\",\n borderRight: \"none\",\n borderBottom: \"none\",\n cursor: \"pointer\",\n fontSize: \"11px\",\n fontWeight: 600,\n fontFamily: \"var(--font-sans)\",\n background: isActive ? \"white\" : PAPER,\n color: isActive ? \"var(--foreground)\" : MUTED,\n display: \"flex\",\n alignItems: \"center\",\n justifyContent: \"center\",\n gap: \"6px\",\n transition: \"all 0.15s ease\",\n position: \"relative\",\n borderRadius:\n i === 0\n ? \"8px 0 0 0\"\n : i === tabs.length - 1\n ? \"0 8px 0 0\"\n : \"0\",\n }}\n >\n {isActive && (\n <span\n style={{\n position: \"absolute\",\n bottom: 0,\n left: \"16px\",\n right: \"16px\",\n height: \"2px\",\n background: tab.accent ?? ACCENT,\n borderRadius: \"2px 2px 0 0\",\n }}\n />\n )}\n <MatchStatusDot matched={tab.key === \"matched\"} />\n {tab.label}\n <span\n style={{\n fontSize: \"10px\",\n fontWeight: 700,\n padding: \"0px 5px\",\n borderRadius: \"9999px\",\n background: isActive\n ? tab.key === \"matched\"\n ? \"#dcfce7\"\n : \"#fff7ed\"\n : \"#e5e5e5\",\n color: isActive\n ? tab.key === \"matched\"\n ? MATCH_GREEN\n : ACCENT\n : MUTED,\n lineHeight: \"16px\",\n }}\n >\n {tab.count}\n </span>\n </button>\n );\n })}\n </div>\n\n {/* Table container */}\n <div\n style={{\n borderRadius: \"0 0 10px 10px\",\n borderTop: \"none\",\n borderLeft: `1px solid ${BORDER}`,\n borderRight: `1px solid ${BORDER}`,\n borderBottom: `1px solid ${BORDER}`,\n overflow: \"hidden\",\n background: \"white\",\n }}\n >\n {activeTab === \"matched\" &&\n ((p.matched ?? []).length === 0 ? (\n <EmptyState message=\"All items reconciled — no matched pairs to display\" />\n ) : (\n <table style={{ width: \"100%\", borderCollapse: \"collapse\" }}>\n <thead>\n <tr>\n {[\"\", \"Date\", \"Description\", sourceA.label, sourceB.label, \"Diff\", \"Ref\"].map(\n (h, i) => (\n <th\n key={`${h}-${i}`}\n style={{\n fontSize: \"10px\",\n fontWeight: 600,\n color: MUTED,\n padding: i === 0 ? \"9px 0 9px 10px\" : \"9px 10px\",\n textAlign: i >= 3 && i <= 5 ? \"right\" : \"left\",\n borderBottom: `1px solid ${BORDER}`,\n background: PAPER,\n textTransform: \"uppercase\",\n letterSpacing: \"0.05em\",\n whiteSpace: \"nowrap\",\n width: i === 0 ? \"20px\" : i === 2 ? \"auto\" : undefined,\n }}\n >\n {h}\n </th>\n )\n )}\n </tr>\n </thead>\n <tbody>\n {(p.matched ?? []).map((m, ri) => {\n const diff = m.amountA - m.amountB;\n const isZero = Math.abs(diff) < 0.005;\n return (\n <tr\n key={ri}\n style={{\n background: ri % 2 === 0 ? \"white\" : \"#fafafa\",\n transition: \"background 0.1s ease\",\n }}\n onMouseEnter={(e) => {\n (e.currentTarget as HTMLElement).style.background = PAPER;\n }}\n onMouseLeave={(e) => {\n (e.currentTarget as HTMLElement).style.background =\n ri % 2 === 0 ? \"white\" : \"#fafafa\";\n }}\n >\n <td\n style={{\n padding: \"7px 0 7px 10px\",\n borderBottom: `1px solid ${INNER_BORDER}`,\n width: \"20px\",\n }}\n >\n <MatchStatusDot matched={isZero} />\n </td>\n <td\n style={{\n padding: \"7px 10px\",\n fontSize: \"11px\",\n borderBottom: `1px solid ${INNER_BORDER}`,\n whiteSpace: \"nowrap\",\n color: MUTED,\n fontVariantNumeric: \"tabular-nums\",\n }}\n >\n {m.date}\n </td>\n <td\n style={{\n padding: \"7px 10px\",\n fontSize: \"12px\",\n borderBottom: `1px solid ${INNER_BORDER}`,\n color: \"var(--foreground)\",\n fontWeight: 500,\n }}\n >\n {m.description}\n </td>\n <td\n style={{\n padding: \"7px 10px\",\n fontSize: \"12px\",\n textAlign: \"right\",\n fontVariantNumeric: \"tabular-nums\",\n borderBottom: `1px solid ${INNER_BORDER}`,\n color: \"var(--foreground)\",\n }}\n >\n {fmt(m.amountA, p.currency)}\n </td>\n <td\n style={{\n padding: \"7px 10px\",\n fontSize: \"12px\",\n textAlign: \"right\",\n fontVariantNumeric: \"tabular-nums\",\n borderBottom: `1px solid ${INNER_BORDER}`,\n color: \"var(--foreground)\",\n }}\n >\n {fmt(m.amountB, p.currency)}\n </td>\n <DiffCell diff={diff} currency={p.currency} />\n <td\n style={{\n padding: \"7px 10px\",\n fontSize: \"10px\",\n color: MUTED,\n fontFamily: \"monospace\",\n borderBottom: `1px solid ${INNER_BORDER}`,\n letterSpacing: \"0.02em\",\n }}\n >\n {m.reference ?? \"—\"}\n </td>\n </tr>\n );\n })}\n </tbody>\n </table>\n ))}\n\n {(activeTab === \"unmatchedA\" || activeTab === \"unmatchedB\") &&\n (() => {\n const items = activeTab === \"unmatchedA\" ? (p.unmatchedA ?? []) : (p.unmatchedB ?? []);\n const sourceLabel =\n activeTab === \"unmatchedA\" ? sourceA.label : sourceB.label;\n\n if (items.length === 0)\n return (\n <EmptyState\n message={`No unmatched items in ${sourceLabel}`}\n />\n );\n\n return (\n <table style={{ width: \"100%\", borderCollapse: \"collapse\" }}>\n <thead>\n <tr>\n {[\"\", \"Date\", \"Description\", \"Amount\", \"Ref\"].map(\n (h, i) => (\n <th\n key={`${h}-${i}`}\n style={{\n fontSize: \"10px\",\n fontWeight: 600,\n color: MUTED,\n padding:\n i === 0 ? \"9px 0 9px 10px\" : \"9px 10px\",\n textAlign: i === 3 ? \"right\" : \"left\",\n borderBottom: `1px solid ${BORDER}`,\n background: PAPER,\n textTransform: \"uppercase\",\n letterSpacing: \"0.05em\",\n width: i === 0 ? \"20px\" : i === 2 ? \"auto\" : undefined,\n }}\n >\n {h}\n </th>\n )\n )}\n </tr>\n </thead>\n <tbody>\n {items.map((item, ri) => (\n <tr\n key={ri}\n style={{\n background:\n ri % 2 === 0 ? \"white\" : \"#fafafa\",\n transition: \"background 0.1s ease\",\n }}\n onMouseEnter={(e) => {\n (e.currentTarget as HTMLElement).style.background =\n PAPER;\n }}\n onMouseLeave={(e) => {\n (e.currentTarget as HTMLElement).style.background =\n ri % 2 === 0\n ? \"white\"\n : \"#fafafa\";\n }}\n >\n <td\n style={{\n padding: \"7px 0 7px 10px\",\n borderBottom: `1px solid ${INNER_BORDER}`,\n width: \"20px\",\n borderLeft: `3px solid ${ACCENT}`,\n }}\n >\n <span\n style={{\n width: \"6px\",\n height: \"6px\",\n borderRadius: \"2px\",\n background: ACCENT,\n display: \"inline-block\",\n opacity: 0.6,\n }}\n />\n </td>\n <td\n style={{\n padding: \"7px 10px\",\n fontSize: \"11px\",\n borderBottom: `1px solid ${INNER_BORDER}`,\n whiteSpace: \"nowrap\",\n color: MUTED,\n fontVariantNumeric: \"tabular-nums\",\n }}\n >\n {item.date}\n </td>\n <td\n style={{\n padding: \"7px 10px\",\n fontSize: \"12px\",\n borderBottom: `1px solid ${INNER_BORDER}`,\n color: \"var(--foreground)\",\n fontWeight: 500,\n }}\n >\n {item.description}\n </td>\n <td\n style={{\n padding: \"7px 10px\",\n fontSize: \"12px\",\n textAlign: \"right\",\n fontVariantNumeric: \"tabular-nums\",\n borderBottom: `1px solid ${INNER_BORDER}`,\n color: ACCENT,\n fontWeight: 600,\n }}\n >\n {fmt(item.amount, p.currency)}\n </td>\n <td\n style={{\n padding: \"7px 10px\",\n fontSize: \"10px\",\n color: MUTED,\n fontFamily: \"monospace\",\n borderBottom: `1px solid ${INNER_BORDER}`,\n letterSpacing: \"0.02em\",\n }}\n >\n {item.reference ?? \"—\"}\n </td>\n </tr>\n ))}\n </tbody>\n </table>\n );\n })()}\n </div>\n </div>\n </ComponentActions>\n );\n}\n\nfunction EmptyState({ message }: { message: string }) {\n return (\n <div\n style={{\n padding: \"32px 24px\",\n textAlign: \"center\",\n color: MUTED,\n fontSize: \"12px\",\n display: \"flex\",\n flexDirection: \"column\",\n alignItems: \"center\",\n gap: \"8px\",\n }}\n >\n <svg width=\"24\" height=\"24\" viewBox=\"0 0 24 24\" fill=\"none\" opacity={0.35}>\n <circle cx=\"12\" cy=\"12\" r=\"10\" stroke={MUTED} strokeWidth=\"1.5\" />\n <path d=\"M8 12h8\" stroke={MUTED} strokeWidth=\"1.5\" strokeLinecap=\"round\" />\n </svg>\n {message}\n </div>\n );\n}\n","\"use client\";\n\nimport React, { useState } from \"react\";\nimport type { SchemaPayload } from \"../../schemas\";\nimport { ComponentActions } from \"../../shared/ComponentActions\";\nimport { Markdown } from \"../../shared/Markdown\";\nimport { BORDER, MUTED, ACCENT } from \"../../shared/theme\";\nimport { useTheme } from \"../../shared/ThemeContext\";\n\ntype Event = SchemaPayload<\"audit-trail\">[\"events\"][number];\n\nconst actionConfig: Record<string, { icon: string; color: string; bg: string }> = {\n created: { icon: \"+\", color: \"#15803d\", bg: \"#dcfce7\" },\n modified: { icon: \"✎\", color: ACCENT, bg: \"#fff7ed\" },\n approved: { icon: \"✓\", color: \"#15803d\", bg: \"#dcfce7\" },\n rejected: { icon: \"✗\", color: \"#dc2626\", bg: \"#fef2f2\" },\n deleted: { icon: \"×\", color: \"#dc2626\", bg: \"#fef2f2\" },\n restored: { icon: \"↺\", color: \"#1d4ed8\", bg: \"#eff6ff\" },\n submitted: { icon: \"→\", color: \"#7c3aed\", bg: \"#f5f3ff\" },\n commented: { icon: \"💬\", color: MUTED, bg: \"#f2f2f2\" },\n};\n\nfunction formatTimestamp(ts: string): string {\n try {\n return new Intl.DateTimeFormat(\"en-US\", { dateStyle: \"medium\", timeStyle: \"short\" }).format(new Date(ts));\n } catch {\n return ts;\n }\n}\n\nfunction ChangesView({ changes }: { changes: NonNullable<Event[\"changes\"]> }) {\n return (\n <div style={{ marginTop: \"6px\", fontSize: \"12px\", display: \"flex\", flexDirection: \"column\", gap: \"3px\" }}>\n {changes.map((c, i) => (\n <div key={i} style={{ display: \"flex\", gap: \"6px\", alignItems: \"baseline\" }}>\n <span style={{ fontWeight: 600, color: \"var(--foreground)\", minWidth: \"80px\" }}>{c.field}:</span>\n {c.oldValue != null && (\n <span style={{ color: \"#dc2626\", textDecoration: \"line-through\" }}>{c.oldValue}</span>\n )}\n {c.oldValue == null && c.newValue != null && <span style={{ color: MUTED, fontStyle: \"italic\" }}>(added)</span>}\n {c.newValue != null && <span style={{ color: \"#15803d\" }}>{c.newValue}</span>}\n {c.newValue == null && c.oldValue != null && <span style={{ color: MUTED, fontStyle: \"italic\" }}>(removed)</span>}\n </div>\n ))}\n </div>\n );\n}\n\nfunction EventCard({ event }: { event: Event }) {\n const [showChanges, setShowChanges] = useState(false);\n const ac = actionConfig[event.action] ?? actionConfig.commented;\n const hasChanges = event.changes && event.changes.length > 0;\n\n return (\n <div style={{ display: \"flex\", gap: \"12px\", position: \"relative\" }}>\n <div style={{ display: \"flex\", flexDirection: \"column\", alignItems: \"center\", flexShrink: 0 }}>\n <span style={{\n width: \"24px\", height: \"24px\", borderRadius: \"9999px\", background: ac.bg, color: ac.color,\n display: \"flex\", alignItems: \"center\", justifyContent: \"center\", fontSize: \"12px\", fontWeight: 700, zIndex: 1,\n }}>{ac.icon}</span>\n <div style={{ width: \"2px\", flex: 1, background: ACCENT, opacity: 0.3 }} />\n </div>\n <div style={{ flex: 1, paddingBottom: \"16px\" }}>\n <div style={{ display: \"flex\", alignItems: \"center\", gap: \"8px\", flexWrap: \"wrap\" }}>\n <span style={{ fontSize: \"12px\", fontWeight: 600 }}>{event.actor}</span>\n <span style={{ fontSize: \"10px\", fontWeight: 600, padding: \"1px 6px\", borderRadius: \"9999px\", background: ac.bg, color: ac.color }}>{event.action}</span>\n <span style={{ fontSize: \"11px\", color: MUTED }}>{formatTimestamp(event.timestamp)}</span>\n </div>\n <p style={{ fontSize: \"13px\", color: \"var(--foreground)\", margin: \"4px 0 0 0\" }}><Markdown inline content={event.summary} /></p>\n {hasChanges && (\n <button\n onClick={() => setShowChanges(!showChanges)}\n style={{ marginTop: \"4px\", padding: \"2px 8px\", border: `1px solid ${BORDER}`, borderRadius: \"4px\", background: \"white\", cursor: \"pointer\", fontSize: \"11px\", color: MUTED }}\n >\n {showChanges ? \"Hide\" : \"Show\"} changes ({event.changes!.length})\n </button>\n )}\n {showChanges && hasChanges && <ChangesView changes={event.changes!} />}\n </div>\n </div>\n );\n}\n\nexport function AuditTrailResolver(p: SchemaPayload<\"audit-trail\">) {\n const { BORDER, MUTED, ACCENT } = useTheme();\n const sorted = [...(p.events ?? [])].sort((a, b) => new Date(b.timestamp).getTime() - new Date(a.timestamp).getTime());\n\n return (\n <ComponentActions filename={p.title ?? \"audit-trail\"}>\n <div style={{ width: \"100%\", display: \"flex\", flexDirection: \"column\", gap: \"10px\" }}>\n <div style={{ display: \"flex\", alignItems: \"center\", gap: \"10px\" }}>\n {p.title && (\n <p style={{ fontFamily: \"var(--font-serif)\", fontSize: \"15px\", fontWeight: 600, color: \"var(--foreground)\", letterSpacing: \"-0.005em\" }}>\n {p.title}\n </p>\n )}\n {p.entityName && <span style={{ fontSize: \"12px\", fontFamily: \"monospace\", color: MUTED }}>{p.entityName}</span>}\n </div>\n <div style={{ padding: \"4px 0 0 0\" }}>\n {sorted.map((event, i) => <EventCard key={i} event={event} />)}\n </div>\n </div>\n </ComponentActions>\n );\n}\n","\"use client\";\n\nimport React, { useState, useRef, useCallback, Suspense } from \"react\";\nimport type { SchemaPayload } from \"../../schemas\";\nimport { ComponentActions } from \"../../shared/ComponentActions\";\nimport { Markdown } from \"../../shared/Markdown\";\nimport { useFullscreen } from \"./useFullscreen\";\nimport { BORDER, MUTED, PAPER } from \"../../shared/theme\";\nimport { useTheme } from \"../../shared/ThemeContext\";\n\nconst PdfViewer = React.lazy(() =>\n import(\"./PdfViewer\").then((m) => ({ default: m.PdfViewer }))\n);\n\nconst ExcelViewer = React.lazy(() =>\n import(\"./ExcelViewer\").then((m) => ({ default: m.ExcelViewer }))\n);\n\nconst highlightColors: Record<string, { bg: string; border: string }> = {\n yellow: { bg: \"rgba(234,179,8,0.15)\", border: \"#eab308\" },\n red: { bg: \"rgba(220,38,38,0.12)\", border: \"#dc2626\" },\n green: { bg: \"rgba(21,128,61,0.12)\", border: \"#15803d\" },\n blue: { bg: \"rgba(29,78,216,0.12)\", border: \"#1d4ed8\" },\n};\n\nfunction sanitizeFilename(name: string): string {\n return name.replace(/\\.\\.\\//g, \"\").replace(/\\.\\.\\\\/g, \"\").split(/[/\\\\]/).pop() ?? name;\n}\n\nfunction IconButton({ title, onClick, href, download, children }: {\n title: string;\n onClick?: () => void;\n href?: string;\n download?: string;\n children: React.ReactNode;\n}) {\n const style: React.CSSProperties = {\n background: \"none\",\n borderTop: `1px solid ${BORDER}`,\n borderLeft: `1px solid ${BORDER}`,\n borderRight: `1px solid ${BORDER}`,\n borderBottom: `1px solid ${BORDER}`,\n borderRadius: \"4px\",\n cursor: \"pointer\",\n padding: \"3px 7px\",\n fontSize: \"13px\",\n color: MUTED,\n lineHeight: 1,\n display: \"flex\",\n alignItems: \"center\",\n justifyContent: \"center\",\n transition: \"background 0.15s\",\n textDecoration: \"none\",\n };\n const handlers = {\n onMouseEnter: (e: React.MouseEvent) => ((e.currentTarget as HTMLElement).style.background = PAPER),\n onMouseLeave: (e: React.MouseEvent) => ((e.currentTarget as HTMLElement).style.background = \"none\"),\n };\n\n if (href) {\n return (\n <a href={href} download={download} title={title} style={style} {...handlers}>\n {children}\n </a>\n );\n }\n return (\n <button onClick={onClick} title={title} style={style} {...handlers}>\n {children}\n </button>\n );\n}\n\nfunction DownloadIcon() {\n return (\n <svg width=\"14\" height=\"14\" viewBox=\"0 0 14 14\" fill=\"none\" stroke=\"currentColor\" strokeWidth=\"1.5\" strokeLinecap=\"round\" strokeLinejoin=\"round\">\n <path d=\"M7 2v7.5M4 7l3 3 3-3\" />\n <path d=\"M2.5 11.5h9\" />\n </svg>\n );\n}\n\nexport function DocumentPreviewResolver(p: SchemaPayload<\"document-preview\">) {\n const { BORDER, MUTED, PAPER, ACCENT } = useTheme();\n const [currentPage, setCurrentPage] = useState(0);\n const containerRef = useRef<HTMLDivElement>(null);\n const { isFullscreen, toggle } = useFullscreen(containerRef);\n\n const hasRealFile = !!(p.source?.url || p.source?.base64);\n const isPdf = p.documentType === \"pdf\";\n const isExcel = p.documentType === \"excel\";\n const totalPages = (p.pages ?? []).length;\n const page = p.pages[currentPage];\n const pageHighlights = (p.highlights ?? []).filter((h) => h.pageIndex === currentPage);\n\n const handlePdfLoad = useCallback(() => {}, []);\n const handleExcelLoad = useCallback(() => {}, []);\n\n return (\n <ComponentActions filename={p.title ?? \"document-preview\"}>\n <div\n ref={containerRef}\n style={{\n width: \"100%\", display: \"flex\", flexDirection: \"column\", gap: \"0\",\n background: isFullscreen ? \"white\" : undefined,\n }}\n >\n {/* Header bar */}\n <div style={{\n display: \"flex\", alignItems: \"center\", gap: \"10px\", padding: \"8px 14px\",\n background: PAPER, borderRadius: isFullscreen ? \"0\" : \"0.75rem 0.75rem 0 0\",\n borderTop: `1px solid ${BORDER}`, borderLeft: `1px solid ${BORDER}`, borderRight: `1px solid ${BORDER}`, borderBottom: \"none\",\n flexWrap: \"wrap\", overflow: \"hidden\",\n }}>\n {p.title && (\n <span style={{ fontFamily: \"var(--font-serif)\", fontSize: \"14px\", fontWeight: 600, color: \"var(--foreground)\" }}>\n {p.title}\n </span>\n )}\n <span style={{ fontSize: \"12px\", color: MUTED, fontFamily: \"monospace\" }}>\n {sanitizeFilename(p.source?.filename ?? 'file')}\n </span>\n <span style={{\n fontSize: \"10px\", fontWeight: 600, padding: \"2px 6px\", borderRadius: \"4px\",\n background: isExcel ? \"#dcfce7\" : \"#eff6ff\",\n color: isExcel ? \"#15803d\" : \"#1d4ed8\",\n textTransform: \"uppercase\",\n }}>\n {p.documentType}\n </span>\n <div style={{ marginLeft: \"auto\", display: \"flex\", alignItems: \"center\", gap: \"10px\" }}>\n {p.metadata && (\n <div style={{ display: \"flex\", gap: \"10px\", fontSize: \"11px\", color: MUTED }}>\n {p.metadata.fileSize && <span>{p.metadata.fileSize}</span>}\n {p.metadata.lastModified && <span>{p.metadata.lastModified}</span>}\n {p.metadata.pageCount && <span>{p.metadata.pageCount} pages</span>}\n </div>\n )}\n <IconButton\n title={`Download ${sanitizeFilename(p.source?.filename ?? 'file')}`}\n href={p.source?.url ?? undefined}\n download={sanitizeFilename(p.source?.filename ?? 'file')}\n onClick={!p.source?.url && p.source?.base64 ? () => {\n const mime = isPdf ? \"application/pdf\" : \"application/vnd.openxmlformats-officedocument.spreadsheetml.sheet\";\n const binary = atob(p.source!.base64!);\n const bytes = new Uint8Array(binary.length);\n for (let i = 0; i < binary.length; i++) bytes[i] = binary.charCodeAt(i);\n const blob = new Blob([bytes], { type: mime });\n const a = document.createElement(\"a\");\n a.href = URL.createObjectURL(blob);\n a.download = sanitizeFilename(p.source?.filename ?? \"file\");\n a.click();\n URL.revokeObjectURL(a.href);\n } : undefined}\n >\n <DownloadIcon />\n </IconButton>\n <IconButton title={isFullscreen ? \"Exit fullscreen\" : \"Fullscreen\"} onClick={toggle}>\n {isFullscreen ? \"⤓\" : \"⛶\"}\n </IconButton>\n </div>\n </div>\n\n {/* Sheet tabs (Excel fallback mode) or page nav (PDF fallback mode) */}\n {!hasRealFile && isExcel ? (\n <div style={{ display: \"flex\", gap: \"0\", borderLeft: `1px solid ${BORDER}`, borderRight: `1px solid ${BORDER}`, overflowX: \"auto\" }}>\n {(p.pages ?? []).map((pg, i) => (\n <button\n key={i}\n onClick={() => setCurrentPage(i)}\n style={{\n padding: \"6px 14px\", borderTop: \"none\", borderLeft: \"none\", borderRight: \"none\", cursor: \"pointer\", fontSize: \"12px\", fontWeight: 600,\n background: i === currentPage ? \"white\" : PAPER,\n color: i === currentPage ? ACCENT : MUTED,\n borderBottom: i === currentPage ? `2px solid ${ACCENT}` : `1px solid ${BORDER}`,\n whiteSpace: \"nowrap\",\n }}\n >{pg.label}</button>\n ))}\n </div>\n ) : !hasRealFile && totalPages > 1 && (\n <div style={{ display: \"flex\", alignItems: \"center\", gap: \"8px\", padding: \"6px 14px\", borderLeft: `1px solid ${BORDER}`, borderRight: `1px solid ${BORDER}`, background: \"white\" }}>\n <button onClick={() => setCurrentPage(Math.max(0, currentPage - 1))} disabled={currentPage === 0} style={{ border: `1px solid ${BORDER}`, borderRadius: \"4px\", padding: \"2px 8px\", background: \"white\", cursor: \"pointer\", fontSize: \"12px\", color: currentPage === 0 ? BORDER : MUTED }}>←</button>\n <span style={{ fontSize: \"12px\", color: MUTED }}>{currentPage + 1} / {totalPages}</span>\n <button onClick={() => setCurrentPage(Math.min(totalPages - 1, currentPage + 1))} disabled={currentPage === totalPages - 1} style={{ border: `1px solid ${BORDER}`, borderRadius: \"4px\", padding: \"2px 8px\", background: \"white\", cursor: \"pointer\", fontSize: \"12px\", color: currentPage === totalPages - 1 ? BORDER : MUTED }}>→</button>\n </div>\n )}\n\n {/* Content area */}\n <div style={{\n minHeight: \"200px\",\n borderRadius: isFullscreen ? \"0\" : \"0 0 0.75rem 0.75rem\",\n border: `1px solid ${BORDER}`, background: \"white\",\n boxShadow: isFullscreen ? \"none\" : \"0 1px 2px rgba(0,0,0,0.03), 0 4px 12px rgba(0,0,0,0.04)\",\n overflow: \"hidden\",\n flex: isFullscreen ? 1 : undefined,\n display: \"flex\", flexDirection: \"column\",\n }}>\n {hasRealFile && isPdf ? (\n <Suspense fallback={null}>\n <PdfViewer url={p.source?.url} base64={p.source?.base64} onLoadSuccess={handlePdfLoad} />\n </Suspense>\n ) : hasRealFile && isExcel ? (\n <Suspense fallback={null}>\n <ExcelViewer url={p.source?.url} base64={p.source?.base64} onLoadSuccess={handleExcelLoad} />\n </Suspense>\n ) : page?.imageUrl ? (\n <div style={{ padding: \"20px\" }}>\n <img src={page.imageUrl} alt={page.label} style={{ maxWidth: \"100%\", borderRadius: \"4px\" }} />\n </div>\n ) : page?.content ? (\n <div style={{ fontFamily: \"var(--font-sans, system-ui)\", fontSize: \"13px\", color: \"var(--foreground)\", lineHeight: 1.6, margin: 0, padding: \"20px\" }}>\n <Markdown content={page.content} />\n </div>\n ) : (\n <div style={{ display: \"flex\", alignItems: \"center\", justifyContent: \"center\", height: \"120px\", color: MUTED, fontSize: \"13px\" }}>\n No content available for {page?.label ?? \"this page\"}\n </div>\n )}\n {pageHighlights.length > 0 && (\n <div style={{ padding: \"0 20px 20px\", display: \"flex\", flexDirection: \"column\", gap: \"6px\" }}>\n {pageHighlights.map((h, i) => {\n const hc = highlightColors[h.color] ?? highlightColors.yellow;\n return (\n <div key={i} style={{ padding: \"6px 10px\", borderRadius: \"4px\", background: hc.bg, borderLeft: `3px solid ${hc.border}`, fontSize: \"12px\" }}>\n <span style={{ fontWeight: 600 }}>{h.text}</span>\n {h.note && <span style={{ color: MUTED, marginLeft: \"8px\" }}>-- <Markdown inline content={h.note} /></span>}\n </div>\n );\n })}\n </div>\n )}\n </div>\n </div>\n </ComponentActions>\n );\n}\n","\"use client\";\n\nimport { useState, useEffect, useCallback, type RefObject } from \"react\";\n\nexport function useFullscreen(ref: RefObject<HTMLElement | null>) {\n const [isFullscreen, setIsFullscreen] = useState(false);\n\n useEffect(() => {\n const handler = () => {\n setIsFullscreen(!!document.fullscreenElement);\n };\n document.addEventListener(\"fullscreenchange\", handler);\n return () => document.removeEventListener(\"fullscreenchange\", handler);\n }, []);\n\n const enter = useCallback(() => {\n ref.current?.requestFullscreen?.();\n }, [ref]);\n\n const exit = useCallback(() => {\n if (document.fullscreenElement) document.exitFullscreen?.();\n }, []);\n\n const toggle = useCallback(() => {\n if (isFullscreen) exit();\n else enter();\n }, [isFullscreen, enter, exit]);\n\n return { isFullscreen, enter, exit, toggle };\n}\n","\"use client\";\n\nimport React, { useState } from \"react\";\nimport type { SchemaPayload } from \"../../schemas\";\nimport { ComponentActions } from \"../../shared/ComponentActions\";\nimport { Markdown } from \"../../shared/Markdown\";\nimport { BORDER, MUTED, ACCENT } from \"../../shared/theme\";\nimport { useTheme } from \"../../shared/ThemeContext\";\n\ntype Step = SchemaPayload<\"provenance-chain\">[\"steps\"][number];\n\nconst stepTypeConfig: Record<\n Step[\"stepType\"],\n { letter: string; bg: string; color: string }\n> = {\n source: { letter: \"S\", bg: \"#fef3c7\", color: \"#92400e\" },\n extraction: { letter: \"E\", bg: \"#dbeafe\", color: \"#1e40af\" },\n \"rag-query\": { letter: \"Q\", bg: \"#ede9fe\", color: \"#6d28d9\" },\n reasoning: { letter: \"R\", bg: \"#fce7f3\", color: \"#9d174d\" },\n computation: { letter: \"C\", bg: \"#d1fae5\", color: \"#065f46\" },\n};\n\nfunction confidenceColor(c: number): string {\n if (c >= 0.8) return \"#15803d\";\n if (c >= 0.5) return ACCENT;\n return \"#dc2626\";\n}\n\nfunction ConfidenceBar({ confidence, height = 6 }: { confidence: number; height?: number }) {\n return (\n <div\n style={{\n width: \"100%\",\n height: `${height}px`,\n borderRadius: \"3px\",\n background: \"#f0f0f0\",\n overflow: \"hidden\",\n }}\n >\n <div\n style={{\n width: `${Math.round(confidence * 100)}%`,\n height: \"100%\",\n borderRadius: \"3px\",\n background: confidenceColor(confidence),\n transition: \"width 0.3s ease\",\n }}\n />\n </div>\n );\n}\n\nfunction StepCard({ step, isLast }: { step: Step; isLast: boolean }) {\n const [expanded, setExpanded] = useState(false);\n const cfg = stepTypeConfig[step.stepType];\n const detail = step.detail ?? \"\";\n const isLong = detail.length > 100;\n const displayDetail = isLong && !expanded ? detail.slice(0, 100) + \"...\" : detail;\n const metaEntries = step.metadata ? Object.entries(step.metadata) : [];\n\n return (\n <div style={{ display: \"flex\", gap: \"12px\", position: \"relative\" }}>\n {/* Left: icon + connector line */}\n <div style={{ display: \"flex\", flexDirection: \"column\", alignItems: \"center\", flexShrink: 0 }}>\n <span\n style={{\n width: \"24px\",\n height: \"24px\",\n borderRadius: \"9999px\",\n background: cfg.bg,\n color: cfg.color,\n display: \"flex\",\n alignItems: \"center\",\n justifyContent: \"center\",\n fontSize: \"11px\",\n fontWeight: 700,\n zIndex: 1,\n fontFamily: \"var(--font-sans)\",\n }}\n >\n {cfg.letter}\n </span>\n {!isLast && (\n <div style={{ width: \"2px\", flex: 1, background: ACCENT, opacity: 0.3 }} />\n )}\n </div>\n\n {/* Right: content */}\n <div style={{ flex: 1, paddingBottom: isLast ? \"0\" : \"14px\" }}>\n <div style={{ display: \"flex\", alignItems: \"center\", gap: \"8px\", flexWrap: \"wrap\" }}>\n <span style={{ fontSize: \"12px\", fontWeight: 600, color: \"var(--foreground)\" }}>\n {step.label}\n </span>\n <span\n style={{\n fontSize: \"10px\",\n fontWeight: 600,\n padding: \"1px 6px\",\n borderRadius: \"9999px\",\n background: cfg.bg,\n color: cfg.color,\n }}\n >\n {step.stepType}\n </span>\n </div>\n\n <p\n style={{\n fontSize: \"13px\",\n color: \"var(--foreground)\",\n margin: \"4px 0 0 0\",\n lineHeight: \"1.45\",\n }}\n >\n <Markdown content={displayDetail} />\n {isLong && (\n <button\n onClick={() => setExpanded(!expanded)}\n style={{\n marginLeft: \"4px\",\n padding: \"0\",\n border: \"none\",\n background: \"none\",\n cursor: \"pointer\",\n fontSize: \"11px\",\n color: ACCENT,\n fontWeight: 600,\n textDecoration: \"underline\",\n }}\n >\n {expanded ? \"less\" : \"more\"}\n </button>\n )}\n </p>\n\n {(step.source || step.location) && (\n <div style={{ marginTop: \"4px\", fontSize: \"11px\", color: MUTED }}>\n {step.source && <span>{step.source}</span>}\n {step.source && step.location && <span> / </span>}\n {step.location && <span>{step.location}</span>}\n </div>\n )}\n\n {step.confidence != null && (\n <div style={{ marginTop: \"6px\", maxWidth: \"180px\" }}>\n <div style={{ display: \"flex\", justifyContent: \"space-between\", marginBottom: \"2px\" }}>\n <span style={{ fontSize: \"10px\", color: MUTED }}>confidence</span>\n <span style={{ fontSize: \"10px\", fontWeight: 600, color: confidenceColor(step.confidence) }}>\n {Math.round(step.confidence * 100)}%\n </span>\n </div>\n <ConfidenceBar confidence={step.confidence} />\n </div>\n )}\n\n {metaEntries.length > 0 && (\n <div style={{ marginTop: \"6px\", display: \"flex\", flexWrap: \"wrap\", gap: \"4px\" }}>\n {metaEntries.map(([k, v]) => (\n <span\n key={k}\n style={{\n fontSize: \"10px\",\n padding: \"1px 6px\",\n borderRadius: \"4px\",\n background: \"#f2f2f2\",\n color: MUTED,\n border: `1px solid ${BORDER}`,\n }}\n >\n <span style={{ fontWeight: 600 }}>{k}:</span> {String(v)}\n </span>\n ))}\n </div>\n )}\n </div>\n </div>\n );\n}\n\nfunction statusColor(status: string): { bg: string; color: string } {\n switch (status) {\n case \"qualified\":\n return { bg: \"#dcfce7\", color: \"#15803d\" };\n case \"partially-qualified\":\n return { bg: \"#fff7ed\", color: ACCENT };\n case \"not-qualified\":\n return { bg: \"#fef2f2\", color: \"#dc2626\" };\n default:\n return { bg: \"#f2f2f2\", color: MUTED };\n }\n}\n\nexport function ProvenanceChainResolver(p: SchemaPayload<\"provenance-chain\">) {\n const { BORDER, MUTED, ACCENT } = useTheme();\n const steps = p.steps ?? [];\n const stepsWithConf = steps.filter((s) => s.confidence != null && s.confidence > 0);\n const derivedConfidence =\n stepsWithConf.length > 0\n ? stepsWithConf.reduce((sum, s) => sum + s.confidence!, 0) / stepsWithConf.length\n : 0;\n\n const raw = p.conclusion ?? { status: \"not-qualified\", value: \"\", confidence: 0 };\n const overallConfidence = raw.confidence > 0 ? raw.confidence : derivedConfidence;\n const derivedStatus =\n raw.status !== \"not-qualified\" || raw.confidence > 0\n ? raw.status\n : overallConfidence >= 0.8\n ? \"qualified\"\n : overallConfidence >= 0.5\n ? \"partially-qualified\"\n : \"not-qualified\";\n const conclusion = { ...raw, confidence: overallConfidence, status: derivedStatus };\n const entity = p.entity ?? { name: \"\", type: \"\", value: \"\" };\n const sc = statusColor(conclusion.status);\n\n return (\n <ComponentActions filename={p.title ?? \"provenance-chain\"}>\n <div style={{ width: \"100%\", display: \"flex\", flexDirection: \"column\", gap: \"10px\" }}>\n {/* Title */}\n {p.title && (\n <p\n style={{\n fontFamily: \"var(--font-serif)\",\n fontSize: \"15px\",\n fontWeight: 600,\n color: \"var(--foreground)\",\n letterSpacing: \"-0.005em\",\n margin: 0,\n }}\n >\n {p.title}\n </p>\n )}\n\n {/* Entity header card */}\n <div\n style={{\n padding: \"10px 14px\",\n border: `1px solid ${BORDER}`,\n borderRadius: \"8px\",\n background: \"#fcfcfc\",\n display: \"flex\",\n alignItems: \"center\",\n gap: \"10px\",\n flexWrap: \"wrap\",\n }}\n >\n <span style={{ fontSize: \"13px\", fontWeight: 600, color: \"var(--foreground)\" }}>\n {entity.name}\n </span>\n <span\n style={{\n fontSize: \"10px\",\n fontWeight: 600,\n padding: \"1px 7px\",\n borderRadius: \"9999px\",\n background: \"#e5e5e5\",\n color: MUTED,\n border: `1px solid ${BORDER}`,\n }}\n >\n {entity.type}\n </span>\n <span\n style={{\n fontSize: \"12px\",\n fontFamily: \"monospace\",\n color: MUTED,\n marginLeft: \"auto\",\n }}\n >\n {entity.value}\n </span>\n </div>\n\n {/* Step pipeline */}\n <div style={{ padding: \"4px 0 0 0\" }}>\n {steps.map((step, i) => (\n <StepCard key={i} step={step} isLast={i === steps.length - 1} />\n ))}\n </div>\n\n {/* Conclusion card */}\n <div\n style={{\n padding: \"12px 14px\",\n border: `1px solid ${BORDER}`,\n borderRadius: \"8px\",\n background: \"#fcfcfc\",\n display: \"flex\",\n flexDirection: \"column\",\n gap: \"8px\",\n }}\n >\n <div style={{ display: \"flex\", alignItems: \"center\", gap: \"10px\", flexWrap: \"wrap\" }}>\n <span\n style={{\n fontSize: \"11px\",\n fontWeight: 700,\n padding: \"2px 8px\",\n borderRadius: \"9999px\",\n background: sc.bg,\n color: sc.color,\n }}\n >\n {conclusion.status}\n </span>\n <span style={{ fontSize: \"13px\", color: \"var(--foreground)\", flex: 1 }}>\n <Markdown content={conclusion.value} />\n </span>\n </div>\n <div>\n <div style={{ display: \"flex\", justifyContent: \"space-between\", marginBottom: \"3px\" }}>\n <span style={{ fontSize: \"11px\", color: MUTED }}>overall confidence</span>\n <span\n style={{\n fontSize: \"11px\",\n fontWeight: 600,\n color: confidenceColor(conclusion.confidence),\n }}\n >\n {Math.round(conclusion.confidence * 100)}%\n </span>\n </div>\n <ConfidenceBar confidence={conclusion.confidence} height={8} />\n </div>\n </div>\n </div>\n </ComponentActions>\n );\n}\n","\"use client\";\n\nimport React from \"react\";\nimport type { SchemaPayload } from \"../../schemas\";\nimport { ComponentActions } from \"../../shared/ComponentActions\";\nimport { BORDER, MUTED, ACCENT } from \"../../shared/theme\";\nimport { useTheme } from \"../../shared/ThemeContext\";\n\ntype Result = SchemaPayload<\"search-results\">[\"results\"][number];\n\nconst badgeColors: Record<string, { color: string; bg: string }> = {\n \"tech-memo\": { color: \"#1d4ed8\", bg: \"#eff6ff\" },\n contract: { color: \"#7c3aed\", bg: \"#f5f3ff\" },\n regulation: { color: ACCENT, bg: \"#fff7ed\" },\n workpaper: { color: \"#15803d\", bg: \"#dcfce7\" },\n questionnaire: { color: \"#0891b2\", bg: \"#ecfeff\" },\n other: { color: \"#6b7280\", bg: \"#f3f4f6\" },\n};\n\nfunction highlightSnippet(snippet: string, highlights?: string[]): React.ReactNode {\n if (!highlights || highlights.length === 0) return snippet;\n\n const escaped = highlights.map((h) => h.replace(/[.*+?^${}()|[\\]\\\\]/g, \"\\\\$&\"));\n const pattern = new RegExp(`(${escaped.join(\"|\")})`, \"gi\");\n const parts = snippet.split(pattern);\n\n return parts.map((part, i) => {\n const isMatch = highlights.some((h) => h.toLowerCase() === part.toLowerCase());\n if (isMatch) {\n return (\n <strong key={i} style={{ fontWeight: 700, color: \"var(--foreground)\" }}>\n {part}\n </strong>\n );\n }\n return part;\n });\n}\n\nfunction ResultCard({ result, isLast }: { result: Result; isLast: boolean }) {\n const badge = result.sourceType ? badgeColors[result.sourceType] ?? badgeColors.other : null;\n const pct = Math.round(result.relevance * 100);\n\n const titleEl = (\n <span style={{ fontSize: \"13px\", fontWeight: 700, color: \"var(--foreground)\" }}>\n {result.title}\n </span>\n );\n\n return (\n <div\n style={{\n padding: \"12px 14px\",\n borderBottom: isLast ? \"none\" : `1px solid ${BORDER}`,\n }}\n >\n {/* Top row: badge + title */}\n <div style={{ display: \"flex\", alignItems: \"center\", gap: \"8px\", flexWrap: \"wrap\" }}>\n {badge && result.sourceType && (\n <span\n style={{\n fontSize: \"10px\",\n fontWeight: 600,\n padding: \"1px 7px\",\n borderRadius: \"9999px\",\n background: badge.bg,\n color: badge.color,\n textTransform: \"uppercase\",\n letterSpacing: \"0.03em\",\n }}\n >\n {result.sourceType}\n </span>\n )}\n {result.url ? (\n <a\n href={result.url}\n target=\"_blank\"\n rel=\"noopener noreferrer\"\n style={{ textDecoration: \"none\", color: \"inherit\", borderBottom: `1px solid ${BORDER}` }}\n >\n {titleEl}\n </a>\n ) : (\n titleEl\n )}\n </div>\n\n {/* Relevance meter */}\n <div style={{ display: \"flex\", alignItems: \"center\", gap: \"8px\", marginTop: \"6px\" }}>\n <div\n style={{\n flex: 1,\n height: \"4px\",\n borderRadius: \"2px\",\n background: \"#f2f2f2\",\n overflow: \"hidden\",\n }}\n >\n <div\n style={{\n width: `${pct}%`,\n height: \"100%\",\n borderRadius: \"2px\",\n background: ACCENT,\n transition: \"width 0.3s\",\n }}\n />\n </div>\n <span style={{ fontSize: \"11px\", fontWeight: 600, color: MUTED, minWidth: \"32px\", textAlign: \"right\" }}>\n {pct}%\n </span>\n </div>\n\n {/* Snippet */}\n <p\n style={{\n fontSize: \"12.5px\",\n lineHeight: 1.55,\n color: \"var(--foreground)\",\n margin: \"6px 0 0 0\",\n opacity: 0.85,\n }}\n >\n {highlightSnippet(result.snippet, result.highlights)}\n </p>\n\n {/* Bottom row: source + location */}\n <div style={{ display: \"flex\", gap: \"10px\", marginTop: \"4px\", fontSize: \"11px\", color: MUTED }}>\n <span>{result.source}</span>\n {result.location && <span>{result.location}</span>}\n </div>\n </div>\n );\n}\n\nexport function SearchResultsResolver(p: SchemaPayload<\"search-results\">) {\n const { BORDER, MUTED, ACCENT } = useTheme();\n return (\n <ComponentActions filename={p.title ?? \"search-results\"}>\n <div style={{ width: \"100%\", display: \"flex\", flexDirection: \"column\", gap: \"10px\" }}>\n {/* Header */}\n <p\n style={{\n fontFamily: \"var(--font-serif)\",\n fontSize: \"15px\",\n fontWeight: 600,\n color: \"var(--foreground)\",\n letterSpacing: \"-0.005em\",\n margin: 0,\n }}\n >\n {p.title ?? \"Search Results\"}\n </p>\n\n {/* Query + count */}\n <p style={{ fontSize: \"12px\", color: MUTED, fontStyle: \"italic\", margin: 0 }}>\n “{p.query ?? \"\"}”\n <span style={{ fontStyle: \"normal\", marginLeft: \"8px\" }}>\n {p.totalResults ?? 0} result{(p.totalResults ?? 0) !== 1 ? \"s\" : \"\"}\n </span>\n </p>\n\n {/* Results list */}\n <div\n style={{\n borderRadius: \"0.75rem\",\n border: `1px solid ${BORDER}`,\n overflow: \"hidden\",\n boxShadow: \"0 1px 2px rgba(0,0,0,0.03), 0 4px 12px rgba(0,0,0,0.04)\",\n background: \"white\",\n }}\n >\n {(p.results ?? []).map((result, i) => (\n <ResultCard key={i} result={result} isLast={i === (p.results ?? []).length - 1} />\n ))}\n </div>\n </div>\n </ComponentActions>\n );\n}\n","\"use client\";\n\nimport React, { useState } from \"react\";\nimport type { SchemaPayload } from \"../../schemas\";\nimport { ComponentActions } from \"../../shared/ComponentActions\";\nimport { Markdown } from \"../../shared/Markdown\";\nimport { BORDER, MUTED, PAPER, ACCENT } from \"../../shared/theme\";\nimport { useTheme } from \"../../shared/ThemeContext\";\n\ntype Part = SchemaPayload<\"legal-test-result\">[\"parts\"][number];\ntype SubReq = NonNullable<Part[\"subRequirements\"]>[number];\ntype Example = NonNullable<Part[\"examples\"]>[number];\n\nconst resultConfig: Record<string, { color: string; bg: string; label: string }> = {\n pass: { color: \"#15803d\", bg: \"#dcfce7\", label: \"Pass\" },\n fail: { color: \"#dc2626\", bg: \"#fef2f2\", label: \"Fail\" },\n inconclusive: { color: ACCENT, bg: \"#fff7ed\", label: \"Inconclusive\" },\n partial: { color: \"#1d4ed8\", bg: \"#eff6ff\", label: \"Partial\" },\n na: { color: MUTED, bg: \"#f2f2f2\", label: \"N/A\" },\n};\n\nfunction ResultBadge({ result, size = \"normal\" }: { result: string; size?: \"normal\" | \"mini\" }) {\n const cfg = resultConfig[result] ?? resultConfig.na;\n const isNormal = size === \"normal\";\n return (\n <span\n style={{\n fontSize: isNormal ? \"11px\" : \"10px\",\n fontWeight: 600,\n padding: isNormal ? \"2px 8px\" : \"1px 6px\",\n borderRadius: \"9999px\",\n background: cfg.bg,\n color: cfg.color,\n whiteSpace: \"nowrap\",\n }}\n >\n {cfg.label}\n </span>\n );\n}\n\nfunction SubRequirementRow({ sub }: { sub: SubReq }) {\n return (\n <div style={{ paddingLeft: \"16px\", marginBottom: \"6px\" }}>\n <div style={{ display: \"flex\", alignItems: \"center\", gap: \"8px\", flexWrap: \"wrap\" }}>\n <ResultBadge result={sub.result} size=\"mini\" />\n <span style={{ fontSize: \"13px\", fontWeight: 500, color: \"var(--foreground)\" }}>{sub.label}</span>\n </div>\n {sub.detail && (\n <p style={{ fontSize: \"12px\", color: \"var(--foreground)\", margin: \"2px 0 0 0\", paddingLeft: \"0\" }}>\n <Markdown content={sub.detail} />\n </p>\n )}\n {sub.threshold && (\n <p style={{ fontSize: \"11px\", fontStyle: \"italic\", color: MUTED, margin: \"2px 0 0 0\" }}>\n Threshold: {sub.threshold}\n </p>\n )}\n {sub.evidence && (\n <div\n style={{\n marginTop: \"4px\",\n padding: \"6px 10px\",\n borderLeft: `3px solid ${BORDER}`,\n background: PAPER,\n fontSize: \"12px\",\n color: \"var(--foreground)\",\n borderRadius: \"0 4px 4px 0\",\n }}\n >\n <Markdown content={sub.evidence} />\n </div>\n )}\n </div>\n );\n}\n\nfunction ExampleRow({ example }: { example: Example }) {\n const borderColor = example.qualifies ? \"#15803d\" : \"#dc2626\";\n const icon = example.qualifies ? \"✓\" : \"✗\";\n const iconColor = example.qualifies ? \"#15803d\" : \"#dc2626\";\n\n return (\n <div\n style={{\n borderLeft: `3px solid ${borderColor}`,\n padding: \"6px 10px\",\n marginBottom: \"4px\",\n borderRadius: \"0 4px 4px 0\",\n }}\n >\n <div style={{ display: \"flex\", alignItems: \"flex-start\", gap: \"6px\" }}>\n <span style={{ fontSize: \"13px\", color: iconColor, fontWeight: 700, flexShrink: 0 }}>{icon}</span>\n <div>\n <span style={{ fontSize: \"13px\", fontWeight: 500, color: \"var(--foreground)\" }}>{example.scenario}</span>\n <p style={{ fontSize: \"12px\", color: MUTED, margin: \"2px 0 0 0\" }}><Markdown content={example.explanation} /></p>\n </div>\n </div>\n </div>\n );\n}\n\nfunction PartSection({ part, defaultOpen }: { part: Part; defaultOpen: boolean }) {\n const [open, setOpen] = useState(defaultOpen);\n\n return (\n <div>\n <button\n onClick={() => setOpen(!open)}\n style={{\n width: \"100%\",\n display: \"flex\",\n alignItems: \"center\",\n gap: \"8px\",\n padding: \"8px 12px\",\n background: \"white\",\n borderTop: \"none\",\n borderLeft: \"none\",\n borderRight: \"none\",\n borderBottom: `1px solid ${BORDER}`,\n cursor: \"pointer\",\n textAlign: \"left\",\n }}\n >\n <span\n style={{\n fontSize: \"10px\",\n transition: \"transform 0.15s\",\n transform: open ? \"rotate(90deg)\" : \"rotate(0deg)\",\n flexShrink: 0,\n }}\n >\n ▶\n </span>\n <span style={{ fontSize: \"13px\", fontWeight: 600, color: \"var(--foreground)\", flex: 1 }}>\n {part.partLabel}\n </span>\n <ResultBadge result={part.result} />\n </button>\n {open && (\n <div style={{ padding: \"10px 12px\", borderBottom: `1px solid ${BORDER}` }}>\n <p style={{ fontSize: \"13px\", color: \"var(--foreground)\", margin: \"0 0 8px 0\", lineHeight: \"1.5\" }}>\n <Markdown content={part.narrative} />\n </p>\n\n {part.subRequirements && part.subRequirements.length > 0 && (\n <div style={{ marginBottom: \"8px\" }}>\n {part.subRequirements.map((sub, i) => (\n <SubRequirementRow key={i} sub={sub} />\n ))}\n </div>\n )}\n\n {part.examples && part.examples.length > 0 && (\n <div>\n <p\n style={{\n fontSize: \"11px\",\n fontWeight: 600,\n color: MUTED,\n textTransform: \"uppercase\",\n letterSpacing: \"0.04em\",\n margin: \"0 0 6px 0\",\n }}\n >\n Examples\n </p>\n {part.examples.map((ex, i) => (\n <ExampleRow key={i} example={ex} />\n ))}\n </div>\n )}\n </div>\n )}\n </div>\n );\n}\n\nexport function LegalTestResultResolver(p: SchemaPayload<\"legal-test-result\">) {\n const { BORDER, MUTED, ACCENT, PAPER } = useTheme();\n return (\n <ComponentActions filename={p.title ?? \"legal-test-result\"}>\n <div style={{ width: \"100%\", display: \"flex\", flexDirection: \"column\", gap: \"10px\" }}>\n {/* Header */}\n <div style={{ display: \"flex\", alignItems: \"center\", gap: \"10px\", flexWrap: \"wrap\" }}>\n {p.title && (\n <span\n style={{\n fontFamily: \"var(--font-serif)\",\n fontSize: \"15px\",\n fontWeight: 600,\n color: \"var(--foreground)\",\n letterSpacing: \"-0.005em\",\n }}\n >\n {p.title}\n </span>\n )}\n {p.citation && (\n <span\n style={{\n fontFamily: \"monospace\",\n fontSize: \"11px\",\n padding: \"2px 8px\",\n borderRadius: \"4px\",\n background: \"#f2f2f2\",\n color: MUTED,\n }}\n >\n {p.citation}\n </span>\n )}\n <ResultBadge result={p.overallResult} />\n </div>\n\n {/* Overall narrative */}\n {p.overallNarrative && (\n <p style={{ fontSize: \"13px\", color: \"var(--foreground)\", margin: 0, lineHeight: \"1.5\" }}>\n <Markdown content={p.overallNarrative} />\n </p>\n )}\n\n {/* Parts accordion */}\n <div\n style={{\n borderRadius: \"0.75rem\",\n border: `1px solid ${BORDER}`,\n overflow: \"hidden\",\n boxShadow: \"0 1px 2px rgba(0,0,0,0.03), 0 4px 12px rgba(0,0,0,0.04)\",\n }}\n >\n {(p.parts ?? []).map((part, i) => (\n <PartSection key={i} part={part} defaultOpen={i === 0} />\n ))}\n </div>\n </div>\n </ComponentActions>\n );\n}\n","\"use client\";\n\nimport React, { useState } from \"react\";\nimport type { SchemaPayload } from \"../../schemas\";\nimport { ComponentActions } from \"../../shared/ComponentActions\";\nimport { Markdown } from \"../../shared/Markdown\";\nimport { ACCENT } from \"../../shared/theme\";\nimport { useTheme } from \"../../shared/ThemeContext\";\n\ntype Phase = SchemaPayload<\"engagement-pipeline\">[\"phases\"][number];\n\nconst statusColor: Record<string, string> = {\n completed: \"#15803d\",\n \"in-progress\": ACCENT,\n pending: \"#d6d3d1\",\n blocked: \"#dc2626\",\n};\n\nfunction lineColor(left: Phase, right: Phase): string {\n if (left.status === \"completed\" && right.status === \"completed\") return \"#15803d\";\n return \"#d6d3d1\";\n}\n\nexport function EngagementPipelineResolver(p: SchemaPayload<\"engagement-pipeline\">) {\n const { BORDER, MUTED, ACCENT } = useTheme();\n const phases = p.phases ?? [];\n const defaultActive = phases.findIndex(\n (ph) => ph.status === \"in-progress\" || ph.status === \"blocked\"\n );\n const [activeIdx, setActiveIdx] = useState(defaultActive >= 0 ? defaultActive : 0);\n const activePhase = phases[activeIdx];\n\n return (\n <ComponentActions filename={p.title ?? \"engagement-pipeline\"}>\n <div style={{ width: \"100%\", display: \"flex\", flexDirection: \"column\", gap: \"12px\" }}>\n {/* Header */}\n <div style={{ display: \"flex\", flexDirection: \"column\", gap: \"4px\" }}>\n {p.title && (\n <p\n style={{\n fontFamily: \"var(--font-serif)\",\n fontSize: \"15px\",\n fontWeight: 600,\n color: \"var(--foreground)\",\n letterSpacing: \"-0.005em\",\n margin: 0,\n }}\n >\n {p.title}\n </p>\n )}\n <div style={{ display: \"flex\", gap: \"6px\", alignItems: \"center\" }}>\n <span\n style={{\n fontSize: \"11px\",\n fontWeight: 600,\n padding: \"2px 8px\",\n borderRadius: \"9999px\",\n background: \"#f2f2f2\",\n color: MUTED,\n }}\n >\n {p.clientName}\n </span>\n <span\n style={{\n fontSize: \"11px\",\n fontWeight: 600,\n padding: \"2px 8px\",\n borderRadius: \"9999px\",\n background: \"#f2f2f2\",\n color: MUTED,\n }}\n >\n TY {p.taxYear ?? \"\"}\n </span>\n </div>\n </div>\n\n {/* Horizontal Stepper */}\n <div style={{ position: \"relative\" }}>\n <div\n style={{\n position: \"absolute\",\n right: 0,\n top: 0,\n bottom: 0,\n width: \"24px\",\n background: \"linear-gradient(to right, transparent, white)\",\n pointerEvents: \"none\",\n zIndex: 1,\n borderRadius: \"0 0.75rem 0 0\",\n }}\n />\n <div\n style={{\n display: \"flex\",\n alignItems: \"flex-start\",\n justifyContent: \"center\",\n padding: \"12px 8px 8px\",\n overflow: \"auto\",\n }}\n >\n {(p.phases ?? []).map((phase, i) => {\n const color = statusColor[phase.status] ?? \"#d6d3d1\";\n const isCurrent = i === activeIdx;\n const size = isCurrent ? 28 : 20;\n\n return (\n <React.Fragment key={i}>\n {/* Connecting line before this node (except first) */}\n {i > 0 && (\n <div\n style={{\n flex: 1,\n height: \"3px\",\n background: lineColor(phases[i - 1], phase),\n alignSelf: \"center\",\n marginTop: `-${(size / 2) + 8}px`,\n minWidth: \"16px\",\n borderRadius: \"2px\",\n }}\n />\n )}\n\n {/* Phase node */}\n <div\n style={{\n display: \"flex\",\n flexDirection: \"column\",\n alignItems: \"center\",\n gap: \"4px\",\n cursor: \"pointer\",\n flexShrink: 0,\n }}\n onClick={() => setActiveIdx(i)}\n >\n <div\n style={{\n width: `${size}px`,\n height: `${size}px`,\n borderRadius: \"50%\",\n background: color,\n display: \"flex\",\n alignItems: \"center\",\n justifyContent: \"center\",\n transition: \"all 0.2s\",\n boxShadow: isCurrent ? `0 0 0 3px ${color}33` : \"none\",\n }}\n >\n {phase.status === \"completed\" && (\n <span style={{ color: \"white\", fontSize: size * 0.5, fontWeight: 700, lineHeight: 1 }}>\n ✓\n </span>\n )}\n {phase.status === \"blocked\" && (\n <span style={{ color: \"white\", fontSize: size * 0.45, fontWeight: 700, lineHeight: 1 }}>\n !\n </span>\n )}\n </div>\n <span\n style={{\n fontSize: \"11px\",\n color: isCurrent ? \"var(--foreground)\" : MUTED,\n fontWeight: isCurrent ? 600 : 400,\n textAlign: \"center\",\n maxWidth: \"70px\",\n lineHeight: \"1.2\",\n }}\n >\n {phase.label}\n </span>\n </div>\n </React.Fragment>\n );\n })}\n </div>\n </div>\n\n {/* Detail Panel for Active Phase */}\n {activePhase && (\n <div\n style={{\n borderRadius: \"0.75rem\",\n border: `1px solid ${BORDER}`,\n padding: \"14px 16px\",\n display: \"flex\",\n flexDirection: \"column\",\n gap: \"10px\",\n boxShadow: \"0 1px 2px rgba(0,0,0,0.03), 0 4px 12px rgba(0,0,0,0.04)\",\n }}\n >\n {/* Phase label + status */}\n <div style={{ display: \"flex\", alignItems: \"center\", gap: \"8px\" }}>\n <span style={{ fontSize: \"13px\", fontWeight: 700, color: \"var(--foreground)\" }}>\n {activePhase.label}\n </span>\n <span\n style={{\n fontSize: \"10px\",\n fontWeight: 600,\n padding: \"2px 8px\",\n borderRadius: \"9999px\",\n background:\n activePhase.status === \"completed\"\n ? \"#dcfce7\"\n : activePhase.status === \"blocked\"\n ? \"#fef2f2\"\n : activePhase.status === \"in-progress\"\n ? \"#fff7ed\"\n : \"#f2f2f2\",\n color: statusColor[activePhase.status] ?? MUTED,\n }}\n >\n {activePhase.status}\n </span>\n {activePhase.completedDate && (\n <span style={{ fontSize: \"11px\", color: MUTED }}>\n Completed {activePhase.completedDate}\n </span>\n )}\n </div>\n\n {/* Progress bar */}\n {activePhase.progress != null && (\n <div style={{ display: \"flex\", alignItems: \"center\", gap: \"8px\" }}>\n <div\n style={{\n flex: 1,\n height: \"8px\",\n borderRadius: \"4px\",\n background: \"#f2f2f2\",\n overflow: \"hidden\",\n }}\n >\n <div\n style={{\n width: `${activePhase.progress}%`,\n height: \"100%\",\n borderRadius: \"4px\",\n background: ACCENT,\n transition: \"width 0.3s\",\n }}\n />\n </div>\n <span style={{ fontSize: \"11px\", fontWeight: 600, color: MUTED }}>\n {activePhase.progress}%\n </span>\n </div>\n )}\n\n {/* Milestones */}\n {activePhase.milestones && activePhase.milestones.length > 0 && (\n <div style={{ display: \"flex\", flexDirection: \"column\", gap: \"4px\" }}>\n {activePhase.milestones.map((ms, mi) => (\n <div key={mi} style={{ display: \"flex\", alignItems: \"flex-start\", gap: \"8px\" }}>\n <span\n style={{\n fontSize: \"13px\",\n width: \"18px\",\n height: \"18px\",\n display: \"flex\",\n alignItems: \"center\",\n justifyContent: \"center\",\n borderRadius: \"50%\",\n background: ms.completed ? \"#dcfce7\" : \"#f2f2f2\",\n color: ms.completed ? \"#15803d\" : \"#d6d3d1\",\n fontWeight: 700,\n flexShrink: 0,\n }}\n >\n {ms.completed ? \"✓\" : \"○\"}\n </span>\n <div style={{ display: \"flex\", flexDirection: \"column\" }}>\n <span\n style={{\n fontSize: \"12px\",\n color: ms.completed ? MUTED : \"var(--foreground)\",\n textDecoration: ms.completed ? \"line-through\" : \"none\",\n }}\n >\n {ms.label}\n </span>\n {ms.note && (\n <span style={{ fontSize: \"11px\", color: MUTED, fontStyle: \"italic\" }}>\n <Markdown inline content={ms.note} />\n </span>\n )}\n </div>\n </div>\n ))}\n </div>\n )}\n\n {/* Blockers */}\n {activePhase.blockers && activePhase.blockers.length > 0 && (\n <div style={{ display: \"flex\", flexWrap: \"wrap\", gap: \"6px\" }}>\n {activePhase.blockers.map((b, bi) => (\n <span\n key={bi}\n style={{\n fontSize: \"11px\",\n fontWeight: 600,\n padding: \"3px 10px\",\n borderRadius: \"9999px\",\n background: \"#fef2f2\",\n color: \"#dc2626\",\n }}\n >\n <Markdown inline content={b} />\n </span>\n ))}\n </div>\n )}\n </div>\n )}\n\n {/* Summary Footer */}\n {p.summary && (\n <div\n style={{\n display: \"flex\",\n gap: \"8px\",\n flexWrap: \"wrap\",\n }}\n >\n {p.summary.totalCredit && (\n <div\n style={{\n flex: 1,\n minWidth: \"120px\",\n padding: \"10px 14px\",\n borderRadius: \"0.5rem\",\n border: `1px solid ${BORDER}`,\n background: \"white\",\n }}\n >\n <div style={{ fontSize: \"10px\", fontWeight: 600, color: MUTED, textTransform: \"uppercase\", letterSpacing: \"0.04em\" }}>\n Total Credit\n </div>\n <div style={{ fontSize: \"15px\", fontWeight: 700, color: \"var(--foreground)\", marginTop: \"2px\" }}>\n {p.summary.totalCredit}\n </div>\n </div>\n )}\n {p.summary.daysRemaining != null && (\n <div\n style={{\n flex: 1,\n minWidth: \"120px\",\n padding: \"10px 14px\",\n borderRadius: \"0.5rem\",\n border: `1px solid ${BORDER}`,\n background: \"white\",\n }}\n >\n <div style={{ fontSize: \"10px\", fontWeight: 600, color: MUTED, textTransform: \"uppercase\", letterSpacing: \"0.04em\" }}>\n Days Remaining\n </div>\n <div style={{ fontSize: \"15px\", fontWeight: 700, color: \"var(--foreground)\", marginTop: \"2px\" }}>\n {p.summary.daysRemaining}\n </div>\n </div>\n )}\n {p.summary.lastActivity && (\n <div\n style={{\n flex: 1,\n minWidth: \"120px\",\n padding: \"10px 14px\",\n borderRadius: \"0.5rem\",\n border: `1px solid ${BORDER}`,\n background: \"white\",\n }}\n >\n <div style={{ fontSize: \"10px\", fontWeight: 600, color: MUTED, textTransform: \"uppercase\", letterSpacing: \"0.04em\" }}>\n Last Activity\n </div>\n <div style={{ fontSize: \"15px\", fontWeight: 700, color: \"var(--foreground)\", marginTop: \"2px\" }}>\n {p.summary.lastActivity}\n </div>\n </div>\n )}\n </div>\n )}\n </div>\n </ComponentActions>\n );\n}\n","\"use client\";\n\nimport React, { useState } from \"react\";\nimport type { SchemaPayload } from \"../../schemas\";\nimport { ComponentActions } from \"../../shared/ComponentActions\";\nimport { ACCENT } from \"../../shared/theme\";\nimport { useTheme } from \"../../shared/ThemeContext\";\n\nconst BADGE_COLORS: Record<string, { bg: string; color: string }> = {\n green: { bg: \"#dcfce7\", color: \"#15803d\" },\n red: { bg: \"#fef2f2\", color: \"#dc2626\" },\n amber: { bg: \"#fff7ed\", color: \"#f59e0b\" },\n blue: { bg: \"#eff6ff\", color: \"#0364ff\" },\n purple: { bg: \"#f5f3ff\", color: \"#7c3aed\" },\n gray: { bg: \"#f2f2f2\", color: \"#777777\" },\n};\n\nfunction Avatar({ name, avatar, hovered }: { name: string; avatar?: string; hovered?: boolean }) {\n const ringStyle = hovered\n ? \"0 0 0 2px rgba(255,80,0,0.15)\"\n : \"none\";\n if (avatar) {\n return (\n <img\n src={avatar}\n alt={name}\n style={{\n width: \"36px\",\n height: \"36px\",\n borderRadius: \"50%\",\n objectFit: \"cover\",\n flexShrink: 0,\n boxShadow: ringStyle,\n transition: \"box-shadow 0.2s\",\n }}\n />\n );\n }\n return (\n <div\n style={{\n width: \"36px\",\n height: \"36px\",\n borderRadius: \"50%\",\n background: ACCENT,\n color: \"white\",\n display: \"flex\",\n alignItems: \"center\",\n justifyContent: \"center\",\n fontSize: \"14px\",\n fontWeight: 600,\n flexShrink: 0,\n boxShadow: ringStyle,\n transition: \"box-shadow 0.2s\",\n }}\n >\n {name.charAt(0).toUpperCase()}\n </div>\n );\n}\n\nexport function EntityCardGridResolver(p: SchemaPayload<\"entity-card-grid\">) {\n const { BORDER, MUTED, ACCENT } = useTheme();\n const [hoveredId, setHoveredId] = useState<string | null>(null);\n\n return (\n <ComponentActions filename={p.title ?? \"entity-card-grid\"}>\n <div style={{ width: \"100%\", display: \"flex\", flexDirection: \"column\", gap: \"10px\" }}>\n {p.title && (\n <p\n style={{\n fontFamily: \"var(--font-serif)\",\n fontSize: \"15px\",\n fontWeight: 400,\n color: \"var(--foreground)\",\n letterSpacing: \"-0.01em\",\n margin: 0,\n }}\n >\n {p.title}\n </p>\n )}\n <div\n style={{\n display: \"grid\",\n gridTemplateColumns: `repeat(auto-fit, minmax(220px, 1fr))`,\n gap: \"12px\",\n width: \"100%\",\n }}\n >\n {(p.items ?? []).map((item) => {\n const isHovered = hoveredId === item.id;\n return (\n <div\n key={item.id}\n onMouseEnter={() => setHoveredId(item.id)}\n onMouseLeave={() => setHoveredId(null)}\n style={{\n borderRadius: \"0.75rem\",\n border: `1px solid ${isHovered ? \"#c8c8c8\" : BORDER}`,\n padding: \"14px 16px\",\n boxShadow: isHovered\n ? \"0 2px 8px rgba(0,0,0,0.06), 0 8px 24px rgba(0,0,0,0.08)\"\n : \"0 1px 2px rgba(0,0,0,0.03), 0 4px 12px rgba(0,0,0,0.04)\",\n display: \"flex\",\n flexDirection: \"column\",\n gap: \"10px\",\n transition: \"box-shadow 0.2s, border-color 0.2s\",\n }}\n >\n {/* Header: avatar + name/subtitle */}\n <div style={{ display: \"flex\", alignItems: \"center\", gap: \"10px\" }}>\n <Avatar name={item.name} avatar={item.avatar} hovered={isHovered} />\n <div style={{ minWidth: 0, flex: 1 }}>\n <p\n style={{\n fontFamily: \"var(--font-serif)\",\n fontSize: \"15px\",\n fontWeight: 400,\n color: \"var(--foreground)\",\n letterSpacing: \"-0.01em\",\n margin: 0,\n overflow: \"hidden\",\n textOverflow: \"ellipsis\",\n whiteSpace: \"nowrap\",\n }}\n >\n {item.name}\n </p>\n {item.subtitle && (\n <p\n style={{\n fontSize: \"12px\",\n color: MUTED,\n margin: 0,\n marginTop: \"2px\",\n overflow: \"hidden\",\n textOverflow: \"ellipsis\",\n whiteSpace: \"nowrap\",\n }}\n >\n {item.subtitle}\n </p>\n )}\n </div>\n </div>\n\n {/* Badges */}\n {item.badges && item.badges.length > 0 && (\n <div style={{ display: \"flex\", flexWrap: \"wrap\", gap: \"4px\" }}>\n {item.badges.map((badge, i) => {\n const c = BADGE_COLORS[badge.color ?? \"gray\"] ?? BADGE_COLORS.gray;\n return (\n <span\n key={i}\n style={{\n fontSize: \"10px\",\n fontWeight: 600,\n padding: \"2px 8px\",\n borderRadius: \"9999px\",\n background: c.bg,\n color: c.color,\n cursor: \"default\",\n transition: \"filter 0.15s\",\n }}\n onMouseEnter={(e) => {\n (e.currentTarget as HTMLSpanElement).style.filter = \"brightness(0.95)\";\n }}\n onMouseLeave={(e) => {\n (e.currentTarget as HTMLSpanElement).style.filter = \"none\";\n }}\n >\n {badge.label}\n </span>\n );\n })}\n </div>\n )}\n\n {/* Fields */}\n {item.fields && item.fields.length > 0 && (\n <div\n style={{\n display: \"grid\",\n gridTemplateColumns:\n item.fields.length > 2\n ? \"repeat(auto-fit, minmax(90px, 1fr))\"\n : \"1fr\",\n gap: \"6px 12px\",\n borderTop: `1px solid ${BORDER}`,\n paddingTop: \"8px\",\n }}\n >\n {item.fields.map((field, i) => (\n <div key={i} style={{ minWidth: 0 }}>\n <p\n style={{\n fontSize: \"10px\",\n color: MUTED,\n margin: 0,\n textTransform: \"uppercase\",\n letterSpacing: \"0.02em\",\n fontWeight: 500,\n }}\n >\n {field.label}\n </p>\n <p\n style={{\n fontSize: \"12px\",\n color: \"var(--foreground)\",\n margin: 0,\n marginTop: \"1px\",\n overflow: \"hidden\",\n textOverflow: \"ellipsis\",\n whiteSpace: \"nowrap\",\n }}\n >\n {field.value}\n </p>\n </div>\n ))}\n </div>\n )}\n </div>\n );\n })}\n </div>\n </div>\n </ComponentActions>\n );\n}\n","\"use client\";\n\nimport React, { useState } from \"react\";\nimport type { SchemaPayload } from \"../../schemas\";\nimport { ComponentActions } from \"../../shared/ComponentActions\";\nimport { Markdown } from \"../../shared/Markdown\";\nimport { BORDER, MUTED, ACCENT } from \"../../shared/theme\";\nimport { useTheme } from \"../../shared/ThemeContext\";\n\ntype Step = NonNullable<SchemaPayload<\"job-tracker\">[\"steps\"]>[number];\n\nconst statusColors: Record<string, string> = {\n queued: MUTED,\n running: ACCENT,\n completed: \"#15803d\",\n failed: \"#dc2626\",\n cancelled: MUTED,\n};\n\nconst stepStatusColors: Record<string, string> = {\n pending: MUTED,\n running: ACCENT,\n completed: \"#15803d\",\n failed: \"#dc2626\",\n skipped: \"#d4d4d4\",\n};\n\nconst statusBadgeConfig: Record<string, { bg: string; color: string }> = {\n queued: { bg: \"#f2f2f2\", color: MUTED },\n running: { bg: \"#fff7ed\", color: ACCENT },\n completed: { bg: \"#dcfce7\", color: \"#15803d\" },\n failed: { bg: \"#fef2f2\", color: \"#dc2626\" },\n cancelled: { bg: \"#f2f2f2\", color: MUTED },\n};\n\nfunction formatTime(ts: string): string {\n try {\n return new Intl.DateTimeFormat(\"en-US\", {\n dateStyle: \"medium\",\n timeStyle: \"short\",\n }).format(new Date(ts));\n } catch {\n return ts;\n }\n}\n\nfunction StepRow({ step }: { step: Step }) {\n const color = stepStatusColors[step.status] ?? MUTED;\n return (\n <div\n style={{\n display: \"flex\",\n alignItems: \"center\",\n gap: \"8px\",\n padding: \"6px 0\",\n borderBottom: `1px solid ${BORDER}`,\n fontSize: \"13px\",\n }}\n >\n <span\n style={{\n width: \"8px\",\n height: \"8px\",\n borderRadius: \"50%\",\n background: color,\n flexShrink: 0,\n display: \"inline-block\",\n animation: step.status === \"running\" ? \"pulse 2s ease-in-out infinite\" : \"none\",\n }}\n />\n <span\n style={{\n flex: 1,\n color: step.status === \"skipped\" ? \"#d4d4d4\" : \"var(--foreground)\",\n textDecoration: step.status === \"skipped\" ? \"line-through\" : \"none\",\n }}\n >\n {step.label}\n </span>\n {step.duration && (\n <span style={{ fontSize: \"11px\", color: MUTED, flexShrink: 0 }}>\n {step.duration}\n </span>\n )}\n <span\n style={{\n fontSize: \"10px\",\n fontWeight: 600,\n padding: \"1px 6px\",\n borderRadius: \"9999px\",\n background:\n statusBadgeConfig[step.status]?.bg ?? \"#f2f2f2\",\n color,\n flexShrink: 0,\n }}\n >\n {step.status}\n </span>\n </div>\n );\n}\n\nexport function JobTrackerResolver(p: SchemaPayload<\"job-tracker\">) {\n const { BORDER, MUTED, ACCENT, PAPER } = useTheme();\n const [stepsOpen, setStepsOpen] = useState(true);\n const barColor = statusColors[p.status] ?? MUTED;\n const badge = statusBadgeConfig[p.status] ?? statusBadgeConfig.queued;\n const progress = p.progress ?? (p.status === \"completed\" ? 100 : 0);\n\n return (\n <ComponentActions filename={p.title ?? \"job-tracker\"}>\n <div\n style={{\n width: \"100%\",\n display: \"flex\",\n flexDirection: \"column\",\n gap: \"12px\",\n borderRadius: \"0.75rem\",\n border: `1px solid ${BORDER}`,\n padding: \"14px 16px\",\n boxShadow:\n \"0 1px 2px rgba(0,0,0,0.03), 0 4px 12px rgba(0,0,0,0.04)\",\n }}\n >\n {/* Header */}\n <div\n style={{\n display: \"flex\",\n alignItems: \"center\",\n gap: \"10px\",\n flexWrap: \"wrap\",\n }}\n >\n {p.title && (\n <p\n style={{\n fontFamily: \"var(--font-serif)\",\n fontSize: \"15px\",\n fontWeight: 400,\n color: \"var(--foreground)\",\n letterSpacing: \"-0.01em\",\n margin: 0,\n }}\n >\n {p.title}\n </p>\n )}\n <span\n style={{\n fontSize: \"10px\",\n fontWeight: 600,\n padding: \"2px 8px\",\n borderRadius: \"9999px\",\n background: badge.bg,\n color: badge.color,\n textTransform: \"uppercase\",\n }}\n >\n {p.status}\n </span>\n <span\n style={{\n fontSize: \"11px\",\n fontFamily: \"monospace\",\n color: MUTED,\n marginLeft: \"auto\",\n }}\n >\n {p.jobId}\n </span>\n </div>\n\n {/* Progress bar */}\n <div>\n <div\n style={{\n display: \"flex\",\n justifyContent: \"space-between\",\n fontSize: \"11px\",\n color: MUTED,\n marginBottom: \"4px\",\n }}\n >\n <span>Progress</span>\n <span>{progress}%</span>\n </div>\n <div\n style={{\n width: \"100%\",\n height: \"8px\",\n borderRadius: \"4px\",\n background: \"#f2f2f2\",\n overflow: \"hidden\",\n }}\n >\n <div\n style={{\n width: `${progress}%`,\n height: \"100%\",\n borderRadius: \"4px\",\n background:\n p.status === \"running\"\n ? `linear-gradient(90deg, ${ACCENT} 0%, #ff7033 50%, ${ACCENT} 100%)`\n : barColor,\n backgroundSize: p.status === \"running\" ? \"200% 100%\" : undefined,\n animation: p.status === \"running\" ? \"shimmer 2s ease infinite\" : \"none\",\n transition: \"width 0.3s\",\n }}\n />\n </div>\n </div>\n\n {/* Time info */}\n {(p.startedAt || p.completedAt) && (\n <div\n style={{\n display: \"flex\",\n gap: \"16px\",\n fontSize: \"12px\",\n color: MUTED,\n }}\n >\n {p.startedAt && (\n <span>Started: {formatTime(p.startedAt)}</span>\n )}\n {p.completedAt && (\n <span>Completed: {formatTime(p.completedAt)}</span>\n )}\n </div>\n )}\n\n {/* Steps */}\n {p.steps && (p.steps ?? []).length > 0 && (\n <div>\n <button\n onClick={() => setStepsOpen(!stepsOpen)}\n style={{\n width: \"100%\",\n display: \"flex\",\n alignItems: \"center\",\n gap: \"6px\",\n padding: \"8px 0\",\n background: \"white\",\n borderTop: \"none\",\n borderLeft: \"none\",\n borderRight: \"none\",\n borderBottom: `1px solid ${BORDER}`,\n cursor: \"pointer\",\n fontSize: \"12px\",\n fontWeight: 600,\n color: \"var(--foreground)\",\n textTransform: \"uppercase\",\n letterSpacing: \"0.04em\",\n }}\n >\n <span\n style={{\n transition: \"transform 0.15s\",\n transform: stepsOpen\n ? \"rotate(90deg)\"\n : \"rotate(0deg)\",\n }}\n >\n ▶\n </span>\n Steps ({(p.steps ?? []).length})\n </button>\n {stepsOpen && (\n <div style={{ padding: \"4px 0 0 0\" }}>\n {(p.steps ?? []).map((step, i) => (\n <StepRow key={i} step={step} />\n ))}\n </div>\n )}\n </div>\n )}\n\n {/* Result section */}\n {p.result && (\n <div\n style={{\n borderRadius: \"0.5rem\",\n background: \"#f0fdf4\",\n padding: \"10px 14px\",\n fontSize: \"13px\",\n color: \"#15803d\",\n borderLeft: \"3px solid #15803d\",\n }}\n >\n <div\n style={{\n fontWeight: 600,\n fontSize: \"11px\",\n textTransform: \"uppercase\",\n letterSpacing: \"0.04em\",\n marginBottom: \"4px\",\n }}\n >\n Result\n </div>\n <div style={{ margin: 0 }}><Markdown content={p.result.summary} /></div>\n </div>\n )}\n\n {/* Error section */}\n {p.error && (\n <div\n style={{\n borderRadius: \"0.5rem\",\n background: \"#fef2f2\",\n padding: \"10px 14px\",\n fontSize: \"13px\",\n color: \"#dc2626\",\n borderLeft: \"3px solid #dc2626\",\n }}\n >\n <div\n style={{\n fontWeight: 600,\n fontSize: \"11px\",\n textTransform: \"uppercase\",\n letterSpacing: \"0.04em\",\n marginBottom: \"4px\",\n }}\n >\n Error{p.error.code ? ` [${p.error.code}]` : \"\"}\n </div>\n <div style={{ margin: 0 }}><Markdown content={p.error.message} /></div>\n </div>\n )}\n </div>\n <style>{`\n @keyframes shimmer {\n 0% { background-position: 200% 0; }\n 100% { background-position: -200% 0; }\n }\n @keyframes pulse {\n 0%, 100% { opacity: 1; }\n 50% { opacity: 0.6; }\n }\n `}</style>\n </ComponentActions>\n );\n}\n","\"use client\";\n\nimport React, { useState } from \"react\";\nimport type { SchemaPayload } from \"../../schemas\";\nimport { ComponentActions } from \"../../shared/ComponentActions\";\nimport { Markdown } from \"../../shared/Markdown\";\nimport { BORDER, MUTED, ACCENT, SECONDARY } from \"../../shared/theme\";\nimport { useTheme } from \"../../shared/ThemeContext\";\n\ntype Citation = SchemaPayload<\"cited-answer\">[\"citations\"][number];\n\nconst sourceTypeColors: Record<string, { bg: string; color: string }> = {\n \"tech-memo\": { bg: \"#dcfce7\", color: \"#15803d\" },\n contract: { bg: \"#ede9fe\", color: \"#7c3aed\" },\n regulation: { bg: \"#fef2f2\", color: \"#dc2626\" },\n workpaper: { bg: \"#fff7ed\", color: \"#f59e0b\" },\n};\n\nfunction getSourceTypeBadgeStyle(sourceType: string): React.CSSProperties {\n const entry = sourceTypeColors[sourceType] ?? { bg: \"#f2f2f2\", color: MUTED };\n return {\n display: \"inline-block\",\n fontSize: \"9px\",\n fontWeight: 600,\n padding: \"2px 7px\",\n borderRadius: \"9999px\",\n background: entry.bg,\n color: entry.color,\n textTransform: \"uppercase\",\n letterSpacing: \"0.03em\",\n };\n}\n\nfunction confidenceColor(c: number): string {\n if (c >= 0.8) return \"#15803d\";\n if (c >= 0.5) return ACCENT;\n return \"#dc2626\";\n}\n\nfunction ConfidenceBar({ confidence }: { confidence: number }) {\n return (\n <div style={{ display: \"flex\", alignItems: \"center\", gap: \"6px\", marginTop: \"6px\" }}>\n <span style={{ fontSize: \"10px\", color: MUTED, whiteSpace: \"nowrap\" }}>\n Confidence\n </span>\n <div\n style={{\n flex: 1,\n height: \"4px\",\n borderRadius: \"2px\",\n background: \"#f0f0f0\",\n overflow: \"hidden\",\n }}\n >\n <div\n style={{\n width: `${Math.round(confidence * 100)}%`,\n height: \"100%\",\n borderRadius: \"2px\",\n background: confidenceColor(confidence),\n transition: \"width 0.3s ease\",\n }}\n />\n </div>\n <span style={{ fontSize: \"10px\", color: MUTED, whiteSpace: \"nowrap\" }}>\n {Math.round(confidence * 100)}%\n </span>\n </div>\n );\n}\n\n/** Parse answer text, splitting on [n] markers and returning segments. */\nfunction parseAnswer(\n text: string,\n citations: Citation[],\n): Array<{ kind: \"text\"; value: string } | { kind: \"ref\"; index: number; id: string }> {\n const parts: Array<{ kind: \"text\"; value: string } | { kind: \"ref\"; index: number; id: string }> = [];\n const regex = /\\[(\\d+)\\]/g;\n let lastIndex = 0;\n let match: RegExpExecArray | null;\n\n while ((match = regex.exec(text)) !== null) {\n if (match.index > lastIndex) {\n parts.push({ kind: \"text\", value: text.slice(lastIndex, match.index) });\n }\n const refIndex = parseInt(match[1], 10);\n const citation = citations[refIndex - 1];\n parts.push({\n kind: \"ref\",\n index: refIndex,\n id: citation ? citation.id : String(refIndex),\n });\n lastIndex = regex.lastIndex;\n }\n\n if (lastIndex < text.length) {\n parts.push({ kind: \"text\", value: text.slice(lastIndex) });\n }\n\n return parts;\n}\n\nfunction CitationCard({\n citation,\n index,\n expanded,\n onToggle,\n}: {\n citation: Citation;\n index: number;\n expanded: boolean;\n onToggle: () => void;\n}) {\n return (\n <div\n style={{\n border: `1px solid ${BORDER}`,\n borderLeft: expanded ? `3px solid ${SECONDARY}` : `1px solid ${BORDER}`,\n borderRadius: \"8px\",\n padding: \"10px 12px\",\n cursor: \"pointer\",\n transition: \"background 0.15s, border-left 0.15s\",\n background: expanded ? \"#fafafa\" : \"white\",\n }}\n onClick={onToggle}\n >\n <div style={{ display: \"flex\", alignItems: \"center\", gap: \"8px\", flexWrap: \"wrap\" }}>\n <span\n style={{\n display: \"inline-flex\",\n alignItems: \"center\",\n justifyContent: \"center\",\n width: \"20px\",\n height: \"20px\",\n fontSize: \"10px\",\n fontWeight: 700,\n color: SECONDARY,\n background: \"#eff6ff\",\n borderRadius: \"4px\",\n flexShrink: 0,\n }}\n >\n {index}\n </span>\n <span style={{ fontSize: \"12px\", fontWeight: 600, color: \"var(--foreground)\" }}>\n {citation.label}\n </span>\n <span style={{ fontSize: \"11px\", color: MUTED }}>{citation.source}</span>\n {citation.sourceType && (\n <span style={getSourceTypeBadgeStyle(citation.sourceType)}>\n {citation.sourceType}\n </span>\n )}\n <span\n style={{\n marginLeft: \"auto\",\n fontSize: \"10px\",\n color: MUTED,\n transition: \"transform 0.15s\",\n transform: expanded ? \"rotate(90deg)\" : \"rotate(0deg)\",\n flexShrink: 0,\n }}\n >\n {\"▶\"}\n </span>\n </div>\n\n {expanded && (\n <div style={{ marginTop: \"8px\", paddingLeft: \"28px\" }}>\n <p\n style={{\n fontSize: \"12px\",\n color: MUTED,\n fontStyle: \"italic\",\n lineHeight: 1.6,\n margin: 0,\n }}\n >\n <Markdown inline content={citation.snippet} />\n </p>\n {citation.url && (\n <a\n href={citation.url}\n target=\"_blank\"\n rel=\"noopener noreferrer\"\n onClick={(e) => e.stopPropagation()}\n style={{\n display: \"inline-block\",\n marginTop: \"6px\",\n fontSize: \"11px\",\n color: SECONDARY,\n textDecoration: \"none\",\n }}\n >\n View source ↗\n </a>\n )}\n {citation.confidence != null && <ConfidenceBar confidence={citation.confidence} />}\n </div>\n )}\n </div>\n );\n}\n\nfunction FollowUpItem({ text }: { text: string }) {\n const [hovered, setHovered] = useState(false);\n return (\n <span\n onMouseEnter={() => setHovered(true)}\n onMouseLeave={() => setHovered(false)}\n style={{\n fontSize: \"12px\",\n color: SECONDARY,\n cursor: \"pointer\",\n lineHeight: 1.5,\n textDecoration: hovered ? \"underline\" : \"none\",\n transition: \"text-decoration 0.15s\",\n }}\n >\n {\"→ \"}\n {text}\n </span>\n );\n}\n\nfunction CitationMarker({\n index,\n onClick,\n}: {\n index: number;\n onClick: () => void;\n}) {\n const [hovered, setHovered] = useState(false);\n return (\n <sup\n onClick={onClick}\n onMouseEnter={() => setHovered(true)}\n onMouseLeave={() => setHovered(false)}\n style={{\n display: \"inline\",\n fontSize: \"10px\",\n fontWeight: 700,\n color: SECONDARY,\n cursor: \"pointer\",\n background: hovered ? \"#dbeafe\" : \"#eff6ff\",\n padding: \"1px 4px\",\n borderRadius: \"3px\",\n marginLeft: \"1px\",\n marginRight: \"1px\",\n userSelect: \"none\",\n transform: hovered ? \"scale(1.1)\" : \"scale(1)\",\n transition: \"background 0.15s, transform 0.15s\",\n }}\n >\n {index}\n </sup>\n );\n}\n\nexport function CitedAnswerResolver(p: SchemaPayload<\"cited-answer\">) {\n const { BORDER, MUTED, ACCENT, SECONDARY } = useTheme();\n const [expandedIds, setExpandedIds] = useState<Set<string>>(new Set());\n\n const toggleCitation = (id: string) => {\n setExpandedIds((prev) => {\n const next = new Set(prev);\n if (next.has(id)) {\n next.delete(id);\n } else {\n next.add(id);\n }\n return next;\n });\n };\n\n const parts = parseAnswer(p.answer, p.citations);\n\n return (\n <ComponentActions filename={p.title ?? \"cited-answer\"}>\n <div\n style={{\n width: \"100%\",\n display: \"flex\",\n flexDirection: \"column\",\n gap: \"12px\",\n borderRadius: \"0.75rem\",\n border: `1px solid ${BORDER}`,\n padding: \"16px 18px\",\n boxShadow: \"0 1px 2px rgba(0,0,0,0.03), 0 4px 12px rgba(0,0,0,0.04)\",\n background: \"white\",\n }}\n >\n {/* Title */}\n {p.title && (\n <p\n style={{\n fontFamily: \"var(--font-serif)\",\n fontSize: \"15px\",\n fontWeight: 400,\n color: \"var(--foreground)\",\n letterSpacing: \"-0.01em\",\n margin: 0,\n }}\n >\n {p.title}\n </p>\n )}\n\n {/* Answer body with inline citation markers */}\n <div\n style={{\n fontSize: \"13px\",\n lineHeight: 1.7,\n color: \"var(--foreground)\",\n margin: 0,\n }}\n >\n {parts.map((part, i) => {\n if (part.kind === \"text\") {\n return <Markdown key={i} inline content={part.value} />;\n }\n return (\n <CitationMarker\n key={i}\n index={part.index}\n onClick={() => toggleCitation(part.id)}\n />\n );\n })}\n </div>\n\n {/* Divider */}\n <hr style={{ border: \"none\", borderTop: `1px solid ${BORDER}`, margin: \"4px 0\" }} />\n\n {/* Citations list */}\n <div style={{ display: \"flex\", flexDirection: \"column\", gap: \"6px\" }}>\n <span\n style={{\n fontSize: \"11px\",\n fontWeight: 600,\n color: MUTED,\n textTransform: \"uppercase\",\n letterSpacing: \"0.04em\",\n }}\n >\n Sources{\" \"}\n <span style={{ fontWeight: 400 }}>({(p.citations ?? []).length})</span>\n </span>\n {(p.citations ?? []).map((c, i) => (\n <CitationCard\n key={c.id}\n citation={c}\n index={i + 1}\n expanded={expandedIds.has(c.id)}\n onToggle={() => toggleCitation(c.id)}\n />\n ))}\n </div>\n\n {/* Follow-up questions */}\n {p.followUps && (p.followUps ?? []).length > 0 && (\n <div style={{ display: \"flex\", flexDirection: \"column\", gap: \"6px\", marginTop: \"4px\" }}>\n <span\n style={{\n fontSize: \"11px\",\n fontWeight: 600,\n color: MUTED,\n textTransform: \"uppercase\",\n letterSpacing: \"0.04em\",\n }}\n >\n Related questions\n </span>\n {(p.followUps ?? []).map((q, i) => (\n <FollowUpItem key={i} text={q} />\n ))}\n </div>\n )}\n </div>\n </ComponentActions>\n );\n}\n","\"use client\";\n\nimport React, { useState } from \"react\";\nimport type { SchemaPayload } from \"../../schemas\";\nimport { ComponentActions } from \"../../shared/ComponentActions\";\nimport { Markdown } from \"../../shared/Markdown\";\nimport { downloadCSV } from \"../../shared/downloadCSV\";\nimport { BORDER, MUTED } from \"../../shared/theme\";\nimport { useTheme } from \"../../shared/ThemeContext\";\n\ntype Tx = SchemaPayload<\"transaction-feed\">[\"transactions\"][number];\n\nconst CURRENCY_SYMBOLS: Record<string, string> = {\n USD: \"$\",\n EUR: \"€\",\n GBP: \"£\",\n JPY: \"¥\",\n BRL: \"R$\",\n};\n\nfunction getCurrencySymbol(currency: string): string {\n return CURRENCY_SYMBOLS[currency.toUpperCase()] ?? currency + \" \";\n}\n\nfunction formatAmount(amount: number, currency: string): string {\n const sym = getCurrencySymbol(currency);\n const abs = Math.abs(amount);\n const formatted = abs.toLocaleString(\"en-US\", { minimumFractionDigits: 2, maximumFractionDigits: 2 });\n return amount < 0 ? `−${sym}${formatted}` : `+${sym}${formatted}`;\n}\n\nfunction formatDate(date: string): string {\n try {\n return new Intl.DateTimeFormat(\"en-US\", { month: \"short\", day: \"numeric\", year: \"numeric\" }).format(new Date(date));\n } catch {\n return date;\n }\n}\n\nfunction StatusDot({ status }: { status: Tx[\"status\"] }) {\n if (status === \"cleared\" || !status) return null;\n if (status === \"pending\") {\n return (\n <span\n title=\"Pending\"\n style={{\n display: \"inline-block\",\n width: \"6px\",\n height: \"6px\",\n borderRadius: \"9999px\",\n background: \"#f59e0b\",\n flexShrink: 0,\n }}\n />\n );\n }\n return null;\n}\n\nfunction getAccentBarColor(tx: Tx): string {\n if (tx.status === \"pending\") return \"#f59e0b\";\n return tx.amount >= 0 ? \"#15803d\" : \"#dc2626\";\n}\n\nfunction TransactionRow({\n tx,\n currency,\n isHovered,\n onMouseEnter,\n onMouseLeave,\n}: {\n tx: Tx;\n currency: string;\n isHovered: boolean;\n onMouseEnter: () => void;\n onMouseLeave: () => void;\n}) {\n const isReversed = tx.status === \"reversed\";\n const amountColor = isReversed ? MUTED : tx.amount < 0 ? \"#dc2626\" : \"#15803d\";\n\n return (\n <div\n onMouseEnter={onMouseEnter}\n onMouseLeave={onMouseLeave}\n style={{\n display: \"flex\",\n alignItems: \"center\",\n gap: \"12px\",\n padding: \"10px 0 10px 12px\",\n borderBottom: `1px solid ${BORDER}`,\n borderLeft: `3px solid ${getAccentBarColor(tx)}`,\n background: isHovered ? \"#fafafa\" : \"transparent\",\n transition: \"background 0.15s\",\n }}\n >\n {/* Left: date + description + counterparty + category */}\n <div style={{ flex: 1, minWidth: 0, display: \"flex\", flexDirection: \"column\", gap: \"2px\" }}>\n <div style={{ display: \"flex\", alignItems: \"center\", gap: \"8px\", flexWrap: \"wrap\" }}>\n <span\n style={{\n fontSize: \"11px\",\n color: MUTED,\n fontFamily: \"monospace\",\n flexShrink: 0,\n }}\n >\n {formatDate(tx.date)}\n </span>\n <span\n style={{\n fontSize: \"13px\",\n color: \"var(--foreground)\",\n overflow: \"hidden\",\n textOverflow: \"ellipsis\",\n whiteSpace: \"nowrap\",\n }}\n >\n <Markdown inline content={tx.description} />\n </span>\n </div>\n <div style={{ display: \"flex\", alignItems: \"center\", gap: \"8px\" }}>\n {tx.counterparty && (\n <span style={{ fontSize: \"11px\", color: MUTED }}>{tx.counterparty}</span>\n )}\n {tx.category && (\n <span\n style={{\n fontSize: \"10px\",\n fontWeight: 600,\n padding: \"1px 7px\",\n borderRadius: \"9999px\",\n background: \"#f2f2f2\",\n color: MUTED,\n }}\n >\n {tx.category}\n </span>\n )}\n </div>\n </div>\n\n {/* Right: status dot + amount */}\n <div\n style={{\n display: \"flex\",\n alignItems: \"center\",\n gap: \"6px\",\n flexShrink: 0,\n }}\n >\n <StatusDot status={tx.status} />\n <span\n style={{\n fontSize: \"13px\",\n fontWeight: 600,\n fontVariantNumeric: \"tabular-nums\",\n color: amountColor,\n textDecoration: isReversed ? \"line-through\" : \"none\",\n whiteSpace: \"nowrap\",\n }}\n >\n {formatAmount(tx.amount, currency)}\n </span>\n </div>\n\n {/* Far right: balance */}\n {tx.balance != null && (\n <span\n style={{\n fontSize: \"12px\",\n color: MUTED,\n fontVariantNumeric: \"tabular-nums\",\n flexShrink: 0,\n whiteSpace: \"nowrap\",\n }}\n >\n {getCurrencySymbol(currency)}\n {tx.balance.toLocaleString(\"en-US\", { minimumFractionDigits: 2, maximumFractionDigits: 2 })}\n </span>\n )}\n </div>\n );\n}\n\nfunction formatSummaryAmount(amount: number, currency: string): string {\n const sym = getCurrencySymbol(currency);\n const formatted = Math.abs(amount).toLocaleString(\"en-US\", {\n minimumFractionDigits: 2,\n maximumFractionDigits: 2,\n });\n if (amount > 0) return `+${sym}${formatted}`;\n if (amount < 0) return `${sym}${formatted}`;\n return `${sym}${formatted}`;\n}\n\nexport function TransactionFeedResolver(p: SchemaPayload<\"transaction-feed\">) {\n const { BORDER, MUTED } = useTheme();\n const currency = p.currency ?? \"USD\";\n const [hoveredIndex, setHoveredIndex] = useState<number | null>(null);\n\n const hasBalance = (p.transactions ?? []).some((tx) => tx.balance != null);\n\n const totalInflows = p.transactions\n .filter((tx) => tx.amount > 0 && tx.status !== \"reversed\")\n .reduce((sum, tx) => sum + tx.amount, 0);\n const totalOutflows = p.transactions\n .filter((tx) => tx.amount < 0 && tx.status !== \"reversed\")\n .reduce((sum, tx) => sum + tx.amount, 0);\n const net = totalInflows + totalOutflows;\n\n const csvCols = [\n { key: \"date\", label: \"Date\" },\n { key: \"description\", label: \"Description\" },\n { key: \"counterparty\", label: \"Counterparty\" },\n { key: \"category\", label: \"Category\" },\n { key: \"amount\", label: \"Amount\" },\n { key: \"balance\", label: \"Balance\" },\n ];\n\n const csvRows = (p.transactions ?? []).map((tx) => ({\n date: tx.date,\n description: tx.description,\n counterparty: tx.counterparty ?? \"\",\n category: tx.category ?? \"\",\n amount: tx.amount,\n balance: tx.balance ?? \"\",\n }));\n\n const headerStyle: React.CSSProperties = {\n fontSize: \"10px\",\n fontWeight: 600,\n color: MUTED,\n textTransform: \"uppercase\",\n letterSpacing: \"0.04em\",\n };\n\n return (\n <ComponentActions\n filename={p.title ?? \"transaction-feed\"}\n onDownloadCSV={() => downloadCSV(csvCols, csvRows, p.title ?? \"transaction-feed\")}\n >\n <div style={{ width: \"100%\", display: \"flex\", flexDirection: \"column\", gap: \"10px\" }}>\n {p.title && (\n <p\n style={{\n fontFamily: \"var(--font-serif)\",\n fontSize: \"15px\",\n fontWeight: 400,\n color: \"var(--foreground)\",\n letterSpacing: \"-0.01em\",\n margin: 0,\n }}\n >\n {p.title}\n </p>\n )}\n\n {/* Header row */}\n <div\n style={{\n display: \"flex\",\n alignItems: \"center\",\n gap: \"12px\",\n padding: \"6px 0 6px 15px\",\n borderBottom: `1px solid ${BORDER}`,\n }}\n >\n <div style={{ flex: 1, display: \"flex\", gap: \"12px\" }}>\n <span style={{ ...headerStyle, minWidth: \"80px\" }}>Date</span>\n <span style={headerStyle}>Description</span>\n </div>\n <span style={{ ...headerStyle, flexShrink: 0 }}>Amount</span>\n {hasBalance && (\n <span style={{ ...headerStyle, flexShrink: 0 }}>Balance</span>\n )}\n </div>\n\n <div style={{ display: \"flex\", flexDirection: \"column\" }}>\n {(p.transactions ?? []).map((tx, i) => (\n <TransactionRow\n key={tx.id ?? i}\n tx={tx}\n currency={currency}\n isHovered={hoveredIndex === i}\n onMouseEnter={() => setHoveredIndex(i)}\n onMouseLeave={() => setHoveredIndex(null)}\n />\n ))}\n </div>\n\n {/* Summary footer */}\n <div\n style={{\n display: \"flex\",\n alignItems: \"center\",\n gap: \"16px\",\n padding: \"8px 0\",\n borderTop: `1px solid ${BORDER}`,\n fontSize: \"11px\",\n fontVariantNumeric: \"tabular-nums\",\n }}\n >\n <span style={{ color: \"#15803d\", fontWeight: 600 }}>\n {\"↑ \"}\n {formatSummaryAmount(totalInflows, currency)}\n </span>\n <span style={{ color: \"#dc2626\", fontWeight: 600 }}>\n {\"↓ −\"}\n {getCurrencySymbol(currency)}\n {Math.abs(totalOutflows).toLocaleString(\"en-US\", {\n minimumFractionDigits: 2,\n maximumFractionDigits: 2,\n })}\n </span>\n <span style={{ color: \"var(--foreground)\", fontWeight: 600 }}>\n Net:{\" \"}\n {net >= 0 ? \"+\" : \"−\"}\n {getCurrencySymbol(currency)}\n {Math.abs(net).toLocaleString(\"en-US\", {\n minimumFractionDigits: 2,\n maximumFractionDigits: 2,\n })}\n </span>\n </div>\n </div>\n </ComponentActions>\n );\n}\n","\"use client\";\n\nimport React, { useState } from \"react\";\nimport type { SchemaPayload } from \"../../schemas\";\nimport { ComponentActions } from \"../../shared/ComponentActions\";\nimport { BORDER, MUTED, PAPER } from \"../../shared/theme\";\nimport { useTheme } from \"../../shared/ThemeContext\";\n\ntype FileItem = SchemaPayload<\"file-browser\">[\"items\"][number];\n\nconst docTypeConfig: Record<string, { label: string; color: string; bg: string }> = {\n pdf: { label: \"PDF\", color: \"#dc2626\", bg: \"#fef2f2\" },\n xlsx: { label: \"XLS\", color: \"#15803d\", bg: \"#f0fdf4\" },\n xls: { label: \"XLS\", color: \"#15803d\", bg: \"#f0fdf4\" },\n excel: { label: \"XLS\", color: \"#15803d\", bg: \"#f0fdf4\" },\n doc: { label: \"DOC\", color: \"#0364ff\", bg: \"#eff6ff\" },\n docx: { label: \"DOC\", color: \"#0364ff\", bg: \"#eff6ff\" },\n csv: { label: \"CSV\", color: \"#7c3aed\", bg: \"#f5f3ff\" },\n};\n\nfunction getDocConfig(docType?: string): { label: string; color: string; bg: string } {\n if (!docType) return { label: \"FILE\", color: MUTED, bg: \"#f2f2f2\" };\n const key = docType.toLowerCase().replace(/^\\./, \"\");\n return docTypeConfig[key] ?? { label: key.toUpperCase().slice(0, 4), color: MUTED, bg: \"#f2f2f2\" };\n}\n\nfunction formatDate(dateStr?: string): string {\n if (!dateStr) return \"\";\n try {\n return new Intl.DateTimeFormat(\"en-US\", { dateStyle: \"medium\" }).format(new Date(dateStr));\n } catch {\n return dateStr;\n }\n}\n\nfunction FileRow({ item }: { item: FileItem }) {\n const [hovered, setHovered] = useState(false);\n const cfg = getDocConfig(item.docType);\n\n return (\n <div\n onMouseEnter={() => setHovered(true)}\n onMouseLeave={() => setHovered(false)}\n style={{\n display: \"flex\",\n alignItems: \"center\",\n gap: \"10px\",\n padding: \"8px 12px\",\n borderBottom: `1px solid ${BORDER}`,\n background: hovered ? PAPER : \"white\",\n transition: \"background 0.15s\",\n cursor: \"default\",\n }}\n >\n {/* Doc type badge */}\n <div style={{\n width: \"32px\",\n height: \"32px\",\n borderRadius: \"6px\",\n background: cfg.bg,\n color: cfg.color,\n display: \"flex\",\n alignItems: \"center\",\n justifyContent: \"center\",\n fontSize: \"9px\",\n fontWeight: 700,\n letterSpacing: \"0.02em\",\n flexShrink: 0,\n boxShadow: \"inset 0 0 0 1px rgba(0,0,0,0.04)\",\n }}>\n {cfg.label}\n </div>\n\n {/* Name + tags */}\n <div style={{ flex: 1, minWidth: 0, display: \"flex\", flexDirection: \"column\", gap: \"2px\" }}>\n {item.url ? (\n <a\n href={item.url}\n target=\"_blank\"\n rel=\"noopener noreferrer\"\n onClick={(e) => e.stopPropagation()}\n style={{\n fontSize: \"13px\",\n fontWeight: 500,\n color: \"#0364ff\",\n overflow: \"hidden\",\n textOverflow: \"ellipsis\",\n whiteSpace: \"nowrap\",\n textDecoration: \"none\",\n display: \"flex\",\n alignItems: \"center\",\n gap: \"4px\",\n }}\n >\n {item.name}\n <span style={{ fontSize: \"11px\", flexShrink: 0 }}>↗</span>\n </a>\n ) : (\n <span style={{ fontSize: \"13px\", fontWeight: 500, color: \"var(--foreground)\", overflow: \"hidden\", textOverflow: \"ellipsis\", whiteSpace: \"nowrap\" }}>\n {item.name}\n </span>\n )}\n {item.tags && item.tags.length > 0 && (\n <div style={{ display: \"flex\", gap: \"4px\", flexWrap: \"wrap\" }}>\n {item.tags.map((tag, i) => (\n <span key={i} style={{\n fontSize: \"9px\",\n padding: \"1px 6px\",\n borderRadius: \"9999px\",\n background: PAPER,\n color: MUTED,\n fontWeight: 500,\n }}>\n {tag}\n </span>\n ))}\n </div>\n )}\n </div>\n\n {/* Author */}\n {item.author && (\n <span style={{ fontSize: \"11px\", color: MUTED, flexShrink: 0, maxWidth: \"100px\", overflow: \"hidden\", textOverflow: \"ellipsis\", whiteSpace: \"nowrap\" }}>\n {item.author}\n </span>\n )}\n\n {/* Size */}\n {item.size && (\n <span style={{ fontSize: \"11px\", color: MUTED, flexShrink: 0, minWidth: \"50px\", textAlign: \"right\" }}>\n {item.size}\n </span>\n )}\n\n {/* Date */}\n {(item.modifiedAt || item.createdAt) && (\n <span style={{ fontSize: \"11px\", color: MUTED, flexShrink: 0, minWidth: \"80px\", textAlign: \"right\" }}>\n {formatDate(item.modifiedAt ?? item.createdAt)}\n </span>\n )}\n\n </div>\n );\n}\n\nfunction GroupSection({ groupName, items }: { groupName: string; items: FileItem[] }) {\n const [open, setOpen] = useState(true);\n const [headerHovered, setHeaderHovered] = useState(false);\n\n return (\n <div>\n <button\n onClick={() => setOpen(!open)}\n onMouseEnter={() => setHeaderHovered(true)}\n onMouseLeave={() => setHeaderHovered(false)}\n style={{\n width: \"100%\",\n display: \"flex\",\n alignItems: \"center\",\n gap: \"6px\",\n padding: \"8px 12px\",\n background: headerHovered ? \"#fafafa\" : \"white\",\n borderTop: \"none\",\n borderLeft: \"none\",\n borderRight: \"none\",\n borderBottom: `1px solid ${BORDER}`,\n cursor: \"pointer\",\n fontSize: \"11px\",\n fontWeight: 600,\n color: \"var(--foreground)\",\n textTransform: \"uppercase\",\n letterSpacing: \"0.04em\",\n transition: \"background 0.15s\",\n }}\n >\n <span style={{ transition: \"transform 0.15s\", transform: open ? \"rotate(90deg)\" : \"rotate(0deg)\", fontSize: \"9px\" }}>\n ▶\n </span>\n {groupName}\n <span style={{ fontSize: \"10px\", color: MUTED, fontWeight: 400, textTransform: \"none\" }}>\n ({items.length})\n </span>\n </button>\n {open && items.map((item, i) => <FileRow key={item.id ?? i} item={item} />)}\n </div>\n );\n}\n\nexport function FileBrowserResolver(p: SchemaPayload<\"file-browser\">) {\n const { BORDER, MUTED, ACCENT, PAPER } = useTheme();\n const items = p.items ?? [];\n const hasGroups = items.some((item) => item.group);\n\n // Group items\n const groups: Map<string, FileItem[]> = new Map();\n if (hasGroups) {\n for (const item of items) {\n const key = item.group ?? \"Other\";\n const list = groups.get(key) ?? [];\n list.push(item);\n groups.set(key, list);\n }\n }\n\n return (\n <ComponentActions filename={p.title ?? \"file-browser\"}>\n <div style={{ width: \"100%\", display: \"flex\", flexDirection: \"column\", gap: \"10px\" }}>\n {p.title && (\n <p\n style={{\n fontFamily: \"var(--font-serif)\",\n fontSize: \"15px\",\n fontWeight: 400,\n color: \"var(--foreground)\",\n letterSpacing: \"-0.01em\",\n margin: 0,\n }}\n >\n {p.title}\n </p>\n )}\n\n <div style={{\n borderRadius: \"0.75rem\",\n border: `1px solid ${BORDER}`,\n overflow: \"hidden\",\n boxShadow: \"0 1px 2px rgba(0,0,0,0.03), 0 4px 12px rgba(0,0,0,0.04)\",\n }}>\n {/* File count summary */}\n <div style={{\n display: \"flex\",\n justifyContent: \"flex-end\",\n padding: \"8px 12px\",\n borderBottom: `1px solid ${BORDER}`,\n background: \"#fafafa\",\n fontSize: \"11px\",\n color: MUTED,\n }}>\n {items.length} {items.length === 1 ? \"file\" : \"files\"}\n </div>\n\n {items.length === 0 ? (\n <div style={{\n display: \"flex\",\n alignItems: \"center\",\n justifyContent: \"center\",\n padding: \"32px 16px\",\n fontSize: \"13px\",\n color: MUTED,\n }}>\n No files\n </div>\n ) : hasGroups\n ? Array.from(groups.entries()).map(([groupName, items]) => (\n <GroupSection key={groupName} groupName={groupName} items={items} />\n ))\n : items.map((item, i) => <FileRow key={item.id ?? i} item={item} />)\n }\n </div>\n </div>\n </ComponentActions>\n );\n}\n","\"use client\";\n\nimport React, { useState, useCallback } from \"react\";\nimport { useTheme } from \"./ThemeContext\";\nimport { Markdown } from \"./Markdown\";\nimport { fileTypeMeta, formatExpiry, isExpirySoon, previewKindFor } from \"./fileType\";\nimport { PreviewHost, type PreviewSource } from \"./viewers/PreviewHost\";\nimport { PreviewModal } from \"./PreviewModal\";\nimport { blobToBase64 } from \"./viewers/decode\";\n\nexport interface FileCardProps {\n filename: string;\n size?: string;\n fileType?: string;\n expiresAt?: string;\n description?: string;\n /** Download as a link (file has a public URL). */\n downloadUrl?: string;\n /** Download via callback (e.g. authed blob fetch); used when no public URL. */\n onDownload?: () => void;\n downloadBusy?: boolean;\n downloadLabel?: string;\n /** Secondary action(s) rendered after Download — e.g. \"Save to Drive\". */\n actions?: React.ReactNode;\n /** Compact row variant for multi-file lists. */\n dense?: boolean;\n /** Public URL the preview viewers can fetch directly (download-card path). */\n previewUrl?: string;\n /** Authed byte source for preview when there's no public URL (harness path).\n * Called on first Preview click; the blob is encoded to base64 and cached. */\n fetchPreviewBlob?: () => Promise<Blob>;\n /** Force-disable the Preview affordance even when the type is previewable. */\n previewDisabled?: boolean;\n}\n\n/**\n * Presentational file card: type-glyph tile + name + meta (TYPE · size · expires)\n * + optional description, with a primary Download and an optional actions slot.\n * When a preview source (previewUrl or fetchPreviewBlob) is supplied and the\n * file type is previewable, it also offers an inline peek + a full-screen modal\n * preview. The host wires Download/preview sources; no data fetching beyond the\n * lazy preview-bytes fetch.\n */\nexport function FileCard({\n filename,\n size,\n fileType,\n expiresAt,\n description,\n downloadUrl,\n onDownload,\n downloadBusy = false,\n downloadLabel = \"Download\",\n actions,\n dense = false,\n previewUrl,\n fetchPreviewBlob,\n previewDisabled = false,\n}: FileCardProps) {\n const { BORDER, MUTED, ACCENT } = useTheme();\n const [cardHover, setCardHover] = useState(false);\n const [btnHover, setBtnHover] = useState(false);\n const [pvHover, setPvHover] = useState(false);\n\n // Preview state.\n const previewKind = previewKindFor(fileType, filename);\n const canPreview =\n !previewDisabled && previewKind !== null && (!!previewUrl || !!fetchPreviewBlob);\n const [peekOpen, setPeekOpen] = useState(false);\n const [modalOpen, setModalOpen] = useState(false);\n const [source, setSource] = useState<PreviewSource | null>(previewUrl ? { url: previewUrl } : null);\n const [pvLoading, setPvLoading] = useState(false);\n const [pvError, setPvError] = useState<string | null>(null);\n\n // Resolve preview bytes once: public url is direct; otherwise fetch the blob\n // and encode to base64, caching it for both peek and modal.\n const ensureSource = useCallback(async (): Promise<PreviewSource | null> => {\n if (source) return source;\n if (previewUrl) {\n const s = { url: previewUrl };\n setSource(s);\n return s;\n }\n if (!fetchPreviewBlob) return null;\n setPvLoading(true);\n setPvError(null);\n try {\n const blob = await fetchPreviewBlob();\n const s = { base64: await blobToBase64(blob) };\n setSource(s);\n return s;\n } catch (e) {\n setPvError(e instanceof Error ? e.message : \"Failed to load preview\");\n return null;\n } finally {\n setPvLoading(false);\n }\n }, [source, previewUrl, fetchPreviewBlob]);\n\n const togglePeek = useCallback(async () => {\n if (peekOpen) {\n setPeekOpen(false);\n return;\n }\n setPeekOpen(true);\n await ensureSource();\n }, [peekOpen, ensureSource]);\n\n const openModal = useCallback(async () => {\n const s = await ensureSource();\n if (s) setModalOpen(true);\n }, [ensureSource]);\n\n const ftype = fileTypeMeta(fileType, filename);\n const tileSize = dense ? 28 : 40;\n const tileRadius = dense ? 8 : 11;\n const expirySoon = expiresAt ? isExpirySoon(expiresAt) : false;\n\n const metaTokens: React.ReactNode[] = [];\n if (ftype.label && ftype.label !== \"FILE\") metaTokens.push(ftype.label);\n if (size) metaTokens.push(size);\n\n // Neutral ghost (not filled-accent): theme-safe across hosts and consistent\n // with the compact card. The branded/primary emphasis is left to the\n // `actions` slot (e.g. Save-to-Drive).\n const ghostBtn = (hover: boolean): React.CSSProperties => ({\n display: \"inline-flex\",\n alignItems: \"center\",\n gap: \"6px\",\n background: hover ? \"#f4f4f5\" : \"white\",\n color: \"var(--foreground)\",\n borderRadius: \"8px\",\n padding: dense ? \"5px 11px\" : \"7px 13px\",\n fontSize: dense ? \"11.5px\" : \"12px\",\n fontWeight: 600,\n textDecoration: \"none\",\n whiteSpace: \"nowrap\",\n flexShrink: 0,\n cursor: \"pointer\",\n border: `1px solid ${hover ? \"#d2d2d2\" : BORDER}`,\n fontFamily: \"inherit\",\n transition: \"background 0.15s ease, border-color 0.15s ease\",\n });\n\n const downloadStyle: React.CSSProperties = {\n ...ghostBtn(btnHover),\n cursor: downloadBusy ? \"progress\" : \"pointer\",\n opacity: downloadBusy ? 0.8 : 1,\n };\n\n const downloadInner = (\n <>\n <DownloadGlyph spinning={downloadBusy} size={dense ? 13 : 14} />\n {!dense && <span>{downloadBusy ? \"Downloading…\" : downloadLabel}</span>}\n </>\n );\n\n return (\n <div\n onMouseEnter={() => setCardHover(true)}\n onMouseLeave={() => setCardHover(false)}\n style={{\n width: \"100%\",\n boxSizing: \"border-box\",\n borderRadius: \"0.875rem\",\n border: `1px solid ${cardHover ? \"#d2d2d2\" : BORDER}`,\n background: \"white\",\n display: \"flex\",\n flexDirection: \"column\",\n boxShadow: cardHover\n ? \"0 2px 10px rgba(15,23,42,0.06), 0 10px 28px rgba(15,23,42,0.07)\"\n : \"0 1px 2px rgba(15,23,42,0.04)\",\n transform: cardHover ? \"translateY(-1px)\" : \"translateY(0)\",\n transition: \"box-shadow 0.2s ease, border-color 0.2s ease, transform 0.2s ease\",\n }}\n >\n {/* Main row */}\n <div\n style={{\n display: \"flex\",\n flexDirection: \"row\",\n alignItems: \"center\",\n gap: dense ? \"11px\" : \"13px\",\n padding: dense ? \"9px 11px\" : \"12px 14px\",\n }}\n >\n {/* Type-glyph tile */}\n <div\n aria-hidden=\"true\"\n style={{\n width: tileSize,\n height: tileSize,\n borderRadius: tileRadius,\n flexShrink: 0,\n display: \"grid\",\n placeItems: \"center\",\n fontFamily: \"ui-monospace, SFMono-Regular, Menlo, monospace\",\n fontSize: dense ? \"9.5px\" : \"10.5px\",\n fontWeight: 700,\n letterSpacing: \"0.04em\",\n color: ftype.fg || ACCENT,\n background: ftype.bg || \"var(--ag-accent-tint-canvas, rgba(99,102,241,0.06))\",\n boxShadow: \"inset 0 0 0 1px rgba(15,23,42,0.06)\",\n }}\n >\n {ftype.label}\n </div>\n\n {/* Name + meta + description */}\n <div style={{ flex: 1, minWidth: 0, display: \"flex\", flexDirection: \"column\", gap: \"2px\" }}>\n <span\n style={{\n fontSize: dense ? \"13px\" : \"13.5px\",\n fontWeight: 600,\n color: \"var(--foreground)\",\n overflow: \"hidden\",\n textOverflow: \"ellipsis\",\n whiteSpace: \"nowrap\",\n }}\n >\n {filename}\n </span>\n\n {(metaTokens.length > 0 || expiresAt) && (\n <span\n style={{\n fontSize: \"11.5px\",\n color: MUTED,\n display: \"flex\",\n alignItems: \"center\",\n gap: \"6px\",\n whiteSpace: \"nowrap\",\n }}\n >\n {metaTokens.map((t, i) => (\n <React.Fragment key={i}>\n {i > 0 && <span style={{ color: \"#c4c4c4\" }}>·</span>}\n <span>{t}</span>\n </React.Fragment>\n ))}\n {expiresAt && (\n <>\n {metaTokens.length > 0 && <span style={{ color: \"#c4c4c4\" }}>·</span>}\n <span style={{ color: expirySoon ? \"#b45309\" : MUTED, fontWeight: expirySoon ? 600 : 400 }}>\n Expires {formatExpiry(expiresAt)}\n </span>\n </>\n )}\n </span>\n )}\n\n {description && !dense && (\n <span style={{ fontSize: \"12px\", color: MUTED, lineHeight: 1.4 }}>\n <Markdown inline content={description} />\n </span>\n )}\n </div>\n\n {/* Actions: Preview + Download (primary) + slot */}\n {canPreview && (\n <button\n type=\"button\"\n onClick={togglePeek}\n aria-expanded={peekOpen}\n onMouseEnter={() => setPvHover(true)}\n onMouseLeave={() => setPvHover(false)}\n style={ghostBtn(pvHover)}\n >\n <EyeGlyph size={dense ? 13 : 14} />\n {!dense && <span>Preview</span>}\n {!dense && <Chevron open={peekOpen} />}\n </button>\n )}\n {downloadUrl ? (\n <a\n href={downloadUrl}\n target=\"_blank\"\n rel=\"noopener noreferrer\"\n onMouseEnter={() => setBtnHover(true)}\n onMouseLeave={() => setBtnHover(false)}\n style={downloadStyle}\n >\n {downloadInner}\n </a>\n ) : onDownload ? (\n <button\n type=\"button\"\n onClick={onDownload}\n disabled={downloadBusy}\n aria-busy={downloadBusy || undefined}\n onMouseEnter={() => setBtnHover(true)}\n onMouseLeave={() => setBtnHover(false)}\n style={downloadStyle}\n >\n {downloadInner}\n </button>\n ) : null}\n {actions}\n </div>\n\n {/* Inline peek */}\n {canPreview && peekOpen && previewKind && (\n <div style={{ borderTop: `1px solid ${BORDER}` }}>\n {pvError ? (\n <div style={{ padding: \"16px\", fontSize: \"12.5px\", color: \"#dc2626\" }}>{pvError}</div>\n ) : pvLoading || !source ? (\n <div style={{ padding: \"20px\", fontSize: \"12.5px\", color: MUTED, textAlign: \"center\" }}>\n Loading preview…\n </div>\n ) : (\n <>\n <div style={{ position: \"relative\", maxHeight: \"280px\", overflow: \"hidden\" }}>\n <PreviewHost kind={previewKind} source={source} mode=\"peek\" />\n {/* Fade-out teaser */}\n <div\n aria-hidden=\"true\"\n style={{\n position: \"absolute\",\n left: 0,\n right: 0,\n bottom: 0,\n height: \"56px\",\n background: \"linear-gradient(to bottom, rgba(255,255,255,0), white)\",\n pointerEvents: \"none\",\n }}\n />\n </div>\n <div\n style={{\n display: \"flex\",\n justifyContent: \"center\",\n padding: \"9px\",\n borderTop: `1px solid ${BORDER}`,\n }}\n >\n <button type=\"button\" onClick={openModal} style={ghostBtn(false)}>\n Open full preview\n </button>\n </div>\n </>\n )}\n </div>\n )}\n\n {canPreview && previewKind && source && (\n <PreviewModal\n open={modalOpen}\n onClose={() => setModalOpen(false)}\n filename={filename}\n fileType={fileType}\n kind={previewKind}\n source={source}\n downloadUrl={downloadUrl}\n onDownload={onDownload}\n />\n )}\n </div>\n );\n}\n\n/** Inline download/spinner glyph (no icon dependency — works standalone). */\nfunction DownloadGlyph({ spinning, size }: { spinning: boolean; size: number }) {\n if (spinning) {\n return (\n <svg\n width={size}\n height={size}\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n aria-hidden=\"true\"\n style={{ animation: \"fileCardSpin 720ms linear infinite\" }}\n >\n <style>{\"@keyframes fileCardSpin{to{transform:rotate(360deg)}}\"}</style>\n <circle cx=\"12\" cy=\"12\" r=\"9\" stroke=\"currentColor\" strokeOpacity=\"0.3\" strokeWidth=\"2\" />\n <path d=\"M21 12a9 9 0 0 0-9-9\" stroke=\"currentColor\" strokeWidth=\"2\" strokeLinecap=\"round\" />\n </svg>\n );\n }\n return (\n <svg width={size} height={size} viewBox=\"0 0 24 24\" fill=\"none\" aria-hidden=\"true\">\n <path d=\"M12 3v12m0 0 4-4m-4 4-4-4M5 21h14\" stroke=\"currentColor\" strokeWidth=\"2\"\n strokeLinecap=\"round\" strokeLinejoin=\"round\" />\n </svg>\n );\n}\n\n/** Eye glyph for the Preview affordance. */\nfunction EyeGlyph({ size }: { size: number }) {\n return (\n <svg width={size} height={size} viewBox=\"0 0 24 24\" fill=\"none\" aria-hidden=\"true\">\n <path d=\"M2 12s3.5-7 10-7 10 7 10 7-3.5 7-10 7-10-7-10-7Z\" stroke=\"currentColor\" strokeWidth=\"2\"\n strokeLinecap=\"round\" strokeLinejoin=\"round\" />\n <circle cx=\"12\" cy=\"12\" r=\"3\" stroke=\"currentColor\" strokeWidth=\"2\" />\n </svg>\n );\n}\n\nfunction Chevron({ open }: { open: boolean }) {\n return (\n <svg\n width=\"12\"\n height=\"12\"\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n aria-hidden=\"true\"\n style={{ transition: \"transform 0.15s ease\", transform: open ? \"rotate(180deg)\" : \"rotate(0deg)\" }}\n >\n <path d=\"m6 9 6 6 6-6\" stroke=\"currentColor\" strokeWidth=\"2\" strokeLinecap=\"round\" strokeLinejoin=\"round\" />\n </svg>\n );\n}\n","// File-type identity for FileCard: an extension chip + a semantic family color.\n// The chip is the recognizable signal vs one generic icon. Colors are\n// accent-independent (they read the same under any theme accent).\n\nexport interface FileTypeMeta {\n label: string; // e.g. \"CSV\", \"PDF\" — short, uppercased\n fg: string; // chip foreground (family color), \"\" → fall back to theme accent\n bg: string; // chip background tint, \"\" → fall back to theme accent tint\n}\n\nconst FAMILIES: { exts: string[]; fg: string; bg: string }[] = [\n { exts: [\"csv\", \"tsv\", \"xls\", \"xlsx\", \"numbers\"], fg: \"#15803d\", bg: \"#e7f6ee\" },\n { exts: [\"pdf\"], fg: \"#dc2626\", bg: \"#fdecec\" },\n { exts: [\"doc\", \"docx\", \"txt\", \"md\", \"rtf\", \"pages\"], fg: \"#2563eb\", bg: \"#e8f0fe\" },\n { exts: [\"json\", \"yaml\", \"yml\", \"xml\", \"toml\"], fg: \"#7c3aed\", bg: \"#f1ebfe\" },\n { exts: [\"zip\", \"tar\", \"gz\", \"rar\", \"7z\"], fg: \"#b45309\", bg: \"#fdf2e3\" },\n { exts: [\"png\", \"jpg\", \"jpeg\", \"gif\", \"svg\", \"webp\", \"bmp\"], fg: \"#0891b2\", bg: \"#e4f6fa\" },\n];\n\n/** Resolve a type chip from an explicit fileType token or the filename ext.\n * MIME values (containing \"/\") are ignored in favor of the filename. */\nexport function fileTypeMeta(fileType?: string, filename?: string): FileTypeMeta {\n const token =\n fileType && !fileType.includes(\"/\")\n ? fileType\n : (filename || \"\").split(\".\").pop() || \"\";\n const ext = token.toLowerCase().replace(/[^a-z0-9]/g, \"\");\n if (!ext) return { label: \"FILE\", fg: \"\", bg: \"\" };\n const fam = FAMILIES.find((f) => f.exts.includes(ext));\n return {\n label: ext.slice(0, 4).toUpperCase(),\n fg: fam ? fam.fg : \"\",\n bg: fam ? fam.bg : \"\",\n };\n}\n\n/** Previewable file kinds, mapped to a viewer. `null` → download-only. */\nexport type PreviewKind = \"pdf\" | \"excel\" | \"csv\" | \"markdown\" | \"text\" | \"docx\";\n\nconst PREVIEW_EXTS: Record<string, PreviewKind> = {\n pdf: \"pdf\",\n xlsx: \"excel\",\n xls: \"excel\",\n csv: \"csv\",\n tsv: \"csv\",\n md: \"markdown\",\n markdown: \"markdown\",\n txt: \"text\",\n log: \"text\",\n text: \"text\",\n docx: \"docx\",\n};\n\n/** Normalize a fileType token or filename to a lowercase extension. MIME\n * values (containing \"/\") are mapped via a small table, else fall back to the\n * filename extension. */\nfunction extOf(fileType?: string, filename?: string): string {\n if (fileType && fileType.includes(\"/\")) {\n const mime = fileType.toLowerCase();\n if (mime.includes(\"pdf\")) return \"pdf\";\n if (mime.includes(\"spreadsheet\") || mime.includes(\"excel\")) return \"xlsx\";\n if (mime.includes(\"csv\")) return \"csv\";\n if (mime.includes(\"markdown\")) return \"md\";\n if (mime.includes(\"wordprocessing\") || mime.includes(\"msword\")) return \"docx\";\n if (mime.startsWith(\"text/\")) return \"txt\";\n // fall through to filename\n } else if (fileType) {\n const t = fileType.toLowerCase().replace(/[^a-z0-9]/g, \"\");\n if (t) return t;\n }\n return (filename || \"\").split(\".\").pop()?.toLowerCase().replace(/[^a-z0-9]/g, \"\") || \"\";\n}\n\n/** Resolve the preview viewer for a file, or `null` when not previewable. */\nexport function previewKindFor(fileType?: string, filename?: string): PreviewKind | null {\n return PREVIEW_EXTS[extOf(fileType, filename)] ?? null;\n}\n\n/** True when the file can be previewed inline (has a matching viewer). */\nexport function isPreviewable(fileType?: string, filename?: string): boolean {\n return previewKindFor(fileType, filename) !== null;\n}\n\n/** Compact human expiry: \"Today\" / \"in 3 days\" / \"Jan 5, 2026\" / \"Expired\". */\nexport function formatExpiry(expiresAt: string): string {\n const date = new Date(expiresAt);\n if (isNaN(date.getTime())) return expiresAt;\n const diffDays = Math.round((date.getTime() - Date.now()) / (1000 * 60 * 60 * 24));\n if (diffDays < 0) return \"Expired\";\n if (diffDays === 0) return \"Today\";\n if (diffDays === 1) return \"Tomorrow\";\n if (diffDays < 7) return `in ${diffDays} days`;\n return date.toLocaleDateString(undefined, {\n month: \"short\",\n day: \"numeric\",\n year: \"numeric\",\n });\n}\n\n/** True when an expiry is near (≤2 days) or past — used to tint the chip. */\nexport function isExpirySoon(expiresAt: string): boolean {\n const date = new Date(expiresAt);\n if (isNaN(date.getTime())) return false;\n return date.getTime() - Date.now() < 2 * 24 * 60 * 60 * 1000;\n}\n","\"use client\";\n\nimport React, { Suspense, lazy } from \"react\";\nimport { useTheme } from \"../ThemeContext\";\nimport type { PreviewKind } from \"../fileType\";\n\n// Heavy / optional-peer viewers are lazy-loaded so react-pdf, xlsx, papaparse\n// and mammoth stay out of the base bundle and load only on first preview.\nconst PdfViewer = lazy(() =>\n import(\"../../composites/document-preview/PdfViewer\").then((m) => ({ default: m.PdfViewer }))\n);\nconst ExcelViewer = lazy(() =>\n import(\"../../composites/document-preview/ExcelViewer\").then((m) => ({ default: m.ExcelViewer }))\n);\nconst CsvViewer = lazy(() => import(\"./CsvViewer\").then((m) => ({ default: m.CsvViewer })));\nconst TextViewer = lazy(() => import(\"./TextViewer\").then((m) => ({ default: m.TextViewer })));\nconst DocxViewer = lazy(() => import(\"./DocxViewer\").then((m) => ({ default: m.DocxViewer })));\n\nexport interface PreviewSource {\n url?: string;\n base64?: string;\n}\n\ninterface PreviewHostProps {\n kind: PreviewKind;\n source: PreviewSource;\n /** \"peek\" caps rows/lines for the inline teaser; \"full\" renders everything. */\n mode?: \"peek\" | \"full\";\n}\n\nconst PEEK_ROWS = 20;\nconst PEEK_LINES = 40;\n\n/** Dispatch to the viewer for a preview kind, lazy-loading it. Pure renderer —\n * the caller supplies the bytes (url or base64) and frames it (peek clamp /\n * modal). Crash-hardened: an unknown kind renders nothing. */\nexport function PreviewHost({ kind, source, mode = \"full\" }: PreviewHostProps) {\n const { MUTED } = useTheme();\n const peek = mode === \"peek\";\n\n const fallback = (\n <div style={{ padding: \"24px\", color: MUTED, fontSize: \"13px\", textAlign: \"center\" }}>\n Loading preview…\n </div>\n );\n\n let viewer: React.ReactNode = null;\n switch (kind) {\n case \"pdf\":\n viewer = <PdfViewer url={source.url} base64={source.base64} />;\n break;\n case \"excel\":\n viewer = <ExcelViewer url={source.url} base64={source.base64} />;\n break;\n case \"csv\":\n viewer = <CsvViewer url={source.url} base64={source.base64} maxRows={peek ? PEEK_ROWS : undefined} />;\n break;\n case \"markdown\":\n viewer = <TextViewer url={source.url} base64={source.base64} markdown maxLines={peek ? PEEK_LINES : undefined} />;\n break;\n case \"text\":\n viewer = <TextViewer url={source.url} base64={source.base64} maxLines={peek ? PEEK_LINES : undefined} />;\n break;\n case \"docx\":\n viewer = <DocxViewer url={source.url} base64={source.base64} />;\n break;\n default:\n return null;\n }\n\n return <Suspense fallback={fallback}>{viewer}</Suspense>;\n}\n","\"use client\";\n\nimport React, { useEffect } from \"react\";\nimport { createPortal } from \"react-dom\";\nimport { useTheme } from \"./ThemeContext\";\nimport { PreviewHost, type PreviewSource } from \"./viewers/PreviewHost\";\nimport { fileTypeMeta } from \"./fileType\";\nimport type { PreviewKind } from \"./fileType\";\n\ninterface PreviewModalProps {\n open: boolean;\n onClose: () => void;\n filename: string;\n fileType?: string;\n kind: PreviewKind;\n source: PreviewSource;\n /** Optional Download affordance in the modal footer. */\n downloadUrl?: string;\n onDownload?: () => void;\n}\n\n/** Fullscreen preview overlay (portal). ESC + backdrop close. Reuses the same\n * PreviewHost viewers as the inline peek, unclamped. */\nexport function PreviewModal({\n open,\n onClose,\n filename,\n fileType,\n kind,\n source,\n downloadUrl,\n onDownload,\n}: PreviewModalProps) {\n const { BORDER, MUTED, ACCENT } = useTheme();\n\n useEffect(() => {\n if (!open) return;\n const onKey = (e: KeyboardEvent) => {\n if (e.key === \"Escape\") onClose();\n };\n window.addEventListener(\"keydown\", onKey);\n const prev = document.body.style.overflow;\n document.body.style.overflow = \"hidden\";\n return () => {\n window.removeEventListener(\"keydown\", onKey);\n document.body.style.overflow = prev;\n };\n }, [open, onClose]);\n\n if (!open || typeof document === \"undefined\") return null;\n\n const ftype = fileTypeMeta(fileType, filename);\n\n return createPortal(\n <div\n role=\"dialog\"\n aria-modal=\"true\"\n aria-label={`Preview ${filename}`}\n onClick={onClose}\n style={{\n position: \"fixed\",\n inset: 0,\n zIndex: 2147483000,\n background: \"rgba(15,23,42,0.55)\",\n display: \"flex\",\n alignItems: \"center\",\n justifyContent: \"center\",\n padding: \"4vh 4vw\",\n backdropFilter: \"blur(2px)\",\n }}\n >\n <div\n onClick={(e) => e.stopPropagation()}\n style={{\n width: \"min(960px, 100%)\",\n height: \"min(92vh, 100%)\",\n background: \"white\",\n borderRadius: \"0.875rem\",\n border: `1px solid ${BORDER}`,\n boxShadow: \"0 20px 60px rgba(15,23,42,0.30)\",\n display: \"flex\",\n flexDirection: \"column\",\n overflow: \"hidden\",\n }}\n >\n {/* Header */}\n <div\n style={{\n display: \"flex\",\n alignItems: \"center\",\n gap: \"10px\",\n padding: \"11px 14px\",\n borderBottom: `1px solid ${BORDER}`,\n flexShrink: 0,\n }}\n >\n <span\n aria-hidden=\"true\"\n style={{\n fontSize: \"9.5px\",\n fontWeight: 700,\n letterSpacing: \"0.04em\",\n padding: \"3px 7px\",\n borderRadius: \"6px\",\n fontFamily: \"ui-monospace, SFMono-Regular, Menlo, monospace\",\n color: ftype.fg || ACCENT,\n background: ftype.bg || \"rgba(99,102,241,0.06)\",\n }}\n >\n {ftype.label}\n </span>\n <span\n style={{\n flex: 1,\n minWidth: 0,\n fontSize: \"13.5px\",\n fontWeight: 600,\n color: \"var(--foreground)\",\n overflow: \"hidden\",\n textOverflow: \"ellipsis\",\n whiteSpace: \"nowrap\",\n }}\n >\n {filename}\n </span>\n {(downloadUrl || onDownload) &&\n (downloadUrl ? (\n <a\n href={downloadUrl}\n target=\"_blank\"\n rel=\"noopener noreferrer\"\n style={footerBtn(BORDER)}\n >\n Download\n </a>\n ) : (\n <button type=\"button\" onClick={onDownload} style={footerBtn(BORDER)}>\n Download\n </button>\n ))}\n <button\n type=\"button\"\n aria-label=\"Close preview\"\n onClick={onClose}\n style={{\n border: `1px solid ${BORDER}`,\n borderRadius: \"8px\",\n background: \"white\",\n cursor: \"pointer\",\n padding: \"5px 9px\",\n fontSize: \"13px\",\n color: MUTED,\n lineHeight: 1,\n }}\n >\n ✕\n </button>\n </div>\n\n {/* Body */}\n <div style={{ flex: 1, minHeight: 0, overflow: \"auto\", background: \"white\" }}>\n <PreviewHost kind={kind} source={source} mode=\"full\" />\n </div>\n </div>\n </div>,\n document.body\n );\n}\n\nfunction footerBtn(border: string): React.CSSProperties {\n return {\n display: \"inline-flex\",\n alignItems: \"center\",\n gap: \"6px\",\n border: `1px solid ${border}`,\n borderRadius: \"8px\",\n background: \"white\",\n color: \"var(--foreground)\",\n cursor: \"pointer\",\n padding: \"5px 11px\",\n fontSize: \"12px\",\n fontWeight: 600,\n textDecoration: \"none\",\n fontFamily: \"inherit\",\n };\n}\n","\"use client\";\n\nimport React from \"react\";\nimport type { SchemaPayload } from \"../../schemas\";\nimport { ComponentActions } from \"../../shared/ComponentActions\";\nimport { FileCard } from \"../../shared/FileCard\";\n\nexport function DownloadCardResolver(p: SchemaPayload<\"download-card\">) {\n const files = p.files ?? [];\n return (\n <ComponentActions filename={p.title ?? \"download-card\"}>\n <div style={{ width: \"100%\", display: \"flex\", flexDirection: \"column\", gap: \"10px\" }}>\n {p.title && (\n <p\n style={{\n fontFamily: \"var(--font-serif)\",\n fontSize: \"15px\",\n fontWeight: 400,\n color: \"var(--foreground)\",\n letterSpacing: \"-0.01em\",\n margin: 0,\n }}\n >\n {p.title}\n </p>\n )}\n <div style={{ display: \"flex\", flexDirection: \"column\", gap: \"8px\" }}>\n {files.map((file, i) => (\n <FileCard\n key={i}\n filename={file.filename}\n size={file.size}\n fileType={file.fileType}\n expiresAt={file.expiresAt}\n description={file.description}\n downloadUrl={file.url}\n previewUrl={file.url}\n previewDisabled={file.preview === false}\n dense={files.length > 1}\n />\n ))}\n </div>\n </div>\n </ComponentActions>\n );\n}\n","\"use client\";\n\nimport React, { useState } from \"react\";\nimport type { SchemaPayload } from \"../../schemas\";\nimport { ComponentActions } from \"../../shared/ComponentActions\";\nimport { BORDER, MUTED } from \"../../shared/theme\";\nimport { useTheme } from \"../../shared/ThemeContext\";\n\ntype Item = SchemaPayload<\"ops-dashboard\">[\"items\"][number];\n\nconst stateConfig: Record<Item[\"state\"], { label: string; bg: string; color: string }> = {\n running: { label: \"Running\", bg: \"#dcfce7\", color: \"#15803d\" },\n paused: { label: \"Paused\", bg: \"#fff7ed\", color: \"#f59e0b\" },\n stopped: { label: \"Stopped\", bg: \"#f2f2f2\", color: \"#777777\" },\n error: { label: \"Error\", bg: \"#fef2f2\", color: \"#dc2626\" },\n};\n\nconst healthColor: Record<NonNullable<Item[\"health\"]>, string> = {\n healthy: \"#15803d\",\n degraded: \"#f59e0b\",\n down: \"#dc2626\",\n};\n\nconst PULSE_KEYFRAMES = `\n@keyframes healthPulse {\n 0% { transform: scale(1); opacity: 0.6; }\n 50% { transform: scale(1.4); opacity: 1; }\n 100% { transform: scale(1); opacity: 0.6; }\n}\n`;\n\nfunction getMetricValueColor(value: string): string | undefined {\n if (/error|fail/i.test(value)) return \"#dc2626\";\n return undefined;\n}\n\nfunction ServiceCard({ item, isHovered, onHover, onLeave }: {\n item: Item;\n isHovered: boolean;\n onHover: () => void;\n onLeave: () => void;\n}) {\n const badge = stateConfig[item.state];\n const isRunning = item.state === \"running\";\n\n return (\n <div\n onMouseEnter={onHover}\n onMouseLeave={onLeave}\n style={{\n borderRadius: \"0.75rem\",\n border: `1px solid ${isHovered ? \"#c8c8c8\" : BORDER}`,\n padding: \"14px 16px\",\n display: \"flex\",\n flexDirection: \"column\",\n gap: \"8px\",\n boxShadow: isHovered\n ? \"0 2px 8px rgba(0,0,0,0.06), 0 8px 24px rgba(0,0,0,0.08)\"\n : \"0 1px 2px rgba(0,0,0,0.03), 0 4px 12px rgba(0,0,0,0.04)\",\n background: \"white\",\n transition: \"box-shadow 0.2s, border-color 0.2s\",\n }}\n >\n {/* Header */}\n <div style={{ display: \"flex\", alignItems: \"center\", justifyContent: \"space-between\" }}>\n <div style={{ display: \"flex\", alignItems: \"center\", gap: \"6px\" }}>\n {item.health && (\n <span\n style={{\n width: \"8px\",\n height: \"8px\",\n borderRadius: \"9999px\",\n background: healthColor[item.health],\n flexShrink: 0,\n display: \"inline-block\",\n ...(isRunning\n ? { animation: \"healthPulse 2s ease-in-out infinite\" }\n : {}),\n }}\n />\n )}\n <span style={{ fontSize: \"13px\", fontWeight: 600, color: \"var(--foreground)\" }}>\n {item.name}\n </span>\n </div>\n <span\n style={{\n fontSize: \"10px\",\n fontWeight: 600,\n padding: \"2px 8px\",\n borderRadius: \"9999px\",\n background: badge.bg,\n color: badge.color,\n ...(isRunning\n ? { boxShadow: \"0 0 0 1px rgba(21,128,61,0.2)\" }\n : {}),\n }}\n >\n {badge.label}\n </span>\n </div>\n\n {/* Meta lines */}\n {item.schedule && (\n <span style={{ fontSize: \"11px\", color: MUTED, margin: 0 }}>\n {\"⏱\"} Schedule: {item.schedule}\n </span>\n )}\n {item.lastRunAt && (\n <span style={{ fontSize: \"11px\", color: MUTED, margin: 0 }}>\n {\"↻\"} Last run: {item.lastRunAt}\n </span>\n )}\n {item.nextRunAt && (\n <span style={{ fontSize: \"11px\", color: MUTED, margin: 0 }}>\n {\"→\"} Next: {item.nextRunAt}\n </span>\n )}\n\n {/* Metrics */}\n {item.metrics && item.metrics.length > 0 && (\n <div\n style={{\n display: \"grid\",\n gridTemplateColumns: \"1fr 1fr\",\n gap: \"6px\",\n marginTop: \"4px\",\n borderTop: `1px solid ${BORDER}`,\n paddingTop: \"8px\",\n }}\n >\n {item.metrics.map((m) => {\n const valueColor = getMetricValueColor(m.value);\n const hasNumber = /\\d/.test(m.value) || m.value.includes(\"%\");\n return (\n <div key={m.label} style={{ display: \"flex\", flexDirection: \"column\", gap: \"2px\" }}>\n <span\n style={{\n fontSize: \"10px\",\n color: MUTED,\n textTransform: \"uppercase\",\n letterSpacing: \"0.04em\",\n fontWeight: 600,\n }}\n >\n {m.label}\n </span>\n <span\n style={{\n fontSize: \"13px\",\n fontWeight: 600,\n color: valueColor ?? \"var(--foreground)\",\n ...(hasNumber ? { fontVariantNumeric: \"tabular-nums\" } : {}),\n }}\n >\n {m.value}\n </span>\n </div>\n );\n })}\n </div>\n )}\n </div>\n );\n}\n\nexport function OpsDashboardResolver(p: SchemaPayload<\"ops-dashboard\">) {\n const { BORDER, MUTED } = useTheme();\n const [hoveredId, setHoveredId] = useState<string | null>(null);\n const hasRunning = (p.items ?? []).some((item) => item.state === \"running\");\n\n return (\n <ComponentActions filename={p.title ?? \"ops-dashboard\"}>\n {hasRunning && <style>{PULSE_KEYFRAMES}</style>}\n <div style={{ width: \"100%\", display: \"flex\", flexDirection: \"column\", gap: \"10px\" }}>\n {p.title && (\n <p\n style={{\n fontFamily: \"var(--font-serif)\",\n fontSize: \"15px\",\n fontWeight: 400,\n color: \"var(--foreground)\",\n letterSpacing: \"-0.01em\",\n margin: 0,\n }}\n >\n {p.title}\n </p>\n )}\n <div\n style={{\n display: \"grid\",\n gridTemplateColumns: \"repeat(auto-fit, minmax(240px, 1fr))\",\n gap: \"10px\",\n }}\n >\n {(p.items ?? []).map((item) => (\n <ServiceCard\n key={item.id}\n item={item}\n isHovered={hoveredId === item.id}\n onHover={() => setHoveredId(item.id)}\n onLeave={() => setHoveredId(null)}\n />\n ))}\n </div>\n </div>\n </ComponentActions>\n );\n}\n","\"use client\";\n\nimport React, { useState } from \"react\";\nimport type { SchemaPayload } from \"../../schemas\";\nimport { ComponentActions } from \"../../shared/ComponentActions\";\nimport { Markdown } from \"../../shared/Markdown\";\nimport { BORDER, MUTED, SECONDARY } from \"../../shared/theme\";\nimport { useTheme } from \"../../shared/ThemeContext\";\n\ntype KVItem = NonNullable<SchemaPayload<\"key-value-list\">[\"items\"]>[number];\n\nfunction formatDate(value: string): string {\n try {\n return new Intl.DateTimeFormat(\"en-US\", { dateStyle: \"medium\" }).format(new Date(value));\n } catch {\n return value;\n }\n}\n\nfunction CopyButton({ value, rowHovered }: { value: string; rowHovered: boolean }) {\n const [copied, setCopied] = useState(false);\n const [btnHovered, setBtnHovered] = useState(false);\n\n const handleCopy = () => {\n navigator.clipboard.writeText(value).then(() => {\n setCopied(true);\n setTimeout(() => setCopied(false), 1500);\n });\n };\n\n return (\n <button\n onClick={handleCopy}\n onMouseEnter={() => setBtnHovered(true)}\n onMouseLeave={() => setBtnHovered(false)}\n title=\"Copy to clipboard\"\n style={{\n background: \"none\",\n border: \"none\",\n cursor: \"pointer\",\n padding: \"2px 4px\",\n fontSize: \"12px\",\n color: btnHovered ? \"var(--foreground)\" : MUTED,\n opacity: copied ? 1 : rowHovered ? 1 : 0,\n transition: \"opacity 0.15s, color 0.15s\",\n position: \"relative\",\n flexShrink: 0,\n }}\n >\n {copied ? \"✓\" : \"⧉\"}\n </button>\n );\n}\n\nfunction ValueCell({ item }: { item: KVItem }) {\n const t = item.type ?? \"text\";\n\n switch (t) {\n case \"url\":\n return (\n <>\n <a\n href={item.value}\n target=\"_blank\"\n rel=\"noopener noreferrer\"\n style={{ color: SECONDARY, textDecoration: \"underline\", fontSize: \"13px\", wordBreak: \"break-all\" }}\n >\n {item.value}\n </a>\n <span style={{ fontSize: \"11px\", color: MUTED, flexShrink: 0 }}>↗</span>\n </>\n );\n case \"boolean\": {\n const isTrue = (item.value ?? \"\").toLowerCase() === \"true\";\n return (\n <span\n style={{\n fontSize: \"10px\",\n fontWeight: 600,\n padding: \"2px 8px\",\n borderRadius: \"9999px\",\n background: isTrue ? \"#dcfce7\" : \"#fef2f2\",\n color: isTrue ? \"#15803d\" : \"#dc2626\",\n }}\n >\n {item.value}\n </span>\n );\n }\n case \"date\":\n return <span style={{ fontSize: \"13px\", color: \"var(--foreground)\" }}>{formatDate(item.value)}</span>;\n case \"code\":\n return (\n <>\n <span style={{ fontSize: \"11px\", color: MUTED, fontFamily: \"monospace\", flexShrink: 0 }}>{\"{ }\"}</span>\n <span\n style={{\n fontFamily: \"monospace\",\n fontSize: \"12px\",\n background: \"#f6f6f6\",\n padding: \"1px 6px\",\n borderRadius: \"4px\",\n wordBreak: \"break-all\",\n }}\n >\n {item.value}\n </span>\n </>\n );\n case \"currency\":\n return (\n <span style={{ fontSize: \"13px\", fontWeight: 600, fontVariantNumeric: \"tabular-nums\", marginLeft: \"auto\" }}>\n {item.value}\n </span>\n );\n default:\n return <span style={{ fontSize: \"13px\", color: \"var(--foreground)\" }}><Markdown inline content={item.value} /></span>;\n }\n}\n\nfunction KVRow({ item, isLast, index }: { item: KVItem; isLast: boolean; index: number }) {\n const [hovered, setHovered] = useState(false);\n const altBg = index % 2 === 1 ? \"#fcfcfc\" : \"white\";\n\n return (\n <div\n onMouseEnter={() => setHovered(true)}\n onMouseLeave={() => setHovered(false)}\n style={{\n display: \"flex\",\n alignItems: \"center\",\n padding: \"8px 16px\",\n borderBottom: isLast ? \"none\" : `1px solid ${BORDER}`,\n gap: \"8px\",\n background: hovered ? \"#fafafa\" : altBg,\n transition: \"background 0.15s\",\n }}\n >\n <span\n style={{\n fontSize: \"12px\",\n color: MUTED,\n width: \"40%\",\n flexShrink: 0,\n }}\n >\n {item.key}\n </span>\n <span style={{ flex: 1, display: \"flex\", alignItems: \"center\", gap: \"6px\" }}>\n <ValueCell item={item} />\n </span>\n {item.copyable && <CopyButton value={item.value} rowHovered={hovered} />}\n </div>\n );\n}\n\nfunction ItemsList({ items, isLastGroup, indexOffset }: { items: KVItem[]; isLastGroup: boolean; indexOffset: number }) {\n return (\n <>\n {items.map((item, i) => (\n <KVRow\n key={i}\n item={item}\n isLast={isLastGroup && i === items.length - 1}\n index={indexOffset + i}\n />\n ))}\n </>\n );\n}\n\nexport function KeyValueListResolver(p: SchemaPayload<\"key-value-list\">) {\n const { BORDER, MUTED, PAPER, SECONDARY } = useTheme();\n const groups = p.groups ?? [];\n const items = p.items ?? [];\n const hasGroups = groups.length > 0;\n const hasItems = items.length > 0;\n\n return (\n <ComponentActions filename={p.title ?? \"key-value-list\"}>\n <div style={{ width: \"100%\", display: \"flex\", flexDirection: \"column\", gap: \"10px\" }}>\n {p.title && (\n <p\n style={{\n fontFamily: \"var(--font-serif)\",\n fontSize: \"15px\",\n fontWeight: 400,\n color: \"var(--foreground)\",\n letterSpacing: \"-0.01em\",\n margin: 0,\n }}\n >\n {p.title}\n </p>\n )}\n <div\n style={{\n borderRadius: \"0.75rem\",\n border: `1px solid ${BORDER}`,\n overflow: \"hidden\",\n }}\n >\n {hasGroups &&\n groups.map((group, gi) => {\n const groupItems = group.items ?? [];\n const isLastGroup = gi === groups.length - 1 && !hasItems;\n const prevItemCount = groups.slice(0, gi).reduce((sum, g) => sum + (g.items ?? []).length, 0);\n return (\n <React.Fragment key={gi}>\n <div\n style={{\n fontSize: \"11px\",\n fontWeight: 600,\n textTransform: \"uppercase\",\n letterSpacing: \"0.04em\",\n padding: \"8px 16px\",\n background: PAPER,\n borderBottom: `1px solid ${BORDER}`,\n color: \"var(--foreground)\",\n display: \"flex\",\n alignItems: \"center\",\n justifyContent: \"space-between\",\n }}\n >\n {group.label}\n <span style={{ fontSize: \"10px\", fontWeight: 400, color: MUTED, textTransform: \"none\" }}>\n ({groupItems.length} {groupItems.length === 1 ? \"item\" : \"items\"})\n </span>\n </div>\n <ItemsList items={groupItems} isLastGroup={isLastGroup} indexOffset={prevItemCount} />\n </React.Fragment>\n );\n })}\n {hasItems && <ItemsList items={items} isLastGroup={true} indexOffset={hasGroups ? groups.reduce((sum, g) => sum + (g.items ?? []).length, 0) : 0} />}\n </div>\n </div>\n </ComponentActions>\n );\n}\n","\"use client\";\n\nimport React from \"react\";\nimport type { SchemaPayload } from \"../../schemas\";\nimport { ComponentActions } from \"../../shared/ComponentActions\";\nimport { downloadCSV } from \"../../shared/downloadCSV\";\nimport { STATUS_COLORS } from \"../../shared/theme\";\nimport { useTheme } from \"../../shared/ThemeContext\";\n\nconst fmt = (v: number, currency: string) =>\n new Intl.NumberFormat(\"en-US\", { style: \"currency\", currency: currency || \"USD\", minimumFractionDigits: 2 }).format(v);\n\nconst categoryLabels: Record<string, string> = {\n assets: \"ASSETS\",\n liabilities: \"LIABILITIES\",\n equity: \"EQUITY\",\n};\n\nfunction computeSectionTotal(section: SchemaPayload<\"balance-sheet\">[\"sections\"][number]) {\n if (section.total) return section.total;\n const currentPeriod = section.subsections.reduce((sum, sub) =>\n sum + (sub.subtotal?.currentPeriod ?? (sub.items ?? []).reduce((s, i) => s + i.currentPeriod, 0)), 0);\n const priorPeriod = section.subsections.reduce((sum, sub) =>\n sum + (sub.subtotal?.priorPeriod ?? (sub.items ?? []).reduce((s, i) => s + (i.priorPeriod ?? 0), 0)), 0);\n return { currentPeriod, priorPeriod: priorPeriod || undefined };\n}\n\nexport function BalanceSheetResolver(p: SchemaPayload<\"balance-sheet\">) {\n const { BORDER, MUTED, PAPER } = useTheme();\n const hasPrior = !!p.priorPeriodLabel;\n const colSpan = hasPrior ? 3 : 2;\n\n const sectionTotals = new Map((p.sections ?? []).map((s) => [s.category, computeSectionTotal(s)]));\n\n // Balance validation: Assets = Liabilities + Equity\n const assetsTotal = sectionTotals.get(\"assets\")?.currentPeriod ?? 0;\n\n let leTotal: number;\n if (p.totalLiabilitiesAndEquity) {\n leTotal = p.totalLiabilitiesAndEquity?.currentPeriod ?? 0;\n } else {\n leTotal = (sectionTotals.get(\"liabilities\")?.currentPeriod ?? 0) +\n (sectionTotals.get(\"equity\")?.currentPeriod ?? 0);\n }\n\n const balanced = Math.abs(assetsTotal - leTotal) < 0.005;\n\n // CSV export\n const csvCols = [\n { key: \"category\", label: \"Category\" },\n { key: \"subsection\", label: \"Subsection\" },\n { key: \"name\", label: \"Line Item\" },\n { key: \"currentPeriod\", label: p.currentPeriodLabel },\n ...(hasPrior ? [{ key: \"priorPeriod\", label: p.priorPeriodLabel! }] : []),\n ];\n const csvRows = (p.sections ?? []).flatMap((section) =>\n section.subsections.flatMap((sub) =>\n (sub.items ?? []).map((item) => ({\n category: section.category,\n subsection: sub.label,\n name: item.name,\n currentPeriod: item.currentPeriod,\n ...(hasPrior ? { priorPeriod: item.priorPeriod ?? \"\" } : {}),\n }))\n )\n );\n\n return (\n <ComponentActions filename={p.title ?? \"balance-sheet\"} onDownloadCSV={() => downloadCSV(csvCols, csvRows, p.title ?? \"balance-sheet\")}>\n <div style={{ width: \"100%\", display: \"flex\", flexDirection: \"column\", gap: \"10px\" }}>\n {p.metadata && (\n <div style={{ display: \"flex\", flexDirection: \"column\", alignItems: \"center\", gap: \"2px\", position: \"relative\" }}>\n {p.metadata.status && (\n <span style={{\n position: \"absolute\", top: 0, right: 0,\n fontSize: \"10px\", fontWeight: 600, padding: \"2px 8px\", borderRadius: \"9999px\",\n background: STATUS_COLORS[p.metadata.status]?.bg ?? \"#f2f2f2\",\n color: STATUS_COLORS[p.metadata.status]?.color ?? MUTED,\n }}>\n {p.metadata.status.replace(\"-\", \" \").toUpperCase()}\n </span>\n )}\n {p.metadata.companyName && (\n <p style={{ fontFamily: \"var(--font-serif)\", fontSize: \"16px\", fontWeight: 600, color: \"var(--foreground)\", margin: 0, textAlign: \"center\" }}>\n {p.metadata.companyName}\n </p>\n )}\n {(p.metadata.preparedBy || p.metadata.reviewedBy || p.metadata.approvedBy) && (\n <p style={{ fontSize: \"10px\", color: MUTED, margin: 0, textAlign: \"center\" }}>\n {[\n p.metadata.preparedBy && `Prepared by ${p.metadata.preparedBy}`,\n p.metadata.reviewedBy && `Reviewed by ${p.metadata.reviewedBy}`,\n p.metadata.approvedBy && `Approved by ${p.metadata.approvedBy}`,\n ].filter(Boolean).join(\" · \")}\n </p>\n )}\n </div>\n )}\n <div style={{ display: \"flex\", alignItems: \"center\", gap: \"10px\" }}>\n {p.title && (\n <p style={{ fontFamily: \"var(--font-serif)\", fontSize: \"15px\", fontWeight: 400, color: \"var(--foreground)\", letterSpacing: \"-0.01em\", margin: 0 }}>\n {p.title}\n </p>\n )}\n <span style={{\n marginLeft: \"auto\", fontSize: \"11px\", fontWeight: 600, padding: \"2px 8px\", borderRadius: \"9999px\",\n background: balanced ? \"#dcfce7\" : \"#fef2f2\", color: balanced ? \"#15803d\" : \"#dc2626\",\n }}>\n {balanced ? \"✓ A = L + E\" : \"✗ Out of Balance\"}\n </span>\n </div>\n <div style={{ overflowX: \"auto\", borderRadius: \"0.75rem\", border: `1px solid ${BORDER}`, boxShadow: \"0 1px 2px rgba(0,0,0,0.03), 0 4px 12px rgba(0,0,0,0.04)\" }}>\n <table style={{ width: \"100%\", borderCollapse: \"collapse\", minWidth: \"380px\" }}>\n <thead>\n <tr>\n <th style={{\n fontSize: \"11px\", fontWeight: 500, color: MUTED, padding: \"8px 10px\",\n letterSpacing: \"0.02em\", textTransform: \"uppercase\", borderBottom: `1px solid ${BORDER}`,\n background: PAPER, textAlign: \"left\", whiteSpace: \"nowrap\",\n }}>Line Item</th>\n <th style={{\n fontSize: \"11px\", fontWeight: 500, color: MUTED, padding: \"8px 10px\",\n letterSpacing: \"0.02em\", textTransform: \"uppercase\", borderBottom: `1px solid ${BORDER}`,\n background: PAPER, textAlign: \"right\", whiteSpace: \"nowrap\",\n }}>{p.currentPeriodLabel}</th>\n {hasPrior && (\n <th style={{\n fontSize: \"11px\", fontWeight: 500, color: MUTED, padding: \"8px 10px\",\n letterSpacing: \"0.02em\", textTransform: \"uppercase\", borderBottom: `1px solid ${BORDER}`,\n background: PAPER, textAlign: \"right\", whiteSpace: \"nowrap\",\n }}>{p.priorPeriodLabel}</th>\n )}\n </tr>\n </thead>\n <tbody>\n {(p.sections ?? []).map((section) => (\n <React.Fragment key={section.category}>\n {/* Category header */}\n <tr>\n <td colSpan={colSpan} style={{\n padding: \"8px 12px\", fontSize: \"12px\", fontWeight: 600, color: \"var(--foreground)\",\n background: PAPER, borderBottom: `1px solid ${BORDER}`, textTransform: \"uppercase\",\n letterSpacing: \"0.04em\",\n }}>\n {categoryLabels[section.category] ?? section.category}\n </td>\n </tr>\n {section.subsections.map((sub, si) => (\n <React.Fragment key={si}>\n {/* Subsection label */}\n <tr>\n <td colSpan={colSpan} style={{\n padding: \"6px 10px 6px 24px\", fontSize: \"12px\", fontWeight: 600,\n color: \"var(--foreground)\", borderBottom: `1px solid #f2f2f2`,\n }}>\n {sub.label}\n </td>\n </tr>\n {/* Items */}\n {(sub.items ?? []).map((item, ii) => (\n <tr key={ii} style={{ background: \"white\" }}>\n <td style={{ padding: \"6px 10px 6px 40px\", fontSize: \"13px\", color: \"var(--foreground)\", borderBottom: `1px solid #f2f2f2` }}>\n {item.name}\n </td>\n <td style={{ padding: \"6px 10px\", fontSize: \"13px\", fontVariantNumeric: \"tabular-nums\", textAlign: \"right\", borderBottom: `1px solid #f2f2f2` }}>\n {item.currentPeriod !== 0 ? fmt(item.currentPeriod, p.currency) : \"—\"}\n </td>\n {hasPrior && (\n <td style={{ padding: \"6px 10px\", fontSize: \"13px\", fontVariantNumeric: \"tabular-nums\", textAlign: \"right\", borderBottom: `1px solid #f2f2f2` }}>\n {item.priorPeriod != null && item.priorPeriod !== 0 ? fmt(item.priorPeriod, p.currency) : \"—\"}\n </td>\n )}\n </tr>\n ))}\n {/* Subsection subtotal */}\n {sub.subtotal && (\n <tr style={{ background: PAPER }}>\n <td style={{ padding: \"6px 10px 6px 24px\", fontSize: \"12px\", fontWeight: 600, borderTop: `1px solid ${BORDER}`, borderBottom: `1px solid ${BORDER}` }}>\n Total {sub.label}\n </td>\n <td style={{ padding: \"6px 10px\", fontSize: \"12px\", fontWeight: 600, textAlign: \"right\", fontVariantNumeric: \"tabular-nums\", borderTop: `1px solid ${BORDER}`, borderBottom: `1px solid ${BORDER}` }}>\n {fmt(sub.subtotal.currentPeriod, p.currency)}\n </td>\n {hasPrior && (\n <td style={{ padding: \"6px 10px\", fontSize: \"12px\", fontWeight: 600, textAlign: \"right\", fontVariantNumeric: \"tabular-nums\", borderTop: `1px solid ${BORDER}`, borderBottom: `1px solid ${BORDER}` }}>\n {sub.subtotal.priorPeriod != null ? fmt(sub.subtotal.priorPeriod, p.currency) : \"—\"}\n </td>\n )}\n </tr>\n )}\n </React.Fragment>\n ))}\n {/* Category total */}\n {(() => {\n const total = sectionTotals.get(section.category)!;\n return (\n <tr style={{ background: PAPER }}>\n <td style={{ padding: \"8px 10px\", fontSize: \"12px\", fontWeight: 600, borderTop: `1px solid ${BORDER}`, borderBottom: `1px solid ${BORDER}` }}>\n Total {categoryLabels[section.category] ?? section.category}\n </td>\n <td style={{ padding: \"8px 10px\", fontSize: \"12px\", fontWeight: 600, textAlign: \"right\", fontVariantNumeric: \"tabular-nums\", borderTop: `1px solid ${BORDER}`, borderBottom: `1px solid ${BORDER}` }}>\n {fmt(total.currentPeriod, p.currency)}\n </td>\n {hasPrior && (\n <td style={{ padding: \"8px 10px\", fontSize: \"12px\", fontWeight: 600, textAlign: \"right\", fontVariantNumeric: \"tabular-nums\", borderTop: `1px solid ${BORDER}`, borderBottom: `1px solid ${BORDER}` }}>\n {total.priorPeriod != null ? fmt(total.priorPeriod, p.currency) : \"—\"}\n </td>\n )}\n </tr>\n );\n })()}\n </React.Fragment>\n ))}\n {/* Total Liabilities & Equity row */}\n {p.totalLiabilitiesAndEquity && (\n <tr style={{ background: PAPER }}>\n <td style={{ padding: \"10px 10px\", fontSize: \"13px\", fontWeight: 700, borderTop: `2px solid ${BORDER}` }}>\n TOTAL LIABILITIES & EQUITY\n </td>\n <td style={{ padding: \"10px 10px\", fontSize: \"13px\", fontWeight: 700, textAlign: \"right\", fontVariantNumeric: \"tabular-nums\", borderTop: `2px solid ${BORDER}` }}>\n {fmt(p.totalLiabilitiesAndEquity.currentPeriod, p.currency)}\n </td>\n {hasPrior && (\n <td style={{ padding: \"10px 10px\", fontSize: \"13px\", fontWeight: 700, textAlign: \"right\", fontVariantNumeric: \"tabular-nums\", borderTop: `2px solid ${BORDER}` }}>\n {p.totalLiabilitiesAndEquity.priorPeriod != null ? fmt(p.totalLiabilitiesAndEquity.priorPeriod, p.currency) : \"—\"}\n </td>\n )}\n </tr>\n )}\n </tbody>\n </table>\n </div>\n </div>\n </ComponentActions>\n );\n}\n","\"use client\";\n\nimport React from \"react\";\nimport type { SchemaPayload } from \"../../schemas\";\nimport { ComponentActions } from \"../../shared/ComponentActions\";\nimport { downloadCSV } from \"../../shared/downloadCSV\";\nimport { STATUS_COLORS } from \"../../shared/theme\";\nimport { useTheme } from \"../../shared/ThemeContext\";\n\nconst fmt = (v: number, currency: string) =>\n new Intl.NumberFormat(\"en-US\", { style: \"currency\", currency: currency || \"USD\", minimumFractionDigits: 2 }).format(Math.abs(v));\n\nconst fmtSigned = (v: number, currency: string) => {\n if (v === 0 || v == null) return \"—\";\n if (v < 0) return `(${fmt(v, currency)})`;\n return fmt(v, currency);\n};\n\nconst pctFmt = (amount: number, revenue: number) => {\n if (revenue === 0 || amount == null) return \"—\";\n return `${((amount / revenue) * 100).toFixed(1)}%`;\n};\n\nexport function IncomeStatementResolver(p: SchemaPayload<\"income-statement\">) {\n const { BORDER, MUTED, PAPER } = useTheme();\n const currency = p.currency ?? \"USD\";\n const periods = p.periods ?? [];\n const sections = p.sections ?? [];\n const calculatedTotals = p.calculatedTotals ?? {} as Record<string, unknown>;\n const showPct = p.showPercentOfRevenue ?? false;\n\n // Revenue base per period (first section assumed to be revenue), summing\n // DETAIL line items only. A \"Total Revenue\" row inside the revenue section\n // would otherwise be double-counted, halving every %-of-revenue (audit IS1).\n // Prefer an explicit `isSubtotal` flag; fall back to a name heuristic so\n // existing payloads without the flag are still correct.\n const isTotalRow = (li: { name?: string; isSubtotal?: boolean }) =>\n li.isSubtotal === true || /^\\s*(total|subtotal)\\b/i.test(li.name ?? \"\");\n const revenueTotals = periods.map((_, pi) =>\n (sections[0]?.lineItems ?? [])\n .filter((li) => !isTotalRow(li))\n .reduce((sum, li) => sum + ((li.amounts ?? [])[pi] ?? 0), 0) ?? 0\n );\n\n // Build CSV data\n const csvCols = [\n { key: \"section\", label: \"Section\" },\n { key: \"name\", label: \"Line Item\" },\n ...periods.map((period) => ({ key: period, label: period })),\n ];\n const csvRows: Record<string, string | number>[] = [];\n for (const section of sections) {\n for (const li of (section.lineItems ?? [])) {\n const row: Record<string, string | number> = { section: section.label, name: li.name };\n periods.forEach((period, pi) => { row[period] = (li.amounts ?? [])[pi] ?? 0; });\n csvRows.push(row);\n }\n }\n const grossProfit = (calculatedTotals as any).grossProfit as number[] | undefined;\n const operatingIncome = (calculatedTotals as any).operatingIncome as number[] | undefined;\n const rawNetIncome = (calculatedTotals as any).netIncome as number[] | undefined;\n const netIncome: number[] = rawNetIncome && rawNetIncome.length > 0\n ? rawNetIncome\n : periods.map((_, pi) => {\n let total = 0;\n for (const section of sections) {\n const sectionSum = (section.lineItems ?? []).reduce(\n (s, li) => s + ((li.amounts ?? [])[pi] ?? 0), 0\n );\n total += sectionSum;\n }\n return total;\n });\n if (grossProfit) {\n const row: Record<string, string | number> = { section: \"\", name: \"GROSS PROFIT\" };\n periods.forEach((period, pi) => { row[period] = grossProfit[pi] ?? 0; });\n csvRows.push(row);\n }\n if (operatingIncome) {\n const row: Record<string, string | number> = { section: \"\", name: \"OPERATING INCOME\" };\n periods.forEach((period, pi) => { row[period] = operatingIncome[pi] ?? 0; });\n csvRows.push(row);\n }\n {\n const row: Record<string, string | number> = { section: \"\", name: \"NET INCOME\" };\n periods.forEach((period, pi) => { row[period] = netIncome[pi] ?? 0; });\n csvRows.push(row);\n }\n\n const colCount = showPct ? 1 + periods.length * 2 : 1 + periods.length;\n\n return (\n <ComponentActions filename={p.title ?? \"income-statement\"} onDownloadCSV={() => downloadCSV(csvCols, csvRows, p.title ?? \"income-statement\")}>\n <div style={{ width: \"100%\", display: \"flex\", flexDirection: \"column\", gap: \"10px\" }}>\n {p.metadata && (\n <div style={{ display: \"flex\", flexDirection: \"column\", alignItems: \"center\", gap: \"2px\", position: \"relative\" }}>\n {p.metadata.status && (\n <span style={{\n position: \"absolute\", top: 0, right: 0,\n fontSize: \"10px\", fontWeight: 600, padding: \"2px 8px\", borderRadius: \"9999px\",\n background: STATUS_COLORS[p.metadata.status]?.bg ?? \"#f2f2f2\",\n color: STATUS_COLORS[p.metadata.status]?.color ?? MUTED,\n }}>\n {p.metadata.status.replace(\"-\", \" \").toUpperCase()}\n </span>\n )}\n {p.metadata.companyName && (\n <p style={{ fontFamily: \"var(--font-serif)\", fontSize: \"16px\", fontWeight: 600, color: \"var(--foreground)\", margin: 0, textAlign: \"center\" }}>\n {p.metadata.companyName}\n </p>\n )}\n {(p.metadata.preparedBy || p.metadata.reviewedBy || p.metadata.approvedBy) && (\n <p style={{ fontSize: \"10px\", color: MUTED, margin: 0, textAlign: \"center\" }}>\n {[\n p.metadata.preparedBy && `Prepared by ${p.metadata.preparedBy}`,\n p.metadata.reviewedBy && `Reviewed by ${p.metadata.reviewedBy}`,\n p.metadata.approvedBy && `Approved by ${p.metadata.approvedBy}`,\n ].filter(Boolean).join(\" · \")}\n </p>\n )}\n </div>\n )}\n {p.title && (\n <p style={{ fontFamily: \"var(--font-serif)\", fontSize: \"15px\", fontWeight: 400, color: \"var(--foreground)\", letterSpacing: \"-0.01em\", margin: 0 }}>\n {p.title}\n </p>\n )}\n <div style={{ overflowX: \"auto\", borderRadius: \"0.75rem\", border: `1px solid ${BORDER}`, boxShadow: \"0 1px 2px rgba(0,0,0,0.03), 0 4px 12px rgba(0,0,0,0.05)\" }}>\n <table style={{ width: \"100%\", borderCollapse: \"collapse\", minWidth: \"380px\" }}>\n <thead>\n <tr>\n <th style={{\n fontSize: \"11px\", fontWeight: 500, color: MUTED, padding: \"8px 10px\",\n letterSpacing: \"0.02em\", textTransform: \"uppercase\", borderBottom: `1px solid ${BORDER}`,\n background: PAPER, textAlign: \"left\", whiteSpace: \"nowrap\",\n }}> </th>\n {periods.map((period) => (\n <React.Fragment key={period}>\n <th style={{\n fontSize: \"11px\", fontWeight: 500, color: MUTED, padding: \"8px 10px\",\n letterSpacing: \"0.02em\", textTransform: \"uppercase\", borderBottom: `1px solid ${BORDER}`,\n background: PAPER, textAlign: \"right\", whiteSpace: \"nowrap\",\n }}>{period}</th>\n {showPct && (\n <th style={{\n fontSize: \"11px\", fontWeight: 500, color: MUTED, padding: \"8px 6px\",\n letterSpacing: \"0.02em\", textTransform: \"uppercase\", borderBottom: `1px solid ${BORDER}`,\n background: PAPER, textAlign: \"right\", whiteSpace: \"nowrap\",\n }}>%</th>\n )}\n </React.Fragment>\n ))}\n </tr>\n </thead>\n <tbody>\n {sections.map((section, si) => {\n const isSubtotal = section.sectionType === \"subtotal\";\n return (\n <React.Fragment key={si}>\n {/* Section header */}\n <tr>\n <td colSpan={colCount} style={{\n padding: \"8px 12px\", fontSize: \"12px\", fontWeight: 600, color: \"var(--foreground)\",\n background: PAPER, borderBottom: `1px solid ${BORDER}`, textTransform: \"uppercase\",\n letterSpacing: \"0.04em\",\n }}>\n {section.label}\n </td>\n </tr>\n {/* Line items */}\n {(section.lineItems ?? []).map((li, li_i) => {\n const indent = li.indent ?? 0;\n const amounts = li.amounts ?? [];\n return (\n <tr key={li_i} style={{\n background: isSubtotal ? PAPER : \"white\",\n fontWeight: isSubtotal ? 600 : 400,\n borderTop: isSubtotal ? `1px solid ${BORDER}` : undefined,\n }}>\n <td style={{\n padding: \"6px 10px\", paddingLeft: `${12 + indent * 16}px`,\n fontSize: \"13px\", color: \"var(--foreground)\",\n borderBottom: `1px solid #f2f2f2`,\n }}>\n {li.name}\n </td>\n {periods.map((_, pi) => {\n const val = amounts[pi] ?? 0;\n const isNeg = val < 0;\n return (\n <React.Fragment key={pi}>\n <td style={{\n padding: \"6px 10px\", fontSize: \"13px\",\n fontVariantNumeric: \"tabular-nums\", textAlign: \"right\",\n borderBottom: `1px solid #f2f2f2`,\n color: isNeg ? \"#dc2626\" : \"var(--foreground)\",\n }}>\n {fmtSigned(val, currency)}\n </td>\n {showPct && (\n <td style={{\n padding: \"6px 6px\", fontSize: \"12px\",\n fontVariantNumeric: \"tabular-nums\", textAlign: \"right\",\n borderBottom: `1px solid #f2f2f2`, color: MUTED,\n }}>\n {val === 0 ? \"—\" : pctFmt(val, revenueTotals[pi])}\n </td>\n )}\n </React.Fragment>\n );\n })}\n </tr>\n );\n })}\n </React.Fragment>\n );\n })}\n\n {/* Gross Profit */}\n {grossProfit && (\n <tr style={{ background: PAPER }}>\n <td style={{\n padding: \"8px 10px\", fontSize: \"12px\", fontWeight: 600,\n borderTop: `1px solid ${BORDER}`, borderBottom: `1px solid ${BORDER}`,\n }}>GROSS PROFIT</td>\n {periods.map((_, pi) => {\n const val = grossProfit[pi] ?? 0;\n const isNeg = val < 0;\n return (\n <React.Fragment key={pi}>\n <td style={{\n padding: \"8px 10px\", fontSize: \"12px\", fontWeight: 600,\n fontVariantNumeric: \"tabular-nums\", textAlign: \"right\",\n borderTop: `1px solid ${BORDER}`, borderBottom: `1px solid ${BORDER}`,\n color: isNeg ? \"#dc2626\" : \"var(--foreground)\",\n }}>{fmtSigned(val, currency)}</td>\n {showPct && (\n <td style={{\n padding: \"8px 6px\", fontSize: \"12px\",\n fontVariantNumeric: \"tabular-nums\", textAlign: \"right\",\n borderTop: `1px solid ${BORDER}`, borderBottom: `1px solid ${BORDER}`,\n color: MUTED,\n }}>{pctFmt(val, revenueTotals[pi])}</td>\n )}\n </React.Fragment>\n );\n })}\n </tr>\n )}\n\n {/* Operating Income */}\n {operatingIncome && (\n <tr style={{ background: PAPER }}>\n <td style={{\n padding: \"8px 10px\", fontSize: \"12px\", fontWeight: 600,\n borderTop: `1px solid ${BORDER}`, borderBottom: `1px solid ${BORDER}`,\n }}>OPERATING INCOME</td>\n {periods.map((_, pi) => {\n const val = operatingIncome[pi] ?? 0;\n const isNeg = val < 0;\n return (\n <React.Fragment key={pi}>\n <td style={{\n padding: \"8px 10px\", fontSize: \"12px\", fontWeight: 600,\n fontVariantNumeric: \"tabular-nums\", textAlign: \"right\",\n borderTop: `1px solid ${BORDER}`, borderBottom: `1px solid ${BORDER}`,\n color: isNeg ? \"#dc2626\" : \"var(--foreground)\",\n }}>{fmtSigned(val, currency)}</td>\n {showPct && (\n <td style={{\n padding: \"8px 6px\", fontSize: \"12px\",\n fontVariantNumeric: \"tabular-nums\", textAlign: \"right\",\n borderTop: `1px solid ${BORDER}`, borderBottom: `1px solid ${BORDER}`,\n color: MUTED,\n }}>{pctFmt(val, revenueTotals[pi])}</td>\n )}\n </React.Fragment>\n );\n })}\n </tr>\n )}\n\n {/* Net Income */}\n <tr style={{ background: \"white\" }}>\n <td style={{\n padding: \"10px 10px\", fontSize: \"13px\", fontWeight: 700,\n borderTop: `2px solid ${BORDER}`,\n }}>NET INCOME</td>\n {periods.map((_, pi) => {\n const val = netIncome[pi] ?? 0;\n const isNeg = val < 0;\n return (\n <React.Fragment key={pi}>\n <td style={{\n padding: \"10px 10px\", fontSize: \"13px\", fontWeight: 700,\n fontVariantNumeric: \"tabular-nums\", textAlign: \"right\",\n borderTop: `2px solid ${BORDER}`,\n color: isNeg ? \"#dc2626\" : \"var(--foreground)\",\n }}>{fmtSigned(val, currency)}</td>\n {showPct && (\n <td style={{\n padding: \"10px 6px\", fontSize: \"12px\",\n fontVariantNumeric: \"tabular-nums\", textAlign: \"right\",\n borderTop: `2px solid ${BORDER}`, color: MUTED,\n }}>{pctFmt(val, revenueTotals[pi])}</td>\n )}\n </React.Fragment>\n );\n })}\n </tr>\n </tbody>\n </table>\n </div>\n </div>\n </ComponentActions>\n );\n}\n","\"use client\";\n\nimport React from \"react\";\nimport type { SchemaPayload } from \"../../schemas\";\nimport { ComponentActions } from \"../../shared/ComponentActions\";\nimport { downloadCSV } from \"../../shared/downloadCSV\";\nimport { STATUS_COLORS } from \"../../shared/theme\";\nimport { useTheme } from \"../../shared/ThemeContext\";\n\nconst activityLabels: Record<string, string> = {\n operating: \"Cash Flows from Operating Activities\",\n investing: \"Cash Flows from Investing Activities\",\n financing: \"Cash Flows from Financing Activities\",\n};\n\nconst fmt = (v: number, currency: string) => {\n if (v === 0) return \"—\";\n const abs = Math.abs(v);\n const formatted = new Intl.NumberFormat(\"en-US\", {\n style: \"currency\",\n currency: currency || \"USD\",\n minimumFractionDigits: 2,\n }).format(abs);\n return v < 0 ? `(${formatted})` : formatted;\n};\n\nfunction deriveNetCash(a: SchemaPayload<\"cash-flow-statement\">[\"activities\"][number]) {\n if (a.netCash != null && a.netCash !== 0) return a.netCash;\n return (a.lineItems ?? [])\n .filter((li) => !li.isSubtotal)\n .reduce((sum, li) => sum + li.amount, 0);\n}\n\nexport function CashFlowStatementResolver(p: SchemaPayload<\"cash-flow-statement\">) {\n const { BORDER, MUTED, PAPER } = useTheme();\n const activities = (p.activities ?? []).map((a) => ({\n ...a,\n lineItems: a.lineItems ?? [],\n netCash: deriveNetCash(a),\n }));\n\n const hasPrior =\n p.priorPeriodLabel != null ||\n activities.some(\n (a) =>\n a.priorNetCash != null ||\n a.lineItems.some((li) => li.priorAmount != null)\n );\n\n const netChange = p.netChange != null && p.netChange !== 0\n ? p.netChange\n : activities.reduce((sum, a) => sum + a.netCash, 0);\n const endingCash = p.endingCash != null && p.endingCash !== 0\n ? p.endingCash\n : (p.beginningCash ?? 0) + netChange;\n\n const colCount = hasPrior ? 3 : 2;\n const currentLabel = p.periodLabel ?? \"Current Period\";\n const priorLabel = p.priorPeriodLabel ?? \"Prior Period\";\n\n const csvCols = [\n { key: \"activity\", label: \"Activity\" },\n { key: \"name\", label: \"Line Item\" },\n { key: \"amount\", label: currentLabel },\n ...(hasPrior ? [{ key: \"priorAmount\", label: priorLabel }] : []),\n ];\n\n const csvRows = activities.flatMap((a) => [\n ...a.lineItems.map((li) => ({\n activity: activityLabels[a.activityType] ?? a.activityType,\n name: li.name,\n amount: li.amount,\n priorAmount: li.priorAmount ?? \"\",\n })),\n {\n activity: activityLabels[a.activityType] ?? a.activityType,\n name: `Net Cash from ${activityLabels[a.activityType]?.replace(\"Cash Flows from \", \"\") ?? a.activityType}`,\n amount: a.netCash,\n priorAmount: a.priorNetCash ?? \"\",\n },\n ]);\n\n const negStyle = (v: number): React.CSSProperties =>\n v < 0 ? { color: \"#dc2626\" } : {};\n\n return (\n <ComponentActions\n filename={p.title ?? \"cash-flow-statement\"}\n onDownloadCSV={() =>\n downloadCSV(csvCols, csvRows, p.title ?? \"cash-flow-statement\")\n }\n >\n <div\n style={{\n width: \"100%\",\n display: \"flex\",\n flexDirection: \"column\",\n gap: \"10px\",\n }}\n >\n {p.metadata && (\n <div style={{ display: \"flex\", flexDirection: \"column\", alignItems: \"center\", gap: \"2px\", position: \"relative\" }}>\n {p.metadata.status && (\n <span style={{\n position: \"absolute\", top: 0, right: 0,\n fontSize: \"10px\", fontWeight: 600, padding: \"2px 8px\", borderRadius: \"9999px\",\n background: STATUS_COLORS[p.metadata.status]?.bg ?? \"#f2f2f2\",\n color: STATUS_COLORS[p.metadata.status]?.color ?? MUTED,\n }}>\n {p.metadata.status.replace(\"-\", \" \").toUpperCase()}\n </span>\n )}\n {p.metadata.companyName && (\n <p style={{ fontFamily: \"var(--font-serif)\", fontSize: \"16px\", fontWeight: 600, color: \"var(--foreground)\", margin: 0, textAlign: \"center\" }}>\n {p.metadata.companyName}\n </p>\n )}\n {(p.metadata.preparedBy || p.metadata.reviewedBy || p.metadata.approvedBy) && (\n <p style={{ fontSize: \"10px\", color: MUTED, margin: 0, textAlign: \"center\" }}>\n {[\n p.metadata.preparedBy && `Prepared by ${p.metadata.preparedBy}`,\n p.metadata.reviewedBy && `Reviewed by ${p.metadata.reviewedBy}`,\n p.metadata.approvedBy && `Approved by ${p.metadata.approvedBy}`,\n ].filter(Boolean).join(\" · \")}\n </p>\n )}\n </div>\n )}\n {p.title && (\n <p\n style={{\n fontFamily: \"var(--font-serif)\",\n fontSize: \"15px\",\n fontWeight: 400,\n color: \"var(--foreground)\",\n letterSpacing: \"-0.01em\",\n margin: 0,\n }}\n >\n {p.title}\n </p>\n )}\n\n <div\n style={{\n overflowX: \"auto\",\n borderRadius: \"0.75rem\",\n border: `1px solid ${BORDER}`,\n boxShadow:\n \"0 1px 2px rgba(0,0,0,0.03), 0 4px 12px rgba(0,0,0,0.05)\",\n }}\n >\n <table\n style={{\n width: \"100%\",\n borderCollapse: \"collapse\",\n minWidth: \"380px\",\n }}\n >\n <thead>\n <tr>\n <th\n style={{\n fontSize: \"11px\",\n fontWeight: 500,\n color: MUTED,\n padding: \"8px 10px\",\n letterSpacing: \"0.02em\",\n textTransform: \"uppercase\",\n borderBottom: `1px solid ${BORDER}`,\n background: PAPER,\n textAlign: \"left\",\n whiteSpace: \"nowrap\",\n }}\n >\n Line Item\n </th>\n <th\n style={{\n fontSize: \"11px\",\n fontWeight: 500,\n color: MUTED,\n padding: \"8px 10px\",\n letterSpacing: \"0.02em\",\n textTransform: \"uppercase\",\n borderBottom: `1px solid ${BORDER}`,\n background: PAPER,\n textAlign: \"right\",\n whiteSpace: \"nowrap\",\n }}\n >\n {currentLabel}\n </th>\n {hasPrior && (\n <th\n style={{\n fontSize: \"11px\",\n fontWeight: 500,\n color: MUTED,\n padding: \"8px 10px\",\n letterSpacing: \"0.02em\",\n textTransform: \"uppercase\",\n borderBottom: `1px solid ${BORDER}`,\n background: PAPER,\n textAlign: \"right\",\n whiteSpace: \"nowrap\",\n }}\n >\n {priorLabel}\n </th>\n )}\n </tr>\n </thead>\n <tbody>\n {activities.map((activity, ai) => (\n <React.Fragment key={activity.activityType}>\n {/* Blank separator row between activities */}\n {ai > 0 && (\n <tr>\n <td\n colSpan={colCount}\n style={{ padding: \"6px 0\", borderBottom: \"none\" }}\n />\n </tr>\n )}\n\n {/* Activity header */}\n <tr>\n <td\n colSpan={colCount}\n style={{\n padding: \"8px 12px\",\n fontSize: \"12px\",\n fontWeight: 600,\n color: \"var(--foreground)\",\n background: PAPER,\n borderBottom: `1px solid ${BORDER}`,\n textTransform: \"uppercase\",\n letterSpacing: \"0.04em\",\n }}\n >\n {activityLabels[activity.activityType] ??\n activity.activityType}\n </td>\n </tr>\n\n {/* Line items */}\n {activity.lineItems.map((li, li_i) => {\n const indent = li.indent ?? 0;\n const isSub = li.isSubtotal ?? false;\n return (\n <tr\n key={li_i}\n style={{\n background: isSub ? PAPER : \"white\",\n }}\n >\n <td\n style={{\n padding: \"6px 10px\",\n paddingLeft: `${12 + indent * 16}px`,\n fontSize: \"13px\",\n fontWeight: isSub ? 600 : 400,\n color: \"var(--foreground)\",\n borderBottom: `1px solid #f2f2f2`,\n }}\n >\n {li.name}\n </td>\n <td\n style={{\n padding: \"6px 10px\",\n fontSize: \"13px\",\n fontVariantNumeric: \"tabular-nums\",\n textAlign: \"right\",\n fontWeight: isSub ? 600 : 400,\n borderBottom: `1px solid #f2f2f2`,\n ...negStyle(li.amount),\n }}\n >\n {fmt(li.amount, p.currency)}\n </td>\n {hasPrior && (\n <td\n style={{\n padding: \"6px 10px\",\n fontSize: \"13px\",\n fontVariantNumeric: \"tabular-nums\",\n textAlign: \"right\",\n fontWeight: isSub ? 600 : 400,\n borderBottom: `1px solid #f2f2f2`,\n ...(li.priorAmount != null\n ? negStyle(li.priorAmount)\n : {}),\n }}\n >\n {li.priorAmount != null\n ? fmt(li.priorAmount, p.currency)\n : \"—\"}\n </td>\n )}\n </tr>\n );\n })}\n\n {/* Net Cash row */}\n <tr style={{ background: PAPER }}>\n <td\n style={{\n padding: \"6px 10px\",\n fontSize: \"12px\",\n fontWeight: 600,\n borderTop: `1px solid ${BORDER}`,\n borderBottom: `1px solid ${BORDER}`,\n }}\n >\n Net Cash from{\" \"}\n {activityLabels[activity.activityType]\n ?.replace(\"Cash Flows from \", \"\") ??\n activity.activityType}\n </td>\n <td\n style={{\n padding: \"6px 10px\",\n fontSize: \"12px\",\n fontWeight: 600,\n textAlign: \"right\",\n fontVariantNumeric: \"tabular-nums\",\n borderTop: `1px solid ${BORDER}`,\n borderBottom: `1px solid ${BORDER}`,\n ...negStyle(activity.netCash),\n }}\n >\n {fmt(activity.netCash, p.currency)}\n </td>\n {hasPrior && (\n <td\n style={{\n padding: \"6px 10px\",\n fontSize: \"12px\",\n fontWeight: 600,\n textAlign: \"right\",\n fontVariantNumeric: \"tabular-nums\",\n borderTop: `1px solid ${BORDER}`,\n borderBottom: `1px solid ${BORDER}`,\n ...(activity.priorNetCash != null\n ? negStyle(activity.priorNetCash)\n : {}),\n }}\n >\n {activity.priorNetCash != null\n ? fmt(activity.priorNetCash, p.currency)\n : \"—\"}\n </td>\n )}\n </tr>\n </React.Fragment>\n ))}\n\n {/* Blank separator before totals */}\n <tr>\n <td\n colSpan={colCount}\n style={{ padding: \"6px 0\", borderBottom: \"none\" }}\n />\n </tr>\n\n {/* NET CHANGE IN CASH */}\n <tr style={{ background: \"white\" }}>\n <td\n style={{\n padding: \"8px 10px\",\n fontSize: \"13px\",\n fontWeight: 700,\n borderTop: `2px solid ${BORDER}`,\n borderBottom: `1px solid #f2f2f2`,\n }}\n >\n NET CHANGE IN CASH\n </td>\n <td\n style={{\n padding: \"8px 10px\",\n fontSize: \"13px\",\n fontWeight: 700,\n textAlign: \"right\",\n fontVariantNumeric: \"tabular-nums\",\n borderTop: `2px solid ${BORDER}`,\n borderBottom: `1px solid #f2f2f2`,\n ...negStyle(netChange),\n }}\n >\n {fmt(netChange, p.currency)}\n </td>\n {hasPrior && (\n <td\n style={{\n padding: \"8px 10px\",\n fontSize: \"13px\",\n fontWeight: 700,\n textAlign: \"right\",\n fontVariantNumeric: \"tabular-nums\",\n borderTop: `2px solid ${BORDER}`,\n borderBottom: `1px solid #f2f2f2`,\n ...(p.priorNetChange != null\n ? negStyle(p.priorNetChange)\n : {}),\n }}\n >\n {p.priorNetChange != null\n ? fmt(p.priorNetChange, p.currency)\n : \"—\"}\n </td>\n )}\n </tr>\n\n {/* Beginning Cash Balance */}\n <tr style={{ background: \"white\" }}>\n <td\n style={{\n padding: \"6px 10px\",\n fontSize: \"13px\",\n fontWeight: 400,\n borderBottom: `1px solid #f2f2f2`,\n }}\n >\n Beginning Cash Balance\n </td>\n <td\n style={{\n padding: \"6px 10px\",\n fontSize: \"13px\",\n fontVariantNumeric: \"tabular-nums\",\n textAlign: \"right\",\n borderBottom: `1px solid #f2f2f2`,\n ...negStyle(p.beginningCash),\n }}\n >\n {fmt(p.beginningCash, p.currency)}\n </td>\n {hasPrior && (\n <td\n style={{\n padding: \"6px 10px\",\n fontSize: \"13px\",\n fontVariantNumeric: \"tabular-nums\",\n textAlign: \"right\",\n borderBottom: `1px solid #f2f2f2`,\n ...(p.priorBeginningCash != null\n ? negStyle(p.priorBeginningCash)\n : {}),\n }}\n >\n {p.priorBeginningCash != null\n ? fmt(p.priorBeginningCash, p.currency)\n : \"—\"}\n </td>\n )}\n </tr>\n\n {/* ENDING CASH BALANCE */}\n <tr style={{ background: \"white\" }}>\n <td\n style={{\n padding: \"10px 10px\",\n fontSize: \"14px\",\n fontWeight: 700,\n borderTop: `2px solid ${BORDER}`,\n }}\n >\n ENDING CASH BALANCE\n </td>\n <td\n style={{\n padding: \"10px 10px\",\n fontSize: \"14px\",\n fontWeight: 700,\n textAlign: \"right\",\n fontVariantNumeric: \"tabular-nums\",\n borderTop: `2px solid ${BORDER}`,\n ...negStyle(endingCash),\n }}\n >\n {fmt(endingCash, p.currency)}\n </td>\n {hasPrior && (\n <td\n style={{\n padding: \"10px 10px\",\n fontSize: \"14px\",\n fontWeight: 700,\n textAlign: \"right\",\n fontVariantNumeric: \"tabular-nums\",\n borderTop: `2px solid ${BORDER}`,\n ...(p.priorEndingCash != null\n ? negStyle(p.priorEndingCash)\n : {}),\n }}\n >\n {p.priorEndingCash != null\n ? fmt(p.priorEndingCash, p.currency)\n : \"—\"}\n </td>\n )}\n </tr>\n </tbody>\n </table>\n </div>\n </div>\n </ComponentActions>\n );\n}\n","\"use client\";\n\nimport React from \"react\";\nimport type { SchemaPayload } from \"../../schemas\";\nimport { ComponentActions } from \"../../shared/ComponentActions\";\nimport { downloadCSV } from \"../../shared/downloadCSV\";\nimport { ACCOUNT_TYPE_COLORS } from \"../../shared/theme\";\nimport { useTheme } from \"../../shared/ThemeContext\";\n\nconst fmt = (v: number, currency: string) =>\n new Intl.NumberFormat(\"en-US\", { style: \"currency\", currency: currency || \"USD\", minimumFractionDigits: 2 }).format(v);\n\nconst fmtBalance = (v: number, currency: string) => {\n if (v < 0) return `(${fmt(Math.abs(v), currency)})`;\n return fmt(v, currency);\n};\n\nconst formatDate = (iso: string) => {\n const d = new Date(iso);\n if (isNaN(d.getTime())) return iso;\n return d.toLocaleDateString(\"en-US\", { month: \"short\", day: \"numeric\", year: \"numeric\" });\n};\n\nconst accountTypeBadge = ACCOUNT_TYPE_COLORS as Record<string, { bg: string; color: string }>;\n\nexport function GeneralLedgerResolver(p: SchemaPayload<\"general-ledger\">) {\n const { BORDER, MUTED, PAPER } = useTheme();\n const csvCols = [\n { key: \"date\", label: \"Date\" },\n { key: \"reference\", label: \"Reference\" },\n { key: \"description\", label: \"Description\" },\n { key: \"debit\", label: \"Debit\" },\n { key: \"credit\", label: \"Credit\" },\n { key: \"runningBalance\", label: \"Balance\" },\n ];\n const csvRows = (p.transactions ?? []).map((t) => ({\n date: t.date,\n reference: t.reference ?? \"\",\n description: t.description,\n debit: t.debit,\n credit: t.credit,\n runningBalance: t.runningBalance,\n }));\n\n const badge = p.account?.accountType ? accountTypeBadge[p.account?.accountType] : null;\n\n return (\n <ComponentActions\n filename={p.title ?? \"general-ledger\"}\n onDownloadCSV={() => downloadCSV(csvCols, csvRows, p.title ?? \"general-ledger\")}\n >\n <div style={{ width: \"100%\", display: \"flex\", flexDirection: \"column\", gap: \"10px\" }}>\n {p.title && (\n <p\n style={{\n fontFamily: \"var(--font-serif)\",\n fontSize: \"15px\",\n fontWeight: 400,\n color: \"var(--foreground)\",\n letterSpacing: \"-0.01em\",\n margin: 0,\n }}\n >\n {p.title}\n </p>\n )}\n\n {/* Account header */}\n <div style={{ display: \"flex\", alignItems: \"center\", gap: \"8px\", flexWrap: \"wrap\" }}>\n <span\n style={{\n fontFamily: \"monospace\",\n fontSize: \"12px\",\n background: PAPER,\n borderRadius: \"6px\",\n padding: \"2px 8px\",\n color: \"var(--foreground)\",\n }}\n >\n {p.account?.code ?? ''}\n </span>\n <span style={{ fontSize: \"14px\", fontWeight: 700, color: \"var(--foreground)\" }}>\n {p.account?.name ?? ''}\n </span>\n {badge && p.account?.accountType && (\n <span\n style={{\n fontSize: \"10px\",\n fontWeight: 600,\n padding: \"2px 8px\",\n borderRadius: \"9999px\",\n background: badge.bg,\n color: badge.color,\n textTransform: \"capitalize\",\n }}\n >\n {p.account?.accountType}\n </span>\n )}\n {p.dateRange && (\n <span style={{ fontSize: \"11px\", color: MUTED, marginLeft: \"auto\" }}>\n {formatDate(p.dateRange?.from)} — {formatDate(p.dateRange?.to)}\n </span>\n )}\n </div>\n\n {/* Table */}\n <div\n style={{\n overflowX: \"auto\",\n borderRadius: \"0.75rem\",\n border: `1px solid ${BORDER}`,\n boxShadow: \"0 1px 2px rgba(0,0,0,0.03), 0 4px 12px rgba(0,0,0,0.04)\",\n }}\n >\n <table style={{ width: \"100%\", borderCollapse: \"collapse\", minWidth: \"540px\" }}>\n <thead>\n <tr>\n {[\"Date\", \"Reference\", \"Description\", \"Debit\", \"Credit\", \"Balance\"].map((h, i) => (\n <th\n key={h}\n style={{\n fontSize: \"11px\",\n fontWeight: 500,\n color: MUTED,\n padding: \"8px 10px\",\n letterSpacing: \"0.02em\",\n textTransform: \"uppercase\",\n borderBottom: `1px solid ${BORDER}`,\n background: PAPER,\n textAlign: i >= 3 ? \"right\" : \"left\",\n whiteSpace: \"nowrap\",\n }}\n >\n {h}\n </th>\n ))}\n </tr>\n </thead>\n <tbody>\n {/* Opening balance row */}\n <tr style={{ background: PAPER }}>\n <td style={{ padding: \"6px 10px\", borderBottom: `1px solid ${BORDER}` }} />\n <td style={{ padding: \"6px 10px\", borderBottom: `1px solid ${BORDER}` }} />\n <td\n style={{\n padding: \"6px 10px\",\n fontSize: \"13px\",\n fontWeight: 700,\n color: \"var(--foreground)\",\n borderBottom: `1px solid ${BORDER}`,\n }}\n >\n Opening Balance\n </td>\n <td style={{ padding: \"6px 10px\", borderBottom: `1px solid ${BORDER}` }} />\n <td style={{ padding: \"6px 10px\", borderBottom: `1px solid ${BORDER}` }} />\n <td\n style={{\n padding: \"6px 10px\",\n fontSize: \"13px\",\n fontWeight: 700,\n fontVariantNumeric: \"tabular-nums\",\n textAlign: \"right\",\n borderBottom: `1px solid ${BORDER}`,\n color: (p.openingBalance ?? 0) < 0 ? \"#dc2626\" : \"var(--foreground)\",\n }}\n >\n {fmtBalance(p.openingBalance ?? 0, p.currency)}\n </td>\n </tr>\n\n {/* Transaction rows */}\n {(p.transactions ?? []).map((t, i) => (\n <tr key={i} style={{ background: i % 2 === 0 ? \"white\" : \"#fafafa\" }}>\n <td\n style={{\n padding: \"6px 10px\",\n fontSize: \"12px\",\n color: MUTED,\n borderBottom: `1px solid #f2f2f2`,\n whiteSpace: \"nowrap\",\n }}\n >\n {t.date}\n </td>\n <td\n style={{\n padding: \"6px 10px\",\n fontSize: \"12px\",\n fontFamily: \"monospace\",\n color: MUTED,\n borderBottom: `1px solid #f2f2f2`,\n }}\n >\n {t.reference || \"—\"}\n </td>\n <td\n style={{\n padding: \"6px 10px\",\n fontSize: \"13px\",\n color: \"var(--foreground)\",\n borderBottom: `1px solid #f2f2f2`,\n maxWidth: \"250px\",\n overflow: \"hidden\",\n textOverflow: \"ellipsis\",\n whiteSpace: \"nowrap\",\n }}\n >\n {t.description}\n </td>\n <td\n style={{\n padding: \"6px 10px\",\n fontSize: \"13px\",\n fontVariantNumeric: \"tabular-nums\",\n textAlign: \"right\",\n borderBottom: `1px solid #f2f2f2`,\n }}\n >\n {t.debit > 0 ? fmt(t.debit, p.currency) : \"—\"}\n </td>\n <td\n style={{\n padding: \"6px 10px\",\n fontSize: \"13px\",\n fontVariantNumeric: \"tabular-nums\",\n textAlign: \"right\",\n borderBottom: `1px solid #f2f2f2`,\n }}\n >\n {t.credit > 0 ? fmt(t.credit, p.currency) : \"—\"}\n </td>\n <td\n style={{\n padding: \"6px 10px\",\n fontSize: \"13px\",\n fontWeight: 700,\n fontVariantNumeric: \"tabular-nums\",\n textAlign: \"right\",\n borderBottom: `1px solid #f2f2f2`,\n color: t.runningBalance < 0 ? \"#dc2626\" : \"var(--foreground)\",\n }}\n >\n {fmtBalance(t.runningBalance, p.currency)}\n </td>\n </tr>\n ))}\n\n {/* Closing balance row */}\n <tr style={{ background: PAPER }}>\n <td\n colSpan={5}\n style={{\n padding: \"10px 10px\",\n fontSize: \"13px\",\n fontWeight: 700,\n borderTop: `2px solid ${BORDER}`,\n color: \"var(--foreground)\",\n }}\n >\n Closing Balance\n </td>\n <td\n style={{\n padding: \"10px 10px\",\n fontSize: \"13px\",\n fontWeight: 700,\n fontVariantNumeric: \"tabular-nums\",\n textAlign: \"right\",\n borderTop: `2px solid ${BORDER}`,\n color: p.closingBalance < 0 ? \"#dc2626\" : \"var(--foreground)\",\n }}\n >\n {fmtBalance(p.closingBalance, p.currency)}\n </td>\n </tr>\n </tbody>\n </table>\n </div>\n </div>\n </ComponentActions>\n );\n}\n","\"use client\";\n\nimport React from \"react\";\nimport type { SchemaPayload } from \"../../schemas\";\nimport { ComponentActions } from \"../../shared/ComponentActions\";\nimport { downloadCSV } from \"../../shared/downloadCSV\";\nimport { ACCOUNT_TYPE_COLORS } from \"../../shared/theme\";\nimport { useTheme } from \"../../shared/ThemeContext\";\n\nconst TYPE_COLORS = ACCOUNT_TYPE_COLORS as Record<string, { bg: string; color: string }>;\n\nconst fmt = (v: number, currency: string) => {\n const abs = Math.abs(v);\n const s = new Intl.NumberFormat(\"en-US\", {\n style: \"currency\",\n currency: currency || \"USD\",\n minimumFractionDigits: 2,\n }).format(abs);\n return v < 0 ? `(${s})` : s;\n};\n\nexport function ChartOfAccountsResolver(p: SchemaPayload<\"chart-of-accounts\">) {\n const { BORDER, MUTED, PAPER } = useTheme();\n const hasSubType = (p.accounts ?? []).some((a) => a.subType);\n const showBalances = p.showBalances ?? false;\n const currency = p.currency ?? \"USD\";\n\n const activeCount = (p.accounts ?? []).filter((a) => !a.isHeader && (a.status ?? \"active\") === \"active\").length;\n const inactiveCount = (p.accounts ?? []).filter((a) => !a.isHeader && a.status === \"inactive\").length;\n\n const csvCols = [\n { key: \"code\", label: \"Code\" },\n { key: \"name\", label: \"Account Name\" },\n { key: \"accountType\", label: \"Type\" },\n ...(hasSubType ? [{ key: \"subType\", label: \"Sub-Type\" }] : []),\n { key: \"status\", label: \"Status\" },\n ...(showBalances ? [{ key: \"balance\", label: \"Balance\" }] : []),\n ];\n\n const csvRows = p.accounts\n .filter((a) => !a.isHeader)\n .map((a) => ({\n code: a.code,\n name: a.name,\n accountType: a.accountType,\n subType: a.subType ?? \"\",\n status: (a.status ?? \"active\").charAt(0).toUpperCase() + (a.status ?? \"active\").slice(1),\n balance: a.balance != null ? a.balance : \"\",\n }));\n\n return (\n <ComponentActions\n filename={p.title ?? \"chart-of-accounts\"}\n onDownloadCSV={() => downloadCSV(csvCols, csvRows, p.title ?? \"chart-of-accounts\")}\n >\n <div style={{ width: \"100%\", display: \"flex\", flexDirection: \"column\", gap: \"10px\" }}>\n {p.title && (\n <p\n style={{\n fontFamily: \"var(--font-serif)\",\n fontSize: \"15px\",\n fontWeight: 400,\n color: \"var(--foreground)\",\n letterSpacing: \"-0.01em\",\n margin: 0,\n }}\n >\n {p.title}\n </p>\n )}\n\n <div\n style={{\n overflowX: \"auto\",\n borderRadius: \"0.75rem\",\n border: `1px solid ${BORDER}`,\n boxShadow: \"0 1px 2px rgba(0,0,0,0.03), 0 4px 12px rgba(0,0,0,0.04)\",\n }}\n >\n <table style={{ width: \"100%\", borderCollapse: \"collapse\" }}>\n <thead>\n <tr>\n <th\n style={{\n fontSize: \"11px\",\n fontWeight: 500,\n color: MUTED,\n padding: \"8px 12px\",\n textAlign: \"left\",\n borderBottom: `1px solid ${BORDER}`,\n background: PAPER,\n textTransform: \"uppercase\",\n letterSpacing: \"0.02em\",\n }}\n >\n Code\n </th>\n <th\n style={{\n fontSize: \"11px\",\n fontWeight: 500,\n color: MUTED,\n padding: \"8px 12px\",\n textAlign: \"left\",\n borderBottom: `1px solid ${BORDER}`,\n background: PAPER,\n textTransform: \"uppercase\",\n letterSpacing: \"0.02em\",\n }}\n >\n Account Name\n </th>\n <th\n style={{\n fontSize: \"11px\",\n fontWeight: 500,\n color: MUTED,\n padding: \"8px 12px\",\n textAlign: \"left\",\n borderBottom: `1px solid ${BORDER}`,\n background: PAPER,\n textTransform: \"uppercase\",\n letterSpacing: \"0.02em\",\n }}\n >\n Type\n </th>\n {hasSubType && (\n <th\n style={{\n fontSize: \"11px\",\n fontWeight: 500,\n color: MUTED,\n padding: \"8px 12px\",\n textAlign: \"left\",\n borderBottom: `1px solid ${BORDER}`,\n background: PAPER,\n textTransform: \"uppercase\",\n letterSpacing: \"0.02em\",\n }}\n >\n Sub-Type\n </th>\n )}\n <th\n style={{\n fontSize: \"11px\",\n fontWeight: 500,\n color: MUTED,\n padding: \"8px 12px\",\n textAlign: \"center\",\n borderBottom: `1px solid ${BORDER}`,\n background: PAPER,\n textTransform: \"uppercase\",\n letterSpacing: \"0.02em\",\n }}\n >\n Status\n </th>\n {showBalances && (\n <th\n style={{\n fontSize: \"11px\",\n fontWeight: 500,\n color: MUTED,\n padding: \"8px 12px\",\n textAlign: \"right\",\n borderBottom: `1px solid ${BORDER}`,\n background: PAPER,\n textTransform: \"uppercase\",\n letterSpacing: \"0.02em\",\n }}\n >\n Balance\n </th>\n )}\n </tr>\n </thead>\n <tbody>\n {(p.accounts ?? []).map((account, ri) => {\n const isInactive = account.status === \"inactive\";\n const indent = account.indent ?? 0;\n\n if (account.isHeader) {\n const colSpan = 3 + (hasSubType ? 1 : 0) + 1 + (showBalances ? 1 : 0);\n return (\n <tr key={ri} style={{ background: PAPER }}>\n <td\n colSpan={colSpan}\n style={{\n padding: \"8px 12px\",\n paddingLeft: `${12 + indent * 16}px`,\n fontSize: \"11px\",\n fontWeight: 700,\n color: \"var(--foreground)\",\n textTransform: \"uppercase\",\n letterSpacing: \"0.04em\",\n borderBottom: `1px solid ${BORDER}`,\n }}\n >\n {account.name}\n </td>\n </tr>\n );\n }\n\n const typeColor = TYPE_COLORS[account.accountType] ?? { bg: \"#f2f2f2\", color: MUTED };\n\n return (\n <tr\n key={ri}\n style={{\n background: ri % 2 === 0 ? \"white\" : \"#fafafa\",\n opacity: isInactive ? 0.5 : 1,\n }}\n >\n <td\n style={{\n padding: \"6px 12px\",\n fontSize: \"12px\",\n fontFamily: \"monospace\",\n color: MUTED,\n borderBottom: \"1px solid #f2f2f2\",\n whiteSpace: \"nowrap\",\n }}\n >\n {account.code}\n </td>\n <td\n style={{\n padding: \"6px 12px\",\n paddingLeft: `${12 + indent * 16}px`,\n fontSize: \"13px\",\n borderBottom: \"1px solid #f2f2f2\",\n }}\n >\n {account.name}\n </td>\n <td\n style={{\n padding: \"6px 12px\",\n borderBottom: \"1px solid #f2f2f2\",\n }}\n >\n <span\n style={{\n fontSize: \"10px\",\n fontWeight: 600,\n padding: \"2px 8px\",\n borderRadius: \"9999px\",\n background: typeColor.bg,\n color: typeColor.color,\n textTransform: \"capitalize\",\n whiteSpace: \"nowrap\",\n }}\n >\n {account.accountType}\n </span>\n </td>\n {hasSubType && (\n <td\n style={{\n padding: \"6px 12px\",\n fontSize: \"12px\",\n color: MUTED,\n borderBottom: \"1px solid #f2f2f2\",\n whiteSpace: \"nowrap\",\n }}\n >\n {account.subType ?? \"\"}\n </td>\n )}\n <td\n style={{\n padding: \"6px 12px\",\n textAlign: \"center\",\n borderBottom: \"1px solid #f2f2f2\",\n }}\n >\n {isInactive ? (\n <span\n style={{\n fontSize: \"10px\",\n fontWeight: 600,\n padding: \"2px 8px\",\n borderRadius: \"9999px\",\n background: \"#fef2f2\",\n color: \"#dc2626\",\n }}\n >\n Inactive\n </span>\n ) : (\n <span\n style={{\n display: \"inline-block\",\n width: \"6px\",\n height: \"6px\",\n borderRadius: \"50%\",\n background: \"#15803d\",\n }}\n title=\"Active\"\n />\n )}\n </td>\n {showBalances && (\n <td\n style={{\n padding: \"6px 12px\",\n fontSize: \"13px\",\n textAlign: \"right\",\n fontVariantNumeric: \"tabular-nums\",\n borderBottom: \"1px solid #f2f2f2\",\n whiteSpace: \"nowrap\",\n }}\n >\n {account.balance != null ? fmt(account.balance, currency) : \"—\"}\n </td>\n )}\n </tr>\n );\n })}\n </tbody>\n </table>\n </div>\n\n <div style={{ fontSize: \"11px\", color: MUTED, padding: \"0 4px\" }}>\n {activeCount} active account{activeCount !== 1 ? \"s\" : \"\"}\n {inactiveCount > 0 ? `, ${inactiveCount} inactive` : \"\"}\n </div>\n </div>\n </ComponentActions>\n );\n}\n","\"use client\";\n\nimport React from \"react\";\nimport type { SchemaPayload } from \"../../schemas\";\nimport { ComponentActions } from \"../../shared/ComponentActions\";\nimport { Markdown } from \"../../shared/Markdown\";\nimport { useTheme } from \"../../shared/ThemeContext\";\n\nconst STATUS_COLORS: Record<string, { bg: string; color: string }> = {\n draft: { bg: \"#fff7ed\", color: \"#92400e\" },\n sent: { bg: \"#eff6ff\", color: \"#1d4ed8\" },\n paid: { bg: \"#dcfce7\", color: \"#15803d\" },\n partial: { bg: \"#f5f3ff\", color: \"#7c3aed\" },\n overdue: { bg: \"#fef2f2\", color: \"#dc2626\" },\n void: { bg: \"#f2f2f2\", color: \"#777777\" },\n};\n\nconst fmt = (v: number, currency: string) =>\n new Intl.NumberFormat(\"en-US\", {\n style: \"currency\",\n currency: currency || \"USD\",\n minimumFractionDigits: 2,\n }).format(v);\n\nconst formatDate = (d: string) => {\n try {\n return new Intl.DateTimeFormat(\"en-US\", { dateStyle: \"medium\" }).format(\n new Date(d)\n );\n } catch {\n return d;\n }\n};\n\nexport function InvoiceDetailResolver(p: SchemaPayload<\"invoice-detail\">) {\n const { BORDER, MUTED, PAPER } = useTheme();\n const statusStyle = STATUS_COLORS[p.status] ?? STATUS_COLORS.void;\n const isOverdue = p.status === \"overdue\";\n\n return (\n <ComponentActions filename={`invoice-${p.invoiceNumber}`}>\n <div\n style={{\n width: \"100%\",\n borderRadius: \"0.75rem\",\n border: `1px solid ${BORDER}`,\n boxShadow:\n \"0 1px 2px rgba(0,0,0,0.03), 0 4px 12px rgba(0,0,0,0.04)\",\n overflow: \"hidden\",\n background: \"white\",\n }}\n >\n {/* Header */}\n <div\n style={{\n display: \"flex\",\n alignItems: \"center\",\n justifyContent: \"space-between\",\n padding: \"16px 20px\",\n }}\n >\n <div style={{ display: \"flex\", flexDirection: \"column\", gap: \"2px\" }}>\n <span\n style={{\n fontSize: \"11px\",\n fontWeight: 600,\n color: MUTED,\n textTransform: \"uppercase\",\n letterSpacing: \"0.06em\",\n }}\n >\n Invoice\n </span>\n <span\n style={{\n fontFamily: \"monospace\",\n fontSize: \"16px\",\n fontWeight: 700,\n color: \"var(--foreground)\",\n }}\n >\n {p.invoiceNumber}\n </span>\n </div>\n <span\n style={{\n fontSize: \"10px\",\n fontWeight: 600,\n padding: \"2px 10px\",\n borderRadius: \"9999px\",\n background: statusStyle.bg,\n color: statusStyle.color,\n textTransform: \"uppercase\",\n letterSpacing: \"0.04em\",\n }}\n >\n {p.status}\n </span>\n </div>\n\n {/* Divider */}\n <div style={{ height: \"1px\", background: BORDER }} />\n\n {/* Client + Dates */}\n <div\n style={{\n display: \"flex\",\n justifyContent: \"space-between\",\n padding: \"14px 20px\",\n gap: \"20px\",\n }}\n >\n <div\n style={{ display: \"flex\", flexDirection: \"column\", gap: \"2px\" }}\n >\n <span\n style={{\n fontSize: \"14px\",\n fontWeight: 600,\n color: \"var(--foreground)\",\n }}\n >\n {p.client?.name ?? ''}\n </span>\n {p.client?.address && (\n <span\n style={{\n fontSize: \"12px\",\n color: MUTED,\n whiteSpace: \"pre-line\",\n }}\n >\n <Markdown inline content={p.client?.address} />\n </span>\n )}\n {p.client?.email && (\n <span style={{ fontSize: \"12px\", color: MUTED }}>\n {p.client?.email}\n </span>\n )}\n </div>\n <div\n style={{\n display: \"flex\",\n flexDirection: \"column\",\n gap: \"6px\",\n textAlign: \"right\",\n }}\n >\n <div>\n <span\n style={{\n fontSize: \"11px\",\n color: MUTED,\n textTransform: \"uppercase\",\n letterSpacing: \"0.04em\",\n }}\n >\n Issue Date\n </span>\n <div style={{ fontSize: \"12px\", color: \"var(--foreground)\" }}>\n {formatDate(p.issueDate)}\n </div>\n </div>\n <div>\n <span\n style={{\n fontSize: \"11px\",\n color: MUTED,\n textTransform: \"uppercase\",\n letterSpacing: \"0.04em\",\n }}\n >\n Due Date\n </span>\n <div\n style={{\n fontSize: \"12px\",\n color: isOverdue ? \"#dc2626\" : \"var(--foreground)\",\n fontWeight: isOverdue ? 600 : undefined,\n }}\n >\n {formatDate(p.dueDate)}\n </div>\n </div>\n </div>\n </div>\n\n {/* Divider */}\n <div style={{ height: \"1px\", background: BORDER }} />\n\n {/* Line Items Table */}\n <div style={{ overflowX: \"auto\" }}>\n <table style={{ width: \"100%\", borderCollapse: \"collapse\" }}>\n <thead>\n <tr>\n {[\"Description\", \"Qty\", \"Unit Price\", \"Amount\"].map(\n (h, i) => (\n <th\n key={h}\n style={{\n fontSize: \"11px\",\n fontWeight: 500,\n color: MUTED,\n padding: \"8px 16px\",\n textAlign: i === 0 ? \"left\" : \"right\",\n borderBottom: `1px solid ${BORDER}`,\n background: PAPER,\n textTransform: \"uppercase\",\n letterSpacing: \"0.02em\",\n }}\n >\n {h}\n </th>\n )\n )}\n </tr>\n </thead>\n <tbody>\n {(p.lineItems ?? []).map((item, ri) => (\n <tr\n key={ri}\n style={{ background: ri % 2 === 0 ? \"white\" : \"#fafafa\" }}\n >\n <td\n style={{\n padding: \"8px 16px\",\n fontSize: \"13px\",\n borderBottom: `1px solid #f2f2f2`,\n }}\n >\n <Markdown inline content={item.description} />\n </td>\n <td\n style={{\n padding: \"8px 16px\",\n fontSize: \"13px\",\n textAlign: \"right\",\n fontVariantNumeric: \"tabular-nums\",\n borderBottom: `1px solid #f2f2f2`,\n }}\n >\n {item.quantity}\n </td>\n <td\n style={{\n padding: \"8px 16px\",\n fontSize: \"13px\",\n textAlign: \"right\",\n fontVariantNumeric: \"tabular-nums\",\n borderBottom: `1px solid #f2f2f2`,\n }}\n >\n {fmt(item.unitPrice, p.currency)}\n </td>\n <td\n style={{\n padding: \"8px 16px\",\n fontSize: \"13px\",\n textAlign: \"right\",\n fontVariantNumeric: \"tabular-nums\",\n fontWeight: 500,\n borderBottom: `1px solid #f2f2f2`,\n }}\n >\n {fmt(item.amount, p.currency)}\n </td>\n </tr>\n ))}\n </tbody>\n </table>\n </div>\n\n {/* Totals */}\n <div\n style={{\n display: \"flex\",\n flexDirection: \"column\",\n alignItems: \"flex-end\",\n padding: \"14px 20px\",\n gap: \"6px\",\n }}\n >\n <div\n style={{\n display: \"flex\",\n justifyContent: \"space-between\",\n width: \"240px\",\n }}\n >\n <span style={{ fontSize: \"12px\", color: MUTED }}>Subtotal</span>\n <span\n style={{\n fontSize: \"13px\",\n fontVariantNumeric: \"tabular-nums\",\n }}\n >\n {fmt(p.subtotal, p.currency)}\n </span>\n </div>\n\n {(p.discount ?? 0) > 0 && (\n <div\n style={{\n display: \"flex\",\n justifyContent: \"space-between\",\n width: \"240px\",\n }}\n >\n <span style={{ fontSize: \"12px\", color: MUTED }}>Discount</span>\n <span\n style={{\n fontSize: \"13px\",\n fontVariantNumeric: \"tabular-nums\",\n color: \"#dc2626\",\n }}\n >\n −{fmt(p.discount ?? 0, p.currency)}\n </span>\n </div>\n )}\n\n {(p.taxAmount ?? 0) > 0 && (\n <div\n style={{\n display: \"flex\",\n justifyContent: \"space-between\",\n width: \"240px\",\n }}\n >\n <span style={{ fontSize: \"12px\", color: MUTED }}>\n {p.taxLabel ?? \"Tax\"}\n </span>\n <span\n style={{\n fontSize: \"13px\",\n fontVariantNumeric: \"tabular-nums\",\n }}\n >\n {fmt(p.taxAmount ?? 0, p.currency)}\n </span>\n </div>\n )}\n\n <div\n style={{\n width: \"240px\",\n height: \"1px\",\n background: BORDER,\n margin: \"2px 0\",\n }}\n />\n\n <div\n style={{\n display: \"flex\",\n justifyContent: \"space-between\",\n width: \"240px\",\n }}\n >\n <span\n style={{\n fontSize: \"13px\",\n fontWeight: 700,\n color: \"var(--foreground)\",\n }}\n >\n Total\n </span>\n <span\n style={{\n fontSize: \"14px\",\n fontWeight: 700,\n fontVariantNumeric: \"tabular-nums\",\n color: \"var(--foreground)\",\n }}\n >\n {fmt(p.total, p.currency)}\n </span>\n </div>\n\n {(p.amountPaid ?? 0) > 0 && (\n <div\n style={{\n display: \"flex\",\n justifyContent: \"space-between\",\n width: \"240px\",\n }}\n >\n <span style={{ fontSize: \"12px\", color: MUTED }}>\n Amount Paid\n </span>\n <span\n style={{\n fontSize: \"13px\",\n fontVariantNumeric: \"tabular-nums\",\n color: \"#15803d\",\n }}\n >\n {fmt(p.amountPaid ?? 0, p.currency)}\n </span>\n </div>\n )}\n\n <div\n style={{\n display: \"flex\",\n justifyContent: \"space-between\",\n width: \"240px\",\n }}\n >\n <span\n style={{\n fontSize: \"13px\",\n fontWeight: 700,\n color: \"var(--foreground)\",\n }}\n >\n Amount Due\n </span>\n <span\n style={{\n fontSize: \"14px\",\n fontWeight: 700,\n fontVariantNumeric: \"tabular-nums\",\n color: isOverdue ? \"#dc2626\" : \"var(--foreground)\",\n }}\n >\n {fmt(p.amountDue, p.currency)}\n </span>\n </div>\n </div>\n\n {/* Payment History */}\n {p.payments && (p.payments ?? []).length > 0 && (\n <>\n <div style={{ height: \"1px\", background: BORDER }} />\n <div style={{ padding: \"14px 20px\" }}>\n <div\n style={{\n fontSize: \"12px\",\n fontWeight: 600,\n textTransform: \"uppercase\",\n letterSpacing: \"0.04em\",\n color: \"var(--foreground)\",\n marginBottom: \"8px\",\n }}\n >\n Payment History\n </div>\n <table style={{ width: \"100%\", borderCollapse: \"collapse\" }}>\n <thead>\n <tr>\n {[\"Date\", \"Method\", \"Amount\", \"Reference\"].map((h, i) => (\n <th\n key={h}\n style={{\n fontSize: \"11px\",\n fontWeight: 500,\n color: MUTED,\n padding: \"6px 12px\",\n textAlign: i === 2 ? \"right\" : \"left\",\n borderBottom: `1px solid ${BORDER}`,\n textTransform: \"uppercase\",\n letterSpacing: \"0.02em\",\n }}\n >\n {h}\n </th>\n ))}\n </tr>\n </thead>\n <tbody>\n {(p.payments ?? []).map((pmt, i) => (\n <tr key={i}>\n <td\n style={{\n padding: \"6px 12px\",\n fontSize: \"12px\",\n borderBottom: `1px solid #f2f2f2`,\n }}\n >\n {formatDate(pmt.date)}\n </td>\n <td\n style={{\n padding: \"6px 12px\",\n fontSize: \"12px\",\n borderBottom: `1px solid #f2f2f2`,\n }}\n >\n {pmt.method}\n </td>\n <td\n style={{\n padding: \"6px 12px\",\n fontSize: \"12px\",\n textAlign: \"right\",\n fontVariantNumeric: \"tabular-nums\",\n color: \"#15803d\",\n fontWeight: 600,\n borderBottom: `1px solid #f2f2f2`,\n }}\n >\n {fmt(pmt.amount, p.currency)}\n </td>\n <td\n style={{\n padding: \"6px 12px\",\n fontSize: \"12px\",\n color: MUTED,\n borderBottom: `1px solid #f2f2f2`,\n }}\n >\n {pmt.reference ?? \"—\"}\n </td>\n </tr>\n ))}\n </tbody>\n </table>\n </div>\n </>\n )}\n\n {/* Notes / Terms */}\n {(p.terms || p.notes) && (\n <div\n style={{\n background: PAPER,\n padding: \"12px 16px\",\n borderTop: `1px solid ${BORDER}`,\n display: \"flex\",\n flexDirection: \"column\",\n gap: \"6px\",\n }}\n >\n {p.terms && (\n <div>\n <span\n style={{\n fontSize: \"11px\",\n fontWeight: 700,\n color: \"var(--foreground)\",\n }}\n >\n Terms:\n </span>{\" \"}\n <span style={{ fontSize: \"12px\", color: MUTED }}>\n <Markdown content={p.terms} />\n </span>\n </div>\n )}\n {p.notes && (\n <div>\n <span\n style={{\n fontSize: \"11px\",\n fontWeight: 700,\n color: \"var(--foreground)\",\n }}\n >\n Notes:\n </span>{\" \"}\n <span style={{ fontSize: \"12px\", color: MUTED }}>\n <Markdown content={p.notes} />\n </span>\n </div>\n )}\n </div>\n )}\n </div>\n </ComponentActions>\n );\n}\n","\"use client\";\n\nimport React from \"react\";\nimport type { SchemaPayload } from \"../../schemas\";\nimport { ComponentActions } from \"../../shared/ComponentActions\";\nimport { downloadCSV } from \"../../shared/downloadCSV\";\nimport { BORDER, MUTED, PAPER } from \"../../shared/theme\";\nimport { useTheme } from \"../../shared/ThemeContext\";\n\ntype Payment = SchemaPayload<\"amortization-table\">[\"payments\"][number];\n\nconst fmt = (v: number, currency: string) =>\n new Intl.NumberFormat(\"en-US\", {\n style: \"currency\",\n currency: currency || \"USD\",\n minimumFractionDigits: 2,\n }).format(v);\n\nconst thStyle = (align: \"left\" | \"right\" = \"left\"): React.CSSProperties => ({\n fontSize: \"11px\",\n fontWeight: 500,\n color: MUTED,\n padding: \"8px 10px\",\n letterSpacing: \"0.02em\",\n textTransform: \"uppercase\",\n borderBottom: `1px solid ${BORDER}`,\n background: PAPER,\n textAlign: align,\n whiteSpace: \"nowrap\",\n});\n\nconst tdStyle = (\n align: \"left\" | \"right\" = \"left\",\n last: boolean = false,\n): React.CSSProperties => ({\n padding: \"8px 10px\",\n fontSize: \"13px\",\n color: \"var(--foreground)\",\n fontVariantNumeric: \"tabular-nums\",\n borderBottom: last ? \"none\" : \"1px solid #f2f2f2\",\n textAlign: align,\n whiteSpace: \"nowrap\",\n});\n\nexport function AmortizationTableResolver(\n p: SchemaPayload<\"amortization-table\">,\n) {\n const { BORDER, MUTED, PAPER } = useTheme();\n const currency = p.currency ?? \"USD\";\n const payments = p.payments ?? [];\n const hasDate = payments.some((r) => r.paymentDate);\n const hasExtra = payments.some((r) => (r.extra ?? 0) > 0);\n\n const derivedMonthly = payments.length > 0 ? payments[0].payment : 0;\n const derivedTotalInterest = payments.reduce((s, r) => s + r.interest, 0);\n const derivedOriginal = payments.length > 0 ? payments[0].balance + payments[0].principal : 0;\n\n const summary = p.summary ? {\n ...p.summary,\n originalAmount: p.summary.originalAmount ?? derivedOriginal,\n monthlyPayment: p.summary.monthlyPayment ?? (derivedMonthly > 0 ? derivedMonthly : undefined),\n totalInterest: p.summary.totalInterest ?? (derivedTotalInterest > 0 ? derivedTotalInterest : undefined),\n } : undefined;\n const originalAmount = summary?.originalAmount ?? 0;\n\n const csvCols = [\n { key: \"period\", label: \"Period\" },\n ...(hasDate ? [{ key: \"paymentDate\", label: \"Date\" }] : []),\n { key: \"payment\", label: \"Payment\" },\n { key: \"principal\", label: \"Principal\" },\n { key: \"interest\", label: \"Interest\" },\n ...(hasExtra ? [{ key: \"extra\", label: \"Extra\" }] : []),\n { key: \"balance\", label: \"Balance\" },\n ];\n const csvRows = payments.map((r) => ({\n period: r.period,\n paymentDate: r.paymentDate ?? \"\",\n payment: r.payment,\n principal: r.principal,\n interest: r.interest,\n extra: r.extra ?? 0,\n balance: r.balance,\n }));\n\n return (\n <ComponentActions\n filename={p.title ?? \"amortization-table\"}\n onDownloadCSV={() =>\n downloadCSV(csvCols, csvRows, p.title ?? \"amortization-table\")\n }\n >\n <div\n style={{\n width: \"100%\",\n display: \"flex\",\n flexDirection: \"column\",\n gap: \"10px\",\n }}\n >\n {p.title && (\n <p\n style={{\n fontFamily: \"var(--font-serif)\",\n fontSize: \"15px\",\n fontWeight: 400,\n color: \"var(--foreground)\",\n letterSpacing: \"-0.01em\",\n margin: 0,\n }}\n >\n {p.title}\n </p>\n )}\n\n {/* Summary section */}\n {summary && (\n <div\n style={{\n display: \"flex\",\n flexDirection: \"column\",\n gap: \"8px\",\n }}\n >\n <div\n style={{\n display: \"grid\",\n gridTemplateColumns: \"repeat(auto-fit, minmax(130px, 1fr))\",\n gap: \"8px\",\n }}\n >\n <div\n style={{\n background: PAPER,\n borderRadius: \"8px\",\n padding: \"10px 14px\",\n }}\n >\n <div\n style={{\n fontSize: \"10px\",\n fontWeight: 500,\n color: MUTED,\n textTransform: \"uppercase\",\n letterSpacing: \"0.04em\",\n marginBottom: \"2px\",\n }}\n >\n Original Amount\n </div>\n <div\n style={{\n fontSize: \"14px\",\n fontWeight: 600,\n color: \"var(--foreground)\",\n fontVariantNumeric: \"tabular-nums\",\n }}\n >\n {fmt(summary.originalAmount, currency)}\n </div>\n </div>\n <div\n style={{\n background: PAPER,\n borderRadius: \"8px\",\n padding: \"10px 14px\",\n }}\n >\n <div\n style={{\n fontSize: \"10px\",\n fontWeight: 500,\n color: MUTED,\n textTransform: \"uppercase\",\n letterSpacing: \"0.04em\",\n marginBottom: \"2px\",\n }}\n >\n Interest Rate\n </div>\n <div\n style={{\n fontSize: \"14px\",\n fontWeight: 600,\n color: \"var(--foreground)\",\n }}\n >\n {summary.interestRate}\n </div>\n </div>\n <div\n style={{\n background: PAPER,\n borderRadius: \"8px\",\n padding: \"10px 14px\",\n }}\n >\n <div\n style={{\n fontSize: \"10px\",\n fontWeight: 500,\n color: MUTED,\n textTransform: \"uppercase\",\n letterSpacing: \"0.04em\",\n marginBottom: \"2px\",\n }}\n >\n Term\n </div>\n <div\n style={{\n fontSize: \"14px\",\n fontWeight: 600,\n color: \"var(--foreground)\",\n }}\n >\n {summary.term}\n </div>\n </div>\n {summary.monthlyPayment != null && (\n <div\n style={{\n background: PAPER,\n borderRadius: \"8px\",\n padding: \"10px 14px\",\n }}\n >\n <div\n style={{\n fontSize: \"10px\",\n fontWeight: 500,\n color: MUTED,\n textTransform: \"uppercase\",\n letterSpacing: \"0.04em\",\n marginBottom: \"2px\",\n }}\n >\n Monthly Payment\n </div>\n <div\n style={{\n fontSize: \"14px\",\n fontWeight: 600,\n color: \"var(--foreground)\",\n fontVariantNumeric: \"tabular-nums\",\n }}\n >\n {fmt(summary.monthlyPayment, currency)}\n </div>\n </div>\n )}\n </div>\n {(summary.totalInterest != null || summary.startDate) && (\n <div\n style={{\n display: \"flex\",\n gap: \"16px\",\n fontSize: \"11px\",\n color: MUTED,\n paddingLeft: \"2px\",\n }}\n >\n {summary.totalInterest != null && (\n <span>\n Total Interest: {fmt(summary.totalInterest, currency)}\n </span>\n )}\n {summary.startDate && (\n <span>Start Date: {summary.startDate}</span>\n )}\n </div>\n )}\n </div>\n )}\n\n {/* Payments table */}\n <div\n style={{\n overflowX: \"auto\",\n borderRadius: \"0.75rem\",\n border: `1px solid ${BORDER}`,\n boxShadow:\n \"0 1px 2px rgba(0,0,0,0.03), 0 4px 12px rgba(0,0,0,0.04)\",\n }}\n >\n <table style={{ width: \"100%\", borderCollapse: \"collapse\" }}>\n <thead>\n <tr>\n <th style={thStyle(\"left\")}>Period</th>\n {hasDate && <th style={thStyle(\"left\")}>Date</th>}\n <th style={thStyle(\"right\")}>Payment</th>\n <th style={thStyle(\"right\")}>Principal</th>\n <th style={thStyle(\"right\")}>Interest</th>\n {hasExtra && <th style={thStyle(\"right\")}>Extra</th>}\n <th style={thStyle(\"right\")}>Balance</th>\n </tr>\n </thead>\n <tbody>\n {payments.map((row: Payment, ri: number) => {\n const isLast = ri === payments.length - 1;\n const principalPct =\n row.payment > 0\n ? Math.min((row.principal / row.payment) * 100, 100)\n : 0;\n const balanceIsZero =\n originalAmount > 0 &&\n row.balance < originalAmount * 0.01;\n\n return (\n <tr\n key={ri}\n style={{ background: ri % 2 === 0 ? \"white\" : \"#fafafa\" }}\n >\n <td style={tdStyle(\"left\", isLast)}>\n <div>{row.period}</div>\n {/* Mini stacked bar */}\n <div\n style={{\n marginTop: \"4px\",\n width: \"100%\",\n height: \"4px\",\n borderRadius: \"2px\",\n background: \"#e5e5e5\",\n overflow: \"hidden\",\n display: \"flex\",\n }}\n >\n <div\n style={{\n width: `${principalPct}%`,\n height: \"100%\",\n background: \"#15803d\",\n borderRadius: \"2px 0 0 2px\",\n }}\n />\n <div\n style={{\n width: `${100 - principalPct}%`,\n height: \"100%\",\n background: \"#d4d4d4\",\n borderRadius: \"0 2px 2px 0\",\n }}\n />\n </div>\n </td>\n {hasDate && (\n <td style={tdStyle(\"left\", isLast)}>\n {row.paymentDate ?? \"—\"}\n </td>\n )}\n <td style={tdStyle(\"right\", isLast)}>\n {fmt(row.payment, currency)}\n </td>\n <td\n style={{\n ...tdStyle(\"right\", isLast),\n color: \"var(--foreground)\",\n }}\n >\n {fmt(row.principal, currency)}\n </td>\n <td\n style={{\n ...tdStyle(\"right\", isLast),\n color: MUTED,\n }}\n >\n {fmt(row.interest, currency)}\n </td>\n {hasExtra && (\n <td\n style={{\n ...tdStyle(\"right\", isLast),\n color: (row.extra ?? 0) > 0 ? \"#15803d\" : MUTED,\n }}\n >\n {(row.extra ?? 0) > 0\n ? fmt(row.extra ?? 0, currency)\n : \"—\"}\n </td>\n )}\n <td\n style={{\n ...tdStyle(\"right\", isLast),\n fontWeight: 600,\n fontVariantNumeric: \"tabular-nums\",\n color: balanceIsZero ? \"#15803d\" : \"var(--foreground)\",\n }}\n >\n {fmt(row.balance, currency)}\n </td>\n </tr>\n );\n })}\n </tbody>\n </table>\n </div>\n </div>\n </ComponentActions>\n );\n}\n","\"use client\";\n\nimport React from \"react\";\nimport type { SchemaPayload } from \"../../schemas\";\nimport { ComponentActions } from \"../../shared/ComponentActions\";\nimport { downloadCSV } from \"../../shared/downloadCSV\";\nimport { BORDER, MUTED, PAPER } from \"../../shared/theme\";\nimport { useTheme } from \"../../shared/ThemeContext\";\n\nconst CATEGORY_COLORS: Record<string, { bg: string; color: string }> = {\n Buildings: { bg: \"#eff6ff\", color: \"#1d4ed8\" },\n Equipment: { bg: \"#fff7ed\", color: \"#92400e\" },\n Vehicles: { bg: \"#dcfce7\", color: \"#15803d\" },\n Furniture: { bg: \"#f5f3ff\", color: \"#7c3aed\" },\n};\nconst DEFAULT_CATEGORY_COLOR = { bg: \"#f2f2f2\", color: \"#777777\" };\n\nconst TH_STYLE: React.CSSProperties = {\n fontSize: \"11px\",\n fontWeight: 500,\n color: MUTED,\n padding: \"8px 12px\",\n textAlign: \"left\",\n borderBottom: `1px solid ${BORDER}`,\n background: PAPER,\n textTransform: \"uppercase\",\n letterSpacing: \"0.02em\",\n whiteSpace: \"nowrap\",\n};\n\nconst TH_RIGHT: React.CSSProperties = { ...TH_STYLE, textAlign: \"right\" };\n\nexport function DepreciationScheduleResolver(\n p: SchemaPayload<\"depreciation-schedule\">\n) {\n const { BORDER, MUTED, PAPER } = useTheme();\n const currency = p.currency ?? \"USD\";\n\n const fmt = (v: number): string => {\n if (v === 0) return \"—\";\n return new Intl.NumberFormat(\"en-US\", {\n style: \"currency\",\n currency: currency || \"USD\",\n minimumFractionDigits: 2,\n }).format(v);\n };\n\n const formatDate = (d: string): string => {\n try {\n return new Intl.DateTimeFormat(\"en-US\", { dateStyle: \"medium\" }).format(\n new Date(d)\n );\n } catch {\n return d;\n }\n };\n\n const totals = p.totals ?? {\n totalCost: (p.assets ?? []).reduce((s, a) => s + a.cost, 0),\n totalCurrentYear: (p.assets ?? []).reduce(\n (s, a) => s + a.currentYearDepreciation,\n 0\n ),\n totalAccumulated: (p.assets ?? []).reduce(\n (s, a) => s + a.accumulatedDepreciation,\n 0\n ),\n totalBookValue: (p.assets ?? []).reduce((s, a) => s + a.bookValue, 0),\n };\n\n const csvCols = [\n { key: \"id\", label: \"ID\" },\n { key: \"name\", label: \"Asset\" },\n { key: \"category\", label: \"Category\" },\n { key: \"acquiredDate\", label: \"Acquired\" },\n { key: \"cost\", label: \"Cost\" },\n { key: \"usefulLife\", label: \"Useful Life\" },\n { key: \"method\", label: \"Method\" },\n { key: \"currentYearDepreciation\", label: \"Current Year\" },\n { key: \"accumulatedDepreciation\", label: \"Accumulated\" },\n { key: \"bookValue\", label: \"Book Value\" },\n ];\n\n const csvRows = (p.assets ?? []).map((a) => ({\n id: a.id,\n name: a.name,\n category: a.category ?? \"\",\n acquiredDate: a.acquiredDate,\n cost: a.cost,\n usefulLife: a.usefulLife ?? \"\",\n method: a.method ?? p.method ?? \"\",\n currentYearDepreciation: a.currentYearDepreciation,\n accumulatedDepreciation: a.accumulatedDepreciation,\n bookValue: a.bookValue,\n }));\n\n return (\n <ComponentActions\n filename={p.title ?? \"depreciation-schedule\"}\n onDownloadCSV={() =>\n downloadCSV(csvCols, csvRows, p.title ?? \"depreciation-schedule\")\n }\n >\n <div\n style={{\n width: \"100%\",\n display: \"flex\",\n flexDirection: \"column\",\n gap: \"10px\",\n }}\n >\n {/* Header */}\n <div\n style={{\n display: \"flex\",\n alignItems: \"center\",\n gap: \"10px\",\n flexWrap: \"wrap\",\n }}\n >\n {p.title && (\n <p\n style={{\n fontFamily: \"var(--font-serif)\",\n fontSize: \"15px\",\n fontWeight: 400,\n color: \"var(--foreground)\",\n letterSpacing: \"-0.01em\",\n margin: 0,\n }}\n >\n {p.title}\n </p>\n )}\n {p.method && (\n <span\n style={{\n fontSize: \"10px\",\n fontWeight: 600,\n padding: \"2px 8px\",\n borderRadius: \"9999px\",\n background: \"#eff6ff\",\n color: \"#1d4ed8\",\n }}\n >\n {p.method}\n </span>\n )}\n {p.asOfDate && (\n <span style={{ fontSize: \"11px\", color: MUTED }}>\n As of {formatDate(p.asOfDate)}\n </span>\n )}\n </div>\n\n {/* Table */}\n <div\n style={{\n overflowX: \"auto\",\n borderRadius: \"0.75rem\",\n border: `1px solid ${BORDER}`,\n boxShadow:\n \"0 1px 2px rgba(0,0,0,0.03), 0 4px 12px rgba(0,0,0,0.04)\",\n }}\n >\n <table style={{ width: \"100%\", borderCollapse: \"collapse\" }}>\n <thead>\n <tr>\n <th style={TH_STYLE}>Asset</th>\n <th style={TH_STYLE}>Category</th>\n <th style={TH_STYLE}>Acquired</th>\n <th style={TH_RIGHT}>Cost</th>\n <th style={TH_STYLE}>Useful Life</th>\n <th style={TH_STYLE}>Method</th>\n <th style={TH_RIGHT}>Current Year</th>\n <th style={TH_RIGHT}>Accumulated</th>\n <th style={TH_RIGHT}>Book Value</th>\n </tr>\n </thead>\n <tbody>\n {(p.assets ?? []).map((asset, ri) => {\n const catColor =\n (asset.category &&\n CATEGORY_COLORS[asset.category]) ||\n DEFAULT_CATEGORY_COLOR;\n const bvRatio =\n asset.cost > 0 ? asset.bookValue / asset.cost : 0;\n const barColor =\n bvRatio > 0.5\n ? \"#15803d\"\n : bvRatio > 0.2\n ? \"#f59e0b\"\n : \"#dc2626\";\n\n return (\n <tr\n key={asset.id}\n style={{\n background: ri % 2 === 0 ? \"white\" : \"#fafafa\",\n }}\n >\n <td\n style={{\n padding: \"6px 12px\",\n fontSize: \"13px\",\n borderBottom: \"1px solid #f2f2f2\",\n maxWidth: \"200px\",\n overflow: \"hidden\",\n textOverflow: \"ellipsis\",\n whiteSpace: \"nowrap\",\n }}\n >\n {asset.name}\n </td>\n <td\n style={{\n padding: \"6px 12px\",\n fontSize: \"13px\",\n borderBottom: \"1px solid #f2f2f2\",\n }}\n >\n {asset.category ? (\n <span\n style={{\n fontSize: \"10px\",\n fontWeight: 600,\n padding: \"2px 8px\",\n borderRadius: \"9999px\",\n background: catColor.bg,\n color: catColor.color,\n }}\n >\n {asset.category}\n </span>\n ) : (\n <span style={{ color: MUTED }}>{\"—\"}</span>\n )}\n </td>\n <td\n style={{\n padding: \"6px 12px\",\n fontSize: \"13px\",\n borderBottom: \"1px solid #f2f2f2\",\n whiteSpace: \"nowrap\",\n }}\n >\n {formatDate(asset.acquiredDate)}\n </td>\n <td\n style={{\n padding: \"6px 12px\",\n fontSize: \"13px\",\n textAlign: \"right\",\n fontVariantNumeric: \"tabular-nums\",\n borderBottom: \"1px solid #f2f2f2\",\n }}\n >\n {fmt(asset.cost)}\n </td>\n <td\n style={{\n padding: \"6px 12px\",\n fontSize: \"13px\",\n borderBottom: \"1px solid #f2f2f2\",\n whiteSpace: \"nowrap\",\n }}\n >\n {asset.usefulLife ?? \"—\"}\n </td>\n <td\n style={{\n padding: \"6px 12px\",\n fontSize: \"13px\",\n borderBottom: \"1px solid #f2f2f2\",\n whiteSpace: \"nowrap\",\n }}\n >\n {asset.method ?? p.method ?? \"—\"}\n </td>\n <td\n style={{\n padding: \"6px 12px\",\n fontSize: \"13px\",\n textAlign: \"right\",\n fontVariantNumeric: \"tabular-nums\",\n borderBottom: \"1px solid #f2f2f2\",\n }}\n >\n {fmt(asset.currentYearDepreciation)}\n </td>\n <td\n style={{\n padding: \"6px 12px\",\n fontSize: \"13px\",\n textAlign: \"right\",\n fontVariantNumeric: \"tabular-nums\",\n borderBottom: \"1px solid #f2f2f2\",\n }}\n >\n {fmt(asset.accumulatedDepreciation)}\n </td>\n <td\n style={{\n padding: \"6px 12px\",\n fontSize: \"13px\",\n textAlign: \"right\",\n fontVariantNumeric: \"tabular-nums\",\n fontWeight: 600,\n borderBottom: \"1px solid #f2f2f2\",\n }}\n >\n <div>\n {fmt(asset.bookValue)}\n <div\n style={{\n marginTop: \"3px\",\n height: \"4px\",\n borderRadius: \"2px\",\n background: \"#f2f2f2\",\n overflow: \"hidden\",\n }}\n >\n <div\n style={{\n width: `${Math.max(0, Math.min(100, bvRatio * 100))}%`,\n height: \"100%\",\n borderRadius: \"2px\",\n background: barColor,\n transition: \"width 0.3s\",\n }}\n />\n </div>\n </div>\n </td>\n </tr>\n );\n })}\n {/* Totals row */}\n <tr style={{ background: PAPER }}>\n <td\n style={{\n padding: \"8px 12px\",\n fontSize: \"12px\",\n fontWeight: 700,\n borderTop: `2px solid ${BORDER}`,\n }}\n >\n TOTAL\n </td>\n <td\n style={{\n padding: \"8px 12px\",\n borderTop: `2px solid ${BORDER}`,\n }}\n />\n <td\n style={{\n padding: \"8px 12px\",\n borderTop: `2px solid ${BORDER}`,\n }}\n />\n <td\n style={{\n padding: \"8px 12px\",\n fontSize: \"12px\",\n fontWeight: 700,\n textAlign: \"right\",\n fontVariantNumeric: \"tabular-nums\",\n borderTop: `2px solid ${BORDER}`,\n }}\n >\n {fmt(totals.totalCost)}\n </td>\n <td\n style={{\n padding: \"8px 12px\",\n borderTop: `2px solid ${BORDER}`,\n }}\n />\n <td\n style={{\n padding: \"8px 12px\",\n borderTop: `2px solid ${BORDER}`,\n }}\n />\n <td\n style={{\n padding: \"8px 12px\",\n fontSize: \"12px\",\n fontWeight: 700,\n textAlign: \"right\",\n fontVariantNumeric: \"tabular-nums\",\n borderTop: `2px solid ${BORDER}`,\n }}\n >\n {fmt(totals.totalCurrentYear)}\n </td>\n <td\n style={{\n padding: \"8px 12px\",\n fontSize: \"12px\",\n fontWeight: 700,\n textAlign: \"right\",\n fontVariantNumeric: \"tabular-nums\",\n borderTop: `2px solid ${BORDER}`,\n }}\n >\n {fmt(totals.totalAccumulated)}\n </td>\n <td\n style={{\n padding: \"8px 12px\",\n fontSize: \"12px\",\n fontWeight: 700,\n textAlign: \"right\",\n fontVariantNumeric: \"tabular-nums\",\n borderTop: `2px solid ${BORDER}`,\n }}\n >\n {fmt(totals.totalBookValue)}\n </td>\n </tr>\n </tbody>\n </table>\n </div>\n </div>\n </ComponentActions>\n );\n}\n","\"use client\";\n\nimport React, { useState } from \"react\";\nimport type { SchemaPayload } from \"../../schemas\";\nimport { ComponentActions } from \"../../shared/ComponentActions\";\nimport { useTheme } from \"../../shared/ThemeContext\";\n\ntype Priority = \"low\" | \"medium\" | \"high\";\n\nconst PRIORITY_STYLES: Record<Priority, { color: string; bg: string; label: string }> = {\n high: { color: \"#dc2626\", bg: \"#fef2f2\", label: \"HIGH\" },\n medium: { color: \"#f59e0b\", bg: \"#fff7ed\", label: \"MEDIUM\" },\n low: { color: \"#777777\", bg: \"#f2f2f2\", label: \"LOW\" },\n};\n\nexport function EscalationCardResolver(p: SchemaPayload<\"escalation-card\">) {\n const { BORDER, MUTED, ACCENT, ACCENT_SOFT } = useTheme();\n const [cardHovered, setCardHovered] = useState(false);\n const [btnHovered, setBtnHovered] = useState(false);\n\n const priorityStyle = p.priority ? PRIORITY_STYLES[p.priority] : null;\n // Default (no priority) badge falls back to the action accent.\n const railColor = priorityStyle?.color ?? ACCENT;\n const iconBg = priorityStyle?.bg ?? \"#fff2ec\";\n\n return (\n <ComponentActions filename={p.title ?? \"escalation\"}>\n <div style={{ width: \"100%\", display: \"flex\", flexDirection: \"column\", gap: \"10px\" }}>\n <div\n onMouseEnter={() => setCardHovered(true)}\n onMouseLeave={() => setCardHovered(false)}\n style={{\n position: \"relative\",\n borderRadius: \"0.75rem\",\n border: `1px solid ${cardHovered ? \"#c8c8c8\" : BORDER}`,\n padding: \"16px 18px 16px 20px\",\n display: \"flex\",\n flexDirection: \"row\",\n alignItems: \"center\",\n gap: \"14px\",\n overflow: \"hidden\",\n boxShadow: cardHovered\n ? \"0 2px 8px rgba(0,0,0,0.06), 0 8px 24px rgba(0,0,0,0.08)\"\n : \"0 1px 2px rgba(0,0,0,0.03), 0 4px 12px rgba(0,0,0,0.04)\",\n transition: \"box-shadow 0.2s, border-color 0.2s\",\n }}\n >\n {/* Priority accent rail */}\n <div\n style={{\n position: \"absolute\",\n top: 0,\n left: 0,\n bottom: 0,\n width: \"4px\",\n background: railColor,\n }}\n />\n\n {/* Escalation icon box */}\n <div\n style={{\n width: \"40px\",\n height: \"40px\",\n borderRadius: \"8px\",\n background: iconBg,\n color: railColor,\n display: \"flex\",\n alignItems: \"center\",\n justifyContent: \"center\",\n fontSize: \"18px\",\n lineHeight: 1,\n flexShrink: 0,\n boxShadow: \"inset 0 0 0 1px rgba(0,0,0,0.04)\",\n }}\n >\n {\"⚑\"}\n </div>\n\n {/* Body */}\n <div style={{ flex: 1, minWidth: 0, display: \"flex\", flexDirection: \"column\", gap: \"4px\" }}>\n <div style={{ display: \"flex\", alignItems: \"center\", gap: \"8px\", flexWrap: \"wrap\" }}>\n {p.title && (\n <p\n style={{\n fontFamily: \"var(--font-serif)\",\n fontSize: \"15px\",\n fontWeight: 400,\n color: \"var(--foreground)\",\n letterSpacing: \"-0.01em\",\n margin: 0,\n }}\n >\n {p.title}\n </p>\n )}\n {priorityStyle && (\n <span\n style={{\n fontSize: \"10px\",\n fontWeight: 600,\n letterSpacing: \"0.04em\",\n padding: \"2px 8px\",\n borderRadius: \"9999px\",\n background: priorityStyle.bg,\n color: priorityStyle.color,\n }}\n >\n {priorityStyle.label}\n </span>\n )}\n </div>\n {p.description && (\n <span style={{ fontSize: \"12px\", color: MUTED, lineHeight: 1.45 }}>\n {p.description}\n </span>\n )}\n </div>\n\n {/* CTA deeplink */}\n <a\n href={p.url}\n target=\"_blank\"\n rel=\"noopener noreferrer\"\n onMouseEnter={() => setBtnHovered(true)}\n onMouseLeave={() => setBtnHovered(false)}\n style={{\n background: btnHovered ? ACCENT_SOFT : ACCENT,\n color: \"white\",\n borderRadius: \"8px\",\n padding: \"8px 16px\",\n fontSize: \"12px\",\n fontWeight: 600,\n textDecoration: \"none\",\n whiteSpace: \"nowrap\",\n flexShrink: 0,\n cursor: \"pointer\",\n transition: \"background 0.15s\",\n }}\n >\n {(p.ctaLabel ?? \"Review & Resolve\") + \" →\"}\n </a>\n </div>\n </div>\n </ComponentActions>\n );\n}\n","\"use client\";\n\nimport React from \"react\";\nimport { LineChart, Line, XAxis, YAxis, Tooltip, ResponsiveContainer, CartesianGrid } from \"recharts\";\nimport type { SchemaPayload } from \"../../schemas\";\nimport { ComponentActions } from \"../../shared/ComponentActions\";\nimport { useSeriesToggle } from \"../../shared/useSeriesToggle\";\nimport { BORDER, CHART_PALETTE } from \"../../shared/theme\";\nimport { useTheme } from \"../../shared/ThemeContext\";\n\nconst tooltipStyle: React.CSSProperties = {\n fontSize: \"12px\",\n borderRadius: \"8px\",\n border: `1px solid ${BORDER}`,\n background: \"white\",\n boxShadow: \"0 4px 12px rgba(0,0,0,0.08)\",\n color: \"var(--foreground)\",\n};\n\nfunction fmt(v: number, unit?: string): string {\n const n = Math.abs(v) >= 1000 ? v.toLocaleString(undefined, { maximumFractionDigits: 0 }) : `${v}`;\n if (!unit) return n;\n return /^[$€£¥]/.test(unit) ? `${unit}${n}` : `${n}${unit === \"%\" ? \"%\" : ` ${unit}`}`;\n}\n\nexport function LineChartResolver(p: SchemaPayload<\"line-chart\">) {\n const { BORDER, MUTED, ACCENT } = useTheme();\n const series = p.series ?? [];\n const data = p.data ?? [];\n const xKey = p.xKey ?? \"x\";\n const { isVisible, toggle } = useSeriesToggle(series.map((s) => s.dataKey));\n\n return (\n <ComponentActions filename={p.title ?? \"line-chart\"}>\n <div style={{ width: \"100%\", display: \"flex\", flexDirection: \"column\", gap: \"12px\" }}>\n {p.title && (\n <p style={{ fontFamily: \"var(--font-serif)\", fontSize: \"15px\", fontWeight: 600, color: \"var(--foreground)\", letterSpacing: \"-0.005em\" }}>\n {p.title}\n </p>\n )}\n <ResponsiveContainer width=\"100%\" height={220}>\n <LineChart data={data} margin={{ top: 4, right: 8, left: 0, bottom: 0 }}>\n <CartesianGrid strokeDasharray=\"3 3\" stroke={BORDER} strokeOpacity={1} />\n <XAxis dataKey={xKey} tick={{ fontSize: 11, fill: MUTED }} axisLine={false} tickLine={false} />\n <YAxis\n tick={{ fontSize: 11, fill: MUTED }}\n axisLine={false}\n tickLine={false}\n width={48}\n tickFormatter={(v: number) => fmt(v, p.unit)}\n />\n <Tooltip\n contentStyle={tooltipStyle}\n formatter={(value: unknown) => fmt(Number(value), p.unit)}\n cursor={{ stroke: ACCENT, strokeWidth: 1, strokeDasharray: \"4 2\" }}\n />\n {series.map((s, i) => (\n <Line\n key={s.dataKey}\n type={p.smooth ? \"monotone\" : \"linear\"}\n dataKey={s.dataKey}\n name={s.name}\n stroke={s.color ?? CHART_PALETTE[i % CHART_PALETTE.length]}\n strokeWidth={2}\n dot={false}\n activeDot={{ r: 4, strokeWidth: 2, stroke: \"white\" }}\n hide={!isVisible(s.dataKey)}\n isAnimationActive={false}\n />\n ))}\n </LineChart>\n </ResponsiveContainer>\n {series.length > 1 && (\n <div style={{ display: \"flex\", flexWrap: \"wrap\", gap: \"14px\" }}>\n {series.map((s, i) => (\n <div\n key={s.dataKey}\n onClick={() => toggle(s.dataKey)}\n style={{\n display: \"flex\", alignItems: \"center\", gap: \"6px\", fontSize: \"12px\",\n color: isVisible(s.dataKey) ? MUTED : \"#bbbbbb\",\n cursor: \"pointer\", userSelect: \"none\", transition: \"color 0.15s\",\n textDecoration: isVisible(s.dataKey) ? \"none\" : \"line-through\",\n }}\n >\n <span style={{\n width: \"16px\", height: \"2px\", borderRadius: \"9999px\",\n background: s.color ?? CHART_PALETTE[i % CHART_PALETTE.length], display: \"inline-block\",\n opacity: isVisible(s.dataKey) ? 1 : 0.3, transition: \"opacity 0.15s\",\n }} />\n {s.name}\n </div>\n ))}\n </div>\n )}\n </div>\n </ComponentActions>\n );\n}\n","\"use client\";\n\nimport React from \"react\";\nimport { ComposedChart, Bar, Line, XAxis, YAxis, Tooltip, ResponsiveContainer, CartesianGrid } from \"recharts\";\nimport type { SchemaPayload } from \"../../schemas\";\nimport { ComponentActions } from \"../../shared/ComponentActions\";\nimport { useSeriesToggle } from \"../../shared/useSeriesToggle\";\nimport { BORDER, CHART_PALETTE } from \"../../shared/theme\";\nimport { useTheme } from \"../../shared/ThemeContext\";\n\nconst tooltipStyle: React.CSSProperties = {\n fontSize: \"12px\",\n borderRadius: \"8px\",\n border: `1px solid ${BORDER}`,\n background: \"white\",\n boxShadow: \"0 4px 12px rgba(0,0,0,0.08)\",\n color: \"var(--foreground)\",\n};\n\nfunction fmt(v: number, unit?: string): string {\n const n = Math.abs(v) >= 1000 ? v.toLocaleString(undefined, { maximumFractionDigits: 0 }) : `${v}`;\n if (!unit) return n;\n return /^[$€£¥]/.test(unit) ? `${unit}${n}` : `${n}${unit === \"%\" ? \"%\" : ` ${unit}`}`;\n}\n\nexport function ComboChartResolver(p: SchemaPayload<\"combo-chart\">) {\n const { BORDER, MUTED } = useTheme();\n const bars = p.bars ?? [];\n const lines = p.lines ?? [];\n const data = p.data ?? [];\n const xKey = p.xKey ?? \"x\";\n const hasRight = bars.some((b) => b.axis === \"right\") || lines.some((l) => (l.axis ?? \"right\") === \"right\");\n\n const all = [\n ...bars.map((b) => ({ ...b, kind: \"bar\" as const })),\n ...lines.map((l) => ({ ...l, kind: \"line\" as const })),\n ];\n const { isVisible, toggle } = useSeriesToggle(all.map((s) => s.dataKey));\n\n const colorOf = (dataKey: string, fallbackIdx: number) => {\n const s = all.find((x) => x.dataKey === dataKey);\n return s?.color ?? CHART_PALETTE[fallbackIdx % CHART_PALETTE.length];\n };\n\n return (\n <ComponentActions filename={p.title ?? \"combo-chart\"}>\n <div style={{ width: \"100%\", display: \"flex\", flexDirection: \"column\", gap: \"12px\" }}>\n {p.title && (\n <p style={{ fontFamily: \"var(--font-serif)\", fontSize: \"15px\", fontWeight: 600, color: \"var(--foreground)\", letterSpacing: \"-0.005em\" }}>\n {p.title}\n </p>\n )}\n <ResponsiveContainer width=\"100%\" height={240}>\n <ComposedChart data={data} margin={{ top: 4, right: hasRight ? 4 : 8, left: 0, bottom: 0 }}>\n <CartesianGrid strokeDasharray=\"3 3\" stroke={BORDER} strokeOpacity={1} vertical={false} />\n <XAxis dataKey={xKey} tick={{ fontSize: 11, fill: MUTED }} axisLine={false} tickLine={false} />\n <YAxis\n yAxisId=\"left\"\n tick={{ fontSize: 11, fill: MUTED }}\n axisLine={false}\n tickLine={false}\n width={48}\n tickFormatter={(v: number) => fmt(v, p.leftUnit)}\n />\n {hasRight && (\n <YAxis\n yAxisId=\"right\"\n orientation=\"right\"\n tick={{ fontSize: 11, fill: MUTED }}\n axisLine={false}\n tickLine={false}\n width={48}\n tickFormatter={(v: number) => fmt(v, p.rightUnit)}\n />\n )}\n <Tooltip contentStyle={tooltipStyle} cursor={{ fill: \"rgba(0,0,0,0.03)\" }} />\n {bars.map((b, i) => (\n <Bar\n key={b.dataKey}\n yAxisId={b.axis ?? \"left\"}\n dataKey={b.dataKey}\n name={b.name}\n fill={colorOf(b.dataKey, i)}\n radius={[3, 3, 0, 0]}\n maxBarSize={40}\n hide={!isVisible(b.dataKey)}\n isAnimationActive={false}\n />\n ))}\n {lines.map((l, i) => (\n <Line\n key={l.dataKey}\n yAxisId={l.axis ?? \"right\"}\n type=\"monotone\"\n dataKey={l.dataKey}\n name={l.name}\n stroke={colorOf(l.dataKey, bars.length + i)}\n strokeWidth={2}\n dot={false}\n activeDot={{ r: 4, strokeWidth: 2, stroke: \"white\" }}\n hide={!isVisible(l.dataKey)}\n isAnimationActive={false}\n />\n ))}\n </ComposedChart>\n </ResponsiveContainer>\n {all.length > 1 && (\n <div style={{ display: \"flex\", flexWrap: \"wrap\", gap: \"14px\" }}>\n {all.map((s, i) => {\n const c = colorOf(s.dataKey, i);\n return (\n <div\n key={s.dataKey}\n onClick={() => toggle(s.dataKey)}\n style={{\n display: \"flex\", alignItems: \"center\", gap: \"6px\", fontSize: \"12px\",\n color: isVisible(s.dataKey) ? MUTED : \"#bbbbbb\",\n cursor: \"pointer\", userSelect: \"none\", transition: \"color 0.15s\",\n textDecoration: isVisible(s.dataKey) ? \"none\" : \"line-through\",\n }}\n >\n <span style={{\n width: s.kind === \"line\" ? \"16px\" : \"12px\",\n height: s.kind === \"line\" ? \"2px\" : \"12px\",\n borderRadius: s.kind === \"line\" ? \"9999px\" : \"3px\",\n background: c, display: \"inline-block\",\n opacity: isVisible(s.dataKey) ? 1 : 0.3, transition: \"opacity 0.15s\",\n }} />\n {s.name}\n </div>\n );\n })}\n </div>\n )}\n </div>\n </ComponentActions>\n );\n}\n","\"use client\";\n\nimport React from \"react\";\nimport { RadialBarChart, RadialBar, PolarAngleAxis, ResponsiveContainer } from \"recharts\";\nimport type { SchemaPayload } from \"../../schemas\";\nimport { ComponentActions } from \"../../shared/ComponentActions\";\nimport { useTheme } from \"../../shared/ThemeContext\";\n\nconst GREEN = \"#15803d\";\nconst AMBER = \"#f59e0b\";\nconst RED = \"#dc2626\";\n\nfunction fmt(v: number, unit?: string): string {\n const n = Math.abs(v) >= 1000 ? v.toLocaleString(undefined, { maximumFractionDigits: 0 }) : `${Math.round(v * 10) / 10}`;\n if (!unit) return n;\n return /^[$€£¥]/.test(unit) ? `${unit}${n}` : `${n}${unit === \"%\" ? \"%\" : ` ${unit}`}`;\n}\n\nexport function GaugeChartResolver(p: SchemaPayload<\"gauge-chart\">) {\n const { MUTED, ACCENT, PAPER } = useTheme();\n const items = p.items ?? [];\n\n return (\n <ComponentActions filename={p.title ?? \"gauge-chart\"}>\n <div style={{ width: \"100%\", display: \"flex\", flexDirection: \"column\", gap: \"12px\" }}>\n {p.title && (\n <p style={{ fontFamily: \"var(--font-serif)\", fontSize: \"15px\", fontWeight: 600, color: \"var(--foreground)\", letterSpacing: \"-0.005em\" }}>\n {p.title}\n </p>\n )}\n <div style={{ display: \"flex\", flexWrap: \"wrap\", gap: \"8px\", justifyContent: items.length === 1 ? \"center\" : \"space-around\" }}>\n {items.map((it, i) => {\n const max = it.max || 1;\n const pct = Math.max(0, Math.min(1, it.value / max));\n const arcColor = it.target == null ? ACCENT : it.value >= it.target ? GREEN : it.value >= it.target * 0.85 ? AMBER : RED;\n return (\n <div key={i} style={{ flex: \"1 1 130px\", maxWidth: \"200px\", display: \"flex\", flexDirection: \"column\", alignItems: \"center\", gap: \"2px\" }}>\n <div style={{ position: \"relative\", width: \"100%\", height: \"130px\" }}>\n <ResponsiveContainer width=\"100%\" height=\"100%\">\n <RadialBarChart\n innerRadius=\"72%\"\n outerRadius=\"100%\"\n data={[{ value: it.value }]}\n startAngle={220}\n endAngle={-40}\n >\n <PolarAngleAxis type=\"number\" domain={[0, max]} angleAxisId={0} tick={false} />\n <RadialBar\n background={{ fill: PAPER }}\n dataKey=\"value\"\n cornerRadius={8}\n fill={arcColor}\n isAnimationActive={false}\n />\n </RadialBarChart>\n </ResponsiveContainer>\n <div style={{ position: \"absolute\", inset: 0, display: \"flex\", flexDirection: \"column\", alignItems: \"center\", justifyContent: \"center\", pointerEvents: \"none\" }}>\n <span style={{ fontSize: \"20px\", fontWeight: 600, color: \"var(--foreground)\", lineHeight: 1.1 }}>\n {fmt(it.value, it.unit)}\n </span>\n <span style={{ fontSize: \"10px\", color: MUTED }}>\n of {fmt(max, it.unit)}\n </span>\n </div>\n </div>\n <span style={{ fontSize: \"12px\", fontWeight: 500, color: \"var(--foreground)\", textAlign: \"center\" }}>{it.label}</span>\n <span style={{ fontSize: \"11px\", color: MUTED }}>\n {Math.round(pct * 100)}%{it.target != null ? ` · target ${fmt(it.target, it.unit)}` : \"\"}\n </span>\n </div>\n );\n })}\n </div>\n </div>\n </ComponentActions>\n );\n}\n","\"use client\";\n\nimport React from \"react\";\nimport { Treemap, ResponsiveContainer, Tooltip } from \"recharts\";\nimport type { SchemaPayload } from \"../../schemas\";\nimport { ComponentActions } from \"../../shared/ComponentActions\";\nimport { downloadCSV } from \"../../shared/downloadCSV\";\nimport { BORDER, CHART_PALETTE } from \"../../shared/theme\";\nimport { useTheme } from \"../../shared/ThemeContext\";\n\nconst tooltipStyle: React.CSSProperties = {\n fontSize: \"12px\",\n borderRadius: \"8px\",\n border: `1px solid ${BORDER}`,\n background: \"white\",\n boxShadow: \"0 4px 12px rgba(0,0,0,0.08)\",\n color: \"var(--foreground)\",\n};\n\nfunction money(v: number, currency?: string): string {\n const n = v.toLocaleString(undefined, { maximumFractionDigits: 0 });\n return currency ? `${currency}${n}` : n;\n}\n\ntype CellProps = {\n x: number; y: number; width: number; height: number;\n name?: string; value?: number; fill?: string;\n};\n\nfunction makeCellContent(total: number, currency?: string) {\n return function CellContent(props: unknown) {\n const { x, y, width, height, name, value, fill } = props as CellProps;\n const show = width > 56 && height > 28;\n const pct = total > 0 && value != null ? Math.round((value / total) * 100) : 0;\n return (\n <g>\n <rect x={x} y={y} width={width} height={height} fill={fill} stroke=\"white\" strokeWidth={2} rx={4} />\n {show && (\n <>\n <text x={x + 8} y={y + 18} fontSize={12} fontWeight={600} fill=\"white\" style={{ pointerEvents: \"none\" }}>\n {name}\n </text>\n <text x={x + 8} y={y + 34} fontSize={11} fill=\"rgba(255,255,255,0.85)\" style={{ pointerEvents: \"none\" }}>\n {value != null ? `${money(value, currency)} · ${pct}%` : \"\"}\n </text>\n </>\n )}\n </g>\n );\n };\n}\n\nexport function TreemapChartResolver(p: SchemaPayload<\"treemap-chart\">) {\n useTheme();\n const nodes = p.nodes ?? [];\n const total = nodes.reduce((s, n) => s + (n.value || 0), 0);\n const data = nodes.map((n, i) => ({\n name: n.name,\n value: n.value,\n fill: n.color ?? CHART_PALETTE[i % CHART_PALETTE.length],\n }));\n\n const csv = () =>\n downloadCSV(\n [{ key: \"name\", label: \"Name\" }, { key: \"value\", label: \"Value\" }],\n nodes.map((n) => ({ name: n.name, value: n.value })),\n p.title ?? \"treemap-chart\"\n );\n\n return (\n <ComponentActions filename={p.title ?? \"treemap-chart\"} onDownloadCSV={csv}>\n <div style={{ width: \"100%\", display: \"flex\", flexDirection: \"column\", gap: \"12px\" }}>\n {p.title && (\n <p style={{ fontFamily: \"var(--font-serif)\", fontSize: \"15px\", fontWeight: 600, color: \"var(--foreground)\", letterSpacing: \"-0.005em\" }}>\n {p.title}\n </p>\n )}\n <ResponsiveContainer width=\"100%\" height={260}>\n <Treemap\n data={data}\n dataKey=\"value\"\n stroke=\"white\"\n isAnimationActive={false}\n content={makeCellContent(total, p.currency) as never}\n >\n <Tooltip\n contentStyle={tooltipStyle}\n formatter={(value: unknown) => money(Number(value), p.currency)}\n />\n </Treemap>\n </ResponsiveContainer>\n </div>\n </ComponentActions>\n );\n}\n","\"use client\";\n\nimport React from \"react\";\nimport { RadarChart, Radar, PolarGrid, PolarAngleAxis, PolarRadiusAxis, Tooltip, ResponsiveContainer } from \"recharts\";\nimport type { SchemaPayload } from \"../../schemas\";\nimport { ComponentActions } from \"../../shared/ComponentActions\";\nimport { useSeriesToggle } from \"../../shared/useSeriesToggle\";\nimport { BORDER, CHART_PALETTE } from \"../../shared/theme\";\nimport { useTheme } from \"../../shared/ThemeContext\";\n\nconst tooltipStyle: React.CSSProperties = {\n fontSize: \"12px\",\n borderRadius: \"8px\",\n border: `1px solid ${BORDER}`,\n background: \"white\",\n boxShadow: \"0 4px 12px rgba(0,0,0,0.08)\",\n color: \"var(--foreground)\",\n};\n\nexport function RadarChartResolver(p: SchemaPayload<\"radar-chart\">) {\n const { BORDER, MUTED } = useTheme();\n const series = p.series ?? [];\n const data = p.data ?? [];\n const { isVisible, toggle } = useSeriesToggle(series.map((s) => s.dataKey));\n\n return (\n <ComponentActions filename={p.title ?? \"radar-chart\"}>\n <div style={{ width: \"100%\", display: \"flex\", flexDirection: \"column\", gap: \"12px\" }}>\n {p.title && (\n <p style={{ fontFamily: \"var(--font-serif)\", fontSize: \"15px\", fontWeight: 600, color: \"var(--foreground)\", letterSpacing: \"-0.005em\" }}>\n {p.title}\n </p>\n )}\n <ResponsiveContainer width=\"100%\" height={280}>\n <RadarChart data={data} margin={{ top: 8, right: 8, bottom: 8, left: 8 }}>\n <PolarGrid stroke={BORDER} />\n <PolarAngleAxis dataKey=\"metric\" tick={{ fontSize: 11, fill: MUTED }} />\n <PolarRadiusAxis tick={{ fontSize: 10, fill: MUTED }} axisLine={false} />\n <Tooltip contentStyle={tooltipStyle} formatter={(value: unknown) => (p.unit ? `${Number(value)}${p.unit}` : `${Number(value)}`)} />\n {series.map((s, i) => {\n const c = s.color ?? CHART_PALETTE[i % CHART_PALETTE.length];\n return (\n <Radar\n key={s.dataKey}\n name={s.name}\n dataKey={s.dataKey}\n stroke={c}\n fill={c}\n fillOpacity={0.18}\n strokeWidth={2}\n hide={!isVisible(s.dataKey)}\n isAnimationActive={false}\n />\n );\n })}\n </RadarChart>\n </ResponsiveContainer>\n {series.length > 1 && (\n <div style={{ display: \"flex\", flexWrap: \"wrap\", gap: \"14px\", justifyContent: \"center\" }}>\n {series.map((s, i) => {\n const c = s.color ?? CHART_PALETTE[i % CHART_PALETTE.length];\n return (\n <div\n key={s.dataKey}\n onClick={() => toggle(s.dataKey)}\n style={{\n display: \"flex\", alignItems: \"center\", gap: \"6px\", fontSize: \"12px\",\n color: isVisible(s.dataKey) ? MUTED : \"#bbbbbb\",\n cursor: \"pointer\", userSelect: \"none\", transition: \"color 0.15s\",\n textDecoration: isVisible(s.dataKey) ? \"none\" : \"line-through\",\n }}\n >\n <span style={{\n width: \"12px\", height: \"12px\", borderRadius: \"3px\",\n background: c, display: \"inline-block\",\n opacity: isVisible(s.dataKey) ? 1 : 0.3, transition: \"opacity 0.15s\",\n }} />\n {s.name}\n </div>\n );\n })}\n </div>\n )}\n </div>\n </ComponentActions>\n );\n}\n","\"use client\";\n\nimport React from \"react\";\nimport { FunnelChart, Funnel, LabelList, Cell, Tooltip, ResponsiveContainer } from \"recharts\";\nimport type { SchemaPayload } from \"../../schemas\";\nimport { ComponentActions } from \"../../shared/ComponentActions\";\nimport { downloadCSV } from \"../../shared/downloadCSV\";\nimport { BORDER, CHART_PALETTE } from \"../../shared/theme\";\nimport { useTheme } from \"../../shared/ThemeContext\";\n\nconst tooltipStyle: React.CSSProperties = {\n fontSize: \"12px\",\n borderRadius: \"8px\",\n border: `1px solid ${BORDER}`,\n background: \"white\",\n boxShadow: \"0 4px 12px rgba(0,0,0,0.08)\",\n color: \"var(--foreground)\",\n};\n\nfunction money(v: number, currency?: string): string {\n const n = v.toLocaleString(undefined, { maximumFractionDigits: 0 });\n return currency ? `${currency}${n}` : n;\n}\n\nexport function FunnelChartResolver(p: SchemaPayload<\"funnel-chart\">) {\n const { MUTED } = useTheme();\n const stages = p.stages ?? [];\n const data = stages.map((s, i) => ({\n name: s.label,\n value: s.value,\n fill: s.color ?? CHART_PALETTE[i % CHART_PALETTE.length],\n }));\n const first = stages[0]?.value ?? 0;\n\n const csv = () =>\n downloadCSV(\n [{ key: \"label\", label: \"Stage\" }, { key: \"value\", label: \"Value\" }],\n stages.map((s) => ({ label: s.label, value: s.value })),\n p.title ?? \"funnel-chart\"\n );\n\n return (\n <ComponentActions filename={p.title ?? \"funnel-chart\"} onDownloadCSV={csv}>\n <div style={{ width: \"100%\", display: \"flex\", flexDirection: \"column\", gap: \"12px\" }}>\n {p.title && (\n <p style={{ fontFamily: \"var(--font-serif)\", fontSize: \"15px\", fontWeight: 600, color: \"var(--foreground)\", letterSpacing: \"-0.005em\" }}>\n {p.title}\n </p>\n )}\n <ResponsiveContainer width=\"100%\" height={Math.max(180, stages.length * 44)}>\n <FunnelChart margin={{ top: 4, right: 96, bottom: 4, left: 8 }}>\n <Tooltip contentStyle={tooltipStyle} formatter={(value: unknown) => money(Number(value), p.currency)} />\n <Funnel dataKey=\"value\" data={data} isAnimationActive={false} stroke=\"white\">\n <LabelList position=\"right\" dataKey=\"name\" fontSize={12} fill=\"var(--foreground)\" stroke=\"none\" />\n {data.map((d, i) => (\n <Cell key={i} fill={d.fill} />\n ))}\n </Funnel>\n </FunnelChart>\n </ResponsiveContainer>\n <div style={{ display: \"flex\", flexDirection: \"column\", gap: \"4px\" }}>\n {stages.map((s, i) => {\n const prior = i === 0 ? null : stages[i - 1].value;\n const stepPct = prior && prior > 0 ? Math.round((s.value / prior) * 100) : null;\n const ofTop = first > 0 ? Math.round((s.value / first) * 100) : null;\n return (\n <div key={i} style={{ display: \"flex\", alignItems: \"center\", justifyContent: \"space-between\", fontSize: \"12px\" }}>\n <span style={{ display: \"flex\", alignItems: \"center\", gap: \"8px\", color: \"var(--foreground)\" }}>\n <span style={{ width: \"10px\", height: \"10px\", borderRadius: \"3px\", background: s.color ?? CHART_PALETTE[i % CHART_PALETTE.length] }} />\n {s.label}\n </span>\n <span style={{ color: MUTED, fontVariantNumeric: \"tabular-nums\" }}>\n {money(s.value, p.currency)}\n {stepPct != null ? ` · ${stepPct}% of prior` : ofTop != null ? ` · ${ofTop}%` : \"\"}\n </span>\n </div>\n );\n })}\n </div>\n </div>\n </ComponentActions>\n );\n}\n","\"use client\";\n\nimport React from \"react\";\nimport type { SchemaPayload } from \"../../schemas\";\nimport { ComponentActions } from \"../../shared/ComponentActions\";\nimport { downloadCSV } from \"../../shared/downloadCSV\";\nimport { useTheme } from \"../../shared/ThemeContext\";\n\nconst GREEN = \"#15803d\";\nconst AMBER = \"#f59e0b\";\nconst RED = \"#dc2626\";\n\nfunction fmt(v: number, unit?: string): string {\n const n = Math.abs(v) >= 1000 ? v.toLocaleString(undefined, { maximumFractionDigits: 0 }) : `${Math.round(v * 10) / 10}`;\n if (!unit) return n;\n return /^[$€£¥]/.test(unit) ? `${unit}${n}` : `${n}${unit === \"%\" ? \"%\" : ` ${unit}`}`;\n}\n\nexport function BulletChartResolver(p: SchemaPayload<\"bullet-chart\">) {\n const { MUTED, PAPER } = useTheme();\n const items = p.items ?? [];\n\n const csv = () =>\n downloadCSV(\n [{ key: \"label\", label: \"KPI\" }, { key: \"value\", label: \"Actual\" }, { key: \"target\", label: \"Target\" }],\n items.map((it) => ({ label: it.label, value: it.value, target: it.target })),\n p.title ?? \"bullet-chart\"\n );\n\n return (\n <ComponentActions filename={p.title ?? \"bullet-chart\"} onDownloadCSV={csv}>\n <div style={{ width: \"100%\", display: \"flex\", flexDirection: \"column\", gap: \"12px\" }}>\n {p.title && (\n <p style={{ fontFamily: \"var(--font-serif)\", fontSize: \"15px\", fontWeight: 600, color: \"var(--foreground)\", letterSpacing: \"-0.005em\" }}>\n {p.title}\n </p>\n )}\n <div style={{ display: \"flex\", flexDirection: \"column\", gap: \"12px\" }}>\n {items.map((it, i) => {\n const max = it.max ?? (Math.max(it.value, it.target) * 1.25 || 1);\n const valPct = Math.max(0, Math.min(100, (it.value / max) * 100));\n const tgtPct = Math.max(0, Math.min(100, (it.target / max) * 100));\n const ratio = it.target > 0 ? it.value / it.target : 1;\n const barColor = ratio >= 1 ? GREEN : ratio >= 0.85 ? AMBER : RED;\n return (\n <div key={i} style={{ display: \"flex\", flexDirection: \"column\", gap: \"4px\" }}>\n <div style={{ display: \"flex\", alignItems: \"baseline\", justifyContent: \"space-between\", fontSize: \"12px\" }}>\n <span style={{ fontWeight: 500, color: \"var(--foreground)\" }}>{it.label}</span>\n <span style={{ color: MUTED, fontVariantNumeric: \"tabular-nums\" }}>\n <span style={{ color: barColor, fontWeight: 600 }}>{fmt(it.value, it.unit)}</span>\n {\" / \"}\n {fmt(it.target, it.unit)}\n </span>\n </div>\n <div style={{ position: \"relative\", height: \"14px\", borderRadius: \"4px\", background: PAPER, overflow: \"hidden\" }}>\n <div style={{ position: \"absolute\", left: 0, top: 0, bottom: 0, width: `${valPct}%`, background: barColor, borderRadius: \"4px\", transition: \"width 0.3s\" }} />\n {/* target tick */}\n <div style={{ position: \"absolute\", left: `calc(${tgtPct}% - 1px)`, top: \"-2px\", bottom: \"-2px\", width: \"2px\", background: \"var(--foreground)\", borderRadius: \"1px\" }} />\n </div>\n </div>\n );\n })}\n </div>\n </div>\n </ComponentActions>\n );\n}\n","\"use client\";\n\nimport React from \"react\";\nimport { ScatterChart, Scatter, XAxis, YAxis, ZAxis, CartesianGrid, Tooltip, ResponsiveContainer } from \"recharts\";\nimport type { SchemaPayload } from \"../../schemas\";\nimport { ComponentActions } from \"../../shared/ComponentActions\";\nimport { useSeriesToggle } from \"../../shared/useSeriesToggle\";\nimport { BORDER, CHART_PALETTE } from \"../../shared/theme\";\nimport { useTheme } from \"../../shared/ThemeContext\";\n\nfunction axisFmt(v: number, unit?: string): string {\n const n = Math.abs(v) >= 1000 ? v.toLocaleString(undefined, { maximumFractionDigits: 0 }) : `${v}`;\n if (!unit) return n;\n return /^[$€£¥]/.test(unit) ? `${unit}${n}` : `${n}${unit === \"%\" ? \"%\" : ` ${unit}`}`;\n}\n\nexport function ScatterChartResolver(p: SchemaPayload<\"scatter-chart\">) {\n const { BORDER, MUTED } = useTheme();\n const series = p.series ?? [];\n const hasZ = series.some((s) => s.points.some((pt) => pt.z != null));\n const { isVisible, toggle } = useSeriesToggle(series.map((s) => s.name));\n\n // Recharts 3 tooltip content props have a readonly payload; accept loosely and narrow below.\n const tooltipContent = (props: { active?: boolean; payload?: ReadonlyArray<{ payload?: unknown }> }) => {\n const { active, payload } = props;\n if (!active || !payload || !payload.length) return null;\n const d = payload[0].payload as { x: number; y: number; z?: number; label?: string };\n return (\n <div style={{ fontSize: \"12px\", borderRadius: \"8px\", border: `1px solid ${BORDER}`, background: \"white\", boxShadow: \"0 4px 12px rgba(0,0,0,0.08)\", color: \"var(--foreground)\", padding: \"8px 10px\" }}>\n {d.label && <div style={{ fontWeight: 600, marginBottom: \"2px\" }}>{d.label}</div>}\n <div style={{ color: MUTED }}>{p.xLabel ?? \"x\"}: {axisFmt(d.x, p.xUnit)}</div>\n <div style={{ color: MUTED }}>{p.yLabel ?? \"y\"}: {axisFmt(d.y, p.yUnit)}</div>\n {d.z != null && <div style={{ color: MUTED }}>size: {d.z.toLocaleString()}</div>}\n </div>\n );\n };\n\n return (\n <ComponentActions filename={p.title ?? \"scatter-chart\"}>\n <div style={{ width: \"100%\", display: \"flex\", flexDirection: \"column\", gap: \"12px\" }}>\n {p.title && (\n <p style={{ fontFamily: \"var(--font-serif)\", fontSize: \"15px\", fontWeight: 600, color: \"var(--foreground)\", letterSpacing: \"-0.005em\" }}>\n {p.title}\n </p>\n )}\n <ResponsiveContainer width=\"100%\" height={260}>\n <ScatterChart margin={{ top: 8, right: 12, left: 0, bottom: 16 }}>\n <CartesianGrid strokeDasharray=\"3 3\" stroke={BORDER} />\n <XAxis\n type=\"number\"\n dataKey=\"x\"\n name={p.xLabel}\n tick={{ fontSize: 11, fill: MUTED }}\n axisLine={false}\n tickLine={false}\n tickFormatter={(v: number) => axisFmt(v, p.xUnit)}\n label={p.xLabel ? { value: p.xLabel, position: \"insideBottom\", offset: -8, fontSize: 11, fill: MUTED } : undefined}\n />\n <YAxis\n type=\"number\"\n dataKey=\"y\"\n name={p.yLabel}\n tick={{ fontSize: 11, fill: MUTED }}\n axisLine={false}\n tickLine={false}\n width={48}\n tickFormatter={(v: number) => axisFmt(v, p.yUnit)}\n />\n {hasZ && <ZAxis type=\"number\" dataKey=\"z\" range={[60, 420]} />}\n <Tooltip content={tooltipContent} cursor={{ strokeDasharray: \"3 3\" }} />\n {series.map((s, i) => (\n <Scatter\n key={s.name}\n name={s.name}\n data={s.points}\n fill={s.color ?? CHART_PALETTE[i % CHART_PALETTE.length]}\n fillOpacity={0.7}\n hide={!isVisible(s.name)}\n isAnimationActive={false}\n />\n ))}\n </ScatterChart>\n </ResponsiveContainer>\n {series.length > 1 && (\n <div style={{ display: \"flex\", flexWrap: \"wrap\", gap: \"14px\" }}>\n {series.map((s, i) => {\n const c = s.color ?? CHART_PALETTE[i % CHART_PALETTE.length];\n return (\n <div\n key={s.name}\n onClick={() => toggle(s.name)}\n style={{\n display: \"flex\", alignItems: \"center\", gap: \"6px\", fontSize: \"12px\",\n color: isVisible(s.name) ? MUTED : \"#bbbbbb\",\n cursor: \"pointer\", userSelect: \"none\", transition: \"color 0.15s\",\n textDecoration: isVisible(s.name) ? \"none\" : \"line-through\",\n }}\n >\n <span style={{ width: \"10px\", height: \"10px\", borderRadius: \"9999px\", background: c, display: \"inline-block\", opacity: isVisible(s.name) ? 1 : 0.3 }} />\n {s.name}\n </div>\n );\n })}\n </div>\n )}\n </div>\n </ComponentActions>\n );\n}\n","\"use client\";\n\nimport React, { useState } from \"react\";\nimport type { SchemaPayload } from \"../../schemas\";\nimport { ComponentActions } from \"../../shared/ComponentActions\";\nimport { useTheme } from \"../../shared/ThemeContext\";\nimport { brandIconUrl } from \"../../shared/brandIcons\";\n\nconst CONNECTED_GREEN = \"#15803d\";\n\nexport function ConnectIntegrationResolver(p: SchemaPayload<\"connect-integration\">) {\n const { BORDER, MUTED, ACCENT, ACCENT_SOFT } = useTheme();\n const [cardHovered, setCardHovered] = useState(false);\n const [btnHovered, setBtnHovered] = useState(false);\n const [imgFailed, setImgFailed] = useState(false);\n\n const name = (p.integrationName || \"Integration\").trim();\n const initial = name.charAt(0).toUpperCase();\n const iconSrc = p.iconUrl || brandIconUrl(name);\n const showImg = Boolean(iconSrc) && !imgFailed;\n const connected = p.status === \"connected\";\n const label = p.ctaLabel ?? (connected ? \"Open\" : \"Connect\");\n\n return (\n <ComponentActions filename={name}>\n <div style={{ width: \"100%\", display: \"flex\", flexDirection: \"column\", gap: \"10px\" }}>\n <div\n onMouseEnter={() => setCardHovered(true)}\n onMouseLeave={() => setCardHovered(false)}\n style={{\n borderRadius: \"0.75rem\",\n border: `1px solid ${cardHovered ? \"#d2d2d2\" : BORDER}`,\n background: \"white\",\n padding: \"11px 13px\",\n display: \"flex\",\n flexDirection: \"row\",\n alignItems: \"center\",\n gap: \"12px\",\n boxShadow: cardHovered\n ? \"0 1px 3px rgba(0,0,0,0.05), 0 6px 18px rgba(0,0,0,0.06)\"\n : \"0 1px 2px rgba(0,0,0,0.03)\",\n transition: \"box-shadow 0.18s ease, border-color 0.18s ease\",\n }}\n >\n {/* Logo */}\n <div\n style={{\n position: \"relative\",\n width: \"34px\",\n height: \"34px\",\n borderRadius: \"9px\",\n flexShrink: 0,\n display: \"flex\",\n alignItems: \"center\",\n justifyContent: \"center\",\n background: showImg ? \"white\" : \"#fff3ee\",\n boxShadow: \"inset 0 0 0 1px rgba(0,0,0,0.06)\",\n overflow: \"hidden\",\n }}\n >\n {showImg ? (\n <img\n src={iconSrc}\n alt={name}\n onError={() => setImgFailed(true)}\n style={{ width: \"22px\", height: \"22px\", objectFit: \"contain\" }}\n />\n ) : (\n <span\n style={{\n fontFamily: \"var(--font-serif)\",\n fontSize: \"17px\",\n fontWeight: 400,\n color: ACCENT,\n lineHeight: 1,\n }}\n >\n {initial}\n </span>\n )}\n </div>\n\n {/* Name + optional reason */}\n <div style={{ flex: 1, minWidth: 0, display: \"flex\", flexDirection: \"column\", gap: \"1px\" }}>\n <span\n style={{\n fontSize: \"13.5px\",\n fontWeight: 600,\n color: \"var(--foreground)\",\n whiteSpace: \"nowrap\",\n overflow: \"hidden\",\n textOverflow: \"ellipsis\",\n }}\n >\n {name}\n </span>\n {p.description && (\n <span\n style={{\n fontSize: \"11.5px\",\n color: MUTED,\n lineHeight: 1.35,\n whiteSpace: \"nowrap\",\n overflow: \"hidden\",\n textOverflow: \"ellipsis\",\n }}\n >\n {p.description}\n </span>\n )}\n </div>\n\n {/* Action button — state lives here */}\n <a\n href={p.url}\n target=\"_blank\"\n rel=\"noopener noreferrer\"\n onMouseEnter={() => setBtnHovered(true)}\n onMouseLeave={() => setBtnHovered(false)}\n style={{\n display: \"inline-flex\",\n alignItems: \"center\",\n gap: \"6px\",\n flexShrink: 0,\n borderRadius: \"8px\",\n padding: \"6px 13px\",\n fontSize: \"12px\",\n fontWeight: 600,\n textDecoration: \"none\",\n whiteSpace: \"nowrap\",\n cursor: \"pointer\",\n transition: \"background 0.15s ease, color 0.15s ease, border-color 0.15s ease\",\n ...(connected\n ? {\n background: btnHovered ? \"#f6f6f6\" : \"white\",\n color: \"var(--foreground)\",\n border: `1px solid ${BORDER}`,\n }\n : {\n background: btnHovered ? ACCENT_SOFT : ACCENT,\n color: \"white\",\n border: \"1px solid transparent\",\n }),\n }}\n >\n {connected && (\n <span\n style={{\n width: \"6px\",\n height: \"6px\",\n borderRadius: \"9999px\",\n background: CONNECTED_GREEN,\n }}\n />\n )}\n {label}\n <span\n style={{\n display: \"inline-block\",\n transform: btnHovered ? \"translateX(2px)\" : \"translateX(0)\",\n transition: \"transform 0.15s ease\",\n }}\n >\n →\n </span>\n </a>\n </div>\n </div>\n </ComponentActions>\n );\n}\n","// Built-in brand logos for well-known integrations. Used as a fallback when a\n// payload has no explicit iconUrl (e.g. agent-synthesized \"connect Gmail / Outlook\"\n// suggestions that aren't backed by a catalog row with an image_url). Catalog\n// integrations should still pass their real image_url; this only fills the gap.\n//\n// Logos are served by the simple-icons CDN (https://simpleicons.org) as brand-\n// colored SVGs addressed by slug. Unknown names fall back to a monogram tile.\n\nconst SLUGS: Record<string, string> = {\n gmail: \"gmail\",\n googlemail: \"gmail\",\n outlook: \"microsoftoutlook\",\n microsoftoutlook: \"microsoftoutlook\",\n office365: \"microsoftoffice\",\n slack: \"slack\",\n googledrive: \"googledrive\",\n drive: \"googledrive\",\n googlesheets: \"googlesheets\",\n googledocs: \"googledocs\",\n googlecalendar: \"googlecalendar\",\n gcal: \"googlecalendar\",\n notion: \"notion\",\n salesforce: \"salesforce\",\n hubspot: \"hubspot\",\n github: \"github\",\n gitlab: \"gitlab\",\n jira: \"jira\",\n confluence: \"confluence\",\n atlassian: \"atlassian\",\n asana: \"asana\",\n trello: \"trello\",\n linear: \"linear\",\n zoom: \"zoom\",\n dropbox: \"dropbox\",\n box: \"box\",\n zendesk: \"zendesk\",\n intercom: \"intercom\",\n stripe: \"stripe\",\n shopify: \"shopify\",\n perplexity: \"perplexity\",\n openai: \"openai\",\n anthropic: \"anthropic\",\n fireflies: \"fireflies\",\n zohodesk: \"zoho\",\n zoho: \"zoho\",\n pipedrive: \"pipedrive\",\n workday: \"workday\",\n sap: \"sap\",\n odoo: \"odoo\",\n superset: \"apachesuperset\",\n highradius: \"\",\n zoominfo: \"\",\n};\n\n/** Normalize a display name to a lookup key: lowercase, strip non-alphanumerics. */\nfunction normalize(name: string): string {\n return (name || \"\").toLowerCase().replace(/[^a-z0-9]/g, \"\");\n}\n\n/** Return a brand-logo URL for a known integration name, or undefined. */\nexport function brandIconUrl(name: string): string | undefined {\n const slug = SLUGS[normalize(name)];\n if (!slug) return undefined;\n return `https://cdn.simpleicons.org/${slug}`;\n}\n","\"use client\";\n\nimport React, { useState } from \"react\";\nimport type { SchemaPayload } from \"../../schemas\";\nimport { ComponentActions } from \"../../shared/ComponentActions\";\nimport { useTheme } from \"../../shared/ThemeContext\";\nimport { brandIconUrl } from \"../../shared/brandIcons\";\n\nconst CONNECTED_GREEN = \"#15803d\";\nconst CONNECTED_BG = \"#eaf6ee\";\n\nexport function IntegrationsListResolver(p: SchemaPayload<\"integrations-list\">) {\n const { BORDER, MUTED, PAPER, ACCENT, ACCENT_SOFT } = useTheme();\n const integrations = Array.isArray(p.integrations) ? p.integrations : [];\n const [rowHover, setRowHover] = useState<number | null>(null);\n const [btnHover, setBtnHover] = useState<number | null>(null);\n const [failed, setFailed] = useState<Record<number, boolean>>({});\n\n const connectedCount = integrations.filter((i) => i.status === \"connected\").length;\n\n return (\n <ComponentActions filename={p.title ?? \"integrations\"}>\n <div style={{ width: \"100%\", display: \"flex\", flexDirection: \"column\", gap: \"11px\" }}>\n {/* Header */}\n <div style={{ display: \"flex\", flexDirection: \"column\", gap: \"2px\" }}>\n <div style={{ display: \"flex\", alignItems: \"baseline\", justifyContent: \"space-between\", gap: \"12px\" }}>\n <p\n style={{\n fontFamily: \"var(--font-serif)\",\n fontSize: \"16px\",\n fontWeight: 400,\n color: \"var(--foreground)\",\n letterSpacing: \"-0.01em\",\n margin: 0,\n }}\n >\n {p.title ?? \"Integrations\"}\n </p>\n {integrations.length > 0 && (\n <span style={{ fontSize: \"11.5px\", color: MUTED, whiteSpace: \"nowrap\", flexShrink: 0 }}>\n {connectedCount} of {integrations.length} connected\n </span>\n )}\n </div>\n {p.description && (\n <span style={{ fontSize: \"12px\", color: MUTED, lineHeight: 1.4 }}>{p.description}</span>\n )}\n </div>\n\n {/* List */}\n <div\n style={{\n borderRadius: \"0.75rem\",\n border: `1px solid ${BORDER}`,\n overflow: \"hidden\",\n background: \"white\",\n boxShadow: \"0 1px 2px rgba(0,0,0,0.03), 0 4px 12px rgba(0,0,0,0.04)\",\n }}\n >\n {integrations.length === 0 && (\n <div style={{ padding: \"20px\", fontSize: \"12.5px\", color: MUTED, textAlign: \"center\" }}>\n No integrations available.\n </div>\n )}\n\n {integrations.map((it, i) => {\n const connected = it.status === \"connected\";\n const iconSrc = it.iconUrl || brandIconUrl(it.name);\n const showImg = Boolean(iconSrc) && !failed[i];\n const hovered = rowHover === i;\n return (\n <div\n key={`${it.name}-${i}`}\n onMouseEnter={() => setRowHover(i)}\n onMouseLeave={() => setRowHover(null)}\n style={{\n display: \"flex\",\n alignItems: \"center\",\n gap: \"13px\",\n padding: \"12px 16px\",\n background: hovered ? PAPER : \"white\",\n borderBottom: i < integrations.length - 1 ? `1px solid ${BORDER}` : \"none\",\n transition: \"background 0.14s ease\",\n }}\n >\n {/* Logo */}\n <div\n style={{\n position: \"relative\",\n width: \"32px\",\n height: \"32px\",\n borderRadius: \"8px\",\n flexShrink: 0,\n display: \"flex\",\n alignItems: \"center\",\n justifyContent: \"center\",\n background: showImg ? \"white\" : PAPER,\n boxShadow: \"inset 0 0 0 1px rgba(0,0,0,0.06)\",\n overflow: \"hidden\",\n filter: connected ? \"none\" : \"saturate(0.85)\",\n opacity: connected ? 1 : 0.92,\n }}\n >\n {showImg ? (\n <img\n src={iconSrc}\n alt={it.name}\n onError={() => setFailed((f) => ({ ...f, [i]: true }))}\n style={{ width: \"20px\", height: \"20px\", objectFit: \"contain\" }}\n />\n ) : (\n <span style={{ fontSize: \"13px\", fontWeight: 600, color: MUTED }}>\n {(it.name || \"?\").trim().charAt(0).toUpperCase()}\n </span>\n )}\n </div>\n\n {/* Name + capability */}\n <div style={{ flex: 1, minWidth: 0, display: \"flex\", flexDirection: \"column\", gap: \"2px\" }}>\n <span\n style={{\n fontSize: \"13px\",\n fontWeight: 600,\n color: \"var(--foreground)\",\n whiteSpace: \"nowrap\",\n overflow: \"hidden\",\n textOverflow: \"ellipsis\",\n }}\n >\n {it.name}\n </span>\n {it.capability && (\n <span\n style={{\n fontSize: \"10px\",\n fontWeight: 600,\n letterSpacing: \"0.05em\",\n textTransform: \"uppercase\",\n color: MUTED,\n }}\n >\n {it.capability.replace(/_/g, \" \")}\n </span>\n )}\n </div>\n\n {/* Status */}\n <span\n style={{\n display: \"inline-flex\",\n alignItems: \"center\",\n gap: \"6px\",\n fontSize: \"11px\",\n fontWeight: 600,\n color: connected ? CONNECTED_GREEN : MUTED,\n }}\n >\n <span\n style={{\n width: \"6px\",\n height: \"6px\",\n borderRadius: \"9999px\",\n background: connected ? CONNECTED_GREEN : \"#c4c4c4\",\n boxShadow: connected ? `0 0 0 3px ${CONNECTED_BG}` : \"none\",\n }}\n />\n {connected ? \"Connected\" : \"Not connected\"}\n </span>\n\n {/* Connect action (ghost → fill) */}\n {!connected && it.connectUrl && (\n <a\n href={it.connectUrl}\n target=\"_blank\"\n rel=\"noopener noreferrer\"\n onMouseEnter={() => setBtnHover(i)}\n onMouseLeave={() => setBtnHover(null)}\n style={{\n display: \"inline-flex\",\n alignItems: \"center\",\n gap: \"5px\",\n background: btnHover === i ? ACCENT : \"transparent\",\n color: btnHover === i ? \"white\" : ACCENT,\n border: `1px solid ${btnHover === i ? ACCENT : `${ACCENT}66`}`,\n borderRadius: \"8px\",\n padding: \"5px 12px\",\n fontSize: \"11px\",\n fontWeight: 600,\n textDecoration: \"none\",\n whiteSpace: \"nowrap\",\n flexShrink: 0,\n cursor: \"pointer\",\n transition: \"background 0.14s ease, color 0.14s ease, border-color 0.14s ease\",\n }}\n >\n Connect\n <span\n style={{\n transform: btnHover === i ? \"translateX(2px)\" : \"translateX(0)\",\n transition: \"transform 0.14s ease\",\n }}\n >\n →\n </span>\n </a>\n )}\n </div>\n );\n })}\n </div>\n </div>\n </ComponentActions>\n );\n}\n","\"use client\";\n\nimport React, { useMemo, useState } from \"react\";\nimport type { SchemaPayload } from \"../../schemas\";\nimport { ComponentActions } from \"../../shared/ComponentActions\";\nimport { useTheme } from \"../../shared/ThemeContext\";\nimport { getOpMeta } from \"./opMeta\";\nimport {\n layoutGraph,\n layoutBounds,\n type LayoutNode,\n type LayoutEdge,\n} from \"./layout\";\n\ntype State = NonNullable<SchemaPayload<\"pipeline-preview\">[\"state\"]>;\n\nconst STATE_CONFIG: Record<State, { label: string; bg: string; color: string }> = {\n draft: { label: \"Draft\", bg: \"#f2f2f2\", color: \"#777777\" },\n running: { label: \"Running\", bg: \"#dcfce7\", color: \"#15803d\" },\n paused: { label: \"Paused\", bg: \"#fff7ed\", color: \"#f59e0b\" },\n};\n\n// Loop/fan-out accent — sourced from the shared op palette so it matches the\n// FAN_OUT step chips elsewhere in the preview.\nconst FANOUT_COLOR = getOpMeta(\"FAN_OUT\").color;\n\nconst titleStyle: React.CSSProperties = {\n fontFamily: \"var(--font-serif)\",\n fontSize: \"15px\",\n fontWeight: 400,\n color: \"var(--foreground)\",\n letterSpacing: \"-0.01em\",\n margin: 0,\n};\n\nfunction Chip({\n children,\n bg,\n color,\n}: {\n children: React.ReactNode;\n bg: string;\n color: string;\n}) {\n return (\n <span\n style={{\n fontSize: \"10px\",\n fontWeight: 600,\n letterSpacing: \"0.04em\",\n padding: \"2px 8px\",\n borderRadius: \"9999px\",\n background: bg,\n color,\n whiteSpace: \"nowrap\",\n }}\n >\n {children}\n </span>\n );\n}\n\nfunction edgePath(from: LayoutNode, to: LayoutNode): string {\n const isFromGroup = from.type === \"fan-out-group\" || from.type === \"branch-group\";\n const isToGroup = to.type === \"fan-out-group\" || to.type === \"branch-group\";\n const x1 = isFromGroup ? from.x + from.w / 2 : from.x;\n const y1 = from.y + from.h;\n const x2 = isToGroup ? to.x + to.w / 2 : to.x;\n const y2 = to.y;\n const midY = (y1 + y2) / 2;\n return `M ${x1} ${y1} C ${x1} ${midY}, ${x2} ${midY}, ${x2} ${y2}`;\n}\n\n// 30×30 op icon box + glyph.\nfunction IconBox({ color, bg, glyph }: { color: string; bg: string; glyph: string }) {\n return (\n <div\n style={{\n width: 30,\n height: 30,\n borderRadius: 7,\n display: \"flex\",\n alignItems: \"center\",\n justifyContent: \"center\",\n flexShrink: 0,\n background: bg,\n border: `1px solid ${color}4D`,\n color,\n fontSize: 14,\n lineHeight: 1,\n }}\n >\n {glyph}\n </div>\n );\n}\n\nfunction OpBadge({ color, bg, label }: { color: string; bg: string; label: string }) {\n return (\n <span\n style={{\n fontSize: 9,\n fontWeight: 700,\n padding: \"1px 5px\",\n borderRadius: 3,\n letterSpacing: \"0.3px\",\n color,\n background: bg,\n }}\n >\n {label}\n </span>\n );\n}\n\nconst ellipsis: React.CSSProperties = {\n whiteSpace: \"nowrap\",\n overflow: \"hidden\",\n textOverflow: \"ellipsis\",\n display: \"block\",\n};\n\nexport function PipelinePreviewResolver(p: SchemaPayload<\"pipeline-preview\">) {\n const { MUTED, PAPER, BORDER, ACCENT, ACCENT_SOFT } = useTheme();\n const [btnHovered, setBtnHovered] = useState(false);\n\n const stateCfg = STATE_CONFIG[p.state ?? \"draft\"];\n const destinations = p.destinations ?? [];\n const steps = p.steps ?? [];\n const workstreams = p.workstreams ?? [];\n\n const scheduleLabel = p.schedule\n ? p.schedule.type === \"manual\"\n ? \"Manual\"\n : p.schedule.label ?? p.schedule.cron ?? \"Scheduled\"\n : null;\n\n const { nodes, edges, viewBox, vbW, vbH } = useMemo(() => {\n const res = layoutGraph(steps);\n const b = layoutBounds(res.nodes);\n const pad = 24;\n const w = b.maxX - b.minX + pad * 2;\n const h = b.maxY - b.minY + pad * 2;\n return {\n nodes: res.nodes,\n edges: res.edges,\n viewBox: `${b.minX - pad} ${b.minY - pad} ${w} ${h}`,\n vbW: w,\n vbH: h,\n };\n }, [steps]);\n\n const nodeMap = useMemo(() => {\n const m: Record<string, LayoutNode> = {};\n nodes.forEach((n) => (m[n.id] = n));\n return m;\n }, [nodes]);\n\n return (\n <ComponentActions filename={p.name ?? \"pipeline-preview\"}>\n <div style={{ width: \"100%\", display: \"flex\", flexDirection: \"column\", gap: \"12px\" }}>\n {/* Header */}\n <div style={{ display: \"flex\", alignItems: \"center\", gap: \"8px\", flexWrap: \"wrap\" }}>\n <p style={titleStyle}>{p.name}</p>\n <Chip bg={stateCfg.bg} color={stateCfg.color}>\n {stateCfg.label}\n </Chip>\n </div>\n\n {p.description && (\n <span style={{ fontSize: \"12.5px\", color: MUTED, lineHeight: 1.45, marginTop: \"-4px\" }}>\n {p.description}\n </span>\n )}\n\n {/* Source → Destinations flow */}\n {(p.source || destinations.length > 0) && (\n <div\n style={{\n display: \"flex\",\n alignItems: \"center\",\n gap: \"8px\",\n flexWrap: \"wrap\",\n padding: \"10px 12px\",\n borderRadius: \"0.6rem\",\n border: `1px solid ${BORDER}`,\n background: PAPER,\n }}\n >\n {p.source && (\n <span\n style={{\n fontSize: \"12px\",\n fontWeight: 600,\n color: \"var(--foreground)\",\n padding: \"3px 10px\",\n borderRadius: \"9999px\",\n background: \"white\",\n border: `1px solid ${BORDER}`,\n }}\n >\n {p.source.name}\n </span>\n )}\n {p.source && destinations.length > 0 && (\n <span style={{ color: MUTED, fontSize: \"14px\" }}>→</span>\n )}\n {destinations.map((d, i) => (\n <span\n key={i}\n style={{\n fontSize: \"12px\",\n fontWeight: 600,\n color: \"var(--foreground)\",\n padding: \"3px 10px\",\n borderRadius: \"9999px\",\n background: \"white\",\n border: `1px solid ${BORDER}`,\n }}\n >\n {d.name}\n </span>\n ))}\n </div>\n )}\n\n {/* Meta line: schedule + workstreams */}\n {(scheduleLabel || workstreams.length > 0) && (\n <div style={{ display: \"flex\", alignItems: \"center\", gap: \"10px\", flexWrap: \"wrap\" }}>\n {scheduleLabel && (\n <span style={{ fontSize: \"11px\", color: MUTED }}>\n {\"⏱ \"}\n {scheduleLabel}\n </span>\n )}\n {workstreams.map((w, i) => (\n <Chip key={i} bg=\"#eef2ff\" color=\"#6366f1\">\n {w}\n </Chip>\n ))}\n </div>\n )}\n\n {/* DAG canvas — mirrors the platform WorkflowCanvas */}\n {nodes.length > 0 && (\n <div\n style={{\n position: \"relative\",\n border: `1px solid ${BORDER}`,\n borderRadius: 12,\n background: PAPER,\n overflow: \"auto\",\n maxHeight: 520,\n display: \"flex\",\n justifyContent: \"center\",\n }}\n >\n <svg\n width={vbW}\n height={vbH}\n viewBox={viewBox}\n style={{ maxWidth: \"100%\", display: \"block\" }}\n preserveAspectRatio=\"xMidYMid meet\"\n >\n <defs>\n <filter id=\"pp-shadow\" x=\"-10%\" y=\"-10%\" width=\"120%\" height=\"130%\">\n <feDropShadow dx=\"0\" dy=\"1\" stdDeviation=\"2\" floodOpacity=\"0.08\" />\n </filter>\n </defs>\n\n {/* Edges */}\n {edges.map((e: LayoutEdge, i) => {\n const from = nodeMap[e.from];\n const to = nodeMap[e.to];\n if (!from || !to) return null;\n return (\n <path\n key={`edge-${i}`}\n d={edgePath(from, to)}\n fill=\"none\"\n stroke={e.color || BORDER}\n strokeWidth={2}\n strokeLinecap=\"round\"\n />\n );\n })}\n\n {/* Branch group containers */}\n {nodes\n .filter((n) => n.type === \"branch-group\")\n .map((n) => {\n const color = (n.data.color as string) || \"#94a3b8\";\n return (\n <g key={n.id}>\n <rect\n x={n.x}\n y={n.y}\n width={n.w}\n height={n.h}\n rx={10}\n ry={10}\n fill={`${color}0D`}\n stroke={color}\n strokeWidth={1.5}\n strokeDasharray=\"4 3\"\n opacity={0.8}\n />\n <foreignObject\n x={n.x + 8}\n y={n.y + 6}\n width={n.w - 16}\n height={22}\n style={{ pointerEvents: \"none\" }}\n >\n <div style={{ display: \"flex\", alignItems: \"center\", gap: 6 }}>\n <span\n style={{\n width: 8,\n height: 8,\n borderRadius: \"50%\",\n flexShrink: 0,\n background: color,\n }}\n />\n <span style={{ fontSize: 11, fontWeight: 700, color: \"var(--foreground)\" }}>\n {n.data.label as string}\n </span>\n {(n.data.condition as string) && (\n <span\n style={{\n fontSize: 9,\n color: MUTED,\n fontFamily: \"monospace\",\n ...ellipsis,\n }}\n >\n {n.data.condition as string}\n </span>\n )}\n </div>\n </foreignObject>\n </g>\n );\n })}\n\n {/* Fan-out group containers */}\n {nodes\n .filter((n) => n.type === \"fan-out-group\")\n .map((n) => {\n const m = getOpMeta(\"FAN_OUT\");\n const count = Array.isArray(n.data.subSteps)\n ? (n.data.subSteps as unknown[]).length\n : 0;\n const titleText =\n (n.data.label as string) || (n.data.id as string) || \"Loop\";\n return (\n <g key={n.id}>\n <rect\n x={n.x}\n y={n.y}\n width={n.w}\n height={n.h}\n rx={12}\n ry={12}\n fill={`${FANOUT_COLOR}0D`}\n stroke={FANOUT_COLOR}\n strokeWidth={1.5}\n strokeDasharray=\"6 3\"\n opacity={0.9}\n />\n <foreignObject\n x={n.x}\n y={n.y}\n width={n.w}\n height={60}\n style={{ pointerEvents: \"none\" }}\n >\n <div\n style={{\n display: \"flex\",\n alignItems: \"center\",\n justifyContent: \"space-between\",\n padding: \"8px 12px 0 12px\",\n }}\n >\n <div style={{ display: \"flex\", alignItems: \"center\", gap: 6 }}>\n <IconBox color={m.color} bg={m.bg} glyph={m.glyph} />\n <OpBadge color={m.color} bg={m.bg} label={m.label} />\n </div>\n <span style={{ fontWeight: 500, color: FANOUT_COLOR, fontSize: 10, whiteSpace: \"nowrap\" }}>\n {count} steps\n </span>\n </div>\n <div\n style={{\n fontSize: 11,\n color: MUTED,\n padding: \"2px 12px 6px 12px\",\n ...ellipsis,\n }}\n title={titleText}\n >\n {titleText}\n </div>\n </foreignObject>\n </g>\n );\n })}\n\n {/* Branch header cards */}\n {nodes\n .filter((n) => n.type === \"branch-header\")\n .map((n) => {\n const m = getOpMeta((n.data.operation as string) || \"CONDITION\");\n const branchCount = Array.isArray(n.data.branches)\n ? (n.data.branches as unknown[]).length\n : 0;\n const titleText =\n (n.data.label as string) || (n.data.id as string) || m.label;\n return (\n <g key={n.id}>\n <rect\n x={n.x - n.w / 2}\n y={n.y}\n width={n.w}\n height={n.h}\n rx={10}\n ry={10}\n fill={m.bg}\n stroke={m.color}\n strokeWidth={1.5}\n filter=\"url(#pp-shadow)\"\n />\n <foreignObject\n x={n.x - n.w / 2 + 8}\n y={n.y + 4}\n width={n.w - 16}\n height={n.h - 8}\n style={{ pointerEvents: \"none\" }}\n >\n <div style={{ display: \"flex\", alignItems: \"center\", gap: 8, height: \"100%\" }}>\n <IconBox color={m.color} bg={m.bg} glyph={m.glyph} />\n <div style={{ flex: 1, minWidth: 0 }}>\n <span style={{ fontSize: 10, fontWeight: 700, letterSpacing: \"0.5px\", color: m.color, display: \"block\" }}>\n {m.label}\n </span>\n <span style={{ fontSize: 11, color: \"var(--foreground)\", fontWeight: 600, ...ellipsis }} title={titleText}>\n {titleText}\n </span>\n </div>\n <span\n style={{\n fontSize: 9,\n padding: \"2px 6px\",\n borderRadius: 8,\n fontWeight: 600,\n flexShrink: 0,\n color: m.color,\n background: `${m.color}26`,\n }}\n >\n {branchCount}→\n </span>\n </div>\n </foreignObject>\n </g>\n );\n })}\n\n {/* Step cards */}\n {nodes\n .filter((n) => n.type === \"step\")\n .map((n) => {\n const m = getOpMeta(n.data.operation as string);\n const line =\n (n.data.label as string) ||\n (n.data.description as string) ||\n (n.data.id as string) ||\n \"\";\n return (\n <g key={n.id}>\n <rect\n x={n.x - n.w / 2}\n y={n.y}\n width={n.w}\n height={n.h}\n rx={10}\n ry={10}\n fill=\"white\"\n stroke={BORDER}\n strokeWidth={1}\n filter=\"url(#pp-shadow)\"\n />\n <foreignObject\n x={n.x - n.w / 2 + 8}\n y={n.y + 4}\n width={n.w - 16}\n height={n.h - 8}\n style={{ pointerEvents: \"none\" }}\n >\n <div style={{ display: \"flex\", alignItems: \"center\", gap: 8, height: \"100%\" }}>\n <IconBox color={m.color} bg={m.bg} glyph={m.glyph} />\n <div style={{ flex: 1, minWidth: 0 }}>\n <div style={{ display: \"flex\", alignItems: \"center\", gap: 4, flexWrap: \"wrap\" }}>\n <OpBadge color={m.color} bg={m.bg} label={m.label} />\n </div>\n <span\n style={{\n fontSize: 11,\n color: \"var(--foreground)\",\n fontWeight: 500,\n marginTop: 2,\n ...ellipsis,\n }}\n title={(n.data.description as string) || line}\n >\n {line}\n </span>\n </div>\n </div>\n </foreignObject>\n </g>\n );\n })}\n </svg>\n </div>\n )}\n\n {/* CTA deeplink */}\n {p.cta && (\n <a\n href={p.cta.url}\n target=\"_blank\"\n rel=\"noopener noreferrer\"\n onMouseEnter={() => setBtnHovered(true)}\n onMouseLeave={() => setBtnHovered(false)}\n style={{\n alignSelf: \"flex-start\",\n background: btnHovered ? ACCENT_SOFT : ACCENT,\n color: \"white\",\n borderRadius: \"8px\",\n padding: \"8px 16px\",\n fontSize: \"12px\",\n fontWeight: 600,\n textDecoration: \"none\",\n cursor: \"pointer\",\n transition: \"background 0.15s\",\n }}\n >\n {p.cta.label + \" →\"}\n </a>\n )}\n </div>\n </ComponentActions>\n );\n}\n","// Operation color + short-label semantics for WDL steps. Ported from\n// adoptwebui's workflow canvas `OP_META` (constants.js) — icons dropped (gen-ui\n// composites don't pull an icon lib); we convey the operation via a colored\n// category chip instead. `glyph` is a single font-safe BMP symbol.\n\nexport interface OpMeta {\n label: string;\n color: string;\n bg: string;\n glyph: string;\n}\n\nexport const OP_META: Record<string, OpMeta> = {\n REST: { label: \"PULL DATA\", color: \"#3b82f6\", bg: \"#eff6ff\", glyph: \"↧\" },\n REST_LOOP: { label: \"PULL DATA\", color: \"#3b82f6\", bg: \"#eff6ff\", glyph: \"↧\" },\n PAGINATION: { label: \"PULL DATA\", color: \"#3b82f6\", bg: \"#eff6ff\", glyph: \"↧\" },\n FILTER: { label: \"FILTER\", color: \"#8b5cf6\", bg: \"#f5f3ff\", glyph: \"▽\" },\n INTELLIGENT_FILTER: { label: \"FILTER\", color: \"#8b5cf6\", bg: \"#f5f3ff\", glyph: \"▽\" },\n JQ_FILTER: { label: \"TRANSFORM\", color: \"#06b6d4\", bg: \"#ecfeff\", glyph: \"{}\" },\n PROMPT: { label: \"AI ENRICH\", color: \"#ec4899\", bg: \"#fdf2f8\", glyph: \"✸\" },\n INTELLIGENT_OUTPUT: { label: \"AI OUTPUT\", color: \"#ec4899\", bg: \"#fdf2f8\", glyph: \"✸\" },\n FLATTEN: { label: \"DEDUPLICATE\", color: \"#f97316\", bg: \"#fff7ed\", glyph: \"↺\" },\n STORE: { label: \"STORE\", color: \"#10b981\", bg: \"#ecfdf5\", glyph: \"▤\" },\n EXTRACT: { label: \"EXTRACT\", color: \"#06b6d4\", bg: \"#ecfeff\", glyph: \"↧\" },\n PROJECT: { label: \"PROJECT\", color: \"#06b6d4\", bg: \"#ecfeff\", glyph: \"▦\" },\n NOTIFY: { label: \"NOTIFY\", color: \"#eab308\", bg: \"#fefce8\", glyph: \"◔\" },\n BRANCH: { label: \"BRANCH\", color: \"#6366f1\", bg: \"#eef2ff\", glyph: \"⑂\" },\n CONDITION: { label: \"BRANCH\", color: \"#6366f1\", bg: \"#eef2ff\", glyph: \"⑂\" },\n MERGE: { label: \"MERGE\", color: \"#14b8a6\", bg: \"#f0fdfa\", glyph: \"⋈\" },\n SORT: { label: \"SORT\", color: \"#a855f7\", bg: \"#faf5ff\", glyph: \"⇅\" },\n OUTPUT_TABLE: { label: \"OUTPUT\", color: \"#0ea5e9\", bg: \"#f0f9ff\", glyph: \"▦\" },\n OUTPUT_TEXT: { label: \"OUTPUT\", color: \"#0ea5e9\", bg: \"#f0f9ff\", glyph: \"¶\" },\n TEXT_TO_SQL: { label: \"SQL QUERY\", color: \"#f43f5e\", bg: \"#fff1f2\", glyph: \"⌗\" },\n TOOL_EXECUTION: { label: \"TOOL\", color: \"#8b5cf6\", bg: \"#f5f3ff\", glyph: \"⚙\" },\n PAYLOAD: { label: \"PARSE\", color: \"#ca8a04\", bg: \"#fefce8\", glyph: \"❐\" },\n DATA_SOURCE_LOOKUP: { label: \"LOOKUP\", color: \"#06b6d4\", bg: \"#ecfeff\", glyph: \"⌕\" },\n FAN_OUT: { label: \"LOOP\", color: \"#0d9488\", bg: \"#f0fdfa\", glyph: \"↻\" },\n WRITE_TO_DB: { label: \"WRITE\", color: \"#10b981\", bg: \"#ecfdf5\", glyph: \"▤\" },\n READ_FROM_DB: { label: \"READ DB\", color: \"#6366f1\", bg: \"#eef2ff\", glyph: \"⌕\" },\n EMBEDDER: { label: \"EMBEDDER\", color: \"#7c3aed\", bg: \"#f5f3ff\", glyph: \"❖\" },\n AGENTIC_SEARCH: { label: \"AI SEARCH\", color: \"#0891b2\", bg: \"#ecfeff\", glyph: \"◎\" },\n S3_READ: { label: \"S3 READ\", color: \"#f59e0b\", bg: \"#fffbeb\", glyph: \"↧\" },\n GOOGLE_DRIVE_READ: { label: \"DRIVE READ\", color: \"#0f9d58\", bg: \"#e8f5e9\", glyph: \"▤\" },\n GOOGLE_DRIVE_WRITE: { label: \"DRIVE WRITE\", color: \"#0f9d58\", bg: \"#e8f5e9\", glyph: \"▥\" },\n OUTLOOK: { label: \"OUTLOOK\", color: \"#0078d4\", bg: \"#e8f2fc\", glyph: \"✉\" },\n GMAIL: { label: \"GMAIL\", color: \"#ea4335\", bg: \"#fdecec\", glyph: \"✉\" },\n ESCALATE: { label: \"ESCALATE\", color: \"#f59e0b\", bg: \"#fffbeb\", glyph: \"⚑\" },\n PARSE_DOCUMENT: { label: \"PARSE DOC\", color: \"#0d9488\", bg: \"#f0fdfa\", glyph: \"❐\" },\n RUN_ACTION: { label: \"RUN ACTION\", color: \"#d97706\", bg: \"#fffbeb\", glyph: \"▸\" },\n};\n\nconst FALLBACK_COLORS: { color: string; bg: string }[] = [\n { color: \"#64748b\", bg: \"#f8fafc\" },\n { color: \"#0ea5e9\", bg: \"#f0f9ff\" },\n { color: \"#8b5cf6\", bg: \"#f5f3ff\" },\n { color: \"#f97316\", bg: \"#fff7ed\" },\n { color: \"#14b8a6\", bg: \"#f0fdfa\" },\n { color: \"#ec4899\", bg: \"#fdf2f8\" },\n { color: \"#6366f1\", bg: \"#eef2ff\" },\n { color: \"#ca8a04\", bg: \"#fefce8\" },\n];\n\nfunction formatOpLabel(op: string): string {\n return op\n .split(\"_\")\n .map((w) => w.charAt(0).toUpperCase() + w.slice(1).toLowerCase())\n .join(\" \");\n}\n\n// Resolve meta for any operation, deterministically picking a fallback color\n// for unknown / new ops (so the UI never breaks on a freshly-added WDL op).\nexport function getOpMeta(operation: string | undefined | null): OpMeta {\n if (!operation) return { label: \"Step\", color: \"#64748b\", bg: \"#f8fafc\", glyph: \"▸\" };\n const known = OP_META[operation];\n if (known) return known;\n const { color, bg } = FALLBACK_COLORS[operation.length % FALLBACK_COLORS.length];\n return { label: formatOpLabel(operation), color, bg, glyph: \"▸\" };\n}\n","// Recursive DAG layout for WDL pipelines — ported verbatim (geometry only) from\n// adoptwebui's `frontend/src/components/workflow/layoutEngine.js`, adapted to the\n// pipeline-preview schema field names (`subSteps`, `branches[].steps`). Produces\n// { nodes, edges, totalW, totalH } that the resolver renders as an SVG, so the\n// preview matches the platform's WorkflowCanvas. Framework-agnostic — no d3.\nimport type { PipelineStep } from \"../../schemas/pipeline-preview\";\n\n// Geometry constants (mirror workflow/constants.js).\nexport const NODE_W = 220;\nexport const NODE_H = 56;\nexport const BRANCH_NODE_H = 44;\nexport const GAP_Y = 32;\nexport const GAP_X = 20;\nexport const BRANCH_PAD = 12;\nexport const BRANCH_HEADER = 36;\nexport const FAN_OUT_PAD = 16;\nexport const FAN_OUT_HEADER = 60;\n\n// Branch accent palette (the schema has no per-branch color; assign by index).\nconst BRANCH_COLORS = [\"#6366f1\", \"#0891b2\", \"#f59e0b\", \"#ec4899\", \"#14b8a6\", \"#a855f7\"];\n\nexport type LayoutNodeType =\n | \"step\"\n | \"branch-header\"\n | \"branch-group\"\n | \"fan-out-group\";\n\nexport interface LayoutNode {\n id: string;\n x: number;\n y: number;\n w: number;\n h: number;\n type: LayoutNodeType;\n data: Record<string, unknown>;\n}\n\nexport interface LayoutEdge {\n from: string;\n to: string;\n color?: string;\n}\n\nexport interface LayoutResult {\n nodes: LayoutNode[];\n edges: LayoutEdge[];\n totalW: number;\n totalH: number;\n}\n\nexport function layoutGraph(\n steps: PipelineStep[],\n startX = 0,\n startY = 0,\n keyPrefix = \"\"\n): LayoutResult {\n const nodes: LayoutNode[] = [];\n const edges: LayoutEdge[] = [];\n let y = startY;\n let prevId: string | null = null;\n let totalW = NODE_W;\n\n steps.forEach((step, idx) => {\n const op = step.operation;\n const isBranch = op === \"BRANCH\" || op === \"CONDITION\";\n const isFanOut = op === \"FAN_OUT\";\n const baseId = `${keyPrefix}${step.id ?? `s${idx}`}`;\n\n if (isFanOut && step.subSteps?.length) {\n const foNodeId = baseId;\n const res = layoutGraph(step.subSteps, 0, 0, `${baseId}/`);\n\n const containerW = Math.max(res.totalW, NODE_W) + FAN_OUT_PAD * 2;\n const containerH = res.totalH + FAN_OUT_HEADER + FAN_OUT_PAD * 2 + 4;\n\n nodes.push({\n id: foNodeId,\n type: \"fan-out-group\",\n x: startX - containerW / 2,\n y,\n w: containerW,\n h: containerH,\n data: step as unknown as Record<string, unknown>,\n });\n if (prevId) edges.push({ from: prevId, to: foNodeId });\n\n const offX = res.nodes.length ? startX - res.nodes[0].x : startX;\n const subNodes: LayoutNode[] = [];\n for (const n of res.nodes) {\n const nn = { ...n, x: n.x + offX, y: n.y + y + FAN_OUT_HEADER };\n subNodes.push(nn);\n nodes.push(nn);\n }\n for (const e of res.edges) edges.push(e);\n\n totalW = Math.max(totalW, containerW);\n y += containerH + GAP_Y;\n\n const lastSub = subNodes.filter((n) => n.type === \"step\").pop();\n prevId = lastSub ? lastSub.id : foNodeId;\n } else if (isBranch && step.branches?.length) {\n const bNodeId = baseId;\n nodes.push({\n id: bNodeId,\n x: startX,\n y,\n w: NODE_W,\n h: BRANCH_NODE_H,\n data: step as unknown as Record<string, unknown>,\n type: \"branch-header\",\n });\n if (prevId) edges.push({ from: prevId, to: bNodeId });\n y += BRANCH_NODE_H + GAP_Y;\n\n const branchResults = step.branches.map((br, bi) => ({\n branch: { ...br, color: BRANCH_COLORS[bi % BRANCH_COLORS.length], _gid: `${bNodeId}-b${bi}` },\n ...layoutGraph(br.steps ?? [], 0, 0, `${bNodeId}/b${bi}/`),\n }));\n\n let bTotalW = branchResults.reduce((sum, r) => sum + r.totalW + GAP_X, 0) - GAP_X;\n if (!Number.isFinite(bTotalW) || bTotalW <= 0) bTotalW = NODE_W;\n totalW = Math.max(totalW, bTotalW);\n\n let cx = startX - bTotalW / 2 + (branchResults[0]?.totalW || NODE_W) / 2;\n for (const br of branchResults) {\n const offX = br.nodes.length ? cx - br.nodes[0].x : cx;\n const groupNodes: LayoutNode[] = [];\n for (const n of br.nodes) {\n const nn = { ...n, x: n.x + offX, y: n.y + y + BRANCH_HEADER };\n groupNodes.push(nn);\n nodes.push(nn);\n }\n for (const e of br.edges) edges.push(e);\n\n nodes.push({\n id: `${br.branch._gid}-group`,\n type: \"branch-group\",\n x: cx - br.totalW / 2 - BRANCH_PAD,\n y: y - 4,\n w: br.totalW + BRANCH_PAD * 2,\n h: br.totalH + BRANCH_HEADER + BRANCH_PAD * 2 + 4,\n data: br.branch as unknown as Record<string, unknown>,\n });\n\n if (groupNodes.length > 0) {\n edges.push({ from: bNodeId, to: groupNodes[0].id, color: br.branch.color });\n }\n cx += br.totalW + GAP_X;\n }\n\n const maxBranchH = Math.max(\n ...branchResults.map((b) => b.totalH + BRANCH_HEADER + BRANCH_PAD * 2 + 4)\n );\n y += maxBranchH + GAP_Y;\n prevId = null;\n } else {\n const nodeId = baseId;\n nodes.push({\n id: nodeId,\n x: startX,\n y,\n w: NODE_W,\n h: NODE_H,\n data: step as unknown as Record<string, unknown>,\n type: \"step\",\n });\n if (prevId) edges.push({ from: prevId, to: nodeId });\n prevId = nodeId;\n y += NODE_H + GAP_Y;\n }\n });\n\n return { nodes, edges, totalW, totalH: Math.max(y - startY - GAP_Y, 0) };\n}\n\n// Bounding box matching WorkflowCanvas.fitToView (groups use x as left edge,\n// other nodes use x as centre).\nexport function layoutBounds(nodes: LayoutNode[]): {\n minX: number;\n minY: number;\n maxX: number;\n maxY: number;\n} {\n const real = nodes.filter((n) => n.type !== \"branch-group\" || true);\n if (!real.length) return { minX: 0, minY: 0, maxX: NODE_W, maxY: NODE_H };\n const left = (n: LayoutNode) =>\n n.type === \"fan-out-group\" || n.type === \"branch-group\" ? n.x : n.x - n.w / 2;\n const right = (n: LayoutNode) =>\n n.type === \"fan-out-group\" || n.type === \"branch-group\" ? n.x + n.w : n.x + n.w / 2;\n return {\n minX: Math.min(...real.map(left)),\n minY: Math.min(...real.map((n) => n.y)),\n maxX: Math.max(...real.map(right)),\n maxY: Math.max(...real.map((n) => n.y + n.h)),\n };\n}\n","\"use client\";\n\nimport React from \"react\";\nimport type { UISchemaName, SchemaPayload } from \"./types\";\nimport { coercePayload } from \"./schemas/coercePayload\";\n\nimport { DataTableResolver } from \"./composites/data-table/resolver\";\nimport { StatusCardResolver } from \"./composites/status-card/resolver\";\nimport { AlertResolver } from \"./composites/alert/resolver\";\nimport { StatGridResolver } from \"./composites/stat-grid/resolver\";\nimport { TabsPanelResolver } from \"./composites/tabs-panel/resolver\";\nimport { SparklineTableResolver } from \"./composites/sparkline-table/resolver\";\nimport { HeatmapTableResolver } from \"./composites/heatmap-table/resolver\";\nimport { ScreenerTableResolver } from \"./composites/screener-table/resolver\";\nimport { GroupedTableResolver } from \"./composites/grouped-table/resolver\";\nimport { NewsFeedResolver } from \"./composites/news-feed/resolver\";\nimport { AreaChartResolver } from \"./composites/area-chart/resolver\";\nimport { AllocationDonutResolver } from \"./composites/allocation-donut/resolver\";\nimport { WaterfallChartResolver } from \"./composites/waterfall-chart/resolver\";\nimport { FlowCanvasResolver } from \"./composites/flow-canvas/resolver\";\nimport { TrialBalanceResolver } from \"./composites/trial-balance/resolver\";\nimport { JournalEntryResolver } from \"./composites/journal-entry/resolver\";\nimport { AgingReportResolver } from \"./composites/aging-report/resolver\";\nimport { VarianceAnalysisResolver } from \"./composites/variance-analysis/resolver\";\nimport { StackedBreakdownResolver } from \"./composites/stacked-breakdown/resolver\";\nimport { ComparativeBarChartResolver } from \"./composites/comparative-bar-chart/resolver\";\nimport { ComplianceChecklistResolver } from \"./composites/compliance-checklist/resolver\";\nimport { ReconciliationViewResolver } from \"./composites/reconciliation-view/resolver\";\nimport { AuditTrailResolver } from \"./composites/audit-trail/resolver\";\nimport { DocumentPreviewResolver } from \"./composites/document-preview/resolver\";\nimport { ProvenanceChainResolver } from \"./composites/provenance-chain/resolver\";\nimport { SearchResultsResolver } from \"./composites/search-results/resolver\";\nimport { LegalTestResultResolver } from \"./composites/legal-test-result/resolver\";\nimport { EngagementPipelineResolver } from \"./composites/engagement-pipeline/resolver\";\nimport { EntityCardGridResolver } from \"./composites/entity-card-grid/resolver\";\nimport { JobTrackerResolver } from \"./composites/job-tracker/resolver\";\nimport { CitedAnswerResolver } from \"./composites/cited-answer/resolver\";\nimport { TransactionFeedResolver } from \"./composites/transaction-feed/resolver\";\nimport { FileBrowserResolver } from \"./composites/file-browser/resolver\";\nimport { DownloadCardResolver } from \"./composites/download-card/resolver\";\nimport { OpsDashboardResolver } from \"./composites/ops-dashboard/resolver\";\nimport { KeyValueListResolver } from \"./composites/key-value-list/resolver\";\nimport { BalanceSheetResolver } from \"./composites/balance-sheet/resolver\";\nimport { IncomeStatementResolver } from \"./composites/income-statement/resolver\";\nimport { CashFlowStatementResolver } from \"./composites/cash-flow-statement/resolver\";\nimport { GeneralLedgerResolver } from \"./composites/general-ledger/resolver\";\nimport { ChartOfAccountsResolver } from \"./composites/chart-of-accounts/resolver\";\nimport { InvoiceDetailResolver } from \"./composites/invoice-detail/resolver\";\nimport { AmortizationTableResolver } from \"./composites/amortization-table/resolver\";\nimport { DepreciationScheduleResolver } from \"./composites/depreciation-schedule/resolver\";\nimport { EscalationCardResolver } from \"./composites/escalation-card/resolver\";\nimport { LineChartResolver } from \"./composites/line-chart/resolver\";\nimport { ComboChartResolver } from \"./composites/combo-chart/resolver\";\nimport { GaugeChartResolver } from \"./composites/gauge-chart/resolver\";\nimport { TreemapChartResolver } from \"./composites/treemap-chart/resolver\";\nimport { RadarChartResolver } from \"./composites/radar-chart/resolver\";\nimport { FunnelChartResolver } from \"./composites/funnel-chart/resolver\";\nimport { BulletChartResolver } from \"./composites/bullet-chart/resolver\";\nimport { ScatterChartResolver } from \"./composites/scatter-chart/resolver\";\nimport { ConnectIntegrationResolver } from \"./composites/connect-integration/resolver\";\nimport { IntegrationsListResolver } from \"./composites/integrations-list/resolver\";\nimport { PipelinePreviewResolver } from \"./composites/pipeline-preview/resolver\";\n\ntype AnyPayload = SchemaPayload<UISchemaName>;\n\nexport function resolveUI(rawPayload: AnyPayload): React.ReactElement {\n // Coerce stringified-JSON array/object fields (e.g. columns: \"[{...}]\")\n // before dispatch — the streamed tool_use payload carries the raw LLM\n // output, which may have marshalled an array as a string.\n const payload = coercePayload(rawPayload);\n switch (payload.type) {\n case \"data-table\": return <DataTableResolver {...payload} />;\n case \"status-card\": return <StatusCardResolver {...payload} />;\n case \"alert\": return <AlertResolver {...payload} />;\n case \"stat-grid\": return <StatGridResolver {...payload} />;\n case \"tabs-panel\": return <TabsPanelResolver {...payload} />;\n case \"sparkline-table\": return <SparklineTableResolver {...payload} />;\n case \"heatmap-table\": return <HeatmapTableResolver {...payload} />;\n case \"screener-table\": return <ScreenerTableResolver {...payload} />;\n case \"grouped-table\": return <GroupedTableResolver {...payload} />;\n case \"news-feed\": return <NewsFeedResolver {...payload} />;\n case \"area-chart\": return <AreaChartResolver {...payload} />;\n case \"allocation-donut\": return <AllocationDonutResolver {...payload} />;\n case \"waterfall-chart\": return <WaterfallChartResolver {...payload} />;\n case \"flow-canvas\": return <FlowCanvasResolver {...payload} />;\n case \"trial-balance\": return <TrialBalanceResolver {...payload} />;\n case \"journal-entry\": return <JournalEntryResolver {...payload} />;\n case \"aging-report\": return <AgingReportResolver {...payload} />;\n case \"variance-analysis\": return <VarianceAnalysisResolver {...payload} />;\n case \"stacked-breakdown\": return <StackedBreakdownResolver {...payload} />;\n case \"comparative-bar-chart\": return <ComparativeBarChartResolver {...payload} />;\n case \"compliance-checklist\": return <ComplianceChecklistResolver {...payload} />;\n case \"reconciliation-view\": return <ReconciliationViewResolver {...payload} />;\n case \"audit-trail\": return <AuditTrailResolver {...payload} />;\n case \"document-preview\": return <DocumentPreviewResolver {...payload} />;\n case \"provenance-chain\": return <ProvenanceChainResolver {...payload} />;\n case \"search-results\": return <SearchResultsResolver {...payload} />;\n case \"legal-test-result\": return <LegalTestResultResolver {...payload} />;\n case \"engagement-pipeline\": return <EngagementPipelineResolver {...payload} />;\n case \"entity-card-grid\": return <EntityCardGridResolver {...payload} />;\n case \"job-tracker\": return <JobTrackerResolver {...payload} />;\n case \"cited-answer\": return <CitedAnswerResolver {...payload} />;\n case \"transaction-feed\": return <TransactionFeedResolver {...payload} />;\n case \"file-browser\": return <FileBrowserResolver {...payload} />;\n case \"download-card\": return <DownloadCardResolver {...payload} />;\n case \"ops-dashboard\": return <OpsDashboardResolver {...payload} />;\n case \"key-value-list\": return <KeyValueListResolver {...payload} />;\n case \"balance-sheet\": return <BalanceSheetResolver {...payload} />;\n case \"income-statement\": return <IncomeStatementResolver {...payload} />;\n case \"cash-flow-statement\": return <CashFlowStatementResolver {...payload} />;\n case \"general-ledger\": return <GeneralLedgerResolver {...payload} />;\n case \"chart-of-accounts\": return <ChartOfAccountsResolver {...payload} />;\n case \"invoice-detail\": return <InvoiceDetailResolver {...payload} />;\n case \"amortization-table\": return <AmortizationTableResolver {...payload} />;\n case \"depreciation-schedule\": return <DepreciationScheduleResolver {...payload} />;\n case \"escalation-card\": return <EscalationCardResolver {...payload} />;\n case \"line-chart\": return <LineChartResolver {...payload} />;\n case \"combo-chart\": return <ComboChartResolver {...payload} />;\n case \"gauge-chart\": return <GaugeChartResolver {...payload} />;\n case \"treemap-chart\": return <TreemapChartResolver {...payload} />;\n case \"radar-chart\": return <RadarChartResolver {...payload} />;\n case \"funnel-chart\": return <FunnelChartResolver {...payload} />;\n case \"bullet-chart\": return <BulletChartResolver {...payload} />;\n case \"scatter-chart\": return <ScatterChartResolver {...payload} />;\n case \"connect-integration\": return <ConnectIntegrationResolver {...payload} />;\n case \"integrations-list\": return <IntegrationsListResolver {...payload} />;\n case \"pipeline-preview\": return <PipelinePreviewResolver {...payload} />;\n default: {\n const _exhaustive: never = payload;\n void _exhaustive;\n return (\n <div\n role=\"alert\"\n style={{\n padding: \"12px 16px\",\n border: \"1px solid #dc2626\",\n borderRadius: \"8px\",\n background: \"#fef2f2\",\n color: \"#dc2626\",\n fontSize: \"13px\",\n fontWeight: 600,\n }}\n >\n Unknown UI type\n </div>\n );\n }\n }\n}\n","\"use client\";\n\nimport React, { Suspense } from \"react\";\nimport { resolveUI } from \"./resolver\";\nimport type { AnyPayload } from \"./types\";\n\ninterface RendererProps {\n payload: AnyPayload;\n}\n\nfunction InlineSpinner() {\n return (\n <>\n <style>{`@keyframes genui-spin{to{transform:rotate(360deg)}}`}</style>\n <div\n style={{\n width: \"16px\",\n height: \"16px\",\n border: \"2px solid #dedede\",\n borderTopColor: \"#ff5000\",\n borderRadius: \"50%\",\n animation: \"genui-spin 0.6s linear infinite\",\n flexShrink: 0,\n }}\n />\n </>\n );\n}\n\nexport function GenUIRenderer({ payload }: RendererProps) {\n return (\n <Suspense\n fallback={\n <div style={{ display: \"flex\", alignItems: \"center\", gap: \"8px\", padding: \"8px 0\" }}>\n <InlineSpinner />\n <span style={{ fontSize: \"14px\", color: \"rgba(0,0,0,0.4)\" }}>Loading…</span>\n </div>\n }\n >\n {resolveUI(payload)}\n </Suspense>\n );\n}\n","import { z } from \"zod\";\n\nexport const BUILDER_FIELD_TYPES = [\n \"text\",\n \"textarea\",\n \"number\",\n \"select\",\n \"multi_select\",\n \"date\",\n \"checkbox\",\n \"file_upload\",\n] as const;\n\nexport type BuilderFieldType = (typeof BUILDER_FIELD_TYPES)[number];\n\nexport const builderFieldOptionSchema = z.object({\n value: z.string(),\n label: z.string(),\n});\n\nexport const builderFieldValidationSchema = z\n .object({\n min: z.number().optional(),\n max: z.number().optional(),\n min_length: z.number().optional(),\n max_length: z.number().optional(),\n pattern: z.string().optional(),\n })\n .optional();\n\nexport const builderFieldSchema = z.object({\n name: z.string(),\n label: z.string(),\n field_type: z.enum(BUILDER_FIELD_TYPES),\n required: z.boolean().optional().default(false),\n placeholder: z.string().optional().default(\"\"),\n description: z.string().optional().default(\"\"),\n options: z.array(builderFieldOptionSchema).optional().nullable(),\n default_value: z.any().optional().nullable(),\n validation: builderFieldValidationSchema.nullable(),\n});\n\nexport const builderBlockSchema = z.object({\n id: z.string(),\n title: z.string(),\n description: z.string().optional().default(\"\"),\n fields: z.array(builderFieldSchema).min(1),\n context: z.record(z.string(), z.any()).optional().nullable(),\n});\n\nexport const builderSchema = z.object({\n builder_id: z.string(),\n title: z.string(),\n description: z.string().optional().default(\"\"),\n builder_kind: z.enum([\"form\", \"stepper\", \"escalation\"]).optional().default(\"form\"),\n blocks: z.array(builderBlockSchema).min(1),\n submit_label: z.string().optional().default(\"Submit\"),\n cancel_label: z.string().optional().default(\"Cancel\"),\n});\n\nexport type BuilderField = z.infer<typeof builderFieldSchema>;\nexport type BuilderBlock = z.infer<typeof builderBlockSchema>;\nexport type BuilderPayload = z.infer<typeof builderSchema>;\nexport type BuilderFieldOption = z.infer<typeof builderFieldOptionSchema>;\n","import { builderSchema } from \"./schemas\";\n\ntype ValidationResult =\n | { success: true; data: unknown }\n | { success: false; error: string };\n\nexport function validateBuilderPayload(data: unknown): ValidationResult {\n const result = builderSchema.safeParse(data);\n\n if (result.success) {\n return { success: true, data: result.data };\n }\n\n return {\n success: false,\n error: result.error.issues\n .map((i) => `${i.path.join(\".\")}: ${i.message}`)\n .join(\"; \"),\n };\n}\n","\"use client\";\n\nimport React, { useMemo } from \"react\";\nimport { useTheme } from \"../shared/ThemeContext\";\nimport { FieldRenderer } from \"./FieldRenderer\";\nimport { ContextSlot } from \"./ContextSlot\";\nimport { BuilderRecap } from \"./BuilderRecap\";\nimport type { BuilderPayload } from \"./schemas\";\nimport type { BuilderState } from \"./hooks\";\nimport type { FileUploadResult } from \"./fields\";\n\nexport interface FormBuilderProps {\n builder: BuilderPayload;\n state: BuilderState;\n onSubmit: () => void;\n onCancel?: () => void;\n disabled?: boolean;\n onFileUpload?: (file: File) => Promise<FileUploadResult>;\n}\n\nexport function FormBuilder({ builder, state, onSubmit, onCancel, disabled, onFileUpload }: FormBuilderProps) {\n const t = useTheme();\n const S = useMemo(() => makeStyles(t), [t]);\n const block = builder.blocks[0];\n if (!block) return null;\n if (disabled) return <BuilderRecap builder={builder} state={state} />;\n\n return (\n <div style={S.card}>\n <div style={{ display: \"flex\", flexDirection: \"column\", gap: \"2px\" }}>\n <p style={S.title}>{builder.title}</p>\n {builder.description && <p style={{ fontSize: \"12px\", color: t.MUTED, lineHeight: 1.45, margin: 0 }}>{builder.description}</p>}\n </div>\n\n {block.context?.type && <ContextSlot payload={block.context as Record<string, unknown>} />}\n\n <div style={{ display: \"flex\", flexDirection: \"column\", gap: \"12px\" }}>\n {(block.fields || []).map((field) => (\n <FieldRenderer\n key={`${block.id}:${field.name}`}\n field={field}\n value={state.getValue(block.id, field.name)}\n onChange={(v) => state.setFieldValue(block.id, field.name, v)}\n disabled={disabled}\n error={state.getError(block.id, field.name)}\n onFileUpload={onFileUpload}\n />\n ))}\n </div>\n\n {!disabled ? (\n <div style={{ display: \"flex\", alignItems: \"center\", gap: \"8px\", paddingTop: \"4px\" }}>\n <div style={{ flex: 1 }} />\n {onCancel && (\n <button type=\"button\" onClick={onCancel} style={S.cancelBtn}>\n {builder.cancel_label || \"Cancel\"}\n </button>\n )}\n <button type=\"button\" onClick={onSubmit} style={S.submitBtn}>\n {builder.submit_label || \"Submit\"}\n </button>\n </div>\n ) : (\n <div style={{ fontSize: \"11px\", fontWeight: 600, color: t.MUTED, textAlign: \"center\", padding: \"4px 0\" }}>Submitted</div>\n )}\n </div>\n );\n}\n\nfunction makeStyles(t: ReturnType<typeof useTheme>) {\n return {\n card: {\n display: \"flex\" as const,\n flexDirection: \"column\" as const,\n gap: \"14px\",\n padding: \"16px\",\n borderRadius: \"0.75rem\",\n border: `1px solid ${t.BORDER}`,\n background: \"white\",\n boxShadow: \"0 1px 2px rgba(0,0,0,0.03), 0 4px 12px rgba(0,0,0,0.04)\",\n },\n inert: {\n opacity: 0.55,\n pointerEvents: \"none\" as const,\n userSelect: \"none\" as const,\n },\n title: {\n fontFamily: \"var(--font-serif)\",\n fontSize: \"15px\",\n fontWeight: 400,\n color: \"var(--foreground)\",\n letterSpacing: \"-0.01em\",\n margin: 0,\n },\n submitBtn: {\n font: \"inherit\",\n fontSize: \"12px\",\n fontWeight: 600,\n color: \"white\",\n background: t.ACCENT,\n border: \"none\",\n borderRadius: \"9999px\",\n padding: \"7px 18px\",\n cursor: \"pointer\",\n transition: \"opacity 0.15s\",\n },\n cancelBtn: {\n font: \"inherit\",\n fontSize: \"12px\",\n fontWeight: 600,\n color: t.MUTED,\n background: \"transparent\",\n border: `1px solid ${t.BORDER}`,\n borderRadius: \"9999px\",\n padding: \"6px 14px\",\n cursor: \"pointer\",\n transition: \"all 0.15s\",\n },\n };\n}\n","\"use client\";\n\nimport React from \"react\";\nimport { useTheme } from \"../shared/ThemeContext\";\nimport { FIELD_REGISTRY } from \"./fields\";\nimport type { FileUploadResult } from \"./fields\";\nimport type { BuilderField } from \"./schemas\";\n\nexport interface FieldRendererProps {\n field: BuilderField;\n value: unknown;\n onChange: (v: unknown) => void;\n disabled?: boolean;\n error?: string;\n onFileUpload?: (file: File) => Promise<FileUploadResult>;\n}\n\nexport function FieldRenderer({ field, value, onChange, disabled, error, onFileUpload }: FieldRendererProps) {\n const { MUTED } = useTheme();\n const FieldComp = FIELD_REGISTRY[field.field_type] || FIELD_REGISTRY.text;\n\n return (\n <div style={{ display: \"flex\", flexDirection: \"column\", gap: \"3px\" }}>\n {field.field_type !== \"checkbox\" && (\n <label style={{ fontSize: \"12px\", fontWeight: 600, color: \"var(--foreground)\", letterSpacing: \"0.01em\" }}>\n {field.label}\n {field.required && <span style={{ color: \"#dc2626\", marginLeft: \"2px\" }}>*</span>}\n </label>\n )}\n {field.description && <div style={{ fontSize: \"11px\", color: MUTED, lineHeight: 1.4 }}>{field.description}</div>}\n <FieldComp field={field} value={value} onChange={onChange} disabled={disabled} error={error} onFileUpload={field.field_type === \"file_upload\" ? onFileUpload : undefined} />\n {error && <div style={{ fontSize: \"11px\", color: \"#dc2626\", fontWeight: 500, marginTop: \"1px\" }}>{error}</div>}\n </div>\n );\n}\n","\"use client\";\n\nimport React, { useState, useMemo } from \"react\";\nimport { useTheme } from \"../shared/ThemeContext\";\nimport type { BuilderField } from \"./schemas\";\n\nconst INPUT_ERROR: React.CSSProperties = { borderColor: \"#dc2626\" };\nconst SELECT_EXTRA: React.CSSProperties = { cursor: \"pointer\" };\n\nfunction useInputBase(): React.CSSProperties {\n const { BORDER } = useTheme();\n return useMemo(() => ({\n font: \"inherit\",\n fontSize: \"13px\",\n padding: \"7px 10px\",\n borderRadius: \"0.5rem\",\n border: `1px solid ${BORDER}`,\n background: \"white\",\n color: \"var(--foreground)\",\n outline: \"none\",\n width: \"100%\",\n boxSizing: \"border-box\" as const,\n transition: \"border-color 0.15s\",\n }), [BORDER]);\n}\n\nexport type FileUploadResult = {\n object_key: string;\n filename: string;\n content_type: string;\n size: number;\n upload_id: string;\n};\n\nexport interface FieldProps {\n field: BuilderField;\n value: unknown;\n onChange: (v: unknown) => void;\n disabled?: boolean;\n onFileUpload?: (file: File) => Promise<FileUploadResult>;\n error?: string;\n}\n\nexport function TextField({ field, value, onChange, disabled, error }: FieldProps) {\n const base = useInputBase();\n return (\n <input\n type=\"text\"\n value={(value as string) ?? \"\"}\n onChange={(e) => onChange(e.target.value)}\n placeholder={field.placeholder || \"\"}\n disabled={disabled}\n style={error ? { ...base, ...INPUT_ERROR } : base}\n />\n );\n}\n\nexport function TextAreaField({ field, value, onChange, disabled, error }: FieldProps) {\n const base = useInputBase();\n return (\n <textarea\n value={(value as string) ?? \"\"}\n onChange={(e) => onChange(e.target.value)}\n placeholder={field.placeholder || \"\"}\n disabled={disabled}\n rows={4}\n style={error ? { ...base, ...INPUT_ERROR, resize: \"vertical\" as const } : { ...base, resize: \"vertical\" as const }}\n />\n );\n}\n\nexport function NumberField({ field, value, onChange, disabled, error }: FieldProps) {\n const base = useInputBase();\n return (\n <input\n type=\"number\"\n value={value != null ? String(value) : \"\"}\n onChange={(e) => {\n const raw = e.target.value;\n onChange(raw === \"\" ? null : Number(raw));\n }}\n placeholder={field.placeholder || \"\"}\n disabled={disabled}\n min={field.validation?.min}\n max={field.validation?.max}\n style={error ? { ...base, ...INPUT_ERROR } : base}\n />\n );\n}\n\nexport function SelectField({ field, value, onChange, disabled, error }: FieldProps) {\n const base = useInputBase();\n const options = field.options || [];\n return (\n <select\n value={(value as string) ?? \"\"}\n onChange={(e) => onChange(e.target.value)}\n disabled={disabled}\n style={error ? { ...base, ...SELECT_EXTRA, ...INPUT_ERROR } : { ...base, ...SELECT_EXTRA }}\n >\n <option value=\"\">{field.placeholder || \"Select...\"}</option>\n {options.map((opt) => (\n <option key={opt.value} value={opt.value}>{opt.label}</option>\n ))}\n </select>\n );\n}\n\nexport function MultiSelectField({ field, value, onChange, disabled }: FieldProps) {\n const { MUTED, ACCENT, BORDER } = useTheme();\n const [hovered, setHovered] = useState<string | null>(null);\n const options = field.options || [];\n const selected = Array.isArray(value) ? (value as string[]) : [];\n const toggle = (optValue: string) => {\n if (disabled) return;\n const next = selected.includes(optValue)\n ? selected.filter((v) => v !== optValue)\n : [...selected, optValue];\n onChange(next);\n };\n return (\n <div style={{ display: \"flex\", flexDirection: \"column\", gap: \"6px\" }}>\n {options.map((opt) => {\n const isSel = selected.includes(opt.value);\n const isHover = hovered === opt.value && !disabled;\n return (\n <div\n key={opt.value}\n role=\"checkbox\"\n aria-checked={isSel}\n tabIndex={disabled ? -1 : 0}\n onClick={() => toggle(opt.value)}\n onKeyDown={(e) => { if (e.key === \"Enter\" || e.key === \" \") { e.preventDefault(); toggle(opt.value); } }}\n onMouseEnter={() => setHovered(opt.value)}\n onMouseLeave={() => setHovered((h) => (h === opt.value ? null : h))}\n style={{\n display: \"flex\", alignItems: \"center\", gap: \"9px\",\n padding: \"8px 11px\", borderRadius: \"0.5rem\", boxSizing: \"border-box\",\n border: `1px solid ${isSel ? ACCENT : isHover ? MUTED : BORDER}`,\n background: isSel ? `${ACCENT}0d` : \"white\",\n color: \"var(--foreground)\", fontSize: \"13px\",\n cursor: disabled ? \"default\" : \"pointer\", opacity: disabled ? 0.55 : 1,\n transition: \"border-color 0.12s, background 0.12s\",\n userSelect: \"none\",\n }}\n >\n <span style={{\n display: \"flex\", alignItems: \"center\", justifyContent: \"center\", flexShrink: 0,\n width: \"17px\", height: \"17px\", borderRadius: \"0.3rem\",\n border: `1.5px solid ${isSel ? ACCENT : BORDER}`,\n background: isSel ? ACCENT : \"white\",\n transition: \"border-color 0.12s, background 0.12s\",\n }}>\n {isSel && (\n <svg width=\"11\" height=\"11\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"white\" strokeWidth=\"3.5\" strokeLinecap=\"round\" strokeLinejoin=\"round\" aria-hidden=\"true\"><path d=\"M20 6 9 17l-5-5\" /></svg>\n )}\n </span>\n <span style={{ fontWeight: isSel ? 600 : 400 }}>{opt.label}</span>\n </div>\n );\n })}\n </div>\n );\n}\n\nexport function DateField({ field, value, onChange, disabled, error }: FieldProps) {\n const base = useInputBase();\n return (\n <input\n type=\"date\"\n value={(value as string) ?? \"\"}\n onChange={(e) => onChange(e.target.value)}\n disabled={disabled}\n style={error ? { ...base, ...INPUT_ERROR } : base}\n />\n );\n}\n\nexport function CheckboxField({ field, value, onChange, disabled }: FieldProps) {\n return (\n <label style={{ display: \"flex\", alignItems: \"center\", gap: \"7px\", fontSize: \"13px\", color: \"var(--foreground)\", cursor: disabled ? \"default\" : \"pointer\" }}>\n <input type=\"checkbox\" checked={!!value} onChange={(e) => onChange(e.target.checked)} disabled={disabled} />\n <span>{field.placeholder || field.label}</span>\n </label>\n );\n}\n\nfunction formatBytes(bytes: number): string {\n if (!bytes || bytes < 0) return \"\";\n if (bytes < 1024) return `${bytes} B`;\n const units = [\"KB\", \"MB\", \"GB\"];\n let val = bytes / 1024;\n let i = 0;\n while (val >= 1024 && i < units.length - 1) {\n val /= 1024;\n i += 1;\n }\n return `${val < 10 ? val.toFixed(1) : Math.round(val)} ${units[i]}`;\n}\n\n// Keyframes can't live in inline styles -- inject once on first mount.\nconst FILE_UPLOAD_STYLE_ID = \"genui-file-upload-kf\";\nfunction ensureFileUploadKeyframes(): void {\n if (typeof document === \"undefined\") return;\n if (document.getElementById(FILE_UPLOAD_STYLE_ID)) return;\n const el = document.createElement(\"style\");\n el.id = FILE_UPLOAD_STYLE_ID;\n el.textContent = \"@keyframes genuiSpin{to{transform:rotate(360deg)}}\";\n document.head.appendChild(el);\n}\n\nfunction UploadGlyph({ color }: { color: string }) {\n return (\n <svg width=\"22\" height=\"22\" viewBox=\"0 0 24 24\" fill=\"none\" stroke={color} strokeWidth=\"1.6\" strokeLinecap=\"round\" strokeLinejoin=\"round\" aria-hidden=\"true\">\n <path d=\"M12 15V3\" />\n <path d=\"m7 8 5-5 5 5\" />\n <path d=\"M5 15v4a2 2 0 0 0 2 2h10a2 2 0 0 0 2-2v-4\" />\n </svg>\n );\n}\n\nfunction DocGlyph({ color }: { color: string }) {\n return (\n <svg width=\"16\" height=\"16\" viewBox=\"0 0 24 24\" fill=\"none\" stroke={color} strokeWidth=\"1.7\" strokeLinecap=\"round\" strokeLinejoin=\"round\" aria-hidden=\"true\">\n <path d=\"M14 2H6a2 2 0 0 0-2 2v16a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2V8z\" />\n <path d=\"M14 2v6h6\" />\n </svg>\n );\n}\n\ntype UploadEntry = {\n key: number;\n name: string;\n size?: number;\n status: \"uploading\" | \"done\" | \"error\";\n result?: FileUploadResult;\n};\n\nexport function FileUploadField({ field, value, onChange, disabled, onFileUpload, error }: FieldProps) {\n const { MUTED, ACCENT, BORDER, PAPER } = useTheme();\n const keyRef = React.useRef(0);\n const [entries, setEntries] = useState<UploadEntry[]>(() => {\n const arr = Array.isArray(value) ? value : value && typeof value === \"object\" ? [value] : [];\n return arr.map((item) => {\n const r = item as FileUploadResult & { name?: string };\n return { key: (keyRef.current += 1), name: r.filename ?? r.name ?? \"file\", size: r.size, status: \"done\" as const, result: r as FileUploadResult };\n });\n });\n const entriesRef = React.useRef(entries);\n entriesRef.current = entries;\n const [dragOver, setDragOver] = useState(false);\n const inputRef = React.useRef<HTMLInputElement>(null);\n\n React.useEffect(() => { ensureFileUploadKeyframes(); }, []);\n\n const interactive = !disabled;\n // Accept hint doubles as the native ``accept`` filter (e.g. \".pdf,image/*\").\n const accept = field.placeholder && /[/.]/.test(field.placeholder) ? field.placeholder : undefined;\n const hint = field.placeholder && !accept ? field.placeholder : accept ? accept.replace(/,/g, \", \") : \"Any file type · multiple allowed\";\n\n // Push the committed entry list down to the form: only successful uploads,\n // as a FileUploadResult[] (an empty array reads as \"no value\" for required).\n const commit = (next: UploadEntry[]) => {\n entriesRef.current = next;\n setEntries(next);\n onChange(next.filter((e) => e.status === \"done\" && e.result).map((e) => e.result as FileUploadResult));\n };\n\n const addFiles = (files: File[]) => {\n if (!interactive || files.length === 0) return;\n const fresh: UploadEntry[] = files.map((f) => ({\n key: (keyRef.current += 1),\n name: f.name,\n size: f.size,\n status: onFileUpload ? \"uploading\" : \"done\",\n result: onFileUpload ? undefined : ({ filename: f.name, size: f.size, content_type: f.type } as unknown as FileUploadResult),\n }));\n commit([...entriesRef.current, ...fresh]);\n if (!onFileUpload) return;\n fresh.forEach((entry, i) => {\n onFileUpload(files[i])\n .then((result) => commit(entriesRef.current.map((e) => (e.key === entry.key ? { ...e, status: \"done\", result } : e))))\n .catch(() => commit(entriesRef.current.map((e) => (e.key === entry.key ? { ...e, status: \"error\" } : e))));\n });\n };\n\n const handleInput = (e: React.ChangeEvent<HTMLInputElement>) => {\n addFiles(Array.from(e.target.files ?? []));\n if (inputRef.current) inputRef.current.value = \"\";\n };\n\n const handleDrop = (e: React.DragEvent) => {\n e.preventDefault();\n setDragOver(false);\n addFiles(Array.from(e.dataTransfer.files ?? []));\n };\n\n const openPicker = () => { if (interactive) inputRef.current?.click(); };\n const removeEntry = (key: number) => commit(entriesRef.current.filter((e) => e.key !== key));\n\n const borderColor = dragOver ? ACCENT : error ? \"#dc2626\" : BORDER;\n const hasFiles = entries.length > 0;\n\n return (\n <div style={{ display: \"flex\", flexDirection: \"column\", gap: \"8px\" }}>\n <div\n role=\"button\"\n tabIndex={interactive ? 0 : -1}\n onClick={openPicker}\n onKeyDown={(e) => { if ((e.key === \"Enter\" || e.key === \" \") && interactive) { e.preventDefault(); openPicker(); } }}\n onDragOver={(e) => { e.preventDefault(); if (interactive) setDragOver(true); }}\n onDragLeave={() => setDragOver(false)}\n onDrop={handleDrop}\n style={{\n display: \"flex\", flexDirection: \"column\", alignItems: \"center\", justifyContent: \"center\",\n gap: hasFiles ? \"4px\" : \"7px\", padding: hasFiles ? \"12px 14px\" : \"18px 14px\", textAlign: \"center\",\n border: `1.5px dashed ${borderColor}`, borderRadius: \"0.75rem\",\n background: dragOver ? `${ACCENT}0d` : PAPER, color: \"var(--foreground)\", boxSizing: \"border-box\",\n cursor: interactive ? \"pointer\" : \"default\", opacity: disabled ? 0.55 : 1,\n transition: \"border-color 0.15s, background 0.15s, transform 0.15s\",\n transform: dragOver ? \"scale(1.005)\" : \"none\",\n }}\n >\n <UploadGlyph color={dragOver ? ACCENT : MUTED} />\n <span style={{ fontSize: \"12.5px\", color: \"var(--foreground)\" }}>\n <span style={{ color: ACCENT, fontWeight: 600 }}>{hasFiles ? \"Add more files\" : \"Click to upload\"}</span>\n <span style={{ color: MUTED }}> or drag and drop</span>\n </span>\n {!hasFiles && <span style={{ fontSize: \"11px\", color: MUTED }}>{hint}</span>}\n <input ref={inputRef} type=\"file\" multiple accept={accept} onChange={handleInput} disabled={!interactive} style={{ display: \"none\" }} tabIndex={-1} />\n </div>\n\n {entries.map((entry) => {\n const failed = entry.status === \"error\";\n const uploading = entry.status === \"uploading\";\n return (\n <div key={entry.key} style={{ display: \"flex\", alignItems: \"center\", gap: \"10px\", padding: \"8px 11px\", borderRadius: \"0.625rem\", border: `1px solid ${failed ? \"#dc2626\" : BORDER}`, background: \"white\", boxSizing: \"border-box\" }}>\n <span style={{ display: \"flex\", alignItems: \"center\", justifyContent: \"center\", width: \"30px\", height: \"30px\", borderRadius: \"0.5rem\", background: failed ? \"#dc26261a\" : `${ACCENT}14`, flexShrink: 0 }}>\n {uploading\n ? <span style={{ width: \"16px\", height: \"16px\", borderRadius: \"50%\", border: `2px solid ${ACCENT}33`, borderTopColor: ACCENT, animation: \"genuiSpin 0.7s linear infinite\" }} aria-hidden=\"true\" />\n : <DocGlyph color={failed ? \"#dc2626\" : ACCENT} />}\n </span>\n <div style={{ minWidth: 0, flex: 1, display: \"flex\", flexDirection: \"column\", gap: \"1px\" }}>\n <span style={{ fontSize: \"12.5px\", fontWeight: 600, color: \"var(--foreground)\", overflow: \"hidden\", textOverflow: \"ellipsis\", whiteSpace: \"nowrap\" }}>{entry.name}</span>\n <span style={{ fontSize: \"11px\", color: MUTED, display: \"flex\", alignItems: \"center\", gap: \"5px\" }}>\n {uploading && <span style={{ color: ACCENT, fontWeight: 600 }}>Uploading…</span>}\n {entry.status === \"done\" && <span style={{ color: \"#15803d\", fontWeight: 600 }}>✓ Uploaded</span>}\n {failed && <span style={{ color: \"#dc2626\", fontWeight: 600 }}>Failed</span>}\n {entry.size ? <span aria-hidden=\"true\">·</span> : null}\n {entry.size ? <span>{formatBytes(entry.size)}</span> : null}\n </span>\n </div>\n {!disabled && (\n <button type=\"button\" onClick={() => removeEntry(entry.key)} aria-label={`Remove ${entry.name}`} style={{ flexShrink: 0, border: \"none\", background: \"transparent\", color: MUTED, cursor: \"pointer\", lineHeight: 1, padding: \"4px\", borderRadius: \"0.375rem\", display: \"flex\" }}>\n <svg width=\"14\" height=\"14\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" strokeWidth=\"2\" strokeLinecap=\"round\" aria-hidden=\"true\"><path d=\"M18 6 6 18\" /><path d=\"m6 6 12 12\" /></svg>\n </button>\n )}\n </div>\n );\n })}\n </div>\n );\n}\n\nexport const FIELD_REGISTRY: Record<string, React.ComponentType<FieldProps>> = {\n text: TextField,\n textarea: TextAreaField,\n number: NumberField,\n select: SelectField,\n multi_select: MultiSelectField,\n date: DateField,\n checkbox: CheckboxField,\n file_upload: FileUploadField,\n};\n","\"use client\";\n\nimport React from \"react\";\nimport { resolveUI } from \"../resolver\";\n\ninterface ContextSlotProps {\n payload: Record<string, unknown>;\n}\n\nclass SlotErrorBoundary extends React.Component<\n { children: React.ReactNode },\n { hasError: boolean }\n> {\n constructor(props: { children: React.ReactNode }) {\n super(props);\n this.state = { hasError: false };\n }\n static getDerivedStateFromError(): { hasError: boolean } {\n return { hasError: true };\n }\n render(): React.ReactNode {\n if (this.state.hasError) return null;\n return this.props.children;\n }\n}\n\nexport function ContextSlot({ payload }: ContextSlotProps) {\n if (!payload || typeof payload.type !== \"string\") return null;\n\n return (\n <div style={S.slot}>\n <SlotErrorBoundary>\n {resolveUI(payload as Parameters<typeof resolveUI>[0])}\n </SlotErrorBoundary>\n </div>\n );\n}\n\nconst S = {\n slot: {\n marginBottom: \"8px\",\n borderRadius: \"0.5rem\",\n overflow: \"hidden\" as const,\n },\n};\n","\"use client\";\n\nimport React, { useMemo } from \"react\";\nimport { useTheme } from \"../shared/ThemeContext\";\nimport type { BuilderPayload, BuilderBlock, BuilderField } from \"./schemas\";\nimport type { BuilderState } from \"./hooks\";\n\nexport interface BuilderRecapProps {\n builder: BuilderPayload;\n state: BuilderState;\n}\n\n/** Read-only recap shown after a builder is submitted (the `disabled` state).\n * Replaces the useless flat \"Decision: Accept\" x16 echo with a scannable\n * counts bar + per-block decision pills. Scales to large steppers (bounded +\n * scroll). Tokens only. */\nexport function BuilderRecap({ builder, state }: BuilderRecapProps) {\n const t = useTheme();\n const blocks = builder.blocks || [];\n\n // Display value for a field (map select/multi_select values → option labels).\n const display = (field: BuilderField, value: unknown): string => {\n if (value == null || value === \"\") return \"\";\n const opt = (v: unknown) => field.options?.find((o) => o.value === v)?.label ?? String(v);\n if (field.field_type === \"multi_select\" && Array.isArray(value)) return value.map(opt).join(\", \");\n if (field.field_type === \"select\") return opt(value);\n if (field.field_type === \"checkbox\") return value ? \"Yes\" : \"No\";\n if (field.field_type === \"file_upload\") {\n const files = Array.isArray(value) ? value : [value];\n return files.map((x: any) => (x && typeof x === \"object\" ? x.filename || x.name || \"file\" : String(x))).join(\", \");\n }\n return String(value);\n };\n\n // The \"decision\" field of a block = the first select, else the first field.\n const decisionField = (b: BuilderBlock): BuilderField | undefined =>\n (b.fields || []).find((f) => f.field_type === \"select\") || (b.fields || [])[0];\n\n const rows = useMemo(\n () =>\n blocks.map((b) => {\n const df = decisionField(b);\n const decision = df ? display(df, state.getValue(b.id, df.name)) : \"\";\n const extras = (b.fields || [])\n .filter((f) => f !== df)\n .map((f) => ({ label: f.label, value: display(f, state.getValue(b.id, f.name)) }))\n .filter((x) => x.value);\n return { id: b.id, title: b.title, decision, extras };\n }),\n // eslint-disable-next-line react-hooks/exhaustive-deps\n [blocks, state.values]\n );\n\n // Counts by decision value.\n const counts = useMemo(() => {\n const m = new Map<string, number>();\n for (const r of rows) {\n const k = r.decision || \"—\";\n m.set(k, (m.get(k) || 0) + 1);\n }\n return Array.from(m.entries());\n }, [rows]);\n\n const pill = (label: string) => {\n const l = label.toLowerCase();\n let fg = t.MUTED, bg = \"#f2f2f2\";\n if (/accept|approve|confirm|keep|yes/.test(l)) { fg = \"#15803d\"; bg = \"#dcfce7\"; }\n else if (/exclud|reject|remove|delete|deny|no\\b/.test(l)) { fg = \"#dc2626\"; bg = \"#fef2f2\"; }\n else if (/reclass|change|edit|modif|review|other/.test(l)) { fg = t.SECONDARY; bg = \"#e8f0fe\"; }\n return { fg, bg };\n };\n\n const total = rows.length;\n\n return (\n <div style={S(t).card}>\n <style>{\"@keyframes agRecapFade{from{opacity:0;transform:translateY(3px)}to{opacity:1;transform:none}}\"}</style>\n\n <div style={S(t).header}>\n <div style={{ display: \"flex\", alignItems: \"baseline\", gap: \"8px\", flexWrap: \"wrap\" }}>\n <span style={S(t).title}>{builder.title || \"Submitted\"}</span>\n <span style={S(t).reviewed}>{total} {total === 1 ? \"response\" : \"responses\"} submitted</span>\n </div>\n {/* Counts bar */}\n <div style={{ display: \"flex\", flexWrap: \"wrap\", gap: \"6px\", marginTop: \"10px\" }}>\n {counts.map(([label, n]) => {\n const c = pill(label);\n return (\n <span key={label} style={{ ...S(t).countPill, color: c.fg, background: c.bg }}>\n <b style={{ fontVariantNumeric: \"tabular-nums\" }}>{n}</b> {label}\n </span>\n );\n })}\n </div>\n </div>\n\n <div style={S(t).body}>\n {rows.map((r, i) => {\n const c = pill(r.decision);\n return (\n <div key={r.id} style={{ ...S(t).row, animation: `agRecapFade 0.18s ease ${Math.min(i * 0.015, 0.3)}s both` }}>\n <div style={{ minWidth: 0, flex: 1 }}>\n <div style={S(t).rowTitle}>{r.title}</div>\n {r.extras.length > 0 && (\n <div style={S(t).rowExtras}>\n {r.extras.map((e, j) => (\n <span key={j}>\n {j > 0 && <span style={{ color: \"#c4c4c4\" }}> · </span>}\n {e.label}: {e.value}\n </span>\n ))}\n </div>\n )}\n </div>\n {r.decision && (\n <span style={{ ...S(t).rowPill, color: c.fg, background: c.bg }}>{r.decision}</span>\n )}\n </div>\n );\n })}\n </div>\n </div>\n );\n}\n\nfunction S(t: ReturnType<typeof useTheme>) {\n return {\n card: {\n display: \"flex\" as const,\n flexDirection: \"column\" as const,\n maxHeight: \"min(85vh, 820px)\",\n width: \"100%\",\n minWidth: 0,\n boxSizing: \"border-box\" as const,\n borderRadius: \"0.75rem\",\n border: `1px solid ${t.BORDER}`,\n background: \"white\",\n boxShadow: \"0 1px 2px rgba(0,0,0,0.03), 0 4px 12px rgba(0,0,0,0.04)\",\n overflow: \"hidden\" as const,\n },\n header: {\n flexShrink: 0,\n padding: \"14px 16px 12px\",\n borderBottom: `1px solid ${t.BORDER}`,\n },\n title: {\n fontFamily: \"var(--font-serif)\",\n fontSize: \"15px\",\n fontWeight: 400,\n color: \"var(--foreground)\",\n letterSpacing: \"-0.01em\",\n },\n reviewed: { fontSize: \"11px\", fontWeight: 600, color: t.MUTED, textTransform: \"uppercase\" as const, letterSpacing: \"0.04em\" },\n countPill: {\n fontSize: \"11.5px\",\n padding: \"3px 9px\",\n borderRadius: \"9999px\",\n fontWeight: 500,\n whiteSpace: \"nowrap\" as const,\n },\n body: { flex: \"1 1 auto\" as const, minHeight: 0, overflowY: \"auto\" as const, padding: \"6px 8px\" },\n row: {\n display: \"flex\" as const,\n alignItems: \"center\" as const,\n gap: \"10px\",\n padding: \"8px 10px\",\n borderRadius: \"0.5rem\",\n },\n rowTitle: {\n fontSize: \"12.5px\",\n color: \"var(--foreground)\",\n overflow: \"hidden\" as const,\n textOverflow: \"ellipsis\" as const,\n whiteSpace: \"nowrap\" as const,\n },\n rowExtras: { fontSize: \"11px\", color: t.MUTED, marginTop: \"2px\" },\n rowPill: {\n fontSize: \"11px\",\n fontWeight: 600,\n padding: \"3px 9px\",\n borderRadius: \"9999px\",\n whiteSpace: \"nowrap\" as const,\n flexShrink: 0,\n },\n };\n}\n","\"use client\";\n\nimport React, { useMemo } from \"react\";\nimport { useTheme } from \"../shared/ThemeContext\";\nimport { FieldRenderer } from \"./FieldRenderer\";\nimport { ContextSlot } from \"./ContextSlot\";\nimport { BuilderRecap } from \"./BuilderRecap\";\nimport type { BuilderPayload } from \"./schemas\";\nimport type { BuilderState } from \"./hooks\";\nimport type { FileUploadResult } from \"./fields\";\n\nexport interface StepperBuilderProps {\n builder: BuilderPayload;\n state: BuilderState;\n onSubmit: () => void;\n onCancel?: () => void;\n disabled?: boolean;\n onFileUpload?: (file: File) => Promise<FileUploadResult>;\n}\n\n/**\n * Multi-step builder. Scales to large step counts (e.g. a 13-item HITL review):\n * a single progress track + \"Step N of M\" header replaces the old all-dots\n * rail (which overflowed horizontally), the step body is height-bounded and\n * scrolls (tall context tables + fields no longer overflow the card), and the\n * header + footer nav stay pinned so navigation is always reachable.\n */\nexport function StepperBuilder({ builder, state, onSubmit, onCancel, disabled, onFileUpload }: StepperBuilderProps) {\n const t = useTheme();\n const S = useMemo(() => makeStyles(t), [t]);\n const { blocks } = builder;\n const total = blocks.length;\n const idx = Math.min(Math.max(state.currentBlock, 0), Math.max(total - 1, 0));\n const block = blocks[idx] || blocks[0];\n const isLast = idx >= total - 1;\n const isFirst = idx === 0;\n const pct = total > 0 ? Math.round(((idx + 1) / total) * 100) : 0;\n\n // Submitted → show the scannable recap instead of the (now-inert) live form.\n if (disabled) return <BuilderRecap builder={builder} state={state} />;\n\n const handleNext = () => {\n if (state.validateBlock(idx)) state.setCurrentBlock(idx + 1);\n };\n const handleBack = () => state.setCurrentBlock(Math.max(idx - 1, 0));\n\n return (\n <div style={disabled ? { ...S.card, ...S.inert } : S.card}>\n <style>{\"@keyframes agStepFade{from{opacity:0;transform:translateY(4px)}to{opacity:1;transform:none}}\"}</style>\n\n {/* Pinned header: title + compact, always-scalable progress */}\n <div style={S.header}>\n <div style={{ display: \"flex\", flexDirection: \"column\", gap: \"2px\" }}>\n <p style={S.title}>{builder.title}</p>\n {builder.description && <p style={S.subtitle}>{builder.description}</p>}\n </div>\n\n {!disabled && total > 1 && (\n <div style={{ display: \"flex\", flexDirection: \"column\", gap: \"6px\", marginTop: \"10px\" }}>\n <div style={{ display: \"flex\", alignItems: \"baseline\", justifyContent: \"space-between\", gap: \"10px\" }}>\n <span style={S.currentTitle}>{block?.title || `Step ${idx + 1}`}</span>\n <span style={S.stepCount}>\n Step {idx + 1} of {total}\n </span>\n </div>\n <div style={S.progressTrack} role=\"progressbar\" aria-valuenow={pct} aria-valuemin={0} aria-valuemax={100}>\n <div style={{ ...S.progressFill, width: `${pct}%` }} />\n </div>\n </div>\n )}\n </div>\n\n {/* Scrollable step body */}\n <div style={S.body}>\n {block && (\n <div key={idx} style={{ display: \"flex\", flexDirection: \"column\", gap: \"12px\", animation: \"agStepFade 0.22s ease\" }}>\n {/* The block title now lives in the header; show only the description here. */}\n {block.description && <div style={S.blockDesc}>{block.description}</div>}\n {block.context?.type && <ContextSlot payload={block.context as Record<string, unknown>} />}\n <div style={{ display: \"flex\", flexDirection: \"column\", gap: \"12px\" }}>\n {(block.fields || []).map((field) => (\n <FieldRenderer\n key={`${block.id}:${field.name}`}\n field={field}\n value={state.getValue(block.id, field.name)}\n onChange={(v) => state.setFieldValue(block.id, field.name, v)}\n disabled={disabled}\n error={state.getError(block.id, field.name)}\n onFileUpload={onFileUpload}\n />\n ))}\n </div>\n </div>\n )}\n </div>\n\n {/* Pinned footer nav */}\n {!disabled ? (\n <div style={S.footer}>\n {!isFirst && (\n <button type=\"button\" onClick={handleBack} style={S.cancelBtn}>\n Back\n </button>\n )}\n <div style={{ flex: 1 }} />\n {onCancel && (\n <button type=\"button\" onClick={onCancel} style={S.cancelBtn}>\n {builder.cancel_label || \"Cancel\"}\n </button>\n )}\n {isLast ? (\n <button type=\"button\" onClick={onSubmit} style={S.submitBtn}>\n {builder.submit_label || \"Submit\"}\n </button>\n ) : (\n <button type=\"button\" onClick={handleNext} style={S.submitBtn}>\n Next\n </button>\n )}\n </div>\n ) : (\n <div style={S.footer}>\n <div style={{ flex: 1 }} />\n <span style={{ fontSize: \"11px\", fontWeight: 600, color: t.MUTED }}>Submitted</span>\n </div>\n )}\n </div>\n );\n}\n\nfunction makeStyles(t: ReturnType<typeof useTheme>) {\n return {\n card: {\n display: \"flex\" as const,\n flexDirection: \"column\" as const,\n // Bounded so a big stepper (many steps / tall context) never blows out\n // the chat. Short steppers size to content; tall ones cap + body scrolls.\n // Generous cap — use most of the viewport height before scrolling kicks in.\n maxHeight: \"min(85vh, 820px)\",\n width: \"100%\",\n minWidth: 0,\n boxSizing: \"border-box\" as const,\n borderRadius: \"0.75rem\",\n border: `1px solid ${t.BORDER}`,\n background: \"white\",\n boxShadow: \"0 1px 2px rgba(0,0,0,0.03), 0 4px 12px rgba(0,0,0,0.04)\",\n overflow: \"hidden\" as const,\n },\n inert: { opacity: 0.55, pointerEvents: \"none\" as const, userSelect: \"none\" as const },\n header: {\n flexShrink: 0,\n padding: \"16px 16px 12px\",\n borderBottom: `1px solid ${t.BORDER}`,\n background: \"white\",\n },\n title: {\n fontFamily: \"var(--font-serif)\",\n fontSize: \"15px\",\n fontWeight: 400,\n color: \"var(--foreground)\",\n letterSpacing: \"-0.01em\",\n margin: 0,\n },\n subtitle: { fontSize: \"12px\", color: t.MUTED, lineHeight: 1.45, margin: 0 },\n currentTitle: {\n fontSize: \"12.5px\",\n fontWeight: 600,\n color: \"var(--foreground)\",\n minWidth: 0,\n overflow: \"hidden\" as const,\n textOverflow: \"ellipsis\" as const,\n whiteSpace: \"nowrap\" as const,\n },\n stepCount: {\n fontSize: \"10.5px\",\n fontWeight: 600,\n color: t.MUTED,\n letterSpacing: \"0.04em\",\n textTransform: \"uppercase\" as const,\n whiteSpace: \"nowrap\" as const,\n flexShrink: 0,\n fontVariantNumeric: \"tabular-nums\" as const,\n },\n progressTrack: {\n height: \"4px\",\n borderRadius: \"9999px\",\n background: t.PAPER,\n overflow: \"hidden\" as const,\n border: `1px solid ${t.BORDER}`,\n },\n progressFill: {\n height: \"100%\",\n borderRadius: \"9999px\",\n background: t.ACCENT,\n transition: \"width 0.3s ease\",\n },\n body: {\n flex: \"1 1 auto\" as const,\n minHeight: 0,\n overflowY: \"auto\" as const,\n overflowX: \"hidden\" as const,\n padding: \"14px 16px\",\n scrollbarGutter: \"stable\" as const,\n },\n blockDesc: { fontSize: \"12px\", color: t.MUTED, lineHeight: 1.45 },\n footer: {\n flexShrink: 0,\n display: \"flex\" as const,\n alignItems: \"center\" as const,\n gap: \"8px\",\n padding: \"10px 16px\",\n borderTop: `1px solid ${t.BORDER}`,\n background: \"white\",\n },\n submitBtn: {\n font: \"inherit\",\n fontSize: \"12px\",\n fontWeight: 600,\n color: \"white\",\n background: t.ACCENT,\n border: \"none\",\n borderRadius: \"9999px\",\n padding: \"7px 18px\",\n cursor: \"pointer\",\n transition: \"opacity 0.15s\",\n },\n cancelBtn: {\n font: \"inherit\",\n fontSize: \"12px\",\n fontWeight: 600,\n color: t.MUTED,\n background: \"transparent\",\n border: `1px solid ${t.BORDER}`,\n borderRadius: \"9999px\",\n padding: \"6px 14px\",\n cursor: \"pointer\",\n transition: \"all 0.15s\",\n },\n };\n}\n","\"use client\";\n\nimport React, { useMemo } from \"react\";\nimport { useTheme } from \"../shared/ThemeContext\";\nimport { FieldRenderer } from \"./FieldRenderer\";\nimport { ContextSlot } from \"./ContextSlot\";\nimport { BuilderRecap } from \"./BuilderRecap\";\nimport type { BuilderPayload } from \"./schemas\";\nimport type { BuilderState } from \"./hooks\";\nimport type { FileUploadResult } from \"./fields\";\n\nexport interface EscalationCardProps {\n builder: BuilderPayload;\n state: BuilderState;\n onSubmit: () => void;\n disabled?: boolean;\n onFileUpload?: (file: File) => Promise<FileUploadResult>;\n}\n\nexport function EscalationCard({ builder, state, onSubmit, disabled, onFileUpload }: EscalationCardProps) {\n const t = useTheme();\n const S = useMemo(() => makeStyles(t), [t]);\n const block = builder.blocks[0];\n if (!block) return null;\n if (disabled) return <BuilderRecap builder={builder} state={state} />;\n\n return (\n <div style={S.card}>\n {builder.description && <p style={{ fontSize: \"13px\", color: \"var(--foreground)\", lineHeight: 1.45, margin: 0 }}>{builder.description}</p>}\n\n {block.context?.type && <ContextSlot payload={block.context as Record<string, unknown>} />}\n\n <div style={{ display: \"flex\", flexDirection: \"column\", gap: \"10px\" }}>\n {(block.fields || []).map((field) => (\n <FieldRenderer key={`${block.id}:${field.name}`} field={field} value={state.getValue(block.id, field.name)} onChange={(v) => state.setFieldValue(block.id, field.name, v)} disabled={disabled} error={state.getError(block.id, field.name)} onFileUpload={onFileUpload} />\n ))}\n </div>\n\n {!disabled ? (\n <div style={{ display: \"flex\", alignItems: \"center\", gap: \"8px\", paddingTop: \"2px\" }}>\n <div style={{ flex: 1 }} />\n <button type=\"button\" onClick={onSubmit} style={S.continueBtn}>\n {builder.submit_label || \"Continue\"}\n </button>\n </div>\n ) : (\n <div style={{ fontSize: \"11px\", fontWeight: 600, color: t.MUTED, textAlign: \"center\", padding: \"2px 0\" }}>Submitted</div>\n )}\n </div>\n );\n}\n\nfunction makeStyles(t: ReturnType<typeof useTheme>) {\n return {\n card: {\n display: \"flex\" as const, flexDirection: \"column\" as const, gap: \"10px\",\n padding: \"12px 14px\", borderRadius: \"0.75rem\",\n borderTop: `1px solid ${t.BORDER}`, borderRight: `1px solid ${t.BORDER}`,\n borderBottom: `1px solid ${t.BORDER}`, borderLeft: `2px solid ${t.ACCENT}`,\n background: \"white\",\n },\n inert: { opacity: 0.55, pointerEvents: \"none\" as const, userSelect: \"none\" as const },\n continueBtn: {\n font: \"inherit\", fontSize: \"12px\", fontWeight: 600, color: t.ACCENT,\n background: \"transparent\",\n borderTop: `1px solid ${t.ACCENT}`, borderRight: `1px solid ${t.ACCENT}`,\n borderBottom: `1px solid ${t.ACCENT}`, borderLeft: `1px solid ${t.ACCENT}`,\n borderRadius: \"9999px\", padding: \"6px 14px\", cursor: \"pointer\", transition: \"all 0.15s\",\n },\n };\n}\n","\"use client\";\n\nimport { useState, useCallback } from \"react\";\nimport type { BuilderBlock } from \"./schemas\";\n\n/** Composite state key. Field values are namespaced by block id so the SAME\n * field name reused across blocks (e.g. a `decision` select on every step of a\n * 16-exception HITL stepper) does NOT collide into one shared value. Null-byte\n * separator can't appear in ids/names. */\nexport function fieldKey(blockId: string, name: string): string {\n return `${blockId}\u0000${name}`;\n}\n\nexport interface BuilderState {\n /** Composite-keyed (`fieldKey(blockId, name)`) value map. */\n values: Record<string, unknown>;\n /** Composite-keyed error map. */\n errors: Record<string, string>;\n getValue: (blockId: string, name: string) => unknown;\n getError: (blockId: string, name: string) => string | undefined;\n setFieldValue: (blockId: string, name: string, value: unknown) => void;\n validateBlock: (blockIdx: number) => boolean;\n validateAll: () => boolean;\n currentBlock: number;\n setCurrentBlock: (idx: number) => void;\n isMultiBlock: boolean;\n}\n\nexport function useBuilderState(blocks: BuilderBlock[]): BuilderState {\n const isMultiBlock = blocks.length > 1;\n\n const [values, setValues] = useState<Record<string, unknown>>(() => {\n const init: Record<string, unknown> = {};\n for (const block of blocks) {\n for (const field of block.fields || []) {\n if (field.default_value != null) init[fieldKey(block.id, field.name)] = field.default_value;\n }\n }\n return init;\n });\n\n const [errors, setErrors] = useState<Record<string, string>>({});\n const [currentBlock, setCurrentBlock] = useState(0);\n\n const getValue = useCallback(\n (blockId: string, name: string) => values[fieldKey(blockId, name)],\n [values]\n );\n const getError = useCallback(\n (blockId: string, name: string) => errors[fieldKey(blockId, name)],\n [errors]\n );\n\n const setFieldValue = useCallback((blockId: string, name: string, value: unknown) => {\n const k = fieldKey(blockId, name);\n setValues((prev) => ({ ...prev, [k]: value }));\n setErrors((prev) => {\n if (!prev[k]) return prev;\n const next = { ...prev };\n delete next[k];\n return next;\n });\n }, []);\n\n const validateBlock = useCallback(\n (blockIdx: number): boolean => {\n const block = blocks[blockIdx];\n if (!block) return true;\n const newErrors: Record<string, string> = {};\n\n for (const field of block.fields || []) {\n const k = fieldKey(block.id, field.name);\n const v = values[k];\n\n if (field.required) {\n if (v == null || v === \"\" || (Array.isArray(v) && v.length === 0)) {\n newErrors[k] = \"Required\";\n continue;\n }\n }\n\n if (v == null || v === \"\") continue;\n const val = field.validation;\n if (!val) continue;\n\n if (val.min_length && typeof v === \"string\" && v.length < val.min_length) {\n newErrors[k] = `Min ${val.min_length} characters`;\n } else if (val.max_length && typeof v === \"string\" && v.length > val.max_length) {\n newErrors[k] = `Max ${val.max_length} characters`;\n } else if (val.min != null && typeof v === \"number\" && v < val.min) {\n newErrors[k] = `Min ${val.min}`;\n } else if (val.max != null && typeof v === \"number\" && v > val.max) {\n newErrors[k] = `Max ${val.max}`;\n } else if (val.pattern && typeof v === \"string\" && !new RegExp(val.pattern).test(v)) {\n newErrors[k] = \"Invalid format\";\n }\n }\n\n setErrors((prev) => ({ ...prev, ...newErrors }));\n return Object.keys(newErrors).length === 0;\n },\n [blocks, values]\n );\n\n const validateAll = useCallback((): boolean => {\n let firstFailing = -1;\n const allErrors: Record<string, string> = {};\n\n for (let i = 0; i < blocks.length; i++) {\n const block = blocks[i];\n for (const field of block.fields || []) {\n const k = fieldKey(block.id, field.name);\n const v = values[k];\n if (field.required && (v == null || v === \"\" || (Array.isArray(v) && v.length === 0))) {\n allErrors[k] = \"Required\";\n if (firstFailing < 0) firstFailing = i;\n }\n }\n }\n\n setErrors(allErrors);\n if (firstFailing >= 0) setCurrentBlock(firstFailing);\n return Object.keys(allErrors).length === 0;\n }, [blocks, values]);\n\n return {\n values,\n errors,\n getValue,\n getError,\n setFieldValue,\n validateBlock,\n validateAll,\n currentBlock,\n setCurrentBlock,\n isMultiBlock,\n };\n}\n","\"use client\";\n\nimport React, { useCallback } from \"react\";\nimport { FormBuilder } from \"./FormBuilder\";\nimport { StepperBuilder } from \"./StepperBuilder\";\nimport { EscalationCard } from \"./EscalationCard\";\nimport { useBuilderState } from \"./hooks\";\nimport type { BuilderPayload } from \"./schemas\";\nimport type { FileUploadResult } from \"./fields\";\n\n/** Per-block answers. `blocks` is the authoritative shape (one entry per block,\n * so reused field names across blocks never collide). `values` is a flat\n * convenience copy of the single block's answers when there's exactly one block\n * (back-compat for form/escalation consumers). */\nexport interface BuilderSubmission {\n builder_id: string;\n builder_kind: \"form\" | \"stepper\" | \"escalation\";\n blocks: Array<{ id: string; title: string; values: Record<string, unknown> }>;\n values?: Record<string, unknown>;\n}\n\nexport interface BuilderFormProps {\n builder: BuilderPayload;\n onSubmit: (submission: BuilderSubmission) => void;\n onCancel?: () => void;\n disabled?: boolean;\n onFileUpload?: (file: File) => Promise<FileUploadResult>;\n}\n\nexport function BuilderFormResolver({ builder, onSubmit, onCancel, disabled, onFileUpload }: BuilderFormProps) {\n const state = useBuilderState(builder.blocks);\n const kind = builder.builder_kind || \"form\";\n\n const handleSubmit = useCallback(() => {\n if (disabled) return;\n if (!state.validateAll()) return;\n const blocks = (builder.blocks || []).map((b) => ({\n id: b.id,\n title: b.title,\n values: Object.fromEntries((b.fields || []).map((f) => [f.name, state.getValue(b.id, f.name)])),\n }));\n const submission: BuilderSubmission = {\n builder_id: builder.builder_id,\n builder_kind: kind,\n blocks,\n ...(blocks.length === 1 ? { values: blocks[0].values } : {}),\n };\n onSubmit(submission);\n }, [disabled, state, onSubmit, builder, kind]);\n\n switch (kind) {\n case \"stepper\":\n return (\n <StepperBuilder\n builder={builder}\n state={state}\n onSubmit={handleSubmit}\n onCancel={onCancel}\n disabled={disabled}\n onFileUpload={onFileUpload}\n />\n );\n case \"escalation\":\n return (\n <EscalationCard\n builder={builder}\n state={state}\n onSubmit={handleSubmit}\n disabled={disabled}\n onFileUpload={onFileUpload}\n />\n );\n default:\n return (\n <FormBuilder\n builder={builder}\n state={state}\n onSubmit={handleSubmit}\n onCancel={onCancel}\n disabled={disabled}\n onFileUpload={onFileUpload}\n />\n );\n }\n}\n","import React from \"react\";\nimport { BuilderFormResolver } from \"./BuilderForm\";\nimport type { BuilderSubmission } from \"./BuilderForm\";\nimport type { BuilderPayload } from \"./schemas\";\n\nexport interface ResolveBuilderCallbacks {\n onSubmit: (submission: BuilderSubmission) => void;\n onCancel?: () => void;\n disabled?: boolean;\n}\n\nexport function resolveBuilder(\n payload: BuilderPayload,\n callbacks: ResolveBuilderCallbacks\n): React.ReactElement {\n return React.createElement(BuilderFormResolver, {\n builder: payload,\n ...callbacks,\n });\n}\n"]}
|