@cohesivesystems/presentation-react-shadcn 0.1.0-alpha.1
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/LICENSE +55 -0
- package/dist/document-workspace-surface-slot-renderers.d.ts +58 -0
- package/dist/document-workspace-surface-slot-renderers.d.ts.map +1 -0
- package/dist/document-workspace-surface-slot-renderers.js +206 -0
- package/dist/document-workspace-surface-slot-renderers.js.map +1 -0
- package/dist/index.d.ts +53 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +53 -0
- package/dist/index.js.map +1 -0
- package/dist/navigation-shell-frame-renderer-registry.d.ts +8 -0
- package/dist/navigation-shell-frame-renderer-registry.d.ts.map +1 -0
- package/dist/navigation-shell-frame-renderer-registry.js +2 -0
- package/dist/navigation-shell-frame-renderer-registry.js.map +1 -0
- package/dist/navigation-shell-slot-renderer-registry.d.ts +9 -0
- package/dist/navigation-shell-slot-renderer-registry.d.ts.map +1 -0
- package/dist/navigation-shell-slot-renderer-registry.js +2 -0
- package/dist/navigation-shell-slot-renderer-registry.js.map +1 -0
- package/dist/page-host-unavailable-renderer.d.ts +10 -0
- package/dist/page-host-unavailable-renderer.d.ts.map +1 -0
- package/dist/page-host-unavailable-renderer.js +27 -0
- package/dist/page-host-unavailable-renderer.js.map +1 -0
- package/dist/presentation-action-group.d.ts +99 -0
- package/dist/presentation-action-group.d.ts.map +1 -0
- package/dist/presentation-action-group.js +214 -0
- package/dist/presentation-action-group.js.map +1 -0
- package/dist/presentation-badge-target-interpreter.d.ts +26 -0
- package/dist/presentation-badge-target-interpreter.d.ts.map +1 -0
- package/dist/presentation-badge-target-interpreter.js +17 -0
- package/dist/presentation-badge-target-interpreter.js.map +1 -0
- package/dist/presentation-component-groups.d.ts +968 -0
- package/dist/presentation-component-groups.d.ts.map +1 -0
- package/dist/presentation-component-groups.js +505 -0
- package/dist/presentation-component-groups.js.map +1 -0
- package/dist/presentation-component-system-diagnostics.d.ts +27 -0
- package/dist/presentation-component-system-diagnostics.d.ts.map +1 -0
- package/dist/presentation-component-system-diagnostics.js +399 -0
- package/dist/presentation-component-system-diagnostics.js.map +1 -0
- package/dist/presentation-component-system.d.ts +31 -0
- package/dist/presentation-component-system.d.ts.map +1 -0
- package/dist/presentation-component-system.js +61 -0
- package/dist/presentation-component-system.js.map +1 -0
- package/dist/presentation-icon-diagnostics.d.ts +12 -0
- package/dist/presentation-icon-diagnostics.d.ts.map +1 -0
- package/dist/presentation-icon-diagnostics.js +17 -0
- package/dist/presentation-icon-diagnostics.js.map +1 -0
- package/dist/presentation-icon-registry.d.ts +28 -0
- package/dist/presentation-icon-registry.d.ts.map +1 -0
- package/dist/presentation-icon-registry.js +80 -0
- package/dist/presentation-icon-registry.js.map +1 -0
- package/dist/presentation-projection-trace-panel.d.ts +10 -0
- package/dist/presentation-projection-trace-panel.d.ts.map +1 -0
- package/dist/presentation-projection-trace-panel.js +48 -0
- package/dist/presentation-projection-trace-panel.js.map +1 -0
- package/dist/presentation-routed-surface-host.d.ts +19 -0
- package/dist/presentation-routed-surface-host.d.ts.map +1 -0
- package/dist/presentation-routed-surface-host.js +12 -0
- package/dist/presentation-routed-surface-host.js.map +1 -0
- package/dist/presentation-shadcn-component-system.d.ts +22 -0
- package/dist/presentation-shadcn-component-system.d.ts.map +1 -0
- package/dist/presentation-shadcn-component-system.js +2 -0
- package/dist/presentation-shadcn-component-system.js.map +1 -0
- package/dist/presentation-standard-renderers.d.ts +168 -0
- package/dist/presentation-standard-renderers.d.ts.map +1 -0
- package/dist/presentation-standard-renderers.js +440 -0
- package/dist/presentation-standard-renderers.js.map +1 -0
- package/dist/presentation-surface-renderer.d.ts +23 -0
- package/dist/presentation-surface-renderer.d.ts.map +1 -0
- package/dist/presentation-surface-renderer.js +119 -0
- package/dist/presentation-surface-renderer.js.map +1 -0
- package/dist/presentation-value-renderers.d.ts +10 -0
- package/dist/presentation-value-renderers.d.ts.map +1 -0
- package/dist/presentation-value-renderers.js +14 -0
- package/dist/presentation-value-renderers.js.map +1 -0
- package/dist/process-task-icons.d.ts +49 -0
- package/dist/process-task-icons.d.ts.map +1 -0
- package/dist/process-task-icons.js +154 -0
- package/dist/process-task-icons.js.map +1 -0
- package/dist/projected-activity-state.d.ts +17 -0
- package/dist/projected-activity-state.d.ts.map +1 -0
- package/dist/projected-activity-state.js +22 -0
- package/dist/projected-activity-state.js.map +1 -0
- package/dist/projected-collection-action-runtime-diagnostics.d.ts +4 -0
- package/dist/projected-collection-action-runtime-diagnostics.d.ts.map +1 -0
- package/dist/projected-collection-action-runtime-diagnostics.js +9 -0
- package/dist/projected-collection-action-runtime-diagnostics.js.map +1 -0
- package/dist/projected-collection-view.d.ts +90 -0
- package/dist/projected-collection-view.d.ts.map +1 -0
- package/dist/projected-collection-view.js +532 -0
- package/dist/projected-collection-view.js.map +1 -0
- package/dist/projected-document-action-status-notices.d.ts +15 -0
- package/dist/projected-document-action-status-notices.d.ts.map +1 -0
- package/dist/projected-document-action-status-notices.js +33 -0
- package/dist/projected-document-action-status-notices.js.map +1 -0
- package/dist/projected-document-badges.d.ts +24 -0
- package/dist/projected-document-badges.d.ts.map +1 -0
- package/dist/projected-document-badges.js +53 -0
- package/dist/projected-document-badges.js.map +1 -0
- package/dist/projected-document-editor-surface.d.ts +46 -0
- package/dist/projected-document-editor-surface.d.ts.map +1 -0
- package/dist/projected-document-editor-surface.js +399 -0
- package/dist/projected-document-editor-surface.js.map +1 -0
- package/dist/projected-document-workspace-notices.d.ts +24 -0
- package/dist/projected-document-workspace-notices.d.ts.map +1 -0
- package/dist/projected-document-workspace-notices.js +14 -0
- package/dist/projected-document-workspace-notices.js.map +1 -0
- package/dist/projected-document-workspace-prompt-child-view-registry.d.ts +25 -0
- package/dist/projected-document-workspace-prompt-child-view-registry.d.ts.map +1 -0
- package/dist/projected-document-workspace-prompt-child-view-registry.js +41 -0
- package/dist/projected-document-workspace-prompt-child-view-registry.js.map +1 -0
- package/dist/projected-document-workspace-prompt-child-view-renderers.d.ts +32 -0
- package/dist/projected-document-workspace-prompt-child-view-renderers.d.ts.map +1 -0
- package/dist/projected-document-workspace-prompt-child-view-renderers.js +77 -0
- package/dist/projected-document-workspace-prompt-child-view-renderers.js.map +1 -0
- package/dist/projected-document-workspace-shell.d.ts +100 -0
- package/dist/projected-document-workspace-shell.d.ts.map +1 -0
- package/dist/projected-document-workspace-shell.js +153 -0
- package/dist/projected-document-workspace-shell.js.map +1 -0
- package/dist/projected-document-workspace.d.ts +39 -0
- package/dist/projected-document-workspace.d.ts.map +1 -0
- package/dist/projected-document-workspace.js +63 -0
- package/dist/projected-document-workspace.js.map +1 -0
- package/dist/projected-field-value-rendering.d.ts +94 -0
- package/dist/projected-field-value-rendering.d.ts.map +1 -0
- package/dist/projected-field-value-rendering.js +377 -0
- package/dist/projected-field-value-rendering.js.map +1 -0
- package/dist/projected-inline-list.d.ts +20 -0
- package/dist/projected-inline-list.d.ts.map +1 -0
- package/dist/projected-inline-list.js +149 -0
- package/dist/projected-inline-list.js.map +1 -0
- package/dist/projected-input-form.d.ts +143 -0
- package/dist/projected-input-form.d.ts.map +1 -0
- package/dist/projected-input-form.js +612 -0
- package/dist/projected-input-form.js.map +1 -0
- package/dist/projected-metric-dashboard.d.ts +26 -0
- package/dist/projected-metric-dashboard.d.ts.map +1 -0
- package/dist/projected-metric-dashboard.js +20 -0
- package/dist/projected-metric-dashboard.js.map +1 -0
- package/dist/projected-metric-strip.d.ts +20 -0
- package/dist/projected-metric-strip.d.ts.map +1 -0
- package/dist/projected-metric-strip.js +131 -0
- package/dist/projected-metric-strip.js.map +1 -0
- package/dist/projected-navigation-shell-view-host.d.ts +34 -0
- package/dist/projected-navigation-shell-view-host.d.ts.map +1 -0
- package/dist/projected-navigation-shell-view-host.js +75 -0
- package/dist/projected-navigation-shell-view-host.js.map +1 -0
- package/dist/projected-navigation-shell.d.ts +33 -0
- package/dist/projected-navigation-shell.d.ts.map +1 -0
- package/dist/projected-navigation-shell.js +112 -0
- package/dist/projected-navigation-shell.js.map +1 -0
- package/dist/projected-presentation-badges.d.ts +34 -0
- package/dist/projected-presentation-badges.d.ts.map +1 -0
- package/dist/projected-presentation-badges.js +22 -0
- package/dist/projected-presentation-badges.js.map +1 -0
- package/dist/projected-presentation-diagnostics.d.ts +10 -0
- package/dist/projected-presentation-diagnostics.d.ts.map +1 -0
- package/dist/projected-presentation-diagnostics.js +40 -0
- package/dist/projected-presentation-diagnostics.js.map +1 -0
- package/dist/projected-presentation-flow-layer.d.ts +33 -0
- package/dist/projected-presentation-flow-layer.d.ts.map +1 -0
- package/dist/projected-presentation-flow-layer.js +71 -0
- package/dist/projected-presentation-flow-layer.js.map +1 -0
- package/dist/projected-process-task-notices.d.ts +37 -0
- package/dist/projected-process-task-notices.d.ts.map +1 -0
- package/dist/projected-process-task-notices.js +225 -0
- package/dist/projected-process-task-notices.js.map +1 -0
- package/dist/projected-prompt-child-view-renderer.d.ts +101 -0
- package/dist/projected-prompt-child-view-renderer.d.ts.map +1 -0
- package/dist/projected-prompt-child-view-renderer.js +442 -0
- package/dist/projected-prompt-child-view-renderer.js.map +1 -0
- package/dist/projected-prompt-document-preview.d.ts +39 -0
- package/dist/projected-prompt-document-preview.d.ts.map +1 -0
- package/dist/projected-prompt-document-preview.js +50 -0
- package/dist/projected-prompt-document-preview.js.map +1 -0
- package/dist/projected-prompt-view.d.ts +35 -0
- package/dist/projected-prompt-view.d.ts.map +1 -0
- package/dist/projected-prompt-view.js +292 -0
- package/dist/projected-prompt-view.js.map +1 -0
- package/dist/projected-query-form.d.ts +56 -0
- package/dist/projected-query-form.d.ts.map +1 -0
- package/dist/projected-query-form.js +100 -0
- package/dist/projected-query-form.js.map +1 -0
- package/dist/projected-record-details.d.ts +20 -0
- package/dist/projected-record-details.d.ts.map +1 -0
- package/dist/projected-record-details.js +60 -0
- package/dist/projected-record-details.js.map +1 -0
- package/dist/projected-routed-surface-runtime.d.ts +86 -0
- package/dist/projected-routed-surface-runtime.d.ts.map +1 -0
- package/dist/projected-routed-surface-runtime.js +332 -0
- package/dist/projected-routed-surface-runtime.js.map +1 -0
- package/dist/projected-tabs-view.d.ts +21 -0
- package/dist/projected-tabs-view.d.ts.map +1 -0
- package/dist/projected-tabs-view.js +140 -0
- package/dist/projected-tabs-view.js.map +1 -0
- package/dist/projected-view-chrome.d.ts +15 -0
- package/dist/projected-view-chrome.d.ts.map +1 -0
- package/dist/projected-view-chrome.js +67 -0
- package/dist/projected-view-chrome.js.map +1 -0
- package/dist/projected-view-surface.d.ts +34 -0
- package/dist/projected-view-surface.d.ts.map +1 -0
- package/dist/projected-view-surface.js +40 -0
- package/dist/projected-view-surface.js.map +1 -0
- package/dist/standard-collection-chrome-slot-renderers.d.ts +26 -0
- package/dist/standard-collection-chrome-slot-renderers.d.ts.map +1 -0
- package/dist/standard-collection-chrome-slot-renderers.js +250 -0
- package/dist/standard-collection-chrome-slot-renderers.js.map +1 -0
- package/dist/standard-view-chrome-slot-renderers.d.ts +57 -0
- package/dist/standard-view-chrome-slot-renderers.d.ts.map +1 -0
- package/dist/standard-view-chrome-slot-renderers.js +614 -0
- package/dist/standard-view-chrome-slot-renderers.js.map +1 -0
- package/package.json +68 -0
- package/src/document-workspace-surface-slot-renderers.tsx +395 -0
- package/src/index.ts +53 -0
- package/src/navigation-shell-frame-renderer-registry.ts +29 -0
- package/src/navigation-shell-slot-renderer-registry.ts +46 -0
- package/src/page-host-unavailable-renderer.tsx +79 -0
- package/src/presentation-action-group.tsx +475 -0
- package/src/presentation-badge-target-interpreter.ts +54 -0
- package/src/presentation-component-groups.ts +2505 -0
- package/src/presentation-component-system-diagnostics.ts +848 -0
- package/src/presentation-component-system.ts +365 -0
- package/src/presentation-icon-diagnostics.ts +53 -0
- package/src/presentation-icon-registry.tsx +181 -0
- package/src/presentation-projection-trace-panel.tsx +140 -0
- package/src/presentation-routed-surface-host.tsx +48 -0
- package/src/presentation-shadcn-component-system.ts +102 -0
- package/src/presentation-standard-renderers.tsx +1290 -0
- package/src/presentation-surface-renderer.tsx +263 -0
- package/src/presentation-value-renderers.tsx +40 -0
- package/src/process-task-icons.tsx +258 -0
- package/src/projected-activity-state.tsx +63 -0
- package/src/projected-collection-action-runtime-diagnostics.ts +22 -0
- package/src/projected-collection-view.tsx +1273 -0
- package/src/projected-document-action-status-notices.tsx +66 -0
- package/src/projected-document-badges.tsx +134 -0
- package/src/projected-document-editor-surface.tsx +808 -0
- package/src/projected-document-workspace-notices.tsx +77 -0
- package/src/projected-document-workspace-prompt-child-view-registry.ts +99 -0
- package/src/projected-document-workspace-prompt-child-view-renderers.tsx +205 -0
- package/src/projected-document-workspace-shell.tsx +427 -0
- package/src/projected-document-workspace.tsx +216 -0
- package/src/projected-field-value-rendering.tsx +704 -0
- package/src/projected-inline-list.tsx +434 -0
- package/src/projected-input-form.tsx +1218 -0
- package/src/projected-metric-dashboard.tsx +106 -0
- package/src/projected-metric-strip.tsx +244 -0
- package/src/projected-navigation-shell-view-host.tsx +177 -0
- package/src/projected-navigation-shell.tsx +219 -0
- package/src/projected-presentation-badges.tsx +95 -0
- package/src/projected-presentation-diagnostics.tsx +120 -0
- package/src/projected-presentation-flow-layer.tsx +186 -0
- package/src/projected-process-task-notices.tsx +501 -0
- package/src/projected-prompt-child-view-renderer.tsx +698 -0
- package/src/projected-prompt-document-preview.tsx +197 -0
- package/src/projected-prompt-view.tsx +592 -0
- package/src/projected-query-form.tsx +286 -0
- package/src/projected-record-details.tsx +133 -0
- package/src/projected-routed-surface-runtime.tsx +713 -0
- package/src/projected-tabs-view.tsx +308 -0
- package/src/projected-view-chrome.tsx +148 -0
- package/src/projected-view-surface.tsx +131 -0
- package/src/standard-collection-chrome-slot-renderers.tsx +391 -0
- package/src/standard-view-chrome-slot-renderers.tsx +1064 -0
|
@@ -0,0 +1,140 @@
|
|
|
1
|
+
import type {
|
|
2
|
+
PresentationProjectionTrace,
|
|
3
|
+
PresentationProjectionTraceView,
|
|
4
|
+
} from '@cohesivesystems/presentation-core'
|
|
5
|
+
|
|
6
|
+
export interface PresentationProjectionTracePanelProps {
|
|
7
|
+
readonly enabled?: boolean
|
|
8
|
+
readonly trace: PresentationProjectionTrace
|
|
9
|
+
}
|
|
10
|
+
|
|
11
|
+
export function PresentationProjectionTracePanel({
|
|
12
|
+
enabled = true,
|
|
13
|
+
trace,
|
|
14
|
+
}: PresentationProjectionTracePanelProps) {
|
|
15
|
+
if (!enabled) {
|
|
16
|
+
return null
|
|
17
|
+
}
|
|
18
|
+
|
|
19
|
+
return (
|
|
20
|
+
<details className="fixed bottom-4 right-4 z-50 max-h-[70vh] w-[30rem] max-w-[calc(100vw-2rem)] overflow-hidden rounded-md border border-slate-950/10 bg-white/95 text-xs text-slate-700 shadow-xl backdrop-blur">
|
|
21
|
+
<summary className="cursor-pointer select-none border-b border-slate-950/10 px-3 py-2 font-medium text-slate-950">
|
|
22
|
+
Projection trace
|
|
23
|
+
</summary>
|
|
24
|
+
<div className="max-h-[calc(70vh-2.25rem)] overflow-auto p-3">
|
|
25
|
+
<PresentationProjectionTraceContent trace={trace} />
|
|
26
|
+
</div>
|
|
27
|
+
</details>
|
|
28
|
+
)
|
|
29
|
+
}
|
|
30
|
+
|
|
31
|
+
export function PresentationProjectionTraceContent({
|
|
32
|
+
trace,
|
|
33
|
+
}: {
|
|
34
|
+
readonly trace: PresentationProjectionTrace
|
|
35
|
+
}) {
|
|
36
|
+
return (
|
|
37
|
+
<div className="grid gap-3 text-xs text-slate-700">
|
|
38
|
+
<section className="grid gap-1">
|
|
39
|
+
<TraceRow label="Path" value={trace.pathname} />
|
|
40
|
+
<TraceRow label="Module" value={trace.moduleAvailable ? 'available' : 'missing'} />
|
|
41
|
+
<TraceRow label="Route" value={formatRoute(trace)} />
|
|
42
|
+
<TraceRow label="Page host" value={formatPageHost(trace)} />
|
|
43
|
+
<TraceRow label="Host renderer" value={formatPageHostRenderer(trace)} />
|
|
44
|
+
<TraceRow label="Surface" value={formatSurface(trace)} />
|
|
45
|
+
<TraceRow label="Data sources" value={formatList(trace.dataSourceIds)} />
|
|
46
|
+
</section>
|
|
47
|
+
<section className="grid gap-2">
|
|
48
|
+
<h2 className="text-[0.7rem] font-semibold uppercase text-slate-500">Views</h2>
|
|
49
|
+
{trace.views.length > 0 ? (
|
|
50
|
+
trace.views.map((view) => (
|
|
51
|
+
<TraceView key={view.id} view={view} />
|
|
52
|
+
))
|
|
53
|
+
) : (
|
|
54
|
+
<p className="rounded border border-slate-950/10 bg-slate-50 px-2 py-1 text-slate-500">
|
|
55
|
+
No resolved view tree.
|
|
56
|
+
</p>
|
|
57
|
+
)}
|
|
58
|
+
</section>
|
|
59
|
+
</div>
|
|
60
|
+
)
|
|
61
|
+
}
|
|
62
|
+
|
|
63
|
+
function TraceView({ view }: { readonly view: PresentationProjectionTraceView }) {
|
|
64
|
+
const rendererLabel = view.rendererResolved
|
|
65
|
+
? view.resolutionSource ?? 'resolved'
|
|
66
|
+
: 'missing'
|
|
67
|
+
|
|
68
|
+
return (
|
|
69
|
+
<div className="grid gap-1 rounded border border-slate-950/10 bg-slate-50 px-2 py-2">
|
|
70
|
+
<div className="flex flex-wrap items-center justify-between gap-2">
|
|
71
|
+
<span className="font-medium text-slate-950">{view.name}</span>
|
|
72
|
+
<span className="rounded bg-white px-1.5 py-0.5 text-[0.68rem] text-slate-600">
|
|
73
|
+
{rendererLabel}
|
|
74
|
+
</span>
|
|
75
|
+
</div>
|
|
76
|
+
<TraceRow label="Id" value={view.id} />
|
|
77
|
+
<TraceRow label="Role" value={view.semanticRole} />
|
|
78
|
+
<TraceRow label="Kind" value={view.kind} />
|
|
79
|
+
<TraceRow label="Component" value={formatOptional(view.componentKey)} />
|
|
80
|
+
<TraceRow label="Component role" value={formatOptional(view.componentRole)} />
|
|
81
|
+
<TraceRow label="Subject" value={formatOptional(view.subjectDataSourceId)} />
|
|
82
|
+
<TraceRow label="Data sources" value={formatList(view.dataSourceIds)} />
|
|
83
|
+
<TraceRow label="Fields" value={formatList(view.fieldIds)} />
|
|
84
|
+
<TraceRow label="Actions" value={String(view.actionCount)} />
|
|
85
|
+
<TraceRow
|
|
86
|
+
label="Regions"
|
|
87
|
+
value={view.regions
|
|
88
|
+
.map((region) => `${region.id}: ${formatList(region.viewIds)}`)
|
|
89
|
+
.join('; ') || 'none'}
|
|
90
|
+
/>
|
|
91
|
+
</div>
|
|
92
|
+
)
|
|
93
|
+
}
|
|
94
|
+
|
|
95
|
+
function TraceRow({
|
|
96
|
+
label,
|
|
97
|
+
value,
|
|
98
|
+
}: {
|
|
99
|
+
readonly label: string
|
|
100
|
+
readonly value: string
|
|
101
|
+
}) {
|
|
102
|
+
return (
|
|
103
|
+
<div className="grid grid-cols-[5.75rem_minmax(0,1fr)] gap-2">
|
|
104
|
+
<span className="text-slate-500">{label}</span>
|
|
105
|
+
<span className="break-words font-mono text-[0.7rem] text-slate-800">{value}</span>
|
|
106
|
+
</div>
|
|
107
|
+
)
|
|
108
|
+
}
|
|
109
|
+
|
|
110
|
+
function formatRoute({ route }: PresentationProjectionTrace) {
|
|
111
|
+
return route
|
|
112
|
+
? `${route.id} -> ${route.pageHostId} (${route.pathTemplate})`
|
|
113
|
+
: 'unmatched'
|
|
114
|
+
}
|
|
115
|
+
|
|
116
|
+
function formatPageHost({ pageHost }: PresentationProjectionTrace) {
|
|
117
|
+
return pageHost
|
|
118
|
+
? `${pageHost.id}; view=${formatOptional(pageHost.viewId)}; workspace=${formatOptional(pageHost.workspaceId)}`
|
|
119
|
+
: 'none'
|
|
120
|
+
}
|
|
121
|
+
|
|
122
|
+
function formatPageHostRenderer({ pageHostRenderer }: PresentationProjectionTrace) {
|
|
123
|
+
return pageHostRenderer
|
|
124
|
+
? `${formatOptional(pageHostRenderer.resolutionSource)}; key=${formatOptional(pageHostRenderer.rendererKey)}; componentRole=${formatOptional(pageHostRenderer.componentRole)}; viewRole=${formatOptional(pageHostRenderer.semanticRole)}; target=${formatOptional(pageHostRenderer.targetBindingSource)}`
|
|
125
|
+
: 'none'
|
|
126
|
+
}
|
|
127
|
+
|
|
128
|
+
function formatSurface({ surface }: PresentationProjectionTrace) {
|
|
129
|
+
return surface
|
|
130
|
+
? `${surface.id}; root=${formatOptional(surface.rootViewId)}; workspace=${formatOptional(surface.workspaceId)}`
|
|
131
|
+
: 'none'
|
|
132
|
+
}
|
|
133
|
+
|
|
134
|
+
function formatList(values: readonly string[]) {
|
|
135
|
+
return values.length > 0 ? values.join(', ') : 'none'
|
|
136
|
+
}
|
|
137
|
+
|
|
138
|
+
function formatOptional(value: string | null | undefined) {
|
|
139
|
+
return value && value.length > 0 ? value : 'none'
|
|
140
|
+
}
|
|
@@ -0,0 +1,48 @@
|
|
|
1
|
+
import type { PresentationDataSourceBinding } from '@cohesivesystems/presentation-core'
|
|
2
|
+
import { PresentationDataSourceBinder } from '@cohesivesystems/presentation-react'
|
|
3
|
+
import type { PresentationRendererRegistry } from '@cohesivesystems/presentation-react'
|
|
4
|
+
import type { PresentationSurface } from '@cohesivesystems/presentation-core'
|
|
5
|
+
import { PresentationSurfaceRenderer } from './presentation-surface-renderer'
|
|
6
|
+
|
|
7
|
+
export interface PresentationRoutedSurfaceHostProps<TContext = undefined> {
|
|
8
|
+
readonly bindings: readonly PresentationDataSourceBinding[]
|
|
9
|
+
readonly className?: string
|
|
10
|
+
readonly componentSet?: string
|
|
11
|
+
readonly contentClassName?: string
|
|
12
|
+
readonly context?: TContext
|
|
13
|
+
readonly rendererRegistry: PresentationRendererRegistry<TContext>
|
|
14
|
+
readonly surface: PresentationSurface | null
|
|
15
|
+
}
|
|
16
|
+
|
|
17
|
+
/**
|
|
18
|
+
* Standard route-level host for semantic presentation surfaces. It owns the
|
|
19
|
+
* coarse page shell only; the surface tree, data sources, and concrete controls
|
|
20
|
+
* are still projected by the presentation runtime.
|
|
21
|
+
*/
|
|
22
|
+
export function PresentationRoutedSurfaceHost<TContext = undefined>({
|
|
23
|
+
bindings,
|
|
24
|
+
className = 'min-h-screen bg-background px-4 py-5 text-slate-700',
|
|
25
|
+
componentSet,
|
|
26
|
+
contentClassName = 'mx-auto flex max-w-360 flex-col gap-5',
|
|
27
|
+
context,
|
|
28
|
+
rendererRegistry,
|
|
29
|
+
surface,
|
|
30
|
+
}: PresentationRoutedSurfaceHostProps<TContext>) {
|
|
31
|
+
return (
|
|
32
|
+
<div className={className}>
|
|
33
|
+
<main className={contentClassName}>
|
|
34
|
+
<PresentationDataSourceBinder bindings={bindings}>
|
|
35
|
+
{(dataSources) => (
|
|
36
|
+
<PresentationSurfaceRenderer
|
|
37
|
+
componentSet={componentSet}
|
|
38
|
+
context={context as TContext}
|
|
39
|
+
dataSources={dataSources}
|
|
40
|
+
rendererRegistry={rendererRegistry}
|
|
41
|
+
surface={surface}
|
|
42
|
+
/>
|
|
43
|
+
)}
|
|
44
|
+
</PresentationDataSourceBinder>
|
|
45
|
+
</main>
|
|
46
|
+
</div>
|
|
47
|
+
)
|
|
48
|
+
}
|
|
@@ -0,0 +1,102 @@
|
|
|
1
|
+
import type { ReactNode } from 'react'
|
|
2
|
+
|
|
3
|
+
import type {
|
|
4
|
+
PresentationActionComponentSystemComponents,
|
|
5
|
+
PresentationBadgeComponentSystemComponents,
|
|
6
|
+
PresentationCollectionChromeComponentSystemComponents,
|
|
7
|
+
PresentationCollectionComponentSystemComponents,
|
|
8
|
+
PresentationDataTableRenderer,
|
|
9
|
+
PresentationDocumentWorkspaceComponentSystemComponents,
|
|
10
|
+
PresentationFeedbackComponentSystemComponents,
|
|
11
|
+
PresentationFieldValueComponentSystemComponents,
|
|
12
|
+
PresentationFormComponentSystemComponents,
|
|
13
|
+
PresentationMetricComponentSystemComponents,
|
|
14
|
+
PresentationNavigationComponentSystemComponents,
|
|
15
|
+
PresentationProcessComponentSystemComponents,
|
|
16
|
+
PresentationPromptComponentSystemComponents,
|
|
17
|
+
PresentationRecordComponentSystemComponents,
|
|
18
|
+
PresentationSurfaceComponentSystemComponents,
|
|
19
|
+
PresentationTabsComponentSystemComponents,
|
|
20
|
+
PresentationViewChromeComponentSystemComponents,
|
|
21
|
+
} from './presentation-component-groups'
|
|
22
|
+
import type {
|
|
23
|
+
PresentationComponentSystem,
|
|
24
|
+
PresentationComponentSystemRoleGroups,
|
|
25
|
+
} from './presentation-component-system'
|
|
26
|
+
|
|
27
|
+
/**
|
|
28
|
+
* Loosest app-extension renderer contract for projected collection tables.
|
|
29
|
+
*
|
|
30
|
+
* The shared presentation runtime only treats the table as a component-system
|
|
31
|
+
* role. Concrete apps can narrow the props to their local table implementation
|
|
32
|
+
* while reusable renderers consume this package-level contract.
|
|
33
|
+
*/
|
|
34
|
+
export type PresentationShadcnDataTableRenderer = <TData extends object>(
|
|
35
|
+
props: any & { readonly __data?: TData },
|
|
36
|
+
) => ReactNode
|
|
37
|
+
|
|
38
|
+
/**
|
|
39
|
+
* Common shadcn-target component-system role set used by reusable presentation
|
|
40
|
+
* renderers. App-specific extension points remain generic so products can bind
|
|
41
|
+
* local table, tree-control, JSON-diff, and JSON-editor implementations without
|
|
42
|
+
* leaking those app types into the framework runtime.
|
|
43
|
+
*/
|
|
44
|
+
export type PresentationShadcnComponentSystemRoleGroups<
|
|
45
|
+
TDateTimeFilterValue = any,
|
|
46
|
+
TDataTableRenderer extends PresentationDataTableRenderer =
|
|
47
|
+
PresentationShadcnDataTableRenderer,
|
|
48
|
+
TDocumentWorkspaceTreeControlsProps extends object = any,
|
|
49
|
+
TJsonDocumentDiffProps extends object = any,
|
|
50
|
+
TJsonDocumentEditorProps extends object = any,
|
|
51
|
+
> = PresentationComponentSystemRoleGroups<
|
|
52
|
+
PresentationActionComponentSystemComponents,
|
|
53
|
+
PresentationBadgeComponentSystemComponents,
|
|
54
|
+
PresentationCollectionChromeComponentSystemComponents,
|
|
55
|
+
PresentationCollectionComponentSystemComponents<TDataTableRenderer>,
|
|
56
|
+
PresentationDocumentWorkspaceComponentSystemComponents<
|
|
57
|
+
TDocumentWorkspaceTreeControlsProps,
|
|
58
|
+
TJsonDocumentDiffProps,
|
|
59
|
+
TJsonDocumentEditorProps
|
|
60
|
+
>,
|
|
61
|
+
PresentationFieldValueComponentSystemComponents,
|
|
62
|
+
PresentationFeedbackComponentSystemComponents,
|
|
63
|
+
PresentationFormComponentSystemComponents<TDateTimeFilterValue>,
|
|
64
|
+
PresentationMetricComponentSystemComponents,
|
|
65
|
+
PresentationNavigationComponentSystemComponents,
|
|
66
|
+
PresentationProcessComponentSystemComponents,
|
|
67
|
+
PresentationPromptComponentSystemComponents,
|
|
68
|
+
PresentationRecordComponentSystemComponents,
|
|
69
|
+
PresentationSurfaceComponentSystemComponents,
|
|
70
|
+
PresentationTabsComponentSystemComponents,
|
|
71
|
+
PresentationViewChromeComponentSystemComponents
|
|
72
|
+
>
|
|
73
|
+
|
|
74
|
+
export type PresentationShadcnComponentSystem<
|
|
75
|
+
TDateTimeFilterValue = any,
|
|
76
|
+
TDataTableRenderer extends PresentationDataTableRenderer =
|
|
77
|
+
PresentationShadcnDataTableRenderer,
|
|
78
|
+
TDocumentWorkspaceTreeControlsProps extends object = any,
|
|
79
|
+
TJsonDocumentDiffProps extends object = any,
|
|
80
|
+
TJsonDocumentEditorProps extends object = any,
|
|
81
|
+
> = PresentationComponentSystem<
|
|
82
|
+
PresentationActionComponentSystemComponents,
|
|
83
|
+
PresentationBadgeComponentSystemComponents,
|
|
84
|
+
PresentationCollectionChromeComponentSystemComponents,
|
|
85
|
+
PresentationCollectionComponentSystemComponents<TDataTableRenderer>,
|
|
86
|
+
PresentationDocumentWorkspaceComponentSystemComponents<
|
|
87
|
+
TDocumentWorkspaceTreeControlsProps,
|
|
88
|
+
TJsonDocumentDiffProps,
|
|
89
|
+
TJsonDocumentEditorProps
|
|
90
|
+
>,
|
|
91
|
+
PresentationFieldValueComponentSystemComponents,
|
|
92
|
+
PresentationFeedbackComponentSystemComponents,
|
|
93
|
+
PresentationFormComponentSystemComponents<TDateTimeFilterValue>,
|
|
94
|
+
PresentationMetricComponentSystemComponents,
|
|
95
|
+
PresentationNavigationComponentSystemComponents,
|
|
96
|
+
PresentationProcessComponentSystemComponents,
|
|
97
|
+
PresentationPromptComponentSystemComponents,
|
|
98
|
+
PresentationRecordComponentSystemComponents,
|
|
99
|
+
PresentationSurfaceComponentSystemComponents,
|
|
100
|
+
PresentationTabsComponentSystemComponents,
|
|
101
|
+
PresentationViewChromeComponentSystemComponents
|
|
102
|
+
>
|