@contractspec/bundle.library 1.11.1 → 1.13.0

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 (1385) hide show
  1. package/.turbo/turbo-build.log +571 -1050
  2. package/.turbo/turbo-prebuild.log +1 -0
  3. package/CHANGELOG.md +47 -0
  4. package/dist/__tests__/env-setup.d.ts +2 -0
  5. package/dist/__tests__/env-setup.d.ts.map +1 -0
  6. package/dist/__tests__/mocks/prisma.d.ts +16 -0
  7. package/dist/__tests__/mocks/prisma.d.ts.map +1 -0
  8. package/dist/__tests__/setup.d.ts +2 -0
  9. package/dist/__tests__/setup.d.ts.map +1 -0
  10. package/dist/application/index.d.ts +2 -4
  11. package/dist/application/index.d.ts.map +1 -0
  12. package/dist/application/index.js +696 -5
  13. package/dist/application/mcp/cliMcp.d.ts +79 -85
  14. package/dist/application/mcp/cliMcp.d.ts.map +1 -1
  15. package/dist/application/mcp/cliMcp.js +329 -218
  16. package/dist/application/mcp/common.d.ts +90 -103
  17. package/dist/application/mcp/common.d.ts.map +1 -1
  18. package/dist/application/mcp/common.js +73 -61
  19. package/dist/application/mcp/docsMcp.d.ts +79 -85
  20. package/dist/application/mcp/docsMcp.d.ts.map +1 -1
  21. package/dist/application/mcp/docsMcp.js +259 -136
  22. package/dist/application/mcp/index.d.ts +4 -4
  23. package/dist/application/mcp/index.d.ts.map +1 -0
  24. package/dist/application/mcp/index.js +696 -4
  25. package/dist/application/mcp/internalMcp.d.ts +79 -85
  26. package/dist/application/mcp/internalMcp.d.ts.map +1 -1
  27. package/dist/application/mcp/internalMcp.js +285 -172
  28. package/dist/components/docs/DocsIndexPage.d.ts +1 -6
  29. package/dist/components/docs/DocsIndexPage.d.ts.map +1 -1
  30. package/dist/components/docs/DocsIndexPage.js +259 -211
  31. package/dist/components/docs/advanced/AdvancedMCPPage.d.ts +1 -6
  32. package/dist/components/docs/advanced/AdvancedMCPPage.d.ts.map +1 -1
  33. package/dist/components/docs/advanced/AdvancedMCPPage.js +269 -212
  34. package/dist/components/docs/advanced/AdvancedOverlayEditorPage.d.ts +1 -6
  35. package/dist/components/docs/advanced/AdvancedOverlayEditorPage.d.ts.map +1 -1
  36. package/dist/components/docs/advanced/AdvancedOverlayEditorPage.js +105 -74
  37. package/dist/components/docs/advanced/AdvancedRenderersPage.d.ts +1 -6
  38. package/dist/components/docs/advanced/AdvancedRenderersPage.d.ts.map +1 -1
  39. package/dist/components/docs/advanced/AdvancedRenderersPage.js +116 -86
  40. package/dist/components/docs/advanced/AdvancedSpecExperimentsPage.d.ts +1 -6
  41. package/dist/components/docs/advanced/AdvancedSpecExperimentsPage.d.ts.map +1 -1
  42. package/dist/components/docs/advanced/AdvancedSpecExperimentsPage.js +88 -71
  43. package/dist/components/docs/advanced/AdvancedTelemetryPage.d.ts +1 -6
  44. package/dist/components/docs/advanced/AdvancedTelemetryPage.d.ts.map +1 -1
  45. package/dist/components/docs/advanced/AdvancedTelemetryPage.js +371 -203
  46. package/dist/components/docs/advanced/AdvancedWorkflowMonitoringPage.d.ts +1 -6
  47. package/dist/components/docs/advanced/AdvancedWorkflowMonitoringPage.d.ts.map +1 -1
  48. package/dist/components/docs/advanced/AdvancedWorkflowMonitoringPage.js +97 -72
  49. package/dist/components/docs/advanced/index.d.ts +7 -7
  50. package/dist/components/docs/advanced/index.d.ts.map +1 -0
  51. package/dist/components/docs/advanced/index.js +1221 -8
  52. package/dist/components/docs/architecture/ArchitectureAppConfigPage.d.ts +1 -6
  53. package/dist/components/docs/architecture/ArchitectureAppConfigPage.d.ts.map +1 -1
  54. package/dist/components/docs/architecture/ArchitectureAppConfigPage.js +235 -171
  55. package/dist/components/docs/architecture/ArchitectureIntegrationBindingPage.d.ts +1 -6
  56. package/dist/components/docs/architecture/ArchitectureIntegrationBindingPage.d.ts.map +1 -1
  57. package/dist/components/docs/architecture/ArchitectureIntegrationBindingPage.js +251 -180
  58. package/dist/components/docs/architecture/ArchitectureKnowledgeBindingPage.d.ts +1 -6
  59. package/dist/components/docs/architecture/ArchitectureKnowledgeBindingPage.d.ts.map +1 -1
  60. package/dist/components/docs/architecture/ArchitectureKnowledgeBindingPage.js +366 -282
  61. package/dist/components/docs/architecture/ArchitectureMultiTenancyPage.d.ts +1 -6
  62. package/dist/components/docs/architecture/ArchitectureMultiTenancyPage.d.ts.map +1 -1
  63. package/dist/components/docs/architecture/ArchitectureMultiTenancyPage.js +162 -113
  64. package/dist/components/docs/architecture/ArchitectureOverviewPage.d.ts +1 -6
  65. package/dist/components/docs/architecture/ArchitectureOverviewPage.d.ts.map +1 -1
  66. package/dist/components/docs/architecture/ArchitectureOverviewPage.js +446 -321
  67. package/dist/components/docs/architecture/index.d.ts +6 -6
  68. package/dist/components/docs/architecture/index.d.ts.map +1 -0
  69. package/dist/components/docs/architecture/index.js +1913 -6
  70. package/dist/components/docs/comparison/ComparisonAutomationPlatformsPage.d.ts +1 -6
  71. package/dist/components/docs/comparison/ComparisonAutomationPlatformsPage.d.ts.map +1 -1
  72. package/dist/components/docs/comparison/ComparisonAutomationPlatformsPage.js +244 -198
  73. package/dist/components/docs/comparison/ComparisonEnterprisePlatformsPage.d.ts +1 -6
  74. package/dist/components/docs/comparison/ComparisonEnterprisePlatformsPage.d.ts.map +1 -1
  75. package/dist/components/docs/comparison/ComparisonEnterprisePlatformsPage.js +228 -168
  76. package/dist/components/docs/comparison/ComparisonInternalToolBuildersPage.d.ts +1 -6
  77. package/dist/components/docs/comparison/ComparisonInternalToolBuildersPage.d.ts.map +1 -1
  78. package/dist/components/docs/comparison/ComparisonInternalToolBuildersPage.js +244 -198
  79. package/dist/components/docs/comparison/ComparisonOverviewPage.d.ts +1 -6
  80. package/dist/components/docs/comparison/ComparisonOverviewPage.d.ts.map +1 -1
  81. package/dist/components/docs/comparison/ComparisonOverviewPage.js +201 -166
  82. package/dist/components/docs/comparison/ComparisonWindmillPage.d.ts +1 -6
  83. package/dist/components/docs/comparison/ComparisonWindmillPage.d.ts.map +1 -1
  84. package/dist/components/docs/comparison/ComparisonWindmillPage.js +253 -175
  85. package/dist/components/docs/comparison/ComparisonWorkflowEnginesPage.d.ts +1 -6
  86. package/dist/components/docs/comparison/ComparisonWorkflowEnginesPage.d.ts.map +1 -1
  87. package/dist/components/docs/comparison/ComparisonWorkflowEnginesPage.js +338 -274
  88. package/dist/components/docs/comparison/index.d.ts +7 -7
  89. package/dist/components/docs/comparison/index.d.ts.map +1 -0
  90. package/dist/components/docs/comparison/index.js +1511 -8
  91. package/dist/components/docs/ecosystem/IntegrationsPage.d.ts +1 -6
  92. package/dist/components/docs/ecosystem/IntegrationsPage.d.ts.map +1 -1
  93. package/dist/components/docs/ecosystem/IntegrationsPage.js +96 -76
  94. package/dist/components/docs/ecosystem/PluginsPage.d.ts +1 -6
  95. package/dist/components/docs/ecosystem/PluginsPage.d.ts.map +1 -1
  96. package/dist/components/docs/ecosystem/PluginsPage.js +139 -114
  97. package/dist/components/docs/ecosystem/RegistryPage.d.ts +1 -6
  98. package/dist/components/docs/ecosystem/RegistryPage.d.ts.map +1 -1
  99. package/dist/components/docs/ecosystem/RegistryPage.js +81 -71
  100. package/dist/components/docs/ecosystem/TemplatesPage.d.ts +1 -6
  101. package/dist/components/docs/ecosystem/TemplatesPage.d.ts.map +1 -1
  102. package/dist/components/docs/ecosystem/TemplatesPage.js +136 -84
  103. package/dist/components/docs/ecosystem/ecosystem.docblocks.d.ts +2 -1
  104. package/dist/components/docs/ecosystem/ecosystem.docblocks.d.ts.map +1 -0
  105. package/dist/components/docs/ecosystem/ecosystem.docblocks.js +45 -51
  106. package/dist/components/docs/ecosystem/index.d.ts +6 -5
  107. package/dist/components/docs/ecosystem/index.d.ts.map +1 -0
  108. package/dist/components/docs/ecosystem/index.js +614 -6
  109. package/dist/components/docs/examples/DocsExamplesPage.d.ts +1 -6
  110. package/dist/components/docs/examples/DocsExamplesPage.d.ts.map +1 -1
  111. package/dist/components/docs/examples/DocsExamplesPage.js +79 -65
  112. package/dist/components/docs/examples/index.d.ts +2 -2
  113. package/dist/components/docs/examples/index.d.ts.map +1 -0
  114. package/dist/components/docs/examples/index.js +85 -3
  115. package/dist/components/docs/generated/docs-index.generated.d.ts +24 -27
  116. package/dist/components/docs/generated/docs-index.generated.d.ts.map +1 -1
  117. package/dist/components/docs/generated/docs-index.generated.js +6 -6
  118. package/dist/components/docs/generated/index.d.ts +3 -3
  119. package/dist/components/docs/generated/index.d.ts.map +1 -0
  120. package/dist/components/docs/generated/index.js +74 -2
  121. package/dist/components/docs/generated/loader.d.ts +6 -10
  122. package/dist/components/docs/generated/loader.d.ts.map +1 -1
  123. package/dist/components/docs/generated/loader.js +60 -48
  124. package/dist/components/docs/getting-started/CLIPage.d.ts +1 -6
  125. package/dist/components/docs/getting-started/CLIPage.d.ts.map +1 -1
  126. package/dist/components/docs/getting-started/CLIPage.js +265 -231
  127. package/dist/components/docs/getting-started/CompatibilityPage.d.ts +1 -6
  128. package/dist/components/docs/getting-started/CompatibilityPage.d.ts.map +1 -1
  129. package/dist/components/docs/getting-started/CompatibilityPage.js +171 -115
  130. package/dist/components/docs/getting-started/DataViewTutorialPage.d.ts +1 -6
  131. package/dist/components/docs/getting-started/DataViewTutorialPage.d.ts.map +1 -1
  132. package/dist/components/docs/getting-started/DataViewTutorialPage.js +128 -105
  133. package/dist/components/docs/getting-started/DeveloperToolsPage.d.ts +1 -6
  134. package/dist/components/docs/getting-started/DeveloperToolsPage.d.ts.map +1 -1
  135. package/dist/components/docs/getting-started/DeveloperToolsPage.js +191 -151
  136. package/dist/components/docs/getting-started/HelloWorldPage.d.ts +1 -6
  137. package/dist/components/docs/getting-started/HelloWorldPage.d.ts.map +1 -1
  138. package/dist/components/docs/getting-started/HelloWorldPage.js +176 -138
  139. package/dist/components/docs/getting-started/InstallationPage.d.ts +1 -6
  140. package/dist/components/docs/getting-started/InstallationPage.d.ts.map +1 -1
  141. package/dist/components/docs/getting-started/InstallationPage.js +149 -115
  142. package/dist/components/docs/getting-started/StartHerePage.d.ts +1 -6
  143. package/dist/components/docs/getting-started/StartHerePage.d.ts.map +1 -1
  144. package/dist/components/docs/getting-started/StartHerePage.js +125 -98
  145. package/dist/components/docs/getting-started/TroubleshootingPage.d.ts +1 -6
  146. package/dist/components/docs/getting-started/TroubleshootingPage.d.ts.map +1 -1
  147. package/dist/components/docs/getting-started/TroubleshootingPage.js +164 -111
  148. package/dist/components/docs/getting-started/VSCodeExtensionPage.d.ts +1 -6
  149. package/dist/components/docs/getting-started/VSCodeExtensionPage.d.ts.map +1 -1
  150. package/dist/components/docs/getting-started/VSCodeExtensionPage.js +429 -353
  151. package/dist/components/docs/getting-started/getting-started.docblocks.d.ts +2 -6
  152. package/dist/components/docs/getting-started/getting-started.docblocks.d.ts.map +1 -1
  153. package/dist/components/docs/getting-started/getting-started.docblocks.js +36 -37
  154. package/dist/components/docs/getting-started/index.d.ts +11 -11
  155. package/dist/components/docs/getting-started/index.d.ts.map +1 -0
  156. package/dist/components/docs/getting-started/index.js +2184 -12
  157. package/dist/components/docs/guides/GuideCIDiffGatingPage.d.ts +1 -6
  158. package/dist/components/docs/guides/GuideCIDiffGatingPage.d.ts.map +1 -1
  159. package/dist/components/docs/guides/GuideCIDiffGatingPage.js +192 -143
  160. package/dist/components/docs/guides/GuideContractTypesPage.d.ts +1 -6
  161. package/dist/components/docs/guides/GuideContractTypesPage.d.ts.map +1 -1
  162. package/dist/components/docs/guides/GuideContractTypesPage.js +532 -440
  163. package/dist/components/docs/guides/GuideDocsPipelinePage.d.ts +1 -6
  164. package/dist/components/docs/guides/GuideDocsPipelinePage.d.ts.map +1 -1
  165. package/dist/components/docs/guides/GuideDocsPipelinePage.js +202 -142
  166. package/dist/components/docs/guides/GuideGenerateDocsClientsSchemasPage.d.ts +1 -6
  167. package/dist/components/docs/guides/GuideGenerateDocsClientsSchemasPage.d.ts.map +1 -1
  168. package/dist/components/docs/guides/GuideGenerateDocsClientsSchemasPage.js +205 -152
  169. package/dist/components/docs/guides/GuideImportExistingCodebasesPage.d.ts +1 -6
  170. package/dist/components/docs/guides/GuideImportExistingCodebasesPage.d.ts.map +1 -1
  171. package/dist/components/docs/guides/GuideImportExistingCodebasesPage.js +743 -543
  172. package/dist/components/docs/guides/GuideNextjsOneEndpointPage.d.ts +1 -6
  173. package/dist/components/docs/guides/GuideNextjsOneEndpointPage.d.ts.map +1 -1
  174. package/dist/components/docs/guides/GuideNextjsOneEndpointPage.js +260 -199
  175. package/dist/components/docs/guides/GuideSpecValidationTypingPage.d.ts +1 -6
  176. package/dist/components/docs/guides/GuideSpecValidationTypingPage.d.ts.map +1 -1
  177. package/dist/components/docs/guides/GuideSpecValidationTypingPage.js +190 -139
  178. package/dist/components/docs/guides/GuidesIndexPage.d.ts +1 -6
  179. package/dist/components/docs/guides/GuidesIndexPage.d.ts.map +1 -1
  180. package/dist/components/docs/guides/GuidesIndexPage.js +141 -115
  181. package/dist/components/docs/guides/guides.docblocks.d.ts +2 -1
  182. package/dist/components/docs/guides/guides.docblocks.d.ts.map +1 -0
  183. package/dist/components/docs/guides/guides.docblocks.js +65 -87
  184. package/dist/components/docs/guides/index.d.ts +10 -9
  185. package/dist/components/docs/guides/index.d.ts.map +1 -0
  186. package/dist/components/docs/guides/index.js +2903 -11
  187. package/dist/components/docs/index.d.ts +20 -135
  188. package/dist/components/docs/index.d.ts.map +1 -0
  189. package/dist/components/docs/index.js +28182 -136
  190. package/dist/components/docs/integrations/IntegrationsCircuitBreakersPage.d.ts +1 -6
  191. package/dist/components/docs/integrations/IntegrationsCircuitBreakersPage.d.ts.map +1 -1
  192. package/dist/components/docs/integrations/IntegrationsCircuitBreakersPage.js +40 -33
  193. package/dist/components/docs/integrations/IntegrationsElevenLabsPage.d.ts +1 -6
  194. package/dist/components/docs/integrations/IntegrationsElevenLabsPage.d.ts.map +1 -1
  195. package/dist/components/docs/integrations/IntegrationsElevenLabsPage.js +103 -72
  196. package/dist/components/docs/integrations/IntegrationsGmailPage.d.ts +1 -6
  197. package/dist/components/docs/integrations/IntegrationsGmailPage.d.ts.map +1 -1
  198. package/dist/components/docs/integrations/IntegrationsGmailPage.js +107 -79
  199. package/dist/components/docs/integrations/IntegrationsGoogleCalendarPage.d.ts +1 -6
  200. package/dist/components/docs/integrations/IntegrationsGoogleCalendarPage.d.ts.map +1 -1
  201. package/dist/components/docs/integrations/IntegrationsGoogleCalendarPage.js +77 -57
  202. package/dist/components/docs/integrations/IntegrationsOpenAIPage.d.ts +1 -6
  203. package/dist/components/docs/integrations/IntegrationsOpenAIPage.d.ts.map +1 -1
  204. package/dist/components/docs/integrations/IntegrationsOpenAIPage.js +138 -95
  205. package/dist/components/docs/integrations/IntegrationsOverviewPage.d.ts +1 -6
  206. package/dist/components/docs/integrations/IntegrationsOverviewPage.d.ts.map +1 -1
  207. package/dist/components/docs/integrations/IntegrationsOverviewPage.js +598 -481
  208. package/dist/components/docs/integrations/IntegrationsPostmarkPage.d.ts +1 -6
  209. package/dist/components/docs/integrations/IntegrationsPostmarkPage.d.ts.map +1 -1
  210. package/dist/components/docs/integrations/IntegrationsPostmarkPage.js +217 -146
  211. package/dist/components/docs/integrations/IntegrationsPowensPage.d.ts +1 -6
  212. package/dist/components/docs/integrations/IntegrationsPowensPage.d.ts.map +1 -1
  213. package/dist/components/docs/integrations/IntegrationsPowensPage.js +298 -243
  214. package/dist/components/docs/integrations/IntegrationsQdrantPage.d.ts +1 -6
  215. package/dist/components/docs/integrations/IntegrationsQdrantPage.d.ts.map +1 -1
  216. package/dist/components/docs/integrations/IntegrationsQdrantPage.js +112 -82
  217. package/dist/components/docs/integrations/IntegrationsResendPage.d.ts +1 -6
  218. package/dist/components/docs/integrations/IntegrationsResendPage.d.ts.map +1 -1
  219. package/dist/components/docs/integrations/IntegrationsResendPage.js +100 -71
  220. package/dist/components/docs/integrations/IntegrationsS3Page.d.ts +1 -6
  221. package/dist/components/docs/integrations/IntegrationsS3Page.d.ts.map +1 -1
  222. package/dist/components/docs/integrations/IntegrationsS3Page.js +122 -84
  223. package/dist/components/docs/integrations/IntegrationsSpecModelPage.d.ts +1 -6
  224. package/dist/components/docs/integrations/IntegrationsSpecModelPage.d.ts.map +1 -1
  225. package/dist/components/docs/integrations/IntegrationsSpecModelPage.js +248 -167
  226. package/dist/components/docs/integrations/IntegrationsStripePage.d.ts +1 -6
  227. package/dist/components/docs/integrations/IntegrationsStripePage.d.ts.map +1 -1
  228. package/dist/components/docs/integrations/IntegrationsStripePage.js +332 -255
  229. package/dist/components/docs/integrations/IntegrationsTwilioPage.d.ts +1 -6
  230. package/dist/components/docs/integrations/IntegrationsTwilioPage.d.ts.map +1 -1
  231. package/dist/components/docs/integrations/IntegrationsTwilioPage.js +126 -87
  232. package/dist/components/docs/integrations/index.d.ts +15 -15
  233. package/dist/components/docs/integrations/index.d.ts.map +1 -0
  234. package/dist/components/docs/integrations/index.js +3312 -16
  235. package/dist/components/docs/intent/ContractFirstApiPage.d.ts +3 -8
  236. package/dist/components/docs/intent/ContractFirstApiPage.d.ts.map +1 -1
  237. package/dist/components/docs/intent/ContractFirstApiPage.js +120 -96
  238. package/dist/components/docs/intent/DeterministicCodegenPage.d.ts +3 -8
  239. package/dist/components/docs/intent/DeterministicCodegenPage.d.ts.map +1 -1
  240. package/dist/components/docs/intent/DeterministicCodegenPage.js +138 -117
  241. package/dist/components/docs/intent/GenerateClientFromSchemaPage.d.ts +3 -8
  242. package/dist/components/docs/intent/GenerateClientFromSchemaPage.d.ts.map +1 -1
  243. package/dist/components/docs/intent/GenerateClientFromSchemaPage.js +198 -168
  244. package/dist/components/docs/intent/OpenapiAlternativePage.d.ts +3 -8
  245. package/dist/components/docs/intent/OpenapiAlternativePage.d.ts.map +1 -1
  246. package/dist/components/docs/intent/OpenapiAlternativePage.js +196 -146
  247. package/dist/components/docs/intent/SchemaValidationTypescriptPage.d.ts +3 -8
  248. package/dist/components/docs/intent/SchemaValidationTypescriptPage.d.ts.map +1 -1
  249. package/dist/components/docs/intent/SchemaValidationTypescriptPage.js +138 -117
  250. package/dist/components/docs/intent/SpecDrivenDevelopmentPage.d.ts +3 -8
  251. package/dist/components/docs/intent/SpecDrivenDevelopmentPage.d.ts.map +1 -1
  252. package/dist/components/docs/intent/SpecDrivenDevelopmentPage.js +120 -96
  253. package/dist/components/docs/intent/index.d.ts +8 -7
  254. package/dist/components/docs/intent/index.d.ts.map +1 -0
  255. package/dist/components/docs/intent/index.js +1595 -8
  256. package/dist/components/docs/intent/intent-pages.docblocks.d.ts +7 -11
  257. package/dist/components/docs/intent/intent-pages.docblocks.d.ts.map +1 -1
  258. package/dist/components/docs/intent/intent-pages.docblocks.js +196 -173
  259. package/dist/components/docs/knowledge/KnowledgeCategoriesPage.d.ts +1 -6
  260. package/dist/components/docs/knowledge/KnowledgeCategoriesPage.d.ts.map +1 -1
  261. package/dist/components/docs/knowledge/KnowledgeCategoriesPage.js +748 -447
  262. package/dist/components/docs/knowledge/KnowledgeExamplesPage.d.ts +1 -6
  263. package/dist/components/docs/knowledge/KnowledgeExamplesPage.d.ts.map +1 -1
  264. package/dist/components/docs/knowledge/KnowledgeExamplesPage.js +189 -125
  265. package/dist/components/docs/knowledge/KnowledgeOverviewPage.d.ts +1 -6
  266. package/dist/components/docs/knowledge/KnowledgeOverviewPage.d.ts.map +1 -1
  267. package/dist/components/docs/knowledge/KnowledgeOverviewPage.js +405 -294
  268. package/dist/components/docs/knowledge/KnowledgeSourcesPage.d.ts +1 -6
  269. package/dist/components/docs/knowledge/KnowledgeSourcesPage.d.ts.map +1 -1
  270. package/dist/components/docs/knowledge/KnowledgeSourcesPage.js +389 -288
  271. package/dist/components/docs/knowledge/KnowledgeSpacesPage.d.ts +1 -6
  272. package/dist/components/docs/knowledge/KnowledgeSpacesPage.d.ts.map +1 -1
  273. package/dist/components/docs/knowledge/KnowledgeSpacesPage.js +300 -227
  274. package/dist/components/docs/knowledge/index.d.ts +6 -6
  275. package/dist/components/docs/knowledge/index.d.ts.map +1 -0
  276. package/dist/components/docs/knowledge/index.js +2444 -6
  277. package/dist/components/docs/libraries/LibrariesAccessibilityPage.d.ts +1 -6
  278. package/dist/components/docs/libraries/LibrariesAccessibilityPage.d.ts.map +1 -1
  279. package/dist/components/docs/libraries/LibrariesAccessibilityPage.js +193 -132
  280. package/dist/components/docs/libraries/LibrariesAiAgentPage.d.ts +1 -6
  281. package/dist/components/docs/libraries/LibrariesAiAgentPage.d.ts.map +1 -1
  282. package/dist/components/docs/libraries/LibrariesAiAgentPage.js +141 -89
  283. package/dist/components/docs/libraries/LibrariesAnalyticsPage.d.ts +1 -6
  284. package/dist/components/docs/libraries/LibrariesAnalyticsPage.d.ts.map +1 -1
  285. package/dist/components/docs/libraries/LibrariesAnalyticsPage.js +75 -59
  286. package/dist/components/docs/libraries/LibrariesContentGenPage.d.ts +1 -6
  287. package/dist/components/docs/libraries/LibrariesContentGenPage.d.ts.map +1 -1
  288. package/dist/components/docs/libraries/LibrariesContentGenPage.js +96 -67
  289. package/dist/components/docs/libraries/LibrariesContractsPage.d.ts +1 -6
  290. package/dist/components/docs/libraries/LibrariesContractsPage.d.ts.map +1 -1
  291. package/dist/components/docs/libraries/LibrariesContractsPage.js +277 -140
  292. package/dist/components/docs/libraries/LibrariesCostTrackingPage.d.ts +1 -6
  293. package/dist/components/docs/libraries/LibrariesCostTrackingPage.d.ts.map +1 -1
  294. package/dist/components/docs/libraries/LibrariesCostTrackingPage.js +107 -76
  295. package/dist/components/docs/libraries/LibrariesDataBackendPage.d.ts +1 -6
  296. package/dist/components/docs/libraries/LibrariesDataBackendPage.d.ts.map +1 -1
  297. package/dist/components/docs/libraries/LibrariesDataBackendPage.js +162 -106
  298. package/dist/components/docs/libraries/LibrariesDataViewsPage.d.ts +1 -6
  299. package/dist/components/docs/libraries/LibrariesDataViewsPage.d.ts.map +1 -1
  300. package/dist/components/docs/libraries/LibrariesDataViewsPage.js +181 -112
  301. package/dist/components/docs/libraries/LibrariesDesignSystemPage.d.ts +1 -6
  302. package/dist/components/docs/libraries/LibrariesDesignSystemPage.d.ts.map +1 -1
  303. package/dist/components/docs/libraries/LibrariesDesignSystemPage.js +273 -158
  304. package/dist/components/docs/libraries/LibrariesEvolutionPage.d.ts +1 -6
  305. package/dist/components/docs/libraries/LibrariesEvolutionPage.d.ts.map +1 -1
  306. package/dist/components/docs/libraries/LibrariesEvolutionPage.js +121 -91
  307. package/dist/components/docs/libraries/LibrariesGraphQLPage.d.ts +1 -6
  308. package/dist/components/docs/libraries/LibrariesGraphQLPage.d.ts.map +1 -1
  309. package/dist/components/docs/libraries/LibrariesGraphQLPage.js +169 -118
  310. package/dist/components/docs/libraries/LibrariesGrowthPage.d.ts +1 -6
  311. package/dist/components/docs/libraries/LibrariesGrowthPage.d.ts.map +1 -1
  312. package/dist/components/docs/libraries/LibrariesGrowthPage.js +83 -62
  313. package/dist/components/docs/libraries/LibrariesMultiTenancyPage.d.ts +1 -6
  314. package/dist/components/docs/libraries/LibrariesMultiTenancyPage.d.ts.map +1 -1
  315. package/dist/components/docs/libraries/LibrariesMultiTenancyPage.js +103 -84
  316. package/dist/components/docs/libraries/LibrariesObservabilityPage.d.ts +1 -6
  317. package/dist/components/docs/libraries/LibrariesObservabilityPage.d.ts.map +1 -1
  318. package/dist/components/docs/libraries/LibrariesObservabilityPage.js +123 -100
  319. package/dist/components/docs/libraries/LibrariesOverlayEnginePage.d.ts +1 -6
  320. package/dist/components/docs/libraries/LibrariesOverlayEnginePage.d.ts.map +1 -1
  321. package/dist/components/docs/libraries/LibrariesOverlayEnginePage.js +104 -86
  322. package/dist/components/docs/libraries/LibrariesOverviewPage.d.ts +1 -6
  323. package/dist/components/docs/libraries/LibrariesOverviewPage.d.ts.map +1 -1
  324. package/dist/components/docs/libraries/LibrariesOverviewPage.js +481 -356
  325. package/dist/components/docs/libraries/LibrariesPersonalizationPage.d.ts +1 -6
  326. package/dist/components/docs/libraries/LibrariesPersonalizationPage.d.ts.map +1 -1
  327. package/dist/components/docs/libraries/LibrariesPersonalizationPage.js +108 -93
  328. package/dist/components/docs/libraries/LibrariesProgressiveDeliveryPage.d.ts +1 -6
  329. package/dist/components/docs/libraries/LibrariesProgressiveDeliveryPage.d.ts.map +1 -1
  330. package/dist/components/docs/libraries/LibrariesProgressiveDeliveryPage.js +127 -96
  331. package/dist/components/docs/libraries/LibrariesResiliencePage.d.ts +1 -6
  332. package/dist/components/docs/libraries/LibrariesResiliencePage.d.ts.map +1 -1
  333. package/dist/components/docs/libraries/LibrariesResiliencePage.js +114 -97
  334. package/dist/components/docs/libraries/LibrariesRuntimePage.d.ts +1 -6
  335. package/dist/components/docs/libraries/LibrariesRuntimePage.d.ts.map +1 -1
  336. package/dist/components/docs/libraries/LibrariesRuntimePage.js +196 -116
  337. package/dist/components/docs/libraries/LibrariesSLOPage.d.ts +1 -6
  338. package/dist/components/docs/libraries/LibrariesSLOPage.d.ts.map +1 -1
  339. package/dist/components/docs/libraries/LibrariesSLOPage.js +111 -83
  340. package/dist/components/docs/libraries/LibrariesSchemaPage.d.ts +1 -6
  341. package/dist/components/docs/libraries/LibrariesSchemaPage.d.ts.map +1 -1
  342. package/dist/components/docs/libraries/LibrariesSchemaPage.js +268 -151
  343. package/dist/components/docs/libraries/LibrariesSupportBotPage.d.ts +1 -6
  344. package/dist/components/docs/libraries/LibrariesSupportBotPage.d.ts.map +1 -1
  345. package/dist/components/docs/libraries/LibrariesSupportBotPage.js +129 -77
  346. package/dist/components/docs/libraries/LibrariesTestingPage.d.ts +1 -6
  347. package/dist/components/docs/libraries/LibrariesTestingPage.d.ts.map +1 -1
  348. package/dist/components/docs/libraries/LibrariesTestingPage.js +121 -91
  349. package/dist/components/docs/libraries/LibrariesUIKitPage.d.ts +1 -6
  350. package/dist/components/docs/libraries/LibrariesUIKitPage.d.ts.map +1 -1
  351. package/dist/components/docs/libraries/LibrariesUIKitPage.js +226 -136
  352. package/dist/components/docs/libraries/LibrariesWorkflowComposerPage.d.ts +1 -6
  353. package/dist/components/docs/libraries/LibrariesWorkflowComposerPage.d.ts.map +1 -1
  354. package/dist/components/docs/libraries/LibrariesWorkflowComposerPage.js +83 -62
  355. package/dist/components/docs/libraries/LibrariesWorkflowsPage.d.ts +1 -6
  356. package/dist/components/docs/libraries/LibrariesWorkflowsPage.d.ts.map +1 -1
  357. package/dist/components/docs/libraries/LibrariesWorkflowsPage.js +177 -111
  358. package/dist/components/docs/libraries/index.d.ts +28 -28
  359. package/dist/components/docs/libraries/index.d.ts.map +1 -0
  360. package/dist/components/docs/libraries/index.js +5005 -29
  361. package/dist/components/docs/manifesto/ManifestoPage.d.ts +1 -6
  362. package/dist/components/docs/manifesto/ManifestoPage.d.ts.map +1 -1
  363. package/dist/components/docs/manifesto/ManifestoPage.js +190 -183
  364. package/dist/components/docs/ops/AutoEvolutionOpsPage.d.ts +1 -6
  365. package/dist/components/docs/ops/AutoEvolutionOpsPage.d.ts.map +1 -1
  366. package/dist/components/docs/ops/AutoEvolutionOpsPage.js +130 -92
  367. package/dist/components/docs/ops/DistributedTracingOpsPage.d.ts +1 -6
  368. package/dist/components/docs/ops/DistributedTracingOpsPage.d.ts.map +1 -1
  369. package/dist/components/docs/ops/DistributedTracingOpsPage.js +69 -55
  370. package/dist/components/docs/ops/index.d.ts +3 -3
  371. package/dist/components/docs/ops/index.d.ts.map +1 -0
  372. package/dist/components/docs/ops/index.js +213 -3
  373. package/dist/components/docs/ops/ops-lifecycle.docblocks.d.ts +2 -6
  374. package/dist/components/docs/ops/ops-lifecycle.docblocks.d.ts.map +1 -1
  375. package/dist/components/docs/ops/ops-lifecycle.docblocks.js +38 -38
  376. package/dist/components/docs/ops/ops-runbooks-a.docblocks.d.ts +2 -6
  377. package/dist/components/docs/ops/ops-runbooks-a.docblocks.d.ts.map +1 -1
  378. package/dist/components/docs/ops/ops-runbooks-a.docblocks.js +68 -68
  379. package/dist/components/docs/ops/ops-runbooks-b.docblocks.d.ts +2 -6
  380. package/dist/components/docs/ops/ops-runbooks-b.docblocks.d.ts.map +1 -1
  381. package/dist/components/docs/ops/ops-runbooks-b.docblocks.js +69 -69
  382. package/dist/components/docs/ops/ops-slo-tenant.docblocks.d.ts +2 -6
  383. package/dist/components/docs/ops/ops-slo-tenant.docblocks.d.ts.map +1 -1
  384. package/dist/components/docs/ops/ops-slo-tenant.docblocks.js +69 -69
  385. package/dist/components/docs/ops/ops-top.docs.d.ts +2 -6
  386. package/dist/components/docs/ops/ops-top.docs.d.ts.map +1 -1
  387. package/dist/components/docs/ops/ops-top.docs.js +17 -15
  388. package/dist/components/docs/ops/ops.docs.d.ts +2 -6
  389. package/dist/components/docs/ops/ops.docs.d.ts.map +1 -1
  390. package/dist/components/docs/ops/ops.docs.js +579 -16
  391. package/dist/components/docs/product/product.docblocks.d.ts +2 -6
  392. package/dist/components/docs/product/product.docblocks.d.ts.map +1 -1
  393. package/dist/components/docs/product/product.docblocks.js +66 -67
  394. package/dist/components/docs/reference/DocsMarkdownContent.d.ts +3 -10
  395. package/dist/components/docs/reference/DocsMarkdownContent.d.ts.map +1 -1
  396. package/dist/components/docs/reference/DocsMarkdownContent.js +188 -64
  397. package/dist/components/docs/reference/DocsReferenceContent.d.ts +5 -12
  398. package/dist/components/docs/reference/DocsReferenceContent.d.ts.map +1 -1
  399. package/dist/components/docs/reference/DocsReferenceContent.js +251 -45
  400. package/dist/components/docs/reference/DocsReferenceIndexClient.d.ts +4 -10
  401. package/dist/components/docs/reference/DocsReferenceIndexClient.d.ts.map +1 -1
  402. package/dist/components/docs/reference/DocsReferenceIndexClient.js +120 -98
  403. package/dist/components/docs/reference/DocsReferenceIndexPage.d.ts +1 -6
  404. package/dist/components/docs/reference/DocsReferenceIndexPage.d.ts.map +1 -1
  405. package/dist/components/docs/reference/DocsReferenceIndexPage.js +205 -9
  406. package/dist/components/docs/reference/DocsReferencePage.d.ts +5 -12
  407. package/dist/components/docs/reference/DocsReferencePage.d.ts.map +1 -1
  408. package/dist/components/docs/reference/DocsReferencePage.js +264 -11
  409. package/dist/components/docs/reference/docsMarkdownParser.d.ts +15 -18
  410. package/dist/components/docs/reference/docsMarkdownParser.d.ts.map +1 -1
  411. package/dist/components/docs/reference/docsMarkdownParser.js +87 -90
  412. package/dist/components/docs/reference/index.d.ts +3 -3
  413. package/dist/components/docs/reference/index.d.ts.map +1 -0
  414. package/dist/components/docs/reference/index.js +472 -3
  415. package/dist/components/docs/safety/SafetyAuditingPage.d.ts +1 -6
  416. package/dist/components/docs/safety/SafetyAuditingPage.d.ts.map +1 -1
  417. package/dist/components/docs/safety/SafetyAuditingPage.js +348 -210
  418. package/dist/components/docs/safety/SafetyMigrationsPage.d.ts +1 -6
  419. package/dist/components/docs/safety/SafetyMigrationsPage.d.ts.map +1 -1
  420. package/dist/components/docs/safety/SafetyMigrationsPage.js +357 -220
  421. package/dist/components/docs/safety/SafetyOverviewPage.d.ts +1 -6
  422. package/dist/components/docs/safety/SafetyOverviewPage.d.ts.map +1 -1
  423. package/dist/components/docs/safety/SafetyOverviewPage.js +236 -194
  424. package/dist/components/docs/safety/SafetyPDPPage.d.ts +1 -6
  425. package/dist/components/docs/safety/SafetyPDPPage.d.ts.map +1 -1
  426. package/dist/components/docs/safety/SafetyPDPPage.js +299 -201
  427. package/dist/components/docs/safety/SafetySecurityTrustPage.d.ts +1 -6
  428. package/dist/components/docs/safety/SafetySecurityTrustPage.d.ts.map +1 -1
  429. package/dist/components/docs/safety/SafetySecurityTrustPage.js +204 -154
  430. package/dist/components/docs/safety/SafetySigningPage.d.ts +1 -6
  431. package/dist/components/docs/safety/SafetySigningPage.d.ts.map +1 -1
  432. package/dist/components/docs/safety/SafetySigningPage.js +89 -66
  433. package/dist/components/docs/safety/SafetyTenantIsolationPage.d.ts +1 -6
  434. package/dist/components/docs/safety/SafetyTenantIsolationPage.d.ts.map +1 -1
  435. package/dist/components/docs/safety/SafetyTenantIsolationPage.js +77 -59
  436. package/dist/components/docs/safety/index.d.ts +8 -8
  437. package/dist/components/docs/safety/index.d.ts.map +1 -0
  438. package/dist/components/docs/safety/index.js +1698 -9
  439. package/dist/components/docs/shared/StudioPrompt.d.ts +6 -15
  440. package/dist/components/docs/shared/StudioPrompt.d.ts.map +1 -1
  441. package/dist/components/docs/shared/StudioPrompt.js +30 -26
  442. package/dist/components/docs/specs/SpecsCapabilitiesPage.d.ts +1 -6
  443. package/dist/components/docs/specs/SpecsCapabilitiesPage.d.ts.map +1 -1
  444. package/dist/components/docs/specs/SpecsCapabilitiesPage.js +156 -126
  445. package/dist/components/docs/specs/SpecsDataViewsPage.d.ts +1 -6
  446. package/dist/components/docs/specs/SpecsDataViewsPage.d.ts.map +1 -1
  447. package/dist/components/docs/specs/SpecsDataViewsPage.js +258 -168
  448. package/dist/components/docs/specs/SpecsOverlaysPage.d.ts +1 -6
  449. package/dist/components/docs/specs/SpecsOverlaysPage.d.ts.map +1 -1
  450. package/dist/components/docs/specs/SpecsOverlaysPage.js +370 -205
  451. package/dist/components/docs/specs/SpecsOverviewPage.d.ts +1 -6
  452. package/dist/components/docs/specs/SpecsOverviewPage.d.ts.map +1 -1
  453. package/dist/components/docs/specs/SpecsOverviewPage.js +346 -277
  454. package/dist/components/docs/specs/SpecsPolicyPage.d.ts +1 -6
  455. package/dist/components/docs/specs/SpecsPolicyPage.d.ts.map +1 -1
  456. package/dist/components/docs/specs/SpecsPolicyPage.js +418 -311
  457. package/dist/components/docs/specs/SpecsWorkflowsPage.d.ts +1 -6
  458. package/dist/components/docs/specs/SpecsWorkflowsPage.d.ts.map +1 -1
  459. package/dist/components/docs/specs/SpecsWorkflowsPage.js +310 -205
  460. package/dist/components/docs/specs/index.d.ts +7 -7
  461. package/dist/components/docs/specs/index.d.ts.map +1 -0
  462. package/dist/components/docs/specs/index.js +2082 -8
  463. package/dist/components/docs/studio/StudioBYOKPage.d.ts +1 -6
  464. package/dist/components/docs/studio/StudioBYOKPage.d.ts.map +1 -1
  465. package/dist/components/docs/studio/StudioBYOKPage.js +78 -76
  466. package/dist/components/docs/studio/StudioDeploymentsPage.d.ts +1 -6
  467. package/dist/components/docs/studio/StudioDeploymentsPage.d.ts.map +1 -1
  468. package/dist/components/docs/studio/StudioDeploymentsPage.js +99 -81
  469. package/dist/components/docs/studio/StudioGettingStartedPage.d.ts +1 -6
  470. package/dist/components/docs/studio/StudioGettingStartedPage.d.ts.map +1 -1
  471. package/dist/components/docs/studio/StudioGettingStartedPage.js +82 -80
  472. package/dist/components/docs/studio/StudioIntegrationsPage.d.ts +1 -6
  473. package/dist/components/docs/studio/StudioIntegrationsPage.d.ts.map +1 -1
  474. package/dist/components/docs/studio/StudioIntegrationsPage.js +70 -65
  475. package/dist/components/docs/studio/StudioOverviewPage.d.ts +1 -6
  476. package/dist/components/docs/studio/StudioOverviewPage.d.ts.map +1 -1
  477. package/dist/components/docs/studio/StudioOverviewPage.js +71 -66
  478. package/dist/components/docs/studio/StudioVisualBuilderPage.d.ts +1 -6
  479. package/dist/components/docs/studio/StudioVisualBuilderPage.d.ts.map +1 -1
  480. package/dist/components/docs/studio/StudioVisualBuilderPage.js +118 -99
  481. package/dist/components/docs/studio/index.d.ts +7 -7
  482. package/dist/components/docs/studio/index.d.ts.map +1 -0
  483. package/dist/components/docs/studio/index.js +538 -8
  484. package/dist/components/docs/tech/contracts/tech-docs.docblocks.d.ts +2 -6
  485. package/dist/components/docs/tech/contracts/tech-docs.docblocks.d.ts.map +1 -1
  486. package/dist/components/docs/tech/contracts/tech-docs.docblocks.js +17 -16
  487. package/dist/components/integrations/index.d.ts +5 -5
  488. package/dist/components/integrations/index.d.ts.map +1 -0
  489. package/dist/components/integrations/index.js +601 -5
  490. package/dist/components/integrations/molecules/IntegrationCard.d.ts +11 -26
  491. package/dist/components/integrations/molecules/IntegrationCard.d.ts.map +1 -1
  492. package/dist/components/integrations/molecules/IntegrationCard.js +98 -60
  493. package/dist/components/integrations/organisms/IntegrationMarketplace.d.ts +13 -22
  494. package/dist/components/integrations/organisms/IntegrationMarketplace.d.ts.map +1 -1
  495. package/dist/components/integrations/organisms/IntegrationMarketplace.js +211 -77
  496. package/dist/components/integrations/organisms/IntegrationSettings.d.ts +15 -27
  497. package/dist/components/integrations/organisms/IntegrationSettings.d.ts.map +1 -1
  498. package/dist/components/integrations/organisms/IntegrationSettings.js +281 -189
  499. package/dist/components/integrations/organisms/KnowledgeSourceList.d.ts +12 -22
  500. package/dist/components/integrations/organisms/KnowledgeSourceList.d.ts.map +1 -1
  501. package/dist/components/integrations/organisms/KnowledgeSourceList.js +102 -65
  502. package/dist/components/legal/PrivacyTemplate.d.ts +3 -8
  503. package/dist/components/legal/PrivacyTemplate.d.ts.map +1 -1
  504. package/dist/components/legal/PrivacyTemplate.js +1023 -842
  505. package/dist/components/legal/TermsTemplate.d.ts +3 -8
  506. package/dist/components/legal/TermsTemplate.d.ts.map +1 -1
  507. package/dist/components/legal/TermsTemplate.js +939 -780
  508. package/dist/components/legal/index.d.ts +3 -3
  509. package/dist/components/legal/index.d.ts.map +1 -0
  510. package/dist/components/legal/index.js +1963 -3
  511. package/dist/components/shared/FeatureGateNotice.d.ts +6 -16
  512. package/dist/components/shared/FeatureGateNotice.d.ts.map +1 -1
  513. package/dist/components/shared/FeatureGateNotice.js +37 -32
  514. package/dist/components/shared/index.d.ts +2 -2
  515. package/dist/components/shared/index.d.ts.map +1 -0
  516. package/dist/components/shared/index.js +39 -3
  517. package/dist/components/shell/WorkspaceHeader.d.ts +19 -32
  518. package/dist/components/shell/WorkspaceHeader.d.ts.map +1 -1
  519. package/dist/components/shell/WorkspaceHeader.js +97 -59
  520. package/dist/components/shell/WorkspaceProjectShellLayout.d.ts +9 -28
  521. package/dist/components/shell/WorkspaceProjectShellLayout.d.ts.map +1 -1
  522. package/dist/components/shell/WorkspaceProjectShellLayout.js +220 -35
  523. package/dist/components/shell/WorkspaceSidebar.d.ts +12 -22
  524. package/dist/components/shell/WorkspaceSidebar.d.ts.map +1 -1
  525. package/dist/components/shell/WorkspaceSidebar.js +67 -31
  526. package/dist/components/shell/index.d.ts +4 -4
  527. package/dist/components/shell/index.d.ts.map +1 -0
  528. package/dist/components/shell/index.js +224 -4
  529. package/dist/components/templates/engine/index.d.ts +18 -12
  530. package/dist/components/templates/engine/index.d.ts.map +1 -1
  531. package/dist/components/templates/engine/index.js +28 -41
  532. package/dist/components/templates/index.d.ts +4 -16
  533. package/dist/components/templates/index.d.ts.map +1 -0
  534. package/dist/components/templates/index.js +1067 -17
  535. package/dist/components/templates/messaging/ConversationList.d.ts +4 -12
  536. package/dist/components/templates/messaging/ConversationList.d.ts.map +1 -1
  537. package/dist/components/templates/messaging/ConversationList.js +79 -52
  538. package/dist/components/templates/messaging/MessageComposer.d.ts +5 -14
  539. package/dist/components/templates/messaging/MessageComposer.d.ts.map +1 -1
  540. package/dist/components/templates/messaging/MessageComposer.js +159 -52
  541. package/dist/components/templates/messaging/MessageThread.d.ts +5 -14
  542. package/dist/components/templates/messaging/MessageThread.d.ts.map +1 -1
  543. package/dist/components/templates/messaging/MessageThread.js +78 -75
  544. package/dist/components/templates/messaging/MessagingWorkspace.d.ts +1 -6
  545. package/dist/components/templates/messaging/MessagingWorkspace.d.ts.map +1 -1
  546. package/dist/components/templates/messaging/MessagingWorkspace.js +290 -25
  547. package/dist/components/templates/messaging/index.d.ts +5 -5
  548. package/dist/components/templates/messaging/index.d.ts.map +1 -0
  549. package/dist/components/templates/messaging/index.js +300 -5
  550. package/dist/components/templates/messaging/types.d.ts +20 -23
  551. package/dist/components/templates/messaging/types.d.ts.map +1 -1
  552. package/dist/components/templates/messaging/types.js +1 -0
  553. package/dist/components/templates/recipes/LanguageSwitcher.d.ts +4 -12
  554. package/dist/components/templates/recipes/LanguageSwitcher.d.ts.map +1 -1
  555. package/dist/components/templates/recipes/LanguageSwitcher.js +15 -16
  556. package/dist/components/templates/recipes/RecipeCard.d.ts +6 -15
  557. package/dist/components/templates/recipes/RecipeCard.d.ts.map +1 -1
  558. package/dist/components/templates/recipes/RecipeCard.js +79 -57
  559. package/dist/components/templates/recipes/RecipeDetail.d.ts +4 -11
  560. package/dist/components/templates/recipes/RecipeDetail.d.ts.map +1 -1
  561. package/dist/components/templates/recipes/RecipeDetail.js +72 -47
  562. package/dist/components/templates/recipes/RecipeList.d.ts +1 -6
  563. package/dist/components/templates/recipes/RecipeList.d.ts.map +1 -1
  564. package/dist/components/templates/recipes/RecipeList.js +236 -72
  565. package/dist/components/templates/recipes/index.d.ts +5 -5
  566. package/dist/components/templates/recipes/index.d.ts.map +1 -0
  567. package/dist/components/templates/recipes/index.js +282 -5
  568. package/dist/components/templates/recipes/types.d.ts +23 -26
  569. package/dist/components/templates/recipes/types.d.ts.map +1 -1
  570. package/dist/components/templates/recipes/types.js +1 -0
  571. package/dist/components/templates/todos/FilterBar.d.ts +11 -20
  572. package/dist/components/templates/todos/FilterBar.d.ts.map +1 -1
  573. package/dist/components/templates/todos/FilterBar.js +106 -95
  574. package/dist/components/templates/todos/TaskForm.d.ts +4 -11
  575. package/dist/components/templates/todos/TaskForm.d.ts.map +1 -1
  576. package/dist/components/templates/todos/TaskForm.js +150 -127
  577. package/dist/components/templates/todos/TaskItem.d.ts +6 -15
  578. package/dist/components/templates/todos/TaskItem.d.ts.map +1 -1
  579. package/dist/components/templates/todos/TaskItem.js +75 -64
  580. package/dist/components/templates/todos/TaskList.d.ts +1 -6
  581. package/dist/components/templates/todos/TaskList.d.ts.map +1 -1
  582. package/dist/components/templates/todos/TaskList.js +446 -102
  583. package/dist/components/templates/todos/index.d.ts +5 -5
  584. package/dist/components/templates/todos/index.d.ts.map +1 -0
  585. package/dist/components/templates/todos/index.js +488 -5
  586. package/dist/components/templates/todos/types.d.ts +14 -17
  587. package/dist/components/templates/todos/types.d.ts.map +1 -1
  588. package/dist/components/templates/todos/types.js +1 -0
  589. package/dist/config/contractspec-blueprint.d.ts +2 -7
  590. package/dist/config/contractspec-blueprint.d.ts.map +1 -1
  591. package/dist/config/contractspec-blueprint.js +122 -70
  592. package/dist/config/contractspec-branding.d.ts +3 -8
  593. package/dist/config/contractspec-branding.d.ts.map +1 -1
  594. package/dist/config/contractspec-branding.js +43 -66
  595. package/dist/config/contractspec-routes.d.ts +2 -7
  596. package/dist/config/contractspec-routes.d.ts.map +1 -1
  597. package/dist/config/contractspec-routes.js +24 -68
  598. package/dist/config/index.d.ts +5 -5
  599. package/dist/config/index.d.ts.map +1 -0
  600. package/dist/config/index.js +126 -4
  601. package/dist/features/contracts-registry.d.ts +39 -37
  602. package/dist/features/contracts-registry.d.ts.map +1 -1
  603. package/dist/features/contracts-registry.js +122 -85
  604. package/dist/features/docs/docs.contracts.d.ts +2 -2
  605. package/dist/features/docs/docs.contracts.d.ts.map +1 -0
  606. package/dist/features/docs/docs.contracts.js +18 -3
  607. package/dist/features/docs/index.d.ts +2 -2
  608. package/dist/features/docs/index.d.ts.map +1 -0
  609. package/dist/features/docs/index.js +18 -3
  610. package/dist/features/docs.feature.d.ts +2 -7
  611. package/dist/features/docs.feature.d.ts.map +1 -1
  612. package/dist/features/docs.feature.js +33 -59
  613. package/dist/features/index.d.ts +10 -9
  614. package/dist/features/index.d.ts.map +1 -0
  615. package/dist/features/index.js +310 -8
  616. package/dist/features/mcp.feature.d.ts +2 -7
  617. package/dist/features/mcp.feature.d.ts.map +1 -1
  618. package/dist/features/mcp.feature.js +30 -56
  619. package/dist/features/presentations.feature.d.ts +2 -7
  620. package/dist/features/presentations.feature.d.ts.map +1 -1
  621. package/dist/features/presentations.feature.js +33 -60
  622. package/dist/features/registry.d.ts +4 -9
  623. package/dist/features/registry.d.ts.map +1 -1
  624. package/dist/features/registry.js +109 -31
  625. package/dist/index.d.ts +9 -158
  626. package/dist/index.d.ts.map +1 -0
  627. package/dist/index.js +32497 -158
  628. package/dist/infrastructure/elysia/index.d.ts +2 -2
  629. package/dist/infrastructure/elysia/index.d.ts.map +1 -0
  630. package/dist/infrastructure/elysia/index.js +36 -3
  631. package/dist/infrastructure/elysia/logger.d.ts +6 -9
  632. package/dist/infrastructure/elysia/logger.d.ts.map +1 -1
  633. package/dist/infrastructure/elysia/logger.js +33 -29
  634. package/dist/infrastructure/index.d.ts +2 -3
  635. package/dist/infrastructure/index.d.ts.map +1 -0
  636. package/dist/infrastructure/index.js +36 -4
  637. package/dist/libs/email/client.d.ts +9 -12
  638. package/dist/libs/email/client.d.ts.map +1 -1
  639. package/dist/libs/email/client.js +107 -105
  640. package/dist/libs/email/client.test.d.ts +2 -0
  641. package/dist/libs/email/client.test.d.ts.map +1 -0
  642. package/dist/libs/email/contact.d.ts +2 -6
  643. package/dist/libs/email/contact.d.ts.map +1 -1
  644. package/dist/libs/email/contact.js +153 -41
  645. package/dist/libs/email/newsletter.d.ts +2 -6
  646. package/dist/libs/email/newsletter.d.ts.map +1 -1
  647. package/dist/libs/email/newsletter.js +167 -54
  648. package/dist/libs/email/types.d.ts +48 -52
  649. package/dist/libs/email/types.d.ts.map +1 -1
  650. package/dist/libs/email/types.js +3 -1
  651. package/dist/libs/email/utils.d.ts +2 -5
  652. package/dist/libs/email/utils.d.ts.map +1 -1
  653. package/dist/libs/email/utils.js +9 -7
  654. package/dist/libs/email/waitlist-application.d.ts +2 -6
  655. package/dist/libs/email/waitlist-application.d.ts.map +1 -1
  656. package/dist/libs/email/waitlist-application.js +187 -69
  657. package/dist/libs/email/waitlist.d.ts +2 -6
  658. package/dist/libs/email/waitlist.d.ts.map +1 -1
  659. package/dist/libs/email/waitlist.js +169 -56
  660. package/dist/libs/email.d.ts +6 -6
  661. package/dist/libs/email.d.ts.map +1 -0
  662. package/dist/libs/email.js +541 -6
  663. package/dist/libs/posthog/client.d.ts +15 -17
  664. package/dist/libs/posthog/client.d.ts.map +1 -1
  665. package/dist/libs/posthog/client.js +56 -44
  666. package/dist/libs/posthog/native.d.ts +6 -9
  667. package/dist/libs/posthog/native.d.ts.map +1 -1
  668. package/dist/libs/posthog/native.js +21 -16
  669. package/dist/libs/posthog/server.d.ts +3 -6
  670. package/dist/libs/posthog/server.d.ts.map +1 -1
  671. package/dist/libs/posthog/server.js +11 -12
  672. package/dist/libs/pricing-examples.d.ts +13 -16
  673. package/dist/libs/pricing-examples.d.ts.map +1 -1
  674. package/dist/libs/pricing-examples.js +18 -20
  675. package/dist/node/application/index.js +696 -0
  676. package/dist/node/application/mcp/cliMcp.js +341 -0
  677. package/dist/node/application/mcp/common.js +77 -0
  678. package/dist/node/application/mcp/docsMcp.js +267 -0
  679. package/dist/node/application/mcp/index.js +696 -0
  680. package/dist/node/application/mcp/internalMcp.js +294 -0
  681. package/dist/node/components/docs/DocsIndexPage.js +270 -0
  682. package/dist/node/components/docs/advanced/AdvancedMCPPage.js +337 -0
  683. package/dist/node/components/docs/advanced/AdvancedOverlayEditorPage.js +107 -0
  684. package/dist/node/components/docs/advanced/AdvancedRenderersPage.js +132 -0
  685. package/dist/node/components/docs/advanced/AdvancedSpecExperimentsPage.js +124 -0
  686. package/dist/node/components/docs/advanced/AdvancedTelemetryPage.js +417 -0
  687. package/dist/node/components/docs/advanced/AdvancedWorkflowMonitoringPage.js +108 -0
  688. package/dist/node/components/docs/advanced/index.js +1220 -0
  689. package/dist/node/components/docs/architecture/ArchitectureAppConfigPage.js +383 -0
  690. package/dist/node/components/docs/architecture/ArchitectureIntegrationBindingPage.js +386 -0
  691. package/dist/node/components/docs/architecture/ArchitectureKnowledgeBindingPage.js +528 -0
  692. package/dist/node/components/docs/architecture/ArchitectureMultiTenancyPage.js +172 -0
  693. package/dist/node/components/docs/architecture/ArchitectureOverviewPage.js +448 -0
  694. package/dist/node/components/docs/architecture/index.js +1913 -0
  695. package/dist/node/components/docs/comparison/ComparisonAutomationPlatformsPage.js +245 -0
  696. package/dist/node/components/docs/comparison/ComparisonEnterprisePlatformsPage.js +230 -0
  697. package/dist/node/components/docs/comparison/ComparisonInternalToolBuildersPage.js +245 -0
  698. package/dist/node/components/docs/comparison/ComparisonOverviewPage.js +202 -0
  699. package/dist/node/components/docs/comparison/ComparisonWindmillPage.js +254 -0
  700. package/dist/node/components/docs/comparison/ComparisonWorkflowEnginesPage.js +339 -0
  701. package/dist/node/components/docs/comparison/index.js +1510 -0
  702. package/dist/node/components/docs/ecosystem/IntegrationsPage.js +102 -0
  703. package/dist/node/components/docs/ecosystem/PluginsPage.js +200 -0
  704. package/dist/node/components/docs/ecosystem/RegistryPage.js +119 -0
  705. package/dist/node/components/docs/ecosystem/TemplatesPage.js +146 -0
  706. package/dist/node/components/docs/ecosystem/ecosystem.docblocks.js +49 -0
  707. package/dist/node/components/docs/ecosystem/index.js +614 -0
  708. package/dist/node/components/docs/examples/DocsExamplesPage.js +84 -0
  709. package/dist/node/components/docs/examples/index.js +84 -0
  710. package/dist/node/components/docs/generated/docs-index.generated.js +5 -0
  711. package/dist/node/components/docs/generated/index.js +74 -0
  712. package/dist/node/components/docs/generated/loader.js +74 -0
  713. package/dist/node/components/docs/getting-started/CLIPage.js +292 -0
  714. package/dist/node/components/docs/getting-started/CompatibilityPage.js +173 -0
  715. package/dist/node/components/docs/getting-started/DataViewTutorialPage.js +238 -0
  716. package/dist/node/components/docs/getting-started/DeveloperToolsPage.js +194 -0
  717. package/dist/node/components/docs/getting-started/HelloWorldPage.js +273 -0
  718. package/dist/node/components/docs/getting-started/InstallationPage.js +156 -0
  719. package/dist/node/components/docs/getting-started/StartHerePage.js +129 -0
  720. package/dist/node/components/docs/getting-started/TroubleshootingPage.js +169 -0
  721. package/dist/node/components/docs/getting-started/VSCodeExtensionPage.js +432 -0
  722. package/dist/node/components/docs/getting-started/getting-started.docblocks.js +137 -0
  723. package/dist/node/components/docs/getting-started/index.js +2183 -0
  724. package/dist/node/components/docs/guides/GuideCIDiffGatingPage.js +197 -0
  725. package/dist/node/components/docs/guides/GuideContractTypesPage.js +738 -0
  726. package/dist/node/components/docs/guides/GuideDocsPipelinePage.js +225 -0
  727. package/dist/node/components/docs/guides/GuideGenerateDocsClientsSchemasPage.js +211 -0
  728. package/dist/node/components/docs/guides/GuideImportExistingCodebasesPage.js +878 -0
  729. package/dist/node/components/docs/guides/GuideNextjsOneEndpointPage.js +318 -0
  730. package/dist/node/components/docs/guides/GuideSpecValidationTypingPage.js +255 -0
  731. package/dist/node/components/docs/guides/GuidesIndexPage.js +149 -0
  732. package/dist/node/components/docs/guides/guides.docblocks.js +111 -0
  733. package/dist/node/components/docs/guides/index.js +2902 -0
  734. package/dist/node/components/docs/index.js +28181 -0
  735. package/dist/node/components/docs/integrations/IntegrationsCircuitBreakersPage.js +51 -0
  736. package/dist/node/components/docs/integrations/IntegrationsElevenLabsPage.js +123 -0
  737. package/dist/node/components/docs/integrations/IntegrationsGmailPage.js +131 -0
  738. package/dist/node/components/docs/integrations/IntegrationsGoogleCalendarPage.js +104 -0
  739. package/dist/node/components/docs/integrations/IntegrationsOpenAIPage.js +195 -0
  740. package/dist/node/components/docs/integrations/IntegrationsOverviewPage.js +650 -0
  741. package/dist/node/components/docs/integrations/IntegrationsPostmarkPage.js +261 -0
  742. package/dist/node/components/docs/integrations/IntegrationsPowensPage.js +352 -0
  743. package/dist/node/components/docs/integrations/IntegrationsQdrantPage.js +178 -0
  744. package/dist/node/components/docs/integrations/IntegrationsResendPage.js +123 -0
  745. package/dist/node/components/docs/integrations/IntegrationsS3Page.js +163 -0
  746. package/dist/node/components/docs/integrations/IntegrationsSpecModelPage.js +422 -0
  747. package/dist/node/components/docs/integrations/IntegrationsStripePage.js +425 -0
  748. package/dist/node/components/docs/integrations/IntegrationsTwilioPage.js +146 -0
  749. package/dist/node/components/docs/integrations/index.js +3311 -0
  750. package/dist/node/components/docs/intent/ContractFirstApiPage.js +159 -0
  751. package/dist/node/components/docs/intent/DeterministicCodegenPage.js +184 -0
  752. package/dist/node/components/docs/intent/GenerateClientFromSchemaPage.js +398 -0
  753. package/dist/node/components/docs/intent/OpenapiAlternativePage.js +237 -0
  754. package/dist/node/components/docs/intent/SchemaValidationTypescriptPage.js +236 -0
  755. package/dist/node/components/docs/intent/SpecDrivenDevelopmentPage.js +197 -0
  756. package/dist/node/components/docs/intent/index.js +1594 -0
  757. package/dist/node/components/docs/intent/intent-pages.docblocks.js +201 -0
  758. package/dist/node/components/docs/knowledge/KnowledgeCategoriesPage.js +829 -0
  759. package/dist/node/components/docs/knowledge/KnowledgeExamplesPage.js +340 -0
  760. package/dist/node/components/docs/knowledge/KnowledgeOverviewPage.js +464 -0
  761. package/dist/node/components/docs/knowledge/KnowledgeSourcesPage.js +454 -0
  762. package/dist/node/components/docs/knowledge/KnowledgeSpacesPage.js +361 -0
  763. package/dist/node/components/docs/knowledge/index.js +2444 -0
  764. package/dist/node/components/docs/libraries/LibrariesAccessibilityPage.js +227 -0
  765. package/dist/node/components/docs/libraries/LibrariesAiAgentPage.js +168 -0
  766. package/dist/node/components/docs/libraries/LibrariesAnalyticsPage.js +96 -0
  767. package/dist/node/components/docs/libraries/LibrariesContentGenPage.js +119 -0
  768. package/dist/node/components/docs/libraries/LibrariesContractsPage.js +302 -0
  769. package/dist/node/components/docs/libraries/LibrariesCostTrackingPage.js +123 -0
  770. package/dist/node/components/docs/libraries/LibrariesDataBackendPage.js +183 -0
  771. package/dist/node/components/docs/libraries/LibrariesDataViewsPage.js +204 -0
  772. package/dist/node/components/docs/libraries/LibrariesDesignSystemPage.js +312 -0
  773. package/dist/node/components/docs/libraries/LibrariesEvolutionPage.js +164 -0
  774. package/dist/node/components/docs/libraries/LibrariesGraphQLPage.js +186 -0
  775. package/dist/node/components/docs/libraries/LibrariesGrowthPage.js +116 -0
  776. package/dist/node/components/docs/libraries/LibrariesMultiTenancyPage.js +118 -0
  777. package/dist/node/components/docs/libraries/LibrariesObservabilityPage.js +149 -0
  778. package/dist/node/components/docs/libraries/LibrariesOverlayEnginePage.js +135 -0
  779. package/dist/node/components/docs/libraries/LibrariesOverviewPage.js +483 -0
  780. package/dist/node/components/docs/libraries/LibrariesPersonalizationPage.js +129 -0
  781. package/dist/node/components/docs/libraries/LibrariesProgressiveDeliveryPage.js +151 -0
  782. package/dist/node/components/docs/libraries/LibrariesResiliencePage.js +138 -0
  783. package/dist/node/components/docs/libraries/LibrariesRuntimePage.js +239 -0
  784. package/dist/node/components/docs/libraries/LibrariesSLOPage.js +126 -0
  785. package/dist/node/components/docs/libraries/LibrariesSchemaPage.js +304 -0
  786. package/dist/node/components/docs/libraries/LibrariesSupportBotPage.js +144 -0
  787. package/dist/node/components/docs/libraries/LibrariesTestingPage.js +159 -0
  788. package/dist/node/components/docs/libraries/LibrariesUIKitPage.js +247 -0
  789. package/dist/node/components/docs/libraries/LibrariesWorkflowComposerPage.js +108 -0
  790. package/dist/node/components/docs/libraries/LibrariesWorkflowsPage.js +200 -0
  791. package/dist/node/components/docs/libraries/index.js +5004 -0
  792. package/dist/node/components/docs/manifesto/ManifestoPage.js +191 -0
  793. package/dist/node/components/docs/ops/AutoEvolutionOpsPage.js +141 -0
  794. package/dist/node/components/docs/ops/DistributedTracingOpsPage.js +73 -0
  795. package/dist/node/components/docs/ops/index.js +213 -0
  796. package/dist/node/components/docs/ops/ops-lifecycle.docblocks.js +151 -0
  797. package/dist/node/components/docs/ops/ops-runbooks-a.docblocks.js +123 -0
  798. package/dist/node/components/docs/ops/ops-runbooks-b.docblocks.js +134 -0
  799. package/dist/node/components/docs/ops/ops-slo-tenant.docblocks.js +146 -0
  800. package/dist/node/components/docs/ops/ops-top.docs.js +25 -0
  801. package/dist/node/components/docs/ops/ops.docs.js +580 -0
  802. package/dist/node/components/docs/product/product.docblocks.js +78 -0
  803. package/dist/node/components/docs/reference/DocsMarkdownContent.js +196 -0
  804. package/dist/node/components/docs/reference/DocsReferenceContent.js +257 -0
  805. package/dist/node/components/docs/reference/DocsReferenceIndexClient.js +128 -0
  806. package/dist/node/components/docs/reference/DocsReferenceIndexPage.js +207 -0
  807. package/dist/node/components/docs/reference/DocsReferencePage.js +266 -0
  808. package/dist/node/components/docs/reference/docsMarkdownParser.js +92 -0
  809. package/dist/node/components/docs/reference/index.js +472 -0
  810. package/dist/node/components/docs/safety/SafetyAuditingPage.js +380 -0
  811. package/dist/node/components/docs/safety/SafetyMigrationsPage.js +381 -0
  812. package/dist/node/components/docs/safety/SafetyOverviewPage.js +238 -0
  813. package/dist/node/components/docs/safety/SafetyPDPPage.js +318 -0
  814. package/dist/node/components/docs/safety/SafetySecurityTrustPage.js +206 -0
  815. package/dist/node/components/docs/safety/SafetySigningPage.js +92 -0
  816. package/dist/node/components/docs/safety/SafetyTenantIsolationPage.js +88 -0
  817. package/dist/node/components/docs/safety/index.js +1697 -0
  818. package/dist/node/components/docs/shared/StudioPrompt.js +31 -0
  819. package/dist/node/components/docs/specs/SpecsCapabilitiesPage.js +195 -0
  820. package/dist/node/components/docs/specs/SpecsDataViewsPage.js +299 -0
  821. package/dist/node/components/docs/specs/SpecsOverlaysPage.js +408 -0
  822. package/dist/node/components/docs/specs/SpecsOverviewPage.js +348 -0
  823. package/dist/node/components/docs/specs/SpecsPolicyPage.js +473 -0
  824. package/dist/node/components/docs/specs/SpecsWorkflowsPage.js +363 -0
  825. package/dist/node/components/docs/specs/index.js +2081 -0
  826. package/dist/node/components/docs/studio/StudioBYOKPage.js +80 -0
  827. package/dist/node/components/docs/studio/StudioDeploymentsPage.js +101 -0
  828. package/dist/node/components/docs/studio/StudioGettingStartedPage.js +94 -0
  829. package/dist/node/components/docs/studio/StudioIntegrationsPage.js +72 -0
  830. package/dist/node/components/docs/studio/StudioOverviewPage.js +74 -0
  831. package/dist/node/components/docs/studio/StudioVisualBuilderPage.js +121 -0
  832. package/dist/node/components/docs/studio/index.js +537 -0
  833. package/dist/node/components/docs/tech/contracts/tech-docs.docblocks.js +20 -0
  834. package/dist/node/components/integrations/index.js +601 -0
  835. package/dist/node/components/integrations/molecules/IntegrationCard.js +100 -0
  836. package/dist/node/components/integrations/organisms/IntegrationMarketplace.js +214 -0
  837. package/dist/node/components/integrations/organisms/IntegrationSettings.js +285 -0
  838. package/dist/node/components/integrations/organisms/KnowledgeSourceList.js +103 -0
  839. package/dist/node/components/legal/PrivacyTemplate.js +1025 -0
  840. package/dist/node/components/legal/TermsTemplate.js +941 -0
  841. package/dist/node/components/legal/index.js +1963 -0
  842. package/dist/node/components/shared/FeatureGateNotice.js +38 -0
  843. package/dist/node/components/shared/index.js +38 -0
  844. package/dist/node/components/shell/WorkspaceHeader.js +100 -0
  845. package/dist/node/components/shell/WorkspaceProjectShellLayout.js +222 -0
  846. package/dist/node/components/shell/WorkspaceSidebar.js +68 -0
  847. package/dist/node/components/shell/index.js +224 -0
  848. package/dist/node/components/templates/engine/index.js +39 -0
  849. package/dist/node/components/templates/index.js +1066 -0
  850. package/dist/node/components/templates/messaging/ConversationList.js +96 -0
  851. package/dist/node/components/templates/messaging/MessageComposer.js +168 -0
  852. package/dist/node/components/templates/messaging/MessageThread.js +96 -0
  853. package/dist/node/components/templates/messaging/MessagingWorkspace.js +296 -0
  854. package/dist/node/components/templates/messaging/index.js +300 -0
  855. package/dist/node/components/templates/messaging/types.js +0 -0
  856. package/dist/node/components/templates/recipes/LanguageSwitcher.js +16 -0
  857. package/dist/node/components/templates/recipes/RecipeCard.js +80 -0
  858. package/dist/node/components/templates/recipes/RecipeDetail.js +74 -0
  859. package/dist/node/components/templates/recipes/RecipeList.js +279 -0
  860. package/dist/node/components/templates/recipes/index.js +282 -0
  861. package/dist/node/components/templates/recipes/types.js +0 -0
  862. package/dist/node/components/templates/todos/FilterBar.js +107 -0
  863. package/dist/node/components/templates/todos/TaskForm.js +164 -0
  864. package/dist/node/components/templates/todos/TaskItem.js +77 -0
  865. package/dist/node/components/templates/todos/TaskList.js +485 -0
  866. package/dist/node/components/templates/todos/index.js +488 -0
  867. package/dist/node/components/templates/todos/types.js +0 -0
  868. package/dist/node/config/contractspec-blueprint.js +123 -0
  869. package/dist/node/config/contractspec-branding.js +44 -0
  870. package/dist/node/config/contractspec-routes.js +24 -0
  871. package/dist/node/config/index.js +126 -0
  872. package/dist/node/features/contracts-registry.js +174 -0
  873. package/dist/node/features/docs/docs.contracts.js +17 -0
  874. package/dist/node/features/docs/index.js +17 -0
  875. package/dist/node/features/docs.feature.js +33 -0
  876. package/dist/node/features/index.js +311 -0
  877. package/dist/node/features/mcp.feature.js +30 -0
  878. package/dist/node/features/presentations.feature.js +33 -0
  879. package/dist/node/features/registry.js +116 -0
  880. package/dist/node/index.js +32496 -0
  881. package/dist/node/infrastructure/elysia/index.js +35 -0
  882. package/dist/node/infrastructure/elysia/logger.js +35 -0
  883. package/dist/node/infrastructure/index.js +35 -0
  884. package/dist/node/libs/email/client.js +114 -0
  885. package/dist/node/libs/email/contact.js +182 -0
  886. package/dist/node/libs/email/newsletter.js +207 -0
  887. package/dist/node/libs/email/types.js +2 -0
  888. package/dist/node/libs/email/utils.js +8 -0
  889. package/dist/node/libs/email/waitlist-application.js +281 -0
  890. package/dist/node/libs/email/waitlist.js +217 -0
  891. package/dist/node/libs/email.js +542 -0
  892. package/dist/node/libs/posthog/client.js +63 -0
  893. package/dist/node/libs/posthog/native.js +23 -0
  894. package/dist/node/libs/posthog/server.js +13 -0
  895. package/dist/node/libs/pricing-examples.js +18 -0
  896. package/dist/node/presentation/features/atoms/FeatureIcon/FeatureIcon.js +97 -0
  897. package/dist/node/presentation/features/atoms/FeatureIcon/index.js +97 -0
  898. package/dist/node/presentation/features/atoms/index.js +97 -0
  899. package/dist/node/presentation/features/hooks/index.js +393 -0
  900. package/dist/node/presentation/features/hooks/useContractsRegistry.js +285 -0
  901. package/dist/node/presentation/features/hooks/useFeatureFilters.js +75 -0
  902. package/dist/node/presentation/features/hooks/useFeatureRegistry.js +147 -0
  903. package/dist/node/presentation/features/hooks/useRelatedDocs.js +28 -0
  904. package/dist/node/presentation/features/index.js +3059 -0
  905. package/dist/node/presentation/features/molecules/FeatureCard/FeatureCard.js +366 -0
  906. package/dist/node/presentation/features/molecules/FeatureCard/index.js +366 -0
  907. package/dist/node/presentation/features/molecules/FeatureCard/types.js +0 -0
  908. package/dist/node/presentation/features/molecules/FeatureCategoryHeader/FeatureCategoryHeader.js +50 -0
  909. package/dist/node/presentation/features/molecules/FeatureCategoryHeader/index.js +50 -0
  910. package/dist/node/presentation/features/molecules/FeatureFilters/FeatureFilters.js +92 -0
  911. package/dist/node/presentation/features/molecules/FeatureFilters/index.js +92 -0
  912. package/dist/node/presentation/features/molecules/FeatureFilters/types.js +0 -0
  913. package/dist/node/presentation/features/molecules/FeatureHoverPreview/FeatureHoverPreview.js +176 -0
  914. package/dist/node/presentation/features/molecules/FeatureHoverPreview/index.js +176 -0
  915. package/dist/node/presentation/features/molecules/index.js +505 -0
  916. package/dist/node/presentation/features/organisms/FeatureDataViewsList.js +300 -0
  917. package/dist/node/presentation/features/organisms/FeatureDetail/FeatureDetail.js +154 -0
  918. package/dist/node/presentation/features/organisms/FeatureDetail/index.js +154 -0
  919. package/dist/node/presentation/features/organisms/FeatureDetail/types.js +0 -0
  920. package/dist/node/presentation/features/organisms/FeatureDiscovery/FeatureDiscovery.js +909 -0
  921. package/dist/node/presentation/features/organisms/FeatureDiscovery/index.js +909 -0
  922. package/dist/node/presentation/features/organisms/FeatureDiscovery/types.js +0 -0
  923. package/dist/node/presentation/features/organisms/FeatureEventsList.js +298 -0
  924. package/dist/node/presentation/features/organisms/FeatureFormsList.js +298 -0
  925. package/dist/node/presentation/features/organisms/FeatureOperationsList.js +176 -0
  926. package/dist/node/presentation/features/organisms/FeaturePresentationsList.js +300 -0
  927. package/dist/node/presentation/features/organisms/index.js +1355 -0
  928. package/dist/node/presentation/features/templates/FeatureDataViewDetailTemplate/FeatureDataViewDetailTemplate.js +332 -0
  929. package/dist/node/presentation/features/templates/FeatureDataViewDetailTemplate/index.js +332 -0
  930. package/dist/node/presentation/features/templates/FeatureDataViewDetailTemplate/types.js +0 -0
  931. package/dist/node/presentation/features/templates/FeatureDataViewsTemplate/FeatureDataViewsTemplate.js +338 -0
  932. package/dist/node/presentation/features/templates/FeatureDataViewsTemplate/index.js +338 -0
  933. package/dist/node/presentation/features/templates/FeatureEventDetailTemplate/FeatureEventDetailTemplate.js +303 -0
  934. package/dist/node/presentation/features/templates/FeatureEventDetailTemplate/index.js +303 -0
  935. package/dist/node/presentation/features/templates/FeatureEventDetailTemplate/types.js +0 -0
  936. package/dist/node/presentation/features/templates/FeatureEventsTemplate/FeatureEventsTemplate.js +336 -0
  937. package/dist/node/presentation/features/templates/FeatureEventsTemplate/index.js +336 -0
  938. package/dist/node/presentation/features/templates/FeatureFormDetailTemplate/FeatureFormDetailTemplate.js +329 -0
  939. package/dist/node/presentation/features/templates/FeatureFormDetailTemplate/index.js +329 -0
  940. package/dist/node/presentation/features/templates/FeatureFormDetailTemplate/types.js +0 -0
  941. package/dist/node/presentation/features/templates/FeatureFormsTemplate/FeatureFormsTemplate.js +336 -0
  942. package/dist/node/presentation/features/templates/FeatureFormsTemplate/index.js +336 -0
  943. package/dist/node/presentation/features/templates/FeatureOperationDetailTemplate/FeatureOperationDetailTemplate.js +302 -0
  944. package/dist/node/presentation/features/templates/FeatureOperationDetailTemplate/index.js +302 -0
  945. package/dist/node/presentation/features/templates/FeatureOperationDetailTemplate/types.js +0 -0
  946. package/dist/node/presentation/features/templates/FeatureOperationsTemplate/FeatureOperationsTemplate.js +214 -0
  947. package/dist/node/presentation/features/templates/FeatureOperationsTemplate/index.js +214 -0
  948. package/dist/node/presentation/features/templates/FeatureOverviewTemplate/FeatureOverviewTemplate.js +187 -0
  949. package/dist/node/presentation/features/templates/FeatureOverviewTemplate/index.js +187 -0
  950. package/dist/node/presentation/features/templates/FeaturePresentationDetailTemplate/FeaturePresentationDetailTemplate.js +306 -0
  951. package/dist/node/presentation/features/templates/FeaturePresentationDetailTemplate/index.js +306 -0
  952. package/dist/node/presentation/features/templates/FeaturePresentationDetailTemplate/types.js +0 -0
  953. package/dist/node/presentation/features/templates/FeaturePresentationsTemplate/FeaturePresentationsTemplate.js +338 -0
  954. package/dist/node/presentation/features/templates/FeaturePresentationsTemplate/index.js +338 -0
  955. package/dist/node/presentation/features/templates/types.js +0 -0
  956. package/dist/presentation/features/atoms/FeatureIcon/FeatureIcon.d.ts +16 -28
  957. package/dist/presentation/features/atoms/FeatureIcon/FeatureIcon.d.ts.map +1 -1
  958. package/dist/presentation/features/atoms/FeatureIcon/FeatureIcon.js +89 -78
  959. package/dist/presentation/features/atoms/FeatureIcon/index.d.ts +2 -2
  960. package/dist/presentation/features/atoms/FeatureIcon/index.d.ts.map +1 -0
  961. package/dist/presentation/features/atoms/FeatureIcon/index.js +98 -3
  962. package/dist/presentation/features/atoms/index.d.ts +2 -3
  963. package/dist/presentation/features/atoms/index.d.ts.map +1 -0
  964. package/dist/presentation/features/atoms/index.js +98 -4
  965. package/dist/presentation/features/hooks/index.d.ts +4 -4
  966. package/dist/presentation/features/hooks/index.d.ts.map +1 -0
  967. package/dist/presentation/features/hooks/index.js +393 -4
  968. package/dist/presentation/features/hooks/useContractsRegistry.d.ts +10 -14
  969. package/dist/presentation/features/hooks/useContractsRegistry.d.ts.map +1 -1
  970. package/dist/presentation/features/hooks/useContractsRegistry.js +282 -19
  971. package/dist/presentation/features/hooks/useFeatureFilters.d.ts +24 -28
  972. package/dist/presentation/features/hooks/useFeatureFilters.d.ts.map +1 -1
  973. package/dist/presentation/features/hooks/useFeatureFilters.js +73 -74
  974. package/dist/presentation/features/hooks/useFeatureRegistry.d.ts +17 -21
  975. package/dist/presentation/features/hooks/useFeatureRegistry.d.ts.map +1 -1
  976. package/dist/presentation/features/hooks/useFeatureRegistry.js +144 -33
  977. package/dist/presentation/features/hooks/useRelatedDocs.d.ts +5 -8
  978. package/dist/presentation/features/hooks/useRelatedDocs.d.ts.map +1 -1
  979. package/dist/presentation/features/hooks/useRelatedDocs.js +25 -28
  980. package/dist/presentation/features/index.d.ts +27 -57
  981. package/dist/presentation/features/index.d.ts.map +1 -0
  982. package/dist/presentation/features/index.js +3060 -48
  983. package/dist/presentation/features/molecules/FeatureCard/FeatureCard.d.ts +2 -12
  984. package/dist/presentation/features/molecules/FeatureCard/FeatureCard.d.ts.map +1 -1
  985. package/dist/presentation/features/molecules/FeatureCard/FeatureCard.js +364 -80
  986. package/dist/presentation/features/molecules/FeatureCard/index.d.ts +3 -3
  987. package/dist/presentation/features/molecules/FeatureCard/index.d.ts.map +1 -0
  988. package/dist/presentation/features/molecules/FeatureCard/index.js +367 -3
  989. package/dist/presentation/features/molecules/FeatureCard/types.d.ts +8 -12
  990. package/dist/presentation/features/molecules/FeatureCard/types.d.ts.map +1 -1
  991. package/dist/presentation/features/molecules/FeatureCard/types.js +1 -0
  992. package/dist/presentation/features/molecules/FeatureCategoryHeader/FeatureCategoryHeader.d.ts +15 -27
  993. package/dist/presentation/features/molecules/FeatureCategoryHeader/FeatureCategoryHeader.d.ts.map +1 -1
  994. package/dist/presentation/features/molecules/FeatureCategoryHeader/FeatureCategoryHeader.js +48 -40
  995. package/dist/presentation/features/molecules/FeatureCategoryHeader/index.d.ts +2 -2
  996. package/dist/presentation/features/molecules/FeatureCategoryHeader/index.d.ts.map +1 -0
  997. package/dist/presentation/features/molecules/FeatureCategoryHeader/index.js +51 -3
  998. package/dist/presentation/features/molecules/FeatureFilters/FeatureFilters.d.ts +2 -18
  999. package/dist/presentation/features/molecules/FeatureFilters/FeatureFilters.d.ts.map +1 -1
  1000. package/dist/presentation/features/molecules/FeatureFilters/FeatureFilters.js +90 -77
  1001. package/dist/presentation/features/molecules/FeatureFilters/index.d.ts +3 -3
  1002. package/dist/presentation/features/molecules/FeatureFilters/index.d.ts.map +1 -0
  1003. package/dist/presentation/features/molecules/FeatureFilters/index.js +93 -3
  1004. package/dist/presentation/features/molecules/FeatureFilters/types.d.ts +20 -24
  1005. package/dist/presentation/features/molecules/FeatureFilters/types.d.ts.map +1 -1
  1006. package/dist/presentation/features/molecules/FeatureFilters/types.js +1 -0
  1007. package/dist/presentation/features/molecules/FeatureHoverPreview/FeatureHoverPreview.d.ts +5 -12
  1008. package/dist/presentation/features/molecules/FeatureHoverPreview/FeatureHoverPreview.d.ts.map +1 -1
  1009. package/dist/presentation/features/molecules/FeatureHoverPreview/FeatureHoverPreview.js +173 -136
  1010. package/dist/presentation/features/molecules/FeatureHoverPreview/index.d.ts +2 -2
  1011. package/dist/presentation/features/molecules/FeatureHoverPreview/index.d.ts.map +1 -0
  1012. package/dist/presentation/features/molecules/FeatureHoverPreview/index.js +177 -3
  1013. package/dist/presentation/features/molecules/index.d.ts +5 -11
  1014. package/dist/presentation/features/molecules/index.d.ts.map +1 -0
  1015. package/dist/presentation/features/molecules/index.js +506 -10
  1016. package/dist/presentation/features/organisms/FeatureDataViewsList.d.ts +4 -11
  1017. package/dist/presentation/features/organisms/FeatureDataViewsList.d.ts.map +1 -1
  1018. package/dist/presentation/features/organisms/FeatureDataViewsList.js +297 -25
  1019. package/dist/presentation/features/organisms/FeatureDetail/FeatureDetail.d.ts +2 -11
  1020. package/dist/presentation/features/organisms/FeatureDetail/FeatureDetail.d.ts.map +1 -1
  1021. package/dist/presentation/features/organisms/FeatureDetail/FeatureDetail.js +150 -138
  1022. package/dist/presentation/features/organisms/FeatureDetail/index.d.ts +3 -3
  1023. package/dist/presentation/features/organisms/FeatureDetail/index.d.ts.map +1 -0
  1024. package/dist/presentation/features/organisms/FeatureDetail/index.js +155 -3
  1025. package/dist/presentation/features/organisms/FeatureDetail/types.d.ts +6 -10
  1026. package/dist/presentation/features/organisms/FeatureDetail/types.d.ts.map +1 -1
  1027. package/dist/presentation/features/organisms/FeatureDetail/types.js +1 -0
  1028. package/dist/presentation/features/organisms/FeatureDiscovery/FeatureDiscovery.d.ts +2 -14
  1029. package/dist/presentation/features/organisms/FeatureDiscovery/FeatureDiscovery.d.ts.map +1 -1
  1030. package/dist/presentation/features/organisms/FeatureDiscovery/FeatureDiscovery.js +901 -154
  1031. package/dist/presentation/features/organisms/FeatureDiscovery/index.d.ts +3 -3
  1032. package/dist/presentation/features/organisms/FeatureDiscovery/index.d.ts.map +1 -0
  1033. package/dist/presentation/features/organisms/FeatureDiscovery/index.js +909 -2
  1034. package/dist/presentation/features/organisms/FeatureDiscovery/types.d.ts +14 -18
  1035. package/dist/presentation/features/organisms/FeatureDiscovery/types.d.ts.map +1 -1
  1036. package/dist/presentation/features/organisms/FeatureDiscovery/types.js +1 -0
  1037. package/dist/presentation/features/organisms/FeatureEventsList.d.ts +4 -11
  1038. package/dist/presentation/features/organisms/FeatureEventsList.d.ts.map +1 -1
  1039. package/dist/presentation/features/organisms/FeatureEventsList.js +295 -25
  1040. package/dist/presentation/features/organisms/FeatureFormsList.d.ts +4 -11
  1041. package/dist/presentation/features/organisms/FeatureFormsList.d.ts.map +1 -1
  1042. package/dist/presentation/features/organisms/FeatureFormsList.js +295 -25
  1043. package/dist/presentation/features/organisms/FeatureOperationsList.d.ts +4 -11
  1044. package/dist/presentation/features/organisms/FeatureOperationsList.d.ts.map +1 -1
  1045. package/dist/presentation/features/organisms/FeatureOperationsList.js +174 -25
  1046. package/dist/presentation/features/organisms/FeaturePresentationsList.d.ts +4 -11
  1047. package/dist/presentation/features/organisms/FeaturePresentationsList.d.ts.map +1 -1
  1048. package/dist/presentation/features/organisms/FeaturePresentationsList.js +297 -25
  1049. package/dist/presentation/features/organisms/index.d.ts +8 -12
  1050. package/dist/presentation/features/organisms/index.d.ts.map +1 -0
  1051. package/dist/presentation/features/organisms/index.js +1356 -11
  1052. package/dist/presentation/features/templates/FeatureDataViewDetailTemplate/FeatureDataViewDetailTemplate.d.ts +2 -13
  1053. package/dist/presentation/features/templates/FeatureDataViewDetailTemplate/FeatureDataViewDetailTemplate.d.ts.map +1 -1
  1054. package/dist/presentation/features/templates/FeatureDataViewDetailTemplate/FeatureDataViewDetailTemplate.js +329 -231
  1055. package/dist/presentation/features/templates/FeatureDataViewDetailTemplate/index.d.ts +3 -3
  1056. package/dist/presentation/features/templates/FeatureDataViewDetailTemplate/index.d.ts.map +1 -0
  1057. package/dist/presentation/features/templates/FeatureDataViewDetailTemplate/index.js +332 -2
  1058. package/dist/presentation/features/templates/FeatureDataViewDetailTemplate/types.d.ts +8 -12
  1059. package/dist/presentation/features/templates/FeatureDataViewDetailTemplate/types.d.ts.map +1 -1
  1060. package/dist/presentation/features/templates/FeatureDataViewDetailTemplate/types.js +1 -0
  1061. package/dist/presentation/features/templates/FeatureDataViewsTemplate/FeatureDataViewsTemplate.d.ts +2 -10
  1062. package/dist/presentation/features/templates/FeatureDataViewsTemplate/FeatureDataViewsTemplate.d.ts.map +1 -1
  1063. package/dist/presentation/features/templates/FeatureDataViewsTemplate/FeatureDataViewsTemplate.js +335 -30
  1064. package/dist/presentation/features/templates/FeatureDataViewsTemplate/index.d.ts +2 -2
  1065. package/dist/presentation/features/templates/FeatureDataViewsTemplate/index.d.ts.map +1 -0
  1066. package/dist/presentation/features/templates/FeatureDataViewsTemplate/index.js +338 -2
  1067. package/dist/presentation/features/templates/FeatureEventDetailTemplate/FeatureEventDetailTemplate.d.ts +2 -13
  1068. package/dist/presentation/features/templates/FeatureEventDetailTemplate/FeatureEventDetailTemplate.d.ts.map +1 -1
  1069. package/dist/presentation/features/templates/FeatureEventDetailTemplate/FeatureEventDetailTemplate.js +300 -210
  1070. package/dist/presentation/features/templates/FeatureEventDetailTemplate/index.d.ts +3 -3
  1071. package/dist/presentation/features/templates/FeatureEventDetailTemplate/index.d.ts.map +1 -0
  1072. package/dist/presentation/features/templates/FeatureEventDetailTemplate/index.js +303 -2
  1073. package/dist/presentation/features/templates/FeatureEventDetailTemplate/types.d.ts +8 -12
  1074. package/dist/presentation/features/templates/FeatureEventDetailTemplate/types.d.ts.map +1 -1
  1075. package/dist/presentation/features/templates/FeatureEventDetailTemplate/types.js +1 -0
  1076. package/dist/presentation/features/templates/FeatureEventsTemplate/FeatureEventsTemplate.d.ts +2 -10
  1077. package/dist/presentation/features/templates/FeatureEventsTemplate/FeatureEventsTemplate.d.ts.map +1 -1
  1078. package/dist/presentation/features/templates/FeatureEventsTemplate/FeatureEventsTemplate.js +333 -30
  1079. package/dist/presentation/features/templates/FeatureEventsTemplate/index.d.ts +2 -2
  1080. package/dist/presentation/features/templates/FeatureEventsTemplate/index.d.ts.map +1 -0
  1081. package/dist/presentation/features/templates/FeatureEventsTemplate/index.js +336 -2
  1082. package/dist/presentation/features/templates/FeatureFormDetailTemplate/FeatureFormDetailTemplate.d.ts +2 -13
  1083. package/dist/presentation/features/templates/FeatureFormDetailTemplate/FeatureFormDetailTemplate.d.ts.map +1 -1
  1084. package/dist/presentation/features/templates/FeatureFormDetailTemplate/FeatureFormDetailTemplate.js +326 -231
  1085. package/dist/presentation/features/templates/FeatureFormDetailTemplate/index.d.ts +3 -3
  1086. package/dist/presentation/features/templates/FeatureFormDetailTemplate/index.d.ts.map +1 -0
  1087. package/dist/presentation/features/templates/FeatureFormDetailTemplate/index.js +329 -2
  1088. package/dist/presentation/features/templates/FeatureFormDetailTemplate/types.d.ts +8 -12
  1089. package/dist/presentation/features/templates/FeatureFormDetailTemplate/types.d.ts.map +1 -1
  1090. package/dist/presentation/features/templates/FeatureFormDetailTemplate/types.js +1 -0
  1091. package/dist/presentation/features/templates/FeatureFormsTemplate/FeatureFormsTemplate.d.ts +2 -10
  1092. package/dist/presentation/features/templates/FeatureFormsTemplate/FeatureFormsTemplate.d.ts.map +1 -1
  1093. package/dist/presentation/features/templates/FeatureFormsTemplate/FeatureFormsTemplate.js +333 -30
  1094. package/dist/presentation/features/templates/FeatureFormsTemplate/index.d.ts +2 -2
  1095. package/dist/presentation/features/templates/FeatureFormsTemplate/index.d.ts.map +1 -0
  1096. package/dist/presentation/features/templates/FeatureFormsTemplate/index.js +336 -2
  1097. package/dist/presentation/features/templates/FeatureOperationDetailTemplate/FeatureOperationDetailTemplate.d.ts +2 -13
  1098. package/dist/presentation/features/templates/FeatureOperationDetailTemplate/FeatureOperationDetailTemplate.d.ts.map +1 -1
  1099. package/dist/presentation/features/templates/FeatureOperationDetailTemplate/FeatureOperationDetailTemplate.js +300 -205
  1100. package/dist/presentation/features/templates/FeatureOperationDetailTemplate/index.d.ts +3 -3
  1101. package/dist/presentation/features/templates/FeatureOperationDetailTemplate/index.d.ts.map +1 -0
  1102. package/dist/presentation/features/templates/FeatureOperationDetailTemplate/index.js +302 -2
  1103. package/dist/presentation/features/templates/FeatureOperationDetailTemplate/types.d.ts +8 -12
  1104. package/dist/presentation/features/templates/FeatureOperationDetailTemplate/types.d.ts.map +1 -1
  1105. package/dist/presentation/features/templates/FeatureOperationDetailTemplate/types.js +1 -0
  1106. package/dist/presentation/features/templates/FeatureOperationsTemplate/FeatureOperationsTemplate.d.ts +2 -10
  1107. package/dist/presentation/features/templates/FeatureOperationsTemplate/FeatureOperationsTemplate.d.ts.map +1 -1
  1108. package/dist/presentation/features/templates/FeatureOperationsTemplate/FeatureOperationsTemplate.js +212 -31
  1109. package/dist/presentation/features/templates/FeatureOperationsTemplate/index.d.ts +2 -2
  1110. package/dist/presentation/features/templates/FeatureOperationsTemplate/index.d.ts.map +1 -0
  1111. package/dist/presentation/features/templates/FeatureOperationsTemplate/index.js +214 -2
  1112. package/dist/presentation/features/templates/FeatureOverviewTemplate/FeatureOverviewTemplate.d.ts +5 -13
  1113. package/dist/presentation/features/templates/FeatureOverviewTemplate/FeatureOverviewTemplate.d.ts.map +1 -1
  1114. package/dist/presentation/features/templates/FeatureOverviewTemplate/FeatureOverviewTemplate.js +186 -26
  1115. package/dist/presentation/features/templates/FeatureOverviewTemplate/index.d.ts +2 -2
  1116. package/dist/presentation/features/templates/FeatureOverviewTemplate/index.d.ts.map +1 -0
  1117. package/dist/presentation/features/templates/FeatureOverviewTemplate/index.js +188 -3
  1118. package/dist/presentation/features/templates/FeaturePresentationDetailTemplate/FeaturePresentationDetailTemplate.d.ts +2 -13
  1119. package/dist/presentation/features/templates/FeaturePresentationDetailTemplate/FeaturePresentationDetailTemplate.d.ts.map +1 -1
  1120. package/dist/presentation/features/templates/FeaturePresentationDetailTemplate/FeaturePresentationDetailTemplate.js +303 -210
  1121. package/dist/presentation/features/templates/FeaturePresentationDetailTemplate/index.d.ts +3 -3
  1122. package/dist/presentation/features/templates/FeaturePresentationDetailTemplate/index.d.ts.map +1 -0
  1123. package/dist/presentation/features/templates/FeaturePresentationDetailTemplate/index.js +306 -2
  1124. package/dist/presentation/features/templates/FeaturePresentationDetailTemplate/types.d.ts +9 -13
  1125. package/dist/presentation/features/templates/FeaturePresentationDetailTemplate/types.d.ts.map +1 -1
  1126. package/dist/presentation/features/templates/FeaturePresentationDetailTemplate/types.js +1 -0
  1127. package/dist/presentation/features/templates/FeaturePresentationsTemplate/FeaturePresentationsTemplate.d.ts +2 -10
  1128. package/dist/presentation/features/templates/FeaturePresentationsTemplate/FeaturePresentationsTemplate.d.ts.map +1 -1
  1129. package/dist/presentation/features/templates/FeaturePresentationsTemplate/FeaturePresentationsTemplate.js +335 -30
  1130. package/dist/presentation/features/templates/FeaturePresentationsTemplate/index.d.ts +2 -2
  1131. package/dist/presentation/features/templates/FeaturePresentationsTemplate/index.d.ts.map +1 -0
  1132. package/dist/presentation/features/templates/FeaturePresentationsTemplate/index.js +338 -2
  1133. package/dist/presentation/features/templates/types.d.ts +4 -8
  1134. package/dist/presentation/features/templates/types.d.ts.map +1 -1
  1135. package/dist/presentation/features/templates/types.js +1 -0
  1136. package/package.json +2113 -309
  1137. package/src/components/docs/generated/docs-index._common.json +18 -18
  1138. package/src/components/docs/generated/docs-index.agent-console.json +47 -47
  1139. package/src/components/docs/generated/docs-index.ai-chat.json +13 -13
  1140. package/src/components/docs/generated/docs-index.analytics-dashboard.json +21 -21
  1141. package/src/components/docs/generated/docs-index.app-config.json +17 -17
  1142. package/src/components/docs/generated/docs-index.audit-trail.json +6 -6
  1143. package/src/components/docs/generated/docs-index.crm-pipeline.json +20 -20
  1144. package/src/components/docs/generated/docs-index.feature-flags.json +27 -27
  1145. package/src/components/docs/generated/docs-index.files.json +22 -22
  1146. package/src/components/docs/generated/docs-index.identity-rbac.json +39 -39
  1147. package/src/components/docs/generated/docs-index.integration-hub.json +33 -33
  1148. package/src/components/docs/generated/docs-index.jobs.json +17 -17
  1149. package/src/components/docs/generated/docs-index.kb-update-pipeline.json +16 -16
  1150. package/src/components/docs/generated/docs-index.learning-journey-crm-onboarding.json +6 -6
  1151. package/src/components/docs/generated/docs-index.learning-journey-platform-tour.json +6 -6
  1152. package/src/components/docs/generated/docs-index.learning-journey-registry.json +4 -4
  1153. package/src/components/docs/generated/docs-index.learning-journey-studio-onboarding.json +6 -6
  1154. package/src/components/docs/generated/docs-index.learning-journey.json +27 -27
  1155. package/src/components/docs/generated/docs-index.locale-jurisdiction-gate.json +6 -6
  1156. package/src/components/docs/generated/docs-index.manifest.json +8 -3
  1157. package/src/components/docs/generated/docs-index.marketplace.json +42 -42
  1158. package/src/components/docs/generated/docs-index.meeting-recorder.json +50 -0
  1159. package/src/components/docs/generated/docs-index.metrics.json +24 -24
  1160. package/src/components/docs/generated/docs-index.notifications.json +8 -8
  1161. package/src/components/docs/generated/docs-index.openbanking.json +8 -8
  1162. package/src/components/docs/generated/docs-index.platform-integrations.json +113 -17
  1163. package/src/components/docs/generated/docs-index.platform-knowledge.json +7 -7
  1164. package/src/components/docs/generated/docs-index.pocket-family-office.json +15 -15
  1165. package/src/components/docs/generated/docs-index.policy-safe-knowledge-assistant.json +1 -1
  1166. package/src/components/docs/generated/docs-index.saas-boilerplate.json +26 -26
  1167. package/src/components/docs/generated/docs-index.service-business-os.json +24 -24
  1168. package/src/components/docs/generated/docs-index.team-hub.json +23 -23
  1169. package/src/components/docs/generated/docs-index.versioned-knowledge-base.json +10 -10
  1170. package/src/components/docs/generated/docs-index.wealth-snapshot.json +19 -19
  1171. package/src/components/docs/generated/docs-index.workflow-system.json +54 -54
  1172. package/src/components/docs/generated/docs-index.workspace-cli.json +1 -1
  1173. package/tsdown.config.js +1 -2
  1174. package/.turbo/turbo-build$colon$bundle.log +0 -1052
  1175. package/dist/application/mcp/cliMcp.js.map +0 -1
  1176. package/dist/application/mcp/common.js.map +0 -1
  1177. package/dist/application/mcp/docsMcp.js.map +0 -1
  1178. package/dist/application/mcp/internalMcp.js.map +0 -1
  1179. package/dist/components/docs/DocsIndexPage.js.map +0 -1
  1180. package/dist/components/docs/advanced/AdvancedMCPPage.js.map +0 -1
  1181. package/dist/components/docs/advanced/AdvancedOverlayEditorPage.js.map +0 -1
  1182. package/dist/components/docs/advanced/AdvancedRenderersPage.js.map +0 -1
  1183. package/dist/components/docs/advanced/AdvancedSpecExperimentsPage.js.map +0 -1
  1184. package/dist/components/docs/advanced/AdvancedTelemetryPage.js.map +0 -1
  1185. package/dist/components/docs/advanced/AdvancedWorkflowMonitoringPage.js.map +0 -1
  1186. package/dist/components/docs/architecture/ArchitectureAppConfigPage.js.map +0 -1
  1187. package/dist/components/docs/architecture/ArchitectureIntegrationBindingPage.js.map +0 -1
  1188. package/dist/components/docs/architecture/ArchitectureKnowledgeBindingPage.js.map +0 -1
  1189. package/dist/components/docs/architecture/ArchitectureMultiTenancyPage.js.map +0 -1
  1190. package/dist/components/docs/architecture/ArchitectureOverviewPage.js.map +0 -1
  1191. package/dist/components/docs/comparison/ComparisonAutomationPlatformsPage.js.map +0 -1
  1192. package/dist/components/docs/comparison/ComparisonEnterprisePlatformsPage.js.map +0 -1
  1193. package/dist/components/docs/comparison/ComparisonInternalToolBuildersPage.js.map +0 -1
  1194. package/dist/components/docs/comparison/ComparisonOverviewPage.js.map +0 -1
  1195. package/dist/components/docs/comparison/ComparisonWindmillPage.js.map +0 -1
  1196. package/dist/components/docs/comparison/ComparisonWorkflowEnginesPage.js.map +0 -1
  1197. package/dist/components/docs/ecosystem/IntegrationsPage.js.map +0 -1
  1198. package/dist/components/docs/ecosystem/PluginsPage.js.map +0 -1
  1199. package/dist/components/docs/ecosystem/RegistryPage.js.map +0 -1
  1200. package/dist/components/docs/ecosystem/TemplatesPage.js.map +0 -1
  1201. package/dist/components/docs/ecosystem/ecosystem.docblocks.js.map +0 -1
  1202. package/dist/components/docs/examples/DocsExamplesPage.js.map +0 -1
  1203. package/dist/components/docs/generated/docs-index.generated.js.map +0 -1
  1204. package/dist/components/docs/generated/loader.js.map +0 -1
  1205. package/dist/components/docs/getting-started/CLIPage.js.map +0 -1
  1206. package/dist/components/docs/getting-started/CompatibilityPage.js.map +0 -1
  1207. package/dist/components/docs/getting-started/DataViewTutorialPage.js.map +0 -1
  1208. package/dist/components/docs/getting-started/DeveloperToolsPage.js.map +0 -1
  1209. package/dist/components/docs/getting-started/HelloWorldPage.js.map +0 -1
  1210. package/dist/components/docs/getting-started/InstallationPage.js.map +0 -1
  1211. package/dist/components/docs/getting-started/StartHerePage.js.map +0 -1
  1212. package/dist/components/docs/getting-started/TroubleshootingPage.js.map +0 -1
  1213. package/dist/components/docs/getting-started/VSCodeExtensionPage.js.map +0 -1
  1214. package/dist/components/docs/getting-started/getting-started.docblocks.js.map +0 -1
  1215. package/dist/components/docs/guides/GuideCIDiffGatingPage.js.map +0 -1
  1216. package/dist/components/docs/guides/GuideContractTypesPage.js.map +0 -1
  1217. package/dist/components/docs/guides/GuideDocsPipelinePage.js.map +0 -1
  1218. package/dist/components/docs/guides/GuideGenerateDocsClientsSchemasPage.js.map +0 -1
  1219. package/dist/components/docs/guides/GuideImportExistingCodebasesPage.js.map +0 -1
  1220. package/dist/components/docs/guides/GuideNextjsOneEndpointPage.js.map +0 -1
  1221. package/dist/components/docs/guides/GuideSpecValidationTypingPage.js.map +0 -1
  1222. package/dist/components/docs/guides/GuidesIndexPage.js.map +0 -1
  1223. package/dist/components/docs/guides/guides.docblocks.js.map +0 -1
  1224. package/dist/components/docs/integrations/IntegrationsCircuitBreakersPage.js.map +0 -1
  1225. package/dist/components/docs/integrations/IntegrationsElevenLabsPage.js.map +0 -1
  1226. package/dist/components/docs/integrations/IntegrationsGmailPage.js.map +0 -1
  1227. package/dist/components/docs/integrations/IntegrationsGoogleCalendarPage.js.map +0 -1
  1228. package/dist/components/docs/integrations/IntegrationsOpenAIPage.js.map +0 -1
  1229. package/dist/components/docs/integrations/IntegrationsOverviewPage.js.map +0 -1
  1230. package/dist/components/docs/integrations/IntegrationsPostmarkPage.js.map +0 -1
  1231. package/dist/components/docs/integrations/IntegrationsPowensPage.js.map +0 -1
  1232. package/dist/components/docs/integrations/IntegrationsQdrantPage.js.map +0 -1
  1233. package/dist/components/docs/integrations/IntegrationsResendPage.js.map +0 -1
  1234. package/dist/components/docs/integrations/IntegrationsS3Page.js.map +0 -1
  1235. package/dist/components/docs/integrations/IntegrationsSpecModelPage.js.map +0 -1
  1236. package/dist/components/docs/integrations/IntegrationsStripePage.js.map +0 -1
  1237. package/dist/components/docs/integrations/IntegrationsTwilioPage.js.map +0 -1
  1238. package/dist/components/docs/intent/ContractFirstApiPage.js.map +0 -1
  1239. package/dist/components/docs/intent/DeterministicCodegenPage.js.map +0 -1
  1240. package/dist/components/docs/intent/GenerateClientFromSchemaPage.js.map +0 -1
  1241. package/dist/components/docs/intent/OpenapiAlternativePage.js.map +0 -1
  1242. package/dist/components/docs/intent/SchemaValidationTypescriptPage.js.map +0 -1
  1243. package/dist/components/docs/intent/SpecDrivenDevelopmentPage.js.map +0 -1
  1244. package/dist/components/docs/intent/intent-pages.docblocks.js.map +0 -1
  1245. package/dist/components/docs/knowledge/KnowledgeCategoriesPage.js.map +0 -1
  1246. package/dist/components/docs/knowledge/KnowledgeExamplesPage.js.map +0 -1
  1247. package/dist/components/docs/knowledge/KnowledgeOverviewPage.js.map +0 -1
  1248. package/dist/components/docs/knowledge/KnowledgeSourcesPage.js.map +0 -1
  1249. package/dist/components/docs/knowledge/KnowledgeSpacesPage.js.map +0 -1
  1250. package/dist/components/docs/libraries/LibrariesAccessibilityPage.js.map +0 -1
  1251. package/dist/components/docs/libraries/LibrariesAiAgentPage.js.map +0 -1
  1252. package/dist/components/docs/libraries/LibrariesAnalyticsPage.js.map +0 -1
  1253. package/dist/components/docs/libraries/LibrariesContentGenPage.js.map +0 -1
  1254. package/dist/components/docs/libraries/LibrariesContractsPage.js.map +0 -1
  1255. package/dist/components/docs/libraries/LibrariesCostTrackingPage.js.map +0 -1
  1256. package/dist/components/docs/libraries/LibrariesDataBackendPage.js.map +0 -1
  1257. package/dist/components/docs/libraries/LibrariesDataViewsPage.js.map +0 -1
  1258. package/dist/components/docs/libraries/LibrariesDesignSystemPage.js.map +0 -1
  1259. package/dist/components/docs/libraries/LibrariesEvolutionPage.js.map +0 -1
  1260. package/dist/components/docs/libraries/LibrariesGraphQLPage.js.map +0 -1
  1261. package/dist/components/docs/libraries/LibrariesGrowthPage.js.map +0 -1
  1262. package/dist/components/docs/libraries/LibrariesMultiTenancyPage.js.map +0 -1
  1263. package/dist/components/docs/libraries/LibrariesObservabilityPage.js.map +0 -1
  1264. package/dist/components/docs/libraries/LibrariesOverlayEnginePage.js.map +0 -1
  1265. package/dist/components/docs/libraries/LibrariesOverviewPage.js.map +0 -1
  1266. package/dist/components/docs/libraries/LibrariesPersonalizationPage.js.map +0 -1
  1267. package/dist/components/docs/libraries/LibrariesProgressiveDeliveryPage.js.map +0 -1
  1268. package/dist/components/docs/libraries/LibrariesResiliencePage.js.map +0 -1
  1269. package/dist/components/docs/libraries/LibrariesRuntimePage.js.map +0 -1
  1270. package/dist/components/docs/libraries/LibrariesSLOPage.js.map +0 -1
  1271. package/dist/components/docs/libraries/LibrariesSchemaPage.js.map +0 -1
  1272. package/dist/components/docs/libraries/LibrariesSupportBotPage.js.map +0 -1
  1273. package/dist/components/docs/libraries/LibrariesTestingPage.js.map +0 -1
  1274. package/dist/components/docs/libraries/LibrariesUIKitPage.js.map +0 -1
  1275. package/dist/components/docs/libraries/LibrariesWorkflowComposerPage.js.map +0 -1
  1276. package/dist/components/docs/libraries/LibrariesWorkflowsPage.js.map +0 -1
  1277. package/dist/components/docs/manifesto/ManifestoPage.js.map +0 -1
  1278. package/dist/components/docs/ops/AutoEvolutionOpsPage.js.map +0 -1
  1279. package/dist/components/docs/ops/DistributedTracingOpsPage.js.map +0 -1
  1280. package/dist/components/docs/ops/ops-lifecycle.docblocks.js.map +0 -1
  1281. package/dist/components/docs/ops/ops-runbooks-a.docblocks.js.map +0 -1
  1282. package/dist/components/docs/ops/ops-runbooks-b.docblocks.js.map +0 -1
  1283. package/dist/components/docs/ops/ops-slo-tenant.docblocks.js.map +0 -1
  1284. package/dist/components/docs/ops/ops-top.docs.js.map +0 -1
  1285. package/dist/components/docs/ops/ops.docs.js.map +0 -1
  1286. package/dist/components/docs/product/product.docblocks.js.map +0 -1
  1287. package/dist/components/docs/reference/DocsMarkdownContent.js.map +0 -1
  1288. package/dist/components/docs/reference/DocsReferenceContent.js.map +0 -1
  1289. package/dist/components/docs/reference/DocsReferenceIndexClient.js.map +0 -1
  1290. package/dist/components/docs/reference/DocsReferenceIndexPage.js.map +0 -1
  1291. package/dist/components/docs/reference/DocsReferencePage.js.map +0 -1
  1292. package/dist/components/docs/reference/docsMarkdownParser.js.map +0 -1
  1293. package/dist/components/docs/safety/SafetyAuditingPage.js.map +0 -1
  1294. package/dist/components/docs/safety/SafetyMigrationsPage.js.map +0 -1
  1295. package/dist/components/docs/safety/SafetyOverviewPage.js.map +0 -1
  1296. package/dist/components/docs/safety/SafetyPDPPage.js.map +0 -1
  1297. package/dist/components/docs/safety/SafetySecurityTrustPage.js.map +0 -1
  1298. package/dist/components/docs/safety/SafetySigningPage.js.map +0 -1
  1299. package/dist/components/docs/safety/SafetyTenantIsolationPage.js.map +0 -1
  1300. package/dist/components/docs/shared/StudioPrompt.js.map +0 -1
  1301. package/dist/components/docs/specs/SpecsCapabilitiesPage.js.map +0 -1
  1302. package/dist/components/docs/specs/SpecsDataViewsPage.js.map +0 -1
  1303. package/dist/components/docs/specs/SpecsOverlaysPage.js.map +0 -1
  1304. package/dist/components/docs/specs/SpecsOverviewPage.js.map +0 -1
  1305. package/dist/components/docs/specs/SpecsPolicyPage.js.map +0 -1
  1306. package/dist/components/docs/specs/SpecsWorkflowsPage.js.map +0 -1
  1307. package/dist/components/docs/studio/StudioBYOKPage.js.map +0 -1
  1308. package/dist/components/docs/studio/StudioDeploymentsPage.js.map +0 -1
  1309. package/dist/components/docs/studio/StudioGettingStartedPage.js.map +0 -1
  1310. package/dist/components/docs/studio/StudioIntegrationsPage.js.map +0 -1
  1311. package/dist/components/docs/studio/StudioOverviewPage.js.map +0 -1
  1312. package/dist/components/docs/studio/StudioVisualBuilderPage.js.map +0 -1
  1313. package/dist/components/docs/tech/contracts/tech-docs.docblocks.js.map +0 -1
  1314. package/dist/components/integrations/molecules/IntegrationCard.js.map +0 -1
  1315. package/dist/components/integrations/organisms/IntegrationMarketplace.js.map +0 -1
  1316. package/dist/components/integrations/organisms/IntegrationSettings.js.map +0 -1
  1317. package/dist/components/integrations/organisms/KnowledgeSourceList.js.map +0 -1
  1318. package/dist/components/legal/PrivacyTemplate.js.map +0 -1
  1319. package/dist/components/legal/TermsTemplate.js.map +0 -1
  1320. package/dist/components/shared/FeatureGateNotice.js.map +0 -1
  1321. package/dist/components/shell/WorkspaceHeader.js.map +0 -1
  1322. package/dist/components/shell/WorkspaceProjectShellLayout.js.map +0 -1
  1323. package/dist/components/shell/WorkspaceSidebar.js.map +0 -1
  1324. package/dist/components/templates/engine/index.js.map +0 -1
  1325. package/dist/components/templates/messaging/ConversationList.js.map +0 -1
  1326. package/dist/components/templates/messaging/MessageComposer.js.map +0 -1
  1327. package/dist/components/templates/messaging/MessageThread.js.map +0 -1
  1328. package/dist/components/templates/messaging/MessagingWorkspace.js.map +0 -1
  1329. package/dist/components/templates/recipes/LanguageSwitcher.js.map +0 -1
  1330. package/dist/components/templates/recipes/RecipeCard.js.map +0 -1
  1331. package/dist/components/templates/recipes/RecipeDetail.js.map +0 -1
  1332. package/dist/components/templates/recipes/RecipeList.js.map +0 -1
  1333. package/dist/components/templates/todos/FilterBar.js.map +0 -1
  1334. package/dist/components/templates/todos/TaskForm.js.map +0 -1
  1335. package/dist/components/templates/todos/TaskItem.js.map +0 -1
  1336. package/dist/components/templates/todos/TaskList.js.map +0 -1
  1337. package/dist/config/contractspec-blueprint.js.map +0 -1
  1338. package/dist/config/contractspec-branding.js.map +0 -1
  1339. package/dist/config/contractspec-routes.js.map +0 -1
  1340. package/dist/features/contracts-registry.js.map +0 -1
  1341. package/dist/features/docs.feature.js.map +0 -1
  1342. package/dist/features/mcp.feature.js.map +0 -1
  1343. package/dist/features/presentations.feature.js.map +0 -1
  1344. package/dist/features/registry.js.map +0 -1
  1345. package/dist/infrastructure/elysia/logger.js.map +0 -1
  1346. package/dist/libs/content-gen/dist/seo/optimizer.js +0 -49
  1347. package/dist/libs/content-gen/dist/seo/optimizer.js.map +0 -1
  1348. package/dist/libs/email/client.js.map +0 -1
  1349. package/dist/libs/email/contact.js.map +0 -1
  1350. package/dist/libs/email/newsletter.js.map +0 -1
  1351. package/dist/libs/email/utils.js.map +0 -1
  1352. package/dist/libs/email/waitlist-application.js.map +0 -1
  1353. package/dist/libs/email/waitlist.js.map +0 -1
  1354. package/dist/libs/posthog/client.js.map +0 -1
  1355. package/dist/libs/posthog/native.js.map +0 -1
  1356. package/dist/libs/posthog/server.js.map +0 -1
  1357. package/dist/libs/pricing-examples.js.map +0 -1
  1358. package/dist/presentation/features/atoms/FeatureIcon/FeatureIcon.js.map +0 -1
  1359. package/dist/presentation/features/hooks/useContractsRegistry.js.map +0 -1
  1360. package/dist/presentation/features/hooks/useFeatureFilters.js.map +0 -1
  1361. package/dist/presentation/features/hooks/useFeatureRegistry.js.map +0 -1
  1362. package/dist/presentation/features/hooks/useRelatedDocs.js.map +0 -1
  1363. package/dist/presentation/features/molecules/FeatureCard/FeatureCard.js.map +0 -1
  1364. package/dist/presentation/features/molecules/FeatureCategoryHeader/FeatureCategoryHeader.js.map +0 -1
  1365. package/dist/presentation/features/molecules/FeatureFilters/FeatureFilters.js.map +0 -1
  1366. package/dist/presentation/features/molecules/FeatureHoverPreview/FeatureHoverPreview.js.map +0 -1
  1367. package/dist/presentation/features/organisms/FeatureDataViewsList.js.map +0 -1
  1368. package/dist/presentation/features/organisms/FeatureDetail/FeatureDetail.js.map +0 -1
  1369. package/dist/presentation/features/organisms/FeatureDiscovery/FeatureDiscovery.js.map +0 -1
  1370. package/dist/presentation/features/organisms/FeatureEventsList.js.map +0 -1
  1371. package/dist/presentation/features/organisms/FeatureFormsList.js.map +0 -1
  1372. package/dist/presentation/features/organisms/FeatureOperationsList.js.map +0 -1
  1373. package/dist/presentation/features/organisms/FeaturePresentationsList.js.map +0 -1
  1374. package/dist/presentation/features/templates/FeatureDataViewDetailTemplate/FeatureDataViewDetailTemplate.js.map +0 -1
  1375. package/dist/presentation/features/templates/FeatureDataViewsTemplate/FeatureDataViewsTemplate.js.map +0 -1
  1376. package/dist/presentation/features/templates/FeatureEventDetailTemplate/FeatureEventDetailTemplate.js.map +0 -1
  1377. package/dist/presentation/features/templates/FeatureEventsTemplate/FeatureEventsTemplate.js.map +0 -1
  1378. package/dist/presentation/features/templates/FeatureFormDetailTemplate/FeatureFormDetailTemplate.js.map +0 -1
  1379. package/dist/presentation/features/templates/FeatureFormsTemplate/FeatureFormsTemplate.js.map +0 -1
  1380. package/dist/presentation/features/templates/FeatureOperationDetailTemplate/FeatureOperationDetailTemplate.js.map +0 -1
  1381. package/dist/presentation/features/templates/FeatureOperationsTemplate/FeatureOperationsTemplate.js.map +0 -1
  1382. package/dist/presentation/features/templates/FeatureOverviewTemplate/FeatureOverviewTemplate.js.map +0 -1
  1383. package/dist/presentation/features/templates/FeaturePresentationDetailTemplate/FeaturePresentationDetailTemplate.js.map +0 -1
  1384. package/dist/presentation/features/templates/FeaturePresentationsTemplate/FeaturePresentationsTemplate.js.map +0 -1
  1385. package/tsconfig.tsbuildinfo +0 -1
@@ -1 +0,0 @@
1
- {"version":3,"file":"FilterBar.js","names":[],"sources":["../../../../src/components/templates/todos/FilterBar.tsx"],"sourcesContent":["import { type TaskPriority, type TaskCategory } from './types';\n\nexport interface FilterState {\n status: 'all' | 'active' | 'completed';\n priority: TaskPriority | 'all';\n categoryId: string | 'all';\n search: string;\n}\n\nexport interface FilterBarProps {\n value: FilterState;\n onChange: (next: FilterState) => void;\n categories: TaskCategory[];\n}\n\nexport function FilterBar({ value, onChange, categories }: FilterBarProps) {\n const handleChange = <\n TKey extends keyof FilterState,\n TValue extends FilterState[TKey],\n >(\n key: TKey,\n nextValue: TValue\n ) => {\n onChange({ ...value, [key]: nextValue });\n };\n\n return (\n <div className=\"border-border bg-card grid gap-3 rounded-2xl border p-4 md:grid-cols-4\">\n <label className=\"text-muted-foreground flex flex-col text-xs tracking-wide uppercase\">\n Status\n <select\n className=\"border-border bg-background text-foreground mt-1 rounded-md border px-3 py-2 text-sm\"\n value={value.status}\n onChange={(event) =>\n handleChange('status', event.target.value as FilterState['status'])\n }\n >\n <option value=\"all\">All tasks</option>\n <option value=\"active\">Active</option>\n <option value=\"completed\">Completed</option>\n </select>\n </label>\n\n <label className=\"text-muted-foreground flex flex-col text-xs tracking-wide uppercase\">\n Priority\n <select\n className=\"border-border bg-background text-foreground mt-1 rounded-md border px-3 py-2 text-sm\"\n value={value.priority}\n onChange={(event) =>\n handleChange(\n 'priority',\n event.target.value as FilterState['priority']\n )\n }\n >\n <option value=\"all\">All</option>\n <option value=\"LOW\">Low</option>\n <option value=\"MEDIUM\">Medium</option>\n <option value=\"HIGH\">High</option>\n <option value=\"URGENT\">Urgent</option>\n </select>\n </label>\n\n <label className=\"text-muted-foreground flex flex-col text-xs tracking-wide uppercase\">\n Category\n <select\n className=\"border-border bg-background text-foreground mt-1 rounded-md border px-3 py-2 text-sm\"\n value={value.categoryId}\n onChange={(event) =>\n handleChange(\n 'categoryId',\n event.target.value as FilterState['categoryId']\n )\n }\n >\n <option value=\"all\">All categories</option>\n {categories.map((category) => (\n <option key={category.id} value={category.id}>\n {category.name}\n </option>\n ))}\n </select>\n </label>\n\n <label className=\"text-muted-foreground flex flex-col text-xs tracking-wide uppercase\">\n Search\n <input\n type=\"search\"\n className=\"border-border bg-background text-foreground mt-1 rounded-md border px-3 py-2 text-sm\"\n placeholder=\"Search by title\"\n value={value.search}\n onChange={(event) => handleChange('search', event.target.value)}\n />\n </label>\n </div>\n );\n}\n"],"mappings":";;;AAeA,SAAgB,UAAU,EAAE,OAAO,UAAU,cAA8B;CACzE,MAAM,gBAIJ,KACA,cACG;AACH,WAAS;GAAE,GAAG;IAAQ,MAAM;GAAW,CAAC;;AAG1C,QACE,qBAAC;EAAI,WAAU;;GACb,qBAAC;IAAM,WAAU;eAAsE,UAErF,qBAAC;KACC,WAAU;KACV,OAAO,MAAM;KACb,WAAW,UACT,aAAa,UAAU,MAAM,OAAO,MAA+B;;MAGrE,oBAAC;OAAO,OAAM;iBAAM;QAAkB;MACtC,oBAAC;OAAO,OAAM;iBAAS;QAAe;MACtC,oBAAC;OAAO,OAAM;iBAAY;QAAkB;;MACrC;KACH;GAER,qBAAC;IAAM,WAAU;eAAsE,YAErF,qBAAC;KACC,WAAU;KACV,OAAO,MAAM;KACb,WAAW,UACT,aACE,YACA,MAAM,OAAO,MACd;;MAGH,oBAAC;OAAO,OAAM;iBAAM;QAAY;MAChC,oBAAC;OAAO,OAAM;iBAAM;QAAY;MAChC,oBAAC;OAAO,OAAM;iBAAS;QAAe;MACtC,oBAAC;OAAO,OAAM;iBAAO;QAAa;MAClC,oBAAC;OAAO,OAAM;iBAAS;QAAe;;MAC/B;KACH;GAER,qBAAC;IAAM,WAAU;eAAsE,YAErF,qBAAC;KACC,WAAU;KACV,OAAO,MAAM;KACb,WAAW,UACT,aACE,cACA,MAAM,OAAO,MACd;gBAGH,oBAAC;MAAO,OAAM;gBAAM;OAAuB,EAC1C,WAAW,KAAK,aACf,oBAAC;MAAyB,OAAO,SAAS;gBACvC,SAAS;QADC,SAAS,GAEb,CACT;MACK;KACH;GAER,qBAAC;IAAM,WAAU;eAAsE,UAErF,oBAAC;KACC,MAAK;KACL,WAAU;KACV,aAAY;KACZ,OAAO,MAAM;KACb,WAAW,UAAU,aAAa,UAAU,MAAM,OAAO,MAAM;MAC/D;KACI;;GACJ"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"TaskForm.js","names":[],"sources":["../../../../src/components/templates/todos/TaskForm.tsx"],"sourcesContent":["'use client';\n\nimport { useState } from 'react';\nimport { useMutation } from '@apollo/client/react';\nimport { gql } from '@apollo/client';\n\nimport { useTemplateRuntime } from '@contractspec/lib.example-shared-ui';\nimport { type TaskCategory, type TaskPriority } from './types';\n\nconst CREATE_TASK = gql`\n mutation CreateTask($input: CreateTaskInput!) {\n createTask(input: $input) {\n id\n title\n }\n }\n`;\n\nexport interface TaskFormProps {\n categories: TaskCategory[];\n}\n\nexport function TaskForm({ categories }: TaskFormProps) {\n const { projectId } = useTemplateRuntime();\n const [title, setTitle] = useState('');\n const [description, setDescription] = useState('');\n const [priority, setPriority] = useState<TaskPriority>('MEDIUM');\n const [categoryId, setCategoryId] = useState<string | 'none'>('none');\n const [tagsInput, setTagsInput] = useState('');\n const [createTask, { loading }] = useMutation(CREATE_TASK);\n\n const handleSubmit = async (event: React.FormEvent) => {\n event.preventDefault();\n if (!title.trim()) return;\n await createTask({\n variables: {\n input: {\n projectId,\n title: title.trim(),\n description: description.trim() || undefined,\n priority,\n categoryId: categoryId === 'none' ? undefined : categoryId,\n tags: parseTags(tagsInput),\n },\n },\n refetchQueries: ['Tasks'],\n awaitRefetchQueries: true,\n });\n setTitle('');\n setDescription('');\n setPriority('MEDIUM');\n setCategoryId('none');\n setTagsInput('');\n // onCreated?.();\n };\n\n return (\n <form\n onSubmit={handleSubmit}\n className=\"border-border bg-background/60 space-y-3 rounded-2xl border p-4\"\n >\n <div>\n <label className=\"text-muted-foreground text-xs font-semibold uppercase\">\n Title\n <input\n type=\"text\"\n className=\"border-border bg-card mt-1 w-full rounded-md border px-3 py-2 text-sm\"\n placeholder=\"What needs to get done?\"\n value={title}\n onChange={(event) => setTitle(event.target.value)}\n required\n />\n </label>\n </div>\n\n <div>\n <label className=\"text-muted-foreground text-xs font-semibold uppercase\">\n Description\n <textarea\n className=\"border-border bg-card mt-1 w-full rounded-md border px-3 py-2 text-sm\"\n rows={3}\n placeholder=\"Add context or policy notes\"\n value={description}\n onChange={(event) => setDescription(event.target.value)}\n />\n </label>\n </div>\n\n <div className=\"grid gap-3 md:grid-cols-3\">\n <label className=\"text-muted-foreground text-xs font-semibold uppercase\">\n Priority\n <select\n className=\"border-border bg-card mt-1 w-full rounded-md border px-3 py-2 text-sm\"\n value={priority}\n onChange={(event) =>\n setPriority(event.target.value as TaskPriority)\n }\n >\n <option value=\"LOW\">Low</option>\n <option value=\"MEDIUM\">Medium</option>\n <option value=\"HIGH\">High</option>\n <option value=\"URGENT\">Urgent</option>\n </select>\n </label>\n\n <label className=\"text-muted-foreground text-xs font-semibold uppercase\">\n Category\n <select\n className=\"border-border bg-card mt-1 w-full rounded-md border px-3 py-2 text-sm\"\n value={categoryId}\n onChange={(event) => setCategoryId(event.target.value as string)}\n >\n <option value=\"none\">None</option>\n {categories.map((category) => (\n <option key={category.id} value={category.id}>\n {category.name}\n </option>\n ))}\n </select>\n </label>\n\n <label className=\"text-muted-foreground text-xs font-semibold uppercase\">\n Tags\n <input\n className=\"border-border bg-card mt-1 w-full rounded-md border px-3 py-2 text-sm\"\n placeholder=\"Comma separated (optional)\"\n value={tagsInput}\n onChange={(event) => setTagsInput(event.target.value)}\n />\n </label>\n </div>\n\n <button\n type=\"submit\"\n className=\"btn-primary w-full py-2 text-sm font-semibold\"\n disabled={loading}\n >\n {loading ? 'Saving...' : 'Add task'}\n </button>\n </form>\n );\n}\n\nfunction parseTags(input: string): string[] {\n return input\n .split(',')\n .map((tag) => tag.trim())\n .filter(Boolean);\n}\n"],"mappings":";;;;;;;;;AASA,MAAM,cAAc,GAAG;;;;;;;;AAavB,SAAgB,SAAS,EAAE,cAA6B;CACtD,MAAM,EAAE,cAAc,oBAAoB;CAC1C,MAAM,CAAC,OAAO,YAAY,SAAS,GAAG;CACtC,MAAM,CAAC,aAAa,kBAAkB,SAAS,GAAG;CAClD,MAAM,CAAC,UAAU,eAAe,SAAuB,SAAS;CAChE,MAAM,CAAC,YAAY,iBAAiB,SAA0B,OAAO;CACrE,MAAM,CAAC,WAAW,gBAAgB,SAAS,GAAG;CAC9C,MAAM,CAAC,YAAY,EAAE,aAAa,YAAY,YAAY;CAE1D,MAAM,eAAe,OAAO,UAA2B;AACrD,QAAM,gBAAgB;AACtB,MAAI,CAAC,MAAM,MAAM,CAAE;AACnB,QAAM,WAAW;GACf,WAAW,EACT,OAAO;IACL;IACA,OAAO,MAAM,MAAM;IACnB,aAAa,YAAY,MAAM,IAAI;IACnC;IACA,YAAY,eAAe,SAAS,SAAY;IAChD,MAAM,UAAU,UAAU;IAC3B,EACF;GACD,gBAAgB,CAAC,QAAQ;GACzB,qBAAqB;GACtB,CAAC;AACF,WAAS,GAAG;AACZ,iBAAe,GAAG;AAClB,cAAY,SAAS;AACrB,gBAAc,OAAO;AACrB,eAAa,GAAG;;AAIlB,QACE,qBAAC;EACC,UAAU;EACV,WAAU;;GAEV,oBAAC,mBACC,qBAAC;IAAM,WAAU;eAAwD,SAEvE,oBAAC;KACC,MAAK;KACL,WAAU;KACV,aAAY;KACZ,OAAO;KACP,WAAW,UAAU,SAAS,MAAM,OAAO,MAAM;KACjD;MACA;KACI,GACJ;GAEN,oBAAC,mBACC,qBAAC;IAAM,WAAU;eAAwD,eAEvE,oBAAC;KACC,WAAU;KACV,MAAM;KACN,aAAY;KACZ,OAAO;KACP,WAAW,UAAU,eAAe,MAAM,OAAO,MAAM;MACvD;KACI,GACJ;GAEN,qBAAC;IAAI,WAAU;;KACb,qBAAC;MAAM,WAAU;iBAAwD,YAEvE,qBAAC;OACC,WAAU;OACV,OAAO;OACP,WAAW,UACT,YAAY,MAAM,OAAO,MAAsB;;QAGjD,oBAAC;SAAO,OAAM;mBAAM;UAAY;QAChC,oBAAC;SAAO,OAAM;mBAAS;UAAe;QACtC,oBAAC;SAAO,OAAM;mBAAO;UAAa;QAClC,oBAAC;SAAO,OAAM;mBAAS;UAAe;;QAC/B;OACH;KAER,qBAAC;MAAM,WAAU;iBAAwD,YAEvE,qBAAC;OACC,WAAU;OACV,OAAO;OACP,WAAW,UAAU,cAAc,MAAM,OAAO,MAAgB;kBAEhE,oBAAC;QAAO,OAAM;kBAAO;SAAa,EACjC,WAAW,KAAK,aACf,oBAAC;QAAyB,OAAO,SAAS;kBACvC,SAAS;UADC,SAAS,GAEb,CACT;QACK;OACH;KAER,qBAAC;MAAM,WAAU;iBAAwD,QAEvE,oBAAC;OACC,WAAU;OACV,aAAY;OACZ,OAAO;OACP,WAAW,UAAU,aAAa,MAAM,OAAO,MAAM;QACrD;OACI;;KACJ;GAEN,oBAAC;IACC,MAAK;IACL,WAAU;IACV,UAAU;cAET,UAAU,cAAc;KAClB;;GACJ;;AAIX,SAAS,UAAU,OAAyB;AAC1C,QAAO,MACJ,MAAM,IAAI,CACV,KAAK,QAAQ,IAAI,MAAM,CAAC,CACxB,OAAO,QAAQ"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"TaskItem.js","names":[],"sources":["../../../../src/components/templates/todos/TaskItem.tsx"],"sourcesContent":["import { Check, Circle, Trash2 } from 'lucide-react';\n\nimport { type Task } from './types';\n\nexport interface TaskItemProps {\n task: Task;\n onToggle?: (task: Task) => void;\n onDelete?: (task: Task) => void;\n}\n\nexport function TaskItem({ task, onToggle, onDelete }: TaskItemProps) {\n const badgeColor =\n task.priority === 'URGENT'\n ? 'text-red-200 bg-red-500/10 border-red-500/40'\n : task.priority === 'HIGH'\n ? 'text-amber-200 bg-amber-500/10 border-amber-500/40'\n : task.priority === 'LOW'\n ? 'text-emerald-200 bg-emerald-500/10 border-emerald-500/40'\n : 'text-violet-200 bg-violet-500/10 border-violet-500/40';\n\n return (\n <div className=\"border-border/70 bg-card/60 hover:border-border flex items-start gap-4 rounded-2xl border p-4 transition\">\n <button\n type=\"button\"\n className=\"border-border text-muted-foreground hover:bg-muted/40 rounded-full border p-2\"\n aria-pressed={task.completed}\n onClick={() => onToggle?.(task)}\n >\n {task.completed ? (\n <Check className=\"h-4 w-4 text-emerald-400\" />\n ) : (\n <Circle className=\"h-4 w-4\" />\n )}\n </button>\n\n <div className=\"flex-1 space-y-2\">\n <div className=\"flex flex-wrap items-center gap-2\">\n <p\n className={`font-medium ${\n task.completed\n ? 'text-muted-foreground line-through'\n : 'text-foreground'\n }`}\n >\n {task.title}\n </p>\n <span\n className={`rounded-full border px-2 py-0.5 text-xs ${badgeColor}`}\n >\n {task.priority.charAt(0) + task.priority.slice(1).toLowerCase()}\n </span>\n {task.category ? (\n <span className=\"bg-muted/40 text-muted-foreground rounded-full px-2 py-0.5 text-xs\">\n {task.category.name}\n </span>\n ) : null}\n {task.dueDate ? (\n <span className=\"text-muted-foreground text-xs\">\n Due {new Date(task.dueDate).toLocaleDateString()}\n </span>\n ) : null}\n </div>\n\n {task.description ? (\n <p className=\"text-muted-foreground text-sm\">{task.description}</p>\n ) : null}\n\n {task.tags.length ? (\n <div className=\"flex flex-wrap gap-1\">\n {task.tags.map((tag) => (\n <span\n key={tag}\n className=\"bg-muted/40 text-muted-foreground rounded-full px-2 py-0.5 text-xs\"\n >\n #{tag}\n </span>\n ))}\n </div>\n ) : null}\n </div>\n\n <button\n type=\"button\"\n className=\"text-muted-foreground hover:text-destructive\"\n aria-label={`Delete ${task.title}`}\n onClick={() => onDelete?.(task)}\n >\n <Trash2 className=\"h-4 w-4\" />\n </button>\n </div>\n );\n}\n"],"mappings":";;;;AAUA,SAAgB,SAAS,EAAE,MAAM,UAAU,YAA2B;CACpE,MAAM,aACJ,KAAK,aAAa,WACd,iDACA,KAAK,aAAa,SAChB,uDACA,KAAK,aAAa,QAChB,6DACA;AAEV,QACE,qBAAC;EAAI,WAAU;;GACb,oBAAC;IACC,MAAK;IACL,WAAU;IACV,gBAAc,KAAK;IACnB,eAAe,WAAW,KAAK;cAE9B,KAAK,YACJ,oBAAC,SAAM,WAAU,6BAA6B,GAE9C,oBAAC,UAAO,WAAU,YAAY;KAEzB;GAET,qBAAC;IAAI,WAAU;;KACb,qBAAC;MAAI,WAAU;;OACb,oBAAC;QACC,WAAW,eACT,KAAK,YACD,uCACA;kBAGL,KAAK;SACJ;OACJ,oBAAC;QACC,WAAW,2CAA2C;kBAErD,KAAK,SAAS,OAAO,EAAE,GAAG,KAAK,SAAS,MAAM,EAAE,CAAC,aAAa;SAC1D;OACN,KAAK,WACJ,oBAAC;QAAK,WAAU;kBACb,KAAK,SAAS;SACV,GACL;OACH,KAAK,UACJ,qBAAC;QAAK,WAAU;mBAAgC,QACzC,IAAI,KAAK,KAAK,QAAQ,CAAC,oBAAoB;SAC3C,GACL;;OACA;KAEL,KAAK,cACJ,oBAAC;MAAE,WAAU;gBAAiC,KAAK;OAAgB,GACjE;KAEH,KAAK,KAAK,SACT,oBAAC;MAAI,WAAU;gBACZ,KAAK,KAAK,KAAK,QACd,qBAAC;OAEC,WAAU;kBACX,KACG;SAHG,IAIA,CACP;OACE,GACJ;;KACA;GAEN,oBAAC;IACC,MAAK;IACL,WAAU;IACV,cAAY,UAAU,KAAK;IAC3B,eAAe,WAAW,KAAK;cAE/B,oBAAC,UAAO,WAAU,YAAY;KACvB;;GACL"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"TaskList.js","names":[],"sources":["../../../../src/components/templates/todos/TaskList.tsx"],"sourcesContent":["'use client';\n\nimport { useMemo, useState } from 'react';\nimport { useMutation, useQuery } from '@apollo/client/react';\nimport { gql } from '@apollo/client';\n\nimport {\n registerTemplateComponents,\n useTemplateRuntime,\n} from '@contractspec/lib.example-shared-ui';\nimport { FilterBar, type FilterState } from './FilterBar';\nimport { TaskForm } from './TaskForm';\nimport { TaskItem } from './TaskItem';\nimport { type Task, type TaskCategory } from './types';\n\nconst TASKS_QUERY = gql`\n query Tasks($projectId: ID!) {\n taskCategories(projectId: $projectId) {\n id\n name\n color\n }\n tasks(projectId: $projectId) {\n id\n title\n description\n completed\n priority\n dueDate\n tags\n category {\n id\n name\n color\n }\n }\n }\n`;\n\nconst TOGGLE_TASK = gql`\n mutation ToggleTask($id: ID!, $completed: Boolean!) {\n toggleTask(id: $id, completed: $completed) {\n id\n completed\n }\n }\n`;\n\nconst DELETE_TASK = gql`\n mutation DeleteTask($id: ID!) {\n deleteTask(id: $id)\n }\n`;\n\nexport function TaskList() {\n const { projectId } = useTemplateRuntime();\n const [filters, setFilters] = useState<FilterState>({\n status: 'all',\n priority: 'all',\n categoryId: 'all',\n search: '',\n });\n const { data, loading } = useQuery<{\n tasks: Task[];\n taskCategories: TaskCategory[];\n }>(TASKS_QUERY, {\n variables: { projectId },\n fetchPolicy: 'cache-and-network',\n });\n const [toggleTask] = useMutation(TOGGLE_TASK);\n const [deleteTask] = useMutation(DELETE_TASK);\n\n const categories: TaskCategory[] = data?.taskCategories ?? [];\n const tasks: Task[] = data?.tasks ?? [];\n\n const filtered = useMemo(() => {\n return tasks.filter((task) => {\n if (filters.status === 'active' && task.completed) return false;\n if (filters.status === 'completed' && !task.completed) return false;\n if (filters.priority !== 'all' && task.priority !== filters.priority)\n return false;\n if (\n filters.categoryId !== 'all' &&\n task.category?.id !== filters.categoryId\n )\n return false;\n if (\n filters.search &&\n !task.title.toLowerCase().includes(filters.search.toLowerCase())\n )\n return false;\n return true;\n });\n }, [tasks, filters]);\n\n const handleToggle = async (task: Task) => {\n await toggleTask({\n variables: { id: task.id, completed: !task.completed },\n optimisticResponse: {\n toggleTask: {\n __typename: 'Task',\n id: task.id,\n completed: !task.completed,\n },\n },\n update(cache) {\n cache.modify({\n fields: {\n tasks(existing = []) {\n return existing.map(\n (ref: { __ref?: string; completed?: boolean }) =>\n ref.__ref?.endsWith(task.id)\n ? { ...ref, completed: !task.completed }\n : ref\n );\n },\n },\n });\n },\n });\n };\n\n const handleDelete = async (task: Task) => {\n await deleteTask({\n variables: { id: task.id },\n refetchQueries: [{ query: TASKS_QUERY, variables: { projectId } }],\n });\n };\n\n return (\n <div className=\"space-y-6\">\n <FilterBar\n value={filters}\n onChange={setFilters}\n categories={categories}\n />\n <TaskForm categories={categories} />\n\n {loading ? (\n <p className=\"text-muted-foreground text-sm\">Loading tasks…</p>\n ) : filtered.length ? (\n <div className=\"space-y-3\">\n {filtered.map((task) => (\n <TaskItem\n key={task.id}\n task={task}\n onToggle={handleToggle}\n onDelete={handleDelete}\n />\n ))}\n </div>\n ) : (\n <div className=\"border-border rounded-2xl border border-dashed p-8 text-center\">\n <p className=\"text-muted-foreground\">\n No tasks match your filters. Create one above.\n </p>\n </div>\n )}\n </div>\n );\n}\n\nregisterTemplateComponents('todos-app', {\n list: TaskList,\n detail: TaskList,\n form: TaskForm,\n});\n"],"mappings":";;;;;;;;;;;;AAeA,MAAM,cAAc,GAAG;;;;;;;;;;;;;;;;;;;;;;;AAwBvB,MAAM,cAAc,GAAG;;;;;;;;AASvB,MAAM,cAAc,GAAG;;;;;AAMvB,SAAgB,WAAW;CACzB,MAAM,EAAE,cAAc,oBAAoB;CAC1C,MAAM,CAAC,SAAS,cAAc,SAAsB;EAClD,QAAQ;EACR,UAAU;EACV,YAAY;EACZ,QAAQ;EACT,CAAC;CACF,MAAM,EAAE,MAAM,YAAY,SAGvB,aAAa;EACd,WAAW,EAAE,WAAW;EACxB,aAAa;EACd,CAAC;CACF,MAAM,CAAC,cAAc,YAAY,YAAY;CAC7C,MAAM,CAAC,cAAc,YAAY,YAAY;CAE7C,MAAM,aAA6B,MAAM,kBAAkB,EAAE;CAC7D,MAAM,QAAgB,MAAM,SAAS,EAAE;CAEvC,MAAM,WAAW,cAAc;AAC7B,SAAO,MAAM,QAAQ,SAAS;AAC5B,OAAI,QAAQ,WAAW,YAAY,KAAK,UAAW,QAAO;AAC1D,OAAI,QAAQ,WAAW,eAAe,CAAC,KAAK,UAAW,QAAO;AAC9D,OAAI,QAAQ,aAAa,SAAS,KAAK,aAAa,QAAQ,SAC1D,QAAO;AACT,OACE,QAAQ,eAAe,SACvB,KAAK,UAAU,OAAO,QAAQ,WAE9B,QAAO;AACT,OACE,QAAQ,UACR,CAAC,KAAK,MAAM,aAAa,CAAC,SAAS,QAAQ,OAAO,aAAa,CAAC,CAEhE,QAAO;AACT,UAAO;IACP;IACD,CAAC,OAAO,QAAQ,CAAC;CAEpB,MAAM,eAAe,OAAO,SAAe;AACzC,QAAM,WAAW;GACf,WAAW;IAAE,IAAI,KAAK;IAAI,WAAW,CAAC,KAAK;IAAW;GACtD,oBAAoB,EAClB,YAAY;IACV,YAAY;IACZ,IAAI,KAAK;IACT,WAAW,CAAC,KAAK;IAClB,EACF;GACD,OAAO,OAAO;AACZ,UAAM,OAAO,EACX,QAAQ,EACN,MAAM,WAAW,EAAE,EAAE;AACnB,YAAO,SAAS,KACb,QACC,IAAI,OAAO,SAAS,KAAK,GAAG,GACxB;MAAE,GAAG;MAAK,WAAW,CAAC,KAAK;MAAW,GACtC,IACP;OAEJ,EACF,CAAC;;GAEL,CAAC;;CAGJ,MAAM,eAAe,OAAO,SAAe;AACzC,QAAM,WAAW;GACf,WAAW,EAAE,IAAI,KAAK,IAAI;GAC1B,gBAAgB,CAAC;IAAE,OAAO;IAAa,WAAW,EAAE,WAAW;IAAE,CAAC;GACnE,CAAC;;AAGJ,QACE,qBAAC;EAAI,WAAU;;GACb,oBAAC;IACC,OAAO;IACP,UAAU;IACE;KACZ;GACF,oBAAC,YAAqB,aAAc;GAEnC,UACC,oBAAC;IAAE,WAAU;cAAgC;KAAkB,GAC7D,SAAS,SACX,oBAAC;IAAI,WAAU;cACZ,SAAS,KAAK,SACb,oBAAC;KAEO;KACN,UAAU;KACV,UAAU;OAHL,KAAK,GAIV,CACF;KACE,GAEN,oBAAC;IAAI,WAAU;cACb,oBAAC;KAAE,WAAU;eAAwB;MAEjC;KACA;;GAEJ;;AAIV,2BAA2B,aAAa;CACtC,MAAM;CACN,QAAQ;CACR,MAAM;CACP,CAAC"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"contractspec-blueprint.js","names":[],"sources":["../../src/config/contractspec-blueprint.ts"],"sourcesContent":["import type {\n AppBlueprintSpec,\n FeatureFlagState,\n} from '@contractspec/lib.contracts/app-config';\nimport type { CapabilityRef } from '@contractspec/lib.contracts/capabilities';\nimport type { FeatureRef } from '@contractspec/lib.contracts/features';\nimport { contractspecBrandingDefaults } from './contractspec-branding';\nimport { contractspecRoutes } from './contractspec-routes';\n\nconst cap = (key: string, version: string): CapabilityRef => ({ key, version });\nconst feat = (key: string): FeatureRef => ({ key });\n\n/**\n * ContractSpec application blueprint.\n * Defines the canonical spec for the ContractSpec platform itself.\n */\nexport const contractspecBlueprint: AppBlueprintSpec = {\n meta: {\n key: 'contractspec.app',\n version: '1.0.0',\n appId: 'contractspec',\n title: 'ContractSpec',\n description: 'The deterministic, spec-first compiler for AI-coded systems',\n domain: 'platform',\n owners: ['@platform.core'],\n tags: ['contracts', 'specs', 'ai-safety', 'code-generation'],\n stability: 'beta',\n },\n capabilities: {\n enabled: [\n cap('contracts.operations', '1.0.0'),\n cap('contracts.presentations', '1.0.0'),\n cap('contracts.mcp', '1.0.0'),\n cap('contracts.docs', '1.0.0'),\n ],\n },\n features: {\n include: [\n feat('contractspec.docs'),\n feat('contractspec.mcp'),\n feat('contractspec.presentations'),\n feat('app-config'),\n ],\n },\n branding: contractspecBrandingDefaults,\n featureFlags: [\n {\n key: 'feature-discovery-ui',\n enabled: true,\n description: 'Show feature discovery UI',\n },\n {\n key: 'dark-mode',\n enabled: true,\n description: 'Enable dark mode theming',\n },\n {\n key: 'ai-assistant',\n enabled: false,\n description: 'AI-powered assistant integration',\n },\n {\n key: 'sandbox-enabled',\n enabled: true,\n description: 'Enable sandbox playground',\n },\n ] satisfies FeatureFlagState[],\n routes: contractspecRoutes,\n notes:\n \"ContractSpec platform blueprint - defines the app's capabilities, features, and configuration.\",\n};\n"],"mappings":";;;;AASA,MAAM,OAAO,KAAa,aAAoC;CAAE;CAAK;CAAS;AAC9E,MAAM,QAAQ,SAA6B,EAAE,KAAK;;;;;AAMlD,MAAa,wBAA0C;CACrD,MAAM;EACJ,KAAK;EACL,SAAS;EACT,OAAO;EACP,OAAO;EACP,aAAa;EACb,QAAQ;EACR,QAAQ,CAAC,iBAAiB;EAC1B,MAAM;GAAC;GAAa;GAAS;GAAa;GAAkB;EAC5D,WAAW;EACZ;CACD,cAAc,EACZ,SAAS;EACP,IAAI,wBAAwB,QAAQ;EACpC,IAAI,2BAA2B,QAAQ;EACvC,IAAI,iBAAiB,QAAQ;EAC7B,IAAI,kBAAkB,QAAQ;EAC/B,EACF;CACD,UAAU,EACR,SAAS;EACP,KAAK,oBAAoB;EACzB,KAAK,mBAAmB;EACxB,KAAK,6BAA6B;EAClC,KAAK,aAAa;EACnB,EACF;CACD,UAAU;CACV,cAAc;EACZ;GACE,KAAK;GACL,SAAS;GACT,aAAa;GACd;EACD;GACE,KAAK;GACL,SAAS;GACT,aAAa;GACd;EACD;GACE,KAAK;GACL,SAAS;GACT,aAAa;GACd;EACD;GACE,KAAK;GACL,SAAS;GACT,aAAa;GACd;EACF;CACD,QAAQ;CACR,OACE;CACH"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"contractspec-branding.js","names":[],"sources":["../../src/config/contractspec-branding.ts"],"sourcesContent":["import type {\n BrandingDefaults,\n ResolvedBranding,\n} from '@contractspec/lib.contracts/app-config';\n\n/**\n * Default branding configuration for ContractSpec.\n * Used as blueprint defaults before tenant overrides.\n */\nexport const contractspecBrandingDefaults: BrandingDefaults = {\n appNameKey: 'ContractSpec',\n assets: [\n { type: 'logo', url: '/logo.svg', dimensions: { width: 180, height: 40 } },\n {\n type: 'logo-dark',\n url: '/logo-dark.svg',\n dimensions: { width: 180, height: 40 },\n },\n {\n type: 'favicon',\n url: '/favicon.ico',\n dimensions: { width: 32, height: 32 },\n },\n {\n type: 'og-image',\n url: '/og-image.png',\n dimensions: { width: 1200, height: 630 },\n },\n ],\n colorTokens: {\n primary: '#0ea5e9',\n secondary: '#6366f1',\n },\n};\n\n/**\n * Pre-resolved branding for ContractSpec.\n * Ready-to-use branding values with all defaults applied.\n */\nexport const contractspecResolvedBranding: ResolvedBranding = {\n appName: 'ContractSpec',\n assets: {\n logo: '/logo.svg',\n logoDark: '/logo-dark.svg',\n favicon: '/favicon.ico',\n ogImage: '/og-image.png',\n },\n colors: {\n primary: '#0ea5e9',\n secondary: '#6366f1',\n },\n domain: 'contractspec.io',\n};\n"],"mappings":";;;;;AASA,MAAa,+BAAiD;CAC5D,YAAY;CACZ,QAAQ;EACN;GAAE,MAAM;GAAQ,KAAK;GAAa,YAAY;IAAE,OAAO;IAAK,QAAQ;IAAI;GAAE;EAC1E;GACE,MAAM;GACN,KAAK;GACL,YAAY;IAAE,OAAO;IAAK,QAAQ;IAAI;GACvC;EACD;GACE,MAAM;GACN,KAAK;GACL,YAAY;IAAE,OAAO;IAAI,QAAQ;IAAI;GACtC;EACD;GACE,MAAM;GACN,KAAK;GACL,YAAY;IAAE,OAAO;IAAM,QAAQ;IAAK;GACzC;EACF;CACD,aAAa;EACX,SAAS;EACT,WAAW;EACZ;CACF;;;;;AAMD,MAAa,+BAAiD;CAC5D,SAAS;CACT,QAAQ;EACN,MAAM;EACN,UAAU;EACV,SAAS;EACT,SAAS;EACV;CACD,QAAQ;EACN,SAAS;EACT,WAAW;EACZ;CACD,QAAQ;CACT"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"contractspec-routes.js","names":[],"sources":["../../src/config/contractspec-routes.ts"],"sourcesContent":["import type { AppRouteConfig } from '@contractspec/lib.contracts/app-config';\n\n/**\n * Route configuration for the ContractSpec application.\n * Defines all navigable routes with optional feature flags and guards.\n */\nexport const contractspecRoutes: AppRouteConfig[] = [\n // Landing/Marketing\n { path: '/', label: 'Home' },\n { path: '/product', label: 'Product' },\n { path: '/pricing', label: 'Pricing' },\n { path: '/changelog', label: 'Changelog' },\n { path: '/contact', label: 'Contact' },\n\n // Documentation\n { path: '/docs', label: 'Documentation' },\n { path: '/docs/getting-started', label: 'Getting Started' },\n { path: '/docs/architecture', label: 'Architecture' },\n { path: '/docs/specs', label: 'Specs' },\n { path: '/docs/integrations', label: 'Integrations' },\n { path: '/docs/libraries', label: 'Libraries' },\n { path: '/docs/advanced', label: 'Advanced' },\n\n // Features\n {\n path: '/features',\n label: 'Feature Discovery',\n featureFlag: 'feature-discovery-ui',\n },\n\n // Sandbox\n { path: '/sandbox', label: 'Sandbox', featureFlag: 'sandbox-enabled' },\n];\n"],"mappings":";;;;;AAMA,MAAa,qBAAuC;CAElD;EAAE,MAAM;EAAK,OAAO;EAAQ;CAC5B;EAAE,MAAM;EAAY,OAAO;EAAW;CACtC;EAAE,MAAM;EAAY,OAAO;EAAW;CACtC;EAAE,MAAM;EAAc,OAAO;EAAa;CAC1C;EAAE,MAAM;EAAY,OAAO;EAAW;CAGtC;EAAE,MAAM;EAAS,OAAO;EAAiB;CACzC;EAAE,MAAM;EAAyB,OAAO;EAAmB;CAC3D;EAAE,MAAM;EAAsB,OAAO;EAAgB;CACrD;EAAE,MAAM;EAAe,OAAO;EAAS;CACvC;EAAE,MAAM;EAAsB,OAAO;EAAgB;CACrD;EAAE,MAAM;EAAmB,OAAO;EAAa;CAC/C;EAAE,MAAM;EAAkB,OAAO;EAAY;CAG7C;EACE,MAAM;EACN,OAAO;EACP,aAAa;EACd;CAGD;EAAE,MAAM;EAAY,OAAO;EAAW,aAAa;EAAmB;CACvE"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"contracts-registry.js","names":["PresentationRegistry"],"sources":["../../src/features/contracts-registry.ts"],"sourcesContent":["/**\n * Central contracts registry for ContractSpec.\n *\n * This registry holds all operation, event, presentation, data view, and form specs\n * so they can be resolved by key for the feature discovery system.\n * Unlike the MCP's OperationSpecRegistry (which also binds handlers),\n * this is a spec-only registry for documentation and discovery purposes.\n */\n\nimport {\n OperationSpecRegistry,\n type AnyOperationSpec,\n EventRegistry,\n type AnyEventSpec,\n type PresentationSpec,\n type DataViewSpec,\n type FormSpec,\n} from '@contractspec/lib.contracts';\nimport { PresentationRegistry } from '@contractspec/lib.contracts/presentations';\nimport { DataViewRegistry } from '@contractspec/lib.contracts/data-views';\nimport { FormRegistry } from '@contractspec/lib.contracts/forms';\nimport {\n serializeOperationSpec,\n serializeEventSpec,\n serializePresentationSpec,\n serializeDataViewSpec,\n serializeFormSpec,\n} from '@contractspec/lib.contracts/serialization';\nimport {\n ContractReferenceDataView,\n ContractReferenceQuery,\n DocsGeneratedEvent,\n DocsGenerateCommand,\n DocsIndexDataView,\n DocsIndexQuery,\n DocsLayoutPresentation,\n DocsPublishedEvent,\n DocsPublishCommand,\n DocsReferencePagePresentation,\n DocsSearchForm,\n ExampleCatalogDataView,\n} from '@contractspec/lib.contracts/docs';\n\n// Re-export serialization types from lib.contracts for convenience\nexport type {\n SerializedSchemaModel,\n SerializedFieldConfig,\n SerializedOperationSpec,\n SerializedEventSpec,\n SerializedPresentationSpec,\n SerializedDataViewSpec,\n SerializedFormSpec,\n} from '@contractspec/lib.contracts/serialization';\n\n// ============================================================================\n// Operation Registry\n// ============================================================================\n\nlet operationRegistry: OperationSpecRegistry | null = null;\n\nexport function createContractSpecOperationRegistry(): OperationSpecRegistry {\n const registry = new OperationSpecRegistry();\n registry\n .register(DocsIndexQuery)\n .register(ContractReferenceQuery)\n .register(DocsGenerateCommand)\n .register(DocsPublishCommand);\n return registry;\n}\n\nexport function getContractSpecOperationRegistry(): OperationSpecRegistry {\n if (!operationRegistry) {\n operationRegistry = createContractSpecOperationRegistry();\n }\n return operationRegistry;\n}\n\nexport function resolveOperationSpec(\n key: string,\n version?: string\n): AnyOperationSpec | undefined {\n return getContractSpecOperationRegistry().get(key, version);\n}\n\n// ============================================================================\n// Event Registry\n// ============================================================================\n\nlet eventRegistry: EventRegistry | null = null;\n\nexport function createContractSpecEventRegistry(): EventRegistry {\n const registry = new EventRegistry();\n registry.register(DocsGeneratedEvent).register(DocsPublishedEvent);\n return registry;\n}\n\nexport function getContractSpecEventRegistry(): EventRegistry {\n if (!eventRegistry) {\n eventRegistry = createContractSpecEventRegistry();\n }\n return eventRegistry;\n}\n\nexport function resolveEventSpec(\n key: string,\n version?: string\n): AnyEventSpec | undefined {\n return getContractSpecEventRegistry().get(key, version);\n}\n\n// ============================================================================\n// Presentation Registry\n// ============================================================================\n\nlet presentationRegistry: PresentationRegistry | null = null;\n\nexport function createContractSpecPresentationRegistry(): PresentationRegistry {\n const registry = new PresentationRegistry();\n registry\n .register(DocsLayoutPresentation)\n .register(DocsReferencePagePresentation);\n return registry;\n}\n\nexport function getContractSpecPresentationRegistry(): PresentationRegistry {\n if (!presentationRegistry) {\n presentationRegistry = createContractSpecPresentationRegistry();\n }\n return presentationRegistry;\n}\n\nexport function resolvePresentationSpec(\n key: string,\n version?: string\n): PresentationSpec | undefined {\n return getContractSpecPresentationRegistry().get(key, version);\n}\n\n// ============================================================================\n// DataView Registry\n// ============================================================================\n\nlet dataViewRegistry: DataViewRegistry | null = null;\n\nexport function createContractSpecDataViewRegistry(): DataViewRegistry {\n const registry = new DataViewRegistry();\n registry\n .register(DocsIndexDataView)\n .register(ContractReferenceDataView)\n .register(ExampleCatalogDataView);\n return registry;\n}\n\nexport function getContractSpecDataViewRegistry(): DataViewRegistry {\n if (!dataViewRegistry) {\n dataViewRegistry = createContractSpecDataViewRegistry();\n }\n return dataViewRegistry;\n}\n\nexport function resolveDataViewSpec(\n key: string,\n version?: string\n): DataViewSpec | undefined {\n return getContractSpecDataViewRegistry().get(key, version);\n}\n\n// ============================================================================\n// Form Registry\n// ============================================================================\n\nlet formRegistry: FormRegistry | null = null;\n\nexport function createContractSpecFormRegistry(): FormRegistry {\n const registry = new FormRegistry();\n registry.register(DocsSearchForm);\n return registry;\n}\n\nexport function getContractSpecFormRegistry(): FormRegistry {\n if (!formRegistry) {\n formRegistry = createContractSpecFormRegistry();\n }\n return formRegistry;\n}\n\nexport function resolveFormSpec(\n key: string,\n _version?: string\n): FormSpec | undefined {\n return getContractSpecFormRegistry().get(key);\n}\n\n// ============================================================================\n// Serialized Spec Resolution (for Server -> Client Component transfer)\n// ============================================================================\n\n/**\n * Resolve and serialize an operation spec for passing to client components.\n * Returns a plain JSON-serializable object.\n */\nexport function resolveSerializedOperationSpec(key: string, version?: string) {\n const spec = resolveOperationSpec(key, version);\n return serializeOperationSpec(spec) ?? undefined;\n}\n\n/**\n * Resolve and serialize an event spec for passing to client components.\n */\nexport function resolveSerializedEventSpec(key: string, version?: string) {\n const spec = resolveEventSpec(key, version);\n return serializeEventSpec(spec) ?? undefined;\n}\n\n/**\n * Resolve and serialize a presentation spec for passing to client components.\n */\nexport function resolveSerializedPresentationSpec(\n key: string,\n version?: string\n) {\n const spec = resolvePresentationSpec(key, version);\n return serializePresentationSpec(spec) ?? undefined;\n}\n\n/**\n * Resolve and serialize a data view spec for passing to client components.\n */\nexport function resolveSerializedDataViewSpec(key: string, version?: string) {\n const spec = resolveDataViewSpec(key, version);\n return serializeDataViewSpec(spec) ?? undefined;\n}\n\n/**\n * Resolve and serialize a form spec for passing to client components.\n */\nexport function resolveSerializedFormSpec(key: string, version?: string) {\n const spec = resolveFormSpec(key, version);\n return serializeFormSpec(spec) ?? undefined;\n}\n\n// ============================================================================\n// Reset all registries (for testing)\n// ============================================================================\n\nexport function resetContractSpecOperationRegistry(): void {\n operationRegistry = null;\n}\n\nexport function resetContractSpecEventRegistry(): void {\n eventRegistry = null;\n}\n\nexport function resetContractSpecPresentationRegistry(): void {\n presentationRegistry = null;\n}\n\nexport function resetContractSpecDataViewRegistry(): void {\n dataViewRegistry = null;\n}\n\nexport function resetContractSpecFormRegistry(): void {\n formRegistry = null;\n}\n\nexport function resetAllContractSpecRegistries(): void {\n resetContractSpecOperationRegistry();\n resetContractSpecEventRegistry();\n resetContractSpecPresentationRegistry();\n resetContractSpecDataViewRegistry();\n resetContractSpecFormRegistry();\n}\n"],"mappings":";;;;;;;;;;;;;;;;AA0DA,IAAI,oBAAkD;AAEtD,SAAgB,sCAA6D;CAC3E,MAAM,WAAW,IAAI,uBAAuB;AAC5C,UACG,SAAS,eAAe,CACxB,SAAS,uBAAuB,CAChC,SAAS,oBAAoB,CAC7B,SAAS,mBAAmB;AAC/B,QAAO;;AAGT,SAAgB,mCAA0D;AACxE,KAAI,CAAC,kBACH,qBAAoB,qCAAqC;AAE3D,QAAO;;AAGT,SAAgB,qBACd,KACA,SAC8B;AAC9B,QAAO,kCAAkC,CAAC,IAAI,KAAK,QAAQ;;AAO7D,IAAI,gBAAsC;AAE1C,SAAgB,kCAAiD;CAC/D,MAAM,WAAW,IAAI,eAAe;AACpC,UAAS,SAAS,mBAAmB,CAAC,SAAS,mBAAmB;AAClE,QAAO;;AAGT,SAAgB,+BAA8C;AAC5D,KAAI,CAAC,cACH,iBAAgB,iCAAiC;AAEnD,QAAO;;AAGT,SAAgB,iBACd,KACA,SAC0B;AAC1B,QAAO,8BAA8B,CAAC,IAAI,KAAK,QAAQ;;AAOzD,IAAI,uBAAoD;AAExD,SAAgB,yCAA+D;CAC7E,MAAM,WAAW,IAAIA,wBAAsB;AAC3C,UACG,SAAS,uBAAuB,CAChC,SAAS,8BAA8B;AAC1C,QAAO;;AAGT,SAAgB,sCAA4D;AAC1E,KAAI,CAAC,qBACH,wBAAuB,wCAAwC;AAEjE,QAAO;;AAGT,SAAgB,wBACd,KACA,SAC8B;AAC9B,QAAO,qCAAqC,CAAC,IAAI,KAAK,QAAQ;;AAOhE,IAAI,mBAA4C;AAEhD,SAAgB,qCAAuD;CACrE,MAAM,WAAW,IAAI,kBAAkB;AACvC,UACG,SAAS,kBAAkB,CAC3B,SAAS,0BAA0B,CACnC,SAAS,uBAAuB;AACnC,QAAO;;AAGT,SAAgB,kCAAoD;AAClE,KAAI,CAAC,iBACH,oBAAmB,oCAAoC;AAEzD,QAAO;;AAGT,SAAgB,oBACd,KACA,SAC0B;AAC1B,QAAO,iCAAiC,CAAC,IAAI,KAAK,QAAQ;;AAO5D,IAAI,eAAoC;AAExC,SAAgB,iCAA+C;CAC7D,MAAM,WAAW,IAAI,cAAc;AACnC,UAAS,SAAS,eAAe;AACjC,QAAO;;AAGT,SAAgB,8BAA4C;AAC1D,KAAI,CAAC,aACH,gBAAe,gCAAgC;AAEjD,QAAO;;AAGT,SAAgB,gBACd,KACA,UACsB;AACtB,QAAO,6BAA6B,CAAC,IAAI,IAAI;;;;;;AAW/C,SAAgB,+BAA+B,KAAa,SAAkB;AAE5E,QAAO,uBADM,qBAAqB,KAAK,QAAQ,CACZ,IAAI;;;;;AAMzC,SAAgB,2BAA2B,KAAa,SAAkB;AAExE,QAAO,mBADM,iBAAiB,KAAK,QAAQ,CACZ,IAAI;;;;;AAMrC,SAAgB,kCACd,KACA,SACA;AAEA,QAAO,0BADM,wBAAwB,KAAK,QAAQ,CACZ,IAAI;;;;;AAM5C,SAAgB,8BAA8B,KAAa,SAAkB;AAE3E,QAAO,sBADM,oBAAoB,KAAK,QAAQ,CACZ,IAAI;;;;;AAMxC,SAAgB,0BAA0B,KAAa,SAAkB;AAEvE,QAAO,kBADM,gBAAgB,KAAK,QAAQ,CACZ,IAAI;;AAOpC,SAAgB,qCAA2C;AACzD,qBAAoB;;AAGtB,SAAgB,iCAAuC;AACrD,iBAAgB;;AAGlB,SAAgB,wCAA8C;AAC5D,wBAAuB;;AAGzB,SAAgB,oCAA0C;AACxD,oBAAmB;;AAGrB,SAAgB,gCAAsC;AACpD,gBAAe;;AAGjB,SAAgB,iCAAuC;AACrD,qCAAoC;AACpC,iCAAgC;AAChC,wCAAuC;AACvC,oCAAmC;AACnC,gCAA+B"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"docs.feature.js","names":[],"sources":["../../src/features/docs.feature.ts"],"sourcesContent":["import type { FeatureModuleSpec } from '@contractspec/lib.contracts/features';\n\n/**\n * Documentation feature for ContractSpec.\n * Provides comprehensive documentation system including search and navigation.\n */\nexport const DocsFeature: FeatureModuleSpec = {\n meta: {\n key: 'contractspec.docs',\n version: '1.0.0',\n title: 'Documentation',\n description: 'Comprehensive documentation system for ContractSpec',\n domain: 'platform',\n owners: ['@platform.docs'],\n tags: ['documentation', 'guides', 'api-reference'],\n stability: 'stable',\n },\n operations: [\n { key: 'docs.search', version: '1.0.0' },\n { key: 'docs.navigate', version: '1.0.0' },\n ],\n events: [\n { key: 'docs.page_viewed', version: '1.0.0' },\n { key: 'docs.search_performed', version: '1.0.0' },\n ],\n presentations: [\n { key: 'docs.landing', version: '1.0.0' },\n { key: 'docs.getting-started', version: '1.0.0' },\n { key: 'docs.architecture', version: '1.0.0' },\n ],\n capabilities: {\n provides: [{ key: 'contracts.docs', version: '1.0.0' }],\n requires: [],\n },\n};\n"],"mappings":";;;;;AAMA,MAAa,cAAiC;CAC5C,MAAM;EACJ,KAAK;EACL,SAAS;EACT,OAAO;EACP,aAAa;EACb,QAAQ;EACR,QAAQ,CAAC,iBAAiB;EAC1B,MAAM;GAAC;GAAiB;GAAU;GAAgB;EAClD,WAAW;EACZ;CACD,YAAY,CACV;EAAE,KAAK;EAAe,SAAS;EAAS,EACxC;EAAE,KAAK;EAAiB,SAAS;EAAS,CAC3C;CACD,QAAQ,CACN;EAAE,KAAK;EAAoB,SAAS;EAAS,EAC7C;EAAE,KAAK;EAAyB,SAAS;EAAS,CACnD;CACD,eAAe;EACb;GAAE,KAAK;GAAgB,SAAS;GAAS;EACzC;GAAE,KAAK;GAAwB,SAAS;GAAS;EACjD;GAAE,KAAK;GAAqB,SAAS;GAAS;EAC/C;CACD,cAAc;EACZ,UAAU,CAAC;GAAE,KAAK;GAAkB,SAAS;GAAS,CAAC;EACvD,UAAU,EAAE;EACb;CACF"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"mcp.feature.js","names":[],"sources":["../../src/features/mcp.feature.ts"],"sourcesContent":["import type { FeatureModuleSpec } from '@contractspec/lib.contracts/features';\n\n/**\n * MCP (Model Context Protocol) integration feature for ContractSpec.\n * Enables AI agent integration through MCP tools, resources, and prompts.\n */\nexport const MCPFeature: FeatureModuleSpec = {\n meta: {\n key: 'contractspec.mcp',\n version: '1.0.0',\n title: 'MCP Integration',\n description: 'Model Context Protocol server for AI agent integration',\n domain: 'platform',\n owners: ['@platform.mcp'],\n tags: ['mcp', 'ai-agents', 'tooling'],\n stability: 'beta',\n },\n operations: [\n { key: 'mcp.tool.register', version: '1.0.0' },\n { key: 'mcp.resource.register', version: '1.0.0' },\n { key: 'mcp.prompt.register', version: '1.0.0' },\n ],\n events: [\n { key: 'mcp.tool_invoked', version: '1.0.0' },\n { key: 'mcp.resource_accessed', version: '1.0.0' },\n ],\n presentations: [],\n capabilities: {\n provides: [{ key: 'contracts.mcp', version: '1.0.0' }],\n requires: [{ key: 'contracts.operations', version: '1.0.0' }],\n },\n};\n"],"mappings":";;;;;AAMA,MAAa,aAAgC;CAC3C,MAAM;EACJ,KAAK;EACL,SAAS;EACT,OAAO;EACP,aAAa;EACb,QAAQ;EACR,QAAQ,CAAC,gBAAgB;EACzB,MAAM;GAAC;GAAO;GAAa;GAAU;EACrC,WAAW;EACZ;CACD,YAAY;EACV;GAAE,KAAK;GAAqB,SAAS;GAAS;EAC9C;GAAE,KAAK;GAAyB,SAAS;GAAS;EAClD;GAAE,KAAK;GAAuB,SAAS;GAAS;EACjD;CACD,QAAQ,CACN;EAAE,KAAK;EAAoB,SAAS;EAAS,EAC7C;EAAE,KAAK;EAAyB,SAAS;EAAS,CACnD;CACD,eAAe,EAAE;CACjB,cAAc;EACZ,UAAU,CAAC;GAAE,KAAK;GAAiB,SAAS;GAAS,CAAC;EACtD,UAAU,CAAC;GAAE,KAAK;GAAwB,SAAS;GAAS,CAAC;EAC9D;CACF"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"presentations.feature.js","names":[],"sources":["../../src/features/presentations.feature.ts"],"sourcesContent":["import type { FeatureModuleSpec } from '@contractspec/lib.contracts/features';\n\n/**\n * Presentations feature for ContractSpec.\n * Provides cross-platform rendering of contract-driven UI.\n */\nexport const PresentationsFeature: FeatureModuleSpec = {\n meta: {\n key: 'contractspec.presentations',\n version: '1.0.0',\n title: 'Presentation Runtime',\n description: 'Cross-platform rendering of contract-driven UI',\n domain: 'platform',\n owners: ['@platform.presentations'],\n tags: ['presentations', 'ui', 'rendering', 'cross-platform'],\n stability: 'beta',\n },\n operations: [\n { key: 'presentation.render', version: '1.0.0' },\n { key: 'presentation.transform', version: '1.0.0' },\n ],\n events: [\n { key: 'presentation.rendered', version: '1.0.0' },\n { key: 'presentation.transformed', version: '1.0.0' },\n ],\n presentations: [\n { key: 'form.standard', version: '1.0.0' },\n { key: 'list.standard', version: '1.0.0' },\n { key: 'detail.standard', version: '1.0.0' },\n ],\n capabilities: {\n provides: [{ key: 'contracts.presentations', version: '1.0.0' }],\n requires: [],\n },\n};\n"],"mappings":";;;;;AAMA,MAAa,uBAA0C;CACrD,MAAM;EACJ,KAAK;EACL,SAAS;EACT,OAAO;EACP,aAAa;EACb,QAAQ;EACR,QAAQ,CAAC,0BAA0B;EACnC,MAAM;GAAC;GAAiB;GAAM;GAAa;GAAiB;EAC5D,WAAW;EACZ;CACD,YAAY,CACV;EAAE,KAAK;EAAuB,SAAS;EAAS,EAChD;EAAE,KAAK;EAA0B,SAAS;EAAS,CACpD;CACD,QAAQ,CACN;EAAE,KAAK;EAAyB,SAAS;EAAS,EAClD;EAAE,KAAK;EAA4B,SAAS;EAAS,CACtD;CACD,eAAe;EACb;GAAE,KAAK;GAAiB,SAAS;GAAS;EAC1C;GAAE,KAAK;GAAiB,SAAS;GAAS;EAC1C;GAAE,KAAK;GAAmB,SAAS;GAAS;EAC7C;CACD,cAAc;EACZ,UAAU,CAAC;GAAE,KAAK;GAA2B,SAAS;GAAS,CAAC;EAChE,UAAU,EAAE;EACb;CACF"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"registry.js","names":[],"sources":["../../src/features/registry.ts"],"sourcesContent":["import { FeatureRegistry } from '@contractspec/lib.contracts/features';\nimport { AppConfigFeature } from '@contractspec/lib.contracts/app-config';\nimport { DocsFeature } from './docs.feature';\nimport { MCPFeature } from './mcp.feature';\nimport { PresentationsFeature } from './presentations.feature';\n\n/**\n * Create and initialize the ContractSpec feature registry.\n * Registers all ContractSpec features without validation (ops/presentations not registered).\n */\nexport function createContractSpecFeatureRegistry(): FeatureRegistry {\n const features = new FeatureRegistry();\n\n // Register ContractSpec-specific features\n features.register(DocsFeature);\n features.register(MCPFeature);\n features.register(PresentationsFeature);\n\n // Register lib.contracts features\n features.register(AppConfigFeature);\n\n return features;\n}\n\n/** Singleton instance of the feature registry. */\nlet registryInstance: FeatureRegistry | null = null;\n\n/**\n * Get the singleton ContractSpec feature registry.\n * Creates the registry on first call, returns cached instance thereafter.\n */\nexport function getContractSpecFeatureRegistry(): FeatureRegistry {\n if (!registryInstance) {\n registryInstance = createContractSpecFeatureRegistry();\n }\n return registryInstance;\n}\n\n/**\n * Reset the feature registry singleton (for testing).\n */\nexport function resetContractSpecFeatureRegistry(): void {\n registryInstance = null;\n}\n"],"mappings":";;;;;;;;;;;AAUA,SAAgB,oCAAqD;CACnE,MAAM,WAAW,IAAI,iBAAiB;AAGtC,UAAS,SAAS,YAAY;AAC9B,UAAS,SAAS,WAAW;AAC7B,UAAS,SAAS,qBAAqB;AAGvC,UAAS,SAAS,iBAAiB;AAEnC,QAAO;;;AAIT,IAAI,mBAA2C;;;;;AAM/C,SAAgB,iCAAkD;AAChE,KAAI,CAAC,iBACH,oBAAmB,mCAAmC;AAExD,QAAO;;;;;AAMT,SAAgB,mCAAyC;AACvD,oBAAmB"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"logger.js","names":[],"sources":["../../../src/infrastructure/elysia/logger.ts"],"sourcesContent":["import { Logger, LogLevel } from '@contractspec/lib.logger';\n\n// Centralized logger configuration for the API\nexport const createAppLogger = () =>\n new Logger({\n level:\n process.env.NODE_ENV === 'production' ? LogLevel.INFO : LogLevel.DEBUG,\n environment: process.env.NODE_ENV || 'development',\n enableTracing: true,\n enableTiming: true,\n enableContext: true,\n enableColors: process.env.NODE_ENV !== 'production',\n });\n\n// Default logger instance for the application\nexport const appLogger = createAppLogger();\n\n// Logger specifically for database operations\nexport const dbLogger = new Logger({\n level: process.env.NODE_ENV === 'production' ? LogLevel.WARN : LogLevel.DEBUG,\n environment: process.env.NODE_ENV || 'development',\n enableTracing: true,\n enableTiming: true,\n enableContext: true,\n enableColors: process.env.NODE_ENV !== 'production',\n});\n\n// Logger for authentication operations\nexport const authLogger = new Logger({\n level: LogLevel.INFO, // Always log auth events\n environment: process.env.NODE_ENV || 'development',\n enableTracing: true,\n enableTiming: true,\n enableContext: true,\n enableColors: process.env.NODE_ENV !== 'production',\n});\n\nexport { Logger, LogLevel };\n"],"mappings":";;;AAGA,MAAa,wBACX,IAAI,OAAO;CACT,OACE,QAAQ,IAAI,aAAa,eAAe,SAAS,OAAO,SAAS;CACnE,aAAa,QAAQ,IAAI,YAAY;CACrC,eAAe;CACf,cAAc;CACd,eAAe;CACf,cAAc,QAAQ,IAAI,aAAa;CACxC,CAAC;AAGJ,MAAa,YAAY,iBAAiB;AAG1C,MAAa,WAAW,IAAI,OAAO;CACjC,OAAO,QAAQ,IAAI,aAAa,eAAe,SAAS,OAAO,SAAS;CACxE,aAAa,QAAQ,IAAI,YAAY;CACrC,eAAe;CACf,cAAc;CACd,eAAe;CACf,cAAc,QAAQ,IAAI,aAAa;CACxC,CAAC;AAGF,MAAa,aAAa,IAAI,OAAO;CACnC,OAAO,SAAS;CAChB,aAAa,QAAQ,IAAI,YAAY;CACrC,eAAe;CACf,cAAc;CACd,eAAe;CACf,cAAc,QAAQ,IAAI,aAAa;CACxC,CAAC"}
@@ -1,49 +0,0 @@
1
- //#region ../../libs/content-gen/dist/seo/optimizer.js
2
- var SeoOptimizer = class {
3
- optimize(brief) {
4
- const keywords = this.keywords(brief);
5
- const metaTitle = `${brief.title} | ContractSpec`;
6
- const metaDescription = `${brief.summary} — built for ${brief.audience.role}${brief.audience.industry ? ` in ${brief.audience.industry}` : ""}.`;
7
- return {
8
- metaTitle,
9
- metaDescription,
10
- keywords,
11
- slug: this.slugify(brief.title),
12
- schemaMarkup: this.schema(brief, metaDescription, keywords)
13
- };
14
- }
15
- keywords(brief) {
16
- const base = [
17
- brief.title,
18
- ...brief.problems,
19
- ...brief.solutions
20
- ];
21
- return [...new Set(base.flatMap((entry) => entry.toLowerCase().split(/\s+/)))].filter((word) => word.length > 3).slice(0, 12);
22
- }
23
- slugify(text) {
24
- return text.toLowerCase().replace(/[^a-z0-9]+/g, "-").replace(/^-+|-+$/g, "");
25
- }
26
- schema(brief, description, keywords) {
27
- return {
28
- "@context": "https://schema.org",
29
- "@type": "Product",
30
- name: brief.title,
31
- description,
32
- audience: {
33
- "@type": "Audience",
34
- audienceType: brief.audience.role,
35
- industry: brief.audience.industry
36
- },
37
- offers: {
38
- "@type": "Offer",
39
- description: brief.callToAction ?? "Start building with ContractSpec"
40
- },
41
- keywords: keywords.join(", "),
42
- citation: brief.references?.map((ref) => ref.url)
43
- };
44
- }
45
- };
46
-
47
- //#endregion
48
- export { SeoOptimizer };
49
- //# sourceMappingURL=optimizer.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"optimizer.js","names":[],"sources":["../../../../../../../libs/content-gen/dist/seo/optimizer.js"],"sourcesContent":["//#region src/seo/optimizer.ts\nvar SeoOptimizer = class {\n\toptimize(brief) {\n\t\tconst keywords = this.keywords(brief);\n\t\tconst metaTitle = `${brief.title} | ContractSpec`;\n\t\tconst metaDescription = `${brief.summary} — built for ${brief.audience.role}${brief.audience.industry ? ` in ${brief.audience.industry}` : \"\"}.`;\n\t\treturn {\n\t\t\tmetaTitle,\n\t\t\tmetaDescription,\n\t\t\tkeywords,\n\t\t\tslug: this.slugify(brief.title),\n\t\t\tschemaMarkup: this.schema(brief, metaDescription, keywords)\n\t\t};\n\t}\n\tkeywords(brief) {\n\t\tconst base = [\n\t\t\tbrief.title,\n\t\t\t...brief.problems,\n\t\t\t...brief.solutions\n\t\t];\n\t\treturn [...new Set(base.flatMap((entry) => entry.toLowerCase().split(/\\s+/)))].filter((word) => word.length > 3).slice(0, 12);\n\t}\n\tslugify(text) {\n\t\treturn text.toLowerCase().replace(/[^a-z0-9]+/g, \"-\").replace(/^-+|-+$/g, \"\");\n\t}\n\tschema(brief, description, keywords) {\n\t\treturn {\n\t\t\t\"@context\": \"https://schema.org\",\n\t\t\t\"@type\": \"Product\",\n\t\t\tname: brief.title,\n\t\t\tdescription,\n\t\t\taudience: {\n\t\t\t\t\"@type\": \"Audience\",\n\t\t\t\taudienceType: brief.audience.role,\n\t\t\t\tindustry: brief.audience.industry\n\t\t\t},\n\t\t\toffers: {\n\t\t\t\t\"@type\": \"Offer\",\n\t\t\t\tdescription: brief.callToAction ?? \"Start building with ContractSpec\"\n\t\t\t},\n\t\t\tkeywords: keywords.join(\", \"),\n\t\t\tcitation: brief.references?.map((ref) => ref.url)\n\t\t};\n\t}\n};\n\n//#endregion\nexport { SeoOptimizer };\n//# sourceMappingURL=optimizer.js.map"],"mappings":";AACA,IAAI,eAAe,MAAM;CACxB,SAAS,OAAO;EACf,MAAM,WAAW,KAAK,SAAS,MAAM;EACrC,MAAM,YAAY,GAAG,MAAM,MAAM;EACjC,MAAM,kBAAkB,GAAG,MAAM,QAAQ,eAAe,MAAM,SAAS,OAAO,MAAM,SAAS,WAAW,OAAO,MAAM,SAAS,aAAa,GAAG;AAC9I,SAAO;GACN;GACA;GACA;GACA,MAAM,KAAK,QAAQ,MAAM,MAAM;GAC/B,cAAc,KAAK,OAAO,OAAO,iBAAiB,SAAS;GAC3D;;CAEF,SAAS,OAAO;EACf,MAAM,OAAO;GACZ,MAAM;GACN,GAAG,MAAM;GACT,GAAG,MAAM;GACT;AACD,SAAO,CAAC,GAAG,IAAI,IAAI,KAAK,SAAS,UAAU,MAAM,aAAa,CAAC,MAAM,MAAM,CAAC,CAAC,CAAC,CAAC,QAAQ,SAAS,KAAK,SAAS,EAAE,CAAC,MAAM,GAAG,GAAG;;CAE9H,QAAQ,MAAM;AACb,SAAO,KAAK,aAAa,CAAC,QAAQ,eAAe,IAAI,CAAC,QAAQ,YAAY,GAAG;;CAE9E,OAAO,OAAO,aAAa,UAAU;AACpC,SAAO;GACN,YAAY;GACZ,SAAS;GACT,MAAM,MAAM;GACZ;GACA,UAAU;IACT,SAAS;IACT,cAAc,MAAM,SAAS;IAC7B,UAAU,MAAM,SAAS;IACzB;GACD,QAAQ;IACP,SAAS;IACT,aAAa,MAAM,gBAAgB;IACnC;GACD,UAAU,SAAS,KAAK,KAAK;GAC7B,UAAU,MAAM,YAAY,KAAK,QAAQ,IAAI,IAAI;GACjD"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"client.js","names":[],"sources":["../../../src/libs/email/client.ts"],"sourcesContent":["import { createClient, Temv1alpha1 } from '@scaleway/sdk';\nimport type { Region } from '@scaleway/sdk-client';\nimport { Logger } from '@contractspec/lib.logger';\nimport type {\n EmailAddress,\n EmailConfigResult,\n EmailSendOutcome,\n EmailServiceConfig,\n SendEmailRequest,\n} from './types';\n\nconst DEFAULT_FROM: EmailAddress = {\n email: 'noreply@transactional.contractspec.io',\n name: 'ContractSpec',\n};\n\nconst DEFAULT_TEAM_INBOX: EmailAddress = {\n email: 'contact@contractspec.io',\n name: 'ContractSpec Team',\n};\n\nconst DEFAULT_REGION: Region = 'fr-par';\n\ntype EmailApi = Pick<Temv1alpha1.API, 'createEmail'>;\n\nlet cachedConfig: EmailServiceConfig | null = null;\nlet cachedClient: EmailApi | null = null;\nlet apiFactory: (client: ReturnType<typeof createClient>) => EmailApi = (\n client\n) => new Temv1alpha1.API(client);\n\nconst mapRegion = (value?: string | null): Region => {\n const normalized = value?.trim().toLowerCase();\n if (normalized === 'par' || normalized === 'fr-par') return 'fr-par';\n if (normalized === 'ams' || normalized === 'nl-ams') return 'nl-ams';\n if (normalized === 'waw' || normalized === 'pl-waw') return 'pl-waw';\n return DEFAULT_REGION;\n};\n\nexport const getEmailConfig = (): EmailConfigResult => {\n if (cachedConfig) {\n return { ok: true, config: cachedConfig };\n }\n\n const accessKey =\n process.env.SCALEWAY_ACCESS_KEY || process.env.SCALEWAY_ACCESS_KEY_QUEUE;\n const secretKey =\n process.env.SCALEWAY_SECRET_KEY || process.env.SCALEWAY_SECRET_KEY_QUEUE;\n const projectId = process.env.SCALEWAY_PROJECT_ID;\n\n if (!accessKey || !secretKey || !projectId) {\n return {\n ok: false,\n errorMessage:\n 'Email service is not configured. Please contact us directly at contact@contractspec.io.',\n };\n }\n\n const region = mapRegion(process.env.SCALEWAY_REGION);\n\n cachedConfig = {\n accessKey,\n secretKey,\n projectId,\n region,\n defaultZone: `${region}-1`,\n from: {\n email: process.env.SCALEWAY_EMAIL_FROM_EMAIL ?? DEFAULT_FROM.email,\n name: process.env.SCALEWAY_EMAIL_FROM_NAME ?? DEFAULT_FROM.name,\n },\n teamInbox: {\n email: process.env.SCALEWAY_EMAIL_TEAM_EMAIL ?? DEFAULT_TEAM_INBOX.email,\n name: process.env.SCALEWAY_EMAIL_TEAM_NAME ?? DEFAULT_TEAM_INBOX.name,\n },\n };\n\n return { ok: true, config: cachedConfig };\n};\n\nconst getTemClient = (config: EmailServiceConfig): EmailApi => {\n if (cachedClient) {\n return cachedClient;\n }\n\n const client = createClient({\n accessKey: config.accessKey,\n secretKey: config.secretKey,\n defaultProjectId: config.projectId,\n defaultRegion: config.region,\n defaultZone: config.defaultZone,\n });\n\n cachedClient = apiFactory(client);\n return cachedClient;\n};\n\nexport const sendEmail = async (\n config: EmailServiceConfig,\n request: SendEmailRequest\n): Promise<EmailSendOutcome> => {\n try {\n const client = getTemClient(config);\n\n await client.createEmail({\n region: config.region,\n projectId: config.projectId,\n from: config.from,\n to: request.to,\n subject: request.subject,\n text: request.text,\n html: request.html || request.text,\n additionalHeaders: request.replyTo\n ? [{ key: 'Reply-To', value: request.replyTo }]\n : undefined,\n });\n\n return { success: true };\n } catch (error) {\n new Logger().error('scaleway_tem_email_send_failed', {\n context: request.context ?? 'email',\n error: error instanceof Error ? error.message : error,\n });\n return {\n success: false,\n error,\n errorMessage: 'Failed to send email via Scaleway.',\n };\n }\n};\n\nexport const __internal = {\n resetCaches() {\n cachedClient = null;\n cachedConfig = null;\n apiFactory = (client: ReturnType<typeof createClient>) =>\n new Temv1alpha1.API(client);\n },\n setApiFactory(\n factory: (client: ReturnType<typeof createClient>) => EmailApi\n ) {\n apiFactory = factory;\n },\n setClient(client: EmailApi) {\n cachedClient = client;\n },\n};\n"],"mappings":";;;;AAWA,MAAM,eAA6B;CACjC,OAAO;CACP,MAAM;CACP;AAED,MAAM,qBAAmC;CACvC,OAAO;CACP,MAAM;CACP;AAED,MAAM,iBAAyB;AAI/B,IAAI,eAA0C;AAC9C,IAAI,eAAgC;AACpC,IAAI,cACF,WACG,IAAI,YAAY,IAAI,OAAO;AAEhC,MAAM,aAAa,UAAkC;CACnD,MAAM,aAAa,OAAO,MAAM,CAAC,aAAa;AAC9C,KAAI,eAAe,SAAS,eAAe,SAAU,QAAO;AAC5D,KAAI,eAAe,SAAS,eAAe,SAAU,QAAO;AAC5D,KAAI,eAAe,SAAS,eAAe,SAAU,QAAO;AAC5D,QAAO;;AAGT,MAAa,uBAA0C;AACrD,KAAI,aACF,QAAO;EAAE,IAAI;EAAM,QAAQ;EAAc;CAG3C,MAAM,YACJ,QAAQ,IAAI,uBAAuB,QAAQ,IAAI;CACjD,MAAM,YACJ,QAAQ,IAAI,uBAAuB,QAAQ,IAAI;CACjD,MAAM,YAAY,QAAQ,IAAI;AAE9B,KAAI,CAAC,aAAa,CAAC,aAAa,CAAC,UAC/B,QAAO;EACL,IAAI;EACJ,cACE;EACH;CAGH,MAAM,SAAS,UAAU,QAAQ,IAAI,gBAAgB;AAErD,gBAAe;EACb;EACA;EACA;EACA;EACA,aAAa,GAAG,OAAO;EACvB,MAAM;GACJ,OAAO,QAAQ,IAAI,6BAA6B,aAAa;GAC7D,MAAM,QAAQ,IAAI,4BAA4B,aAAa;GAC5D;EACD,WAAW;GACT,OAAO,QAAQ,IAAI,6BAA6B,mBAAmB;GACnE,MAAM,QAAQ,IAAI,4BAA4B,mBAAmB;GAClE;EACF;AAED,QAAO;EAAE,IAAI;EAAM,QAAQ;EAAc;;AAG3C,MAAM,gBAAgB,WAAyC;AAC7D,KAAI,aACF,QAAO;CAGT,MAAM,SAAS,aAAa;EAC1B,WAAW,OAAO;EAClB,WAAW,OAAO;EAClB,kBAAkB,OAAO;EACzB,eAAe,OAAO;EACtB,aAAa,OAAO;EACrB,CAAC;AAEF,gBAAe,WAAW,OAAO;AACjC,QAAO;;AAGT,MAAa,YAAY,OACvB,QACA,YAC8B;AAC9B,KAAI;AAGF,QAFe,aAAa,OAAO,CAEtB,YAAY;GACvB,QAAQ,OAAO;GACf,WAAW,OAAO;GAClB,MAAM,OAAO;GACb,IAAI,QAAQ;GACZ,SAAS,QAAQ;GACjB,MAAM,QAAQ;GACd,MAAM,QAAQ,QAAQ,QAAQ;GAC9B,mBAAmB,QAAQ,UACvB,CAAC;IAAE,KAAK;IAAY,OAAO,QAAQ;IAAS,CAAC,GAC7C;GACL,CAAC;AAEF,SAAO,EAAE,SAAS,MAAM;UACjB,OAAO;AACd,MAAI,QAAQ,CAAC,MAAM,kCAAkC;GACnD,SAAS,QAAQ,WAAW;GAC5B,OAAO,iBAAiB,QAAQ,MAAM,UAAU;GACjD,CAAC;AACF,SAAO;GACL,SAAS;GACT;GACA,cAAc;GACf;;;AAIL,MAAa,aAAa;CACxB,cAAc;AACZ,iBAAe;AACf,iBAAe;AACf,gBAAc,WACZ,IAAI,YAAY,IAAI,OAAO;;CAE/B,cACE,SACA;AACA,eAAa;;CAEf,UAAU,QAAkB;AAC1B,iBAAe;;CAElB"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"contact.js","names":[],"sources":["../../../src/libs/email/contact.ts"],"sourcesContent":["'use server';\n\nimport { getEmailConfig, sendEmail } from './client';\nimport { escapeHtml, formatMultilineHtml } from './utils';\nimport type { SubmitContactFormResult } from './types';\n\nconst CONTACT_MISSING_CONFIG =\n 'Email service is not configured. Please contact us directly at contact@contractspec.io.';\nconst CONTACT_SEND_ERROR =\n 'Failed to send message. Please contact us directly at contact@contractspec.io.';\n\nexport const submitContactForm = async (\n formData: FormData\n): Promise<SubmitContactFormResult> => {\n const name = (formData.get('name') ?? '').toString().trim();\n const email = (formData.get('email') ?? '').toString().trim();\n const message = (formData.get('message') ?? '').toString().trim();\n\n if (!email) {\n return {\n success: false,\n text: 'Please fill in all required fields.',\n };\n }\n\n const configResult = getEmailConfig();\n if (!configResult.ok || !configResult.config) {\n return {\n success: false,\n text: configResult.errorMessage ?? CONTACT_MISSING_CONFIG,\n };\n }\n\n const senderName = name || email;\n const emailContentText = `\nNew contact form submission from ${senderName}\n\nContact Information:\n- Name: ${name || 'Not provided'}\n- Email: ${email}\n\nMessage:\n${message || 'No message provided'}\n\n---\nSubmitted via ContractSpec contact form\n `.trim();\n\n const emailContentHtml = `\n <div style=\"font-family: sans-serif; max-width: 640px; margin: 0 auto;\">\n <h1 style=\"color: #8b5cf6; margin-bottom: 12px;\">New contact form submission</h1>\n <p style=\"margin: 0 0 12px;\">From ${escapeHtml(senderName)}</p>\n <h2 style=\"color: #8b5cf6; margin: 16px 0 8px;\">Contact Information</h2>\n <ul style=\"padding-left: 16px; line-height: 1.6; margin: 0 0 16px;\">\n <li>Name: ${escapeHtml(name || 'Not provided')}</li>\n <li>Email: ${escapeHtml(email)}</li>\n </ul>\n <h2 style=\"color: #8b5cf6; margin: 16px 0 8px;\">Message</h2>\n <div style=\"border: 1px solid #e5e7eb; border-radius: 8px; padding: 12px; background: #f9fafb; white-space: pre-wrap; line-height: 1.6;\">\n ${message ? formatMultilineHtml(message) : 'No message provided'}\n </div>\n <p style=\"color: #6b7280; font-size: 12px; margin-top: 20px;\">Submitted via ContractSpec contact form</p>\n </div>\n `;\n\n const sendResult = await sendEmail(configResult.config, {\n to: [configResult.config.teamInbox],\n subject: `New Contact Form Message from ${senderName}`,\n text: emailContentText,\n html: emailContentHtml,\n replyTo: email,\n context: 'contact-form',\n });\n\n if (!sendResult.success) {\n return { success: false, text: CONTACT_SEND_ERROR };\n }\n\n return { success: true, text: 'Message sent successfully!' };\n};\n"],"mappings":";;;;;;AAMA,MAAM,yBACJ;AACF,MAAM,qBACJ;AAEF,MAAa,oBAAoB,OAC/B,aACqC;CACrC,MAAM,QAAQ,SAAS,IAAI,OAAO,IAAI,IAAI,UAAU,CAAC,MAAM;CAC3D,MAAM,SAAS,SAAS,IAAI,QAAQ,IAAI,IAAI,UAAU,CAAC,MAAM;CAC7D,MAAM,WAAW,SAAS,IAAI,UAAU,IAAI,IAAI,UAAU,CAAC,MAAM;AAEjE,KAAI,CAAC,MACH,QAAO;EACL,SAAS;EACT,MAAM;EACP;CAGH,MAAM,eAAe,gBAAgB;AACrC,KAAI,CAAC,aAAa,MAAM,CAAC,aAAa,OACpC,QAAO;EACL,SAAS;EACT,MAAM,aAAa,gBAAgB;EACpC;CAGH,MAAM,aAAa,QAAQ;CAC3B,MAAM,mBAAmB;mCACQ,WAAW;;;UAGpC,QAAQ,eAAe;WACtB,MAAM;;;EAGf,WAAW,sBAAsB;;;;IAI/B,MAAM;CAER,MAAM,mBAAmB;;;0CAGe,WAAW,WAAW,CAAC;;;oBAG7C,WAAW,QAAQ,eAAe,CAAC;qBAClC,WAAW,MAAM,CAAC;;;;UAI7B,UAAU,oBAAoB,QAAQ,GAAG,sBAAsB;;;;;AAevE,KAAI,EATe,MAAM,UAAU,aAAa,QAAQ;EACtD,IAAI,CAAC,aAAa,OAAO,UAAU;EACnC,SAAS,iCAAiC;EAC1C,MAAM;EACN,MAAM;EACN,SAAS;EACT,SAAS;EACV,CAAC,EAEc,QACd,QAAO;EAAE,SAAS;EAAO,MAAM;EAAoB;AAGrD,QAAO;EAAE,SAAS;EAAM,MAAM;EAA8B"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"newsletter.js","names":[],"sources":["../../../src/libs/email/newsletter.ts"],"sourcesContent":["'use server';\n\nimport { getEmailConfig, sendEmail } from './client';\nimport { formatMultilineHtml } from './utils';\nimport type { SubmitNewsletterResult } from './types';\n\nconst NEWSLETTER_MISSING_CONFIG =\n 'Newsletter service is not configured. Please try again later.';\nconst NEWSLETTER_SEND_ERROR =\n 'Failed to subscribe. Please try again later or contact us directly.';\n\nexport const subscribeToNewsletter = async (\n formData: FormData\n): Promise<SubmitNewsletterResult> => {\n const email = (formData.get('email') ?? '').toString().trim();\n\n if (!email || !email.includes('@')) {\n return {\n success: false,\n text: 'Please enter a valid email address.',\n };\n }\n\n const configResult = getEmailConfig();\n if (!configResult.ok || !configResult.config) {\n return {\n success: false,\n text: configResult.errorMessage ?? NEWSLETTER_MISSING_CONFIG,\n };\n }\n\n const welcomeText = `\nWelcome to ContractSpec!\n\nThanks for subscribing to our newsletter. You'll receive updates on:\n\n• New integrations (Stripe, OpenAI, Qdrant, and more)\n• Product features and improvements\n• New templates and examples\n• Architecture insights and best practices\n• Documentation updates\n\nStay tuned for exciting updates!\n\n---\nContractSpec Team\nhttps://contractspec.io\n\nUnsubscribe: Reply to this email with \"unsubscribe\"\n `.trim();\n\n const welcomeHtml = `\n <div style=\"font-family: sans-serif; max-width: 640px; margin: 0 auto;\">\n <h1 style=\"color: #8b5cf6;\">Welcome to ContractSpec!</h1>\n <p>Thanks for subscribing to our newsletter. You'll receive updates on:</p>\n <ul style=\"line-height: 1.8;\">\n <li>New integrations (Stripe, OpenAI, Qdrant, and more)</li>\n <li>Product features and improvements</li>\n <li>New templates and examples</li>\n <li>Architecture insights and best practices</li>\n <li>Documentation updates</li>\n </ul>\n <p>Stay tuned for exciting updates!</p>\n <hr style=\"margin: 30px 0; border: none; border-top: 1px solid #e5e7eb;\" />\n <p style=\"color: #6b7280; font-size: 14px;\">\n ContractSpec Team<br />\n <a href=\"https://contractspec.io\" style=\"color: #8b5cf6;\">contractspec.io</a>\n </p>\n <p style=\"color: #9ca3af; font-size: 12px;\">\n To unsubscribe, reply to this email with \"unsubscribe\"\n </p>\n </div>\n `;\n\n const userSend = await sendEmail(configResult.config, {\n to: [{ email }],\n subject: 'Welcome to ContractSpec Newsletter',\n text: welcomeText,\n html: welcomeHtml,\n context: 'newsletter-welcome',\n });\n\n if (!userSend.success) {\n return { success: false, text: NEWSLETTER_SEND_ERROR };\n }\n\n const teamNotificationText = `New newsletter subscription from: ${email}`;\n const teamNotificationHtml = `\n <div style=\"font-family: sans-serif; max-width: 640px; margin: 0 auto;\">\n <p style=\"margin: 0 0 8px;\">New newsletter subscription</p>\n <p style=\"margin: 0;\"><strong>Email:</strong> ${formatMultilineHtml(email)}</p>\n </div>\n `;\n\n const teamSend = await sendEmail(configResult.config, {\n to: [configResult.config.teamInbox],\n subject: `New Newsletter Subscription: ${email}`,\n text: teamNotificationText,\n html: teamNotificationHtml,\n context: 'newsletter-team-notification',\n });\n\n if (!teamSend.success) {\n return { success: false, text: NEWSLETTER_SEND_ERROR };\n }\n\n return { success: true, text: 'Successfully subscribed!' };\n};\n"],"mappings":";;;;;;AAMA,MAAM,4BACJ;AACF,MAAM,wBACJ;AAEF,MAAa,wBAAwB,OACnC,aACoC;CACpC,MAAM,SAAS,SAAS,IAAI,QAAQ,IAAI,IAAI,UAAU,CAAC,MAAM;AAE7D,KAAI,CAAC,SAAS,CAAC,MAAM,SAAS,IAAI,CAChC,QAAO;EACL,SAAS;EACT,MAAM;EACP;CAGH,MAAM,eAAe,gBAAgB;AACrC,KAAI,CAAC,aAAa,MAAM,CAAC,aAAa,OACpC,QAAO;EACL,SAAS;EACT,MAAM,aAAa,gBAAgB;EACpC;CAGH,MAAM,cAAc;;;;;;;;;;;;;;;;;;IAkBlB,MAAM;AAiCR,KAAI,EARa,MAAM,UAAU,aAAa,QAAQ;EACpD,IAAI,CAAC,EAAE,OAAO,CAAC;EACf,SAAS;EACT,MAAM;EACN,MA3BkB;;;;;;;;;;;;;;;;;;;;;;EA4BlB,SAAS;EACV,CAAC,EAEY,QACZ,QAAO;EAAE,SAAS;EAAO,MAAM;EAAuB;CAGxD,MAAM,uBAAuB,qCAAqC;CAClE,MAAM,uBAAuB;;;sDAGuB,oBAAoB,MAAM,CAAC;;;AAY/E,KAAI,EARa,MAAM,UAAU,aAAa,QAAQ;EACpD,IAAI,CAAC,aAAa,OAAO,UAAU;EACnC,SAAS,gCAAgC;EACzC,MAAM;EACN,MAAM;EACN,SAAS;EACV,CAAC,EAEY,QACZ,QAAO;EAAE,SAAS;EAAO,MAAM;EAAuB;AAGxD,QAAO;EAAE,SAAS;EAAM,MAAM;EAA4B"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"utils.js","names":[],"sources":["../../../src/libs/email/utils.ts"],"sourcesContent":["export const escapeHtml = (value: string): string =>\n value\n .replaceAll('&', '&amp;')\n .replaceAll('<', '&lt;')\n .replaceAll('>', '&gt;');\n\nexport const formatMultilineHtml = (value: string): string =>\n escapeHtml(value).replaceAll('\\n', '<br />');\n"],"mappings":";AAAA,MAAa,cAAc,UACzB,MACG,WAAW,KAAK,QAAQ,CACxB,WAAW,KAAK,OAAO,CACvB,WAAW,KAAK,OAAO;AAE5B,MAAa,uBAAuB,UAClC,WAAW,MAAM,CAAC,WAAW,MAAM,SAAS"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"waitlist-application.js","names":[],"sources":["../../../src/libs/email/waitlist-application.ts"],"sourcesContent":["'use server';\n\nimport { getEmailConfig, sendEmail } from './client';\nimport { escapeHtml, formatMultilineHtml } from './utils';\nimport type { SubmitWaitlistApplicationResult } from './types';\n\nconst APPLICATION_MISSING_CONFIG =\n 'Waitlist application service is not configured. Please try again later.';\nconst APPLICATION_SEND_ERROR =\n 'Failed to submit application. Please try again later or contact us directly.';\n\nexport const submitWaitlistApplication = async (\n formData: FormData\n): Promise<SubmitWaitlistApplicationResult> => {\n const email = (formData.get('email') ?? '').toString().trim();\n const name = (formData.get('name') ?? '').toString().trim();\n const company = (formData.get('company') ?? '').toString().trim();\n const role = (formData.get('role') ?? '').toString().trim();\n const whatBuilding = (formData.get('whatBuilding') ?? '').toString().trim();\n const whatSolving = (formData.get('whatSolving') ?? '').toString().trim();\n const teamSize = (formData.get('teamSize') ?? '').toString().trim();\n const timeline = (formData.get('timeline') ?? '').toString().trim();\n const openToSessions = formData.get('openToSessions') === 'on';\n const okayWithCaseStudies = formData.get('okayWithCaseStudies') === 'on';\n\n if (!email || !email.includes('@')) {\n return {\n success: false,\n text: 'Please enter a valid email address.',\n };\n }\n\n if (!name || !whatBuilding || !whatSolving) {\n return {\n success: false,\n text: 'Please fill in all required fields.',\n };\n }\n\n const configResult = getEmailConfig();\n if (!configResult.ok || !configResult.config) {\n return {\n success: false,\n text: configResult.errorMessage ?? APPLICATION_MISSING_CONFIG,\n };\n }\n\n const applicantText = `\nYou're on the list.\n\nThanks for applying to the ContractSpec design partner program. We're slowly onboarding design partners in waves. If your use case is a good fit, we'll reach out personally.\n\nWhat happens next:\n• We review applications weekly\n• If selected, we'll reach out via email to schedule an intro call\n• During early access, you'll get hands-on support and influence over the roadmap\n\nIn the meantime:\n• Check out our docs: https://contractspec.io/docs\n• Book a demo call: https://contractspec.io/contact\n\nWe're excited about the possibility of working together!\n\n---\nContractSpec Team\nhttps://contractspec.io\n `.trim();\n\n const applicantHtml = `\n <div style=\"font-family: sans-serif; max-width: 640px; margin: 0 auto;\">\n <h1 style=\"color: #8b5cf6;\">You're on the list.</h1>\n <p>Thanks for applying to the ContractSpec design partner program. We're slowly onboarding design partners in waves. If your use case is a good fit, we'll reach out personally.</p>\n <h2 style=\"color: #8b5cf6; margin-top: 24px;\">What happens next:</h2>\n <ul style=\"line-height: 1.8;\">\n <li>We review applications weekly</li>\n <li>If selected, we'll reach out via email to schedule an intro call</li>\n <li>During early access, you'll get hands-on support and influence over the roadmap</li>\n </ul>\n <h2 style=\"color: #8b5cf6; margin-top: 24px;\">In the meantime:</h2>\n <ul style=\"line-height: 1.8;\">\n <li>Check out our <a href=\"https://contractspec.io/docs\" style=\"color: #8b5cf6;\">docs</a></li>\n <li>Book a demo call: <a href=\"https://contractspec.io/contact\" style=\"color: #8b5cf6;\">contractspec.io/contact</a></li>\n </ul>\n <p>We're excited about the possibility of working together!</p>\n <hr style=\"margin: 30px 0; border: none; border-top: 1px solid #e5e7eb;\" />\n <p style=\"color: #6b7280; font-size: 14px;\">\n ContractSpec Team<br />\n <a href=\"https://contractspec.io\" style=\"color: #8b5cf6;\">contractspec.io</a>\n </p>\n </div>\n `;\n\n const applicantSend = await sendEmail(configResult.config, {\n to: [{ email }],\n subject: \"You're on the ContractSpec design partner waitlist!\",\n text: applicantText,\n html: applicantHtml,\n context: 'waitlist-application-welcome',\n });\n\n if (!applicantSend.success) {\n return { success: false, text: APPLICATION_SEND_ERROR };\n }\n\n const preferencesText = `\nOpen to 1:1 product/design sessions: ${openToSessions ? 'Yes' : 'No'}\nOkay with anonymized case studies: ${okayWithCaseStudies ? 'Yes' : 'No'}\n `.trim();\n\n const teamEmailText = `\nNew Design Partner Waitlist Application\n\nContact Information:\n- Name: ${name}\n- Email: ${email}\n${company ? `- Company/Project: ${company}` : ''}\n${role ? `- Role: ${role}` : ''}\n\nApplication Details:\n- What are you building with AI today?\n${whatBuilding}\n\n- What do you hope ContractSpec will solve for you?\n${whatSolving}\n\n- Team Size: ${teamSize || 'Not specified'}\n- Timeline: ${timeline || 'Not specified'}\n\nPreferences:\n- Open to 1:1 product/design sessions: ${openToSessions ? 'Yes' : 'No'}\n- Okay with anonymized case studies: ${okayWithCaseStudies ? 'Yes' : 'No'}\n\n---\nSubmitted via ContractSpec waitlist application form\n `.trim();\n\n const teamEmailHtml = `\n <div style=\"font-family: sans-serif; max-width: 720px; margin: 0 auto;\">\n <h1 style=\"color: #8b5cf6;\">New Design Partner Waitlist Application</h1>\n <h2 style=\"color: #8b5cf6; margin: 16px 0 8px;\">Contact Information</h2>\n <ul style=\"padding-left: 16px; line-height: 1.6; margin: 0 0 16px;\">\n <li>Name: ${escapeHtml(name)}</li>\n <li>Email: ${escapeHtml(email)}</li>\n ${company ? `<li>Company/Project: ${escapeHtml(company)}</li>` : ''}\n ${role ? `<li>Role: ${escapeHtml(role)}</li>` : ''}\n </ul>\n <h2 style=\"color: #8b5cf6; margin: 16px 0 8px;\">Application Details</h2>\n <p style=\"margin: 0 0 8px; font-weight: 600;\">What are you building with AI today?</p>\n <div style=\"border: 1px solid #e5e7eb; border-radius: 8px; padding: 12px; background: #f9fafb; white-space: pre-wrap; line-height: 1.6;\">\n ${formatMultilineHtml(whatBuilding)}\n </div>\n <p style=\"margin: 16px 0 8px; font-weight: 600;\">What do you hope ContractSpec will solve for you?</p>\n <div style=\"border: 1px solid #e5e7eb; border-radius: 8px; padding: 12px; background: #f9fafb; white-space: pre-wrap; line-height: 1.6;\">\n ${formatMultilineHtml(whatSolving)}\n </div>\n <ul style=\"padding-left: 16px; line-height: 1.6; margin: 16px 0;\">\n <li>Team Size: ${escapeHtml(teamSize || 'Not specified')}</li>\n <li>Timeline: ${escapeHtml(timeline || 'Not specified')}</li>\n </ul>\n <h2 style=\"color: #8b5cf6; margin: 16px 0 8px;\">Preferences</h2>\n <div style=\"border: 1px solid #e5e7eb; border-radius: 8px; padding: 12px; background: #f9fafb; line-height: 1.6;\">\n ${formatMultilineHtml(preferencesText)}\n </div>\n <p style=\"color: #6b7280; font-size: 12px; margin-top: 20px;\">Submitted via ContractSpec waitlist application form</p>\n </div>\n `;\n\n const teamSend = await sendEmail(configResult.config, {\n to: [configResult.config.teamInbox],\n subject: `New Design Partner Application: ${name} (${email})`,\n text: teamEmailText,\n html: teamEmailHtml,\n replyTo: email,\n context: 'waitlist-application-team-notification',\n });\n\n if (!teamSend.success) {\n return { success: false, text: APPLICATION_SEND_ERROR };\n }\n\n return {\n success: true,\n text: 'Application submitted successfully!',\n };\n};\n"],"mappings":";;;;;;AAMA,MAAM,6BACJ;AACF,MAAM,yBACJ;AAEF,MAAa,4BAA4B,OACvC,aAC6C;CAC7C,MAAM,SAAS,SAAS,IAAI,QAAQ,IAAI,IAAI,UAAU,CAAC,MAAM;CAC7D,MAAM,QAAQ,SAAS,IAAI,OAAO,IAAI,IAAI,UAAU,CAAC,MAAM;CAC3D,MAAM,WAAW,SAAS,IAAI,UAAU,IAAI,IAAI,UAAU,CAAC,MAAM;CACjE,MAAM,QAAQ,SAAS,IAAI,OAAO,IAAI,IAAI,UAAU,CAAC,MAAM;CAC3D,MAAM,gBAAgB,SAAS,IAAI,eAAe,IAAI,IAAI,UAAU,CAAC,MAAM;CAC3E,MAAM,eAAe,SAAS,IAAI,cAAc,IAAI,IAAI,UAAU,CAAC,MAAM;CACzE,MAAM,YAAY,SAAS,IAAI,WAAW,IAAI,IAAI,UAAU,CAAC,MAAM;CACnE,MAAM,YAAY,SAAS,IAAI,WAAW,IAAI,IAAI,UAAU,CAAC,MAAM;CACnE,MAAM,iBAAiB,SAAS,IAAI,iBAAiB,KAAK;CAC1D,MAAM,sBAAsB,SAAS,IAAI,sBAAsB,KAAK;AAEpE,KAAI,CAAC,SAAS,CAAC,MAAM,SAAS,IAAI,CAChC,QAAO;EACL,SAAS;EACT,MAAM;EACP;AAGH,KAAI,CAAC,QAAQ,CAAC,gBAAgB,CAAC,YAC7B,QAAO;EACL,SAAS;EACT,MAAM;EACP;CAGH,MAAM,eAAe,gBAAgB;AACrC,KAAI,CAAC,aAAa,MAAM,CAAC,aAAa,OACpC,QAAO;EACL,SAAS;EACT,MAAM,aAAa,gBAAgB;EACpC;CAGH,MAAM,gBAAgB;;;;;;;;;;;;;;;;;;;IAmBpB,MAAM;AAkCR,KAAI,EARkB,MAAM,UAAU,aAAa,QAAQ;EACzD,IAAI,CAAC,EAAE,OAAO,CAAC;EACf,SAAS;EACT,MAAM;EACN,MA5BoB;;;;;;;;;;;;;;;;;;;;;;;EA6BpB,SAAS;EACV,CAAC,EAEiB,QACjB,QAAO;EAAE,SAAS;EAAO,MAAM;EAAwB;CAGzD,MAAM,kBAAkB;uCACa,iBAAiB,QAAQ,KAAK;qCAChC,sBAAsB,QAAQ,KAAK;IACpE,MAAM;CAER,MAAM,gBAAgB;;;;UAId,KAAK;WACJ,MAAM;EACf,UAAU,sBAAsB,YAAY,GAAG;EAC/C,OAAO,WAAW,SAAS,GAAG;;;;EAI9B,aAAa;;;EAGb,YAAY;;eAEC,YAAY,gBAAgB;cAC7B,YAAY,gBAAgB;;;yCAGD,iBAAiB,QAAQ,KAAK;uCAChC,sBAAsB,QAAQ,KAAK;;;;IAItE,MAAM;CAER,MAAM,gBAAgB;;;;;oBAKJ,WAAW,KAAK,CAAC;qBAChB,WAAW,MAAM,CAAC;UAC7B,UAAU,wBAAwB,WAAW,QAAQ,CAAC,SAAS,GAAG;UAClE,OAAO,aAAa,WAAW,KAAK,CAAC,SAAS,GAAG;;;;;UAKjD,oBAAoB,aAAa,CAAC;;;;UAIlC,oBAAoB,YAAY,CAAC;;;yBAGlB,WAAW,YAAY,gBAAgB,CAAC;wBACzC,WAAW,YAAY,gBAAgB,CAAC;;;;UAItD,oBAAoB,gBAAgB,CAAC;;;;;AAe7C,KAAI,EATa,MAAM,UAAU,aAAa,QAAQ;EACpD,IAAI,CAAC,aAAa,OAAO,UAAU;EACnC,SAAS,mCAAmC,KAAK,IAAI,MAAM;EAC3D,MAAM;EACN,MAAM;EACN,SAAS;EACT,SAAS;EACV,CAAC,EAEY,QACZ,QAAO;EAAE,SAAS;EAAO,MAAM;EAAwB;AAGzD,QAAO;EACL,SAAS;EACT,MAAM;EACP"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"waitlist.js","names":[],"sources":["../../../src/libs/email/waitlist.ts"],"sourcesContent":["'use server';\n\nimport { getEmailConfig, sendEmail } from './client';\nimport { formatMultilineHtml } from './utils';\nimport type { SubmitWaitlistResult } from './types';\n\nconst WAITLIST_MISSING_CONFIG =\n 'Waitlist service is not configured. Please try again later.';\nconst WAITLIST_SEND_ERROR =\n 'Failed to join waitlist. Please try again later or contact us directly.';\n\nexport const joinWaitlist = async (\n formData: FormData\n): Promise<SubmitWaitlistResult> => {\n const email = (formData.get('email') ?? '').toString().trim();\n\n if (!email || !email.includes('@')) {\n return {\n success: false,\n text: 'Please enter a valid email address.',\n };\n }\n\n const configResult = getEmailConfig();\n if (!configResult.ok || !configResult.config) {\n return {\n success: false,\n text: configResult.errorMessage ?? WAITLIST_MISSING_CONFIG,\n };\n }\n\n const waitlistText = `\nYou're on the waitlist!\n\nThanks for joining the ContractSpec waitlist. You're now in line for early access to:\n\n• Stabilize your AI-generated code with ContractSpec\n• Multi-surface consistency (API, DB, UI, events)\n• Safe regeneration without breaking changes\n• AI governance and contract enforcement\n\nWe'll notify you as soon as early access is available. In the meantime, you can:\n\n• Check out our docs: https://contractspec.io/docs\n• Follow our progress on GitHub\n• Book a demo call to see ContractSpec in action\n\nWe're excited to have you on board!\n\n---\nContractSpec Team\nhttps://contractspec.io\n\nTo remove yourself from the waitlist, reply to this email with \"remove\"\n `.trim();\n\n const waitlistHtml = `\n <div style=\"font-family: sans-serif; max-width: 640px; margin: 0 auto;\">\n <h1 style=\"color: #8b5cf6;\">You're on the waitlist!</h1>\n <p>Thanks for joining the ContractSpec waitlist. You're now in line for early access to:</p>\n <ul style=\"line-height: 1.8;\">\n <li>Stabilize your AI-generated code with ContractSpec</li>\n <li>Multi-surface consistency (API, DB, UI, events)</li>\n <li>Safe regeneration without breaking changes</li>\n <li>AI governance and contract enforcement</li>\n </ul>\n <p>We'll notify you as soon as early access is available. In the meantime, you can:</p>\n <ul style=\"line-height: 1.8;\">\n <li>Check out our <a href=\"https://contractspec.io/docs\" style=\"color: #8b5cf6;\">docs</a></li>\n <li>Follow our progress on GitHub</li>\n <li>Book a demo call to see ContractSpec in action</li>\n </ul>\n <p>We're excited to have you on board!</p>\n <hr style=\"margin: 30px 0; border: none; border-top: 1px solid #e5e7eb;\" />\n <p style=\"color: #6b7280; font-size: 14px;\">\n ContractSpec Team<br />\n <a href=\"https://contractspec.io\" style=\"color: #8b5cf6;\">contractspec.io</a>\n </p>\n <p style=\"color: #9ca3af; font-size: 12px;\">\n To remove yourself from the waitlist, reply to this email with \"remove\"\n </p>\n </div>\n `;\n\n const userSend = await sendEmail(configResult.config, {\n to: [{ email }],\n subject: \"You're on the ContractSpec waitlist!\",\n text: waitlistText,\n html: waitlistHtml,\n context: 'waitlist-welcome',\n });\n\n if (!userSend.success) {\n return { success: false, text: WAITLIST_SEND_ERROR };\n }\n\n const teamNotificationText = `New waitlist signup from: ${email}`;\n const teamNotificationHtml = `\n <div style=\"font-family: sans-serif; max-width: 640px; margin: 0 auto;\">\n <p style=\"margin: 0 0 8px;\">New waitlist signup</p>\n <p style=\"margin: 0;\"><strong>Email:</strong> ${formatMultilineHtml(email)}</p>\n </div>\n `;\n\n const teamSend = await sendEmail(configResult.config, {\n to: [configResult.config.teamInbox],\n subject: `New Waitlist Signup: ${email}`,\n text: teamNotificationText,\n html: teamNotificationHtml,\n context: 'waitlist-team-notification',\n });\n\n if (!teamSend.success) {\n return { success: false, text: WAITLIST_SEND_ERROR };\n }\n\n return { success: true, text: 'Successfully joined waitlist!' };\n};\n"],"mappings":";;;;;;AAMA,MAAM,0BACJ;AACF,MAAM,sBACJ;AAEF,MAAa,eAAe,OAC1B,aACkC;CAClC,MAAM,SAAS,SAAS,IAAI,QAAQ,IAAI,IAAI,UAAU,CAAC,MAAM;AAE7D,KAAI,CAAC,SAAS,CAAC,MAAM,SAAS,IAAI,CAChC,QAAO;EACL,SAAS;EACT,MAAM;EACP;CAGH,MAAM,eAAe,gBAAgB;AACrC,KAAI,CAAC,aAAa,MAAM,CAAC,aAAa,OACpC,QAAO;EACL,SAAS;EACT,MAAM,aAAa,gBAAgB;EACpC;CAGH,MAAM,eAAe;;;;;;;;;;;;;;;;;;;;;;;IAuBnB,MAAM;AAsCR,KAAI,EARa,MAAM,UAAU,aAAa,QAAQ;EACpD,IAAI,CAAC,EAAE,OAAO,CAAC;EACf,SAAS;EACT,MAAM;EACN,MAhCmB;;;;;;;;;;;;;;;;;;;;;;;;;;;EAiCnB,SAAS;EACV,CAAC,EAEY,QACZ,QAAO;EAAE,SAAS;EAAO,MAAM;EAAqB;CAGtD,MAAM,uBAAuB,6BAA6B;CAC1D,MAAM,uBAAuB;;;sDAGuB,oBAAoB,MAAM,CAAC;;;AAY/E,KAAI,EARa,MAAM,UAAU,aAAa,QAAQ;EACpD,IAAI,CAAC,aAAa,OAAO,UAAU;EACnC,SAAS,wBAAwB;EACjC,MAAM;EACN,MAAM;EACN,SAAS;EACV,CAAC,EAEY,QACZ,QAAO;EAAE,SAAS;EAAO,MAAM;EAAqB;AAGtD,QAAO;EAAE,SAAS;EAAM,MAAM;EAAiC"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"client.js","names":[],"sources":["../../../src/libs/posthog/client.ts"],"sourcesContent":["import posthog from 'posthog-js';\n\nexport type PostHogInstance = typeof posthog;\n\nexport const analyticsEventNames = {\n CTA_INSTALL_CLICK: 'cta_install_click',\n CTA_STUDIO_CLICK: 'cta_studio_click',\n DOCS_QUICKSTART_VIEW: 'docs_quickstart_view',\n COPY_COMMAND_CLICK: 'copy_command_click',\n EXAMPLE_REPO_OPEN: 'example_repo_open',\n} as const;\n\nexport type AnalyticsEventName =\n (typeof analyticsEventNames)[keyof typeof analyticsEventNames];\n\nexport const posthogKey = process.env.NEXT_PUBLIC_CONTRACTSPEC_POSTHOG_KEY;\nexport const posthogHost =\n process.env.NEXT_PUBLIC_POSTHOG_HOST || 'https://eu.posthog.com';\n\nconst shouldCaptureAnalytics = () => {\n if (typeof window === 'undefined') return false;\n const nav = window.navigator as Navigator & {\n msDoNotTrack?: string;\n };\n const dntWindow = window as Window & {\n doNotTrack?: string;\n };\n const dnt = nav.doNotTrack ?? nav.msDoNotTrack ?? dntWindow.doNotTrack;\n return dnt !== '1' && dnt !== 'yes';\n};\n\nexport function initPosthog() {\n if (typeof window === 'undefined') return;\n if (!posthogKey) {\n console.warn('[PostHog] NEXT_PUBLIC_CONTRACTSPEC_POSTHOG_KEY is missing');\n return;\n }\n if (!shouldCaptureAnalytics()) return;\n\n const isDev = process.env.NODE_ENV === 'development';\n\n posthog.init(posthogKey, {\n api_host: posthogHost,\n autocapture: !isDev,\n capture_dead_clicks: !isDev,\n capture_performance: !isDev,\n capture_pageview: !isDev,\n capture_heatmaps: !isDev,\n capture_exceptions: !isDev,\n debug: process.env.NODE_ENV === 'development',\n });\n}\n\nexport function captureAnalyticsEvent(\n event: AnalyticsEventName,\n properties?: Record<string, unknown>\n) {\n if (!posthogKey) return;\n if (!shouldCaptureAnalytics()) return;\n try {\n const globalPosthog = (globalThis as { posthog?: PostHogInstance }).posthog;\n const instance = globalPosthog ?? posthog;\n instance?.capture?.(event, properties);\n } catch {\n return;\n }\n}\n\nexport { posthog };\nexport default posthog;\n"],"mappings":";;;AAIA,MAAa,sBAAsB;CACjC,mBAAmB;CACnB,kBAAkB;CAClB,sBAAsB;CACtB,oBAAoB;CACpB,mBAAmB;CACpB;AAKD,MAAa,aAAa,QAAQ,IAAI;AACtC,MAAa,cACX,QAAQ,IAAI,4BAA4B;AAE1C,MAAM,+BAA+B;AACnC,KAAI,OAAO,WAAW,YAAa,QAAO;CAC1C,MAAM,MAAM,OAAO;CAGnB,MAAM,YAAY;CAGlB,MAAM,MAAM,IAAI,cAAc,IAAI,gBAAgB,UAAU;AAC5D,QAAO,QAAQ,OAAO,QAAQ;;AAGhC,SAAgB,cAAc;AAC5B,KAAI,OAAO,WAAW,YAAa;AACnC,KAAI,CAAC,YAAY;AACf,UAAQ,KAAK,4DAA4D;AACzE;;AAEF,KAAI,CAAC,wBAAwB,CAAE;CAE/B,MAAM,QAAQ,QAAQ,IAAI,aAAa;AAEvC,SAAQ,KAAK,YAAY;EACvB,UAAU;EACV,aAAa,CAAC;EACd,qBAAqB,CAAC;EACtB,qBAAqB,CAAC;EACtB,kBAAkB,CAAC;EACnB,kBAAkB,CAAC;EACnB,oBAAoB,CAAC;EACrB,OAAO,QAAQ,IAAI,aAAa;EACjC,CAAC;;AAGJ,SAAgB,sBACd,OACA,YACA;AACA,KAAI,CAAC,WAAY;AACjB,KAAI,CAAC,wBAAwB,CAAE;AAC/B,KAAI;AAGF,GAFuB,WAA6C,WAClC,UACxB,UAAU,OAAO,WAAW;SAChC;AACN;;;AAKJ,qBAAe"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"native.js","names":["posthogKey","posthogHost"],"sources":["../../../src/libs/posthog/native.ts"],"sourcesContent":["import { PostHog } from 'posthog-react-native';\n\nexport type PostHogInstance = typeof PostHog;\n\nexport const posthogKey = process.env.NEXT_PUBLIC_CONTRACTSPEC_POSTHOG_KEY;\nexport const posthogHost =\n process.env.NEXT_PUBLIC_POSTHOG_HOST || 'https://eu.posthog.com';\n\nexport function initPosthog() {\n const posthogKey = process.env.NEXT_PUBLIC_CONTRACTSPEC_POSTHOG_KEY;\n const posthogHost =\n process.env.NEXT_PUBLIC_POSTHOG_HOST || 'https://eu.posthog.com';\n\n if (!posthogKey) {\n console.warn('[PostHog] NEXT_PUBLIC_CONTRACTSPEC_POSTHOG_KEY is missing');\n throw new Error('NEXT_PUBLIC_CONTRACTSPEC_POSTHOG_KEY is missing');\n }\n\n const posthog = new PostHog(posthogKey, {\n host: posthogHost,\n // autocapture: !isDev,\n // capture_dead_clicks: !isDev,\n // capture_performance: !isDev,\n // capture_pageview: !isDev,\n // capture_heatmaps: !isDev,\n // capture_exceptions: !isDev,\n // debug: process.env.NODE_ENV === 'development',\n });\n\n return posthog;\n}\n\nconst posthog = initPosthog();\nexport { posthog };\n"],"mappings":";;;AAIA,MAAa,aAAa,QAAQ,IAAI;AACtC,MAAa,cACX,QAAQ,IAAI,4BAA4B;AAE1C,SAAgB,cAAc;CAC5B,MAAMA,eAAa,QAAQ,IAAI;CAC/B,MAAMC,gBACJ,QAAQ,IAAI,4BAA4B;AAE1C,KAAI,CAACD,cAAY;AACf,UAAQ,KAAK,4DAA4D;AACzE,QAAM,IAAI,MAAM,kDAAkD;;AAcpE,QAXgB,IAAI,QAAQA,cAAY,EACtC,MAAMC,eAQP,CAAC;;AAKJ,MAAM,UAAU,aAAa"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"server.js","names":[],"sources":["../../../src/libs/posthog/server.ts"],"sourcesContent":["import { PostHog } from 'posthog-node';\n\nconst posthogKey = process.env.NEXT_PUBLIC_CONTRACTSPEC_POSTHOG_KEY;\nconst posthogHost =\n process.env.NEXT_PUBLIC_POSTHOG_HOST || 'https://eu.posthog.com';\n\nconst posthogServer = posthogKey\n ? new PostHog(posthogKey, {\n host: posthogHost,\n flushAt: 1,\n flushInterval: 0,\n })\n : null;\n\nexport default posthogServer;\nexport type PostHogServerInstance = PostHog;\n"],"mappings":";;;AAEA,MAAM,aAAa,QAAQ,IAAI;AAC/B,MAAM,cACJ,QAAQ,IAAI,4BAA4B;AAE1C,MAAM,gBAAgB,aAClB,IAAI,QAAQ,YAAY;CACtB,MAAM;CACN,SAAS;CACT,eAAe;CAChB,CAAC,GACF;AAEJ,qBAAe"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"pricing-examples.js","names":[],"sources":["../../src/libs/pricing-examples.ts"],"sourcesContent":["/**\n * Tentative pricing example values for UI display.\n * These are examples only and subject to change based on learnings from design partners.\n */\n\nexport const PRICING_EXAMPLES = {\n free: {\n regenerationsPerMonth: 200,\n aiActionsPerMonth: 100,\n projects: 1,\n },\n builder: {\n regenerationsPerMonthHint: '1,000–2,000+',\n aiActionsPerMonthHint: '1,000+',\n },\n team: {\n description: 'Higher limits + cheaper per-regen at scale',\n },\n} as const;\n"],"mappings":";;;;;AAKA,MAAa,mBAAmB;CAC9B,MAAM;EACJ,uBAAuB;EACvB,mBAAmB;EACnB,UAAU;EACX;CACD,SAAS;EACP,2BAA2B;EAC3B,uBAAuB;EACxB;CACD,MAAM,EACJ,aAAa,8CACd;CACF"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"FeatureIcon.js","names":[],"sources":["../../../../../src/presentation/features/atoms/FeatureIcon/FeatureIcon.tsx"],"sourcesContent":["'use client';\n\nimport * as React from 'react';\nimport {\n FileText,\n Boxes,\n Settings,\n Globe,\n Shield,\n Database,\n MessageSquare,\n Layout,\n Workflow,\n type LucideIcon,\n} from 'lucide-react';\nimport { cn } from '@contractspec/lib.ui-kit-web/ui/utils';\n\n/** Domain to icon mapping */\nconst domainIconMap: Record<string, LucideIcon> = {\n platform: Settings,\n documentation: FileText,\n docs: FileText,\n integration: Workflow,\n api: Globe,\n security: Shield,\n data: Database,\n messaging: MessageSquare,\n ui: Layout,\n presentation: Layout,\n};\n\n/** Tag to icon mapping (fallback if domain not matched) */\nconst tagIconMap: Record<string, LucideIcon> = {\n documentation: FileText,\n guides: FileText,\n 'api-reference': Globe,\n presentations: Layout,\n ui: Layout,\n rendering: Layout,\n mcp: Workflow,\n integration: Workflow,\n security: Shield,\n auth: Shield,\n data: Database,\n storage: Database,\n};\n\n/** Stability to tone mapping */\nconst stabilityToneMap: Record<\n string,\n 'success' | 'warning' | 'info' | 'danger' | 'primary'\n> = {\n stable: 'success',\n beta: 'warning',\n experimental: 'info',\n deprecated: 'danger',\n};\n\nexport interface FeatureIconProps {\n /** Feature domain for icon selection */\n domain?: string;\n /** Feature tags for icon selection fallback */\n tags?: string[];\n /** Feature stability for tone selection */\n stability?: string;\n /** Override icon */\n icon?: LucideIcon;\n /** Size of the icon */\n size?: 'sm' | 'md' | 'lg';\n /** Additional class name */\n className?: string;\n}\n\nconst sizeClasses = {\n sm: 'h-4 w-4',\n md: 'h-5 w-5',\n lg: 'h-6 w-6',\n};\n\n/**\n * Smart icon component that maps feature domains/tags to appropriate icons.\n * Returns the icon element with semantic coloring based on stability.\n */\nexport function FeatureIcon({\n domain,\n tags = [],\n stability,\n icon: IconOverride,\n size = 'md',\n className,\n}: FeatureIconProps) {\n const Icon: LucideIcon = React.useMemo((): LucideIcon => {\n if (IconOverride) return IconOverride;\n\n // Try domain first\n if (domain) {\n const domainIcon = domainIconMap[domain.toLowerCase()];\n if (domainIcon) return domainIcon;\n }\n\n // Try tags\n for (const tag of tags) {\n const tagIcon = tagIconMap[tag.toLowerCase()];\n if (tagIcon) return tagIcon;\n }\n\n // Default\n return Boxes;\n }, [domain, tags, IconOverride]);\n\n const tone = stability ? stabilityToneMap[stability] || 'primary' : 'primary';\n\n const toneClasses = {\n success: 'text-emerald-600 dark:text-emerald-400',\n warning: 'text-amber-600 dark:text-amber-400',\n info: 'text-blue-600 dark:text-blue-400',\n danger: 'text-red-600 dark:text-red-400',\n primary: 'text-primary',\n };\n\n return (\n <Icon className={cn(sizeClasses[size], toneClasses[tone], className)} />\n );\n}\n\n/** Get the icon tone for EntityCard based on stability */\nexport function getFeatureIconTone(\n stability?: string\n): 'success' | 'warning' | 'info' | 'danger' | 'primary' {\n if (!stability) return 'primary';\n return stabilityToneMap[stability] || 'primary';\n}\n"],"mappings":";;;;;;;;;AAkBA,MAAM,gBAA4C;CAChD,UAAU;CACV,eAAe;CACf,MAAM;CACN,aAAa;CACb,KAAK;CACL,UAAU;CACV,MAAM;CACN,WAAW;CACX,IAAI;CACJ,cAAc;CACf;;AAGD,MAAM,aAAyC;CAC7C,eAAe;CACf,QAAQ;CACR,iBAAiB;CACjB,eAAe;CACf,IAAI;CACJ,WAAW;CACX,KAAK;CACL,aAAa;CACb,UAAU;CACV,MAAM;CACN,MAAM;CACN,SAAS;CACV;;AAGD,MAAM,mBAGF;CACF,QAAQ;CACR,MAAM;CACN,cAAc;CACd,YAAY;CACb;AAiBD,MAAM,cAAc;CAClB,IAAI;CACJ,IAAI;CACJ,IAAI;CACL;;;;;AAMD,SAAgB,YAAY,EAC1B,QACA,OAAO,EAAE,EACT,WACA,MAAM,cACN,OAAO,MACP,aACmB;CACnB,MAAM,OAAmB,MAAM,cAA0B;AACvD,MAAI,aAAc,QAAO;AAGzB,MAAI,QAAQ;GACV,MAAM,aAAa,cAAc,OAAO,aAAa;AACrD,OAAI,WAAY,QAAO;;AAIzB,OAAK,MAAM,OAAO,MAAM;GACtB,MAAM,UAAU,WAAW,IAAI,aAAa;AAC5C,OAAI,QAAS,QAAO;;AAItB,SAAO;IACN;EAAC;EAAQ;EAAM;EAAa,CAAC;CAEhC,MAAM,OAAO,YAAY,iBAAiB,cAAc,YAAY;AAUpE,QACE,oBAAC,QAAK,WAAW,GAAG,YAAY,OATd;EAClB,SAAS;EACT,SAAS;EACT,MAAM;EACN,QAAQ;EACR,SAAS;EACV,CAGoD,OAAO,UAAU,GAAI;;;AAK5E,SAAgB,mBACd,WACuD;AACvD,KAAI,CAAC,UAAW,QAAO;AACvB,QAAO,iBAAiB,cAAc"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"useContractsRegistry.js","names":[],"sources":["../../../../src/presentation/features/hooks/useContractsRegistry.ts"],"sourcesContent":["'use client';\n\nimport { useMemo } from 'react';\nimport type { AnyOperationSpec } from '@contractspec/lib.contracts';\nimport type { OpRef } from '@contractspec/lib.contracts/features';\nimport {\n getContractSpecOperationRegistry,\n resolveOperationSpec,\n} from '../../../features';\n\nexport interface UseContractsRegistryReturn {\n /** Resolve an OpRef to its full OperationSpec. */\n resolveOperation: (ref: OpRef) => AnyOperationSpec | undefined;\n /** Resolve an operation by key and optional version. */\n getOperationSpec: (\n key: string,\n version?: string\n ) => AnyOperationSpec | undefined;\n /** List all registered operation specs. */\n listOperations: () => AnyOperationSpec[];\n}\n\n/**\n * Hook to access the ContractSpec contracts registry.\n * Provides resolution of OpRef/EventRef/PresentationRef to their full specs.\n */\nexport function useContractsRegistry(): UseContractsRegistryReturn {\n const registry = useMemo(() => getContractSpecOperationRegistry(), []);\n\n return useMemo(\n () => ({\n resolveOperation: (ref: OpRef) =>\n resolveOperationSpec(ref.key, ref.version),\n getOperationSpec: (key: string, version?: string) =>\n resolveOperationSpec(key, version),\n listOperations: () => registry.list(),\n }),\n [registry]\n );\n}\n"],"mappings":";;;;;;;;;;;AA0BA,SAAgB,uBAAmD;CACjE,MAAM,WAAW,cAAc,kCAAkC,EAAE,EAAE,CAAC;AAEtE,QAAO,eACE;EACL,mBAAmB,QACjB,qBAAqB,IAAI,KAAK,IAAI,QAAQ;EAC5C,mBAAmB,KAAa,YAC9B,qBAAqB,KAAK,QAAQ;EACpC,sBAAsB,SAAS,MAAM;EACtC,GACD,CAAC,SAAS,CACX"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"useFeatureFilters.js","names":[],"sources":["../../../../src/presentation/features/hooks/useFeatureFilters.ts"],"sourcesContent":["'use client';\n\nimport { useState, useMemo, useCallback } from 'react';\nimport type { FeatureModuleSpec } from '@contractspec/lib.contracts/features';\n\nexport interface FeatureFilters {\n search: string;\n tags: string[];\n stability: string[];\n domain: string[];\n}\n\nexport interface UseFeatureFiltersReturn {\n /** Current filter state. */\n filters: FeatureFilters;\n /** Update the search query. */\n setSearch: (search: string) => void;\n /** Toggle a tag filter. */\n toggleTag: (tag: string) => void;\n /** Toggle a stability filter. */\n toggleStability: (stability: string) => void;\n /** Toggle a domain filter. */\n toggleDomain: (domain: string) => void;\n /** Clear all filters. */\n clearFilters: () => void;\n /** Filtered features based on current filters. */\n filteredFeatures: FeatureModuleSpec[];\n /** Whether any filters are active. */\n hasActiveFilters: boolean;\n}\n\nconst defaultFilters: FeatureFilters = {\n search: '',\n tags: [],\n stability: [],\n domain: [],\n};\n\n/**\n * Hook for managing feature filter state.\n * Provides filter controls and filtered feature list.\n */\nexport function useFeatureFilters(\n features: FeatureModuleSpec[]\n): UseFeatureFiltersReturn {\n const [filters, setFilters] = useState<FeatureFilters>(defaultFilters);\n\n const setSearch = useCallback((search: string) => {\n setFilters((prev) => ({ ...prev, search }));\n }, []);\n\n const toggleTag = useCallback((tag: string) => {\n setFilters((prev) => ({\n ...prev,\n tags: prev.tags.includes(tag)\n ? prev.tags.filter((t) => t !== tag)\n : [...prev.tags, tag],\n }));\n }, []);\n\n const toggleStability = useCallback((stability: string) => {\n setFilters((prev) => ({\n ...prev,\n stability: prev.stability.includes(stability)\n ? prev.stability.filter((s) => s !== stability)\n : [...prev.stability, stability],\n }));\n }, []);\n\n const toggleDomain = useCallback((domain: string) => {\n setFilters((prev) => ({\n ...prev,\n domain: prev.domain.includes(domain)\n ? prev.domain.filter((d) => d !== domain)\n : [...prev.domain, domain],\n }));\n }, []);\n\n const clearFilters = useCallback(() => setFilters(defaultFilters), []);\n\n const hasActiveFilters = useMemo(() => {\n return (\n filters.search.length > 0 ||\n filters.tags.length > 0 ||\n filters.stability.length > 0 ||\n filters.domain.length > 0\n );\n }, [filters]);\n\n const filteredFeatures = useMemo(() => {\n return features.filter((feature) => {\n // Search filter\n if (filters.search) {\n const searchLower = filters.search.toLowerCase();\n const title = feature.meta.title ?? '';\n const matches =\n title.toLowerCase().includes(searchLower) ||\n feature.meta.description?.toLowerCase().includes(searchLower) ||\n feature.meta.key.toLowerCase().includes(searchLower);\n if (!matches) return false;\n }\n\n // Tag filter\n if (filters.tags.length > 0) {\n const hasTag = filters.tags.some((tag) =>\n feature.meta.tags?.includes(tag)\n );\n if (!hasTag) return false;\n }\n\n // Stability filter\n if (filters.stability.length > 0) {\n if (!filters.stability.includes(feature.meta.stability ?? 'unknown'))\n return false;\n }\n\n // Domain filter\n if (filters.domain.length > 0) {\n if (!filters.domain.includes(feature.meta.domain ?? 'unknown'))\n return false;\n }\n\n return true;\n });\n }, [features, filters]);\n\n return {\n filters,\n setSearch,\n toggleTag,\n toggleStability,\n toggleDomain,\n clearFilters,\n filteredFeatures,\n hasActiveFilters,\n };\n}\n"],"mappings":";;;;;AA+BA,MAAM,iBAAiC;CACrC,QAAQ;CACR,MAAM,EAAE;CACR,WAAW,EAAE;CACb,QAAQ,EAAE;CACX;;;;;AAMD,SAAgB,kBACd,UACyB;CACzB,MAAM,CAAC,SAAS,cAAc,SAAyB,eAAe;CAEtE,MAAM,YAAY,aAAa,WAAmB;AAChD,cAAY,UAAU;GAAE,GAAG;GAAM;GAAQ,EAAE;IAC1C,EAAE,CAAC;CAEN,MAAM,YAAY,aAAa,QAAgB;AAC7C,cAAY,UAAU;GACpB,GAAG;GACH,MAAM,KAAK,KAAK,SAAS,IAAI,GACzB,KAAK,KAAK,QAAQ,MAAM,MAAM,IAAI,GAClC,CAAC,GAAG,KAAK,MAAM,IAAI;GACxB,EAAE;IACF,EAAE,CAAC;CAEN,MAAM,kBAAkB,aAAa,cAAsB;AACzD,cAAY,UAAU;GACpB,GAAG;GACH,WAAW,KAAK,UAAU,SAAS,UAAU,GACzC,KAAK,UAAU,QAAQ,MAAM,MAAM,UAAU,GAC7C,CAAC,GAAG,KAAK,WAAW,UAAU;GACnC,EAAE;IACF,EAAE,CAAC;CAEN,MAAM,eAAe,aAAa,WAAmB;AACnD,cAAY,UAAU;GACpB,GAAG;GACH,QAAQ,KAAK,OAAO,SAAS,OAAO,GAChC,KAAK,OAAO,QAAQ,MAAM,MAAM,OAAO,GACvC,CAAC,GAAG,KAAK,QAAQ,OAAO;GAC7B,EAAE;IACF,EAAE,CAAC;CAEN,MAAM,eAAe,kBAAkB,WAAW,eAAe,EAAE,EAAE,CAAC;CAEtE,MAAM,mBAAmB,cAAc;AACrC,SACE,QAAQ,OAAO,SAAS,KACxB,QAAQ,KAAK,SAAS,KACtB,QAAQ,UAAU,SAAS,KAC3B,QAAQ,OAAO,SAAS;IAEzB,CAAC,QAAQ,CAAC;AAuCb,QAAO;EACL;EACA;EACA;EACA;EACA;EACA;EACA,kBA5CuB,cAAc;AACrC,UAAO,SAAS,QAAQ,YAAY;AAElC,QAAI,QAAQ,QAAQ;KAClB,MAAM,cAAc,QAAQ,OAAO,aAAa;AAMhD,SAAI,GALU,QAAQ,KAAK,SAAS,IAE5B,aAAa,CAAC,SAAS,YAAY,IACzC,QAAQ,KAAK,aAAa,aAAa,CAAC,SAAS,YAAY,IAC7D,QAAQ,KAAK,IAAI,aAAa,CAAC,SAAS,YAAY,EACxC,QAAO;;AAIvB,QAAI,QAAQ,KAAK,SAAS,GAIxB;SAAI,CAHW,QAAQ,KAAK,MAAM,QAChC,QAAQ,KAAK,MAAM,SAAS,IAAI,CACjC,CACY,QAAO;;AAItB,QAAI,QAAQ,UAAU,SAAS,GAC7B;SAAI,CAAC,QAAQ,UAAU,SAAS,QAAQ,KAAK,aAAa,UAAU,CAClE,QAAO;;AAIX,QAAI,QAAQ,OAAO,SAAS,GAC1B;SAAI,CAAC,QAAQ,OAAO,SAAS,QAAQ,KAAK,UAAU,UAAU,CAC5D,QAAO;;AAGX,WAAO;KACP;KACD,CAAC,UAAU,QAAQ,CAAC;EAUrB;EACD"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"useFeatureRegistry.js","names":[],"sources":["../../../../src/presentation/features/hooks/useFeatureRegistry.ts"],"sourcesContent":["'use client';\n\nimport { useMemo } from 'react';\nimport type { FeatureModuleSpec } from '@contractspec/lib.contracts/features';\nimport { getContractSpecFeatureRegistry } from '../../../features/registry';\n\nexport interface UseFeatureRegistryReturn {\n /** All registered features. */\n features: FeatureModuleSpec[];\n /** Get a feature by its key. */\n getFeature: (key: string) => FeatureModuleSpec | undefined;\n /** Get features with a specific tag. */\n getByTag: (tag: string) => FeatureModuleSpec[];\n /** Get features by owner. */\n getByOwner: (owner: string) => FeatureModuleSpec[];\n /** Get all unique tags across features. */\n getUniqueTags: () => string[];\n /** Get all unique domains across features. */\n getUniqueDomains: () => string[];\n /** Get all unique stability values across features. */\n getUniqueStabilities: () => string[];\n}\n\n/**\n * Hook to access the ContractSpec feature registry.\n * Provides feature listing and filtering capabilities.\n */\nexport function useFeatureRegistry(): UseFeatureRegistryReturn {\n const registry = useMemo(() => getContractSpecFeatureRegistry(), []);\n\n return useMemo(() => {\n const features = registry.list();\n\n return {\n features,\n getFeature: (key: string) => registry.get(key),\n getByTag: (tag: string) => registry.listByTag(tag),\n getByOwner: (owner: string) => registry.listByOwner(owner),\n getUniqueTags: () => registry.getUniqueTags(),\n getUniqueDomains: () => {\n const domains = new Set<string>();\n for (const f of features) {\n if (f.meta.domain) domains.add(f.meta.domain);\n }\n return [...domains].sort();\n },\n getUniqueStabilities: () => {\n const stabilities = new Set<string>();\n for (const f of features) {\n if (f.meta.stability) stabilities.add(f.meta.stability);\n }\n return [...stabilities].sort();\n },\n };\n }, [registry]);\n}\n"],"mappings":";;;;;;;;;;AA2BA,SAAgB,qBAA+C;CAC7D,MAAM,WAAW,cAAc,gCAAgC,EAAE,EAAE,CAAC;AAEpE,QAAO,cAAc;EACnB,MAAM,WAAW,SAAS,MAAM;AAEhC,SAAO;GACL;GACA,aAAa,QAAgB,SAAS,IAAI,IAAI;GAC9C,WAAW,QAAgB,SAAS,UAAU,IAAI;GAClD,aAAa,UAAkB,SAAS,YAAY,MAAM;GAC1D,qBAAqB,SAAS,eAAe;GAC7C,wBAAwB;IACtB,MAAM,0BAAU,IAAI,KAAa;AACjC,SAAK,MAAM,KAAK,SACd,KAAI,EAAE,KAAK,OAAQ,SAAQ,IAAI,EAAE,KAAK,OAAO;AAE/C,WAAO,CAAC,GAAG,QAAQ,CAAC,MAAM;;GAE5B,4BAA4B;IAC1B,MAAM,8BAAc,IAAI,KAAa;AACrC,SAAK,MAAM,KAAK,SACd,KAAI,EAAE,KAAK,UAAW,aAAY,IAAI,EAAE,KAAK,UAAU;AAEzD,WAAO,CAAC,GAAG,YAAY,CAAC,MAAM;;GAEjC;IACA,CAAC,SAAS,CAAC"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"useRelatedDocs.js","names":[],"sources":["../../../../src/presentation/features/hooks/useRelatedDocs.ts"],"sourcesContent":["'use client';\n\nimport { useMemo } from 'react';\nimport { defaultDocRegistry } from '@contractspec/lib.contracts';\n\n/**\n * Hook to fetch documentation blocks related to a specific key or set of tags.\n */\nexport function useRelatedDocs(key: string, tags?: string[]) {\n const docs = useMemo(() => {\n try {\n const allDocs = defaultDocRegistry.list();\n return allDocs\n .filter(({ block }) => {\n // Match by key in ID or title\n const keyMatch =\n block.id.toLowerCase().includes(key.toLowerCase()) ||\n block.title.toLowerCase().includes(key.toLowerCase());\n\n // Match by tags\n const tagMatch = tags?.some((t) =>\n block.tags?.some((bt) => bt.toLowerCase().includes(t.toLowerCase()))\n );\n\n return keyMatch || tagMatch;\n })\n .map(({ block, route }) => ({\n id: block.id,\n title: block.title,\n summary: block.summary,\n route,\n }));\n } catch (e) {\n console.error('Failed to fetch related docs:', e);\n return [];\n }\n }, [key, tags]);\n\n return docs;\n}\n"],"mappings":";;;;;;;;;AAQA,SAAgB,eAAe,KAAa,MAAiB;AA8B3D,QA7Ba,cAAc;AACzB,MAAI;AAEF,UADgB,mBAAmB,MAAM,CAEtC,QAAQ,EAAE,YAAY;IAErB,MAAM,WACJ,MAAM,GAAG,aAAa,CAAC,SAAS,IAAI,aAAa,CAAC,IAClD,MAAM,MAAM,aAAa,CAAC,SAAS,IAAI,aAAa,CAAC;IAGvD,MAAM,WAAW,MAAM,MAAM,MAC3B,MAAM,MAAM,MAAM,OAAO,GAAG,aAAa,CAAC,SAAS,EAAE,aAAa,CAAC,CAAC,CACrE;AAED,WAAO,YAAY;KACnB,CACD,KAAK,EAAE,OAAO,aAAa;IAC1B,IAAI,MAAM;IACV,OAAO,MAAM;IACb,SAAS,MAAM;IACf;IACD,EAAE;WACE,GAAG;AACV,WAAQ,MAAM,iCAAiC,EAAE;AACjD,UAAO,EAAE;;IAEV,CAAC,KAAK,KAAK,CAAC"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"FeatureCard.js","names":[],"sources":["../../../../../src/presentation/features/molecules/FeatureCard/FeatureCard.tsx"],"sourcesContent":["'use client';\n\nimport { EntityCard, StatusChip } from '@contractspec/lib.design-system';\nimport { HStack } from '@contractspec/lib.ui-kit-web/ui/stack';\nimport { Zap, Radio, Layout, Shield } from 'lucide-react';\nimport { FeatureIcon, getFeatureIconTone } from '../../atoms/FeatureIcon';\nimport { FeatureHoverPreview } from '../FeatureHoverPreview';\nimport type { FeatureCardProps } from './types';\n\nconst stabilityTone = {\n stable: 'success' as const,\n beta: 'warning' as const,\n experimental: 'info' as const,\n deprecated: 'danger' as const,\n};\n\n/**\n * Enhanced card component for displaying a feature module.\n * Shows icon, title, description, stability badge, stats, and capability indicators.\n * Includes hover preview with full feature details.\n */\nexport function FeatureCard({\n feature,\n onSelect,\n className,\n}: FeatureCardProps) {\n const { meta, operations, events, presentations, capabilities } = feature;\n\n const tone =\n stabilityTone[meta.stability as keyof typeof stabilityTone] ?? 'neutral';\n\n const iconTone = getFeatureIconTone(meta.stability);\n\n // Use strong emphasis for stable features for visual highlight\n const emphasis = meta.stability === 'stable' ? 'strong' : 'default';\n\n const handleClick = onSelect ? () => onSelect(feature) : undefined;\n\n const hasCapabilities =\n capabilities?.provides?.length || capabilities?.requires?.length;\n\n return (\n <EntityCard\n cardTitle={meta.title}\n cardSubtitle={meta.key}\n className={className}\n onClick={handleClick}\n emphasis={emphasis}\n icon={\n <FeatureIcon\n domain={meta.domain}\n tags={meta.tags}\n stability={meta.stability}\n size=\"md\"\n />\n }\n iconTone={iconTone}\n chips={\n <StatusChip tone={tone} label={meta.stability ?? 'unknown'} size=\"sm\" />\n }\n meta={\n meta.description ? (\n <span className=\"text-muted-foreground line-clamp-2 text-sm\">\n {meta.description}\n </span>\n ) : undefined\n }\n preview={<FeatureHoverPreview feature={feature} />}\n footer={\n <HStack\n gap=\"md\"\n className=\"text-muted-foreground w-full justify-between text-xs\"\n >\n <HStack gap=\"sm\">\n {operations?.length ? (\n <span className=\"flex items-center gap-1\">\n <Zap className=\"h-3 w-3 text-amber-500\" />\n {operations.length}\n </span>\n ) : null}\n {events?.length ? (\n <span className=\"flex items-center gap-1\">\n <Radio className=\"h-3 w-3 text-blue-500\" />\n {events.length}\n </span>\n ) : null}\n {presentations?.length ? (\n <span className=\"flex items-center gap-1\">\n <Layout className=\"h-3 w-3 text-purple-500\" />\n {presentations.length}\n </span>\n ) : null}\n </HStack>\n {hasCapabilities && (\n <span className=\"flex items-center gap-1\">\n <Shield className=\"h-3 w-3 text-emerald-500\" />\n {(capabilities?.provides?.length ?? 0) +\n (capabilities?.requires?.length ?? 0)}\n </span>\n )}\n </HStack>\n }\n />\n );\n}\n"],"mappings":";;;;;;;;;;;;AASA,MAAM,gBAAgB;CACpB,QAAQ;CACR,MAAM;CACN,cAAc;CACd,YAAY;CACb;;;;;;AAOD,SAAgB,YAAY,EAC1B,SACA,UACA,aACmB;CACnB,MAAM,EAAE,MAAM,YAAY,QAAQ,eAAe,iBAAiB;CAElE,MAAM,OACJ,cAAc,KAAK,cAA4C;CAEjE,MAAM,WAAW,mBAAmB,KAAK,UAAU;CAGnD,MAAM,WAAW,KAAK,cAAc,WAAW,WAAW;CAE1D,MAAM,cAAc,iBAAiB,SAAS,QAAQ,GAAG;CAEzD,MAAM,kBACJ,cAAc,UAAU,UAAU,cAAc,UAAU;AAE5D,QACE,oBAAC;EACC,WAAW,KAAK;EAChB,cAAc,KAAK;EACR;EACX,SAAS;EACC;EACV,MACE,oBAAC;GACC,QAAQ,KAAK;GACb,MAAM,KAAK;GACX,WAAW,KAAK;GAChB,MAAK;IACL;EAEM;EACV,OACE,oBAAC;GAAiB;GAAM,OAAO,KAAK,aAAa;GAAW,MAAK;IAAO;EAE1E,MACE,KAAK,cACH,oBAAC;GAAK,WAAU;aACb,KAAK;IACD,GACL;EAEN,SAAS,oBAAC,uBAA6B,UAAW;EAClD,QACE,qBAAC;GACC,KAAI;GACJ,WAAU;cAEV,qBAAC;IAAO,KAAI;;KACT,YAAY,SACX,qBAAC;MAAK,WAAU;iBACd,oBAAC,OAAI,WAAU,2BAA2B,EACzC,WAAW;OACP,GACL;KACH,QAAQ,SACP,qBAAC;MAAK,WAAU;iBACd,oBAAC,SAAM,WAAU,0BAA0B,EAC1C,OAAO;OACH,GACL;KACH,eAAe,SACd,qBAAC;MAAK,WAAU;iBACd,oBAAC,UAAO,WAAU,4BAA4B,EAC7C,cAAc;OACV,GACL;;KACG,EACR,mBACC,qBAAC;IAAK,WAAU;eACd,oBAAC,UAAO,WAAU,6BAA6B,GAC7C,cAAc,UAAU,UAAU,MACjC,cAAc,UAAU,UAAU;KAChC;IAEF;GAEX"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"FeatureCategoryHeader.js","names":[],"sources":["../../../../../src/presentation/features/molecules/FeatureCategoryHeader/FeatureCategoryHeader.tsx"],"sourcesContent":["'use client';\n\nimport * as React from 'react';\nimport { cn } from '@contractspec/lib.ui-kit-web/ui/utils';\nimport { ChevronDown, Boxes } from 'lucide-react';\nimport { HStack } from '@contractspec/lib.ui-kit-web/ui/stack';\nimport { StatusChip } from '@contractspec/lib.design-system';\n\nexport interface FeatureCategoryHeaderProps {\n /** Category/domain title */\n title: string;\n /** Number of features in this category */\n count: number;\n /** Icon for the category */\n icon?: React.ReactNode;\n /** Whether the section is collapsed */\n isCollapsed?: boolean;\n /** Toggle collapse state */\n onToggle?: () => void;\n /** Additional class name */\n className?: string;\n}\n\n/**\n * Category/domain section header for grouped feature display.\n */\nexport function FeatureCategoryHeader({\n title,\n count,\n icon,\n isCollapsed = false,\n onToggle,\n className,\n}: FeatureCategoryHeaderProps) {\n return (\n <button\n type=\"button\"\n onClick={onToggle}\n className={cn(\n 'flex w-full items-center justify-between rounded-lg px-4 py-3',\n 'bg-muted/30 hover:bg-muted/50 transition-colors',\n 'group cursor-pointer',\n className\n )}\n >\n <HStack gap=\"sm\" className=\"items-center\">\n <div className=\"text-muted-foreground group-hover:text-foreground transition-colors\">\n {icon || <Boxes className=\"h-5 w-5\" />}\n </div>\n <span className=\"group-hover:text-primary text-lg font-semibold capitalize transition-colors\">\n {title}\n </span>\n <StatusChip\n tone=\"neutral\"\n label={`${count} ${count === 1 ? 'feature' : 'features'}`}\n size=\"sm\"\n />\n </HStack>\n <ChevronDown\n className={cn(\n 'text-muted-foreground h-5 w-5 transition-transform duration-200',\n isCollapsed && '-rotate-90'\n )}\n />\n </button>\n );\n}\n"],"mappings":";;;;;;;;;;;;;AA0BA,SAAgB,sBAAsB,EACpC,OACA,OACA,MACA,cAAc,OACd,UACA,aAC6B;AAC7B,QACE,qBAAC;EACC,MAAK;EACL,SAAS;EACT,WAAW,GACT,iEACA,mDACA,wBACA,UACD;aAED,qBAAC;GAAO,KAAI;GAAK,WAAU;;IACzB,oBAAC;KAAI,WAAU;eACZ,QAAQ,oBAAC,SAAM,WAAU,YAAY;MAClC;IACN,oBAAC;KAAK,WAAU;eACb;MACI;IACP,oBAAC;KACC,MAAK;KACL,OAAO,GAAG,MAAM,GAAG,UAAU,IAAI,YAAY;KAC7C,MAAK;MACL;;IACK,EACT,oBAAC,eACC,WAAW,GACT,mEACA,eAAe,aAChB,GACD;GACK"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"FeatureFilters.js","names":[],"sources":["../../../../../src/presentation/features/molecules/FeatureFilters/FeatureFilters.tsx"],"sourcesContent":["'use client';\n\nimport { Button, Input } from '@contractspec/lib.design-system';\nimport { VStack, HStack } from '@contractspec/lib.ui-kit-web/ui/stack';\nimport { cn } from '@contractspec/lib.ui-kit-web/ui/utils';\nimport type { FeatureFiltersBarProps } from './types';\n\n/**\n * Filter bar for feature discovery.\n * Provides search input, stability toggles, and tag pills.\n */\nexport function FeatureFiltersBar({\n uniqueTags,\n uniqueStabilities,\n filters,\n setSearch,\n toggleTag,\n toggleStability,\n clearFilters,\n hasActiveFilters,\n className,\n}: FeatureFiltersBarProps) {\n return (\n <VStack gap=\"md\" className={cn('w-full', className)}>\n <HStack gap=\"md\" justify=\"between\" className=\"w-full\">\n <Input\n placeholder=\"Search features...\"\n value={filters.search}\n onChange={(e) => setSearch(e.target.value)}\n className=\"max-w-md\"\n aria-label=\"Search features\"\n />\n {hasActiveFilters && (\n <Button variant=\"ghost\" size=\"sm\" onClick={clearFilters}>\n Clear filters\n </Button>\n )}\n </HStack>\n\n {uniqueStabilities.length > 0 && (\n <HStack gap=\"xs\" wrap=\"wrap\">\n <span className=\"text-muted-foreground text-sm\">Stability:</span>\n {uniqueStabilities.map((stability) => (\n <Button\n key={stability}\n variant={\n filters.stability.includes(stability) ? 'default' : 'outline'\n }\n size=\"sm\"\n onClick={() => toggleStability(stability)}\n aria-pressed={filters.stability.includes(stability)}\n >\n {stability}\n </Button>\n ))}\n </HStack>\n )}\n\n {uniqueTags.length > 0 && (\n <HStack gap=\"xs\" wrap=\"wrap\">\n <span className=\"text-muted-foreground text-sm\">Tags:</span>\n {uniqueTags.slice(0, 10).map((tag) => (\n <Button\n key={tag}\n variant={filters.tags.includes(tag) ? 'default' : 'outline'}\n size=\"sm\"\n onClick={() => toggleTag(tag)}\n aria-pressed={filters.tags.includes(tag)}\n >\n #{tag}\n </Button>\n ))}\n {uniqueTags.length > 10 && (\n <span className=\"text-muted-foreground text-sm\">\n +{uniqueTags.length - 10} more\n </span>\n )}\n </HStack>\n )}\n </VStack>\n );\n}\n"],"mappings":";;;;;;;;;;;;AAWA,SAAgB,kBAAkB,EAChC,YACA,mBACA,SACA,WACA,WACA,iBACA,cACA,kBACA,aACyB;AACzB,QACE,qBAAC;EAAO,KAAI;EAAK,WAAW,GAAG,UAAU,UAAU;;GACjD,qBAAC;IAAO,KAAI;IAAK,SAAQ;IAAU,WAAU;eAC3C,oBAAC;KACC,aAAY;KACZ,OAAO,QAAQ;KACf,WAAW,MAAM,UAAU,EAAE,OAAO,MAAM;KAC1C,WAAU;KACV,cAAW;MACX,EACD,oBACC,oBAAC;KAAO,SAAQ;KAAQ,MAAK;KAAK,SAAS;eAAc;MAEhD;KAEJ;GAER,kBAAkB,SAAS,KAC1B,qBAAC;IAAO,KAAI;IAAK,MAAK;eACpB,oBAAC;KAAK,WAAU;eAAgC;MAAiB,EAChE,kBAAkB,KAAK,cACtB,oBAAC;KAEC,SACE,QAAQ,UAAU,SAAS,UAAU,GAAG,YAAY;KAEtD,MAAK;KACL,eAAe,gBAAgB,UAAU;KACzC,gBAAc,QAAQ,UAAU,SAAS,UAAU;eAElD;OARI,UASE,CACT;KACK;GAGV,WAAW,SAAS,KACnB,qBAAC;IAAO,KAAI;IAAK,MAAK;;KACpB,oBAAC;MAAK,WAAU;gBAAgC;OAAY;KAC3D,WAAW,MAAM,GAAG,GAAG,CAAC,KAAK,QAC5B,qBAAC;MAEC,SAAS,QAAQ,KAAK,SAAS,IAAI,GAAG,YAAY;MAClD,MAAK;MACL,eAAe,UAAU,IAAI;MAC7B,gBAAc,QAAQ,KAAK,SAAS,IAAI;iBACzC,KACG;QANG,IAOE,CACT;KACD,WAAW,SAAS,MACnB,qBAAC;MAAK,WAAU;;OAAgC;OAC5C,WAAW,SAAS;OAAG;;OACpB;;KAEF;;GAEJ"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"FeatureHoverPreview.js","names":[],"sources":["../../../../../src/presentation/features/molecules/FeatureHoverPreview/FeatureHoverPreview.tsx"],"sourcesContent":["'use client';\n\nimport * as React from 'react';\nimport { StatusChip } from '@contractspec/lib.design-system';\nimport { HStack } from '@contractspec/lib.ui-kit-web/ui/stack';\nimport {\n ArrowRight,\n Layout,\n Radio,\n Shield,\n Tag,\n Users,\n Zap,\n} from 'lucide-react';\nimport type { FeatureModuleSpec } from '@contractspec/lib.contracts/features';\n\nexport interface FeatureHoverPreviewProps {\n /** The feature to preview */\n feature: FeatureModuleSpec;\n}\n\n/**\n * Rich hover preview content for feature cards.\n * Shows detailed stats, capabilities, and tags.\n */\nexport function FeatureHoverPreview({ feature }: FeatureHoverPreviewProps) {\n const { meta, operations, events, presentations, capabilities } = feature;\n\n const hasCapabilities =\n capabilities?.provides?.length || capabilities?.requires?.length;\n\n return (\n <>\n {/* Description */}\n {meta.description && (\n <p className=\"text-muted-foreground text-sm leading-relaxed\">\n {meta.description}\n </p>\n )}\n\n {/* Stats Row */}\n <HStack gap=\"md\" className=\"py-2\">\n {operations?.length ? (\n <div className=\"flex items-center gap-1.5 text-sm\">\n <Zap className=\"h-4 w-4 text-amber-500\" />\n <span className=\"font-medium\">{operations.length}</span>\n <span className=\"text-muted-foreground\">ops</span>\n </div>\n ) : null}\n {events?.length ? (\n <div className=\"flex items-center gap-1.5 text-sm\">\n <Radio className=\"h-4 w-4 text-blue-500\" />\n <span className=\"font-medium\">{events.length}</span>\n <span className=\"text-muted-foreground\">events</span>\n </div>\n ) : null}\n {presentations?.length ? (\n <div className=\"flex items-center gap-1.5 text-sm\">\n <Layout className=\"h-4 w-4 text-purple-500\" />\n <span className=\"font-medium\">{presentations.length}</span>\n <span className=\"text-muted-foreground\">views</span>\n </div>\n ) : null}\n </HStack>\n\n {/* Capabilities */}\n {hasCapabilities && (\n <div className=\"border-border/50 space-y-1.5 border-t pt-1\">\n {capabilities?.provides?.length ? (\n <HStack gap=\"xs\" wrap=\"wrap\" className=\"items-start\">\n <Shield className=\"mt-0.5 h-3.5 w-3.5 text-emerald-500\" />\n <span className=\"text-muted-foreground text-xs\">Provides:</span>\n {capabilities.provides.slice(0, 2).map((cap) => (\n <StatusChip\n key={cap.key}\n tone=\"success\"\n label={cap.key}\n size=\"sm\"\n />\n ))}\n {capabilities.provides.length > 2 && (\n <span className=\"text-muted-foreground text-xs\">\n +{capabilities.provides.length - 2}\n </span>\n )}\n </HStack>\n ) : null}\n {capabilities?.requires?.length ? (\n <HStack gap=\"xs\" wrap=\"wrap\" className=\"items-start\">\n <ArrowRight className=\"mt-0.5 h-3.5 w-3.5 text-blue-500\" />\n <span className=\"text-muted-foreground text-xs\">Requires:</span>\n {capabilities.requires.slice(0, 2).map((req) => (\n <StatusChip\n key={req.key}\n tone=\"info\"\n label={req.key}\n size=\"sm\"\n />\n ))}\n {capabilities.requires.length > 2 && (\n <span className=\"text-muted-foreground text-xs\">\n +{capabilities.requires.length - 2}\n </span>\n )}\n </HStack>\n ) : null}\n </div>\n )}\n\n {/* Tags */}\n {meta.tags?.length ? (\n <HStack\n gap=\"xs\"\n wrap=\"wrap\"\n className=\"border-border/50 items-center border-t pt-1\"\n >\n <Tag className=\"text-muted-foreground h-3.5 w-3.5\" />\n {meta.tags.slice(0, 4).map((tag) => (\n <span\n key={tag}\n className=\"bg-muted text-muted-foreground rounded px-1.5 py-0.5 text-xs\"\n >\n #{tag}\n </span>\n ))}\n {meta.tags.length > 4 && (\n <span className=\"text-muted-foreground text-xs\">\n +{meta.tags.length - 4}\n </span>\n )}\n </HStack>\n ) : null}\n\n {/* Owners */}\n {meta.owners?.length ? (\n <HStack gap=\"xs\" className=\"text-muted-foreground items-center text-xs\">\n <Users className=\"h-3.5 w-3.5\" />\n <span>{meta.owners.join(', ')}</span>\n </HStack>\n ) : null}\n </>\n );\n}\n"],"mappings":";;;;;;;;;;;;;AAyBA,SAAgB,oBAAoB,EAAE,WAAqC;CACzE,MAAM,EAAE,MAAM,YAAY,QAAQ,eAAe,iBAAiB;CAElE,MAAM,kBACJ,cAAc,UAAU,UAAU,cAAc,UAAU;AAE5D,QACE;EAEG,KAAK,eACJ,oBAAC;GAAE,WAAU;aACV,KAAK;IACJ;EAIN,qBAAC;GAAO,KAAI;GAAK,WAAU;;IACxB,YAAY,SACX,qBAAC;KAAI,WAAU;;MACb,oBAAC,OAAI,WAAU,2BAA2B;MAC1C,oBAAC;OAAK,WAAU;iBAAe,WAAW;QAAc;MACxD,oBAAC;OAAK,WAAU;iBAAwB;QAAU;;MAC9C,GACJ;IACH,QAAQ,SACP,qBAAC;KAAI,WAAU;;MACb,oBAAC,SAAM,WAAU,0BAA0B;MAC3C,oBAAC;OAAK,WAAU;iBAAe,OAAO;QAAc;MACpD,oBAAC;OAAK,WAAU;iBAAwB;QAAa;;MACjD,GACJ;IACH,eAAe,SACd,qBAAC;KAAI,WAAU;;MACb,oBAAC,UAAO,WAAU,4BAA4B;MAC9C,oBAAC;OAAK,WAAU;iBAAe,cAAc;QAAc;MAC3D,oBAAC;OAAK,WAAU;iBAAwB;QAAY;;MAChD,GACJ;;IACG;EAGR,mBACC,qBAAC;GAAI,WAAU;cACZ,cAAc,UAAU,SACvB,qBAAC;IAAO,KAAI;IAAK,MAAK;IAAO,WAAU;;KACrC,oBAAC,UAAO,WAAU,wCAAwC;KAC1D,oBAAC;MAAK,WAAU;gBAAgC;OAAgB;KAC/D,aAAa,SAAS,MAAM,GAAG,EAAE,CAAC,KAAK,QACtC,oBAAC;MAEC,MAAK;MACL,OAAO,IAAI;MACX,MAAK;QAHA,IAAI,IAIT,CACF;KACD,aAAa,SAAS,SAAS,KAC9B,qBAAC;MAAK,WAAU;iBAAgC,KAC5C,aAAa,SAAS,SAAS;OAC5B;;KAEF,GACP,MACH,cAAc,UAAU,SACvB,qBAAC;IAAO,KAAI;IAAK,MAAK;IAAO,WAAU;;KACrC,oBAAC,cAAW,WAAU,qCAAqC;KAC3D,oBAAC;MAAK,WAAU;gBAAgC;OAAgB;KAC/D,aAAa,SAAS,MAAM,GAAG,EAAE,CAAC,KAAK,QACtC,oBAAC;MAEC,MAAK;MACL,OAAO,IAAI;MACX,MAAK;QAHA,IAAI,IAIT,CACF;KACD,aAAa,SAAS,SAAS,KAC9B,qBAAC;MAAK,WAAU;iBAAgC,KAC5C,aAAa,SAAS,SAAS;OAC5B;;KAEF,GACP;IACA;EAIP,KAAK,MAAM,SACV,qBAAC;GACC,KAAI;GACJ,MAAK;GACL,WAAU;;IAEV,oBAAC,OAAI,WAAU,sCAAsC;IACpD,KAAK,KAAK,MAAM,GAAG,EAAE,CAAC,KAAK,QAC1B,qBAAC;KAEC,WAAU;gBACX,KACG;OAHG,IAIA,CACP;IACD,KAAK,KAAK,SAAS,KAClB,qBAAC;KAAK,WAAU;gBAAgC,KAC5C,KAAK,KAAK,SAAS;MAChB;;IAEF,GACP;EAGH,KAAK,QAAQ,SACZ,qBAAC;GAAO,KAAI;GAAK,WAAU;cACzB,oBAAC,SAAM,WAAU,gBAAgB,EACjC,oBAAC,oBAAM,KAAK,OAAO,KAAK,KAAK,GAAQ;IAC9B,GACP;KACH"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"FeatureDataViewsList.js","names":[],"sources":["../../../../src/presentation/features/organisms/FeatureDataViewsList.tsx"],"sourcesContent":["'use client';\n\nimport { EntityCard } from '@contractspec/lib.design-system';\nimport { Table } from 'lucide-react';\nimport type { FeatureModuleSpec } from '@contractspec/lib.contracts/features';\nimport { resolveSerializedDataViewSpec } from '../../../features';\n\nexport function FeatureDataViewsList({\n feature,\n}: {\n feature: FeatureModuleSpec;\n}) {\n if (!feature.dataViews?.length) return null;\n\n return (\n <div className=\"grid grid-cols-1 gap-4 md:grid-cols-2 lg:grid-cols-3\">\n {feature.dataViews.map((view) => {\n const spec = resolveSerializedDataViewSpec(view.key, view.version);\n\n return (\n <EntityCard\n key={view.key}\n cardTitle={view.key}\n cardSubtitle={`v${view.version}`}\n footer={spec?.meta.description}\n icon={<Table className=\"h-4 w-4\" />}\n href={`/features/${feature.meta.key}/dataviews/${view.key}`}\n />\n );\n })}\n </div>\n );\n}\n"],"mappings":";;;;;;;;;AAOA,SAAgB,qBAAqB,EACnC,WAGC;AACD,KAAI,CAAC,QAAQ,WAAW,OAAQ,QAAO;AAEvC,QACE,oBAAC;EAAI,WAAU;YACZ,QAAQ,UAAU,KAAK,SAAS;GAC/B,MAAM,OAAO,8BAA8B,KAAK,KAAK,KAAK,QAAQ;AAElE,UACE,oBAAC;IAEC,WAAW,KAAK;IAChB,cAAc,IAAI,KAAK;IACvB,QAAQ,MAAM,KAAK;IACnB,MAAM,oBAAC,SAAM,WAAU,YAAY;IACnC,MAAM,aAAa,QAAQ,KAAK,IAAI,aAAa,KAAK;MALjD,KAAK,IAMV;IAEJ;GACE"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"FeatureDetail.js","names":[],"sources":["../../../../../src/presentation/features/organisms/FeatureDetail/FeatureDetail.tsx"],"sourcesContent":["'use client';\n\nimport {\n StatCard,\n StatCardGroup,\n StatusChip,\n} from '@contractspec/lib.design-system';\nimport { Box, HStack, VStack } from '@contractspec/lib.ui-kit-web/ui/stack';\nimport { cn } from '@contractspec/lib.ui-kit-web/ui/utils';\nimport type { FeatureDetailProps } from './types';\nimport Link from 'next/link';\n\nconst stabilityTone = {\n stable: 'success' as const,\n beta: 'warning' as const,\n experimental: 'info' as const,\n deprecated: 'danger' as const,\n};\n\n/**\n * Detailed view of a feature module.\n * Shows full feature info including operations, events, capabilities, and tags.\n */\nexport function FeatureDetail({ feature, className }: FeatureDetailProps) {\n const { meta, operations, events, presentations, capabilities } = feature;\n\n const tone =\n stabilityTone[meta.stability as keyof typeof stabilityTone] ?? 'neutral';\n\n return (\n <VStack gap=\"lg\" className={cn('w-full', className)}>\n <HStack gap=\"sm\">\n <StatusChip tone={tone} label={meta.stability ?? 'unknown'} />\n <StatusChip tone=\"neutral\" label={meta.key} size=\"sm\" />\n <StatusChip tone=\"neutral\" label={`v${meta.version}`} size=\"sm\" />\n </HStack>\n\n <StatCardGroup>\n <Link href={`./${feature.meta.key}/operations`}>\n <StatCard label=\"Operations\" value={operations?.length ?? 0} />\n </Link>\n <Link href={`./${feature.meta.key}/events`}>\n <StatCard label=\"Events\" value={events?.length ?? 0} />\n </Link>\n <Link href={`./${feature.meta.key}/presentations`}>\n <StatCard label=\"Presentations\" value={presentations?.length ?? 0} />\n </Link>\n </StatCardGroup>\n\n {capabilities?.provides?.length ? (\n <Box className=\"flex-col rounded-lg border p-4\" gap=\"sm\" align=\"start\">\n <span className=\"font-semibold\">Provides Capabilities</span>\n <HStack gap=\"xs\" wrap=\"wrap\">\n {capabilities.provides.map((cap) => (\n <StatusChip\n key={`${cap.key}-${cap.version}`}\n tone=\"success\"\n label={`${cap.key} v${cap.version}`}\n size=\"sm\"\n />\n ))}\n </HStack>\n </Box>\n ) : null}\n\n {capabilities?.requires?.length ? (\n <Box className=\"flex-col rounded-lg border p-4\" gap=\"sm\" align=\"start\">\n <span className=\"font-semibold\">Requires Capabilities</span>\n <HStack gap=\"xs\" wrap=\"wrap\">\n {capabilities.requires.map((req) => (\n <StatusChip\n key={req.key}\n tone=\"info\"\n label={`${req.key}${req.version ? ` v${req.version}` : ''}${req.optional ? ' (optional)' : ''}`}\n size=\"sm\"\n />\n ))}\n </HStack>\n </Box>\n ) : null}\n\n {meta.tags?.length ? (\n <Box className=\"flex-col rounded-lg border p-4\" gap=\"sm\" align=\"start\">\n <span className=\"font-semibold\">Tags</span>\n <HStack gap=\"xs\" wrap=\"wrap\">\n {meta.tags.map((tag) => (\n <StatusChip\n key={tag}\n tone=\"neutral\"\n label={`#${tag}`}\n size=\"sm\"\n />\n ))}\n </HStack>\n </Box>\n ) : null}\n\n {meta.owners?.length ? (\n <Box className=\"flex-col rounded-lg border p-4\" gap=\"sm\" align=\"start\">\n <span className=\"font-semibold\">Owners</span>\n <HStack gap=\"xs\" wrap=\"wrap\">\n {meta.owners.map((owner) => (\n <StatusChip key={owner} tone=\"neutral\" label={owner} size=\"sm\" />\n ))}\n </HStack>\n </Box>\n ) : null}\n </VStack>\n );\n}\n"],"mappings":";;;;;;;;;AAYA,MAAM,gBAAgB;CACpB,QAAQ;CACR,MAAM;CACN,cAAc;CACd,YAAY;CACb;;;;;AAMD,SAAgB,cAAc,EAAE,SAAS,aAAiC;CACxE,MAAM,EAAE,MAAM,YAAY,QAAQ,eAAe,iBAAiB;CAElE,MAAM,OACJ,cAAc,KAAK,cAA4C;AAEjE,QACE,qBAAC;EAAO,KAAI;EAAK,WAAW,GAAG,UAAU,UAAU;;GACjD,qBAAC;IAAO,KAAI;;KACV,oBAAC;MAAiB;MAAM,OAAO,KAAK,aAAa;OAAa;KAC9D,oBAAC;MAAW,MAAK;MAAU,OAAO,KAAK;MAAK,MAAK;OAAO;KACxD,oBAAC;MAAW,MAAK;MAAU,OAAO,IAAI,KAAK;MAAW,MAAK;OAAO;;KAC3D;GAET,qBAAC;IACC,oBAAC;KAAK,MAAM,KAAK,QAAQ,KAAK,IAAI;eAChC,oBAAC;MAAS,OAAM;MAAa,OAAO,YAAY,UAAU;OAAK;MAC1D;IACP,oBAAC;KAAK,MAAM,KAAK,QAAQ,KAAK,IAAI;eAChC,oBAAC;MAAS,OAAM;MAAS,OAAO,QAAQ,UAAU;OAAK;MAClD;IACP,oBAAC;KAAK,MAAM,KAAK,QAAQ,KAAK,IAAI;eAChC,oBAAC;MAAS,OAAM;MAAgB,OAAO,eAAe,UAAU;OAAK;MAChE;OACO;GAEf,cAAc,UAAU,SACvB,qBAAC;IAAI,WAAU;IAAiC,KAAI;IAAK,OAAM;eAC7D,oBAAC;KAAK,WAAU;eAAgB;MAA4B,EAC5D,oBAAC;KAAO,KAAI;KAAK,MAAK;eACnB,aAAa,SAAS,KAAK,QAC1B,oBAAC;MAEC,MAAK;MACL,OAAO,GAAG,IAAI,IAAI,IAAI,IAAI;MAC1B,MAAK;QAHA,GAAG,IAAI,IAAI,GAAG,IAAI,UAIvB,CACF;MACK;KACL,GACJ;GAEH,cAAc,UAAU,SACvB,qBAAC;IAAI,WAAU;IAAiC,KAAI;IAAK,OAAM;eAC7D,oBAAC;KAAK,WAAU;eAAgB;MAA4B,EAC5D,oBAAC;KAAO,KAAI;KAAK,MAAK;eACnB,aAAa,SAAS,KAAK,QAC1B,oBAAC;MAEC,MAAK;MACL,OAAO,GAAG,IAAI,MAAM,IAAI,UAAU,KAAK,IAAI,YAAY,KAAK,IAAI,WAAW,gBAAgB;MAC3F,MAAK;QAHA,IAAI,IAIT,CACF;MACK;KACL,GACJ;GAEH,KAAK,MAAM,SACV,qBAAC;IAAI,WAAU;IAAiC,KAAI;IAAK,OAAM;eAC7D,oBAAC;KAAK,WAAU;eAAgB;MAAW,EAC3C,oBAAC;KAAO,KAAI;KAAK,MAAK;eACnB,KAAK,KAAK,KAAK,QACd,oBAAC;MAEC,MAAK;MACL,OAAO,IAAI;MACX,MAAK;QAHA,IAIL,CACF;MACK;KACL,GACJ;GAEH,KAAK,QAAQ,SACZ,qBAAC;IAAI,WAAU;IAAiC,KAAI;IAAK,OAAM;eAC7D,oBAAC;KAAK,WAAU;eAAgB;MAAa,EAC7C,oBAAC;KAAO,KAAI;KAAK,MAAK;eACnB,KAAK,OAAO,KAAK,UAChB,oBAAC;MAAuB,MAAK;MAAU,OAAO;MAAO,MAAK;QAAzC,MAAgD,CACjE;MACK;KACL,GACJ;;GACG"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"FeatureDiscovery.js","names":[],"sources":["../../../../../src/presentation/features/organisms/FeatureDiscovery/FeatureDiscovery.tsx"],"sourcesContent":["'use client';\n\nimport * as React from 'react';\nimport {\n PageHeaderResponsive,\n EmptyState,\n Button,\n StatusChip,\n} from '@contractspec/lib.design-system';\nimport { VStack, HStack } from '@contractspec/lib.ui-kit-web/ui/stack';\nimport { cn } from '@contractspec/lib.ui-kit-web/ui/utils';\nimport { LayoutGrid, List, Star } from 'lucide-react';\nimport { useFeatureRegistry } from '../../hooks/useFeatureRegistry';\nimport { useFeatureFilters } from '../../hooks/useFeatureFilters';\nimport { FeatureCard } from '../../molecules/FeatureCard';\nimport { FeatureFiltersBar } from '../../molecules/FeatureFilters';\nimport { FeatureCategoryHeader } from '../../molecules/FeatureCategoryHeader';\nimport type { FeatureDiscoveryProps, FeatureViewMode } from './types';\nimport type { FeatureModuleSpec } from '@contractspec/lib.contracts/features';\n\n// Group features by domain\nfunction groupFeaturesByDomain(features: FeatureModuleSpec[]) {\n const groups: Record<string, FeatureModuleSpec[]> = {};\n for (const feature of features) {\n const domain = feature.meta.domain || 'Other';\n if (!groups[domain]) groups[domain] = [];\n groups[domain].push(feature);\n }\n return groups;\n}\n\n// Group features by stability\nfunction groupFeaturesByStability(features: FeatureModuleSpec[]) {\n const order = ['stable', 'beta', 'experimental', 'deprecated', 'unknown'];\n const groups: Record<string, FeatureModuleSpec[]> = {};\n for (const feature of features) {\n const stability = feature.meta.stability || 'unknown';\n if (!groups[stability]) groups[stability] = [];\n groups[stability].push(feature);\n }\n // Sort by order\n const sorted: Record<string, FeatureModuleSpec[]> = {};\n for (const key of order) {\n if (groups[key]) sorted[key] = groups[key];\n }\n return sorted;\n}\n\n/**\n * Main feature discovery UI.\n * Provides search, filtering, view modes, and browsing of registered features.\n */\nexport function FeatureDiscovery({\n onSelectFeature,\n className,\n defaultViewMode = 'grid',\n groupBy = 'domain',\n showFeatured = true,\n}: FeatureDiscoveryProps) {\n const { features, getUniqueTags, getUniqueStabilities } =\n useFeatureRegistry();\n const {\n filters,\n setSearch,\n toggleTag,\n toggleStability,\n clearFilters,\n filteredFeatures,\n hasActiveFilters,\n } = useFeatureFilters(features);\n\n const uniqueTags = getUniqueTags();\n const uniqueStabilities = getUniqueStabilities();\n\n const [viewMode, setViewMode] =\n React.useState<FeatureViewMode>(defaultViewMode);\n const [collapsedGroups, setCollapsedGroups] = React.useState<Set<string>>(\n new Set()\n );\n\n // Featured features (stable)\n const featuredFeatures = React.useMemo(\n () => filteredFeatures.filter((f) => f.meta.stability === 'stable'),\n [filteredFeatures]\n );\n\n const nonFeaturedFeatures = React.useMemo(\n () =>\n showFeatured\n ? filteredFeatures.filter((f) => f.meta.stability !== 'stable')\n : filteredFeatures,\n [filteredFeatures, showFeatured]\n );\n\n // Group features\n const groupedFeatures = React.useMemo(() => {\n if (groupBy === 'none') return null;\n if (groupBy === 'domain') return groupFeaturesByDomain(nonFeaturedFeatures);\n return groupFeaturesByStability(nonFeaturedFeatures);\n }, [nonFeaturedFeatures, groupBy]);\n\n const toggleGroup = (group: string) => {\n setCollapsedGroups((prev) => {\n const next = new Set(prev);\n if (next.has(group)) {\n next.delete(group);\n } else {\n next.add(group);\n }\n return next;\n });\n };\n\n const gridClasses =\n viewMode === 'grid'\n ? 'grid grid-cols-1 gap-4 sm:grid-cols-2 lg:grid-cols-3'\n : 'flex flex-col gap-3';\n\n const renderFeatureCards = (featureList: FeatureModuleSpec[]) => (\n <div className={gridClasses}>\n {featureList.map((feature) => (\n <FeatureCard\n key={feature.meta.key}\n feature={feature}\n onSelect={onSelectFeature}\n />\n ))}\n </div>\n );\n\n return (\n <VStack gap=\"lg\" className={cn('w-full p-6', className)}>\n <div className=\"flex flex-col gap-4 sm:flex-row sm:items-center sm:justify-between\">\n <PageHeaderResponsive\n title=\"Feature Discovery\"\n subtitle={`Browse ${features.length} available ContractSpec features`}\n />\n <HStack gap=\"xs\">\n <button\n type=\"button\"\n onClick={() => setViewMode('grid')}\n className={cn(\n 'rounded-md p-2 transition-colors',\n viewMode === 'grid'\n ? 'bg-primary text-primary-foreground'\n : 'bg-muted hover:bg-muted/80 text-muted-foreground'\n )}\n aria-label=\"Grid view\"\n >\n <LayoutGrid className=\"h-4 w-4\" />\n </button>\n <button\n type=\"button\"\n onClick={() => setViewMode('list')}\n className={cn(\n 'rounded-md p-2 transition-colors',\n viewMode === 'list'\n ? 'bg-primary text-primary-foreground'\n : 'bg-muted hover:bg-muted/80 text-muted-foreground'\n )}\n aria-label=\"List view\"\n >\n <List className=\"h-4 w-4\" />\n </button>\n </HStack>\n </div>\n\n <FeatureFiltersBar\n uniqueTags={uniqueTags}\n uniqueStabilities={uniqueStabilities}\n filters={filters}\n setSearch={setSearch}\n toggleTag={toggleTag}\n toggleStability={toggleStability}\n clearFilters={clearFilters}\n hasActiveFilters={hasActiveFilters}\n />\n\n {filteredFeatures.length === 0 ? (\n <EmptyState\n title=\"No features found\"\n description={\n hasActiveFilters\n ? 'Try adjusting your search or filters'\n : 'No features are registered yet'\n }\n primaryAction={\n hasActiveFilters ? (\n <Button variant=\"outline\" onClick={clearFilters}>\n Clear filters\n </Button>\n ) : undefined\n }\n />\n ) : (\n <VStack gap=\"lg\">\n {/* Featured section */}\n {showFeatured && featuredFeatures.length > 0 && (\n <VStack gap=\"sm\">\n <HStack gap=\"sm\" className=\"items-center\">\n <Star className=\"h-5 w-5 fill-amber-500 text-amber-500\" />\n <span className=\"text-lg font-semibold\">Featured</span>\n <StatusChip\n tone=\"success\"\n label={`${featuredFeatures.length} stable`}\n size=\"sm\"\n />\n </HStack>\n {renderFeatureCards(featuredFeatures)}\n </VStack>\n )}\n\n {/* Grouped or flat display */}\n {groupedFeatures ? (\n <VStack gap=\"md\">\n {Object.entries(groupedFeatures).map(([group, groupFeatures]) => (\n <VStack key={group} gap=\"sm\">\n <FeatureCategoryHeader\n title={group}\n count={groupFeatures.length}\n isCollapsed={collapsedGroups.has(group)}\n onToggle={() => toggleGroup(group)}\n />\n {!collapsedGroups.has(group) &&\n renderFeatureCards(groupFeatures)}\n </VStack>\n ))}\n </VStack>\n ) : (\n renderFeatureCards(nonFeaturedFeatures)\n )}\n </VStack>\n )}\n </VStack>\n );\n}\n"],"mappings":";;;;;;;;;;;;;;;;;;AAqBA,SAAS,sBAAsB,UAA+B;CAC5D,MAAM,SAA8C,EAAE;AACtD,MAAK,MAAM,WAAW,UAAU;EAC9B,MAAM,SAAS,QAAQ,KAAK,UAAU;AACtC,MAAI,CAAC,OAAO,QAAS,QAAO,UAAU,EAAE;AACxC,SAAO,QAAQ,KAAK,QAAQ;;AAE9B,QAAO;;AAIT,SAAS,yBAAyB,UAA+B;CAC/D,MAAM,QAAQ;EAAC;EAAU;EAAQ;EAAgB;EAAc;EAAU;CACzE,MAAM,SAA8C,EAAE;AACtD,MAAK,MAAM,WAAW,UAAU;EAC9B,MAAM,YAAY,QAAQ,KAAK,aAAa;AAC5C,MAAI,CAAC,OAAO,WAAY,QAAO,aAAa,EAAE;AAC9C,SAAO,WAAW,KAAK,QAAQ;;CAGjC,MAAM,SAA8C,EAAE;AACtD,MAAK,MAAM,OAAO,MAChB,KAAI,OAAO,KAAM,QAAO,OAAO,OAAO;AAExC,QAAO;;;;;;AAOT,SAAgB,iBAAiB,EAC/B,iBACA,WACA,kBAAkB,QAClB,UAAU,UACV,eAAe,QACS;CACxB,MAAM,EAAE,UAAU,eAAe,yBAC/B,oBAAoB;CACtB,MAAM,EACJ,SACA,WACA,WACA,iBACA,cACA,kBACA,qBACE,kBAAkB,SAAS;CAE/B,MAAM,aAAa,eAAe;CAClC,MAAM,oBAAoB,sBAAsB;CAEhD,MAAM,CAAC,UAAU,eACf,MAAM,SAA0B,gBAAgB;CAClD,MAAM,CAAC,iBAAiB,sBAAsB,MAAM,yBAClD,IAAI,KAAK,CACV;CAGD,MAAM,mBAAmB,MAAM,cACvB,iBAAiB,QAAQ,MAAM,EAAE,KAAK,cAAc,SAAS,EACnE,CAAC,iBAAiB,CACnB;CAED,MAAM,sBAAsB,MAAM,cAE9B,eACI,iBAAiB,QAAQ,MAAM,EAAE,KAAK,cAAc,SAAS,GAC7D,kBACN,CAAC,kBAAkB,aAAa,CACjC;CAGD,MAAM,kBAAkB,MAAM,cAAc;AAC1C,MAAI,YAAY,OAAQ,QAAO;AAC/B,MAAI,YAAY,SAAU,QAAO,sBAAsB,oBAAoB;AAC3E,SAAO,yBAAyB,oBAAoB;IACnD,CAAC,qBAAqB,QAAQ,CAAC;CAElC,MAAM,eAAe,UAAkB;AACrC,sBAAoB,SAAS;GAC3B,MAAM,OAAO,IAAI,IAAI,KAAK;AAC1B,OAAI,KAAK,IAAI,MAAM,CACjB,MAAK,OAAO,MAAM;OAElB,MAAK,IAAI,MAAM;AAEjB,UAAO;IACP;;CAGJ,MAAM,cACJ,aAAa,SACT,yDACA;CAEN,MAAM,sBAAsB,gBAC1B,oBAAC;EAAI,WAAW;YACb,YAAY,KAAK,YAChB,oBAAC;GAEU;GACT,UAAU;KAFL,QAAQ,KAAK,IAGlB,CACF;GACE;AAGR,QACE,qBAAC;EAAO,KAAI;EAAK,WAAW,GAAG,cAAc,UAAU;;GACrD,qBAAC;IAAI,WAAU;eACb,oBAAC;KACC,OAAM;KACN,UAAU,UAAU,SAAS,OAAO;MACpC,EACF,qBAAC;KAAO,KAAI;gBACV,oBAAC;MACC,MAAK;MACL,eAAe,YAAY,OAAO;MAClC,WAAW,GACT,oCACA,aAAa,SACT,uCACA,mDACL;MACD,cAAW;gBAEX,oBAAC,cAAW,WAAU,YAAY;OAC3B,EACT,oBAAC;MACC,MAAK;MACL,eAAe,YAAY,OAAO;MAClC,WAAW,GACT,oCACA,aAAa,SACT,uCACA,mDACL;MACD,cAAW;gBAEX,oBAAC,QAAK,WAAU,YAAY;OACrB;MACF;KACL;GAEN,oBAAC;IACa;IACO;IACV;IACE;IACA;IACM;IACH;IACI;KAClB;GAED,iBAAiB,WAAW,IAC3B,oBAAC;IACC,OAAM;IACN,aACE,mBACI,yCACA;IAEN,eACE,mBACE,oBAAC;KAAO,SAAQ;KAAU,SAAS;eAAc;MAExC,GACP;KAEN,GAEF,qBAAC;IAAO,KAAI;eAET,gBAAgB,iBAAiB,SAAS,KACzC,qBAAC;KAAO,KAAI;gBACV,qBAAC;MAAO,KAAI;MAAK,WAAU;;OACzB,oBAAC,QAAK,WAAU,0CAA0C;OAC1D,oBAAC;QAAK,WAAU;kBAAwB;SAAe;OACvD,oBAAC;QACC,MAAK;QACL,OAAO,GAAG,iBAAiB,OAAO;QAClC,MAAK;SACL;;OACK,EACR,mBAAmB,iBAAiB;MAC9B,EAIV,kBACC,oBAAC;KAAO,KAAI;eACT,OAAO,QAAQ,gBAAgB,CAAC,KAAK,CAAC,OAAO,mBAC5C,qBAAC;MAAmB,KAAI;iBACtB,oBAAC;OACC,OAAO;OACP,OAAO,cAAc;OACrB,aAAa,gBAAgB,IAAI,MAAM;OACvC,gBAAgB,YAAY,MAAM;QAClC,EACD,CAAC,gBAAgB,IAAI,MAAM,IAC1B,mBAAmB,cAAc;QARxB,MASJ,CACT;MACK,GAET,mBAAmB,oBAAoB;KAElC;;GAEJ"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"FeatureEventsList.js","names":[],"sources":["../../../../src/presentation/features/organisms/FeatureEventsList.tsx"],"sourcesContent":["'use client';\n\nimport { EntityCard } from '@contractspec/lib.design-system';\nimport { Radio } from 'lucide-react';\nimport type { FeatureModuleSpec } from '@contractspec/lib.contracts/features';\nimport { resolveSerializedEventSpec } from '../../../features';\n\nexport function FeatureEventsList({ feature }: { feature: FeatureModuleSpec }) {\n if (!feature.events?.length) return null;\n\n return (\n <div className=\"grid grid-cols-1 gap-4 md:grid-cols-2 lg:grid-cols-3\">\n {feature.events.map((ev) => {\n const spec = resolveSerializedEventSpec(ev.key, ev.version);\n return (\n <EntityCard\n key={ev.key}\n cardTitle={ev.key}\n cardSubtitle={`v${ev.version}`}\n footer={spec?.meta.description}\n icon={<Radio className=\"h-4 w-4\" />}\n href={`/features/${feature.meta.key}/events/${ev.key}`}\n />\n );\n })}\n </div>\n );\n}\n"],"mappings":";;;;;;;;;AAOA,SAAgB,kBAAkB,EAAE,WAA2C;AAC7E,KAAI,CAAC,QAAQ,QAAQ,OAAQ,QAAO;AAEpC,QACE,oBAAC;EAAI,WAAU;YACZ,QAAQ,OAAO,KAAK,OAAO;GAC1B,MAAM,OAAO,2BAA2B,GAAG,KAAK,GAAG,QAAQ;AAC3D,UACE,oBAAC;IAEC,WAAW,GAAG;IACd,cAAc,IAAI,GAAG;IACrB,QAAQ,MAAM,KAAK;IACnB,MAAM,oBAAC,SAAM,WAAU,YAAY;IACnC,MAAM,aAAa,QAAQ,KAAK,IAAI,UAAU,GAAG;MAL5C,GAAG,IAMR;IAEJ;GACE"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"FeatureFormsList.js","names":[],"sources":["../../../../src/presentation/features/organisms/FeatureFormsList.tsx"],"sourcesContent":["'use client';\n\nimport { EntityCard } from '@contractspec/lib.design-system';\nimport { FormInput } from 'lucide-react';\nimport type { FeatureModuleSpec } from '@contractspec/lib.contracts/features';\nimport { resolveSerializedFormSpec } from '../../../features';\n\nexport function FeatureFormsList({ feature }: { feature: FeatureModuleSpec }) {\n if (!feature.forms?.length) return null;\n\n return (\n <div className=\"grid grid-cols-1 gap-4 md:grid-cols-2 lg:grid-cols-3\">\n {feature.forms.map((form) => {\n const spec = resolveSerializedFormSpec(form.key, form.version);\n\n return (\n <EntityCard\n key={form.key}\n cardTitle={form.key}\n cardSubtitle={form.version ? `v${form.version}` : undefined}\n footer={spec?.meta.description}\n icon={<FormInput className=\"h-4 w-4\" />}\n href={`/features/${feature.meta.key}/forms/${form.key}`}\n />\n );\n })}\n </div>\n );\n}\n"],"mappings":";;;;;;;;;AAOA,SAAgB,iBAAiB,EAAE,WAA2C;AAC5E,KAAI,CAAC,QAAQ,OAAO,OAAQ,QAAO;AAEnC,QACE,oBAAC;EAAI,WAAU;YACZ,QAAQ,MAAM,KAAK,SAAS;GAC3B,MAAM,OAAO,0BAA0B,KAAK,KAAK,KAAK,QAAQ;AAE9D,UACE,oBAAC;IAEC,WAAW,KAAK;IAChB,cAAc,KAAK,UAAU,IAAI,KAAK,YAAY;IAClD,QAAQ,MAAM,KAAK;IACnB,MAAM,oBAAC,aAAU,WAAU,YAAY;IACvC,MAAM,aAAa,QAAQ,KAAK,IAAI,SAAS,KAAK;MAL7C,KAAK,IAMV;IAEJ;GACE"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"FeatureOperationsList.js","names":[],"sources":["../../../../src/presentation/features/organisms/FeatureOperationsList.tsx"],"sourcesContent":["'use client';\n\nimport { EntityCard } from '@contractspec/lib.design-system';\nimport { Zap } from 'lucide-react';\nimport type { FeatureModuleSpec } from '@contractspec/lib.contracts/features';\nimport { resolveSerializedOperationSpec } from '../../../features/contracts-registry';\n\nexport function FeatureOperationsList({\n feature,\n}: {\n feature: FeatureModuleSpec;\n}) {\n if (!feature.operations?.length) return null;\n\n return (\n <div className=\"grid grid-cols-1 gap-4 md:grid-cols-2 lg:grid-cols-3\">\n {feature.operations.map((op) => {\n const spec = resolveSerializedOperationSpec(op.key, op.version);\n\n return (\n <EntityCard\n key={op.key}\n cardTitle={op.key}\n cardSubtitle={`v${op.version}`}\n footer={spec?.meta.description}\n icon={<Zap className=\"h-4 w-4\" />}\n href={`/features/${feature.meta.key}/operations/${op.key}`}\n />\n );\n })}\n </div>\n );\n}\n"],"mappings":";;;;;;;;AAOA,SAAgB,sBAAsB,EACpC,WAGC;AACD,KAAI,CAAC,QAAQ,YAAY,OAAQ,QAAO;AAExC,QACE,oBAAC;EAAI,WAAU;YACZ,QAAQ,WAAW,KAAK,OAAO;GAC9B,MAAM,OAAO,+BAA+B,GAAG,KAAK,GAAG,QAAQ;AAE/D,UACE,oBAAC;IAEC,WAAW,GAAG;IACd,cAAc,IAAI,GAAG;IACrB,QAAQ,MAAM,KAAK;IACnB,MAAM,oBAAC,OAAI,WAAU,YAAY;IACjC,MAAM,aAAa,QAAQ,KAAK,IAAI,cAAc,GAAG;MALhD,GAAG,IAMR;IAEJ;GACE"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"FeaturePresentationsList.js","names":[],"sources":["../../../../src/presentation/features/organisms/FeaturePresentationsList.tsx"],"sourcesContent":["'use client';\n\nimport { EntityCard } from '@contractspec/lib.design-system';\nimport { Layout } from 'lucide-react';\nimport type { FeatureModuleSpec } from '@contractspec/lib.contracts/features';\nimport { resolveSerializedPresentationSpec } from '../../../features';\n\nexport function FeaturePresentationsList({\n feature,\n}: {\n feature: FeatureModuleSpec;\n}) {\n if (!feature.presentations?.length) return null;\n\n return (\n <div className=\"grid grid-cols-1 gap-4 md:grid-cols-2 lg:grid-cols-3\">\n {feature.presentations.map((pres) => {\n const spec = resolveSerializedPresentationSpec(pres.key, pres.version);\n\n return (\n <EntityCard\n key={pres.key}\n cardTitle={pres.key}\n cardSubtitle={`v${pres.version}`}\n footer={spec?.meta.description}\n icon={<Layout className=\"h-4 w-4\" />}\n href={`/features/${feature.meta.key}/presentations/${pres.key}`}\n />\n );\n })}\n </div>\n );\n}\n"],"mappings":";;;;;;;;;AAOA,SAAgB,yBAAyB,EACvC,WAGC;AACD,KAAI,CAAC,QAAQ,eAAe,OAAQ,QAAO;AAE3C,QACE,oBAAC;EAAI,WAAU;YACZ,QAAQ,cAAc,KAAK,SAAS;GACnC,MAAM,OAAO,kCAAkC,KAAK,KAAK,KAAK,QAAQ;AAEtE,UACE,oBAAC;IAEC,WAAW,KAAK;IAChB,cAAc,IAAI,KAAK;IACvB,QAAQ,MAAM,KAAK;IACnB,MAAM,oBAAC,UAAO,WAAU,YAAY;IACpC,MAAM,aAAa,QAAQ,KAAK,IAAI,iBAAiB,KAAK;MALrD,KAAK,IAMV;IAEJ;GACE"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"FeatureDataViewDetailTemplate.js","names":[],"sources":["../../../../../src/presentation/features/templates/FeatureDataViewDetailTemplate/FeatureDataViewDetailTemplate.tsx"],"sourcesContent":["'use client';\n\nimport {\n Breadcrumbs,\n CodeBlock,\n EmptyState,\n PageHeaderResponsive,\n StatusChip,\n} from '@contractspec/lib.design-system';\nimport { Card } from '@contractspec/lib.ui-kit-web/ui/card';\nimport { Box, HStack, VStack } from '@contractspec/lib.ui-kit-web/ui/stack';\nimport { cn } from '@contractspec/lib.ui-kit-web/ui/utils';\nimport type { FeatureDataViewDetailTemplateProps } from './types';\nimport { BookOpen, Code, Database, Table } from 'lucide-react';\nimport { useRelatedDocs } from '../../hooks/useRelatedDocs';\nimport Link from 'next/link';\n\nexport function FeatureDataViewDetailTemplate({\n feature,\n viewKey,\n view,\n spec,\n className,\n}: FeatureDataViewDetailTemplateProps) {\n const viewRef = view ?? feature.dataViews?.find((v) => v.key === viewKey);\n\n const relatedDocs = useRelatedDocs(viewRef?.key || '', spec?.meta?.tags);\n\n if (!viewRef) {\n return (\n <VStack\n gap=\"lg\"\n className={cn('mx-auto w-full max-w-5xl p-6', className)}\n >\n <PageHeaderResponsive\n title=\"Data View Not Found\"\n subtitle={`Data View ${viewKey} not found in feature ${feature.meta.key}`}\n breadcrumb={\n <Breadcrumbs\n items={[\n { label: 'Features', href: '/features' },\n {\n label: feature.meta.title || feature.meta.key,\n href: `/features/${feature.meta.key}`,\n },\n { label: 'Data Views' },\n ]}\n />\n }\n />\n <EmptyState\n title=\"Data View not found\"\n description={`The data view '${viewKey}' could not be found in this feature.`}\n icon={<Table className=\"text-muted-foreground h-12 w-12\" />}\n />\n </VStack>\n );\n }\n\n return (\n <VStack gap=\"lg\" className={cn('mx-auto w-full max-w-5xl p-6', className)}>\n <PageHeaderResponsive\n title={viewRef.key}\n subtitle={`Data View defined in ${feature.meta.title ?? feature.meta.key}`}\n breadcrumb={\n <Breadcrumbs\n items={[\n { label: 'Features', href: '/features' },\n {\n label: feature.meta.title || feature.meta.key,\n href: `/features/${feature.meta.key}`,\n },\n {\n label: 'Data Views',\n href: `/features/${feature.meta.key}#dataviews`,\n },\n { label: viewRef.key },\n ]}\n />\n }\n />\n\n <HStack gap=\"sm\">\n <StatusChip\n tone=\"neutral\"\n label={viewRef.key}\n size=\"sm\"\n icon={<Table className=\"h-3 w-3\" />}\n />\n <StatusChip tone=\"neutral\" label={`v${viewRef.version}`} size=\"sm\" />\n {spec?.meta?.stability ? (\n <StatusChip\n tone={spec.meta.stability === 'stable' ? 'success' : 'warning'}\n label={spec.meta.stability}\n size=\"sm\"\n />\n ) : null}\n </HStack>\n\n <div className=\"grid grid-cols-1 gap-6 lg:grid-cols-3\">\n <div className=\"space-y-6 lg:col-span-2\">\n <Card className=\"p-6\">\n <VStack gap=\"md\">\n <HStack className=\"items-center gap-2 border-b pb-2\">\n <Code className=\"text-muted-foreground h-5 w-5\" />\n <h3 className=\"text-lg font-semibold\">View Definition</h3>\n </HStack>\n\n {spec ? (\n <VStack gap=\"lg\">\n {spec.meta.description && (\n <p className=\"text-muted-foreground\">\n {spec.meta.description}\n </p>\n )}\n\n <Box className=\"flex-col gap-2\">\n <span className=\"text-muted-foreground text-sm font-medium tracking-wider uppercase\">\n Source Query\n </span>\n <CodeBlock\n code={JSON.stringify(spec.source, null, 2)}\n language=\"json\"\n />\n </Box>\n\n <Box className=\"flex-col gap-2\">\n <span className=\"text-muted-foreground text-sm font-medium tracking-wider uppercase\">\n View Configuration\n </span>\n <CodeBlock\n code={JSON.stringify(spec.view, null, 2)}\n language=\"json\"\n />\n </Box>\n </VStack>\n ) : (\n <VStack gap=\"md\">\n <p className=\"text-muted-foreground\">\n Full definition details are not available for this data view\n reference.\n </p>\n <CodeBlock\n code={JSON.stringify(viewRef, null, 2)}\n language=\"json\"\n />\n </VStack>\n )}\n </VStack>\n </Card>\n </div>\n\n <div className=\"space-y-6\">\n <Card className=\"p-6\">\n <VStack gap=\"md\">\n <HStack className=\"items-center gap-2 border-b pb-2\">\n <Database className=\"text-muted-foreground h-5 w-5\" />\n <h3 className=\"text-lg font-semibold\">Metadata</h3>\n </HStack>\n\n <dl className=\"grid grid-cols-1 gap-4 text-sm\">\n <div>\n <dt className=\"text-muted-foreground\">Key</dt>\n <dd className=\"truncate font-medium\">{viewRef.key}</dd>\n </div>\n <div>\n <dt className=\"text-muted-foreground\">Version</dt>\n <dd className=\"font-medium\">{viewRef.version}</dd>\n </div>\n {spec?.meta?.owners && (\n <div>\n <dt className=\"text-muted-foreground\">Owners</dt>\n <dd className=\"flex flex-wrap gap-1 font-medium\">\n {spec.meta.owners.map((o: string) => (\n <StatusChip\n key={o}\n label={o}\n size=\"sm\"\n tone=\"neutral\"\n />\n ))}\n </dd>\n </div>\n )}\n {spec?.meta?.tags && (\n <div>\n <dt className=\"text-muted-foreground\">Tags</dt>\n <dd className=\"flex flex-wrap gap-1 font-medium\">\n {spec.meta.tags.map((t: string) => (\n <StatusChip\n key={t}\n label={`#${t}`}\n size=\"sm\"\n tone=\"neutral\"\n />\n ))}\n </dd>\n </div>\n )}\n </dl>\n </VStack>\n </Card>\n </div>\n\n {/* Related Docs */}\n {relatedDocs?.length ? (\n <div className=\"lg:col-span-3\">\n <Card className=\"p-6\">\n <VStack gap=\"md\">\n <HStack className=\"items-center gap-2 border-b pb-2\">\n <BookOpen className=\"text-muted-foreground h-5 w-5\" />\n <h3 className=\"text-lg font-semibold\">\n Related Documentation\n </h3>\n </HStack>\n <div className=\"grid grid-cols-1 gap-4 md:grid-cols-2 lg:grid-cols-3\">\n {relatedDocs.map((doc) => (\n <Link\n key={doc.id}\n href={doc.route || `/docs/${doc.id}`}\n className=\"group block\"\n >\n <div className=\"hover:border-primary h-full rounded-lg border p-4 transition-colors\">\n <h4 className=\"group-hover:text-primary mb-1 font-semibold\">\n {doc.title}\n </h4>\n {doc.summary && (\n <p className=\"text-muted-foreground line-clamp-2 text-sm\">\n {doc.summary}\n </p>\n )}\n </div>\n </Link>\n ))}\n </div>\n </VStack>\n </Card>\n </div>\n ) : null}\n </div>\n </VStack>\n );\n}\n"],"mappings":";;;;;;;;;;;;AAiBA,SAAgB,8BAA8B,EAC5C,SACA,SACA,MACA,MACA,aACqC;CACrC,MAAM,UAAU,QAAQ,QAAQ,WAAW,MAAM,MAAM,EAAE,QAAQ,QAAQ;CAEzE,MAAM,cAAc,eAAe,SAAS,OAAO,IAAI,MAAM,MAAM,KAAK;AAExE,KAAI,CAAC,QACH,QACE,qBAAC;EACC,KAAI;EACJ,WAAW,GAAG,gCAAgC,UAAU;aAExD,oBAAC;GACC,OAAM;GACN,UAAU,aAAa,QAAQ,wBAAwB,QAAQ,KAAK;GACpE,YACE,oBAAC,eACC,OAAO;IACL;KAAE,OAAO;KAAY,MAAM;KAAa;IACxC;KACE,OAAO,QAAQ,KAAK,SAAS,QAAQ,KAAK;KAC1C,MAAM,aAAa,QAAQ,KAAK;KACjC;IACD,EAAE,OAAO,cAAc;IACxB,GACD;IAEJ,EACF,oBAAC;GACC,OAAM;GACN,aAAa,kBAAkB,QAAQ;GACvC,MAAM,oBAAC,SAAM,WAAU,oCAAoC;IAC3D;GACK;AAIb,QACE,qBAAC;EAAO,KAAI;EAAK,WAAW,GAAG,gCAAgC,UAAU;;GACvE,oBAAC;IACC,OAAO,QAAQ;IACf,UAAU,wBAAwB,QAAQ,KAAK,SAAS,QAAQ,KAAK;IACrE,YACE,oBAAC,eACC,OAAO;KACL;MAAE,OAAO;MAAY,MAAM;MAAa;KACxC;MACE,OAAO,QAAQ,KAAK,SAAS,QAAQ,KAAK;MAC1C,MAAM,aAAa,QAAQ,KAAK;MACjC;KACD;MACE,OAAO;MACP,MAAM,aAAa,QAAQ,KAAK,IAAI;MACrC;KACD,EAAE,OAAO,QAAQ,KAAK;KACvB,GACD;KAEJ;GAEF,qBAAC;IAAO,KAAI;;KACV,oBAAC;MACC,MAAK;MACL,OAAO,QAAQ;MACf,MAAK;MACL,MAAM,oBAAC,SAAM,WAAU,YAAY;OACnC;KACF,oBAAC;MAAW,MAAK;MAAU,OAAO,IAAI,QAAQ;MAAW,MAAK;OAAO;KACpE,MAAM,MAAM,YACX,oBAAC;MACC,MAAM,KAAK,KAAK,cAAc,WAAW,YAAY;MACrD,OAAO,KAAK,KAAK;MACjB,MAAK;OACL,GACA;;KACG;GAET,qBAAC;IAAI,WAAU;;KACb,oBAAC;MAAI,WAAU;gBACb,oBAAC;OAAK,WAAU;iBACd,qBAAC;QAAO,KAAI;mBACV,qBAAC;SAAO,WAAU;oBAChB,oBAAC,QAAK,WAAU,kCAAkC,EAClD,oBAAC;UAAG,WAAU;oBAAwB;WAAoB;UACnD,EAER,OACC,qBAAC;SAAO,KAAI;;UACT,KAAK,KAAK,eACT,oBAAC;WAAE,WAAU;qBACV,KAAK,KAAK;YACT;UAGN,qBAAC;WAAI,WAAU;sBACb,oBAAC;YAAK,WAAU;sBAAqE;aAE9E,EACP,oBAAC;YACC,MAAM,KAAK,UAAU,KAAK,QAAQ,MAAM,EAAE;YAC1C,UAAS;aACT;YACE;UAEN,qBAAC;WAAI,WAAU;sBACb,oBAAC;YAAK,WAAU;sBAAqE;aAE9E,EACP,oBAAC;YACC,MAAM,KAAK,UAAU,KAAK,MAAM,MAAM,EAAE;YACxC,UAAS;aACT;YACE;;UACC,GAET,qBAAC;SAAO,KAAI;oBACV,oBAAC;UAAE,WAAU;oBAAwB;WAGjC,EACJ,oBAAC;UACC,MAAM,KAAK,UAAU,SAAS,MAAM,EAAE;UACtC,UAAS;WACT;UACK;SAEJ;QACJ;OACH;KAEN,oBAAC;MAAI,WAAU;gBACb,oBAAC;OAAK,WAAU;iBACd,qBAAC;QAAO,KAAI;mBACV,qBAAC;SAAO,WAAU;oBAChB,oBAAC,YAAS,WAAU,kCAAkC,EACtD,oBAAC;UAAG,WAAU;oBAAwB;WAAa;UAC5C,EAET,qBAAC;SAAG,WAAU;;UACZ,qBAAC,oBACC,oBAAC;WAAG,WAAU;qBAAwB;YAAQ,EAC9C,oBAAC;WAAG,WAAU;qBAAwB,QAAQ;YAAS,IACnD;UACN,qBAAC,oBACC,oBAAC;WAAG,WAAU;qBAAwB;YAAY,EAClD,oBAAC;WAAG,WAAU;qBAAe,QAAQ;YAAa,IAC9C;UACL,MAAM,MAAM,UACX,qBAAC,oBACC,oBAAC;WAAG,WAAU;qBAAwB;YAAW,EACjD,oBAAC;WAAG,WAAU;qBACX,KAAK,KAAK,OAAO,KAAK,MACrB,oBAAC;YAEC,OAAO;YACP,MAAK;YACL,MAAK;cAHA,EAIL,CACF;YACC,IACD;UAEP,MAAM,MAAM,QACX,qBAAC,oBACC,oBAAC;WAAG,WAAU;qBAAwB;YAAS,EAC/C,oBAAC;WAAG,WAAU;qBACX,KAAK,KAAK,KAAK,KAAK,MACnB,oBAAC;YAEC,OAAO,IAAI;YACX,MAAK;YACL,MAAK;cAHA,EAIL,CACF;YACC,IACD;;UAEL;SACE;QACJ;OACH;KAGL,aAAa,SACZ,oBAAC;MAAI,WAAU;gBACb,oBAAC;OAAK,WAAU;iBACd,qBAAC;QAAO,KAAI;mBACV,qBAAC;SAAO,WAAU;oBAChB,oBAAC,YAAS,WAAU,kCAAkC,EACtD,oBAAC;UAAG,WAAU;oBAAwB;WAEjC;UACE,EACT,oBAAC;SAAI,WAAU;mBACZ,YAAY,KAAK,QAChB,oBAAC;UAEC,MAAM,IAAI,SAAS,SAAS,IAAI;UAChC,WAAU;oBAEV,qBAAC;WAAI,WAAU;sBACb,oBAAC;YAAG,WAAU;sBACX,IAAI;aACF,EACJ,IAAI,WACH,oBAAC;YAAE,WAAU;sBACV,IAAI;aACH;YAEF;YAbD,IAAI,GAcJ,CACP;UACE;SACC;QACJ;OACH,GACJ;;KACA;;GACC"}