@contractspec/bundle.library 3.4.3 → 3.5.2

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 (556) hide show
  1. package/.turbo/turbo-build.log +494 -488
  2. package/CHANGELOG.md +91 -0
  3. package/dist/application/index.js +8 -8
  4. package/dist/application/mcp/cliMcp.js +8 -8
  5. package/dist/application/mcp/contractsMcp.js +8 -8
  6. package/dist/application/mcp/docsMcp.js +8 -8
  7. package/dist/application/mcp/index.js +8 -8
  8. package/dist/application/mcp/internalMcp.js +8 -8
  9. package/dist/application/mcp/providerRankingMcp.js +8 -8
  10. package/dist/bundles/LibraryBundle.d.ts +126 -0
  11. package/dist/bundles/LibraryBundle.js +139 -0
  12. package/dist/bundles/index.d.ts +1 -0
  13. package/dist/bundles/index.js +139 -0
  14. package/dist/components/docs/DocsIndexPage.js +91 -91
  15. package/dist/components/docs/advanced/AdvancedMCPPage.js +125 -125
  16. package/dist/components/docs/advanced/AdvancedOverlayEditorPage.js +49 -49
  17. package/dist/components/docs/advanced/AdvancedRenderersPage.js +51 -51
  18. package/dist/components/docs/advanced/AdvancedSpecExperimentsPage.js +35 -35
  19. package/dist/components/docs/advanced/AdvancedTelemetryPage.js +177 -177
  20. package/dist/components/docs/advanced/AdvancedWorkflowMonitoringPage.js +45 -45
  21. package/dist/components/docs/advanced/index.js +482 -482
  22. package/dist/components/docs/architecture/ArchitectureAppConfigPage.js +107 -107
  23. package/dist/components/docs/architecture/ArchitectureControlPlanePage.js +73 -73
  24. package/dist/components/docs/architecture/ArchitectureIntegrationBindingPage.js +117 -117
  25. package/dist/components/docs/architecture/ArchitectureKnowledgeBindingPage.js +175 -175
  26. package/dist/components/docs/architecture/ArchitectureMultiTenancyPage.js +71 -71
  27. package/dist/components/docs/architecture/ArchitectureOverviewPage.js +205 -205
  28. package/dist/components/docs/architecture/index.js +748 -748
  29. package/dist/components/docs/comparison/ComparisonAutomationPlatformsPage.js +117 -117
  30. package/dist/components/docs/comparison/ComparisonEnterprisePlatformsPage.js +111 -111
  31. package/dist/components/docs/comparison/ComparisonInternalToolBuildersPage.js +117 -117
  32. package/dist/components/docs/comparison/ComparisonOverviewPage.js +97 -97
  33. package/dist/components/docs/comparison/ComparisonWindmillPage.js +125 -125
  34. package/dist/components/docs/comparison/ComparisonWorkflowEnginesPage.js +171 -171
  35. package/dist/components/docs/comparison/index.js +738 -738
  36. package/dist/components/docs/ecosystem/IntegrationsPage.js +45 -45
  37. package/dist/components/docs/ecosystem/PluginsPage.js +73 -73
  38. package/dist/components/docs/ecosystem/RegistryPage.js +37 -37
  39. package/dist/components/docs/ecosystem/TemplatesPage.js +56 -56
  40. package/dist/components/docs/ecosystem/index.js +211 -211
  41. package/dist/components/docs/examples/DocsExamplesPage.js +21 -21
  42. package/dist/components/docs/examples/index.js +21 -21
  43. package/dist/components/docs/generated/docs-index.generated.d.ts +6 -6
  44. package/dist/components/docs/getting-started/CLIPage.js +95 -95
  45. package/dist/components/docs/getting-started/CompatibilityPage.js +81 -81
  46. package/dist/components/docs/getting-started/DataViewTutorialPage.js +57 -57
  47. package/dist/components/docs/getting-started/DeveloperToolsPage.js +61 -61
  48. package/dist/components/docs/getting-started/HelloWorldPage.js +77 -77
  49. package/dist/components/docs/getting-started/InstallationPage.js +65 -65
  50. package/dist/components/docs/getting-started/StartHerePage.js +51 -51
  51. package/dist/components/docs/getting-started/TroubleshootingPage.js +73 -73
  52. package/dist/components/docs/getting-started/VSCodeExtensionPage.js +171 -171
  53. package/dist/components/docs/getting-started/index.js +731 -731
  54. package/dist/components/docs/guides/GuideCIDiffGatingPage.js +80 -80
  55. package/dist/components/docs/guides/GuideContractTypesPage.js +232 -232
  56. package/dist/components/docs/guides/GuideDocsPipelinePage.js +82 -82
  57. package/dist/components/docs/guides/GuideGenerateDocsClientsSchemasPage.js +84 -84
  58. package/dist/components/docs/guides/GuideImportExistingCodebasesPage.js +324 -324
  59. package/dist/components/docs/guides/GuideNextjsOneEndpointPage.js +107 -107
  60. package/dist/components/docs/guides/GuideSpecValidationTypingPage.js +78 -78
  61. package/dist/components/docs/guides/GuidesIndexPage.js +43 -43
  62. package/dist/components/docs/guides/index.js +976 -976
  63. package/dist/components/docs/index.js +10792 -10792
  64. package/dist/components/docs/integrations/IntegrationsCircuitBreakersPage.js +17 -17
  65. package/dist/components/docs/integrations/IntegrationsElevenLabsPage.js +47 -47
  66. package/dist/components/docs/integrations/IntegrationsGithubPage.js +61 -61
  67. package/dist/components/docs/integrations/IntegrationsGmailPage.js +49 -49
  68. package/dist/components/docs/integrations/IntegrationsGoogleCalendarPage.js +33 -33
  69. package/dist/components/docs/integrations/IntegrationsHealthRoutingPage.js +65 -65
  70. package/dist/components/docs/integrations/IntegrationsMistralPage.js +69 -69
  71. package/dist/components/docs/integrations/IntegrationsOpenAIPage.js +65 -65
  72. package/dist/components/docs/integrations/IntegrationsOverviewPage.js +313 -313
  73. package/dist/components/docs/integrations/IntegrationsPostmarkPage.js +101 -101
  74. package/dist/components/docs/integrations/IntegrationsPowensPage.js +121 -121
  75. package/dist/components/docs/integrations/IntegrationsQdrantPage.js +49 -49
  76. package/dist/components/docs/integrations/IntegrationsResendPage.js +45 -45
  77. package/dist/components/docs/integrations/IntegrationsS3Page.js +57 -57
  78. package/dist/components/docs/integrations/IntegrationsSlackPage.js +63 -63
  79. package/dist/components/docs/integrations/IntegrationsSpecModelPage.js +139 -139
  80. package/dist/components/docs/integrations/IntegrationsStripePage.js +159 -159
  81. package/dist/components/docs/integrations/IntegrationsTwilioPage.js +61 -61
  82. package/dist/components/docs/integrations/IntegrationsWhatsappMetaPage.js +63 -63
  83. package/dist/components/docs/integrations/IntegrationsWhatsappTwilioPage.js +65 -65
  84. package/dist/components/docs/integrations/index.js +1642 -1642
  85. package/dist/components/docs/intent/ContractFirstApiPage.js +51 -51
  86. package/dist/components/docs/intent/DeterministicCodegenPage.js +59 -59
  87. package/dist/components/docs/intent/GenerateClientFromSchemaPage.js +85 -85
  88. package/dist/components/docs/intent/OpenapiAlternativePage.js +91 -91
  89. package/dist/components/docs/intent/SchemaValidationTypescriptPage.js +59 -59
  90. package/dist/components/docs/intent/SpecDrivenDevelopmentPage.js +51 -51
  91. package/dist/components/docs/intent/index.js +396 -396
  92. package/dist/components/docs/knowledge/KnowledgeCategoriesPage.js +371 -371
  93. package/dist/components/docs/knowledge/KnowledgeExamplesPage.js +79 -79
  94. package/dist/components/docs/knowledge/KnowledgeOverviewPage.js +185 -185
  95. package/dist/components/docs/knowledge/KnowledgeSourcesPage.js +187 -187
  96. package/dist/components/docs/knowledge/KnowledgeSpacesPage.js +141 -141
  97. package/dist/components/docs/knowledge/index.js +963 -963
  98. package/dist/components/docs/libraries/LibrariesAccessibilityPage.js +85 -85
  99. package/dist/components/docs/libraries/LibrariesAiAgentPage.js +63 -63
  100. package/dist/components/docs/libraries/LibrariesAnalyticsPage.js +33 -33
  101. package/dist/components/docs/libraries/LibrariesContentGenPage.js +43 -43
  102. package/dist/components/docs/libraries/LibrariesContractsPage.js +125 -125
  103. package/dist/components/docs/libraries/LibrariesCostTrackingPage.js +45 -45
  104. package/dist/components/docs/libraries/LibrariesDataBackendPage.js +69 -69
  105. package/dist/components/docs/libraries/LibrariesDataViewsPage.js +79 -79
  106. package/dist/components/docs/libraries/LibrariesDesignSystemPage.js +129 -129
  107. package/dist/components/docs/libraries/LibrariesEvolutionPage.js +49 -49
  108. package/dist/components/docs/libraries/LibrariesGraphQLPage.js +73 -73
  109. package/dist/components/docs/libraries/LibrariesGrowthPage.js +35 -35
  110. package/dist/components/docs/libraries/LibrariesMultiTenancyPage.js +43 -43
  111. package/dist/components/docs/libraries/LibrariesObservabilityPage.js +53 -53
  112. package/dist/components/docs/libraries/LibrariesOverlayEnginePage.js +45 -45
  113. package/dist/components/docs/libraries/LibrariesOverviewPage.js +191 -191
  114. package/dist/components/docs/libraries/LibrariesPersonalizationPage.js +47 -47
  115. package/dist/components/docs/libraries/LibrariesProgressiveDeliveryPage.js +53 -53
  116. package/dist/components/docs/libraries/LibrariesResiliencePage.js +49 -49
  117. package/dist/components/docs/libraries/LibrariesRuntimePage.js +87 -87
  118. package/dist/components/docs/libraries/LibrariesSLOPage.js +47 -47
  119. package/dist/components/docs/libraries/LibrariesSchemaPage.js +139 -139
  120. package/dist/components/docs/libraries/LibrariesSupportBotPage.js +57 -57
  121. package/dist/components/docs/libraries/LibrariesTestingPage.js +49 -49
  122. package/dist/components/docs/libraries/LibrariesUIKitPage.js +107 -107
  123. package/dist/components/docs/libraries/LibrariesWorkflowComposerPage.js +35 -35
  124. package/dist/components/docs/libraries/LibrariesWorkflowsPage.js +89 -89
  125. package/dist/components/docs/libraries/index.js +1919 -1919
  126. package/dist/components/docs/manifesto/ManifestoPage.js +79 -79
  127. package/dist/components/docs/ops/AutoEvolutionOpsPage.js +59 -59
  128. package/dist/components/docs/ops/DistributedTracingOpsPage.js +33 -33
  129. package/dist/components/docs/ops/index.js +92 -92
  130. package/dist/components/docs/reference/DocsMarkdownContent.js +27 -27
  131. package/dist/components/docs/reference/DocsReferenceContent.js +34 -34
  132. package/dist/components/docs/reference/DocsReferenceIndexClient.js +23 -23
  133. package/dist/components/docs/reference/DocsReferenceIndexPage.js +26 -26
  134. package/dist/components/docs/reference/DocsReferencePage.js +37 -37
  135. package/dist/components/docs/reference/index.js +63 -63
  136. package/dist/components/docs/safety/SafetyAuditingPage.js +161 -161
  137. package/dist/components/docs/safety/SafetyMigrationsPage.js +169 -169
  138. package/dist/components/docs/safety/SafetyOverviewPage.js +99 -99
  139. package/dist/components/docs/safety/SafetyPDPPage.js +137 -137
  140. package/dist/components/docs/safety/SafetySecurityTrustPage.js +95 -95
  141. package/dist/components/docs/safety/SafetySigningPage.js +39 -39
  142. package/dist/components/docs/safety/SafetyTenantIsolationPage.js +33 -33
  143. package/dist/components/docs/safety/index.js +733 -733
  144. package/dist/components/docs/shared/StudioPrompt.js +9 -9
  145. package/dist/components/docs/specs/SpecsCapabilitiesPage.js +61 -61
  146. package/dist/components/docs/specs/SpecsDataViewsPage.js +119 -119
  147. package/dist/components/docs/specs/SpecsOverlaysPage.js +171 -171
  148. package/dist/components/docs/specs/SpecsOverviewPage.js +167 -167
  149. package/dist/components/docs/specs/SpecsPolicyPage.js +179 -179
  150. package/dist/components/docs/specs/SpecsWorkflowsPage.js +141 -141
  151. package/dist/components/docs/specs/index.js +838 -838
  152. package/dist/components/docs/studio/StudioBYOKPage.js +9 -9
  153. package/dist/components/docs/studio/StudioDeploymentsPage.js +9 -9
  154. package/dist/components/docs/studio/StudioGettingStartedPage.js +9 -9
  155. package/dist/components/docs/studio/StudioIntegrationsPage.js +9 -9
  156. package/dist/components/docs/studio/StudioOverviewPage.js +33 -33
  157. package/dist/components/docs/studio/StudioVisualBuilderPage.js +9 -9
  158. package/dist/components/docs/studio/index.js +78 -78
  159. package/dist/components/integrations/index.js +209 -209
  160. package/dist/components/integrations/molecules/IntegrationCard.js +33 -33
  161. package/dist/components/integrations/organisms/IntegrationMarketplace.js +71 -71
  162. package/dist/components/integrations/organisms/IntegrationSettings.js +98 -98
  163. package/dist/components/integrations/organisms/KnowledgeSourceList.js +40 -40
  164. package/dist/components/legal/PrivacyTemplate.js +477 -477
  165. package/dist/components/legal/TermsTemplate.js +421 -421
  166. package/dist/components/legal/index.js +898 -898
  167. package/dist/components/shared/FeatureGateNotice.js +13 -13
  168. package/dist/components/shared/index.js +13 -13
  169. package/dist/components/shell/WorkspaceHeader.js +37 -37
  170. package/dist/components/shell/WorkspaceProjectShellLayout.js +77 -77
  171. package/dist/components/shell/WorkspaceShellRenderer.d.ts +17 -0
  172. package/dist/components/shell/WorkspaceShellRenderer.js +229 -0
  173. package/dist/components/shell/WorkspaceSidebar.js +27 -27
  174. package/dist/components/shell/index.d.ts +1 -0
  175. package/dist/components/shell/index.js +140 -77
  176. package/dist/components/templates/index.js +272 -272
  177. package/dist/components/templates/messaging/ConversationList.js +27 -27
  178. package/dist/components/templates/messaging/MessageComposer.js +27 -27
  179. package/dist/components/templates/messaging/MessageThread.js +18 -18
  180. package/dist/components/templates/messaging/MessagingWorkspace.js +65 -65
  181. package/dist/components/templates/messaging/index.js +65 -65
  182. package/dist/components/templates/recipes/LanguageSwitcher.js +5 -5
  183. package/dist/components/templates/recipes/RecipeCard.js +26 -26
  184. package/dist/components/templates/recipes/RecipeDetail.js +33 -33
  185. package/dist/components/templates/recipes/RecipeList.js +80 -80
  186. package/dist/components/templates/recipes/index.js +80 -80
  187. package/dist/components/templates/todos/FilterBar.js +39 -39
  188. package/dist/components/templates/todos/TaskForm.js +43 -43
  189. package/dist/components/templates/todos/TaskItem.js +30 -30
  190. package/dist/components/templates/todos/TaskList.js +127 -127
  191. package/dist/components/templates/todos/index.js +127 -127
  192. package/dist/index.js +12324 -12261
  193. package/dist/infrastructure/elysia/index.js +8 -8
  194. package/dist/infrastructure/elysia/logger.js +8 -8
  195. package/dist/infrastructure/index.js +8 -8
  196. package/dist/libs/posthog/client.js +2 -2
  197. package/dist/node/application/index.js +8 -8
  198. package/dist/node/application/mcp/cliMcp.js +8 -8
  199. package/dist/node/application/mcp/contractsMcp.js +8 -8
  200. package/dist/node/application/mcp/docsMcp.js +8 -8
  201. package/dist/node/application/mcp/index.js +8 -8
  202. package/dist/node/application/mcp/internalMcp.js +8 -8
  203. package/dist/node/application/mcp/providerRankingMcp.js +8 -8
  204. package/dist/node/bundles/LibraryBundle.js +138 -0
  205. package/dist/node/bundles/index.js +138 -0
  206. package/dist/node/components/docs/DocsIndexPage.js +91 -91
  207. package/dist/node/components/docs/advanced/AdvancedMCPPage.js +125 -125
  208. package/dist/node/components/docs/advanced/AdvancedOverlayEditorPage.js +49 -49
  209. package/dist/node/components/docs/advanced/AdvancedRenderersPage.js +51 -51
  210. package/dist/node/components/docs/advanced/AdvancedSpecExperimentsPage.js +35 -35
  211. package/dist/node/components/docs/advanced/AdvancedTelemetryPage.js +177 -177
  212. package/dist/node/components/docs/advanced/AdvancedWorkflowMonitoringPage.js +45 -45
  213. package/dist/node/components/docs/advanced/index.js +482 -482
  214. package/dist/node/components/docs/architecture/ArchitectureAppConfigPage.js +107 -107
  215. package/dist/node/components/docs/architecture/ArchitectureControlPlanePage.js +73 -73
  216. package/dist/node/components/docs/architecture/ArchitectureIntegrationBindingPage.js +117 -117
  217. package/dist/node/components/docs/architecture/ArchitectureKnowledgeBindingPage.js +175 -175
  218. package/dist/node/components/docs/architecture/ArchitectureMultiTenancyPage.js +71 -71
  219. package/dist/node/components/docs/architecture/ArchitectureOverviewPage.js +205 -205
  220. package/dist/node/components/docs/architecture/index.js +748 -748
  221. package/dist/node/components/docs/comparison/ComparisonAutomationPlatformsPage.js +117 -117
  222. package/dist/node/components/docs/comparison/ComparisonEnterprisePlatformsPage.js +111 -111
  223. package/dist/node/components/docs/comparison/ComparisonInternalToolBuildersPage.js +117 -117
  224. package/dist/node/components/docs/comparison/ComparisonOverviewPage.js +97 -97
  225. package/dist/node/components/docs/comparison/ComparisonWindmillPage.js +125 -125
  226. package/dist/node/components/docs/comparison/ComparisonWorkflowEnginesPage.js +171 -171
  227. package/dist/node/components/docs/comparison/index.js +738 -738
  228. package/dist/node/components/docs/ecosystem/IntegrationsPage.js +45 -45
  229. package/dist/node/components/docs/ecosystem/PluginsPage.js +73 -73
  230. package/dist/node/components/docs/ecosystem/RegistryPage.js +37 -37
  231. package/dist/node/components/docs/ecosystem/TemplatesPage.js +56 -56
  232. package/dist/node/components/docs/ecosystem/index.js +211 -211
  233. package/dist/node/components/docs/examples/DocsExamplesPage.js +21 -21
  234. package/dist/node/components/docs/examples/index.js +21 -21
  235. package/dist/node/components/docs/getting-started/CLIPage.js +95 -95
  236. package/dist/node/components/docs/getting-started/CompatibilityPage.js +81 -81
  237. package/dist/node/components/docs/getting-started/DataViewTutorialPage.js +57 -57
  238. package/dist/node/components/docs/getting-started/DeveloperToolsPage.js +61 -61
  239. package/dist/node/components/docs/getting-started/HelloWorldPage.js +77 -77
  240. package/dist/node/components/docs/getting-started/InstallationPage.js +65 -65
  241. package/dist/node/components/docs/getting-started/StartHerePage.js +51 -51
  242. package/dist/node/components/docs/getting-started/TroubleshootingPage.js +73 -73
  243. package/dist/node/components/docs/getting-started/VSCodeExtensionPage.js +171 -171
  244. package/dist/node/components/docs/getting-started/index.js +731 -731
  245. package/dist/node/components/docs/guides/GuideCIDiffGatingPage.js +80 -80
  246. package/dist/node/components/docs/guides/GuideContractTypesPage.js +232 -232
  247. package/dist/node/components/docs/guides/GuideDocsPipelinePage.js +82 -82
  248. package/dist/node/components/docs/guides/GuideGenerateDocsClientsSchemasPage.js +84 -84
  249. package/dist/node/components/docs/guides/GuideImportExistingCodebasesPage.js +324 -324
  250. package/dist/node/components/docs/guides/GuideNextjsOneEndpointPage.js +107 -107
  251. package/dist/node/components/docs/guides/GuideSpecValidationTypingPage.js +78 -78
  252. package/dist/node/components/docs/guides/GuidesIndexPage.js +43 -43
  253. package/dist/node/components/docs/guides/index.js +976 -976
  254. package/dist/node/components/docs/index.js +10792 -10792
  255. package/dist/node/components/docs/integrations/IntegrationsCircuitBreakersPage.js +17 -17
  256. package/dist/node/components/docs/integrations/IntegrationsElevenLabsPage.js +47 -47
  257. package/dist/node/components/docs/integrations/IntegrationsGithubPage.js +61 -61
  258. package/dist/node/components/docs/integrations/IntegrationsGmailPage.js +49 -49
  259. package/dist/node/components/docs/integrations/IntegrationsGoogleCalendarPage.js +33 -33
  260. package/dist/node/components/docs/integrations/IntegrationsHealthRoutingPage.js +65 -65
  261. package/dist/node/components/docs/integrations/IntegrationsMistralPage.js +69 -69
  262. package/dist/node/components/docs/integrations/IntegrationsOpenAIPage.js +65 -65
  263. package/dist/node/components/docs/integrations/IntegrationsOverviewPage.js +313 -313
  264. package/dist/node/components/docs/integrations/IntegrationsPostmarkPage.js +101 -101
  265. package/dist/node/components/docs/integrations/IntegrationsPowensPage.js +121 -121
  266. package/dist/node/components/docs/integrations/IntegrationsQdrantPage.js +49 -49
  267. package/dist/node/components/docs/integrations/IntegrationsResendPage.js +45 -45
  268. package/dist/node/components/docs/integrations/IntegrationsS3Page.js +57 -57
  269. package/dist/node/components/docs/integrations/IntegrationsSlackPage.js +63 -63
  270. package/dist/node/components/docs/integrations/IntegrationsSpecModelPage.js +139 -139
  271. package/dist/node/components/docs/integrations/IntegrationsStripePage.js +159 -159
  272. package/dist/node/components/docs/integrations/IntegrationsTwilioPage.js +61 -61
  273. package/dist/node/components/docs/integrations/IntegrationsWhatsappMetaPage.js +63 -63
  274. package/dist/node/components/docs/integrations/IntegrationsWhatsappTwilioPage.js +65 -65
  275. package/dist/node/components/docs/integrations/index.js +1642 -1642
  276. package/dist/node/components/docs/intent/ContractFirstApiPage.js +51 -51
  277. package/dist/node/components/docs/intent/DeterministicCodegenPage.js +59 -59
  278. package/dist/node/components/docs/intent/GenerateClientFromSchemaPage.js +85 -85
  279. package/dist/node/components/docs/intent/OpenapiAlternativePage.js +91 -91
  280. package/dist/node/components/docs/intent/SchemaValidationTypescriptPage.js +59 -59
  281. package/dist/node/components/docs/intent/SpecDrivenDevelopmentPage.js +51 -51
  282. package/dist/node/components/docs/intent/index.js +396 -396
  283. package/dist/node/components/docs/knowledge/KnowledgeCategoriesPage.js +371 -371
  284. package/dist/node/components/docs/knowledge/KnowledgeExamplesPage.js +79 -79
  285. package/dist/node/components/docs/knowledge/KnowledgeOverviewPage.js +185 -185
  286. package/dist/node/components/docs/knowledge/KnowledgeSourcesPage.js +187 -187
  287. package/dist/node/components/docs/knowledge/KnowledgeSpacesPage.js +141 -141
  288. package/dist/node/components/docs/knowledge/index.js +963 -963
  289. package/dist/node/components/docs/libraries/LibrariesAccessibilityPage.js +85 -85
  290. package/dist/node/components/docs/libraries/LibrariesAiAgentPage.js +63 -63
  291. package/dist/node/components/docs/libraries/LibrariesAnalyticsPage.js +33 -33
  292. package/dist/node/components/docs/libraries/LibrariesContentGenPage.js +43 -43
  293. package/dist/node/components/docs/libraries/LibrariesContractsPage.js +125 -125
  294. package/dist/node/components/docs/libraries/LibrariesCostTrackingPage.js +45 -45
  295. package/dist/node/components/docs/libraries/LibrariesDataBackendPage.js +69 -69
  296. package/dist/node/components/docs/libraries/LibrariesDataViewsPage.js +79 -79
  297. package/dist/node/components/docs/libraries/LibrariesDesignSystemPage.js +129 -129
  298. package/dist/node/components/docs/libraries/LibrariesEvolutionPage.js +49 -49
  299. package/dist/node/components/docs/libraries/LibrariesGraphQLPage.js +73 -73
  300. package/dist/node/components/docs/libraries/LibrariesGrowthPage.js +35 -35
  301. package/dist/node/components/docs/libraries/LibrariesMultiTenancyPage.js +43 -43
  302. package/dist/node/components/docs/libraries/LibrariesObservabilityPage.js +53 -53
  303. package/dist/node/components/docs/libraries/LibrariesOverlayEnginePage.js +45 -45
  304. package/dist/node/components/docs/libraries/LibrariesOverviewPage.js +191 -191
  305. package/dist/node/components/docs/libraries/LibrariesPersonalizationPage.js +47 -47
  306. package/dist/node/components/docs/libraries/LibrariesProgressiveDeliveryPage.js +53 -53
  307. package/dist/node/components/docs/libraries/LibrariesResiliencePage.js +49 -49
  308. package/dist/node/components/docs/libraries/LibrariesRuntimePage.js +87 -87
  309. package/dist/node/components/docs/libraries/LibrariesSLOPage.js +47 -47
  310. package/dist/node/components/docs/libraries/LibrariesSchemaPage.js +139 -139
  311. package/dist/node/components/docs/libraries/LibrariesSupportBotPage.js +57 -57
  312. package/dist/node/components/docs/libraries/LibrariesTestingPage.js +49 -49
  313. package/dist/node/components/docs/libraries/LibrariesUIKitPage.js +107 -107
  314. package/dist/node/components/docs/libraries/LibrariesWorkflowComposerPage.js +35 -35
  315. package/dist/node/components/docs/libraries/LibrariesWorkflowsPage.js +89 -89
  316. package/dist/node/components/docs/libraries/index.js +1919 -1919
  317. package/dist/node/components/docs/manifesto/ManifestoPage.js +79 -79
  318. package/dist/node/components/docs/ops/AutoEvolutionOpsPage.js +59 -59
  319. package/dist/node/components/docs/ops/DistributedTracingOpsPage.js +33 -33
  320. package/dist/node/components/docs/ops/index.js +92 -92
  321. package/dist/node/components/docs/reference/DocsMarkdownContent.js +27 -27
  322. package/dist/node/components/docs/reference/DocsReferenceContent.js +34 -34
  323. package/dist/node/components/docs/reference/DocsReferenceIndexClient.js +23 -23
  324. package/dist/node/components/docs/reference/DocsReferenceIndexPage.js +26 -26
  325. package/dist/node/components/docs/reference/DocsReferencePage.js +37 -37
  326. package/dist/node/components/docs/reference/index.js +63 -63
  327. package/dist/node/components/docs/safety/SafetyAuditingPage.js +161 -161
  328. package/dist/node/components/docs/safety/SafetyMigrationsPage.js +169 -169
  329. package/dist/node/components/docs/safety/SafetyOverviewPage.js +99 -99
  330. package/dist/node/components/docs/safety/SafetyPDPPage.js +137 -137
  331. package/dist/node/components/docs/safety/SafetySecurityTrustPage.js +95 -95
  332. package/dist/node/components/docs/safety/SafetySigningPage.js +39 -39
  333. package/dist/node/components/docs/safety/SafetyTenantIsolationPage.js +33 -33
  334. package/dist/node/components/docs/safety/index.js +733 -733
  335. package/dist/node/components/docs/shared/StudioPrompt.js +9 -9
  336. package/dist/node/components/docs/specs/SpecsCapabilitiesPage.js +61 -61
  337. package/dist/node/components/docs/specs/SpecsDataViewsPage.js +119 -119
  338. package/dist/node/components/docs/specs/SpecsOverlaysPage.js +171 -171
  339. package/dist/node/components/docs/specs/SpecsOverviewPage.js +167 -167
  340. package/dist/node/components/docs/specs/SpecsPolicyPage.js +179 -179
  341. package/dist/node/components/docs/specs/SpecsWorkflowsPage.js +141 -141
  342. package/dist/node/components/docs/specs/index.js +838 -838
  343. package/dist/node/components/docs/studio/StudioBYOKPage.js +9 -9
  344. package/dist/node/components/docs/studio/StudioDeploymentsPage.js +9 -9
  345. package/dist/node/components/docs/studio/StudioGettingStartedPage.js +9 -9
  346. package/dist/node/components/docs/studio/StudioIntegrationsPage.js +9 -9
  347. package/dist/node/components/docs/studio/StudioOverviewPage.js +33 -33
  348. package/dist/node/components/docs/studio/StudioVisualBuilderPage.js +9 -9
  349. package/dist/node/components/docs/studio/index.js +78 -78
  350. package/dist/node/components/integrations/index.js +209 -209
  351. package/dist/node/components/integrations/molecules/IntegrationCard.js +33 -33
  352. package/dist/node/components/integrations/organisms/IntegrationMarketplace.js +71 -71
  353. package/dist/node/components/integrations/organisms/IntegrationSettings.js +98 -98
  354. package/dist/node/components/integrations/organisms/KnowledgeSourceList.js +40 -40
  355. package/dist/node/components/legal/PrivacyTemplate.js +477 -477
  356. package/dist/node/components/legal/TermsTemplate.js +421 -421
  357. package/dist/node/components/legal/index.js +898 -898
  358. package/dist/node/components/shared/FeatureGateNotice.js +13 -13
  359. package/dist/node/components/shared/index.js +13 -13
  360. package/dist/node/components/shell/WorkspaceHeader.js +37 -37
  361. package/dist/node/components/shell/WorkspaceProjectShellLayout.js +77 -77
  362. package/dist/node/components/shell/WorkspaceShellRenderer.js +228 -0
  363. package/dist/node/components/shell/WorkspaceSidebar.js +27 -27
  364. package/dist/node/components/shell/index.js +140 -77
  365. package/dist/node/components/templates/index.js +272 -272
  366. package/dist/node/components/templates/messaging/ConversationList.js +27 -27
  367. package/dist/node/components/templates/messaging/MessageComposer.js +27 -27
  368. package/dist/node/components/templates/messaging/MessageThread.js +18 -18
  369. package/dist/node/components/templates/messaging/MessagingWorkspace.js +65 -65
  370. package/dist/node/components/templates/messaging/index.js +65 -65
  371. package/dist/node/components/templates/recipes/LanguageSwitcher.js +5 -5
  372. package/dist/node/components/templates/recipes/RecipeCard.js +26 -26
  373. package/dist/node/components/templates/recipes/RecipeDetail.js +33 -33
  374. package/dist/node/components/templates/recipes/RecipeList.js +80 -80
  375. package/dist/node/components/templates/recipes/index.js +80 -80
  376. package/dist/node/components/templates/todos/FilterBar.js +39 -39
  377. package/dist/node/components/templates/todos/TaskForm.js +43 -43
  378. package/dist/node/components/templates/todos/TaskItem.js +30 -30
  379. package/dist/node/components/templates/todos/TaskList.js +127 -127
  380. package/dist/node/components/templates/todos/index.js +127 -127
  381. package/dist/node/index.js +12324 -12261
  382. package/dist/node/infrastructure/elysia/index.js +8 -8
  383. package/dist/node/infrastructure/elysia/logger.js +8 -8
  384. package/dist/node/infrastructure/index.js +8 -8
  385. package/dist/node/libs/posthog/client.js +2 -2
  386. package/dist/node/presentation/features/atoms/FeatureIcon/FeatureIcon.js +3 -3
  387. package/dist/node/presentation/features/atoms/FeatureIcon/index.js +3 -3
  388. package/dist/node/presentation/features/atoms/index.js +3 -3
  389. package/dist/node/presentation/features/index.js +915 -915
  390. package/dist/node/presentation/features/molecules/FeatureCard/FeatureCard.js +101 -101
  391. package/dist/node/presentation/features/molecules/FeatureCard/index.js +101 -101
  392. package/dist/node/presentation/features/molecules/FeatureCategoryHeader/FeatureCategoryHeader.js +15 -15
  393. package/dist/node/presentation/features/molecules/FeatureCategoryHeader/index.js +15 -15
  394. package/dist/node/presentation/features/molecules/FeatureFilters/FeatureFilters.js +23 -23
  395. package/dist/node/presentation/features/molecules/FeatureFilters/index.js +23 -23
  396. package/dist/node/presentation/features/molecules/FeatureHoverPreview/FeatureHoverPreview.js +67 -67
  397. package/dist/node/presentation/features/molecules/FeatureHoverPreview/index.js +67 -67
  398. package/dist/node/presentation/features/molecules/index.js +139 -139
  399. package/dist/node/presentation/features/organisms/FeatureDataViewsList.js +7 -7
  400. package/dist/node/presentation/features/organisms/FeatureDetail/FeatureDetail.js +57 -57
  401. package/dist/node/presentation/features/organisms/FeatureDetail/index.js +57 -57
  402. package/dist/node/presentation/features/organisms/FeatureDiscovery/FeatureDiscovery.js +183 -183
  403. package/dist/node/presentation/features/organisms/FeatureDiscovery/index.js +183 -183
  404. package/dist/node/presentation/features/organisms/FeatureEventsList.js +7 -7
  405. package/dist/node/presentation/features/organisms/FeatureFormsList.js +7 -7
  406. package/dist/node/presentation/features/organisms/FeatureOperationsList.js +7 -7
  407. package/dist/node/presentation/features/organisms/FeaturePresentationsList.js +7 -7
  408. package/dist/node/presentation/features/organisms/index.js +275 -275
  409. package/dist/node/presentation/features/templates/FeatureDataViewDetailTemplate/FeatureDataViewDetailTemplate.js +126 -126
  410. package/dist/node/presentation/features/templates/FeatureDataViewDetailTemplate/index.js +126 -126
  411. package/dist/node/presentation/features/templates/FeatureDataViewsTemplate/FeatureDataViewsTemplate.js +16 -16
  412. package/dist/node/presentation/features/templates/FeatureDataViewsTemplate/index.js +16 -16
  413. package/dist/node/presentation/features/templates/FeatureEventDetailTemplate/FeatureEventDetailTemplate.js +112 -112
  414. package/dist/node/presentation/features/templates/FeatureEventDetailTemplate/index.js +112 -112
  415. package/dist/node/presentation/features/templates/FeatureEventsTemplate/FeatureEventsTemplate.js +16 -16
  416. package/dist/node/presentation/features/templates/FeatureEventsTemplate/index.js +16 -16
  417. package/dist/node/presentation/features/templates/FeatureFormDetailTemplate/FeatureFormDetailTemplate.js +126 -126
  418. package/dist/node/presentation/features/templates/FeatureFormDetailTemplate/index.js +126 -126
  419. package/dist/node/presentation/features/templates/FeatureFormsTemplate/FeatureFormsTemplate.js +16 -16
  420. package/dist/node/presentation/features/templates/FeatureFormsTemplate/index.js +16 -16
  421. package/dist/node/presentation/features/templates/FeatureOperationDetailTemplate/FeatureOperationDetailTemplate.js +110 -110
  422. package/dist/node/presentation/features/templates/FeatureOperationDetailTemplate/index.js +110 -110
  423. package/dist/node/presentation/features/templates/FeatureOperationsTemplate/FeatureOperationsTemplate.js +16 -16
  424. package/dist/node/presentation/features/templates/FeatureOperationsTemplate/index.js +16 -16
  425. package/dist/node/presentation/features/templates/FeatureOverviewTemplate/FeatureOverviewTemplate.js +66 -66
  426. package/dist/node/presentation/features/templates/FeatureOverviewTemplate/index.js +66 -66
  427. package/dist/node/presentation/features/templates/FeaturePresentationDetailTemplate/FeaturePresentationDetailTemplate.js +112 -112
  428. package/dist/node/presentation/features/templates/FeaturePresentationDetailTemplate/index.js +112 -112
  429. package/dist/node/presentation/features/templates/FeaturePresentationsTemplate/FeaturePresentationsTemplate.js +16 -16
  430. package/dist/node/presentation/features/templates/FeaturePresentationsTemplate/index.js +16 -16
  431. package/dist/presentation/features/atoms/FeatureIcon/FeatureIcon.js +3 -3
  432. package/dist/presentation/features/atoms/FeatureIcon/index.js +3 -3
  433. package/dist/presentation/features/atoms/index.js +3 -3
  434. package/dist/presentation/features/index.js +915 -915
  435. package/dist/presentation/features/molecules/FeatureCard/FeatureCard.js +101 -101
  436. package/dist/presentation/features/molecules/FeatureCard/index.js +101 -101
  437. package/dist/presentation/features/molecules/FeatureCategoryHeader/FeatureCategoryHeader.js +15 -15
  438. package/dist/presentation/features/molecules/FeatureCategoryHeader/index.js +15 -15
  439. package/dist/presentation/features/molecules/FeatureFilters/FeatureFilters.js +23 -23
  440. package/dist/presentation/features/molecules/FeatureFilters/index.js +23 -23
  441. package/dist/presentation/features/molecules/FeatureHoverPreview/FeatureHoverPreview.js +67 -67
  442. package/dist/presentation/features/molecules/FeatureHoverPreview/index.js +67 -67
  443. package/dist/presentation/features/molecules/index.js +139 -139
  444. package/dist/presentation/features/organisms/FeatureDataViewsList.js +7 -7
  445. package/dist/presentation/features/organisms/FeatureDetail/FeatureDetail.js +57 -57
  446. package/dist/presentation/features/organisms/FeatureDetail/index.js +57 -57
  447. package/dist/presentation/features/organisms/FeatureDiscovery/FeatureDiscovery.js +183 -183
  448. package/dist/presentation/features/organisms/FeatureDiscovery/index.js +183 -183
  449. package/dist/presentation/features/organisms/FeatureEventsList.js +7 -7
  450. package/dist/presentation/features/organisms/FeatureFormsList.js +7 -7
  451. package/dist/presentation/features/organisms/FeatureOperationsList.js +7 -7
  452. package/dist/presentation/features/organisms/FeaturePresentationsList.js +7 -7
  453. package/dist/presentation/features/organisms/index.js +275 -275
  454. package/dist/presentation/features/templates/FeatureDataViewDetailTemplate/FeatureDataViewDetailTemplate.js +126 -126
  455. package/dist/presentation/features/templates/FeatureDataViewDetailTemplate/index.js +126 -126
  456. package/dist/presentation/features/templates/FeatureDataViewsTemplate/FeatureDataViewsTemplate.js +16 -16
  457. package/dist/presentation/features/templates/FeatureDataViewsTemplate/index.js +16 -16
  458. package/dist/presentation/features/templates/FeatureEventDetailTemplate/FeatureEventDetailTemplate.js +112 -112
  459. package/dist/presentation/features/templates/FeatureEventDetailTemplate/index.js +112 -112
  460. package/dist/presentation/features/templates/FeatureEventsTemplate/FeatureEventsTemplate.js +16 -16
  461. package/dist/presentation/features/templates/FeatureEventsTemplate/index.js +16 -16
  462. package/dist/presentation/features/templates/FeatureFormDetailTemplate/FeatureFormDetailTemplate.js +126 -126
  463. package/dist/presentation/features/templates/FeatureFormDetailTemplate/index.js +126 -126
  464. package/dist/presentation/features/templates/FeatureFormsTemplate/FeatureFormsTemplate.js +16 -16
  465. package/dist/presentation/features/templates/FeatureFormsTemplate/index.js +16 -16
  466. package/dist/presentation/features/templates/FeatureOperationDetailTemplate/FeatureOperationDetailTemplate.js +110 -110
  467. package/dist/presentation/features/templates/FeatureOperationDetailTemplate/index.js +110 -110
  468. package/dist/presentation/features/templates/FeatureOperationsTemplate/FeatureOperationsTemplate.js +16 -16
  469. package/dist/presentation/features/templates/FeatureOperationsTemplate/index.js +16 -16
  470. package/dist/presentation/features/templates/FeatureOverviewTemplate/FeatureOverviewTemplate.js +66 -66
  471. package/dist/presentation/features/templates/FeatureOverviewTemplate/index.js +66 -66
  472. package/dist/presentation/features/templates/FeaturePresentationDetailTemplate/FeaturePresentationDetailTemplate.js +112 -112
  473. package/dist/presentation/features/templates/FeaturePresentationDetailTemplate/index.js +112 -112
  474. package/dist/presentation/features/templates/FeaturePresentationsTemplate/FeaturePresentationsTemplate.js +16 -16
  475. package/dist/presentation/features/templates/FeaturePresentationsTemplate/index.js +16 -16
  476. package/package.json +71 -22
  477. package/src/bundles/LibraryBundle.ts +152 -0
  478. package/src/bundles/index.ts +1 -0
  479. package/src/components/docs/generated/docs-index._common.json +441 -90
  480. package/src/components/docs/generated/docs-index.agent-console.json +1 -1
  481. package/src/components/docs/generated/docs-index.ai-chat.json +1 -1
  482. package/src/components/docs/generated/docs-index.ai-support-bot.json +1 -1
  483. package/src/components/docs/generated/docs-index.analytics-dashboard.json +1 -1
  484. package/src/components/docs/generated/docs-index.app-config.json +1 -1
  485. package/src/components/docs/generated/docs-index.audit-trail.json +1 -1
  486. package/src/components/docs/generated/docs-index.calendar-google.json +1 -1
  487. package/src/components/docs/generated/docs-index.content-generation.json +1 -1
  488. package/src/components/docs/generated/docs-index.crm-pipeline.json +1 -1
  489. package/src/components/docs/generated/docs-index.email-gmail.json +1 -1
  490. package/src/components/docs/generated/docs-index.feature-flags.json +1 -1
  491. package/src/components/docs/generated/docs-index.files.json +1 -1
  492. package/src/components/docs/generated/docs-index.generated.ts +7 -7
  493. package/src/components/docs/generated/docs-index.health.json +1 -1
  494. package/src/components/docs/generated/docs-index.identity-rbac.json +1 -1
  495. package/src/components/docs/generated/docs-index.in-app-docs.json +1 -1
  496. package/src/components/docs/generated/docs-index.integration-hub.json +1 -1
  497. package/src/components/docs/generated/docs-index.integration-posthog.json +1 -1
  498. package/src/components/docs/generated/docs-index.integration-stripe.json +1 -1
  499. package/src/components/docs/generated/docs-index.integration-supabase.json +1 -1
  500. package/src/components/docs/generated/docs-index.jobs.json +1 -1
  501. package/src/components/docs/generated/docs-index.kb-update-pipeline.json +1 -1
  502. package/src/components/docs/generated/docs-index.knowledge-canon.json +1 -1
  503. package/src/components/docs/generated/docs-index.learning-journey-ambient-coach.json +1 -1
  504. package/src/components/docs/generated/docs-index.learning-journey-crm-onboarding.json +1 -1
  505. package/src/components/docs/generated/docs-index.learning-journey-duo-drills.json +1 -1
  506. package/src/components/docs/generated/docs-index.learning-journey-platform-tour.json +1 -1
  507. package/src/components/docs/generated/docs-index.learning-journey-quest-challenges.json +1 -1
  508. package/src/components/docs/generated/docs-index.learning-journey-registry.json +1 -1
  509. package/src/components/docs/generated/docs-index.learning-journey-studio-onboarding.json +1 -1
  510. package/src/components/docs/generated/docs-index.learning-journey-ui-coaching.json +1 -1
  511. package/src/components/docs/generated/docs-index.learning-journey-ui-gamified.json +1 -1
  512. package/src/components/docs/generated/docs-index.learning-journey-ui-onboarding.json +1 -1
  513. package/src/components/docs/generated/docs-index.learning-journey-ui-shared.json +1 -1
  514. package/src/components/docs/generated/docs-index.learning-journey.json +1 -1
  515. package/src/components/docs/generated/docs-index.learning-patterns.json +1 -1
  516. package/src/components/docs/generated/docs-index.lifecycle-cli.json +1 -1
  517. package/src/components/docs/generated/docs-index.lifecycle-dashboard.json +1 -1
  518. package/src/components/docs/generated/docs-index.locale-jurisdiction-gate.json +1 -1
  519. package/src/components/docs/generated/docs-index.manifest.json +2 -2
  520. package/src/components/docs/generated/docs-index.marketplace.json +1 -1
  521. package/src/components/docs/generated/docs-index.meeting-recorder-providers.json +1 -1
  522. package/src/components/docs/generated/docs-index.meeting-recorder.json +1 -1
  523. package/src/components/docs/generated/docs-index.metrics.json +1 -1
  524. package/src/components/docs/generated/docs-index.minimal.json +1 -1
  525. package/src/components/docs/generated/docs-index.notifications.json +1 -1
  526. package/src/components/docs/generated/docs-index.openbanking-powens.json +1 -1
  527. package/src/components/docs/generated/docs-index.openbanking.json +1 -1
  528. package/src/components/docs/generated/docs-index.opencode-cli.json +1 -1
  529. package/src/components/docs/generated/docs-index.personalization.json +1 -1
  530. package/src/components/docs/generated/docs-index.platform-acp.json +1 -1
  531. package/src/components/docs/generated/docs-index.platform-agent.json +1 -1
  532. package/src/components/docs/generated/docs-index.platform-context.json +1 -1
  533. package/src/components/docs/generated/docs-index.platform-database.json +1 -1
  534. package/src/components/docs/generated/docs-index.platform-docs.json +1 -1
  535. package/src/components/docs/generated/docs-index.platform-integrations.json +1 -1
  536. package/src/components/docs/generated/docs-index.platform-knowledge.json +1 -1
  537. package/src/components/docs/generated/docs-index.platform-provider-ranking.json +1 -1
  538. package/src/components/docs/generated/docs-index.pocket-family-office.json +1 -1
  539. package/src/components/docs/generated/docs-index.policy-safe-knowledge-assistant.json +1 -1
  540. package/src/components/docs/generated/docs-index.product-intent.json +1 -1
  541. package/src/components/docs/generated/docs-index.project-management-sync.json +1 -1
  542. package/src/components/docs/generated/docs-index.saas-boilerplate.json +1 -1
  543. package/src/components/docs/generated/docs-index.service-business-os.json +1 -1
  544. package/src/components/docs/generated/docs-index.team-hub.json +1 -1
  545. package/src/components/docs/generated/docs-index.unknown.json +1 -1
  546. package/src/components/docs/generated/docs-index.versioned-knowledge-base.json +1 -1
  547. package/src/components/docs/generated/docs-index.video-api-showcase.json +1 -1
  548. package/src/components/docs/generated/docs-index.video-docs-terminal.json +1 -1
  549. package/src/components/docs/generated/docs-index.video-marketing-clip.json +1 -1
  550. package/src/components/docs/generated/docs-index.voice-providers.json +1 -1
  551. package/src/components/docs/generated/docs-index.wealth-snapshot.json +1 -1
  552. package/src/components/docs/generated/docs-index.workflow-system.json +1 -1
  553. package/src/components/docs/generated/docs-index.workspace-cli.json +1 -1
  554. package/src/components/docs/guides/GuideNextjsOneEndpointPage.tsx +1 -1
  555. package/src/components/shell/WorkspaceShellRenderer.tsx +90 -0
  556. package/src/components/shell/index.ts +1 -0
@@ -1,1505 +1,1505 @@
1
1
  // @bun
2
2
  // src/components/docs/comparison/ComparisonAutomationPlatformsPage.tsx
3
- import { jsxDEV } from "react/jsx-dev-runtime";
3
+ import { jsx, jsxs } from "react/jsx-runtime";
4
4
  function ComparisonAutomationPlatformsPage() {
5
- return /* @__PURE__ */ jsxDEV("div", {
5
+ return /* @__PURE__ */ jsxs("div", {
6
6
  className: "space-y-8",
7
7
  children: [
8
- /* @__PURE__ */ jsxDEV("div", {
8
+ /* @__PURE__ */ jsxs("div", {
9
9
  className: "space-y-4",
10
10
  children: [
11
- /* @__PURE__ */ jsxDEV("h1", {
11
+ /* @__PURE__ */ jsx("h1", {
12
12
  className: "text-4xl font-bold",
13
13
  children: "Automation platforms"
14
- }, undefined, false, undefined, this),
15
- /* @__PURE__ */ jsxDEV("p", {
14
+ }),
15
+ /* @__PURE__ */ jsx("p", {
16
16
  className: "text-muted-foreground",
17
17
  children: "Automation platforms connect apps and automate tasks through triggers and actions. They serve operations and non-technical users well but stop short of generating full applications or enforcing fine-grained policies."
18
- }, undefined, false, undefined, this)
18
+ })
19
19
  ]
20
- }, undefined, true, undefined, this),
21
- /* @__PURE__ */ jsxDEV("div", {
20
+ }),
21
+ /* @__PURE__ */ jsxs("div", {
22
22
  className: "space-y-4",
23
23
  children: [
24
- /* @__PURE__ */ jsxDEV("h2", {
24
+ /* @__PURE__ */ jsx("h2", {
25
25
  className: "text-2xl font-bold",
26
26
  children: "Feature comparison"
27
- }, undefined, false, undefined, this),
28
- /* @__PURE__ */ jsxDEV("div", {
27
+ }),
28
+ /* @__PURE__ */ jsx("div", {
29
29
  className: "border-border/50 overflow-x-auto rounded-lg border",
30
- children: /* @__PURE__ */ jsxDEV("table", {
30
+ children: /* @__PURE__ */ jsxs("table", {
31
31
  className: "w-full text-left text-sm",
32
32
  children: [
33
- /* @__PURE__ */ jsxDEV("thead", {
33
+ /* @__PURE__ */ jsx("thead", {
34
34
  className: "bg-card/50",
35
- children: /* @__PURE__ */ jsxDEV("tr", {
35
+ children: /* @__PURE__ */ jsxs("tr", {
36
36
  className: "border-border/50 border-b",
37
37
  children: [
38
- /* @__PURE__ */ jsxDEV("th", {
38
+ /* @__PURE__ */ jsx("th", {
39
39
  className: "px-4 py-3 font-semibold",
40
40
  children: "Feature"
41
- }, undefined, false, undefined, this),
42
- /* @__PURE__ */ jsxDEV("th", {
41
+ }),
42
+ /* @__PURE__ */ jsx("th", {
43
43
  className: "px-4 py-3 font-semibold",
44
44
  children: "Zapier"
45
- }, undefined, false, undefined, this),
46
- /* @__PURE__ */ jsxDEV("th", {
45
+ }),
46
+ /* @__PURE__ */ jsx("th", {
47
47
  className: "px-4 py-3 font-semibold",
48
48
  children: "Make (Integromat)"
49
- }, undefined, false, undefined, this),
50
- /* @__PURE__ */ jsxDEV("th", {
49
+ }),
50
+ /* @__PURE__ */ jsx("th", {
51
51
  className: "px-4 py-3 font-semibold",
52
52
  children: "n8n"
53
- }, undefined, false, undefined, this),
54
- /* @__PURE__ */ jsxDEV("th", {
53
+ }),
54
+ /* @__PURE__ */ jsx("th", {
55
55
  className: "px-4 py-3 font-semibold",
56
56
  children: "Pipedream"
57
- }, undefined, false, undefined, this)
57
+ })
58
58
  ]
59
- }, undefined, true, undefined, this)
60
- }, undefined, false, undefined, this),
61
- /* @__PURE__ */ jsxDEV("tbody", {
59
+ })
60
+ }),
61
+ /* @__PURE__ */ jsxs("tbody", {
62
62
  className: "divide-border/50 divide-y",
63
63
  children: [
64
- /* @__PURE__ */ jsxDEV("tr", {
64
+ /* @__PURE__ */ jsxs("tr", {
65
65
  children: [
66
- /* @__PURE__ */ jsxDEV("td", {
66
+ /* @__PURE__ */ jsx("td", {
67
67
  className: "px-4 py-3 align-top font-semibold",
68
68
  children: "Workflow model"
69
- }, undefined, false, undefined, this),
70
- /* @__PURE__ */ jsxDEV("td", {
69
+ }),
70
+ /* @__PURE__ */ jsx("td", {
71
71
  className: "px-4 py-3 align-top",
72
72
  children: "Zaps: trigger + one or more actions"
73
- }, undefined, false, undefined, this),
74
- /* @__PURE__ */ jsxDEV("td", {
73
+ }),
74
+ /* @__PURE__ */ jsx("td", {
75
75
  className: "px-4 py-3 align-top",
76
76
  children: "Real-time visual orchestration for AI agents and automations"
77
- }, undefined, false, undefined, this),
78
- /* @__PURE__ */ jsxDEV("td", {
77
+ }),
78
+ /* @__PURE__ */ jsx("td", {
79
79
  className: "px-4 py-3 align-top",
80
80
  children: "Node-based workflow builder with drag-and-drop and code; build multi-step AI agents"
81
- }, undefined, false, undefined, this),
82
- /* @__PURE__ */ jsxDEV("td", {
81
+ }),
82
+ /* @__PURE__ */ jsx("td", {
83
83
  className: "px-4 py-3 align-top",
84
84
  children: "Workflows connect any API; Pipedream Connect SDK adds integrations quickly"
85
- }, undefined, false, undefined, this)
85
+ })
86
86
  ]
87
- }, undefined, true, undefined, this),
88
- /* @__PURE__ */ jsxDEV("tr", {
87
+ }),
88
+ /* @__PURE__ */ jsxs("tr", {
89
89
  children: [
90
- /* @__PURE__ */ jsxDEV("td", {
90
+ /* @__PURE__ */ jsx("td", {
91
91
  className: "px-4 py-3 align-top font-semibold",
92
92
  children: "Visual builder?"
93
- }, undefined, false, undefined, this),
94
- /* @__PURE__ */ jsxDEV("td", {
93
+ }),
94
+ /* @__PURE__ */ jsx("td", {
95
95
  className: "px-4 py-3 align-top",
96
96
  children: "Yes (simple; web-based)."
97
- }, undefined, false, undefined, this),
98
- /* @__PURE__ */ jsxDEV("td", {
97
+ }),
98
+ /* @__PURE__ */ jsx("td", {
99
99
  className: "px-4 py-3 align-top",
100
100
  children: "Yes; AI-assisted editor"
101
- }, undefined, false, undefined, this),
102
- /* @__PURE__ */ jsxDEV("td", {
101
+ }),
102
+ /* @__PURE__ */ jsx("td", {
103
103
  className: "px-4 py-3 align-top",
104
104
  children: "Yes; visual canvas."
105
- }, undefined, false, undefined, this),
106
- /* @__PURE__ */ jsxDEV("td", {
105
+ }),
106
+ /* @__PURE__ */ jsx("td", {
107
107
  className: "px-4 py-3 align-top",
108
108
  children: "Code-centric editor; no visual UI builder"
109
- }, undefined, false, undefined, this)
109
+ })
110
110
  ]
111
- }, undefined, true, undefined, this),
112
- /* @__PURE__ */ jsxDEV("tr", {
111
+ }),
112
+ /* @__PURE__ */ jsxs("tr", {
113
113
  children: [
114
- /* @__PURE__ */ jsxDEV("td", {
114
+ /* @__PURE__ */ jsx("td", {
115
115
  className: "px-4 py-3 align-top font-semibold",
116
116
  children: "Self-host?"
117
- }, undefined, false, undefined, this),
118
- /* @__PURE__ */ jsxDEV("td", {
117
+ }),
118
+ /* @__PURE__ */ jsx("td", {
119
119
  className: "px-4 py-3 align-top",
120
120
  children: "No (cloud only)."
121
- }, undefined, false, undefined, this),
122
- /* @__PURE__ */ jsxDEV("td", {
121
+ }),
122
+ /* @__PURE__ */ jsx("td", {
123
123
  className: "px-4 py-3 align-top",
124
124
  children: "Cloud only."
125
- }, undefined, false, undefined, this),
126
- /* @__PURE__ */ jsxDEV("td", {
125
+ }),
126
+ /* @__PURE__ */ jsx("td", {
127
127
  className: "px-4 py-3 align-top",
128
128
  children: "Yes (Docker, self-host)"
129
- }, undefined, false, undefined, this),
130
- /* @__PURE__ */ jsxDEV("td", {
129
+ }),
130
+ /* @__PURE__ */ jsx("td", {
131
131
  className: "px-4 py-3 align-top",
132
132
  children: "Cloud only (hosted)."
133
- }, undefined, false, undefined, this)
133
+ })
134
134
  ]
135
- }, undefined, true, undefined, this),
136
- /* @__PURE__ */ jsxDEV("tr", {
135
+ }),
136
+ /* @__PURE__ */ jsxs("tr", {
137
137
  children: [
138
- /* @__PURE__ */ jsxDEV("td", {
138
+ /* @__PURE__ */ jsx("td", {
139
139
  className: "px-4 py-3 align-top font-semibold",
140
140
  children: "Integrations & AI"
141
- }, undefined, false, undefined, this),
142
- /* @__PURE__ */ jsxDEV("td", {
141
+ }),
142
+ /* @__PURE__ */ jsx("td", {
143
143
  className: "px-4 py-3 align-top",
144
144
  children: "Connects almost 8 000 apps; limited AI features."
145
- }, undefined, false, undefined, this),
146
- /* @__PURE__ */ jsxDEV("td", {
145
+ }),
146
+ /* @__PURE__ */ jsx("td", {
147
147
  className: "px-4 py-3 align-top",
148
148
  children: "3 000+ pre-built apps; supports GenAI tools; GDPR/SOC2 and SSO"
149
- }, undefined, false, undefined, this),
150
- /* @__PURE__ */ jsxDEV("td", {
149
+ }),
150
+ /* @__PURE__ */ jsx("td", {
151
151
  className: "px-4 py-3 align-top",
152
152
  children: "Integrates LLMs; allows JS or Python code and library imports; chatbots with Slack/Teams"
153
- }, undefined, false, undefined, this),
154
- /* @__PURE__ */ jsxDEV("td", {
153
+ }),
154
+ /* @__PURE__ */ jsx("td", {
155
155
  className: "px-4 py-3 align-top",
156
156
  children: "MCP servers add 3 000+ APIs and 10 000+ tools to agents; AI agent builder prompts and deploys agents; SOC 2/ HIPAA/GDPR compliant"
157
- }, undefined, false, undefined, this)
157
+ })
158
158
  ]
159
- }, undefined, true, undefined, this),
160
- /* @__PURE__ */ jsxDEV("tr", {
159
+ }),
160
+ /* @__PURE__ */ jsxs("tr", {
161
161
  children: [
162
- /* @__PURE__ */ jsxDEV("td", {
162
+ /* @__PURE__ */ jsx("td", {
163
163
  className: "px-4 py-3 align-top font-semibold",
164
164
  children: "Policy & UI generation"
165
- }, undefined, false, undefined, this),
166
- /* @__PURE__ */ jsxDEV("td", {
165
+ }),
166
+ /* @__PURE__ */ jsx("td", {
167
167
  className: "px-4 py-3 align-top",
168
168
  children: "No policy engine; does not generate user interfaces."
169
- }, undefined, false, undefined, this),
170
- /* @__PURE__ */ jsxDEV("td", {
169
+ }),
170
+ /* @__PURE__ */ jsx("td", {
171
171
  className: "px-4 py-3 align-top",
172
172
  children: "No policy engine; does not generate UIs beyond a workflow dashboard."
173
- }, undefined, false, undefined, this),
174
- /* @__PURE__ */ jsxDEV("td", {
173
+ }),
174
+ /* @__PURE__ */ jsx("td", {
175
175
  className: "px-4 py-3 align-top",
176
176
  children: "No policy engine; no UI builder"
177
- }, undefined, false, undefined, this),
178
- /* @__PURE__ */ jsxDEV("td", {
177
+ }),
178
+ /* @__PURE__ */ jsx("td", {
179
179
  className: "px-4 py-3 align-top",
180
180
  children: "No policy engine; does not generate UI."
181
- }, undefined, false, undefined, this)
181
+ })
182
182
  ]
183
- }, undefined, true, undefined, this)
183
+ })
184
184
  ]
185
- }, undefined, true, undefined, this)
185
+ })
186
186
  ]
187
- }, undefined, true, undefined, this)
188
- }, undefined, false, undefined, this)
187
+ })
188
+ })
189
189
  ]
190
- }, undefined, true, undefined, this),
191
- /* @__PURE__ */ jsxDEV("div", {
190
+ }),
191
+ /* @__PURE__ */ jsxs("div", {
192
192
  className: "space-y-3",
193
193
  children: [
194
- /* @__PURE__ */ jsxDEV("h2", {
194
+ /* @__PURE__ */ jsx("h2", {
195
195
  className: "text-2xl font-bold",
196
196
  children: "Why ContractSpec differs"
197
- }, undefined, false, undefined, this),
198
- /* @__PURE__ */ jsxDEV("ul", {
197
+ }),
198
+ /* @__PURE__ */ jsxs("ul", {
199
199
  className: "text-muted-foreground space-y-2",
200
200
  children: [
201
- /* @__PURE__ */ jsxDEV("li", {
201
+ /* @__PURE__ */ jsxs("li", {
202
202
  children: [
203
- /* @__PURE__ */ jsxDEV("strong", {
203
+ /* @__PURE__ */ jsx("strong", {
204
204
  children: "Full application generation"
205
- }, undefined, false, undefined, this),
205
+ }),
206
206
  " \u2013 ContractSpec compiles specs into back-end, events and user interfaces for both web and mobile."
207
207
  ]
208
- }, undefined, true, undefined, this),
209
- /* @__PURE__ */ jsxDEV("li", {
208
+ }),
209
+ /* @__PURE__ */ jsxs("li", {
210
210
  children: [
211
- /* @__PURE__ */ jsxDEV("strong", {
211
+ /* @__PURE__ */ jsx("strong", {
212
212
  children: "Policy enforcement"
213
- }, undefined, false, undefined, this),
213
+ }),
214
214
  " \u2013 A built-in policy engine governs PII access and mutations across the UI."
215
215
  ]
216
- }, undefined, true, undefined, this),
217
- /* @__PURE__ */ jsxDEV("li", {
216
+ }),
217
+ /* @__PURE__ */ jsxs("li", {
218
218
  children: [
219
- /* @__PURE__ */ jsxDEV("strong", {
219
+ /* @__PURE__ */ jsx("strong", {
220
220
  children: "Customisation via overlays"
221
- }, undefined, false, undefined, this),
221
+ }),
222
222
  " \u2013 Non-technical users can safely personalise layouts while respecting policies."
223
223
  ]
224
- }, undefined, true, undefined, this),
225
- /* @__PURE__ */ jsxDEV("li", {
224
+ }),
225
+ /* @__PURE__ */ jsxs("li", {
226
226
  children: [
227
- /* @__PURE__ */ jsxDEV("strong", {
227
+ /* @__PURE__ */ jsx("strong", {
228
228
  children: "Extensible capabilities"
229
- }, undefined, false, undefined, this),
229
+ }),
230
230
  " \u2013 Connect to external APIs and services via capability providers while maintaining type safety."
231
231
  ]
232
- }, undefined, true, undefined, this)
232
+ })
233
233
  ]
234
- }, undefined, true, undefined, this),
235
- /* @__PURE__ */ jsxDEV("p", {
234
+ }),
235
+ /* @__PURE__ */ jsx("p", {
236
236
  className: "text-muted-foreground",
237
237
  children: "Automation tools simplify integrations and tasks; ContractSpec goes further by generating a complete, policy-safe application around your data and processes."
238
- }, undefined, false, undefined, this)
238
+ })
239
239
  ]
240
- }, undefined, true, undefined, this)
240
+ })
241
241
  ]
242
- }, undefined, true, undefined, this);
242
+ });
243
243
  }
244
244
 
245
245
  // src/components/docs/comparison/ComparisonEnterprisePlatformsPage.tsx
246
246
  import Link from "@contractspec/lib.ui-link";
247
- import { jsxDEV as jsxDEV2 } from "react/jsx-dev-runtime";
247
+ import { jsx as jsx2, jsxs as jsxs2 } from "react/jsx-runtime";
248
248
  function ComparisonEnterprisePlatformsPage() {
249
- return /* @__PURE__ */ jsxDEV2("div", {
249
+ return /* @__PURE__ */ jsxs2("div", {
250
250
  className: "space-y-8",
251
251
  children: [
252
- /* @__PURE__ */ jsxDEV2("div", {
252
+ /* @__PURE__ */ jsxs2("div", {
253
253
  className: "space-y-4",
254
254
  children: [
255
- /* @__PURE__ */ jsxDEV2("h1", {
255
+ /* @__PURE__ */ jsx2("h1", {
256
256
  className: "text-4xl font-bold",
257
257
  children: "Enterprise orchestration platforms"
258
- }, undefined, false, undefined, this),
259
- /* @__PURE__ */ jsxDEV2("p", {
258
+ }),
259
+ /* @__PURE__ */ jsx2("p", {
260
260
  className: "text-muted-foreground",
261
261
  children: "Enterprise orchestration platforms manage mission-critical workloads and integrate deeply with ERP systems. They prioritise governance, reliability and compliance, but they do not provide spec-driven app generation or per-user customisation."
262
- }, undefined, false, undefined, this)
262
+ })
263
263
  ]
264
- }, undefined, true, undefined, this),
265
- /* @__PURE__ */ jsxDEV2("div", {
264
+ }),
265
+ /* @__PURE__ */ jsxs2("div", {
266
266
  className: "space-y-4",
267
267
  children: [
268
- /* @__PURE__ */ jsxDEV2("h2", {
268
+ /* @__PURE__ */ jsx2("h2", {
269
269
  className: "text-2xl font-bold",
270
270
  children: "Redwood RunMyJobs"
271
- }, undefined, false, undefined, this),
272
- /* @__PURE__ */ jsxDEV2("p", {
271
+ }),
272
+ /* @__PURE__ */ jsxs2("p", {
273
273
  className: "text-muted-foreground",
274
274
  children: [
275
- /* @__PURE__ */ jsxDEV2(Link, {
275
+ /* @__PURE__ */ jsx2(Link, {
276
276
  href: "https://www.redwood.com/workload-automation/",
277
277
  className: "hover:text-foreground underline decoration-dotted underline-offset-4",
278
278
  target: "_blank",
279
279
  rel: "noreferrer",
280
280
  children: "RunMyJobs by Redwood"
281
- }, undefined, false, undefined, this),
281
+ }),
282
282
  " ",
283
283
  "is a cloud-native service orchestration and automation platform. Key attributes include:"
284
284
  ]
285
- }, undefined, true, undefined, this),
286
- /* @__PURE__ */ jsxDEV2("ul", {
285
+ }),
286
+ /* @__PURE__ */ jsxs2("ul", {
287
287
  className: "text-muted-foreground space-y-2",
288
288
  children: [
289
- /* @__PURE__ */ jsxDEV2("li", {
289
+ /* @__PURE__ */ jsxs2("li", {
290
290
  children: [
291
- /* @__PURE__ */ jsxDEV2("strong", {
291
+ /* @__PURE__ */ jsx2("strong", {
292
292
  children: "Self-service portal."
293
- }, undefined, false, undefined, this),
293
+ }),
294
294
  " Business users can run and customise workloads while IT ensures governance and compliance"
295
295
  ]
296
- }, undefined, true, undefined, this),
297
- /* @__PURE__ */ jsxDEV2("li", {
296
+ }),
297
+ /* @__PURE__ */ jsxs2("li", {
298
298
  children: [
299
- /* @__PURE__ */ jsxDEV2("strong", {
299
+ /* @__PURE__ */ jsx2("strong", {
300
300
  children: "Full-stack orchestration."
301
- }, undefined, false, undefined, this),
301
+ }),
302
302
  " Integrates with both SAP and non-SAP systems; Redwood is recognised as a Leader in Gartner\u2019s Magic Quadrant for service orchestration"
303
303
  ]
304
- }, undefined, true, undefined, this),
305
- /* @__PURE__ */ jsxDEV2("li", {
304
+ }),
305
+ /* @__PURE__ */ jsxs2("li", {
306
306
  children: [
307
- /* @__PURE__ */ jsxDEV2("strong", {
307
+ /* @__PURE__ */ jsx2("strong", {
308
308
  children: "Observability and AI insights."
309
- }, undefined, false, undefined, this),
309
+ }),
310
310
  " Dashboards and AI-enhanced analytics identify bottlenecks and forecast issues"
311
311
  ]
312
- }, undefined, true, undefined, this),
313
- /* @__PURE__ */ jsxDEV2("li", {
312
+ }),
313
+ /* @__PURE__ */ jsxs2("li", {
314
314
  children: [
315
- /* @__PURE__ */ jsxDEV2("strong", {
315
+ /* @__PURE__ */ jsx2("strong", {
316
316
  children: "Deep SAP integration."
317
- }, undefined, false, undefined, this),
317
+ }),
318
318
  " Supports SAP\u2019s latest technologies and orchestrates mission-critical business processes"
319
319
  ]
320
- }, undefined, true, undefined, this),
321
- /* @__PURE__ */ jsxDEV2("li", {
320
+ }),
321
+ /* @__PURE__ */ jsxs2("li", {
322
322
  children: [
323
- /* @__PURE__ */ jsxDEV2("strong", {
323
+ /* @__PURE__ */ jsx2("strong", {
324
324
  children: "Connectors & wizard."
325
- }, undefined, false, undefined, this),
325
+ }),
326
326
  " Provides pre-built connectors and a wizard to link on-prem and cloud systems"
327
327
  ]
328
- }, undefined, true, undefined, this)
328
+ })
329
329
  ]
330
- }, undefined, true, undefined, this)
330
+ })
331
331
  ]
332
- }, undefined, true, undefined, this),
333
- /* @__PURE__ */ jsxDEV2("div", {
332
+ }),
333
+ /* @__PURE__ */ jsxs2("div", {
334
334
  className: "space-y-4",
335
335
  children: [
336
- /* @__PURE__ */ jsxDEV2("h3", {
336
+ /* @__PURE__ */ jsx2("h3", {
337
337
  className: "text-xl font-semibold",
338
338
  children: "Comparison with ContractSpec"
339
- }, undefined, false, undefined, this),
340
- /* @__PURE__ */ jsxDEV2("div", {
339
+ }),
340
+ /* @__PURE__ */ jsx2("div", {
341
341
  className: "border-border/50 overflow-x-auto rounded-lg border",
342
- children: /* @__PURE__ */ jsxDEV2("table", {
342
+ children: /* @__PURE__ */ jsxs2("table", {
343
343
  className: "w-full text-left text-sm",
344
344
  children: [
345
- /* @__PURE__ */ jsxDEV2("thead", {
345
+ /* @__PURE__ */ jsx2("thead", {
346
346
  className: "bg-card/50",
347
- children: /* @__PURE__ */ jsxDEV2("tr", {
347
+ children: /* @__PURE__ */ jsxs2("tr", {
348
348
  className: "border-border/50 border-b",
349
349
  children: [
350
- /* @__PURE__ */ jsxDEV2("th", {
350
+ /* @__PURE__ */ jsx2("th", {
351
351
  className: "px-4 py-3 font-semibold",
352
352
  children: "Aspect"
353
- }, undefined, false, undefined, this),
354
- /* @__PURE__ */ jsxDEV2("th", {
353
+ }),
354
+ /* @__PURE__ */ jsx2("th", {
355
355
  className: "px-4 py-3 font-semibold",
356
356
  children: "RunMyJobs"
357
- }, undefined, false, undefined, this),
358
- /* @__PURE__ */ jsxDEV2("th", {
357
+ }),
358
+ /* @__PURE__ */ jsx2("th", {
359
359
  className: "px-4 py-3 font-semibold",
360
360
  children: "ContractSpec"
361
- }, undefined, false, undefined, this)
361
+ })
362
362
  ]
363
- }, undefined, true, undefined, this)
364
- }, undefined, false, undefined, this),
365
- /* @__PURE__ */ jsxDEV2("tbody", {
363
+ })
364
+ }),
365
+ /* @__PURE__ */ jsxs2("tbody", {
366
366
  className: "divide-border/50 divide-y",
367
367
  children: [
368
- /* @__PURE__ */ jsxDEV2("tr", {
368
+ /* @__PURE__ */ jsxs2("tr", {
369
369
  children: [
370
- /* @__PURE__ */ jsxDEV2("td", {
370
+ /* @__PURE__ */ jsx2("td", {
371
371
  className: "px-4 py-3 align-top",
372
- children: /* @__PURE__ */ jsxDEV2("strong", {
372
+ children: /* @__PURE__ */ jsx2("strong", {
373
373
  children: "Target user"
374
- }, undefined, false, undefined, this)
375
- }, undefined, false, undefined, this),
376
- /* @__PURE__ */ jsxDEV2("td", {
374
+ })
375
+ }),
376
+ /* @__PURE__ */ jsx2("td", {
377
377
  className: "px-4 py-3 align-top",
378
378
  children: "Enterprise IT and operations teams automating SAP and mission-critical workflows."
379
- }, undefined, false, undefined, this),
380
- /* @__PURE__ */ jsxDEV2("td", {
379
+ }),
380
+ /* @__PURE__ */ jsx2("td", {
381
381
  className: "px-4 py-3 align-top",
382
382
  children: "Developers, product teams and SMBs wanting to generate policy-safe apps with customisable UIs."
383
- }, undefined, false, undefined, this)
383
+ })
384
384
  ]
385
- }, undefined, true, undefined, this),
386
- /* @__PURE__ */ jsxDEV2("tr", {
385
+ }),
386
+ /* @__PURE__ */ jsxs2("tr", {
387
387
  children: [
388
- /* @__PURE__ */ jsxDEV2("td", {
388
+ /* @__PURE__ */ jsx2("td", {
389
389
  className: "px-4 py-3 align-top",
390
- children: /* @__PURE__ */ jsxDEV2("strong", {
390
+ children: /* @__PURE__ */ jsx2("strong", {
391
391
  children: "Workload focus"
392
- }, undefined, false, undefined, this)
393
- }, undefined, false, undefined, this),
394
- /* @__PURE__ */ jsxDEV2("td", {
392
+ })
393
+ }),
394
+ /* @__PURE__ */ jsx2("td", {
395
395
  className: "px-4 py-3 align-top",
396
396
  children: "Service orchestration and job scheduling across ERP/legacy systems"
397
- }, undefined, false, undefined, this),
398
- /* @__PURE__ */ jsxDEV2("td", {
397
+ }),
398
+ /* @__PURE__ */ jsx2("td", {
399
399
  className: "px-4 py-3 align-top",
400
400
  children: "End-to-end application generation with back-end, UI and policies."
401
- }, undefined, false, undefined, this)
401
+ })
402
402
  ]
403
- }, undefined, true, undefined, this),
404
- /* @__PURE__ */ jsxDEV2("tr", {
403
+ }),
404
+ /* @__PURE__ */ jsxs2("tr", {
405
405
  children: [
406
- /* @__PURE__ */ jsxDEV2("td", {
406
+ /* @__PURE__ */ jsx2("td", {
407
407
  className: "px-4 py-3 align-top",
408
- children: /* @__PURE__ */ jsxDEV2("strong", {
408
+ children: /* @__PURE__ */ jsx2("strong", {
409
409
  children: "User interface"
410
- }, undefined, false, undefined, this)
411
- }, undefined, false, undefined, this),
412
- /* @__PURE__ */ jsxDEV2("td", {
410
+ })
411
+ }),
412
+ /* @__PURE__ */ jsx2("td", {
413
413
  className: "px-4 py-3 align-top",
414
414
  children: "Self-service portal to run/monitor jobs; no custom UI generation for new apps."
415
- }, undefined, false, undefined, this),
416
- /* @__PURE__ */ jsxDEV2("td", {
415
+ }),
416
+ /* @__PURE__ */ jsx2("td", {
417
417
  className: "px-4 py-3 align-top",
418
418
  children: "Generates React/React-Native UIs from specs; users can personalise layout via overlays."
419
- }, undefined, false, undefined, this)
419
+ })
420
420
  ]
421
- }, undefined, true, undefined, this),
422
- /* @__PURE__ */ jsxDEV2("tr", {
421
+ }),
422
+ /* @__PURE__ */ jsxs2("tr", {
423
423
  children: [
424
- /* @__PURE__ */ jsxDEV2("td", {
424
+ /* @__PURE__ */ jsx2("td", {
425
425
  className: "px-4 py-3 align-top",
426
- children: /* @__PURE__ */ jsxDEV2("strong", {
426
+ children: /* @__PURE__ */ jsx2("strong", {
427
427
  children: "Open source"
428
- }, undefined, false, undefined, this)
429
- }, undefined, false, undefined, this),
430
- /* @__PURE__ */ jsxDEV2("td", {
428
+ })
429
+ }),
430
+ /* @__PURE__ */ jsx2("td", {
431
431
  className: "px-4 py-3 align-top",
432
432
  children: "Proprietary SaaS; enterprise agreements."
433
- }, undefined, false, undefined, this),
434
- /* @__PURE__ */ jsxDEV2("td", {
433
+ }),
434
+ /* @__PURE__ */ jsx2("td", {
435
435
  className: "px-4 py-3 align-top",
436
436
  children: "Core compiler is proprietary; SDK and certain modules may be open-source; offers hosted and on-prem options."
437
- }, undefined, false, undefined, this)
437
+ })
438
438
  ]
439
- }, undefined, true, undefined, this),
440
- /* @__PURE__ */ jsxDEV2("tr", {
439
+ }),
440
+ /* @__PURE__ */ jsxs2("tr", {
441
441
  children: [
442
- /* @__PURE__ */ jsxDEV2("td", {
442
+ /* @__PURE__ */ jsx2("td", {
443
443
  className: "px-4 py-3 align-top",
444
- children: /* @__PURE__ */ jsxDEV2("strong", {
444
+ children: /* @__PURE__ */ jsx2("strong", {
445
445
  children: "Policy & personalisation"
446
- }, undefined, false, undefined, this)
447
- }, undefined, false, undefined, this),
448
- /* @__PURE__ */ jsxDEV2("td", {
446
+ })
447
+ }),
448
+ /* @__PURE__ */ jsx2("td", {
449
449
  className: "px-4 py-3 align-top",
450
450
  children: "IT controls governance; no per-user overlay concept."
451
- }, undefined, false, undefined, this),
452
- /* @__PURE__ */ jsxDEV2("td", {
451
+ }),
452
+ /* @__PURE__ */ jsx2("td", {
453
453
  className: "px-4 py-3 align-top",
454
454
  children: "Built-in policy engine and per-user overlays for safe personalisation."
455
- }, undefined, false, undefined, this)
455
+ })
456
456
  ]
457
- }, undefined, true, undefined, this)
457
+ })
458
458
  ]
459
- }, undefined, true, undefined, this)
459
+ })
460
460
  ]
461
- }, undefined, true, undefined, this)
462
- }, undefined, false, undefined, this),
463
- /* @__PURE__ */ jsxDEV2("p", {
461
+ })
462
+ }),
463
+ /* @__PURE__ */ jsx2("p", {
464
464
  className: "text-muted-foreground",
465
465
  children: "Redwood RunMyJobs is designed for orchestrating enterprise workloads and SAP processes. ContractSpec targets a different problem: generating complete applications from typed specs and letting end users adapt them safely."
466
- }, undefined, false, undefined, this)
466
+ })
467
467
  ]
468
- }, undefined, true, undefined, this)
468
+ })
469
469
  ]
470
- }, undefined, true, undefined, this);
470
+ });
471
471
  }
472
472
 
473
473
  // src/components/docs/comparison/ComparisonInternalToolBuildersPage.tsx
474
- import { jsxDEV as jsxDEV3 } from "react/jsx-dev-runtime";
474
+ import { jsx as jsx3, jsxs as jsxs3 } from "react/jsx-runtime";
475
475
  function ComparisonInternalToolBuildersPage() {
476
- return /* @__PURE__ */ jsxDEV3("div", {
476
+ return /* @__PURE__ */ jsxs3("div", {
477
477
  className: "space-y-8",
478
478
  children: [
479
- /* @__PURE__ */ jsxDEV3("div", {
479
+ /* @__PURE__ */ jsxs3("div", {
480
480
  className: "space-y-4",
481
481
  children: [
482
- /* @__PURE__ */ jsxDEV3("h1", {
482
+ /* @__PURE__ */ jsx3("h1", {
483
483
  className: "text-4xl font-bold",
484
484
  children: "Internal-tool builders"
485
- }, undefined, false, undefined, this),
486
- /* @__PURE__ */ jsxDEV3("p", {
485
+ }),
486
+ /* @__PURE__ */ jsx3("p", {
487
487
  className: "text-muted-foreground",
488
488
  children: "Internal-tool builders let teams quickly assemble dashboards and admin panels. These platforms often provide drag-and-drop UIs and connectors to databases and APIs, but they rely on developers to write custom code for business logic and seldom enforce policies across surfaces."
489
- }, undefined, false, undefined, this)
489
+ })
490
490
  ]
491
- }, undefined, true, undefined, this),
492
- /* @__PURE__ */ jsxDEV3("div", {
491
+ }),
492
+ /* @__PURE__ */ jsxs3("div", {
493
493
  className: "space-y-4",
494
494
  children: [
495
- /* @__PURE__ */ jsxDEV3("h2", {
495
+ /* @__PURE__ */ jsx3("h2", {
496
496
  className: "text-2xl font-bold",
497
497
  children: "Feature comparison"
498
- }, undefined, false, undefined, this),
499
- /* @__PURE__ */ jsxDEV3("div", {
498
+ }),
499
+ /* @__PURE__ */ jsx3("div", {
500
500
  className: "border-border/50 overflow-x-auto rounded-lg border",
501
- children: /* @__PURE__ */ jsxDEV3("table", {
501
+ children: /* @__PURE__ */ jsxs3("table", {
502
502
  className: "w-full text-left text-sm",
503
503
  children: [
504
- /* @__PURE__ */ jsxDEV3("thead", {
504
+ /* @__PURE__ */ jsx3("thead", {
505
505
  className: "bg-card/50",
506
- children: /* @__PURE__ */ jsxDEV3("tr", {
506
+ children: /* @__PURE__ */ jsxs3("tr", {
507
507
  className: "border-border/50 border-b",
508
508
  children: [
509
- /* @__PURE__ */ jsxDEV3("th", {
509
+ /* @__PURE__ */ jsx3("th", {
510
510
  className: "px-4 py-3 font-semibold",
511
511
  children: "Feature"
512
- }, undefined, false, undefined, this),
513
- /* @__PURE__ */ jsxDEV3("th", {
512
+ }),
513
+ /* @__PURE__ */ jsx3("th", {
514
514
  className: "px-4 py-3 font-semibold",
515
515
  children: "Retool"
516
- }, undefined, false, undefined, this),
517
- /* @__PURE__ */ jsxDEV3("th", {
516
+ }),
517
+ /* @__PURE__ */ jsx3("th", {
518
518
  className: "px-4 py-3 font-semibold",
519
519
  children: "Appsmith"
520
- }, undefined, false, undefined, this),
521
- /* @__PURE__ */ jsxDEV3("th", {
520
+ }),
521
+ /* @__PURE__ */ jsx3("th", {
522
522
  className: "px-4 py-3 font-semibold",
523
523
  children: "ToolJet"
524
- }, undefined, false, undefined, this),
525
- /* @__PURE__ */ jsxDEV3("th", {
524
+ }),
525
+ /* @__PURE__ */ jsx3("th", {
526
526
  className: "px-4 py-3 font-semibold",
527
527
  children: "Budibase"
528
- }, undefined, false, undefined, this)
528
+ })
529
529
  ]
530
- }, undefined, true, undefined, this)
531
- }, undefined, false, undefined, this),
532
- /* @__PURE__ */ jsxDEV3("tbody", {
530
+ })
531
+ }),
532
+ /* @__PURE__ */ jsxs3("tbody", {
533
533
  className: "divide-border/50 divide-y",
534
534
  children: [
535
- /* @__PURE__ */ jsxDEV3("tr", {
535
+ /* @__PURE__ */ jsxs3("tr", {
536
536
  children: [
537
- /* @__PURE__ */ jsxDEV3("td", {
537
+ /* @__PURE__ */ jsx3("td", {
538
538
  className: "px-4 py-3 align-top font-semibold",
539
539
  children: "UI builder"
540
- }, undefined, false, undefined, this),
541
- /* @__PURE__ */ jsxDEV3("td", {
540
+ }),
541
+ /* @__PURE__ */ jsx3("td", {
542
542
  className: "px-4 py-3 align-top",
543
543
  children: "Drag-and-drop canvas; shape UI components easily"
544
- }, undefined, false, undefined, this),
545
- /* @__PURE__ */ jsxDEV3("td", {
544
+ }),
545
+ /* @__PURE__ */ jsx3("td", {
546
546
  className: "px-4 py-3 align-top",
547
547
  children: "Visual builder with drag-and-drop widgets"
548
- }, undefined, false, undefined, this),
549
- /* @__PURE__ */ jsxDEV3("td", {
548
+ }),
549
+ /* @__PURE__ */ jsx3("td", {
550
550
  className: "px-4 py-3 align-top",
551
551
  children: "Drag-and-drop UI widgets (tables, charts, forms)"
552
- }, undefined, false, undefined, this),
553
- /* @__PURE__ */ jsxDEV3("td", {
552
+ }),
553
+ /* @__PURE__ */ jsx3("td", {
554
554
  className: "px-4 py-3 align-top",
555
555
  children: "Pre-built components and templates for mobile/desktop"
556
- }, undefined, false, undefined, this)
556
+ })
557
557
  ]
558
- }, undefined, true, undefined, this),
559
- /* @__PURE__ */ jsxDEV3("tr", {
558
+ }),
559
+ /* @__PURE__ */ jsxs3("tr", {
560
560
  children: [
561
- /* @__PURE__ */ jsxDEV3("td", {
561
+ /* @__PURE__ */ jsx3("td", {
562
562
  className: "px-4 py-3 align-top font-semibold",
563
563
  children: "Custom code & logic"
564
- }, undefined, false, undefined, this),
565
- /* @__PURE__ */ jsxDEV3("td", {
564
+ }),
565
+ /* @__PURE__ */ jsx3("td", {
566
566
  className: "px-4 py-3 align-top",
567
567
  children: "Full code insertion anywhere via IDE"
568
- }, undefined, false, undefined, this),
569
- /* @__PURE__ */ jsxDEV3("td", {
568
+ }),
569
+ /* @__PURE__ */ jsx3("td", {
570
570
  className: "px-4 py-3 align-top",
571
571
  children: "Logic via JavaScript or natural-language prompts in a central IDE"
572
- }, undefined, false, undefined, this),
573
- /* @__PURE__ */ jsxDEV3("td", {
572
+ }),
573
+ /* @__PURE__ */ jsx3("td", {
574
574
  className: "px-4 py-3 align-top",
575
575
  children: "Supports business logic in JavaScript or Python queries"
576
- }, undefined, false, undefined, this),
577
- /* @__PURE__ */ jsxDEV3("td", {
576
+ }),
577
+ /* @__PURE__ */ jsx3("td", {
578
578
  className: "px-4 py-3 align-top",
579
579
  children: "Custom logic via JavaScript; plugins and external embeds"
580
- }, undefined, false, undefined, this)
580
+ })
581
581
  ]
582
- }, undefined, true, undefined, this),
583
- /* @__PURE__ */ jsxDEV3("tr", {
582
+ }),
583
+ /* @__PURE__ */ jsxs3("tr", {
584
584
  children: [
585
- /* @__PURE__ */ jsxDEV3("td", {
585
+ /* @__PURE__ */ jsx3("td", {
586
586
  className: "px-4 py-3 align-top font-semibold",
587
587
  children: "Data connectors"
588
- }, undefined, false, undefined, this),
589
- /* @__PURE__ */ jsxDEV3("td", {
588
+ }),
589
+ /* @__PURE__ */ jsx3("td", {
590
590
  className: "px-4 py-3 align-top",
591
591
  children: "Wide support for databases and APIs (PostgreSQL, MongoDB, GraphQL, etc.)."
592
- }, undefined, false, undefined, this),
593
- /* @__PURE__ */ jsxDEV3("td", {
592
+ }),
593
+ /* @__PURE__ */ jsx3("td", {
594
594
  className: "px-4 py-3 align-top",
595
595
  children: "Connects to LLMs and databases"
596
- }, undefined, false, undefined, this),
597
- /* @__PURE__ */ jsxDEV3("td", {
596
+ }),
597
+ /* @__PURE__ */ jsx3("td", {
598
598
  className: "px-4 py-3 align-top",
599
599
  children: "Built-in database; connects to PostgreSQL, MongoDB, APIs, GraphQL, SaaS"
600
- }, undefined, false, undefined, this),
601
- /* @__PURE__ */ jsxDEV3("td", {
600
+ }),
601
+ /* @__PURE__ */ jsx3("td", {
602
602
  className: "px-4 py-3 align-top",
603
603
  children: "Connects to external databases, REST, CSV or built-in DB"
604
- }, undefined, false, undefined, this)
604
+ })
605
605
  ]
606
- }, undefined, true, undefined, this),
607
- /* @__PURE__ */ jsxDEV3("tr", {
606
+ }),
607
+ /* @__PURE__ */ jsxs3("tr", {
608
608
  children: [
609
- /* @__PURE__ */ jsxDEV3("td", {
609
+ /* @__PURE__ */ jsx3("td", {
610
610
  className: "px-4 py-3 align-top font-semibold",
611
611
  children: "Open source & self-host"
612
- }, undefined, false, undefined, this),
613
- /* @__PURE__ */ jsxDEV3("td", {
612
+ }),
613
+ /* @__PURE__ */ jsx3("td", {
614
614
  className: "px-4 py-3 align-top",
615
615
  children: "Proprietary; cloud or on-prem subscription."
616
- }, undefined, false, undefined, this),
617
- /* @__PURE__ */ jsxDEV3("td", {
616
+ }),
617
+ /* @__PURE__ */ jsx3("td", {
618
618
  className: "px-4 py-3 align-top",
619
619
  children: "Open source (Apache-2.0); self-host or cloud."
620
- }, undefined, false, undefined, this),
621
- /* @__PURE__ */ jsxDEV3("td", {
620
+ }),
621
+ /* @__PURE__ */ jsx3("td", {
622
622
  className: "px-4 py-3 align-top",
623
623
  children: "Open source; self-host via Docker or cloud."
624
- }, undefined, false, undefined, this),
625
- /* @__PURE__ */ jsxDEV3("td", {
624
+ }),
625
+ /* @__PURE__ */ jsx3("td", {
626
626
  className: "px-4 py-3 align-top",
627
627
  children: "Open source; self-host via Docker/Kubernetes"
628
- }, undefined, false, undefined, this)
628
+ })
629
629
  ]
630
- }, undefined, true, undefined, this),
631
- /* @__PURE__ */ jsxDEV3("tr", {
630
+ }),
631
+ /* @__PURE__ */ jsxs3("tr", {
632
632
  children: [
633
- /* @__PURE__ */ jsxDEV3("td", {
633
+ /* @__PURE__ */ jsx3("td", {
634
634
  className: "px-4 py-3 align-top font-semibold",
635
635
  children: "Policy & personalisation"
636
- }, undefined, false, undefined, this),
637
- /* @__PURE__ */ jsxDEV3("td", {
636
+ }),
637
+ /* @__PURE__ */ jsx3("td", {
638
638
  className: "px-4 py-3 align-top",
639
639
  children: "No built-in policy engine; personalisation limited to user roles."
640
- }, undefined, false, undefined, this),
641
- /* @__PURE__ */ jsxDEV3("td", {
640
+ }),
641
+ /* @__PURE__ */ jsx3("td", {
642
642
  className: "px-4 py-3 align-top",
643
643
  children: "No typed policy engine; customisation depends on user roles."
644
- }, undefined, false, undefined, this),
645
- /* @__PURE__ */ jsxDEV3("td", {
644
+ }),
645
+ /* @__PURE__ */ jsx3("td", {
646
646
  className: "px-4 py-3 align-top",
647
647
  children: "No policy engine; personalisation via user roles."
648
- }, undefined, false, undefined, this),
649
- /* @__PURE__ */ jsxDEV3("td", {
648
+ }),
649
+ /* @__PURE__ */ jsx3("td", {
650
650
  className: "px-4 py-3 align-top",
651
651
  children: "No policy engine; personalisation via RBAC & SSO"
652
- }, undefined, false, undefined, this)
652
+ })
653
653
  ]
654
- }, undefined, true, undefined, this)
654
+ })
655
655
  ]
656
- }, undefined, true, undefined, this)
656
+ })
657
657
  ]
658
- }, undefined, true, undefined, this)
659
- }, undefined, false, undefined, this)
658
+ })
659
+ })
660
660
  ]
661
- }, undefined, true, undefined, this),
662
- /* @__PURE__ */ jsxDEV3("div", {
661
+ }),
662
+ /* @__PURE__ */ jsxs3("div", {
663
663
  className: "space-y-3",
664
664
  children: [
665
- /* @__PURE__ */ jsxDEV3("h2", {
665
+ /* @__PURE__ */ jsx3("h2", {
666
666
  className: "text-2xl font-bold",
667
667
  children: "ContractSpec\u2019s differences"
668
- }, undefined, false, undefined, this),
669
- /* @__PURE__ */ jsxDEV3("ul", {
668
+ }),
669
+ /* @__PURE__ */ jsxs3("ul", {
670
670
  className: "text-muted-foreground space-y-2",
671
671
  children: [
672
- /* @__PURE__ */ jsxDEV3("li", {
672
+ /* @__PURE__ */ jsxs3("li", {
673
673
  children: [
674
- /* @__PURE__ */ jsxDEV3("strong", {
674
+ /* @__PURE__ */ jsx3("strong", {
675
675
  children: "Typed specifications"
676
- }, undefined, false, undefined, this),
676
+ }),
677
677
  " produce both the API and UI. You define capabilities, data views and workflows, and the compiler generates code, forms and screens\u2014no manual widget wiring."
678
678
  ]
679
- }, undefined, true, undefined, this),
680
- /* @__PURE__ */ jsxDEV3("li", {
679
+ }),
680
+ /* @__PURE__ */ jsxs3("li", {
681
681
  children: [
682
- /* @__PURE__ */ jsxDEV3("strong", {
682
+ /* @__PURE__ */ jsx3("strong", {
683
683
  children: "Policy enforcement"
684
- }, undefined, false, undefined, this),
684
+ }),
685
685
  " at run time ensures PII and ABAC rules across the entire app."
686
686
  ]
687
- }, undefined, true, undefined, this),
688
- /* @__PURE__ */ jsxDEV3("li", {
687
+ }),
688
+ /* @__PURE__ */ jsxs3("li", {
689
689
  children: [
690
- /* @__PURE__ */ jsxDEV3("strong", {
690
+ /* @__PURE__ */ jsx3("strong", {
691
691
  children: "Overlay personalisation"
692
- }, undefined, false, undefined, this),
692
+ }),
693
693
  " allows tenants and users to change layouts safely without code."
694
694
  ]
695
- }, undefined, true, undefined, this),
696
- /* @__PURE__ */ jsxDEV3("li", {
695
+ }),
696
+ /* @__PURE__ */ jsxs3("li", {
697
697
  children: [
698
- /* @__PURE__ */ jsxDEV3("strong", {
698
+ /* @__PURE__ */ jsx3("strong", {
699
699
  children: "Unified mobile/web runtime"
700
- }, undefined, false, undefined, this),
700
+ }),
701
701
  " means you don\u2019t need separate builders for React Native vs web."
702
702
  ]
703
- }, undefined, true, undefined, this)
703
+ })
704
704
  ]
705
- }, undefined, true, undefined, this),
706
- /* @__PURE__ */ jsxDEV3("p", {
705
+ }),
706
+ /* @__PURE__ */ jsx3("p", {
707
707
  className: "text-muted-foreground",
708
708
  children: "Internal-tool builders are useful for quick dashboards. ContractSpec extends this by generating the whole stack from specs and enforcing policies throughout."
709
- }, undefined, false, undefined, this)
709
+ })
710
710
  ]
711
- }, undefined, true, undefined, this)
711
+ })
712
712
  ]
713
- }, undefined, true, undefined, this);
713
+ });
714
714
  }
715
715
 
716
716
  // src/components/docs/comparison/ComparisonOverviewPage.tsx
717
- import { jsxDEV as jsxDEV4 } from "react/jsx-dev-runtime";
717
+ import { jsx as jsx4, jsxs as jsxs4 } from "react/jsx-runtime";
718
718
  function ComparisonOverviewPage() {
719
- return /* @__PURE__ */ jsxDEV4("div", {
719
+ return /* @__PURE__ */ jsxs4("div", {
720
720
  className: "space-y-8",
721
721
  children: [
722
- /* @__PURE__ */ jsxDEV4("div", {
722
+ /* @__PURE__ */ jsxs4("div", {
723
723
  className: "space-y-4",
724
724
  children: [
725
- /* @__PURE__ */ jsxDEV4("h1", {
725
+ /* @__PURE__ */ jsx4("h1", {
726
726
  className: "text-4xl font-bold",
727
727
  children: "Comparison overview"
728
- }, undefined, false, undefined, this),
729
- /* @__PURE__ */ jsxDEV4("p", {
728
+ }),
729
+ /* @__PURE__ */ jsx4("p", {
730
730
  className: "text-muted-foreground",
731
731
  children: "ContractSpec sits at the intersection of several tool categories. To appreciate its unique offering\u2014typed specifications for back-end, front-end, workflows and policies with a unified web/mobile runtime\u2014this section compares it to related products."
732
- }, undefined, false, undefined, this),
733
- /* @__PURE__ */ jsxDEV4("p", {
732
+ }),
733
+ /* @__PURE__ */ jsxs4("p", {
734
734
  className: "text-muted-foreground",
735
735
  children: [
736
736
  "ContractSpec uses ",
737
- /* @__PURE__ */ jsxDEV4("strong", {
737
+ /* @__PURE__ */ jsx4("strong", {
738
738
  children: "runtime adapters"
739
- }, undefined, false, undefined, this),
739
+ }),
740
740
  " to serve typed",
741
741
  " ",
742
- /* @__PURE__ */ jsxDEV4("strong", {
742
+ /* @__PURE__ */ jsx4("strong", {
743
743
  children: "Operations"
744
- }, undefined, false, undefined, this),
744
+ }),
745
745
  " (Commands/Queries),",
746
746
  " ",
747
- /* @__PURE__ */ jsxDEV4("strong", {
747
+ /* @__PURE__ */ jsx4("strong", {
748
748
  children: "DataViews"
749
- }, undefined, false, undefined, this),
749
+ }),
750
750
  ", ",
751
- /* @__PURE__ */ jsxDEV4("strong", {
751
+ /* @__PURE__ */ jsx4("strong", {
752
752
  children: "Workflows"
753
- }, undefined, false, undefined, this),
753
+ }),
754
754
  ", and",
755
755
  " ",
756
- /* @__PURE__ */ jsxDEV4("strong", {
756
+ /* @__PURE__ */ jsx4("strong", {
757
757
  children: "Policies"
758
- }, undefined, false, undefined, this),
758
+ }),
759
759
  " as REST/GraphQL/MCP endpoints. A",
760
760
  " ",
761
- /* @__PURE__ */ jsxDEV4("strong", {
761
+ /* @__PURE__ */ jsx4("strong", {
762
762
  children: "policy decision point"
763
- }, undefined, false, undefined, this),
763
+ }),
764
764
  " governs every operation, and",
765
765
  " ",
766
- /* @__PURE__ */ jsxDEV4("strong", {
766
+ /* @__PURE__ */ jsx4("strong", {
767
767
  children: "OverlaySpecs"
768
- }, undefined, false, undefined, this),
768
+ }),
769
769
  " allow non-technical users to personalise screens safely. Few competitors offer this combination of runtime type safety, policy enforcement, and end-user customisation."
770
770
  ]
771
- }, undefined, true, undefined, this)
771
+ })
772
772
  ]
773
- }, undefined, true, undefined, this),
774
- /* @__PURE__ */ jsxDEV4("div", {
773
+ }),
774
+ /* @__PURE__ */ jsxs4("div", {
775
775
  className: "space-y-4",
776
776
  children: [
777
- /* @__PURE__ */ jsxDEV4("h2", {
777
+ /* @__PURE__ */ jsx4("h2", {
778
778
  className: "text-2xl font-bold",
779
779
  children: "Tool categories"
780
- }, undefined, false, undefined, this),
781
- /* @__PURE__ */ jsxDEV4("div", {
780
+ }),
781
+ /* @__PURE__ */ jsx4("div", {
782
782
  className: "border-border/50 overflow-x-auto rounded-lg border",
783
- children: /* @__PURE__ */ jsxDEV4("table", {
783
+ children: /* @__PURE__ */ jsxs4("table", {
784
784
  className: "w-full text-left text-sm",
785
785
  children: [
786
- /* @__PURE__ */ jsxDEV4("thead", {
786
+ /* @__PURE__ */ jsx4("thead", {
787
787
  className: "bg-card/50",
788
- children: /* @__PURE__ */ jsxDEV4("tr", {
788
+ children: /* @__PURE__ */ jsxs4("tr", {
789
789
  className: "border-border/50 border-b",
790
790
  children: [
791
- /* @__PURE__ */ jsxDEV4("th", {
791
+ /* @__PURE__ */ jsx4("th", {
792
792
  className: "px-4 py-3 font-semibold",
793
793
  children: "Category"
794
- }, undefined, false, undefined, this),
795
- /* @__PURE__ */ jsxDEV4("th", {
794
+ }),
795
+ /* @__PURE__ */ jsx4("th", {
796
796
  className: "px-4 py-3 font-semibold",
797
797
  children: "Examples"
798
- }, undefined, false, undefined, this),
799
- /* @__PURE__ */ jsxDEV4("th", {
798
+ }),
799
+ /* @__PURE__ */ jsx4("th", {
800
800
  className: "px-4 py-3 font-semibold",
801
801
  children: "What they do"
802
- }, undefined, false, undefined, this),
803
- /* @__PURE__ */ jsxDEV4("th", {
802
+ }),
803
+ /* @__PURE__ */ jsx4("th", {
804
804
  className: "px-4 py-3 font-semibold",
805
805
  children: "Limitations"
806
- }, undefined, false, undefined, this)
806
+ })
807
807
  ]
808
- }, undefined, true, undefined, this)
809
- }, undefined, false, undefined, this),
810
- /* @__PURE__ */ jsxDEV4("tbody", {
808
+ })
809
+ }),
810
+ /* @__PURE__ */ jsxs4("tbody", {
811
811
  className: "divide-border/50 divide-y",
812
812
  children: [
813
- /* @__PURE__ */ jsxDEV4("tr", {
813
+ /* @__PURE__ */ jsxs4("tr", {
814
814
  children: [
815
- /* @__PURE__ */ jsxDEV4("td", {
815
+ /* @__PURE__ */ jsx4("td", {
816
816
  className: "px-4 py-3 align-top",
817
- children: /* @__PURE__ */ jsxDEV4("strong", {
817
+ children: /* @__PURE__ */ jsx4("strong", {
818
818
  children: "Workflow engines"
819
- }, undefined, false, undefined, this)
820
- }, undefined, false, undefined, this),
821
- /* @__PURE__ */ jsxDEV4("td", {
819
+ })
820
+ }),
821
+ /* @__PURE__ */ jsx4("td", {
822
822
  className: "px-4 py-3 align-top",
823
823
  children: "Prefect, Kestra, Temporal, Airflow, Dagster, Hatchet, Windmill"
824
- }, undefined, false, undefined, this),
825
- /* @__PURE__ */ jsxDEV4("td", {
824
+ }),
825
+ /* @__PURE__ */ jsx4("td", {
826
826
  className: "px-4 py-3 align-top",
827
827
  children: "Orchestrate code or data pipelines; handle retries, scheduling and observability"
828
- }, undefined, false, undefined, this),
829
- /* @__PURE__ */ jsxDEV4("td", {
828
+ }),
829
+ /* @__PURE__ */ jsx4("td", {
830
830
  className: "px-4 py-3 align-top",
831
831
  children: "Require writing code; no automatic UI generation or policy enforcement."
832
- }, undefined, false, undefined, this)
832
+ })
833
833
  ]
834
- }, undefined, true, undefined, this),
835
- /* @__PURE__ */ jsxDEV4("tr", {
834
+ }),
835
+ /* @__PURE__ */ jsxs4("tr", {
836
836
  children: [
837
- /* @__PURE__ */ jsxDEV4("td", {
837
+ /* @__PURE__ */ jsx4("td", {
838
838
  className: "px-4 py-3 align-top",
839
- children: /* @__PURE__ */ jsxDEV4("strong", {
839
+ children: /* @__PURE__ */ jsx4("strong", {
840
840
  children: "Internal-tool builders"
841
- }, undefined, false, undefined, this)
842
- }, undefined, false, undefined, this),
843
- /* @__PURE__ */ jsxDEV4("td", {
841
+ })
842
+ }),
843
+ /* @__PURE__ */ jsx4("td", {
844
844
  className: "px-4 py-3 align-top",
845
845
  children: "Retool, Appsmith, ToolJet, Budibase"
846
- }, undefined, false, undefined, this),
847
- /* @__PURE__ */ jsxDEV4("td", {
846
+ }),
847
+ /* @__PURE__ */ jsx4("td", {
848
848
  className: "px-4 py-3 align-top",
849
849
  children: "Drag-and-drop dashboards and admin panels; connect to databases/APIs"
850
- }, undefined, false, undefined, this),
851
- /* @__PURE__ */ jsxDEV4("td", {
850
+ }),
851
+ /* @__PURE__ */ jsx4("td", {
852
852
  className: "px-4 py-3 align-top",
853
853
  children: "No typed back-end spec; limited enforcement of policies; custom code glues logic."
854
- }, undefined, false, undefined, this)
854
+ })
855
855
  ]
856
- }, undefined, true, undefined, this),
857
- /* @__PURE__ */ jsxDEV4("tr", {
856
+ }),
857
+ /* @__PURE__ */ jsxs4("tr", {
858
858
  children: [
859
- /* @__PURE__ */ jsxDEV4("td", {
859
+ /* @__PURE__ */ jsx4("td", {
860
860
  className: "px-4 py-3 align-top",
861
- children: /* @__PURE__ */ jsxDEV4("strong", {
861
+ children: /* @__PURE__ */ jsx4("strong", {
862
862
  children: "Automation platforms"
863
- }, undefined, false, undefined, this)
864
- }, undefined, false, undefined, this),
865
- /* @__PURE__ */ jsxDEV4("td", {
863
+ })
864
+ }),
865
+ /* @__PURE__ */ jsx4("td", {
866
866
  className: "px-4 py-3 align-top",
867
867
  children: "Zapier, Make, n8n, Pipedream"
868
- }, undefined, false, undefined, this),
869
- /* @__PURE__ */ jsxDEV4("td", {
868
+ }),
869
+ /* @__PURE__ */ jsx4("td", {
870
870
  className: "px-4 py-3 align-top",
871
871
  children: "Connect apps via triggers and actions; visual or low-code interfaces"
872
- }, undefined, false, undefined, this),
873
- /* @__PURE__ */ jsxDEV4("td", {
872
+ }),
873
+ /* @__PURE__ */ jsx4("td", {
874
874
  className: "px-4 py-3 align-top",
875
875
  children: "Automate tasks but do not generate full apps or enforce per-field policies."
876
- }, undefined, false, undefined, this)
876
+ })
877
877
  ]
878
- }, undefined, true, undefined, this),
879
- /* @__PURE__ */ jsxDEV4("tr", {
878
+ }),
879
+ /* @__PURE__ */ jsxs4("tr", {
880
880
  children: [
881
- /* @__PURE__ */ jsxDEV4("td", {
881
+ /* @__PURE__ */ jsx4("td", {
882
882
  className: "px-4 py-3 align-top",
883
- children: /* @__PURE__ */ jsxDEV4("strong", {
883
+ children: /* @__PURE__ */ jsx4("strong", {
884
884
  children: "Enterprise orchestrators"
885
- }, undefined, false, undefined, this)
886
- }, undefined, false, undefined, this),
887
- /* @__PURE__ */ jsxDEV4("td", {
885
+ })
886
+ }),
887
+ /* @__PURE__ */ jsx4("td", {
888
888
  className: "px-4 py-3 align-top",
889
889
  children: "Redwood RunMyJobs"
890
- }, undefined, false, undefined, this),
891
- /* @__PURE__ */ jsxDEV4("td", {
890
+ }),
891
+ /* @__PURE__ */ jsx4("td", {
892
892
  className: "px-4 py-3 align-top",
893
893
  children: "Automate mission-critical workloads with self-service portals and SAP integrations"
894
- }, undefined, false, undefined, this),
895
- /* @__PURE__ */ jsxDEV4("td", {
894
+ }),
895
+ /* @__PURE__ */ jsx4("td", {
896
896
  className: "px-4 py-3 align-top",
897
897
  children: "Focus on IT workloads; not built for custom app creation or per-user customisation."
898
- }, undefined, false, undefined, this)
898
+ })
899
899
  ]
900
- }, undefined, true, undefined, this)
900
+ })
901
901
  ]
902
- }, undefined, true, undefined, this)
902
+ })
903
903
  ]
904
- }, undefined, true, undefined, this)
905
- }, undefined, false, undefined, this),
906
- /* @__PURE__ */ jsxDEV4("p", {
904
+ })
905
+ }),
906
+ /* @__PURE__ */ jsx4("p", {
907
907
  className: "text-muted-foreground",
908
908
  children: "Use the pages below to explore each group in detail and see how ContractSpec compares."
909
- }, undefined, false, undefined, this)
909
+ })
910
910
  ]
911
- }, undefined, true, undefined, this)
911
+ })
912
912
  ]
913
- }, undefined, true, undefined, this);
913
+ });
914
914
  }
915
915
 
916
916
  // src/components/docs/comparison/ComparisonWindmillPage.tsx
917
- import { jsxDEV as jsxDEV5 } from "react/jsx-dev-runtime";
917
+ import { jsx as jsx5, jsxs as jsxs5 } from "react/jsx-runtime";
918
918
  function ComparisonWindmillPage() {
919
- return /* @__PURE__ */ jsxDEV5("div", {
919
+ return /* @__PURE__ */ jsxs5("div", {
920
920
  className: "space-y-8",
921
921
  children: [
922
- /* @__PURE__ */ jsxDEV5("div", {
922
+ /* @__PURE__ */ jsxs5("div", {
923
923
  className: "space-y-4",
924
924
  children: [
925
- /* @__PURE__ */ jsxDEV5("h1", {
925
+ /* @__PURE__ */ jsx5("h1", {
926
926
  className: "text-4xl font-bold",
927
927
  children: "Windmill"
928
- }, undefined, false, undefined, this),
929
- /* @__PURE__ */ jsxDEV5("p", {
928
+ }),
929
+ /* @__PURE__ */ jsxs5("p", {
930
930
  className: "text-muted-foreground",
931
931
  children: [
932
932
  "Windmill is an open-source platform that turns",
933
933
  " ",
934
- /* @__PURE__ */ jsxDEV5("strong", {
934
+ /* @__PURE__ */ jsx5("strong", {
935
935
  children: "scripts"
936
- }, undefined, false, undefined, this),
936
+ }),
937
937
  " into endpoints, workflows and UIs. It seeks to remove boilerplate by generating interfaces and workflows around existing code"
938
938
  ]
939
- }, undefined, true, undefined, this)
939
+ })
940
940
  ]
941
- }, undefined, true, undefined, this),
942
- /* @__PURE__ */ jsxDEV5("div", {
941
+ }),
942
+ /* @__PURE__ */ jsxs5("div", {
943
943
  className: "space-y-4",
944
944
  children: [
945
- /* @__PURE__ */ jsxDEV5("h2", {
945
+ /* @__PURE__ */ jsx5("h2", {
946
946
  className: "text-2xl font-bold",
947
947
  children: "Platform features"
948
- }, undefined, false, undefined, this),
949
- /* @__PURE__ */ jsxDEV5("ul", {
948
+ }),
949
+ /* @__PURE__ */ jsxs5("ul", {
950
950
  className: "text-muted-foreground space-y-3",
951
951
  children: [
952
- /* @__PURE__ */ jsxDEV5("li", {
952
+ /* @__PURE__ */ jsxs5("li", {
953
953
  children: [
954
- /* @__PURE__ */ jsxDEV5("strong", {
954
+ /* @__PURE__ */ jsx5("strong", {
955
955
  children: "Script-driven model."
956
- }, undefined, false, undefined, this),
956
+ }),
957
957
  " Write scripts in TypeScript, Python, Go, PHP, Bash, C#, SQL or Rust; Windmill infers dependencies, creates lockfiles and JSON schemas, then serves minimal UIs automatically"
958
958
  ]
959
- }, undefined, true, undefined, this),
960
- /* @__PURE__ */ jsxDEV5("li", {
959
+ }),
960
+ /* @__PURE__ */ jsxs5("li", {
961
961
  children: [
962
- /* @__PURE__ */ jsxDEV5("strong", {
962
+ /* @__PURE__ */ jsx5("strong", {
963
963
  children: "Visual flow editor."
964
- }, undefined, false, undefined, this),
964
+ }),
965
965
  " Compose scripts into workflows with retries, error handling, loops, branching, suspending flows and approval steps"
966
966
  ]
967
- }, undefined, true, undefined, this),
968
- /* @__PURE__ */ jsxDEV5("li", {
967
+ }),
968
+ /* @__PURE__ */ jsxs5("li", {
969
969
  children: [
970
- /* @__PURE__ */ jsxDEV5("strong", {
970
+ /* @__PURE__ */ jsx5("strong", {
971
971
  children: "Low-code UI builder."
972
- }, undefined, false, undefined, this),
972
+ }),
973
973
  " Build dashboards and admin panels using inline scripts and trigger flows from the UI"
974
974
  ]
975
- }, undefined, true, undefined, this),
976
- /* @__PURE__ */ jsxDEV5("li", {
975
+ }),
976
+ /* @__PURE__ */ jsxs5("li", {
977
977
  children: [
978
- /* @__PURE__ */ jsxDEV5("strong", {
978
+ /* @__PURE__ */ jsx5("strong", {
979
979
  children: "Enterprise readiness."
980
- }, undefined, false, undefined, this),
980
+ }),
981
981
  " Features include RBAC permissions, secret management, OAuth handling, CLI/git sync, scheduling and webhooks"
982
982
  ]
983
- }, undefined, true, undefined, this),
984
- /* @__PURE__ */ jsxDEV5("li", {
983
+ }),
984
+ /* @__PURE__ */ jsxs5("li", {
985
985
  children: [
986
- /* @__PURE__ */ jsxDEV5("strong", {
986
+ /* @__PURE__ */ jsx5("strong", {
987
987
  children: "Use cases."
988
- }, undefined, false, undefined, this),
988
+ }),
989
989
  " Deploy scripts as webhooks or cron jobs; create \u201Capplicative workflows\u201D combining external APIs; build ETLs and interactive dashboards"
990
990
  ]
991
- }, undefined, true, undefined, this),
992
- /* @__PURE__ */ jsxDEV5("li", {
991
+ }),
992
+ /* @__PURE__ */ jsxs5("li", {
993
993
  children: [
994
- /* @__PURE__ */ jsxDEV5("strong", {
994
+ /* @__PURE__ */ jsx5("strong", {
995
995
  children: "Open source & self-hosting."
996
- }, undefined, false, undefined, this),
996
+ }),
997
997
  " Windmill emphasises an open-source codebase and self-hosting options"
998
998
  ]
999
- }, undefined, true, undefined, this)
999
+ })
1000
1000
  ]
1001
- }, undefined, true, undefined, this)
1001
+ })
1002
1002
  ]
1003
- }, undefined, true, undefined, this),
1004
- /* @__PURE__ */ jsxDEV5("div", {
1003
+ }),
1004
+ /* @__PURE__ */ jsxs5("div", {
1005
1005
  className: "space-y-4",
1006
1006
  children: [
1007
- /* @__PURE__ */ jsxDEV5("h2", {
1007
+ /* @__PURE__ */ jsx5("h2", {
1008
1008
  className: "text-2xl font-bold",
1009
1009
  children: "Comparison with ContractSpec"
1010
- }, undefined, false, undefined, this),
1011
- /* @__PURE__ */ jsxDEV5("div", {
1010
+ }),
1011
+ /* @__PURE__ */ jsx5("div", {
1012
1012
  className: "border-border/50 overflow-x-auto rounded-lg border",
1013
- children: /* @__PURE__ */ jsxDEV5("table", {
1013
+ children: /* @__PURE__ */ jsxs5("table", {
1014
1014
  className: "w-full text-left text-sm",
1015
1015
  children: [
1016
- /* @__PURE__ */ jsxDEV5("thead", {
1016
+ /* @__PURE__ */ jsx5("thead", {
1017
1017
  className: "bg-card/50",
1018
- children: /* @__PURE__ */ jsxDEV5("tr", {
1018
+ children: /* @__PURE__ */ jsxs5("tr", {
1019
1019
  className: "border-border/50 border-b",
1020
1020
  children: [
1021
- /* @__PURE__ */ jsxDEV5("th", {
1021
+ /* @__PURE__ */ jsx5("th", {
1022
1022
  className: "px-4 py-3 font-semibold",
1023
1023
  children: "Feature"
1024
- }, undefined, false, undefined, this),
1025
- /* @__PURE__ */ jsxDEV5("th", {
1024
+ }),
1025
+ /* @__PURE__ */ jsx5("th", {
1026
1026
  className: "px-4 py-3 font-semibold",
1027
1027
  children: "Windmill"
1028
- }, undefined, false, undefined, this),
1029
- /* @__PURE__ */ jsxDEV5("th", {
1028
+ }),
1029
+ /* @__PURE__ */ jsx5("th", {
1030
1030
  className: "px-4 py-3 font-semibold",
1031
1031
  children: "ContractSpec"
1032
- }, undefined, false, undefined, this)
1032
+ })
1033
1033
  ]
1034
- }, undefined, true, undefined, this)
1035
- }, undefined, false, undefined, this),
1036
- /* @__PURE__ */ jsxDEV5("tbody", {
1034
+ })
1035
+ }),
1036
+ /* @__PURE__ */ jsxs5("tbody", {
1037
1037
  className: "divide-border/50 divide-y",
1038
1038
  children: [
1039
- /* @__PURE__ */ jsxDEV5("tr", {
1039
+ /* @__PURE__ */ jsxs5("tr", {
1040
1040
  children: [
1041
- /* @__PURE__ */ jsxDEV5("td", {
1041
+ /* @__PURE__ */ jsx5("td", {
1042
1042
  className: "px-4 py-3 align-top",
1043
- children: /* @__PURE__ */ jsxDEV5("strong", {
1043
+ children: /* @__PURE__ */ jsx5("strong", {
1044
1044
  children: "Entry model"
1045
- }, undefined, false, undefined, this)
1046
- }, undefined, false, undefined, this),
1047
- /* @__PURE__ */ jsxDEV5("td", {
1045
+ })
1046
+ }),
1047
+ /* @__PURE__ */ jsx5("td", {
1048
1048
  className: "px-4 py-3 align-top",
1049
1049
  children: "Write scripts; platform auto-generates UI and workflows"
1050
- }, undefined, false, undefined, this),
1051
- /* @__PURE__ */ jsxDEV5("td", {
1050
+ }),
1051
+ /* @__PURE__ */ jsx5("td", {
1052
1052
  className: "px-4 py-3 align-top",
1053
1053
  children: "Define typed specs (Capabilities, DataViews, Workflows, Policies); compiler outputs back-end, front-end and forms."
1054
- }, undefined, false, undefined, this)
1054
+ })
1055
1055
  ]
1056
- }, undefined, true, undefined, this),
1057
- /* @__PURE__ */ jsxDEV5("tr", {
1056
+ }),
1057
+ /* @__PURE__ */ jsxs5("tr", {
1058
1058
  children: [
1059
- /* @__PURE__ */ jsxDEV5("td", {
1059
+ /* @__PURE__ */ jsx5("td", {
1060
1060
  className: "px-4 py-3 align-top",
1061
- children: /* @__PURE__ */ jsxDEV5("strong", {
1061
+ children: /* @__PURE__ */ jsx5("strong", {
1062
1062
  children: "Language support"
1063
- }, undefined, false, undefined, this)
1064
- }, undefined, false, undefined, this),
1065
- /* @__PURE__ */ jsxDEV5("td", {
1063
+ })
1064
+ }),
1065
+ /* @__PURE__ */ jsx5("td", {
1066
1066
  className: "px-4 py-3 align-top",
1067
1067
  children: "20+ languages via embedded runtimes"
1068
- }, undefined, false, undefined, this),
1069
- /* @__PURE__ */ jsxDEV5("td", {
1068
+ }),
1069
+ /* @__PURE__ */ jsx5("td", {
1070
1070
  className: "px-4 py-3 align-top",
1071
1071
  children: "Uses TypeScript/JavaScript for providers; supports other back-ends through capability providers."
1072
- }, undefined, false, undefined, this)
1072
+ })
1073
1073
  ]
1074
- }, undefined, true, undefined, this),
1075
- /* @__PURE__ */ jsxDEV5("tr", {
1074
+ }),
1075
+ /* @__PURE__ */ jsxs5("tr", {
1076
1076
  children: [
1077
- /* @__PURE__ */ jsxDEV5("td", {
1077
+ /* @__PURE__ */ jsx5("td", {
1078
1078
  className: "px-4 py-3 align-top",
1079
- children: /* @__PURE__ */ jsxDEV5("strong", {
1079
+ children: /* @__PURE__ */ jsx5("strong", {
1080
1080
  children: "UI generation"
1081
- }, undefined, false, undefined, this)
1082
- }, undefined, false, undefined, this),
1083
- /* @__PURE__ */ jsxDEV5("td", {
1081
+ })
1082
+ }),
1083
+ /* @__PURE__ */ jsx5("td", {
1084
1084
  className: "px-4 py-3 align-top",
1085
1085
  children: "Minimal UI forms from script parameters; low-code app builder"
1086
- }, undefined, false, undefined, this),
1087
- /* @__PURE__ */ jsxDEV5("td", {
1086
+ }),
1087
+ /* @__PURE__ */ jsx5("td", {
1088
1088
  className: "px-4 py-3 align-top",
1089
1089
  children: "Generates full web and mobile UIs from specs; user layouts can be customised via signed overlays."
1090
- }, undefined, false, undefined, this)
1090
+ })
1091
1091
  ]
1092
- }, undefined, true, undefined, this),
1093
- /* @__PURE__ */ jsxDEV5("tr", {
1092
+ }),
1093
+ /* @__PURE__ */ jsxs5("tr", {
1094
1094
  children: [
1095
- /* @__PURE__ */ jsxDEV5("td", {
1095
+ /* @__PURE__ */ jsx5("td", {
1096
1096
  className: "px-4 py-3 align-top",
1097
- children: /* @__PURE__ */ jsxDEV5("strong", {
1097
+ children: /* @__PURE__ */ jsx5("strong", {
1098
1098
  children: "Policy & personalization"
1099
- }, undefined, false, undefined, this)
1100
- }, undefined, false, undefined, this),
1101
- /* @__PURE__ */ jsxDEV5("td", {
1099
+ })
1100
+ }),
1101
+ /* @__PURE__ */ jsx5("td", {
1102
1102
  className: "px-4 py-3 align-top",
1103
1103
  children: "RBAC and secret management; no per-user overlay concept"
1104
- }, undefined, false, undefined, this),
1105
- /* @__PURE__ */ jsxDEV5("td", {
1104
+ }),
1105
+ /* @__PURE__ */ jsx5("td", {
1106
1106
  className: "px-4 py-3 align-top",
1107
1107
  children: "Built-in policy engine enforcing ABAC/PII on every render/mutate; overlays allow safe per-user customisation."
1108
- }, undefined, false, undefined, this)
1108
+ })
1109
1109
  ]
1110
- }, undefined, true, undefined, this),
1111
- /* @__PURE__ */ jsxDEV5("tr", {
1110
+ }),
1111
+ /* @__PURE__ */ jsxs5("tr", {
1112
1112
  children: [
1113
- /* @__PURE__ */ jsxDEV5("td", {
1113
+ /* @__PURE__ */ jsx5("td", {
1114
1114
  className: "px-4 py-3 align-top",
1115
- children: /* @__PURE__ */ jsxDEV5("strong", {
1115
+ children: /* @__PURE__ */ jsx5("strong", {
1116
1116
  children: "Open source"
1117
- }, undefined, false, undefined, this)
1118
- }, undefined, false, undefined, this),
1119
- /* @__PURE__ */ jsxDEV5("td", {
1117
+ })
1118
+ }),
1119
+ /* @__PURE__ */ jsx5("td", {
1120
1120
  className: "px-4 py-3 align-top",
1121
1121
  children: "Fully open source and self-hostable"
1122
- }, undefined, false, undefined, this),
1123
- /* @__PURE__ */ jsxDEV5("td", {
1122
+ }),
1123
+ /* @__PURE__ */ jsx5("td", {
1124
1124
  className: "px-4 py-3 align-top",
1125
1125
  children: "Closed-source core (SDK is open); offers hosted and on-prem modes."
1126
- }, undefined, false, undefined, this)
1126
+ })
1127
1127
  ]
1128
- }, undefined, true, undefined, this),
1129
- /* @__PURE__ */ jsxDEV5("tr", {
1128
+ }),
1129
+ /* @__PURE__ */ jsxs5("tr", {
1130
1130
  children: [
1131
- /* @__PURE__ */ jsxDEV5("td", {
1131
+ /* @__PURE__ */ jsx5("td", {
1132
1132
  className: "px-4 py-3 align-top",
1133
- children: /* @__PURE__ */ jsxDEV5("strong", {
1133
+ children: /* @__PURE__ */ jsx5("strong", {
1134
1134
  children: "Ideal for"
1135
- }, undefined, false, undefined, this)
1136
- }, undefined, false, undefined, this),
1137
- /* @__PURE__ */ jsxDEV5("td", {
1135
+ })
1136
+ }),
1137
+ /* @__PURE__ */ jsx5("td", {
1138
1138
  className: "px-4 py-3 align-top",
1139
1139
  children: "Teams wanting to expose scripts as APIs, workflows or dashboards without heavy infrastructure."
1140
- }, undefined, false, undefined, this),
1141
- /* @__PURE__ */ jsxDEV5("td", {
1140
+ }),
1141
+ /* @__PURE__ */ jsx5("td", {
1142
1142
  className: "px-4 py-3 align-top",
1143
1143
  children: "Teams needing a spec-driven platform that generates code and UI, enforces policies and lets non-technical users tailor the experience."
1144
- }, undefined, false, undefined, this)
1144
+ })
1145
1145
  ]
1146
- }, undefined, true, undefined, this)
1146
+ })
1147
1147
  ]
1148
- }, undefined, true, undefined, this)
1148
+ })
1149
1149
  ]
1150
- }, undefined, true, undefined, this)
1151
- }, undefined, false, undefined, this),
1152
- /* @__PURE__ */ jsxDEV5("p", {
1150
+ })
1151
+ }),
1152
+ /* @__PURE__ */ jsxs5("p", {
1153
1153
  className: "text-muted-foreground",
1154
1154
  children: [
1155
1155
  "Windmill excels at converting scripts into workflows and admin panels. ContractSpec takes a ",
1156
- /* @__PURE__ */ jsxDEV5("strong", {
1156
+ /* @__PURE__ */ jsx5("strong", {
1157
1157
  children: "spec-first"
1158
- }, undefined, false, undefined, this),
1158
+ }),
1159
1159
  " approach, generating the entire stack and enforcing policies, making it suitable for long-lived applications that must evolve safely."
1160
1160
  ]
1161
- }, undefined, true, undefined, this)
1161
+ })
1162
1162
  ]
1163
- }, undefined, true, undefined, this)
1163
+ })
1164
1164
  ]
1165
- }, undefined, true, undefined, this);
1165
+ });
1166
1166
  }
1167
1167
 
1168
1168
  // src/components/docs/comparison/ComparisonWorkflowEnginesPage.tsx
1169
- import { jsxDEV as jsxDEV6 } from "react/jsx-dev-runtime";
1169
+ import { jsx as jsx6, jsxs as jsxs6 } from "react/jsx-runtime";
1170
1170
  function ComparisonWorkflowEnginesPage() {
1171
- return /* @__PURE__ */ jsxDEV6("div", {
1171
+ return /* @__PURE__ */ jsxs6("div", {
1172
1172
  className: "space-y-8",
1173
1173
  children: [
1174
- /* @__PURE__ */ jsxDEV6("div", {
1174
+ /* @__PURE__ */ jsxs6("div", {
1175
1175
  className: "space-y-4",
1176
1176
  children: [
1177
- /* @__PURE__ */ jsxDEV6("h1", {
1177
+ /* @__PURE__ */ jsx6("h1", {
1178
1178
  className: "text-4xl font-bold",
1179
1179
  children: "Workflow engines"
1180
- }, undefined, false, undefined, this),
1181
- /* @__PURE__ */ jsxDEV6("p", {
1180
+ }),
1181
+ /* @__PURE__ */ jsx6("p", {
1182
1182
  className: "text-muted-foreground",
1183
1183
  children: "Workflow engines orchestrate long-running tasks and data pipelines. They provide retries, scheduling and visibility, but most expect developers to write code and do not generate user interfaces. Here\u2019s how the major engines compare to ContractSpec."
1184
- }, undefined, false, undefined, this)
1184
+ })
1185
1185
  ]
1186
- }, undefined, true, undefined, this),
1187
- /* @__PURE__ */ jsxDEV6("div", {
1186
+ }),
1187
+ /* @__PURE__ */ jsxs6("div", {
1188
1188
  className: "space-y-4",
1189
1189
  children: [
1190
- /* @__PURE__ */ jsxDEV6("h2", {
1190
+ /* @__PURE__ */ jsx6("h2", {
1191
1191
  className: "text-2xl font-bold",
1192
1192
  children: "Key differences summary"
1193
- }, undefined, false, undefined, this),
1194
- /* @__PURE__ */ jsxDEV6("div", {
1193
+ }),
1194
+ /* @__PURE__ */ jsx6("div", {
1195
1195
  className: "border-border/50 overflow-x-auto rounded-lg border",
1196
- children: /* @__PURE__ */ jsxDEV6("table", {
1196
+ children: /* @__PURE__ */ jsxs6("table", {
1197
1197
  className: "w-full text-left text-sm",
1198
1198
  children: [
1199
- /* @__PURE__ */ jsxDEV6("thead", {
1199
+ /* @__PURE__ */ jsx6("thead", {
1200
1200
  className: "bg-card/50",
1201
- children: /* @__PURE__ */ jsxDEV6("tr", {
1201
+ children: /* @__PURE__ */ jsxs6("tr", {
1202
1202
  className: "border-border/50 border-b",
1203
1203
  children: [
1204
- /* @__PURE__ */ jsxDEV6("th", {
1204
+ /* @__PURE__ */ jsx6("th", {
1205
1205
  className: "px-4 py-3 font-semibold",
1206
1206
  children: "Engine"
1207
- }, undefined, false, undefined, this),
1208
- /* @__PURE__ */ jsxDEV6("th", {
1207
+ }),
1208
+ /* @__PURE__ */ jsx6("th", {
1209
1209
  className: "px-4 py-3 font-semibold",
1210
1210
  children: "Core strengths"
1211
- }, undefined, false, undefined, this),
1212
- /* @__PURE__ */ jsxDEV6("th", {
1211
+ }),
1212
+ /* @__PURE__ */ jsx6("th", {
1213
1213
  className: "px-4 py-3 font-semibold",
1214
1214
  children: "UI generation?"
1215
- }, undefined, false, undefined, this),
1216
- /* @__PURE__ */ jsxDEV6("th", {
1215
+ }),
1216
+ /* @__PURE__ */ jsx6("th", {
1217
1217
  className: "px-4 py-3 font-semibold",
1218
1218
  children: "Policy/PII enforcement?"
1219
- }, undefined, false, undefined, this),
1220
- /* @__PURE__ */ jsxDEV6("th", {
1219
+ }),
1220
+ /* @__PURE__ */ jsx6("th", {
1221
1221
  className: "px-4 py-3 font-semibold",
1222
1222
  children: "Self-host?"
1223
- }, undefined, false, undefined, this),
1224
- /* @__PURE__ */ jsxDEV6("th", {
1223
+ }),
1224
+ /* @__PURE__ */ jsx6("th", {
1225
1225
  className: "px-4 py-3 font-semibold",
1226
1226
  children: "Primary use"
1227
- }, undefined, false, undefined, this)
1227
+ })
1228
1228
  ]
1229
- }, undefined, true, undefined, this)
1230
- }, undefined, false, undefined, this),
1231
- /* @__PURE__ */ jsxDEV6("tbody", {
1229
+ })
1230
+ }),
1231
+ /* @__PURE__ */ jsxs6("tbody", {
1232
1232
  className: "divide-border/50 divide-y",
1233
1233
  children: [
1234
- /* @__PURE__ */ jsxDEV6("tr", {
1234
+ /* @__PURE__ */ jsxs6("tr", {
1235
1235
  children: [
1236
- /* @__PURE__ */ jsxDEV6("td", {
1236
+ /* @__PURE__ */ jsx6("td", {
1237
1237
  className: "px-4 py-3 align-top",
1238
- children: /* @__PURE__ */ jsxDEV6("strong", {
1238
+ children: /* @__PURE__ */ jsx6("strong", {
1239
1239
  children: "Prefect"
1240
- }, undefined, false, undefined, this)
1241
- }, undefined, false, undefined, this),
1242
- /* @__PURE__ */ jsxDEV6("td", {
1240
+ })
1241
+ }),
1242
+ /* @__PURE__ */ jsx6("td", {
1243
1243
  className: "px-4 py-3 align-top",
1244
1244
  children: "Python-native; dynamic DAGs adapt to change; annotate code without rewriting; strong observability and audit logs"
1245
- }, undefined, false, undefined, this),
1246
- /* @__PURE__ */ jsxDEV6("td", {
1245
+ }),
1246
+ /* @__PURE__ */ jsx6("td", {
1247
1247
  className: "px-4 py-3 align-top",
1248
1248
  children: "No"
1249
- }, undefined, false, undefined, this),
1250
- /* @__PURE__ */ jsxDEV6("td", {
1249
+ }),
1250
+ /* @__PURE__ */ jsx6("td", {
1251
1251
  className: "px-4 py-3 align-top",
1252
1252
  children: "No"
1253
- }, undefined, false, undefined, this),
1254
- /* @__PURE__ */ jsxDEV6("td", {
1253
+ }),
1254
+ /* @__PURE__ */ jsx6("td", {
1255
1255
  className: "px-4 py-3 align-top",
1256
1256
  children: "Yes"
1257
- }, undefined, false, undefined, this),
1258
- /* @__PURE__ */ jsxDEV6("td", {
1257
+ }),
1258
+ /* @__PURE__ */ jsx6("td", {
1259
1259
  className: "px-4 py-3 align-top",
1260
1260
  children: "Data pipelines and dynamic workflows."
1261
- }, undefined, false, undefined, this)
1261
+ })
1262
1262
  ]
1263
- }, undefined, true, undefined, this),
1264
- /* @__PURE__ */ jsxDEV6("tr", {
1263
+ }),
1264
+ /* @__PURE__ */ jsxs6("tr", {
1265
1265
  children: [
1266
- /* @__PURE__ */ jsxDEV6("td", {
1266
+ /* @__PURE__ */ jsx6("td", {
1267
1267
  className: "px-4 py-3 align-top",
1268
- children: /* @__PURE__ */ jsxDEV6("strong", {
1268
+ children: /* @__PURE__ */ jsx6("strong", {
1269
1269
  children: "Kestra"
1270
- }, undefined, false, undefined, this)
1271
- }, undefined, false, undefined, this),
1272
- /* @__PURE__ */ jsxDEV6("td", {
1270
+ })
1271
+ }),
1272
+ /* @__PURE__ */ jsx6("td", {
1273
1273
  className: "px-4 py-3 align-top",
1274
1274
  children: "Declarative YAML; event-driven triggers; mix of code and no-code; write logic in Python/R/Java/Julia/Ruby; deploy anywhere"
1275
- }, undefined, false, undefined, this),
1276
- /* @__PURE__ */ jsxDEV6("td", {
1275
+ }),
1276
+ /* @__PURE__ */ jsx6("td", {
1277
1277
  className: "px-4 py-3 align-top",
1278
1278
  children: "No"
1279
- }, undefined, false, undefined, this),
1280
- /* @__PURE__ */ jsxDEV6("td", {
1279
+ }),
1280
+ /* @__PURE__ */ jsx6("td", {
1281
1281
  className: "px-4 py-3 align-top",
1282
1282
  children: "No"
1283
- }, undefined, false, undefined, this),
1284
- /* @__PURE__ */ jsxDEV6("td", {
1283
+ }),
1284
+ /* @__PURE__ */ jsx6("td", {
1285
1285
  className: "px-4 py-3 align-top",
1286
1286
  children: "Yes"
1287
- }, undefined, false, undefined, this),
1288
- /* @__PURE__ */ jsxDEV6("td", {
1287
+ }),
1288
+ /* @__PURE__ */ jsx6("td", {
1289
1289
  className: "px-4 py-3 align-top",
1290
1290
  children: "Data pipelines and hybrid orchestration."
1291
- }, undefined, false, undefined, this)
1291
+ })
1292
1292
  ]
1293
- }, undefined, true, undefined, this),
1294
- /* @__PURE__ */ jsxDEV6("tr", {
1293
+ }),
1294
+ /* @__PURE__ */ jsxs6("tr", {
1295
1295
  children: [
1296
- /* @__PURE__ */ jsxDEV6("td", {
1296
+ /* @__PURE__ */ jsx6("td", {
1297
1297
  className: "px-4 py-3 align-top",
1298
- children: /* @__PURE__ */ jsxDEV6("strong", {
1298
+ children: /* @__PURE__ */ jsx6("strong", {
1299
1299
  children: "Temporal"
1300
- }, undefined, false, undefined, this)
1301
- }, undefined, false, undefined, this),
1302
- /* @__PURE__ */ jsxDEV6("td", {
1300
+ })
1301
+ }),
1302
+ /* @__PURE__ */ jsx6("td", {
1303
1303
  className: "px-4 py-3 align-top",
1304
1304
  children: "Durable execution; workflows never lose state; multi-language SDKs; automatic retries"
1305
- }, undefined, false, undefined, this),
1306
- /* @__PURE__ */ jsxDEV6("td", {
1305
+ }),
1306
+ /* @__PURE__ */ jsx6("td", {
1307
1307
  className: "px-4 py-3 align-top",
1308
1308
  children: "No"
1309
- }, undefined, false, undefined, this),
1310
- /* @__PURE__ */ jsxDEV6("td", {
1309
+ }),
1310
+ /* @__PURE__ */ jsx6("td", {
1311
1311
  className: "px-4 py-3 align-top",
1312
1312
  children: "No"
1313
- }, undefined, false, undefined, this),
1314
- /* @__PURE__ */ jsxDEV6("td", {
1313
+ }),
1314
+ /* @__PURE__ */ jsx6("td", {
1315
1315
  className: "px-4 py-3 align-top",
1316
1316
  children: "Yes"
1317
- }, undefined, false, undefined, this),
1318
- /* @__PURE__ */ jsxDEV6("td", {
1317
+ }),
1318
+ /* @__PURE__ */ jsx6("td", {
1319
1319
  className: "px-4 py-3 align-top",
1320
1320
  children: "Durable microservice and business workflows."
1321
- }, undefined, false, undefined, this)
1321
+ })
1322
1322
  ]
1323
- }, undefined, true, undefined, this),
1324
- /* @__PURE__ */ jsxDEV6("tr", {
1323
+ }),
1324
+ /* @__PURE__ */ jsxs6("tr", {
1325
1325
  children: [
1326
- /* @__PURE__ */ jsxDEV6("td", {
1326
+ /* @__PURE__ */ jsx6("td", {
1327
1327
  className: "px-4 py-3 align-top",
1328
- children: /* @__PURE__ */ jsxDEV6("strong", {
1328
+ children: /* @__PURE__ */ jsx6("strong", {
1329
1329
  children: "Airflow"
1330
- }, undefined, false, undefined, this)
1331
- }, undefined, false, undefined, this),
1332
- /* @__PURE__ */ jsxDEV6("td", {
1330
+ })
1331
+ }),
1332
+ /* @__PURE__ */ jsx6("td", {
1333
1333
  className: "px-4 py-3 align-top",
1334
1334
  children: "Open-source; define workflows as Python code; schedule and monitor via UI; extensible via custom operators"
1335
- }, undefined, false, undefined, this),
1336
- /* @__PURE__ */ jsxDEV6("td", {
1335
+ }),
1336
+ /* @__PURE__ */ jsx6("td", {
1337
1337
  className: "px-4 py-3 align-top",
1338
1338
  children: "No"
1339
- }, undefined, false, undefined, this),
1340
- /* @__PURE__ */ jsxDEV6("td", {
1339
+ }),
1340
+ /* @__PURE__ */ jsx6("td", {
1341
1341
  className: "px-4 py-3 align-top",
1342
1342
  children: "No"
1343
- }, undefined, false, undefined, this),
1344
- /* @__PURE__ */ jsxDEV6("td", {
1343
+ }),
1344
+ /* @__PURE__ */ jsx6("td", {
1345
1345
  className: "px-4 py-3 align-top",
1346
1346
  children: "Yes"
1347
- }, undefined, false, undefined, this),
1348
- /* @__PURE__ */ jsxDEV6("td", {
1347
+ }),
1348
+ /* @__PURE__ */ jsx6("td", {
1349
1349
  className: "px-4 py-3 align-top",
1350
1350
  children: "Data ETL pipelines."
1351
- }, undefined, false, undefined, this)
1351
+ })
1352
1352
  ]
1353
- }, undefined, true, undefined, this),
1354
- /* @__PURE__ */ jsxDEV6("tr", {
1353
+ }),
1354
+ /* @__PURE__ */ jsxs6("tr", {
1355
1355
  children: [
1356
- /* @__PURE__ */ jsxDEV6("td", {
1356
+ /* @__PURE__ */ jsx6("td", {
1357
1357
  className: "px-4 py-3 align-top",
1358
- children: /* @__PURE__ */ jsxDEV6("strong", {
1358
+ children: /* @__PURE__ */ jsx6("strong", {
1359
1359
  children: "Dagster"
1360
- }, undefined, false, undefined, this)
1361
- }, undefined, false, undefined, this),
1362
- /* @__PURE__ */ jsxDEV6("td", {
1360
+ })
1361
+ }),
1362
+ /* @__PURE__ */ jsx6("td", {
1363
1363
  className: "px-4 py-3 align-top",
1364
1364
  children: "Data-asset model; local testing and reusable components; built-in data quality and catalog; orchestrates AI/data pipelines across multiple tools"
1365
- }, undefined, false, undefined, this),
1366
- /* @__PURE__ */ jsxDEV6("td", {
1365
+ }),
1366
+ /* @__PURE__ */ jsx6("td", {
1367
1367
  className: "px-4 py-3 align-top",
1368
1368
  children: "No"
1369
- }, undefined, false, undefined, this),
1370
- /* @__PURE__ */ jsxDEV6("td", {
1369
+ }),
1370
+ /* @__PURE__ */ jsx6("td", {
1371
1371
  className: "px-4 py-3 align-top",
1372
1372
  children: "No"
1373
- }, undefined, false, undefined, this),
1374
- /* @__PURE__ */ jsxDEV6("td", {
1373
+ }),
1374
+ /* @__PURE__ */ jsx6("td", {
1375
1375
  className: "px-4 py-3 align-top",
1376
1376
  children: "Yes"
1377
- }, undefined, false, undefined, this),
1378
- /* @__PURE__ */ jsxDEV6("td", {
1377
+ }),
1378
+ /* @__PURE__ */ jsx6("td", {
1379
1379
  className: "px-4 py-3 align-top",
1380
1380
  children: "Data/AI pipelines with strong observability."
1381
- }, undefined, false, undefined, this)
1381
+ })
1382
1382
  ]
1383
- }, undefined, true, undefined, this),
1384
- /* @__PURE__ */ jsxDEV6("tr", {
1383
+ }),
1384
+ /* @__PURE__ */ jsxs6("tr", {
1385
1385
  children: [
1386
- /* @__PURE__ */ jsxDEV6("td", {
1386
+ /* @__PURE__ */ jsx6("td", {
1387
1387
  className: "px-4 py-3 align-top",
1388
- children: /* @__PURE__ */ jsxDEV6("strong", {
1388
+ children: /* @__PURE__ */ jsx6("strong", {
1389
1389
  children: "Hatchet"
1390
- }, undefined, false, undefined, this)
1391
- }, undefined, false, undefined, this),
1392
- /* @__PURE__ */ jsxDEV6("td", {
1390
+ })
1391
+ }),
1392
+ /* @__PURE__ */ jsx6("td", {
1393
1393
  className: "px-4 py-3 align-top",
1394
1394
  children: "Modern engine focused on performance and durability; tasks and workflows as code; durable functions with guardrails and retries"
1395
- }, undefined, false, undefined, this),
1396
- /* @__PURE__ */ jsxDEV6("td", {
1395
+ }),
1396
+ /* @__PURE__ */ jsx6("td", {
1397
1397
  className: "px-4 py-3 align-top",
1398
1398
  children: "No"
1399
- }, undefined, false, undefined, this),
1400
- /* @__PURE__ */ jsxDEV6("td", {
1399
+ }),
1400
+ /* @__PURE__ */ jsx6("td", {
1401
1401
  className: "px-4 py-3 align-top",
1402
1402
  children: "No"
1403
- }, undefined, false, undefined, this),
1404
- /* @__PURE__ */ jsxDEV6("td", {
1403
+ }),
1404
+ /* @__PURE__ */ jsx6("td", {
1405
1405
  className: "px-4 py-3 align-top",
1406
1406
  children: "Yes"
1407
- }, undefined, false, undefined, this),
1408
- /* @__PURE__ */ jsxDEV6("td", {
1407
+ }),
1408
+ /* @__PURE__ */ jsx6("td", {
1409
1409
  className: "px-4 py-3 align-top",
1410
1410
  children: "High-throughput background jobs and microservices."
1411
- }, undefined, false, undefined, this)
1411
+ })
1412
1412
  ]
1413
- }, undefined, true, undefined, this),
1414
- /* @__PURE__ */ jsxDEV6("tr", {
1413
+ }),
1414
+ /* @__PURE__ */ jsxs6("tr", {
1415
1415
  children: [
1416
- /* @__PURE__ */ jsxDEV6("td", {
1416
+ /* @__PURE__ */ jsx6("td", {
1417
1417
  className: "px-4 py-3 align-top",
1418
- children: /* @__PURE__ */ jsxDEV6("strong", {
1418
+ children: /* @__PURE__ */ jsx6("strong", {
1419
1419
  children: "Windmill"
1420
- }, undefined, false, undefined, this)
1421
- }, undefined, false, undefined, this),
1422
- /* @__PURE__ */ jsxDEV6("td", {
1420
+ })
1421
+ }),
1422
+ /* @__PURE__ */ jsx6("td", {
1423
1423
  className: "px-4 py-3 align-top",
1424
1424
  children: "Multi-language scripts; auto-generates UI; integrated flow editor"
1425
- }, undefined, false, undefined, this),
1426
- /* @__PURE__ */ jsxDEV6("td", {
1425
+ }),
1426
+ /* @__PURE__ */ jsx6("td", {
1427
1427
  className: "px-4 py-3 align-top",
1428
1428
  children: "Yes (basic)"
1429
- }, undefined, false, undefined, this),
1430
- /* @__PURE__ */ jsxDEV6("td", {
1429
+ }),
1430
+ /* @__PURE__ */ jsx6("td", {
1431
1431
  className: "px-4 py-3 align-top",
1432
1432
  children: "RBAC & secrets only"
1433
- }, undefined, false, undefined, this),
1434
- /* @__PURE__ */ jsxDEV6("td", {
1433
+ }),
1434
+ /* @__PURE__ */ jsx6("td", {
1435
1435
  className: "px-4 py-3 align-top",
1436
1436
  children: "Yes"
1437
- }, undefined, false, undefined, this),
1438
- /* @__PURE__ */ jsxDEV6("td", {
1437
+ }),
1438
+ /* @__PURE__ */ jsx6("td", {
1439
1439
  className: "px-4 py-3 align-top",
1440
1440
  children: "Scripts into workflows and dashboards."
1441
- }, undefined, false, undefined, this)
1441
+ })
1442
1442
  ]
1443
- }, undefined, true, undefined, this)
1443
+ })
1444
1444
  ]
1445
- }, undefined, true, undefined, this)
1445
+ })
1446
1446
  ]
1447
- }, undefined, true, undefined, this)
1448
- }, undefined, false, undefined, this)
1447
+ })
1448
+ })
1449
1449
  ]
1450
- }, undefined, true, undefined, this),
1451
- /* @__PURE__ */ jsxDEV6("div", {
1450
+ }),
1451
+ /* @__PURE__ */ jsxs6("div", {
1452
1452
  className: "space-y-3",
1453
1453
  children: [
1454
- /* @__PURE__ */ jsxDEV6("h2", {
1454
+ /* @__PURE__ */ jsx6("h2", {
1455
1455
  className: "text-2xl font-bold",
1456
1456
  children: "Why ContractSpec differs"
1457
- }, undefined, false, undefined, this),
1458
- /* @__PURE__ */ jsxDEV6("ul", {
1457
+ }),
1458
+ /* @__PURE__ */ jsxs6("ul", {
1459
1459
  className: "text-muted-foreground space-y-2",
1460
1460
  children: [
1461
- /* @__PURE__ */ jsxDEV6("li", {
1461
+ /* @__PURE__ */ jsxs6("li", {
1462
1462
  children: [
1463
- /* @__PURE__ */ jsxDEV6("strong", {
1463
+ /* @__PURE__ */ jsx6("strong", {
1464
1464
  children: "Spec-first generation"
1465
- }, undefined, false, undefined, this),
1465
+ }),
1466
1466
  " \u2013 Instead of writing code, you define typed specs for capabilities, data views and workflows; the compiler outputs both back-end and front-end."
1467
1467
  ]
1468
- }, undefined, true, undefined, this),
1469
- /* @__PURE__ */ jsxDEV6("li", {
1468
+ }),
1469
+ /* @__PURE__ */ jsxs6("li", {
1470
1470
  children: [
1471
- /* @__PURE__ */ jsxDEV6("strong", {
1471
+ /* @__PURE__ */ jsx6("strong", {
1472
1472
  children: "Policy engine"
1473
- }, undefined, false, undefined, this),
1473
+ }),
1474
1474
  " \u2013 Every render and mutate passes through an ABAC/PII policy decision point."
1475
1475
  ]
1476
- }, undefined, true, undefined, this),
1477
- /* @__PURE__ */ jsxDEV6("li", {
1476
+ }),
1477
+ /* @__PURE__ */ jsxs6("li", {
1478
1478
  children: [
1479
- /* @__PURE__ */ jsxDEV6("strong", {
1479
+ /* @__PURE__ */ jsx6("strong", {
1480
1480
  children: "Personalisation"
1481
- }, undefined, false, undefined, this),
1481
+ }),
1482
1482
  " \u2013 Signed OverlaySpecs allow tenant/user-specific UI changes without touching code."
1483
1483
  ]
1484
- }, undefined, true, undefined, this),
1485
- /* @__PURE__ */ jsxDEV6("li", {
1484
+ }),
1485
+ /* @__PURE__ */ jsxs6("li", {
1486
1486
  children: [
1487
- /* @__PURE__ */ jsxDEV6("strong", {
1487
+ /* @__PURE__ */ jsx6("strong", {
1488
1488
  children: "Unified runtime"
1489
- }, undefined, false, undefined, this),
1489
+ }),
1490
1490
  " \u2013 React/React-Native rendering ensures consistent experiences across web and mobile."
1491
1491
  ]
1492
- }, undefined, true, undefined, this)
1492
+ })
1493
1493
  ]
1494
- }, undefined, true, undefined, this),
1495
- /* @__PURE__ */ jsxDEV6("p", {
1494
+ }),
1495
+ /* @__PURE__ */ jsx6("p", {
1496
1496
  className: "text-muted-foreground",
1497
1497
  children: "Workflow engines are excellent for orchestrating back-end tasks. ContractSpec builds on this by serving complete applications with runtime policy enforcement and user personalisation via TypeScript specs."
1498
- }, undefined, false, undefined, this)
1498
+ })
1499
1499
  ]
1500
- }, undefined, true, undefined, this)
1500
+ })
1501
1501
  ]
1502
- }, undefined, true, undefined, this);
1502
+ });
1503
1503
  }
1504
1504
  export {
1505
1505
  ComparisonWorkflowEnginesPage,