@eventcatalog/core 3.29.1 → 3.30.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 (82) 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-H5UC2A5F.js → chunk-6UG4JMUV.js} +1 -1
  6. package/dist/{chunk-4MSAPCV3.js → chunk-ATRBVTJ6.js} +1 -1
  7. package/dist/{chunk-PLNJC7NZ.js → chunk-K3ZVEX2Y.js} +13 -2
  8. package/dist/{chunk-V4OTI3PF.js → chunk-MVZKHUX2.js} +1 -1
  9. package/dist/{chunk-FVKDNLZK.js → chunk-RRBDF4MM.js} +1 -1
  10. package/dist/{chunk-24NGK43A.js → chunk-Z26P4PCB.js} +1 -1
  11. package/dist/constants.cjs +1 -1
  12. package/dist/constants.js +1 -1
  13. package/dist/eventcatalog.cjs +14 -3
  14. package/dist/eventcatalog.js +6 -6
  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/dist/watcher.cjs +13 -2
  20. package/dist/watcher.js +1 -1
  21. package/eventcatalog/astro.config.mjs +1 -1
  22. package/eventcatalog/public/logo.png +0 -0
  23. package/eventcatalog/src/components/CopyAsMarkdown.tsx +2 -2
  24. package/eventcatalog/src/components/EnvironmentDropdown.tsx +33 -21
  25. package/eventcatalog/src/components/FieldsExplorer/FieldFilters.tsx +3 -53
  26. package/eventcatalog/src/components/FieldsExplorer/FieldsExplorer.tsx +144 -91
  27. package/eventcatalog/src/components/FieldsExplorer/FieldsTable.tsx +112 -109
  28. package/eventcatalog/src/components/Header.astro +9 -19
  29. package/eventcatalog/src/components/MDX/Accordion/Accordion.tsx +12 -14
  30. package/eventcatalog/src/components/MDX/Accordion/AccordionGroup.astro +11 -3
  31. package/eventcatalog/src/components/MDX/ResourceRef/ResourceRef.astro +15 -5
  32. package/eventcatalog/src/components/SchemaExplorer/ApiContentViewer.tsx +164 -53
  33. package/eventcatalog/src/components/SchemaExplorer/DiffViewer.tsx +1 -1
  34. package/eventcatalog/src/components/SchemaExplorer/ExamplesViewer.tsx +4 -4
  35. package/eventcatalog/src/components/SchemaExplorer/Pagination.tsx +12 -10
  36. package/eventcatalog/src/components/SchemaExplorer/SchemaContentViewer.tsx +48 -77
  37. package/eventcatalog/src/components/SchemaExplorer/SchemaDetailsPanel.tsx +238 -169
  38. package/eventcatalog/src/components/SchemaExplorer/SchemaExplorer.tsx +189 -230
  39. package/eventcatalog/src/components/SchemaExplorer/SchemaListItem.tsx +39 -36
  40. package/eventcatalog/src/components/Search/Search.astro +1 -1
  41. package/eventcatalog/src/components/Seo.astro +1 -1
  42. package/eventcatalog/src/components/SideNav/NestedSideBar/SearchBar.tsx +3 -3
  43. package/eventcatalog/src/components/SideNav/NestedSideBar/index.tsx +229 -256
  44. package/eventcatalog/src/components/Tables/Discover/DiscoverTable.tsx +78 -59
  45. package/eventcatalog/src/components/Tables/Discover/columns.tsx +130 -197
  46. package/eventcatalog/src/components/Tables/Table.tsx +21 -18
  47. package/eventcatalog/src/components/Tables/columns/TeamsTableColumns.tsx +79 -131
  48. package/eventcatalog/src/components/Tables/columns/UserTableColumns.tsx +104 -175
  49. package/eventcatalog/src/enterprise/auth/error.astro +1 -1
  50. package/eventcatalog/src/enterprise/auth/login.astro +1 -1
  51. package/eventcatalog/src/enterprise/custom-documentation/components/CustomDocsNav/index.tsx +95 -93
  52. package/eventcatalog/src/enterprise/custom-documentation/pages/docs/custom/index.astro +174 -136
  53. package/eventcatalog/src/enterprise/fields/pages/fields.astro +10 -8
  54. package/eventcatalog/src/enterprise/integrations/eventcatalog-features.ts +0 -8
  55. package/eventcatalog/src/layouts/DirectoryLayout.astro +17 -88
  56. package/eventcatalog/src/layouts/VerticalSideBarLayout.astro +528 -146
  57. package/eventcatalog/src/layouts/VisualiserLayout.astro +7 -2
  58. package/eventcatalog/src/pages/_index.astro +5 -3
  59. package/eventcatalog/src/pages/architecture/[type]/[id]/[version]/index.astro +3 -3
  60. package/eventcatalog/src/pages/diagrams/[id]/[version]/index.astro +223 -73
  61. package/eventcatalog/src/pages/discover/[type]/index.astro +22 -141
  62. package/eventcatalog/src/pages/docs/[type]/[id]/[version]/[docType]/[docId]/[docVersion]/index.astro +129 -29
  63. package/eventcatalog/src/pages/docs/[type]/[id]/[version]/[docType]/[docId]/index.astro +129 -29
  64. package/eventcatalog/src/pages/docs/[type]/[id]/[version]/asyncapi/[filename].astro +6 -2
  65. package/eventcatalog/src/pages/docs/[type]/[id]/[version]/examples/[...filename].astro +2 -2
  66. package/eventcatalog/src/pages/docs/[type]/[id]/[version]/graphql/[filename].astro +21 -18
  67. package/eventcatalog/src/pages/docs/[type]/[id]/[version]/index.astro +33 -32
  68. package/eventcatalog/src/pages/docs/[type]/[id]/[version]/spec/[filename].astro +5 -1
  69. package/eventcatalog/src/pages/docs/[type]/[id]/language/[dictionaryId]/index.astro +2 -2
  70. package/eventcatalog/src/pages/docs/[type]/[id]/language/index.astro +4 -6
  71. package/eventcatalog/src/pages/docs/teams/[id]/index.astro +11 -4
  72. package/eventcatalog/src/pages/docs/users/[id]/index.astro +11 -4
  73. package/eventcatalog/src/pages/schemas/explorer/index.astro +10 -8
  74. package/eventcatalog/src/pages/studio.astro +1 -1
  75. package/eventcatalog/src/pages/visualiser/[type]/[id]/[version]/entity-map/index.astro +2 -7
  76. package/eventcatalog/src/pages/visualiser/[type]/[id]/[version]/index.astro +2 -2
  77. package/eventcatalog/src/pages/visualiser/domains/[id]/[version]/entity-map/index.astro +2 -7
  78. package/eventcatalog/src/styles/theme.css +68 -12
  79. package/eventcatalog/src/types/react-syntax-highlighter.d.ts +13 -0
  80. package/package.json +1 -1
  81. package/eventcatalog/public/logo.svg +0 -14
  82. package/eventcatalog/src/enterprise/plans/index.astro +0 -319
@@ -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.29.1";
40
+ var version = "3.30.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-V4OTI3PF.js";
4
- import "../chunk-4MSAPCV3.js";
3
+ } from "../chunk-MVZKHUX2.js";
4
+ import "../chunk-ATRBVTJ6.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.29.1";
114
+ var version = "3.30.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-H5UC2A5F.js";
4
- import "../chunk-V4OTI3PF.js";
3
+ } from "../chunk-6UG4JMUV.js";
4
+ import "../chunk-MVZKHUX2.js";
5
5
  import "../chunk-4UVFXLPI.js";
6
- import "../chunk-4MSAPCV3.js";
6
+ import "../chunk-ATRBVTJ6.js";
7
7
  import "../chunk-5T63CXKU.js";
8
8
  export {
9
9
  log_build_default as default
@@ -1,6 +1,6 @@
1
1
  import {
2
2
  raiseEvent
3
- } from "./chunk-V4OTI3PF.js";
3
+ } from "./chunk-MVZKHUX2.js";
4
4
  import {
5
5
  countResources,
6
6
  serializeCounts
@@ -1,5 +1,5 @@
1
1
  // package.json
2
- var version = "3.29.1";
2
+ var version = "3.30.0";
3
3
 
4
4
  // src/constants.ts
5
5
  var VERSION = version;
@@ -21,6 +21,9 @@ async function watch(projectDirectory, catalogDirectory, callback = void 0) {
21
21
  }
22
22
  for (let event of events) {
23
23
  const { path: filePath, type } = event;
24
+ if (filePath.endsWith(".lock")) {
25
+ continue;
26
+ }
24
27
  if ((filePath.endsWith(".mdx") || filePath.endsWith(".md")) && !filePath.includes("snippets")) {
25
28
  continue;
26
29
  }
@@ -32,13 +35,21 @@ async function watch(projectDirectory, catalogDirectory, callback = void 0) {
32
35
  for (const astroPath of astroPaths) {
33
36
  switch (type) {
34
37
  case "create":
35
- case "update":
36
- if (fs.statSync(filePath).isDirectory()) {
38
+ case "update": {
39
+ let stat;
40
+ try {
41
+ stat = fs.statSync(filePath);
42
+ } catch (err2) {
43
+ if (err2.code === "ENOENT") break;
44
+ throw err2;
45
+ }
46
+ if (stat.isDirectory()) {
37
47
  fs.mkdirSync(astroPath, { recursive: true });
38
48
  } else {
39
49
  retryEPERM(fs.cpSync)(filePath, astroPath);
40
50
  }
41
51
  break;
52
+ }
42
53
  case "delete":
43
54
  retryEPERM(rimrafSync)(astroPath);
44
55
  break;
@@ -1,6 +1,6 @@
1
1
  import {
2
2
  VERSION
3
- } from "./chunk-4MSAPCV3.js";
3
+ } from "./chunk-ATRBVTJ6.js";
4
4
 
5
5
  // src/analytics/analytics.js
6
6
  import axios from "axios";
@@ -1,6 +1,6 @@
1
1
  import {
2
2
  logger
3
- } from "./chunk-24NGK43A.js";
3
+ } from "./chunk-Z26P4PCB.js";
4
4
  import {
5
5
  cleanup,
6
6
  getEventCatalogConfigFile
@@ -1,6 +1,6 @@
1
1
  import {
2
2
  VERSION
3
- } from "./chunk-4MSAPCV3.js";
3
+ } from "./chunk-ATRBVTJ6.js";
4
4
 
5
5
  // src/utils/cli-logger.ts
6
6
  import pc from "picocolors";
@@ -25,7 +25,7 @@ __export(constants_exports, {
25
25
  module.exports = __toCommonJS(constants_exports);
26
26
 
27
27
  // package.json
28
- var version = "3.29.1";
28
+ var version = "3.30.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-4MSAPCV3.js";
3
+ } from "./chunk-ATRBVTJ6.js";
4
4
  export {
5
5
  VERSION
6
6
  };
@@ -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.29.1";
117
+ var version = "3.30.0";
118
118
 
119
119
  // src/constants.ts
120
120
  var VERSION = version;
@@ -422,6 +422,9 @@ async function watch(projectDirectory, catalogDirectory, callback = void 0) {
422
422
  }
423
423
  for (let event of events) {
424
424
  const { path: filePath, type } = event;
425
+ if (filePath.endsWith(".lock")) {
426
+ continue;
427
+ }
425
428
  if ((filePath.endsWith(".mdx") || filePath.endsWith(".md")) && !filePath.includes("snippets")) {
426
429
  continue;
427
430
  }
@@ -433,13 +436,21 @@ async function watch(projectDirectory, catalogDirectory, callback = void 0) {
433
436
  for (const astroPath of astroPaths) {
434
437
  switch (type) {
435
438
  case "create":
436
- case "update":
437
- if (import_node_fs2.default.statSync(filePath).isDirectory()) {
439
+ case "update": {
440
+ let stat;
441
+ try {
442
+ stat = import_node_fs2.default.statSync(filePath);
443
+ } catch (err2) {
444
+ if (err2.code === "ENOENT") break;
445
+ throw err2;
446
+ }
447
+ if (stat.isDirectory()) {
438
448
  import_node_fs2.default.mkdirSync(astroPath, { recursive: true });
439
449
  } else {
440
450
  retryEPERM(import_node_fs2.default.cpSync)(filePath, astroPath);
441
451
  }
442
452
  break;
453
+ }
443
454
  case "delete":
444
455
  retryEPERM(import_rimraf.rimrafSync)(astroPath);
445
456
  break;
@@ -3,11 +3,11 @@ import {
3
3
  } from "./chunk-WAJIJEI3.js";
4
4
  import {
5
5
  watch
6
- } from "./chunk-PLNJC7NZ.js";
6
+ } from "./chunk-K3ZVEX2Y.js";
7
7
  import {
8
8
  log_build_default
9
- } from "./chunk-H5UC2A5F.js";
10
- import "./chunk-V4OTI3PF.js";
9
+ } from "./chunk-6UG4JMUV.js";
10
+ import "./chunk-MVZKHUX2.js";
11
11
  import "./chunk-4UVFXLPI.js";
12
12
  import {
13
13
  runMigrations
@@ -22,13 +22,13 @@ import {
22
22
  } from "./chunk-3KXCGYET.js";
23
23
  import {
24
24
  generate
25
- } from "./chunk-FVKDNLZK.js";
25
+ } from "./chunk-RRBDF4MM.js";
26
26
  import {
27
27
  logger
28
- } from "./chunk-24NGK43A.js";
28
+ } from "./chunk-Z26P4PCB.js";
29
29
  import {
30
30
  VERSION
31
- } from "./chunk-4MSAPCV3.js";
31
+ } from "./chunk-ATRBVTJ6.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.29.1";
81
+ var version = "3.30.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-FVKDNLZK.js";
4
- import "./chunk-24NGK43A.js";
5
- import "./chunk-4MSAPCV3.js";
3
+ } from "./chunk-RRBDF4MM.js";
4
+ import "./chunk-Z26P4PCB.js";
5
+ import "./chunk-ATRBVTJ6.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.29.1";
39
+ var version = "3.30.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-24NGK43A.js";
4
- import "../chunk-4MSAPCV3.js";
3
+ } from "../chunk-Z26P4PCB.js";
4
+ import "../chunk-ATRBVTJ6.js";
5
5
  export {
6
6
  logger
7
7
  };
package/dist/watcher.cjs CHANGED
@@ -141,6 +141,9 @@ async function watch(projectDirectory, catalogDirectory, callback = void 0) {
141
141
  }
142
142
  for (let event of events) {
143
143
  const { path: filePath, type } = event;
144
+ if (filePath.endsWith(".lock")) {
145
+ continue;
146
+ }
144
147
  if ((filePath.endsWith(".mdx") || filePath.endsWith(".md")) && !filePath.includes("snippets")) {
145
148
  continue;
146
149
  }
@@ -152,13 +155,21 @@ async function watch(projectDirectory, catalogDirectory, callback = void 0) {
152
155
  for (const astroPath of astroPaths) {
153
156
  switch (type) {
154
157
  case "create":
155
- case "update":
156
- if (import_node_fs.default.statSync(filePath).isDirectory()) {
158
+ case "update": {
159
+ let stat;
160
+ try {
161
+ stat = import_node_fs.default.statSync(filePath);
162
+ } catch (err2) {
163
+ if (err2.code === "ENOENT") break;
164
+ throw err2;
165
+ }
166
+ if (stat.isDirectory()) {
157
167
  import_node_fs.default.mkdirSync(astroPath, { recursive: true });
158
168
  } else {
159
169
  retryEPERM(import_node_fs.default.cpSync)(filePath, astroPath);
160
170
  }
161
171
  break;
172
+ }
162
173
  case "delete":
163
174
  retryEPERM(import_rimraf.rimrafSync)(astroPath);
164
175
  break;
package/dist/watcher.js CHANGED
@@ -1,6 +1,6 @@
1
1
  import {
2
2
  watch
3
- } from "./chunk-PLNJC7NZ.js";
3
+ } from "./chunk-K3ZVEX2Y.js";
4
4
  import "./chunk-55D645EH.js";
5
5
  export {
6
6
  watch
@@ -30,7 +30,7 @@ const compress = config.compress ?? false;
30
30
 
31
31
 
32
32
  const expressiveCodeConfig = {
33
- themes: ['andromeeda'],
33
+ themes: ['github-light', 'github-dark'],
34
34
  defaultProps: {
35
35
  wrap: true,
36
36
  },
Binary file
@@ -239,7 +239,7 @@ export function CopyPageMenu({
239
239
  <button
240
240
  type="button"
241
241
  onClick={handleDefaultAction}
242
- 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))]"
242
+ className="inline-flex items-center justify-center gap-2 whitespace-nowrap px-4 py-1.5 text-sm font-medium text-[rgb(var(--ec-dropdown-text))] bg-[rgb(var(--ec-page-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))]"
243
243
  >
244
244
  <defaultAction.icon className="w-4 h-4" />
245
245
  {buttonText}
@@ -248,7 +248,7 @@ export function CopyPageMenu({
248
248
  <DropdownMenu.Trigger asChild>
249
249
  <button
250
250
  type="button"
251
- 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))]"
251
+ className="inline-flex items-center justify-center px-2.5 py-1.5 text-sm font-medium text-[rgb(var(--ec-icon-color))] bg-[rgb(var(--ec-page-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))]"
252
252
  aria-label="More options"
253
253
  >
254
254
  <ChevronDownIcon className="w-4 h-4" />
@@ -63,30 +63,32 @@ 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-hidden focus:ring-2 focus:ring-offset-2 focus:ring-[rgb(var(--ec-accent))] rounded-md px-3 py-2 transition-colors"
66
+ className="group inline-flex items-center gap-2.5 rounded-xl border border-[rgb(var(--ec-header-border))] bg-[rgb(var(--ec-header-bg))] px-3.5 py-2 text-[13px] font-medium text-[rgb(var(--ec-header-text)/0.82)] shadow-xs transition-colors hover:border-[rgb(var(--ec-page-border))] hover:bg-[rgb(var(--ec-dropdown-hover)/0.35)] hover:text-[rgb(var(--ec-header-text))] focus:outline-hidden focus:ring-2 focus:ring-[rgb(var(--ec-accent))]"
67
67
  aria-expanded={isOpen}
68
68
  aria-haspopup="true"
69
69
  >
70
- <svg className="w-5 h-5" fill="none" stroke="currentColor" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg">
71
- <path
72
- strokeLinecap="round"
73
- strokeLinejoin="round"
74
- strokeWidth="2"
75
- d="M21 12a9 9 0 01-9 9m9-9a9 9 0 00-9-9m9 9H3m9 9a9 9 0 01-9-9m9 9c1.657 0 3-4.03 3-9s-1.343-9-3-9m0 18c-1.657 0-3-4.03-3-9s1.343-9 3-9m-9 9a9 9 0 019-9"
76
- />
77
- </svg>
78
- <span>
79
- Environments
70
+ <span className="h-2.5 w-2.5 rounded-full bg-emerald-400 shadow-[0_0_0_3px_rgba(16,185,129,0.14)]" aria-hidden="true" />
71
+ <span className="truncate">
72
+ <span className="font-semibold text-[rgb(var(--ec-header-text))]">Environments</span>
80
73
  {currentEnvironment && (
81
- <span className="font-normal"> ({currentEnvironment.shortName || currentEnvironment.name})</span>
74
+ <span className="font-medium text-[rgb(var(--ec-header-text)/0.72)]">
75
+ {' '}
76
+ ({currentEnvironment.shortName || currentEnvironment.name})
77
+ </span>
82
78
  )}
83
79
  </span>
84
- <svg className="w-4 h-4" fill="none" stroke="currentColor" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg">
80
+ <svg
81
+ className={`ml-0.5 h-4 w-4 flex-shrink-0 transition-transform ${isOpen ? 'rotate-180' : ''}`}
82
+ fill="none"
83
+ stroke="currentColor"
84
+ viewBox="0 0 24 24"
85
+ xmlns="http://www.w3.org/2000/svg"
86
+ >
85
87
  <path strokeLinecap="round" strokeLinejoin="round" strokeWidth="2" d="M19 9l-7 7-7-7" />
86
88
  </svg>
87
89
  </button>
88
90
  <div
89
- className={`${isOpen ? '' : 'hidden'} absolute right-0 mt-2 w-64 bg-[rgb(var(--ec-dropdown-bg))] rounded-md shadow-lg py-1 border border-[rgb(var(--ec-dropdown-border))] overflow-hidden z-[100]`}
91
+ className={`${isOpen ? '' : 'hidden'} absolute right-0 mt-2 w-72 overflow-hidden rounded-2xl border border-[rgb(var(--ec-dropdown-border))] bg-[rgb(var(--ec-dropdown-bg))] p-1.5 shadow-2xl z-[100]`}
90
92
  >
91
93
  {environments.map((env) => {
92
94
  const isCurrentEnv = currentEnvironment?.name === env.name;
@@ -103,18 +105,28 @@ export const EnvironmentDropdown: React.FC<EnvironmentDropdownProps> = ({ enviro
103
105
  targetUrl.pathname = currentPath;
104
106
  window.location.href = targetUrl.toString();
105
107
  }}
106
- className={`block px-4 py-3 text-sm transition-colors border-b border-[rgb(var(--ec-dropdown-border)/0.3)] last:border-b-0 ${
108
+ className={`block rounded-xl px-3 py-3 transition-colors ${
107
109
  isCurrentEnv
108
- ? 'bg-[rgb(var(--ec-accent)/0.1)] text-[rgb(var(--ec-accent))] hover:bg-[rgb(var(--ec-accent)/0.2)]'
110
+ ? 'bg-[rgb(var(--ec-accent)/0.12)] text-[rgb(var(--ec-dropdown-text))]'
109
111
  : 'text-[rgb(var(--ec-dropdown-text))] hover:bg-[rgb(var(--ec-dropdown-hover))]'
110
112
  }`}
111
113
  >
112
- <div className="flex items-center justify-between">
113
- <div>
114
- <div className={`font-medium ${isCurrentEnv ? 'text-[rgb(var(--ec-accent))]' : ''}`}>{env.name}</div>
114
+ <div className="flex items-start justify-between gap-3">
115
+ <div className="min-w-0">
116
+ <div className="flex items-center gap-2">
117
+ <span
118
+ className={`mt-0.5 h-2 w-2 rounded-full flex-shrink-0 ${isCurrentEnv ? 'bg-emerald-400' : 'bg-[rgb(var(--ec-icon-color))]'}`}
119
+ aria-hidden="true"
120
+ />
121
+ <div
122
+ className={`truncate text-[13px] font-semibold ${isCurrentEnv ? 'text-[rgb(var(--ec-accent-text))]' : ''}`}
123
+ >
124
+ {env.name}
125
+ </div>
126
+ </div>
115
127
  {env.description && (
116
128
  <div
117
- className={`text-xs font-light mt-1 ${isCurrentEnv ? 'text-[rgb(var(--ec-accent)/0.8)]' : 'text-[rgb(var(--ec-icon-color))]'}`}
129
+ className={`mt-1 pl-4 text-[12px] leading-5 ${isCurrentEnv ? 'text-[rgb(var(--ec-accent-text)/0.78)]' : 'text-[rgb(var(--ec-icon-color))]'}`}
118
130
  >
119
131
  {env.description}
120
132
  </div>
@@ -122,7 +134,7 @@ export const EnvironmentDropdown: React.FC<EnvironmentDropdownProps> = ({ enviro
122
134
  </div>
123
135
  {isCurrentEnv && (
124
136
  <svg
125
- className="w-4 h-4 text-[rgb(var(--ec-accent))] flex-shrink-0 ml-2"
137
+ className="mt-0.5 h-4 w-4 flex-shrink-0 text-[rgb(var(--ec-accent-text))]"
126
138
  fill="currentColor"
127
139
  viewBox="0 0 20 20"
128
140
  >
@@ -1,5 +1,3 @@
1
- import { useState, useEffect } from 'react';
2
- import { Search, X, Filter } from 'lucide-react';
3
1
  import { FilterDropdown, CheckboxItem } from '../Tables/Discover/FilterComponents';
4
2
 
5
3
  export interface FieldFiltersProps {
@@ -21,8 +19,6 @@ export interface FieldFiltersProps {
21
19
  }
22
20
 
23
21
  export default function FieldFilters({
24
- searchQuery,
25
- onSearchChange,
26
22
  selectedFormats,
27
23
  onFormatsChange,
28
24
  selectedMessageTypes,
@@ -34,21 +30,6 @@ export default function FieldFilters({
34
30
  facets,
35
31
  isScaleEnabled = false,
36
32
  }: FieldFiltersProps) {
37
- const [localSearch, setLocalSearch] = useState(searchQuery);
38
-
39
- // Sync external changes
40
- useEffect(() => {
41
- setLocalSearch(searchQuery);
42
- }, [searchQuery]);
43
-
44
- // Debounce search input
45
- useEffect(() => {
46
- const timeout = setTimeout(() => {
47
- onSearchChange(localSearch);
48
- }, 500);
49
- return () => clearTimeout(timeout);
50
- }, [localSearch]);
51
-
52
33
  const toggleFormat = (value: string) => {
53
34
  if (selectedFormats.includes(value)) {
54
35
  onFormatsChange(selectedFormats.filter((f) => f !== value));
@@ -73,45 +54,14 @@ export default function FieldFilters({
73
54
  onMessageTypesChange([]);
74
55
  onSharedOnlyChange(false);
75
56
  onConflictingOnlyChange(false);
76
- setLocalSearch('');
77
- onSearchChange('');
78
57
  };
79
58
 
80
59
  return (
81
- <div className="space-y-4">
82
- {/* Search Input */}
83
- <div className="relative">
84
- <Search className="absolute left-3 top-1/2 -translate-y-1/2 w-4 h-4 text-[rgb(var(--ec-icon-color))]" />
85
- <input
86
- type="text"
87
- value={localSearch}
88
- onChange={(e) => setLocalSearch(e.target.value)}
89
- placeholder="Search fields..."
90
- className="w-full pl-9 pr-8 py-2 text-sm bg-[rgb(var(--ec-dropdown-bg))] text-[rgb(var(--ec-input-text))] border border-[rgb(var(--ec-dropdown-border))] rounded-lg placeholder:text-[rgb(var(--ec-icon-color))] focus:outline-hidden focus:ring-1 focus:ring-[rgb(var(--ec-accent)/0.3)] focus:border-[rgb(var(--ec-accent))] transition-colors"
91
- />
92
- {localSearch && (
93
- <button
94
- onClick={() => {
95
- setLocalSearch('');
96
- onSearchChange('');
97
- }}
98
- className="absolute right-2 top-1/2 -translate-y-1/2 p-0.5 text-[rgb(var(--ec-icon-color))] hover:text-[rgb(var(--ec-page-text))]"
99
- >
100
- <X className="w-3.5 h-3.5" />
101
- </button>
102
- )}
103
- </div>
104
-
105
- {/* Filter Section Header */}
106
- <div className="flex items-center gap-2">
107
- <Filter className="w-3.5 h-3.5 text-[rgb(var(--ec-icon-color))]" />
108
- <h3 className="text-[11px] font-bold uppercase tracking-widest text-[rgb(var(--ec-page-text))]">Filters</h3>
109
- </div>
110
-
60
+ <div className="space-y-6">
111
61
  {/* Schema Format Filter */}
112
62
  {facets && facets.formats.length > 0 && (
113
63
  <div>
114
- <label className="block text-xs font-medium text-[rgb(var(--ec-page-text)/0.8)] mb-1.5">Schema Format</label>
64
+ <label className="block text-xs font-medium text-[rgb(var(--ec-page-text)/0.8)] mb-1.5">Schema format</label>
115
65
  <FilterDropdown
116
66
  label="Select formats..."
117
67
  selectedItems={selectedFormats}
@@ -134,7 +84,7 @@ export default function FieldFilters({
134
84
  {/* Message Type Filter */}
135
85
  {facets && facets.messageTypes.length > 0 && (
136
86
  <div>
137
- <label className="block text-xs font-medium text-[rgb(var(--ec-page-text)/0.8)] mb-1.5">Message Type</label>
87
+ <label className="block text-xs font-medium text-[rgb(var(--ec-page-text)/0.8)] mb-1.5">Message type</label>
138
88
  <FilterDropdown
139
89
  label="Select message types..."
140
90
  selectedItems={selectedMessageTypes}