@eventcatalog/core 3.36.4 → 3.37.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 (49) 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/{chunk-7WJEUZFM.js → chunk-3N5OG33R.js} +3 -3
  6. package/dist/{chunk-HF27CRFY.js → chunk-6UFDH5SD.js} +1 -1
  7. package/dist/{chunk-NV7DNZ3X.js → chunk-C24AACHY.js} +1 -1
  8. package/dist/{chunk-XTJ636IF.js → chunk-G6DWKVUO.js} +1 -1
  9. package/dist/{chunk-6JY6QF7D.js → chunk-R6AVEQA4.js} +1 -1
  10. package/dist/constants.cjs +1 -1
  11. package/dist/constants.js +1 -1
  12. package/dist/docs/development/bring-your-own-documentation/custom-pages/03-components.md +7 -0
  13. package/dist/docs/development/components/components/08-flow.md +14 -5
  14. package/dist/docs/development/components/components/12-nodegraph.md +7 -4
  15. package/dist/eventcatalog.cjs +1 -1
  16. package/dist/eventcatalog.js +10 -10
  17. package/dist/generate.cjs +1 -1
  18. package/dist/generate.js +3 -3
  19. package/dist/utils/cli-logger.cjs +1 -1
  20. package/dist/utils/cli-logger.js +2 -2
  21. package/eventcatalog/src/components/FieldsExplorer/FieldsTable.tsx +2 -8
  22. package/eventcatalog/src/components/MDX/Admonition.tsx +45 -35
  23. package/eventcatalog/src/components/MDX/MessageTable/MessageTable.client.tsx +2 -1
  24. package/eventcatalog/src/components/MDX/ResourceGroupTable/ResourceGroupTable.client.tsx +2 -1
  25. package/eventcatalog/src/components/MDX/ResourceLink/ResourceLink.astro +7 -1
  26. package/eventcatalog/src/components/MDX/ResourceRef/ResourceRef.astro +68 -47
  27. package/eventcatalog/src/components/SideNav/NestedSideBar/utils.ts +1 -0
  28. package/eventcatalog/src/components/Tables/Discover/columns.tsx +3 -16
  29. package/eventcatalog/src/components/Tables/columns/ContainersTableColumns.tsx +2 -2
  30. package/eventcatalog/src/components/Tables/columns/ServiceTableColumns.tsx +3 -2
  31. package/eventcatalog/src/components/Tables/columns/TeamsTableColumns.tsx +4 -14
  32. package/eventcatalog/src/components/Tables/columns/UserTableColumns.tsx +4 -14
  33. package/eventcatalog/src/enterprise/custom-documentation/pages/docs/custom/index.astro +2 -2
  34. package/eventcatalog/src/enterprise/custom-documentation/pages/docs/custom/root-index.astro +32 -28
  35. package/eventcatalog/src/layouts/VerticalSideBarLayout.astro +1 -1
  36. package/eventcatalog/src/pages/docs/[type]/[id]/[version]/[docType]/[docId]/[docVersion]/index.astro +9 -27
  37. package/eventcatalog/src/pages/docs/[type]/[id]/[version]/[docType]/[docId]/index.astro +9 -27
  38. package/eventcatalog/src/pages/docs/[type]/[id]/[version]/graphql/[filename].astro +12 -28
  39. package/eventcatalog/src/pages/docs/[type]/[id]/[version]/index.astro +14 -33
  40. package/eventcatalog/src/styles/tailwind.css +44 -26
  41. package/eventcatalog/src/styles/theme.css +4 -0
  42. package/eventcatalog/src/styles/themes/forest.css +4 -0
  43. package/eventcatalog/src/styles/themes/ocean.css +4 -0
  44. package/eventcatalog/src/styles/themes/sapphire.css +4 -0
  45. package/eventcatalog/src/styles/themes/sunset.css +4 -0
  46. package/eventcatalog/src/utils/collection-colors.ts +76 -0
  47. package/eventcatalog/src/utils/collections/icons.ts +2 -29
  48. package/eventcatalog/src/utils/resource-reference-colors.ts +49 -0
  49. package/package.json +3 -3
@@ -2,6 +2,7 @@
2
2
  import { render } from 'astro:content';
3
3
 
4
4
  import VerticalSideBarLayout from '@layouts/VerticalSideBarLayout.astro';
5
+ import Admonition from '@components/MDX/Admonition';
5
6
  import components from '@components/MDX/components';
6
7
  import CopyAsMarkdown from '@components/CopyAsMarkdown';
7
8
  import { buildUrl } from '@utils/url-builder';
@@ -93,33 +94,14 @@ const pagefindAttributes =
93
94
  <div data-pagefind-ignore>
94
95
  {
95
96
  props.data.version !== props.data.latestVersion && (
96
- <div class="rounded-md bg-[rgb(var(--ec-accent-subtle))] p-4 not-prose my-4">
97
- <div class="flex">
98
- <div class="flex-shrink-0">
99
- <svg class="h-5 w-5 text-[rgb(var(--ec-accent))]" viewBox="0 0 20 20" fill="currentColor" aria-hidden="true">
100
- <path
101
- fill-rule="evenodd"
102
- d="M8.485 2.495c.673-1.167 2.357-1.167 3.03 0l6.28 10.875c.673 1.167-.17 2.625-1.516 2.625H3.72c-1.347 0-2.189-1.458-1.515-2.625L8.485 2.495zM10 5a.75.75 0 01.75.75v3.5a.75.75 0 01-1.5 0v-3.5A.75.75 0 0110 5zm0 9a1 1 0 100-2 1 1 0 000 2z"
103
- clip-rule="evenodd"
104
- />
105
- </svg>
106
- </div>
107
- <div class="ml-3">
108
- <h3 class="text-sm font-medium text-[rgb(var(--ec-accent-text))]">New version found</h3>
109
- <div class="mt-2 text-sm text-[rgb(var(--ec-accent-text))]">
110
- <p>
111
- You are looking at a previous version of the {singularResourceName} doc <strong>{title}</strong>.{' '}
112
- <a
113
- class="underline hover:text-primary block pt-2"
114
- href={buildUrl(`${docsBasePath}/${props.data.latestVersion}`)}
115
- >
116
- The latest version of this doc is <span>v{props.data.latestVersion}</span> &rarr;
117
- </a>
118
- </p>
119
- </div>
120
- </div>
121
- </div>
122
- </div>
97
+ <Admonition type="warning" title="New version found">
98
+ <p>
99
+ You are looking at a previous version of the {singularResourceName} doc <strong>{title}</strong>.{' '}
100
+ <a class="underline block pt-2" href={buildUrl(`${docsBasePath}/${props.data.latestVersion}`)}>
101
+ The latest version of this doc is <span>v{props.data.latestVersion}</span> &rarr;
102
+ </a>
103
+ </p>
104
+ </Admonition>
123
105
  )
124
106
  }
125
107
  </div>
@@ -109,34 +109,18 @@ const pagefindAttributes =
109
109
  <div data-pagefind-ignore>
110
110
  {
111
111
  data.version !== data.latestVersion && (
112
- <div class="rounded-md bg-[rgb(var(--ec-accent-subtle))] p-4 not-prose my-4">
113
- <div class="flex">
114
- <div class="flex-shrink-0">
115
- <svg class="h-5 w-5 text-[rgb(var(--ec-accent))]" viewBox="0 0 20 20" fill="currentColor" aria-hidden="true">
116
- <path
117
- fill-rule="evenodd"
118
- d="M8.485 2.495c.673-1.167 2.357-1.167 3.03 0l6.28 10.875c.673 1.167-.17 2.625-1.516 2.625H3.72c-1.347 0-2.189-1.458-1.515-2.625L8.485 2.495zM10 5a.75.75 0 01.75.75v3.5a.75.75 0 01-1.5 0v-3.5A.75.75 0 0110 5zm0 9a1 1 0 100-2 1 1 0 000 2z"
119
- clip-rule="evenodd"
120
- />
121
- </svg>
122
- </div>
123
- <div class="ml-3">
124
- <h3 class="text-sm font-medium text-[rgb(var(--ec-accent-text))]">New version found</h3>
125
- <div class="mt-2 text-sm text-[rgb(var(--ec-accent-text))]">
126
- <p>
127
- You are looking at a previous version of the service <strong>{data.name}</strong>.{' '}
128
- <a
129
- class="underline hover:text-primary block pt-2"
130
- href={buildUrl(`/docs/${collection}/${data.id}/${data.latestVersion}/graphql/${filename}`)}
131
- >
132
- The latest version of this GraphQL schema is
133
- <span>v{data.latestVersion}</span> &rarr;
134
- </a>
135
- </p>
136
- </div>
137
- </div>
138
- </div>
139
- </div>
112
+ <Admonition type="warning" title="New version found">
113
+ <p>
114
+ You are looking at a previous version of the service <strong>{data.name}</strong>.{' '}
115
+ <a
116
+ class="underline block pt-2"
117
+ href={buildUrl(`/docs/${collection}/${data.id}/${data.latestVersion}/graphql/${filename}`)}
118
+ >
119
+ The latest version of this GraphQL schema is
120
+ <span>v{data.latestVersion}</span> &rarr;
121
+ </a>
122
+ </p>
123
+ </Admonition>
140
124
  )
141
125
  }
142
126
  </div>
@@ -349,10 +349,7 @@ if (!hasCurrentFlowEmbed && !hasCurrentPageNodeGraph) {
349
349
  )
350
350
  }
351
351
  <div class="flex items-center gap-2">
352
- <h2
353
- id="doc-page-header"
354
- class={`text-2xl md:text-4xl font-bold text-[rgb(var(--ec-page-text))] ${props.data.deprecated && hasDeprecated ? 'text-red-500' : ''}`}
355
- >
352
+ <h2 id="doc-page-header" class="text-2xl md:text-4xl font-bold text-[rgb(var(--ec-page-text))]">
356
353
  {props.data.name}
357
354
  {props.data.latestVersion !== props.data.version && <span>(v{props.data.version})</span>}
358
355
  </h2>
@@ -485,35 +482,19 @@ if (!hasCurrentFlowEmbed && !hasCurrentPageNodeGraph) {
485
482
  <div data-pagefind-ignore>
486
483
  {
487
484
  props.data.version !== props.data.latestVersion && (
488
- <div class="rounded-md bg-[rgb(var(--ec-accent-subtle))] p-4 not-prose my-4">
489
- <div class="flex">
490
- <div class="flex-shrink-0">
491
- <svg class="h-5 w-5 text-[rgb(var(--ec-accent))]" viewBox="0 0 20 20" fill="currentColor" aria-hidden="true">
492
- <path
493
- fill-rule="evenodd"
494
- d="M8.485 2.495c.673-1.167 2.357-1.167 3.03 0l6.28 10.875c.673 1.167-.17 2.625-1.516 2.625H3.72c-1.347 0-2.189-1.458-1.515-2.625L8.485 2.495zM10 5a.75.75 0 01.75.75v3.5a.75.75 0 01-1.5 0v-3.5A.75.75 0 0110 5zm0 9a1 1 0 100-2 1 1 0 000 2z"
495
- clip-rule="evenodd"
496
- />
497
- </svg>
498
- </div>
499
- <div class="ml-3">
500
- <h3 class="text-sm font-medium text-[rgb(var(--ec-accent-text))]">New version found</h3>
501
- <div class="mt-2 text-sm text-[rgb(var(--ec-accent-text))]">
502
- <p>
503
- You are looking at a previous version of the {props.collection.slice(0, props.collection.length - 1)}{' '}
504
- <strong>{props.data.name}</strong>.{' '}
505
- <a
506
- class="underline hover:text-primary block pt-2"
507
- href={buildUrl(`/docs/${props.collection}/${props.data.id}/${props.data.latestVersion}`)}
508
- >
509
- The latest version of this {props.collection.slice(0, props.collection.length - 1)} is
510
- <span>v{props.data.latestVersion}</span> &rarr;
511
- </a>
512
- </p>
513
- </div>
514
- </div>
515
- </div>
516
- </div>
485
+ <Admonition type="warning" title="New version found">
486
+ <p>
487
+ You are looking at a previous version of the {props.collection.slice(0, props.collection.length - 1)}{' '}
488
+ <strong>{props.data.name}</strong>.{' '}
489
+ <a
490
+ class="underline block pt-2"
491
+ href={buildUrl(`/docs/${props.collection}/${props.data.id}/${props.data.latestVersion}`)}
492
+ >
493
+ The latest version of this {props.collection.slice(0, props.collection.length - 1)} is
494
+ <span>v{props.data.latestVersion}</span> &rarr;
495
+ </a>
496
+ </p>
497
+ </Admonition>
517
498
  )
518
499
  }
519
500
  </div>
@@ -1,4 +1,4 @@
1
- @import "tailwindcss";
1
+ @import 'tailwindcss';
2
2
 
3
3
  @plugin "@tailwindcss/typography";
4
4
 
@@ -24,23 +24,41 @@
24
24
  --animate-contentShow: contentShow 200ms ease-out;
25
25
 
26
26
  @keyframes progress-bar {
27
- 0% { transform: translateX(-100%); }
28
- 100% { transform: translateX(100%); }
27
+ 0% {
28
+ transform: translateX(-100%);
29
+ }
30
+ 100% {
31
+ transform: translateX(100%);
32
+ }
29
33
  }
30
34
 
31
35
  @keyframes progress-bar-reverse {
32
- 0% { transform: translateX(100%); }
33
- 100% { transform: translateX(-100%); }
36
+ 0% {
37
+ transform: translateX(100%);
38
+ }
39
+ 100% {
40
+ transform: translateX(-100%);
41
+ }
34
42
  }
35
43
 
36
44
  @keyframes overlayShow {
37
- from { opacity: 0; }
38
- to { opacity: 1; }
45
+ from {
46
+ opacity: 0;
47
+ }
48
+ to {
49
+ opacity: 1;
50
+ }
39
51
  }
40
52
 
41
53
  @keyframes contentShow {
42
- from { opacity: 0; transform: scale(0.96); }
43
- to { opacity: 1; transform: scale(1); }
54
+ from {
55
+ opacity: 0;
56
+ transform: scale(0.96);
57
+ }
58
+ to {
59
+ opacity: 1;
60
+ transform: scale(1);
61
+ }
44
62
  }
45
63
  }
46
64
 
@@ -49,20 +67,20 @@
49
67
  * at runtime (e.g. `bg-${color}-50`). Tailwind v4 can't detect these from source
50
68
  * scanning, so we explicitly declare them here.
51
69
  *
52
- * Colors used: orange, blue, green, emerald, amber, violet, pink, purple, gray, yellow, teal
70
+ * Colors used: orange, blue, green, emerald, amber, violet, pink, purple, gray, yellow, teal, cyan, indigo
53
71
  * Used in: SchemaListItem, Grids/components, SchemaExplorer, MessageGrid
54
72
  */
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");
73
+ @source inline("bg-{orange,blue,green,emerald,amber,violet,pink,purple,gray,yellow,teal,cyan,indigo}-{50,100}");
74
+ @source inline("bg-{orange,blue,green,emerald,amber,violet,pink,purple,gray,yellow,teal,cyan,indigo}-500/{10,20}");
75
+ @source inline("text-{orange,blue,green,emerald,amber,violet,pink,purple,gray,yellow,teal,cyan,indigo}-{400,500,600,700}");
76
+ @source inline("border-l-{orange,blue,green,emerald,amber,violet,pink,purple,gray,yellow,teal,cyan,indigo}-500");
59
77
  @source inline("ring-2");
60
- @source inline("ring-{orange,blue,green,emerald,amber,violet,pink,purple,gray}-500");
78
+ @source inline("ring-{orange,blue,green,emerald,amber,violet,pink,purple,gray,yellow,teal,cyan,indigo}-500");
61
79
 
62
80
  /* 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}");
81
+ @source inline("border-{orange,blue,green,emerald,amber,violet,pink,purple,gray,yellow,teal,cyan,indigo}-{200,300}");
82
+ @source inline("{dark:,}border-{orange,blue,green,emerald,amber,violet,pink,purple,gray,yellow,teal,cyan,indigo}-500/{30,50}");
83
+ @source inline("{hover:,dark:hover:,}border-{orange,blue,green,emerald,amber,violet,pink,purple,gray,yellow,teal,cyan,indigo}-{300,400,500,500/50}");
66
84
 
67
85
  /* Explicit safelist classes used in various components */
68
86
  @source inline("bg-{blue,orange}-600");
@@ -72,13 +90,13 @@
72
90
  @source inline("text-[5px] text-[9px] min-h-[100px]");
73
91
 
74
92
  /* 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}");
93
+ @source inline("from-{orange,blue,green,emerald,amber,violet,pink,purple,gray,yellow,teal,cyan,indigo}-{100,200,300,400,500,600,700}");
94
+ @source inline("to-{orange,blue,green,emerald,amber,violet,pink,purple,gray,yellow,teal,cyan,indigo}-{100,200,300,400,500,600,700}");
77
95
 
78
96
  /* 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}");
97
+ @source inline("{dark:,}bg-{orange,blue,green,emerald,amber,violet,pink,purple,gray,yellow,teal,cyan,indigo}-{100,200,400,500}");
98
+ @source inline("{dark:,}bg-{orange,blue,green,emerald,amber,violet,pink,purple,gray,yellow,teal,cyan,indigo}-500/{20,30}");
99
+ @source inline("{dark:,}text-{orange,blue,green,emerald,amber,violet,pink,purple,gray,yellow,teal,cyan,indigo}-{100,300,400,500,800}");
100
+ @source inline("{dark:,group-hover:,}text-{orange,blue,green,emerald,amber,violet,pink,purple,gray,yellow,teal,cyan,indigo}-{100,300,400,500,600,800}");
101
+ @source inline("{dark:,}ring-{orange,blue,green,emerald,amber,violet,pink,purple,gray,yellow,teal,cyan,indigo}-500/30");
102
+ @source inline("{group-hover:,dark:group-hover:,}text-{orange,blue,green,emerald,amber,violet,pink,purple,gray,yellow,teal,cyan,indigo}-{400,600}");
@@ -108,6 +108,8 @@
108
108
  --ec-badge-design-text: 15 118 110; /* teal-700 */
109
109
  --ec-badge-channel-bg: 224 231 255; /* indigo-100 */
110
110
  --ec-badge-channel-text: 67 56 202; /* indigo-700 */
111
+ --ec-badge-container-bg: 224 231 255; /* indigo-100 */
112
+ --ec-badge-container-text: 67 56 202; /* indigo-700 */
111
113
  --ec-badge-data-product-bg: 219 234 254; /* blue-100 */
112
114
  --ec-badge-data-product-text: 30 64 175; /* blue-800 */
113
115
  --ec-badge-default-bg: 243 244 246; /* gray-100 */
@@ -214,6 +216,8 @@
214
216
  --ec-badge-design-text: 94 234 212; /* teal-300 */
215
217
  --ec-badge-channel-bg: 49 46 129 / 0.3; /* indigo-900/30 */
216
218
  --ec-badge-channel-text: 165 180 252; /* indigo-300 */
219
+ --ec-badge-container-bg: 49 46 129 / 0.3; /* indigo-900/30 */
220
+ --ec-badge-container-text: 165 180 252; /* indigo-300 */
217
221
  --ec-badge-data-product-bg: 30 64 175 / 0.3; /* blue-800/30 */
218
222
  --ec-badge-data-product-text: 147 197 253; /* blue-300 */
219
223
  --ec-badge-default-bg: 63 63 70 / 0.3; /* zinc-700/30 */
@@ -101,6 +101,8 @@
101
101
  --ec-badge-design-text: 22 101 52; /* green-800 */
102
102
  --ec-badge-channel-bg: 224 231 255; /* indigo-100 */
103
103
  --ec-badge-channel-text: 67 56 202; /* indigo-700 */
104
+ --ec-badge-container-bg: 224 231 255; /* indigo-100 */
105
+ --ec-badge-container-text: 67 56 202; /* indigo-700 */
104
106
  --ec-badge-data-product-bg: 219 234 254; /* blue-100 */
105
107
  --ec-badge-data-product-text: 30 64 175; /* blue-800 */
106
108
  --ec-badge-default-bg: 240 253 244; /* green-50 */
@@ -198,6 +200,8 @@
198
200
  --ec-badge-design-text: 134 239 172; /* green-300 */
199
201
  --ec-badge-channel-bg: 49 46 129 / 0.3; /* indigo-900/30 */
200
202
  --ec-badge-channel-text: 165 180 252; /* indigo-300 */
203
+ --ec-badge-container-bg: 49 46 129 / 0.3; /* indigo-900/30 */
204
+ --ec-badge-container-text: 165 180 252; /* indigo-300 */
201
205
  --ec-badge-data-product-bg: 30 64 175 / 0.3; /* blue-800/30 */
202
206
  --ec-badge-data-product-text: 147 197 253; /* blue-300 */
203
207
  --ec-badge-default-bg: 55 65 81 / 0.3; /* gray-700/30 */
@@ -101,6 +101,8 @@
101
101
  --ec-badge-design-text: 15 118 110; /* teal-700 */
102
102
  --ec-badge-channel-bg: 224 231 255; /* indigo-100 */
103
103
  --ec-badge-channel-text: 67 56 202; /* indigo-700 */
104
+ --ec-badge-container-bg: 224 231 255; /* indigo-100 */
105
+ --ec-badge-container-text: 67 56 202; /* indigo-700 */
104
106
  --ec-badge-data-product-bg: 219 234 254; /* blue-100 */
105
107
  --ec-badge-data-product-text: 30 64 175; /* blue-800 */
106
108
  --ec-badge-default-bg: 240 253 250; /* teal-50 */
@@ -203,6 +205,8 @@
203
205
  --ec-badge-design-text: 94 234 212; /* teal-300 */
204
206
  --ec-badge-channel-bg: 49 46 129 / 0.3; /* indigo-900/30 */
205
207
  --ec-badge-channel-text: 165 180 252; /* indigo-300 */
208
+ --ec-badge-container-bg: 49 46 129 / 0.3; /* indigo-900/30 */
209
+ --ec-badge-container-text: 165 180 252; /* indigo-300 */
206
210
  --ec-badge-data-product-bg: 30 64 175 / 0.3; /* blue-800/30 */
207
211
  --ec-badge-data-product-text: 147 197 253; /* blue-300 */
208
212
  --ec-badge-default-bg: 51 65 85 / 0.3; /* slate-700/30 */
@@ -101,6 +101,8 @@
101
101
  --ec-badge-design-text: 37 99 235; /* blue-600 */
102
102
  --ec-badge-channel-bg: 224 231 255; /* indigo-100 */
103
103
  --ec-badge-channel-text: 67 56 202; /* indigo-700 */
104
+ --ec-badge-container-bg: 224 231 255; /* indigo-100 */
105
+ --ec-badge-container-text: 67 56 202; /* indigo-700 */
104
106
  --ec-badge-data-product-bg: 219 234 254; /* blue-100 */
105
107
  --ec-badge-data-product-text: 30 64 175; /* blue-800 */
106
108
  --ec-badge-default-bg: 239 246 255; /* blue-50 */
@@ -198,6 +200,8 @@
198
200
  --ec-badge-design-text: 147 197 253; /* blue-300 */
199
201
  --ec-badge-channel-bg: 49 46 129 / 0.3; /* indigo-900/30 */
200
202
  --ec-badge-channel-text: 165 180 252; /* indigo-300 */
203
+ --ec-badge-container-bg: 49 46 129 / 0.3; /* indigo-900/30 */
204
+ --ec-badge-container-text: 165 180 252; /* indigo-300 */
201
205
  --ec-badge-data-product-bg: 30 64 175 / 0.3; /* blue-800/30 */
202
206
  --ec-badge-data-product-text: 147 197 253; /* blue-300 */
203
207
  --ec-badge-default-bg: 51 65 85 / 0.3; /* slate-700/30 */
@@ -101,6 +101,8 @@
101
101
  --ec-badge-design-text: 234 88 12; /* orange-600 */
102
102
  --ec-badge-channel-bg: 224 231 255; /* indigo-100 */
103
103
  --ec-badge-channel-text: 67 56 202; /* indigo-700 */
104
+ --ec-badge-container-bg: 224 231 255; /* indigo-100 */
105
+ --ec-badge-container-text: 67 56 202; /* indigo-700 */
104
106
  --ec-badge-data-product-bg: 219 234 254; /* blue-100 */
105
107
  --ec-badge-data-product-text: 30 64 175; /* blue-800 */
106
108
  --ec-badge-default-bg: 255 247 237; /* orange-50 */
@@ -198,6 +200,8 @@
198
200
  --ec-badge-design-text: 253 186 116; /* orange-300 */
199
201
  --ec-badge-channel-bg: 49 46 129 / 0.3; /* indigo-900/30 */
200
202
  --ec-badge-channel-text: 165 180 252; /* indigo-300 */
203
+ --ec-badge-container-bg: 49 46 129 / 0.3; /* indigo-900/30 */
204
+ --ec-badge-container-text: 165 180 252; /* indigo-300 */
201
205
  --ec-badge-data-product-bg: 30 64 175 / 0.3; /* blue-800/30 */
202
206
  --ec-badge-data-product-text: 147 197 253; /* blue-300 */
203
207
  --ec-badge-default-bg: 64 64 64 / 0.3; /* neutral-700/30 */
@@ -0,0 +1,76 @@
1
+ export type CollectionColor =
2
+ | 'orange'
3
+ | 'blue'
4
+ | 'green'
5
+ | 'pink'
6
+ | 'yellow'
7
+ | 'teal'
8
+ | 'purple'
9
+ | 'red'
10
+ | 'gray'
11
+ | 'cyan'
12
+ | 'indigo';
13
+
14
+ export const getColorForCollection = (collection: string): CollectionColor => {
15
+ switch (collection) {
16
+ case 'events':
17
+ return 'orange';
18
+ case 'commands':
19
+ return 'blue';
20
+ case 'queries':
21
+ return 'green';
22
+ case 'flows':
23
+ return 'teal';
24
+ case 'teams':
25
+ return 'gray';
26
+ case 'users':
27
+ return 'gray';
28
+ case 'channels':
29
+ return 'purple';
30
+ case 'ubiquitousLanguages':
31
+ return 'green';
32
+ case 'entities':
33
+ return 'purple';
34
+ case 'domains':
35
+ return 'yellow';
36
+ case 'services':
37
+ return 'pink';
38
+ case 'data-products':
39
+ return 'cyan';
40
+ case 'containers':
41
+ return 'indigo';
42
+ default:
43
+ return 'gray';
44
+ }
45
+ };
46
+
47
+ export const tailwind500RgbByColor: Record<CollectionColor, string> = {
48
+ orange: '249 115 22',
49
+ blue: '59 130 246',
50
+ green: '34 197 94',
51
+ pink: '236 72 153',
52
+ yellow: '234 179 8',
53
+ teal: '20 184 166',
54
+ purple: '168 85 247',
55
+ red: '239 68 68',
56
+ gray: '107 114 128',
57
+ cyan: '6 182 212',
58
+ indigo: '99 102 241',
59
+ };
60
+
61
+ export const collectionTextColorClassByColor: Record<CollectionColor, string> = {
62
+ orange: 'text-orange-500',
63
+ blue: 'text-blue-500',
64
+ green: 'text-green-500',
65
+ pink: 'text-pink-500',
66
+ yellow: 'text-yellow-500',
67
+ teal: 'text-teal-500',
68
+ purple: 'text-purple-500',
69
+ red: 'text-red-500',
70
+ gray: 'text-gray-500',
71
+ cyan: 'text-cyan-500',
72
+ indigo: 'text-indigo-500',
73
+ };
74
+
75
+ export const getCollectionTextColorClass = (color: string, fallback = 'text-gray-500'): string =>
76
+ collectionTextColorClassByColor[color as CollectionColor] || fallback;
@@ -13,6 +13,7 @@ import {
13
13
  CubeIcon,
14
14
  } from '@heroicons/react/24/outline';
15
15
  import { BookText, Box, DatabaseIcon } from 'lucide-react';
16
+ import { getColorForCollection } from '@utils/collection-colors';
16
17
 
17
18
  export const getIconForCollection = (collection: string) => {
18
19
  switch (collection) {
@@ -53,33 +54,5 @@ export const getIconForCollection = (collection: string) => {
53
54
 
54
55
  export const getColorAndIconForCollection = (collection: string) => {
55
56
  const icon = getIconForCollection(collection);
56
-
57
- switch (collection) {
58
- case 'events':
59
- return { color: 'orange', Icon: icon };
60
- case 'commands':
61
- return { color: 'blue', Icon: icon };
62
- case 'queries':
63
- return { color: 'green', Icon: icon };
64
- case 'flows':
65
- return { color: 'teal', Icon: icon };
66
- case 'teams':
67
- return { color: 'red', Icon: icon };
68
- case 'users':
69
- return { color: 'gray', Icon: icon };
70
- case 'channels':
71
- return { color: 'purple', Icon: icon };
72
- case 'ubiquitousLanguages':
73
- return { color: 'green', Icon: icon };
74
- case 'entities':
75
- return { color: 'purple', Icon: icon };
76
- case 'domains':
77
- return { color: 'yellow', Icon: icon };
78
- case 'services':
79
- return { color: 'pink', Icon: icon };
80
- case 'data-products':
81
- return { color: 'cyan', Icon: icon };
82
- default:
83
- return { color: 'gray', Icon: icon };
84
- }
57
+ return { color: getColorForCollection(collection), Icon: icon };
85
58
  };
@@ -0,0 +1,49 @@
1
+ import { getColorForCollection, tailwind500RgbByColor, type CollectionColor } from './collection-colors';
2
+ import { resourceToCollectionMap } from './collections/util';
3
+
4
+ export type ResourceReferenceType =
5
+ | 'entity'
6
+ | 'service'
7
+ | 'event'
8
+ | 'command'
9
+ | 'query'
10
+ | 'domain'
11
+ | 'flow'
12
+ | 'channel'
13
+ | 'diagram'
14
+ | 'container'
15
+ | 'user'
16
+ | 'team'
17
+ | 'doc'
18
+ | 'data-product';
19
+
20
+ const resourceTypeToCollection = {
21
+ ...resourceToCollectionMap,
22
+ doc: 'customPages',
23
+ } as Record<ResourceReferenceType, string>;
24
+
25
+ export const getResourceReferenceColorName = (type: string): CollectionColor => {
26
+ const collection = resourceTypeToCollection[type as ResourceReferenceType] || '';
27
+ return getColorForCollection(collection);
28
+ };
29
+
30
+ export const getResourceReferenceStyle = (type: string): string => {
31
+ if (type === 'doc') {
32
+ return [
33
+ '--ec-resource-ref-bg: rgb(var(--ec-accent) / 0.12)',
34
+ '--ec-resource-ref-color: rgb(var(--ec-accent))',
35
+ 'color: var(--ec-resource-ref-color)',
36
+ 'text-decoration-color: var(--ec-resource-ref-color)',
37
+ ].join('; ');
38
+ }
39
+
40
+ const color = getResourceReferenceColorName(type);
41
+ const rgb = tailwind500RgbByColor[color];
42
+
43
+ return [
44
+ `--ec-resource-ref-bg: rgb(${rgb} / 0.12)`,
45
+ `--ec-resource-ref-color: rgb(${rgb})`,
46
+ 'color: var(--ec-resource-ref-color)',
47
+ 'text-decoration-color: var(--ec-resource-ref-color)',
48
+ ].join('; ');
49
+ };
package/package.json CHANGED
@@ -7,7 +7,7 @@
7
7
  },
8
8
  "license": "SEE LICENSE IN LICENSE",
9
9
  "type": "module",
10
- "version": "3.36.4",
10
+ "version": "3.37.0",
11
11
  "publishConfig": {
12
12
  "access": "public"
13
13
  },
@@ -107,8 +107,8 @@
107
107
  "uuid": "^10.0.0",
108
108
  "zod": "^4.3.6",
109
109
  "@eventcatalog/linter": "1.0.23",
110
- "@eventcatalog/visualiser": "^3.20.3",
111
- "@eventcatalog/sdk": "2.21.1"
110
+ "@eventcatalog/sdk": "2.21.1",
111
+ "@eventcatalog/visualiser": "^3.21.0"
112
112
  },
113
113
  "devDependencies": {
114
114
  "@astrojs/check": "^0.9.9",