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