@eventcatalog/core 3.36.5 → 3.38.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 (52) 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-2WL2AHTJ.js → chunk-ISACLDZD.js} +1 -1
  6. package/dist/{chunk-TGSOUKM7.js → chunk-MTJE3WRQ.js} +1 -1
  7. package/dist/{chunk-CZV4WMQ2.js → chunk-NMQNDJSA.js} +1 -1
  8. package/dist/{chunk-J3ZV5QI5.js → chunk-QQP5T27E.js} +1 -1
  9. package/dist/{chunk-VDTDZ4XR.js → chunk-WQWNABXQ.js} +1 -1
  10. package/dist/constants.cjs +1 -1
  11. package/dist/constants.js +1 -1
  12. package/dist/eventcatalog.cjs +1 -1
  13. package/dist/eventcatalog.js +5 -5
  14. package/dist/generate.cjs +1 -1
  15. package/dist/generate.js +3 -3
  16. package/dist/utils/cli-logger.cjs +1 -1
  17. package/dist/utils/cli-logger.js +2 -2
  18. package/eventcatalog/src/components/FieldsExplorer/FieldsTable.tsx +2 -8
  19. package/eventcatalog/src/components/MDX/Admonition.tsx +45 -35
  20. package/eventcatalog/src/components/MDX/MessageTable/MessageTable.client.tsx +2 -1
  21. package/eventcatalog/src/components/MDX/ResourceGroupTable/ResourceGroupTable.client.tsx +2 -1
  22. package/eventcatalog/src/components/MDX/ResourceLink/ResourceLink.astro +7 -1
  23. package/eventcatalog/src/components/MDX/ResourceRef/ResourceRef.astro +68 -47
  24. package/eventcatalog/src/components/Settings/LlmAccessSettingsForm.tsx +2 -4
  25. package/eventcatalog/src/components/SideNav/NestedSideBar/utils.ts +1 -0
  26. package/eventcatalog/src/components/Tables/Discover/columns.tsx +3 -16
  27. package/eventcatalog/src/components/Tables/columns/ContainersTableColumns.tsx +2 -2
  28. package/eventcatalog/src/components/Tables/columns/ServiceTableColumns.tsx +3 -2
  29. package/eventcatalog/src/components/Tables/columns/TeamsTableColumns.tsx +4 -14
  30. package/eventcatalog/src/components/Tables/columns/UserTableColumns.tsx +4 -14
  31. package/eventcatalog/src/enterprise/auth/middleware/middleware-auth.ts +8 -1
  32. package/eventcatalog/src/pages/docs/[type]/[id]/[version]/[docType]/[docId]/[docVersion]/index.astro +9 -27
  33. package/eventcatalog/src/pages/docs/[type]/[id]/[version]/[docType]/[docId]/index.astro +9 -27
  34. package/eventcatalog/src/pages/docs/[type]/[id]/[version]/graphql/[filename].astro +12 -28
  35. package/eventcatalog/src/pages/docs/[type]/[id]/[version]/index.astro +14 -33
  36. package/eventcatalog/src/pages/docs/[type]/[id]/[version].md.ts +2 -0
  37. package/eventcatalog/src/pages/docs/[type]/[id]/[version].mdx.ts +2 -0
  38. package/eventcatalog/src/pages/docs/llm/llms-full.txt.ts +6 -0
  39. package/eventcatalog/src/pages/docs/llm/llms.txt.ts +3 -0
  40. package/eventcatalog/src/pages/llms-full.txt.ts +1 -0
  41. package/eventcatalog/src/pages/llms.txt.ts +1 -0
  42. package/eventcatalog/src/pages/settings/llm-access.astro +2 -2
  43. package/eventcatalog/src/styles/tailwind.css +44 -26
  44. package/eventcatalog/src/styles/theme.css +4 -0
  45. package/eventcatalog/src/styles/themes/forest.css +4 -0
  46. package/eventcatalog/src/styles/themes/ocean.css +4 -0
  47. package/eventcatalog/src/styles/themes/sapphire.css +4 -0
  48. package/eventcatalog/src/styles/themes/sunset.css +4 -0
  49. package/eventcatalog/src/utils/collection-colors.ts +76 -0
  50. package/eventcatalog/src/utils/collections/icons.ts +2 -29
  51. package/eventcatalog/src/utils/resource-reference-colors.ts +49 -0
  52. package/package.json +3 -3
@@ -4,26 +4,13 @@ import { DocumentTextIcon, MapIcon } from '@heroicons/react/24/solid';
4
4
  import { ArrowDownIcon, ArrowUpIcon, EllipsisVerticalIcon, StarIcon } from '@heroicons/react/24/outline';
5
5
  import { buildUrl } from '@utils/url-builder';
6
6
  import { getColorAndIconForCollection } from '@utils/collections/icons';
7
+ import { getCollectionTextColorClass } from '@utils/collection-colors';
7
8
  import { isIconPath, resolveIconUrl } from '@utils/icon';
8
9
  import { useStore } from '@nanostores/react';
9
10
  import { favoritesStore, toggleFavorite, type FavoriteItem } from '../../../stores/favorites-store';
10
11
  import type { DiscoverTableData, CollectionType } from './DiscoverTable';
11
12
  import type { TableConfiguration } from '@types';
12
13
 
13
- // Color mapping to ensure Tailwind classes are included in the build
14
- const colorClasses: Record<string, string> = {
15
- orange: 'text-orange-500',
16
- blue: 'text-blue-500',
17
- green: 'text-green-500',
18
- pink: 'text-pink-500',
19
- yellow: 'text-yellow-500',
20
- teal: 'text-teal-500',
21
- purple: 'text-purple-500',
22
- red: 'text-red-500',
23
- gray: 'text-gray-500',
24
- cyan: 'text-cyan-500',
25
- };
26
-
27
14
  const columnHelper = createColumnHelper<DiscoverTableData>();
28
15
 
29
16
  // Badge cell component (proper React component to use hooks)
@@ -80,7 +67,7 @@ const ResourceNameCell = ({ item }: { item: DiscoverTableData }) => {
80
67
  {resourceIconUrl ? (
81
68
  <img src={resourceIconUrl} alt="" className="h-5 w-5 flex-shrink-0 rounded-sm object-contain" />
82
69
  ) : (
83
- <Icon className={`h-4 w-4 flex-shrink-0 ${colorClasses[color] || 'text-[rgb(var(--ec-icon-color))]'}`} />
70
+ <Icon className={`h-4 w-4 flex-shrink-0 ${getCollectionTextColorClass(color, 'text-[rgb(var(--ec-icon-color))]')}`} />
84
71
  )}
85
72
  <span className="text-sm font-semibold text-[rgb(var(--ec-page-text))] group-hover:text-[rgb(var(--ec-accent))]">
86
73
  {item.data.name}
@@ -248,7 +235,7 @@ const CollectionListCell = ({
248
235
  href={buildUrl(`/docs/${item.collection}/${item.data.id}/${item.data.version}`)}
249
236
  className="group inline-flex items-center gap-1.5 text-[0.8rem] text-[rgb(var(--ec-icon-color))] hover:text-[rgb(var(--ec-accent))] transition-colors"
250
237
  >
251
- <item.Icon className={`h-3.5 w-3.5 ${colorClasses[item.color] || 'text-gray-500'} flex-shrink-0`} />
238
+ <item.Icon className={`h-3.5 w-3.5 ${getCollectionTextColorClass(item.color)} flex-shrink-0`} />
252
239
  <span className="truncate max-w-[120px]" title={item.data.name}>
253
240
  {item.data.name}
254
241
  </span>
@@ -21,8 +21,8 @@ export const columns = (tableConfiguration: TableConfiguration) => [
21
21
  href={buildUrl(`/docs/${containerRaw.collection}/${containerRaw.data.id}/${containerRaw.data.version}`)}
22
22
  className="group inline-flex items-center"
23
23
  >
24
- <span className="inline-flex items-center rounded-md border border-[rgb(var(--ec-page-border))] bg-[rgb(var(--ec-card-bg,var(--ec-page-bg)))] hover:border-blue-400 dark:hover:border-blue-500 hover:bg-blue-50 dark:hover:bg-blue-500/10 transition-colors">
25
- <span className="flex items-center justify-center w-6 h-6 bg-blue-500 rounded-l-md">
24
+ <span className="inline-flex items-center rounded-md border border-[rgb(var(--ec-page-border))] bg-[rgb(var(--ec-card-bg,var(--ec-page-bg)))] hover:border-indigo-400 dark:hover:border-indigo-500 hover:bg-indigo-50 dark:hover:bg-indigo-500/10 transition-colors">
25
+ <span className="flex items-center justify-center w-6 h-6 bg-indigo-500 rounded-l-md">
26
26
  <DatabaseIcon className="h-3 w-3 text-white" />
27
27
  </span>
28
28
  <span className="px-2 py-1 text-xs text-[rgb(var(--ec-page-text))] group-hover:text-[rgb(var(--ec-page-text))]">
@@ -5,6 +5,7 @@ import { useMemo, useState } from 'react';
5
5
  import { filterByName, filterCollectionByName } from '../filters/custom-filters';
6
6
  import { buildUrl } from '@utils/url-builder';
7
7
  import { getColorAndIconForCollection } from '@utils/collections/icons';
8
+ import { getCollectionTextColorClass } from '@utils/collection-colors';
8
9
  import { createBadgesColumn } from './SharedColumns';
9
10
  import FavoriteButton from '@components/FavoriteButton';
10
11
  import type { TData } from '../Table';
@@ -95,7 +96,7 @@ export const columns = (tableConfiguration: TableConfiguration) => [
95
96
  href={buildUrl(`/docs/${consumer.collection}/${consumer.data.id}/${consumer.data.version}`)}
96
97
  className="group inline-flex items-center gap-1.5 text-xs hover:text-[rgb(var(--ec-accent))] transition-colors"
97
98
  >
98
- <consumer.Icon className={`h-3.5 w-3.5 text-${consumer.color}-500 flex-shrink-0`} />
99
+ <consumer.Icon className={`h-3.5 w-3.5 ${getCollectionTextColorClass(consumer.color)} flex-shrink-0`} />
99
100
  <span className="truncate max-w-[120px]" title={consumer.data.name}>
100
101
  {consumer.data.name}
101
102
  </span>
@@ -154,7 +155,7 @@ export const columns = (tableConfiguration: TableConfiguration) => [
154
155
  href={buildUrl(`/docs/${sender.collection}/${sender.data.id}/${sender.data.version}`)}
155
156
  className="group inline-flex items-center gap-1.5 text-xs hover:text-[rgb(var(--ec-accent))] transition-colors"
156
157
  >
157
- <sender.Icon className={`h-3.5 w-3.5 text-${sender.color}-500 flex-shrink-0`} />
158
+ <sender.Icon className={`h-3.5 w-3.5 ${getCollectionTextColorClass(sender.color)} flex-shrink-0`} />
158
159
  <span className="truncate max-w-[120px]" title={sender.data.name}>
159
160
  {sender.data.name}
160
161
  </span>
@@ -6,21 +6,9 @@ import type { TData } from '../Table';
6
6
  import type { CollectionUserTypes } from '@types';
7
7
  import type { TableConfiguration } from '@types';
8
8
  import { getColorAndIconForCollection } from '@utils/collections/icons';
9
+ import { getCollectionTextColorClass } from '@utils/collection-colors';
9
10
  const columnHelper = createColumnHelper<TData<CollectionUserTypes>>();
10
11
 
11
- const colorClasses: Record<string, string> = {
12
- orange: 'text-orange-500',
13
- blue: 'text-blue-500',
14
- green: 'text-green-500',
15
- pink: 'text-pink-500',
16
- yellow: 'text-yellow-500',
17
- teal: 'text-teal-500',
18
- purple: 'text-purple-500',
19
- red: 'text-red-500',
20
- gray: 'text-gray-500',
21
- cyan: 'text-cyan-500',
22
- };
23
-
24
12
  const CollectionListCell = ({
25
13
  items,
26
14
  emptyText,
@@ -49,7 +37,9 @@ const CollectionListCell = ({
49
37
  href={href}
50
38
  className="group inline-flex items-center gap-1.5 text-[0.8rem] text-[rgb(var(--ec-icon-color))] transition-colors hover:text-[rgb(var(--ec-accent))]"
51
39
  >
52
- <Icon className={`h-3.5 w-3.5 flex-shrink-0 ${colorClasses[color] || 'text-[rgb(var(--ec-icon-color))]'}`} />
40
+ <Icon
41
+ className={`h-3.5 w-3.5 flex-shrink-0 ${getCollectionTextColorClass(color, 'text-[rgb(var(--ec-icon-color))]')}`}
42
+ />
53
43
  <span className="max-w-[140px] truncate" title={item.data.name}>
54
44
  {item.data.name}
55
45
  </span>
@@ -6,21 +6,9 @@ import type { TData } from '../Table';
6
6
  import type { CollectionUserTypes } from '@types';
7
7
  import type { TableConfiguration } from '@types';
8
8
  import { getColorAndIconForCollection } from '@utils/collections/icons';
9
+ import { getCollectionTextColorClass } from '@utils/collection-colors';
9
10
  const columnHelper = createColumnHelper<TData<CollectionUserTypes>>();
10
11
 
11
- const colorClasses: Record<string, string> = {
12
- orange: 'text-orange-500',
13
- blue: 'text-blue-500',
14
- green: 'text-green-500',
15
- pink: 'text-pink-500',
16
- yellow: 'text-yellow-500',
17
- teal: 'text-teal-500',
18
- purple: 'text-purple-500',
19
- red: 'text-red-500',
20
- gray: 'text-gray-500',
21
- cyan: 'text-cyan-500',
22
- };
23
-
24
12
  const CollectionListCell = ({
25
13
  items,
26
14
  emptyText,
@@ -52,7 +40,9 @@ const CollectionListCell = ({
52
40
  href={href}
53
41
  className="group inline-flex items-center gap-1.5 text-[0.8rem] text-[rgb(var(--ec-icon-color))] transition-colors hover:text-[rgb(var(--ec-accent))]"
54
42
  >
55
- <Icon className={`h-3.5 w-3.5 flex-shrink-0 ${colorClasses[color] || 'text-[rgb(var(--ec-icon-color))]'}`} />
43
+ <Icon
44
+ className={`h-3.5 w-3.5 flex-shrink-0 ${getCollectionTextColorClass(color, 'text-[rgb(var(--ec-icon-color))]')}`}
45
+ />
56
46
  <span className="max-w-[140px] truncate" title={item.data.name}>
57
47
  {item.data.name}
58
48
  </span>
@@ -87,7 +87,14 @@ export function getPublicRoutes(isLLMSTextEnabled: boolean) {
87
87
  return publicRoutes;
88
88
  }
89
89
 
90
- return [...publicRoutes, '/docs/llm/llms.txt', '/docs/llm/llms-full.txt', '/docs/llm/schemas.txt'];
90
+ return [
91
+ ...publicRoutes,
92
+ '/llms.txt',
93
+ '/llms-full.txt',
94
+ '/docs/llm/llms.txt',
95
+ '/docs/llm/llms-full.txt',
96
+ '/docs/llm/schemas.txt',
97
+ ];
91
98
  }
92
99
 
93
100
  export const authMiddleware: MiddlewareHandler = async (context, next) => {
@@ -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';
@@ -99,33 +100,14 @@ const pagefindAttributes =
99
100
  <div data-pagefind-ignore>
100
101
  {
101
102
  props.data.version !== props.data.latestVersion && (
102
- <div class="rounded-md bg-[rgb(var(--ec-accent-subtle))] p-4 not-prose my-4">
103
- <div class="flex">
104
- <div class="flex-shrink-0">
105
- <svg class="h-5 w-5 text-[rgb(var(--ec-accent))]" viewBox="0 0 20 20" fill="currentColor" aria-hidden="true">
106
- <path
107
- fill-rule="evenodd"
108
- 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"
109
- clip-rule="evenodd"
110
- />
111
- </svg>
112
- </div>
113
- <div class="ml-3">
114
- <h3 class="text-sm font-medium text-[rgb(var(--ec-accent-text))]">New version found</h3>
115
- <div class="mt-2 text-sm text-[rgb(var(--ec-accent-text))]">
116
- <p>
117
- You are looking at a previous version of the {singularResourceName} doc <strong>{title}</strong>.{' '}
118
- <a
119
- class="underline hover:text-primary block pt-2"
120
- href={buildUrl(`${docsBasePath}/${props.data.latestVersion}`)}
121
- >
122
- The latest version of this doc is <span>v{props.data.latestVersion}</span> &rarr;
123
- </a>
124
- </p>
125
- </div>
126
- </div>
127
- </div>
128
- </div>
103
+ <Admonition type="warning" title="New version found">
104
+ <p>
105
+ You are looking at a previous version of the {singularResourceName} doc <strong>{title}</strong>.{' '}
106
+ <a class="underline block pt-2" href={buildUrl(`${docsBasePath}/${props.data.latestVersion}`)}>
107
+ The latest version of this doc is <span>v{props.data.latestVersion}</span> &rarr;
108
+ </a>
109
+ </p>
110
+ </Admonition>
129
111
  )
130
112
  }
131
113
  </div>
@@ -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>
@@ -14,6 +14,7 @@ const events = await getCollection('events');
14
14
  const commands = await getCollection('commands');
15
15
  const queries = await getCollection('queries');
16
16
  const services = await getCollection('services');
17
+ const dataProducts = await getCollection('data-products');
17
18
  const domains = await getCollection('domains');
18
19
  const flows = await getCollection('flows');
19
20
  const channels = await getCollection('channels');
@@ -25,6 +26,7 @@ const collections = {
25
26
  commands,
26
27
  queries,
27
28
  services,
29
+ 'data-products': dataProducts,
28
30
  domains,
29
31
  flows,
30
32
  channels,
@@ -12,6 +12,7 @@ const events = await getCollection('events');
12
12
  const commands = await getCollection('commands');
13
13
  const queries = await getCollection('queries');
14
14
  const services = await getCollection('services');
15
+ const dataProducts = await getCollection('data-products');
15
16
  const domains = await getCollection('domains');
16
17
  const flows = await getCollection('flows');
17
18
  const channels = await getCollection('channels');
@@ -25,6 +26,7 @@ const collections = {
25
26
  commands,
26
27
  queries,
27
28
  services,
29
+ 'data-products': dataProducts,
28
30
  domains,
29
31
  flows,
30
32
  channels,
@@ -9,6 +9,7 @@ type AllowedCollections =
9
9
  | 'commands'
10
10
  | 'queries'
11
11
  | 'services'
12
+ | 'data-products'
12
13
  | 'domains'
13
14
  | 'teams'
14
15
  | 'users'
@@ -17,12 +18,14 @@ type AllowedCollections =
17
18
  | 'entities'
18
19
  | 'flows'
19
20
  | 'containers'
21
+ | 'ubiquitousLanguages'
20
22
  | 'resourceDocs';
21
23
 
22
24
  const events = await getCollection('events');
23
25
  const commands = await getCollection('commands');
24
26
  const queries = await getCollection('queries');
25
27
  const services = await getCollection('services');
28
+ const dataProducts = await getCollection('data-products');
26
29
  const domains = await getCollection('domains');
27
30
  const teams = await getCollection('teams');
28
31
  const users = await getCollection('users');
@@ -30,6 +33,7 @@ const entities = await getCollection('entities');
30
33
  const channels = await getCollection('channels');
31
34
  const flows = await getCollection('flows');
32
35
  const containers = await getCollection('containers');
36
+ const ubiquitousLanguages = await getCollection('ubiquitousLanguages');
33
37
  const customDocs = await getCollection('customPages');
34
38
  const resourceDocs = isResourceDocsEnabled() ? await getCollection('resourceDocs') : [];
35
39
 
@@ -43,6 +47,7 @@ export const GET: APIRoute = async ({ params, request }) => {
43
47
  ...commands,
44
48
  ...queries,
45
49
  ...services,
50
+ ...dataProducts,
46
51
  ...domains,
47
52
  ...teams,
48
53
  ...users,
@@ -50,6 +55,7 @@ export const GET: APIRoute = async ({ params, request }) => {
50
55
  ...channels,
51
56
  ...containers,
52
57
  ...flows,
58
+ ...ubiquitousLanguages,
53
59
  ];
54
60
 
55
61
  if (isCustomDocsEnabled()) {
@@ -11,6 +11,7 @@ const commands = await getCollection('commands');
11
11
  const queries = await getCollection('queries');
12
12
 
13
13
  const services = await getCollection('services');
14
+ const dataProducts = await getCollection('data-products');
14
15
  const domains = await getCollection('domains');
15
16
 
16
17
  const teams = await getCollection('teams');
@@ -141,6 +142,8 @@ export const GET: APIRoute = async ({ params, request }) => {
141
142
  queries.map((item) => formatVersionedItem(item, 'queries')).join(''),
142
143
  '\n## Services',
143
144
  services.map((item) => formatVersionedItem(item, 'services')).join(''),
145
+ '\n## Data Products',
146
+ dataProducts.map((item) => formatVersionedItem(item, 'data-products')).join('\n'),
144
147
  '\n## Domains',
145
148
  domains.map((item) => formatVersionedItem(item, 'domains')).join(''),
146
149
  '\n## Flows',
@@ -0,0 +1 @@
1
+ export { GET } from './docs/llm/llms-full.txt.ts';
@@ -0,0 +1 @@
1
+ export { GET } from './docs/llm/llms.txt.ts';
@@ -15,8 +15,8 @@ const initial = {
15
15
  const hasScalePlan = isEventCatalogScaleEnabled();
16
16
 
17
17
  const apiBase = buildUrl('/api/settings');
18
- const llmsTxtUrl = buildUrl('/docs/llm/llms.txt');
19
- const llmsFullTxtUrl = buildUrl('/docs/llm/llms-full.txt');
18
+ const llmsTxtUrl = buildUrl('/llms.txt');
19
+ const llmsFullTxtUrl = buildUrl('/llms-full.txt');
20
20
  const schemasTxtUrl = buildUrl('/docs/llm/schemas.txt');
21
21
  ---
22
22
 
@@ -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 */