@eventcatalog/core 1.2.6 → 2.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (614) hide show
  1. package/.changeset/config.json +11 -0
  2. package/.github/CODEOWNERS +3 -0
  3. package/.github/ISSUE_TEMPLATE.md +1 -0
  4. package/.github/PULL_REQUEST_TEMPLATE.md +18 -0
  5. package/.github/funding.yml +1 -0
  6. package/.github/workflows/lint.yml +22 -0
  7. package/.github/workflows/release.yml +34 -0
  8. package/.github/workflows/verify-build.yml +27 -0
  9. package/.prettierignore +7 -0
  10. package/.prettierrc +10 -0
  11. package/CHANGELOG.md +10 -571
  12. package/LICENSE.md +21 -0
  13. package/README.md +192 -5
  14. package/astro.config.mjs +57 -0
  15. package/bin/dist/eventcatalog.cjs +3139 -0
  16. package/bin/dist/eventcatalog.d.cts +1 -0
  17. package/bin/dist/eventcatalog.d.ts +1 -0
  18. package/bin/dist/eventcatalog.js +3141 -0
  19. package/images/example.png +0 -0
  20. package/package.json +59 -52
  21. package/public/icons/github.svg +1 -0
  22. package/public/icons/x-twitter.svg +1 -0
  23. package/public/logo.png +0 -0
  24. package/public/slack-icon.svg +1 -0
  25. package/scripts/build-ci.js +22 -0
  26. package/scripts/catalog-to-astro-content-directory.js +188 -0
  27. package/scripts/default-files-for-collections/commands.md +8 -0
  28. package/scripts/default-files-for-collections/domains.md +8 -0
  29. package/scripts/default-files-for-collections/events.md +8 -0
  30. package/scripts/default-files-for-collections/services.md +8 -0
  31. package/scripts/default-files-for-collections/teams.md +11 -0
  32. package/scripts/default-files-for-collections/users.md +11 -0
  33. package/scripts/start-catalog-locally.js +23 -0
  34. package/scripts/watcher.js +53 -0
  35. package/src/components/DocsNavigation.astro +110 -0
  36. package/src/components/Header.astro +65 -0
  37. package/src/components/Lists/BasicList.tsx +59 -0
  38. package/src/components/Lists/OwnersList.tsx +101 -0
  39. package/src/components/Lists/PillList.tsx +67 -0
  40. package/src/components/Lists/VersionList.astro +29 -0
  41. package/src/components/MDX/Accordion/Accordion.astro +10 -0
  42. package/src/components/MDX/Accordion/Accordion.tsx +29 -0
  43. package/src/components/MDX/Accordion/AccordionGroup.astro +16 -0
  44. package/{components/Mdx → src/components/MDX}/Admonition.tsx +6 -5
  45. package/src/components/MDX/File.tsx +43 -0
  46. package/src/components/MDX/NodeGraph/DownloadButton.tsx +58 -0
  47. package/src/components/MDX/NodeGraph/NodeGraph.astro +82 -0
  48. package/src/components/MDX/NodeGraph/NodeGraph.tsx +135 -0
  49. package/src/components/MDX/NodeGraph/NodeGraphPortal.tsx +15 -0
  50. package/src/components/MDX/NodeGraph/Nodes/Command.tsx +74 -0
  51. package/src/components/MDX/NodeGraph/Nodes/Event.tsx +74 -0
  52. package/src/components/MDX/NodeGraph/Nodes/Service.tsx +83 -0
  53. package/src/components/MDX/OpenAPI/OpenAPI.tsx +35 -0
  54. package/src/components/MDX/Schema.tsx +45 -0
  55. package/src/components/MDX/components.tsx +24 -0
  56. package/src/components/Search.astro +108 -0
  57. package/src/components/Seo.astro +79 -0
  58. package/src/components/SideBars/DomainSideBar.astro +42 -0
  59. package/src/components/SideBars/MessageSideBar.astro +81 -0
  60. package/src/components/SideBars/ServiceSideBar.astro +93 -0
  61. package/src/components/Tables/DebouncedInput.tsx +32 -0
  62. package/src/components/Tables/Table.tsx +228 -0
  63. package/src/components/Tables/columns/DomainTableColumns.tsx +118 -0
  64. package/src/components/Tables/columns/MessageTableColumns.tsx +159 -0
  65. package/src/components/Tables/columns/ServiceTableColumns.tsx +162 -0
  66. package/src/components/Tables/columns/index.tsx +17 -0
  67. package/src/components/Tables/filters/custom-filters.ts +14 -0
  68. package/src/content/config.ts +119 -0
  69. package/src/env.d.ts +2 -0
  70. package/src/layouts/CustomDocsPageLayout.astro +100 -0
  71. package/src/layouts/DiscoverLayout.astro +120 -0
  72. package/src/layouts/DocsLayout.astro +59 -0
  73. package/src/layouts/PlainPage.astro +29 -0
  74. package/src/layouts/VisualiserLayout.astro +73 -0
  75. package/src/pages/discover/[type]/index.astro +36 -0
  76. package/src/pages/docs/[type]/[id]/[version]/index.astro +215 -0
  77. package/src/pages/docs/[type]/[id]/[version]/spec/index.astro +93 -0
  78. package/src/pages/docs/index.md +4 -0
  79. package/src/pages/docs/teams/[id]/index.astro +127 -0
  80. package/src/pages/docs/users/[id]/index.astro +132 -0
  81. package/src/pages/visualiser/[type]/[id]/[version]/index.astro +46 -0
  82. package/src/pages/visualiser/index.astro +25 -0
  83. package/src/remark-plugins/mermaid.ts +27 -0
  84. package/src/remark-plugins/remark-modified-time.mjs +9 -0
  85. package/src/types/index.ts +2 -0
  86. package/src/utils/collections/util.ts +22 -0
  87. package/src/utils/colors.ts +14 -0
  88. package/src/utils/commands/node-graph.ts +107 -0
  89. package/src/utils/commands.ts +60 -0
  90. package/src/utils/config/catalog.ts +2 -0
  91. package/src/utils/domains/domains.ts +50 -0
  92. package/src/utils/domains/node-graph.ts +60 -0
  93. package/src/utils/events/node-graph.ts +108 -0
  94. package/src/utils/events.ts +62 -0
  95. package/src/utils/example-remark-plugin.mjs +6 -0
  96. package/src/utils/messages.ts +7 -0
  97. package/src/utils/node-graph-utils/utils.ts +31 -0
  98. package/src/utils/services/node-graph.ts +133 -0
  99. package/src/utils/services/services.ts +88 -0
  100. package/src/utils/teams.ts +47 -0
  101. package/src/utils/users.ts +59 -0
  102. package/tailwind.config.mjs +24 -0
  103. package/tsconfig.json +11 -26
  104. package/.next/BUILD_ID +0 -1
  105. package/.next/build-manifest.json +0 -246
  106. package/.next/cache/.tsbuildinfo +0 -1
  107. package/.next/cache/config.json +0 -7
  108. package/.next/cache/eslint/.cache_1bay4w0 +0 -1
  109. package/.next/cache/next-server.js.nft.json +0 -1
  110. package/.next/cache/webpack/client-production/0.pack +0 -0
  111. package/.next/cache/webpack/client-production/index.pack +0 -0
  112. package/.next/cache/webpack/server-production/0.pack +0 -0
  113. package/.next/cache/webpack/server-production/index.pack +0 -0
  114. package/.next/export-detail.json +0 -1
  115. package/.next/export-marker.json +0 -1
  116. package/.next/images-manifest.json +0 -1
  117. package/.next/next-server.js.nft.json +0 -1
  118. package/.next/package.json +0 -1
  119. package/.next/prerender-manifest.json +0 -1
  120. package/.next/react-loadable-manifest.json +0 -2082
  121. package/.next/required-server-files.json +0 -1
  122. package/.next/routes-manifest.json +0 -1
  123. package/.next/server/chunks/109.js +0 -608
  124. package/.next/server/chunks/237.js +0 -109
  125. package/.next/server/chunks/267.js +0 -257
  126. package/.next/server/chunks/274.js +0 -32
  127. package/.next/server/chunks/29.js +0 -675
  128. package/.next/server/chunks/331.js +0 -750
  129. package/.next/server/chunks/362.js +0 -570
  130. package/.next/server/chunks/428.js +0 -84
  131. package/.next/server/chunks/50.js +0 -466
  132. package/.next/server/chunks/526.js +0 -159
  133. package/.next/server/chunks/537.js +0 -136
  134. package/.next/server/chunks/788.js +0 -162
  135. package/.next/server/chunks/797.js +0 -92
  136. package/.next/server/chunks/8.js +0 -173
  137. package/.next/server/chunks/854.js +0 -107
  138. package/.next/server/chunks/938.js +0 -140
  139. package/.next/server/chunks/944.js +0 -721
  140. package/.next/server/chunks/962.js +0 -13
  141. package/.next/server/chunks/97.js +0 -2829
  142. package/.next/server/chunks/992.js +0 -50
  143. package/.next/server/chunks/font-manifest.json +0 -1
  144. package/.next/server/font-manifest.json +0 -1
  145. package/.next/server/middleware-manifest.json +0 -6
  146. package/.next/server/pages/404.html +0 -12
  147. package/.next/server/pages/500.html +0 -12
  148. package/.next/server/pages/_app.js +0 -623
  149. package/.next/server/pages/_app.js.nft.json +0 -1
  150. package/.next/server/pages/_document.js +0 -120
  151. package/.next/server/pages/_document.js.nft.json +0 -1
  152. package/.next/server/pages/_error.js +0 -148
  153. package/.next/server/pages/_error.js.nft.json +0 -1
  154. package/.next/server/pages/domains/Orders/events/OrderComplete/logs.html +0 -1
  155. package/.next/server/pages/domains/Orders/events/OrderComplete/logs.json +0 -1
  156. package/.next/server/pages/domains/Orders/events/OrderComplete.html +0 -40
  157. package/.next/server/pages/domains/Orders/events/OrderComplete.json +0 -1
  158. package/.next/server/pages/domains/Orders/events/OrderConfirmed/logs.html +0 -1
  159. package/.next/server/pages/domains/Orders/events/OrderConfirmed/logs.json +0 -1
  160. package/.next/server/pages/domains/Orders/events/OrderConfirmed.html +0 -40
  161. package/.next/server/pages/domains/Orders/events/OrderConfirmed.json +0 -1
  162. package/.next/server/pages/domains/Orders/events/OrderCreated/logs.html +0 -1
  163. package/.next/server/pages/domains/Orders/events/OrderCreated/logs.json +0 -1
  164. package/.next/server/pages/domains/Orders/events/OrderCreated.html +0 -2
  165. package/.next/server/pages/domains/Orders/events/OrderCreated.json +0 -1
  166. package/.next/server/pages/domains/Orders/events/OrderRequested/logs.html +0 -1
  167. package/.next/server/pages/domains/Orders/events/OrderRequested/logs.json +0 -1
  168. package/.next/server/pages/domains/Orders/events/OrderRequested.html +0 -40
  169. package/.next/server/pages/domains/Orders/events/OrderRequested.json +0 -1
  170. package/.next/server/pages/domains/Orders/services/Orders Service.html +0 -2
  171. package/.next/server/pages/domains/Orders/services/Orders Service.json +0 -1
  172. package/.next/server/pages/domains/Orders.html +0 -2
  173. package/.next/server/pages/domains/Orders.json +0 -1
  174. package/.next/server/pages/domains/Shopping/events/AddedItemToCart/logs.html +0 -1
  175. package/.next/server/pages/domains/Shopping/events/AddedItemToCart/logs.json +0 -1
  176. package/.next/server/pages/domains/Shopping/events/AddedItemToCart/v/0.0.1.html +0 -59
  177. package/.next/server/pages/domains/Shopping/events/AddedItemToCart/v/0.0.1.json +0 -1
  178. package/.next/server/pages/domains/Shopping/events/AddedItemToCart/v/0.0.2.html +0 -66
  179. package/.next/server/pages/domains/Shopping/events/AddedItemToCart/v/0.0.2.json +0 -1
  180. package/.next/server/pages/domains/Shopping/events/AddedItemToCart.html +0 -65
  181. package/.next/server/pages/domains/Shopping/events/AddedItemToCart.json +0 -1
  182. package/.next/server/pages/domains/Shopping/events/RemovedItemFromCart/logs.html +0 -1
  183. package/.next/server/pages/domains/Shopping/events/RemovedItemFromCart/logs.json +0 -1
  184. package/.next/server/pages/domains/Shopping/events/RemovedItemFromCart.html +0 -48
  185. package/.next/server/pages/domains/Shopping/events/RemovedItemFromCart.json +0 -1
  186. package/.next/server/pages/domains/Shopping.html +0 -2
  187. package/.next/server/pages/domains/Shopping.json +0 -1
  188. package/.next/server/pages/domains/[domain]/events/[name]/logs.js +0 -345
  189. package/.next/server/pages/domains/[domain]/events/[name]/logs.js.nft.json +0 -1
  190. package/.next/server/pages/domains/[domain]/events/[name]/v/[version].js +0 -435
  191. package/.next/server/pages/domains/[domain]/events/[name]/v/[version].js.nft.json +0 -1
  192. package/.next/server/pages/domains/[domain]/events/[name].js +0 -354
  193. package/.next/server/pages/domains/[domain]/events/[name].js.nft.json +0 -1
  194. package/.next/server/pages/domains/[domain]/services/[name].js +0 -402
  195. package/.next/server/pages/domains/[domain]/services/[name].js.nft.json +0 -1
  196. package/.next/server/pages/domains/[domain].js +0 -549
  197. package/.next/server/pages/domains/[domain].js.nft.json +0 -1
  198. package/.next/server/pages/domains.html +0 -3
  199. package/.next/server/pages/domains.js +0 -576
  200. package/.next/server/pages/domains.js.nft.json +0 -1
  201. package/.next/server/pages/domains.json +0 -1
  202. package/.next/server/pages/events/PaymentProcessed/logs.html +0 -1
  203. package/.next/server/pages/events/PaymentProcessed/logs.json +0 -1
  204. package/.next/server/pages/events/PaymentProcessed.html +0 -44
  205. package/.next/server/pages/events/PaymentProcessed.json +0 -1
  206. package/.next/server/pages/events/ShipmentDelivered/logs.html +0 -1
  207. package/.next/server/pages/events/ShipmentDelivered/logs.json +0 -1
  208. package/.next/server/pages/events/ShipmentDelivered.html +0 -44
  209. package/.next/server/pages/events/ShipmentDelivered.json +0 -1
  210. package/.next/server/pages/events/ShipmentDispatched/logs.html +0 -1
  211. package/.next/server/pages/events/ShipmentDispatched/logs.json +0 -1
  212. package/.next/server/pages/events/ShipmentDispatched.html +0 -44
  213. package/.next/server/pages/events/ShipmentDispatched.json +0 -1
  214. package/.next/server/pages/events/ShipmentPrepared/logs.html +0 -1
  215. package/.next/server/pages/events/ShipmentPrepared/logs.json +0 -1
  216. package/.next/server/pages/events/ShipmentPrepared.html +0 -2
  217. package/.next/server/pages/events/ShipmentPrepared.json +0 -1
  218. package/.next/server/pages/events/[name]/logs.js +0 -263
  219. package/.next/server/pages/events/[name]/logs.js.nft.json +0 -1
  220. package/.next/server/pages/events/[name]/v/[version].js +0 -431
  221. package/.next/server/pages/events/[name]/v/[version].js.nft.json +0 -1
  222. package/.next/server/pages/events/[name].js +0 -354
  223. package/.next/server/pages/events/[name].js.nft.json +0 -1
  224. package/.next/server/pages/events.html +0 -11
  225. package/.next/server/pages/events.js +0 -789
  226. package/.next/server/pages/events.js.nft.json +0 -1
  227. package/.next/server/pages/events.json +0 -1
  228. package/.next/server/pages/index.html +0 -1
  229. package/.next/server/pages/index.js.nft.json +0 -1
  230. package/.next/server/pages/overview.html +0 -1
  231. package/.next/server/pages/overview.js +0 -240
  232. package/.next/server/pages/overview.js.nft.json +0 -1
  233. package/.next/server/pages/overview.json +0 -1
  234. package/.next/server/pages/services/Orders Service.html +0 -1
  235. package/.next/server/pages/services/Orders Service.json +0 -1
  236. package/.next/server/pages/services/Payment Service.html +0 -2
  237. package/.next/server/pages/services/Payment Service.json +0 -1
  238. package/.next/server/pages/services/Shipping Service.html +0 -2
  239. package/.next/server/pages/services/Shipping Service.json +0 -1
  240. package/.next/server/pages/services/[name].js +0 -319
  241. package/.next/server/pages/services/[name].js.nft.json +0 -1
  242. package/.next/server/pages/services.html +0 -4
  243. package/.next/server/pages/services.js +0 -741
  244. package/.next/server/pages/services.js.nft.json +0 -1
  245. package/.next/server/pages/services.json +0 -1
  246. package/.next/server/pages/users/[id].js +0 -475
  247. package/.next/server/pages/users/[id].js.nft.json +0 -1
  248. package/.next/server/pages/users/dboyne.html +0 -16
  249. package/.next/server/pages/users/dboyne.json +0 -1
  250. package/.next/server/pages/users/mSmith.html +0 -13
  251. package/.next/server/pages/users/mSmith.json +0 -1
  252. package/.next/server/pages/users.html +0 -1
  253. package/.next/server/pages/users.js.nft.json +0 -1
  254. package/.next/server/pages/visualiser.html +0 -16
  255. package/.next/server/pages/visualiser.js +0 -739
  256. package/.next/server/pages/visualiser.js.nft.json +0 -1
  257. package/.next/server/pages/visualiser.json +0 -1
  258. package/.next/server/pages-manifest.json +0 -23
  259. package/.next/server/webpack-runtime.js +0 -259
  260. package/.next/static/chunks/020d8314.2bae2f29ef0060e4.js +0 -1
  261. package/.next/static/chunks/1178-011609b6f3b123b3.js +0 -1
  262. package/.next/static/chunks/1476.eb11ab1feb4c5940.js +0 -1
  263. package/.next/static/chunks/1484.274df63eb11d9d68.js +0 -1
  264. package/.next/static/chunks/172-940ad0353b57ff98.js +0 -1
  265. package/.next/static/chunks/1750.a25eb3336a8c3a36.js +0 -1
  266. package/.next/static/chunks/2017.1b67898bd26fe157.js +0 -1
  267. package/.next/static/chunks/2027.80b01f1a7005a770.js +0 -1
  268. package/.next/static/chunks/2076.21cb0bf760a8055d.js +0 -1
  269. package/.next/static/chunks/2583.56889bb376087220.js +0 -1
  270. package/.next/static/chunks/2620-21775e17d8a6a407.js +0 -1
  271. package/.next/static/chunks/2765.dda8bae3343b6d41.js +0 -1
  272. package/.next/static/chunks/2edb282b-45c56c19221816df.js +0 -1
  273. package/.next/static/chunks/3082.62ff47793d562412.js +0 -1
  274. package/.next/static/chunks/3116-e9a578a270d9e013.js +0 -1
  275. package/.next/static/chunks/3260.00ac1405e82b8dd9.js +0 -1
  276. package/.next/static/chunks/3706.64742528652de3dd.js +0 -1
  277. package/.next/static/chunks/3ede58a6.ff6c02b372da8155.js +0 -1
  278. package/.next/static/chunks/4042.98f113bfbf744466.js +0 -1
  279. package/.next/static/chunks/4079.75a5db02e1a11105.js +0 -1
  280. package/.next/static/chunks/438.dea6dada9bd4b683.js +0 -1
  281. package/.next/static/chunks/4384-8a28a71e7e3b8d8a.js +0 -1
  282. package/.next/static/chunks/4637.6819aa53bf80d6ff.js +0 -1
  283. package/.next/static/chunks/4816.03f53c476d2a5924.js +0 -1
  284. package/.next/static/chunks/5048.73fa7a6d734ba5ef.js +0 -1
  285. package/.next/static/chunks/5202.6f686702cbb58a65.js +0 -1
  286. package/.next/static/chunks/5464.4c916df2382b5ba9.js +0 -1
  287. package/.next/static/chunks/5493-b00dc3d50ab46716.js +0 -1
  288. package/.next/static/chunks/5644.b4ffa0632405fc9f.js +0 -1
  289. package/.next/static/chunks/5a7b57ef.d0702578743545b0.js +0 -1
  290. package/.next/static/chunks/60.40ff539d26f28401.js +0 -1
  291. package/.next/static/chunks/6101.a35579324b3356df.js +0 -1
  292. package/.next/static/chunks/6194.045435de6d19fc72.js +0 -1
  293. package/.next/static/chunks/6772-fba69ba8e4fa1ef4.js +0 -1
  294. package/.next/static/chunks/6778.7885dc0a314c5a9c.js +0 -1
  295. package/.next/static/chunks/6790-f4527d80153a3e25.js +0 -1
  296. package/.next/static/chunks/7005-09e42f99859b8d03.js +0 -1
  297. package/.next/static/chunks/7109-c8d3fde4c3b6798e.js +0 -1
  298. package/.next/static/chunks/7195.2768b2bb31a65f2f.js +0 -1
  299. package/.next/static/chunks/7458.1de01a44cd67f6f0.js +0 -1
  300. package/.next/static/chunks/7f5d3f51-659399fe6f04b9eb.js +0 -1
  301. package/.next/static/chunks/8264-a1b0376ff4b3d4da.js +0 -1
  302. package/.next/static/chunks/828-ef0e36f29db31dde.js +0 -1
  303. package/.next/static/chunks/8341-b8d844d6f606aed5.js +0 -1
  304. package/.next/static/chunks/8720.e06d4cca843573db.js +0 -1
  305. package/.next/static/chunks/8785.1331b2a6d4be82c3.js +0 -1
  306. package/.next/static/chunks/8829-386c887227aab68c.js +0 -1
  307. package/.next/static/chunks/9054.ae9ffec47aacae76.js +0 -1
  308. package/.next/static/chunks/9097.1efc23284d82765c.js +0 -1
  309. package/.next/static/chunks/9231.af30fa4fedab9f01.js +0 -1
  310. package/.next/static/chunks/9497.49670ee9a8bd76f7.js +0 -1
  311. package/.next/static/chunks/9600.f70c0583d23764a8.js +0 -1
  312. package/.next/static/chunks/9822.0ad553e5c697208c.js +0 -1
  313. package/.next/static/chunks/9930.28415573db2b7806.js +0 -7
  314. package/.next/static/chunks/b9e0c7b4-52b02c0d4f161186.js +0 -1
  315. package/.next/static/chunks/d57e5a30-463f9ed8df724792.js +0 -1
  316. package/.next/static/chunks/eb6e03f4.2276f931f02e235c.js +0 -1
  317. package/.next/static/chunks/f4df0e03.56d1c15b5532ab26.js +0 -1
  318. package/.next/static/chunks/framework-6cc1bceeaaf75e91.js +0 -1
  319. package/.next/static/chunks/main-da37322a396d572a.js +0 -1
  320. package/.next/static/chunks/pages/_app-d40841fd52b70886.js +0 -1
  321. package/.next/static/chunks/pages/_error-c36fa6f7fd569cf6.js +0 -1
  322. package/.next/static/chunks/pages/domains/[domain]/events/[name]/logs-350f383eed1cf3f8.js +0 -1
  323. package/.next/static/chunks/pages/domains/[domain]/events/[name]/v/[version]-175a58a05deb2eda.js +0 -1
  324. package/.next/static/chunks/pages/domains/[domain]/events/[name]-7c7c2526e7d63883.js +0 -1
  325. package/.next/static/chunks/pages/domains/[domain]/services/[name]-f447208842a47b40.js +0 -1
  326. package/.next/static/chunks/pages/domains/[domain]-ea20e2daae1794fc.js +0 -1
  327. package/.next/static/chunks/pages/domains-71179cbdb719a0f8.js +0 -1
  328. package/.next/static/chunks/pages/events/[name]/logs-695c5b2cfd996539.js +0 -1
  329. package/.next/static/chunks/pages/events/[name]/v/[version]-af687afaafd7fd45.js +0 -1
  330. package/.next/static/chunks/pages/events/[name]-24bc568718357116.js +0 -1
  331. package/.next/static/chunks/pages/events-05ca59359ab07aa2.js +0 -1
  332. package/.next/static/chunks/pages/index-68062a10328e7d10.js +0 -1
  333. package/.next/static/chunks/pages/overview-68b31b232c5ef1ff.js +0 -1
  334. package/.next/static/chunks/pages/services/[name]-b59b95836832898e.js +0 -1
  335. package/.next/static/chunks/pages/services-2c63507ae596def3.js +0 -1
  336. package/.next/static/chunks/pages/users/[id]-7306f8a1d8a7012a.js +0 -1
  337. package/.next/static/chunks/pages/users-412f257b1de51363.js +0 -1
  338. package/.next/static/chunks/pages/visualiser-8474d03175cf9d12.js +0 -1
  339. package/.next/static/chunks/polyfills-c67a75d1b6f99dc8.js +0 -1
  340. package/.next/static/chunks/webpack-7e93d0cba2ccf996.js +0 -1
  341. package/.next/static/css/7e14b4dede1671ad.css +0 -1
  342. package/.next/static/css/94b9a747218712b2.css +0 -3
  343. package/.next/static/css/ae8abf3666c55019.css +0 -5
  344. package/.next/static/css/cc3c8fcadcf7a58b.css +0 -1
  345. package/.next/static/css/deb57cf90a65a90f.css +0 -1
  346. package/.next/static/css/ed97de5465a152bb.css +0 -1
  347. package/.next/static/rP51t_ISuRqZMVs4QvwfY/_buildManifest.js +0 -1
  348. package/.next/static/rP51t_ISuRqZMVs4QvwfY/_ssgManifest.js +0 -1
  349. package/.next/trace +0 -141
  350. package/bin/eventcatalog.js +0 -141
  351. package/components/BreadCrumbs.tsx +0 -50
  352. package/components/ContentView.tsx +0 -123
  353. package/components/Footer.tsx +0 -31
  354. package/components/Grids/DomainGrid.tsx +0 -61
  355. package/components/Grids/EventGrid.tsx +0 -102
  356. package/components/Grids/ServiceGrid.tsx +0 -84
  357. package/components/Grids/UserGrid.tsx +0 -55
  358. package/components/Header.tsx +0 -74
  359. package/components/Mdx/AsyncApiSpec.tsx +0 -25
  360. package/components/Mdx/Examples.tsx +0 -70
  361. package/components/Mdx/NodeGraph/GraphElements.tsx +0 -294
  362. package/components/Mdx/NodeGraph/GraphLayout.ts +0 -110
  363. package/components/Mdx/NodeGraph/Node.tsx +0 -15
  364. package/components/Mdx/NodeGraph/NodeGraph.tsx +0 -168
  365. package/components/Mdx/NodeGraph/__tests__/GraphElements.spec.ts +0 -102
  366. package/components/Mdx/NodeGraph/__tests__/GraphLayout.spec.ts +0 -115
  367. package/components/Mdx/NodeGraph/__tests__/__snapshots__/GraphElements.spec.ts.snap +0 -559
  368. package/components/Mdx/NodeGraph/__tests__/__snapshots__/GraphLayout.spec.ts.snap +0 -81
  369. package/components/Mdx/OpenApiSpec.tsx +0 -21
  370. package/components/Mdx/SchemaViewer/SchemaViewer.module.css +0 -5
  371. package/components/Mdx/SchemaViewer/SchemaViewer.tsx +0 -34
  372. package/components/Mermaid/index.tsx +0 -58
  373. package/components/NotFound/index.tsx +0 -40
  374. package/components/Sidebars/DomainSidebar.tsx +0 -55
  375. package/components/Sidebars/EventSidebar.tsx +0 -172
  376. package/components/Sidebars/ServiceSidebar.tsx +0 -128
  377. package/components/Sidebars/components/ExternalLinks.tsx +0 -28
  378. package/components/Sidebars/components/ItemList.tsx +0 -32
  379. package/components/Sidebars/components/Owners.tsx +0 -38
  380. package/components/Sidebars/components/Tags.tsx +0 -45
  381. package/components/SyntaxHighlighter.tsx +0 -42
  382. package/eventcatalog.config.js +0 -58
  383. package/eventcatalog.styles.css +0 -15
  384. package/hooks/EventCatalog.tsx +0 -54
  385. package/lib/__tests__/assets/domains/User/events/UserCreated/index.md +0 -20
  386. package/lib/__tests__/assets/domains/User/events/UserRemoved/examples/Basic.cs +0 -31
  387. package/lib/__tests__/assets/domains/User/events/UserRemoved/examples/Basic.js +0 -1
  388. package/lib/__tests__/assets/domains/User/events/UserRemoved/index.md +0 -16
  389. package/lib/__tests__/assets/domains/User/events/UserRemoved/schema.json +0 -4
  390. package/lib/__tests__/assets/domains/User/index.md +0 -16
  391. package/lib/__tests__/assets/domains/User/services/User Service/index.md +0 -19
  392. package/lib/__tests__/assets/events/AddedItemToCart/index.md +0 -25
  393. package/lib/__tests__/assets/events/EmailSent/index.md +0 -15
  394. package/lib/__tests__/assets/events/EventWithSchemaAndExamples/examples/Basic.cs +0 -31
  395. package/lib/__tests__/assets/events/EventWithSchemaAndExamples/examples/Basic.js +0 -1
  396. package/lib/__tests__/assets/events/EventWithSchemaAndExamples/index.md +0 -8
  397. package/lib/__tests__/assets/events/EventWithSchemaAndExamples/schema.json +0 -4
  398. package/lib/__tests__/assets/events/EventWithVersions/index.md +0 -10
  399. package/lib/__tests__/assets/events/EventWithVersions/versioned/0.0.1/index.md +0 -10
  400. package/lib/__tests__/assets/services/Basket Service/index.md +0 -26
  401. package/lib/__tests__/assets/services/Email Platform/index.md +0 -17
  402. package/lib/__tests__/assets/services/Payment Service/index.md +0 -7
  403. package/lib/__tests__/domains.spec.ts +0 -416
  404. package/lib/__tests__/events.spec.ts +0 -514
  405. package/lib/__tests__/file-reader.spec.ts +0 -69
  406. package/lib/__tests__/graphs.spec.ts +0 -88
  407. package/lib/__tests__/services.spec.ts +0 -268
  408. package/lib/analytics.ts +0 -30
  409. package/lib/domains.ts +0 -160
  410. package/lib/events.ts +0 -313
  411. package/lib/file-reader.ts +0 -76
  412. package/lib/graphs.ts +0 -92
  413. package/lib/services.ts +0 -126
  414. package/next-env.d.ts +0 -5
  415. package/next.config.js +0 -11
  416. package/out/404/index.html +0 -12
  417. package/out/404.html +0 -12
  418. package/out/_next/data/rP51t_ISuRqZMVs4QvwfY/domains/Orders/events/OrderComplete/logs.json +0 -1
  419. package/out/_next/data/rP51t_ISuRqZMVs4QvwfY/domains/Orders/events/OrderComplete.json +0 -1
  420. package/out/_next/data/rP51t_ISuRqZMVs4QvwfY/domains/Orders/events/OrderConfirmed/logs.json +0 -1
  421. package/out/_next/data/rP51t_ISuRqZMVs4QvwfY/domains/Orders/events/OrderConfirmed.json +0 -1
  422. package/out/_next/data/rP51t_ISuRqZMVs4QvwfY/domains/Orders/events/OrderCreated/logs.json +0 -1
  423. package/out/_next/data/rP51t_ISuRqZMVs4QvwfY/domains/Orders/events/OrderCreated.json +0 -1
  424. package/out/_next/data/rP51t_ISuRqZMVs4QvwfY/domains/Orders/events/OrderRequested/logs.json +0 -1
  425. package/out/_next/data/rP51t_ISuRqZMVs4QvwfY/domains/Orders/events/OrderRequested.json +0 -1
  426. package/out/_next/data/rP51t_ISuRqZMVs4QvwfY/domains/Orders/services/Orders Service.json +0 -1
  427. package/out/_next/data/rP51t_ISuRqZMVs4QvwfY/domains/Orders.json +0 -1
  428. package/out/_next/data/rP51t_ISuRqZMVs4QvwfY/domains/Shopping/events/AddedItemToCart/logs.json +0 -1
  429. package/out/_next/data/rP51t_ISuRqZMVs4QvwfY/domains/Shopping/events/AddedItemToCart/v/0.0.1.json +0 -1
  430. package/out/_next/data/rP51t_ISuRqZMVs4QvwfY/domains/Shopping/events/AddedItemToCart/v/0.0.2.json +0 -1
  431. package/out/_next/data/rP51t_ISuRqZMVs4QvwfY/domains/Shopping/events/AddedItemToCart.json +0 -1
  432. package/out/_next/data/rP51t_ISuRqZMVs4QvwfY/domains/Shopping/events/RemovedItemFromCart/logs.json +0 -1
  433. package/out/_next/data/rP51t_ISuRqZMVs4QvwfY/domains/Shopping/events/RemovedItemFromCart.json +0 -1
  434. package/out/_next/data/rP51t_ISuRqZMVs4QvwfY/domains/Shopping.json +0 -1
  435. package/out/_next/data/rP51t_ISuRqZMVs4QvwfY/domains.json +0 -1
  436. package/out/_next/data/rP51t_ISuRqZMVs4QvwfY/events/PaymentProcessed/logs.json +0 -1
  437. package/out/_next/data/rP51t_ISuRqZMVs4QvwfY/events/PaymentProcessed.json +0 -1
  438. package/out/_next/data/rP51t_ISuRqZMVs4QvwfY/events/ShipmentDelivered/logs.json +0 -1
  439. package/out/_next/data/rP51t_ISuRqZMVs4QvwfY/events/ShipmentDelivered.json +0 -1
  440. package/out/_next/data/rP51t_ISuRqZMVs4QvwfY/events/ShipmentDispatched/logs.json +0 -1
  441. package/out/_next/data/rP51t_ISuRqZMVs4QvwfY/events/ShipmentDispatched.json +0 -1
  442. package/out/_next/data/rP51t_ISuRqZMVs4QvwfY/events/ShipmentPrepared/logs.json +0 -1
  443. package/out/_next/data/rP51t_ISuRqZMVs4QvwfY/events/ShipmentPrepared.json +0 -1
  444. package/out/_next/data/rP51t_ISuRqZMVs4QvwfY/events.json +0 -1
  445. package/out/_next/data/rP51t_ISuRqZMVs4QvwfY/overview.json +0 -1
  446. package/out/_next/data/rP51t_ISuRqZMVs4QvwfY/services/Orders Service.json +0 -1
  447. package/out/_next/data/rP51t_ISuRqZMVs4QvwfY/services/Payment Service.json +0 -1
  448. package/out/_next/data/rP51t_ISuRqZMVs4QvwfY/services/Shipping Service.json +0 -1
  449. package/out/_next/data/rP51t_ISuRqZMVs4QvwfY/services.json +0 -1
  450. package/out/_next/data/rP51t_ISuRqZMVs4QvwfY/users/dboyne.json +0 -1
  451. package/out/_next/data/rP51t_ISuRqZMVs4QvwfY/users/mSmith.json +0 -1
  452. package/out/_next/data/rP51t_ISuRqZMVs4QvwfY/visualiser.json +0 -1
  453. package/out/_next/static/chunks/020d8314.2bae2f29ef0060e4.js +0 -1
  454. package/out/_next/static/chunks/1178-011609b6f3b123b3.js +0 -1
  455. package/out/_next/static/chunks/1476.eb11ab1feb4c5940.js +0 -1
  456. package/out/_next/static/chunks/1484.274df63eb11d9d68.js +0 -1
  457. package/out/_next/static/chunks/172-940ad0353b57ff98.js +0 -1
  458. package/out/_next/static/chunks/1750.a25eb3336a8c3a36.js +0 -1
  459. package/out/_next/static/chunks/2017.1b67898bd26fe157.js +0 -1
  460. package/out/_next/static/chunks/2027.80b01f1a7005a770.js +0 -1
  461. package/out/_next/static/chunks/2076.21cb0bf760a8055d.js +0 -1
  462. package/out/_next/static/chunks/2583.56889bb376087220.js +0 -1
  463. package/out/_next/static/chunks/2620-21775e17d8a6a407.js +0 -1
  464. package/out/_next/static/chunks/2765.dda8bae3343b6d41.js +0 -1
  465. package/out/_next/static/chunks/2edb282b-45c56c19221816df.js +0 -1
  466. package/out/_next/static/chunks/3082.62ff47793d562412.js +0 -1
  467. package/out/_next/static/chunks/3116-e9a578a270d9e013.js +0 -1
  468. package/out/_next/static/chunks/3260.00ac1405e82b8dd9.js +0 -1
  469. package/out/_next/static/chunks/3706.64742528652de3dd.js +0 -1
  470. package/out/_next/static/chunks/3ede58a6.ff6c02b372da8155.js +0 -1
  471. package/out/_next/static/chunks/4042.98f113bfbf744466.js +0 -1
  472. package/out/_next/static/chunks/4079.75a5db02e1a11105.js +0 -1
  473. package/out/_next/static/chunks/438.dea6dada9bd4b683.js +0 -1
  474. package/out/_next/static/chunks/4384-8a28a71e7e3b8d8a.js +0 -1
  475. package/out/_next/static/chunks/4637.6819aa53bf80d6ff.js +0 -1
  476. package/out/_next/static/chunks/4816.03f53c476d2a5924.js +0 -1
  477. package/out/_next/static/chunks/5048.73fa7a6d734ba5ef.js +0 -1
  478. package/out/_next/static/chunks/5202.6f686702cbb58a65.js +0 -1
  479. package/out/_next/static/chunks/5464.4c916df2382b5ba9.js +0 -1
  480. package/out/_next/static/chunks/5493-b00dc3d50ab46716.js +0 -1
  481. package/out/_next/static/chunks/5644.b4ffa0632405fc9f.js +0 -1
  482. package/out/_next/static/chunks/5a7b57ef.d0702578743545b0.js +0 -1
  483. package/out/_next/static/chunks/60.40ff539d26f28401.js +0 -1
  484. package/out/_next/static/chunks/6101.a35579324b3356df.js +0 -1
  485. package/out/_next/static/chunks/6194.045435de6d19fc72.js +0 -1
  486. package/out/_next/static/chunks/6772-fba69ba8e4fa1ef4.js +0 -1
  487. package/out/_next/static/chunks/6778.7885dc0a314c5a9c.js +0 -1
  488. package/out/_next/static/chunks/6790-f4527d80153a3e25.js +0 -1
  489. package/out/_next/static/chunks/7005-09e42f99859b8d03.js +0 -1
  490. package/out/_next/static/chunks/7109-c8d3fde4c3b6798e.js +0 -1
  491. package/out/_next/static/chunks/7195.2768b2bb31a65f2f.js +0 -1
  492. package/out/_next/static/chunks/7458.1de01a44cd67f6f0.js +0 -1
  493. package/out/_next/static/chunks/7f5d3f51-659399fe6f04b9eb.js +0 -1
  494. package/out/_next/static/chunks/8264-a1b0376ff4b3d4da.js +0 -1
  495. package/out/_next/static/chunks/828-ef0e36f29db31dde.js +0 -1
  496. package/out/_next/static/chunks/8341-b8d844d6f606aed5.js +0 -1
  497. package/out/_next/static/chunks/8720.e06d4cca843573db.js +0 -1
  498. package/out/_next/static/chunks/8785.1331b2a6d4be82c3.js +0 -1
  499. package/out/_next/static/chunks/8829-386c887227aab68c.js +0 -1
  500. package/out/_next/static/chunks/9054.ae9ffec47aacae76.js +0 -1
  501. package/out/_next/static/chunks/9097.1efc23284d82765c.js +0 -1
  502. package/out/_next/static/chunks/9231.af30fa4fedab9f01.js +0 -1
  503. package/out/_next/static/chunks/9497.49670ee9a8bd76f7.js +0 -1
  504. package/out/_next/static/chunks/9600.f70c0583d23764a8.js +0 -1
  505. package/out/_next/static/chunks/9822.0ad553e5c697208c.js +0 -1
  506. package/out/_next/static/chunks/9930.28415573db2b7806.js +0 -7
  507. package/out/_next/static/chunks/b9e0c7b4-52b02c0d4f161186.js +0 -1
  508. package/out/_next/static/chunks/d57e5a30-463f9ed8df724792.js +0 -1
  509. package/out/_next/static/chunks/eb6e03f4.2276f931f02e235c.js +0 -1
  510. package/out/_next/static/chunks/f4df0e03.56d1c15b5532ab26.js +0 -1
  511. package/out/_next/static/chunks/framework-6cc1bceeaaf75e91.js +0 -1
  512. package/out/_next/static/chunks/main-da37322a396d572a.js +0 -1
  513. package/out/_next/static/chunks/pages/_app-d40841fd52b70886.js +0 -1
  514. package/out/_next/static/chunks/pages/_error-c36fa6f7fd569cf6.js +0 -1
  515. package/out/_next/static/chunks/pages/domains/[domain]/events/[name]/logs-350f383eed1cf3f8.js +0 -1
  516. package/out/_next/static/chunks/pages/domains/[domain]/events/[name]/v/[version]-175a58a05deb2eda.js +0 -1
  517. package/out/_next/static/chunks/pages/domains/[domain]/events/[name]-7c7c2526e7d63883.js +0 -1
  518. package/out/_next/static/chunks/pages/domains/[domain]/services/[name]-f447208842a47b40.js +0 -1
  519. package/out/_next/static/chunks/pages/domains/[domain]-ea20e2daae1794fc.js +0 -1
  520. package/out/_next/static/chunks/pages/domains-71179cbdb719a0f8.js +0 -1
  521. package/out/_next/static/chunks/pages/events/[name]/logs-695c5b2cfd996539.js +0 -1
  522. package/out/_next/static/chunks/pages/events/[name]/v/[version]-af687afaafd7fd45.js +0 -1
  523. package/out/_next/static/chunks/pages/events/[name]-24bc568718357116.js +0 -1
  524. package/out/_next/static/chunks/pages/events-05ca59359ab07aa2.js +0 -1
  525. package/out/_next/static/chunks/pages/index-68062a10328e7d10.js +0 -1
  526. package/out/_next/static/chunks/pages/overview-68b31b232c5ef1ff.js +0 -1
  527. package/out/_next/static/chunks/pages/services/[name]-b59b95836832898e.js +0 -1
  528. package/out/_next/static/chunks/pages/services-2c63507ae596def3.js +0 -1
  529. package/out/_next/static/chunks/pages/users/[id]-7306f8a1d8a7012a.js +0 -1
  530. package/out/_next/static/chunks/pages/users-412f257b1de51363.js +0 -1
  531. package/out/_next/static/chunks/pages/visualiser-8474d03175cf9d12.js +0 -1
  532. package/out/_next/static/chunks/polyfills-c67a75d1b6f99dc8.js +0 -1
  533. package/out/_next/static/chunks/webpack-7e93d0cba2ccf996.js +0 -1
  534. package/out/_next/static/css/7e14b4dede1671ad.css +0 -1
  535. package/out/_next/static/css/94b9a747218712b2.css +0 -3
  536. package/out/_next/static/css/ae8abf3666c55019.css +0 -5
  537. package/out/_next/static/css/cc3c8fcadcf7a58b.css +0 -1
  538. package/out/_next/static/css/deb57cf90a65a90f.css +0 -1
  539. package/out/_next/static/css/ed97de5465a152bb.css +0 -1
  540. package/out/_next/static/rP51t_ISuRqZMVs4QvwfY/_buildManifest.js +0 -1
  541. package/out/_next/static/rP51t_ISuRqZMVs4QvwfY/_ssgManifest.js +0 -1
  542. package/out/domains/Orders/events/OrderComplete/index.html +0 -40
  543. package/out/domains/Orders/events/OrderComplete/logs/index.html +0 -1
  544. package/out/domains/Orders/events/OrderConfirmed/index.html +0 -40
  545. package/out/domains/Orders/events/OrderConfirmed/logs/index.html +0 -1
  546. package/out/domains/Orders/events/OrderCreated/index.html +0 -2
  547. package/out/domains/Orders/events/OrderCreated/logs/index.html +0 -1
  548. package/out/domains/Orders/events/OrderRequested/index.html +0 -40
  549. package/out/domains/Orders/events/OrderRequested/logs/index.html +0 -1
  550. package/out/domains/Orders/index.html +0 -2
  551. package/out/domains/Orders/services/Orders Service/index.html +0 -2
  552. package/out/domains/Shopping/events/AddedItemToCart/index.html +0 -65
  553. package/out/domains/Shopping/events/AddedItemToCart/logs/index.html +0 -1
  554. package/out/domains/Shopping/events/AddedItemToCart/v/0.0.1/index.html +0 -59
  555. package/out/domains/Shopping/events/AddedItemToCart/v/0.0.2/index.html +0 -66
  556. package/out/domains/Shopping/events/RemovedItemFromCart/index.html +0 -48
  557. package/out/domains/Shopping/events/RemovedItemFromCart/logs/index.html +0 -1
  558. package/out/domains/Shopping/index.html +0 -2
  559. package/out/domains/index.html +0 -3
  560. package/out/events/PaymentProcessed/index.html +0 -44
  561. package/out/events/PaymentProcessed/logs/index.html +0 -1
  562. package/out/events/ShipmentDelivered/index.html +0 -44
  563. package/out/events/ShipmentDelivered/logs/index.html +0 -1
  564. package/out/events/ShipmentDispatched/index.html +0 -44
  565. package/out/events/ShipmentDispatched/logs/index.html +0 -1
  566. package/out/events/ShipmentPrepared/index.html +0 -2
  567. package/out/events/ShipmentPrepared/logs/index.html +0 -1
  568. package/out/events/index.html +0 -11
  569. package/out/favicon.ico +0 -0
  570. package/out/index.html +0 -1
  571. package/out/logo-random.svg +0 -114
  572. package/out/logo.svg +0 -44
  573. package/out/opengraph.png +0 -0
  574. package/out/overview/index.html +0 -1
  575. package/out/services/Orders Service/index.html +0 -1
  576. package/out/services/Payment Service/index.html +0 -2
  577. package/out/services/Shipping Service/index.html +0 -2
  578. package/out/services/index.html +0 -4
  579. package/out/users/dboyne/index.html +0 -16
  580. package/out/users/index.html +0 -1
  581. package/out/users/mSmith/index.html +0 -13
  582. package/out/visualiser/index.html +0 -16
  583. package/pages/_app.tsx +0 -111
  584. package/pages/_document.tsx +0 -18
  585. package/pages/domains/[domain]/events/[name]/logs.tsx +0 -35
  586. package/pages/domains/[domain]/events/[name]/v/[version].tsx +0 -39
  587. package/pages/domains/[domain]/events/[name].tsx +0 -46
  588. package/pages/domains/[domain]/index.tsx +0 -137
  589. package/pages/domains/[domain]/services/[name].tsx +0 -42
  590. package/pages/domains.tsx +0 -210
  591. package/pages/events/[name]/logs.tsx +0 -177
  592. package/pages/events/[name]/v/[version].tsx +0 -38
  593. package/pages/events/[name].tsx +0 -223
  594. package/pages/events.tsx +0 -357
  595. package/pages/index.tsx +0 -56
  596. package/pages/overview.tsx +0 -89
  597. package/pages/services/[name].tsx +0 -164
  598. package/pages/services.tsx +0 -311
  599. package/pages/users/[id].tsx +0 -101
  600. package/pages/users.tsx +0 -43
  601. package/pages/visualiser.tsx +0 -322
  602. package/postcss.config.js +0 -6
  603. package/public/logo-random.svg +0 -114
  604. package/public/logo.svg +0 -44
  605. package/scripts/__tests__/assets/eventcatalog.config.js +0 -32
  606. package/scripts/__tests__/generate.spec.ts +0 -36
  607. package/scripts/generate.js +0 -28
  608. package/scripts/move-schemas-for-download.js +0 -80
  609. package/styles/Home.module.css +0 -116
  610. package/styles/globals.css +0 -85
  611. package/tailwind.config.js +0 -36
  612. package/types/index.ts +0 -7
  613. package/utils/random-bg.ts +0 -13
  614. /package/{lib/__tests__/assets/services/Payment Service/openapi.yaml → public/openapi.yml} +0 -0
@@ -0,0 +1,42 @@
1
+ ---
2
+ import OwnersList from '@components/Lists/OwnersList';
3
+ import PillList from '@components/Lists/PillList';
4
+ import VersionList from '@components/Lists/VersionList.astro';
5
+ import { getEntry, type CollectionEntry } from 'astro:content';
6
+ interface Props {
7
+ domain: CollectionEntry<'domains'>;
8
+ }
9
+
10
+ const { domain } = Astro.props;
11
+
12
+ // @ts-ignore
13
+ const services = domain.data.services as CollectionEntry<'services'>[] || [];
14
+
15
+ const ownersRaw = domain.data?.owners || [];
16
+ const owners = await Promise.all(ownersRaw.map((o) => getEntry(o)));
17
+
18
+ const serviceList = services.map((p) => ({
19
+ label: p.data.id,
20
+ badge: p.collection,
21
+ tag: `v${p.data.version}`,
22
+ href: `/docs/${p.collection}/${p.data.id}`,
23
+ }));
24
+
25
+ const ownersList = owners.map((o) => ({
26
+ label: o.data.name,
27
+ type: o.collection,
28
+ badge: o.collection === 'users' ? o.data.role : 'Team',
29
+ avatarUrl: o.collection === 'users' ? o.data.avatarUrl : '',
30
+ href: `/docs/${o.collection}/${o.data.id}`,
31
+ }));
32
+
33
+ ---
34
+
35
+ <aside class="sticky top-28 left-0 space-y-8 h-full overflow-y-auto">
36
+ <div>
37
+ <PillList title={`Services (${services.length})`} pills={serviceList} emptyMessage={`This domain does not contain any services.`} color="pink" client:load />
38
+ <OwnersList title={`Service owners (${ownersList.length})`} owners={ownersList} emptyMessage={`This domain does not have any documented owners.`} client:load />
39
+ {domain.data.versions && <VersionList versions={domain.data.versions} collectionItem={domain} />}
40
+ <a href={`/visualiser/${domain.collection}/${domain.data.id}/${domain.data.version}`} class="block text-center rounded-md w-full bg-white px-3.5 py-2.5 text-sm font-semibold text-gray-900 shadow-sm ring-1 ring-inset ring-gray-300 hover:bg-gray-100/60 hover:text-purple-500">View in Visualiser</a>
41
+ </div>
42
+ </aside>
@@ -0,0 +1,81 @@
1
+ ---
2
+ import { getEntry, type CollectionEntry } from 'astro:content';
3
+ import PillList from '@components/Lists/PillList';
4
+ import OwnersList from '@components/Lists/OwnersList';
5
+ import type { CollectionMessageTypes } from '@types';
6
+ import * as path from 'path';
7
+ import VersionList from '@components/Lists/VersionList.astro';
8
+ interface Props {
9
+ message: CollectionEntry<CollectionMessageTypes>;
10
+ }
11
+
12
+ const { message } = Astro.props;
13
+
14
+ const producers = (message.data.producers as CollectionEntry<'services'>[]) || [];
15
+ const consumers = (message.data.consumers as CollectionEntry<'services'>[]) || [];
16
+
17
+ const ownersRaw = message.data?.owners || [];
18
+ const owners = await Promise.all(ownersRaw.map((o) => getEntry(o)));
19
+
20
+ const producerList = producers.map((p) => ({
21
+ label: `${p.data.name} (service)`,
22
+ tag: `v${p.data.version}`,
23
+ href: `/docs/services/${p.data.id}/${p.data.version}`,
24
+ }));
25
+
26
+ const consumerList = consumers.map((p) => ({
27
+ label: `${p.data.name} (service)`,
28
+ tag: `v${p.data.version}`,
29
+ href: `/docs/services/${p.data.id}/${p.data.version}`,
30
+ }));
31
+
32
+ const ownersList = owners.map((o) => ({
33
+ label: o.data.name,
34
+ type: o.collection,
35
+ badge: o.collection === 'users' ? o.data.role : 'Team',
36
+ avatarUrl: o.collection === 'users' ? o.data.avatarUrl : '',
37
+ href: `/docs/${o.collection}/${o.data.id}`,
38
+ }));
39
+
40
+ const type = message.collection.slice(0, -1);
41
+
42
+ // @ts-ignore
43
+ const publicPath = message?.catalog?.publicPath;
44
+ const schemaFilePath = message?.data?.schemaPath;
45
+ const schemaURL = path.join(publicPath, schemaFilePath || '')
46
+
47
+ ---
48
+
49
+ <aside class="sticky top-28 left-0 space-y-8 h-full overflow-y-auto">
50
+ <div class="">
51
+ <PillList color="pink" title={`${type} Producers (${producerList.length})`} pills={producerList} emptyMessage={`This ${type} does not get produced by any services.`} client:load />
52
+ <PillList color="pink" title={`${type} Consumers (${consumerList.length})`} pills={consumerList} emptyMessage={`This ${type} does not get consumed by any services.`} client:load />
53
+ <OwnersList title={`${type} owners (${ownersList.length})`} owners={ownersList} emptyMessage={`This ${type} does not have any documented owners.`} client:load />
54
+
55
+ {message.data.versions && <VersionList versions={message.data.versions} collectionItem={message} />}
56
+
57
+ <div class="space-y-2">
58
+ {
59
+ message?.data?.schemaPath && (
60
+ <a
61
+ href={schemaURL}
62
+ download={`${message.data.name}(${message.data.version})-${schemaFilePath}`}
63
+ class="hidden w-full md:inline-flex h-10 justify-center px-4 py-2 border border-gray-300 shadow-sm text-sm font-medium rounded-md text-gray-200 bg-gray-800 hover:bg-gray-600 focus:outline-none focus:ring-2 focus:ring-offset-2 focus:ring-gray-900"
64
+ >
65
+ <>
66
+ <svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke-width="2" stroke="currentColor" aria-hidden="true" class="-ml-1 mr-2 h-5 w-5 text-gray-200">
67
+ <path stroke-linecap="round" stroke-linejoin="round" d="M4 16v1a3 3 0 003 3h10a3 3 0 003-3v-1m-4-4l-4 4m0 0l-4-4m4 4V4" />
68
+ </svg>
69
+ <span>Download Schema</span>
70
+ </>
71
+ </a>
72
+ )
73
+ }
74
+ <a
75
+ href={`/visualiser/${message.collection}/${message.data.id}/${message.data.version}`}
76
+ class="block text-center rounded-md w-full bg-white px-3.5 py-2.5 text-sm font-semibold text-gray-900 shadow-sm ring-1 ring-inset ring-gray-300 hover:bg-gray-100/60 hover:text-purple-500"
77
+ >View in Visualiser</a
78
+ >
79
+ </div>
80
+ </div>
81
+ </aside>
@@ -0,0 +1,93 @@
1
+ ---
2
+ import OwnersList from '@components/Lists/OwnersList';
3
+ import PillList from '@components/Lists/PillList';
4
+ import VersionList from '@components/Lists/VersionList.astro';
5
+ import { getEntry, type CollectionEntry } from 'astro:content';
6
+ import { join } from 'node:path'
7
+ interface Props {
8
+ service: CollectionEntry<'services'>;
9
+ }
10
+
11
+ const { service } = Astro.props;
12
+
13
+ // @ts-ignore
14
+ const sends = service.data.sends as CollectionEntry<'events'>[] || [];
15
+ // @ts-ignore
16
+ const receives = service.data.receives as CollectionEntry<'events'>[] || [];
17
+
18
+ const ownersRaw = service.data?.owners || [];
19
+ const owners = await Promise.all(ownersRaw.map((o) => getEntry(o)));
20
+
21
+ const sendsList = sends.map((p) => ({
22
+ label: p.data.id,
23
+ badge: p.collection,
24
+ color: p.collection === 'events' ? 'orange' : 'blue',
25
+ tag: `v${p.data.version}`,
26
+ href: `/docs/${p.collection}/${p.data.id}/${p.data.version}`,
27
+ }));
28
+ const receivesList = receives.map((p) => ({
29
+ label: p.data.id,
30
+ badge: p.collection,
31
+ color: p.collection === 'events' ? 'orange' : 'blue',
32
+ tag: `v${p.data.version}`,
33
+ href: `/docs/${p.collection}/${p.data.id}/${p.data.version}`,
34
+ }));
35
+
36
+ const ownersList = owners.map((o) => ({
37
+ label: o.data.name,
38
+ type: o.collection,
39
+ badge: o.collection === 'users' ? o.data.role : 'Team',
40
+ avatarUrl: o.collection === 'users' ? o.data.avatarUrl : '',
41
+ href: `/docs/${o.collection}/${o.data.id}`,
42
+ }));
43
+
44
+ // @ts-ignore
45
+ const publicPath = service?.catalog?.publicPath;
46
+ const schemaFilePath = service?.data?.schemaPath;
47
+ const schemaURL = join(publicPath, schemaFilePath || '')
48
+
49
+
50
+ ---
51
+
52
+ <aside class="sticky top-28 left-0 space-y-8 h-full overflow-y-auto">
53
+ <div id="sidebar-cta-portal">
54
+ <PillList title={`Receives Messages (${receivesList.length})`} pills={receivesList} emptyMessage={`This service does not receive any messages.`} color="orange" client:load />
55
+ <PillList title={`Sends Messages (${sendsList.length})`} pills={sendsList} emptyMessage={`This service does not send any messages.`} color="orange" client:load />
56
+ <OwnersList title={`Service owners (${ownersList.length})`} owners={ownersList} emptyMessage={`This service does not have any documented owners.`} client:load />
57
+
58
+ {service.data.versions && <VersionList versions={service.data.versions} collectionItem={service} />}
59
+
60
+ <div class="space-y-2">
61
+ {
62
+ service?.data?.schemaPath && (
63
+ <a
64
+ href={schemaURL}
65
+ download={`${service.data.name}(${service.data.version})-${schemaFilePath}`}
66
+ class="hidden w-full md:inline-flex h-10 justify-center px-4 py-2 border border-gray-300 shadow-sm text-sm font-medium rounded-md text-gray-200 bg-gray-800 hover:bg-gray-600 focus:outline-none focus:ring-2 focus:ring-offset-2 focus:ring-gray-900"
67
+ >
68
+ <>
69
+ <svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke-width="2" stroke="currentColor" aria-hidden="true" class="-ml-1 mr-2 h-5 w-5 text-gray-200">
70
+ <path stroke-linecap="round" stroke-linejoin="round" d="M4 16v1a3 3 0 003 3h10a3 3 0 003-3v-1m-4-4l-4 4m0 0l-4-4m4 4V4" />
71
+ </svg>
72
+ <span>Download Schema</span>
73
+ </>
74
+ </a>
75
+ )
76
+ }
77
+ <a href={`/visualiser/${service.collection}/${service.data.id}/${service.data.version}`} class="block text-center rounded-md w-full bg-white px-3.5 py-2.5 text-sm font-semibold text-gray-900 shadow-sm ring-1 ring-inset ring-gray-300 hover:bg-gray-100/60 hover:text-purple-500">View in Visualiser</a>
78
+ <a id="open-api-button" href={`/docs/${service.collection}/${service.data.id}/${service.data.version}/spec`} class="hidden text-center rounded-md w-full bg-white px-3.5 py-2.5 text-sm font-semibold text-gray-900 shadow-sm ring-1 ring-inset ring-gray-300 hover:bg-gray-100/60 hover:text-purple-500">View API spec</a>
79
+ </div>
80
+ </div>
81
+ </aside>
82
+
83
+ <script>
84
+ // If openapi-component is in the dom then show the button, when dom has loaded
85
+ document.addEventListener('DOMContentLoaded', () => {
86
+ const openApiComponent = document.getElementById('openapi-component');
87
+ const openApiButton = document.getElementById('open-api-button');
88
+ if (openApiComponent && openApiButton) {
89
+ openApiButton.style.display = 'block';
90
+ }
91
+ });
92
+
93
+ </script>
@@ -0,0 +1,32 @@
1
+ import { useEffect, useState } from 'react';
2
+
3
+ import React from 'react';
4
+
5
+ const DebouncedInput = ({
6
+ value: initialValue,
7
+ onChange,
8
+ debounce = 500,
9
+ ...props
10
+ }: {
11
+ value: string | number;
12
+ onChange: (value: string | number) => void;
13
+ debounce?: number;
14
+ } & Omit<React.InputHTMLAttributes<HTMLInputElement>, 'onChange'>) => {
15
+ const [value, setValue] = useState(initialValue);
16
+
17
+ useEffect(() => {
18
+ setValue(initialValue);
19
+ }, [initialValue]);
20
+
21
+ useEffect(() => {
22
+ const timeout = setTimeout(() => {
23
+ onChange(value);
24
+ }, debounce);
25
+
26
+ return () => clearTimeout(timeout);
27
+ }, [value]);
28
+
29
+ return <input {...props} value={value} onChange={(e) => setValue(e.target.value)} />;
30
+ };
31
+
32
+ export default DebouncedInput;
@@ -0,0 +1,228 @@
1
+ import {
2
+ flexRender,
3
+ getCoreRowModel,
4
+ getFacetedMinMaxValues,
5
+ getFacetedRowModel,
6
+ getFacetedUniqueValues,
7
+ getFilteredRowModel,
8
+ getPaginationRowModel,
9
+ useReactTable,
10
+ type Column,
11
+ type ColumnFiltersState,
12
+ type Row,
13
+ } from '@tanstack/react-table';
14
+ import type { CollectionEntry } from 'astro:content';
15
+ import DebouncedInput from './DebouncedInput';
16
+
17
+ import { getColumnsByCollection } from './columns';
18
+ import { useMemo, useState } from 'react';
19
+ import type { CollectionTypes } from '@types';
20
+
21
+ declare module '@tanstack/react-table' {
22
+ // @ts-ignore
23
+ interface ColumnMeta<TData extends RowData, TValue> {
24
+ filterVariant?: 'collection' | 'name';
25
+ collectionFilterKey?: string;
26
+ showFilter?: boolean;
27
+ className?: string;
28
+ }
29
+ }
30
+
31
+ export const Table = ({
32
+ data: initialData,
33
+ collection,
34
+ mode = 'simple',
35
+ }: {
36
+ data: CollectionEntry<'events'>[];
37
+ collection: string;
38
+ mode: 'simple' | 'full';
39
+ }) => {
40
+ const [data, _setData] = useState(initialData);
41
+ const [columnFilters, setColumnFilters] = useState<ColumnFiltersState>([]);
42
+
43
+ const columns = useMemo(() => getColumnsByCollection(collection), [collection]);
44
+
45
+ const table = useReactTable({
46
+ // @ts-ignore
47
+ data,
48
+ columns,
49
+ onColumnFiltersChange: setColumnFilters,
50
+ getCoreRowModel: getCoreRowModel(),
51
+ getFilteredRowModel: getFilteredRowModel(),
52
+ getFacetedRowModel: getFacetedRowModel(), // client-side faceting
53
+ getFacetedUniqueValues: getFacetedUniqueValues(), // generate unique values for select filter/autocomplete
54
+ getFacetedMinMaxValues: getFacetedMinMaxValues(), // generate min/max values for range filter
55
+ getPaginationRowModel: getPaginationRowModel(),
56
+ state: {
57
+ columnFilters,
58
+ },
59
+ });
60
+
61
+ return (
62
+ <>
63
+ {/* <div className='text-right text-gray-400'>{table.getPrePaginationRowModel().rows.length} results</div> */}
64
+ <div className=" bg-gray-100/20 rounded-md border-2 border-gray-200 shadow-sm ">
65
+ <table className="min-w-full divide-y divide-gray-200 rounded-md ">
66
+ <thead className="bg-gray-200/50">
67
+ {table.getHeaderGroups().map((headerGroup) => (
68
+ <tr key={headerGroup.id} className="rounded-tl-lg">
69
+ {headerGroup.headers.map((header) => (
70
+ <th key={`${header.id}`} className="pl-4 pr-3 text-left text-sm font-semibold text-gray-800 sm:pl-0 ">
71
+ <div className="flex flex-col justify-start px-2 py-2 space-y-2">
72
+ <div className="text-md">
73
+ {header.isPlaceholder ? null : flexRender(header.column.columnDef.header, header.getContext())}
74
+ </div>
75
+ {/* @ts-ignore */}
76
+ <div className="">
77
+ {header.column.columnDef.meta?.showFilter !== false && <Filter column={header.column} />}
78
+ {header.column.columnDef.meta?.showFilter == false && <div className="h-10" />}
79
+ </div>
80
+ </div>
81
+ </th>
82
+ ))}
83
+ </tr>
84
+ ))}
85
+ </thead>
86
+
87
+ <tbody className="divide-y divide-gray-300 ">
88
+ {table.getRowModel().rows.map((row, index) => (
89
+ <tr key={`${row.id}-${index}`}>
90
+ {row.getVisibleCells().map((cell) => (
91
+ <td
92
+ key={cell.id}
93
+ className={`whitespace-nowrap py-4 pl-4 pr-3 text-sm font-medium text-gray-900 ${cell.column.columnDef.meta?.className}`}
94
+ >
95
+ {flexRender(cell.column.columnDef.cell, cell.getContext())}
96
+ </td>
97
+ ))}
98
+ </tr>
99
+ ))}
100
+ </tbody>
101
+ </table>
102
+ </div>
103
+ <div>
104
+ <div className="h-8" />
105
+ <div className="flex items-center gap-2 justify-end px-4 ">
106
+ <button
107
+ className="relative inline-flex items-center rounded-l-md bg-white px-2 py-1 text-gray-400 ring-1 ring-inset ring-gray-300 hover:bg-gray-50 focus:z-10"
108
+ onClick={() => table.setPageIndex(0)}
109
+ disabled={!table.getCanPreviousPage()}
110
+ >
111
+ {'<<'}
112
+ </button>
113
+ <button
114
+ className="relative inline-flex items-center bg-white px-2 py-1 text-gray-400 ring-1 ring-inset ring-gray-300 hover:bg-gray-50 focus:z-10"
115
+ onClick={() => table.previousPage()}
116
+ disabled={!table.getCanPreviousPage()}
117
+ >
118
+ {'<'}
119
+ </button>
120
+ <button
121
+ className="relative inline-flex items-center bg-white px-2 py-1 text-gray-400 ring-1 ring-inset ring-gray-300 hover:bg-gray-50 focus:z-10"
122
+ onClick={() => table.nextPage()}
123
+ disabled={!table.getCanNextPage()}
124
+ >
125
+ {'>'}
126
+ </button>
127
+ <button
128
+ className="relative inline-flex items-center rounded-r-md bg-white px-2 py-1 text-gray-400 ring-1 ring-inset ring-gray-300 hover:bg-gray-50 focus:z-10"
129
+ onClick={() => table.setPageIndex(table.getPageCount() - 1)}
130
+ disabled={!table.getCanNextPage()}
131
+ >
132
+ {'>>'}
133
+ </button>
134
+ <span className="flex items-center gap-1">
135
+ <div>Page</div>
136
+ <strong>
137
+ {table.getState().pagination.pageIndex + 1} of {table.getPageCount()}
138
+ </strong>
139
+ </span>
140
+ <span className="flex items-center gap-1">
141
+ | Go to page:
142
+ <input
143
+ type="number"
144
+ defaultValue={table.getState().pagination.pageIndex + 1}
145
+ onChange={(e) => {
146
+ const page = e.target.value ? Number(e.target.value) - 1 : 0;
147
+ table.setPageIndex(page);
148
+ }}
149
+ className="border border-gray-300 p-1 rounded w-16"
150
+ />
151
+ </span>
152
+ <select
153
+ value={table.getState().pagination.pageSize}
154
+ onChange={(e) => {
155
+ table.setPageSize(Number(e.target.value));
156
+ }}
157
+ >
158
+ {[10, 20, 30, 40, 50].map((pageSize) => (
159
+ <option key={pageSize} value={pageSize}>
160
+ Show {pageSize}
161
+ </option>
162
+ ))}
163
+ </select>
164
+ </div>
165
+ </div>
166
+ </>
167
+ );
168
+ };
169
+
170
+ function Filter({ column }: { column: Column<any, unknown> }) {
171
+ const { filterVariant, collectionFilterKey = '' } = column.columnDef.meta ?? {};
172
+
173
+ const columnFilterValue = column.getFilterValue();
174
+
175
+ const sortedUniqueValues = useMemo(() => {
176
+ if (filterVariant === 'collection') {
177
+ const rows = column.getFacetedRowModel().rows;
178
+ const data = rows
179
+ .map((row: Row<CollectionEntry<CollectionTypes>>) => {
180
+ // @ts-ignore
181
+ const items = row.original.data[collectionFilterKey];
182
+ return items as CollectionEntry<CollectionTypes>[];
183
+ })
184
+ .flat();
185
+
186
+ const allItems = data.map((item) => `${item.data.name} (v${item.data.version})`);
187
+ const uniqueItemsInList = Array.from(new Set(allItems));
188
+
189
+ return uniqueItemsInList.sort().slice(0, 2000);
190
+ }
191
+ if (filterVariant === 'name') {
192
+ const rows = column.getFacetedRowModel().rows;
193
+ const data = rows
194
+ .map((row: Row<CollectionEntry<CollectionTypes>>) => {
195
+ // @ts-ignore
196
+ const data = row.original;
197
+ return data as CollectionEntry<CollectionTypes>;
198
+ })
199
+ .flat();
200
+
201
+ const allItems = data.map((item) => `${item.data.name} (v${item.data.version})`);
202
+ const uniqueItemsInList = Array.from(new Set(allItems));
203
+
204
+ return uniqueItemsInList.sort().slice(0, 2000);
205
+ }
206
+ return Array.from(column.getFacetedUniqueValues().keys()).sort().slice(0, 2000);
207
+ }, [column.getFacetedUniqueValues(), filterVariant]);
208
+
209
+ return (
210
+ <>
211
+ {/* Autocomplete suggestions from faceted values feature */}
212
+ <datalist id={column.id + 'list'}>
213
+ {sortedUniqueValues.map((value: any, index) => (
214
+ <option value={value} key={`${value}-${index}`} />
215
+ ))}
216
+ </datalist>
217
+ <DebouncedInput
218
+ type="text"
219
+ value={(columnFilterValue ?? '') as string}
220
+ onChange={(value) => column.setFilterValue(value)}
221
+ placeholder={`Search... ${!column?.columnDef?.meta?.filterVariant ? `(${column.getFacetedUniqueValues().size})` : ''}`}
222
+ className="w-full p-2 border shadow rounded"
223
+ list={column.id + 'list'}
224
+ />
225
+ <div className="h-1" />
226
+ </>
227
+ );
228
+ }
@@ -0,0 +1,118 @@
1
+ import { ServerIcon } from '@heroicons/react/20/solid';
2
+ import { RectangleGroupIcon } from '@heroicons/react/20/solid';
3
+ import { createColumnHelper } from '@tanstack/react-table';
4
+ import type { CollectionEntry } from 'astro:content';
5
+ import { filterByName, filterCollectionByName } from '../filters/custom-filters';
6
+
7
+ const columnHelper = createColumnHelper<CollectionEntry<'domains'>>();
8
+
9
+ export const columns = () => [
10
+ columnHelper.accessor('data.name', {
11
+ id: 'name',
12
+ header: () => <span>Domain</span>,
13
+ cell: (info) => {
14
+ const messageRaw = info.row.original;
15
+ const color = 'yellow';
16
+ return (
17
+ <div className=" group ">
18
+ <a
19
+ href={`/docs/${messageRaw.collection}/${messageRaw.data.id}/${messageRaw.data.version}`}
20
+ className={`group-hover:text-${color}-500 flex space-x-1 items-center`}
21
+ >
22
+ <div className={`flex items-center border border-gray-300 shadow-sm rounded-md group-hover:border-${color}-400`}>
23
+ <span className="flex items-center">
24
+ <span className={`bg-${color}-500 group-hover:bg-${color}-600 h-full rounded-tl rounded-bl p-1`}>
25
+ <RectangleGroupIcon className="h-4 w-4 text-white" />
26
+ </span>
27
+ <span className="leading-none px-2 group-hover:underline group-hover:text-purple-500 font-light">
28
+ {messageRaw.data.name} (v{messageRaw.data.version})
29
+ </span>
30
+ </span>
31
+ </div>
32
+ </a>
33
+ </div>
34
+ );
35
+ },
36
+ footer: (info) => info.column.id,
37
+ meta: {
38
+ filterVariant: 'name',
39
+ },
40
+ filterFn: filterByName,
41
+ }),
42
+ // columnHelper.accessor('data.version', {
43
+ // header: () => <span>Version</span>,
44
+ // cell: (info) => {
45
+ // const service = info.row.original;
46
+ // return <div className="text-left font-light">{`v${info.getValue()} ${service.data.latestVersion === service.data.version ? '(latest)': ''}`}</div>
47
+ // },
48
+ // footer: (info) => info.column.id,
49
+ // }),
50
+ columnHelper.accessor('data.summary', {
51
+ id: 'summary',
52
+ header: () => 'Summary',
53
+ cell: (info) => <span className="font-light ">{info.renderValue()}</span>,
54
+ footer: (info) => info.column.id,
55
+ meta: {
56
+ showFilter: false,
57
+ },
58
+ }),
59
+ columnHelper.accessor('data.services', {
60
+ header: () => <span>Services</span>,
61
+ meta: {
62
+ filterVariant: 'collection',
63
+ collectionFilterKey: 'services',
64
+ },
65
+ cell: (info) => {
66
+ const services = info.getValue();
67
+ if (services?.length === 0 || !services)
68
+ return <div className="text-sm text-gray-400/80 text-left italic">Domain has no services.</div>;
69
+
70
+ return (
71
+ <ul>
72
+ {services.map((consumer: any) => {
73
+ const color = 'pink';
74
+ return (
75
+ <li key={consumer.data.id} className="py-1 group ">
76
+ <a
77
+ href={`/docs/${consumer.collection}/${consumer.data.id}/${consumer.data.version}`}
78
+ className="group-hover:text-purple-500 flex space-x-1 items-center "
79
+ >
80
+ <div className={`flex items-center border border-gray-300 rounded-md`}>
81
+ <span className="flex items-center">
82
+ <span className={`bg-${color}-500 h-full rounded-tl rounded-bl p-1`}>
83
+ <ServerIcon className="h-4 w-4 text-white" />
84
+ </span>
85
+ <span className="leading-none px-2 group-hover:underline font-light ">
86
+ {consumer.data.name} (v{consumer.data.version})
87
+ </span>
88
+ </span>
89
+ </div>
90
+ </a>
91
+ </li>
92
+ );
93
+ })}
94
+ </ul>
95
+ );
96
+ },
97
+ // footer: (info) => info.column.id,
98
+ filterFn: filterCollectionByName('services'),
99
+ }),
100
+ columnHelper.accessor('data.name', {
101
+ header: () => <span />,
102
+ cell: (info) => {
103
+ const domain = info.row.original;
104
+ return (
105
+ <a
106
+ className="hover:text-purple-500 hover:underline px-4 font-light"
107
+ href={`/visualiser/${domain.collection}/${domain.data.id}/${domain.data.version}`}
108
+ >
109
+ Visualiser &rarr;
110
+ </a>
111
+ );
112
+ },
113
+ id: 'actions',
114
+ meta: {
115
+ showFilter: false,
116
+ },
117
+ }),
118
+ ];