@contractspec/bundle.library 3.7.5 → 3.7.7

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 (890) hide show
  1. package/.turbo/turbo-build.log +144 -142
  2. package/AGENTS.md +42 -24
  3. package/CHANGELOG.md +27 -0
  4. package/README.md +59 -37
  5. package/dist/application/index.d.ts +1 -1
  6. package/dist/application/index.js +842 -840
  7. package/dist/application/mcp/cliMcp.js +30 -30
  8. package/dist/application/mcp/common.d.ts +2 -2
  9. package/dist/application/mcp/common.js +2 -2
  10. package/dist/application/mcp/contractsMcp.d.ts +1 -1
  11. package/dist/application/mcp/contractsMcp.js +163 -163
  12. package/dist/application/mcp/docsMcp.js +31 -31
  13. package/dist/application/mcp/index.d.ts +2 -2
  14. package/dist/application/mcp/index.js +842 -840
  15. package/dist/application/mcp/internalMcp.js +30 -30
  16. package/dist/application/mcp/providerRankingMcp.js +35 -33
  17. package/dist/components/docs/DocsIndexPage.js +859 -212
  18. package/dist/components/docs/advanced/AdvancedMCPPage.js +15 -15
  19. package/dist/components/docs/advanced/AdvancedOverlayEditorPage.js +4 -4
  20. package/dist/components/docs/advanced/AdvancedRenderersPage.js +7 -7
  21. package/dist/components/docs/advanced/AdvancedSpecExperimentsPage.js +9 -9
  22. package/dist/components/docs/advanced/AdvancedTelemetryPage.js +16 -16
  23. package/dist/components/docs/advanced/AdvancedWorkflowMonitoringPage.js +6 -6
  24. package/dist/components/docs/advanced/index.d.ts +2 -2
  25. package/dist/components/docs/advanced/index.js +57 -57
  26. package/dist/components/docs/architecture/ArchitectureAppConfigPage.js +10 -10
  27. package/dist/components/docs/architecture/ArchitectureControlPlanePage.js +8 -8
  28. package/dist/components/docs/architecture/ArchitectureIntegrationBindingPage.js +14 -14
  29. package/dist/components/docs/architecture/ArchitectureKnowledgeBindingPage.js +16 -16
  30. package/dist/components/docs/architecture/ArchitectureMultiTenancyPage.js +7 -7
  31. package/dist/components/docs/architecture/ArchitectureOverviewPage.js +90 -411
  32. package/dist/components/docs/architecture/index.d.ts +3 -3
  33. package/dist/components/docs/architecture/index.js +145 -466
  34. package/dist/components/docs/comparison/ComparisonAutomationPlatformsPage.js +6 -6
  35. package/dist/components/docs/comparison/ComparisonEnterprisePlatformsPage.js +7 -7
  36. package/dist/components/docs/comparison/ComparisonInternalToolBuildersPage.js +6 -6
  37. package/dist/components/docs/comparison/ComparisonOverviewPage.js +4 -4
  38. package/dist/components/docs/comparison/ComparisonWindmillPage.js +6 -6
  39. package/dist/components/docs/comparison/ComparisonWorkflowEnginesPage.js +6 -6
  40. package/dist/components/docs/comparison/index.d.ts +2 -2
  41. package/dist/components/docs/comparison/index.js +35 -35
  42. package/dist/components/docs/docsManifest.d.ts +42 -0
  43. package/dist/components/docs/docsManifest.js +612 -0
  44. package/dist/components/docs/ecosystem/IntegrationsPage.js +5 -5
  45. package/dist/components/docs/ecosystem/PluginsPage.js +7 -7
  46. package/dist/components/docs/ecosystem/RegistryPage.js +4 -4
  47. package/dist/components/docs/ecosystem/TemplatesPage.js +11 -11
  48. package/dist/components/docs/ecosystem/index.d.ts +2 -2
  49. package/dist/components/docs/ecosystem/index.js +27 -27
  50. package/dist/components/docs/examples/DocsExamplesPage.js +4 -4
  51. package/dist/components/docs/examples/index.js +4 -4
  52. package/dist/components/docs/getting-started/CLIPage.js +9 -9
  53. package/dist/components/docs/getting-started/CompatibilityPage.js +12 -12
  54. package/dist/components/docs/getting-started/DataViewTutorialPage.js +7 -7
  55. package/dist/components/docs/getting-started/DeveloperToolsPage.js +10 -10
  56. package/dist/components/docs/getting-started/HelloWorldPage.js +8 -8
  57. package/dist/components/docs/getting-started/InstallationPage.js +10 -10
  58. package/dist/components/docs/getting-started/StartHerePage.js +8 -8
  59. package/dist/components/docs/getting-started/TroubleshootingPage.js +12 -12
  60. package/dist/components/docs/getting-started/VSCodeExtensionPage.js +13 -13
  61. package/dist/components/docs/getting-started/index.d.ts +5 -5
  62. package/dist/components/docs/getting-started/index.js +89 -89
  63. package/dist/components/docs/guides/GuideCIDiffGatingPage.js +13 -13
  64. package/dist/components/docs/guides/GuideContractTypesPage.js +33 -33
  65. package/dist/components/docs/guides/GuideDocsPipelinePage.js +13 -13
  66. package/dist/components/docs/guides/GuideGenerateDocsClientsSchemasPage.js +13 -13
  67. package/dist/components/docs/guides/GuideImportExistingCodebasesPage.js +35 -35
  68. package/dist/components/docs/guides/GuideNextjsOneEndpointPage.js +15 -15
  69. package/dist/components/docs/guides/GuideSpecValidationTypingPage.js +13 -13
  70. package/dist/components/docs/guides/GuidesIndexPage.js +69 -46
  71. package/dist/components/docs/guides/index.d.ts +4 -4
  72. package/dist/components/docs/guides/index.js +174 -151
  73. package/dist/components/docs/index.d.ts +13 -12
  74. package/dist/components/docs/index.js +14060 -15332
  75. package/dist/components/docs/integrations/IntegrationsCircuitBreakersPage.js +4 -4
  76. package/dist/components/docs/integrations/IntegrationsElevenLabsPage.js +7 -7
  77. package/dist/components/docs/integrations/IntegrationsGithubPage.js +11 -11
  78. package/dist/components/docs/integrations/IntegrationsGmailPage.js +7 -7
  79. package/dist/components/docs/integrations/IntegrationsGoogleCalendarPage.js +5 -5
  80. package/dist/components/docs/integrations/IntegrationsHealthRoutingPage.js +12 -12
  81. package/dist/components/docs/integrations/IntegrationsMistralPage.js +12 -12
  82. package/dist/components/docs/integrations/IntegrationsOpenAIPage.js +11 -11
  83. package/dist/components/docs/integrations/IntegrationsOverviewPage.js +119 -736
  84. package/dist/components/docs/integrations/IntegrationsPostmarkPage.js +12 -12
  85. package/dist/components/docs/integrations/IntegrationsPowensPage.js +24 -24
  86. package/dist/components/docs/integrations/IntegrationsQdrantPage.js +9 -9
  87. package/dist/components/docs/integrations/IntegrationsResendPage.js +7 -7
  88. package/dist/components/docs/integrations/IntegrationsS3Page.js +9 -9
  89. package/dist/components/docs/integrations/IntegrationsSlackPage.js +11 -11
  90. package/dist/components/docs/integrations/IntegrationsSpecModelPage.js +19 -19
  91. package/dist/components/docs/integrations/IntegrationsStripePage.js +25 -25
  92. package/dist/components/docs/integrations/IntegrationsTwilioPage.js +9 -9
  93. package/dist/components/docs/integrations/IntegrationsWhatsappMetaPage.js +12 -12
  94. package/dist/components/docs/integrations/IntegrationsWhatsappTwilioPage.js +13 -13
  95. package/dist/components/docs/integrations/index.d.ts +1 -1
  96. package/dist/components/docs/integrations/index.js +614 -1231
  97. package/dist/components/docs/intent/ContractFirstApiPage.js +8 -8
  98. package/dist/components/docs/intent/DeterministicCodegenPage.js +9 -9
  99. package/dist/components/docs/intent/GenerateClientFromSchemaPage.js +13 -13
  100. package/dist/components/docs/intent/OpenapiAlternativePage.js +13 -13
  101. package/dist/components/docs/intent/SchemaValidationTypescriptPage.js +9 -9
  102. package/dist/components/docs/intent/SpecDrivenDevelopmentPage.js +8 -8
  103. package/dist/components/docs/intent/index.d.ts +3 -3
  104. package/dist/components/docs/intent/index.js +766 -766
  105. package/dist/components/docs/knowledge/KnowledgeCategoriesPage.js +38 -38
  106. package/dist/components/docs/knowledge/KnowledgeExamplesPage.js +9 -9
  107. package/dist/components/docs/knowledge/KnowledgeOverviewPage.js +91 -439
  108. package/dist/components/docs/knowledge/KnowledgeSourcesPage.js +28 -28
  109. package/dist/components/docs/knowledge/KnowledgeSpacesPage.js +21 -21
  110. package/dist/components/docs/knowledge/index.d.ts +1 -1
  111. package/dist/components/docs/knowledge/index.js +437 -785
  112. package/dist/components/docs/libraries/LibrariesAccessibilityPage.js +16 -16
  113. package/dist/components/docs/libraries/LibrariesAiAgentPage.js +8 -8
  114. package/dist/components/docs/libraries/LibrariesAnalyticsPage.js +6 -6
  115. package/dist/components/docs/libraries/LibrariesContentGenPage.js +6 -6
  116. package/dist/components/docs/libraries/LibrariesContractsPage.js +16 -16
  117. package/dist/components/docs/libraries/LibrariesCostTrackingPage.js +6 -6
  118. package/dist/components/docs/libraries/LibrariesDataBackendPage.js +14 -14
  119. package/dist/components/docs/libraries/LibrariesDataViewsPage.js +7 -7
  120. package/dist/components/docs/libraries/LibrariesDesignSystemPage.js +13 -13
  121. package/dist/components/docs/libraries/LibrariesEvolutionPage.js +7 -7
  122. package/dist/components/docs/libraries/LibrariesGraphQLPage.js +13 -13
  123. package/dist/components/docs/libraries/LibrariesGrowthPage.js +5 -5
  124. package/dist/components/docs/libraries/LibrariesMultiTenancyPage.js +5 -5
  125. package/dist/components/docs/libraries/LibrariesObservabilityPage.js +7 -7
  126. package/dist/components/docs/libraries/LibrariesOverlayEnginePage.js +6 -6
  127. package/dist/components/docs/libraries/LibrariesOverviewPage.js +117 -430
  128. package/dist/components/docs/libraries/LibrariesPersonalizationPage.js +6 -6
  129. package/dist/components/docs/libraries/LibrariesProgressiveDeliveryPage.js +6 -6
  130. package/dist/components/docs/libraries/LibrariesResiliencePage.js +6 -6
  131. package/dist/components/docs/libraries/LibrariesRuntimePage.js +13 -13
  132. package/dist/components/docs/libraries/LibrariesSLOPage.js +6 -6
  133. package/dist/components/docs/libraries/LibrariesSchemaPage.js +16 -16
  134. package/dist/components/docs/libraries/LibrariesSupportBotPage.js +7 -7
  135. package/dist/components/docs/libraries/LibrariesTestingPage.js +7 -7
  136. package/dist/components/docs/libraries/LibrariesUIKitPage.js +10 -10
  137. package/dist/components/docs/libraries/LibrariesWorkflowComposerPage.js +5 -5
  138. package/dist/components/docs/libraries/LibrariesWorkflowsPage.js +8 -8
  139. package/dist/components/docs/libraries/index.d.ts +4 -4
  140. package/dist/components/docs/libraries/index.js +1308 -1621
  141. package/dist/components/docs/manifesto/ManifestoPage.js +33 -138
  142. package/dist/components/docs/ops/AutoEvolutionOpsPage.js +9 -9
  143. package/dist/components/docs/ops/DistributedTracingOpsPage.js +5 -5
  144. package/dist/components/docs/ops/index.js +14 -14
  145. package/dist/components/docs/reference/DocsMarkdownContent.js +1 -1
  146. package/dist/components/docs/reference/DocsReferenceContent.js +2 -2
  147. package/dist/components/docs/reference/DocsReferenceIndexClient.js +8 -8
  148. package/dist/components/docs/reference/DocsReferenceIndexPage.js +8 -8
  149. package/dist/components/docs/reference/DocsReferencePage.js +2 -2
  150. package/dist/components/docs/reference/index.js +10 -10
  151. package/dist/components/docs/safety/SafetyAuditingPage.js +16 -16
  152. package/dist/components/docs/safety/SafetyMigrationsPage.js +15 -15
  153. package/dist/components/docs/safety/SafetyOverviewPage.js +69 -206
  154. package/dist/components/docs/safety/SafetyPDPPage.js +12 -12
  155. package/dist/components/docs/safety/SafetySecurityTrustPage.js +11 -11
  156. package/dist/components/docs/safety/SafetySigningPage.js +7 -7
  157. package/dist/components/docs/safety/SafetyTenantIsolationPage.js +6 -6
  158. package/dist/components/docs/safety/index.d.ts +3 -3
  159. package/dist/components/docs/safety/index.js +616 -753
  160. package/dist/components/docs/shared/StudioPrompt.js +5 -5
  161. package/dist/components/docs/specs/SpecsCapabilitiesPage.js +12 -12
  162. package/dist/components/docs/specs/SpecsDataViewsPage.js +14 -14
  163. package/dist/components/docs/specs/SpecsOverlaysPage.js +14 -14
  164. package/dist/components/docs/specs/SpecsOverviewPage.js +135 -297
  165. package/dist/components/docs/specs/SpecsPolicyPage.js +29 -29
  166. package/dist/components/docs/specs/SpecsWorkflowsPage.js +18 -18
  167. package/dist/components/docs/specs/index.d.ts +3 -3
  168. package/dist/components/docs/specs/index.js +814 -976
  169. package/dist/components/docs/studio/StudioBYOKPage.js +1 -1
  170. package/dist/components/docs/studio/StudioDeploymentsPage.js +1 -1
  171. package/dist/components/docs/studio/StudioGettingStartedPage.js +1 -1
  172. package/dist/components/docs/studio/StudioIntegrationsPage.js +1 -1
  173. package/dist/components/docs/studio/StudioOverviewPage.js +109 -56
  174. package/dist/components/docs/studio/StudioVisualBuilderPage.js +1 -1
  175. package/dist/components/docs/studio/index.d.ts +4 -4
  176. package/dist/components/docs/studio/index.js +170 -117
  177. package/dist/components/integrations/index.js +25 -25
  178. package/dist/components/integrations/molecules/IntegrationCard.js +5 -5
  179. package/dist/components/integrations/organisms/IntegrationMarketplace.js +12 -12
  180. package/dist/components/integrations/organisms/IntegrationSettings.js +7 -7
  181. package/dist/components/integrations/organisms/KnowledgeSourceList.js +6 -6
  182. package/dist/components/legal/PrivacyTemplate.js +67 -67
  183. package/dist/components/legal/TermsTemplate.js +54 -54
  184. package/dist/components/legal/index.js +121 -121
  185. package/dist/components/shared/FeatureGateNotice.js +4 -4
  186. package/dist/components/shared/index.js +4 -4
  187. package/dist/components/shell/WorkspaceHeader.js +4 -4
  188. package/dist/components/shell/WorkspaceProjectShellLayout.d.ts +3 -3
  189. package/dist/components/shell/WorkspaceProjectShellLayout.js +10 -10
  190. package/dist/components/shell/WorkspaceShellRenderer.d.ts +4 -4
  191. package/dist/components/shell/WorkspaceShellRenderer.js +8 -8
  192. package/dist/components/shell/WorkspaceSidebar.js +2 -2
  193. package/dist/components/shell/index.d.ts +1 -1
  194. package/dist/components/shell/index.js +12 -12
  195. package/dist/components/templates/engine/index.d.ts +1 -1
  196. package/dist/components/templates/index.d.ts +1 -1
  197. package/dist/components/templates/index.js +835 -835
  198. package/dist/components/templates/messaging/ConversationList.js +11 -11
  199. package/dist/components/templates/messaging/MessageComposer.js +11 -11
  200. package/dist/components/templates/messaging/MessageThread.js +6 -6
  201. package/dist/components/templates/messaging/MessagingWorkspace.js +23 -23
  202. package/dist/components/templates/messaging/index.d.ts +1 -1
  203. package/dist/components/templates/messaging/index.js +23 -23
  204. package/dist/components/templates/recipes/LanguageSwitcher.js +1 -1
  205. package/dist/components/templates/recipes/RecipeCard.js +5 -5
  206. package/dist/components/templates/recipes/RecipeDetail.js +8 -8
  207. package/dist/components/templates/recipes/RecipeList.js +17 -17
  208. package/dist/components/templates/recipes/index.d.ts +2 -2
  209. package/dist/components/templates/recipes/index.js +17 -17
  210. package/dist/components/templates/todos/FilterBar.d.ts +1 -1
  211. package/dist/components/templates/todos/FilterBar.js +9 -9
  212. package/dist/components/templates/todos/TaskForm.js +14 -14
  213. package/dist/components/templates/todos/TaskItem.js +4 -4
  214. package/dist/components/templates/todos/TaskList.js +30 -30
  215. package/dist/components/templates/todos/index.d.ts +2 -2
  216. package/dist/components/templates/todos/index.js +30 -30
  217. package/dist/config/index.d.ts +2 -2
  218. package/dist/features/contracts-registry.d.ts +3 -3
  219. package/dist/features/contracts-registry.js +15 -15
  220. package/dist/features/docs/docs.contracts.d.ts +1 -1
  221. package/dist/features/docs/docs.contracts.js +2 -2
  222. package/dist/features/docs/index.d.ts +1 -1
  223. package/dist/features/docs/index.js +2 -2
  224. package/dist/features/index.d.ts +4 -4
  225. package/dist/features/index.js +18 -18
  226. package/dist/features/registry.js +1 -1
  227. package/dist/index.d.ts +2 -2
  228. package/dist/index.js +14982 -16254
  229. package/dist/libs/email/client.js +1 -1
  230. package/dist/libs/email/contact.js +1 -1
  231. package/dist/libs/email/newsletter.js +1 -1
  232. package/dist/libs/email/waitlist-application.js +1 -1
  233. package/dist/libs/email/waitlist.js +1 -1
  234. package/dist/libs/email.d.ts +1 -1
  235. package/dist/libs/email.js +1 -1
  236. package/dist/node/application/index.js +842 -840
  237. package/dist/node/application/mcp/cliMcp.js +30 -30
  238. package/dist/node/application/mcp/common.js +2 -2
  239. package/dist/node/application/mcp/contractsMcp.js +163 -163
  240. package/dist/node/application/mcp/docsMcp.js +31 -31
  241. package/dist/node/application/mcp/index.js +842 -840
  242. package/dist/node/application/mcp/internalMcp.js +30 -30
  243. package/dist/node/application/mcp/providerRankingMcp.js +35 -33
  244. package/dist/node/components/docs/DocsIndexPage.js +859 -212
  245. package/dist/node/components/docs/advanced/AdvancedMCPPage.js +15 -15
  246. package/dist/node/components/docs/advanced/AdvancedOverlayEditorPage.js +4 -4
  247. package/dist/node/components/docs/advanced/AdvancedRenderersPage.js +7 -7
  248. package/dist/node/components/docs/advanced/AdvancedSpecExperimentsPage.js +9 -9
  249. package/dist/node/components/docs/advanced/AdvancedTelemetryPage.js +16 -16
  250. package/dist/node/components/docs/advanced/AdvancedWorkflowMonitoringPage.js +6 -6
  251. package/dist/node/components/docs/advanced/index.js +57 -57
  252. package/dist/node/components/docs/architecture/ArchitectureAppConfigPage.js +10 -10
  253. package/dist/node/components/docs/architecture/ArchitectureControlPlanePage.js +8 -8
  254. package/dist/node/components/docs/architecture/ArchitectureIntegrationBindingPage.js +14 -14
  255. package/dist/node/components/docs/architecture/ArchitectureKnowledgeBindingPage.js +16 -16
  256. package/dist/node/components/docs/architecture/ArchitectureMultiTenancyPage.js +7 -7
  257. package/dist/node/components/docs/architecture/ArchitectureOverviewPage.js +90 -411
  258. package/dist/node/components/docs/architecture/index.js +145 -466
  259. package/dist/node/components/docs/comparison/ComparisonAutomationPlatformsPage.js +6 -6
  260. package/dist/node/components/docs/comparison/ComparisonEnterprisePlatformsPage.js +7 -7
  261. package/dist/node/components/docs/comparison/ComparisonInternalToolBuildersPage.js +6 -6
  262. package/dist/node/components/docs/comparison/ComparisonOverviewPage.js +4 -4
  263. package/dist/node/components/docs/comparison/ComparisonWindmillPage.js +6 -6
  264. package/dist/node/components/docs/comparison/ComparisonWorkflowEnginesPage.js +6 -6
  265. package/dist/node/components/docs/comparison/index.js +35 -35
  266. package/dist/node/components/docs/docsManifest.js +611 -0
  267. package/dist/node/components/docs/ecosystem/IntegrationsPage.js +5 -5
  268. package/dist/node/components/docs/ecosystem/PluginsPage.js +7 -7
  269. package/dist/node/components/docs/ecosystem/RegistryPage.js +4 -4
  270. package/dist/node/components/docs/ecosystem/TemplatesPage.js +11 -11
  271. package/dist/node/components/docs/ecosystem/index.js +27 -27
  272. package/dist/node/components/docs/examples/DocsExamplesPage.js +4 -4
  273. package/dist/node/components/docs/examples/index.js +4 -4
  274. package/dist/node/components/docs/getting-started/CLIPage.js +9 -9
  275. package/dist/node/components/docs/getting-started/CompatibilityPage.js +12 -12
  276. package/dist/node/components/docs/getting-started/DataViewTutorialPage.js +7 -7
  277. package/dist/node/components/docs/getting-started/DeveloperToolsPage.js +10 -10
  278. package/dist/node/components/docs/getting-started/HelloWorldPage.js +8 -8
  279. package/dist/node/components/docs/getting-started/InstallationPage.js +10 -10
  280. package/dist/node/components/docs/getting-started/StartHerePage.js +8 -8
  281. package/dist/node/components/docs/getting-started/TroubleshootingPage.js +12 -12
  282. package/dist/node/components/docs/getting-started/VSCodeExtensionPage.js +13 -13
  283. package/dist/node/components/docs/getting-started/index.js +89 -89
  284. package/dist/node/components/docs/guides/GuideCIDiffGatingPage.js +13 -13
  285. package/dist/node/components/docs/guides/GuideContractTypesPage.js +33 -33
  286. package/dist/node/components/docs/guides/GuideDocsPipelinePage.js +13 -13
  287. package/dist/node/components/docs/guides/GuideGenerateDocsClientsSchemasPage.js +13 -13
  288. package/dist/node/components/docs/guides/GuideImportExistingCodebasesPage.js +35 -35
  289. package/dist/node/components/docs/guides/GuideNextjsOneEndpointPage.js +15 -15
  290. package/dist/node/components/docs/guides/GuideSpecValidationTypingPage.js +13 -13
  291. package/dist/node/components/docs/guides/GuidesIndexPage.js +69 -46
  292. package/dist/node/components/docs/guides/index.js +174 -151
  293. package/dist/node/components/docs/index.js +14060 -15332
  294. package/dist/node/components/docs/integrations/IntegrationsCircuitBreakersPage.js +4 -4
  295. package/dist/node/components/docs/integrations/IntegrationsElevenLabsPage.js +7 -7
  296. package/dist/node/components/docs/integrations/IntegrationsGithubPage.js +11 -11
  297. package/dist/node/components/docs/integrations/IntegrationsGmailPage.js +7 -7
  298. package/dist/node/components/docs/integrations/IntegrationsGoogleCalendarPage.js +5 -5
  299. package/dist/node/components/docs/integrations/IntegrationsHealthRoutingPage.js +12 -12
  300. package/dist/node/components/docs/integrations/IntegrationsMistralPage.js +12 -12
  301. package/dist/node/components/docs/integrations/IntegrationsOpenAIPage.js +11 -11
  302. package/dist/node/components/docs/integrations/IntegrationsOverviewPage.js +119 -736
  303. package/dist/node/components/docs/integrations/IntegrationsPostmarkPage.js +12 -12
  304. package/dist/node/components/docs/integrations/IntegrationsPowensPage.js +24 -24
  305. package/dist/node/components/docs/integrations/IntegrationsQdrantPage.js +9 -9
  306. package/dist/node/components/docs/integrations/IntegrationsResendPage.js +7 -7
  307. package/dist/node/components/docs/integrations/IntegrationsS3Page.js +9 -9
  308. package/dist/node/components/docs/integrations/IntegrationsSlackPage.js +11 -11
  309. package/dist/node/components/docs/integrations/IntegrationsSpecModelPage.js +19 -19
  310. package/dist/node/components/docs/integrations/IntegrationsStripePage.js +25 -25
  311. package/dist/node/components/docs/integrations/IntegrationsTwilioPage.js +9 -9
  312. package/dist/node/components/docs/integrations/IntegrationsWhatsappMetaPage.js +12 -12
  313. package/dist/node/components/docs/integrations/IntegrationsWhatsappTwilioPage.js +13 -13
  314. package/dist/node/components/docs/integrations/index.js +614 -1231
  315. package/dist/node/components/docs/intent/ContractFirstApiPage.js +8 -8
  316. package/dist/node/components/docs/intent/DeterministicCodegenPage.js +9 -9
  317. package/dist/node/components/docs/intent/GenerateClientFromSchemaPage.js +13 -13
  318. package/dist/node/components/docs/intent/OpenapiAlternativePage.js +13 -13
  319. package/dist/node/components/docs/intent/SchemaValidationTypescriptPage.js +9 -9
  320. package/dist/node/components/docs/intent/SpecDrivenDevelopmentPage.js +8 -8
  321. package/dist/node/components/docs/intent/index.js +766 -766
  322. package/dist/node/components/docs/knowledge/KnowledgeCategoriesPage.js +38 -38
  323. package/dist/node/components/docs/knowledge/KnowledgeExamplesPage.js +9 -9
  324. package/dist/node/components/docs/knowledge/KnowledgeOverviewPage.js +91 -439
  325. package/dist/node/components/docs/knowledge/KnowledgeSourcesPage.js +28 -28
  326. package/dist/node/components/docs/knowledge/KnowledgeSpacesPage.js +21 -21
  327. package/dist/node/components/docs/knowledge/index.js +437 -785
  328. package/dist/node/components/docs/libraries/LibrariesAccessibilityPage.js +16 -16
  329. package/dist/node/components/docs/libraries/LibrariesAiAgentPage.js +8 -8
  330. package/dist/node/components/docs/libraries/LibrariesAnalyticsPage.js +6 -6
  331. package/dist/node/components/docs/libraries/LibrariesContentGenPage.js +6 -6
  332. package/dist/node/components/docs/libraries/LibrariesContractsPage.js +16 -16
  333. package/dist/node/components/docs/libraries/LibrariesCostTrackingPage.js +6 -6
  334. package/dist/node/components/docs/libraries/LibrariesDataBackendPage.js +14 -14
  335. package/dist/node/components/docs/libraries/LibrariesDataViewsPage.js +7 -7
  336. package/dist/node/components/docs/libraries/LibrariesDesignSystemPage.js +13 -13
  337. package/dist/node/components/docs/libraries/LibrariesEvolutionPage.js +7 -7
  338. package/dist/node/components/docs/libraries/LibrariesGraphQLPage.js +13 -13
  339. package/dist/node/components/docs/libraries/LibrariesGrowthPage.js +5 -5
  340. package/dist/node/components/docs/libraries/LibrariesMultiTenancyPage.js +5 -5
  341. package/dist/node/components/docs/libraries/LibrariesObservabilityPage.js +7 -7
  342. package/dist/node/components/docs/libraries/LibrariesOverlayEnginePage.js +6 -6
  343. package/dist/node/components/docs/libraries/LibrariesOverviewPage.js +117 -430
  344. package/dist/node/components/docs/libraries/LibrariesPersonalizationPage.js +6 -6
  345. package/dist/node/components/docs/libraries/LibrariesProgressiveDeliveryPage.js +6 -6
  346. package/dist/node/components/docs/libraries/LibrariesResiliencePage.js +6 -6
  347. package/dist/node/components/docs/libraries/LibrariesRuntimePage.js +13 -13
  348. package/dist/node/components/docs/libraries/LibrariesSLOPage.js +6 -6
  349. package/dist/node/components/docs/libraries/LibrariesSchemaPage.js +16 -16
  350. package/dist/node/components/docs/libraries/LibrariesSupportBotPage.js +7 -7
  351. package/dist/node/components/docs/libraries/LibrariesTestingPage.js +7 -7
  352. package/dist/node/components/docs/libraries/LibrariesUIKitPage.js +10 -10
  353. package/dist/node/components/docs/libraries/LibrariesWorkflowComposerPage.js +5 -5
  354. package/dist/node/components/docs/libraries/LibrariesWorkflowsPage.js +8 -8
  355. package/dist/node/components/docs/libraries/index.js +1308 -1621
  356. package/dist/node/components/docs/manifesto/ManifestoPage.js +33 -138
  357. package/dist/node/components/docs/ops/AutoEvolutionOpsPage.js +9 -9
  358. package/dist/node/components/docs/ops/DistributedTracingOpsPage.js +5 -5
  359. package/dist/node/components/docs/ops/index.js +14 -14
  360. package/dist/node/components/docs/reference/DocsMarkdownContent.js +1 -1
  361. package/dist/node/components/docs/reference/DocsReferenceContent.js +2 -2
  362. package/dist/node/components/docs/reference/DocsReferenceIndexClient.js +8 -8
  363. package/dist/node/components/docs/reference/DocsReferenceIndexPage.js +8 -8
  364. package/dist/node/components/docs/reference/DocsReferencePage.js +2 -2
  365. package/dist/node/components/docs/reference/index.js +10 -10
  366. package/dist/node/components/docs/safety/SafetyAuditingPage.js +16 -16
  367. package/dist/node/components/docs/safety/SafetyMigrationsPage.js +15 -15
  368. package/dist/node/components/docs/safety/SafetyOverviewPage.js +69 -206
  369. package/dist/node/components/docs/safety/SafetyPDPPage.js +12 -12
  370. package/dist/node/components/docs/safety/SafetySecurityTrustPage.js +11 -11
  371. package/dist/node/components/docs/safety/SafetySigningPage.js +7 -7
  372. package/dist/node/components/docs/safety/SafetyTenantIsolationPage.js +6 -6
  373. package/dist/node/components/docs/safety/index.js +616 -753
  374. package/dist/node/components/docs/shared/StudioPrompt.js +5 -5
  375. package/dist/node/components/docs/specs/SpecsCapabilitiesPage.js +12 -12
  376. package/dist/node/components/docs/specs/SpecsDataViewsPage.js +14 -14
  377. package/dist/node/components/docs/specs/SpecsOverlaysPage.js +14 -14
  378. package/dist/node/components/docs/specs/SpecsOverviewPage.js +135 -297
  379. package/dist/node/components/docs/specs/SpecsPolicyPage.js +29 -29
  380. package/dist/node/components/docs/specs/SpecsWorkflowsPage.js +18 -18
  381. package/dist/node/components/docs/specs/index.js +814 -976
  382. package/dist/node/components/docs/studio/StudioBYOKPage.js +1 -1
  383. package/dist/node/components/docs/studio/StudioDeploymentsPage.js +1 -1
  384. package/dist/node/components/docs/studio/StudioGettingStartedPage.js +1 -1
  385. package/dist/node/components/docs/studio/StudioIntegrationsPage.js +1 -1
  386. package/dist/node/components/docs/studio/StudioOverviewPage.js +109 -56
  387. package/dist/node/components/docs/studio/StudioVisualBuilderPage.js +1 -1
  388. package/dist/node/components/docs/studio/index.js +170 -117
  389. package/dist/node/components/integrations/index.js +25 -25
  390. package/dist/node/components/integrations/molecules/IntegrationCard.js +5 -5
  391. package/dist/node/components/integrations/organisms/IntegrationMarketplace.js +12 -12
  392. package/dist/node/components/integrations/organisms/IntegrationSettings.js +7 -7
  393. package/dist/node/components/integrations/organisms/KnowledgeSourceList.js +6 -6
  394. package/dist/node/components/legal/PrivacyTemplate.js +67 -67
  395. package/dist/node/components/legal/TermsTemplate.js +54 -54
  396. package/dist/node/components/legal/index.js +121 -121
  397. package/dist/node/components/shared/FeatureGateNotice.js +4 -4
  398. package/dist/node/components/shared/index.js +4 -4
  399. package/dist/node/components/shell/WorkspaceHeader.js +4 -4
  400. package/dist/node/components/shell/WorkspaceProjectShellLayout.js +10 -10
  401. package/dist/node/components/shell/WorkspaceShellRenderer.js +8 -8
  402. package/dist/node/components/shell/WorkspaceSidebar.js +2 -2
  403. package/dist/node/components/shell/index.js +12 -12
  404. package/dist/node/components/templates/index.js +835 -835
  405. package/dist/node/components/templates/messaging/ConversationList.js +11 -11
  406. package/dist/node/components/templates/messaging/MessageComposer.js +11 -11
  407. package/dist/node/components/templates/messaging/MessageThread.js +6 -6
  408. package/dist/node/components/templates/messaging/MessagingWorkspace.js +23 -23
  409. package/dist/node/components/templates/messaging/index.js +23 -23
  410. package/dist/node/components/templates/recipes/LanguageSwitcher.js +1 -1
  411. package/dist/node/components/templates/recipes/RecipeCard.js +5 -5
  412. package/dist/node/components/templates/recipes/RecipeDetail.js +8 -8
  413. package/dist/node/components/templates/recipes/RecipeList.js +17 -17
  414. package/dist/node/components/templates/recipes/index.js +17 -17
  415. package/dist/node/components/templates/todos/FilterBar.js +9 -9
  416. package/dist/node/components/templates/todos/TaskForm.js +14 -14
  417. package/dist/node/components/templates/todos/TaskItem.js +4 -4
  418. package/dist/node/components/templates/todos/TaskList.js +30 -30
  419. package/dist/node/components/templates/todos/index.js +30 -30
  420. package/dist/node/features/contracts-registry.js +15 -15
  421. package/dist/node/features/docs/docs.contracts.js +2 -2
  422. package/dist/node/features/docs/index.js +2 -2
  423. package/dist/node/features/index.js +18 -18
  424. package/dist/node/features/registry.js +1 -1
  425. package/dist/node/index.js +14982 -16254
  426. package/dist/node/libs/email/client.js +1 -1
  427. package/dist/node/libs/email/contact.js +1 -1
  428. package/dist/node/libs/email/newsletter.js +1 -1
  429. package/dist/node/libs/email/waitlist-application.js +1 -1
  430. package/dist/node/libs/email/waitlist.js +1 -1
  431. package/dist/node/libs/email.js +1 -1
  432. package/dist/node/presentation/features/atoms/FeatureIcon/FeatureIcon.js +7 -7
  433. package/dist/node/presentation/features/atoms/FeatureIcon/index.js +7 -7
  434. package/dist/node/presentation/features/atoms/index.js +7 -7
  435. package/dist/node/presentation/features/hooks/index.js +56 -56
  436. package/dist/node/presentation/features/hooks/useContractsRegistry.js +18 -18
  437. package/dist/node/presentation/features/hooks/useFeatureFilters.js +1 -1
  438. package/dist/node/presentation/features/hooks/useFeatureRegistry.js +1 -1
  439. package/dist/node/presentation/features/hooks/useRelatedDocs.js +1 -1
  440. package/dist/node/presentation/features/index.js +1364 -1364
  441. package/dist/node/presentation/features/molecules/FeatureCard/FeatureCard.js +15 -15
  442. package/dist/node/presentation/features/molecules/FeatureCard/index.js +15 -15
  443. package/dist/node/presentation/features/molecules/FeatureCategoryHeader/FeatureCategoryHeader.js +7 -7
  444. package/dist/node/presentation/features/molecules/FeatureCategoryHeader/index.js +7 -7
  445. package/dist/node/presentation/features/molecules/FeatureFilters/FeatureFilters.js +1 -1
  446. package/dist/node/presentation/features/molecules/FeatureFilters/index.js +1 -1
  447. package/dist/node/presentation/features/molecules/FeatureHoverPreview/FeatureHoverPreview.js +5 -5
  448. package/dist/node/presentation/features/molecules/FeatureHoverPreview/index.js +5 -5
  449. package/dist/node/presentation/features/molecules/index.js +77 -77
  450. package/dist/node/presentation/features/organisms/FeatureDataViewsList.js +18 -18
  451. package/dist/node/presentation/features/organisms/FeatureDiscovery/FeatureDiscovery.js +121 -121
  452. package/dist/node/presentation/features/organisms/FeatureDiscovery/index.js +121 -121
  453. package/dist/node/presentation/features/organisms/FeatureEventsList.js +18 -18
  454. package/dist/node/presentation/features/organisms/FeatureFormsList.js +18 -18
  455. package/dist/node/presentation/features/organisms/FeatureOperationsList.js +15 -15
  456. package/dist/node/presentation/features/organisms/FeaturePresentationsList.js +18 -18
  457. package/dist/node/presentation/features/organisms/index.js +401 -401
  458. package/dist/node/presentation/features/templates/FeatureDataViewDetailTemplate/FeatureDataViewDetailTemplate.js +13 -13
  459. package/dist/node/presentation/features/templates/FeatureDataViewDetailTemplate/index.js +13 -13
  460. package/dist/node/presentation/features/templates/FeatureDataViewsTemplate/FeatureDataViewsTemplate.js +20 -20
  461. package/dist/node/presentation/features/templates/FeatureDataViewsTemplate/index.js +20 -20
  462. package/dist/node/presentation/features/templates/FeatureEventDetailTemplate/FeatureEventDetailTemplate.js +12 -12
  463. package/dist/node/presentation/features/templates/FeatureEventDetailTemplate/index.js +12 -12
  464. package/dist/node/presentation/features/templates/FeatureEventsTemplate/FeatureEventsTemplate.js +18 -18
  465. package/dist/node/presentation/features/templates/FeatureEventsTemplate/index.js +18 -18
  466. package/dist/node/presentation/features/templates/FeatureFormDetailTemplate/FeatureFormDetailTemplate.js +13 -13
  467. package/dist/node/presentation/features/templates/FeatureFormDetailTemplate/index.js +13 -13
  468. package/dist/node/presentation/features/templates/FeatureFormsTemplate/FeatureFormsTemplate.js +20 -20
  469. package/dist/node/presentation/features/templates/FeatureFormsTemplate/index.js +20 -20
  470. package/dist/node/presentation/features/templates/FeatureOperationDetailTemplate/FeatureOperationDetailTemplate.js +8 -8
  471. package/dist/node/presentation/features/templates/FeatureOperationDetailTemplate/index.js +8 -8
  472. package/dist/node/presentation/features/templates/FeatureOperationsTemplate/FeatureOperationsTemplate.js +15 -15
  473. package/dist/node/presentation/features/templates/FeatureOperationsTemplate/index.js +15 -15
  474. package/dist/node/presentation/features/templates/FeatureOverviewTemplate/FeatureOverviewTemplate.js +2 -2
  475. package/dist/node/presentation/features/templates/FeatureOverviewTemplate/index.js +2 -2
  476. package/dist/node/presentation/features/templates/FeaturePresentationDetailTemplate/FeaturePresentationDetailTemplate.js +12 -12
  477. package/dist/node/presentation/features/templates/FeaturePresentationDetailTemplate/index.js +12 -12
  478. package/dist/node/presentation/features/templates/FeaturePresentationsTemplate/FeaturePresentationsTemplate.js +18 -18
  479. package/dist/node/presentation/features/templates/FeaturePresentationsTemplate/index.js +18 -18
  480. package/dist/presentation/features/atoms/FeatureIcon/FeatureIcon.js +7 -7
  481. package/dist/presentation/features/atoms/FeatureIcon/index.d.ts +1 -1
  482. package/dist/presentation/features/atoms/FeatureIcon/index.js +7 -7
  483. package/dist/presentation/features/atoms/index.js +7 -7
  484. package/dist/presentation/features/hooks/index.d.ts +3 -3
  485. package/dist/presentation/features/hooks/index.js +56 -56
  486. package/dist/presentation/features/hooks/useContractsRegistry.js +18 -18
  487. package/dist/presentation/features/hooks/useFeatureFilters.js +1 -1
  488. package/dist/presentation/features/hooks/useFeatureRegistry.js +1 -1
  489. package/dist/presentation/features/hooks/useRelatedDocs.js +1 -1
  490. package/dist/presentation/features/index.d.ts +14 -14
  491. package/dist/presentation/features/index.js +1364 -1364
  492. package/dist/presentation/features/molecules/FeatureCard/FeatureCard.js +15 -15
  493. package/dist/presentation/features/molecules/FeatureCard/index.js +15 -15
  494. package/dist/presentation/features/molecules/FeatureCategoryHeader/FeatureCategoryHeader.js +7 -7
  495. package/dist/presentation/features/molecules/FeatureCategoryHeader/index.js +7 -7
  496. package/dist/presentation/features/molecules/FeatureFilters/FeatureFilters.js +1 -1
  497. package/dist/presentation/features/molecules/FeatureFilters/index.js +1 -1
  498. package/dist/presentation/features/molecules/FeatureHoverPreview/FeatureHoverPreview.js +5 -5
  499. package/dist/presentation/features/molecules/FeatureHoverPreview/index.js +5 -5
  500. package/dist/presentation/features/molecules/index.d.ts +1 -1
  501. package/dist/presentation/features/molecules/index.js +77 -77
  502. package/dist/presentation/features/organisms/FeatureDataViewsList.js +18 -18
  503. package/dist/presentation/features/organisms/FeatureDiscovery/FeatureDiscovery.js +121 -121
  504. package/dist/presentation/features/organisms/FeatureDiscovery/index.d.ts +1 -1
  505. package/dist/presentation/features/organisms/FeatureDiscovery/index.js +121 -121
  506. package/dist/presentation/features/organisms/FeatureEventsList.js +18 -18
  507. package/dist/presentation/features/organisms/FeatureFormsList.js +18 -18
  508. package/dist/presentation/features/organisms/FeatureOperationsList.js +15 -15
  509. package/dist/presentation/features/organisms/FeaturePresentationsList.js +18 -18
  510. package/dist/presentation/features/organisms/index.d.ts +4 -4
  511. package/dist/presentation/features/organisms/index.js +401 -401
  512. package/dist/presentation/features/templates/FeatureDataViewDetailTemplate/FeatureDataViewDetailTemplate.js +13 -13
  513. package/dist/presentation/features/templates/FeatureDataViewDetailTemplate/index.js +13 -13
  514. package/dist/presentation/features/templates/FeatureDataViewDetailTemplate/types.d.ts +1 -1
  515. package/dist/presentation/features/templates/FeatureDataViewsTemplate/FeatureDataViewsTemplate.js +20 -20
  516. package/dist/presentation/features/templates/FeatureDataViewsTemplate/index.js +20 -20
  517. package/dist/presentation/features/templates/FeatureEventDetailTemplate/FeatureEventDetailTemplate.js +12 -12
  518. package/dist/presentation/features/templates/FeatureEventDetailTemplate/index.js +12 -12
  519. package/dist/presentation/features/templates/FeatureEventsTemplate/FeatureEventsTemplate.js +18 -18
  520. package/dist/presentation/features/templates/FeatureEventsTemplate/index.js +18 -18
  521. package/dist/presentation/features/templates/FeatureFormDetailTemplate/FeatureFormDetailTemplate.js +13 -13
  522. package/dist/presentation/features/templates/FeatureFormDetailTemplate/index.js +13 -13
  523. package/dist/presentation/features/templates/FeatureFormsTemplate/FeatureFormsTemplate.js +20 -20
  524. package/dist/presentation/features/templates/FeatureFormsTemplate/index.js +20 -20
  525. package/dist/presentation/features/templates/FeatureOperationDetailTemplate/FeatureOperationDetailTemplate.js +8 -8
  526. package/dist/presentation/features/templates/FeatureOperationDetailTemplate/index.js +8 -8
  527. package/dist/presentation/features/templates/FeatureOperationsTemplate/FeatureOperationsTemplate.js +15 -15
  528. package/dist/presentation/features/templates/FeatureOperationsTemplate/index.js +15 -15
  529. package/dist/presentation/features/templates/FeatureOverviewTemplate/FeatureOverviewTemplate.js +2 -2
  530. package/dist/presentation/features/templates/FeatureOverviewTemplate/index.js +2 -2
  531. package/dist/presentation/features/templates/FeaturePresentationDetailTemplate/FeaturePresentationDetailTemplate.js +12 -12
  532. package/dist/presentation/features/templates/FeaturePresentationDetailTemplate/index.js +12 -12
  533. package/dist/presentation/features/templates/FeaturePresentationsTemplate/FeaturePresentationsTemplate.js +18 -18
  534. package/dist/presentation/features/templates/FeaturePresentationsTemplate/index.js +18 -18
  535. package/package.json +46 -32
  536. package/src/__tests__/env-setup.ts +1 -1
  537. package/src/__tests__/mocks/prisma.ts +78 -78
  538. package/src/__tests__/setup.ts +2 -2
  539. package/src/application/context-storage/index.ts +42 -42
  540. package/src/application/index.ts +1 -1
  541. package/src/application/mcp/cliMcp.ts +221 -221
  542. package/src/application/mcp/common.ts +210 -210
  543. package/src/application/mcp/contractsMcp.ts +15 -15
  544. package/src/application/mcp/contractsMcpResources.ts +119 -119
  545. package/src/application/mcp/contractsMcpTools.ts +218 -218
  546. package/src/application/mcp/contractsMcpTypes.ts +35 -35
  547. package/src/application/mcp/docsMcp.ts +173 -173
  548. package/src/application/mcp/index.ts +2 -2
  549. package/src/application/mcp/internalMcp.ts +204 -204
  550. package/src/application/mcp/providerRankingMcp.ts +346 -344
  551. package/src/bundles/LibraryBundle.ts +136 -136
  552. package/src/components/docs/DocsIndexPage.tsx +189 -241
  553. package/src/components/docs/advanced/AdvancedMCPPage.tsx +168 -168
  554. package/src/components/docs/advanced/AdvancedOverlayEditorPage.tsx +52 -52
  555. package/src/components/docs/advanced/AdvancedRenderersPage.tsx +53 -53
  556. package/src/components/docs/advanced/AdvancedSpecExperimentsPage.tsx +48 -48
  557. package/src/components/docs/advanced/AdvancedTelemetryPage.tsx +205 -205
  558. package/src/components/docs/advanced/AdvancedWorkflowMonitoringPage.tsx +42 -42
  559. package/src/components/docs/advanced/index.ts +2 -2
  560. package/src/components/docs/architecture/ArchitectureAppConfigPage.tsx +127 -127
  561. package/src/components/docs/architecture/ArchitectureControlPlanePage.tsx +79 -79
  562. package/src/components/docs/architecture/ArchitectureIntegrationBindingPage.tsx +147 -147
  563. package/src/components/docs/architecture/ArchitectureKnowledgeBindingPage.tsx +193 -193
  564. package/src/components/docs/architecture/ArchitectureMultiTenancyPage.tsx +73 -73
  565. package/src/components/docs/architecture/ArchitectureOverviewPage.tsx +98 -273
  566. package/src/components/docs/architecture/index.ts +3 -3
  567. package/src/components/docs/comparison/ComparisonAutomationPlatformsPage.tsx +137 -137
  568. package/src/components/docs/comparison/ComparisonEnterprisePlatformsPage.tsx +138 -138
  569. package/src/components/docs/comparison/ComparisonInternalToolBuildersPage.tsx +147 -147
  570. package/src/components/docs/comparison/ComparisonOverviewPage.tsx +106 -106
  571. package/src/components/docs/comparison/ComparisonWindmillPage.tsx +143 -143
  572. package/src/components/docs/comparison/ComparisonWorkflowEnginesPage.tsx +168 -168
  573. package/src/components/docs/comparison/index.ts +2 -2
  574. package/src/components/docs/docsManifest.ts +720 -0
  575. package/src/components/docs/ecosystem/IntegrationsPage.tsx +45 -45
  576. package/src/components/docs/ecosystem/PluginsPage.tsx +77 -77
  577. package/src/components/docs/ecosystem/RegistryPage.tsx +48 -48
  578. package/src/components/docs/ecosystem/TemplatesPage.tsx +52 -52
  579. package/src/components/docs/ecosystem/ecosystem.docblocks.ts +42 -42
  580. package/src/components/docs/ecosystem/index.ts +2 -2
  581. package/src/components/docs/examples/DocsExamplesPage.tsx +67 -66
  582. package/src/components/docs/generated/docs-index._common.json +1757 -1757
  583. package/src/components/docs/generated/docs-index.agent-console.json +376 -376
  584. package/src/components/docs/generated/docs-index.ai-chat-assistant.json +8 -8
  585. package/src/components/docs/generated/docs-index.ai-chat.json +104 -104
  586. package/src/components/docs/generated/docs-index.ai-support-bot.json +8 -8
  587. package/src/components/docs/generated/docs-index.analytics-dashboard.json +168 -168
  588. package/src/components/docs/generated/docs-index.app-config.json +136 -136
  589. package/src/components/docs/generated/docs-index.audit-trail.json +48 -48
  590. package/src/components/docs/generated/docs-index.calendar-google.json +8 -8
  591. package/src/components/docs/generated/docs-index.content-generation.json +8 -8
  592. package/src/components/docs/generated/docs-index.crm-pipeline.json +160 -160
  593. package/src/components/docs/generated/docs-index.email-gmail.json +8 -8
  594. package/src/components/docs/generated/docs-index.feature-flags.json +216 -216
  595. package/src/components/docs/generated/docs-index.files.json +176 -176
  596. package/src/components/docs/generated/docs-index.generated.ts +19 -19
  597. package/src/components/docs/generated/docs-index.health.json +96 -96
  598. package/src/components/docs/generated/docs-index.identity-rbac.json +312 -312
  599. package/src/components/docs/generated/docs-index.in-app-docs.json +8 -8
  600. package/src/components/docs/generated/docs-index.integration-hub.json +264 -264
  601. package/src/components/docs/generated/docs-index.integration-posthog.json +8 -8
  602. package/src/components/docs/generated/docs-index.integration-stripe.json +8 -8
  603. package/src/components/docs/generated/docs-index.integration-supabase.json +8 -8
  604. package/src/components/docs/generated/docs-index.jobs.json +136 -136
  605. package/src/components/docs/generated/docs-index.kb-update-pipeline.json +128 -128
  606. package/src/components/docs/generated/docs-index.knowledge-canon.json +8 -8
  607. package/src/components/docs/generated/docs-index.learning-journey-ambient-coach.json +8 -8
  608. package/src/components/docs/generated/docs-index.learning-journey-crm-onboarding.json +48 -48
  609. package/src/components/docs/generated/docs-index.learning-journey-duo-drills.json +8 -8
  610. package/src/components/docs/generated/docs-index.learning-journey-platform-tour.json +48 -48
  611. package/src/components/docs/generated/docs-index.learning-journey-quest-challenges.json +8 -8
  612. package/src/components/docs/generated/docs-index.learning-journey-registry.json +32 -32
  613. package/src/components/docs/generated/docs-index.learning-journey-studio-onboarding.json +48 -48
  614. package/src/components/docs/generated/docs-index.learning-journey-ui-coaching.json +8 -8
  615. package/src/components/docs/generated/docs-index.learning-journey-ui-gamified.json +8 -8
  616. package/src/components/docs/generated/docs-index.learning-journey-ui-onboarding.json +8 -8
  617. package/src/components/docs/generated/docs-index.learning-journey-ui-shared.json +8 -8
  618. package/src/components/docs/generated/docs-index.learning-journey.json +216 -216
  619. package/src/components/docs/generated/docs-index.learning-patterns.json +8 -8
  620. package/src/components/docs/generated/docs-index.lifecycle-cli.json +8 -8
  621. package/src/components/docs/generated/docs-index.lifecycle-dashboard.json +8 -8
  622. package/src/components/docs/generated/docs-index.locale-jurisdiction-gate.json +48 -48
  623. package/src/components/docs/generated/docs-index.manifest.json +376 -376
  624. package/src/components/docs/generated/docs-index.marketplace.json +336 -336
  625. package/src/components/docs/generated/docs-index.meeting-recorder-providers.json +8 -8
  626. package/src/components/docs/generated/docs-index.meeting-recorder.json +48 -48
  627. package/src/components/docs/generated/docs-index.metrics.json +200 -200
  628. package/src/components/docs/generated/docs-index.minimal.json +16 -16
  629. package/src/components/docs/generated/docs-index.notifications.json +64 -64
  630. package/src/components/docs/generated/docs-index.openbanking-powens.json +8 -8
  631. package/src/components/docs/generated/docs-index.openbanking.json +64 -64
  632. package/src/components/docs/generated/docs-index.opencode-cli.json +16 -16
  633. package/src/components/docs/generated/docs-index.personalization.json +8 -8
  634. package/src/components/docs/generated/docs-index.platform-acp.json +72 -72
  635. package/src/components/docs/generated/docs-index.platform-agent.json +96 -96
  636. package/src/components/docs/generated/docs-index.platform-context.json +56 -56
  637. package/src/components/docs/generated/docs-index.platform-database.json +48 -48
  638. package/src/components/docs/generated/docs-index.platform-docs.json +88 -88
  639. package/src/components/docs/generated/docs-index.platform-integrations.json +320 -320
  640. package/src/components/docs/generated/docs-index.platform-knowledge.json +56 -56
  641. package/src/components/docs/generated/docs-index.platform-provider-ranking.json +96 -96
  642. package/src/components/docs/generated/docs-index.pocket-family-office.json +120 -120
  643. package/src/components/docs/generated/docs-index.policy-safe-knowledge-assistant.json +8 -8
  644. package/src/components/docs/generated/docs-index.product-intent.json +8 -8
  645. package/src/components/docs/generated/docs-index.project-management-sync.json +8 -8
  646. package/src/components/docs/generated/docs-index.saas-boilerplate.json +208 -208
  647. package/src/components/docs/generated/docs-index.service-business-os.json +192 -192
  648. package/src/components/docs/generated/docs-index.team-hub.json +184 -184
  649. package/src/components/docs/generated/docs-index.unknown.json +512 -512
  650. package/src/components/docs/generated/docs-index.versioned-knowledge-base.json +80 -80
  651. package/src/components/docs/generated/docs-index.video-api-showcase.json +32 -32
  652. package/src/components/docs/generated/docs-index.video-docs-terminal.json +8 -8
  653. package/src/components/docs/generated/docs-index.video-marketing-clip.json +8 -8
  654. package/src/components/docs/generated/docs-index.voice-providers.json +8 -8
  655. package/src/components/docs/generated/docs-index.wealth-snapshot.json +152 -152
  656. package/src/components/docs/generated/docs-index.workflow-system.json +432 -432
  657. package/src/components/docs/generated/docs-index.workspace-cli.json +8 -8
  658. package/src/components/docs/generated/index.ts +6 -6
  659. package/src/components/docs/generated/loader.ts +49 -49
  660. package/src/components/docs/getting-started/CLIPage.tsx +157 -157
  661. package/src/components/docs/getting-started/CompatibilityPage.tsx +69 -69
  662. package/src/components/docs/getting-started/DataViewTutorialPage.tsx +63 -63
  663. package/src/components/docs/getting-started/DeveloperToolsPage.tsx +141 -140
  664. package/src/components/docs/getting-started/HelloWorldPage.tsx +88 -88
  665. package/src/components/docs/getting-started/InstallationPage.tsx +78 -78
  666. package/src/components/docs/getting-started/StartHerePage.tsx +64 -64
  667. package/src/components/docs/getting-started/TroubleshootingPage.tsx +68 -68
  668. package/src/components/docs/getting-started/VSCodeExtensionPage.tsx +233 -233
  669. package/src/components/docs/getting-started/getting-started.docblocks.ts +30 -30
  670. package/src/components/docs/getting-started/index.ts +6 -5
  671. package/src/components/docs/guides/GuideCIDiffGatingPage.tsx +88 -88
  672. package/src/components/docs/guides/GuideContractTypesPage.tsx +266 -266
  673. package/src/components/docs/guides/GuideDocsPipelinePage.tsx +78 -78
  674. package/src/components/docs/guides/GuideGenerateDocsClientsSchemasPage.tsx +89 -89
  675. package/src/components/docs/guides/GuideImportExistingCodebasesPage.tsx +360 -360
  676. package/src/components/docs/guides/GuideNextjsOneEndpointPage.tsx +117 -117
  677. package/src/components/docs/guides/GuideSpecValidationTypingPage.tsx +82 -82
  678. package/src/components/docs/guides/GuidesIndexPage.tsx +109 -99
  679. package/src/components/docs/guides/guides.docblocks.ts +60 -60
  680. package/src/components/docs/guides/index.ts +4 -4
  681. package/src/components/docs/index.ts +26 -40
  682. package/src/components/docs/integrations/IntegrationsCircuitBreakersPage.tsx +22 -22
  683. package/src/components/docs/integrations/IntegrationsElevenLabsPage.tsx +41 -41
  684. package/src/components/docs/integrations/IntegrationsGithubPage.tsx +66 -66
  685. package/src/components/docs/integrations/IntegrationsGmailPage.tsx +44 -44
  686. package/src/components/docs/integrations/IntegrationsGoogleCalendarPage.tsx +31 -31
  687. package/src/components/docs/integrations/IntegrationsHealthRoutingPage.tsx +80 -80
  688. package/src/components/docs/integrations/IntegrationsMistralPage.tsx +65 -65
  689. package/src/components/docs/integrations/IntegrationsOpenAIPage.tsx +54 -54
  690. package/src/components/docs/integrations/IntegrationsOverviewPage.tsx +124 -529
  691. package/src/components/docs/integrations/IntegrationsPostmarkPage.tsx +97 -97
  692. package/src/components/docs/integrations/IntegrationsPowensPage.tsx +165 -165
  693. package/src/components/docs/integrations/IntegrationsQdrantPage.tsx +44 -44
  694. package/src/components/docs/integrations/IntegrationsResendPage.tsx +40 -40
  695. package/src/components/docs/integrations/IntegrationsS3Page.tsx +48 -48
  696. package/src/components/docs/integrations/IntegrationsSlackPage.tsx +70 -70
  697. package/src/components/docs/integrations/IntegrationsSpecModelPage.tsx +139 -139
  698. package/src/components/docs/integrations/IntegrationsStripePage.tsx +153 -153
  699. package/src/components/docs/integrations/IntegrationsTwilioPage.tsx +50 -50
  700. package/src/components/docs/integrations/IntegrationsWhatsappMetaPage.tsx +69 -69
  701. package/src/components/docs/integrations/IntegrationsWhatsappTwilioPage.tsx +73 -73
  702. package/src/components/docs/integrations/index.ts +1 -1
  703. package/src/components/docs/intent/ContractFirstApiPage.tsx +61 -61
  704. package/src/components/docs/intent/DeterministicCodegenPage.tsx +81 -80
  705. package/src/components/docs/intent/GenerateClientFromSchemaPage.tsx +108 -108
  706. package/src/components/docs/intent/OpenapiAlternativePage.tsx +98 -98
  707. package/src/components/docs/intent/SchemaValidationTypescriptPage.tsx +79 -79
  708. package/src/components/docs/intent/SpecDrivenDevelopmentPage.tsx +67 -67
  709. package/src/components/docs/intent/index.ts +3 -3
  710. package/src/components/docs/intent/intent-pages.docblocks.ts +186 -186
  711. package/src/components/docs/knowledge/KnowledgeCategoriesPage.tsx +304 -304
  712. package/src/components/docs/knowledge/KnowledgeExamplesPage.tsx +84 -84
  713. package/src/components/docs/knowledge/KnowledgeOverviewPage.tsx +76 -285
  714. package/src/components/docs/knowledge/KnowledgeSourcesPage.tsx +171 -171
  715. package/src/components/docs/knowledge/KnowledgeSpacesPage.tsx +132 -132
  716. package/src/components/docs/knowledge/index.ts +1 -1
  717. package/src/components/docs/libraries/LibrariesAccessibilityPage.tsx +95 -95
  718. package/src/components/docs/libraries/LibrariesAiAgentPage.tsx +58 -58
  719. package/src/components/docs/libraries/LibrariesAnalyticsPage.tsx +39 -39
  720. package/src/components/docs/libraries/LibrariesContentGenPage.tsx +41 -41
  721. package/src/components/docs/libraries/LibrariesContractsPage.tsx +132 -132
  722. package/src/components/docs/libraries/LibrariesCostTrackingPage.tsx +47 -47
  723. package/src/components/docs/libraries/LibrariesDataBackendPage.tsx +73 -73
  724. package/src/components/docs/libraries/LibrariesDataViewsPage.tsx +76 -76
  725. package/src/components/docs/libraries/LibrariesDesignSystemPage.tsx +115 -115
  726. package/src/components/docs/libraries/LibrariesEvolutionPage.tsx +64 -64
  727. package/src/components/docs/libraries/LibrariesGraphQLPage.tsx +92 -92
  728. package/src/components/docs/libraries/LibrariesGrowthPage.tsx +37 -37
  729. package/src/components/docs/libraries/LibrariesMultiTenancyPage.tsx +47 -47
  730. package/src/components/docs/libraries/LibrariesObservabilityPage.tsx +58 -58
  731. package/src/components/docs/libraries/LibrariesOverlayEnginePage.tsx +51 -51
  732. package/src/components/docs/libraries/LibrariesOverviewPage.tsx +137 -301
  733. package/src/components/docs/libraries/LibrariesPersonalizationPage.tsx +57 -57
  734. package/src/components/docs/libraries/LibrariesProgressiveDeliveryPage.tsx +51 -51
  735. package/src/components/docs/libraries/LibrariesResiliencePage.tsx +54 -54
  736. package/src/components/docs/libraries/LibrariesRuntimePage.tsx +96 -96
  737. package/src/components/docs/libraries/LibrariesSLOPage.tsx +52 -52
  738. package/src/components/docs/libraries/LibrariesSchemaPage.tsx +131 -131
  739. package/src/components/docs/libraries/LibrariesSupportBotPage.tsx +59 -59
  740. package/src/components/docs/libraries/LibrariesTestingPage.tsx +64 -64
  741. package/src/components/docs/libraries/LibrariesUIKitPage.tsx +85 -85
  742. package/src/components/docs/libraries/LibrariesWorkflowComposerPage.tsx +38 -38
  743. package/src/components/docs/libraries/LibrariesWorkflowsPage.tsx +79 -79
  744. package/src/components/docs/libraries/index.ts +4 -4
  745. package/src/components/docs/manifesto/ManifestoPage.tsx +61 -132
  746. package/src/components/docs/ops/AutoEvolutionOpsPage.tsx +81 -81
  747. package/src/components/docs/ops/DistributedTracingOpsPage.tsx +28 -28
  748. package/src/components/docs/ops/ops-lifecycle.docblocks.ts +32 -32
  749. package/src/components/docs/ops/ops-runbooks-a.docblocks.ts +60 -60
  750. package/src/components/docs/ops/ops-runbooks-b.docblocks.ts +60 -60
  751. package/src/components/docs/ops/ops-slo-tenant.docblocks.ts +61 -61
  752. package/src/components/docs/ops/ops-top.docs.ts +10 -10
  753. package/src/components/docs/ops/ops.docs.ts +6 -6
  754. package/src/components/docs/product/product.docblocks.ts +60 -60
  755. package/src/components/docs/reference/DocsMarkdownContent.tsx +74 -74
  756. package/src/components/docs/reference/DocsReferenceContent.tsx +51 -51
  757. package/src/components/docs/reference/DocsReferenceIndexClient.tsx +106 -105
  758. package/src/components/docs/reference/DocsReferenceIndexPage.tsx +2 -2
  759. package/src/components/docs/reference/DocsReferencePage.tsx +3 -3
  760. package/src/components/docs/reference/docsMarkdownParser.ts +90 -90
  761. package/src/components/docs/safety/SafetyAuditingPage.tsx +189 -189
  762. package/src/components/docs/safety/SafetyMigrationsPage.tsx +189 -189
  763. package/src/components/docs/safety/SafetyOverviewPage.tsx +70 -157
  764. package/src/components/docs/safety/SafetyPDPPage.tsx +163 -163
  765. package/src/components/docs/safety/SafetySecurityTrustPage.tsx +89 -89
  766. package/src/components/docs/safety/SafetySigningPage.tsx +38 -38
  767. package/src/components/docs/safety/SafetyTenantIsolationPage.tsx +39 -39
  768. package/src/components/docs/safety/index.ts +3 -3
  769. package/src/components/docs/shared/StudioPrompt.tsx +17 -17
  770. package/src/components/docs/specs/SpecsCapabilitiesPage.tsx +79 -79
  771. package/src/components/docs/specs/SpecsDataViewsPage.tsx +142 -142
  772. package/src/components/docs/specs/SpecsOverlaysPage.tsx +202 -202
  773. package/src/components/docs/specs/SpecsOverviewPage.tsx +118 -193
  774. package/src/components/docs/specs/SpecsPolicyPage.tsx +233 -233
  775. package/src/components/docs/specs/SpecsWorkflowsPage.tsx +156 -156
  776. package/src/components/docs/specs/index.ts +3 -3
  777. package/src/components/docs/studio/StudioBYOKPage.tsx +11 -11
  778. package/src/components/docs/studio/StudioDeploymentsPage.tsx +11 -11
  779. package/src/components/docs/studio/StudioGettingStartedPage.tsx +11 -11
  780. package/src/components/docs/studio/StudioIntegrationsPage.tsx +11 -11
  781. package/src/components/docs/studio/StudioOverviewPage.tsx +94 -73
  782. package/src/components/docs/studio/StudioVisualBuilderPage.tsx +11 -11
  783. package/src/components/docs/studio/index.ts +4 -4
  784. package/src/components/docs/tech/contracts/tech-docs.docblocks.ts +10 -10
  785. package/src/components/integrations/molecules/IntegrationCard.tsx +71 -72
  786. package/src/components/integrations/organisms/IntegrationMarketplace.tsx +116 -116
  787. package/src/components/integrations/organisms/IntegrationSettings.tsx +201 -201
  788. package/src/components/integrations/organisms/KnowledgeSourceList.tsx +93 -94
  789. package/src/components/legal/PrivacyTemplate.tsx +611 -611
  790. package/src/components/legal/TermsTemplate.tsx +675 -675
  791. package/src/components/shared/FeatureGateNotice.tsx +26 -27
  792. package/src/components/shell/WorkspaceHeader.tsx +80 -80
  793. package/src/components/shell/WorkspaceProjectShellLayout.tsx +59 -58
  794. package/src/components/shell/WorkspaceShellRenderer.tsx +69 -68
  795. package/src/components/shell/WorkspaceSidebar.tsx +58 -58
  796. package/src/components/shell/index.ts +1 -1
  797. package/src/components/templates/engine/index.ts +29 -28
  798. package/src/components/templates/index.ts +1 -1
  799. package/src/components/templates/messaging/ConversationList.tsx +68 -69
  800. package/src/components/templates/messaging/MessageComposer.tsx +59 -59
  801. package/src/components/templates/messaging/MessageThread.tsx +73 -74
  802. package/src/components/templates/messaging/MessagingWorkspace.tsx +18 -19
  803. package/src/components/templates/messaging/index.ts +1 -1
  804. package/src/components/templates/messaging/types.ts +17 -17
  805. package/src/components/templates/recipes/LanguageSwitcher.tsx +20 -20
  806. package/src/components/templates/recipes/RecipeCard.tsx +56 -56
  807. package/src/components/templates/recipes/RecipeDetail.tsx +43 -43
  808. package/src/components/templates/recipes/RecipeList.tsx +62 -63
  809. package/src/components/templates/recipes/index.ts +2 -2
  810. package/src/components/templates/recipes/types.ts +24 -24
  811. package/src/components/templates/todos/FilterBar.tsx +84 -84
  812. package/src/components/templates/todos/TaskForm.tsx +118 -119
  813. package/src/components/templates/todos/TaskItem.tsx +78 -78
  814. package/src/components/templates/todos/TaskList.tsx +106 -107
  815. package/src/components/templates/todos/index.ts +2 -2
  816. package/src/components/templates/todos/types.ts +11 -11
  817. package/src/config/contractspec-blueprint.ts +55 -55
  818. package/src/config/contractspec-branding.ts +37 -37
  819. package/src/config/contractspec-routes.ts +22 -22
  820. package/src/config/index.ts +14 -15
  821. package/src/features/contracts-registry.ts +118 -118
  822. package/src/features/docs/docs.contracts.ts +6 -6
  823. package/src/features/docs/index.ts +6 -6
  824. package/src/features/docs.feature.ts +27 -27
  825. package/src/features/index.ts +59 -63
  826. package/src/features/mcp.feature.ts +24 -24
  827. package/src/features/presentations.feature.ts +27 -27
  828. package/src/features/registry.ts +14 -14
  829. package/src/index.ts +2 -2
  830. package/src/infrastructure/elysia/logger.ts +21 -21
  831. package/src/libs/email/client.test.ts +81 -81
  832. package/src/libs/email/client.ts +111 -111
  833. package/src/libs/email/contact.ts +35 -35
  834. package/src/libs/email/newsletter.ts +46 -46
  835. package/src/libs/email/types.ts +29 -29
  836. package/src/libs/email/utils.ts +5 -5
  837. package/src/libs/email/waitlist-application.ts +69 -69
  838. package/src/libs/email/waitlist.ts +46 -46
  839. package/src/libs/email.ts +7 -7
  840. package/src/libs/posthog/client.ts +44 -44
  841. package/src/libs/posthog/native.ts +23 -22
  842. package/src/libs/posthog/server.ts +7 -7
  843. package/src/libs/pricing-examples.ts +12 -12
  844. package/src/presentation/features/atoms/FeatureIcon/FeatureIcon.tsx +90 -90
  845. package/src/presentation/features/atoms/FeatureIcon/index.ts +3 -3
  846. package/src/presentation/features/hooks/index.ts +9 -9
  847. package/src/presentation/features/hooks/useContractsRegistry.ts +23 -23
  848. package/src/presentation/features/hooks/useFeatureFilters.ts +117 -117
  849. package/src/presentation/features/hooks/useFeatureRegistry.ts +40 -40
  850. package/src/presentation/features/hooks/useRelatedDocs.ts +28 -28
  851. package/src/presentation/features/index.ts +50 -52
  852. package/src/presentation/features/molecules/FeatureCard/FeatureCard.tsx +80 -80
  853. package/src/presentation/features/molecules/FeatureCard/types.ts +6 -6
  854. package/src/presentation/features/molecules/FeatureCategoryHeader/FeatureCategoryHeader.tsx +54 -54
  855. package/src/presentation/features/molecules/FeatureCategoryHeader/index.ts +2 -2
  856. package/src/presentation/features/molecules/FeatureFilters/FeatureFilters.tsx +67 -67
  857. package/src/presentation/features/molecules/FeatureFilters/types.ts +20 -20
  858. package/src/presentation/features/molecules/FeatureHoverPreview/FeatureHoverPreview.tsx +120 -121
  859. package/src/presentation/features/molecules/FeatureHoverPreview/index.ts +2 -2
  860. package/src/presentation/features/molecules/index.ts +8 -8
  861. package/src/presentation/features/organisms/FeatureDataViewsList.tsx +21 -21
  862. package/src/presentation/features/organisms/FeatureDetail/FeatureDetail.tsx +86 -86
  863. package/src/presentation/features/organisms/FeatureDetail/types.ts +4 -4
  864. package/src/presentation/features/organisms/FeatureDiscovery/FeatureDiscovery.tsx +210 -210
  865. package/src/presentation/features/organisms/FeatureDiscovery/index.ts +3 -3
  866. package/src/presentation/features/organisms/FeatureDiscovery/types.ts +10 -10
  867. package/src/presentation/features/organisms/FeatureEventsList.tsx +19 -19
  868. package/src/presentation/features/organisms/FeatureFormsList.tsx +19 -19
  869. package/src/presentation/features/organisms/FeatureOperationsList.tsx +21 -21
  870. package/src/presentation/features/organisms/FeaturePresentationsList.tsx +21 -21
  871. package/src/presentation/features/organisms/index.ts +6 -6
  872. package/src/presentation/features/templates/FeatureDataViewDetailTemplate/FeatureDataViewDetailTemplate.tsx +219 -219
  873. package/src/presentation/features/templates/FeatureDataViewDetailTemplate/types.ts +7 -7
  874. package/src/presentation/features/templates/FeatureDataViewsTemplate/FeatureDataViewsTemplate.tsx +26 -26
  875. package/src/presentation/features/templates/FeatureEventDetailTemplate/FeatureEventDetailTemplate.tsx +195 -195
  876. package/src/presentation/features/templates/FeatureEventDetailTemplate/types.ts +7 -7
  877. package/src/presentation/features/templates/FeatureEventsTemplate/FeatureEventsTemplate.tsx +26 -26
  878. package/src/presentation/features/templates/FeatureFormDetailTemplate/FeatureFormDetailTemplate.tsx +216 -216
  879. package/src/presentation/features/templates/FeatureFormDetailTemplate/types.ts +7 -7
  880. package/src/presentation/features/templates/FeatureFormsTemplate/FeatureFormsTemplate.tsx +26 -26
  881. package/src/presentation/features/templates/FeatureOperationDetailTemplate/FeatureOperationDetailTemplate.tsx +228 -228
  882. package/src/presentation/features/templates/FeatureOperationDetailTemplate/types.ts +7 -7
  883. package/src/presentation/features/templates/FeatureOperationsTemplate/FeatureOperationsTemplate.tsx +26 -26
  884. package/src/presentation/features/templates/FeatureOverviewTemplate/FeatureOverviewTemplate.tsx +24 -24
  885. package/src/presentation/features/templates/FeaturePresentationDetailTemplate/FeaturePresentationDetailTemplate.tsx +201 -201
  886. package/src/presentation/features/templates/FeaturePresentationDetailTemplate/types.ts +8 -8
  887. package/src/presentation/features/templates/FeaturePresentationsTemplate/FeaturePresentationsTemplate.tsx +26 -26
  888. package/src/presentation/features/templates/types.ts +2 -2
  889. package/tsconfig.json +12 -12
  890. package/tsdown.config.js +5 -5
@@ -1,45 +1,45 @@
1
1
  // src/features/docs/docs.contracts.ts
2
2
  import {
3
+ ContractReferenceQuery,
3
4
  DocSummaryModel,
4
5
  DocsIndexInput,
5
6
  DocsIndexOutput,
6
7
  DocsIndexQuery,
7
- DocsIndexQuery as DocsIndexQuery2,
8
- ContractReferenceQuery
8
+ DocsIndexQuery as DocsIndexQuery2
9
9
  } from "@contractspec/lib.contracts-spec/docs";
10
10
  // src/features/contracts-registry.ts
11
11
  import {
12
- OperationSpecRegistry,
13
- EventRegistry
12
+ EventRegistry,
13
+ OperationSpecRegistry
14
14
  } from "@contractspec/lib.contracts-spec";
15
- import {
16
- PresentationRegistry
17
- } from "@contractspec/lib.contracts-spec/presentations";
18
15
  import {
19
16
  DataViewRegistry
20
17
  } from "@contractspec/lib.contracts-spec/data-views";
21
- import { FormRegistry } from "@contractspec/lib.contracts-spec/forms";
22
- import {
23
- serializeOperationSpec,
24
- serializeEventSpec,
25
- serializePresentationSpec,
26
- serializeDataViewSpec,
27
- serializeFormSpec
28
- } from "@contractspec/lib.contracts-spec/serialization";
29
18
  import {
30
19
  ContractReferenceDataView,
31
20
  ContractReferenceQuery as ContractReferenceQuery2,
32
- DocsGeneratedEvent,
33
21
  DocsGenerateCommand,
22
+ DocsGeneratedEvent,
34
23
  DocsIndexDataView,
35
24
  DocsIndexQuery as DocsIndexQuery3,
36
25
  DocsLayoutPresentation,
37
- DocsPublishedEvent,
38
26
  DocsPublishCommand,
27
+ DocsPublishedEvent,
39
28
  DocsReferencePagePresentation,
40
29
  DocsSearchForm,
41
30
  ExampleCatalogDataView
42
31
  } from "@contractspec/lib.contracts-spec/docs";
32
+ import { FormRegistry } from "@contractspec/lib.contracts-spec/forms";
33
+ import {
34
+ PresentationRegistry
35
+ } from "@contractspec/lib.contracts-spec/presentations";
36
+ import {
37
+ serializeDataViewSpec,
38
+ serializeEventSpec,
39
+ serializeFormSpec,
40
+ serializeOperationSpec,
41
+ serializePresentationSpec
42
+ } from "@contractspec/lib.contracts-spec/serialization";
43
43
  var operationRegistry = null;
44
44
  function createContractSpecOperationRegistry() {
45
45
  const registry = new OperationSpecRegistry;
@@ -249,8 +249,8 @@ var PresentationsFeature = {
249
249
  };
250
250
 
251
251
  // src/features/registry.ts
252
- import { FeatureRegistry } from "@contractspec/lib.contracts-spec/features";
253
252
  import { AppConfigFeature } from "@contractspec/lib.contracts-spec/app-config";
253
+ import { FeatureRegistry } from "@contractspec/lib.contracts-spec/features";
254
254
  function createContractSpecFeatureRegistry() {
255
255
  const features = new FeatureRegistry;
256
256
  features.register(DocsFeature);
@@ -274,19 +274,19 @@ function resetContractSpecFeatureRegistry() {
274
274
  import { FeatureRegistry as FeatureRegistry2 } from "@contractspec/lib.contracts-spec/features";
275
275
 
276
276
  // src/presentation/features/atoms/FeatureIcon/FeatureIcon.tsx
277
- import * as React from "react";
277
+ import { cn } from "@contractspec/lib.ui-kit-web/ui/utils";
278
278
  import {
279
- FileText,
280
279
  Boxes,
281
- Settings,
282
- Globe,
283
- Shield,
284
280
  Database,
285
- MessageSquare,
281
+ FileText,
282
+ Globe,
286
283
  Layout,
284
+ MessageSquare,
285
+ Settings,
286
+ Shield,
287
287
  Workflow
288
288
  } from "lucide-react";
289
- import { cn } from "@contractspec/lib.ui-kit-web/ui/utils";
289
+ import * as React from "react";
290
290
  import { jsx } from "react/jsx-runtime";
291
291
  "use client";
292
292
  var domainIconMap = {
@@ -366,41 +366,20 @@ function getFeatureIconTone(stability) {
366
366
  return "primary";
367
367
  return stabilityToneMap[stability] || "primary";
368
368
  }
369
- // src/presentation/features/hooks/useFeatureRegistry.ts
369
+ // src/presentation/features/hooks/useContractsRegistry.ts
370
370
  import { useMemo as useMemo2 } from "react";
371
371
  "use client";
372
- function useFeatureRegistry() {
373
- const registry = useMemo2(() => getContractSpecFeatureRegistry(), []);
374
- return useMemo2(() => {
375
- const features = registry.list();
376
- return {
377
- features,
378
- getFeature: (key) => registry.get(key),
379
- getByTag: (tag) => registry.listByTag(tag),
380
- getByOwner: (owner) => registry.listByOwner(owner),
381
- getUniqueTags: () => registry.getUniqueTags(),
382
- getUniqueDomains: () => {
383
- const domains = new Set;
384
- for (const f of features) {
385
- if (f.meta.domain)
386
- domains.add(f.meta.domain);
387
- }
388
- return [...domains].sort();
389
- },
390
- getUniqueStabilities: () => {
391
- const stabilities = new Set;
392
- for (const f of features) {
393
- if (f.meta.stability)
394
- stabilities.add(f.meta.stability);
395
- }
396
- return [...stabilities].sort();
397
- }
398
- };
399
- }, [registry]);
372
+ function useContractsRegistry() {
373
+ const registry = useMemo2(() => getContractSpecOperationRegistry(), []);
374
+ return useMemo2(() => ({
375
+ resolveOperation: (ref) => resolveOperationSpec(ref.key, ref.version),
376
+ getOperationSpec: (key, version) => resolveOperationSpec(key, version),
377
+ listOperations: () => registry.list()
378
+ }), [registry]);
400
379
  }
401
380
 
402
381
  // src/presentation/features/hooks/useFeatureFilters.ts
403
- import { useState, useMemo as useMemo3, useCallback } from "react";
382
+ import { useCallback, useMemo as useMemo3, useState } from "react";
404
383
  "use client";
405
384
  var defaultFilters = {
406
385
  search: "",
@@ -472,20 +451,41 @@ function useFeatureFilters(features) {
472
451
  };
473
452
  }
474
453
 
475
- // src/presentation/features/hooks/useContractsRegistry.ts
454
+ // src/presentation/features/hooks/useFeatureRegistry.ts
476
455
  import { useMemo as useMemo4 } from "react";
477
456
  "use client";
478
- function useContractsRegistry() {
479
- const registry = useMemo4(() => getContractSpecOperationRegistry(), []);
480
- return useMemo4(() => ({
481
- resolveOperation: (ref) => resolveOperationSpec(ref.key, ref.version),
482
- getOperationSpec: (key, version) => resolveOperationSpec(key, version),
483
- listOperations: () => registry.list()
484
- }), [registry]);
457
+ function useFeatureRegistry() {
458
+ const registry = useMemo4(() => getContractSpecFeatureRegistry(), []);
459
+ return useMemo4(() => {
460
+ const features = registry.list();
461
+ return {
462
+ features,
463
+ getFeature: (key) => registry.get(key),
464
+ getByTag: (tag) => registry.listByTag(tag),
465
+ getByOwner: (owner) => registry.listByOwner(owner),
466
+ getUniqueTags: () => registry.getUniqueTags(),
467
+ getUniqueDomains: () => {
468
+ const domains = new Set;
469
+ for (const f of features) {
470
+ if (f.meta.domain)
471
+ domains.add(f.meta.domain);
472
+ }
473
+ return [...domains].sort();
474
+ },
475
+ getUniqueStabilities: () => {
476
+ const stabilities = new Set;
477
+ for (const f of features) {
478
+ if (f.meta.stability)
479
+ stabilities.add(f.meta.stability);
480
+ }
481
+ return [...stabilities].sort();
482
+ }
483
+ };
484
+ }, [registry]);
485
485
  }
486
486
  // src/presentation/features/hooks/useRelatedDocs.ts
487
- import { useMemo as useMemo5 } from "react";
488
487
  import { defaultDocRegistry } from "@contractspec/lib.contracts-spec/docs";
488
+ import { useMemo as useMemo5 } from "react";
489
489
  "use client";
490
490
  function useRelatedDocs(key, tags) {
491
491
  const docs2 = useMemo5(() => {
@@ -587,7 +587,7 @@ function FeatureHoverPreview({ feature }) {
587
587
  ]
588
588
  }),
589
589
  hasCapabilities && /* @__PURE__ */ jsxs("div", {
590
- className: "border-border/50 space-y-1.5 border-t pt-1",
590
+ className: "space-y-1.5 border-border/50 border-t pt-1",
591
591
  children: [
592
592
  capabilities?.provides?.length ? /* @__PURE__ */ jsxs(HStack, {
593
593
  gap: "xs",
@@ -646,13 +646,13 @@ function FeatureHoverPreview({ feature }) {
646
646
  meta.tags?.length ? /* @__PURE__ */ jsxs(HStack, {
647
647
  gap: "xs",
648
648
  wrap: "wrap",
649
- className: "border-border/50 items-center border-t pt-1",
649
+ className: "items-center border-border/50 border-t pt-1",
650
650
  children: [
651
651
  /* @__PURE__ */ jsx2(Tag, {
652
- className: "text-muted-foreground h-3.5 w-3.5"
652
+ className: "h-3.5 w-3.5 text-muted-foreground"
653
653
  }),
654
654
  meta.tags.slice(0, 4).map((tag) => /* @__PURE__ */ jsxs("span", {
655
- className: "bg-muted text-muted-foreground rounded px-1.5 py-0.5 text-xs",
655
+ className: "rounded bg-muted px-1.5 py-0.5 text-muted-foreground text-xs",
656
656
  children: [
657
657
  "#",
658
658
  tag
@@ -669,7 +669,7 @@ function FeatureHoverPreview({ feature }) {
669
669
  }) : null,
670
670
  meta.owners?.length ? /* @__PURE__ */ jsxs(HStack, {
671
671
  gap: "xs",
672
- className: "text-muted-foreground items-center text-xs",
672
+ className: "items-center text-muted-foreground text-xs",
673
673
  children: [
674
674
  /* @__PURE__ */ jsx2(Users, {
675
675
  className: "h-3.5 w-3.5"
@@ -685,7 +685,7 @@ function FeatureHoverPreview({ feature }) {
685
685
  // src/presentation/features/molecules/FeatureCard/FeatureCard.tsx
686
686
  import { EntityCard, StatusChip as StatusChip2 } from "@contractspec/lib.design-system";
687
687
  import { HStack as HStack2 } from "@contractspec/lib.ui-kit-web/ui/stack";
688
- import { Zap as Zap2, Radio as Radio2, Layout as Layout3, Shield as Shield3 } from "lucide-react";
688
+ import { Layout as Layout3, Radio as Radio2, Shield as Shield3, Zap as Zap2 } from "lucide-react";
689
689
  import { jsx as jsx3, jsxs as jsxs2 } from "react/jsx-runtime";
690
690
  "use client";
691
691
  var stabilityTone = {
@@ -724,7 +724,7 @@ function FeatureCard({
724
724
  size: "sm"
725
725
  }),
726
726
  meta: meta.description ? /* @__PURE__ */ jsx3("span", {
727
- className: "text-muted-foreground line-clamp-2 text-sm",
727
+ className: "line-clamp-2 text-muted-foreground text-sm",
728
728
  children: meta.description
729
729
  }) : undefined,
730
730
  preview: /* @__PURE__ */ jsx3(FeatureHoverPreview, {
@@ -732,7 +732,7 @@ function FeatureCard({
732
732
  }),
733
733
  footer: /* @__PURE__ */ jsxs2(HStack2, {
734
734
  gap: "md",
735
- className: "text-muted-foreground w-full justify-between text-xs",
735
+ className: "w-full justify-between text-muted-foreground text-xs",
736
736
  children: [
737
737
  /* @__PURE__ */ jsxs2(HStack2, {
738
738
  gap: "sm",
@@ -779,12 +779,59 @@ function FeatureCard({
779
779
  })
780
780
  });
781
781
  }
782
- // src/presentation/features/molecules/FeatureFilters/FeatureFilters.tsx
783
- import { Button, Input } from "@contractspec/lib.design-system";
784
- import { VStack, HStack as HStack3 } from "@contractspec/lib.ui-kit-web/ui/stack";
782
+ // src/presentation/features/molecules/FeatureCategoryHeader/FeatureCategoryHeader.tsx
783
+ import { StatusChip as StatusChip3 } from "@contractspec/lib.design-system";
784
+ import { HStack as HStack3 } from "@contractspec/lib.ui-kit-web/ui/stack";
785
785
  import { cn as cn2 } from "@contractspec/lib.ui-kit-web/ui/utils";
786
+ import { Boxes as Boxes2, ChevronDown } from "lucide-react";
786
787
  import { jsx as jsx4, jsxs as jsxs3 } from "react/jsx-runtime";
787
788
  "use client";
789
+ function FeatureCategoryHeader({
790
+ title,
791
+ count,
792
+ icon,
793
+ isCollapsed = false,
794
+ onToggle,
795
+ className
796
+ }) {
797
+ return /* @__PURE__ */ jsxs3("button", {
798
+ type: "button",
799
+ onClick: onToggle,
800
+ className: cn2("flex w-full items-center justify-between rounded-lg px-4 py-3", "bg-muted/30 transition-colors hover:bg-muted/50", "group cursor-pointer", className),
801
+ children: [
802
+ /* @__PURE__ */ jsxs3(HStack3, {
803
+ gap: "sm",
804
+ className: "items-center",
805
+ children: [
806
+ /* @__PURE__ */ jsx4("div", {
807
+ className: "text-muted-foreground transition-colors group-hover:text-foreground",
808
+ children: icon || /* @__PURE__ */ jsx4(Boxes2, {
809
+ className: "h-5 w-5"
810
+ })
811
+ }),
812
+ /* @__PURE__ */ jsx4("span", {
813
+ className: "font-semibold text-lg capitalize transition-colors group-hover:text-primary",
814
+ children: title
815
+ }),
816
+ /* @__PURE__ */ jsx4(StatusChip3, {
817
+ tone: "neutral",
818
+ label: `${count} ${count === 1 ? "feature" : "features"}`,
819
+ size: "sm"
820
+ })
821
+ ]
822
+ }),
823
+ /* @__PURE__ */ jsx4(ChevronDown, {
824
+ className: cn2("h-5 w-5 text-muted-foreground transition-transform duration-200", isCollapsed && "-rotate-90")
825
+ })
826
+ ]
827
+ });
828
+ }
829
+ // src/presentation/features/molecules/FeatureFilters/FeatureFilters.tsx
830
+ import { Button, Input } from "@contractspec/lib.design-system";
831
+ import { HStack as HStack4, VStack } from "@contractspec/lib.ui-kit-web/ui/stack";
832
+ import { cn as cn3 } from "@contractspec/lib.ui-kit-web/ui/utils";
833
+ import { jsx as jsx5, jsxs as jsxs4 } from "react/jsx-runtime";
834
+ "use client";
788
835
  function FeatureFiltersBar({
789
836
  uniqueTags,
790
837
  uniqueStabilities,
@@ -796,23 +843,23 @@ function FeatureFiltersBar({
796
843
  hasActiveFilters,
797
844
  className
798
845
  }) {
799
- return /* @__PURE__ */ jsxs3(VStack, {
846
+ return /* @__PURE__ */ jsxs4(VStack, {
800
847
  gap: "md",
801
- className: cn2("w-full", className),
848
+ className: cn3("w-full", className),
802
849
  children: [
803
- /* @__PURE__ */ jsxs3(HStack3, {
850
+ /* @__PURE__ */ jsxs4(HStack4, {
804
851
  gap: "md",
805
852
  justify: "between",
806
853
  className: "w-full",
807
854
  children: [
808
- /* @__PURE__ */ jsx4(Input, {
855
+ /* @__PURE__ */ jsx5(Input, {
809
856
  placeholder: "Search features...",
810
857
  value: filters.search,
811
858
  onChange: (e) => setSearch(e.target.value),
812
859
  className: "max-w-md",
813
860
  "aria-label": "Search features"
814
861
  }),
815
- hasActiveFilters && /* @__PURE__ */ jsx4(Button, {
862
+ hasActiveFilters && /* @__PURE__ */ jsx5(Button, {
816
863
  variant: "ghost",
817
864
  size: "sm",
818
865
  onClick: clearFilters,
@@ -820,15 +867,15 @@ function FeatureFiltersBar({
820
867
  })
821
868
  ]
822
869
  }),
823
- uniqueStabilities.length > 0 && /* @__PURE__ */ jsxs3(HStack3, {
870
+ uniqueStabilities.length > 0 && /* @__PURE__ */ jsxs4(HStack4, {
824
871
  gap: "xs",
825
872
  wrap: "wrap",
826
873
  children: [
827
- /* @__PURE__ */ jsx4("span", {
874
+ /* @__PURE__ */ jsx5("span", {
828
875
  className: "text-muted-foreground text-sm",
829
876
  children: "Stability:"
830
877
  }),
831
- uniqueStabilities.map((stability) => /* @__PURE__ */ jsx4(Button, {
878
+ uniqueStabilities.map((stability) => /* @__PURE__ */ jsx5(Button, {
832
879
  variant: filters.stability.includes(stability) ? "default" : "outline",
833
880
  size: "sm",
834
881
  onClick: () => toggleStability(stability),
@@ -837,15 +884,15 @@ function FeatureFiltersBar({
837
884
  }, stability))
838
885
  ]
839
886
  }),
840
- uniqueTags.length > 0 && /* @__PURE__ */ jsxs3(HStack3, {
887
+ uniqueTags.length > 0 && /* @__PURE__ */ jsxs4(HStack4, {
841
888
  gap: "xs",
842
889
  wrap: "wrap",
843
890
  children: [
844
- /* @__PURE__ */ jsx4("span", {
891
+ /* @__PURE__ */ jsx5("span", {
845
892
  className: "text-muted-foreground text-sm",
846
893
  children: "Tags:"
847
894
  }),
848
- uniqueTags.slice(0, 10).map((tag) => /* @__PURE__ */ jsxs3(Button, {
895
+ uniqueTags.slice(0, 10).map((tag) => /* @__PURE__ */ jsxs4(Button, {
849
896
  variant: filters.tags.includes(tag) ? "default" : "outline",
850
897
  size: "sm",
851
898
  onClick: () => toggleTag(tag),
@@ -855,7 +902,7 @@ function FeatureFiltersBar({
855
902
  tag
856
903
  ]
857
904
  }, tag)),
858
- uniqueTags.length > 10 && /* @__PURE__ */ jsxs3("span", {
905
+ uniqueTags.length > 10 && /* @__PURE__ */ jsxs4("span", {
859
906
  className: "text-muted-foreground text-sm",
860
907
  children: [
861
908
  "+",
@@ -868,88 +915,219 @@ function FeatureFiltersBar({
868
915
  ]
869
916
  });
870
917
  }
871
- // src/presentation/features/molecules/FeatureCategoryHeader/FeatureCategoryHeader.tsx
872
- import { cn as cn3 } from "@contractspec/lib.ui-kit-web/ui/utils";
873
- import { ChevronDown, Boxes as Boxes2 } from "lucide-react";
874
- import { HStack as HStack4 } from "@contractspec/lib.ui-kit-web/ui/stack";
875
- import { StatusChip as StatusChip3 } from "@contractspec/lib.design-system";
876
- import { jsx as jsx5, jsxs as jsxs4 } from "react/jsx-runtime";
918
+ // src/presentation/features/organisms/FeatureDataViewsList.tsx
919
+ import { EntityCard as EntityCard2 } from "@contractspec/lib.design-system";
920
+ import { Table } from "lucide-react";
921
+ import { jsx as jsx6 } from "react/jsx-runtime";
877
922
  "use client";
878
- function FeatureCategoryHeader({
879
- title,
880
- count,
881
- icon,
882
- isCollapsed = false,
883
- onToggle,
884
- className
923
+ function FeatureDataViewsList({
924
+ feature
885
925
  }) {
886
- return /* @__PURE__ */ jsxs4("button", {
887
- type: "button",
888
- onClick: onToggle,
889
- className: cn3("flex w-full items-center justify-between rounded-lg px-4 py-3", "bg-muted/30 hover:bg-muted/50 transition-colors", "group cursor-pointer", className),
926
+ if (!feature.dataViews?.length)
927
+ return null;
928
+ return /* @__PURE__ */ jsx6("div", {
929
+ className: "grid grid-cols-1 gap-4 md:grid-cols-2 lg:grid-cols-3",
930
+ children: feature.dataViews.map((view) => {
931
+ const spec = resolveSerializedDataViewSpec(view.key, view.version);
932
+ return /* @__PURE__ */ jsx6(EntityCard2, {
933
+ cardTitle: view.key,
934
+ cardSubtitle: `v${view.version}`,
935
+ footer: spec?.meta.description,
936
+ icon: /* @__PURE__ */ jsx6(Table, {
937
+ className: "h-4 w-4"
938
+ }),
939
+ href: `/features/${feature.meta.key}/dataviews/${view.key}`
940
+ }, view.key);
941
+ })
942
+ });
943
+ }
944
+
945
+ // src/presentation/features/organisms/FeatureDetail/FeatureDetail.tsx
946
+ import {
947
+ StatCard,
948
+ StatCardGroup,
949
+ StatusChip as StatusChip4
950
+ } from "@contractspec/lib.design-system";
951
+ import { Box, HStack as HStack5, VStack as VStack2 } from "@contractspec/lib.ui-kit-web/ui/stack";
952
+ import { cn as cn4 } from "@contractspec/lib.ui-kit-web/ui/utils";
953
+ import Link from "next/link";
954
+ import { jsx as jsx7, jsxs as jsxs5 } from "react/jsx-runtime";
955
+ "use client";
956
+ var stabilityTone2 = {
957
+ stable: "success",
958
+ beta: "warning",
959
+ experimental: "info",
960
+ deprecated: "danger"
961
+ };
962
+ function FeatureDetail({ feature, className }) {
963
+ const { meta, operations, events, presentations, capabilities } = feature;
964
+ const tone = stabilityTone2[meta.stability] ?? "neutral";
965
+ return /* @__PURE__ */ jsxs5(VStack2, {
966
+ gap: "lg",
967
+ className: cn4("w-full", className),
890
968
  children: [
891
- /* @__PURE__ */ jsxs4(HStack4, {
969
+ /* @__PURE__ */ jsxs5(HStack5, {
892
970
  gap: "sm",
893
- className: "items-center",
894
971
  children: [
895
- /* @__PURE__ */ jsx5("div", {
896
- className: "text-muted-foreground group-hover:text-foreground transition-colors",
897
- children: icon || /* @__PURE__ */ jsx5(Boxes2, {
898
- className: "h-5 w-5"
899
- })
972
+ /* @__PURE__ */ jsx7(StatusChip4, {
973
+ tone,
974
+ label: meta.stability ?? "unknown"
900
975
  }),
901
- /* @__PURE__ */ jsx5("span", {
902
- className: "group-hover:text-primary text-lg font-semibold capitalize transition-colors",
903
- children: title
976
+ /* @__PURE__ */ jsx7(StatusChip4, {
977
+ tone: "neutral",
978
+ label: meta.key,
979
+ size: "sm"
904
980
  }),
905
- /* @__PURE__ */ jsx5(StatusChip3, {
981
+ /* @__PURE__ */ jsx7(StatusChip4, {
906
982
  tone: "neutral",
907
- label: `${count} ${count === 1 ? "feature" : "features"}`,
983
+ label: `v${meta.version}`,
908
984
  size: "sm"
909
985
  })
910
986
  ]
911
987
  }),
912
- /* @__PURE__ */ jsx5(ChevronDown, {
913
- className: cn3("text-muted-foreground h-5 w-5 transition-transform duration-200", isCollapsed && "-rotate-90")
914
- })
915
- ]
916
- });
917
- }
918
- // src/presentation/features/organisms/FeatureDiscovery/FeatureDiscovery.tsx
919
- import * as React2 from "react";
920
- import {
921
- PageHeaderResponsive,
922
- EmptyState,
923
- Button as Button2,
924
- StatusChip as StatusChip4
925
- } from "@contractspec/lib.design-system";
926
- import { VStack as VStack2, HStack as HStack5 } from "@contractspec/lib.ui-kit-web/ui/stack";
927
- import { cn as cn4 } from "@contractspec/lib.ui-kit-web/ui/utils";
928
- import { LayoutGrid, List, Star } from "lucide-react";
929
- import { jsx as jsx6, jsxs as jsxs5 } from "react/jsx-runtime";
930
- "use client";
931
- function groupFeaturesByDomain(features) {
932
- const groups = {};
933
- for (const feature of features) {
934
- const domain = feature.meta.domain || "Other";
935
- if (!groups[domain])
936
- groups[domain] = [];
937
- groups[domain].push(feature);
938
- }
939
- return groups;
940
- }
941
- function groupFeaturesByStability(features) {
942
- const order = ["stable", "beta", "experimental", "deprecated", "unknown"];
943
- const groups = {};
944
- for (const feature of features) {
945
- const stability = feature.meta.stability || "unknown";
946
- if (!groups[stability])
947
- groups[stability] = [];
948
- groups[stability].push(feature);
949
- }
950
- const sorted = {};
951
- for (const key of order) {
952
- if (groups[key])
988
+ /* @__PURE__ */ jsxs5(StatCardGroup, {
989
+ children: [
990
+ /* @__PURE__ */ jsx7(Link, {
991
+ href: `./${feature.meta.key}/operations`,
992
+ children: /* @__PURE__ */ jsx7(StatCard, {
993
+ label: "Operations",
994
+ value: operations?.length ?? 0
995
+ })
996
+ }),
997
+ /* @__PURE__ */ jsx7(Link, {
998
+ href: `./${feature.meta.key}/events`,
999
+ children: /* @__PURE__ */ jsx7(StatCard, {
1000
+ label: "Events",
1001
+ value: events?.length ?? 0
1002
+ })
1003
+ }),
1004
+ /* @__PURE__ */ jsx7(Link, {
1005
+ href: `./${feature.meta.key}/presentations`,
1006
+ children: /* @__PURE__ */ jsx7(StatCard, {
1007
+ label: "Presentations",
1008
+ value: presentations?.length ?? 0
1009
+ })
1010
+ })
1011
+ ]
1012
+ }),
1013
+ capabilities?.provides?.length ? /* @__PURE__ */ jsxs5(Box, {
1014
+ className: "flex-col rounded-lg border p-4",
1015
+ gap: "sm",
1016
+ align: "start",
1017
+ children: [
1018
+ /* @__PURE__ */ jsx7("span", {
1019
+ className: "font-semibold",
1020
+ children: "Provides Capabilities"
1021
+ }),
1022
+ /* @__PURE__ */ jsx7(HStack5, {
1023
+ gap: "xs",
1024
+ wrap: "wrap",
1025
+ children: capabilities.provides.map((cap) => /* @__PURE__ */ jsx7(StatusChip4, {
1026
+ tone: "success",
1027
+ label: `${cap.key} v${cap.version}`,
1028
+ size: "sm"
1029
+ }, `${cap.key}-${cap.version}`))
1030
+ })
1031
+ ]
1032
+ }) : null,
1033
+ capabilities?.requires?.length ? /* @__PURE__ */ jsxs5(Box, {
1034
+ className: "flex-col rounded-lg border p-4",
1035
+ gap: "sm",
1036
+ align: "start",
1037
+ children: [
1038
+ /* @__PURE__ */ jsx7("span", {
1039
+ className: "font-semibold",
1040
+ children: "Requires Capabilities"
1041
+ }),
1042
+ /* @__PURE__ */ jsx7(HStack5, {
1043
+ gap: "xs",
1044
+ wrap: "wrap",
1045
+ children: capabilities.requires.map((req) => /* @__PURE__ */ jsx7(StatusChip4, {
1046
+ tone: "info",
1047
+ label: `${req.key}${req.version ? ` v${req.version}` : ""}${req.optional ? " (optional)" : ""}`,
1048
+ size: "sm"
1049
+ }, req.key))
1050
+ })
1051
+ ]
1052
+ }) : null,
1053
+ meta.tags?.length ? /* @__PURE__ */ jsxs5(Box, {
1054
+ className: "flex-col rounded-lg border p-4",
1055
+ gap: "sm",
1056
+ align: "start",
1057
+ children: [
1058
+ /* @__PURE__ */ jsx7("span", {
1059
+ className: "font-semibold",
1060
+ children: "Tags"
1061
+ }),
1062
+ /* @__PURE__ */ jsx7(HStack5, {
1063
+ gap: "xs",
1064
+ wrap: "wrap",
1065
+ children: meta.tags.map((tag) => /* @__PURE__ */ jsx7(StatusChip4, {
1066
+ tone: "neutral",
1067
+ label: `#${tag}`,
1068
+ size: "sm"
1069
+ }, tag))
1070
+ })
1071
+ ]
1072
+ }) : null,
1073
+ meta.owners?.length ? /* @__PURE__ */ jsxs5(Box, {
1074
+ className: "flex-col rounded-lg border p-4",
1075
+ gap: "sm",
1076
+ align: "start",
1077
+ children: [
1078
+ /* @__PURE__ */ jsx7("span", {
1079
+ className: "font-semibold",
1080
+ children: "Owners"
1081
+ }),
1082
+ /* @__PURE__ */ jsx7(HStack5, {
1083
+ gap: "xs",
1084
+ wrap: "wrap",
1085
+ children: meta.owners.map((owner) => /* @__PURE__ */ jsx7(StatusChip4, {
1086
+ tone: "neutral",
1087
+ label: owner,
1088
+ size: "sm"
1089
+ }, owner))
1090
+ })
1091
+ ]
1092
+ }) : null
1093
+ ]
1094
+ });
1095
+ }
1096
+ // src/presentation/features/organisms/FeatureDiscovery/FeatureDiscovery.tsx
1097
+ import {
1098
+ Button as Button2,
1099
+ EmptyState,
1100
+ PageHeaderResponsive,
1101
+ StatusChip as StatusChip5
1102
+ } from "@contractspec/lib.design-system";
1103
+ import { HStack as HStack6, VStack as VStack3 } from "@contractspec/lib.ui-kit-web/ui/stack";
1104
+ import { cn as cn5 } from "@contractspec/lib.ui-kit-web/ui/utils";
1105
+ import { LayoutGrid, List, Star } from "lucide-react";
1106
+ import * as React2 from "react";
1107
+ import { jsx as jsx8, jsxs as jsxs6 } from "react/jsx-runtime";
1108
+ "use client";
1109
+ function groupFeaturesByDomain(features) {
1110
+ const groups = {};
1111
+ for (const feature of features) {
1112
+ const domain = feature.meta.domain || "Other";
1113
+ if (!groups[domain])
1114
+ groups[domain] = [];
1115
+ groups[domain].push(feature);
1116
+ }
1117
+ return groups;
1118
+ }
1119
+ function groupFeaturesByStability(features) {
1120
+ const order = ["stable", "beta", "experimental", "deprecated", "unknown"];
1121
+ const groups = {};
1122
+ for (const feature of features) {
1123
+ const stability = feature.meta.stability || "unknown";
1124
+ if (!groups[stability])
1125
+ groups[stability] = [];
1126
+ groups[stability].push(feature);
1127
+ }
1128
+ const sorted = {};
1129
+ for (const key of order) {
1130
+ if (groups[key])
953
1131
  sorted[key] = groups[key];
954
1132
  }
955
1133
  return sorted;
@@ -996,42 +1174,42 @@ function FeatureDiscovery({
996
1174
  });
997
1175
  };
998
1176
  const gridClasses = viewMode === "grid" ? "grid grid-cols-1 gap-4 sm:grid-cols-2 lg:grid-cols-3" : "flex flex-col gap-3";
999
- const renderFeatureCards = (featureList) => /* @__PURE__ */ jsx6("div", {
1177
+ const renderFeatureCards = (featureList) => /* @__PURE__ */ jsx8("div", {
1000
1178
  className: gridClasses,
1001
- children: featureList.map((feature) => /* @__PURE__ */ jsx6(FeatureCard, {
1179
+ children: featureList.map((feature) => /* @__PURE__ */ jsx8(FeatureCard, {
1002
1180
  feature,
1003
1181
  onSelect: onSelectFeature
1004
1182
  }, feature.meta.key))
1005
1183
  });
1006
- return /* @__PURE__ */ jsxs5(VStack2, {
1184
+ return /* @__PURE__ */ jsxs6(VStack3, {
1007
1185
  gap: "lg",
1008
- className: cn4("w-full p-6", className),
1186
+ className: cn5("w-full p-6", className),
1009
1187
  children: [
1010
- /* @__PURE__ */ jsxs5("div", {
1188
+ /* @__PURE__ */ jsxs6("div", {
1011
1189
  className: "flex flex-col gap-4 sm:flex-row sm:items-center sm:justify-between",
1012
1190
  children: [
1013
- /* @__PURE__ */ jsx6(PageHeaderResponsive, {
1191
+ /* @__PURE__ */ jsx8(PageHeaderResponsive, {
1014
1192
  title: "Feature Discovery",
1015
1193
  subtitle: `Browse ${features.length} available ContractSpec features`
1016
1194
  }),
1017
- /* @__PURE__ */ jsxs5(HStack5, {
1195
+ /* @__PURE__ */ jsxs6(HStack6, {
1018
1196
  gap: "xs",
1019
1197
  children: [
1020
- /* @__PURE__ */ jsx6("button", {
1198
+ /* @__PURE__ */ jsx8("button", {
1021
1199
  type: "button",
1022
1200
  onClick: () => setViewMode("grid"),
1023
- className: cn4("rounded-md p-2 transition-colors", viewMode === "grid" ? "bg-primary text-primary-foreground" : "bg-muted hover:bg-muted/80 text-muted-foreground"),
1201
+ className: cn5("rounded-md p-2 transition-colors", viewMode === "grid" ? "bg-primary text-primary-foreground" : "bg-muted text-muted-foreground hover:bg-muted/80"),
1024
1202
  "aria-label": "Grid view",
1025
- children: /* @__PURE__ */ jsx6(LayoutGrid, {
1203
+ children: /* @__PURE__ */ jsx8(LayoutGrid, {
1026
1204
  className: "h-4 w-4"
1027
1205
  })
1028
1206
  }),
1029
- /* @__PURE__ */ jsx6("button", {
1207
+ /* @__PURE__ */ jsx8("button", {
1030
1208
  type: "button",
1031
1209
  onClick: () => setViewMode("list"),
1032
- className: cn4("rounded-md p-2 transition-colors", viewMode === "list" ? "bg-primary text-primary-foreground" : "bg-muted hover:bg-muted/80 text-muted-foreground"),
1210
+ className: cn5("rounded-md p-2 transition-colors", viewMode === "list" ? "bg-primary text-primary-foreground" : "bg-muted text-muted-foreground hover:bg-muted/80"),
1033
1211
  "aria-label": "List view",
1034
- children: /* @__PURE__ */ jsx6(List, {
1212
+ children: /* @__PURE__ */ jsx8(List, {
1035
1213
  className: "h-4 w-4"
1036
1214
  })
1037
1215
  })
@@ -1039,7 +1217,7 @@ function FeatureDiscovery({
1039
1217
  })
1040
1218
  ]
1041
1219
  }),
1042
- /* @__PURE__ */ jsx6(FeatureFiltersBar, {
1220
+ /* @__PURE__ */ jsx8(FeatureFiltersBar, {
1043
1221
  uniqueTags,
1044
1222
  uniqueStabilities,
1045
1223
  filters,
@@ -1049,32 +1227,32 @@ function FeatureDiscovery({
1049
1227
  clearFilters,
1050
1228
  hasActiveFilters
1051
1229
  }),
1052
- filteredFeatures.length === 0 ? /* @__PURE__ */ jsx6(EmptyState, {
1230
+ filteredFeatures.length === 0 ? /* @__PURE__ */ jsx8(EmptyState, {
1053
1231
  title: "No features found",
1054
1232
  description: hasActiveFilters ? "Try adjusting your search or filters" : "No features are registered yet",
1055
- primaryAction: hasActiveFilters ? /* @__PURE__ */ jsx6(Button2, {
1233
+ primaryAction: hasActiveFilters ? /* @__PURE__ */ jsx8(Button2, {
1056
1234
  variant: "outline",
1057
1235
  onClick: clearFilters,
1058
1236
  children: "Clear filters"
1059
1237
  }) : undefined
1060
- }) : /* @__PURE__ */ jsxs5(VStack2, {
1238
+ }) : /* @__PURE__ */ jsxs6(VStack3, {
1061
1239
  gap: "lg",
1062
1240
  children: [
1063
- showFeatured && featuredFeatures.length > 0 && /* @__PURE__ */ jsxs5(VStack2, {
1241
+ showFeatured && featuredFeatures.length > 0 && /* @__PURE__ */ jsxs6(VStack3, {
1064
1242
  gap: "sm",
1065
1243
  children: [
1066
- /* @__PURE__ */ jsxs5(HStack5, {
1244
+ /* @__PURE__ */ jsxs6(HStack6, {
1067
1245
  gap: "sm",
1068
1246
  className: "items-center",
1069
1247
  children: [
1070
- /* @__PURE__ */ jsx6(Star, {
1248
+ /* @__PURE__ */ jsx8(Star, {
1071
1249
  className: "h-5 w-5 fill-amber-500 text-amber-500"
1072
1250
  }),
1073
- /* @__PURE__ */ jsx6("span", {
1074
- className: "text-lg font-semibold",
1251
+ /* @__PURE__ */ jsx8("span", {
1252
+ className: "font-semibold text-lg",
1075
1253
  children: "Featured"
1076
1254
  }),
1077
- /* @__PURE__ */ jsx6(StatusChip4, {
1255
+ /* @__PURE__ */ jsx8(StatusChip5, {
1078
1256
  tone: "success",
1079
1257
  label: `${featuredFeatures.length} stable`,
1080
1258
  size: "sm"
@@ -1084,12 +1262,12 @@ function FeatureDiscovery({
1084
1262
  renderFeatureCards(featuredFeatures)
1085
1263
  ]
1086
1264
  }),
1087
- groupedFeatures ? /* @__PURE__ */ jsx6(VStack2, {
1265
+ groupedFeatures ? /* @__PURE__ */ jsx8(VStack3, {
1088
1266
  gap: "md",
1089
- children: Object.entries(groupedFeatures).map(([group, groupFeatures]) => /* @__PURE__ */ jsxs5(VStack2, {
1267
+ children: Object.entries(groupedFeatures).map(([group, groupFeatures]) => /* @__PURE__ */ jsxs6(VStack3, {
1090
1268
  gap: "sm",
1091
1269
  children: [
1092
- /* @__PURE__ */ jsx6(FeatureCategoryHeader, {
1270
+ /* @__PURE__ */ jsx8(FeatureCategoryHeader, {
1093
1271
  title: group,
1094
1272
  count: groupFeatures.length,
1095
1273
  isCollapsed: collapsedGroups.has(group),
@@ -1104,322 +1282,414 @@ function FeatureDiscovery({
1104
1282
  ]
1105
1283
  });
1106
1284
  }
1107
- // src/presentation/features/organisms/FeatureDetail/FeatureDetail.tsx
1285
+ // src/presentation/features/organisms/FeatureEventsList.tsx
1286
+ import { EntityCard as EntityCard3 } from "@contractspec/lib.design-system";
1287
+ import { Radio as Radio3 } from "lucide-react";
1288
+ import { jsx as jsx9 } from "react/jsx-runtime";
1289
+ "use client";
1290
+ function FeatureEventsList({ feature }) {
1291
+ if (!feature.events?.length)
1292
+ return null;
1293
+ return /* @__PURE__ */ jsx9("div", {
1294
+ className: "grid grid-cols-1 gap-4 md:grid-cols-2 lg:grid-cols-3",
1295
+ children: feature.events.map((ev) => {
1296
+ const spec = resolveSerializedEventSpec(ev.key, ev.version);
1297
+ return /* @__PURE__ */ jsx9(EntityCard3, {
1298
+ cardTitle: ev.key,
1299
+ cardSubtitle: `v${ev.version}`,
1300
+ footer: spec?.meta.description,
1301
+ icon: /* @__PURE__ */ jsx9(Radio3, {
1302
+ className: "h-4 w-4"
1303
+ }),
1304
+ href: `/features/${feature.meta.key}/events/${ev.key}`
1305
+ }, ev.key);
1306
+ })
1307
+ });
1308
+ }
1309
+
1310
+ // src/presentation/features/organisms/FeatureFormsList.tsx
1311
+ import { EntityCard as EntityCard4 } from "@contractspec/lib.design-system";
1312
+ import { FormInput } from "lucide-react";
1313
+ import { jsx as jsx10 } from "react/jsx-runtime";
1314
+ "use client";
1315
+ function FeatureFormsList({ feature }) {
1316
+ if (!feature.forms?.length)
1317
+ return null;
1318
+ return /* @__PURE__ */ jsx10("div", {
1319
+ className: "grid grid-cols-1 gap-4 md:grid-cols-2 lg:grid-cols-3",
1320
+ children: feature.forms.map((form) => {
1321
+ const spec = resolveSerializedFormSpec(form.key, form.version);
1322
+ return /* @__PURE__ */ jsx10(EntityCard4, {
1323
+ cardTitle: form.key,
1324
+ cardSubtitle: form.version ? `v${form.version}` : undefined,
1325
+ footer: spec?.meta.description,
1326
+ icon: /* @__PURE__ */ jsx10(FormInput, {
1327
+ className: "h-4 w-4"
1328
+ }),
1329
+ href: `/features/${feature.meta.key}/forms/${form.key}`
1330
+ }, form.key);
1331
+ })
1332
+ });
1333
+ }
1334
+
1335
+ // src/presentation/features/organisms/FeatureOperationsList.tsx
1336
+ import { EntityCard as EntityCard5 } from "@contractspec/lib.design-system";
1337
+ import { Zap as Zap3 } from "lucide-react";
1338
+ import { jsx as jsx11 } from "react/jsx-runtime";
1339
+ "use client";
1340
+ function FeatureOperationsList({
1341
+ feature
1342
+ }) {
1343
+ if (!feature.operations?.length)
1344
+ return null;
1345
+ return /* @__PURE__ */ jsx11("div", {
1346
+ className: "grid grid-cols-1 gap-4 md:grid-cols-2 lg:grid-cols-3",
1347
+ children: feature.operations.map((op) => {
1348
+ const spec = resolveSerializedOperationSpec(op.key, op.version);
1349
+ return /* @__PURE__ */ jsx11(EntityCard5, {
1350
+ cardTitle: op.key,
1351
+ cardSubtitle: `v${op.version}`,
1352
+ footer: spec?.meta.description,
1353
+ icon: /* @__PURE__ */ jsx11(Zap3, {
1354
+ className: "h-4 w-4"
1355
+ }),
1356
+ href: `/features/${feature.meta.key}/operations/${op.key}`
1357
+ }, op.key);
1358
+ })
1359
+ });
1360
+ }
1361
+
1362
+ // src/presentation/features/organisms/FeaturePresentationsList.tsx
1363
+ import { EntityCard as EntityCard6 } from "@contractspec/lib.design-system";
1364
+ import { Layout as Layout4 } from "lucide-react";
1365
+ import { jsx as jsx12 } from "react/jsx-runtime";
1366
+ "use client";
1367
+ function FeaturePresentationsList({
1368
+ feature
1369
+ }) {
1370
+ if (!feature.presentations?.length)
1371
+ return null;
1372
+ return /* @__PURE__ */ jsx12("div", {
1373
+ className: "grid grid-cols-1 gap-4 md:grid-cols-2 lg:grid-cols-3",
1374
+ children: feature.presentations.map((pres) => {
1375
+ const spec = resolveSerializedPresentationSpec(pres.key, pres.version);
1376
+ return /* @__PURE__ */ jsx12(EntityCard6, {
1377
+ cardTitle: pres.key,
1378
+ cardSubtitle: `v${pres.version}`,
1379
+ footer: spec?.meta.description,
1380
+ icon: /* @__PURE__ */ jsx12(Layout4, {
1381
+ className: "h-4 w-4"
1382
+ }),
1383
+ href: `/features/${feature.meta.key}/presentations/${pres.key}`
1384
+ }, pres.key);
1385
+ })
1386
+ });
1387
+ }
1388
+
1389
+ // src/presentation/features/templates/FeatureDataViewDetailTemplate/FeatureDataViewDetailTemplate.tsx
1108
1390
  import {
1109
- StatCard,
1110
- StatCardGroup,
1111
- StatusChip as StatusChip5
1391
+ Breadcrumbs,
1392
+ CodeBlock,
1393
+ EmptyState as EmptyState2,
1394
+ PageHeaderResponsive as PageHeaderResponsive2,
1395
+ StatusChip as StatusChip6
1112
1396
  } from "@contractspec/lib.design-system";
1113
- import { Box, HStack as HStack6, VStack as VStack3 } from "@contractspec/lib.ui-kit-web/ui/stack";
1114
- import { cn as cn5 } from "@contractspec/lib.ui-kit-web/ui/utils";
1115
- import Link from "next/link";
1116
- import { jsx as jsx7, jsxs as jsxs6 } from "react/jsx-runtime";
1397
+ import { Card } from "@contractspec/lib.ui-kit-web/ui/card";
1398
+ import { Box as Box2, HStack as HStack7, VStack as VStack4 } from "@contractspec/lib.ui-kit-web/ui/stack";
1399
+ import { cn as cn6 } from "@contractspec/lib.ui-kit-web/ui/utils";
1400
+ import { BookOpen, Code, Database as Database2, Table as Table2 } from "lucide-react";
1401
+ import Link2 from "next/link";
1402
+ import { jsx as jsx13, jsxs as jsxs7 } from "react/jsx-runtime";
1117
1403
  "use client";
1118
- var stabilityTone2 = {
1119
- stable: "success",
1120
- beta: "warning",
1121
- experimental: "info",
1122
- deprecated: "danger"
1123
- };
1124
- function FeatureDetail({ feature, className }) {
1125
- const { meta, operations, events, presentations, capabilities } = feature;
1126
- const tone = stabilityTone2[meta.stability] ?? "neutral";
1127
- return /* @__PURE__ */ jsxs6(VStack3, {
1404
+ function FeatureDataViewDetailTemplate({
1405
+ feature,
1406
+ viewKey,
1407
+ view,
1408
+ spec,
1409
+ className
1410
+ }) {
1411
+ const viewRef = view ?? feature.dataViews?.find((v) => v.key === viewKey);
1412
+ const relatedDocs = useRelatedDocs(viewRef?.key || "", spec?.meta?.tags);
1413
+ if (!viewRef) {
1414
+ return /* @__PURE__ */ jsxs7(VStack4, {
1415
+ gap: "lg",
1416
+ className: cn6("mx-auto w-full max-w-5xl p-6", className),
1417
+ children: [
1418
+ /* @__PURE__ */ jsx13(PageHeaderResponsive2, {
1419
+ title: "Data View Not Found",
1420
+ subtitle: `Data View ${viewKey} not found in feature ${feature.meta.key}`,
1421
+ breadcrumb: /* @__PURE__ */ jsx13(Breadcrumbs, {
1422
+ items: [
1423
+ { label: "Features", href: "/features" },
1424
+ {
1425
+ label: feature.meta.title || feature.meta.key,
1426
+ href: `/features/${feature.meta.key}`
1427
+ },
1428
+ { label: "Data Views" }
1429
+ ]
1430
+ })
1431
+ }),
1432
+ /* @__PURE__ */ jsx13(EmptyState2, {
1433
+ title: "Data View not found",
1434
+ description: `The data view '${viewKey}' could not be found in this feature.`,
1435
+ icon: /* @__PURE__ */ jsx13(Table2, {
1436
+ className: "h-12 w-12 text-muted-foreground"
1437
+ })
1438
+ })
1439
+ ]
1440
+ });
1441
+ }
1442
+ return /* @__PURE__ */ jsxs7(VStack4, {
1128
1443
  gap: "lg",
1129
- className: cn5("w-full", className),
1444
+ className: cn6("mx-auto w-full max-w-5xl p-6", className),
1130
1445
  children: [
1131
- /* @__PURE__ */ jsxs6(HStack6, {
1446
+ /* @__PURE__ */ jsx13(PageHeaderResponsive2, {
1447
+ title: viewRef.key,
1448
+ subtitle: `Data View defined in ${feature.meta.title ?? feature.meta.key}`,
1449
+ breadcrumb: /* @__PURE__ */ jsx13(Breadcrumbs, {
1450
+ items: [
1451
+ { label: "Features", href: "/features" },
1452
+ {
1453
+ label: feature.meta.title || feature.meta.key,
1454
+ href: `/features/${feature.meta.key}`
1455
+ },
1456
+ {
1457
+ label: "Data Views",
1458
+ href: `/features/${feature.meta.key}#dataviews`
1459
+ },
1460
+ { label: viewRef.key }
1461
+ ]
1462
+ })
1463
+ }),
1464
+ /* @__PURE__ */ jsxs7(HStack7, {
1132
1465
  gap: "sm",
1133
1466
  children: [
1134
- /* @__PURE__ */ jsx7(StatusChip5, {
1135
- tone,
1136
- label: meta.stability ?? "unknown"
1467
+ /* @__PURE__ */ jsx13(StatusChip6, {
1468
+ tone: "neutral",
1469
+ label: viewRef.key,
1470
+ size: "sm",
1471
+ icon: /* @__PURE__ */ jsx13(Table2, {
1472
+ className: "h-3 w-3"
1473
+ })
1137
1474
  }),
1138
- /* @__PURE__ */ jsx7(StatusChip5, {
1475
+ /* @__PURE__ */ jsx13(StatusChip6, {
1139
1476
  tone: "neutral",
1140
- label: meta.key,
1477
+ label: `v${viewRef.version}`,
1141
1478
  size: "sm"
1142
1479
  }),
1143
- /* @__PURE__ */ jsx7(StatusChip5, {
1144
- tone: "neutral",
1145
- label: `v${meta.version}`,
1480
+ spec?.meta?.stability ? /* @__PURE__ */ jsx13(StatusChip6, {
1481
+ tone: spec.meta.stability === "stable" ? "success" : "warning",
1482
+ label: spec.meta.stability,
1146
1483
  size: "sm"
1147
- })
1484
+ }) : null
1148
1485
  ]
1149
1486
  }),
1150
- /* @__PURE__ */ jsxs6(StatCardGroup, {
1487
+ /* @__PURE__ */ jsxs7("div", {
1488
+ className: "grid grid-cols-1 gap-6 lg:grid-cols-3",
1151
1489
  children: [
1152
- /* @__PURE__ */ jsx7(Link, {
1153
- href: `./${feature.meta.key}/operations`,
1154
- children: /* @__PURE__ */ jsx7(StatCard, {
1155
- label: "Operations",
1156
- value: operations?.length ?? 0
1157
- })
1158
- }),
1159
- /* @__PURE__ */ jsx7(Link, {
1160
- href: `./${feature.meta.key}/events`,
1161
- children: /* @__PURE__ */ jsx7(StatCard, {
1162
- label: "Events",
1163
- value: events?.length ?? 0
1490
+ /* @__PURE__ */ jsx13("div", {
1491
+ className: "space-y-6 lg:col-span-2",
1492
+ children: /* @__PURE__ */ jsx13(Card, {
1493
+ className: "p-6",
1494
+ children: /* @__PURE__ */ jsxs7(VStack4, {
1495
+ gap: "md",
1496
+ children: [
1497
+ /* @__PURE__ */ jsxs7(HStack7, {
1498
+ className: "items-center gap-2 border-b pb-2",
1499
+ children: [
1500
+ /* @__PURE__ */ jsx13(Code, {
1501
+ className: "h-5 w-5 text-muted-foreground"
1502
+ }),
1503
+ /* @__PURE__ */ jsx13("h3", {
1504
+ className: "font-semibold text-lg",
1505
+ children: "View Definition"
1506
+ })
1507
+ ]
1508
+ }),
1509
+ spec ? /* @__PURE__ */ jsxs7(VStack4, {
1510
+ gap: "lg",
1511
+ children: [
1512
+ spec.meta.description && /* @__PURE__ */ jsx13("p", {
1513
+ className: "text-muted-foreground",
1514
+ children: spec.meta.description
1515
+ }),
1516
+ /* @__PURE__ */ jsxs7(Box2, {
1517
+ className: "flex-col gap-2",
1518
+ children: [
1519
+ /* @__PURE__ */ jsx13("span", {
1520
+ className: "font-medium text-muted-foreground text-sm uppercase tracking-wider",
1521
+ children: "Source Query"
1522
+ }),
1523
+ /* @__PURE__ */ jsx13(CodeBlock, {
1524
+ code: JSON.stringify(spec.source, null, 2),
1525
+ language: "json"
1526
+ })
1527
+ ]
1528
+ }),
1529
+ /* @__PURE__ */ jsxs7(Box2, {
1530
+ className: "flex-col gap-2",
1531
+ children: [
1532
+ /* @__PURE__ */ jsx13("span", {
1533
+ className: "font-medium text-muted-foreground text-sm uppercase tracking-wider",
1534
+ children: "View Configuration"
1535
+ }),
1536
+ /* @__PURE__ */ jsx13(CodeBlock, {
1537
+ code: JSON.stringify(spec.view, null, 2),
1538
+ language: "json"
1539
+ })
1540
+ ]
1541
+ })
1542
+ ]
1543
+ }) : /* @__PURE__ */ jsxs7(VStack4, {
1544
+ gap: "md",
1545
+ children: [
1546
+ /* @__PURE__ */ jsx13("p", {
1547
+ className: "text-muted-foreground",
1548
+ children: "Full definition details are not available for this data view reference."
1549
+ }),
1550
+ /* @__PURE__ */ jsx13(CodeBlock, {
1551
+ code: JSON.stringify(viewRef, null, 2),
1552
+ language: "json"
1553
+ })
1554
+ ]
1555
+ })
1556
+ ]
1557
+ })
1164
1558
  })
1165
1559
  }),
1166
- /* @__PURE__ */ jsx7(Link, {
1167
- href: `./${feature.meta.key}/presentations`,
1168
- children: /* @__PURE__ */ jsx7(StatCard, {
1169
- label: "Presentations",
1170
- value: presentations?.length ?? 0
1560
+ /* @__PURE__ */ jsx13("div", {
1561
+ className: "space-y-6",
1562
+ children: /* @__PURE__ */ jsx13(Card, {
1563
+ className: "p-6",
1564
+ children: /* @__PURE__ */ jsxs7(VStack4, {
1565
+ gap: "md",
1566
+ children: [
1567
+ /* @__PURE__ */ jsxs7(HStack7, {
1568
+ className: "items-center gap-2 border-b pb-2",
1569
+ children: [
1570
+ /* @__PURE__ */ jsx13(Database2, {
1571
+ className: "h-5 w-5 text-muted-foreground"
1572
+ }),
1573
+ /* @__PURE__ */ jsx13("h3", {
1574
+ className: "font-semibold text-lg",
1575
+ children: "Metadata"
1576
+ })
1577
+ ]
1578
+ }),
1579
+ /* @__PURE__ */ jsxs7("dl", {
1580
+ className: "grid grid-cols-1 gap-4 text-sm",
1581
+ children: [
1582
+ /* @__PURE__ */ jsxs7("div", {
1583
+ children: [
1584
+ /* @__PURE__ */ jsx13("dt", {
1585
+ className: "text-muted-foreground",
1586
+ children: "Key"
1587
+ }),
1588
+ /* @__PURE__ */ jsx13("dd", {
1589
+ className: "truncate font-medium",
1590
+ children: viewRef.key
1591
+ })
1592
+ ]
1593
+ }),
1594
+ /* @__PURE__ */ jsxs7("div", {
1595
+ children: [
1596
+ /* @__PURE__ */ jsx13("dt", {
1597
+ className: "text-muted-foreground",
1598
+ children: "Version"
1599
+ }),
1600
+ /* @__PURE__ */ jsx13("dd", {
1601
+ className: "font-medium",
1602
+ children: viewRef.version
1603
+ })
1604
+ ]
1605
+ }),
1606
+ spec?.meta?.owners && /* @__PURE__ */ jsxs7("div", {
1607
+ children: [
1608
+ /* @__PURE__ */ jsx13("dt", {
1609
+ className: "text-muted-foreground",
1610
+ children: "Owners"
1611
+ }),
1612
+ /* @__PURE__ */ jsx13("dd", {
1613
+ className: "flex flex-wrap gap-1 font-medium",
1614
+ children: spec.meta.owners.map((o) => /* @__PURE__ */ jsx13(StatusChip6, {
1615
+ label: o,
1616
+ size: "sm",
1617
+ tone: "neutral"
1618
+ }, o))
1619
+ })
1620
+ ]
1621
+ }),
1622
+ spec?.meta?.tags && /* @__PURE__ */ jsxs7("div", {
1623
+ children: [
1624
+ /* @__PURE__ */ jsx13("dt", {
1625
+ className: "text-muted-foreground",
1626
+ children: "Tags"
1627
+ }),
1628
+ /* @__PURE__ */ jsx13("dd", {
1629
+ className: "flex flex-wrap gap-1 font-medium",
1630
+ children: spec.meta.tags.map((t) => /* @__PURE__ */ jsx13(StatusChip6, {
1631
+ label: `#${t}`,
1632
+ size: "sm",
1633
+ tone: "neutral"
1634
+ }, t))
1635
+ })
1636
+ ]
1637
+ })
1638
+ ]
1639
+ })
1640
+ ]
1641
+ })
1171
1642
  })
1172
- })
1173
- ]
1174
- }),
1175
- capabilities?.provides?.length ? /* @__PURE__ */ jsxs6(Box, {
1176
- className: "flex-col rounded-lg border p-4",
1177
- gap: "sm",
1178
- align: "start",
1179
- children: [
1180
- /* @__PURE__ */ jsx7("span", {
1181
- className: "font-semibold",
1182
- children: "Provides Capabilities"
1183
1643
  }),
1184
- /* @__PURE__ */ jsx7(HStack6, {
1185
- gap: "xs",
1186
- wrap: "wrap",
1187
- children: capabilities.provides.map((cap) => /* @__PURE__ */ jsx7(StatusChip5, {
1188
- tone: "success",
1189
- label: `${cap.key} v${cap.version}`,
1190
- size: "sm"
1191
- }, `${cap.key}-${cap.version}`))
1192
- })
1193
- ]
1194
- }) : null,
1195
- capabilities?.requires?.length ? /* @__PURE__ */ jsxs6(Box, {
1196
- className: "flex-col rounded-lg border p-4",
1197
- gap: "sm",
1198
- align: "start",
1199
- children: [
1200
- /* @__PURE__ */ jsx7("span", {
1201
- className: "font-semibold",
1202
- children: "Requires Capabilities"
1203
- }),
1204
- /* @__PURE__ */ jsx7(HStack6, {
1205
- gap: "xs",
1206
- wrap: "wrap",
1207
- children: capabilities.requires.map((req) => /* @__PURE__ */ jsx7(StatusChip5, {
1208
- tone: "info",
1209
- label: `${req.key}${req.version ? ` v${req.version}` : ""}${req.optional ? " (optional)" : ""}`,
1210
- size: "sm"
1211
- }, req.key))
1212
- })
1213
- ]
1214
- }) : null,
1215
- meta.tags?.length ? /* @__PURE__ */ jsxs6(Box, {
1216
- className: "flex-col rounded-lg border p-4",
1217
- gap: "sm",
1218
- align: "start",
1219
- children: [
1220
- /* @__PURE__ */ jsx7("span", {
1221
- className: "font-semibold",
1222
- children: "Tags"
1223
- }),
1224
- /* @__PURE__ */ jsx7(HStack6, {
1225
- gap: "xs",
1226
- wrap: "wrap",
1227
- children: meta.tags.map((tag) => /* @__PURE__ */ jsx7(StatusChip5, {
1228
- tone: "neutral",
1229
- label: `#${tag}`,
1230
- size: "sm"
1231
- }, tag))
1232
- })
1233
- ]
1234
- }) : null,
1235
- meta.owners?.length ? /* @__PURE__ */ jsxs6(Box, {
1236
- className: "flex-col rounded-lg border p-4",
1237
- gap: "sm",
1238
- align: "start",
1239
- children: [
1240
- /* @__PURE__ */ jsx7("span", {
1241
- className: "font-semibold",
1242
- children: "Owners"
1243
- }),
1244
- /* @__PURE__ */ jsx7(HStack6, {
1245
- gap: "xs",
1246
- wrap: "wrap",
1247
- children: meta.owners.map((owner) => /* @__PURE__ */ jsx7(StatusChip5, {
1248
- tone: "neutral",
1249
- label: owner,
1250
- size: "sm"
1251
- }, owner))
1252
- })
1253
- ]
1254
- }) : null
1255
- ]
1256
- });
1257
- }
1258
- // src/presentation/features/organisms/FeatureOperationsList.tsx
1259
- import { EntityCard as EntityCard2 } from "@contractspec/lib.design-system";
1260
- import { Zap as Zap3 } from "lucide-react";
1261
- import { jsx as jsx8 } from "react/jsx-runtime";
1262
- "use client";
1263
- function FeatureOperationsList({
1264
- feature
1265
- }) {
1266
- if (!feature.operations?.length)
1267
- return null;
1268
- return /* @__PURE__ */ jsx8("div", {
1269
- className: "grid grid-cols-1 gap-4 md:grid-cols-2 lg:grid-cols-3",
1270
- children: feature.operations.map((op) => {
1271
- const spec = resolveSerializedOperationSpec(op.key, op.version);
1272
- return /* @__PURE__ */ jsx8(EntityCard2, {
1273
- cardTitle: op.key,
1274
- cardSubtitle: `v${op.version}`,
1275
- footer: spec?.meta.description,
1276
- icon: /* @__PURE__ */ jsx8(Zap3, {
1277
- className: "h-4 w-4"
1278
- }),
1279
- href: `/features/${feature.meta.key}/operations/${op.key}`
1280
- }, op.key);
1281
- })
1282
- });
1283
- }
1284
-
1285
- // src/presentation/features/organisms/FeatureEventsList.tsx
1286
- import { EntityCard as EntityCard3 } from "@contractspec/lib.design-system";
1287
- import { Radio as Radio3 } from "lucide-react";
1288
- import { jsx as jsx9 } from "react/jsx-runtime";
1289
- "use client";
1290
- function FeatureEventsList({ feature }) {
1291
- if (!feature.events?.length)
1292
- return null;
1293
- return /* @__PURE__ */ jsx9("div", {
1294
- className: "grid grid-cols-1 gap-4 md:grid-cols-2 lg:grid-cols-3",
1295
- children: feature.events.map((ev) => {
1296
- const spec = resolveSerializedEventSpec(ev.key, ev.version);
1297
- return /* @__PURE__ */ jsx9(EntityCard3, {
1298
- cardTitle: ev.key,
1299
- cardSubtitle: `v${ev.version}`,
1300
- footer: spec?.meta.description,
1301
- icon: /* @__PURE__ */ jsx9(Radio3, {
1302
- className: "h-4 w-4"
1303
- }),
1304
- href: `/features/${feature.meta.key}/events/${ev.key}`
1305
- }, ev.key);
1306
- })
1307
- });
1308
- }
1309
-
1310
- // src/presentation/features/organisms/FeaturePresentationsList.tsx
1311
- import { EntityCard as EntityCard4 } from "@contractspec/lib.design-system";
1312
- import { Layout as Layout4 } from "lucide-react";
1313
- import { jsx as jsx10 } from "react/jsx-runtime";
1314
- "use client";
1315
- function FeaturePresentationsList({
1316
- feature
1317
- }) {
1318
- if (!feature.presentations?.length)
1319
- return null;
1320
- return /* @__PURE__ */ jsx10("div", {
1321
- className: "grid grid-cols-1 gap-4 md:grid-cols-2 lg:grid-cols-3",
1322
- children: feature.presentations.map((pres) => {
1323
- const spec = resolveSerializedPresentationSpec(pres.key, pres.version);
1324
- return /* @__PURE__ */ jsx10(EntityCard4, {
1325
- cardTitle: pres.key,
1326
- cardSubtitle: `v${pres.version}`,
1327
- footer: spec?.meta.description,
1328
- icon: /* @__PURE__ */ jsx10(Layout4, {
1329
- className: "h-4 w-4"
1330
- }),
1331
- href: `/features/${feature.meta.key}/presentations/${pres.key}`
1332
- }, pres.key);
1333
- })
1334
- });
1335
- }
1336
-
1337
- // src/presentation/features/organisms/FeatureDataViewsList.tsx
1338
- import { EntityCard as EntityCard5 } from "@contractspec/lib.design-system";
1339
- import { Table } from "lucide-react";
1340
- import { jsx as jsx11 } from "react/jsx-runtime";
1341
- "use client";
1342
- function FeatureDataViewsList({
1343
- feature
1344
- }) {
1345
- if (!feature.dataViews?.length)
1346
- return null;
1347
- return /* @__PURE__ */ jsx11("div", {
1348
- className: "grid grid-cols-1 gap-4 md:grid-cols-2 lg:grid-cols-3",
1349
- children: feature.dataViews.map((view) => {
1350
- const spec = resolveSerializedDataViewSpec(view.key, view.version);
1351
- return /* @__PURE__ */ jsx11(EntityCard5, {
1352
- cardTitle: view.key,
1353
- cardSubtitle: `v${view.version}`,
1354
- footer: spec?.meta.description,
1355
- icon: /* @__PURE__ */ jsx11(Table, {
1356
- className: "h-4 w-4"
1357
- }),
1358
- href: `/features/${feature.meta.key}/dataviews/${view.key}`
1359
- }, view.key);
1360
- })
1361
- });
1362
- }
1363
-
1364
- // src/presentation/features/organisms/FeatureFormsList.tsx
1365
- import { EntityCard as EntityCard6 } from "@contractspec/lib.design-system";
1366
- import { FormInput } from "lucide-react";
1367
- import { jsx as jsx12 } from "react/jsx-runtime";
1368
- "use client";
1369
- function FeatureFormsList({ feature }) {
1370
- if (!feature.forms?.length)
1371
- return null;
1372
- return /* @__PURE__ */ jsx12("div", {
1373
- className: "grid grid-cols-1 gap-4 md:grid-cols-2 lg:grid-cols-3",
1374
- children: feature.forms.map((form) => {
1375
- const spec = resolveSerializedFormSpec(form.key, form.version);
1376
- return /* @__PURE__ */ jsx12(EntityCard6, {
1377
- cardTitle: form.key,
1378
- cardSubtitle: form.version ? `v${form.version}` : undefined,
1379
- footer: spec?.meta.description,
1380
- icon: /* @__PURE__ */ jsx12(FormInput, {
1381
- className: "h-4 w-4"
1382
- }),
1383
- href: `/features/${feature.meta.key}/forms/${form.key}`
1384
- }, form.key);
1385
- })
1386
- });
1387
- }
1388
-
1389
- // src/presentation/features/templates/FeatureOverviewTemplate/FeatureOverviewTemplate.tsx
1390
- import {
1391
- PageHeaderResponsive as PageHeaderResponsive2,
1392
- Breadcrumbs
1393
- } from "@contractspec/lib.design-system";
1394
- import { VStack as VStack4 } from "@contractspec/lib.ui-kit-web/ui/stack";
1395
- import { cn as cn6 } from "@contractspec/lib.ui-kit-web/ui/utils";
1396
- import { jsx as jsx13, jsxs as jsxs7 } from "react/jsx-runtime";
1397
- "use client";
1398
- function FeatureOverviewTemplate({
1399
- feature,
1400
- className
1401
- }) {
1402
- return /* @__PURE__ */ jsxs7(VStack4, {
1403
- gap: "lg",
1404
- className: cn6("mx-auto w-full max-w-5xl p-6", className),
1405
- children: [
1406
- /* @__PURE__ */ jsx13(PageHeaderResponsive2, {
1407
- title: feature.meta.title || feature.meta.key,
1408
- subtitle: feature.meta.description || "Feature overview",
1409
- breadcrumb: /* @__PURE__ */ jsx13(Breadcrumbs, {
1410
- items: [
1411
- { label: "Features", href: "/features" },
1412
- { label: feature.meta.title || feature.meta.key }
1413
- ]
1414
- })
1415
- }),
1416
- /* @__PURE__ */ jsx13(FeatureDetail, {
1417
- feature
1644
+ relatedDocs?.length ? /* @__PURE__ */ jsx13("div", {
1645
+ className: "lg:col-span-3",
1646
+ children: /* @__PURE__ */ jsx13(Card, {
1647
+ className: "p-6",
1648
+ children: /* @__PURE__ */ jsxs7(VStack4, {
1649
+ gap: "md",
1650
+ children: [
1651
+ /* @__PURE__ */ jsxs7(HStack7, {
1652
+ className: "items-center gap-2 border-b pb-2",
1653
+ children: [
1654
+ /* @__PURE__ */ jsx13(BookOpen, {
1655
+ className: "h-5 w-5 text-muted-foreground"
1656
+ }),
1657
+ /* @__PURE__ */ jsx13("h3", {
1658
+ className: "font-semibold text-lg",
1659
+ children: "Related Documentation"
1660
+ })
1661
+ ]
1662
+ }),
1663
+ /* @__PURE__ */ jsx13("div", {
1664
+ className: "grid grid-cols-1 gap-4 md:grid-cols-2 lg:grid-cols-3",
1665
+ children: relatedDocs.map((doc) => /* @__PURE__ */ jsx13(Link2, {
1666
+ href: doc.route || `/docs/${doc.id}`,
1667
+ className: "group block",
1668
+ children: /* @__PURE__ */ jsxs7("div", {
1669
+ className: "h-full rounded-lg border p-4 transition-colors hover:border-primary",
1670
+ children: [
1671
+ /* @__PURE__ */ jsx13("h4", {
1672
+ className: "mb-1 font-semibold group-hover:text-primary",
1673
+ children: doc.title
1674
+ }),
1675
+ doc.summary && /* @__PURE__ */ jsx13("p", {
1676
+ className: "line-clamp-2 text-muted-foreground text-sm",
1677
+ children: doc.summary
1678
+ })
1679
+ ]
1680
+ })
1681
+ }, doc.id))
1682
+ })
1683
+ ]
1684
+ })
1685
+ })
1686
+ }) : null
1687
+ ]
1418
1688
  })
1419
1689
  ]
1420
1690
  });
1421
1691
  }
1422
- // src/presentation/features/templates/FeatureOperationsTemplate/FeatureOperationsTemplate.tsx
1692
+ // src/presentation/features/templates/FeatureDataViewsTemplate/FeatureDataViewsTemplate.tsx
1423
1693
  import {
1424
1694
  Breadcrumbs as Breadcrumbs2,
1425
1695
  PageHeaderResponsive as PageHeaderResponsive3
@@ -1428,7 +1698,7 @@ import { VStack as VStack5 } from "@contractspec/lib.ui-kit-web/ui/stack";
1428
1698
  import { cn as cn7 } from "@contractspec/lib.ui-kit-web/ui/utils";
1429
1699
  import { jsx as jsx14, jsxs as jsxs8 } from "react/jsx-runtime";
1430
1700
  "use client";
1431
- function FeatureOperationsTemplate({
1701
+ function FeatureDataViewsTemplate({
1432
1702
  feature,
1433
1703
  className
1434
1704
  }) {
@@ -1437,8 +1707,8 @@ function FeatureOperationsTemplate({
1437
1707
  className: cn7("mx-auto w-full max-w-5xl p-6", className),
1438
1708
  children: [
1439
1709
  /* @__PURE__ */ jsx14(PageHeaderResponsive3, {
1440
- title: "Operations",
1441
- subtitle: `Operations defined in ${feature.meta.title ?? feature.meta.key}`,
1710
+ title: "Data Views",
1711
+ subtitle: `Data views defined in ${feature.meta.title ?? feature.meta.key}`,
1442
1712
  breadcrumb: /* @__PURE__ */ jsx14(Breadcrumbs2, {
1443
1713
  items: [
1444
1714
  { label: "Features", href: "/features" },
@@ -1446,328 +1716,166 @@ function FeatureOperationsTemplate({
1446
1716
  label: feature.meta.title || feature.meta.key,
1447
1717
  href: `/features/${feature.meta.key}`
1448
1718
  },
1449
- { label: "Operations" }
1719
+ { label: "Data Views" }
1450
1720
  ]
1451
1721
  })
1452
1722
  }),
1453
- /* @__PURE__ */ jsx14(FeatureOperationsList, {
1723
+ /* @__PURE__ */ jsx14(FeatureDataViewsList, {
1454
1724
  feature
1455
1725
  })
1456
1726
  ]
1457
1727
  });
1458
1728
  }
1459
- // src/presentation/features/templates/FeatureEventsTemplate/FeatureEventsTemplate.tsx
1729
+ // src/presentation/features/templates/FeatureEventDetailTemplate/FeatureEventDetailTemplate.tsx
1460
1730
  import {
1461
1731
  Breadcrumbs as Breadcrumbs3,
1462
- PageHeaderResponsive as PageHeaderResponsive4
1732
+ CodeBlock as CodeBlock2,
1733
+ EmptyState as EmptyState3,
1734
+ PageHeaderResponsive as PageHeaderResponsive4,
1735
+ StatusChip as StatusChip7
1463
1736
  } from "@contractspec/lib.design-system";
1464
- import { VStack as VStack6 } from "@contractspec/lib.ui-kit-web/ui/stack";
1737
+ import { Card as Card2 } from "@contractspec/lib.ui-kit-web/ui/card";
1738
+ import { Box as Box3, HStack as HStack8, VStack as VStack6 } from "@contractspec/lib.ui-kit-web/ui/stack";
1465
1739
  import { cn as cn8 } from "@contractspec/lib.ui-kit-web/ui/utils";
1740
+ import { BookOpen as BookOpen2, Code as Code2, Database as Database3, Radio as Radio4 } from "lucide-react";
1741
+ import Link3 from "next/link";
1466
1742
  import { jsx as jsx15, jsxs as jsxs9 } from "react/jsx-runtime";
1467
1743
  "use client";
1468
- function FeatureEventsTemplate({
1469
- feature,
1470
- className
1471
- }) {
1472
- return /* @__PURE__ */ jsxs9(VStack6, {
1473
- gap: "lg",
1474
- className: cn8("mx-auto w-full max-w-5xl p-6", className),
1475
- children: [
1476
- /* @__PURE__ */ jsx15(PageHeaderResponsive4, {
1477
- title: "Events",
1478
- subtitle: `Events defined in ${feature.meta.title ?? feature.meta.key}`,
1479
- breadcrumb: /* @__PURE__ */ jsx15(Breadcrumbs3, {
1480
- items: [
1481
- { label: "Features", href: "/features" },
1482
- {
1483
- label: feature.meta.title || feature.meta.key,
1484
- href: `/features/${feature.meta.key}`
1485
- },
1486
- { label: "Events" }
1487
- ]
1488
- })
1489
- }),
1490
- /* @__PURE__ */ jsx15(FeatureEventsList, {
1491
- feature
1492
- })
1493
- ]
1494
- });
1495
- }
1496
- // src/presentation/features/templates/FeaturePresentationsTemplate/FeaturePresentationsTemplate.tsx
1497
- import {
1498
- Breadcrumbs as Breadcrumbs4,
1499
- PageHeaderResponsive as PageHeaderResponsive5
1500
- } from "@contractspec/lib.design-system";
1501
- import { VStack as VStack7 } from "@contractspec/lib.ui-kit-web/ui/stack";
1502
- import { cn as cn9 } from "@contractspec/lib.ui-kit-web/ui/utils";
1503
- import { jsx as jsx16, jsxs as jsxs10 } from "react/jsx-runtime";
1504
- "use client";
1505
- function FeaturePresentationsTemplate({
1506
- feature,
1507
- className
1508
- }) {
1509
- return /* @__PURE__ */ jsxs10(VStack7, {
1510
- gap: "lg",
1511
- className: cn9("mx-auto w-full max-w-5xl p-6", className),
1512
- children: [
1513
- /* @__PURE__ */ jsx16(PageHeaderResponsive5, {
1514
- title: "Presentations",
1515
- subtitle: `Presentations defined in ${feature.meta.title ?? feature.meta.key}`,
1516
- breadcrumb: /* @__PURE__ */ jsx16(Breadcrumbs4, {
1517
- items: [
1518
- { label: "Features", href: "/features" },
1519
- {
1520
- label: feature.meta.title || feature.meta.key,
1521
- href: `/features/${feature.meta.key}`
1522
- },
1523
- { label: "Presentations" }
1524
- ]
1525
- })
1526
- }),
1527
- /* @__PURE__ */ jsx16(FeaturePresentationsList, {
1528
- feature
1529
- })
1530
- ]
1531
- });
1532
- }
1533
- // src/presentation/features/templates/FeatureDataViewsTemplate/FeatureDataViewsTemplate.tsx
1534
- import {
1535
- PageHeaderResponsive as PageHeaderResponsive6,
1536
- Breadcrumbs as Breadcrumbs5
1537
- } from "@contractspec/lib.design-system";
1538
- import { VStack as VStack8 } from "@contractspec/lib.ui-kit-web/ui/stack";
1539
- import { cn as cn10 } from "@contractspec/lib.ui-kit-web/ui/utils";
1540
- import { jsx as jsx17, jsxs as jsxs11 } from "react/jsx-runtime";
1541
- "use client";
1542
- function FeatureDataViewsTemplate({
1543
- feature,
1544
- className
1545
- }) {
1546
- return /* @__PURE__ */ jsxs11(VStack8, {
1547
- gap: "lg",
1548
- className: cn10("mx-auto w-full max-w-5xl p-6", className),
1549
- children: [
1550
- /* @__PURE__ */ jsx17(PageHeaderResponsive6, {
1551
- title: "Data Views",
1552
- subtitle: `Data views defined in ${feature.meta.title ?? feature.meta.key}`,
1553
- breadcrumb: /* @__PURE__ */ jsx17(Breadcrumbs5, {
1554
- items: [
1555
- { label: "Features", href: "/features" },
1556
- {
1557
- label: feature.meta.title || feature.meta.key,
1558
- href: `/features/${feature.meta.key}`
1559
- },
1560
- { label: "Data Views" }
1561
- ]
1562
- })
1563
- }),
1564
- /* @__PURE__ */ jsx17(FeatureDataViewsList, {
1565
- feature
1566
- })
1567
- ]
1568
- });
1569
- }
1570
- // src/presentation/features/templates/FeatureFormsTemplate/FeatureFormsTemplate.tsx
1571
- import {
1572
- PageHeaderResponsive as PageHeaderResponsive7,
1573
- Breadcrumbs as Breadcrumbs6
1574
- } from "@contractspec/lib.design-system";
1575
- import { VStack as VStack9 } from "@contractspec/lib.ui-kit-web/ui/stack";
1576
- import { cn as cn11 } from "@contractspec/lib.ui-kit-web/ui/utils";
1577
- import { jsx as jsx18, jsxs as jsxs12 } from "react/jsx-runtime";
1578
- "use client";
1579
- function FeatureFormsTemplate({
1580
- feature,
1581
- className
1582
- }) {
1583
- return /* @__PURE__ */ jsxs12(VStack9, {
1584
- gap: "lg",
1585
- className: cn11("mx-auto w-full max-w-5xl p-6", className),
1586
- children: [
1587
- /* @__PURE__ */ jsx18(PageHeaderResponsive7, {
1588
- title: "Forms",
1589
- subtitle: `Forms defined in ${feature.meta.title ?? feature.meta.key}`,
1590
- breadcrumb: /* @__PURE__ */ jsx18(Breadcrumbs6, {
1591
- items: [
1592
- { label: "Features", href: "/features" },
1593
- {
1594
- label: feature.meta.title || feature.meta.key,
1595
- href: `/features/${feature.meta.key}`
1596
- },
1597
- { label: "Forms" }
1598
- ]
1599
- })
1600
- }),
1601
- /* @__PURE__ */ jsx18(FeatureFormsList, {
1602
- feature
1603
- })
1604
- ]
1605
- });
1606
- }
1607
- // src/presentation/features/templates/FeatureOperationDetailTemplate/FeatureOperationDetailTemplate.tsx
1608
- import {
1609
- Breadcrumbs as Breadcrumbs7,
1610
- CodeBlock,
1611
- EmptyState as EmptyState2,
1612
- PageHeaderResponsive as PageHeaderResponsive8,
1613
- StatusChip as StatusChip6
1614
- } from "@contractspec/lib.design-system";
1615
- import { Card } from "@contractspec/lib.ui-kit-web/ui/card";
1616
- import { Box as Box2, HStack as HStack7, VStack as VStack10 } from "@contractspec/lib.ui-kit-web/ui/stack";
1617
- import { cn as cn12 } from "@contractspec/lib.ui-kit-web/ui/utils";
1618
- import { Code, Database as Database2, Zap as Zap4 } from "lucide-react";
1619
- import { jsx as jsx19, jsxs as jsxs13 } from "react/jsx-runtime";
1620
- "use client";
1621
- function FeatureOperationDetailTemplate({
1744
+ function FeatureEventDetailTemplate({
1622
1745
  feature,
1623
- operationKey,
1624
- operation,
1746
+ eventKey,
1747
+ event,
1625
1748
  spec,
1626
1749
  className
1627
1750
  }) {
1628
- const opRef = operation ?? feature.operations?.find((op) => op.key === operationKey);
1629
- const _relatedDocs = useRelatedDocs(opRef?.key || "", spec?.meta?.tags);
1630
- if (!opRef) {
1631
- return /* @__PURE__ */ jsxs13(VStack10, {
1751
+ const eventRef = event ?? feature.events?.find((ev) => ev.key === eventKey);
1752
+ const relatedDocs = useRelatedDocs(eventRef?.key || "", spec?.meta?.tags);
1753
+ if (!eventRef) {
1754
+ return /* @__PURE__ */ jsxs9(VStack6, {
1632
1755
  gap: "lg",
1633
- className: cn12("mx-auto w-full max-w-5xl p-6", className),
1756
+ className: cn8("mx-auto w-full max-w-5xl p-6", className),
1634
1757
  children: [
1635
- /* @__PURE__ */ jsx19(PageHeaderResponsive8, {
1636
- title: "Operation Not Found",
1637
- subtitle: `Operation ${operationKey} not found in feature ${feature.meta.key}`,
1638
- breadcrumb: /* @__PURE__ */ jsx19(Breadcrumbs7, {
1758
+ /* @__PURE__ */ jsx15(PageHeaderResponsive4, {
1759
+ title: "Event Not Found",
1760
+ subtitle: `Event ${eventKey} not found in feature ${feature.meta.key}`,
1761
+ breadcrumb: /* @__PURE__ */ jsx15(Breadcrumbs3, {
1639
1762
  items: [
1640
1763
  { label: "Features", href: "/features" },
1641
1764
  {
1642
1765
  label: feature.meta.title || feature.meta.key,
1643
1766
  href: `/features/${feature.meta.key}`
1644
1767
  },
1645
- { label: "Operations" }
1768
+ {
1769
+ label: "Events",
1770
+ href: `/features/${feature.meta.key}/events`
1771
+ }
1646
1772
  ]
1647
1773
  })
1648
1774
  }),
1649
- /* @__PURE__ */ jsx19(EmptyState2, {
1650
- title: "Operation not found",
1651
- description: `The operation '${operationKey}' could not be found in this feature.`,
1652
- icon: /* @__PURE__ */ jsx19(Zap4, {
1653
- className: "text-muted-foreground h-12 w-12"
1775
+ /* @__PURE__ */ jsx15(EmptyState3, {
1776
+ title: "Event not found",
1777
+ description: `The event '${eventKey}' could not be found in this feature.`,
1778
+ icon: /* @__PURE__ */ jsx15(Radio4, {
1779
+ className: "h-12 w-12 text-muted-foreground"
1654
1780
  })
1655
1781
  })
1656
1782
  ]
1657
1783
  });
1658
1784
  }
1659
- return /* @__PURE__ */ jsxs13(VStack10, {
1785
+ return /* @__PURE__ */ jsxs9(VStack6, {
1660
1786
  gap: "lg",
1661
- className: cn12("mx-auto w-full max-w-5xl p-6", className),
1787
+ className: cn8("mx-auto w-full max-w-5xl p-6", className),
1662
1788
  children: [
1663
- /* @__PURE__ */ jsx19(PageHeaderResponsive8, {
1664
- title: opRef.key,
1665
- subtitle: `Operation defined in ${feature.meta.title ?? feature.meta.key}`,
1666
- breadcrumb: /* @__PURE__ */ jsx19(Breadcrumbs7, {
1789
+ /* @__PURE__ */ jsx15(PageHeaderResponsive4, {
1790
+ title: eventRef.key,
1791
+ subtitle: `Event defined in ${feature.meta.title ?? feature.meta.key}`,
1792
+ breadcrumb: /* @__PURE__ */ jsx15(Breadcrumbs3, {
1667
1793
  items: [
1668
1794
  { label: "Features", href: "/features" },
1669
1795
  {
1670
1796
  label: feature.meta.title || feature.meta.key,
1671
1797
  href: `/features/${feature.meta.key}`
1672
1798
  },
1673
- {
1674
- label: "Operations",
1675
- href: `/features/${feature.meta.key}/operations`
1676
- },
1677
- { label: opRef.key }
1799
+ { label: "Events", href: `/features/${feature.meta.key}#events` },
1800
+ { label: eventRef.key }
1678
1801
  ]
1679
1802
  })
1680
1803
  }),
1681
- /* @__PURE__ */ jsxs13(HStack7, {
1804
+ /* @__PURE__ */ jsxs9(HStack8, {
1682
1805
  gap: "sm",
1683
1806
  children: [
1684
- /* @__PURE__ */ jsx19(StatusChip6, {
1807
+ /* @__PURE__ */ jsx15(StatusChip7, {
1685
1808
  tone: "neutral",
1686
- label: opRef.key,
1809
+ label: eventRef.key,
1687
1810
  size: "sm",
1688
- icon: /* @__PURE__ */ jsx19(Zap4, {
1811
+ icon: /* @__PURE__ */ jsx15(Radio4, {
1689
1812
  className: "h-3 w-3"
1690
1813
  })
1691
1814
  }),
1692
- /* @__PURE__ */ jsx19(StatusChip6, {
1815
+ /* @__PURE__ */ jsx15(StatusChip7, {
1693
1816
  tone: "neutral",
1694
- label: `v${opRef.version}`,
1817
+ label: `v${eventRef.version}`,
1695
1818
  size: "sm"
1696
1819
  }),
1697
- spec?.meta?.stability ? /* @__PURE__ */ jsx19(StatusChip6, {
1820
+ spec?.meta?.stability ? /* @__PURE__ */ jsx15(StatusChip7, {
1698
1821
  tone: spec.meta.stability === "stable" ? "success" : "warning",
1699
1822
  label: spec.meta.stability,
1700
1823
  size: "sm"
1701
1824
  }) : null
1702
1825
  ]
1703
1826
  }),
1704
- /* @__PURE__ */ jsxs13("div", {
1827
+ /* @__PURE__ */ jsxs9("div", {
1705
1828
  className: "grid grid-cols-1 gap-6 lg:grid-cols-3",
1706
1829
  children: [
1707
- /* @__PURE__ */ jsx19("div", {
1830
+ /* @__PURE__ */ jsx15("div", {
1708
1831
  className: "space-y-6 lg:col-span-2",
1709
- children: /* @__PURE__ */ jsx19(Card, {
1832
+ children: /* @__PURE__ */ jsx15(Card2, {
1710
1833
  className: "p-6",
1711
- children: /* @__PURE__ */ jsxs13(VStack10, {
1834
+ children: /* @__PURE__ */ jsxs9(VStack6, {
1712
1835
  gap: "md",
1713
1836
  children: [
1714
- /* @__PURE__ */ jsxs13(HStack7, {
1837
+ /* @__PURE__ */ jsxs9(HStack8, {
1715
1838
  className: "items-center gap-2 border-b pb-2",
1716
1839
  children: [
1717
- /* @__PURE__ */ jsx19(Code, {
1718
- className: "text-muted-foreground h-5 w-5"
1840
+ /* @__PURE__ */ jsx15(Code2, {
1841
+ className: "h-5 w-5 text-muted-foreground"
1719
1842
  }),
1720
- /* @__PURE__ */ jsx19("h3", {
1721
- className: "text-lg font-semibold",
1722
- children: "Schema Definition"
1843
+ /* @__PURE__ */ jsx15("h3", {
1844
+ className: "font-semibold text-lg",
1845
+ children: "Payload Definition"
1723
1846
  })
1724
1847
  ]
1725
1848
  }),
1726
- spec ? /* @__PURE__ */ jsxs13(VStack10, {
1849
+ spec ? /* @__PURE__ */ jsxs9(VStack6, {
1727
1850
  gap: "lg",
1728
1851
  children: [
1729
- spec.meta.description && /* @__PURE__ */ jsx19("p", {
1852
+ spec.meta.description && /* @__PURE__ */ jsx15("p", {
1730
1853
  className: "text-muted-foreground",
1731
1854
  children: spec.meta.description
1732
1855
  }),
1733
- /* @__PURE__ */ jsxs13(Box2, {
1734
- className: "flex-col gap-2",
1735
- children: [
1736
- /* @__PURE__ */ jsx19("span", {
1737
- className: "text-muted-foreground text-sm font-medium tracking-wider uppercase",
1738
- children: "Input Schema"
1739
- }),
1740
- /* @__PURE__ */ jsx19(CodeBlock, {
1741
- className: "w-full",
1742
- code: JSON.stringify(spec.io.input, null, 2),
1743
- language: "json"
1744
- })
1745
- ]
1746
- }),
1747
- /* @__PURE__ */ jsxs13(Box2, {
1856
+ /* @__PURE__ */ jsxs9(Box3, {
1748
1857
  className: "flex-col gap-2",
1749
1858
  children: [
1750
- /* @__PURE__ */ jsx19("span", {
1751
- className: "text-muted-foreground text-sm font-medium tracking-wider uppercase",
1752
- children: "Output Schema"
1859
+ /* @__PURE__ */ jsx15("span", {
1860
+ className: "font-medium text-muted-foreground text-sm uppercase tracking-wider",
1861
+ children: "Payload Schema"
1753
1862
  }),
1754
- /* @__PURE__ */ jsx19(CodeBlock, {
1755
- className: "w-full",
1756
- code: JSON.stringify(spec.io.output, null, 2),
1863
+ /* @__PURE__ */ jsx15(CodeBlock2, {
1864
+ code: JSON.stringify(spec.payload, null, 2),
1757
1865
  language: "json"
1758
1866
  })
1759
1867
  ]
1760
1868
  })
1761
1869
  ]
1762
- }) : /* @__PURE__ */ jsxs13(VStack10, {
1870
+ }) : /* @__PURE__ */ jsxs9(VStack6, {
1763
1871
  gap: "md",
1764
1872
  children: [
1765
- /* @__PURE__ */ jsx19("p", {
1873
+ /* @__PURE__ */ jsx15("p", {
1766
1874
  className: "text-muted-foreground",
1767
- children: "Full schema details are not available for this operation reference."
1875
+ children: "Full payload details are not available for this event reference."
1768
1876
  }),
1769
- /* @__PURE__ */ jsx19(CodeBlock, {
1770
- code: JSON.stringify(opRef, null, 2),
1877
+ /* @__PURE__ */ jsx15(CodeBlock2, {
1878
+ code: JSON.stringify(eventRef, null, 2),
1771
1879
  language: "json"
1772
1880
  })
1773
1881
  ]
@@ -1776,257 +1884,319 @@ function FeatureOperationDetailTemplate({
1776
1884
  })
1777
1885
  })
1778
1886
  }),
1779
- /* @__PURE__ */ jsx19("div", {
1887
+ /* @__PURE__ */ jsx15("div", {
1780
1888
  className: "space-y-6",
1781
- children: /* @__PURE__ */ jsx19(Card, {
1889
+ children: /* @__PURE__ */ jsx15(Card2, {
1782
1890
  className: "p-6",
1783
- children: /* @__PURE__ */ jsxs13(VStack10, {
1891
+ children: /* @__PURE__ */ jsxs9(VStack6, {
1784
1892
  gap: "md",
1785
1893
  children: [
1786
- /* @__PURE__ */ jsxs13(HStack7, {
1894
+ /* @__PURE__ */ jsxs9(HStack8, {
1787
1895
  className: "items-center gap-2 border-b pb-2",
1788
1896
  children: [
1789
- /* @__PURE__ */ jsx19(Database2, {
1790
- className: "text-muted-foreground h-5 w-5"
1897
+ /* @__PURE__ */ jsx15(Database3, {
1898
+ className: "h-5 w-5 text-muted-foreground"
1791
1899
  }),
1792
- /* @__PURE__ */ jsx19("h3", {
1793
- className: "text-lg font-semibold",
1900
+ /* @__PURE__ */ jsx15("h3", {
1901
+ className: "font-semibold text-lg",
1794
1902
  children: "Metadata"
1795
1903
  })
1796
1904
  ]
1797
1905
  }),
1798
- /* @__PURE__ */ jsxs13("dl", {
1906
+ /* @__PURE__ */ jsxs9("dl", {
1799
1907
  className: "grid grid-cols-1 gap-4 text-sm",
1800
1908
  children: [
1801
- /* @__PURE__ */ jsxs13("div", {
1909
+ /* @__PURE__ */ jsxs9("div", {
1802
1910
  children: [
1803
- /* @__PURE__ */ jsx19("dt", {
1911
+ /* @__PURE__ */ jsx15("dt", {
1804
1912
  className: "text-muted-foreground",
1805
1913
  children: "Key"
1806
1914
  }),
1807
- /* @__PURE__ */ jsx19("dd", {
1915
+ /* @__PURE__ */ jsx15("dd", {
1808
1916
  className: "truncate font-medium",
1809
- children: opRef.key
1917
+ children: eventRef.key
1810
1918
  })
1811
1919
  ]
1812
1920
  }),
1813
- /* @__PURE__ */ jsxs13("div", {
1921
+ /* @__PURE__ */ jsxs9("div", {
1814
1922
  children: [
1815
- /* @__PURE__ */ jsx19("dt", {
1923
+ /* @__PURE__ */ jsx15("dt", {
1816
1924
  className: "text-muted-foreground",
1817
1925
  children: "Version"
1818
1926
  }),
1819
- /* @__PURE__ */ jsx19("dd", {
1820
- className: "font-medium",
1821
- children: opRef.version
1822
- })
1823
- ]
1824
- }),
1825
- spec?.meta?.context && /* @__PURE__ */ jsxs13("div", {
1826
- children: [
1827
- /* @__PURE__ */ jsx19("dt", {
1828
- className: "text-muted-foreground",
1829
- children: "Context"
1830
- }),
1831
- /* @__PURE__ */ jsx19("dd", {
1927
+ /* @__PURE__ */ jsx15("dd", {
1832
1928
  className: "font-medium",
1833
- children: spec.meta.context
1929
+ children: eventRef.version
1834
1930
  })
1835
1931
  ]
1836
1932
  }),
1837
- spec?.meta?.owners && /* @__PURE__ */ jsxs13("div", {
1933
+ spec?.meta?.owners && /* @__PURE__ */ jsxs9("div", {
1838
1934
  children: [
1839
- /* @__PURE__ */ jsx19("dt", {
1935
+ /* @__PURE__ */ jsx15("dt", {
1840
1936
  className: "text-muted-foreground",
1841
1937
  children: "Owners"
1842
1938
  }),
1843
- /* @__PURE__ */ jsx19("dd", {
1939
+ /* @__PURE__ */ jsx15("dd", {
1844
1940
  className: "flex flex-wrap gap-1 font-medium",
1845
- children: spec.meta.owners.map((o) => /* @__PURE__ */ jsx19(StatusChip6, {
1941
+ children: spec.meta.owners.map((o) => /* @__PURE__ */ jsx15(StatusChip7, {
1846
1942
  label: o,
1847
1943
  size: "sm",
1848
1944
  tone: "neutral"
1849
1945
  }, o))
1850
1946
  })
1851
1947
  ]
1948
+ })
1949
+ ]
1950
+ })
1951
+ ]
1952
+ })
1953
+ })
1954
+ }),
1955
+ relatedDocs?.length ? /* @__PURE__ */ jsx15("div", {
1956
+ className: "lg:col-span-3",
1957
+ children: /* @__PURE__ */ jsx15(Card2, {
1958
+ className: "p-6",
1959
+ children: /* @__PURE__ */ jsxs9(VStack6, {
1960
+ gap: "md",
1961
+ children: [
1962
+ /* @__PURE__ */ jsxs9(HStack8, {
1963
+ className: "items-center gap-2 border-b pb-2",
1964
+ children: [
1965
+ /* @__PURE__ */ jsx15(BookOpen2, {
1966
+ className: "h-5 w-5 text-muted-foreground"
1852
1967
  }),
1853
- spec?.meta?.tags && /* @__PURE__ */ jsxs13("div", {
1968
+ /* @__PURE__ */ jsx15("h3", {
1969
+ className: "font-semibold text-lg",
1970
+ children: "Related Documentation"
1971
+ })
1972
+ ]
1973
+ }),
1974
+ /* @__PURE__ */ jsx15("div", {
1975
+ className: "grid grid-cols-1 gap-4 md:grid-cols-2 lg:grid-cols-3",
1976
+ children: relatedDocs.map((doc) => /* @__PURE__ */ jsx15(Link3, {
1977
+ href: doc.route || `/docs/${doc.id}`,
1978
+ className: "group block",
1979
+ children: /* @__PURE__ */ jsxs9("div", {
1980
+ className: "h-full rounded-lg border p-4 transition-colors hover:border-primary",
1854
1981
  children: [
1855
- /* @__PURE__ */ jsx19("dt", {
1856
- className: "text-muted-foreground",
1857
- children: "Tags"
1982
+ /* @__PURE__ */ jsx15("h4", {
1983
+ className: "mb-1 font-semibold group-hover:text-primary",
1984
+ children: doc.title
1858
1985
  }),
1859
- /* @__PURE__ */ jsx19("dd", {
1860
- className: "flex flex-wrap gap-1 font-medium",
1861
- children: spec.meta.tags.map((t) => /* @__PURE__ */ jsx19(StatusChip6, {
1862
- label: `#${t}`,
1863
- size: "sm",
1864
- tone: "neutral"
1865
- }, t))
1986
+ doc.summary && /* @__PURE__ */ jsx15("p", {
1987
+ className: "line-clamp-2 text-muted-foreground text-sm",
1988
+ children: doc.summary
1866
1989
  })
1867
1990
  ]
1868
1991
  })
1869
- ]
1992
+ }, doc.id))
1870
1993
  })
1871
1994
  ]
1872
1995
  })
1873
1996
  })
1874
- })
1997
+ }) : null
1875
1998
  ]
1876
1999
  })
1877
2000
  ]
1878
2001
  });
1879
2002
  }
1880
- // src/presentation/features/templates/FeatureEventDetailTemplate/FeatureEventDetailTemplate.tsx
2003
+ // src/presentation/features/templates/FeatureEventsTemplate/FeatureEventsTemplate.tsx
1881
2004
  import {
1882
- Breadcrumbs as Breadcrumbs8,
1883
- CodeBlock as CodeBlock2,
1884
- EmptyState as EmptyState3,
1885
- PageHeaderResponsive as PageHeaderResponsive9,
1886
- StatusChip as StatusChip7
2005
+ Breadcrumbs as Breadcrumbs4,
2006
+ PageHeaderResponsive as PageHeaderResponsive5
1887
2007
  } from "@contractspec/lib.design-system";
1888
- import { Card as Card2 } from "@contractspec/lib.ui-kit-web/ui/card";
1889
- import { Box as Box3, HStack as HStack8, VStack as VStack11 } from "@contractspec/lib.ui-kit-web/ui/stack";
1890
- import { cn as cn13 } from "@contractspec/lib.ui-kit-web/ui/utils";
1891
- import { BookOpen, Code as Code2, Database as Database3, Radio as Radio4 } from "lucide-react";
1892
- import Link2 from "next/link";
1893
- import { jsx as jsx20, jsxs as jsxs14 } from "react/jsx-runtime";
2008
+ import { VStack as VStack7 } from "@contractspec/lib.ui-kit-web/ui/stack";
2009
+ import { cn as cn9 } from "@contractspec/lib.ui-kit-web/ui/utils";
2010
+ import { jsx as jsx16, jsxs as jsxs10 } from "react/jsx-runtime";
1894
2011
  "use client";
1895
- function FeatureEventDetailTemplate({
2012
+ function FeatureEventsTemplate({
1896
2013
  feature,
1897
- eventKey,
1898
- event,
2014
+ className
2015
+ }) {
2016
+ return /* @__PURE__ */ jsxs10(VStack7, {
2017
+ gap: "lg",
2018
+ className: cn9("mx-auto w-full max-w-5xl p-6", className),
2019
+ children: [
2020
+ /* @__PURE__ */ jsx16(PageHeaderResponsive5, {
2021
+ title: "Events",
2022
+ subtitle: `Events defined in ${feature.meta.title ?? feature.meta.key}`,
2023
+ breadcrumb: /* @__PURE__ */ jsx16(Breadcrumbs4, {
2024
+ items: [
2025
+ { label: "Features", href: "/features" },
2026
+ {
2027
+ label: feature.meta.title || feature.meta.key,
2028
+ href: `/features/${feature.meta.key}`
2029
+ },
2030
+ { label: "Events" }
2031
+ ]
2032
+ })
2033
+ }),
2034
+ /* @__PURE__ */ jsx16(FeatureEventsList, {
2035
+ feature
2036
+ })
2037
+ ]
2038
+ });
2039
+ }
2040
+ // src/presentation/features/templates/FeatureFormDetailTemplate/FeatureFormDetailTemplate.tsx
2041
+ import {
2042
+ Breadcrumbs as Breadcrumbs5,
2043
+ CodeBlock as CodeBlock3,
2044
+ EmptyState as EmptyState4,
2045
+ PageHeaderResponsive as PageHeaderResponsive6,
2046
+ StatusChip as StatusChip8
2047
+ } from "@contractspec/lib.design-system";
2048
+ import { Card as Card3 } from "@contractspec/lib.ui-kit-web/ui/card";
2049
+ import { Box as Box4, HStack as HStack9, VStack as VStack8 } from "@contractspec/lib.ui-kit-web/ui/stack";
2050
+ import { cn as cn10 } from "@contractspec/lib.ui-kit-web/ui/utils";
2051
+ import { BookOpen as BookOpen3, Code as Code3, Database as Database4, PenTool } from "lucide-react";
2052
+ import Link4 from "next/link";
2053
+ import { jsx as jsx17, jsxs as jsxs11 } from "react/jsx-runtime";
2054
+ "use client";
2055
+ function FeatureFormDetailTemplate({
2056
+ feature,
2057
+ formKey,
2058
+ form,
1899
2059
  spec,
1900
2060
  className
1901
2061
  }) {
1902
- const eventRef = event ?? feature.events?.find((ev) => ev.key === eventKey);
1903
- const relatedDocs = useRelatedDocs(eventRef?.key || "", spec?.meta?.tags);
1904
- if (!eventRef) {
1905
- return /* @__PURE__ */ jsxs14(VStack11, {
2062
+ const formRef = form ?? feature.forms?.find((f) => f.key === formKey);
2063
+ const relatedDocs = useRelatedDocs(formRef?.key || "", spec?.meta?.tags);
2064
+ if (!formRef) {
2065
+ return /* @__PURE__ */ jsxs11(VStack8, {
1906
2066
  gap: "lg",
1907
- className: cn13("mx-auto w-full max-w-5xl p-6", className),
2067
+ className: cn10("mx-auto w-full max-w-5xl p-6", className),
1908
2068
  children: [
1909
- /* @__PURE__ */ jsx20(PageHeaderResponsive9, {
1910
- title: "Event Not Found",
1911
- subtitle: `Event ${eventKey} not found in feature ${feature.meta.key}`,
1912
- breadcrumb: /* @__PURE__ */ jsx20(Breadcrumbs8, {
2069
+ /* @__PURE__ */ jsx17(PageHeaderResponsive6, {
2070
+ title: "Form Not Found",
2071
+ subtitle: `Form ${formKey} not found in feature ${feature.meta.key}`,
2072
+ breadcrumb: /* @__PURE__ */ jsx17(Breadcrumbs5, {
1913
2073
  items: [
1914
2074
  { label: "Features", href: "/features" },
1915
2075
  {
1916
2076
  label: feature.meta.title || feature.meta.key,
1917
2077
  href: `/features/${feature.meta.key}`
1918
2078
  },
1919
- {
1920
- label: "Events",
1921
- href: `/features/${feature.meta.key}/events`
1922
- }
2079
+ { label: "Forms" }
1923
2080
  ]
1924
2081
  })
1925
2082
  }),
1926
- /* @__PURE__ */ jsx20(EmptyState3, {
1927
- title: "Event not found",
1928
- description: `The event '${eventKey}' could not be found in this feature.`,
1929
- icon: /* @__PURE__ */ jsx20(Radio4, {
1930
- className: "text-muted-foreground h-12 w-12"
2083
+ /* @__PURE__ */ jsx17(EmptyState4, {
2084
+ title: "Form not found",
2085
+ description: `The form '${formKey}' could not be found in this feature.`,
2086
+ icon: /* @__PURE__ */ jsx17(PenTool, {
2087
+ className: "h-12 w-12 text-muted-foreground"
1931
2088
  })
1932
2089
  })
1933
2090
  ]
1934
2091
  });
1935
2092
  }
1936
- return /* @__PURE__ */ jsxs14(VStack11, {
2093
+ return /* @__PURE__ */ jsxs11(VStack8, {
1937
2094
  gap: "lg",
1938
- className: cn13("mx-auto w-full max-w-5xl p-6", className),
2095
+ className: cn10("mx-auto w-full max-w-5xl p-6", className),
1939
2096
  children: [
1940
- /* @__PURE__ */ jsx20(PageHeaderResponsive9, {
1941
- title: eventRef.key,
1942
- subtitle: `Event defined in ${feature.meta.title ?? feature.meta.key}`,
1943
- breadcrumb: /* @__PURE__ */ jsx20(Breadcrumbs8, {
2097
+ /* @__PURE__ */ jsx17(PageHeaderResponsive6, {
2098
+ title: formRef.key,
2099
+ subtitle: `Form defined in ${feature.meta.title ?? feature.meta.key}`,
2100
+ breadcrumb: /* @__PURE__ */ jsx17(Breadcrumbs5, {
1944
2101
  items: [
1945
2102
  { label: "Features", href: "/features" },
1946
2103
  {
1947
2104
  label: feature.meta.title || feature.meta.key,
1948
2105
  href: `/features/${feature.meta.key}`
1949
2106
  },
1950
- { label: "Events", href: `/features/${feature.meta.key}#events` },
1951
- { label: eventRef.key }
2107
+ { label: "Forms", href: `/features/${feature.meta.key}#forms` },
2108
+ { label: formRef.key }
1952
2109
  ]
1953
2110
  })
1954
2111
  }),
1955
- /* @__PURE__ */ jsxs14(HStack8, {
2112
+ /* @__PURE__ */ jsxs11(HStack9, {
1956
2113
  gap: "sm",
1957
2114
  children: [
1958
- /* @__PURE__ */ jsx20(StatusChip7, {
2115
+ /* @__PURE__ */ jsx17(StatusChip8, {
1959
2116
  tone: "neutral",
1960
- label: eventRef.key,
2117
+ label: formRef.key,
1961
2118
  size: "sm",
1962
- icon: /* @__PURE__ */ jsx20(Radio4, {
2119
+ icon: /* @__PURE__ */ jsx17(PenTool, {
1963
2120
  className: "h-3 w-3"
1964
2121
  })
1965
2122
  }),
1966
- /* @__PURE__ */ jsx20(StatusChip7, {
2123
+ /* @__PURE__ */ jsx17(StatusChip8, {
1967
2124
  tone: "neutral",
1968
- label: `v${eventRef.version}`,
2125
+ label: `v${formRef.version}`,
1969
2126
  size: "sm"
1970
2127
  }),
1971
- spec?.meta?.stability ? /* @__PURE__ */ jsx20(StatusChip7, {
2128
+ spec?.meta?.stability ? /* @__PURE__ */ jsx17(StatusChip8, {
1972
2129
  tone: spec.meta.stability === "stable" ? "success" : "warning",
1973
2130
  label: spec.meta.stability,
1974
2131
  size: "sm"
1975
2132
  }) : null
1976
2133
  ]
1977
2134
  }),
1978
- /* @__PURE__ */ jsxs14("div", {
2135
+ /* @__PURE__ */ jsxs11("div", {
1979
2136
  className: "grid grid-cols-1 gap-6 lg:grid-cols-3",
1980
2137
  children: [
1981
- /* @__PURE__ */ jsx20("div", {
2138
+ /* @__PURE__ */ jsx17("div", {
1982
2139
  className: "space-y-6 lg:col-span-2",
1983
- children: /* @__PURE__ */ jsx20(Card2, {
2140
+ children: /* @__PURE__ */ jsx17(Card3, {
1984
2141
  className: "p-6",
1985
- children: /* @__PURE__ */ jsxs14(VStack11, {
2142
+ children: /* @__PURE__ */ jsxs11(VStack8, {
1986
2143
  gap: "md",
1987
2144
  children: [
1988
- /* @__PURE__ */ jsxs14(HStack8, {
2145
+ /* @__PURE__ */ jsxs11(HStack9, {
1989
2146
  className: "items-center gap-2 border-b pb-2",
1990
2147
  children: [
1991
- /* @__PURE__ */ jsx20(Code2, {
1992
- className: "text-muted-foreground h-5 w-5"
2148
+ /* @__PURE__ */ jsx17(Code3, {
2149
+ className: "h-5 w-5 text-muted-foreground"
1993
2150
  }),
1994
- /* @__PURE__ */ jsx20("h3", {
1995
- className: "text-lg font-semibold",
1996
- children: "Payload Definition"
2151
+ /* @__PURE__ */ jsx17("h3", {
2152
+ className: "font-semibold text-lg",
2153
+ children: "Form Definition"
1997
2154
  })
1998
2155
  ]
1999
2156
  }),
2000
- spec ? /* @__PURE__ */ jsxs14(VStack11, {
2157
+ spec ? /* @__PURE__ */ jsxs11(VStack8, {
2001
2158
  gap: "lg",
2002
2159
  children: [
2003
- spec.meta.description && /* @__PURE__ */ jsx20("p", {
2160
+ spec.meta.description && /* @__PURE__ */ jsx17("p", {
2004
2161
  className: "text-muted-foreground",
2005
2162
  children: spec.meta.description
2006
2163
  }),
2007
- /* @__PURE__ */ jsxs14(Box3, {
2164
+ /* @__PURE__ */ jsxs11(Box4, {
2008
2165
  className: "flex-col gap-2",
2009
2166
  children: [
2010
- /* @__PURE__ */ jsx20("span", {
2011
- className: "text-muted-foreground text-sm font-medium tracking-wider uppercase",
2012
- children: "Payload Schema"
2167
+ /* @__PURE__ */ jsx17("span", {
2168
+ className: "font-medium text-muted-foreground text-sm uppercase tracking-wider",
2169
+ children: "Fields"
2013
2170
  }),
2014
- /* @__PURE__ */ jsx20(CodeBlock2, {
2015
- code: JSON.stringify(spec.payload, null, 2),
2171
+ /* @__PURE__ */ jsx17(CodeBlock3, {
2172
+ code: JSON.stringify(spec.fields, null, 2),
2173
+ language: "json"
2174
+ })
2175
+ ]
2176
+ }),
2177
+ /* @__PURE__ */ jsxs11(Box4, {
2178
+ className: "flex-col gap-2",
2179
+ children: [
2180
+ /* @__PURE__ */ jsx17("span", {
2181
+ className: "font-medium text-muted-foreground text-sm uppercase tracking-wider",
2182
+ children: "Actions"
2183
+ }),
2184
+ /* @__PURE__ */ jsx17(CodeBlock3, {
2185
+ code: JSON.stringify(spec.actions, null, 2),
2016
2186
  language: "json"
2017
2187
  })
2018
2188
  ]
2019
2189
  })
2020
2190
  ]
2021
- }) : /* @__PURE__ */ jsxs14(VStack11, {
2191
+ }) : /* @__PURE__ */ jsxs11(VStack8, {
2022
2192
  gap: "md",
2023
2193
  children: [
2024
- /* @__PURE__ */ jsx20("p", {
2194
+ /* @__PURE__ */ jsx17("p", {
2025
2195
  className: "text-muted-foreground",
2026
- children: "Full payload details are not available for this event reference."
2196
+ children: "Full form definition details are not available for this form reference."
2027
2197
  }),
2028
- /* @__PURE__ */ jsx20(CodeBlock2, {
2029
- code: JSON.stringify(eventRef, null, 2),
2198
+ /* @__PURE__ */ jsx17(CodeBlock3, {
2199
+ code: JSON.stringify(formRef, null, 2),
2030
2200
  language: "json"
2031
2201
  })
2032
2202
  ]
@@ -2035,67 +2205,83 @@ function FeatureEventDetailTemplate({
2035
2205
  })
2036
2206
  })
2037
2207
  }),
2038
- /* @__PURE__ */ jsx20("div", {
2208
+ /* @__PURE__ */ jsx17("div", {
2039
2209
  className: "space-y-6",
2040
- children: /* @__PURE__ */ jsx20(Card2, {
2210
+ children: /* @__PURE__ */ jsx17(Card3, {
2041
2211
  className: "p-6",
2042
- children: /* @__PURE__ */ jsxs14(VStack11, {
2212
+ children: /* @__PURE__ */ jsxs11(VStack8, {
2043
2213
  gap: "md",
2044
2214
  children: [
2045
- /* @__PURE__ */ jsxs14(HStack8, {
2215
+ /* @__PURE__ */ jsxs11(HStack9, {
2046
2216
  className: "items-center gap-2 border-b pb-2",
2047
2217
  children: [
2048
- /* @__PURE__ */ jsx20(Database3, {
2049
- className: "text-muted-foreground h-5 w-5"
2218
+ /* @__PURE__ */ jsx17(Database4, {
2219
+ className: "h-5 w-5 text-muted-foreground"
2050
2220
  }),
2051
- /* @__PURE__ */ jsx20("h3", {
2052
- className: "text-lg font-semibold",
2221
+ /* @__PURE__ */ jsx17("h3", {
2222
+ className: "font-semibold text-lg",
2053
2223
  children: "Metadata"
2054
2224
  })
2055
2225
  ]
2056
2226
  }),
2057
- /* @__PURE__ */ jsxs14("dl", {
2227
+ /* @__PURE__ */ jsxs11("dl", {
2058
2228
  className: "grid grid-cols-1 gap-4 text-sm",
2059
2229
  children: [
2060
- /* @__PURE__ */ jsxs14("div", {
2230
+ /* @__PURE__ */ jsxs11("div", {
2061
2231
  children: [
2062
- /* @__PURE__ */ jsx20("dt", {
2232
+ /* @__PURE__ */ jsx17("dt", {
2063
2233
  className: "text-muted-foreground",
2064
2234
  children: "Key"
2065
2235
  }),
2066
- /* @__PURE__ */ jsx20("dd", {
2236
+ /* @__PURE__ */ jsx17("dd", {
2067
2237
  className: "truncate font-medium",
2068
- children: eventRef.key
2238
+ children: formRef.key
2069
2239
  })
2070
2240
  ]
2071
2241
  }),
2072
- /* @__PURE__ */ jsxs14("div", {
2242
+ /* @__PURE__ */ jsxs11("div", {
2073
2243
  children: [
2074
- /* @__PURE__ */ jsx20("dt", {
2244
+ /* @__PURE__ */ jsx17("dt", {
2075
2245
  className: "text-muted-foreground",
2076
2246
  children: "Version"
2077
2247
  }),
2078
- /* @__PURE__ */ jsx20("dd", {
2248
+ /* @__PURE__ */ jsx17("dd", {
2079
2249
  className: "font-medium",
2080
- children: eventRef.version
2250
+ children: formRef.version
2081
2251
  })
2082
2252
  ]
2083
2253
  }),
2084
- spec?.meta?.owners && /* @__PURE__ */ jsxs14("div", {
2254
+ spec?.meta?.owners && /* @__PURE__ */ jsxs11("div", {
2085
2255
  children: [
2086
- /* @__PURE__ */ jsx20("dt", {
2256
+ /* @__PURE__ */ jsx17("dt", {
2087
2257
  className: "text-muted-foreground",
2088
2258
  children: "Owners"
2089
2259
  }),
2090
- /* @__PURE__ */ jsx20("dd", {
2260
+ /* @__PURE__ */ jsx17("dd", {
2091
2261
  className: "flex flex-wrap gap-1 font-medium",
2092
- children: spec.meta.owners.map((o) => /* @__PURE__ */ jsx20(StatusChip7, {
2262
+ children: spec.meta.owners.map((o) => /* @__PURE__ */ jsx17(StatusChip8, {
2093
2263
  label: o,
2094
2264
  size: "sm",
2095
2265
  tone: "neutral"
2096
2266
  }, o))
2097
2267
  })
2098
2268
  ]
2269
+ }),
2270
+ spec?.meta?.tags && /* @__PURE__ */ jsxs11("div", {
2271
+ children: [
2272
+ /* @__PURE__ */ jsx17("dt", {
2273
+ className: "text-muted-foreground",
2274
+ children: "Tags"
2275
+ }),
2276
+ /* @__PURE__ */ jsx17("dd", {
2277
+ className: "flex flex-wrap gap-1 font-medium",
2278
+ children: spec.meta.tags.map((t) => /* @__PURE__ */ jsx17(StatusChip8, {
2279
+ label: `#${t}`,
2280
+ size: "sm",
2281
+ tone: "neutral"
2282
+ }, t))
2283
+ })
2284
+ ]
2099
2285
  })
2100
2286
  ]
2101
2287
  })
@@ -2103,39 +2289,39 @@ function FeatureEventDetailTemplate({
2103
2289
  })
2104
2290
  })
2105
2291
  }),
2106
- relatedDocs?.length ? /* @__PURE__ */ jsx20("div", {
2292
+ relatedDocs?.length ? /* @__PURE__ */ jsx17("div", {
2107
2293
  className: "lg:col-span-3",
2108
- children: /* @__PURE__ */ jsx20(Card2, {
2294
+ children: /* @__PURE__ */ jsx17(Card3, {
2109
2295
  className: "p-6",
2110
- children: /* @__PURE__ */ jsxs14(VStack11, {
2296
+ children: /* @__PURE__ */ jsxs11(VStack8, {
2111
2297
  gap: "md",
2112
2298
  children: [
2113
- /* @__PURE__ */ jsxs14(HStack8, {
2299
+ /* @__PURE__ */ jsxs11(HStack9, {
2114
2300
  className: "items-center gap-2 border-b pb-2",
2115
2301
  children: [
2116
- /* @__PURE__ */ jsx20(BookOpen, {
2117
- className: "text-muted-foreground h-5 w-5"
2302
+ /* @__PURE__ */ jsx17(BookOpen3, {
2303
+ className: "h-5 w-5 text-muted-foreground"
2118
2304
  }),
2119
- /* @__PURE__ */ jsx20("h3", {
2120
- className: "text-lg font-semibold",
2305
+ /* @__PURE__ */ jsx17("h3", {
2306
+ className: "font-semibold text-lg",
2121
2307
  children: "Related Documentation"
2122
2308
  })
2123
2309
  ]
2124
2310
  }),
2125
- /* @__PURE__ */ jsx20("div", {
2311
+ /* @__PURE__ */ jsx17("div", {
2126
2312
  className: "grid grid-cols-1 gap-4 md:grid-cols-2 lg:grid-cols-3",
2127
- children: relatedDocs.map((doc) => /* @__PURE__ */ jsx20(Link2, {
2313
+ children: relatedDocs.map((doc) => /* @__PURE__ */ jsx17(Link4, {
2128
2314
  href: doc.route || `/docs/${doc.id}`,
2129
2315
  className: "group block",
2130
- children: /* @__PURE__ */ jsxs14("div", {
2131
- className: "hover:border-primary h-full rounded-lg border p-4 transition-colors",
2316
+ children: /* @__PURE__ */ jsxs11("div", {
2317
+ className: "h-full rounded-lg border p-4 transition-colors hover:border-primary",
2132
2318
  children: [
2133
- /* @__PURE__ */ jsx20("h4", {
2134
- className: "group-hover:text-primary mb-1 font-semibold",
2319
+ /* @__PURE__ */ jsx17("h4", {
2320
+ className: "mb-1 font-semibold group-hover:text-primary",
2135
2321
  children: doc.title
2136
2322
  }),
2137
- doc.summary && /* @__PURE__ */ jsx20("p", {
2138
- className: "text-muted-foreground line-clamp-2 text-sm",
2323
+ doc.summary && /* @__PURE__ */ jsx17("p", {
2324
+ className: "line-clamp-2 text-muted-foreground text-sm",
2139
2325
  children: doc.summary
2140
2326
  })
2141
2327
  ]
@@ -2151,70 +2337,103 @@ function FeatureEventDetailTemplate({
2151
2337
  ]
2152
2338
  });
2153
2339
  }
2154
- // src/presentation/features/templates/FeaturePresentationDetailTemplate/FeaturePresentationDetailTemplate.tsx
2340
+ // src/presentation/features/templates/FeatureFormsTemplate/FeatureFormsTemplate.tsx
2155
2341
  import {
2156
- Breadcrumbs as Breadcrumbs9,
2157
- CodeBlock as CodeBlock3,
2158
- EmptyState as EmptyState4,
2159
- PageHeaderResponsive as PageHeaderResponsive10,
2160
- StatusChip as StatusChip8
2342
+ Breadcrumbs as Breadcrumbs6,
2343
+ PageHeaderResponsive as PageHeaderResponsive7
2344
+ } from "@contractspec/lib.design-system";
2345
+ import { VStack as VStack9 } from "@contractspec/lib.ui-kit-web/ui/stack";
2346
+ import { cn as cn11 } from "@contractspec/lib.ui-kit-web/ui/utils";
2347
+ import { jsx as jsx18, jsxs as jsxs12 } from "react/jsx-runtime";
2348
+ "use client";
2349
+ function FeatureFormsTemplate({
2350
+ feature,
2351
+ className
2352
+ }) {
2353
+ return /* @__PURE__ */ jsxs12(VStack9, {
2354
+ gap: "lg",
2355
+ className: cn11("mx-auto w-full max-w-5xl p-6", className),
2356
+ children: [
2357
+ /* @__PURE__ */ jsx18(PageHeaderResponsive7, {
2358
+ title: "Forms",
2359
+ subtitle: `Forms defined in ${feature.meta.title ?? feature.meta.key}`,
2360
+ breadcrumb: /* @__PURE__ */ jsx18(Breadcrumbs6, {
2361
+ items: [
2362
+ { label: "Features", href: "/features" },
2363
+ {
2364
+ label: feature.meta.title || feature.meta.key,
2365
+ href: `/features/${feature.meta.key}`
2366
+ },
2367
+ { label: "Forms" }
2368
+ ]
2369
+ })
2370
+ }),
2371
+ /* @__PURE__ */ jsx18(FeatureFormsList, {
2372
+ feature
2373
+ })
2374
+ ]
2375
+ });
2376
+ }
2377
+ // src/presentation/features/templates/FeatureOperationDetailTemplate/FeatureOperationDetailTemplate.tsx
2378
+ import {
2379
+ Breadcrumbs as Breadcrumbs7,
2380
+ CodeBlock as CodeBlock4,
2381
+ EmptyState as EmptyState5,
2382
+ PageHeaderResponsive as PageHeaderResponsive8,
2383
+ StatusChip as StatusChip9
2161
2384
  } from "@contractspec/lib.design-system";
2162
- import { Card as Card3 } from "@contractspec/lib.ui-kit-web/ui/card";
2163
- import { Box as Box4, HStack as HStack9, VStack as VStack12 } from "@contractspec/lib.ui-kit-web/ui/stack";
2164
- import { cn as cn14 } from "@contractspec/lib.ui-kit-web/ui/utils";
2165
- import { BookOpen as BookOpen2, Code as Code3, Database as Database4, Layout as Layout5 } from "lucide-react";
2166
- import Link3 from "next/link";
2167
- import { jsx as jsx21, jsxs as jsxs15 } from "react/jsx-runtime";
2385
+ import { Card as Card4 } from "@contractspec/lib.ui-kit-web/ui/card";
2386
+ import { Box as Box5, HStack as HStack10, VStack as VStack10 } from "@contractspec/lib.ui-kit-web/ui/stack";
2387
+ import { cn as cn12 } from "@contractspec/lib.ui-kit-web/ui/utils";
2388
+ import { Code as Code4, Database as Database5, Zap as Zap4 } from "lucide-react";
2389
+ import { jsx as jsx19, jsxs as jsxs13 } from "react/jsx-runtime";
2168
2390
  "use client";
2169
- function FeaturePresentationDetailTemplate({
2391
+ function FeatureOperationDetailTemplate({
2170
2392
  feature,
2171
- presentationKey,
2172
- presentation,
2393
+ operationKey,
2394
+ operation,
2173
2395
  spec,
2174
2396
  className
2175
2397
  }) {
2176
- const presRef = presentation ?? feature.presentations?.find((p) => p.key === presentationKey);
2177
- const relatedDocs = useRelatedDocs(presRef?.key || "", spec?.meta?.tags);
2178
- if (!presRef) {
2179
- return /* @__PURE__ */ jsxs15(VStack12, {
2398
+ const opRef = operation ?? feature.operations?.find((op) => op.key === operationKey);
2399
+ const _relatedDocs = useRelatedDocs(opRef?.key || "", spec?.meta?.tags);
2400
+ if (!opRef) {
2401
+ return /* @__PURE__ */ jsxs13(VStack10, {
2180
2402
  gap: "lg",
2181
- className: cn14("mx-auto w-full max-w-5xl p-6", className),
2403
+ className: cn12("mx-auto w-full max-w-5xl p-6", className),
2182
2404
  children: [
2183
- /* @__PURE__ */ jsx21(PageHeaderResponsive10, {
2184
- title: "Presentation Not Found",
2185
- subtitle: `Presentation ${presentationKey} not found in feature ${feature.meta.key}`,
2186
- breadcrumb: /* @__PURE__ */ jsx21(Breadcrumbs9, {
2405
+ /* @__PURE__ */ jsx19(PageHeaderResponsive8, {
2406
+ title: "Operation Not Found",
2407
+ subtitle: `Operation ${operationKey} not found in feature ${feature.meta.key}`,
2408
+ breadcrumb: /* @__PURE__ */ jsx19(Breadcrumbs7, {
2187
2409
  items: [
2188
2410
  { label: "Features", href: "/features" },
2189
2411
  {
2190
2412
  label: feature.meta.title || feature.meta.key,
2191
2413
  href: `/features/${feature.meta.key}`
2192
2414
  },
2193
- {
2194
- label: "Presentations",
2195
- href: `/features/${feature.meta.key}/presentation`
2196
- }
2415
+ { label: "Operations" }
2197
2416
  ]
2198
2417
  })
2199
2418
  }),
2200
- /* @__PURE__ */ jsx21(EmptyState4, {
2201
- title: "Presentation not found",
2202
- description: `The presentation '${presentationKey}' could not be found in this feature.`,
2203
- icon: /* @__PURE__ */ jsx21(Layout5, {
2204
- className: "text-muted-foreground h-12 w-12"
2419
+ /* @__PURE__ */ jsx19(EmptyState5, {
2420
+ title: "Operation not found",
2421
+ description: `The operation '${operationKey}' could not be found in this feature.`,
2422
+ icon: /* @__PURE__ */ jsx19(Zap4, {
2423
+ className: "h-12 w-12 text-muted-foreground"
2205
2424
  })
2206
2425
  })
2207
2426
  ]
2208
2427
  });
2209
2428
  }
2210
- return /* @__PURE__ */ jsxs15(VStack12, {
2429
+ return /* @__PURE__ */ jsxs13(VStack10, {
2211
2430
  gap: "lg",
2212
- className: cn14("mx-auto w-full max-w-5xl p-6", className),
2431
+ className: cn12("mx-auto w-full max-w-5xl p-6", className),
2213
2432
  children: [
2214
- /* @__PURE__ */ jsx21(PageHeaderResponsive10, {
2215
- title: presRef.key,
2216
- subtitle: `Presentation defined in ${feature.meta.title ?? feature.meta.key}`,
2217
- breadcrumb: /* @__PURE__ */ jsx21(Breadcrumbs9, {
2433
+ /* @__PURE__ */ jsx19(PageHeaderResponsive8, {
2434
+ title: opRef.key,
2435
+ subtitle: `Operation defined in ${feature.meta.title ?? feature.meta.key}`,
2436
+ breadcrumb: /* @__PURE__ */ jsx19(Breadcrumbs7, {
2218
2437
  items: [
2219
2438
  { label: "Features", href: "/features" },
2220
2439
  {
@@ -2222,88 +2441,103 @@ function FeaturePresentationDetailTemplate({
2222
2441
  href: `/features/${feature.meta.key}`
2223
2442
  },
2224
2443
  {
2225
- label: "Presentations",
2226
- href: `/features/${feature.meta.key}#presentations`
2444
+ label: "Operations",
2445
+ href: `/features/${feature.meta.key}/operations`
2227
2446
  },
2228
- { label: presRef.key }
2447
+ { label: opRef.key }
2229
2448
  ]
2230
2449
  })
2231
2450
  }),
2232
- /* @__PURE__ */ jsxs15(HStack9, {
2451
+ /* @__PURE__ */ jsxs13(HStack10, {
2233
2452
  gap: "sm",
2234
2453
  children: [
2235
- /* @__PURE__ */ jsx21(StatusChip8, {
2454
+ /* @__PURE__ */ jsx19(StatusChip9, {
2236
2455
  tone: "neutral",
2237
- label: presRef.key,
2456
+ label: opRef.key,
2238
2457
  size: "sm",
2239
- icon: /* @__PURE__ */ jsx21(Layout5, {
2458
+ icon: /* @__PURE__ */ jsx19(Zap4, {
2240
2459
  className: "h-3 w-3"
2241
2460
  })
2242
2461
  }),
2243
- /* @__PURE__ */ jsx21(StatusChip8, {
2462
+ /* @__PURE__ */ jsx19(StatusChip9, {
2244
2463
  tone: "neutral",
2245
- label: `v${presRef.version}`,
2464
+ label: `v${opRef.version}`,
2246
2465
  size: "sm"
2247
2466
  }),
2248
- spec?.meta?.stability ? /* @__PURE__ */ jsx21(StatusChip8, {
2467
+ spec?.meta?.stability ? /* @__PURE__ */ jsx19(StatusChip9, {
2249
2468
  tone: spec.meta.stability === "stable" ? "success" : "warning",
2250
2469
  label: spec.meta.stability,
2251
2470
  size: "sm"
2252
2471
  }) : null
2253
2472
  ]
2254
2473
  }),
2255
- /* @__PURE__ */ jsxs15("div", {
2474
+ /* @__PURE__ */ jsxs13("div", {
2256
2475
  className: "grid grid-cols-1 gap-6 lg:grid-cols-3",
2257
2476
  children: [
2258
- /* @__PURE__ */ jsx21("div", {
2477
+ /* @__PURE__ */ jsx19("div", {
2259
2478
  className: "space-y-6 lg:col-span-2",
2260
- children: /* @__PURE__ */ jsx21(Card3, {
2479
+ children: /* @__PURE__ */ jsx19(Card4, {
2261
2480
  className: "p-6",
2262
- children: /* @__PURE__ */ jsxs15(VStack12, {
2481
+ children: /* @__PURE__ */ jsxs13(VStack10, {
2263
2482
  gap: "md",
2264
2483
  children: [
2265
- /* @__PURE__ */ jsxs15(HStack9, {
2484
+ /* @__PURE__ */ jsxs13(HStack10, {
2266
2485
  className: "items-center gap-2 border-b pb-2",
2267
2486
  children: [
2268
- /* @__PURE__ */ jsx21(Code3, {
2269
- className: "text-muted-foreground h-5 w-5"
2487
+ /* @__PURE__ */ jsx19(Code4, {
2488
+ className: "h-5 w-5 text-muted-foreground"
2270
2489
  }),
2271
- /* @__PURE__ */ jsx21("h3", {
2272
- className: "text-lg font-semibold",
2273
- children: "Component Definition"
2490
+ /* @__PURE__ */ jsx19("h3", {
2491
+ className: "font-semibold text-lg",
2492
+ children: "Schema Definition"
2274
2493
  })
2275
2494
  ]
2276
2495
  }),
2277
- spec ? /* @__PURE__ */ jsxs15(VStack12, {
2496
+ spec ? /* @__PURE__ */ jsxs13(VStack10, {
2278
2497
  gap: "lg",
2279
2498
  children: [
2280
- spec.meta.description && /* @__PURE__ */ jsx21("p", {
2499
+ spec.meta.description && /* @__PURE__ */ jsx19("p", {
2281
2500
  className: "text-muted-foreground",
2282
2501
  children: spec.meta.description
2283
2502
  }),
2284
- /* @__PURE__ */ jsxs15(Box4, {
2503
+ /* @__PURE__ */ jsxs13(Box5, {
2285
2504
  className: "flex-col gap-2",
2286
2505
  children: [
2287
- /* @__PURE__ */ jsx21("span", {
2288
- className: "text-muted-foreground text-sm font-medium tracking-wider uppercase",
2289
- children: "Spec Details"
2506
+ /* @__PURE__ */ jsx19("span", {
2507
+ className: "font-medium text-muted-foreground text-sm uppercase tracking-wider",
2508
+ children: "Input Schema"
2290
2509
  }),
2291
- /* @__PURE__ */ jsx21(CodeBlock3, {
2292
- code: JSON.stringify(spec, null, 2),
2510
+ /* @__PURE__ */ jsx19(CodeBlock4, {
2511
+ className: "w-full",
2512
+ code: JSON.stringify(spec.io.input, null, 2),
2513
+ language: "json"
2514
+ })
2515
+ ]
2516
+ }),
2517
+ /* @__PURE__ */ jsxs13(Box5, {
2518
+ className: "flex-col gap-2",
2519
+ children: [
2520
+ /* @__PURE__ */ jsx19("span", {
2521
+ className: "font-medium text-muted-foreground text-sm uppercase tracking-wider",
2522
+ children: "Output Schema"
2523
+ }),
2524
+ /* @__PURE__ */ jsx19(CodeBlock4, {
2525
+ className: "w-full",
2526
+ code: JSON.stringify(spec.io.output, null, 2),
2293
2527
  language: "json"
2294
2528
  })
2295
2529
  ]
2296
2530
  })
2297
2531
  ]
2298
- }) : /* @__PURE__ */ jsxs15(VStack12, {
2532
+ }) : /* @__PURE__ */ jsxs13(VStack10, {
2299
2533
  gap: "md",
2300
2534
  children: [
2301
- /* @__PURE__ */ jsx21("p", {
2535
+ /* @__PURE__ */ jsx19("p", {
2302
2536
  className: "text-muted-foreground",
2303
- children: "Full component details are not available for this presentation reference."
2537
+ children: "Full schema details are not available for this operation reference."
2304
2538
  }),
2305
- /* @__PURE__ */ jsx21(CodeBlock3, {
2306
- code: JSON.stringify(presRef, null, 2),
2539
+ /* @__PURE__ */ jsx19(CodeBlock4, {
2540
+ code: JSON.stringify(opRef, null, 2),
2307
2541
  language: "json"
2308
2542
  })
2309
2543
  ]
@@ -2312,154 +2546,209 @@ function FeaturePresentationDetailTemplate({
2312
2546
  })
2313
2547
  })
2314
2548
  }),
2315
- /* @__PURE__ */ jsx21("div", {
2549
+ /* @__PURE__ */ jsx19("div", {
2316
2550
  className: "space-y-6",
2317
- children: /* @__PURE__ */ jsx21(Card3, {
2551
+ children: /* @__PURE__ */ jsx19(Card4, {
2318
2552
  className: "p-6",
2319
- children: /* @__PURE__ */ jsxs15(VStack12, {
2553
+ children: /* @__PURE__ */ jsxs13(VStack10, {
2320
2554
  gap: "md",
2321
2555
  children: [
2322
- /* @__PURE__ */ jsxs15(HStack9, {
2556
+ /* @__PURE__ */ jsxs13(HStack10, {
2323
2557
  className: "items-center gap-2 border-b pb-2",
2324
2558
  children: [
2325
- /* @__PURE__ */ jsx21(Database4, {
2326
- className: "text-muted-foreground h-5 w-5"
2559
+ /* @__PURE__ */ jsx19(Database5, {
2560
+ className: "h-5 w-5 text-muted-foreground"
2327
2561
  }),
2328
- /* @__PURE__ */ jsx21("h3", {
2329
- className: "text-lg font-semibold",
2562
+ /* @__PURE__ */ jsx19("h3", {
2563
+ className: "font-semibold text-lg",
2330
2564
  children: "Metadata"
2331
2565
  })
2332
2566
  ]
2333
2567
  }),
2334
- /* @__PURE__ */ jsxs15("dl", {
2568
+ /* @__PURE__ */ jsxs13("dl", {
2335
2569
  className: "grid grid-cols-1 gap-4 text-sm",
2336
2570
  children: [
2337
- /* @__PURE__ */ jsxs15("div", {
2571
+ /* @__PURE__ */ jsxs13("div", {
2338
2572
  children: [
2339
- /* @__PURE__ */ jsx21("dt", {
2573
+ /* @__PURE__ */ jsx19("dt", {
2340
2574
  className: "text-muted-foreground",
2341
2575
  children: "Key"
2342
2576
  }),
2343
- /* @__PURE__ */ jsx21("dd", {
2577
+ /* @__PURE__ */ jsx19("dd", {
2344
2578
  className: "truncate font-medium",
2345
- children: presRef.key
2579
+ children: opRef.key
2346
2580
  })
2347
2581
  ]
2348
2582
  }),
2349
- /* @__PURE__ */ jsxs15("div", {
2583
+ /* @__PURE__ */ jsxs13("div", {
2350
2584
  children: [
2351
- /* @__PURE__ */ jsx21("dt", {
2585
+ /* @__PURE__ */ jsx19("dt", {
2352
2586
  className: "text-muted-foreground",
2353
2587
  children: "Version"
2354
2588
  }),
2355
- /* @__PURE__ */ jsx21("dd", {
2589
+ /* @__PURE__ */ jsx19("dd", {
2356
2590
  className: "font-medium",
2357
- children: presRef.version
2591
+ children: opRef.version
2592
+ })
2593
+ ]
2594
+ }),
2595
+ spec?.meta?.context && /* @__PURE__ */ jsxs13("div", {
2596
+ children: [
2597
+ /* @__PURE__ */ jsx19("dt", {
2598
+ className: "text-muted-foreground",
2599
+ children: "Context"
2600
+ }),
2601
+ /* @__PURE__ */ jsx19("dd", {
2602
+ className: "font-medium",
2603
+ children: spec.meta.context
2358
2604
  })
2359
2605
  ]
2360
2606
  }),
2361
- spec?.meta?.owners && /* @__PURE__ */ jsxs15("div", {
2607
+ spec?.meta?.owners && /* @__PURE__ */ jsxs13("div", {
2362
2608
  children: [
2363
- /* @__PURE__ */ jsx21("dt", {
2609
+ /* @__PURE__ */ jsx19("dt", {
2364
2610
  className: "text-muted-foreground",
2365
2611
  children: "Owners"
2366
2612
  }),
2367
- /* @__PURE__ */ jsx21("dd", {
2613
+ /* @__PURE__ */ jsx19("dd", {
2368
2614
  className: "flex flex-wrap gap-1 font-medium",
2369
- children: spec.meta.owners.map((o) => /* @__PURE__ */ jsx21(StatusChip8, {
2615
+ children: spec.meta.owners.map((o) => /* @__PURE__ */ jsx19(StatusChip9, {
2370
2616
  label: o,
2371
2617
  size: "sm",
2372
2618
  tone: "neutral"
2373
2619
  }, o))
2374
2620
  })
2375
2621
  ]
2376
- })
2377
- ]
2378
- })
2379
- ]
2380
- })
2381
- })
2382
- }),
2383
- relatedDocs?.length ? /* @__PURE__ */ jsx21("div", {
2384
- className: "lg:col-span-3",
2385
- children: /* @__PURE__ */ jsx21(Card3, {
2386
- className: "p-6",
2387
- children: /* @__PURE__ */ jsxs15(VStack12, {
2388
- gap: "md",
2389
- children: [
2390
- /* @__PURE__ */ jsxs15(HStack9, {
2391
- className: "items-center gap-2 border-b pb-2",
2392
- children: [
2393
- /* @__PURE__ */ jsx21(BookOpen2, {
2394
- className: "text-muted-foreground h-5 w-5"
2395
2622
  }),
2396
- /* @__PURE__ */ jsx21("h3", {
2397
- className: "text-lg font-semibold",
2398
- children: "Related Documentation"
2399
- })
2400
- ]
2401
- }),
2402
- /* @__PURE__ */ jsx21("div", {
2403
- className: "grid grid-cols-1 gap-4 md:grid-cols-2 lg:grid-cols-3",
2404
- children: relatedDocs.map((doc) => /* @__PURE__ */ jsx21(Link3, {
2405
- href: doc.route || `/docs/${doc.id}`,
2406
- className: "group block",
2407
- children: /* @__PURE__ */ jsxs15("div", {
2408
- className: "hover:border-primary h-full rounded-lg border p-4 transition-colors",
2623
+ spec?.meta?.tags && /* @__PURE__ */ jsxs13("div", {
2409
2624
  children: [
2410
- /* @__PURE__ */ jsx21("h4", {
2411
- className: "group-hover:text-primary mb-1 font-semibold",
2412
- children: doc.title
2625
+ /* @__PURE__ */ jsx19("dt", {
2626
+ className: "text-muted-foreground",
2627
+ children: "Tags"
2413
2628
  }),
2414
- doc.summary && /* @__PURE__ */ jsx21("p", {
2415
- className: "text-muted-foreground line-clamp-2 text-sm",
2416
- children: doc.summary
2629
+ /* @__PURE__ */ jsx19("dd", {
2630
+ className: "flex flex-wrap gap-1 font-medium",
2631
+ children: spec.meta.tags.map((t) => /* @__PURE__ */ jsx19(StatusChip9, {
2632
+ label: `#${t}`,
2633
+ size: "sm",
2634
+ tone: "neutral"
2635
+ }, t))
2417
2636
  })
2418
2637
  ]
2419
2638
  })
2420
- }, doc.id))
2639
+ ]
2421
2640
  })
2422
2641
  ]
2423
2642
  })
2424
2643
  })
2425
- }) : null
2644
+ })
2426
2645
  ]
2427
2646
  })
2428
2647
  ]
2429
2648
  });
2430
2649
  }
2431
- // src/presentation/features/templates/FeatureDataViewDetailTemplate/FeatureDataViewDetailTemplate.tsx
2650
+ // src/presentation/features/templates/FeatureOperationsTemplate/FeatureOperationsTemplate.tsx
2651
+ import {
2652
+ Breadcrumbs as Breadcrumbs8,
2653
+ PageHeaderResponsive as PageHeaderResponsive9
2654
+ } from "@contractspec/lib.design-system";
2655
+ import { VStack as VStack11 } from "@contractspec/lib.ui-kit-web/ui/stack";
2656
+ import { cn as cn13 } from "@contractspec/lib.ui-kit-web/ui/utils";
2657
+ import { jsx as jsx20, jsxs as jsxs14 } from "react/jsx-runtime";
2658
+ "use client";
2659
+ function FeatureOperationsTemplate({
2660
+ feature,
2661
+ className
2662
+ }) {
2663
+ return /* @__PURE__ */ jsxs14(VStack11, {
2664
+ gap: "lg",
2665
+ className: cn13("mx-auto w-full max-w-5xl p-6", className),
2666
+ children: [
2667
+ /* @__PURE__ */ jsx20(PageHeaderResponsive9, {
2668
+ title: "Operations",
2669
+ subtitle: `Operations defined in ${feature.meta.title ?? feature.meta.key}`,
2670
+ breadcrumb: /* @__PURE__ */ jsx20(Breadcrumbs8, {
2671
+ items: [
2672
+ { label: "Features", href: "/features" },
2673
+ {
2674
+ label: feature.meta.title || feature.meta.key,
2675
+ href: `/features/${feature.meta.key}`
2676
+ },
2677
+ { label: "Operations" }
2678
+ ]
2679
+ })
2680
+ }),
2681
+ /* @__PURE__ */ jsx20(FeatureOperationsList, {
2682
+ feature
2683
+ })
2684
+ ]
2685
+ });
2686
+ }
2687
+ // src/presentation/features/templates/FeatureOverviewTemplate/FeatureOverviewTemplate.tsx
2688
+ import {
2689
+ Breadcrumbs as Breadcrumbs9,
2690
+ PageHeaderResponsive as PageHeaderResponsive10
2691
+ } from "@contractspec/lib.design-system";
2692
+ import { VStack as VStack12 } from "@contractspec/lib.ui-kit-web/ui/stack";
2693
+ import { cn as cn14 } from "@contractspec/lib.ui-kit-web/ui/utils";
2694
+ import { jsx as jsx21, jsxs as jsxs15 } from "react/jsx-runtime";
2695
+ "use client";
2696
+ function FeatureOverviewTemplate({
2697
+ feature,
2698
+ className
2699
+ }) {
2700
+ return /* @__PURE__ */ jsxs15(VStack12, {
2701
+ gap: "lg",
2702
+ className: cn14("mx-auto w-full max-w-5xl p-6", className),
2703
+ children: [
2704
+ /* @__PURE__ */ jsx21(PageHeaderResponsive10, {
2705
+ title: feature.meta.title || feature.meta.key,
2706
+ subtitle: feature.meta.description || "Feature overview",
2707
+ breadcrumb: /* @__PURE__ */ jsx21(Breadcrumbs9, {
2708
+ items: [
2709
+ { label: "Features", href: "/features" },
2710
+ { label: feature.meta.title || feature.meta.key }
2711
+ ]
2712
+ })
2713
+ }),
2714
+ /* @__PURE__ */ jsx21(FeatureDetail, {
2715
+ feature
2716
+ })
2717
+ ]
2718
+ });
2719
+ }
2720
+ // src/presentation/features/templates/FeaturePresentationDetailTemplate/FeaturePresentationDetailTemplate.tsx
2432
2721
  import {
2433
2722
  Breadcrumbs as Breadcrumbs10,
2434
- CodeBlock as CodeBlock4,
2435
- EmptyState as EmptyState5,
2723
+ CodeBlock as CodeBlock5,
2724
+ EmptyState as EmptyState6,
2436
2725
  PageHeaderResponsive as PageHeaderResponsive11,
2437
- StatusChip as StatusChip9
2726
+ StatusChip as StatusChip10
2438
2727
  } from "@contractspec/lib.design-system";
2439
- import { Card as Card4 } from "@contractspec/lib.ui-kit-web/ui/card";
2440
- import { Box as Box5, HStack as HStack10, VStack as VStack13 } from "@contractspec/lib.ui-kit-web/ui/stack";
2728
+ import { Card as Card5 } from "@contractspec/lib.ui-kit-web/ui/card";
2729
+ import { Box as Box6, HStack as HStack11, VStack as VStack13 } from "@contractspec/lib.ui-kit-web/ui/stack";
2441
2730
  import { cn as cn15 } from "@contractspec/lib.ui-kit-web/ui/utils";
2442
- import { BookOpen as BookOpen3, Code as Code4, Database as Database5, Table as Table2 } from "lucide-react";
2443
- import Link4 from "next/link";
2731
+ import { BookOpen as BookOpen4, Code as Code5, Database as Database6, Layout as Layout5 } from "lucide-react";
2732
+ import Link5 from "next/link";
2444
2733
  import { jsx as jsx22, jsxs as jsxs16 } from "react/jsx-runtime";
2445
2734
  "use client";
2446
- function FeatureDataViewDetailTemplate({
2735
+ function FeaturePresentationDetailTemplate({
2447
2736
  feature,
2448
- viewKey,
2449
- view,
2737
+ presentationKey,
2738
+ presentation,
2450
2739
  spec,
2451
2740
  className
2452
2741
  }) {
2453
- const viewRef = view ?? feature.dataViews?.find((v) => v.key === viewKey);
2454
- const relatedDocs = useRelatedDocs(viewRef?.key || "", spec?.meta?.tags);
2455
- if (!viewRef) {
2742
+ const presRef = presentation ?? feature.presentations?.find((p) => p.key === presentationKey);
2743
+ const relatedDocs = useRelatedDocs(presRef?.key || "", spec?.meta?.tags);
2744
+ if (!presRef) {
2456
2745
  return /* @__PURE__ */ jsxs16(VStack13, {
2457
2746
  gap: "lg",
2458
2747
  className: cn15("mx-auto w-full max-w-5xl p-6", className),
2459
2748
  children: [
2460
2749
  /* @__PURE__ */ jsx22(PageHeaderResponsive11, {
2461
- title: "Data View Not Found",
2462
- subtitle: `Data View ${viewKey} not found in feature ${feature.meta.key}`,
2750
+ title: "Presentation Not Found",
2751
+ subtitle: `Presentation ${presentationKey} not found in feature ${feature.meta.key}`,
2463
2752
  breadcrumb: /* @__PURE__ */ jsx22(Breadcrumbs10, {
2464
2753
  items: [
2465
2754
  { label: "Features", href: "/features" },
@@ -2467,15 +2756,18 @@ function FeatureDataViewDetailTemplate({
2467
2756
  label: feature.meta.title || feature.meta.key,
2468
2757
  href: `/features/${feature.meta.key}`
2469
2758
  },
2470
- { label: "Data Views" }
2759
+ {
2760
+ label: "Presentations",
2761
+ href: `/features/${feature.meta.key}/presentation`
2762
+ }
2471
2763
  ]
2472
2764
  })
2473
2765
  }),
2474
- /* @__PURE__ */ jsx22(EmptyState5, {
2475
- title: "Data View not found",
2476
- description: `The data view '${viewKey}' could not be found in this feature.`,
2477
- icon: /* @__PURE__ */ jsx22(Table2, {
2478
- className: "text-muted-foreground h-12 w-12"
2766
+ /* @__PURE__ */ jsx22(EmptyState6, {
2767
+ title: "Presentation not found",
2768
+ description: `The presentation '${presentationKey}' could not be found in this feature.`,
2769
+ icon: /* @__PURE__ */ jsx22(Layout5, {
2770
+ className: "h-12 w-12 text-muted-foreground"
2479
2771
  })
2480
2772
  })
2481
2773
  ]
@@ -2486,8 +2778,8 @@ function FeatureDataViewDetailTemplate({
2486
2778
  className: cn15("mx-auto w-full max-w-5xl p-6", className),
2487
2779
  children: [
2488
2780
  /* @__PURE__ */ jsx22(PageHeaderResponsive11, {
2489
- title: viewRef.key,
2490
- subtitle: `Data View defined in ${feature.meta.title ?? feature.meta.key}`,
2781
+ title: presRef.key,
2782
+ subtitle: `Presentation defined in ${feature.meta.title ?? feature.meta.key}`,
2491
2783
  breadcrumb: /* @__PURE__ */ jsx22(Breadcrumbs10, {
2492
2784
  items: [
2493
2785
  { label: "Features", href: "/features" },
@@ -2496,30 +2788,30 @@ function FeatureDataViewDetailTemplate({
2496
2788
  href: `/features/${feature.meta.key}`
2497
2789
  },
2498
2790
  {
2499
- label: "Data Views",
2500
- href: `/features/${feature.meta.key}#dataviews`
2791
+ label: "Presentations",
2792
+ href: `/features/${feature.meta.key}#presentations`
2501
2793
  },
2502
- { label: viewRef.key }
2794
+ { label: presRef.key }
2503
2795
  ]
2504
2796
  })
2505
2797
  }),
2506
- /* @__PURE__ */ jsxs16(HStack10, {
2798
+ /* @__PURE__ */ jsxs16(HStack11, {
2507
2799
  gap: "sm",
2508
2800
  children: [
2509
- /* @__PURE__ */ jsx22(StatusChip9, {
2801
+ /* @__PURE__ */ jsx22(StatusChip10, {
2510
2802
  tone: "neutral",
2511
- label: viewRef.key,
2803
+ label: presRef.key,
2512
2804
  size: "sm",
2513
- icon: /* @__PURE__ */ jsx22(Table2, {
2805
+ icon: /* @__PURE__ */ jsx22(Layout5, {
2514
2806
  className: "h-3 w-3"
2515
2807
  })
2516
2808
  }),
2517
- /* @__PURE__ */ jsx22(StatusChip9, {
2809
+ /* @__PURE__ */ jsx22(StatusChip10, {
2518
2810
  tone: "neutral",
2519
- label: `v${viewRef.version}`,
2811
+ label: `v${presRef.version}`,
2520
2812
  size: "sm"
2521
2813
  }),
2522
- spec?.meta?.stability ? /* @__PURE__ */ jsx22(StatusChip9, {
2814
+ spec?.meta?.stability ? /* @__PURE__ */ jsx22(StatusChip10, {
2523
2815
  tone: spec.meta.stability === "stable" ? "success" : "warning",
2524
2816
  label: spec.meta.stability,
2525
2817
  size: "sm"
@@ -2531,20 +2823,20 @@ function FeatureDataViewDetailTemplate({
2531
2823
  children: [
2532
2824
  /* @__PURE__ */ jsx22("div", {
2533
2825
  className: "space-y-6 lg:col-span-2",
2534
- children: /* @__PURE__ */ jsx22(Card4, {
2826
+ children: /* @__PURE__ */ jsx22(Card5, {
2535
2827
  className: "p-6",
2536
2828
  children: /* @__PURE__ */ jsxs16(VStack13, {
2537
2829
  gap: "md",
2538
2830
  children: [
2539
- /* @__PURE__ */ jsxs16(HStack10, {
2831
+ /* @__PURE__ */ jsxs16(HStack11, {
2540
2832
  className: "items-center gap-2 border-b pb-2",
2541
2833
  children: [
2542
- /* @__PURE__ */ jsx22(Code4, {
2543
- className: "text-muted-foreground h-5 w-5"
2834
+ /* @__PURE__ */ jsx22(Code5, {
2835
+ className: "h-5 w-5 text-muted-foreground"
2544
2836
  }),
2545
2837
  /* @__PURE__ */ jsx22("h3", {
2546
- className: "text-lg font-semibold",
2547
- children: "View Definition"
2838
+ className: "font-semibold text-lg",
2839
+ children: "Component Definition"
2548
2840
  })
2549
2841
  ]
2550
2842
  }),
@@ -2555,28 +2847,15 @@ function FeatureDataViewDetailTemplate({
2555
2847
  className: "text-muted-foreground",
2556
2848
  children: spec.meta.description
2557
2849
  }),
2558
- /* @__PURE__ */ jsxs16(Box5, {
2559
- className: "flex-col gap-2",
2560
- children: [
2561
- /* @__PURE__ */ jsx22("span", {
2562
- className: "text-muted-foreground text-sm font-medium tracking-wider uppercase",
2563
- children: "Source Query"
2564
- }),
2565
- /* @__PURE__ */ jsx22(CodeBlock4, {
2566
- code: JSON.stringify(spec.source, null, 2),
2567
- language: "json"
2568
- })
2569
- ]
2570
- }),
2571
- /* @__PURE__ */ jsxs16(Box5, {
2850
+ /* @__PURE__ */ jsxs16(Box6, {
2572
2851
  className: "flex-col gap-2",
2573
2852
  children: [
2574
2853
  /* @__PURE__ */ jsx22("span", {
2575
- className: "text-muted-foreground text-sm font-medium tracking-wider uppercase",
2576
- children: "View Configuration"
2854
+ className: "font-medium text-muted-foreground text-sm uppercase tracking-wider",
2855
+ children: "Spec Details"
2577
2856
  }),
2578
- /* @__PURE__ */ jsx22(CodeBlock4, {
2579
- code: JSON.stringify(spec.view, null, 2),
2857
+ /* @__PURE__ */ jsx22(CodeBlock5, {
2858
+ code: JSON.stringify(spec, null, 2),
2580
2859
  language: "json"
2581
2860
  })
2582
2861
  ]
@@ -2587,10 +2866,10 @@ function FeatureDataViewDetailTemplate({
2587
2866
  children: [
2588
2867
  /* @__PURE__ */ jsx22("p", {
2589
2868
  className: "text-muted-foreground",
2590
- children: "Full definition details are not available for this data view reference."
2869
+ children: "Full component details are not available for this presentation reference."
2591
2870
  }),
2592
- /* @__PURE__ */ jsx22(CodeBlock4, {
2593
- code: JSON.stringify(viewRef, null, 2),
2871
+ /* @__PURE__ */ jsx22(CodeBlock5, {
2872
+ code: JSON.stringify(presRef, null, 2),
2594
2873
  language: "json"
2595
2874
  })
2596
2875
  ]
@@ -2601,19 +2880,19 @@ function FeatureDataViewDetailTemplate({
2601
2880
  }),
2602
2881
  /* @__PURE__ */ jsx22("div", {
2603
2882
  className: "space-y-6",
2604
- children: /* @__PURE__ */ jsx22(Card4, {
2883
+ children: /* @__PURE__ */ jsx22(Card5, {
2605
2884
  className: "p-6",
2606
2885
  children: /* @__PURE__ */ jsxs16(VStack13, {
2607
2886
  gap: "md",
2608
2887
  children: [
2609
- /* @__PURE__ */ jsxs16(HStack10, {
2888
+ /* @__PURE__ */ jsxs16(HStack11, {
2610
2889
  className: "items-center gap-2 border-b pb-2",
2611
2890
  children: [
2612
- /* @__PURE__ */ jsx22(Database5, {
2613
- className: "text-muted-foreground h-5 w-5"
2891
+ /* @__PURE__ */ jsx22(Database6, {
2892
+ className: "h-5 w-5 text-muted-foreground"
2614
2893
  }),
2615
2894
  /* @__PURE__ */ jsx22("h3", {
2616
- className: "text-lg font-semibold",
2895
+ className: "font-semibold text-lg",
2617
2896
  children: "Metadata"
2618
2897
  })
2619
2898
  ]
@@ -2629,7 +2908,7 @@ function FeatureDataViewDetailTemplate({
2629
2908
  }),
2630
2909
  /* @__PURE__ */ jsx22("dd", {
2631
2910
  className: "truncate font-medium",
2632
- children: viewRef.key
2911
+ children: presRef.key
2633
2912
  })
2634
2913
  ]
2635
2914
  }),
@@ -2641,7 +2920,7 @@ function FeatureDataViewDetailTemplate({
2641
2920
  }),
2642
2921
  /* @__PURE__ */ jsx22("dd", {
2643
2922
  className: "font-medium",
2644
- children: viewRef.version
2923
+ children: presRef.version
2645
2924
  })
2646
2925
  ]
2647
2926
  }),
@@ -2653,29 +2932,13 @@ function FeatureDataViewDetailTemplate({
2653
2932
  }),
2654
2933
  /* @__PURE__ */ jsx22("dd", {
2655
2934
  className: "flex flex-wrap gap-1 font-medium",
2656
- children: spec.meta.owners.map((o) => /* @__PURE__ */ jsx22(StatusChip9, {
2935
+ children: spec.meta.owners.map((o) => /* @__PURE__ */ jsx22(StatusChip10, {
2657
2936
  label: o,
2658
2937
  size: "sm",
2659
2938
  tone: "neutral"
2660
2939
  }, o))
2661
2940
  })
2662
2941
  ]
2663
- }),
2664
- spec?.meta?.tags && /* @__PURE__ */ jsxs16("div", {
2665
- children: [
2666
- /* @__PURE__ */ jsx22("dt", {
2667
- className: "text-muted-foreground",
2668
- children: "Tags"
2669
- }),
2670
- /* @__PURE__ */ jsx22("dd", {
2671
- className: "flex flex-wrap gap-1 font-medium",
2672
- children: spec.meta.tags.map((t) => /* @__PURE__ */ jsx22(StatusChip9, {
2673
- label: `#${t}`,
2674
- size: "sm",
2675
- tone: "neutral"
2676
- }, t))
2677
- })
2678
- ]
2679
2942
  })
2680
2943
  ]
2681
2944
  })
@@ -2685,37 +2948,37 @@ function FeatureDataViewDetailTemplate({
2685
2948
  }),
2686
2949
  relatedDocs?.length ? /* @__PURE__ */ jsx22("div", {
2687
2950
  className: "lg:col-span-3",
2688
- children: /* @__PURE__ */ jsx22(Card4, {
2951
+ children: /* @__PURE__ */ jsx22(Card5, {
2689
2952
  className: "p-6",
2690
2953
  children: /* @__PURE__ */ jsxs16(VStack13, {
2691
2954
  gap: "md",
2692
2955
  children: [
2693
- /* @__PURE__ */ jsxs16(HStack10, {
2956
+ /* @__PURE__ */ jsxs16(HStack11, {
2694
2957
  className: "items-center gap-2 border-b pb-2",
2695
2958
  children: [
2696
- /* @__PURE__ */ jsx22(BookOpen3, {
2697
- className: "text-muted-foreground h-5 w-5"
2959
+ /* @__PURE__ */ jsx22(BookOpen4, {
2960
+ className: "h-5 w-5 text-muted-foreground"
2698
2961
  }),
2699
2962
  /* @__PURE__ */ jsx22("h3", {
2700
- className: "text-lg font-semibold",
2963
+ className: "font-semibold text-lg",
2701
2964
  children: "Related Documentation"
2702
2965
  })
2703
2966
  ]
2704
2967
  }),
2705
2968
  /* @__PURE__ */ jsx22("div", {
2706
2969
  className: "grid grid-cols-1 gap-4 md:grid-cols-2 lg:grid-cols-3",
2707
- children: relatedDocs.map((doc) => /* @__PURE__ */ jsx22(Link4, {
2970
+ children: relatedDocs.map((doc) => /* @__PURE__ */ jsx22(Link5, {
2708
2971
  href: doc.route || `/docs/${doc.id}`,
2709
2972
  className: "group block",
2710
2973
  children: /* @__PURE__ */ jsxs16("div", {
2711
- className: "hover:border-primary h-full rounded-lg border p-4 transition-colors",
2974
+ className: "h-full rounded-lg border p-4 transition-colors hover:border-primary",
2712
2975
  children: [
2713
2976
  /* @__PURE__ */ jsx22("h4", {
2714
- className: "group-hover:text-primary mb-1 font-semibold",
2977
+ className: "mb-1 font-semibold group-hover:text-primary",
2715
2978
  children: doc.title
2716
2979
  }),
2717
2980
  doc.summary && /* @__PURE__ */ jsx22("p", {
2718
- className: "text-muted-foreground line-clamp-2 text-sm",
2981
+ className: "line-clamp-2 text-muted-foreground text-sm",
2719
2982
  children: doc.summary
2720
2983
  })
2721
2984
  ]
@@ -2731,66 +2994,26 @@ function FeatureDataViewDetailTemplate({
2731
2994
  ]
2732
2995
  });
2733
2996
  }
2734
- // src/presentation/features/templates/FeatureFormDetailTemplate/FeatureFormDetailTemplate.tsx
2997
+ // src/presentation/features/templates/FeaturePresentationsTemplate/FeaturePresentationsTemplate.tsx
2735
2998
  import {
2736
2999
  Breadcrumbs as Breadcrumbs11,
2737
- CodeBlock as CodeBlock5,
2738
- EmptyState as EmptyState6,
2739
- PageHeaderResponsive as PageHeaderResponsive12,
2740
- StatusChip as StatusChip10
3000
+ PageHeaderResponsive as PageHeaderResponsive12
2741
3001
  } from "@contractspec/lib.design-system";
2742
- import { Card as Card5 } from "@contractspec/lib.ui-kit-web/ui/card";
2743
- import { Box as Box6, HStack as HStack11, VStack as VStack14 } from "@contractspec/lib.ui-kit-web/ui/stack";
3002
+ import { VStack as VStack14 } from "@contractspec/lib.ui-kit-web/ui/stack";
2744
3003
  import { cn as cn16 } from "@contractspec/lib.ui-kit-web/ui/utils";
2745
- import { BookOpen as BookOpen4, Code as Code5, Database as Database6, PenTool } from "lucide-react";
2746
- import Link5 from "next/link";
2747
3004
  import { jsx as jsx23, jsxs as jsxs17 } from "react/jsx-runtime";
2748
3005
  "use client";
2749
- function FeatureFormDetailTemplate({
3006
+ function FeaturePresentationsTemplate({
2750
3007
  feature,
2751
- formKey,
2752
- form,
2753
- spec,
2754
3008
  className
2755
3009
  }) {
2756
- const formRef = form ?? feature.forms?.find((f) => f.key === formKey);
2757
- const relatedDocs = useRelatedDocs(formRef?.key || "", spec?.meta?.tags);
2758
- if (!formRef) {
2759
- return /* @__PURE__ */ jsxs17(VStack14, {
2760
- gap: "lg",
2761
- className: cn16("mx-auto w-full max-w-5xl p-6", className),
2762
- children: [
2763
- /* @__PURE__ */ jsx23(PageHeaderResponsive12, {
2764
- title: "Form Not Found",
2765
- subtitle: `Form ${formKey} not found in feature ${feature.meta.key}`,
2766
- breadcrumb: /* @__PURE__ */ jsx23(Breadcrumbs11, {
2767
- items: [
2768
- { label: "Features", href: "/features" },
2769
- {
2770
- label: feature.meta.title || feature.meta.key,
2771
- href: `/features/${feature.meta.key}`
2772
- },
2773
- { label: "Forms" }
2774
- ]
2775
- })
2776
- }),
2777
- /* @__PURE__ */ jsx23(EmptyState6, {
2778
- title: "Form not found",
2779
- description: `The form '${formKey}' could not be found in this feature.`,
2780
- icon: /* @__PURE__ */ jsx23(PenTool, {
2781
- className: "text-muted-foreground h-12 w-12"
2782
- })
2783
- })
2784
- ]
2785
- });
2786
- }
2787
3010
  return /* @__PURE__ */ jsxs17(VStack14, {
2788
3011
  gap: "lg",
2789
3012
  className: cn16("mx-auto w-full max-w-5xl p-6", className),
2790
3013
  children: [
2791
3014
  /* @__PURE__ */ jsx23(PageHeaderResponsive12, {
2792
- title: formRef.key,
2793
- subtitle: `Form defined in ${feature.meta.title ?? feature.meta.key}`,
3015
+ title: "Presentations",
3016
+ subtitle: `Presentations defined in ${feature.meta.title ?? feature.meta.key}`,
2794
3017
  breadcrumb: /* @__PURE__ */ jsx23(Breadcrumbs11, {
2795
3018
  items: [
2796
3019
  { label: "Features", href: "/features" },
@@ -2798,235 +3021,12 @@ function FeatureFormDetailTemplate({
2798
3021
  label: feature.meta.title || feature.meta.key,
2799
3022
  href: `/features/${feature.meta.key}`
2800
3023
  },
2801
- { label: "Forms", href: `/features/${feature.meta.key}#forms` },
2802
- { label: formRef.key }
3024
+ { label: "Presentations" }
2803
3025
  ]
2804
3026
  })
2805
3027
  }),
2806
- /* @__PURE__ */ jsxs17(HStack11, {
2807
- gap: "sm",
2808
- children: [
2809
- /* @__PURE__ */ jsx23(StatusChip10, {
2810
- tone: "neutral",
2811
- label: formRef.key,
2812
- size: "sm",
2813
- icon: /* @__PURE__ */ jsx23(PenTool, {
2814
- className: "h-3 w-3"
2815
- })
2816
- }),
2817
- /* @__PURE__ */ jsx23(StatusChip10, {
2818
- tone: "neutral",
2819
- label: `v${formRef.version}`,
2820
- size: "sm"
2821
- }),
2822
- spec?.meta?.stability ? /* @__PURE__ */ jsx23(StatusChip10, {
2823
- tone: spec.meta.stability === "stable" ? "success" : "warning",
2824
- label: spec.meta.stability,
2825
- size: "sm"
2826
- }) : null
2827
- ]
2828
- }),
2829
- /* @__PURE__ */ jsxs17("div", {
2830
- className: "grid grid-cols-1 gap-6 lg:grid-cols-3",
2831
- children: [
2832
- /* @__PURE__ */ jsx23("div", {
2833
- className: "space-y-6 lg:col-span-2",
2834
- children: /* @__PURE__ */ jsx23(Card5, {
2835
- className: "p-6",
2836
- children: /* @__PURE__ */ jsxs17(VStack14, {
2837
- gap: "md",
2838
- children: [
2839
- /* @__PURE__ */ jsxs17(HStack11, {
2840
- className: "items-center gap-2 border-b pb-2",
2841
- children: [
2842
- /* @__PURE__ */ jsx23(Code5, {
2843
- className: "text-muted-foreground h-5 w-5"
2844
- }),
2845
- /* @__PURE__ */ jsx23("h3", {
2846
- className: "text-lg font-semibold",
2847
- children: "Form Definition"
2848
- })
2849
- ]
2850
- }),
2851
- spec ? /* @__PURE__ */ jsxs17(VStack14, {
2852
- gap: "lg",
2853
- children: [
2854
- spec.meta.description && /* @__PURE__ */ jsx23("p", {
2855
- className: "text-muted-foreground",
2856
- children: spec.meta.description
2857
- }),
2858
- /* @__PURE__ */ jsxs17(Box6, {
2859
- className: "flex-col gap-2",
2860
- children: [
2861
- /* @__PURE__ */ jsx23("span", {
2862
- className: "text-muted-foreground text-sm font-medium tracking-wider uppercase",
2863
- children: "Fields"
2864
- }),
2865
- /* @__PURE__ */ jsx23(CodeBlock5, {
2866
- code: JSON.stringify(spec.fields, null, 2),
2867
- language: "json"
2868
- })
2869
- ]
2870
- }),
2871
- /* @__PURE__ */ jsxs17(Box6, {
2872
- className: "flex-col gap-2",
2873
- children: [
2874
- /* @__PURE__ */ jsx23("span", {
2875
- className: "text-muted-foreground text-sm font-medium tracking-wider uppercase",
2876
- children: "Actions"
2877
- }),
2878
- /* @__PURE__ */ jsx23(CodeBlock5, {
2879
- code: JSON.stringify(spec.actions, null, 2),
2880
- language: "json"
2881
- })
2882
- ]
2883
- })
2884
- ]
2885
- }) : /* @__PURE__ */ jsxs17(VStack14, {
2886
- gap: "md",
2887
- children: [
2888
- /* @__PURE__ */ jsx23("p", {
2889
- className: "text-muted-foreground",
2890
- children: "Full form definition details are not available for this form reference."
2891
- }),
2892
- /* @__PURE__ */ jsx23(CodeBlock5, {
2893
- code: JSON.stringify(formRef, null, 2),
2894
- language: "json"
2895
- })
2896
- ]
2897
- })
2898
- ]
2899
- })
2900
- })
2901
- }),
2902
- /* @__PURE__ */ jsx23("div", {
2903
- className: "space-y-6",
2904
- children: /* @__PURE__ */ jsx23(Card5, {
2905
- className: "p-6",
2906
- children: /* @__PURE__ */ jsxs17(VStack14, {
2907
- gap: "md",
2908
- children: [
2909
- /* @__PURE__ */ jsxs17(HStack11, {
2910
- className: "items-center gap-2 border-b pb-2",
2911
- children: [
2912
- /* @__PURE__ */ jsx23(Database6, {
2913
- className: "text-muted-foreground h-5 w-5"
2914
- }),
2915
- /* @__PURE__ */ jsx23("h3", {
2916
- className: "text-lg font-semibold",
2917
- children: "Metadata"
2918
- })
2919
- ]
2920
- }),
2921
- /* @__PURE__ */ jsxs17("dl", {
2922
- className: "grid grid-cols-1 gap-4 text-sm",
2923
- children: [
2924
- /* @__PURE__ */ jsxs17("div", {
2925
- children: [
2926
- /* @__PURE__ */ jsx23("dt", {
2927
- className: "text-muted-foreground",
2928
- children: "Key"
2929
- }),
2930
- /* @__PURE__ */ jsx23("dd", {
2931
- className: "truncate font-medium",
2932
- children: formRef.key
2933
- })
2934
- ]
2935
- }),
2936
- /* @__PURE__ */ jsxs17("div", {
2937
- children: [
2938
- /* @__PURE__ */ jsx23("dt", {
2939
- className: "text-muted-foreground",
2940
- children: "Version"
2941
- }),
2942
- /* @__PURE__ */ jsx23("dd", {
2943
- className: "font-medium",
2944
- children: formRef.version
2945
- })
2946
- ]
2947
- }),
2948
- spec?.meta?.owners && /* @__PURE__ */ jsxs17("div", {
2949
- children: [
2950
- /* @__PURE__ */ jsx23("dt", {
2951
- className: "text-muted-foreground",
2952
- children: "Owners"
2953
- }),
2954
- /* @__PURE__ */ jsx23("dd", {
2955
- className: "flex flex-wrap gap-1 font-medium",
2956
- children: spec.meta.owners.map((o) => /* @__PURE__ */ jsx23(StatusChip10, {
2957
- label: o,
2958
- size: "sm",
2959
- tone: "neutral"
2960
- }, o))
2961
- })
2962
- ]
2963
- }),
2964
- spec?.meta?.tags && /* @__PURE__ */ jsxs17("div", {
2965
- children: [
2966
- /* @__PURE__ */ jsx23("dt", {
2967
- className: "text-muted-foreground",
2968
- children: "Tags"
2969
- }),
2970
- /* @__PURE__ */ jsx23("dd", {
2971
- className: "flex flex-wrap gap-1 font-medium",
2972
- children: spec.meta.tags.map((t) => /* @__PURE__ */ jsx23(StatusChip10, {
2973
- label: `#${t}`,
2974
- size: "sm",
2975
- tone: "neutral"
2976
- }, t))
2977
- })
2978
- ]
2979
- })
2980
- ]
2981
- })
2982
- ]
2983
- })
2984
- })
2985
- }),
2986
- relatedDocs?.length ? /* @__PURE__ */ jsx23("div", {
2987
- className: "lg:col-span-3",
2988
- children: /* @__PURE__ */ jsx23(Card5, {
2989
- className: "p-6",
2990
- children: /* @__PURE__ */ jsxs17(VStack14, {
2991
- gap: "md",
2992
- children: [
2993
- /* @__PURE__ */ jsxs17(HStack11, {
2994
- className: "items-center gap-2 border-b pb-2",
2995
- children: [
2996
- /* @__PURE__ */ jsx23(BookOpen4, {
2997
- className: "text-muted-foreground h-5 w-5"
2998
- }),
2999
- /* @__PURE__ */ jsx23("h3", {
3000
- className: "text-lg font-semibold",
3001
- children: "Related Documentation"
3002
- })
3003
- ]
3004
- }),
3005
- /* @__PURE__ */ jsx23("div", {
3006
- className: "grid grid-cols-1 gap-4 md:grid-cols-2 lg:grid-cols-3",
3007
- children: relatedDocs.map((doc) => /* @__PURE__ */ jsx23(Link5, {
3008
- href: doc.route || `/docs/${doc.id}`,
3009
- className: "group block",
3010
- children: /* @__PURE__ */ jsxs17("div", {
3011
- className: "hover:border-primary h-full rounded-lg border p-4 transition-colors",
3012
- children: [
3013
- /* @__PURE__ */ jsx23("h4", {
3014
- className: "group-hover:text-primary mb-1 font-semibold",
3015
- children: doc.title
3016
- }),
3017
- doc.summary && /* @__PURE__ */ jsx23("p", {
3018
- className: "text-muted-foreground line-clamp-2 text-sm",
3019
- children: doc.summary
3020
- })
3021
- ]
3022
- })
3023
- }, doc.id))
3024
- })
3025
- ]
3026
- })
3027
- })
3028
- }) : null
3029
- ]
3028
+ /* @__PURE__ */ jsx23(FeaturePresentationsList, {
3029
+ feature
3030
3030
  })
3031
3031
  ]
3032
3032
  });