@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,26 @@
1
+ import type { ReactNode } from 'react';
2
+ import { type PresentationDataSourceResolver, type ViewDefinition } from '@cohesivesystems/presentation-core';
3
+ import type { PresentationShadcnComponentSystem as PresentationComponentSystem } from './presentation-shadcn-component-system.js';
4
+ import { type ProjectedMetricValue } from './projected-metric-strip.js';
5
+ import { type ProjectedViewSurfaceChromeSlotRenderer } from './projected-view-surface.js';
6
+ export interface ProjectedMetricDashboardProps {
7
+ readonly action?: ReactNode;
8
+ readonly children?: ReactNode;
9
+ readonly className?: string;
10
+ readonly chromeAfterContentClassName?: string;
11
+ readonly chromeBeforeContentClassName?: string;
12
+ readonly chromeFooterClassName?: string;
13
+ readonly chromeHeaderClassName?: string;
14
+ readonly componentSystem: PresentationComponentSystem;
15
+ readonly contentClassName?: string;
16
+ readonly dataSourceResolver?: PresentationDataSourceResolver;
17
+ readonly description?: string;
18
+ readonly iconByFieldId?: Readonly<Record<string, ReactNode>>;
19
+ readonly metricValues?: Readonly<Record<string, ProjectedMetricValue>>;
20
+ readonly renderChromeSlot?: ProjectedViewSurfaceChromeSlotRenderer;
21
+ readonly title?: string;
22
+ readonly view?: ViewDefinition | null;
23
+ readonly viewId: string;
24
+ }
25
+ export declare function ProjectedMetricDashboard({ action, children, className, chromeAfterContentClassName, chromeBeforeContentClassName, chromeFooterClassName, chromeHeaderClassName, componentSystem, contentClassName, dataSourceResolver, description, iconByFieldId, metricValues, renderChromeSlot, title, view: viewOverride, viewId, }: ProjectedMetricDashboardProps): import("react/jsx-runtime").JSX.Element;
26
+ //# sourceMappingURL=projected-metric-dashboard.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"projected-metric-dashboard.d.ts","sourceRoot":"","sources":["../src/projected-metric-dashboard.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,OAAO,CAAA;AAEtC,OAAO,EAIL,KAAK,8BAA8B,EACnC,KAAK,cAAc,EACpB,MAAM,oCAAoC,CAAA;AAC3C,OAAO,KAAK,EACV,iCAAiC,IAAI,2BAA2B,EACjE,MAAM,wCAAwC,CAAA;AAE/C,OAAO,EAAwB,KAAK,oBAAoB,EAAE,MAAM,0BAA0B,CAAA;AAC1F,OAAO,EAEL,KAAK,sCAAsC,EAC5C,MAAM,0BAA0B,CAAA;AAGjC,MAAM,WAAW,6BAA6B;IAC5C,QAAQ,CAAC,MAAM,CAAC,EAAE,SAAS,CAAA;IAC3B,QAAQ,CAAC,QAAQ,CAAC,EAAE,SAAS,CAAA;IAC7B,QAAQ,CAAC,SAAS,CAAC,EAAE,MAAM,CAAA;IAC3B,QAAQ,CAAC,2BAA2B,CAAC,EAAE,MAAM,CAAA;IAC7C,QAAQ,CAAC,4BAA4B,CAAC,EAAE,MAAM,CAAA;IAC9C,QAAQ,CAAC,qBAAqB,CAAC,EAAE,MAAM,CAAA;IACvC,QAAQ,CAAC,qBAAqB,CAAC,EAAE,MAAM,CAAA;IACvC,QAAQ,CAAC,eAAe,EAAE,2BAA2B,CAAA;IACrD,QAAQ,CAAC,gBAAgB,CAAC,EAAE,MAAM,CAAA;IAClC,QAAQ,CAAC,kBAAkB,CAAC,EAAE,8BAA8B,CAAA;IAC5D,QAAQ,CAAC,WAAW,CAAC,EAAE,MAAM,CAAA;IAC7B,QAAQ,CAAC,aAAa,CAAC,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,SAAS,CAAC,CAAC,CAAA;IAC5D,QAAQ,CAAC,YAAY,CAAC,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,oBAAoB,CAAC,CAAC,CAAA;IACtE,QAAQ,CAAC,gBAAgB,CAAC,EAAE,sCAAsC,CAAA;IAClE,QAAQ,CAAC,KAAK,CAAC,EAAE,MAAM,CAAA;IACvB,QAAQ,CAAC,IAAI,CAAC,EAAE,cAAc,GAAG,IAAI,CAAA;IACrC,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAA;CACxB;AAED,wBAAgB,wBAAwB,CAAC,EACvC,MAAM,EACN,QAAQ,EACR,SAAS,EACT,2BAA2B,EAC3B,4BAA4B,EAC5B,qBAAqB,EACrB,qBAAqB,EACrB,eAAe,EACf,gBAA+B,EAC/B,kBAAkB,EAClB,WAAW,EACX,aAAa,EACb,YAAY,EACZ,gBAAgB,EAChB,KAAK,EACL,IAAI,EAAE,YAAY,EAClB,MAAM,GACP,EAAE,6BAA6B,2CAmC/B"}
@@ -0,0 +1,20 @@
1
+ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
+ import { findPresentationView, getPresentationViewProjectedFieldIds, isViewChromeSlotKind, } from '@cohesivesystems/presentation-core';
3
+ import { usePresentationModule } from '@cohesivesystems/presentation-react';
4
+ import { ProjectedMetricStrip } from './projected-metric-strip.js';
5
+ import { ProjectedViewSurface, } from './projected-view-surface.js';
6
+ import { viewChromeSlotKinds } from '@cohesivesystems/presentation-contracts';
7
+ export function ProjectedMetricDashboard({ action, children, className, chromeAfterContentClassName, chromeBeforeContentClassName, chromeFooterClassName, chromeHeaderClassName, componentSystem, contentClassName = 'grid gap-4', dataSourceResolver, description, iconByFieldId, metricValues, renderChromeSlot, title, view: viewOverride, viewId, }) {
8
+ const module = usePresentationModule();
9
+ const view = viewOverride ?? findPresentationView(module, viewId);
10
+ const renderLegacyMetricStrip = !renderChromeSlot || !hasMetricStripChromeSlot(view);
11
+ return (_jsxs(ProjectedViewSurface, { action: action, className: className, chromeAfterContentClassName: chromeAfterContentClassName, chromeBeforeContentClassName: chromeBeforeContentClassName, chromeFooterClassName: chromeFooterClassName, chromeHeaderClassName: chromeHeaderClassName, collapsible: view?.Chrome?.Collapsible ?? true, collapseLabel: view?.Name ?? 'summary', componentSystem: componentSystem, contentClassName: contentClassName, description: description, renderChromeSlot: renderChromeSlot, title: title, view: view, children: [renderLegacyMetricStrip ? (_jsx(ProjectedMetricStrip, { componentSystem: componentSystem, dataSourceResolver: dataSourceResolver, fieldIds: readMetricFieldIds(view), iconByFieldId: iconByFieldId, values: metricValues, viewId: viewId })) : null, children] }));
12
+ }
13
+ function readMetricFieldIds(view) {
14
+ const metricSlot = view?.Chrome?.Slots?.find((slot) => isViewChromeSlotKind(slot, viewChromeSlotKinds.metricStrip));
15
+ return metricSlot?.FieldIds ?? (view ? getPresentationViewProjectedFieldIds(view) : undefined);
16
+ }
17
+ function hasMetricStripChromeSlot(view) {
18
+ return view?.Chrome?.Slots.some((slot) => isViewChromeSlotKind(slot, viewChromeSlotKinds.metricStrip)) ?? false;
19
+ }
20
+ //# sourceMappingURL=projected-metric-dashboard.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"projected-metric-dashboard.js","sourceRoot":"","sources":["../src/projected-metric-dashboard.tsx"],"names":[],"mappings":";AAEA,OAAO,EACL,oBAAoB,EACpB,oCAAoC,EACpC,oBAAoB,GAGrB,MAAM,oCAAoC,CAAA;AAI3C,OAAO,EAAE,qBAAqB,EAAE,MAAM,qCAAqC,CAAA;AAC3E,OAAO,EAAE,oBAAoB,EAA6B,MAAM,0BAA0B,CAAA;AAC1F,OAAO,EACL,oBAAoB,GAErB,MAAM,0BAA0B,CAAA;AACjC,OAAO,EAAE,mBAAmB,EAAE,MAAM,yCAAyC,CAAA;AAsB7E,MAAM,UAAU,wBAAwB,CAAC,EACvC,MAAM,EACN,QAAQ,EACR,SAAS,EACT,2BAA2B,EAC3B,4BAA4B,EAC5B,qBAAqB,EACrB,qBAAqB,EACrB,eAAe,EACf,gBAAgB,GAAG,YAAY,EAC/B,kBAAkB,EAClB,WAAW,EACX,aAAa,EACb,YAAY,EACZ,gBAAgB,EAChB,KAAK,EACL,IAAI,EAAE,YAAY,EAClB,MAAM,GACwB;IAC9B,MAAM,MAAM,GAAG,qBAAqB,EAAE,CAAA;IACtC,MAAM,IAAI,GAAG,YAAY,IAAI,oBAAoB,CAAiB,MAAM,EAAE,MAAM,CAAC,CAAA;IACjF,MAAM,uBAAuB,GAAG,CAAC,gBAAgB,IAAI,CAAC,wBAAwB,CAAC,IAAI,CAAC,CAAA;IAEpF,OAAO,CACL,MAAC,oBAAoB,IACnB,MAAM,EAAE,MAAM,EACd,SAAS,EAAE,SAAS,EACpB,2BAA2B,EAAE,2BAA2B,EACxD,4BAA4B,EAAE,4BAA4B,EAC1D,qBAAqB,EAAE,qBAAqB,EAC5C,qBAAqB,EAAE,qBAAqB,EAC5C,WAAW,EAAE,IAAI,EAAE,MAAM,EAAE,WAAW,IAAI,IAAI,EAC9C,aAAa,EAAE,IAAI,EAAE,IAAI,IAAI,SAAS,EACtC,eAAe,EAAE,eAAe,EAChC,gBAAgB,EAAE,gBAAgB,EAClC,WAAW,EAAE,WAAW,EACxB,gBAAgB,EAAE,gBAAgB,EAClC,KAAK,EAAE,KAAK,EACZ,IAAI,EAAE,IAAI,aAET,uBAAuB,CAAC,CAAC,CAAC,CACzB,KAAC,oBAAoB,IACnB,eAAe,EAAE,eAAe,EAChC,kBAAkB,EAAE,kBAAkB,EACtC,QAAQ,EAAE,kBAAkB,CAAC,IAAI,CAAC,EAClC,aAAa,EAAE,aAAa,EAC5B,MAAM,EAAE,YAAY,EACpB,MAAM,EAAE,MAAM,GACd,CACH,CAAC,CAAC,CAAC,IAAI,EACP,QAAQ,IACY,CACxB,CAAA;AACH,CAAC;AAED,SAAS,kBAAkB,CAAC,IAA2B;IACrD,MAAM,UAAU,GAAG,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,IAAI,CAC1C,CAAC,IAAI,EAAE,EAAE,CAAC,oBAAoB,CAAC,IAAI,EAAE,mBAAmB,CAAC,WAAW,CAAC,CACtE,CAAA;IACD,OAAO,UAAU,EAAE,QAAQ,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,oCAAoC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAA;AAChG,CAAC;AAED,SAAS,wBAAwB,CAAC,IAA2B;IAC3D,OAAO,IAAI,EAAE,MAAM,EAAE,KAAK,CAAC,IAAI,CAAC,CAAC,IAAI,EAAE,EAAE,CACvC,oBAAoB,CAAC,IAAI,EAAE,mBAAmB,CAAC,WAAW,CAAC,CAAC,IAAI,KAAK,CAAA;AACzE,CAAC"}
@@ -0,0 +1,20 @@
1
+ import { type ReactNode } from 'react';
2
+ import { type PresentationDataSourceResolver } from '@cohesivesystems/presentation-core';
3
+ import type { PresentationShadcnComponentSystem as PresentationComponentSystem } from './presentation-shadcn-component-system.js';
4
+ export interface ProjectedMetricValue {
5
+ readonly icon?: ReactNode;
6
+ readonly label?: string;
7
+ readonly value: ReactNode;
8
+ readonly variant?: 'number' | 'text';
9
+ }
10
+ export interface ProjectedMetricStripProps {
11
+ readonly className?: string;
12
+ readonly componentSystem: PresentationComponentSystem;
13
+ readonly dataSourceResolver?: PresentationDataSourceResolver;
14
+ readonly fieldIds?: readonly string[];
15
+ readonly iconByFieldId?: Readonly<Record<string, ReactNode>>;
16
+ readonly values?: Readonly<Record<string, ProjectedMetricValue>>;
17
+ readonly viewId?: string;
18
+ }
19
+ export declare function ProjectedMetricStrip({ className, componentSystem, dataSourceResolver, fieldIds, iconByFieldId, values, viewId, }: ProjectedMetricStripProps): ReactNode;
20
+ //# sourceMappingURL=projected-metric-strip.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"projected-metric-strip.d.ts","sourceRoot":"","sources":["../src/projected-metric-strip.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAqB,KAAK,SAAS,EAAE,MAAM,OAAO,CAAA;AAEzD,OAAO,EAIL,KAAK,8BAA8B,EAGpC,MAAM,oCAAoC,CAAA;AAO3C,OAAO,KAAK,EACV,iCAAiC,IAAI,2BAA2B,EACjE,MAAM,wCAAwC,CAAA;AAO/C,MAAM,WAAW,oBAAoB;IACnC,QAAQ,CAAC,IAAI,CAAC,EAAE,SAAS,CAAA;IACzB,QAAQ,CAAC,KAAK,CAAC,EAAE,MAAM,CAAA;IACvB,QAAQ,CAAC,KAAK,EAAE,SAAS,CAAA;IACzB,QAAQ,CAAC,OAAO,CAAC,EAAE,QAAQ,GAAG,MAAM,CAAA;CACrC;AAED,MAAM,WAAW,yBAAyB;IACxC,QAAQ,CAAC,SAAS,CAAC,EAAE,MAAM,CAAA;IAC3B,QAAQ,CAAC,eAAe,EAAE,2BAA2B,CAAA;IACrD,QAAQ,CAAC,kBAAkB,CAAC,EAAE,8BAA8B,CAAA;IAC5D,QAAQ,CAAC,QAAQ,CAAC,EAAE,SAAS,MAAM,EAAE,CAAA;IACrC,QAAQ,CAAC,aAAa,CAAC,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,SAAS,CAAC,CAAC,CAAA;IAC5D,QAAQ,CAAC,MAAM,CAAC,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,oBAAoB,CAAC,CAAC,CAAA;IAChE,QAAQ,CAAC,MAAM,CAAC,EAAE,MAAM,CAAA;CACzB;AAID,wBAAgB,oBAAoB,CAAC,EACnC,SAAS,EACT,eAAe,EACf,kBAAkB,EAClB,QAAQ,EACR,aAAa,EACb,MAAM,EACN,MAAM,GACP,EAAE,yBAAyB,aA8C3B"}
@@ -0,0 +1,131 @@
1
+ import { jsx as _jsx } from "react/jsx-runtime";
2
+ import { Fragment, useMemo } from 'react';
3
+ import { findPresentationField, findPresentationView, getPresentationViewProjectedFieldIds, } from '@cohesivesystems/presentation-core';
4
+ import { renderPresentationIcon, } from './presentation-icon-registry.js';
5
+ import { projectPresentationIconDiagnostics, } from './presentation-icon-diagnostics.js';
6
+ import { usePresentationModule, useRegisterPresentationProjectionDiagnostics, } from '@cohesivesystems/presentation-react';
7
+ import { fieldDisplayKinds } from '@cohesivesystems/presentation-contracts';
8
+ const emptyMetricValues = {};
9
+ export function ProjectedMetricStrip({ className, componentSystem, dataSourceResolver, fieldIds, iconByFieldId, values, viewId, }) {
10
+ const module = usePresentationModule();
11
+ const resolvedValues = values ?? emptyMetricValues;
12
+ const view = viewId ? findPresentationView(module, viewId) : null;
13
+ const items = useMemo(() => createMetricItems(module, view, resolvedValues, fieldIds, dataSourceResolver, iconByFieldId), [dataSourceResolver, fieldIds, iconByFieldId, module, resolvedValues, view]);
14
+ const iconDiagnosticSource = `projected-metric-strip-icons:${view?.Id ?? viewId ?? 'adhoc'}`;
15
+ const iconDiagnostics = useMemo(() => projectPresentationIconDiagnostics({
16
+ icons: resolveMetricIconSubjects(module, view, resolvedValues, fieldIds),
17
+ module,
18
+ source: iconDiagnosticSource,
19
+ surfaceId: view?.Id ?? viewId,
20
+ surfaceName: view?.Name,
21
+ }), [
22
+ fieldIds,
23
+ iconDiagnosticSource,
24
+ module,
25
+ resolvedValues,
26
+ view,
27
+ viewId,
28
+ ]);
29
+ useRegisterPresentationProjectionDiagnostics(iconDiagnosticSource, iconDiagnostics);
30
+ if (items.length === 0) {
31
+ return null;
32
+ }
33
+ return componentSystem.metrics.MetricStrip({
34
+ children: items.map((item) => _jsx(Fragment, { children: componentSystem.metrics.MetricItem({
35
+ icon: item.icon,
36
+ id: item.id,
37
+ label: item.label,
38
+ value: item.value,
39
+ variant: item.variant,
40
+ }) }, item.id)),
41
+ className,
42
+ });
43
+ }
44
+ function createMetricItems(module, view, values, fieldIds, dataSourceResolver, iconByFieldId) {
45
+ const projectedFieldIds = resolveMetricFieldIds(view, values, fieldIds);
46
+ const orderedFieldIds = projectedFieldIds.length > 0 ? projectedFieldIds : Object.keys(values);
47
+ return orderedFieldIds.flatMap((fieldId) => {
48
+ const field = findPresentationField(module, fieldId);
49
+ const value = resolveMetricValue(module, fieldId, field, values[fieldId], dataSourceResolver, iconByFieldId);
50
+ if (!value) {
51
+ return [];
52
+ }
53
+ return [{
54
+ ...value,
55
+ id: fieldId,
56
+ label: value.label ?? field?.Label ?? fieldId,
57
+ variant: value.variant ?? 'number',
58
+ }];
59
+ });
60
+ }
61
+ function resolveMetricValue(module, fieldId, field, value, dataSourceResolver, iconByFieldId) {
62
+ if (!value) {
63
+ return createMetricValue(module, fieldId, field, dataSourceResolver, iconByFieldId);
64
+ }
65
+ return {
66
+ ...value,
67
+ icon: value.icon ?? iconByFieldId?.[fieldId] ?? renderMetricFieldIcon(module, field),
68
+ };
69
+ }
70
+ function createMetricValue(module, fieldId, field, dataSourceResolver, iconByFieldId) {
71
+ const value = readMetricFieldValue(field, dataSourceResolver);
72
+ if (value === undefined) {
73
+ return null;
74
+ }
75
+ return {
76
+ icon: iconByFieldId?.[fieldId] ?? renderMetricFieldIcon(module, field),
77
+ value: renderMetricValue(value),
78
+ variant: isTextMetric(field) ? 'text' : 'number',
79
+ };
80
+ }
81
+ function resolveMetricIconSubjects(module, view, values, fieldIds) {
82
+ return resolveMetricFieldIds(view, values, fieldIds).flatMap((fieldId) => {
83
+ const field = findPresentationField(module, fieldId);
84
+ if (!field?.Icon) {
85
+ return [];
86
+ }
87
+ return [{
88
+ details: {
89
+ fieldId,
90
+ },
91
+ icon: field.Icon,
92
+ id: fieldId,
93
+ kind: 'metric-field-icon',
94
+ label: field.Label,
95
+ }];
96
+ });
97
+ }
98
+ function resolveMetricFieldIds(view, values, fieldIds) {
99
+ return fieldIds ?? (view ? getPresentationViewProjectedFieldIds(view) : Object.keys(values));
100
+ }
101
+ function renderMetricFieldIcon(module, field) {
102
+ return renderPresentationIcon({
103
+ className: 'size-4',
104
+ icon: field?.Icon,
105
+ module,
106
+ });
107
+ }
108
+ function readMetricFieldValue(field, dataSourceResolver) {
109
+ if (!field || !dataSourceResolver) {
110
+ return undefined;
111
+ }
112
+ const source = field.Source;
113
+ if (source) {
114
+ const sourceValue = dataSourceResolver.readPath(source.DataSourceId, source.FieldPath);
115
+ if (sourceValue !== undefined) {
116
+ return sourceValue;
117
+ }
118
+ }
119
+ const [root, ...path] = field.Field.split('.');
120
+ return root ? dataSourceResolver.readPath(root, path.join('.')) : undefined;
121
+ }
122
+ function renderMetricValue(value) {
123
+ if (value === null || value === undefined || value === '') {
124
+ return 'none';
125
+ }
126
+ return String(value);
127
+ }
128
+ function isTextMetric(field) {
129
+ return field?.DisplayKind === fieldDisplayKinds.text;
130
+ }
131
+ //# sourceMappingURL=projected-metric-strip.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"projected-metric-strip.js","sourceRoot":"","sources":["../src/projected-metric-strip.tsx"],"names":[],"mappings":"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"}
@@ -0,0 +1,34 @@
1
+ import { type PresentationDataSourceBinding, type PresentationDataSourceBindingProjectionRegistry, type PresentationDataSourceProjectionContext, type PresentationDataSourceTargetInterpretation } from '@cohesivesystems/presentation-core';
2
+ import type { PresentationRendererRegistry } from '@cohesivesystems/presentation-react';
3
+ import type { NavigationShellRegionDefinition } from '@cohesivesystems/presentation-contracts';
4
+ export interface ProjectedNavigationShellViewHostProps<TContext> {
5
+ readonly bindings: readonly PresentationDataSourceBinding[];
6
+ readonly componentSet?: string;
7
+ readonly context: TContext;
8
+ readonly region: NavigationShellRegionDefinition;
9
+ readonly rendererRegistry: PresentationRendererRegistry<TContext>;
10
+ }
11
+ export interface ProjectedNavigationShellRegionViewProps<TContext> {
12
+ readonly context: TContext;
13
+ readonly dataSourceBindingRegistry: PresentationDataSourceBindingProjectionRegistry;
14
+ readonly componentSet?: string;
15
+ readonly diagnosticsSourceId?: string;
16
+ readonly projectionContext?: PresentationDataSourceProjectionContext;
17
+ readonly region: NavigationShellRegionDefinition;
18
+ readonly rendererRegistry: PresentationRendererRegistry<TContext>;
19
+ readonly targetInterpretation?: PresentationDataSourceTargetInterpretation;
20
+ }
21
+ /**
22
+ * Projects a presentation view referenced by a navigation shell region.
23
+ *
24
+ * Shell regions are persistent app chrome, but their bodies can still be
25
+ * ordinary presentation views with the same data-source and renderer
26
+ * interpretation model used by routed surfaces.
27
+ */
28
+ export declare function ProjectedNavigationShellViewHost<TContext>({ bindings, componentSet, context, region, rendererRegistry, }: ProjectedNavigationShellViewHostProps<TContext>): import("react/jsx-runtime").JSX.Element;
29
+ /**
30
+ * Projects a shell region ViewId with the same data-source binding and
31
+ * diagnostics pipeline used by routed presentation surfaces.
32
+ */
33
+ export declare function ProjectedNavigationShellRegionView<TContext>({ componentSet, context, dataSourceBindingRegistry, diagnosticsSourceId, projectionContext, region, rendererRegistry, targetInterpretation, }: ProjectedNavigationShellRegionViewProps<TContext>): import("react/jsx-runtime").JSX.Element;
34
+ //# sourceMappingURL=projected-navigation-shell-view-host.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"projected-navigation-shell-view-host.d.ts","sourceRoot":"","sources":["../src/projected-navigation-shell-view-host.tsx"],"names":[],"mappings":"AAEA,OAAO,EAML,KAAK,6BAA6B,EAClC,KAAK,+CAA+C,EACpD,KAAK,uCAAuC,EAC5C,KAAK,0CAA0C,EAEhD,MAAM,oCAAoC,CAAA;AAM3C,OAAO,KAAK,EACV,4BAA4B,EAC7B,MAAM,qCAAqC,CAAA;AAG5C,OAAO,KAAK,EACV,+BAA+B,EAChC,MAAM,yCAAyC,CAAA;AAEhD,MAAM,WAAW,qCAAqC,CAAC,QAAQ;IAC7D,QAAQ,CAAC,QAAQ,EAAE,SAAS,6BAA6B,EAAE,CAAA;IAC3D,QAAQ,CAAC,YAAY,CAAC,EAAE,MAAM,CAAA;IAC9B,QAAQ,CAAC,OAAO,EAAE,QAAQ,CAAA;IAC1B,QAAQ,CAAC,MAAM,EAAE,+BAA+B,CAAA;IAChD,QAAQ,CAAC,gBAAgB,EAAE,4BAA4B,CAAC,QAAQ,CAAC,CAAA;CAClE;AAED,MAAM,WAAW,uCAAuC,CAAC,QAAQ;IAC/D,QAAQ,CAAC,OAAO,EAAE,QAAQ,CAAA;IAC1B,QAAQ,CAAC,yBAAyB,EAAE,+CAA+C,CAAA;IACnF,QAAQ,CAAC,YAAY,CAAC,EAAE,MAAM,CAAA;IAC9B,QAAQ,CAAC,mBAAmB,CAAC,EAAE,MAAM,CAAA;IACrC,QAAQ,CAAC,iBAAiB,CAAC,EAAE,uCAAuC,CAAA;IACpE,QAAQ,CAAC,MAAM,EAAE,+BAA+B,CAAA;IAChD,QAAQ,CAAC,gBAAgB,EAAE,4BAA4B,CAAC,QAAQ,CAAC,CAAA;IACjE,QAAQ,CAAC,oBAAoB,CAAC,EAAE,0CAA0C,CAAA;CAC3E;AAED;;;;;;GAMG;AACH,wBAAgB,gCAAgC,CAAC,QAAQ,EAAE,EACzD,QAAQ,EACR,YAAY,EACZ,OAAO,EACP,MAAM,EACN,gBAAgB,GACjB,EAAE,qCAAqC,CAAC,QAAQ,CAAC,2CA+BjD;AAED;;;GAGG;AACH,wBAAgB,kCAAkC,CAAC,QAAQ,EAAE,EAC3D,YAAY,EACZ,OAAO,EACP,yBAAyB,EACzB,mBAAmB,EACnB,iBAAiE,EACjE,MAAM,EACN,gBAAgB,EAChB,oBAAoB,GACrB,EAAE,uCAAuC,CAAC,QAAQ,CAAC,2CAiEnD"}
@@ -0,0 +1,75 @@
1
+ import { jsx as _jsx } from "react/jsx-runtime";
2
+ import { useMemo } from 'react';
3
+ import { createPresentationSurfaceFromRootView, findPresentationView, getPresentationSurfaceDataSourceIds, projectPresentationDataSourceBindings, projectPresentationDataSourceCoverageDiagnostics, } from '@cohesivesystems/presentation-core';
4
+ import { PresentationDataSourceBinder, usePresentationModule, useRegisterPresentationProjectionDiagnostics, } from '@cohesivesystems/presentation-react';
5
+ import { PresentationSurfaceRenderer } from './presentation-surface-renderer.js';
6
+ import { ProjectedStatusBlock } from './projected-activity-state.js';
7
+ /**
8
+ * Projects a presentation view referenced by a navigation shell region.
9
+ *
10
+ * Shell regions are persistent app chrome, but their bodies can still be
11
+ * ordinary presentation views with the same data-source and renderer
12
+ * interpretation model used by routed surfaces.
13
+ */
14
+ export function ProjectedNavigationShellViewHost({ bindings, componentSet, context, region, rendererRegistry, }) {
15
+ const module = usePresentationModule();
16
+ const viewId = region.ViewId ?? null;
17
+ const rootView = viewId ? findPresentationView(module, viewId) : null;
18
+ const surface = useMemo(() => rootView
19
+ ? createPresentationSurfaceFromRootView(rootView, {
20
+ id: region.Id,
21
+ })
22
+ : null, [region.Id, rootView]);
23
+ if (!viewId) {
24
+ return _jsx(ProjectedStatusBlock, { label: `Shell region '${region.Id}' has no presentation view.` });
25
+ }
26
+ return (_jsx(PresentationDataSourceBinder, { bindings: bindings, children: (dataSources) => (_jsx(PresentationSurfaceRenderer, { componentSet: componentSet, context: context, dataSources: dataSources, rendererRegistry: rendererRegistry, surface: surface })) }));
27
+ }
28
+ /**
29
+ * Projects a shell region ViewId with the same data-source binding and
30
+ * diagnostics pipeline used by routed presentation surfaces.
31
+ */
32
+ export function ProjectedNavigationShellRegionView({ componentSet, context, dataSourceBindingRegistry, diagnosticsSourceId, projectionContext = defaultNavigationShellRegionProjectionContext, region, rendererRegistry, targetInterpretation, }) {
33
+ const module = usePresentationModule();
34
+ const rootView = region.ViewId
35
+ ? findPresentationView(module, region.ViewId)
36
+ : null;
37
+ const surface = useMemo(() => rootView
38
+ ? createPresentationSurfaceFromRootView(rootView, { id: region.Id })
39
+ : null, [region.Id, rootView]);
40
+ const dataSourceIds = useMemo(() => getPresentationSurfaceDataSourceIds(module, surface), [module, surface]);
41
+ const bindings = useMemo(() => projectPresentationDataSourceBindings({
42
+ context: projectionContext,
43
+ dataSourceIds,
44
+ module,
45
+ registry: dataSourceBindingRegistry,
46
+ }), [
47
+ dataSourceBindingRegistry,
48
+ dataSourceIds,
49
+ module,
50
+ projectionContext,
51
+ ]);
52
+ const sourceId = diagnosticsSourceId ?? `navigation-shell-data-sources:${region.Id}`;
53
+ const dataSourceCoverageDiagnostics = useMemo(() => projectPresentationDataSourceCoverageDiagnostics({
54
+ bindings,
55
+ dataSourceIds,
56
+ module,
57
+ routeParameters: projectionContext.routeParameters,
58
+ sourceId,
59
+ targetInterpretation,
60
+ }), [
61
+ bindings,
62
+ dataSourceIds,
63
+ module,
64
+ projectionContext.routeParameters,
65
+ sourceId,
66
+ targetInterpretation,
67
+ ]);
68
+ useRegisterPresentationProjectionDiagnostics(sourceId, dataSourceCoverageDiagnostics);
69
+ return (_jsx(ProjectedNavigationShellViewHost, { bindings: bindings, componentSet: componentSet, context: context, region: region, rendererRegistry: rendererRegistry }));
70
+ }
71
+ const defaultNavigationShellRegionProjectionContext = {
72
+ routeParameters: {},
73
+ workspaceId: null,
74
+ };
75
+ //# sourceMappingURL=projected-navigation-shell-view-host.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"projected-navigation-shell-view-host.js","sourceRoot":"","sources":["../src/projected-navigation-shell-view-host.tsx"],"names":[],"mappings":"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"}
@@ -0,0 +1,33 @@
1
+ import { type ReactNode } from 'react';
2
+ import { type NavigationShellFrameRendererRegistry } from './navigation-shell-frame-renderer-registry.js';
3
+ import type { PresentationShadcnComponentSystem as PresentationComponentSystem } from './presentation-shadcn-component-system.js';
4
+ import type { PresentationDesignSystem } from '@cohesivesystems/presentation-tailwind';
5
+ import { type NavigationShellSlotRendererRegistry } from './navigation-shell-slot-renderer-registry.js';
6
+ import type { NavigationDefinition, NavigationNodeDefinition, NavigationShellRegionDefinition } from '@cohesivesystems/presentation-contracts';
7
+ export interface ProjectedNavigationShellProps {
8
+ readonly activePath: string;
9
+ readonly children: ReactNode;
10
+ readonly componentSystem: PresentationComponentSystem;
11
+ readonly defaultComponentSystem: PresentationComponentSystem;
12
+ readonly designSystem: PresentationDesignSystem;
13
+ readonly frameRendererRegistry?: NavigationShellFrameRendererRegistry;
14
+ readonly isNodeIconSupported?: (icon: string) => boolean;
15
+ readonly isShellRegionComponentBound?: (componentKey: string, region: NavigationShellRegionDefinition) => boolean;
16
+ readonly isShellRegionComponentTargetBound?: (region: NavigationShellRegionDefinition) => boolean;
17
+ readonly isShellRegionSupported?: (region: NavigationShellRegionDefinition) => boolean;
18
+ readonly navigation: NavigationDefinition;
19
+ readonly renderNodeIcon?: (node: NavigationNodeDefinition) => ReactNode;
20
+ readonly renderShellIcon?: (icon: string) => ReactNode;
21
+ readonly renderShellRegion?: (region: NavigationShellRegionDefinition) => ReactNode;
22
+ readonly slotRendererRegistry?: NavigationShellSlotRendererRegistry;
23
+ readonly supportedSlotPlacements?: readonly string[];
24
+ }
25
+ /**
26
+ * Interprets a navigation shell from the presentation/navigation IR.
27
+ *
28
+ * The shell frame owns generic concerns such as brand chrome, primary
29
+ * navigation, placement slots, and the routed content slot. App-specific
30
+ * integrations remain attached through icon and shell-region renderers.
31
+ */
32
+ export declare function ProjectedNavigationShell({ activePath, children, componentSystem, defaultComponentSystem, designSystem, isNodeIconSupported, isShellRegionComponentBound, isShellRegionComponentTargetBound, isShellRegionSupported, navigation, renderNodeIcon, renderShellIcon, renderShellRegion, frameRendererRegistry, slotRendererRegistry, supportedSlotPlacements, }: ProjectedNavigationShellProps): ReactNode;
33
+ //# sourceMappingURL=projected-navigation-shell.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"projected-navigation-shell.d.ts","sourceRoot":"","sources":["../src/projected-navigation-shell.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,SAAS,EAAwB,MAAM,OAAO,CAAA;AAQ5D,OAAO,EAGL,KAAK,oCAAoC,EAC1C,MAAM,4CAA4C,CAAA;AAMnD,OAAO,KAAK,EACV,iCAAiC,IAAI,2BAA2B,EACjE,MAAM,wCAAwC,CAAA;AAK/C,OAAO,KAAK,EAAE,wBAAwB,EAAE,MAAM,wCAAwC,CAAA;AACtF,OAAO,EAGL,KAAK,mCAAmC,EACzC,MAAM,2CAA2C,CAAA;AAWlD,OAAO,KAAK,EACV,oBAAoB,EACpB,wBAAwB,EACxB,+BAA+B,EAEhC,MAAM,yCAAyC,CAAA;AAEhD,MAAM,WAAW,6BAA6B;IAC5C,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAA;IAC3B,QAAQ,CAAC,QAAQ,EAAE,SAAS,CAAA;IAC5B,QAAQ,CAAC,eAAe,EAAE,2BAA2B,CAAA;IACrD,QAAQ,CAAC,sBAAsB,EAAE,2BAA2B,CAAA;IAC5D,QAAQ,CAAC,YAAY,EAAE,wBAAwB,CAAA;IAC/C,QAAQ,CAAC,qBAAqB,CAAC,EAAE,oCAAoC,CAAA;IACrE,QAAQ,CAAC,mBAAmB,CAAC,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,OAAO,CAAA;IACxD,QAAQ,CAAC,2BAA2B,CAAC,EAAE,CACrC,YAAY,EAAE,MAAM,EACpB,MAAM,EAAE,+BAA+B,KACpC,OAAO,CAAA;IACZ,QAAQ,CAAC,iCAAiC,CAAC,EAAE,CAC3C,MAAM,EAAE,+BAA+B,KACpC,OAAO,CAAA;IACZ,QAAQ,CAAC,sBAAsB,CAAC,EAAE,CAAC,MAAM,EAAE,+BAA+B,KAAK,OAAO,CAAA;IACtF,QAAQ,CAAC,UAAU,EAAE,oBAAoB,CAAA;IACzC,QAAQ,CAAC,cAAc,CAAC,EAAE,CAAC,IAAI,EAAE,wBAAwB,KAAK,SAAS,CAAA;IACvE,QAAQ,CAAC,eAAe,CAAC,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,SAAS,CAAA;IACtD,QAAQ,CAAC,iBAAiB,CAAC,EAAE,CAAC,MAAM,EAAE,+BAA+B,KAAK,SAAS,CAAA;IACnF,QAAQ,CAAC,oBAAoB,CAAC,EAAE,mCAAmC,CAAA;IACnE,QAAQ,CAAC,uBAAuB,CAAC,EAAE,SAAS,MAAM,EAAE,CAAA;CACrD;AAED;;;;;;GAMG;AACH,wBAAgB,wBAAwB,CAAC,EACvC,UAAU,EACV,QAAQ,EACR,eAAe,EACf,sBAAsB,EACtB,YAAY,EACZ,mBAAmB,EACnB,2BAA2B,EAC3B,iCAAiC,EACjC,sBAAsB,EACtB,UAAU,EACV,cAAc,EACd,eAAe,EACf,iBAAiB,EACjB,qBAA6D,EAC7D,oBAA2D,EAC3D,uBAA8D,GAC/D,EAAE,6BAA6B,aA0H/B"}
@@ -0,0 +1,112 @@
1
+ import { useCallback, useMemo } from 'react';
2
+ import { defaultNavigationShellSlotPlacements, findPresentationView, projectNavigationShellDiagnostics, resolveProjectedNavigationShellSlots, } from '@cohesivesystems/presentation-core';
3
+ import { getNavigationShellFrameRendererRegistryKeys, resolveNavigationShellFrameRenderer, } from './navigation-shell-frame-renderer-registry.js';
4
+ import { projectNavigationShellLayoutDiagnostics, resolveProjectedNavigationShellLayout, resolveProjectedNavigationShellSlotLayout, } from '@cohesivesystems/presentation-tailwind';
5
+ import { projectPresentationDesignSystemBindingDiagnostics, projectPresentationComponentSystemDiagnostics, } from './presentation-component-system-diagnostics.js';
6
+ import { getNavigationShellSlotRendererRegistryKeys, resolveNavigationShellSlotRenderer, } from './navigation-shell-slot-renderer-registry.js';
7
+ import { usePresentationModule, useRegisterPresentationProjectionDiagnostics, } from '@cohesivesystems/presentation-react';
8
+ import { standardNavigationShellSlotRenderers, } from '@cohesivesystems/presentation-react';
9
+ import { standardNavigationShellFrameRenderers, } from '@cohesivesystems/presentation-react';
10
+ /**
11
+ * Interprets a navigation shell from the presentation/navigation IR.
12
+ *
13
+ * The shell frame owns generic concerns such as brand chrome, primary
14
+ * navigation, placement slots, and the routed content slot. App-specific
15
+ * integrations remain attached through icon and shell-region renderers.
16
+ */
17
+ export function ProjectedNavigationShell({ activePath, children, componentSystem, defaultComponentSystem, designSystem, isNodeIconSupported, isShellRegionComponentBound, isShellRegionComponentTargetBound, isShellRegionSupported, navigation, renderNodeIcon, renderShellIcon, renderShellRegion, frameRendererRegistry = standardNavigationShellFrameRenderers, slotRendererRegistry = standardNavigationShellSlotRenderers, supportedSlotPlacements = defaultNavigationShellSlotPlacements, }) {
18
+ const module = usePresentationModule();
19
+ const shellSlots = useMemo(() => resolveProjectedNavigationShellSlots(navigation), [navigation]);
20
+ const shellLayout = useMemo(() => resolveProjectedNavigationShellLayout(navigation, shellSlots, designSystem), [designSystem, navigation, shellSlots]);
21
+ const shellFrameRendererKeys = useMemo(() => getNavigationShellFrameRendererRegistryKeys(frameRendererRegistry), [frameRendererRegistry]);
22
+ const shellSlotRendererKeys = useMemo(() => getNavigationShellSlotRendererRegistryKeys(slotRendererRegistry), [slotRendererRegistry]);
23
+ const renderSlot = useCallback((slot) => {
24
+ if (!slot) {
25
+ return null;
26
+ }
27
+ const renderer = resolveNavigationShellSlotRenderer(slotRendererRegistry, slot);
28
+ return renderer?.({
29
+ activePath,
30
+ children,
31
+ componentSystem,
32
+ navigation,
33
+ renderNodeIcon,
34
+ renderShellIcon,
35
+ renderShellRegion,
36
+ slot,
37
+ slotLayout: shellLayout.slotLayouts[slot.Id] ??
38
+ resolveProjectedNavigationShellSlotLayout(slot, designSystem),
39
+ }) ?? null;
40
+ }, [
41
+ activePath,
42
+ children,
43
+ componentSystem,
44
+ designSystem,
45
+ navigation,
46
+ renderNodeIcon,
47
+ renderShellIcon,
48
+ renderShellRegion,
49
+ shellLayout,
50
+ slotRendererRegistry,
51
+ ]);
52
+ const shellFrameRenderer = useMemo(() => resolveNavigationShellFrameRenderer(frameRendererRegistry, navigation.Shell.Kind), [frameRendererRegistry, navigation.Shell.Kind]);
53
+ const diagnostics = useMemo(() => [
54
+ ...projectPresentationComponentSystemDiagnostics({
55
+ componentSystem,
56
+ defaultComponentSystem,
57
+ sourceId: `navigation-shell:${navigation.Shell.Id}`,
58
+ }),
59
+ ...projectPresentationDesignSystemBindingDiagnostics({
60
+ componentSystem,
61
+ module,
62
+ sourceId: `navigation-shell:${navigation.Shell.Id}`,
63
+ }),
64
+ ...projectNavigationShellLayoutDiagnostics({
65
+ designSystem,
66
+ navigation,
67
+ shellFrameRendererKeys,
68
+ shellSlots,
69
+ }),
70
+ ...projectNavigationShellDiagnostics({
71
+ isNodeIconSupported,
72
+ isShellRegionComponentBound,
73
+ isShellRegionComponentTargetBound,
74
+ isShellRegionSupported,
75
+ isShellRegionViewBound: module
76
+ ? (viewId) => Boolean(findPresentationView(module, viewId))
77
+ : undefined,
78
+ navigation,
79
+ renderShellIconBound: Boolean(renderShellIcon),
80
+ shellSlotRendererKeys,
81
+ shellSlots,
82
+ supportedSlotPlacements,
83
+ }),
84
+ ], [
85
+ componentSystem,
86
+ defaultComponentSystem,
87
+ designSystem,
88
+ isNodeIconSupported,
89
+ isShellRegionComponentBound,
90
+ isShellRegionComponentTargetBound,
91
+ isShellRegionSupported,
92
+ module,
93
+ navigation,
94
+ renderShellIcon,
95
+ shellFrameRendererKeys,
96
+ shellSlotRendererKeys,
97
+ shellSlots,
98
+ supportedSlotPlacements,
99
+ ]);
100
+ useRegisterPresentationProjectionDiagnostics(`navigation-shell:${navigation.Shell.Id}`, diagnostics);
101
+ return shellFrameRenderer?.({
102
+ activePath,
103
+ children,
104
+ layout: shellLayout,
105
+ navigation,
106
+ renderNodeIcon,
107
+ renderShellIcon,
108
+ renderShellRegion,
109
+ renderSlot,
110
+ }) ?? children;
111
+ }
112
+ //# sourceMappingURL=projected-navigation-shell.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"projected-navigation-shell.js","sourceRoot":"","sources":["../src/projected-navigation-shell.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAkB,WAAW,EAAE,OAAO,EAAE,MAAM,OAAO,CAAA;AAE5D,OAAO,EACL,oCAAoC,EACpC,oBAAoB,EACpB,iCAAiC,EACjC,oCAAoC,GACrC,MAAM,oCAAoC,CAAA;AAC3C,OAAO,EACL,2CAA2C,EAC3C,mCAAmC,GAEpC,MAAM,4CAA4C,CAAA;AACnD,OAAO,EACL,uCAAuC,EACvC,qCAAqC,EACrC,yCAAyC,GAC1C,MAAM,wCAAwC,CAAA;AAI/C,OAAO,EACL,iDAAiD,EACjD,6CAA6C,GAC9C,MAAM,6CAA6C,CAAA;AAEpD,OAAO,EACL,0CAA0C,EAC1C,kCAAkC,GAEnC,MAAM,2CAA2C,CAAA;AAClD,OAAO,EACL,qBAAqB,EACrB,4CAA4C,GAC7C,MAAM,qCAAqC,CAAA;AAC5C,OAAO,EACL,oCAAoC,GACrC,MAAM,qCAAqC,CAAA;AAC5C,OAAO,EACL,qCAAqC,GACtC,MAAM,qCAAqC,CAAA;AAgC5C;;;;;;GAMG;AACH,MAAM,UAAU,wBAAwB,CAAC,EACvC,UAAU,EACV,QAAQ,EACR,eAAe,EACf,sBAAsB,EACtB,YAAY,EACZ,mBAAmB,EACnB,2BAA2B,EAC3B,iCAAiC,EACjC,sBAAsB,EACtB,UAAU,EACV,cAAc,EACd,eAAe,EACf,iBAAiB,EACjB,qBAAqB,GAAG,qCAAqC,EAC7D,oBAAoB,GAAG,oCAAoC,EAC3D,uBAAuB,GAAG,oCAAoC,GAChC;IAC9B,MAAM,MAAM,GAAG,qBAAqB,EAAE,CAAA;IACtC,MAAM,UAAU,GAAG,OAAO,CACxB,GAAG,EAAE,CAAC,oCAAoC,CAAC,UAAU,CAAC,EACtD,CAAC,UAAU,CAAC,CACb,CAAA;IACD,MAAM,WAAW,GAAG,OAAO,CACzB,GAAG,EAAE,CAAC,qCAAqC,CAAC,UAAU,EAAE,UAAU,EAAE,YAAY,CAAC,EACjF,CAAC,YAAY,EAAE,UAAU,EAAE,UAAU,CAAC,CACvC,CAAA;IACD,MAAM,sBAAsB,GAAG,OAAO,CACpC,GAAG,EAAE,CAAC,2CAA2C,CAAC,qBAAqB,CAAC,EACxE,CAAC,qBAAqB,CAAC,CACxB,CAAA;IACD,MAAM,qBAAqB,GAAG,OAAO,CACnC,GAAG,EAAE,CAAC,0CAA0C,CAAC,oBAAoB,CAAC,EACtE,CAAC,oBAAoB,CAAC,CACvB,CAAA;IACD,MAAM,UAAU,GAAG,WAAW,CAC5B,CAAC,IAA0C,EAAE,EAAE;QAC7C,IAAI,CAAC,IAAI,EAAE,CAAC;YACV,OAAO,IAAI,CAAA;QACb,CAAC;QAED,MAAM,QAAQ,GAAG,kCAAkC,CAAC,oBAAoB,EAAE,IAAI,CAAC,CAAA;QAE/E,OAAO,QAAQ,EAAE,CAAC;YAChB,UAAU;YACV,QAAQ;YACR,eAAe;YACf,UAAU;YACV,cAAc;YACd,eAAe;YACf,iBAAiB;YACjB,IAAI;YACJ,UAAU,EACR,WAAW,CAAC,WAAW,CAAC,IAAI,CAAC,EAAE,CAAC;gBAChC,yCAAyC,CAAC,IAAI,EAAE,YAAY,CAAC;SAChE,CAAC,IAAI,IAAI,CAAA;IACZ,CAAC,EACD;QACE,UAAU;QACV,QAAQ;QACR,eAAe;QACf,YAAY;QACZ,UAAU;QACV,cAAc;QACd,eAAe;QACf,iBAAiB;QACjB,WAAW;QACX,oBAAoB;KACrB,CACF,CAAA;IACD,MAAM,kBAAkB,GAAG,OAAO,CAChC,GAAG,EAAE,CAAC,mCAAmC,CAAC,qBAAqB,EAAE,UAAU,CAAC,KAAK,CAAC,IAAI,CAAC,EACvF,CAAC,qBAAqB,EAAE,UAAU,CAAC,KAAK,CAAC,IAAI,CAAC,CAC/C,CAAA;IACD,MAAM,WAAW,GAAG,OAAO,CACzB,GAAG,EAAE,CAAC;QACJ,GAAG,6CAA6C,CAAC;YAC/C,eAAe;YACf,sBAAsB;YACtB,QAAQ,EAAE,oBAAoB,UAAU,CAAC,KAAK,CAAC,EAAE,EAAE;SACpD,CAAC;QACF,GAAG,iDAAiD,CAAC;YACnD,eAAe;YACf,MAAM;YACN,QAAQ,EAAE,oBAAoB,UAAU,CAAC,KAAK,CAAC,EAAE,EAAE;SACpD,CAAC;QACF,GAAG,uCAAuC,CAAC;YACzC,YAAY;YACZ,UAAU;YACV,sBAAsB;YACtB,UAAU;SACX,CAAC;QACF,GAAG,iCAAiC,CAAC;YACnC,mBAAmB;YACnB,2BAA2B;YAC3B,iCAAiC;YACjC,sBAAsB;YACtB,sBAAsB,EAAE,MAAM;gBAC5B,CAAC,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,OAAO,CAAC,oBAAoB,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;gBAC3D,CAAC,CAAC,SAAS;YACb,UAAU;YACV,oBAAoB,EAAE,OAAO,CAAC,eAAe,CAAC;YAC9C,qBAAqB;YACrB,UAAU;YACV,uBAAuB;SACxB,CAAC;KACH,EACD;QACE,eAAe;QACf,sBAAsB;QACtB,YAAY;QACZ,mBAAmB;QACnB,2BAA2B;QAC3B,iCAAiC;QACjC,sBAAsB;QACtB,MAAM;QACN,UAAU;QACV,eAAe;QACf,sBAAsB;QACtB,qBAAqB;QACrB,UAAU;QACV,uBAAuB;KACxB,CACF,CAAA;IACD,4CAA4C,CAC1C,oBAAoB,UAAU,CAAC,KAAK,CAAC,EAAE,EAAE,EACzC,WAAW,CACZ,CAAA;IAED,OAAO,kBAAkB,EAAE,CAAC;QAC1B,UAAU;QACV,QAAQ;QACR,MAAM,EAAE,WAAW;QACnB,UAAU;QACV,cAAc;QACd,eAAe;QACf,iBAAiB;QACjB,UAAU;KACX,CAAC,IAAI,QAAQ,CAAA;AAChB,CAAC"}
@@ -0,0 +1,34 @@
1
+ import type { ReactNode } from 'react';
2
+ import type { PresentationBadgeVariant } from './presentation-component-groups.js';
3
+ import type { PresentationShadcnComponentSystem as PresentationComponentSystem } from './presentation-shadcn-component-system.js';
4
+ import type { PresentationDesignSystem } from '@cohesivesystems/presentation-tailwind';
5
+ import type { ResolvedPresentationBadge } from '@cohesivesystems/presentation-core';
6
+ export interface ProjectedPresentationBadgeItem extends Omit<ResolvedPresentationBadge, 'label'> {
7
+ readonly className?: string;
8
+ readonly label: ReactNode;
9
+ }
10
+ export interface ProjectedPresentationBadgeProps {
11
+ readonly badge: ProjectedPresentationBadgeItem;
12
+ readonly className?: string;
13
+ readonly componentSystem: PresentationComponentSystem;
14
+ readonly designSystem: PresentationDesignSystem;
15
+ readonly variant?: PresentationBadgeVariant;
16
+ }
17
+ export interface ProjectedPresentationBadgesProps {
18
+ readonly badgeClassName?: string;
19
+ readonly badges: readonly ProjectedPresentationBadgeItem[];
20
+ readonly className?: string;
21
+ readonly componentSystem: PresentationComponentSystem;
22
+ readonly designSystem: PresentationDesignSystem;
23
+ readonly variant?: PresentationBadgeVariant;
24
+ }
25
+ /**
26
+ * Standard badge interpreter for resolved presentation badge semantics.
27
+ *
28
+ * The badge model carries semantic tone and content only; this component is
29
+ * where the target component system and design system decide how that becomes
30
+ * concrete UI.
31
+ */
32
+ export declare function ProjectedPresentationBadge({ badge, className, componentSystem, designSystem, variant, }: ProjectedPresentationBadgeProps): import("react/jsx-runtime").JSX.Element;
33
+ export declare function ProjectedPresentationBadges({ badgeClassName, badges, className, componentSystem, designSystem, variant, }: ProjectedPresentationBadgesProps): import("react/jsx-runtime").JSX.Element | null;
34
+ //# sourceMappingURL=projected-presentation-badges.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"projected-presentation-badges.d.ts","sourceRoot":"","sources":["../src/projected-presentation-badges.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,OAAO,CAAA;AACtC,OAAO,KAAK,EAAE,wBAAwB,EAAE,MAAM,iCAAiC,CAAA;AAE/E,OAAO,KAAK,EACV,iCAAiC,IAAI,2BAA2B,EACjE,MAAM,wCAAwC,CAAA;AAC/C,OAAO,KAAK,EAAE,wBAAwB,EAAE,MAAM,wCAAwC,CAAA;AACtF,OAAO,KAAK,EACV,yBAAyB,EAC1B,MAAM,oCAAoC,CAAA;AAE3C,MAAM,WAAW,8BACf,SAAQ,IAAI,CAAC,yBAAyB,EAAE,OAAO,CAAC;IAChD,QAAQ,CAAC,SAAS,CAAC,EAAE,MAAM,CAAA;IAC3B,QAAQ,CAAC,KAAK,EAAE,SAAS,CAAA;CAC1B;AAED,MAAM,WAAW,+BAA+B;IAC9C,QAAQ,CAAC,KAAK,EAAE,8BAA8B,CAAA;IAC9C,QAAQ,CAAC,SAAS,CAAC,EAAE,MAAM,CAAA;IAC3B,QAAQ,CAAC,eAAe,EAAE,2BAA2B,CAAA;IACrD,QAAQ,CAAC,YAAY,EAAE,wBAAwB,CAAA;IAC/C,QAAQ,CAAC,OAAO,CAAC,EAAE,wBAAwB,CAAA;CAC5C;AAED,MAAM,WAAW,gCAAgC;IAC/C,QAAQ,CAAC,cAAc,CAAC,EAAE,MAAM,CAAA;IAChC,QAAQ,CAAC,MAAM,EAAE,SAAS,8BAA8B,EAAE,CAAA;IAC1D,QAAQ,CAAC,SAAS,CAAC,EAAE,MAAM,CAAA;IAC3B,QAAQ,CAAC,eAAe,EAAE,2BAA2B,CAAA;IACrD,QAAQ,CAAC,YAAY,EAAE,wBAAwB,CAAA;IAC/C,QAAQ,CAAC,OAAO,CAAC,EAAE,wBAAwB,CAAA;CAC5C;AAED;;;;;;GAMG;AACH,wBAAgB,0BAA0B,CAAC,EACzC,KAAK,EACL,SAAS,EACT,eAAe,EACf,YAAY,EACZ,OAAmB,GACpB,EAAE,+BAA+B,2CAejC;AAED,wBAAgB,2BAA2B,CAAC,EAC1C,cAAc,EACd,MAAM,EACN,SAAS,EACT,eAAe,EACf,YAAY,EACZ,OAAmB,GACpB,EAAE,gCAAgC,kDAmBlC"}
@@ -0,0 +1,22 @@
1
+ import { jsx as _jsx } from "react/jsx-runtime";
2
+ /**
3
+ * Standard badge interpreter for resolved presentation badge semantics.
4
+ *
5
+ * The badge model carries semantic tone and content only; this component is
6
+ * where the target component system and design system decide how that becomes
7
+ * concrete UI.
8
+ */
9
+ export function ProjectedPresentationBadge({ badge, className, componentSystem, designSystem, variant = 'outline', }) {
10
+ const BadgeComponent = componentSystem.badges.Badge;
11
+ return (_jsx(BadgeComponent, { className: cn(designSystem.classNames.badge.tone({ tone: badge.tone }), className, badge.className), variant: variant, children: badge.label }));
12
+ }
13
+ export function ProjectedPresentationBadges({ badgeClassName, badges, className, componentSystem, designSystem, variant = 'outline', }) {
14
+ if (badges.length === 0) {
15
+ return null;
16
+ }
17
+ return (_jsx("div", { className: cn('flex flex-wrap items-center gap-2', className), children: badges.map((badge, index) => (_jsx(ProjectedPresentationBadge, { badge: badge, className: badgeClassName, componentSystem: componentSystem, designSystem: designSystem, variant: variant }, badge.id ?? index))) }));
18
+ }
19
+ function cn(...values) {
20
+ return values.filter(Boolean).join(' ');
21
+ }
22
+ //# sourceMappingURL=projected-presentation-badges.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"projected-presentation-badges.js","sourceRoot":"","sources":["../src/projected-presentation-badges.tsx"],"names":[],"mappings":";AAkCA;;;;;;GAMG;AACH,MAAM,UAAU,0BAA0B,CAAC,EACzC,KAAK,EACL,SAAS,EACT,eAAe,EACf,YAAY,EACZ,OAAO,GAAG,SAAS,GACa;IAChC,MAAM,cAAc,GAAG,eAAe,CAAC,MAAM,CAAC,KAAK,CAAA;IAEnD,OAAO,CACL,KAAC,cAAc,IACb,SAAS,EAAE,EAAE,CACX,YAAY,CAAC,UAAU,CAAC,KAAK,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,KAAK,CAAC,IAAI,EAAE,CAAC,EACxD,SAAS,EACT,KAAK,CAAC,SAAS,CAChB,EACD,OAAO,EAAE,OAAO,YAEf,KAAK,CAAC,KAAK,GACG,CAClB,CAAA;AACH,CAAC;AAED,MAAM,UAAU,2BAA2B,CAAC,EAC1C,cAAc,EACd,MAAM,EACN,SAAS,EACT,eAAe,EACf,YAAY,EACZ,OAAO,GAAG,SAAS,GACc;IACjC,IAAI,MAAM,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QACxB,OAAO,IAAI,CAAA;IACb,CAAC;IAED,OAAO,CACL,cAAK,SAAS,EAAE,EAAE,CAAC,mCAAmC,EAAE,SAAS,CAAC,YAC/D,MAAM,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,KAAK,EAAE,EAAE,CAAC,CAC5B,KAAC,0BAA0B,IACzB,KAAK,EAAE,KAAK,EACZ,SAAS,EAAE,cAAc,EACzB,eAAe,EAAE,eAAe,EAChC,YAAY,EAAE,YAAY,EAE1B,OAAO,EAAE,OAAO,IADX,KAAK,CAAC,EAAE,IAAI,KAAK,CAEtB,CACH,CAAC,GACE,CACP,CAAA;AACH,CAAC;AAED,SAAS,EAAE,CAAC,GAAG,MAAsD;IACnE,OAAO,MAAM,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAA;AACzC,CAAC"}
@@ -0,0 +1,10 @@
1
+ import type { PresentationProjectionDiagnostic, PresentationProjectionDiagnosticSeverity } from '@cohesivesystems/presentation-core';
2
+ export interface ProjectedPresentationDiagnosticsProps {
3
+ readonly diagnostics: readonly PresentationProjectionDiagnostic[];
4
+ readonly emptyLabel?: string;
5
+ readonly minSeverity?: PresentationProjectionDiagnosticSeverity;
6
+ readonly title?: string | null;
7
+ }
8
+ /** Renders projection TODOs emitted by frontend interpreters. */
9
+ export declare function ProjectedPresentationDiagnostics({ diagnostics, emptyLabel, minSeverity, title, }: ProjectedPresentationDiagnosticsProps): import("react/jsx-runtime").JSX.Element | null;
10
+ //# sourceMappingURL=projected-presentation-diagnostics.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"projected-presentation-diagnostics.d.ts","sourceRoot":"","sources":["../src/projected-presentation-diagnostics.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,gCAAgC,EAChC,wCAAwC,EACzC,MAAM,oCAAoC,CAAA;AAE3C,MAAM,WAAW,qCAAqC;IACpD,QAAQ,CAAC,WAAW,EAAE,SAAS,gCAAgC,EAAE,CAAA;IACjE,QAAQ,CAAC,UAAU,CAAC,EAAE,MAAM,CAAA;IAC5B,QAAQ,CAAC,WAAW,CAAC,EAAE,wCAAwC,CAAA;IAC/D,QAAQ,CAAC,KAAK,CAAC,EAAE,MAAM,GAAG,IAAI,CAAA;CAC/B;AAQD,iEAAiE;AACjE,wBAAgB,gCAAgC,CAAC,EAC/C,WAAW,EACX,UAAU,EACV,WAAuB,EACvB,KAAgC,GACjC,EAAE,qCAAqC,kDAyDvC"}