@eventcatalog/core 2.10.1 → 2.11.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 (41) hide show
  1. package/CHANGELOG.md +6 -0
  2. package/README.md +10 -2
  3. package/images/sponsors/gravitee-logo-black.svg +54 -0
  4. package/package.json +4 -1
  5. package/public/icons/discord.svg +1 -0
  6. package/public/icons/github-purple.svg +1 -0
  7. package/src/components/DocsNavigation.astro +12 -12
  8. package/src/components/Header.astro +18 -18
  9. package/src/components/Lists/OwnersList.tsx +21 -58
  10. package/src/components/Lists/PillList.tsx +20 -16
  11. package/src/components/Lists/PillListFlat.styles.css +8 -0
  12. package/src/components/Lists/PillListFlat.tsx +69 -0
  13. package/src/components/Lists/SpecificationsList.astro +4 -4
  14. package/src/components/Lists/VersionList.astro +33 -13
  15. package/src/components/Search.astro +5 -2
  16. package/src/components/SideBars/CatalogResourcesSideBar/index.tsx +120 -0
  17. package/src/components/SideBars/CatalogResourcesSideBar/styles.css +8 -0
  18. package/src/components/SideBars/DomainSideBar.astro +15 -8
  19. package/src/components/SideBars/MessageSideBar.astro +51 -43
  20. package/src/components/SideBars/ServiceSideBar.astro +23 -31
  21. package/src/components/Tables/Table.tsx +2 -2
  22. package/src/components/Tables/columns/MessageTableColumns.tsx +4 -4
  23. package/src/components/Tables/columns/ServiceTableColumns.tsx +4 -4
  24. package/src/layouts/DiscoverLayout.astro +7 -7
  25. package/src/layouts/Footer.astro +1 -1
  26. package/src/layouts/VerticalSideBarLayout.astro +312 -0
  27. package/src/layouts/VisualiserLayout.astro +6 -10
  28. package/src/pages/docs/[type]/[id]/[version]/asyncapi/index.astro +3 -2
  29. package/src/pages/docs/[type]/[id]/[version]/changelog/index.astro +40 -5
  30. package/src/pages/docs/[type]/[id]/[version]/index.astro +149 -144
  31. package/src/pages/docs/[type]/[id]/[version]/spec/index.astro +13 -3
  32. package/src/pages/docs/[type]/[id]/[version]/spec/styles.css +3 -0
  33. package/src/pages/docs/index.astro +4 -4
  34. package/src/pages/docs/teams/[id]/index.astro +13 -10
  35. package/src/pages/docs/users/[id]/index.astro +115 -91
  36. package/src/pages/index.astro +83 -63
  37. package/src/pages/visualiser/[type]/[id]/[version]/index.astro +3 -1
  38. package/src/utils/collections/icons.ts +33 -0
  39. package/tailwind.config.mjs +2 -1
  40. package/src/components/Lists/BasicList.tsx +0 -59
  41. package/src/layouts/DocsLayout.astro +0 -62
package/CHANGELOG.md CHANGED
@@ -1,5 +1,11 @@
1
1
  # @eventcatalog/core
2
2
 
3
+ ## 2.11.0
4
+
5
+ ### Minor Changes
6
+
7
+ - 597dcf2: feat(core): UI improvements to EventCatalog
8
+
3
9
  ## 2.10.1
4
10
 
5
11
  ### Patch Changes
package/README.md CHANGED
@@ -113,9 +113,9 @@ You can see the markdown files that generated the website in the GitHub repo und
113
113
 
114
114
  # Sponsors
115
115
 
116
- Thank you to our project sponsors.
116
+ Thank you to our project sponsors.
117
117
 
118
- <hr />
118
+ ## Gold sponsors
119
119
 
120
120
  <div align="center">
121
121
  <img alt="hookdeck" src="./images/sponsors/hookdeck.svg" />
@@ -125,6 +125,14 @@ Thank you to our project sponsors.
125
125
 
126
126
  <hr />
127
127
 
128
+ <div align="center">
129
+ <img alt="hookdeck" src="./images/sponsors/gravitee-logo-black.svg" width="50%" />
130
+ <p style="margin: 0; padding: 0;">Manage, secure, and govern every API in your organization</p>
131
+ <a href="https://gravitee.io?utm_source=eventcatalog&utm_medium=web&utm_campaign=sponsorship" target="_blank" >Learn more</a>
132
+ </div>
133
+
134
+ <hr />
135
+
128
136
  _Sponsors help make EventCatalog sustainable, want to help the project? Get in touch! Or [visit our sponsor page](https://www.eventcatalog.dev/support)._
129
137
 
130
138
  # Enterprise support
@@ -0,0 +1,54 @@
1
+ <?xml version="1.0" encoding="utf-8"?>
2
+ <!-- Generator: Adobe Illustrator 26.0.2, SVG Export Plug-In . SVG Version: 6.00 Build 0) -->
3
+ <svg version="1.1" id="Layer_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
4
+ viewBox="0 0 624.3 125.8" style="enable-background:new 0 0 624.3 125.8;" xml:space="preserve">
5
+ <style type="text/css">
6
+ .st0{fill:#000;}
7
+ </style>
8
+ <g>
9
+ <g>
10
+ <path class="st0" d="M279.4,85.5V23.7c0-1.6,1.3-2.9,2.9-2.9h5.7c1.6,0,2.9,1.3,2.9,2.9v61.8c0,1.6-1.3,2.9-2.9,2.9h-5.7
11
+ C280.7,88.4,279.4,87.1,279.4,85.5z"/>
12
+ <path class="st0" d="M282.3,0h5.7c1.6,0,2.9,1.3,2.9,2.9v5.7c0,1.6-1.3,2.9-2.9,2.9h-5.7c-1.6,0-2.9-1.3-2.9-2.9V2.9
13
+ C279.4,1.3,280.7,0,282.3,0z"/>
14
+ </g>
15
+ <path class="st0" d="M515,77h5.7c1.6,0,2.9,1.3,2.9,2.9v5.7c0,1.6-1.3,2.9-2.9,2.9H515c-1.6,0-2.9-1.3-2.9-2.9v-5.7
16
+ C512.1,78.2,513.4,77,515,77z"/>
17
+ <path class="st0" d="M266,20.9l-5.8,0c-1.8,0.1-3.3,1.2-3.8,2.9l-14.3,50.7c-0.4,2.1-2.5,3.4-4.5,3c-1.5-0.3-2.7-1.5-3-3.1
18
+ l-14.3-50.6c-0.5-1.7-2-2.9-3.8-2.9l-5.8,0c-1.2-0.1-2.3,0.8-2.4,2.1c0,0.3,0,0.6,0.1,0.9l15.1,53.8h0c2.2,8.1,10.6,12.9,18.7,10.7
19
+ c5.3-1.4,9.5-5.7,10.8-11l15-53.5c0.4-1.2-0.2-2.4-1.4-2.8C266.6,20.9,266.3,20.8,266,20.9z"/>
20
+ <g>
21
+ <path class="st0" d="M539.6,1.1L539.6,1.1c1.6,0,2.9,1.3,2.9,2.9v5.7c0,1.6-1.3,2.9-2.9,2.9l0,0c-1.6,0-2.9-1.3-2.9-2.9V3.9
22
+ C536.8,2.3,538.1,1.1,539.6,1.1z"/>
23
+ <path class="st0" d="M539.6,21.9L539.6,21.9c1.6,0,2.9,1.3,2.9,2.9v61.8c0,1.6-1.3,2.9-2.9,2.9l0,0c-1.6,0-2.9-1.3-2.9-2.9V24.7
24
+ C536.8,23.1,538.1,21.9,539.6,21.9z"/>
25
+ </g>
26
+ <path class="st0" d="M607.3,26.6c6.2,0,11.3,5.1,11.3,11.3V71c0,6.2-5.1,11.3-11.3,11.3h-34c-6.2,0-11.3-5.1-11.3-11.3V37.9
27
+ c0-6.2,5.1-11.3,11.3-11.3H607.3 M607.3,21h-34c-9.4,0-17,7.6-17,17V71c0,9.4,7.6,17,17,17h34c9.4,0,17-7.6,17-17V37.9
28
+ C624.3,28.6,616.7,21,607.3,21C607.3,21,607.3,21,607.3,21L607.3,21z"/>
29
+ <path class="st0" d="M79.7,21H21.2c-9.4,0-17,7.6-17,17c0,0,0,0,0,0v25.5c0,4.1,1.5,8,4.1,11.1c-4.8,5.2-5.5,13-1.7,19
30
+ C2.5,96.8,0,101.7,0,107v1.8c0,9.4,7.6,17,17,17h46.5c9.4,0,17-7.6,17-17V107c0-9.4-7.6-17-17-17H20.2v0c-2.7,0-4.8-2.2-4.7-4.9
31
+ c0-2.6,2.2-4.7,4.8-4.7h0.2c0.3,0,38.9,0,38.9,0c9.4,0,17-7.6,17-17c0,0,0,0,0,0l0.1-29c0-1.3,1-2.3,2.3-2.3h1.1
32
+ c1.5,0,2.8-1.3,2.8-2.8v-5.6C82.5,22.2,81.2,21,79.7,21z M69.3,107v1.8c0,3.2-2.6,5.8-5.8,5.8H17c-3.2,0-5.8-2.6-5.8-5.8V107
33
+ c0-3.2,2.6-5.8,5.8-5.8h46.5C66.7,101.2,69.3,103.8,69.3,107z M65,63.5c0,3.2-2.6,5.8-5.8,5.8h-38c-3.2,0-5.8-2.6-5.8-5.8V37.9
34
+ c0-3.2,2.6-5.8,5.8-5.8h38c3.2,0,5.8,2.6,5.8,5.8L65,63.5z"/>
35
+ <path class="st0" d="M123.6,21l-14.3,0c-9.4,0-17,7.6-17,17v47.6c0,1.5,1.2,2.8,2.8,2.8c0,0,0,0,0,0h5.6c1.5,0,2.8-1.2,2.8-2.8
36
+ c0,0,0,0,0,0l0-47.6c0-3.2,2.6-5.8,5.8-5.8h14.3c1.5,0,2.8-1.2,2.8-2.8c0,0,0,0,0,0v-5.6C126.4,22.2,125.1,21,123.6,21z"/>
37
+ <path class="st0" d="M338.4,32.2c1.6,0,2.9-1.3,2.9-2.9c0,0,0,0,0,0v-5.7c0-1.6-1.3-2.9-2.9-2.9l0,0h-15.8v-18
38
+ c0-1.5-1.2-2.8-2.8-2.8c0,0,0,0,0,0h-5.6c-1.5,0-2.8,1.2-2.8,2.8c0,0,0,0,0,0v18h-5.7c-1.6,0-2.9,1.3-2.9,2.9c0,0,0,0,0,0v5.7
39
+ c0,1.6,1.3,2.9,2.9,2.9c0,0,0,0,0,0h5.7v38.9c0,9.4,7.6,17,17,17l10,0c1.5,0,2.8-1.2,2.8-2.8l0,0v-5.6c0-1.5-1.2-2.8-2.8-2.8l0,0
40
+ h-10c-3.2,0-5.8-2.6-5.8-5.8l0-38.9L338.4,32.2z"/>
41
+ <path class="st0" d="M182.5,21l-43.5,0c-1.5,0-2.8,1.2-2.8,2.8c0,0,0,0,0,0v5.6c0,1.5,1.2,2.8,2.8,2.8h43.5c3.2,0,5.8,2.6,5.8,5.8
42
+ v7.4c-1.9-0.7-3.8-1-5.8-1h-33.4c-9.4,0-17,7.6-17,17v9.9c0,9.4,7.6,17,17,17l0,0h33.4c9.4,0,17-7.6,17-17V37.9
43
+ C199.4,28.6,191.8,21,182.5,21z M182.5,77h-33.4c-3.2,0-5.8-2.6-5.8-5.8v-9.9c0-3.2,2.6-5.8,5.8-5.8h33.4c3.1,0,5.7,2.5,5.8,5.6
44
+ v2.7c0,0,0,0.1,0,0.1v7.4C188.3,74.4,185.7,77,182.5,77L182.5,77z"/>
45
+ <path class="st0" d="M406.7,62.4c9.4,0,17-7.6,17-17v-7.5c0-9.4-7.6-17-17-17h-37.4c-9.4,0-17,7.6-17,17v0v4.8h0c0,0.1,0,0.1,0,0.2
46
+ v28.2c0,9.4,7.6,17,17,17l0,0l47.5,0c1.5,0,2.8-1.2,2.8-2.8l0,0v-5.6c0-1.5-1.2-2.8-2.8-2.8l0,0h-47.5c-3.2,0-5.8-2.6-5.8-5.8v-8.7
47
+ L406.7,62.4z M363.5,42.7v-4.8c0-3.2,2.6-5.8,5.8-5.8h37.4c3.2,0,5.8,2.6,5.8,5.8v7.5c0,3.2-2.6,5.8-5.8,5.8h-43.2v-8.3
48
+ C363.5,42.8,363.5,42.7,363.5,42.7L363.5,42.7z"/>
49
+ <path class="st0" d="M489,62.4c9.4,0,17-7.6,17-17c0,0,0,0,0,0v-7.5c0-9.4-7.6-17-17-17l0,0h-37.4c-9.4,0-17,7.6-17,17v0v4.8h0
50
+ c0,0.1,0,0.1,0,0.2v28.2c0,9.4,7.6,17,17,17l0,0l47.5,0c1.5,0,2.8-1.2,2.8-2.8l0,0v-5.6c0-1.5-1.2-2.8-2.8-2.8l0,0h-47.5
51
+ c-3.2,0-5.8-2.6-5.8-5.8v-8.7L489,62.4z M445.8,42.7v-4.8c0-3.2,2.6-5.8,5.8-5.8H489c3.2,0,5.8,2.6,5.8,5.8v7.5
52
+ c0,3.2-2.6,5.8-5.8,5.8h-43.2v-8.3C445.8,42.8,445.8,42.7,445.8,42.7L445.8,42.7z"/>
53
+ </g>
54
+ </svg>
package/package.json CHANGED
@@ -6,7 +6,7 @@
6
6
  "url": "https://github.com/event-catalog/eventcatalog.git"
7
7
  },
8
8
  "type": "module",
9
- "version": "2.10.1",
9
+ "version": "2.11.0",
10
10
  "publishConfig": {
11
11
  "access": "public"
12
12
  },
@@ -51,6 +51,7 @@
51
51
  "@tanstack/react-table": "^8.17.3",
52
52
  "@types/dagre": "^0.7.52",
53
53
  "@types/diff": "^5.2.2",
54
+ "@types/lodash.debounce": "^4.0.9",
54
55
  "@types/lodash.merge": "4.6.9",
55
56
  "@types/node": "^20.14.2",
56
57
  "@types/semver": "^7.5.8",
@@ -68,7 +69,9 @@
68
69
  "glob": "^10.4.1",
69
70
  "gray-matter": "^4.0.3",
70
71
  "html-to-image": "^1.11.11",
72
+ "lodash.debounce": "^4.0.8",
71
73
  "lodash.merge": "4.6.2",
74
+ "lucide-react": "^0.453.0",
72
75
  "mermaid": "^10.9.1",
73
76
  "rapidoc": "^9.3.4",
74
77
  "react": "^18.3.1",
@@ -0,0 +1 @@
1
+ <svg fill="#8a31da" viewBox="0 0 32 32" version="1.1" xmlns="http://www.w3.org/2000/svg"><g id="SVGRepo_bgCarrier" stroke-width="0"></g><g id="SVGRepo_tracerCarrier" stroke-linecap="round" stroke-linejoin="round"></g><g id="SVGRepo_iconCarrier"> <title>discord</title> <path d="M20.992 20.163c-1.511-0.099-2.699-1.349-2.699-2.877 0-0.051 0.001-0.102 0.004-0.153l-0 0.007c-0.003-0.048-0.005-0.104-0.005-0.161 0-1.525 1.19-2.771 2.692-2.862l0.008-0c1.509 0.082 2.701 1.325 2.701 2.847 0 0.062-0.002 0.123-0.006 0.184l0-0.008c0.003 0.050 0.005 0.109 0.005 0.168 0 1.523-1.191 2.768-2.693 2.854l-0.008 0zM11.026 20.163c-1.511-0.099-2.699-1.349-2.699-2.877 0-0.051 0.001-0.102 0.004-0.153l-0 0.007c-0.003-0.048-0.005-0.104-0.005-0.161 0-1.525 1.19-2.771 2.692-2.862l0.008-0c1.509 0.082 2.701 1.325 2.701 2.847 0 0.062-0.002 0.123-0.006 0.184l0-0.008c0.003 0.048 0.005 0.104 0.005 0.161 0 1.525-1.19 2.771-2.692 2.862l-0.008 0zM26.393 6.465c-1.763-0.832-3.811-1.49-5.955-1.871l-0.149-0.022c-0.005-0.001-0.011-0.002-0.017-0.002-0.035 0-0.065 0.019-0.081 0.047l-0 0c-0.234 0.411-0.488 0.924-0.717 1.45l-0.043 0.111c-1.030-0.165-2.218-0.259-3.428-0.259s-2.398 0.094-3.557 0.275l0.129-0.017c-0.27-0.63-0.528-1.142-0.813-1.638l0.041 0.077c-0.017-0.029-0.048-0.047-0.083-0.047-0.005 0-0.011 0-0.016 0.001l0.001-0c-2.293 0.403-4.342 1.060-6.256 1.957l0.151-0.064c-0.017 0.007-0.031 0.019-0.040 0.034l-0 0c-2.854 4.041-4.562 9.069-4.562 14.496 0 0.907 0.048 1.802 0.141 2.684l-0.009-0.11c0.003 0.029 0.018 0.053 0.039 0.070l0 0c2.14 1.601 4.628 2.891 7.313 3.738l0.176 0.048c0.008 0.003 0.018 0.004 0.028 0.004 0.032 0 0.060-0.015 0.077-0.038l0-0c0.535-0.72 1.044-1.536 1.485-2.392l0.047-0.1c0.006-0.012 0.010-0.027 0.010-0.043 0-0.041-0.026-0.075-0.062-0.089l-0.001-0c-0.912-0.352-1.683-0.727-2.417-1.157l0.077 0.042c-0.029-0.017-0.048-0.048-0.048-0.083 0-0.031 0.015-0.059 0.038-0.076l0-0c0.157-0.118 0.315-0.24 0.465-0.364 0.016-0.013 0.037-0.021 0.059-0.021 0.014 0 0.027 0.003 0.038 0.008l-0.001-0c2.208 1.061 4.8 1.681 7.536 1.681s5.329-0.62 7.643-1.727l-0.107 0.046c0.012-0.006 0.025-0.009 0.040-0.009 0.022 0 0.043 0.008 0.059 0.021l-0-0c0.15 0.124 0.307 0.248 0.466 0.365 0.023 0.018 0.038 0.046 0.038 0.077 0 0.035-0.019 0.065-0.046 0.082l-0 0c-0.661 0.395-1.432 0.769-2.235 1.078l-0.105 0.036c-0.036 0.014-0.062 0.049-0.062 0.089 0 0.016 0.004 0.031 0.011 0.044l-0-0.001c0.501 0.96 1.009 1.775 1.571 2.548l-0.040-0.057c0.017 0.024 0.046 0.040 0.077 0.040 0.010 0 0.020-0.002 0.029-0.004l-0.001 0c2.865-0.892 5.358-2.182 7.566-3.832l-0.065 0.047c0.022-0.016 0.036-0.041 0.039-0.069l0-0c0.087-0.784 0.136-1.694 0.136-2.615 0-5.415-1.712-10.43-4.623-14.534l0.052 0.078c-0.008-0.016-0.022-0.029-0.038-0.036l-0-0z"></path> </g></svg>
@@ -0,0 +1 @@
1
+ <svg fill="#8a31da" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 496 512"><!--! Font Awesome Pro 6.5.1 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license (Commercial License) Copyright 2023 Fonticons, Inc. --><path d="M165.9 397.4c0 2-2.3 3.6-5.2 3.6-3.3.3-5.6-1.3-5.6-3.6 0-2 2.3-3.6 5.2-3.6 3-.3 5.6 1.3 5.6 3.6zm-31.1-4.5c-.7 2 1.3 4.3 4.3 4.9 2.6 1 5.6 0 6.2-2s-1.3-4.3-4.3-5.2c-2.6-.7-5.5.3-6.2 2.3zm44.2-1.7c-2.9.7-4.9 2.6-4.6 4.9.3 2 2.9 3.3 5.9 2.6 2.9-.7 4.9-2.6 4.6-4.6-.3-1.9-3-3.2-5.9-2.9zM244.8 8C106.1 8 0 113.3 0 252c0 110.9 69.8 205.8 169.5 239.2 12.8 2.3 17.3-5.6 17.3-12.1 0-6.2-.3-40.4-.3-61.4 0 0-70 15-84.7-29.8 0 0-11.4-29.1-27.8-36.6 0 0-22.9-15.7 1.6-15.4 0 0 24.9 2 38.6 25.8 21.9 38.6 58.6 27.5 72.9 20.9 2.3-16 8.8-27.1 16-33.7-55.9-6.2-112.3-14.3-112.3-110.5 0-27.5 7.6-41.3 23.6-58.9-2.6-6.5-11.1-33.3 2.6-67.9 20.9-6.5 69 27 69 27 20-5.6 41.5-8.5 62.8-8.5s42.8 2.9 62.8 8.5c0 0 48.1-33.6 69-27 13.7 34.7 5.2 61.4 2.6 67.9 16 17.7 25.8 31.5 25.8 58.9 0 96.5-58.9 104.2-114.8 110.5 9.2 7.9 17 22.9 17 46.4 0 33.7-.3 75.4-.3 83.6 0 6.5 4.6 14.4 17.3 12.1C428.2 457.8 496 362.9 496 252 496 113.3 383.5 8 244.8 8zM97.2 352.9c-1.3 1-1 3.3.7 5.2 1.6 1.6 3.9 2.3 5.2 1 1.3-1 1-3.3-.7-5.2-1.6-1.6-3.9-2.3-5.2-1zm-10.8-8.1c-.7 1.3.3 2.9 2.3 3.9 1.6 1 3.6.7 4.3-.7.7-1.3-.3-2.9-2.3-3.9-2-.6-3.6-.3-4.3.7zm32.4 35.6c-1.6 1.3-1 4.3 1.3 6.2 2.3 2.3 5.2 2.6 6.5 1 1.3-1.3.7-4.3-1.3-6.2-2.2-2.3-5.2-2.6-6.5-1zm-11.4-14.7c-1.6 1-1.6 3.6 0 5.9 1.6 2.3 4.3 3.3 5.6 2.3 1.6-1.3 1.6-3.9 0-6.2-1.4-2.3-4-3.3-5.6-2z"/></svg>
@@ -130,16 +130,16 @@ const currentPath = Astro.url.pathname;
130
130
 
131
131
  <script>
132
132
  // Scroll to the current page element
133
- document.addEventListener('DOMContentLoaded', () => {
134
- const currentPath = document.location.pathname;
135
- const currentElement = document.getElementById(currentPath);
136
- if (currentElement) {
137
- // scroll to the current element with padding
138
- currentElement.scrollIntoView({
139
- behavior: 'auto',
140
- block: 'start',
141
- inline: 'start',
142
- });
143
- }
144
- });
133
+ // document.addEventListener('DOMContentLoaded', () => {
134
+ // const currentPath = document.location.pathname;
135
+ // const currentElement = document.getElementById(currentPath);
136
+ // if (currentElement) {
137
+ // // scroll to the current element with padding
138
+ // currentElement.scrollIntoView({
139
+ // behavior: 'auto',
140
+ // block: 'start',
141
+ // inline: 'start',
142
+ // });
143
+ // }
144
+ // });
145
145
  </script>
@@ -6,18 +6,18 @@ import { buildUrl } from '@utils/url-builder';
6
6
  const currentPath = Astro.url.pathname;
7
7
 
8
8
  const navItems = [
9
- {
10
- label: 'Docs',
11
- href: buildUrl('/docs'),
12
- },
13
- {
14
- label: 'Visualiser',
15
- href: buildUrl('/visualiser'),
16
- },
17
- {
18
- label: 'Discover',
19
- href: buildUrl('/discover/events'),
20
- },
9
+ // {
10
+ // label: 'Docs',
11
+ // href: buildUrl('/docs'),
12
+ // },
13
+ // {
14
+ // label: 'Visualiser',
15
+ // href: buildUrl('/visualiser'),
16
+ // },
17
+ // {
18
+ // label: 'Discover',
19
+ // href: buildUrl('/discover/events'),
20
+ // },
21
21
  ];
22
22
 
23
23
  const logo = {
@@ -29,9 +29,9 @@ const logo = {
29
29
 
30
30
  <nav
31
31
  id="eventcatalog-header"
32
- class="fixed top-0 left-0 right-0 z-20 bg-white border-b border-gray-100 py-3 font-bold text-xl bg-opacity-50 backdrop-blur-sm"
32
+ class="fixed top-0 left-0 right-0 bg-white border-b border-gray-200 py-3 font-bold text-xl bg-opacity-20 backdrop-blur-sm"
33
33
  >
34
- <div class="max-w-[120em] mx-auto px-4 sm:px-6 lg:px-10 xxl:max-w-[96em]">
34
+ <div class="max-w-[120em] mx-auto px-4 sm:px-4 lg:px-4 xxl:max-w-[96em]">
35
35
  <div class="flex justify-between items-center">
36
36
  <div class="flex-shrink-0 flex items-center w-1/3">
37
37
  <a href={buildUrl(catalog.landingPage || '/')} class="flex space-x-2 items-center">
@@ -45,7 +45,7 @@ const logo = {
45
45
  </div>
46
46
 
47
47
  <div class="hidden md:block w-1/3">
48
- <ul class="flex space-x-8 justify-end">
48
+ <!-- <ul class="flex space-x-8 justify-end">
49
49
  {
50
50
  navItems.map((item) => {
51
51
  const isActive = currentPath.includes(item.href);
@@ -56,7 +56,7 @@ const logo = {
56
56
  );
57
57
  })
58
58
  }
59
- </ul>
59
+ </ul> -->
60
60
  </div>
61
61
 
62
62
  <div class="md:hidden">
@@ -78,7 +78,7 @@ const logo = {
78
78
 
79
79
  <div id="mobile-menu" class="md:hidden hidden mt-4">
80
80
  <ul class="flex flex-col space-y-8 my-4 mb-8">
81
- {
81
+ <!-- {
82
82
  navItems.map((item) => {
83
83
  const isActive = currentPath.includes(item.href);
84
84
  return (
@@ -87,7 +87,7 @@ const logo = {
87
87
  </li>
88
88
  );
89
89
  })
90
- }
90
+ } -->
91
91
  </ul>
92
92
  </div>
93
93
  </div>
@@ -1,5 +1,6 @@
1
1
  import { Disclosure, DisclosureButton, DisclosurePanel } from '@headlessui/react';
2
2
  import { ChevronDownIcon } from '@heroicons/react/20/solid';
3
+ import { UserGroupIcon, UserIcon } from '@heroicons/react/24/outline';
3
4
 
4
5
  interface Props {
5
6
  title: string;
@@ -13,44 +14,36 @@ interface Props {
13
14
  emptyMessage: string;
14
15
  }
15
16
 
16
- const OwnersList2 = ({ title, owners, emptyMessage }: Props) => {
17
+ const OwnersList = ({ title, owners, emptyMessage }: Props) => {
17
18
  return (
18
19
  <div>
19
20
  <div className="mx-auto w-full max-w-lg divide-y divide-white/5 rounded-xl bg-white/5">
20
- <Disclosure as="div" className="py-4" defaultOpen={owners.length <= 5}>
21
- <DisclosureButton className="group flex w-full items-center justify-between">
22
- <span className="font-light text-black group-data-[hover]:text-black/80 capitalize"> {title} </span>
21
+ <Disclosure as="div" className="pb-8" defaultOpen={owners.length <= 5}>
22
+ <DisclosureButton className="group flex w-full items-center justify-start space-x-4">
23
+ <span className="text-sm text-black group-data-[hover]:text-black/80 capitalize"> {title} </span>
23
24
  <ChevronDownIcon className="size-5 fill-black/60 group-data-[hover]:fill-black/50 group-data-[open]:rotate-180" />
24
25
  </DisclosureButton>
25
26
  <DisclosurePanel className="mt-2 text-sm/5 text-black/50">
26
- <ul role="list" className="divide-y divide-black/5">
27
+ <ul role="list" className="space-y-2">
27
28
  {owners.map((item) => {
28
29
  return (
29
- <li className="py-3" key={item.href}>
30
- <a className="flex items-center gap-x-3 group " href={item.href}>
31
- {item.type === 'users' && item.avatarUrl && (
32
- <img
33
- src={item.avatarUrl}
34
- alt={item.label}
35
- className="w-7 h-7 rounded-full border group-hover:border-primary/60"
36
- />
30
+ <li
31
+ className="has-tooltip rounded-md text-gray-600 group px-1 w-full hover:bg-gradient-to-l hover:from-purple-500 hover:to-purple-700 hover:text-white hover:font-normal "
32
+ key={item.href}
33
+ >
34
+ <a className={`flex items-center space-x-2`} href={item.href}>
35
+ {item.type === 'users' && (
36
+ <UserIcon className="h-4 w-4 text-gray-800 group-hover:text-white" strokeWidth={1} />
37
37
  )}
38
- {(item.type === 'teams' || !item.avatarUrl) && (
39
- <span className="w-6 rounded-full mt-1 bg-red-500 block text-center text-white uppercase group-hover:bg-primary">
40
- {item.label.charAt(0)}
41
- </span>
38
+ {item.type === 'teams' && (
39
+ <UserGroupIcon className="h-4 w-4 text-gray-800 group-hover:text-white" strokeWidth={1} />
42
40
  )}
43
- {/* <span className="w-6 rounded-full mt-1 bg-red-500 block text-center text-white uppercase">{item.label.charAt(0)}</span> */}
44
- <div>
45
- <h3 className="flex-auto truncate text-sm font-semibold leading-6 text-black group-hover:underline group-hover:text-primary">
41
+ <span className="font-light text-sm truncate">{item.label}</span>
42
+ {item.label.length > 24 && (
43
+ <span className="tooltip rounded relative shadow-lg p-1 font-normal text-xs bg-white text-black ml-[30px] mt-12">
46
44
  {item.label}
47
- </h3>
48
- <div className="-mt-0.5">
49
- <span className="text-xs font-light bg-gray-100 text-gray-700 rounded-md py-0.5 group-hover:bg-primary/10">
50
- {item.badge}
51
- </span>
52
- </div>
53
- </div>
45
+ </span>
46
+ )}
54
47
  </a>
55
48
  </li>
56
49
  );
@@ -68,34 +61,4 @@ const OwnersList2 = ({ title, owners, emptyMessage }: Props) => {
68
61
  );
69
62
  };
70
63
 
71
- export default OwnersList2;
72
-
73
- // <div class="py-4">
74
- // <span class="font-light capitalize">{title}</span>
75
- // <ul role="list" class="divide-y divide-black/5">
76
- // {owners.map((item) => {
77
- // return (
78
- // <li class="py-3">
79
- // <a class="flex items-center gap-x-3 group " href={item.href}>
80
- // {item.type === 'users' && item.avatarUrl && <img src={item.avatarUrl} alt={item.label} class="w-7 h-7 rounded-full border group-hover:border-purple-300" />}
81
- // {(item.type === 'teams' || !item.avatarUrl) && (
82
- // <span class="w-6 rounded-full mt-1 bg-red-500 block text-center text-white uppercase group-hover:bg-primary">{item.label.charAt(0)}</span>
83
- // )}
84
- // {/* // <span class="w-6 rounded-full mt-1 bg-red-500 block text-center text-white uppercase">{item.label.charAt(0)}</span> */}
85
- // <div>
86
- // <h3 class="flex-auto truncate text-sm font-semibold leading-6 text-black group-hover:underline group-hover:text-purple-500">{item.label}</h3>
87
- // <div class="-mt-0.5">
88
- // <span class="text-xs font-light bg-gray-100 text-gray-700 rounded-md py-0.5 group-hover:bg-purple-100">{item.badge}</span>
89
- // </div>
90
- // </div>
91
- // </a>
92
- // </li>
93
- // );
94
- // })}
95
- // {owners.length === 0 && (
96
- // <li class="inline mr-2 leading-6 text-sm">
97
- // <span class="text-gray-500">{emptyMessage}</span>
98
- // </li>
99
- // )}
100
- // </ul>
101
- // </div>;
64
+ export default OwnersList;
@@ -1,9 +1,10 @@
1
1
  import { Disclosure, DisclosureButton, DisclosurePanel } from '@headlessui/react';
2
- import { ChevronDownIcon } from '@heroicons/react/20/solid';
2
+ import { ChevronDownIcon, ServerIcon } from '@heroicons/react/20/solid';
3
3
 
4
4
  interface Props {
5
5
  title: string;
6
6
  color: string;
7
+ icon?: React.ReactElement;
7
8
  pills: {
8
9
  label: string;
9
10
  badge?: string;
@@ -27,24 +28,27 @@ const PillList = ({ title, pills, emptyMessage, color = 'gray' }: Props) => {
27
28
  <ul role="list" className=" py-2 ">
28
29
  {pills.map((item) => {
29
30
  return (
30
- <li className="py-1" key={item.href}>
31
+ <li className="py-1 " key={item.href}>
31
32
  <a
32
- className={`flex items-start group border border-gray-200 px-4 rounded-md border-l border-l-${item.color || color}-500 border-l-8`}
33
+ className={`flex items-start group border border-pink-200 hover:border-pink-400 rounded-md`}
33
34
  href={item.href}
34
35
  >
35
- <div className="w-full">
36
- <h3 className="flex-auto truncate text-sm font-semibold leading-6 text-black group-hover:underline group-hover:text-primary">
37
- {item.label}
38
- </h3>
39
- <div className=" flex justify-between">
40
- <span className="text-xs font-light bg-gray-100 text-gray-700 rounded-md py-0.5 group-hover:bg-primary/20">
41
- {item.tag}
42
- </span>
43
- {item.badge && (
44
- <span className="text-xs font-light bg-gray-100 text-gray-700 rounded-md py-0.5 group-hover:bg-primary/20 capitalize">
45
- {item.badge.slice(0, -1)}
46
- </span>
47
- )}
36
+ <div className="flex w-full">
37
+ <div
38
+ className={`bg-${color}-500 bg-gradient-to-b from-pink-500 to-pink-700 flex items-start py-2 px-2 rounded-tl rounded-bl`}
39
+ >
40
+ <ServerIcon className="h-4 w-4 text-white" />
41
+ </div>
42
+ <div className="w-full px-2 py-1 ">
43
+ <h3 className="flex-auto truncate text-xs font-semibold text-black">{item.label}</h3>
44
+ <div className="flex justify-between w-full">
45
+ <span className="text-[10px] font-light text-gray-700 rounded-md ">{item.tag}</span>
46
+ {item.badge && (
47
+ <span className="text-[10px] font-light text-gray-700 rounded-md capitalize">
48
+ {item.badge.slice(0, -1)}
49
+ </span>
50
+ )}
51
+ </div>
48
52
  </div>
49
53
  </div>
50
54
  </a>
@@ -0,0 +1,8 @@
1
+ .tooltip {
2
+ visibility: hidden;
3
+ position: absolute;
4
+ }
5
+ .has-tooltip:hover .tooltip {
6
+ visibility: visible;
7
+ z-index: 100;
8
+ }
@@ -0,0 +1,69 @@
1
+ import { Disclosure, DisclosureButton, DisclosurePanel } from '@headlessui/react';
2
+ import { ChevronDownIcon } from '@heroicons/react/20/solid';
3
+ import { getIconForCollection as getIconForCollectionOriginal } from '@utils/collections/icons';
4
+ import { useMemo } from 'react';
5
+
6
+ import './PillListFlat.styles.css';
7
+
8
+ interface Props {
9
+ title: string;
10
+ color: string;
11
+ icon?: any;
12
+ pills: {
13
+ label: string;
14
+ badge?: string;
15
+ href: string;
16
+ tag?: string;
17
+ color?: string;
18
+ collection?: string;
19
+ }[];
20
+ emptyMessage: string;
21
+ }
22
+
23
+ const PillList = ({ title, pills, emptyMessage, color = 'gray', ...props }: Props) => {
24
+ const getIconForCollection = useMemo(() => getIconForCollectionOriginal, []);
25
+ return (
26
+ <div>
27
+ <div className="mx-auto w-full max-w-lg divide-y divide-white/5 rounded-xl bg-white/5">
28
+ <Disclosure as="div" className="pb-8" defaultOpen={pills.length <= 10}>
29
+ <DisclosureButton className="group flex w-full items-center justify-start space-x-4">
30
+ <span className="text-sm text-black group-data-[hover]:text-black/80 capitalize"> {title} </span>
31
+ <ChevronDownIcon className="size-5 ml-2 fill-black/60 group-data-[hover]:fill-black/50 group-data-[open]:rotate-180" />
32
+ </DisclosureButton>
33
+ <DisclosurePanel className="mt-2 text-sm/5 text-black/50">
34
+ <ul role="list" className="space-y-2">
35
+ {pills.map((item) => {
36
+ const Icon = item.collection ? getIconForCollection(item.collection) : null;
37
+ return (
38
+ <li
39
+ className=" has-tooltip rounded-md text-gray-600 group px-1 w-full hover:bg-gradient-to-l hover:from-purple-500 hover:to-purple-700 hover:text-white hover:font-normal "
40
+ key={item.href}
41
+ >
42
+ <a className={`flex items-center space-x-2`} href={item.href}>
43
+ {Icon && <Icon className={`h-4 w-4`} />}
44
+ <span className="font-light text-sm truncate">
45
+ {item.label} ({item.tag})
46
+ </span>
47
+ {item.label.length > 24 && (
48
+ <span className="tooltip rounded relative shadow-lg p-1 font-normal text-xs bg-white text-black ml-[30px] mt-12">
49
+ {item.label} ({item.tag})
50
+ </span>
51
+ )}
52
+ </a>
53
+ </li>
54
+ );
55
+ })}
56
+ {pills.length === 0 && (
57
+ <li className="inline mr-2 leading-tight text-xs">
58
+ <span className="text-gray-400">{emptyMessage}</span>
59
+ </li>
60
+ )}
61
+ </ul>
62
+ </DisclosurePanel>
63
+ </Disclosure>
64
+ </div>
65
+ </div>
66
+ );
67
+ };
68
+
69
+ export default PillList;
@@ -13,13 +13,13 @@ const specVersions = collectionItem.data.specifications || {};
13
13
  const numberOfSpecifications = Object.keys(specVersions).length;
14
14
  ---
15
15
 
16
- <div class="space-y-2 my-2 mb-8">
17
- <span class="font-light text-black group-data-[hover]:text-black/80 capitalize">Specifications ({numberOfSpecifications})</span>
16
+ <div class="space-y-2 mb-8">
17
+ <span class="text-sm text-black group-data-[hover]:text-black/80 capitalize">Specifications ({numberOfSpecifications})</span>
18
18
  {
19
19
  collectionItem.data.specifications?.openapiPath && (
20
20
  <a
21
21
  href={buildUrl(`/docs/${collectionItem.collection}/${collectionItem.data.id}/${collectionItem.data.version}/spec`)}
22
- class="text-sm flex items-center space-x-1 hover:underline hover:text-primary"
22
+ class="px-1 text-sm font-light flex items-center space-x-1 hover:underline hover:text-primary rounded-md hover:bg-gradient-to-l hover:from-purple-500 hover:to-purple-700 hover:text-white"
23
23
  >
24
24
  <img src={buildUrl('/icons/openapi.svg', true)} class="h-4 w-4" />
25
25
  <span>OpenAPI spec</span>
@@ -30,7 +30,7 @@ const numberOfSpecifications = Object.keys(specVersions).length;
30
30
  collectionItem.data.specifications?.asyncapiPath && (
31
31
  <a
32
32
  href={buildUrl(`/docs/${collectionItem.collection}/${collectionItem.data.id}/${collectionItem.data.version}/asyncapi`)}
33
- class="text-sm flex items-center space-x-1 hover:underline hover:text-primary"
33
+ class="px-1 text-sm font-light flex items-center space-x-1 hover:underline rounded-md hover:bg-gradient-to-l hover:from-purple-500 hover:to-purple-700 hover:text-white"
34
34
  >
35
35
  <img src={buildUrl('/icons/asyncapi.svg', true)} class="h-4 w-4" />
36
36
  <span>AsyncAPI spec</span>
@@ -2,21 +2,44 @@
2
2
  import type { CollectionTypes } from '@types';
3
3
  import { buildUrl } from '@utils/url-builder';
4
4
  import type { CollectionEntry } from 'astro:content';
5
+ import { HistoryIcon } from 'lucide-react';
5
6
 
6
7
  interface Props {
8
+ title?: string;
7
9
  versions: string[];
8
10
  collectionItem: CollectionEntry<CollectionTypes>;
9
11
  }
10
12
 
11
- const { versions, collectionItem } = Astro.props;
13
+ const { versions, collectionItem, title } = Astro.props;
12
14
  const currentPath = Astro.url.pathname;
13
15
  ---
14
16
 
15
- <div class="space-y-2 my-2 mb-8">
16
- <span class="font-light text-black group-data-[hover]:text-black/80 capitalize"
17
- >Versions ({collectionItem.data.versions?.length})</span
18
- >
19
- <select id="version" class="block bg-gray-50 rounded-md border border-gray-200 px-1 py-0.5 text-xs">
17
+ <div class="space-y-2 pb-8">
18
+ <span class="text-sm text-black group-data-[hover]:text-black/80 capitalize">
19
+ {title || `Versions (${collectionItem.data.versions?.length})`}
20
+ </span>
21
+ <ul role="list" class="space-y-2">
22
+ {
23
+ versions.map((version) => {
24
+ const isCurrent = currentPath.includes(version);
25
+ return (
26
+ <li class="rounded-md px-1 group w-full hover:bg-gradient-to-l hover:from-purple-500 hover:to-purple-700 hover:text-white hover:font-normal ">
27
+ <a
28
+ class={`flex items-center space-x-2 cursor-pointer`}
29
+ href={buildUrl(`/docs/${collectionItem.collection}/${collectionItem.data.id}/${version}`)}
30
+ >
31
+ {/* {Icon && <Icon class={`h-4 w-4`} />} */}
32
+ <HistoryIcon className="h-4 w-4 text-gray-800 group-hover:text-white" strokeWidth={1} />
33
+ <span class={`font-light text-sm ${isCurrent ? 'underline ' : ''}`}>
34
+ {version === collectionItem.data.latestVersion ? `v${version} (latest)` : `v${version}`}
35
+ </span>
36
+ </a>
37
+ </li>
38
+ );
39
+ })
40
+ }
41
+ </ul>
42
+ <!-- <select id="version" class="block bg-gray-50 rounded-md border border-gray-200 px-1 py-0.5 text-xs">
20
43
  {
21
44
  versions.map((version) => {
22
45
  const isCurrent = currentPath.includes(version);
@@ -26,19 +49,16 @@ const currentPath = Astro.url.pathname;
26
49
  value={buildUrl(`/docs/${collectionItem.collection}/${collectionItem.data.id}/${version}`)}
27
50
  class={`inline-flex items-center rounded-md px-2 py-1 text-xs text-indigo-700 ring-1 ring-inset ring-indigo-700/10 hover:bg-purple-100 hover:underline ${isCurrent ? 'bg-purple-100 text-primary underline ' : 'bg-white'}`}
28
51
  >
29
- <span>
30
- v{version}
31
- {version === collectionItem.data.latestVersion && <span>(latest)</span>}
32
- </span>
52
+ {version === collectionItem.data.latestVersion ? `v${version} (latest)` : `v${version}`}
33
53
  </option>
34
54
  );
35
55
  })
36
56
  }
37
- </select>
38
- <a
57
+ </select> -->
58
+ <!-- <a
39
59
  href={buildUrl(`/docs/${collectionItem.collection}/${collectionItem.data.id}/${collectionItem.data.latestVersion}/changelog`)}
40
60
  class="text-[10px] text-gray-500">View changelogs</a
41
- >
61
+ > -->
42
62
  </div>
43
63
 
44
64
  <script>
@@ -20,9 +20,9 @@ import PageFindSearch from 'astro-pagefind/components/Search';
20
20
  </div>
21
21
  </div>
22
22
 
23
- <div id="search-dialog" class="hidden relative z-50" role="dialog" aria-modal="true">
23
+ <div id="search-dialog" class="hidden relative z-[100]" role="dialog" aria-modal="true">
24
24
  <div class="fixed inset-0 bg-gray-500 bg-opacity-25 transition-opacity search-background backdrop-blur-sm bg-black/10"></div>
25
- <div id="search-background" class="fixed inset-0 z-10 w-screen overflow-y-auto p-4 sm:p-6 md:p-20">
25
+ <div id="search-background" class="fixed inset-0 z-40 w-screen overflow-y-auto p-4 sm:p-6 md:p-20">
26
26
  <div
27
27
  id="command-pal"
28
28
  class="mx-auto max-w-xl divide-y divide-gray-100 overflow-hidden rounded-xl bg-white shadow-2xl ring-1 ring-black ring-opacity-5 transition-all"
@@ -49,6 +49,7 @@ import PageFindSearch from 'astro-pagefind/components/Search';
49
49
  const dummyInput = document.getElementById('search-dummy-input');
50
50
  const dialog = document.getElementById('search-dialog');
51
51
  const header = document.getElementById('eventcatalog-header');
52
+ const verticalNav = document.getElementById('eventcatalog-vertical-nav');
52
53
 
53
54
  // Listen for the short cut keys
54
55
  window.addEventListener('keydown', (event) => {
@@ -75,6 +76,7 @@ import PageFindSearch from 'astro-pagefind/components/Search';
75
76
  input && input.focus();
76
77
  }, 10);
77
78
  if (header) header.classList.remove('backdrop-blur-sm');
79
+ if (verticalNav) verticalNav.style.zIndex = '-100';
78
80
  // @ts-ignore
79
81
  dialog.style.display = 'block';
80
82
  });
@@ -85,6 +87,7 @@ import PageFindSearch from 'astro-pagefind/components/Search';
85
87
  // @ts-ignore
86
88
  if (e.target.id === 'search-background') {
87
89
  if (header) header.classList.add('backdrop-blur-sm');
90
+ if (verticalNav) verticalNav.style.zIndex = '10';
88
91
  dialog.style.display = 'none';
89
92
  }
90
93
  });