@eventcatalog/core 2.48.0 → 2.48.2

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 (29) 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 +0 -1
  6. package/dist/catalog-to-astro-content-directory.js +2 -2
  7. package/dist/{chunk-B53UJPGW.js → chunk-IZMM7ZGY.js} +1 -1
  8. package/dist/{chunk-WDTWWPPX.js → chunk-LDBRNJIL.js} +0 -1
  9. package/dist/{chunk-LK6C3F6Q.js → chunk-SKRYED6N.js} +1 -1
  10. package/dist/{chunk-I755G24S.js → chunk-TU4LMTL7.js} +1 -1
  11. package/dist/{chunk-RW4O4UUQ.js → chunk-UVANOIYF.js} +1 -1
  12. package/dist/{chunk-MDWGYIVH.js → chunk-XE6PFSH5.js} +1 -1
  13. package/dist/constants.cjs +1 -1
  14. package/dist/constants.js +1 -1
  15. package/dist/eventcatalog.cjs +1 -2
  16. package/dist/eventcatalog.config.d.cts +6 -0
  17. package/dist/eventcatalog.config.d.ts +6 -0
  18. package/dist/eventcatalog.js +6 -6
  19. package/dist/map-catalog-to-astro.cjs +0 -1
  20. package/dist/map-catalog-to-astro.js +1 -1
  21. package/dist/watcher.cjs +0 -1
  22. package/dist/watcher.js +2 -2
  23. package/eventcatalog/src/components/EnvironmentDropdown.tsx +135 -0
  24. package/eventcatalog/src/components/Header.astro +8 -1
  25. package/eventcatalog/src/components/SideNav/ListViewSideBar/components/MessageList.tsx +1 -0
  26. package/eventcatalog/src/components/SideNav/ListViewSideBar/components/SpecificationList.tsx +2 -0
  27. package/eventcatalog/src/components/SideNav/ListViewSideBar/index.tsx +20 -10
  28. package/eventcatalog/src/pages/docs/[type]/[id]/[version]/index.astro +0 -2
  29. package/package.json +1 -1
@@ -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 = "2.48.0";
40
+ var version = "2.48.2";
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-LK6C3F6Q.js";
4
- import "../chunk-I755G24S.js";
3
+ } from "../chunk-SKRYED6N.js";
4
+ import "../chunk-TU4LMTL7.js";
5
5
  export {
6
6
  raiseEvent
7
7
  };
@@ -106,7 +106,7 @@ var import_axios = __toESM(require("axios"), 1);
106
106
  var import_os = __toESM(require("os"), 1);
107
107
 
108
108
  // package.json
109
- var version = "2.48.0";
109
+ var version = "2.48.2";
110
110
 
111
111
  // src/constants.ts
112
112
  var VERSION = version;
@@ -1,8 +1,8 @@
1
1
  import {
2
2
  log_build_default
3
- } from "../chunk-RW4O4UUQ.js";
4
- import "../chunk-LK6C3F6Q.js";
5
- import "../chunk-I755G24S.js";
3
+ } from "../chunk-UVANOIYF.js";
4
+ import "../chunk-SKRYED6N.js";
5
+ import "../chunk-TU4LMTL7.js";
6
6
  import "../chunk-E7TXTI7G.js";
7
7
  export {
8
8
  log_build_default as default
@@ -191,7 +191,6 @@ function getRelativeTargetPath(filePath) {
191
191
  filePathArr.shift();
192
192
  }
193
193
  if (filePathArr[0] == "snippets") {
194
- console.log("SNIPPETS", filePathArr);
195
194
  return import_node_path2.default.join("snippets", ...filePathArr.slice(1));
196
195
  }
197
196
  const relativePath = [];
@@ -1,8 +1,8 @@
1
1
  import {
2
2
  catalogToAstro,
3
3
  checkAndConvertMdToMdx
4
- } from "./chunk-B53UJPGW.js";
5
- import "./chunk-WDTWWPPX.js";
4
+ } from "./chunk-IZMM7ZGY.js";
5
+ import "./chunk-LDBRNJIL.js";
6
6
  import "./chunk-E7TXTI7G.js";
7
7
  export {
8
8
  catalogToAstro,
@@ -1,6 +1,6 @@
1
1
  import {
2
2
  mapCatalogToAstro
3
- } from "./chunk-WDTWWPPX.js";
3
+ } from "./chunk-LDBRNJIL.js";
4
4
  import {
5
5
  verifyRequiredFieldsAreInCatalogConfigFile
6
6
  } from "./chunk-E7TXTI7G.js";
@@ -76,7 +76,6 @@ function getRelativeTargetPath(filePath) {
76
76
  filePathArr.shift();
77
77
  }
78
78
  if (filePathArr[0] == "snippets") {
79
- console.log("SNIPPETS", filePathArr);
80
79
  return path.join("snippets", ...filePathArr.slice(1));
81
80
  }
82
81
  const relativePath = [];
@@ -1,6 +1,6 @@
1
1
  import {
2
2
  VERSION
3
- } from "./chunk-I755G24S.js";
3
+ } from "./chunk-TU4LMTL7.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 = "2.48.0";
2
+ var version = "2.48.2";
3
3
 
4
4
  // src/constants.ts
5
5
  var VERSION = version;
@@ -1,6 +1,6 @@
1
1
  import {
2
2
  raiseEvent
3
- } from "./chunk-LK6C3F6Q.js";
3
+ } from "./chunk-SKRYED6N.js";
4
4
  import {
5
5
  getEventCatalogConfigFile,
6
6
  verifyRequiredFieldsAreInCatalogConfigFile
@@ -1,6 +1,6 @@
1
1
  import {
2
2
  mapCatalogToAstro
3
- } from "./chunk-WDTWWPPX.js";
3
+ } from "./chunk-LDBRNJIL.js";
4
4
 
5
5
  // src/watcher.js
6
6
  import watcher from "@parcel/watcher";
@@ -25,7 +25,7 @@ __export(constants_exports, {
25
25
  module.exports = __toCommonJS(constants_exports);
26
26
 
27
27
  // package.json
28
- var version = "2.48.0";
28
+ var version = "2.48.2";
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-I755G24S.js";
3
+ } from "./chunk-TU4LMTL7.js";
4
4
  export {
5
5
  VERSION
6
6
  };
@@ -157,7 +157,7 @@ var import_axios = __toESM(require("axios"), 1);
157
157
  var import_os = __toESM(require("os"), 1);
158
158
 
159
159
  // package.json
160
- var version = "2.48.0";
160
+ var version = "2.48.2";
161
161
 
162
162
  // src/constants.ts
163
163
  var VERSION = version;
@@ -306,7 +306,6 @@ function getRelativeTargetPath(filePath) {
306
306
  filePathArr.shift();
307
307
  }
308
308
  if (filePathArr[0] == "snippets") {
309
- console.log("SNIPPETS", filePathArr);
310
309
  return import_node_path3.default.join("snippets", ...filePathArr.slice(1));
311
310
  }
312
311
  const relativePath = [];
@@ -101,6 +101,12 @@ interface Config {
101
101
  renderMode?: 'flat' | 'single';
102
102
  };
103
103
  };
104
+ environments?: {
105
+ name: string;
106
+ url: string;
107
+ description?: string;
108
+ shortName?: string;
109
+ }[];
104
110
  }
105
111
 
106
112
  export type { Config, SideBarConfig };
@@ -101,6 +101,12 @@ interface Config {
101
101
  renderMode?: 'flat' | 'single';
102
102
  };
103
103
  };
104
+ environments?: {
105
+ name: string;
106
+ url: string;
107
+ description?: string;
108
+ shortName?: string;
109
+ }[];
104
110
  }
105
111
 
106
112
  export type { Config, SideBarConfig };
@@ -3,19 +3,19 @@ import {
3
3
  } from "./chunk-BLDONK5J.js";
4
4
  import {
5
5
  watch
6
- } from "./chunk-MDWGYIVH.js";
6
+ } from "./chunk-XE6PFSH5.js";
7
7
  import {
8
8
  log_build_default
9
- } from "./chunk-RW4O4UUQ.js";
10
- import "./chunk-LK6C3F6Q.js";
9
+ } from "./chunk-UVANOIYF.js";
10
+ import "./chunk-SKRYED6N.js";
11
11
  import {
12
12
  catalogToAstro,
13
13
  checkAndConvertMdToMdx
14
- } from "./chunk-B53UJPGW.js";
15
- import "./chunk-WDTWWPPX.js";
14
+ } from "./chunk-IZMM7ZGY.js";
15
+ import "./chunk-LDBRNJIL.js";
16
16
  import {
17
17
  VERSION
18
- } from "./chunk-I755G24S.js";
18
+ } from "./chunk-TU4LMTL7.js";
19
19
  import {
20
20
  isAuthEnabled,
21
21
  isBackstagePluginEnabled,
@@ -110,7 +110,6 @@ function getRelativeTargetPath(filePath) {
110
110
  filePathArr.shift();
111
111
  }
112
112
  if (filePathArr[0] == "snippets") {
113
- console.log("SNIPPETS", filePathArr);
114
113
  return import_node_path.default.join("snippets", ...filePathArr.slice(1));
115
114
  }
116
115
  const relativePath = [];
@@ -1,6 +1,6 @@
1
1
  import {
2
2
  mapCatalogToAstro
3
- } from "./chunk-WDTWWPPX.js";
3
+ } from "./chunk-LDBRNJIL.js";
4
4
  export {
5
5
  mapCatalogToAstro
6
6
  };
package/dist/watcher.cjs CHANGED
@@ -114,7 +114,6 @@ function getRelativeTargetPath(filePath) {
114
114
  filePathArr.shift();
115
115
  }
116
116
  if (filePathArr[0] == "snippets") {
117
- console.log("SNIPPETS", filePathArr);
118
117
  return import_node_path.default.join("snippets", ...filePathArr.slice(1));
119
118
  }
120
119
  const relativePath = [];
package/dist/watcher.js CHANGED
@@ -1,7 +1,7 @@
1
1
  import {
2
2
  watch
3
- } from "./chunk-MDWGYIVH.js";
4
- import "./chunk-WDTWWPPX.js";
3
+ } from "./chunk-XE6PFSH5.js";
4
+ import "./chunk-LDBRNJIL.js";
5
5
  export {
6
6
  watch
7
7
  };
@@ -0,0 +1,135 @@
1
+ import React, { useState, useEffect, useRef } from 'react';
2
+
3
+ interface Environment {
4
+ name: string;
5
+ url: string;
6
+ description?: string;
7
+ shortName?: string;
8
+ }
9
+
10
+ interface EnvironmentDropdownProps {
11
+ environments: Environment[];
12
+ }
13
+
14
+ export const EnvironmentDropdown: React.FC<EnvironmentDropdownProps> = ({ environments }) => {
15
+ const [isOpen, setIsOpen] = useState(false);
16
+ const [currentEnvironment, setCurrentEnvironment] = useState<Environment | null>(null);
17
+ const dropdownRef = useRef<HTMLDivElement>(null);
18
+
19
+ useEffect(() => {
20
+ // Check if current URL matches any environment
21
+ const currentUrl = window.location.origin;
22
+ const matchedEnv = environments.find((env) => {
23
+ // Normalize URLs for comparison
24
+ const envUrl = new URL(env.url).origin;
25
+ return envUrl === currentUrl;
26
+ });
27
+ setCurrentEnvironment(matchedEnv || null);
28
+ }, [environments]);
29
+
30
+ useEffect(() => {
31
+ // Handle click outside
32
+ const handleClickOutside = (event: MouseEvent) => {
33
+ if (dropdownRef.current && !dropdownRef.current.contains(event.target as Node)) {
34
+ setIsOpen(false);
35
+ }
36
+ };
37
+
38
+ // Handle escape key
39
+ const handleEscape = (event: KeyboardEvent) => {
40
+ if (event.key === 'Escape') {
41
+ setIsOpen(false);
42
+ }
43
+ };
44
+
45
+ if (isOpen) {
46
+ document.addEventListener('click', handleClickOutside);
47
+ document.addEventListener('keydown', handleEscape);
48
+ }
49
+
50
+ return () => {
51
+ document.removeEventListener('click', handleClickOutside);
52
+ document.removeEventListener('keydown', handleEscape);
53
+ };
54
+ }, [isOpen]);
55
+
56
+ const toggleDropdown = (e: React.MouseEvent) => {
57
+ e.stopPropagation();
58
+ setIsOpen(!isOpen);
59
+ };
60
+
61
+ return (
62
+ <div className="relative" ref={dropdownRef}>
63
+ <button
64
+ type="button"
65
+ onClick={toggleDropdown}
66
+ className="flex items-center space-x-1 text-sm font-medium text-gray-700 hover:text-gray-900 focus:outline-none focus:ring-2 focus:ring-offset-2 focus:ring-purple-500 rounded-md px-3 py-2"
67
+ aria-expanded={isOpen}
68
+ aria-haspopup="true"
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
80
+ {currentEnvironment && (
81
+ <span className="font-normal"> ({currentEnvironment.shortName || currentEnvironment.name})</span>
82
+ )}
83
+ </span>
84
+ <svg className="w-4 h-4" fill="none" stroke="currentColor" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg">
85
+ <path strokeLinecap="round" strokeLinejoin="round" strokeWidth="2" d="M19 9l-7 7-7-7" />
86
+ </svg>
87
+ </button>
88
+ <div
89
+ className={`${isOpen ? '' : 'hidden'} absolute right-0 mt-2 w-64 bg-white rounded-md shadow-lg py-1 z-50 border border-gray-100 overflow-hidden z-20`}
90
+ >
91
+ {environments.map((env) => {
92
+ const isCurrentEnv = currentEnvironment?.name === env.name;
93
+
94
+ return (
95
+ <a
96
+ key={env.name}
97
+ href={env.url}
98
+ onClick={(e) => {
99
+ e.preventDefault();
100
+ // Construct the full URL with the current path when clicked
101
+ const currentPath = window.location.pathname + window.location.search + window.location.hash;
102
+ const targetUrl = new URL(env.url);
103
+ targetUrl.pathname = currentPath;
104
+ window.location.href = targetUrl.toString();
105
+ }}
106
+ className={`block px-4 py-3 text-sm transition-colors border-b border-gray-50 last:border-b-0 ${
107
+ isCurrentEnv ? 'bg-purple-50 text-purple-700 hover:bg-purple-100' : 'text-gray-700 hover:bg-gray-50'
108
+ }`}
109
+ >
110
+ <div className="flex items-center justify-between">
111
+ <div>
112
+ <div className={`font-medium ${isCurrentEnv ? 'text-purple-700' : ''}`}>{env.name}</div>
113
+ {env.description && (
114
+ <div className={`text-xs font-light mt-1 ${isCurrentEnv ? 'text-purple-600' : 'text-gray-500'}`}>
115
+ {env.description}
116
+ </div>
117
+ )}
118
+ </div>
119
+ {isCurrentEnv && (
120
+ <svg className="w-4 h-4 text-purple-600 flex-shrink-0 ml-2" fill="currentColor" viewBox="0 0 20 20">
121
+ <path
122
+ fillRule="evenodd"
123
+ d="M16.707 5.293a1 1 0 010 1.414l-8 8a1 1 0 01-1.414 0l-4-4a1 1 0 011.414-1.414L8 12.586l7.293-7.293a1 1 0 011.414 0z"
124
+ clipRule="evenodd"
125
+ />
126
+ </svg>
127
+ )}
128
+ </div>
129
+ </a>
130
+ );
131
+ })}
132
+ </div>
133
+ </div>
134
+ );
135
+ };
@@ -5,6 +5,7 @@ import { buildUrl } from '@utils/url-builder';
5
5
  import { showEventCatalogBranding, showCustomBranding } from '@utils/feature';
6
6
  import { getSession } from 'auth-astro/server';
7
7
  import { isAuthEnabled, isSSR } from '@utils/feature';
8
+ import { EnvironmentDropdown } from './EnvironmentDropdown';
8
9
 
9
10
  let session = null;
10
11
  if (isAuthEnabled()) {
@@ -41,7 +42,10 @@ const repositoryUrl = catalog?.repositoryUrl || 'https://github.com/event-catalo
41
42
  <div class="hidden md:block w-3/12">
42
43
  {
43
44
  session ? (
44
- <div class="flex justify-end pr-2">
45
+ <div class="flex items-center space-x-4 justify-end pr-2">
46
+ {catalog.environments && catalog.environments.length > 0 && (
47
+ <EnvironmentDropdown environments={catalog.environments} client:load />
48
+ )}
45
49
  <div class="relative">
46
50
  <button
47
51
  id="profile-menu-button"
@@ -89,6 +93,9 @@ const repositoryUrl = catalog?.repositoryUrl || 'https://github.com/event-catalo
89
93
  ) : (
90
94
  <>
91
95
  <div class="flex items-center space-x-4 justify-end pr-2">
96
+ {catalog.environments && catalog.environments.length > 0 && (
97
+ <EnvironmentDropdown environments={catalog.environments} client:load />
98
+ )}
92
99
  {isAuthEnabled() && (
93
100
  <button
94
101
  id="okta-signin-btn"
@@ -54,6 +54,7 @@ const MessageList: React.FC<MessageListProps> = ({ messages, decodedCurrentPath,
54
54
  <li key={message.id} data-active={decodedCurrentPath === message.href}>
55
55
  <a
56
56
  href={message.href}
57
+ data-active={decodedCurrentPath === message.href}
57
58
  className={`flex items-center justify-between px-2 py-1.5 text-xs text-gray-600 hover:bg-purple-100 rounded-md ${
58
59
  decodedCurrentPath.includes(message.href) ? 'bg-purple-100 ' : 'hover:bg-purple-100'
59
60
  }`}
@@ -26,6 +26,7 @@ const SpecificationList: React.FC<SpecificationListProps> = ({ specifications, i
26
26
  <a
27
27
  key={`${spec.name}-asyncapi`}
28
28
  href={buildUrl(`/docs/services/${id}/${version}/asyncapi/${spec.filenameWithoutExtension}`)}
29
+ data-active={window.location.href.includes(`docs/services/${id}/${version}/asyncapi`)}
29
30
  className={`flex items-center px-2 py-1.5 text-xs text-gray-600 hover:bg-purple-100 rounded-md justify-between ${
30
31
  window.location.href.includes(`docs/services/${id}/${version}/asyncapi`) ? 'bg-purple-100' : 'hover:bg-purple-100'
31
32
  }`}
@@ -42,6 +43,7 @@ const SpecificationList: React.FC<SpecificationListProps> = ({ specifications, i
42
43
  <a
43
44
  key={`${spec.name}-openapi`}
44
45
  href={buildUrl(`/docs/services/${id}/${version}/spec/${spec.filenameWithoutExtension}`)}
46
+ data-active={window.location.href.includes(`docs/services/${id}/${version}/spec/${spec.filenameWithoutExtension}`)}
45
47
  className={`items-center px-2 py-1.5 text-xs text-gray-600 hover:bg-purple-100 rounded-md flex justify-between ${
46
48
  window.location.href.includes(`docs/services/${id}/${version}/spec/${spec.filenameWithoutExtension}`)
47
49
  ? 'bg-purple-100'
@@ -99,6 +99,7 @@ const ServiceItem = React.memo(
99
99
  <div className="space-y-0.5 border-gray-200/80 border-l pl-3 ml-[9px] mt-1">
100
100
  <a
101
101
  href={`${item.href}`}
102
+ data-active={decodedCurrentPath === item.href}
102
103
  className={`flex items-center px-2 py-1.5 text-xs text-gray-600 hover:bg-purple-100 rounded-md ${
103
104
  decodedCurrentPath === item.href ? 'bg-purple-100' : 'hover:bg-purple-100'
104
105
  }`}
@@ -111,6 +112,7 @@ const ServiceItem = React.memo(
111
112
  serviceName: item.name,
112
113
  serviceId: item.id,
113
114
  })}
115
+ data-active={window.location.href.includes(`serviceId=${item.id}`)}
114
116
  className={`flex items-center px-2 py-1.5 text-xs text-gray-600 hover:bg-purple-100 rounded-md ${
115
117
  window.location.href.includes(`serviceId=${item.id}`) ? 'bg-purple-100' : 'hover:bg-purple-100'
116
118
  }`}
@@ -343,7 +345,7 @@ const ListViewSideBar: React.FC<ListViewSideBarProps> = ({ resources, currentPat
343
345
  const activeElement = document.querySelector('[data-active="true"]');
344
346
  if (activeElement) {
345
347
  // Add y offset to the scroll position
346
- activeElement.scrollIntoView({ behavior: 'smooth', block: 'center' });
348
+ activeElement.scrollIntoView({ behavior: 'instant', block: 'center' });
347
349
  }
348
350
  }, []);
349
351
 
@@ -492,6 +494,7 @@ const ListViewSideBar: React.FC<ListViewSideBarProps> = ({ resources, currentPat
492
494
  <div className={`space-y-0.5 border-gray-200/80 border-l pl-4 ml-[9px] mt-1 ${marginLeft}`}>
493
495
  <a
494
496
  href={`${item.href}`}
497
+ data-active={decodedCurrentPath === item.href}
495
498
  className={`flex items-center px-2 py-1.5 text-xs text-gray-600 hover:bg-purple-100 rounded-md ${
496
499
  decodedCurrentPath === item.href ? 'bg-purple-100 ' : 'hover:bg-purple-100'
497
500
  }`}
@@ -505,6 +508,7 @@ const ListViewSideBar: React.FC<ListViewSideBarProps> = ({ resources, currentPat
505
508
  domainId: item.id,
506
509
  domainName: item.name,
507
510
  })}
511
+ data-active={window.location.href.includes(`domainId=${item.id}`)}
508
512
  className={`flex items-center px-2 py-1.5 text-xs text-gray-600 hover:bg-purple-100 rounded-md ${
509
513
  window.location.href.includes(`domainId=${item.id}`) ? 'bg-purple-100 ' : 'hover:bg-purple-100'
510
514
  }`}
@@ -515,6 +519,7 @@ const ListViewSideBar: React.FC<ListViewSideBarProps> = ({ resources, currentPat
515
519
  {!isVisualizer && (
516
520
  <a
517
521
  href={buildUrl(`/docs/domains/${item.id}/language`)}
522
+ data-active={decodedCurrentPath.includes(`/docs/domains/${item.id}/language`)}
518
523
  className={`flex items-center px-2 py-1.5 text-xs text-gray-600 hover:bg-purple-100 rounded-md ${
519
524
  decodedCurrentPath.includes(`/docs/domains/${item.id}/language`) ? 'bg-purple-100 ' : 'hover:bg-purple-100'
520
525
  }`}
@@ -600,6 +605,7 @@ const ListViewSideBar: React.FC<ListViewSideBarProps> = ({ resources, currentPat
600
605
  <li key={item.href}>
601
606
  <a
602
607
  href={item.href}
608
+ data-active={decodedCurrentPath === item.href}
603
609
  className={`flex items-center justify-between px-2 py-0.5 text-xs font-bold rounded-md ${
604
610
  decodedCurrentPath === item.href ? 'bg-purple-100 text-purple-900' : 'hover:bg-purple-100'
605
611
  }`}
@@ -672,15 +678,17 @@ const ListViewSideBar: React.FC<ListViewSideBarProps> = ({ resources, currentPat
672
678
  <div className="pt-4 pb-2">
673
679
  <ul className="space-y-4">
674
680
  {filteredData['services'].map((item: any) => (
675
- <ServiceItem
676
- key={item.href}
677
- item={item}
678
- decodedCurrentPath={decodedCurrentPath}
679
- collapsedGroups={collapsedGroups}
680
- toggleGroupCollapse={toggleGroupCollapse}
681
- isVisualizer={isVisualizer}
682
- searchTerm={debouncedSearchTerm}
683
- />
681
+ <li key={item.href} data-active={decodedCurrentPath === item.href}>
682
+ <ServiceItem
683
+ key={item.href}
684
+ item={item}
685
+ decodedCurrentPath={decodedCurrentPath}
686
+ collapsedGroups={collapsedGroups}
687
+ toggleGroupCollapse={toggleGroupCollapse}
688
+ isVisualizer={isVisualizer}
689
+ searchTerm={debouncedSearchTerm}
690
+ />
691
+ </li>
684
692
  ))}
685
693
  </ul>
686
694
  </div>
@@ -693,6 +701,7 @@ const ListViewSideBar: React.FC<ListViewSideBarProps> = ({ resources, currentPat
693
701
  <li key={item.href} className="space-y-0" data-active={decodedCurrentPath === item.href}>
694
702
  <a
695
703
  href={item.href}
704
+ data-active={decodedCurrentPath === item.href}
696
705
  className={`flex items-center justify-between px-2 py-0.5 text-xs font-bold rounded-md ${
697
706
  decodedCurrentPath === item.href ? 'bg-purple-100 text-purple-900' : 'hover:bg-purple-100'
698
707
  }`}
@@ -719,6 +728,7 @@ const ListViewSideBar: React.FC<ListViewSideBarProps> = ({ resources, currentPat
719
728
  <li key={item.href} className="space-y-0" data-active={decodedCurrentPath === item.href}>
720
729
  <a
721
730
  href={item.href}
731
+ data-active={decodedCurrentPath === item.href}
722
732
  className={`flex items-center justify-between px-2 py-0.5 text-xs font-bold rounded-md ${
723
733
  decodedCurrentPath === item.href ? 'bg-cyan-100 text-cyan-900' : 'hover:bg-purple-100'
724
734
  }`}
@@ -33,7 +33,6 @@ import { ArrowsRightLeftIcon } from '@heroicons/react/20/solid';
33
33
  import { Box, Boxes } from 'lucide-react';
34
34
  import type { CollectionTypes } from '@types';
35
35
 
36
- import { ClientRouter } from 'astro:transitions';
37
36
  import { render } from 'astro:content';
38
37
  import type { CollectionEntry } from 'astro:content';
39
38
 
@@ -363,7 +362,6 @@ nodeGraphs.push({
363
362
  {props?.collection === 'entities' && <EntitySideBar entity={props} />}
364
363
  </aside>
365
364
  </div>
366
- <ClientRouter />
367
365
  </main>
368
366
 
369
367
  <style is:global>
package/package.json CHANGED
@@ -6,7 +6,7 @@
6
6
  "url": "https://github.com/event-catalog/eventcatalog.git"
7
7
  },
8
8
  "type": "module",
9
- "version": "2.48.0",
9
+ "version": "2.48.2",
10
10
  "publishConfig": {
11
11
  "access": "public"
12
12
  },