@eventcatalog/core 4.12.3 → 5.0.0-beta.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (267) hide show
  1. package/LICENSE +226 -95
  2. package/NOTICE +30 -0
  3. package/README.md +3 -2
  4. package/dist/analytics/analytics.cjs +2 -1
  5. package/dist/analytics/analytics.js +2 -2
  6. package/dist/analytics/log-build.cjs +44 -16
  7. package/dist/analytics/log-build.d.cts +6 -5
  8. package/dist/analytics/log-build.d.ts +6 -5
  9. package/dist/analytics/log-build.js +4 -3
  10. package/dist/{chunk-U4YJSTGV.js → chunk-AYNZXUB5.js} +2 -10
  11. package/dist/{chunk-5BPN6QEC.js → chunk-K2ACDO7Y.js} +1 -1
  12. package/dist/{chunk-ZYTCBNB3.js → chunk-KYJZJLBD.js} +2 -1
  13. package/dist/{chunk-TV3YAWKQ.js → chunk-Q6SD5SNQ.js} +1 -1
  14. package/dist/{chunk-HPC6KUDQ.js → chunk-S2QGT7ZF.js} +1 -1
  15. package/dist/chunk-TQLRG35T.js +203 -0
  16. package/dist/{chunk-M577VUOX.js → chunk-UDS3SYLZ.js} +13 -16
  17. package/dist/constants.cjs +1 -1
  18. package/dist/constants.js +1 -1
  19. package/dist/eventcatalog.cjs +408 -291
  20. package/dist/eventcatalog.config.d.cts +2 -3
  21. package/dist/eventcatalog.config.d.ts +2 -3
  22. package/dist/eventcatalog.js +35 -98
  23. package/dist/federation/content-cache.d.cts +0 -5
  24. package/dist/federation/content-cache.d.ts +0 -5
  25. package/dist/federation/diagnostics.d.cts +0 -5
  26. package/dist/federation/diagnostics.d.ts +0 -5
  27. package/dist/federation/federate.cjs +0 -9
  28. package/dist/federation/federate.d.cts +0 -5
  29. package/dist/federation/federate.d.ts +0 -5
  30. package/dist/federation/federate.js +4 -5
  31. package/dist/federation/filesystem-source-provider.d.cts +0 -5
  32. package/dist/federation/filesystem-source-provider.d.ts +0 -5
  33. package/dist/federation/github-source-provider.d.cts +0 -5
  34. package/dist/federation/github-source-provider.d.ts +0 -5
  35. package/dist/federation/output-transaction.d.cts +0 -4
  36. package/dist/federation/output-transaction.d.ts +0 -4
  37. package/dist/federation/public-assets.d.cts +0 -5
  38. package/dist/federation/public-assets.d.ts +0 -5
  39. package/dist/federation/source-provider.d.cts +0 -5
  40. package/dist/federation/source-provider.d.ts +0 -5
  41. package/dist/federation/types.d.cts +0 -5
  42. package/dist/federation/types.d.ts +0 -5
  43. package/dist/generate.cjs +1 -1
  44. package/dist/generate.js +3 -3
  45. package/dist/license-C1y-56bb.d.cts +23 -0
  46. package/dist/license-C1y-56bb.d.ts +23 -0
  47. package/dist/runtime-dependencies/@eventcatalog__visualiser__layout.mjs +3 -0
  48. package/dist/runtime-dependencies/@modelcontextprotocol__ext-apps.mjs +3 -0
  49. package/dist/runtime-dependencies/@modelcontextprotocol__ext-apps__react.mjs +3 -0
  50. package/dist/runtime-dependencies/@modelcontextprotocol__ext-apps__server.mjs +3 -0
  51. package/dist/runtime-dependencies/@modelcontextprotocol__sdk__types.js.mjs +3 -0
  52. package/dist/runtime-dependencies/manifest.json +12 -1
  53. package/dist/runtime-dependencies/react-syntax-highlighter__dist__esm__languages__prism__graphql.mjs +3 -0
  54. package/dist/runtime-dependencies/react-syntax-highlighter__dist__esm__languages__prism__json.mjs +3 -0
  55. package/dist/runtime-dependencies/react-syntax-highlighter__dist__esm__languages__prism__markup.mjs +3 -0
  56. package/dist/runtime-dependencies/react-syntax-highlighter__dist__esm__languages__prism__protobuf.mjs +3 -0
  57. package/dist/runtime-dependencies/react-syntax-highlighter__dist__esm__languages__prism__yaml.mjs +3 -0
  58. package/dist/runtime-dependencies/react-syntax-highlighter__dist__esm__styles__prism__one-dark.mjs +3 -0
  59. package/dist/runtime-dependencies/react-syntax-highlighter__dist__esm__styles__prism__one-light.mjs +3 -0
  60. package/dist/utils/cli-logger.cjs +1 -1
  61. package/dist/utils/cli-logger.js +2 -2
  62. package/dist/utils/license-status.cjs +240 -0
  63. package/dist/utils/license-status.d.cts +28 -0
  64. package/dist/utils/license-status.d.ts +28 -0
  65. package/dist/utils/license-status.js +12 -0
  66. package/eventcatalog/astro.config.mjs +1 -1
  67. package/eventcatalog/integrations/eventcatalog-runtime.mjs +1 -1
  68. package/eventcatalog/src/components/ChatPanel/ChatPanel.tsx +29 -19
  69. package/eventcatalog/src/components/ChatPanel/OfflineReply.tsx +74 -0
  70. package/eventcatalog/src/components/FieldsExplorer/FieldFilters.tsx +24 -28
  71. package/eventcatalog/src/components/FieldsExplorer/FieldNodeGraph.tsx +16 -11
  72. package/eventcatalog/src/components/FieldsExplorer/FieldsExplorer.tsx +4 -218
  73. package/eventcatalog/src/components/FieldsExplorer/FieldsTable.tsx +27 -36
  74. package/eventcatalog/src/components/Header.astro +43 -58
  75. package/eventcatalog/src/components/Lists/PillListFlat.styles.css +17 -17
  76. package/eventcatalog/src/components/MDX/EntityMap/EntityMap.astro +1 -1
  77. package/eventcatalog/src/components/MDX/Flow/Flow.astro +4 -0
  78. package/eventcatalog/src/components/MDX/NodeGraph/AstroNodeGraph.tsx +14 -0
  79. package/eventcatalog/src/components/MDX/NodeGraph/NodeGraph.astro +49 -18
  80. package/eventcatalog/src/components/MDX/RemoteFile.astro +2 -24
  81. package/eventcatalog/src/components/SchemaExplorer/ApiAccessSection.tsx +59 -93
  82. package/eventcatalog/src/components/SchemaExplorer/ApiContentViewer.tsx +1 -32
  83. package/eventcatalog/src/components/SchemaExplorer/DiffViewer.tsx +20 -67
  84. package/eventcatalog/src/components/SchemaExplorer/SchemaContentViewer.tsx +2 -11
  85. package/eventcatalog/src/components/SchemaExplorer/SchemaDetailsPanel.tsx +11 -60
  86. package/eventcatalog/src/components/SchemaExplorer/SchemaExplorer.tsx +1 -3
  87. package/eventcatalog/src/components/SchemaExplorer/SchemaPageViewer.tsx +0 -3
  88. package/eventcatalog/src/components/SchemaExplorer/VersionHistoryModal.tsx +2 -9
  89. package/eventcatalog/src/components/SchemaExplorer/parse-schema.ts +46 -0
  90. package/eventcatalog/src/components/SchemaExplorer/utils.ts +11 -0
  91. package/eventcatalog/src/components/Settings/AssistantSettingsForm.tsx +2 -9
  92. package/eventcatalog/src/components/Settings/LicenseSettings.tsx +288 -0
  93. package/eventcatalog/src/components/Settings/LlmAccessSettingsForm.tsx +3 -19
  94. package/eventcatalog/src/components/Settings/McpSettingsForm.tsx +85 -30
  95. package/eventcatalog/src/components/Settings/SettingsShared.tsx +7 -75
  96. package/eventcatalog/src/components/SideNav/CustomDocsNav.astro +2 -2
  97. package/eventcatalog/src/components/TrialBadge.astro +82 -0
  98. package/eventcatalog/src/content.config.ts +9 -96
  99. package/eventcatalog/src/{enterprise → features}/ai/chat-api.ts +22 -34
  100. package/eventcatalog/src/{enterprise → features}/analytics/adapters/ga4.ts +0 -5
  101. package/eventcatalog/src/{enterprise → features}/analytics/adapters/gtm.ts +0 -5
  102. package/eventcatalog/src/{enterprise → features}/analytics/adapters/posthog.ts +0 -5
  103. package/eventcatalog/src/{enterprise → features}/analytics/components/AnalyticsHead.astro +2 -4
  104. package/eventcatalog/src/{enterprise → features}/analytics/components/AnalyticsTracker.astro +2 -4
  105. package/eventcatalog/src/{enterprise → features}/analytics/tracker.ts +0 -5
  106. package/eventcatalog/src/{enterprise → features}/api/catalog.ts +0 -5
  107. package/eventcatalog/src/{enterprise → features}/auth/[...auth].ts +0 -5
  108. package/eventcatalog/src/{enterprise → features}/auth/middleware/middleware-auth.ts +0 -5
  109. package/eventcatalog/src/{enterprise → features}/auth/middleware/middleware.ts +0 -5
  110. package/eventcatalog/src/{enterprise → features}/collections/custom-pages.ts +0 -5
  111. package/eventcatalog/src/{enterprise → features}/collections/index.ts +0 -5
  112. package/eventcatalog/src/{enterprise → features}/collections/resource-docs.ts +0 -5
  113. package/eventcatalog/src/{enterprise → features}/custom-documentation/collection.ts +0 -5
  114. package/eventcatalog/src/features/custom-documentation/components/CustomDocsNav/CustomDocsNav.astro +9 -0
  115. package/eventcatalog/src/{enterprise → features}/custom-documentation/components/CustomDocsNav/CustomDocsNavWrapper.tsx +0 -5
  116. package/eventcatalog/src/{enterprise → features}/custom-documentation/components/CustomDocsNav/components/NestedItem.tsx +1 -6
  117. package/eventcatalog/src/{enterprise → features}/custom-documentation/components/CustomDocsNav/components/NoResultsFound.tsx +0 -5
  118. package/eventcatalog/src/{enterprise → features}/custom-documentation/components/CustomDocsNav/index.tsx +1 -6
  119. package/eventcatalog/src/{enterprise → features}/custom-documentation/components/CustomDocsNav/types.ts +0 -5
  120. package/eventcatalog/src/{enterprise/custom-documentation/pages/docs/custom/index.astro → features/custom-documentation/components/CustomDocumentationPage.astro} +5 -5
  121. package/eventcatalog/src/{enterprise → features}/custom-documentation/utils/badge-styles.ts +0 -5
  122. package/eventcatalog/src/{enterprise → features}/custom-documentation/utils/custom-docs.ts +1 -6
  123. package/eventcatalog/src/{enterprise → features}/custom-documentation/utils/docs-search.ts +0 -5
  124. package/eventcatalog/src/{enterprise → features}/custom-pages/routes.ts +0 -5
  125. package/eventcatalog/src/{enterprise → features}/directory/user-team-directory.ts +0 -5
  126. package/eventcatalog/src/{enterprise → features}/fields/field-extractor.ts +0 -5
  127. package/eventcatalog/src/{enterprise → features}/fields/field-indexer.ts +0 -5
  128. package/eventcatalog/src/{enterprise → features}/fields/fields-db.ts +0 -5
  129. package/eventcatalog/src/{enterprise → features}/fields/pages/api/fields.ts +1 -6
  130. package/eventcatalog/src/{enterprise → features}/fields/pages/fields.astro +1 -2
  131. package/eventcatalog/src/{enterprise → features}/integrations/eventcatalog-features.ts +17 -75
  132. package/eventcatalog/src/features/mcp/apps/architecture-diagram/links.ts +59 -0
  133. package/eventcatalog/src/features/mcp/apps/architecture-diagram/node-chat.tsx +299 -0
  134. package/eventcatalog/src/features/mcp/apps/architecture-diagram/shared.ts +14 -0
  135. package/eventcatalog/src/features/mcp/apps/architecture-diagram/view.tsx +454 -0
  136. package/eventcatalog/src/features/mcp/apps/generated/viewer.html +432 -0
  137. package/eventcatalog/src/features/mcp/apps/mermaid-stub.ts +10 -0
  138. package/eventcatalog/src/features/mcp/apps/schema-viewer/schema-code.tsx +65 -0
  139. package/eventcatalog/src/features/mcp/apps/schema-viewer/shared.ts +23 -0
  140. package/eventcatalog/src/features/mcp/apps/schema-viewer/view.tsx +170 -0
  141. package/eventcatalog/src/features/mcp/apps/shared/app-view.tsx +98 -0
  142. package/eventcatalog/src/features/mcp/apps/shared/resource-types.ts +15 -0
  143. package/eventcatalog/src/features/mcp/apps/viewer/shared.ts +24 -0
  144. package/eventcatalog/src/features/mcp/apps/viewer/styles.css +25 -0
  145. package/eventcatalog/src/features/mcp/apps/viewer/view.tsx +59 -0
  146. package/eventcatalog/src/features/mcp/mcp-app-icons.ts +63 -0
  147. package/eventcatalog/src/features/mcp/mcp-apps.ts +160 -0
  148. package/eventcatalog/src/{enterprise → features}/mcp/mcp-auth.ts +0 -5
  149. package/eventcatalog/src/{enterprise → features}/mcp/mcp-scope.ts +7 -7
  150. package/eventcatalog/src/{enterprise → features}/mcp/mcp-scoped-tools.ts +47 -40
  151. package/eventcatalog/src/{enterprise → features}/mcp/mcp-server.ts +347 -34
  152. package/eventcatalog/src/{enterprise → features}/mcp/oauth-protected-resource.ts +0 -5
  153. package/eventcatalog/src/features/mcp/schema-viewer.ts +24 -0
  154. package/eventcatalog/src/{enterprise → features}/tools/catalog-tools.ts +133 -102
  155. package/eventcatalog/src/features/tools/index.ts +5 -0
  156. package/eventcatalog/src/{enterprise → features}/visualizer-layout/reset.ts +0 -5
  157. package/eventcatalog/src/{enterprise → features}/visualizer-layout/save.ts +0 -5
  158. package/eventcatalog/src/layouts/BaseLayout.astro +2 -2
  159. package/eventcatalog/src/layouts/Footer.astro +31 -39
  160. package/eventcatalog/src/layouts/SettingsLayout.astro +6 -6
  161. package/eventcatalog/src/layouts/VerticalSideBarLayout.astro +7 -37
  162. package/eventcatalog/src/{enterprise → pages}/api/schemas/[collection]/[id]/[version]/index.ts +0 -22
  163. package/eventcatalog/src/{enterprise → pages}/api/schemas/services/[id]/[version]/[specification]/index.ts +0 -19
  164. package/eventcatalog/src/pages/docs/[type]/[id]/[version]/[docType]/[docId]/[docVersion]/_index.data.ts +2 -6
  165. package/eventcatalog/src/pages/docs/[type]/[id]/[version]/[docType]/[docId]/[docVersion]/index.astro +1 -5
  166. package/eventcatalog/src/pages/docs/[type]/[id]/[version]/[docType]/[docId]/_index.data.ts +2 -6
  167. package/eventcatalog/src/pages/docs/[type]/[id]/[version]/[docType]/[docId]/index.astro +1 -5
  168. package/eventcatalog/src/pages/docs/[type]/[id]/[version]/[docType]/[docId].md.ts +2 -6
  169. package/eventcatalog/src/pages/docs/[type]/[id]/[version]/[docType]/[docId].mdx.ts +2 -6
  170. package/eventcatalog/src/pages/docs/[type]/[id]/[version]/index.astro +9 -5
  171. package/eventcatalog/src/pages/docs/custom/[...path]/index.astro +12 -0
  172. package/eventcatalog/src/{enterprise/custom-documentation/pages/docs/custom/root-index.astro → pages/docs/custom/index.astro} +1 -23
  173. package/eventcatalog/src/pages/docs/llm/llms-full.txt.ts +4 -9
  174. package/eventcatalog/src/pages/docs/llm/llms.txt.ts +4 -4
  175. package/eventcatalog/src/pages/docs/llm/schemas.txt.ts +0 -11
  176. package/eventcatalog/src/pages/docs/services/[id]/[docType]/[docId]/index.astro +2 -2
  177. package/eventcatalog/src/pages/index.astro +2 -2
  178. package/eventcatalog/src/pages/schemas/[type]/[id]/[version]/index.astro +0 -3
  179. package/eventcatalog/src/pages/schemas/explorer/index.astro +1 -4
  180. package/eventcatalog/src/pages/settings/assistant.astro +2 -4
  181. package/eventcatalog/src/pages/settings/license.astro +18 -0
  182. package/eventcatalog/src/pages/settings/llm-access.astro +1 -4
  183. package/eventcatalog/src/pages/settings/mcp.astro +33 -4
  184. package/eventcatalog/src/pages/visualiser/[type]/[id]/[version]/_index.data.ts +1 -2
  185. package/eventcatalog/src/pages/visualiser/[type]/[id]/[version]/data/index.astro +2 -45
  186. package/eventcatalog/src/pages/visualiser/[type]/[id]/[version]/entity-map/index.astro +1 -1
  187. package/eventcatalog/src/pages/visualiser/[type]/[id]/[version].mermaid.ts +7 -109
  188. package/eventcatalog/src/pages/visualiser/_mermaid-route.ts +78 -0
  189. package/eventcatalog/src/pages/visualiser/domains/[id]/[version]/_index.data.ts +44 -0
  190. package/eventcatalog/src/pages/visualiser/domains/[id]/[version]/entity-map/index.astro +1 -1
  191. package/eventcatalog/src/pages/visualiser/domains/[id]/[version]/index.astro +56 -0
  192. package/eventcatalog/src/pages/visualiser/domains/[id]/[version]/systems-context/index.astro +3 -40
  193. package/eventcatalog/src/pages/visualiser/domains/[id]/[version].mermaid.ts +20 -0
  194. package/eventcatalog/src/pages/visualiser/systems/[id]/[version]/_index.data.ts +29 -0
  195. package/eventcatalog/src/pages/visualiser/systems/[id]/[version]/context/index.astro +3 -38
  196. package/eventcatalog/src/pages/visualiser/systems/[id]/[version]/index.astro +56 -0
  197. package/eventcatalog/src/pages/visualiser/systems/[id]/[version].mermaid.ts +20 -0
  198. package/eventcatalog/src/stores/sidebar-store/builders/agent.ts +1 -1
  199. package/eventcatalog/src/stores/sidebar-store/builders/container.ts +1 -1
  200. package/eventcatalog/src/stores/sidebar-store/builders/data-product.ts +1 -1
  201. package/eventcatalog/src/stores/sidebar-store/builders/domain.ts +7 -32
  202. package/eventcatalog/src/stores/sidebar-store/builders/entity.ts +1 -1
  203. package/eventcatalog/src/stores/sidebar-store/builders/message.ts +1 -1
  204. package/eventcatalog/src/stores/sidebar-store/builders/service.ts +2 -8
  205. package/eventcatalog/src/stores/sidebar-store/builders/system.ts +2 -12
  206. package/eventcatalog/src/stores/sidebar-store/custom-sidebar.ts +0 -10
  207. package/eventcatalog/src/stores/sidebar-store/state.ts +4 -6
  208. package/eventcatalog/src/styles/theme.css +22 -18
  209. package/eventcatalog/src/styles/themes/forest.css +8 -8
  210. package/eventcatalog/src/styles/themes/ocean.css +8 -8
  211. package/eventcatalog/src/styles/themes/sapphire.css +8 -8
  212. package/eventcatalog/src/styles/themes/sunset.css +8 -8
  213. package/eventcatalog/src/utils/clipboard.ts +4 -4
  214. package/eventcatalog/src/utils/collections/flow-step-schema.ts +117 -0
  215. package/eventcatalog/src/utils/collections/pointer-schema.ts +7 -0
  216. package/eventcatalog/src/utils/collections/resource-docs.ts +677 -14
  217. package/eventcatalog/src/utils/collections/schema-loader.ts +0 -5
  218. package/eventcatalog/src/utils/feature.ts +14 -23
  219. package/eventcatalog/src/utils/license.ts +114 -0
  220. package/eventcatalog/src/utils/node-graphs/architecture-diagram-types.ts +32 -0
  221. package/eventcatalog/src/utils/node-graphs/architecture-diagram.ts +84 -0
  222. package/eventcatalog/src/utils/node-graphs/channel-node-graph.ts +4 -25
  223. package/eventcatalog/src/utils/node-graphs/container-node-graph.ts +12 -39
  224. package/eventcatalog/src/utils/node-graphs/data-products-node-graph.ts +11 -27
  225. package/eventcatalog/src/utils/node-graphs/domain-levels-node-graph.ts +679 -0
  226. package/eventcatalog/src/utils/node-graphs/domains-node-graph.ts +3 -20
  227. package/eventcatalog/src/utils/node-graphs/export-mermaid.ts +51 -4
  228. package/eventcatalog/src/utils/node-graphs/field-node-graph.ts +8 -23
  229. package/eventcatalog/src/utils/node-graphs/flow-lanes.ts +119 -0
  230. package/eventcatalog/src/utils/node-graphs/flows-node-graph.ts +133 -47
  231. package/eventcatalog/src/utils/node-graphs/layout-node-graph.ts +28 -0
  232. package/eventcatalog/src/utils/node-graphs/layout-persistence.ts +3 -3
  233. package/eventcatalog/src/utils/node-graphs/message-node-graph.ts +16 -34
  234. package/eventcatalog/src/utils/node-graphs/services-node-graph.ts +11 -25
  235. package/eventcatalog/src/utils/node-graphs/system-context-node-graph.ts +18 -54
  236. package/eventcatalog/src/utils/node-graphs/system-levels-node-graph.ts +59 -0
  237. package/eventcatalog/src/utils/node-graphs/systems-node-graph.ts +20 -80
  238. package/eventcatalog/src/utils/node-graphs/utils/utils.ts +1 -78
  239. package/eventcatalog/src/utils/trial.ts +36 -0
  240. package/eventcatalog/tsconfig.json +1 -1
  241. package/package.json +11 -11
  242. package/dist/chunk-FV56YFM4.js +0 -7
  243. package/dist/federation/entitlement.cjs +0 -31
  244. package/dist/federation/entitlement.d.cts +0 -12
  245. package/dist/federation/entitlement.d.ts +0 -12
  246. package/dist/federation/entitlement.js +0 -6
  247. package/dist/runtime-dependencies/dagre.mjs +0 -3
  248. package/eventcatalog/src/components/Settings/BillingSettingsForm.tsx +0 -265
  249. package/eventcatalog/src/enterprise/LICENSE +0 -57
  250. package/eventcatalog/src/enterprise/README.md +0 -5
  251. package/eventcatalog/src/enterprise/collections/resource-docs-utils.ts +0 -691
  252. package/eventcatalog/src/enterprise/custom-documentation/components/CustomDocsNav/CustomDocsNav.astro +0 -9
  253. package/eventcatalog/src/enterprise/custom-documentation/pages/docs/custom/[...path]/index.astro +0 -18
  254. package/eventcatalog/src/enterprise/custom-documentation/pages/docs/custom/feature.astro +0 -171
  255. package/eventcatalog/src/enterprise/feature.ts +0 -75
  256. package/eventcatalog/src/enterprise/tools/index.ts +0 -10
  257. package/eventcatalog/src/hooks/eventcatalog-visualizer.ts +0 -126
  258. package/eventcatalog/src/pages/settings/billing.astro +0 -17
  259. package/eventcatalog/src/pages/visualiser/domain-integrations/index.astro +0 -26
  260. package/eventcatalog/src/types/mcp-modules.d.ts +0 -67
  261. package/eventcatalog/src/utils/node-graphs/domains-canvas.ts +0 -261
  262. package/eventcatalog/src/utils/node-graphs/export-node-graph.ts +0 -91
  263. /package/eventcatalog/src/{enterprise → features}/auth/error.astro +0 -0
  264. /package/eventcatalog/src/{enterprise → features}/auth/login.astro +0 -0
  265. /package/eventcatalog/src/{enterprise → features}/auth/unauthorized.astro +0 -0
  266. /package/eventcatalog/src/{enterprise/custom-documentation/pages → pages}/docs/custom/[...path]/_index.data.ts +0 -0
  267. /package/eventcatalog/src/{enterprise/custom-documentation/pages → pages}/docs/custom/[...path].mdx.ts +0 -0
@@ -1,265 +0,0 @@
1
- import { ArrowUpRight, Check } from 'lucide-react';
2
- import { Row, cn } from './Row';
3
- import { PRICING_URL } from './SettingsShared';
4
-
5
- export type PlanId = 'community' | 'starter' | 'scale' | 'enterprise';
6
-
7
- interface Props {
8
- currentPlan: PlanId;
9
- }
10
-
11
- interface Plan {
12
- id: PlanId;
13
- name: string;
14
- tagline: string;
15
- price: string;
16
- priceSuffix?: string;
17
- audience: string;
18
- features: string[];
19
- ctaLabel: string;
20
- ctaHref: string;
21
- /** Visual accent applied to selected/featured cards. */
22
- accent?: 'default' | 'highlight';
23
- }
24
-
25
- const PLANS: Plan[] = [
26
- {
27
- id: 'community',
28
- name: 'Community',
29
- tagline: 'Open source. Self-hosted.',
30
- price: 'Free',
31
- audience: 'For individuals and open source projects.',
32
- features: [
33
- 'Document domains, services, events, commands and queries',
34
- 'Visualize your architecture',
35
- 'Public schema fetch & sync',
36
- 'Schema Explorer (Basic)',
37
- 'Owners, versioning, and flows',
38
- 'Community support (Discord)',
39
- ],
40
- ctaLabel: 'Get started',
41
- ctaHref: PRICING_URL,
42
- },
43
- {
44
- id: 'starter',
45
- name: 'Starter',
46
- tagline: 'For teams customising and scaling.',
47
- price: '$199',
48
- priceSuffix: '/month',
49
- audience: 'Up to 20 active users.',
50
- features: [
51
- 'Everything in Community',
52
- 'Custom landing page',
53
- 'Bring your own documentation',
54
- 'Embed Miro, IcePanel, Lucid, DrawIO, FigJam',
55
- 'EventCatalog Assistant',
56
- 'Remove EventCatalog branding',
57
- 'Custom themes',
58
- 'Email support',
59
- ],
60
- ctaLabel: 'Try Starter for 14 days',
61
- ctaHref: 'https://eventcatalog.cloud',
62
- },
63
- {
64
- id: 'scale',
65
- name: 'Scale',
66
- tagline: 'For platform teams managing multiple catalogs.',
67
- price: '$399',
68
- priceSuffix: '/month',
69
- audience: 'Up to 50 active users.',
70
- accent: 'highlight',
71
- features: [
72
- 'Everything in Starter',
73
- 'Field Intelligence',
74
- 'Resource-level documentation',
75
- 'EventCatalog MCP server',
76
- 'Architecture Change Detection',
77
- 'Private schema fetch & sync',
78
- 'GitHub authentication',
79
- 'Federate up to 3 catalogs',
80
- 'Custom tools for AI Assistant',
81
- 'Slack bot integration',
82
- ],
83
- ctaLabel: 'Try Scale for 14 days',
84
- ctaHref: 'https://eventcatalog.cloud',
85
- },
86
- {
87
- id: 'enterprise',
88
- name: 'Enterprise',
89
- tagline: 'For complex systems and regulated environments.',
90
- price: 'Contact us',
91
- audience: 'Unlimited users, all integrations included.',
92
- features: [
93
- 'Everything in Scale',
94
- 'Unlimited users',
95
- 'Unlimited integrations',
96
- 'SSO & SAML',
97
- 'Advanced governance & audit logging',
98
- 'Migration & onboarding support',
99
- 'Dedicated account manager',
100
- ],
101
- ctaLabel: 'Schedule a call',
102
- ctaHref: 'mailto:hello@eventcatalog.dev?subject=Enterprise%20Plan%20Enquiry',
103
- },
104
- ];
105
-
106
- const PLAN_LABELS: Record<PlanId, string> = {
107
- community: 'Community',
108
- starter: 'Starter',
109
- scale: 'Scale',
110
- enterprise: 'Enterprise',
111
- };
112
-
113
- const PLAN_RANK: Record<PlanId, number> = {
114
- community: 0,
115
- starter: 1,
116
- scale: 2,
117
- enterprise: 3,
118
- };
119
-
120
- export const BillingSettingsForm = ({ currentPlan }: Props) => {
121
- const isPaid = currentPlan === 'starter' || currentPlan === 'scale' || currentPlan === 'enterprise';
122
- const upgradable = currentPlan !== 'enterprise';
123
- // Show the current plan and any tier above it. Hides plans the user has already passed.
124
- const visiblePlans = PLANS.filter((plan) => PLAN_RANK[plan.id] >= PLAN_RANK[currentPlan]);
125
- const gridCols =
126
- visiblePlans.length === 1 ? 'grid-cols-1' : visiblePlans.length === 2 ? 'lg:grid-cols-2' : 'lg:grid-cols-2 xl:grid-cols-3';
127
-
128
- return (
129
- <div className="divide-y divide-[rgb(var(--ec-page-border))]">
130
- <Row
131
- title="Billing plan"
132
- description="View and manage your billing plan. Paid plans unlock the AI assistant, with MCP server and other advanced features available on Scale."
133
- canEdit={false}
134
- dirty={false}
135
- >
136
- <div className="flex flex-wrap items-center gap-3 rounded-lg border border-[rgb(var(--ec-page-border))] bg-[rgb(var(--ec-input-bg,var(--ec-page-bg)))] px-4 py-3">
137
- <div className="flex items-center gap-2 text-[13px] text-[rgb(var(--ec-page-text))]">
138
- <span className="text-[rgb(var(--ec-page-text-muted))]">Current plan:</span>
139
- <span className="font-semibold">{PLAN_LABELS[currentPlan]}</span>
140
- {isPaid && (
141
- <span className="rounded-full border border-emerald-500/30 bg-emerald-500/10 px-1.5 py-0.5 text-[10px] font-semibold uppercase tracking-wide text-emerald-500">
142
- Active
143
- </span>
144
- )}
145
- </div>
146
- <div className="ml-auto">
147
- {upgradable ? (
148
- <a
149
- href={PRICING_URL}
150
- target="_blank"
151
- rel="noreferrer"
152
- className="inline-flex items-center gap-1 rounded-md bg-[rgb(var(--ec-page-text))] px-3 py-1.5 text-[12px] font-semibold text-[rgb(var(--ec-page-bg))] transition-opacity hover:opacity-90"
153
- >
154
- Upgrade
155
- <ArrowUpRight className="h-3 w-3" aria-hidden />
156
- </a>
157
- ) : (
158
- <a
159
- href={PRICING_URL}
160
- target="_blank"
161
- rel="noreferrer"
162
- className="inline-flex items-center gap-1 rounded-md border border-[rgb(var(--ec-page-border))] bg-[rgb(var(--ec-page-bg))] px-3 py-1.5 text-[12px] font-medium text-[rgb(var(--ec-page-text))] hover:bg-[rgb(var(--ec-page-bg)/0.78)]"
163
- >
164
- Manage billing
165
- <ArrowUpRight className="h-3 w-3" aria-hidden />
166
- </a>
167
- )}
168
- </div>
169
- </div>
170
- </Row>
171
-
172
- <Row
173
- title={upgradable ? 'Upgrade' : 'Your plan'}
174
- description={
175
- upgradable
176
- ? 'Plans available to upgrade to. Pricing shown in USD; visit our website for EUR pricing and the full feature comparison.'
177
- : 'You are on our highest tier. Visit the website for the full feature comparison.'
178
- }
179
- canEdit={false}
180
- dirty={false}
181
- >
182
- <div className={cn('grid grid-cols-1 gap-3', gridCols)}>
183
- {visiblePlans.map((plan) => (
184
- <PlanCard key={plan.id} plan={plan} isCurrent={plan.id === currentPlan} />
185
- ))}
186
- </div>
187
- <p className="mt-4 text-[12px] text-[rgb(var(--ec-page-text-muted))]">
188
- Prices update with annual billing.{' '}
189
- <a href={PRICING_URL} target="_blank" rel="noreferrer" className="text-[rgb(var(--ec-accent))] hover:underline">
190
- See full plan comparison →
191
- </a>
192
- </p>
193
- </Row>
194
- </div>
195
- );
196
- };
197
-
198
- interface PlanCardProps {
199
- plan: Plan;
200
- isCurrent: boolean;
201
- }
202
-
203
- const PlanCard = ({ plan, isCurrent }: PlanCardProps) => (
204
- <div
205
- className={cn(
206
- 'flex flex-col rounded-xl border p-5 transition-colors',
207
- isCurrent
208
- ? 'border-[rgb(var(--ec-accent)/0.5)] bg-[rgb(var(--ec-accent-subtle)/0.4)]'
209
- : plan.accent === 'highlight'
210
- ? 'border-[rgb(var(--ec-page-text)/0.25)] bg-[rgb(var(--ec-input-bg,var(--ec-page-bg)))]'
211
- : 'border-[rgb(var(--ec-page-border))] bg-[rgb(var(--ec-input-bg,var(--ec-page-bg)))]'
212
- )}
213
- >
214
- <div className="flex items-start justify-between gap-2">
215
- <div>
216
- <p className="text-[13px] font-semibold text-[rgb(var(--ec-page-text))]">{plan.name}</p>
217
- <p className="mt-0.5 text-[12px] leading-snug text-[rgb(var(--ec-page-text-muted))]">{plan.tagline}</p>
218
- </div>
219
- {isCurrent && (
220
- <span className="rounded-full border border-[rgb(var(--ec-accent)/0.4)] bg-[rgb(var(--ec-accent-subtle))] px-2 py-0.5 text-[10px] font-semibold uppercase tracking-wide text-[rgb(var(--ec-accent-text))]">
221
- Current
222
- </span>
223
- )}
224
- {!isCurrent && plan.accent === 'highlight' && (
225
- <span className="rounded-full border border-amber-500/40 bg-amber-500/10 px-2 py-0.5 text-[10px] font-semibold uppercase tracking-wide text-amber-500">
226
- Popular
227
- </span>
228
- )}
229
- </div>
230
-
231
- <div className="mt-4">
232
- <span className="text-[24px] font-semibold leading-none tracking-tight text-[rgb(var(--ec-page-text))]">{plan.price}</span>
233
- {plan.priceSuffix && <span className="ml-1 text-[12px] text-[rgb(var(--ec-page-text-muted))]">{plan.priceSuffix}</span>}
234
- <p className="mt-1 text-[11px] text-[rgb(var(--ec-page-text-muted))]">{plan.audience}</p>
235
- </div>
236
-
237
- <a
238
- href={plan.ctaHref}
239
- target="_blank"
240
- rel="noreferrer"
241
- aria-disabled={isCurrent}
242
- onClick={isCurrent ? (e) => e.preventDefault() : undefined}
243
- className={cn(
244
- 'mt-4 inline-flex items-center justify-center gap-1 rounded-md px-3 py-1.5 text-[12px] font-semibold transition-colors',
245
- isCurrent
246
- ? 'pointer-events-none cursor-default border border-[rgb(var(--ec-page-border))] bg-transparent text-[rgb(var(--ec-page-text-muted))]'
247
- : plan.accent === 'highlight'
248
- ? 'bg-[rgb(var(--ec-page-text))] text-[rgb(var(--ec-page-bg))] hover:opacity-90'
249
- : 'border border-[rgb(var(--ec-page-border))] bg-[rgb(var(--ec-page-bg))] text-[rgb(var(--ec-page-text))] hover:bg-[rgb(var(--ec-page-bg)/0.78)]'
250
- )}
251
- >
252
- {isCurrent ? 'Current plan' : plan.ctaLabel}
253
- {!isCurrent && <ArrowUpRight className="h-3 w-3" aria-hidden />}
254
- </a>
255
-
256
- <ul className="mt-5 space-y-1.5">
257
- {plan.features.map((feature) => (
258
- <li key={feature} className="flex items-start gap-2 text-[12px] leading-snug text-[rgb(var(--ec-page-text))]">
259
- <Check className="mt-0.5 h-3 w-3 flex-shrink-0 text-[rgb(var(--ec-page-text-muted))]" aria-hidden />
260
- <span>{feature}</span>
261
- </li>
262
- ))}
263
- </ul>
264
- </div>
265
- );
@@ -1,57 +0,0 @@
1
- The EventCatalog Commercial License (the "Commercial License")
2
- Copyright (c) 2022-2026 EventCatalog Ltd
3
-
4
- With regard to the EventCatalog Software:
5
-
6
- This software and associated documentation files (the "Software") may only be
7
- used in production, if you (and any entity that you represent) have agreed to,
8
- and are in compliance with, the EventCatalog Terms of Service available
9
- at https://www.eventcatalog.dev/terms, or other agreements governing the use of
10
- the Software, as mutually agreed by you and EventCatalog Ltd ("EventCatalog"),
11
- and otherwise have a valid EventCatalog Starter, Scale, or Enterprise
12
- subscription ("Commercial Subscription").
13
-
14
- Subject to the foregoing sentence, you are free to modify this Software and
15
- publish patches to the Software. You agree that EventCatalog and/or its
16
- licensors (as applicable) retain all right, title and interest in and to all
17
- such modifications and/or patches, and all such modifications and/or patches
18
- may only be used, copied, modified, displayed, distributed, or otherwise
19
- exploited with a valid Commercial Subscription.
20
-
21
- A 14-day free trial of premium features is available at
22
- https://eventcatalog.cloud/ to help you evaluate the Software before purchasing
23
- a Commercial Subscription.
24
-
25
- Notwithstanding the foregoing, you may copy and modify the Software for
26
- development and testing purposes, without requiring a subscription. You agree
27
- that EventCatalog and/or its licensors (as applicable) retain all right, title
28
- and interest in and to all such modifications. You are not granted any other
29
- rights beyond what is expressly stated herein. Subject to the foregoing, it is
30
- forbidden to copy, merge, publish, distribute, sublicense, and/or sell the
31
- Software.
32
-
33
- You may not move, change, disable, or circumvent the license key functionality
34
- in the Software, and you may not remove or obscure any functionality in the
35
- Software that is protected by the license key.
36
-
37
- This Software is source-available for the purposes of transparency and
38
- auditability. Source availability does not constitute a grant of rights to use
39
- the Software in production without a valid Commercial Subscription.
40
-
41
- This Commercial License applies only to the part of this Software that is not
42
- distributed under the MIT license. Any part of this Software distributed under
43
- the MIT license is copyrighted under the MIT license. The full text of this
44
- Commercial License shall be included in all copies or substantial portions of
45
- the Software.
46
-
47
- THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
48
- IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
49
- FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
50
- AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
51
- LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
52
- OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
53
- SOFTWARE.
54
-
55
- For all third party components incorporated into the EventCatalog Software,
56
- those components are licensed under the original license provided by the owner
57
- of the applicable component.
@@ -1,5 +0,0 @@
1
- ## EventCatalog License
2
-
3
- Usage of files in this directory and its subdirectories, and of EventCatalog Plugin / Enterprise features, is subject to the EventCatalog Commercial License, and conditional on having the right license from EventCatalog. Access to files in this directory and its subdirectories does not constitute permission to use this code or EventCatalog Enterprise Edition features.
4
-
5
- Unless otherwise noted, all files Copyright © 2025 EventCatalog Ltd.