@eventcatalog/core 3.18.5 → 3.19.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 (76) 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-SSNGN2OB.js → chunk-7JIM3GZL.js} +1 -1
  7. package/dist/{chunk-5J4CB7HN.js → chunk-A4JKYK6M.js} +1 -1
  8. package/dist/{chunk-Z3BWXNQW.js → chunk-DME6DR6Z.js} +1 -1
  9. package/dist/{chunk-2IVWMV2T.js → chunk-NDGH67WK.js} +1 -1
  10. package/dist/{chunk-JEZODNLN.js → chunk-RPN42UQI.js} +3 -3
  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 +8 -8
  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]/index.astro +1 -1
  63. package/eventcatalog/src/pages/docs/[type]/[id]/[version]/changelog/index.astro +1 -1
  64. package/eventcatalog/src/pages/docs/[type]/[id]/[version]/graphql/[filename].astro +1 -1
  65. package/eventcatalog/src/pages/docs/[type]/[id]/[version]/index.astro +1 -1
  66. package/eventcatalog/src/pages/docs/[type]/[id]/language/[dictionaryId]/index.astro +1 -1
  67. package/eventcatalog/src/pages/docs/custom/feature.astro +6 -6
  68. package/eventcatalog/src/pages/docs/custom/index.astro +6 -6
  69. package/eventcatalog/src/pages/index.astro +1 -1
  70. package/eventcatalog/src/pages/schemas/explorer/index.astro +1 -1
  71. package/eventcatalog/src/pages/studio.astro +3 -3
  72. package/eventcatalog/src/remark-plugins/directives.ts +1 -1
  73. package/eventcatalog/src/styles/tailwind.css +84 -0
  74. package/eventcatalog/src/utils/icon-map.ts +76 -0
  75. package/package.json +7 -7
  76. package/eventcatalog/tailwind.config.mjs +0 -103
@@ -37,7 +37,7 @@ var import_axios = __toESM(require("axios"), 1);
37
37
  var import_os = __toESM(require("os"), 1);
38
38
 
39
39
  // package.json
40
- var version = "3.18.5";
40
+ var version = "3.19.0";
41
41
 
42
42
  // src/constants.ts
43
43
  var VERSION = version;
@@ -1,7 +1,7 @@
1
1
  import {
2
2
  raiseEvent
3
- } from "../chunk-5J4CB7HN.js";
4
- import "../chunk-Z3BWXNQW.js";
3
+ } from "../chunk-A4JKYK6M.js";
4
+ import "../chunk-DME6DR6Z.js";
5
5
  export {
6
6
  raiseEvent
7
7
  };
@@ -111,7 +111,7 @@ var import_axios = __toESM(require("axios"), 1);
111
111
  var import_os = __toESM(require("os"), 1);
112
112
 
113
113
  // package.json
114
- var version = "3.18.5";
114
+ var version = "3.19.0";
115
115
 
116
116
  // src/constants.ts
117
117
  var VERSION = version;
@@ -1,9 +1,9 @@
1
1
  import {
2
2
  log_build_default
3
- } from "../chunk-JEZODNLN.js";
4
- import "../chunk-5J4CB7HN.js";
3
+ } from "../chunk-RPN42UQI.js";
5
4
  import "../chunk-4UVFXLPI.js";
6
- import "../chunk-Z3BWXNQW.js";
5
+ import "../chunk-A4JKYK6M.js";
6
+ import "../chunk-DME6DR6Z.js";
7
7
  import "../chunk-5T63CXKU.js";
8
8
  export {
9
9
  log_build_default as default
@@ -34,7 +34,7 @@ __export(catalog_to_astro_content_directory_exports, {
34
34
  });
35
35
  module.exports = __toCommonJS(catalog_to_astro_content_directory_exports);
36
36
 
37
- // ../../node_modules/.pnpm/tsup@8.5.0_jiti@1.21.7_postcss@8.5.6_tsx@4.21.0_typescript@5.9.3_yaml@2.8.1/node_modules/tsup/assets/cjs_shims.js
37
+ // ../../node_modules/.pnpm/tsup@8.5.0_jiti@2.6.1_postcss@8.5.6_tsx@4.21.0_typescript@5.9.3_yaml@2.8.1/node_modules/tsup/assets/cjs_shims.js
38
38
  var getImportMetaUrl = () => typeof document === "undefined" ? new URL(`file:${__filename}`).href : document.currentScript && document.currentScript.src || new URL("main.js", document.baseURI).href;
39
39
  var importMetaUrl = /* @__PURE__ */ getImportMetaUrl();
40
40
 
@@ -1,6 +1,6 @@
1
1
  import {
2
2
  logger
3
- } from "./chunk-2IVWMV2T.js";
3
+ } from "./chunk-NDGH67WK.js";
4
4
  import {
5
5
  cleanup,
6
6
  getEventCatalogConfigFile
@@ -1,6 +1,6 @@
1
1
  import {
2
2
  VERSION
3
- } from "./chunk-Z3BWXNQW.js";
3
+ } from "./chunk-DME6DR6Z.js";
4
4
 
5
5
  // src/analytics/analytics.js
6
6
  import axios from "axios";
@@ -1,5 +1,5 @@
1
1
  // package.json
2
- var version = "3.18.5";
2
+ var version = "3.19.0";
3
3
 
4
4
  // src/constants.ts
5
5
  var VERSION = version;
@@ -1,6 +1,6 @@
1
1
  import {
2
2
  VERSION
3
- } from "./chunk-Z3BWXNQW.js";
3
+ } from "./chunk-DME6DR6Z.js";
4
4
 
5
5
  // src/utils/cli-logger.ts
6
6
  import pc from "picocolors";
@@ -1,10 +1,10 @@
1
- import {
2
- raiseEvent
3
- } from "./chunk-5J4CB7HN.js";
4
1
  import {
5
2
  countResources,
6
3
  serializeCounts
7
4
  } from "./chunk-4UVFXLPI.js";
5
+ import {
6
+ raiseEvent
7
+ } from "./chunk-A4JKYK6M.js";
8
8
  import {
9
9
  getEventCatalogConfigFile,
10
10
  verifyRequiredFieldsAreInCatalogConfigFile
@@ -25,7 +25,7 @@ __export(constants_exports, {
25
25
  module.exports = __toCommonJS(constants_exports);
26
26
 
27
27
  // package.json
28
- var version = "3.18.5";
28
+ var version = "3.19.0";
29
29
 
30
30
  // src/constants.ts
31
31
  var VERSION = version;
package/dist/constants.js CHANGED
@@ -1,6 +1,6 @@
1
1
  import {
2
2
  VERSION
3
- } from "./chunk-Z3BWXNQW.js";
3
+ } from "./chunk-DME6DR6Z.js";
4
4
  export {
5
5
  VERSION
6
6
  };
@@ -22,7 +22,7 @@ var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__ge
22
22
  mod
23
23
  ));
24
24
 
25
- // ../../node_modules/.pnpm/tsup@8.5.0_jiti@1.21.7_postcss@8.5.6_tsx@4.21.0_typescript@5.9.3_yaml@2.8.1/node_modules/tsup/assets/cjs_shims.js
25
+ // ../../node_modules/.pnpm/tsup@8.5.0_jiti@2.6.1_postcss@8.5.6_tsx@4.21.0_typescript@5.9.3_yaml@2.8.1/node_modules/tsup/assets/cjs_shims.js
26
26
  var getImportMetaUrl = () => typeof document === "undefined" ? new URL(`file:${__filename}`).href : document.currentScript && document.currentScript.src || new URL("main.js", document.baseURI).href;
27
27
  var importMetaUrl = /* @__PURE__ */ getImportMetaUrl();
28
28
 
@@ -114,7 +114,7 @@ var verifyRequiredFieldsAreInCatalogConfigFile = async (projectDirectory) => {
114
114
  var import_picocolors = __toESM(require("picocolors"), 1);
115
115
 
116
116
  // package.json
117
- var version = "3.18.5";
117
+ var version = "3.19.0";
118
118
 
119
119
  // src/constants.ts
120
120
  var VERSION = version;
@@ -1,18 +1,18 @@
1
+ import {
2
+ log_build_default
3
+ } from "./chunk-RPN42UQI.js";
4
+ import "./chunk-4UVFXLPI.js";
1
5
  import {
2
6
  resolve_catalog_dependencies_default
3
7
  } from "./chunk-WAJIJEI3.js";
4
8
  import {
5
9
  watch
6
10
  } from "./chunk-PLNJC7NZ.js";
7
- import {
8
- log_build_default
9
- } from "./chunk-JEZODNLN.js";
10
- import "./chunk-5J4CB7HN.js";
11
- import "./chunk-4UVFXLPI.js";
12
11
  import {
13
12
  runMigrations
14
13
  } from "./chunk-BH3JMNAV.js";
15
14
  import "./chunk-622JYJWG.js";
15
+ import "./chunk-A4JKYK6M.js";
16
16
  import {
17
17
  catalogToAstro
18
18
  } from "./chunk-YDXB3BD2.js";
@@ -22,13 +22,13 @@ import {
22
22
  } from "./chunk-3KXCGYET.js";
23
23
  import {
24
24
  generate
25
- } from "./chunk-SSNGN2OB.js";
25
+ } from "./chunk-7JIM3GZL.js";
26
26
  import {
27
27
  logger
28
- } from "./chunk-2IVWMV2T.js";
28
+ } from "./chunk-NDGH67WK.js";
29
29
  import {
30
30
  VERSION
31
- } from "./chunk-Z3BWXNQW.js";
31
+ } from "./chunk-DME6DR6Z.js";
32
32
  import {
33
33
  getEventCatalogConfigFile,
34
34
  verifyRequiredFieldsAreInCatalogConfigFile
package/dist/generate.cjs CHANGED
@@ -78,7 +78,7 @@ var getEventCatalogConfigFile = async (projectDirectory) => {
78
78
  var import_picocolors = __toESM(require("picocolors"), 1);
79
79
 
80
80
  // package.json
81
- var version = "3.18.5";
81
+ var version = "3.19.0";
82
82
 
83
83
  // src/constants.ts
84
84
  var VERSION = version;
package/dist/generate.js CHANGED
@@ -1,8 +1,8 @@
1
1
  import {
2
2
  generate
3
- } from "./chunk-SSNGN2OB.js";
4
- import "./chunk-2IVWMV2T.js";
5
- import "./chunk-Z3BWXNQW.js";
3
+ } from "./chunk-7JIM3GZL.js";
4
+ import "./chunk-NDGH67WK.js";
5
+ import "./chunk-DME6DR6Z.js";
6
6
  import "./chunk-5T63CXKU.js";
7
7
  export {
8
8
  generate
@@ -36,7 +36,7 @@ module.exports = __toCommonJS(cli_logger_exports);
36
36
  var import_picocolors = __toESM(require("picocolors"), 1);
37
37
 
38
38
  // package.json
39
- var version = "3.18.5";
39
+ var version = "3.19.0";
40
40
 
41
41
  // src/constants.ts
42
42
  var VERSION = version;
@@ -1,7 +1,7 @@
1
1
  import {
2
2
  logger
3
- } from "../chunk-2IVWMV2T.js";
4
- import "../chunk-Z3BWXNQW.js";
3
+ } from "../chunk-NDGH67WK.js";
4
+ import "../chunk-DME6DR6Z.js";
5
5
  export {
6
6
  logger
7
7
  };
@@ -1,6 +1,6 @@
1
1
 
2
2
  import { defineConfig } from 'astro/config';
3
- import tailwind from '@astrojs/tailwind';
3
+ import tailwindcss from '@tailwindcss/vite';
4
4
  import mdx from '@astrojs/mdx';
5
5
  import react from '@astrojs/react';
6
6
  import { searchForWorkspaceRoot } from 'vite';
@@ -64,7 +64,6 @@ export default defineConfig({
64
64
  devToolbar: { enabled: false },
65
65
  integrations: [
66
66
  react(),
67
- tailwind(),
68
67
  expressiveCode({
69
68
  ...expressiveCodeConfig,
70
69
  }),
@@ -95,6 +94,7 @@ export default defineConfig({
95
94
  eventCatalogIntegration(),
96
95
  ].filter(Boolean),
97
96
  vite: {
97
+ plugins: [tailwindcss()],
98
98
  define: {
99
99
  /**
100
100
  * Trailing slash is exposed as global variable here principally for `@utils/url-builder`.
@@ -125,6 +125,22 @@ export default defineConfig({
125
125
  },
126
126
  },
127
127
  ...(config.server?.allowedHosts ? { allowedHosts: config.server?.allowedHosts } : {}),
128
+ // Pre-transform critical modules during startup so they're ready when
129
+ // the first page request arrives. Without this, Vite transforms each
130
+ // module on-demand during the first request, adding seconds to TTFB.
131
+ warmup: {
132
+ ssrFiles: [
133
+ './src/pages/index.astro',
134
+ './src/pages/_index.astro',
135
+ './src/layouts/VerticalSideBarLayout.astro',
136
+ './src/components/Header.astro',
137
+ './src/components/SideNav/SideNav.astro',
138
+ ],
139
+ clientFiles: [
140
+ './src/components/SideNav/NestedSideBar/index.tsx',
141
+ './src/components/Search/SearchModal.tsx',
142
+ ],
143
+ },
128
144
  },
129
145
  worker: {
130
146
  format: 'es',
@@ -138,6 +154,21 @@ export default defineConfig({
138
154
  external: ['eventcatalog.auth.js', 'eventcatalog.chat.js'],
139
155
  },
140
156
  optimizeDeps: {
157
+ // Pre-bundle heavy dependencies so Vite doesn't discover and transform
158
+ // them lazily on first request. This significantly reduces initial page
159
+ // load time in dev mode.
160
+ include: [
161
+ 'lucide-react',
162
+ '@heroicons/react/24/outline',
163
+ '@heroicons/react/24/solid',
164
+ '@heroicons/react/20/solid',
165
+ '@headlessui/react',
166
+ '@nanostores/react',
167
+ 'nanostores',
168
+ 'react',
169
+ 'react-dom',
170
+ 'semver',
171
+ ],
141
172
  esbuildOptions: {
142
173
  jsx: 'automatic',
143
174
  },
@@ -999,7 +999,7 @@ const ChatPanel = ({ isOpen, onClose }: ChatPanelProps) => {
999
999
  onKeyDown={handleInputKeyDown}
1000
1000
  placeholder="Ask, search, or explain..."
1001
1001
  disabled={isLoading}
1002
- className="w-full px-4 py-3 pr-16 bg-transparent text-[rgb(var(--ec-input-text))] placeholder-[rgb(var(--ec-input-placeholder))] focus:outline-none text-sm disabled:opacity-50 rounded-xl"
1002
+ className="w-full px-4 py-3 pr-16 bg-transparent text-[rgb(var(--ec-input-text))] placeholder-[rgb(var(--ec-input-placeholder))] focus:outline-hidden text-sm disabled:opacity-50 rounded-xl"
1003
1003
  />
1004
1004
  <div className="absolute right-2 top-1/2 -translate-y-1/2 z-10">
1005
1005
  {isStreaming ? (
@@ -1056,7 +1056,7 @@ const ChatPanel = ({ isOpen, onClose }: ChatPanelProps) => {
1056
1056
  <Dialog.Portal>
1057
1057
  <Dialog.Overlay className="fixed inset-0 bg-black/50 backdrop-blur-sm z-[300]" />
1058
1058
  <Dialog.Content
1059
- className="fixed inset-y-4 left-1/2 -translate-x-1/2 w-[95%] max-w-4xl md:inset-y-8 rounded-xl shadow-2xl z-[301] flex flex-col overflow-hidden focus:outline-none border border-[rgb(var(--ec-page-border))]"
1059
+ className="fixed inset-y-4 left-1/2 -translate-x-1/2 w-[95%] max-w-4xl md:inset-y-8 rounded-xl shadow-2xl z-[301] flex flex-col overflow-hidden focus:outline-hidden border border-[rgb(var(--ec-page-border))]"
1060
1060
  style={{
1061
1061
  background: `
1062
1062
  radial-gradient(ellipse 100% 40% at 50% 100%, rgb(var(--ec-accent) / 0.15) 0%, transparent 100%),
@@ -1291,7 +1291,7 @@ const ChatPanel = ({ isOpen, onClose }: ChatPanelProps) => {
1291
1291
  onKeyDown={handleInputKeyDown}
1292
1292
  placeholder="Ask, search, or explain..."
1293
1293
  disabled={isLoading}
1294
- className="w-full px-4 py-3.5 pr-20 bg-transparent text-[rgb(var(--ec-input-text))] placeholder-[rgb(var(--ec-input-placeholder))] focus:outline-none text-sm disabled:opacity-50 rounded-xl"
1294
+ className="w-full px-4 py-3.5 pr-20 bg-transparent text-[rgb(var(--ec-input-text))] placeholder-[rgb(var(--ec-input-placeholder))] focus:outline-hidden text-sm disabled:opacity-50 rounded-xl"
1295
1295
  />
1296
1296
  <div className="absolute right-2 top-1/2 -translate-y-1/2 z-10">
1297
1297
  {isStreaming ? (
@@ -19,7 +19,7 @@ const ChatPanelButton = () => {
19
19
  <>
20
20
  <button
21
21
  onClick={() => setIsOpen(true)}
22
- className="flex items-center gap-1.5 px-4 py-1.5 rounded-md bg-[rgb(var(--ec-card-bg))] hover:bg-[rgb(var(--ec-content-hover))] ring-1 ring-inset ring-[rgb(var(--ec-page-border))] shadow-sm transition-colors text-sm ml-[-1px]"
22
+ className="flex items-center gap-1.5 px-4 py-1.5 rounded-md bg-[rgb(var(--ec-card-bg))] hover:bg-[rgb(var(--ec-content-hover))] ring-1 ring-inset ring-[rgb(var(--ec-page-border))] shadow-xs transition-colors text-sm ml-[-1px]"
23
23
  aria-label="Open AI Assistant"
24
24
  >
25
25
  <BookOpen size={14} className="text-[rgb(var(--ec-accent))]" />
@@ -212,12 +212,12 @@ export function CopyPageMenu({
212
212
  return (
213
213
  <DropdownMenu.Root>
214
214
  {/* Container for the split button */}
215
- <div className="inline-flex rounded-md shadow-sm border border-[rgb(var(--ec-dropdown-border))]">
215
+ <div className="inline-flex rounded-md shadow-xs border border-[rgb(var(--ec-dropdown-border))]">
216
216
  {/* Left Button: Default Action */}
217
217
  <button
218
218
  type="button"
219
219
  onClick={handleDefaultAction}
220
- className="inline-flex items-center justify-center gap-1 px-3 py-1.5 text-sm font-medium text-[rgb(var(--ec-dropdown-text))] bg-[rgb(var(--ec-dropdown-bg))] rounded-l-md hover:bg-[rgb(var(--ec-dropdown-hover))] focus:z-10 focus:outline-none focus:ring-1 focus:ring-[rgb(var(--ec-accent))]"
220
+ className="inline-flex items-center justify-center gap-1 px-3 py-1.5 text-sm font-medium text-[rgb(var(--ec-dropdown-text))] bg-[rgb(var(--ec-dropdown-bg))] rounded-l-md hover:bg-[rgb(var(--ec-dropdown-hover))] focus:z-10 focus:outline-hidden focus:ring-1 focus:ring-[rgb(var(--ec-accent))]"
221
221
  >
222
222
  <defaultAction.icon className="w-4 h-4" />
223
223
  {buttonText}
@@ -226,7 +226,7 @@ export function CopyPageMenu({
226
226
  <DropdownMenu.Trigger asChild>
227
227
  <button
228
228
  type="button"
229
- className="inline-flex items-center justify-center px-1.5 py-1.5 text-sm font-medium text-[rgb(var(--ec-icon-color))] bg-[rgb(var(--ec-dropdown-bg))] rounded-r-md border-l border-[rgb(var(--ec-dropdown-border))] hover:bg-[rgb(var(--ec-dropdown-hover))] focus:z-10 focus:outline-none focus:ring-1 focus:ring-[rgb(var(--ec-accent))]"
229
+ className="inline-flex items-center justify-center px-1.5 py-1.5 text-sm font-medium text-[rgb(var(--ec-icon-color))] bg-[rgb(var(--ec-dropdown-bg))] rounded-r-md border-l border-[rgb(var(--ec-dropdown-border))] hover:bg-[rgb(var(--ec-dropdown-hover))] focus:z-10 focus:outline-hidden focus:ring-1 focus:ring-[rgb(var(--ec-accent))]"
230
230
  aria-label="More options"
231
231
  >
232
232
  <ChevronDownIcon className="w-4 h-4" />
@@ -243,7 +243,7 @@ export function CopyPageMenu({
243
243
  {availableActions.chat && (
244
244
  <>
245
245
  <DropdownMenu.Item
246
- className="cursor-pointer hover:bg-[rgb(var(--ec-dropdown-hover))] focus:outline-none focus:bg-[rgb(var(--ec-dropdown-hover))]"
246
+ className="cursor-pointer hover:bg-[rgb(var(--ec-dropdown-hover))] focus:outline-hidden focus:bg-[rgb(var(--ec-dropdown-hover))]"
247
247
  onSelect={() => window.dispatchEvent(new CustomEvent('eventcatalog:open-chat'))}
248
248
  >
249
249
  <MenuItemContent
@@ -258,7 +258,7 @@ export function CopyPageMenu({
258
258
 
259
259
  {availableActions.copyMarkdown && (
260
260
  <DropdownMenu.Item
261
- className="cursor-pointer hover:bg-[rgb(var(--ec-dropdown-hover))] focus:outline-none focus:bg-[rgb(var(--ec-dropdown-hover))]"
261
+ className="cursor-pointer hover:bg-[rgb(var(--ec-dropdown-hover))] focus:outline-hidden focus:bg-[rgb(var(--ec-dropdown-hover))]"
262
262
  onSelect={() => copyMarkdownToClipboard()}
263
263
  >
264
264
  <MenuItemContent icon={Copy} title="Copy page" description="Copy page as Markdown for LLMs" />
@@ -290,7 +290,7 @@ export function CopyPageMenu({
290
290
  return (
291
291
  <DropdownMenu.Item
292
292
  key={schema.url}
293
- className="cursor-pointer hover:bg-[rgb(var(--ec-dropdown-hover))] focus:outline-none focus:bg-[rgb(var(--ec-dropdown-hover))]"
293
+ className="cursor-pointer hover:bg-[rgb(var(--ec-dropdown-hover))] focus:outline-hidden focus:bg-[rgb(var(--ec-dropdown-hover))]"
294
294
  onSelect={() => copySchemaToClipboard(schema)}
295
295
  >
296
296
  <MenuItemContent icon={Icon} title={title} description={`Copy ${type} to clipboard`} />
@@ -300,7 +300,7 @@ export function CopyPageMenu({
300
300
 
301
301
  {availableActions.viewMarkdown && (
302
302
  <DropdownMenu.Item
303
- className="cursor-pointer hover:bg-[rgb(var(--ec-dropdown-hover))] focus:outline-none focus:bg-[rgb(var(--ec-dropdown-hover))]"
303
+ className="cursor-pointer hover:bg-[rgb(var(--ec-dropdown-hover))] focus:outline-hidden focus:bg-[rgb(var(--ec-dropdown-hover))]"
304
304
  onSelect={() => window.open(markdownUrl, '_blank')}
305
305
  >
306
306
  <MenuItemContent
@@ -314,7 +314,7 @@ export function CopyPageMenu({
314
314
 
315
315
  {availableActions.rssFeed && (
316
316
  <DropdownMenu.Item
317
- className="cursor-pointer hover:bg-[rgb(var(--ec-dropdown-hover))] focus:outline-none focus:bg-[rgb(var(--ec-dropdown-hover))]"
317
+ className="cursor-pointer hover:bg-[rgb(var(--ec-dropdown-hover))] focus:outline-hidden focus:bg-[rgb(var(--ec-dropdown-hover))]"
318
318
  onSelect={() => window.open(buildUrl(`/rss/all/rss.xml`), '_blank')}
319
319
  >
320
320
  <MenuItemContent icon={RssIcon} title="RSS Feed" description="View this page as RSS feed" external={true} />
@@ -325,7 +325,7 @@ export function CopyPageMenu({
325
325
  <>
326
326
  <DropdownMenu.Separator className="h-px my-1 bg-[rgb(var(--ec-dropdown-border))]" />
327
327
  <DropdownMenu.Item
328
- className="cursor-pointer hover:bg-[rgb(var(--ec-dropdown-hover))] focus:outline-none focus:bg-[rgb(var(--ec-dropdown-hover))]"
328
+ className="cursor-pointer hover:bg-[rgb(var(--ec-dropdown-hover))] focus:outline-hidden focus:bg-[rgb(var(--ec-dropdown-hover))]"
329
329
  onSelect={() => window.open(editUrl, '_blank')}
330
330
  >
331
331
  <MenuItemContent
@@ -63,7 +63,7 @@ export const EnvironmentDropdown: React.FC<EnvironmentDropdownProps> = ({ enviro
63
63
  <button
64
64
  type="button"
65
65
  onClick={toggleDropdown}
66
- className="flex items-center space-x-1 text-sm font-medium text-[rgb(var(--ec-header-text)/0.7)] hover:text-[rgb(var(--ec-header-text))] focus:outline-none focus:ring-2 focus:ring-offset-2 focus:ring-[rgb(var(--ec-accent))] rounded-md px-3 py-2 transition-colors"
66
+ className="flex items-center space-x-1 text-sm font-medium text-[rgb(var(--ec-header-text)/0.7)] hover:text-[rgb(var(--ec-header-text))] focus:outline-hidden focus:ring-2 focus:ring-offset-2 focus:ring-[rgb(var(--ec-accent))] rounded-md px-3 py-2 transition-colors"
67
67
  aria-expanded={isOpen}
68
68
  aria-haspopup="true"
69
69
  >
@@ -53,7 +53,7 @@ const EntityBadge = memo(({ entity }: { entity: any }) => {
53
53
  return (
54
54
  <a
55
55
  href={buildUrl(`/docs/entities/${id}`)}
56
- className="inline-flex items-center gap-2 px-3 py-2 bg-[rgb(var(--ec-card-bg,var(--ec-page-bg)))] border border-[rgb(var(--ec-page-border))] rounded-lg text-sm font-medium text-[rgb(var(--ec-page-text))] hover:bg-[rgb(var(--ec-content-hover))] hover:border-[rgb(var(--ec-accent)/0.5)] transition-all shadow-sm"
56
+ className="inline-flex items-center gap-2 px-3 py-2 bg-[rgb(var(--ec-card-bg,var(--ec-page-bg)))] border border-[rgb(var(--ec-page-border))] rounded-lg text-sm font-medium text-[rgb(var(--ec-page-text))] hover:bg-[rgb(var(--ec-content-hover))] hover:border-[rgb(var(--ec-accent)/0.5)] transition-all shadow-xs"
57
57
  >
58
58
  <BoxIcon className="h-4 w-4 text-[rgb(var(--ec-accent))]" />
59
59
  <span>{name}</span>
@@ -93,7 +93,7 @@ const SpecificationBadge = memo(
93
93
  return (
94
94
  <a
95
95
  href={getSpecUrl(spec, serviceId, serviceVersion)}
96
- className="inline-flex items-center gap-1.5 px-2 py-1.5 bg-[rgb(var(--ec-card-bg,var(--ec-page-bg)))] border border-[rgb(var(--ec-page-border))] rounded-lg text-xs font-medium text-[rgb(var(--ec-page-text))] hover:bg-[rgb(var(--ec-content-hover))] hover:border-[rgb(var(--ec-accent)/0.5)] transition-all shadow-sm"
96
+ className="inline-flex items-center gap-1.5 px-2 py-1.5 bg-[rgb(var(--ec-card-bg,var(--ec-page-bg)))] border border-[rgb(var(--ec-page-border))] rounded-lg text-xs font-medium text-[rgb(var(--ec-page-text))] hover:bg-[rgb(var(--ec-content-hover))] hover:border-[rgb(var(--ec-accent)/0.5)] transition-all shadow-xs"
97
97
  >
98
98
  <img src={buildUrl(`/icons/${getSpecIcon(spec.type)}.svg`, true)} alt={`${spec.type} icon`} className="h-3.5 w-3.5" />
99
99
  <span>{getSpecLabel(spec.type)}</span>
@@ -159,7 +159,7 @@ const SearchableBox = memo(
159
159
  placeholder="Search..."
160
160
  value={search}
161
161
  onChange={(e) => setSearch(e.target.value)}
162
- className="flex-1 px-2 py-0.5 text-xs border border-[rgb(var(--ec-input-border))] rounded focus:outline-none focus:border-[rgb(var(--ec-accent))] bg-[rgb(var(--ec-input-bg))] text-[rgb(var(--ec-input-text))]"
162
+ className="flex-1 px-2 py-0.5 text-xs border border-[rgb(var(--ec-input-border))] rounded focus:outline-hidden focus:border-[rgb(var(--ec-accent))] bg-[rgb(var(--ec-input-bg))] text-[rgb(var(--ec-input-text))]"
163
163
  onClick={(e) => e.stopPropagation()}
164
164
  />
165
165
  )}
@@ -261,7 +261,7 @@ const ServiceCard = memo(({ service }: { service: any }) => {
261
261
  const hasContent = hasMessages || hasContainers;
262
262
 
263
263
  return (
264
- <div className="bg-[rgb(var(--ec-card-bg,var(--ec-page-bg)))] border border-[rgb(var(--ec-page-border))] rounded-xl shadow-sm hover:shadow-md transition-shadow">
264
+ <div className="bg-[rgb(var(--ec-card-bg,var(--ec-page-bg)))] border border-[rgb(var(--ec-page-border))] rounded-xl shadow-xs hover:shadow-md transition-shadow">
265
265
  {/* Service Header */}
266
266
  <div
267
267
  onClick={() => hasContent && setIsCollapsed(!isCollapsed)}
@@ -335,7 +335,7 @@ const DataProductCard = memo(({ dataProduct }: { dataProduct: any }) => {
335
335
  return (
336
336
  <a
337
337
  href={href}
338
- className="block bg-[rgb(var(--ec-card-bg,var(--ec-page-bg)))] border border-[rgb(var(--ec-page-border))] rounded-xl shadow-sm hover:shadow-md hover:border-[rgb(var(--ec-accent)/0.5)] transition-all"
338
+ className="block bg-[rgb(var(--ec-card-bg,var(--ec-page-bg)))] border border-[rgb(var(--ec-page-border))] rounded-xl shadow-xs hover:shadow-md hover:border-[rgb(var(--ec-accent)/0.5)] transition-all"
339
339
  >
340
340
  <div className="flex items-center justify-between px-4 py-3">
341
341
  <div className="flex items-center gap-2.5">
@@ -373,7 +373,7 @@ const SubdomainSection = memo(({ subdomain }: { subdomain: any }) => {
373
373
  const dataProducts = data['data-products'] || [];
374
374
 
375
375
  return (
376
- <div className="bg-[rgb(var(--ec-card-bg,var(--ec-page-bg)))] border border-[rgb(var(--ec-page-border))] rounded-xl overflow-hidden shadow-sm">
376
+ <div className="bg-[rgb(var(--ec-card-bg,var(--ec-page-bg)))] border border-[rgb(var(--ec-page-border))] rounded-xl overflow-hidden shadow-xs">
377
377
  {/* Subdomain Header - Clickable */}
378
378
  <div
379
379
  onClick={() => setIsCollapsed(!isCollapsed)}
@@ -47,7 +47,7 @@ const MessageCard = memo(({ message, compact = false }: { message: any; compact?
47
47
  return (
48
48
  <a
49
49
  href={buildUrl(`/docs/${message.collection}/${message.data.id}/${message.data.version}`)}
50
- className={`group block bg-[rgb(var(--ec-card-bg,var(--ec-page-bg)))] border border-${color}-200 dark:border-${color}-500/30 rounded-lg shadow-sm hover:shadow-md hover:border-${color}-300 dark:hover:border-${color}-500/50 transition-all`}
50
+ className={`group block bg-[rgb(var(--ec-card-bg,var(--ec-page-bg)))] border border-${color}-200 dark:border-${color}-500/30 rounded-lg shadow-xs hover:shadow-md hover:border-${color}-300 dark:hover:border-${color}-500/50 transition-all`}
51
51
  >
52
52
  <div className={compact ? 'p-3' : 'p-4'}>
53
53
  <div className="flex items-center gap-2 mb-1">
@@ -82,7 +82,7 @@ const ContainerCard = memo(({ container, type }: { container: any; type: 'reads'
82
82
  return (
83
83
  <a
84
84
  href={buildUrl(`/docs/containers/${container.data.id}/${container.data.version}`)}
85
- className={`group block bg-[rgb(var(--ec-card-bg,var(--ec-page-bg)))] border rounded-lg shadow-sm hover:shadow-md transition-all ${
85
+ className={`group block bg-[rgb(var(--ec-card-bg,var(--ec-page-bg)))] border rounded-lg shadow-xs hover:shadow-md transition-all ${
86
86
  type === 'reads'
87
87
  ? 'border-amber-200 dark:border-amber-500/30 hover:border-amber-300 dark:hover:border-amber-500/50'
88
88
  : 'border-violet-200 dark:border-violet-500/30 hover:border-violet-300 dark:hover:border-violet-500/50'
@@ -117,7 +117,7 @@ const SpecificationCard = memo(
117
117
  return (
118
118
  <a
119
119
  href={getSpecUrl(spec, serviceId, serviceVersion)}
120
- className={`group flex items-center gap-3 p-3 bg-[rgb(var(--ec-card-bg,var(--ec-page-bg)))] border border-${color}-200 dark:border-${color}-500/30 rounded-lg shadow-sm hover:shadow-md hover:border-${color}-300 dark:hover:border-${color}-500/50 transition-all`}
120
+ className={`group flex items-center gap-3 p-3 bg-[rgb(var(--ec-card-bg,var(--ec-page-bg)))] border border-${color}-200 dark:border-${color}-500/30 rounded-lg shadow-xs hover:shadow-md hover:border-${color}-300 dark:hover:border-${color}-500/50 transition-all`}
121
121
  >
122
122
  <img src={buildUrl(`/icons/${getSpecIcon(spec.type)}.svg`, true)} alt={`${spec.type} icon`} className="h-6 w-6" />
123
123
  <div className="flex-1 min-w-0">
@@ -154,7 +154,7 @@ const CollapsibleMessageSection = memo(
154
154
  const hasContent = messages.length > 0;
155
155
 
156
156
  return (
157
- <div className="bg-[rgb(var(--ec-card-bg,var(--ec-page-bg)))] border border-[rgb(var(--ec-page-border))] rounded-xl shadow-sm overflow-hidden">
157
+ <div className="bg-[rgb(var(--ec-card-bg,var(--ec-page-bg)))] border border-[rgb(var(--ec-page-border))] rounded-xl shadow-xs overflow-hidden">
158
158
  <div
159
159
  onClick={() => setIsCollapsed(!isCollapsed)}
160
160
  className={`flex items-center justify-between px-5 py-4 cursor-pointer hover:bg-[rgb(var(--ec-content-hover))] transition-colors ${!isCollapsed && hasContent ? 'border-b border-[rgb(var(--ec-page-border))]' : ''}`}
@@ -198,7 +198,7 @@ const CollapsibleContainerSection = memo(
198
198
  const [isCollapsed, setIsCollapsed] = useState(false);
199
199
 
200
200
  return (
201
- <div className="bg-[rgb(var(--ec-card-bg,var(--ec-page-bg)))] border border-[rgb(var(--ec-page-border))] rounded-xl shadow-sm overflow-hidden">
201
+ <div className="bg-[rgb(var(--ec-card-bg,var(--ec-page-bg)))] border border-[rgb(var(--ec-page-border))] rounded-xl shadow-xs overflow-hidden">
202
202
  <div
203
203
  onClick={() => setIsCollapsed(!isCollapsed)}
204
204
  className={`flex items-center justify-between px-5 py-4 cursor-pointer hover:bg-[rgb(var(--ec-content-hover))] transition-colors ${!isCollapsed ? 'border-b border-[rgb(var(--ec-page-border))]' : ''}`}
@@ -21,11 +21,11 @@ export function SearchBar({ searchQuery, onSearchChange, placeholder, totalResul
21
21
  placeholder={placeholder || 'Search...'}
22
22
  value={searchQuery}
23
23
  onChange={(e) => onSearchChange(e.target.value)}
24
- className="block w-full rounded-lg border-0 py-2.5 pl-10 pr-4 text-gray-900 shadow-sm ring-1 ring-inset ring-gray-300 placeholder:text-gray-400 focus:ring-2 focus:ring-inset focus:ring-primary sm:text-sm sm:leading-6"
24
+ className="block w-full rounded-lg border-0 py-2.5 pl-10 pr-4 text-gray-900 shadow-xs ring-1 ring-inset ring-gray-300 placeholder:text-gray-400 focus:ring-2 focus:ring-inset focus:ring-primary sm:text-sm sm:leading-6"
25
25
  />
26
26
  {searchQuery && (
27
27
  <div className="absolute inset-y-0 right-0 flex items-center pr-3">
28
- <button onClick={() => onSearchChange('')} className="text-gray-400 hover:text-gray-500 focus:outline-none">
28
+ <button onClick={() => onSearchChange('')} className="text-gray-400 hover:text-gray-500 focus:outline-hidden">
29
29
  <span className="sr-only">Clear search</span>
30
30
  <svg className="h-5 w-5" viewBox="0 0 20 20" fill="currentColor">
31
31
  <path
@@ -126,7 +126,7 @@ export function Pagination({ currentPage, totalPages, totalItems, itemsPerPage,
126
126
  </p>
127
127
  </div>
128
128
  <div>
129
- <nav className="isolate inline-flex -space-x-px rounded-md shadow-sm" aria-label="Pagination">
129
+ <nav className="isolate inline-flex -space-x-px rounded-md shadow-xs" aria-label="Pagination">
130
130
  <button
131
131
  onClick={() => onPageChange(1)}
132
132
  disabled={currentPage === 1}
@@ -63,7 +63,7 @@ const repositoryUrl = catalog?.repositoryUrl || 'https://github.com/event-catalo
63
63
  <button
64
64
  id="profile-menu-button"
65
65
  type="button"
66
- class="flex items-center focus:outline-none focus:ring-2 focus:ring-offset-2 focus:ring-gray-400 rounded-full"
66
+ class="flex items-center focus:outline-hidden focus:ring-2 focus:ring-offset-2 focus:ring-gray-400 rounded-full"
67
67
  aria-expanded="false"
68
68
  aria-haspopup="true"
69
69
  aria-label="User menu"
@@ -72,10 +72,10 @@ const repositoryUrl = catalog?.repositoryUrl || 'https://github.com/event-catalo
72
72
  <img
73
73
  src={session.user.image}
74
74
  alt={session.user?.name || 'User'}
75
- class="h-9 w-9 rounded-full border-2 border-gray-200 hover:border-gray-400 transition-all shadow-sm"
75
+ class="h-9 w-9 rounded-full border-2 border-gray-200 hover:border-gray-400 transition-all shadow-xs"
76
76
  />
77
77
  ) : (
78
- <div class="h-9 w-9 rounded-full border-2 border-gray-200 hover:border-gray-400 transition-all bg-gray-100 hover:bg-gray-200 flex items-center justify-center text-sm font-medium text-gray-600 shadow-sm">
78
+ <div class="h-9 w-9 rounded-full border-2 border-gray-200 hover:border-gray-400 transition-all bg-gray-100 hover:bg-gray-200 flex items-center justify-center text-sm font-medium text-gray-600 shadow-xs">
79
79
  {session.user?.name
80
80
  ? session.user.name
81
81
  .split(' ')
@@ -115,7 +115,7 @@ const repositoryUrl = catalog?.repositoryUrl || 'https://github.com/event-catalo
115
115
  {isAuthEnabled() && (
116
116
  <button
117
117
  id="okta-signin-btn"
118
- class="bg-[rgb(var(--ec-button-bg))] hover:bg-[rgb(var(--ec-button-bg-hover))] text-[rgb(var(--ec-button-text))] text-sm font-medium px-4 py-2 rounded-lg transition-all shadow-sm hover:shadow focus:outline-none focus:ring-2 focus:ring-offset-2 focus:ring-gray-500"
118
+ class="bg-[rgb(var(--ec-button-bg))] hover:bg-[rgb(var(--ec-button-bg-hover))] text-[rgb(var(--ec-button-text))] text-sm font-medium px-4 py-2 rounded-lg transition-all shadow-xs hover:shadow focus:outline-hidden focus:ring-2 focus:ring-offset-2 focus:ring-gray-500"
119
119
  >
120
120
  Sign In
121
121
  </button>
@@ -158,7 +158,7 @@ const repositoryUrl = catalog?.repositoryUrl || 'https://github.com/event-catalo
158
158
  <li>
159
159
  <a
160
160
  href={repositoryUrl}
161
- class="block p-1.5 rounded-lg hover:bg-[rgb(var(--ec-dropdown-hover))] transition-colors focus:outline-none"
161
+ class="block p-1.5 rounded-lg hover:bg-[rgb(var(--ec-dropdown-hover))] transition-colors focus:outline-hidden"
162
162
  aria-label="View repository on GitHub"
163
163
  >
164
164
  <img
@@ -181,7 +181,7 @@ const repositoryUrl = catalog?.repositoryUrl || 'https://github.com/event-catalo
181
181
  <button
182
182
  id="menu-toggle"
183
183
  type="button"
184
- class="text-[rgb(var(--ec-icon-color))] hover:text-[rgb(var(--ec-icon-hover))] focus:outline-none focus:text-[rgb(var(--ec-icon-hover))]"
184
+ class="text-[rgb(var(--ec-icon-color))] hover:text-[rgb(var(--ec-icon-hover))] focus:outline-hidden focus:text-[rgb(var(--ec-icon-hover))]"
185
185
  aria-label="Toggle menu"
186
186
  >
187
187
  <svg viewBox="0 0 24 24" class="h-6 w-6 fill-current">
@@ -12,7 +12,7 @@ declare global {
12
12
 
13
13
  export default function Example({ title, children }: any) {
14
14
  return (
15
- <div className="border border-[rgb(var(--ec-page-border))] rounded-md px-4 shadow-sm py-2 accordion bg-[rgb(var(--ec-card-bg,var(--ec-page-bg)))]">
15
+ <div className="border border-[rgb(var(--ec-page-border))] rounded-md px-4 shadow-xs py-2 accordion bg-[rgb(var(--ec-card-bg,var(--ec-page-bg)))]">
16
16
  <Disclosure as="div" key={title} className="">
17
17
  {({ open }) => {
18
18
  useEffect(() => {
@@ -2,7 +2,7 @@
2
2
 
3
3
  ---
4
4
 
5
- <div class="accordian-group border border-gray-200 rounded-md shadow-sm accordion my-2">
5
+ <div class="accordian-group border border-gray-200 rounded-md shadow-xs accordion my-2">
6
6
  <slot />
7
7
  </div>
8
8
 
@@ -105,7 +105,7 @@ const sortedGroups = Object.entries(groupedAttachments).sort(([a], [b]) => {
105
105
  href={attachment.url}
106
106
  target={isExternal ? '_blank' : '_self'}
107
107
  rel={isExternal ? 'noopener noreferrer' : undefined}
108
- class="group block bg-[rgb(var(--ec-card-bg,var(--ec-page-bg)))] border border-[rgb(var(--ec-page-border))] rounded-lg p-4 transition-all duration-200 hover:shadow-md hover:border-[rgb(var(--ec-accent)/0.5)] focus:outline-none focus:ring-2 focus:ring-[rgb(var(--ec-accent))] focus:ring-offset-2"
108
+ class="group block bg-[rgb(var(--ec-card-bg,var(--ec-page-bg)))] border border-[rgb(var(--ec-page-border))] rounded-lg p-4 transition-all duration-200 hover:shadow-md hover:border-[rgb(var(--ec-accent)/0.5)] focus:outline-hidden focus:ring-2 focus:ring-[rgb(var(--ec-accent))] focus:ring-offset-2"
109
109
  >
110
110
  <div class="flex items-start gap-3">
111
111
  <div class="flex-shrink-0 p-2 bg-[rgb(var(--ec-content-hover))] rounded-lg group-hover:bg-[rgb(var(--ec-accent-subtle))] transition-colors duration-200">