@eventcatalog/core 3.0.0-beta.24 → 3.0.0-beta.26

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 (61) hide show
  1. package/dist/analytics/analytics.cjs +1 -1
  2. package/dist/analytics/analytics.js +2 -2
  3. package/dist/analytics/log-build.cjs +1 -1
  4. package/dist/analytics/log-build.js +3 -3
  5. package/dist/catalog-to-astro-content-directory.cjs +2 -19
  6. package/dist/catalog-to-astro-content-directory.d.cts +1 -2
  7. package/dist/catalog-to-astro-content-directory.d.ts +1 -2
  8. package/dist/catalog-to-astro-content-directory.js +3 -5
  9. package/dist/{chunk-4UUGLZEP.js → chunk-3YJD7KVJ.js} +1 -1
  10. package/dist/{chunk-ZQX7H4YO.js → chunk-5TB5SKXE.js} +1 -1
  11. package/dist/{chunk-7KD4X5PQ.js → chunk-6VKMP3FH.js} +1 -1
  12. package/dist/{chunk-R2BJ7MJG.js → chunk-6Z6ARMQS.js} +1 -17
  13. package/dist/{chunk-HQW2RZD2.js → chunk-MZTNQHMI.js} +1 -1
  14. package/dist/{chunk-6A3FVZJI.js → chunk-WQFW32XA.js} +1 -1
  15. package/dist/constants.cjs +1 -1
  16. package/dist/constants.js +1 -1
  17. package/dist/eventcatalog.cjs +1 -18
  18. package/dist/eventcatalog.js +7 -10
  19. package/dist/generate.cjs +1 -1
  20. package/dist/generate.js +3 -3
  21. package/dist/utils/cli-logger.cjs +1 -1
  22. package/dist/utils/cli-logger.js +2 -2
  23. package/eventcatalog/src/components/SchemaExplorer/ApiAccessSection.tsx +95 -90
  24. package/eventcatalog/src/components/SchemaExplorer/ApiContentViewer.tsx +144 -0
  25. package/eventcatalog/src/components/SchemaExplorer/Pagination.tsx +34 -8
  26. package/eventcatalog/src/components/SchemaExplorer/SchemaContentViewer.tsx +2 -2
  27. package/eventcatalog/src/components/SchemaExplorer/SchemaDetailsHeader.tsx +140 -109
  28. package/eventcatalog/src/components/SchemaExplorer/SchemaDetailsPanel.tsx +5 -14
  29. package/eventcatalog/src/components/SchemaExplorer/SchemaExplorer.tsx +247 -59
  30. package/eventcatalog/src/components/SchemaExplorer/SchemaFilters.tsx +64 -126
  31. package/eventcatalog/src/components/SchemaExplorer/SchemaListItem.tsx +41 -43
  32. package/eventcatalog/src/components/Search/SearchDataLoader.astro +25 -0
  33. package/eventcatalog/src/components/SideNav/NestedSideBar/SearchBar.tsx +1 -1
  34. package/eventcatalog/src/components/SideNav/NestedSideBar/index.tsx +43 -16
  35. package/eventcatalog/src/components/SideNav/SideNav.astro +0 -15
  36. package/eventcatalog/src/components/Tables/Table.tsx +96 -77
  37. package/eventcatalog/src/components/Tables/columns/ContainersTableColumns.tsx +108 -74
  38. package/eventcatalog/src/components/Tables/columns/DomainTableColumns.tsx +74 -55
  39. package/eventcatalog/src/components/Tables/columns/FlowTableColumns.tsx +36 -36
  40. package/eventcatalog/src/components/Tables/columns/MessageTableColumns.tsx +110 -77
  41. package/eventcatalog/src/components/Tables/columns/ServiceTableColumns.tsx +105 -94
  42. package/eventcatalog/src/components/Tables/columns/SharedColumns.tsx +31 -26
  43. package/eventcatalog/src/components/Tables/columns/TeamsTableColumns.tsx +115 -215
  44. package/eventcatalog/src/components/Tables/columns/UserTableColumns.tsx +145 -243
  45. package/eventcatalog/src/layouts/VerticalSideBarLayout.astro +5 -2
  46. package/eventcatalog/src/pages/_index.astro +239 -554
  47. package/eventcatalog/src/pages/directory/[type]/index.astro +6 -0
  48. package/eventcatalog/src/pages/docs/[type]/[id]/[version]/index.astro +1 -1
  49. package/eventcatalog/src/pages/docs/[type]/[id]/language/index.astro +194 -121
  50. package/eventcatalog/src/pages/docs/teams/[id]/index.astro +94 -70
  51. package/eventcatalog/src/pages/docs/users/[id]/index.astro +56 -45
  52. package/eventcatalog/src/pages/studio.astro +124 -72
  53. package/eventcatalog/src/stores/{sidebar-store.ts → sidebar-store/index.ts} +1 -1
  54. package/package.json +1 -1
  55. /package/eventcatalog/src/{components/SideNav/NestedSideBar → stores/sidebar-store}/builders/container.ts +0 -0
  56. /package/eventcatalog/src/{components/SideNav/NestedSideBar → stores/sidebar-store}/builders/domain.ts +0 -0
  57. /package/eventcatalog/src/{components/SideNav/NestedSideBar → stores/sidebar-store}/builders/flow.ts +0 -0
  58. /package/eventcatalog/src/{components/SideNav/NestedSideBar → stores/sidebar-store}/builders/message.ts +0 -0
  59. /package/eventcatalog/src/{components/SideNav/NestedSideBar → stores/sidebar-store}/builders/service.ts +0 -0
  60. /package/eventcatalog/src/{components/SideNav/NestedSideBar → stores/sidebar-store}/builders/shared.ts +0 -0
  61. /package/eventcatalog/src/{components/SideNav/NestedSideBar/sidebar-builder.ts → stores/sidebar-store/state.ts} +0 -0
@@ -3,8 +3,8 @@ import VerticalSideBarLayout from '@layouts/VerticalSideBarLayout.astro';
3
3
  import { getEvents } from '@utils/collections/events';
4
4
  import { getCommands } from '@utils/collections/commands';
5
5
  import { getServices } from '@utils/collections/services';
6
- import { BoltIcon, ServerIcon, RectangleGroupIcon } from '@heroicons/react/24/outline';
7
- import { SquareDashedMousePointerIcon, ArrowLeftRightIcon } from 'lucide-react';
6
+ import { BoltIcon, ServerIcon } from '@heroicons/react/24/outline';
7
+ import { SquareDashedMousePointerIcon, ArrowLeftRightIcon, ExternalLink } from 'lucide-react';
8
8
  import StudioPageModal from '@components/Studio/StudioPageModal';
9
9
  import { getChannels } from '@utils/collections/channels';
10
10
 
@@ -20,6 +20,7 @@ const eventCount = events.length;
20
20
  const serviceCount = services.length;
21
21
  const commandCount = commands.length;
22
22
  const channelCount = channels.length;
23
+ const totalResources = eventCount + serviceCount + channelCount + commandCount;
23
24
 
24
25
  // Get a few sample resources to display
25
26
  const sampleEvents = events.slice(0, 2);
@@ -32,6 +33,8 @@ const resourcesToShow = [
32
33
  ...sampleServices.map((service, index) => ({ type: 'service', data: service, index: index + 2 })),
33
34
  ...sampleChannels.map((channel, index) => ({ type: 'channel', data: channel, index: index + 4 })),
34
35
  ].slice(0, 5); // Max 5 resources
36
+
37
+ const hasResources = resourcesToShow.length > 0;
35
38
  ---
36
39
 
37
40
  <!doctype html>
@@ -50,131 +53,180 @@ const resourcesToShow = [
50
53
  {/* Hero Section */}
51
54
  <div class="grid grid-cols-1 lg:grid-cols-2 gap-12 items-center mb-16">
52
55
  <div>
53
- <div class="inline-flex items-center px-4 py-2 rounded-full bg-gray-100 text-gray-900 font-medium text-sm mb-6">
54
- <SquareDashedMousePointerIcon className="w-4 h-4 mr-2" />
55
- EventCatalog Studio
56
+ <div class="inline-flex items-center px-3 py-1.5 rounded-full bg-gray-100 text-gray-700 font-medium text-xs mb-6">
57
+ Visual Design Tool
56
58
  </div>
57
59
  <h1 class="text-4xl font-bold text-gray-900 tracking-tight mb-4">Turn your resources into designs</h1>
58
- <p class="text-xl text-gray-600 mb-8">
60
+ <p class="text-lg text-gray-600 mb-8">
59
61
  Transform your documented messages, services, and domains into architecture diagrams. Drag, drop, and design with
60
62
  what you already have.
61
63
  </p>
62
- <div class="flex flex-col sm:flex-row gap-4 mb-2">
64
+ <div class="flex flex-col sm:flex-row gap-3 mb-4">
63
65
  <button
64
66
  id="design-button"
65
67
  class="inline-flex items-center justify-center px-6 py-3 border border-transparent text-base font-medium rounded-lg text-white bg-gray-900 hover:bg-gray-800 transition-colors duration-150"
66
68
  >
67
69
  <SquareDashedMousePointerIcon className="w-4 h-4 mr-2" />
68
- Open EventCatalog Studio
70
+ Open Studio
69
71
  </button>
72
+ <a
73
+ href="https://www.eventcatalog.dev/docs/development/components/designs"
74
+ target="_blank"
75
+ rel="noopener noreferrer"
76
+ class="inline-flex items-center justify-center px-6 py-3 border border-gray-300 text-base font-medium rounded-lg text-gray-700 bg-white hover:bg-gray-50 transition-colors duration-150"
77
+ >
78
+ Learn more
79
+ <ExternalLink className="w-4 h-4 ml-2" />
80
+ </a>
70
81
  </div>
71
82
 
72
- <p class="text-sm text-gray-500 italic mb-6">
73
- {eventCount + serviceCount + channelCount + commandCount} resources ready to design with
74
- </p>
83
+ {
84
+ totalResources > 0 && (
85
+ <p class="text-sm text-gray-500">
86
+ <span class="font-medium text-gray-700">{totalResources}</span> resources available to design with
87
+ </p>
88
+ )
89
+ }
75
90
  </div>
76
91
 
77
- <div class="relative">
78
- <div class="relative">
79
- {/* Animation container */}
80
- <div class="relative h-[400px] flex items-center justify-center">
81
- {/* Resource cards that animate in */}
82
- <div class="absolute left-0 top-1/2 -translate-y-1/2 space-y-3">
83
- {
84
- resourcesToShow.map((resource) => {
92
+ <div class="relative hidden lg:block">
93
+ {/* Animation container */}
94
+ <div class="relative h-[350px] flex items-center justify-center">
95
+ {/* Resource cards that animate in */}
96
+ {
97
+ hasResources ? (
98
+ <div class="absolute left-0 top-1/2 -translate-y-1/2 space-y-2.5">
99
+ {resourcesToShow.map((resource) => {
85
100
  if (resource.type === 'event') {
86
101
  return (
87
102
  <div
88
- class="animate-float-in flex items-center gap-2 text-sm text-gray-700 px-4 py-3 bg-orange-50 rounded-lg border border-orange-200 shadow-sm"
89
- style={`animation-delay: ${resource.index * 0.4}s;`}
103
+ class="animate-float-in flex items-center gap-2 text-sm text-gray-700 px-4 py-2.5 bg-orange-50 rounded-lg border border-orange-200 shadow-sm"
104
+ style={`animation-delay: ${resource.index * 0.3}s;`}
90
105
  >
91
- <BoltIcon className="w-4 h-4 text-orange-600" />
92
- {resource.data.data.name}
106
+ <BoltIcon className="w-4 h-4 text-orange-500" />
107
+ <span class="truncate max-w-[140px]">{resource.data.data.name}</span>
93
108
  </div>
94
109
  );
95
110
  } else if (resource.type === 'service') {
96
111
  return (
97
112
  <div
98
- class="animate-float-in flex items-center gap-2 text-sm text-gray-700 px-4 py-3 bg-pink-50 rounded-lg border border-pink-200 shadow-sm"
99
- style={`animation-delay: ${resource.index * 0.4}s;`}
113
+ class="animate-float-in flex items-center gap-2 text-sm text-gray-700 px-4 py-2.5 bg-pink-50 rounded-lg border border-pink-200 shadow-sm"
114
+ style={`animation-delay: ${resource.index * 0.3}s;`}
100
115
  >
101
- <ServerIcon className="w-4 h-4 text-gray-600" />
102
- {resource.data.data.name}
116
+ <ServerIcon className="w-4 h-4 text-pink-500" />
117
+ <span class="truncate max-w-[140px]">{resource.data.data.name}</span>
103
118
  </div>
104
119
  );
105
120
  } else if (resource.type === 'channel') {
106
121
  return (
107
122
  <div
108
- class="animate-float-in flex items-center gap-2 text-sm text-gray-700 px-4 py-3 bg-gray-50 rounded-lg border border-gray-200 shadow-sm"
109
- style={`animation-delay: ${resource.index * 0.4}s;`}
123
+ class="animate-float-in flex items-center gap-2 text-sm text-gray-700 px-4 py-2.5 bg-indigo-50 rounded-lg border border-indigo-200 shadow-sm"
124
+ style={`animation-delay: ${resource.index * 0.3}s;`}
110
125
  >
111
- <ArrowLeftRightIcon className="w-4 h-4 text-gray-600" />
112
- {resource.data.data.name}
126
+ <ArrowLeftRightIcon className="w-4 h-4 text-indigo-500" />
127
+ <span class="truncate max-w-[140px]">{resource.data.data.name}</span>
113
128
  </div>
114
129
  );
115
130
  }
116
- })
117
- }
118
- </div>
119
-
120
- {/* Arrow indicator */}
121
- <div class="absolute left-1/2 top-1/2 -translate-x-1/2 -translate-y-1/2 animate-pulse">
122
- <svg class="w-12 h-12 text-gray-400" viewBox="0 0 24 24" fill="none" stroke="currentColor">
123
- <path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M13 7l5 5m0 0l-5 5m5-5H6"></path>
124
- </svg>
125
- </div>
126
-
127
- {/* Design preview */}
128
- <div class="absolute right-0 top-1/2 -translate-y-1/2 animate-fade-in-scale" style="animation-delay: 2s;">
129
- <img
130
- src="/studio-bg.png"
131
- alt="Studio Design Preview"
132
- class="rounded-xl shadow-xl border border-gray-200 w-64 h-auto"
133
- />
134
- </div>
131
+ })}
132
+ </div>
133
+ ) : (
134
+ <div class="absolute left-0 top-1/2 -translate-y-1/2 space-y-2.5">
135
+ <div
136
+ class="animate-float-in flex items-center gap-2 text-sm text-gray-400 px-4 py-2.5 bg-gray-50 rounded-lg border border-gray-200 border-dashed"
137
+ style="animation-delay: 0s;"
138
+ >
139
+ <BoltIcon className="w-4 h-4" />
140
+ <span>Your events</span>
141
+ </div>
142
+ <div
143
+ class="animate-float-in flex items-center gap-2 text-sm text-gray-400 px-4 py-2.5 bg-gray-50 rounded-lg border border-gray-200 border-dashed"
144
+ style="animation-delay: 0.3s;"
145
+ >
146
+ <ServerIcon className="w-4 h-4" />
147
+ <span>Your services</span>
148
+ </div>
149
+ <div
150
+ class="animate-float-in flex items-center gap-2 text-sm text-gray-400 px-4 py-2.5 bg-gray-50 rounded-lg border border-gray-200 border-dashed"
151
+ style="animation-delay: 0.6s;"
152
+ >
153
+ <ArrowLeftRightIcon className="w-4 h-4" />
154
+ <span>Your channels</span>
155
+ </div>
156
+ </div>
157
+ )
158
+ }
159
+
160
+ {/* Arrow indicator */}
161
+ <div class="absolute left-1/2 top-1/2 -translate-x-1/2 -translate-y-1/2">
162
+ <svg class="w-10 h-10 text-gray-300 animate-pulse" viewBox="0 0 24 24" fill="none" stroke="currentColor">
163
+ <path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M13 7l5 5m0 0l-5 5m5-5H6"></path>
164
+ </svg>
165
+ </div>
166
+
167
+ {/* Design preview */}
168
+ <div class="absolute right-0 top-1/2 -translate-y-1/2 animate-fade-in-scale" style="animation-delay: 1.5s;">
169
+ <img
170
+ src="/studio-bg.png"
171
+ alt="Studio Design Preview"
172
+ class="rounded-xl shadow-lg border border-gray-200 w-56 h-auto"
173
+ />
135
174
  </div>
136
175
  </div>
137
176
  </div>
138
177
  </div>
139
178
 
140
179
  {/* Features Section */}
141
- <div class="grid grid-cols-1 md:grid-cols-3 gap-8">
142
- <div class="bg-white rounded-xl p-6 shadow-sm border border-gray-200">
143
- <div class="w-12 h-12 bg-gray-100 rounded-lg flex items-center justify-center mb-4">
144
- <svg class="w-6 h-6 text-gray-900" viewBox="0 0 24 24" fill="none" stroke="currentColor">
180
+ <div class="grid grid-cols-1 md:grid-cols-3 gap-6">
181
+ <div
182
+ class="group bg-white rounded-xl p-6 border border-gray-200 hover:border-gray-300 hover:shadow-md transition-all duration-200"
183
+ >
184
+ <div
185
+ class="w-10 h-10 bg-gray-100 rounded-lg flex items-center justify-center mb-4 group-hover:bg-gray-200 transition-colors"
186
+ >
187
+ <svg class="w-5 h-5 text-gray-700" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2">
145
188
  <rect width="8" height="8" x="3" y="3" rx="2"></rect>
146
189
  <path d="M7 11v4a2 2 0 0 0 2 2h4"></path>
147
190
  <rect width="8" height="8" x="13" y="13" rx="2"></rect>
148
191
  </svg>
149
192
  </div>
150
- <h3 class="text-lg font-semibold text-gray-900 mb-2">Real Resources</h3>
151
- <p class="text-gray-600">
152
- Drag and drop messages, services, and domains from your catalog. No more copying names or keeping things manually
153
- in sync.
193
+ <h3 class="text-base font-semibold text-gray-900 mb-2">Real Resources</h3>
194
+ <p class="text-sm text-gray-600 leading-relaxed">
195
+ Drag and drop messages, services, and domains from your catalog. No more copying names or keeping things in sync.
154
196
  </p>
155
197
  </div>
156
198
 
157
- <div class="bg-white rounded-xl p-6 shadow-sm border border-gray-200">
158
- <div class="w-12 h-12 bg-gray-100 rounded-lg flex items-center justify-center mb-4">
159
- <svg class="w-6 h-6 text-gray-900" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2">
199
+ <div
200
+ class="group bg-white rounded-xl p-6 border border-gray-200 hover:border-gray-300 hover:shadow-md transition-all duration-200"
201
+ >
202
+ <div
203
+ class="w-10 h-10 bg-gray-100 rounded-lg flex items-center justify-center mb-4 group-hover:bg-gray-200 transition-colors"
204
+ >
205
+ <svg class="w-5 h-5 text-gray-700" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2">
160
206
  <path d="M19 21H5a2 2 0 0 1-2-2V5a2 2 0 0 1 2-2h11l5 5v11a2 2 0 0 1-2 2z"></path>
161
207
  <polyline points="17 21 17 13 7 13 7 21"></polyline>
162
208
  <polyline points="7 3 7 8 15 8"></polyline>
163
209
  </svg>
164
210
  </div>
165
- <h3 class="text-lg font-semibold text-gray-900 mb-2">Save & Version</h3>
166
- <p class="text-gray-600">Save designs locally and store in Git. All designs and data is owned by you.</p>
211
+ <h3 class="text-base font-semibold text-gray-900 mb-2">Save & Version</h3>
212
+ <p class="text-sm text-gray-600 leading-relaxed">
213
+ Save designs locally and store in Git. All designs and data is owned by you.
214
+ </p>
167
215
  </div>
168
216
 
169
- <div class="bg-white rounded-xl p-6 shadow-sm border border-gray-200">
170
- <div class="w-12 h-12 bg-gray-100 rounded-lg flex items-center justify-center mb-4">
171
- <svg class="w-6 h-6 text-gray-900" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2">
217
+ <div
218
+ class="group bg-white rounded-xl p-6 border border-gray-200 hover:border-gray-300 hover:shadow-md transition-all duration-200"
219
+ >
220
+ <div
221
+ class="w-10 h-10 bg-gray-100 rounded-lg flex items-center justify-center mb-4 group-hover:bg-gray-200 transition-colors"
222
+ >
223
+ <svg class="w-5 h-5 text-gray-700" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2">
172
224
  <polyline points="16 18 22 12 16 6"></polyline>
173
225
  <polyline points="8 6 2 12 8 18"></polyline>
174
226
  </svg>
175
227
  </div>
176
- <h3 class="text-lg font-semibold text-gray-900 mb-2">Embed Anywhere</h3>
177
- <p class="text-gray-600">
228
+ <h3 class="text-base font-semibold text-gray-900 mb-2">Embed Anywhere</h3>
229
+ <p class="text-sm text-gray-600 leading-relaxed">
178
230
  Drop diagrams directly into documentation pages. One source of truth for your architecture.
179
231
  </p>
180
232
  </div>
@@ -201,7 +253,7 @@ const resourcesToShow = [
201
253
  @keyframes float-in {
202
254
  0% {
203
255
  opacity: 0;
204
- transform: translateX(-30px);
256
+ transform: translateX(-20px);
205
257
  }
206
258
  100% {
207
259
  opacity: 1;
@@ -212,7 +264,7 @@ const resourcesToShow = [
212
264
  @keyframes fade-in-scale {
213
265
  0% {
214
266
  opacity: 0;
215
- transform: translateY(-50%) scale(0.9);
267
+ transform: translateY(-50%) scale(0.95);
216
268
  }
217
269
  100% {
218
270
  opacity: 1;
@@ -221,12 +273,12 @@ const resourcesToShow = [
221
273
  }
222
274
 
223
275
  .animate-float-in {
224
- animation: float-in 0.6s ease-out forwards;
276
+ animation: float-in 0.5s ease-out forwards;
225
277
  opacity: 0;
226
278
  }
227
279
 
228
280
  .animate-fade-in-scale {
229
- animation: fade-in-scale 0.8s ease-out forwards;
281
+ animation: fade-in-scale 0.6s ease-out forwards;
230
282
  opacity: 0;
231
283
  }
232
284
  </style>
@@ -1,5 +1,5 @@
1
1
  import { atom } from 'nanostores';
2
- import type { NavigationData } from '../components/SideNav/NestedSideBar/sidebar-builder';
2
+ import type { NavigationData } from './state';
3
3
 
4
4
  export const sidebarStore = atom<NavigationData | null>(null);
5
5
 
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": "3.0.0-beta.24",
9
+ "version": "3.0.0-beta.26",
10
10
  "publishConfig": {
11
11
  "access": "public"
12
12
  },