@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.
Files changed (262) hide show
  1. package/LICENSE +55 -0
  2. package/dist/document-workspace-surface-slot-renderers.d.ts +58 -0
  3. package/dist/document-workspace-surface-slot-renderers.d.ts.map +1 -0
  4. package/dist/document-workspace-surface-slot-renderers.js +206 -0
  5. package/dist/document-workspace-surface-slot-renderers.js.map +1 -0
  6. package/dist/index.d.ts +53 -0
  7. package/dist/index.d.ts.map +1 -0
  8. package/dist/index.js +53 -0
  9. package/dist/index.js.map +1 -0
  10. package/dist/navigation-shell-frame-renderer-registry.d.ts +8 -0
  11. package/dist/navigation-shell-frame-renderer-registry.d.ts.map +1 -0
  12. package/dist/navigation-shell-frame-renderer-registry.js +2 -0
  13. package/dist/navigation-shell-frame-renderer-registry.js.map +1 -0
  14. package/dist/navigation-shell-slot-renderer-registry.d.ts +9 -0
  15. package/dist/navigation-shell-slot-renderer-registry.d.ts.map +1 -0
  16. package/dist/navigation-shell-slot-renderer-registry.js +2 -0
  17. package/dist/navigation-shell-slot-renderer-registry.js.map +1 -0
  18. package/dist/page-host-unavailable-renderer.d.ts +10 -0
  19. package/dist/page-host-unavailable-renderer.d.ts.map +1 -0
  20. package/dist/page-host-unavailable-renderer.js +27 -0
  21. package/dist/page-host-unavailable-renderer.js.map +1 -0
  22. package/dist/presentation-action-group.d.ts +99 -0
  23. package/dist/presentation-action-group.d.ts.map +1 -0
  24. package/dist/presentation-action-group.js +214 -0
  25. package/dist/presentation-action-group.js.map +1 -0
  26. package/dist/presentation-badge-target-interpreter.d.ts +26 -0
  27. package/dist/presentation-badge-target-interpreter.d.ts.map +1 -0
  28. package/dist/presentation-badge-target-interpreter.js +17 -0
  29. package/dist/presentation-badge-target-interpreter.js.map +1 -0
  30. package/dist/presentation-component-groups.d.ts +968 -0
  31. package/dist/presentation-component-groups.d.ts.map +1 -0
  32. package/dist/presentation-component-groups.js +505 -0
  33. package/dist/presentation-component-groups.js.map +1 -0
  34. package/dist/presentation-component-system-diagnostics.d.ts +27 -0
  35. package/dist/presentation-component-system-diagnostics.d.ts.map +1 -0
  36. package/dist/presentation-component-system-diagnostics.js +399 -0
  37. package/dist/presentation-component-system-diagnostics.js.map +1 -0
  38. package/dist/presentation-component-system.d.ts +31 -0
  39. package/dist/presentation-component-system.d.ts.map +1 -0
  40. package/dist/presentation-component-system.js +61 -0
  41. package/dist/presentation-component-system.js.map +1 -0
  42. package/dist/presentation-icon-diagnostics.d.ts +12 -0
  43. package/dist/presentation-icon-diagnostics.d.ts.map +1 -0
  44. package/dist/presentation-icon-diagnostics.js +17 -0
  45. package/dist/presentation-icon-diagnostics.js.map +1 -0
  46. package/dist/presentation-icon-registry.d.ts +28 -0
  47. package/dist/presentation-icon-registry.d.ts.map +1 -0
  48. package/dist/presentation-icon-registry.js +80 -0
  49. package/dist/presentation-icon-registry.js.map +1 -0
  50. package/dist/presentation-projection-trace-panel.d.ts +10 -0
  51. package/dist/presentation-projection-trace-panel.d.ts.map +1 -0
  52. package/dist/presentation-projection-trace-panel.js +48 -0
  53. package/dist/presentation-projection-trace-panel.js.map +1 -0
  54. package/dist/presentation-routed-surface-host.d.ts +19 -0
  55. package/dist/presentation-routed-surface-host.d.ts.map +1 -0
  56. package/dist/presentation-routed-surface-host.js +12 -0
  57. package/dist/presentation-routed-surface-host.js.map +1 -0
  58. package/dist/presentation-shadcn-component-system.d.ts +22 -0
  59. package/dist/presentation-shadcn-component-system.d.ts.map +1 -0
  60. package/dist/presentation-shadcn-component-system.js +2 -0
  61. package/dist/presentation-shadcn-component-system.js.map +1 -0
  62. package/dist/presentation-standard-renderers.d.ts +168 -0
  63. package/dist/presentation-standard-renderers.d.ts.map +1 -0
  64. package/dist/presentation-standard-renderers.js +440 -0
  65. package/dist/presentation-standard-renderers.js.map +1 -0
  66. package/dist/presentation-surface-renderer.d.ts +23 -0
  67. package/dist/presentation-surface-renderer.d.ts.map +1 -0
  68. package/dist/presentation-surface-renderer.js +119 -0
  69. package/dist/presentation-surface-renderer.js.map +1 -0
  70. package/dist/presentation-value-renderers.d.ts +10 -0
  71. package/dist/presentation-value-renderers.d.ts.map +1 -0
  72. package/dist/presentation-value-renderers.js +14 -0
  73. package/dist/presentation-value-renderers.js.map +1 -0
  74. package/dist/process-task-icons.d.ts +49 -0
  75. package/dist/process-task-icons.d.ts.map +1 -0
  76. package/dist/process-task-icons.js +154 -0
  77. package/dist/process-task-icons.js.map +1 -0
  78. package/dist/projected-activity-state.d.ts +17 -0
  79. package/dist/projected-activity-state.d.ts.map +1 -0
  80. package/dist/projected-activity-state.js +22 -0
  81. package/dist/projected-activity-state.js.map +1 -0
  82. package/dist/projected-collection-action-runtime-diagnostics.d.ts +4 -0
  83. package/dist/projected-collection-action-runtime-diagnostics.d.ts.map +1 -0
  84. package/dist/projected-collection-action-runtime-diagnostics.js +9 -0
  85. package/dist/projected-collection-action-runtime-diagnostics.js.map +1 -0
  86. package/dist/projected-collection-view.d.ts +90 -0
  87. package/dist/projected-collection-view.d.ts.map +1 -0
  88. package/dist/projected-collection-view.js +532 -0
  89. package/dist/projected-collection-view.js.map +1 -0
  90. package/dist/projected-document-action-status-notices.d.ts +15 -0
  91. package/dist/projected-document-action-status-notices.d.ts.map +1 -0
  92. package/dist/projected-document-action-status-notices.js +33 -0
  93. package/dist/projected-document-action-status-notices.js.map +1 -0
  94. package/dist/projected-document-badges.d.ts +24 -0
  95. package/dist/projected-document-badges.d.ts.map +1 -0
  96. package/dist/projected-document-badges.js +53 -0
  97. package/dist/projected-document-badges.js.map +1 -0
  98. package/dist/projected-document-editor-surface.d.ts +46 -0
  99. package/dist/projected-document-editor-surface.d.ts.map +1 -0
  100. package/dist/projected-document-editor-surface.js +399 -0
  101. package/dist/projected-document-editor-surface.js.map +1 -0
  102. package/dist/projected-document-workspace-notices.d.ts +24 -0
  103. package/dist/projected-document-workspace-notices.d.ts.map +1 -0
  104. package/dist/projected-document-workspace-notices.js +14 -0
  105. package/dist/projected-document-workspace-notices.js.map +1 -0
  106. package/dist/projected-document-workspace-prompt-child-view-registry.d.ts +25 -0
  107. package/dist/projected-document-workspace-prompt-child-view-registry.d.ts.map +1 -0
  108. package/dist/projected-document-workspace-prompt-child-view-registry.js +41 -0
  109. package/dist/projected-document-workspace-prompt-child-view-registry.js.map +1 -0
  110. package/dist/projected-document-workspace-prompt-child-view-renderers.d.ts +32 -0
  111. package/dist/projected-document-workspace-prompt-child-view-renderers.d.ts.map +1 -0
  112. package/dist/projected-document-workspace-prompt-child-view-renderers.js +77 -0
  113. package/dist/projected-document-workspace-prompt-child-view-renderers.js.map +1 -0
  114. package/dist/projected-document-workspace-shell.d.ts +100 -0
  115. package/dist/projected-document-workspace-shell.d.ts.map +1 -0
  116. package/dist/projected-document-workspace-shell.js +153 -0
  117. package/dist/projected-document-workspace-shell.js.map +1 -0
  118. package/dist/projected-document-workspace.d.ts +39 -0
  119. package/dist/projected-document-workspace.d.ts.map +1 -0
  120. package/dist/projected-document-workspace.js +63 -0
  121. package/dist/projected-document-workspace.js.map +1 -0
  122. package/dist/projected-field-value-rendering.d.ts +94 -0
  123. package/dist/projected-field-value-rendering.d.ts.map +1 -0
  124. package/dist/projected-field-value-rendering.js +377 -0
  125. package/dist/projected-field-value-rendering.js.map +1 -0
  126. package/dist/projected-inline-list.d.ts +20 -0
  127. package/dist/projected-inline-list.d.ts.map +1 -0
  128. package/dist/projected-inline-list.js +149 -0
  129. package/dist/projected-inline-list.js.map +1 -0
  130. package/dist/projected-input-form.d.ts +143 -0
  131. package/dist/projected-input-form.d.ts.map +1 -0
  132. package/dist/projected-input-form.js +612 -0
  133. package/dist/projected-input-form.js.map +1 -0
  134. package/dist/projected-metric-dashboard.d.ts +26 -0
  135. package/dist/projected-metric-dashboard.d.ts.map +1 -0
  136. package/dist/projected-metric-dashboard.js +20 -0
  137. package/dist/projected-metric-dashboard.js.map +1 -0
  138. package/dist/projected-metric-strip.d.ts +20 -0
  139. package/dist/projected-metric-strip.d.ts.map +1 -0
  140. package/dist/projected-metric-strip.js +131 -0
  141. package/dist/projected-metric-strip.js.map +1 -0
  142. package/dist/projected-navigation-shell-view-host.d.ts +34 -0
  143. package/dist/projected-navigation-shell-view-host.d.ts.map +1 -0
  144. package/dist/projected-navigation-shell-view-host.js +75 -0
  145. package/dist/projected-navigation-shell-view-host.js.map +1 -0
  146. package/dist/projected-navigation-shell.d.ts +33 -0
  147. package/dist/projected-navigation-shell.d.ts.map +1 -0
  148. package/dist/projected-navigation-shell.js +112 -0
  149. package/dist/projected-navigation-shell.js.map +1 -0
  150. package/dist/projected-presentation-badges.d.ts +34 -0
  151. package/dist/projected-presentation-badges.d.ts.map +1 -0
  152. package/dist/projected-presentation-badges.js +22 -0
  153. package/dist/projected-presentation-badges.js.map +1 -0
  154. package/dist/projected-presentation-diagnostics.d.ts +10 -0
  155. package/dist/projected-presentation-diagnostics.d.ts.map +1 -0
  156. package/dist/projected-presentation-diagnostics.js +40 -0
  157. package/dist/projected-presentation-diagnostics.js.map +1 -0
  158. package/dist/projected-presentation-flow-layer.d.ts +33 -0
  159. package/dist/projected-presentation-flow-layer.d.ts.map +1 -0
  160. package/dist/projected-presentation-flow-layer.js +71 -0
  161. package/dist/projected-presentation-flow-layer.js.map +1 -0
  162. package/dist/projected-process-task-notices.d.ts +37 -0
  163. package/dist/projected-process-task-notices.d.ts.map +1 -0
  164. package/dist/projected-process-task-notices.js +225 -0
  165. package/dist/projected-process-task-notices.js.map +1 -0
  166. package/dist/projected-prompt-child-view-renderer.d.ts +101 -0
  167. package/dist/projected-prompt-child-view-renderer.d.ts.map +1 -0
  168. package/dist/projected-prompt-child-view-renderer.js +442 -0
  169. package/dist/projected-prompt-child-view-renderer.js.map +1 -0
  170. package/dist/projected-prompt-document-preview.d.ts +39 -0
  171. package/dist/projected-prompt-document-preview.d.ts.map +1 -0
  172. package/dist/projected-prompt-document-preview.js +50 -0
  173. package/dist/projected-prompt-document-preview.js.map +1 -0
  174. package/dist/projected-prompt-view.d.ts +35 -0
  175. package/dist/projected-prompt-view.d.ts.map +1 -0
  176. package/dist/projected-prompt-view.js +292 -0
  177. package/dist/projected-prompt-view.js.map +1 -0
  178. package/dist/projected-query-form.d.ts +56 -0
  179. package/dist/projected-query-form.d.ts.map +1 -0
  180. package/dist/projected-query-form.js +100 -0
  181. package/dist/projected-query-form.js.map +1 -0
  182. package/dist/projected-record-details.d.ts +20 -0
  183. package/dist/projected-record-details.d.ts.map +1 -0
  184. package/dist/projected-record-details.js +60 -0
  185. package/dist/projected-record-details.js.map +1 -0
  186. package/dist/projected-routed-surface-runtime.d.ts +86 -0
  187. package/dist/projected-routed-surface-runtime.d.ts.map +1 -0
  188. package/dist/projected-routed-surface-runtime.js +332 -0
  189. package/dist/projected-routed-surface-runtime.js.map +1 -0
  190. package/dist/projected-tabs-view.d.ts +21 -0
  191. package/dist/projected-tabs-view.d.ts.map +1 -0
  192. package/dist/projected-tabs-view.js +140 -0
  193. package/dist/projected-tabs-view.js.map +1 -0
  194. package/dist/projected-view-chrome.d.ts +15 -0
  195. package/dist/projected-view-chrome.d.ts.map +1 -0
  196. package/dist/projected-view-chrome.js +67 -0
  197. package/dist/projected-view-chrome.js.map +1 -0
  198. package/dist/projected-view-surface.d.ts +34 -0
  199. package/dist/projected-view-surface.d.ts.map +1 -0
  200. package/dist/projected-view-surface.js +40 -0
  201. package/dist/projected-view-surface.js.map +1 -0
  202. package/dist/standard-collection-chrome-slot-renderers.d.ts +26 -0
  203. package/dist/standard-collection-chrome-slot-renderers.d.ts.map +1 -0
  204. package/dist/standard-collection-chrome-slot-renderers.js +250 -0
  205. package/dist/standard-collection-chrome-slot-renderers.js.map +1 -0
  206. package/dist/standard-view-chrome-slot-renderers.d.ts +57 -0
  207. package/dist/standard-view-chrome-slot-renderers.d.ts.map +1 -0
  208. package/dist/standard-view-chrome-slot-renderers.js +614 -0
  209. package/dist/standard-view-chrome-slot-renderers.js.map +1 -0
  210. package/package.json +68 -0
  211. package/src/document-workspace-surface-slot-renderers.tsx +395 -0
  212. package/src/index.ts +53 -0
  213. package/src/navigation-shell-frame-renderer-registry.ts +29 -0
  214. package/src/navigation-shell-slot-renderer-registry.ts +46 -0
  215. package/src/page-host-unavailable-renderer.tsx +79 -0
  216. package/src/presentation-action-group.tsx +475 -0
  217. package/src/presentation-badge-target-interpreter.ts +54 -0
  218. package/src/presentation-component-groups.ts +2505 -0
  219. package/src/presentation-component-system-diagnostics.ts +848 -0
  220. package/src/presentation-component-system.ts +365 -0
  221. package/src/presentation-icon-diagnostics.ts +53 -0
  222. package/src/presentation-icon-registry.tsx +181 -0
  223. package/src/presentation-projection-trace-panel.tsx +140 -0
  224. package/src/presentation-routed-surface-host.tsx +48 -0
  225. package/src/presentation-shadcn-component-system.ts +102 -0
  226. package/src/presentation-standard-renderers.tsx +1290 -0
  227. package/src/presentation-surface-renderer.tsx +263 -0
  228. package/src/presentation-value-renderers.tsx +40 -0
  229. package/src/process-task-icons.tsx +258 -0
  230. package/src/projected-activity-state.tsx +63 -0
  231. package/src/projected-collection-action-runtime-diagnostics.ts +22 -0
  232. package/src/projected-collection-view.tsx +1273 -0
  233. package/src/projected-document-action-status-notices.tsx +66 -0
  234. package/src/projected-document-badges.tsx +134 -0
  235. package/src/projected-document-editor-surface.tsx +808 -0
  236. package/src/projected-document-workspace-notices.tsx +77 -0
  237. package/src/projected-document-workspace-prompt-child-view-registry.ts +99 -0
  238. package/src/projected-document-workspace-prompt-child-view-renderers.tsx +205 -0
  239. package/src/projected-document-workspace-shell.tsx +427 -0
  240. package/src/projected-document-workspace.tsx +216 -0
  241. package/src/projected-field-value-rendering.tsx +704 -0
  242. package/src/projected-inline-list.tsx +434 -0
  243. package/src/projected-input-form.tsx +1218 -0
  244. package/src/projected-metric-dashboard.tsx +106 -0
  245. package/src/projected-metric-strip.tsx +244 -0
  246. package/src/projected-navigation-shell-view-host.tsx +177 -0
  247. package/src/projected-navigation-shell.tsx +219 -0
  248. package/src/projected-presentation-badges.tsx +95 -0
  249. package/src/projected-presentation-diagnostics.tsx +120 -0
  250. package/src/projected-presentation-flow-layer.tsx +186 -0
  251. package/src/projected-process-task-notices.tsx +501 -0
  252. package/src/projected-prompt-child-view-renderer.tsx +698 -0
  253. package/src/projected-prompt-document-preview.tsx +197 -0
  254. package/src/projected-prompt-view.tsx +592 -0
  255. package/src/projected-query-form.tsx +286 -0
  256. package/src/projected-record-details.tsx +133 -0
  257. package/src/projected-routed-surface-runtime.tsx +713 -0
  258. package/src/projected-tabs-view.tsx +308 -0
  259. package/src/projected-view-chrome.tsx +148 -0
  260. package/src/projected-view-surface.tsx +131 -0
  261. package/src/standard-collection-chrome-slot-renderers.tsx +391 -0
  262. 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
+ >