@eventcatalog/core 2.55.3 → 2.55.4

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.
@@ -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.55.3";
40
+ var version = "2.55.4";
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-T5TRFXGX.js";
4
- import "../chunk-WYTPPCGQ.js";
3
+ } from "../chunk-DJEUHHVO.js";
4
+ import "../chunk-HCICJ77X.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.55.3";
109
+ var version = "2.55.4";
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-6MWKM7BG.js";
4
- import "../chunk-T5TRFXGX.js";
5
- import "../chunk-WYTPPCGQ.js";
3
+ } from "../chunk-RMB2KQZ5.js";
4
+ import "../chunk-DJEUHHVO.js";
5
+ import "../chunk-HCICJ77X.js";
6
6
  import "../chunk-UPONRQSN.js";
7
7
  export {
8
8
  log_build_default as default
@@ -1,6 +1,6 @@
1
1
  import {
2
2
  VERSION
3
- } from "./chunk-WYTPPCGQ.js";
3
+ } from "./chunk-HCICJ77X.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.55.3";
2
+ var version = "2.55.4";
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-T5TRFXGX.js";
3
+ } from "./chunk-DJEUHHVO.js";
4
4
  import {
5
5
  getEventCatalogConfigFile,
6
6
  verifyRequiredFieldsAreInCatalogConfigFile
@@ -25,7 +25,7 @@ __export(constants_exports, {
25
25
  module.exports = __toCommonJS(constants_exports);
26
26
 
27
27
  // package.json
28
- var version = "2.55.3";
28
+ var version = "2.55.4";
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-WYTPPCGQ.js";
3
+ } from "./chunk-HCICJ77X.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.55.3";
160
+ var version = "2.55.4";
161
161
 
162
162
  // src/constants.ts
163
163
  var VERSION = version;
@@ -6,8 +6,8 @@ import {
6
6
  } from "./chunk-PLNJC7NZ.js";
7
7
  import {
8
8
  log_build_default
9
- } from "./chunk-6MWKM7BG.js";
10
- import "./chunk-T5TRFXGX.js";
9
+ } from "./chunk-RMB2KQZ5.js";
10
+ import "./chunk-DJEUHHVO.js";
11
11
  import {
12
12
  catalogToAstro,
13
13
  checkAndConvertMdToMdx
@@ -15,7 +15,7 @@ import {
15
15
  import "./chunk-55D645EH.js";
16
16
  import {
17
17
  VERSION
18
- } from "./chunk-WYTPPCGQ.js";
18
+ } from "./chunk-HCICJ77X.js";
19
19
  import {
20
20
  getProjectOutDir,
21
21
  isAuthEnabled,
@@ -1,5 +1,5 @@
1
- import { useState, useMemo } from 'react';
2
- import { ServerIcon, EnvelopeIcon, RectangleGroupIcon } from '@heroicons/react/24/outline';
1
+ import { useState, useMemo, useEffect } from 'react';
2
+ import { ServerIcon, EnvelopeIcon, RectangleGroupIcon, Squares2X2Icon, QueueListIcon } from '@heroicons/react/24/outline';
3
3
  import { buildUrlWithParams } from '@utils/url-builder';
4
4
  import type { CollectionEntry } from 'astro:content';
5
5
  import { type CollectionMessageTypes } from '@types';
@@ -21,6 +21,24 @@ interface DomainGridProps {
21
21
 
22
22
  export default function DomainGrid({ domains, embeded }: DomainGridProps) {
23
23
  const [searchQuery, setSearchQuery] = useState('');
24
+ const [isMultiColumn, setIsMultiColumn] = useState(false);
25
+
26
+ useEffect(() => {
27
+ if (typeof window !== 'undefined') {
28
+ const saved = localStorage.getItem('EventCatalog:ArchitectureColumnLayout');
29
+ if (saved !== null) {
30
+ setIsMultiColumn(saved === 'multi');
31
+ }
32
+ }
33
+ }, []);
34
+
35
+ const toggleColumnLayout = () => {
36
+ const newValue = !isMultiColumn;
37
+ setIsMultiColumn(newValue);
38
+ if (typeof window !== 'undefined') {
39
+ localStorage.setItem('EventCatalog:ArchitectureColumnLayout', newValue ? 'multi' : 'single');
40
+ }
41
+ };
24
42
 
25
43
  const filteredDomains = useMemo(() => {
26
44
  let result = [...domains];
@@ -63,7 +81,7 @@ export default function DomainGrid({ domains, embeded }: DomainGridProps) {
63
81
  <p className="mt-2 text-sm text-gray-500">Browse and manage domains in your event-driven architecture</p>
64
82
  </div>
65
83
 
66
- <div className="mt-6 md:mt-0 md:ml-4 flex-shrink-0">
84
+ <div className="mt-6 md:mt-0 md:ml-4 flex-shrink-0 flex items-center gap-3">
67
85
  <SearchBar
68
86
  searchQuery={searchQuery}
69
87
  onSearchChange={setSearchQuery}
@@ -71,11 +89,22 @@ export default function DomainGrid({ domains, embeded }: DomainGridProps) {
71
89
  totalResults={filteredDomains.length}
72
90
  totalItems={domains.length}
73
91
  />
92
+ <button
93
+ onClick={toggleColumnLayout}
94
+ className="flex items-center justify-center p-2 bg-white border border-gray-300 rounded-md hover:bg-gray-50 transition-colors duration-200"
95
+ title={isMultiColumn ? 'Switch to single column' : 'Switch to multi column'}
96
+ >
97
+ {isMultiColumn ? (
98
+ <QueueListIcon className="h-5 w-5 text-gray-600" />
99
+ ) : (
100
+ <Squares2X2Icon className="h-5 w-5 text-gray-600" />
101
+ )}
102
+ </button>
74
103
  </div>
75
104
  </div>
76
105
  </div>
77
106
 
78
- <div className="grid grid-cols-1 sm:grid-cols-2 lg:grid-cols-2 xl:grid-cols-2 gap-6">
107
+ <div className={`grid gap-6 ${isMultiColumn ? 'grid-cols-1 sm:grid-cols-2 lg:grid-cols-2 xl:grid-cols-2' : 'grid-cols-1'}`}>
79
108
  {filteredDomains.map((domain) => (
80
109
  <a
81
110
  key={domain.data.id}
@@ -1,5 +1,5 @@
1
1
  import { useState, useMemo, useEffect, memo } from 'react';
2
- import { ServerIcon, ChevronRightIcon } from '@heroicons/react/24/outline';
2
+ import { ServerIcon, ChevronRightIcon, Squares2X2Icon, QueueListIcon } from '@heroicons/react/24/outline';
3
3
  import { RectangleGroupIcon } from '@heroicons/react/24/outline';
4
4
  import { buildUrl, buildUrlWithParams } from '@utils/url-builder';
5
5
  import type { CollectionEntry } from 'astro:content';
@@ -117,7 +117,19 @@ const ServiceCard = memo(({ service, urlParams, selectedTypes }: { service: any;
117
117
 
118
118
  // Domain Section component
119
119
  const DomainSection = memo(
120
- ({ domain, services, urlParams, selectedTypes }: { domain: any; services: any[]; urlParams: any; selectedTypes: string[] }) => {
120
+ ({
121
+ domain,
122
+ services,
123
+ urlParams,
124
+ selectedTypes,
125
+ isMultiColumn,
126
+ }: {
127
+ domain: any;
128
+ services: any[];
129
+ urlParams: any;
130
+ selectedTypes: string[];
131
+ isMultiColumn: boolean;
132
+ }) => {
121
133
  const subdomains = domain.data.domains || [];
122
134
  const allSubDomainServices = subdomains.map((subdomain: any) => subdomain.data.services || []).flat();
123
135
 
@@ -128,7 +140,9 @@ const DomainSection = memo(
128
140
  return (
129
141
  <div className="space-y-6">
130
142
  {servicesWithoutSubdomains.length > 0 && (
131
- <div className="grid grid-cols-1 sm:grid-cols-1 lg:grid-cols-1 xl:grid-cols-1 gap-6">
143
+ <div
144
+ className={`grid gap-6 ${isMultiColumn ? 'grid-cols-1 sm:grid-cols-2 lg:grid-cols-2 xl:grid-cols-2' : 'grid-cols-1'}`}
145
+ >
132
146
  {servicesWithoutSubdomains.map((service) => (
133
147
  <ServiceCard key={service.data.id} service={service} urlParams={urlParams} selectedTypes={selectedTypes} />
134
148
  ))}
@@ -186,7 +200,9 @@ const DomainSection = memo(
186
200
  </div>
187
201
  )}
188
202
 
189
- <div className="grid grid-cols-1 sm:grid-cols-1 lg:grid-cols-1 xl:grid-cols-1 gap-6">
203
+ <div
204
+ className={`grid gap-6 ${isMultiColumn ? 'grid-cols-1 sm:grid-cols-2 lg:grid-cols-2 xl:grid-cols-2' : 'grid-cols-1'}`}
205
+ >
190
206
  {subdomainServices.map((service) => (
191
207
  <ServiceCard
192
208
  key={service.data.id}
@@ -219,6 +235,7 @@ export default function ServiceGrid({ services, domains, embeded }: ServiceGridP
219
235
  const [searchQuery, setSearchQuery] = useState('');
220
236
  const [currentPage, setCurrentPage] = useState(1);
221
237
  const [selectedTypes, setSelectedTypes] = useState<CollectionMessageTypes[]>([]);
238
+ const [isMultiColumn, setIsMultiColumn] = useState(false);
222
239
  const ITEMS_PER_PAGE = 16;
223
240
  const [urlParams, setUrlParams] = useState<{
224
241
  serviceIds?: string[];
@@ -237,6 +254,23 @@ export default function ServiceGrid({ services, domains, embeded }: ServiceGridP
237
254
  });
238
255
  }, []);
239
256
 
257
+ useEffect(() => {
258
+ if (typeof window !== 'undefined') {
259
+ const saved = localStorage.getItem('EventCatalog:ServiceColumnLayout');
260
+ if (saved !== null) {
261
+ setIsMultiColumn(saved === 'multi');
262
+ }
263
+ }
264
+ }, []);
265
+
266
+ const toggleColumnLayout = () => {
267
+ const newValue = !isMultiColumn;
268
+ setIsMultiColumn(newValue);
269
+ if (typeof window !== 'undefined') {
270
+ localStorage.setItem('EventCatalog:ServiceColumnLayout', newValue ? 'multi' : 'single');
271
+ }
272
+ };
273
+
240
274
  const filteredAndSortedServices = useMemo(() => {
241
275
  if (urlParams === null) return [];
242
276
 
@@ -325,7 +359,7 @@ export default function ServiceGrid({ services, domains, embeded }: ServiceGridP
325
359
  </p>
326
360
  </div>
327
361
 
328
- <div className="mt-6 md:mt-0 md:ml-4 flex-shrink-0">
362
+ <div className="mt-6 md:mt-0 md:ml-4 flex-shrink-0 flex items-center gap-3">
329
363
  <SearchBar
330
364
  searchQuery={searchQuery}
331
365
  onSearchChange={setSearchQuery}
@@ -333,6 +367,17 @@ export default function ServiceGrid({ services, domains, embeded }: ServiceGridP
333
367
  totalResults={filteredAndSortedServices.length}
334
368
  totalItems={services.length}
335
369
  />
370
+ <button
371
+ onClick={toggleColumnLayout}
372
+ className="flex items-center justify-center p-2 bg-white border border-gray-300 rounded-md hover:bg-gray-50 transition-colors duration-200"
373
+ title={isMultiColumn ? 'Switch to single column' : 'Switch to multi column'}
374
+ >
375
+ {isMultiColumn ? (
376
+ <QueueListIcon className="h-5 w-5 text-gray-600" />
377
+ ) : (
378
+ <Squares2X2Icon className="h-5 w-5 text-gray-600" />
379
+ )}
380
+ </button>
336
381
  </div>
337
382
  </div>
338
383
  </div>
@@ -383,10 +428,13 @@ export default function ServiceGrid({ services, domains, embeded }: ServiceGridP
383
428
  services={paginatedServices}
384
429
  urlParams={urlParams}
385
430
  selectedTypes={selectedTypes}
431
+ isMultiColumn={isMultiColumn}
386
432
  />
387
433
  ))
388
434
  ) : (
389
- <div className={`grid grid-cols-1 sm:grid-cols-1 lg:grid-cols-1 xl:grid-cols-1 gap-6`}>
435
+ <div
436
+ className={`grid gap-6 ${isMultiColumn ? 'grid-cols-1 sm:grid-cols-2 lg:grid-cols-2 xl:grid-cols-2' : 'grid-cols-1'}`}
437
+ >
390
438
  {paginatedServices.map((service) => (
391
439
  <ServiceCard key={service.data.id} service={service} urlParams={urlParams} selectedTypes={selectedTypes} />
392
440
  ))}
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.55.3",
9
+ "version": "2.55.4",
10
10
  "publishConfig": {
11
11
  "access": "public"
12
12
  },