@eventcatalog/core 3.18.5 → 3.19.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (77) 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 +1 -1
  6. package/dist/{chunk-JEZODNLN.js → chunk-26A45SNU.js} +1 -1
  7. package/dist/{chunk-2IVWMV2T.js → chunk-6OQXRJWI.js} +1 -1
  8. package/dist/{chunk-5J4CB7HN.js → chunk-FK7TCLJJ.js} +1 -1
  9. package/dist/{chunk-Z3BWXNQW.js → chunk-NXKN2YAU.js} +1 -1
  10. package/dist/{chunk-SSNGN2OB.js → chunk-XKHNXR3Q.js} +1 -1
  11. package/dist/constants.cjs +1 -1
  12. package/dist/constants.js +1 -1
  13. package/dist/eventcatalog.cjs +2 -2
  14. package/dist/eventcatalog.js +5 -5
  15. package/dist/generate.cjs +1 -1
  16. package/dist/generate.js +3 -3
  17. package/dist/utils/cli-logger.cjs +1 -1
  18. package/dist/utils/cli-logger.js +2 -2
  19. package/eventcatalog/astro.config.mjs +33 -2
  20. package/eventcatalog/src/components/ChatPanel/ChatPanel.tsx +3 -3
  21. package/eventcatalog/src/components/ChatPanel/ChatPanelButton.tsx +1 -1
  22. package/eventcatalog/src/components/CopyAsMarkdown.tsx +9 -9
  23. package/eventcatalog/src/components/EnvironmentDropdown.tsx +1 -1
  24. package/eventcatalog/src/components/Grids/DomainGrid.tsx +6 -6
  25. package/eventcatalog/src/components/Grids/MessageGrid.tsx +5 -5
  26. package/eventcatalog/src/components/Grids/components.tsx +3 -3
  27. package/eventcatalog/src/components/Header.astro +6 -6
  28. package/eventcatalog/src/components/MDX/Accordion/Accordion.tsx +1 -1
  29. package/eventcatalog/src/components/MDX/Accordion/AccordionGroup.astro +1 -1
  30. package/eventcatalog/src/components/MDX/Attachments.astro +1 -1
  31. package/eventcatalog/src/components/MDX/EntityPropertiesTable/EntityPropertiesTable.astro +1 -1
  32. package/eventcatalog/src/components/MDX/MessageTable/MessageTable.client.tsx +2 -2
  33. package/eventcatalog/src/components/MDX/NodeGraph/NodeGraphPortal.tsx +1 -1
  34. package/eventcatalog/src/components/MDX/RemoteFile.astro +1 -1
  35. package/eventcatalog/src/components/MDX/ResourceGroupTable/ResourceGroupTable.client.tsx +2 -2
  36. package/eventcatalog/src/components/MDX/SchemaViewer/SchemaViewerRoot.astro +1 -1
  37. package/eventcatalog/src/components/MDX/Tabs/Tabs.astro +1 -1
  38. package/eventcatalog/src/components/MDX/Tiles/Tile.astro +1 -1
  39. package/eventcatalog/src/components/SchemaExplorer/AvroSchemaViewer.tsx +6 -6
  40. package/eventcatalog/src/components/SchemaExplorer/JSONSchemaViewer.tsx +10 -10
  41. package/eventcatalog/src/components/SchemaExplorer/OwnersSection.tsx +1 -1
  42. package/eventcatalog/src/components/SchemaExplorer/ProducersConsumersSection.tsx +2 -2
  43. package/eventcatalog/src/components/SchemaExplorer/SchemaCodeModal.tsx +2 -2
  44. package/eventcatalog/src/components/SchemaExplorer/SchemaContentViewer.tsx +3 -3
  45. package/eventcatalog/src/components/SchemaExplorer/SchemaDetailsHeader.tsx +5 -5
  46. package/eventcatalog/src/components/SchemaExplorer/SchemaExplorer.tsx +3 -3
  47. package/eventcatalog/src/components/SchemaExplorer/SchemaViewerModal.tsx +2 -2
  48. package/eventcatalog/src/components/SchemaExplorer/VersionHistoryModal.tsx +2 -2
  49. package/eventcatalog/src/components/Search/Search.astro +1 -1
  50. package/eventcatalog/src/components/Search/SearchModal.tsx +1 -1
  51. package/eventcatalog/src/components/SideNav/NestedSideBar/SearchBar.tsx +1 -1
  52. package/eventcatalog/src/components/SideNav/NestedSideBar/index.tsx +2 -2
  53. package/eventcatalog/src/components/Studio/StudioPageModal.tsx +2 -2
  54. package/eventcatalog/src/components/Tables/Discover/DiscoverTable.tsx +4 -4
  55. package/eventcatalog/src/components/Tables/Table.tsx +2 -2
  56. package/eventcatalog/src/enterprise/auth/error.astro +3 -2
  57. package/eventcatalog/src/enterprise/auth/login.astro +1 -0
  58. package/eventcatalog/src/enterprise/auth/unauthorized.astro +2 -2
  59. package/eventcatalog/src/enterprise/plans/index.astro +15 -15
  60. package/eventcatalog/src/layouts/VerticalSideBarLayout.astro +3 -0
  61. package/eventcatalog/src/layouts/VisualiserLayout.astro +1 -1
  62. package/eventcatalog/src/pages/diagrams/[id]/[version]/embed.astro +1 -0
  63. package/eventcatalog/src/pages/diagrams/[id]/[version]/index.astro +1 -1
  64. package/eventcatalog/src/pages/docs/[type]/[id]/[version]/changelog/index.astro +1 -1
  65. package/eventcatalog/src/pages/docs/[type]/[id]/[version]/graphql/[filename].astro +1 -1
  66. package/eventcatalog/src/pages/docs/[type]/[id]/[version]/index.astro +1 -1
  67. package/eventcatalog/src/pages/docs/[type]/[id]/language/[dictionaryId]/index.astro +1 -1
  68. package/eventcatalog/src/pages/docs/custom/feature.astro +6 -6
  69. package/eventcatalog/src/pages/docs/custom/index.astro +6 -6
  70. package/eventcatalog/src/pages/index.astro +1 -1
  71. package/eventcatalog/src/pages/schemas/explorer/index.astro +1 -1
  72. package/eventcatalog/src/pages/studio.astro +3 -3
  73. package/eventcatalog/src/remark-plugins/directives.ts +1 -1
  74. package/eventcatalog/src/styles/tailwind.css +84 -0
  75. package/eventcatalog/src/utils/icon-map.ts +76 -0
  76. package/package.json +7 -7
  77. package/eventcatalog/tailwind.config.mjs +0 -103
@@ -100,7 +100,7 @@ import {
100
100
  <div class="mb-16">
101
101
  <h2 class="text-2xl font-semibold text-[rgb(var(--ec-page-text))] mb-8">Why upgrade EventCatalog?</h2>
102
102
  <div class="grid grid-cols-1 md:grid-cols-3 gap-8">
103
- <div class="bg-[rgb(var(--ec-card-bg))] rounded-xl p-6 shadow-sm border border-[rgb(var(--ec-page-border))]">
103
+ <div class="bg-[rgb(var(--ec-card-bg))] rounded-xl p-6 shadow-xs border border-[rgb(var(--ec-page-border))]">
104
104
  <div class="w-12 h-12 bg-purple-100 dark:bg-purple-900/30 rounded-lg flex items-center justify-center mb-4">
105
105
  <ScrollText className="w-6 h-6 text-purple-600 dark:text-purple-400" />
106
106
  </div>
@@ -110,7 +110,7 @@ import {
110
110
  </p>
111
111
  </div>
112
112
 
113
- <div class="bg-[rgb(var(--ec-card-bg))] rounded-xl p-6 shadow-sm border border-[rgb(var(--ec-page-border))]">
113
+ <div class="bg-[rgb(var(--ec-card-bg))] rounded-xl p-6 shadow-xs border border-[rgb(var(--ec-page-border))]">
114
114
  <div class="w-12 h-12 bg-purple-100 dark:bg-purple-900/30 rounded-lg flex items-center justify-center mb-4">
115
115
  <Users className="w-6 h-6 text-purple-600 dark:text-purple-400" />
116
116
  </div>
@@ -120,7 +120,7 @@ import {
120
120
  </p>
121
121
  </div>
122
122
 
123
- <div class="bg-[rgb(var(--ec-card-bg))] rounded-xl p-6 shadow-sm border border-[rgb(var(--ec-page-border))]">
123
+ <div class="bg-[rgb(var(--ec-card-bg))] rounded-xl p-6 shadow-xs border border-[rgb(var(--ec-page-border))]">
124
124
  <div class="w-12 h-12 bg-purple-100 dark:bg-purple-900/30 rounded-lg flex items-center justify-center mb-4">
125
125
  <Component className="w-6 h-6 text-purple-600 dark:text-purple-400" />
126
126
  </div>
@@ -149,7 +149,7 @@ import {
149
149
 
150
150
  <div class="grid grid-cols-1 md:grid-cols-4 gap-8 relative">
151
151
  {/* Stage 1 */}
152
- <div class="bg-[rgb(var(--ec-card-bg))] rounded-xl p-6 shadow-sm border border-[rgb(var(--ec-page-border))] relative">
152
+ <div class="bg-[rgb(var(--ec-card-bg))] rounded-xl p-6 shadow-xs border border-[rgb(var(--ec-page-border))] relative">
153
153
  <div
154
154
  class="w-12 h-12 bg-purple-100 dark:bg-purple-900/30 rounded-full flex items-center justify-center mb-4 mx-auto md:absolute md:-top-6 md:left-1/2 md:transform md:-translate-x-1/2"
155
155
  >
@@ -162,7 +162,7 @@ import {
162
162
  </div>
163
163
 
164
164
  {/* Stage 2 */}
165
- <div class="bg-[rgb(var(--ec-card-bg))] rounded-xl p-6 shadow-sm border border-[rgb(var(--ec-page-border))] relative">
165
+ <div class="bg-[rgb(var(--ec-card-bg))] rounded-xl p-6 shadow-xs border border-[rgb(var(--ec-page-border))] relative">
166
166
  <div
167
167
  class="w-12 h-12 bg-purple-100 dark:bg-purple-900/30 rounded-full flex items-center justify-center mb-4 mx-auto md:absolute md:-top-6 md:left-1/2 md:transform md:-translate-x-1/2"
168
168
  >
@@ -175,7 +175,7 @@ import {
175
175
  </div>
176
176
 
177
177
  {/* Stage 3 */}
178
- <div class="bg-[rgb(var(--ec-card-bg))] rounded-xl p-6 shadow-sm border border-[rgb(var(--ec-page-border))] relative">
178
+ <div class="bg-[rgb(var(--ec-card-bg))] rounded-xl p-6 shadow-xs border border-[rgb(var(--ec-page-border))] relative">
179
179
  <div
180
180
  class="w-12 h-12 bg-purple-100 dark:bg-purple-900/30 rounded-full flex items-center justify-center mb-4 mx-auto md:absolute md:-top-6 md:left-1/2 md:transform md:-translate-x-1/2"
181
181
  >
@@ -188,7 +188,7 @@ import {
188
188
  </div>
189
189
 
190
190
  {/* Stage 4 */}
191
- <div class="bg-[rgb(var(--ec-card-bg))] rounded-xl p-6 shadow-sm border border-[rgb(var(--ec-page-border))] relative">
191
+ <div class="bg-[rgb(var(--ec-card-bg))] rounded-xl p-6 shadow-xs border border-[rgb(var(--ec-page-border))] relative">
192
192
  <div
193
193
  class="w-12 h-12 bg-purple-100 dark:bg-purple-900/30 rounded-full flex items-center justify-center mb-4 mx-auto md:absolute md:-top-6 md:left-1/2 md:transform md:-translate-x-1/2"
194
194
  >
@@ -215,7 +215,7 @@ import {
215
215
  <div class="mb-16">
216
216
  <h2 class="text-2xl font-semibold text-[rgb(var(--ec-page-text))] mb-8">Save time with EventCatalog</h2>
217
217
  <div class="grid grid-cols-1 md:grid-cols-2 lg:grid-cols-3 gap-8">
218
- <div class="bg-[rgb(var(--ec-card-bg))] rounded-xl p-6 shadow-sm border border-[rgb(var(--ec-page-border))]">
218
+ <div class="bg-[rgb(var(--ec-card-bg))] rounded-xl p-6 shadow-xs border border-[rgb(var(--ec-page-border))]">
219
219
  <div class="w-12 h-12 bg-blue-100 dark:bg-blue-900/30 rounded-lg flex items-center justify-center mb-4">
220
220
  <ScrollText className="w-6 h-6 text-blue-600 dark:text-blue-400" />
221
221
  </div>
@@ -225,7 +225,7 @@ import {
225
225
  </p>
226
226
  </div>
227
227
 
228
- <div class="bg-[rgb(var(--ec-card-bg))] rounded-xl p-6 shadow-sm border border-[rgb(var(--ec-page-border))]">
228
+ <div class="bg-[rgb(var(--ec-card-bg))] rounded-xl p-6 shadow-xs border border-[rgb(var(--ec-page-border))]">
229
229
  <div class="w-12 h-12 bg-green-100 dark:bg-green-900/30 rounded-lg flex items-center justify-center mb-4">
230
230
  <Bot className="w-6 h-6 text-green-600 dark:text-green-400" />
231
231
  </div>
@@ -235,7 +235,7 @@ import {
235
235
  </p>
236
236
  </div>
237
237
 
238
- <div class="bg-[rgb(var(--ec-card-bg))] rounded-xl p-6 shadow-sm border border-[rgb(var(--ec-page-border))]">
238
+ <div class="bg-[rgb(var(--ec-card-bg))] rounded-xl p-6 shadow-xs border border-[rgb(var(--ec-page-border))]">
239
239
  <div class="w-12 h-12 bg-purple-100 dark:bg-purple-900/30 rounded-lg flex items-center justify-center mb-4">
240
240
  <Component className="w-6 h-6 text-purple-600 dark:text-purple-400" />
241
241
  </div>
@@ -245,7 +245,7 @@ import {
245
245
  </p>
246
246
  </div>
247
247
 
248
- <div class="bg-[rgb(var(--ec-card-bg))] rounded-xl p-6 shadow-sm border border-[rgb(var(--ec-page-border))]">
248
+ <div class="bg-[rgb(var(--ec-card-bg))] rounded-xl p-6 shadow-xs border border-[rgb(var(--ec-page-border))]">
249
249
  <div class="w-12 h-12 bg-indigo-100 dark:bg-indigo-900/30 rounded-lg flex items-center justify-center mb-4">
250
250
  <Code className="w-6 h-6 text-indigo-600 dark:text-indigo-400" />
251
251
  </div>
@@ -255,7 +255,7 @@ import {
255
255
  </p>
256
256
  </div>
257
257
 
258
- <div class="bg-[rgb(var(--ec-card-bg))] rounded-xl p-6 shadow-sm border border-[rgb(var(--ec-page-border))]">
258
+ <div class="bg-[rgb(var(--ec-card-bg))] rounded-xl p-6 shadow-xs border border-[rgb(var(--ec-page-border))]">
259
259
  <div class="w-12 h-12 bg-yellow-100 dark:bg-yellow-900/30 rounded-lg flex items-center justify-center mb-4">
260
260
  <Cpu className="w-6 h-6 text-yellow-600 dark:text-yellow-400" />
261
261
  </div>
@@ -265,7 +265,7 @@ import {
265
265
  </p>
266
266
  </div>
267
267
 
268
- <div class="bg-[rgb(var(--ec-card-bg))] rounded-xl p-6 shadow-sm border border-[rgb(var(--ec-page-border))]">
268
+ <div class="bg-[rgb(var(--ec-card-bg))] rounded-xl p-6 shadow-xs border border-[rgb(var(--ec-page-border))]">
269
269
  <div class="w-12 h-12 bg-red-100 dark:bg-red-900/30 rounded-lg flex items-center justify-center mb-4">
270
270
  <LifeBuoy className="w-6 h-6 text-red-600 dark:text-red-400" />
271
271
  </div>
@@ -281,7 +281,7 @@ import {
281
281
  <div class="mt-16">
282
282
  <h2 class="text-2xl font-semibold text-[rgb(var(--ec-page-text))] mb-8">Questions about EventCatalog?</h2>
283
283
  <div class="grid grid-cols-1 md:grid-cols-2 gap-8">
284
- <div class="bg-[rgb(var(--ec-card-bg))] rounded-xl p-6 shadow-sm border border-[rgb(var(--ec-page-border))]">
284
+ <div class="bg-[rgb(var(--ec-card-bg))] rounded-xl p-6 shadow-xs border border-[rgb(var(--ec-page-border))]">
285
285
  <h3 class="text-lg font-semibold text-[rgb(var(--ec-page-text))] mb-2">Request a Demo</h3>
286
286
  <p class="text-[rgb(var(--ec-page-text-muted))] mb-4">
287
287
  See EventCatalog in action with a personalized demo from our team.
@@ -295,7 +295,7 @@ import {
295
295
  </a>
296
296
  </div>
297
297
 
298
- <div class="bg-[rgb(var(--ec-card-bg))] rounded-xl p-6 shadow-sm border border-[rgb(var(--ec-page-border))]">
298
+ <div class="bg-[rgb(var(--ec-card-bg))] rounded-xl p-6 shadow-xs border border-[rgb(var(--ec-page-border))]">
299
299
  <h3 class="text-lg font-semibold text-[rgb(var(--ec-page-text))] mb-2">Join the community</h3>
300
300
  <p class="text-[rgb(var(--ec-page-text-muted))] mb-4">Join our growing community on Discord. Over 1000+ members.</p>
301
301
  <a
@@ -27,6 +27,9 @@ import '@fontsource/inter';
27
27
  import '@fontsource/inter/400.css'; // Specify weight
28
28
  import '@fontsource/inter/700.css'; // Specify weight
29
29
 
30
+ // Tailwind CSS v4 (CSS-first config)
31
+ import '../styles/tailwind.css';
32
+
30
33
  // Theme CSS variables (must load before user styles)
31
34
  import '../styles/theme.css';
32
35
 
@@ -95,7 +95,7 @@ const getColor = (collection: string) => {
95
95
  <main class="flex-1 h-full w-full relative">
96
96
  <!-- <button
97
97
  id="fullscreen-toggle"
98
- class="absolute top-[1em] z-40 left-5 bg-white hover:bg-gray-100/50 border border-gray-200 hover:text-primary text-gray-800 font-semibold py-2 px-4 rounded-lg transition duration-300 ease-in-out flex items-center space-x-2 focus:outline-none focus:ring-2 focus:ring-blue-400 focus:ring-opacity-75"
98
+ class="absolute top-[1em] z-40 left-5 bg-white hover:bg-gray-100/50 border border-gray-200 hover:text-primary text-gray-800 font-semibold py-2 px-4 rounded-lg transition duration-300 ease-in-out flex items-center space-x-2 focus:outline-hidden focus:ring-2 focus:ring-blue-400 focus:ring-opacity-75"
99
99
  >
100
100
  <svg xmlns="http://www.w3.org/2000/svg" class="h-6 w-6" fill="none" viewBox="0 0 24 24" stroke="currentColor">
101
101
  <path
@@ -1,4 +1,5 @@
1
1
  ---
2
+ import '../../../../styles/tailwind.css';
2
3
  import { render } from 'astro:content';
3
4
  import components from '@components/MDX/components';
4
5
  import config from '@config';
@@ -67,7 +67,7 @@ const chatQuery = `Tell me about the "${props.data.name}" diagram (version ${pro
67
67
  id="compare-btn"
68
68
  type="button"
69
69
  data-scale-enabled={scaleEnabled}
70
- class="inline-flex items-center justify-center gap-1.5 px-3 py-1.5 text-sm font-medium text-[rgb(var(--ec-dropdown-text))] bg-[rgb(var(--ec-dropdown-bg))] border border-[rgb(var(--ec-dropdown-border))] rounded-md shadow-sm hover:bg-[rgb(var(--ec-dropdown-hover))] focus:outline-none focus:ring-1 focus:ring-[rgb(var(--ec-accent))] transition-colors"
70
+ class="inline-flex items-center justify-center gap-1.5 px-3 py-1.5 text-sm font-medium text-[rgb(var(--ec-dropdown-text))] bg-[rgb(var(--ec-dropdown-bg))] border border-[rgb(var(--ec-dropdown-border))] rounded-md shadow-xs hover:bg-[rgb(var(--ec-dropdown-hover))] focus:outline-hidden focus:ring-1 focus:ring-[rgb(var(--ec-accent))] transition-colors"
71
71
  >
72
72
  <GitCompare className="w-4 h-4" />
73
73
  Compare diagram versions
@@ -199,7 +199,7 @@ const badges = [getBadge()];
199
199
  ))}
200
200
  </div>
201
201
  )}
202
- <div class="prose prose-md !max-w-none py-2">
202
+ <div class="prose prose-md max-w-none! py-2">
203
203
  <log.Content components={mdxComponents(props)} />
204
204
  </div>
205
205
  {log.diffs && log.diffs.map((diff) => <div class="bg-white rounded-lg p-2 my-2" set:html={diff} />)}
@@ -89,7 +89,7 @@ const pagefindAttributes =
89
89
  class={`
90
90
  inline-flex items-center gap-2 px-3 py-1.5 rounded-lg text-sm font-medium
91
91
  bg-${badge.backgroundColor || 'white'}-50 border border-${badge.backgroundColor || 'gray'}-200
92
- text-${badge.textColor || 'gray'}-700 shadow-sm
92
+ text-${badge.textColor || 'gray'}-700 shadow-xs
93
93
  transition-all duration-200 ease-out
94
94
  ${badge.class ? badge.class : ''}
95
95
  `}
@@ -359,7 +359,7 @@ nodeGraphs.push({
359
359
  inline-flex items-center gap-2 px-3 py-1.5 rounded-lg text-sm font-medium
360
360
  bg-[rgb(var(--ec-content-hover))] border border-[rgb(var(--ec-page-border))]
361
361
  text-[rgb(var(--ec-page-text))]
362
- shadow-sm
362
+ shadow-xs
363
363
  ${badge.class ? badge.class : ''}
364
364
  `}
365
365
  >
@@ -84,7 +84,7 @@ const badges = [
84
84
  <span
85
85
  class="inline-flex items-center gap-2 px-3 py-1.5 rounded-lg text-sm font-medium
86
86
  bg-[rgb(var(--ec-content-hover))] border border-[rgb(var(--ec-page-border))]
87
- text-[rgb(var(--ec-page-text))] shadow-sm"
87
+ text-[rgb(var(--ec-page-text))] shadow-xs"
88
88
  >
89
89
  {badge.icon && <badge.icon className="w-4 h-4 flex-shrink-0 text-[rgb(var(--ec-icon-color))]" />}
90
90
  {badge.iconURL && <img src={badge.iconURL} class="w-4 h-4 flex-shrink-0 opacity-80" alt="" />}
@@ -72,7 +72,7 @@ import { BookOpenIcon, FileText } from 'lucide-react';
72
72
 
73
73
  {/* Features Section */}
74
74
  <div class="grid grid-cols-1 md:grid-cols-3 gap-8">
75
- <div class="bg-[rgb(var(--ec-card-bg))] rounded-xl p-6 shadow-sm border border-[rgb(var(--ec-page-border))]">
75
+ <div class="bg-[rgb(var(--ec-card-bg))] rounded-xl p-6 shadow-xs border border-[rgb(var(--ec-page-border))]">
76
76
  <div class="w-12 h-12 bg-[rgb(var(--ec-accent-subtle))] rounded-lg flex items-center justify-center mb-4">
77
77
  <svg class="w-6 h-6 text-[rgb(var(--ec-accent))]" viewBox="0 0 24 24" fill="currentColor">
78
78
  <path d="M14 2H6c-1.1 0-1.99.9-1.99 2L4 20c0 1.1.89 2 1.99 2H18c1.1 0 2-.9 2-2V8l-6-6zM6 20V4h7v5h5v11H6z"></path>
@@ -84,7 +84,7 @@ import { BookOpenIcon, FileText } from 'lucide-react';
84
84
  </p>
85
85
  </div>
86
86
 
87
- <div class="bg-[rgb(var(--ec-card-bg))] rounded-xl p-6 shadow-sm border border-[rgb(var(--ec-page-border))]">
87
+ <div class="bg-[rgb(var(--ec-card-bg))] rounded-xl p-6 shadow-xs border border-[rgb(var(--ec-page-border))]">
88
88
  <div class="w-12 h-12 bg-[rgb(var(--ec-accent-subtle))] rounded-lg flex items-center justify-center mb-4">
89
89
  <svg class="w-6 h-6 text-[rgb(var(--ec-accent))]" viewBox="0 0 24 24" fill="currentColor">
90
90
  <path
@@ -98,7 +98,7 @@ import { BookOpenIcon, FileText } from 'lucide-react';
98
98
  </p>
99
99
  </div>
100
100
 
101
- <div class="bg-[rgb(var(--ec-card-bg))] rounded-xl p-6 shadow-sm border border-[rgb(var(--ec-page-border))]">
101
+ <div class="bg-[rgb(var(--ec-card-bg))] rounded-xl p-6 shadow-xs border border-[rgb(var(--ec-page-border))]">
102
102
  <div class="w-12 h-12 bg-[rgb(var(--ec-accent-subtle))] rounded-lg flex items-center justify-center mb-4">
103
103
  <svg class="w-6 h-6 text-[rgb(var(--ec-accent))]" viewBox="0 0 24 24" fill="currentColor">
104
104
  <path d="M18 2H6c-1.1 0-2 .9-2 2v16c0 1.1.9 2 2 2h12c1.1 0 2-.9 2-2V4c0-1.1-.9-2-2-2zM6 4h5v8l-2.5-1.5L6 12V4z"
@@ -111,7 +111,7 @@ import { BookOpenIcon, FileText } from 'lucide-react';
111
111
  </p>
112
112
  </div>
113
113
 
114
- <div class="bg-[rgb(var(--ec-card-bg))] rounded-xl p-6 shadow-sm border border-[rgb(var(--ec-page-border))]">
114
+ <div class="bg-[rgb(var(--ec-card-bg))] rounded-xl p-6 shadow-xs border border-[rgb(var(--ec-page-border))]">
115
115
  <div class="w-12 h-12 bg-[rgb(var(--ec-accent-subtle))] rounded-lg flex items-center justify-center mb-4">
116
116
  <svg class="w-6 h-6 text-[rgb(var(--ec-accent))]" viewBox="0 0 24 24" fill="currentColor">
117
117
  <path
@@ -125,7 +125,7 @@ import { BookOpenIcon, FileText } from 'lucide-react';
125
125
  </p>
126
126
  </div>
127
127
 
128
- <div class="bg-[rgb(var(--ec-card-bg))] rounded-xl p-6 shadow-sm border border-[rgb(var(--ec-page-border))]">
128
+ <div class="bg-[rgb(var(--ec-card-bg))] rounded-xl p-6 shadow-xs border border-[rgb(var(--ec-page-border))]">
129
129
  <div class="w-12 h-12 bg-[rgb(var(--ec-accent-subtle))] rounded-lg flex items-center justify-center mb-4">
130
130
  <svg class="w-6 h-6 text-[rgb(var(--ec-accent))]" viewBox="0 0 24 24" fill="currentColor">
131
131
  <path d="M3 9h14V7H3v2zm0 4h14v-2H3v2zm0 4h14v-2H3v2zm16 0h2v-2h-2v2zm0-10v2h2V7h-2zm0 6h2v-2h-2v2z"></path>
@@ -137,7 +137,7 @@ import { BookOpenIcon, FileText } from 'lucide-react';
137
137
  </p>
138
138
  </div>
139
139
 
140
- <div class="bg-[rgb(var(--ec-card-bg))] rounded-xl p-6 shadow-sm border border-[rgb(var(--ec-page-border))]">
140
+ <div class="bg-[rgb(var(--ec-card-bg))] rounded-xl p-6 shadow-xs border border-[rgb(var(--ec-page-border))]">
141
141
  <div class="w-12 h-12 bg-[rgb(var(--ec-accent-subtle))] rounded-lg flex items-center justify-center mb-4">
142
142
  <svg class="w-6 h-6 text-[rgb(var(--ec-accent))]" viewBox="0 0 24 24" fill="currentColor">
143
143
  <path d="M20 2H4c-1.1 0-2 .9-2 2v18l4-4h14c1.1 0 2-.9 2-2V4c0-1.1-.9-2-2-2zm0 14H6l-2 2V4h16v12z"></path>
@@ -107,7 +107,7 @@ if (!isCustomDocsEnabled()) {
107
107
  <div class="flex flex-wrap items-center gap-3 mb-3">
108
108
  <h1 class="text-4xl font-semibold text-gray-900 font-inter">Custom Documentation</h1>
109
109
  <div
110
- class="inline-flex items-center px-3 py-1.5 rounded-full text-xs font-medium bg-[rgb(var(--ec-accent-subtle))] text-[rgb(var(--ec-accent-text))] border border-[rgb(var(--ec-accent)/0.3)] shadow-sm"
110
+ class="inline-flex items-center px-3 py-1.5 rounded-full text-xs font-medium bg-[rgb(var(--ec-accent-subtle))] text-[rgb(var(--ec-accent-text))] border border-[rgb(var(--ec-accent)/0.3)] shadow-xs"
111
111
  >
112
112
  Pro feature
113
113
  </div>
@@ -128,7 +128,7 @@ if (!isCustomDocsEnabled()) {
128
128
  !isCustomDocsEnabled() && (
129
129
  <a
130
130
  href="https://www.eventcatalog.dev/pro/trial"
131
- class="inline-flex items-center justify-center px-5 py-2 border border-transparent text-sm font-medium rounded-md text-white bg-gradient-to-r from-[rgb(var(--ec-accent-gradient-from))] to-[rgb(var(--ec-accent-gradient-to))] hover:opacity-90 shadow-sm"
131
+ class="inline-flex items-center justify-center px-5 py-2 border border-transparent text-sm font-medium rounded-md text-white bg-gradient-to-r from-[rgb(var(--ec-accent-gradient-from))] to-[rgb(var(--ec-accent-gradient-to))] hover:opacity-90 shadow-xs"
132
132
  >
133
133
  Start 14-day trial
134
134
  </a>
@@ -145,7 +145,7 @@ if (!isCustomDocsEnabled()) {
145
145
  </p>
146
146
 
147
147
  <div class="space-y-10 mb-12">
148
- <div class="bg-white p-6 rounded-lg shadow-sm border border-gray-200">
148
+ <div class="bg-white p-6 rounded-lg shadow-xs border border-gray-200">
149
149
  <div class="flex items-start gap-4">
150
150
  <div
151
151
  class="inline-flex items-center justify-center w-8 h-8 rounded-full bg-blue-100 text-blue-600 text-lg font-medium shrink-0 mt-1"
@@ -160,7 +160,7 @@ if (!isCustomDocsEnabled()) {
160
160
  </div>
161
161
  </div>
162
162
 
163
- <div class="bg-white p-6 rounded-lg shadow-sm border border-gray-200">
163
+ <div class="bg-white p-6 rounded-lg shadow-xs border border-gray-200">
164
164
  <div class="flex items-start gap-4">
165
165
  <div
166
166
  class="inline-flex items-center justify-center w-8 h-8 rounded-full bg-blue-100 text-blue-600 text-lg font-medium shrink-0 mt-1"
@@ -175,7 +175,7 @@ if (!isCustomDocsEnabled()) {
175
175
  </div>
176
176
  </div>
177
177
 
178
- <div class="bg-white p-6 rounded-lg shadow-sm border border-gray-200">
178
+ <div class="bg-white p-6 rounded-lg shadow-xs border border-gray-200">
179
179
  <div class="flex items-start gap-4">
180
180
  <div
181
181
  class="inline-flex items-center justify-center w-8 h-8 rounded-full bg-blue-100 text-blue-600 text-lg font-medium shrink-0 mt-1"
@@ -210,7 +210,7 @@ if (!isCustomDocsEnabled()) {
210
210
  </div>
211
211
  </div>
212
212
 
213
- <div class="bg-white p-6 rounded-lg shadow-sm border border-gray-200">
213
+ <div class="bg-white p-6 rounded-lg shadow-xs border border-gray-200">
214
214
  <div class="flex items-start gap-4">
215
215
  <div
216
216
  class="inline-flex items-center justify-center w-8 h-8 rounded-full bg-blue-100 text-blue-600 text-lg font-medium shrink-0 mt-1"
@@ -52,7 +52,7 @@ if (config.landingPage) {
52
52
  <main class="flex sm:px-8 docs-layout h-full">
53
53
  <div class="flex docs-layout w-full">
54
54
  <div class="w-full lg:mr-2 pr-8 overflow-y-auto py-8">
55
- <div class="w-full !max-w-none">
55
+ <div class="w-full max-w-none!">
56
56
  <CustomContent components={customHomepageComponents} />
57
57
  </div>
58
58
  <Footer />
@@ -16,7 +16,7 @@ const apiAccessEnabled = isEventCatalogScaleEnabled();
16
16
  <main class="flex sm:pl-8 pr-4 docs-layout h-[calc(100vh-var(--header-height,0px)-64px)] bg-[rgb(var(--ec-page-bg))]">
17
17
  <div class="flex docs-layout w-full h-full">
18
18
  <div class="w-full lg:mr-2 py-6 flex flex-col h-full">
19
- <div class="w-full !max-w-none h-full flex flex-col overflow-hidden">
19
+ <div class="w-full max-w-none! h-full flex flex-col overflow-hidden">
20
20
  <SchemaExplorer client:load schemas={schemas as any} apiAccessEnabled={apiAccessEnabled} />
21
21
  </div>
22
22
  </div>
@@ -105,7 +105,7 @@ const hasResources = resourcesToShow.length > 0;
105
105
  if (resource.type === 'event') {
106
106
  return (
107
107
  <div
108
- class="animate-float-in flex items-center gap-2 text-sm text-[rgb(var(--ec-page-text))] px-4 py-2.5 bg-orange-50 dark:bg-orange-500/10 rounded-lg border border-orange-200 dark:border-orange-500/30 shadow-sm"
108
+ class="animate-float-in flex items-center gap-2 text-sm text-[rgb(var(--ec-page-text))] px-4 py-2.5 bg-orange-50 dark:bg-orange-500/10 rounded-lg border border-orange-200 dark:border-orange-500/30 shadow-xs"
109
109
  style={`animation-delay: ${resource.index * 0.3}s;`}
110
110
  >
111
111
  <BoltIcon className="w-4 h-4 text-orange-500" />
@@ -115,7 +115,7 @@ const hasResources = resourcesToShow.length > 0;
115
115
  } else if (resource.type === 'service') {
116
116
  return (
117
117
  <div
118
- class="animate-float-in flex items-center gap-2 text-sm text-[rgb(var(--ec-page-text))] px-4 py-2.5 bg-pink-50 dark:bg-pink-500/10 rounded-lg border border-pink-200 dark:border-pink-500/30 shadow-sm"
118
+ class="animate-float-in flex items-center gap-2 text-sm text-[rgb(var(--ec-page-text))] px-4 py-2.5 bg-pink-50 dark:bg-pink-500/10 rounded-lg border border-pink-200 dark:border-pink-500/30 shadow-xs"
119
119
  style={`animation-delay: ${resource.index * 0.3}s;`}
120
120
  >
121
121
  <ServerIcon className="w-4 h-4 text-pink-500" />
@@ -125,7 +125,7 @@ const hasResources = resourcesToShow.length > 0;
125
125
  } else if (resource.type === 'channel') {
126
126
  return (
127
127
  <div
128
- class="animate-float-in flex items-center gap-2 text-sm text-[rgb(var(--ec-page-text))] px-4 py-2.5 bg-indigo-50 dark:bg-indigo-500/10 rounded-lg border border-indigo-200 dark:border-indigo-500/30 shadow-sm"
128
+ class="animate-float-in flex items-center gap-2 text-sm text-[rgb(var(--ec-page-text))] px-4 py-2.5 bg-indigo-50 dark:bg-indigo-500/10 rounded-lg border border-indigo-200 dark:border-indigo-500/30 shadow-xs"
129
129
  style={`animation-delay: ${resource.index * 0.3}s;`}
130
130
  >
131
131
  <ArrowLeftRightIcon className="w-4 h-4 text-indigo-500" />
@@ -116,7 +116,7 @@ export function remarkDirectives() {
116
116
  data: {
117
117
  hName: 'div',
118
118
  hProperties: {
119
- class: 'prose prose-md dark:prose-invert w-full !max-w-none prose-p:my-1 prose-p:text-inherit',
119
+ class: 'prose prose-md dark:prose-invert w-full max-w-none! prose-p:my-1 prose-p:text-inherit',
120
120
  },
121
121
  },
122
122
  children: contentChildren,
@@ -0,0 +1,84 @@
1
+ @import "tailwindcss";
2
+
3
+ @plugin "@tailwindcss/typography";
4
+
5
+ /* Dark mode uses data-theme attribute, not prefers-color-scheme */
6
+ @custom-variant dark (&:where([data-theme=dark], [data-theme=dark] *));
7
+
8
+ @theme {
9
+ --font-sans: 'Inter', sans-serif;
10
+
11
+ --breakpoint-xxl: 1990px;
12
+
13
+ --color-primary: #a855f7;
14
+ --color-secondary-light: #ff9980;
15
+ --color-secondary: #ff6633;
16
+ --color-secondary-dark: #cc3300;
17
+
18
+ --spacing-header: 4rem;
19
+ --spacing-content: calc(100vh - 4rem);
20
+
21
+ --animate-progress-bar: progress-bar 2s linear infinite;
22
+ --animate-progress-bar-reverse: progress-bar-reverse 2s linear infinite;
23
+ --animate-overlayShow: overlayShow 200ms ease-out;
24
+ --animate-contentShow: contentShow 200ms ease-out;
25
+
26
+ @keyframes progress-bar {
27
+ 0% { transform: translateX(-100%); }
28
+ 100% { transform: translateX(100%); }
29
+ }
30
+
31
+ @keyframes progress-bar-reverse {
32
+ 0% { transform: translateX(100%); }
33
+ 100% { transform: translateX(-100%); }
34
+ }
35
+
36
+ @keyframes overlayShow {
37
+ from { opacity: 0; }
38
+ to { opacity: 1; }
39
+ }
40
+
41
+ @keyframes contentShow {
42
+ from { opacity: 0; transform: scale(0.96); }
43
+ to { opacity: 1; transform: scale(1); }
44
+ }
45
+ }
46
+
47
+ /*
48
+ * Safelist: dynamic color classes used in components that construct class names
49
+ * at runtime (e.g. `bg-${color}-50`). Tailwind v4 can't detect these from source
50
+ * scanning, so we explicitly declare them here.
51
+ *
52
+ * Colors used: orange, blue, green, emerald, amber, violet, pink, purple, gray, yellow, teal
53
+ * Used in: SchemaListItem, Grids/components, SchemaExplorer, MessageGrid
54
+ */
55
+ @source inline("bg-{orange,blue,green,emerald,amber,violet,pink,purple,gray}-{50,100}");
56
+ @source inline("bg-{orange,blue,green,emerald,amber,violet,pink,purple,gray}-500/{10,20}");
57
+ @source inline("text-{orange,blue,green,emerald,amber,violet,pink,purple,gray}-{400,500,600,700}");
58
+ @source inline("border-l-{orange,blue,green,emerald,amber,violet,pink,purple,gray}-500");
59
+ @source inline("ring-2");
60
+ @source inline("ring-{orange,blue,green,emerald,amber,violet,pink,purple,gray}-500");
61
+
62
+ /* Border color variants for MessageGrid cards */
63
+ @source inline("border-{orange,blue,green,emerald,amber,violet,pink,purple,gray}-{200,300}");
64
+ @source inline("{dark:,}border-{orange,blue,green,emerald,amber,violet,pink,purple,gray}-500/{30,50}");
65
+ @source inline("{hover:,dark:hover:,}border-{orange,blue,green,emerald,amber,violet,pink,purple,gray,yellow,teal}-{300,400,500,500/50}");
66
+
67
+ /* Explicit safelist classes used in various components */
68
+ @source inline("bg-{blue,orange}-600");
69
+ @source inline("bg-{red,yellow,pink,green,blue,indigo}-50");
70
+ @source inline("bg-{yellow,pink,green,blue,indigo}-100");
71
+ @source inline("border-l-{red,yellow,blue}-500");
72
+ @source inline("text-[5px] text-[9px] min-h-[100px]");
73
+
74
+ /* Gradient classes for dynamic colors */
75
+ @source inline("from-{orange,blue,green,emerald,amber,violet,pink,purple,gray}-{100,200,300,400,500,600,700}");
76
+ @source inline("to-{orange,blue,green,emerald,amber,violet,pink,purple,gray}-{100,200,300,400,500,600,700}");
77
+
78
+ /* Dark variant safelist for dynamic colors */
79
+ @source inline("{dark:,}bg-{orange,blue,green,emerald,amber,violet,pink,purple,gray}-{100,200,400,500}");
80
+ @source inline("{dark:,}bg-{orange,blue,green,emerald,amber,violet,pink,purple,gray}-500/{20,30}");
81
+ @source inline("{dark:,}text-{orange,blue,green,emerald,amber,violet,pink,purple,gray}-{100,300,400,500,800}");
82
+ @source inline("{dark:,group-hover:,}text-{orange,blue,green,emerald,amber,violet,pink,purple,gray}-{100,300,400,500,600,800}");
83
+ @source inline("{dark:,}ring-{orange,blue,green,emerald,amber,violet,pink,purple,gray}-500/30");
84
+ @source inline("{group-hover:,dark:group-hover:,}text-{orange,blue,green,emerald,amber,violet,pink,purple,gray}-{400,600}");
@@ -0,0 +1,76 @@
1
+ /**
2
+ * Shared icon map for dynamic lucide-react icon lookups.
3
+ *
4
+ * Components that need to resolve icon names from data (sidebar, pill lists, etc.)
5
+ * should import from this map instead of using `import * as LucideIcons from 'lucide-react'`.
6
+ * Wildcard imports force Vite to parse 500+ icon modules on first load, adding seconds
7
+ * to dev server startup time.
8
+ *
9
+ * If a user-specified icon name isn't in this map, it won't render.
10
+ * Add new entries here when new icon names are introduced in sidebar builders,
11
+ * content schemas, or other dynamic icon contexts.
12
+ */
13
+ import {
14
+ ArrowDownToLine,
15
+ ArrowRightLeft,
16
+ ArrowUpFromLine,
17
+ BookOpen,
18
+ BookText,
19
+ Box,
20
+ Boxes,
21
+ Code,
22
+ Database,
23
+ File,
24
+ FileCheck,
25
+ FileCode,
26
+ FileImage,
27
+ FileJson,
28
+ Globe,
29
+ Mail,
30
+ Package,
31
+ Search,
32
+ Server,
33
+ ShoppingCart,
34
+ SquareMousePointer,
35
+ Telescope,
36
+ Terminal,
37
+ Truck,
38
+ User,
39
+ Users,
40
+ Waypoints,
41
+ Workflow,
42
+ Zap,
43
+ type LucideIcon,
44
+ } from 'lucide-react';
45
+
46
+ export const LUCIDE_ICON_MAP: Record<string, LucideIcon> = {
47
+ ArrowDownToLine,
48
+ ArrowRightLeft,
49
+ ArrowUpFromLine,
50
+ BookOpen,
51
+ BookText,
52
+ Box,
53
+ Boxes,
54
+ Code,
55
+ Database,
56
+ File,
57
+ FileCheck,
58
+ FileCode,
59
+ FileImage,
60
+ FileJson,
61
+ Globe,
62
+ Mail,
63
+ Package,
64
+ Search,
65
+ Server,
66
+ ShoppingCart,
67
+ SquareMousePointer,
68
+ Telescope,
69
+ Terminal,
70
+ Truck,
71
+ User,
72
+ Users,
73
+ Waypoints,
74
+ Workflow,
75
+ Zap,
76
+ };
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.18.5",
9
+ "version": "3.19.1",
10
10
  "publishConfig": {
11
11
  "access": "public"
12
12
  },
@@ -26,7 +26,7 @@
26
26
  "@astrojs/node": "^9.5.4",
27
27
  "@astrojs/react": "^4.4.2",
28
28
  "@astrojs/rss": "^4.0.15",
29
- "@astrojs/tailwind": "^6.0.2",
29
+ "@tailwindcss/vite": "^4.1.5",
30
30
  "@asyncapi/avro-schema-parser": "3.0.24",
31
31
  "@asyncapi/parser": "3.6.0",
32
32
  "@asyncapi/react-component": "3.0.2",
@@ -46,7 +46,7 @@
46
46
  "@radix-ui/react-popover": "^1.1.15",
47
47
  "@radix-ui/react-tooltip": "^1.1.8",
48
48
  "@scalar/api-reference-react": "^0.4.37",
49
- "@tailwindcss/typography": "^0.5.13",
49
+ "@tailwindcss/typography": "^0.5.16",
50
50
  "@tanstack/react-table": "^8.17.3",
51
51
  "@xyflow/react": "^12.3.6",
52
52
  "ai": "^6.0.17",
@@ -95,15 +95,15 @@
95
95
  "semver": "7.6.3",
96
96
  "shelljs": "^0.9.0",
97
97
  "svg-pan-zoom": "^3.6.2",
98
- "tailwindcss": "^3.4.3",
98
+ "tailwindcss": "^4.1.5",
99
99
  "typescript": "^5.4.5",
100
100
  "unist-util-visit": "^5.0.0",
101
101
  "update-notifier": "^7.3.1",
102
102
  "uuid": "^10.0.0",
103
103
  "zod": "^3.25.0",
104
+ "@eventcatalog/linter": "1.0.8",
104
105
  "@eventcatalog/sdk": "2.15.1",
105
- "@eventcatalog/visualiser": "^3.15.1",
106
- "@eventcatalog/linter": "1.0.8"
106
+ "@eventcatalog/visualiser": "^3.15.2"
107
107
  },
108
108
  "devDependencies": {
109
109
  "@astrojs/check": "^0.9.6",
@@ -126,7 +126,7 @@
126
126
  "prettier": "^3.3.3",
127
127
  "prettier-plugin-astro": "^0.14.1",
128
128
  "tsup": "^8.1.0",
129
- "vite": "^7.1.7",
129
+ "vite": "^7.1.11",
130
130
  "vite-tsconfig-paths": "^4.3.2",
131
131
  "vitest": "2.1.9"
132
132
  },