@eventcatalog/core 2.19.3 → 2.19.5

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.
@@ -0,0 +1,333 @@
1
+ /* imported from @stoplight/mosaic/themes/default.css */
2
+ /* Don't import directly from node_module as react peer dep issues, we only use the CSS so just import it like this for now */
3
+ :root,
4
+ [data-theme="light"],
5
+ [data-theme="light"] .sl-inverted .sl-inverted,
6
+ [data-theme="light"] .sl-inverted .sl-inverted .sl-inverted .sl-inverted {
7
+ color: var(--color-text);
8
+
9
+ --text-h: 0;
10
+ --text-s: 0%;
11
+ --text-l: 15%;
12
+ --shadow-sm: 0px 0px 1px rgba(67, 90, 111, 0.3);
13
+ --shadow-md: 0px 2px 4px -2px rgba(0, 0, 0, 0.25), 0px 0px 1px rgba(67, 90, 111, 0.3);
14
+ --shadow-lg: 0 4px 17px rgba(67, 90, 111, .2), 0 2px 3px rgba(0, 0, 0, .1), inset 0 0 0 .5px var(--color-canvas-pure), 0 0 0 .5px rgba(0, 0, 0, 0.2);
15
+ --shadow-xl: 0px 0px 1px rgba(67, 90, 111, 0.3), 0px 8px 10px -4px rgba(67, 90, 111, 0.45);
16
+ --shadow-2xl: 0px 0px 1px rgba(67, 90, 111, 0.3), 0px 16px 24px -8px rgba(67, 90, 111, 0.45);
17
+ --drop-shadow-default1: 0 0 0.5px rgba(0, 0, 0, 0.6);
18
+ --drop-shadow-default2: 0 2px 5px rgba(67, 90, 111, 0.3);
19
+ --color-text-heading: hsla(var(--text-h), var(--text-s), max(3, calc(var(--text-l) - 15)), 1);
20
+ --color-text: hsla(var(--text-h), var(--text-s), var(--text-l), 1);
21
+ --color-text-paragraph: hsla(var(--text-h), var(--text-s), var(--text-l), 0.9);
22
+ --color-text-muted: hsla(var(--text-h), var(--text-s), var(--text-l), 0.7);
23
+ --color-text-light: hsla(var(--text-h), var(--text-s), var(--text-l), 0.55);
24
+ --color-text-disabled: hsla(var(--text-h), var(--text-s), var(--text-l), 0.3);
25
+ --canvas-h: 218;
26
+ --canvas-s: 40%;
27
+ --canvas-l: 100%;
28
+ --color-canvas: hsla(var(--canvas-h), var(--canvas-s), var(--canvas-l), 1);
29
+ --color-canvas-dark: hsla(218, 23%, 23%, 1);
30
+ --color-canvas-pure: hsla(218, 40%, 100%, 1);
31
+ --color-canvas-tint: hsla(218, 32%, 97%, 0.5);
32
+ --color-canvas-50: hsla(218, 32%, 97%, 1);
33
+ --color-canvas-100: hsla(218, 33%, 94%, 1);
34
+ --color-canvas-200: hsla(218, 35%, 91%, 1);
35
+ --color-canvas-300: hsla(218, 36%, 88%, 1);
36
+ --color-canvas-400: hsla(218, 37%, 85%, 1);
37
+ --color-canvas-500: hsla(218, 37%, 82%, 1);
38
+ --color-canvas-dialog: hsla(218, 40%, 100%, 1);
39
+ --color-border-dark: hsla(var(--canvas-h), 30%, 72%, 0.5);
40
+ --color-border: hsla(var(--canvas-h), 32%, 78%, 0.5);
41
+ --color-border-light: hsla(var(--canvas-h), 24%, 84%, 0.5);
42
+ --color-border-input: hsla(var(--canvas-h), 24%, 72%, 0.8);
43
+ --color-border-button: hsla(var(--canvas-h), 24%, 20%, 0.65);
44
+ --primary-h: 202;
45
+ --primary-s: 100%;
46
+ --primary-l: 55%;
47
+ --color-text-primary: hsla(202, 100%, 40%, 1);
48
+ --color-primary-dark: hsla(202, 80%, 47%, 1);
49
+ --color-primary-darker: hsla(202, 80%, 36%, 1);
50
+ --color-primary: hsla(202, 100%, 55%, 1);
51
+ --color-primary-light: hsla(202, 100%, 66%, 1);
52
+ --color-primary-tint: hsla(202, 100%, 65%, 0.25);
53
+ --color-on-primary: hsla(202, 100%, 100%, 1);
54
+ --success-h: 156;
55
+ --success-s: 95%;
56
+ --success-l: 37%;
57
+ --color-text-success: hsla(156, 95%, 40%, 1);
58
+ --color-success-dark: hsla(156, 76%, 31%, 1);
59
+ --color-success-darker: hsla(156, 76%, 24%, 1);
60
+ --color-success: hsla(156, 95%, 37%, 1);
61
+ --color-success-light: hsla(156, 95%, 44%, 1);
62
+ --color-success-tint: hsla(156, 95%, 65%, 0.25);
63
+ --color-on-success: hsla(156, 95%, 100%, 1);
64
+ --warning-h: 20;
65
+ --warning-s: 90%;
66
+ --warning-l: 56%;
67
+ --color-text-warning: hsla(20, 90%, 40%, 1);
68
+ --color-warning-dark: hsla(20, 72%, 48%, 1);
69
+ --color-warning-darker: hsla(20, 72%, 36%, 1);
70
+ --color-warning: hsla(20, 90%, 56%, 1);
71
+ --color-warning-light: hsla(20, 90%, 67%, 1);
72
+ --color-warning-tint: hsla(20, 90%, 65%, 0.25);
73
+ --color-on-warning: hsla(20, 90%, 100%, 1);
74
+ --danger-h: 0;
75
+ --danger-s: 84%;
76
+ --danger-l: 63%;
77
+ --color-text-danger: hsla(0, 84%, 40%, 1);
78
+ --color-danger-dark: hsla(0, 67%, 54%, 1);
79
+ --color-danger-darker: hsla(0, 67%, 41%, 1);
80
+ --color-danger: hsla(0, 84%, 63%, 1);
81
+ --color-danger-light: hsla(0, 84%, 76%, 1);
82
+ --color-danger-tint: hsla(0, 84%, 65%, 0.25);
83
+ --color-on-danger: hsla(0, 84%, 100%, 1);
84
+
85
+ }
86
+
87
+ :root .sl-inverted,
88
+ [data-theme="light"] .sl-inverted,
89
+ [data-theme="light"] .sl-inverted .sl-inverted .sl-inverted {
90
+ color: var(--color-text);
91
+
92
+ --text-h: 0;
93
+ --text-s: 0%;
94
+ --text-l: 86%;
95
+ --shadow-sm: 0px 0px 1px rgba(11, 13, 19, 0.5);
96
+ --shadow-md: 0px 2px 4px -2px rgba(0, 0, 0, 0.35), 0px 0px 1px rgba(11, 13, 19, 0.4);
97
+ --shadow-lg: 0 2px 14px rgba(0,0,0,.55), 0 0 0 0.5px rgba(255,255,255,.2);
98
+ --shadow-xl: 0px 0px 1px rgba(11, 13, 19, 0.4), 0px 8px 10px -4px rgba(11, 13, 19, 0.55);
99
+ --shadow-2xl: 0px 0px 1px rgba(11, 13, 19, 0.4), 0px 16px 24px -8px rgba(11, 13, 19, 0.55);
100
+ --drop-shadow-default1: 0 0 0.5px rgba(255, 255, 255, .5);
101
+ --drop-shadow-default2: 0 3px 8px rgba(0, 0, 0, 0.6);
102
+ --color-text-heading: hsla(var(--text-h), var(--text-s), max(3, calc(var(--text-l) - 15)), 1);
103
+ --color-text: hsla(var(--text-h), var(--text-s), var(--text-l), 1);
104
+ --color-text-paragraph: hsla(var(--text-h), var(--text-s), var(--text-l), 0.9);
105
+ --color-text-muted: hsla(var(--text-h), var(--text-s), var(--text-l), 0.7);
106
+ --color-text-light: hsla(var(--text-h), var(--text-s), var(--text-l), 0.55);
107
+ --color-text-disabled: hsla(var(--text-h), var(--text-s), var(--text-l), 0.3);
108
+ --canvas-h: 218;
109
+ --canvas-s: 32%;
110
+ --canvas-l: 10%;
111
+ --color-canvas: hsla(var(--canvas-h), var(--canvas-s), var(--canvas-l), 1);
112
+ --color-canvas-dark: hsla(218, 23%, 23%, 1);
113
+ --color-canvas-pure: hsla(218, 32%, 7%, 1);
114
+ --color-canvas-tint: hsla(218, 26%, 32%, 0.2);
115
+ --color-canvas-50: hsla(218, 26%, 32%, 1);
116
+ --color-canvas-100: hsla(218, 27%, 24%, 1);
117
+ --color-canvas-200: hsla(218, 28%, 18%, 1);
118
+ --color-canvas-300: hsla(218, 29%, 14%, 1);
119
+ --color-canvas-400: hsla(218, 30%, 13%, 1);
120
+ --color-canvas-500: hsla(218, 30%, 12%, 1);
121
+ --color-canvas-dialog: hsla(218, 27%, 24%, 1);
122
+ --color-border-dark: hsla(var(--canvas-h), 24%, 23%, 0.5);
123
+ --color-border: hsla(var(--canvas-h), 26%, 28%, 0.5);
124
+ --color-border-light: hsla(var(--canvas-h), 19%, 34%, 0.5);
125
+ --color-border-input: hsla(var(--canvas-h), 19%, 30%, 0.8);
126
+ --color-border-button: hsla(var(--canvas-h), 19%, 80%, 0.65);
127
+ --primary-h: 202;
128
+ --primary-s: 90%;
129
+ --primary-l: 51%;
130
+ --color-text-primary: hsla(202, 100%, 70%, 1);
131
+ --color-primary-dark: hsla(202, 72%, 43%, 1);
132
+ --color-primary-darker: hsla(202, 72%, 33%, 1);
133
+ --color-primary: hsla(202, 90%, 51%, 1);
134
+ --color-primary-light: hsla(202, 90%, 61%, 1);
135
+ --color-primary-tint: hsla(202, 90%, 65%, 0.25);
136
+ --color-on-primary: hsla(202, 100%, 100%, 1);
137
+ --success-h: 156;
138
+ --success-s: 95%;
139
+ --success-l: 67%;
140
+ --color-text-success: hsla(156, 86%, 60%, 1);
141
+ --color-success-dark: hsla(156, 68%, 57%, 1);
142
+ --color-success-darker: hsla(156, 68%, 44%, 1);
143
+ --color-success: hsla(156, 86%, 67%, 1);
144
+ --color-success-light: hsla(156, 86%, 80%, 1);
145
+ --color-success-tint: hsla(156, 86%, 65%, 0.25);
146
+ --color-on-success: hsla(156, 95%, 100%, 1);
147
+ --warning-h: 20;
148
+ --warning-s: 90%;
149
+ --warning-l: 50%;
150
+ --color-text-warning: hsla(20, 81%, 60%, 1);
151
+ --color-warning-dark: hsla(20, 65%, 43%, 1);
152
+ --color-warning-darker: hsla(20, 65%, 33%, 1);
153
+ --color-warning: hsla(20, 81%, 50%, 1);
154
+ --color-warning-light: hsla(20, 81%, 60%, 1);
155
+ --color-warning-tint: hsla(20, 81%, 65%, 0.25);
156
+ --color-on-warning: hsla(20, 90%, 100%, 1);
157
+ --danger-h: 0;
158
+ --danger-s: 84%;
159
+ --danger-l: 43%;
160
+ --color-text-danger: hsla(0, 76%, 60%, 1);
161
+ --color-danger-dark: hsla(0, 60%, 37%, 1);
162
+ --color-danger-darker: hsla(0, 60%, 28%, 1);
163
+ --color-danger: hsla(0, 76%, 43%, 1);
164
+ --color-danger-light: hsla(0, 76%, 52%, 1);
165
+ --color-danger-tint: hsla(0, 76%, 65%, 0.25);
166
+ --color-on-danger: hsla(0, 84%, 100%, 1);
167
+
168
+ }
169
+ [data-theme="dark"],
170
+ [data-theme="dark"] .sl-inverted .sl-inverted,
171
+ [data-theme="dark"] .sl-inverted .sl-inverted .sl-inverted .sl-inverted {
172
+ color: var(--color-text);
173
+
174
+ --text-h: 0;
175
+ --text-s: 0%;
176
+ --text-l: 85%;
177
+ --shadow-sm: 0px 0px 1px rgba(11, 13, 19, 0.5);
178
+ --shadow-md: 0px 2px 4px -2px rgba(0, 0, 0, 0.35), 0px 0px 1px rgba(11, 13, 19, 0.4);
179
+ --shadow-lg: 0 2px 14px rgba(0,0,0,.55), 0 0 0 0.5px rgba(255,255,255,.2);
180
+ --shadow-xl: 0px 0px 1px rgba(11, 13, 19, 0.4), 0px 8px 10px -4px rgba(11, 13, 19, 0.55);
181
+ --shadow-2xl: 0px 0px 1px rgba(11, 13, 19, 0.4), 0px 16px 24px -8px rgba(11, 13, 19, 0.55);
182
+ --drop-shadow-default1: 0 0 0.5px rgba(255, 255, 255, .5);
183
+ --drop-shadow-default2: 0 3px 8px rgba(0, 0, 0, 0.6);
184
+ --color-text-heading: hsla(var(--text-h), var(--text-s), max(3, calc(var(--text-l) - 15)), 1);
185
+ --color-text: hsla(var(--text-h), var(--text-s), var(--text-l), 1);
186
+ --color-text-paragraph: hsla(var(--text-h), var(--text-s), var(--text-l), 0.9);
187
+ --color-text-muted: hsla(var(--text-h), var(--text-s), var(--text-l), 0.7);
188
+ --color-text-light: hsla(var(--text-h), var(--text-s), var(--text-l), 0.55);
189
+ --color-text-disabled: hsla(var(--text-h), var(--text-s), var(--text-l), 0.3);
190
+ --canvas-h: 218;
191
+ --canvas-s: 32%;
192
+ --canvas-l: 8%;
193
+ --color-canvas: hsla(var(--canvas-h), var(--canvas-s), var(--canvas-l), 1);
194
+ --color-canvas-dark: hsla(218, 23%, 23%, 1);
195
+ --color-canvas-pure: hsla(218, 32%, 5%, 1);
196
+ --color-canvas-tint: hsla(218, 26%, 30%, 0.2);
197
+ --color-canvas-50: hsla(218, 26%, 20%, 1);
198
+ --color-canvas-100: hsla(218, 27%, 14%, 1);
199
+ --color-canvas-200: hsla(218, 28%, 10%, 1);
200
+ --color-canvas-300: hsla(218, 29%, 8%, 1);
201
+ --color-canvas-400: hsla(218, 30%, 7%, 1);
202
+ --color-canvas-500: hsla(218, 30%, 7%, 1);
203
+ --color-canvas-dialog: hsla(218, 27%, 14%, 1);
204
+ --color-border-dark: hsla(var(--canvas-h), 24%, 21%, 0.5);
205
+ --color-border: hsla(var(--canvas-h), 26%, 26%, 0.5);
206
+ --color-border-light: hsla(var(--canvas-h), 19%, 32%, 0.5);
207
+ --color-border-input: hsla(var(--canvas-h), 19%, 28%, 0.8);
208
+ --color-border-button: hsla(var(--canvas-h), 19%, 80%, 0.65);
209
+ --primary-h: 202;
210
+ --primary-s: 80%;
211
+ --primary-l: 36%;
212
+ --color-text-primary: hsla(202, 100%, 70%, 1);
213
+ --color-primary-dark: hsla(202, 64%, 30%, 1);
214
+ --color-primary-darker: hsla(202, 64%, 23%, 1);
215
+ --color-primary: hsla(202, 80%, 36%, 1);
216
+ --color-primary-light: hsla(202, 80%, 43%, 1);
217
+ --color-primary-tint: hsla(202, 80%, 42%, 0.25);
218
+ --color-on-primary: hsla(202, 100%, 100%, 1);
219
+ --success-h: 156;
220
+ --success-s: 95%;
221
+ --success-l: 37%;
222
+ --color-text-success: hsla(156, 76%, 60%, 1);
223
+ --color-success-dark: hsla(156, 61%, 20%, 1);
224
+ --color-success-darker: hsla(156, 61%, 16%, 1);
225
+ --color-success: hsla(156, 76%, 24%, 1);
226
+ --color-success-light: hsla(156, 76%, 29%, 1);
227
+ --color-success-tint: hsla(156, 76%, 42%, 0.25);
228
+ --color-on-success: hsla(156, 95%, 100%, 1);
229
+ --warning-h: 20;
230
+ --warning-s: 90%;
231
+ --warning-l: 56%;
232
+ --color-text-warning: hsla(20, 72%, 60%, 1);
233
+ --color-warning-dark: hsla(20, 58%, 31%, 1);
234
+ --color-warning-darker: hsla(20, 58%, 24%, 1);
235
+ --color-warning: hsla(20, 72%, 36%, 1);
236
+ --color-warning-light: hsla(20, 72%, 44%, 1);
237
+ --color-warning-tint: hsla(20, 72%, 42%, 0.25);
238
+ --color-on-warning: hsla(20, 90%, 100%, 1);
239
+ --danger-h: 0;
240
+ --danger-s: 84%;
241
+ --danger-l: 63%;
242
+ --color-text-danger: hsla(0, 67%, 60%, 1);
243
+ --color-danger-dark: hsla(0, 54%, 35%, 1);
244
+ --color-danger-darker: hsla(0, 54%, 27%, 1);
245
+ --color-danger: hsla(0, 67%, 41%, 1);
246
+ --color-danger-light: hsla(0, 67%, 49%, 1);
247
+ --color-danger-tint: hsla(0, 67%, 42%, 0.25);
248
+ --color-on-danger: hsla(0, 84%, 100%, 1);
249
+
250
+ }
251
+
252
+
253
+ [data-theme="dark"] .sl-inverted,
254
+ [data-theme="dark"] .sl-inverted .sl-inverted .sl-inverted {
255
+ color: var(--color-text);
256
+
257
+ --text-h: 0;
258
+ --text-s: 0%;
259
+ --text-l: 89%;
260
+ --shadow-sm: 0px 0px 1px rgba(11, 13, 19, 0.5);
261
+ --shadow-md: 0px 2px 4px -2px rgba(0, 0, 0, 0.35), 0px 0px 1px rgba(11, 13, 19, 0.4);
262
+ --shadow-lg: 0 2px 14px rgba(0,0,0,.55), 0 0 0 0.5px rgba(255,255,255,.2);
263
+ --shadow-xl: 0px 0px 1px rgba(11, 13, 19, 0.4), 0px 8px 10px -4px rgba(11, 13, 19, 0.55);
264
+ --shadow-2xl: 0px 0px 1px rgba(11, 13, 19, 0.4), 0px 16px 24px -8px rgba(11, 13, 19, 0.55);
265
+ --drop-shadow-default1: 0 0 0.5px rgba(255, 255, 255, .5);
266
+ --drop-shadow-default2: 0 3px 8px rgba(0, 0, 0, 0.6);
267
+ --color-text-heading: hsla(var(--text-h), var(--text-s), max(3, calc(var(--text-l) - 15)), 1);
268
+ --color-text: hsla(var(--text-h), var(--text-s), var(--text-l), 1);
269
+ --color-text-paragraph: hsla(var(--text-h), var(--text-s), var(--text-l), 0.9);
270
+ --color-text-muted: hsla(var(--text-h), var(--text-s), var(--text-l), 0.7);
271
+ --color-text-light: hsla(var(--text-h), var(--text-s), var(--text-l), 0.55);
272
+ --color-text-disabled: hsla(var(--text-h), var(--text-s), var(--text-l), 0.3);
273
+ --canvas-h: 218;
274
+ --canvas-s: 32%;
275
+ --canvas-l: 13%;
276
+ --color-canvas: hsla(var(--canvas-h), var(--canvas-s), var(--canvas-l), 1);
277
+ --color-canvas-dark: hsla(218, 23%, 23%, 1);
278
+ --color-canvas-pure: hsla(218, 32%, 10%, 1);
279
+ --color-canvas-tint: hsla(218, 26%, 35%, 0.2);
280
+ --color-canvas-50: hsla(218, 26%, 23%, 1);
281
+ --color-canvas-100: hsla(218, 27%, 18%, 1);
282
+ --color-canvas-200: hsla(218, 28%, 14%, 1);
283
+ --color-canvas-300: hsla(218, 29%, 11%, 1);
284
+ --color-canvas-400: hsla(218, 30%, 10%, 1);
285
+ --color-canvas-500: hsla(218, 30%, 10%, 1);
286
+ --color-canvas-dialog: hsla(218, 27%, 18%, 1);
287
+ --color-border-dark: hsla(var(--canvas-h), 24%, 26%, 0.5);
288
+ --color-border: hsla(var(--canvas-h), 26%, 31%, 0.5);
289
+ --color-border-light: hsla(var(--canvas-h), 19%, 37%, 0.5);
290
+ --color-border-input: hsla(var(--canvas-h), 19%, 33%, 0.8);
291
+ --color-border-button: hsla(var(--canvas-h), 19%, 80%, 0.65);
292
+ --primary-h: 202;
293
+ --primary-s: 80%;
294
+ --primary-l: 33%;
295
+ --color-text-primary: hsla(202, 100%, 70%, 1);
296
+ --color-primary-dark: hsla(202, 64%, 28%, 1);
297
+ --color-primary-darker: hsla(202, 64%, 22%, 1);
298
+ --color-primary: hsla(202, 80%, 33%, 1);
299
+ --color-primary-light: hsla(202, 80%, 40%, 1);
300
+ --color-primary-tint: hsla(202, 80%, 42%, 0.25);
301
+ --color-on-primary: hsla(202, 100%, 100%, 1);
302
+ --success-h: 156;
303
+ --success-s: 95%;
304
+ --success-l: 67%;
305
+ --color-text-success: hsla(156, 76%, 60%, 1);
306
+ --color-success-dark: hsla(156, 61%, 37%, 1);
307
+ --color-success-darker: hsla(156, 61%, 28%, 1);
308
+ --color-success: hsla(156, 76%, 44%, 1);
309
+ --color-success-light: hsla(156, 76%, 52%, 1);
310
+ --color-success-tint: hsla(156, 76%, 42%, 0.25);
311
+ --color-on-success: hsla(156, 95%, 100%, 1);
312
+ --warning-h: 20;
313
+ --warning-s: 90%;
314
+ --warning-l: 50%;
315
+ --color-text-warning: hsla(20, 72%, 60%, 1);
316
+ --color-warning-dark: hsla(20, 58%, 28%, 1);
317
+ --color-warning-darker: hsla(20, 58%, 21%, 1);
318
+ --color-warning: hsla(20, 72%, 33%, 1);
319
+ --color-warning-light: hsla(20, 72%, 39%, 1);
320
+ --color-warning-tint: hsla(20, 72%, 42%, 0.25);
321
+ --color-on-warning: hsla(20, 90%, 100%, 1);
322
+ --danger-h: 0;
323
+ --danger-s: 84%;
324
+ --danger-l: 43%;
325
+ --color-text-danger: hsla(0, 67%, 60%, 1);
326
+ --color-danger-dark: hsla(0, 54%, 24%, 1);
327
+ --color-danger-darker: hsla(0, 54%, 18%, 1);
328
+ --color-danger: hsla(0, 67%, 28%, 1);
329
+ --color-danger-light: hsla(0, 67%, 34%, 1);
330
+ --color-danger-tint: hsla(0, 67%, 42%, 0.25);
331
+ --color-on-danger: hsla(0, 84%, 100%, 1);
332
+
333
+ }
@@ -15,8 +15,9 @@ import type { CollectionEntry } from 'astro:content';
15
15
  import DebouncedInput from './DebouncedInput';
16
16
 
17
17
  import { getColumnsByCollection } from './columns';
18
- import { useEffect, useMemo, useState } from 'react';
18
+ import { useEffect, useMemo, useState, type EventHandler } from 'react';
19
19
  import type { CollectionTypes } from '@types';
20
+ import { isSameVersion } from '@utils/collections/util';
20
21
 
21
22
  declare module '@tanstack/react-table' {
22
23
  // @ts-ignore
@@ -32,10 +33,12 @@ export const Table = ({
32
33
  data: initialData,
33
34
  collection,
34
35
  mode = 'simple',
36
+ checkboxLatestId,
35
37
  }: {
36
38
  data: CollectionEntry<'events'>[];
37
39
  collection: string;
38
- mode: 'simple' | 'full';
40
+ checkboxLatestId: string;
41
+ mode?: 'simple' | 'full';
39
42
  }) => {
40
43
  const [data, _setData] = useState(initialData);
41
44
  const [columnFilters, setColumnFilters] = useState<ColumnFiltersState>([]);
@@ -48,6 +51,20 @@ export const Table = ({
48
51
  }
49
52
  }, []);
50
53
 
54
+ const [showOnlyLatest, setShowOnlyLatest] = useState(true);
55
+
56
+ useEffect(() => {
57
+ const checkbox = document.getElementById(checkboxLatestId);
58
+
59
+ function handleChange(evt: Event) {
60
+ setShowOnlyLatest((evt.target as HTMLInputElement).checked);
61
+ }
62
+
63
+ checkbox?.addEventListener('change', handleChange);
64
+
65
+ return () => checkbox?.removeEventListener('change', handleChange);
66
+ }, [checkboxLatestId]);
67
+
51
68
  const columns = useMemo(() => getColumnsByCollection(collection), [collection]);
52
69
 
53
70
  const table = useReactTable({
@@ -63,6 +80,15 @@ export const Table = ({
63
80
  getPaginationRowModel: getPaginationRowModel(),
64
81
  state: {
65
82
  columnFilters,
83
+ globalFilter: showOnlyLatest,
84
+ },
85
+ onGlobalFilterChange: setShowOnlyLatest,
86
+ globalFilterFn: (row, _columnId, showOnlyLatest: boolean) => {
87
+ if (showOnlyLatest) {
88
+ return isSameVersion(row.original.data.version, row.original.data.latestVersion);
89
+ }
90
+
91
+ return true;
66
92
  },
67
93
  });
68
94
 
@@ -11,6 +11,7 @@ import { buildUrl } from '@utils/url-builder';
11
11
  import { getQueries } from '@utils/queries';
12
12
  import { MagnifyingGlassIcon } from '@heroicons/react/20/solid';
13
13
  import VerticalSideBarLayout from './VerticalSideBarLayout.astro';
14
+ import Checkbox from '@components/Checkbox.astro';
14
15
 
15
16
  const events = await getEvents();
16
17
  const queries = await getQueries();
@@ -22,6 +23,8 @@ const flows = await getFlows();
22
23
  const { title, subtitle, data, type } = Astro.props;
23
24
  const currentPath = Astro.url.pathname;
24
25
 
26
+ const checkboxLatestId = 'latest-only';
27
+
25
28
  const tabs = [
26
29
  {
27
30
  label: `Events (${events.length})`,
@@ -102,17 +105,19 @@ const tabs = [
102
105
  <!-- Table -->
103
106
  <div class="pb-20 ml-6 md:pr-10">
104
107
  <div>
105
- <div class="sm:flex sm:items-center py-4 pb-4" id="discover-title">
108
+ <div class="sm:flex sm:items-end py-4 pb-4" id="discover-title">
106
109
  <div class="sm:flex-auto space-y-2">
107
110
  <h1 class="text-4xl font-semibold text-gray-900 capitalize">{title}</h1>
108
111
  <p class="text-md text-gray-700">{subtitle}</p>
109
112
  </div>
113
+ <div class="p-4 border border-gray-200 rounded-md">
114
+ <Checkbox id={checkboxLatestId} name={checkboxLatestId} label="Show latest version only" checked />
115
+ </div>
110
116
  </div>
111
117
  <div class="mt-4 flow-root">
112
118
  <div class="-mx-4 -my-2 overflow-x-auto sm:-mx-6 lg:-mx-8">
113
119
  <div class="inline-block min-w-full align-middle sm:px-6 lg:px-8">
114
- <!-- @ts-ignore -->
115
- <Table data={data} collection={type} client:load />
120
+ <Table checkboxLatestId={checkboxLatestId} data={data} collection={type} client:load />
116
121
  </div>
117
122
  </div>
118
123
  </div>
@@ -1,6 +1,6 @@
1
1
  import { readdir, readFile } from 'node:fs/promises';
2
2
  import { dirname, join } from 'node:path';
3
- import { diffLines, type Change } from 'diff';
3
+ import { formatPatch, structuredPatch } from 'diff';
4
4
  import { html, parse } from 'diff2html';
5
5
  import { getItemsFromCollectionByIdAndSemverOrLatest } from './util';
6
6
  import type { CollectionEntry } from 'astro:content';
@@ -16,29 +16,8 @@ const FILE_EXTENSIONS_TO_INCLUDE = ['.json', '.avro', '.yaml', '.yml', '.proto',
16
16
  * @returns A string representing the diff in unified format
17
17
  */
18
18
  function generateDiffString(fileName: string, oldStr: string, newStr: string): string {
19
- const diff = diffLines(oldStr, newStr);
20
-
21
- // Check if there are any changes
22
- const hasChanges = diff.some((part) => part.added || part.removed);
23
-
24
- if (!hasChanges) return '';
25
-
26
- let diffString = `diff --git a/${fileName} b/${fileName}\n`;
27
- diffString += `--- a/${fileName}\n`;
28
- diffString += `+++ b/${fileName}\n`;
29
-
30
- diff.forEach((part: Change) => {
31
- const prefix = part.added ? '+' : part.removed ? '-' : ' ';
32
- const lines = part.value.split('\n');
33
- // Remove the last element if it's an empty string (which happens if the last line ends with a newline)
34
- if (lines[lines.length - 1] === '') lines.pop();
35
-
36
- lines.forEach((line: string) => {
37
- diffString += `${prefix}${line}\n`;
38
- });
39
- });
40
-
41
- return diffString;
19
+ const jsonPatch = structuredPatch(fileName, fileName, oldStr, newStr);
20
+ return jsonPatch.hunks.length == 0 ? '' : formatPatch(jsonPatch);
42
21
  }
43
22
 
44
23
  /**
@@ -1,6 +1,6 @@
1
1
  import type { CollectionTypes } from '@types';
2
2
  import type { CollectionEntry } from 'astro:content';
3
- import { coerce, compare, satisfies as satisfiesRange } from 'semver';
3
+ import { coerce, compare, eq, satisfies as satisfiesRange } from 'semver';
4
4
 
5
5
  export const getPreviousVersion = (version: string, versions: string[]) => {
6
6
  const index = versions.indexOf(version);
@@ -13,6 +13,17 @@ export const getVersions = (data: CollectionEntry<CollectionTypes>[]) => {
13
13
  return sortStringVersions(versions);
14
14
  };
15
15
 
16
+ export function isSameVersion(v1: string | undefined, v2: string | undefined) {
17
+ const semverV1 = coerce(v1);
18
+ const semverV2 = coerce(v2);
19
+
20
+ if (semverV1 != null && semverV2 != null) {
21
+ return eq(semverV1, semverV2);
22
+ }
23
+
24
+ return v1 === v2;
25
+ }
26
+
16
27
  /**
17
28
  * Sorts versioned items. Latest version first.
18
29
  */
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.19.3",
9
+ "version": "2.19.5",
10
10
  "publishConfig": {
11
11
  "access": "public"
12
12
  },
@@ -32,13 +32,12 @@
32
32
  "@heroicons/react": "^2.1.3",
33
33
  "@iconify-json/logos": "^1.2.4",
34
34
  "@parcel/watcher": "^2.4.1",
35
- "@stoplight/json-schema-viewer": "^4.7.0",
36
- "@stoplight/mosaic": "^1.53.2",
35
+ "@stoplight/json-schema-viewer": "^4.16.4",
37
36
  "@tailwindcss/typography": "^0.5.13",
38
37
  "@tanstack/react-table": "^8.17.3",
39
38
  "@xyflow/react": "^12.3.6",
40
39
  "astro": "^5.1.5",
41
- "astro-expressive-code": "^0.38.3",
40
+ "astro-expressive-code": "^0.40.1",
42
41
  "astro-pagefind": "^1.6.0",
43
42
  "astro-seo": "^0.8.4",
44
43
  "axios": "^1.7.7",