@scm-manager/ui-extensions 4.0.0-REACT18-20250701-125025 → 4.0.0-REACT19

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.
package/build/index.d.ts CHANGED
@@ -1,20 +1,20 @@
1
1
  import * as React from 'react';
2
- import React__default, { PropsWithChildren, JSXElementConstructor, ComponentProps, ReactNode, ComponentType } from 'react';
2
+ import React__default, { PropsWithChildren, JSX, JSXElementConstructor, ComponentProps, ReactElement, ReactNode, ComponentType } from 'react';
3
3
  import { NamespaceStrategies, RepositoryTypeCollection, IndexResources, Repository, Branch, File, Links, Changeset, Group, Me, Plugin, RepositoryRole, HalRepresentation, RepositoryRoleBase, User, Person, Namespace, Tag, Hit, ContentType, RepositoryCreation, BranchDetails } from '@scm-manager/ui-types';
4
4
 
5
- declare type Predicate<P extends Record<any, any> = Record<any, any>> = (props: P) => unknown;
6
- declare type ExtensionRegistration<P extends Record<any, any>, T> = {
5
+ type Predicate<P extends Record<any, any> = Record<any, any>> = (props: P) => unknown;
6
+ type ExtensionRegistration<P extends Record<any, any>, T> = {
7
7
  predicate: Predicate<P>;
8
8
  extension: T;
9
9
  extensionName: string;
10
10
  priority: number;
11
11
  };
12
- declare type ExtensionPointDefinition<N extends string, T, P = undefined> = {
12
+ type ExtensionPointDefinition<N extends string, T, P = undefined> = {
13
13
  name: N;
14
14
  type: T;
15
15
  props: P;
16
16
  };
17
- declare type BindOptions<Props extends Record<any, any>> = {
17
+ type BindOptions<Props extends Record<any, any>> = {
18
18
  predicate?: Predicate<Props>;
19
19
  /**
20
20
  * Extensions are ordered by name (ASC).
@@ -118,14 +118,14 @@ declare const BinderContext: React.Context<Binder>;
118
118
  */
119
119
  declare const useBinder: () => Binder;
120
120
 
121
- declare type Renderable<P> = React__default.ReactElement | React__default.ComponentType<P>;
122
- declare type RenderableExtensionPointDefinition<Name extends string = string, P = undefined> = ExtensionPointDefinition<Name, Renderable<P>, P>;
123
- declare type SimpleRenderableDynamicExtensionPointDefinition<Prefix extends string, Suffix extends string | undefined, Properties> = RenderableExtensionPointDefinition<Suffix extends string ? `${Prefix}${Suffix}` : `${Prefix}${string}`, Properties>;
121
+ type Renderable<P> = React__default.ReactElement | React__default.ComponentType<P>;
122
+ type RenderableExtensionPointDefinition<Name extends string = string, P = undefined> = ExtensionPointDefinition<Name, Renderable<P>, P>;
123
+ type SimpleRenderableDynamicExtensionPointDefinition<Prefix extends string, Suffix extends string | undefined, Properties> = RenderableExtensionPointDefinition<Suffix extends string ? `${Prefix}${Suffix}` : `${Prefix}${string}`, Properties>;
124
124
  /**
125
125
  * @deprecated Obsolete type
126
126
  */
127
- declare type PropTransformer = (props: object) => object;
128
- declare type BaseProps<E extends RenderableExtensionPointDefinition> = {
127
+ type PropTransformer = (props: object) => object;
128
+ type BaseProps<E extends RenderableExtensionPointDefinition> = {
129
129
  name: E["name"];
130
130
  renderAll?: boolean;
131
131
  /**
@@ -134,7 +134,7 @@ declare type BaseProps<E extends RenderableExtensionPointDefinition> = {
134
134
  propTransformer?: PropTransformer;
135
135
  wrapper?: boolean;
136
136
  };
137
- declare type Props<E extends RenderableExtensionPointDefinition> = BaseProps<E> & (E["props"] extends undefined ? {
137
+ type Props<E extends RenderableExtensionPointDefinition> = BaseProps<E> & (E["props"] extends undefined ? {
138
138
  props?: E["props"];
139
139
  } : {
140
140
  props: E["props"];
@@ -147,20 +147,30 @@ declare function ExtensionPoint<E extends RenderableExtensionPointDefinition<str
147
147
  /**
148
148
  * @deprecated Use {@link ComponentProps} directly instead
149
149
  */
150
- declare type ExtractProps<T extends keyof JSX.IntrinsicElements | JSXElementConstructor<any>> = ComponentProps<T>;
150
+ type ExtractProps<T extends keyof JSX.IntrinsicElements | JSXElementConstructor<any>> = ComponentProps<T>;
151
151
 
152
- declare type RepositoryCreatorSubFormProps = {
152
+ type RouteExtensionPointDefinition<Name extends string, P> = ExtensionPointDefinition<Name, (props: P) => ReactElement | ReactElement[] | null, P>;
153
+ interface UseRouteExtensionsProps<E extends RouteExtensionPointDefinition<string, any>> {
154
+ name: E["name"];
155
+ props: E["props"];
156
+ }
157
+ /**
158
+ * TODO: refactor?
159
+ */
160
+ declare function useRouteExtensions<E extends RouteExtensionPointDefinition<string, any>>({ name, props, }: UseRouteExtensionsProps<E>): React__default.ReactElement<unknown, string | React__default.JSXElementConstructor<any>>[];
161
+
162
+ type RepositoryCreatorSubFormProps = {
153
163
  repository: RepositoryCreation;
154
164
  onChange: (repository: RepositoryCreation) => void;
155
165
  setValid: (valid: boolean) => void;
156
166
  disabled?: boolean;
157
167
  };
158
- declare type RepositoryCreatorComponentProps = ComponentProps<RepositoryCreator["type"]["component"]>;
168
+ type RepositoryCreatorComponentProps = ComponentProps<RepositoryCreator["type"]["component"]>;
159
169
  /**
160
170
  * @deprecated use {@link RepositoryCreator}`["type"]` instead
161
171
  */
162
- declare type RepositoryCreatorExtension = RepositoryCreator["type"];
163
- declare type RepositoryCreator = ExtensionPointDefinition<"repos.creator", {
172
+ type RepositoryCreatorExtension = RepositoryCreator["type"];
173
+ type RepositoryCreator = ExtensionPointDefinition<"repos.creator", {
164
174
  subtitle: string;
165
175
  path: string;
166
176
  icon: string;
@@ -173,19 +183,19 @@ declare type RepositoryCreator = ExtensionPointDefinition<"repos.creator", {
173
183
  informationForm: React__default.ComponentType<RepositoryCreatorSubFormProps>;
174
184
  }>;
175
185
  }>;
176
- declare type RepositoryFlags = RenderableExtensionPointDefinition<"repository.flags", {
186
+ type RepositoryFlags = RenderableExtensionPointDefinition<"repository.flags", {
177
187
  repository: Repository;
178
188
  tooltipLocation?: "bottom" | "right" | "top" | "left";
179
189
  }>;
180
190
  /**
181
191
  * @deprecated use {@link ReposSourcesActionbar}`["props"]` instead
182
192
  */
183
- declare type ReposSourcesActionbarExtensionProps = ReposSourcesActionbar["props"];
193
+ type ReposSourcesActionbarExtensionProps = ReposSourcesActionbar["props"];
184
194
  /**
185
195
  * @deprecated use {@link ReposSourcesActionbar} instead
186
196
  */
187
- declare type ReposSourcesActionbarExtension = ReposSourcesActionbar;
188
- declare type ReposSourcesActionbar = RenderableExtensionPointDefinition<"repos.sources.actionbar", {
197
+ type ReposSourcesActionbarExtension = ReposSourcesActionbar;
198
+ type ReposSourcesActionbar = RenderableExtensionPointDefinition<"repos.sources.actionbar", {
189
199
  baseUrl: string;
190
200
  revision: string;
191
201
  branch: Branch | undefined;
@@ -196,52 +206,52 @@ declare type ReposSourcesActionbar = RenderableExtensionPointDefinition<"repos.s
196
206
  /**
197
207
  * @deprecated use {@link ReposSourcesEmptyActionbar}`["props"]` instead
198
208
  */
199
- declare type ReposSourcesEmptyActionbarExtensionProps = ReposSourcesEmptyActionbar["props"];
209
+ type ReposSourcesEmptyActionbarExtensionProps = ReposSourcesEmptyActionbar["props"];
200
210
  /**
201
211
  * @deprecated use {@link ReposSourcesEmptyActionbar} instead
202
212
  */
203
- declare type ReposSourcesEmptyActionbarExtension = ReposSourcesEmptyActionbar;
204
- declare type ReposSourcesEmptyActionbar = RenderableExtensionPointDefinition<"repos.sources.empty.actionbar", {
213
+ type ReposSourcesEmptyActionbarExtension = ReposSourcesEmptyActionbar;
214
+ type ReposSourcesEmptyActionbar = RenderableExtensionPointDefinition<"repos.sources.empty.actionbar", {
205
215
  sources: File;
206
216
  repository: Repository;
207
217
  }>;
208
218
  /**
209
219
  * @deprecated use {@link ReposSourcesTreeWrapper}`["props"]` instead
210
220
  */
211
- declare type ReposSourcesTreeWrapperProps = ReposSourcesTreeWrapper["props"];
221
+ type ReposSourcesTreeWrapperProps = ReposSourcesTreeWrapper["props"];
212
222
  /**
213
223
  * @deprecated use {@link ReposSourcesTreeWrapper} instead
214
224
  */
215
- declare type ReposSourcesTreeWrapperExtension = ReposSourcesTreeWrapper;
216
- declare type ReposSourcesTreeWrapper = RenderableExtensionPointDefinition<"repos.source.tree.wrapper", {
225
+ type ReposSourcesTreeWrapperExtension = ReposSourcesTreeWrapper;
226
+ type ReposSourcesTreeWrapper = RenderableExtensionPointDefinition<"repos.source.tree.wrapper", {
217
227
  repository: Repository;
218
228
  directory: File;
219
229
  baseUrl: string;
220
230
  revision: string;
221
231
  }>;
222
- declare type ReposSourcesTreeRowProps = {
232
+ type ReposSourcesTreeRowProps = {
223
233
  repository: Repository;
224
234
  file: File;
225
235
  };
226
236
  /**
227
237
  * @deprecated use {@link ReposSourcesTreeRowRight} instead
228
238
  */
229
- declare type ReposSourcesTreeRowRightExtension = ReposSourcesTreeRowRight;
230
- declare type ReposSourcesTreeRowRight = RenderableExtensionPointDefinition<"repos.sources.tree.row.right", ReposSourcesTreeRowProps>;
239
+ type ReposSourcesTreeRowRightExtension = ReposSourcesTreeRowRight;
240
+ type ReposSourcesTreeRowRight = RenderableExtensionPointDefinition<"repos.sources.tree.row.right", ReposSourcesTreeRowProps>;
231
241
  /**
232
242
  * @deprecated use {@link ReposSourcesTreeRowAfter} instead
233
243
  */
234
- declare type ReposSourcesTreeRowAfterExtension = ReposSourcesTreeRowAfter;
235
- declare type ReposSourcesTreeRowAfter = RenderableExtensionPointDefinition<"repos.sources.tree.row.after", ReposSourcesTreeRowProps>;
244
+ type ReposSourcesTreeRowAfterExtension = ReposSourcesTreeRowAfter;
245
+ type ReposSourcesTreeRowAfter = RenderableExtensionPointDefinition<"repos.sources.tree.row.after", ReposSourcesTreeRowProps>;
236
246
  /**
237
247
  * @deprecated use {@link PrimaryNavigationLoginButton}`["props"]` instead
238
248
  */
239
- declare type PrimaryNavigationLoginButtonProps = PrimaryNavigationLoginButton["props"];
249
+ type PrimaryNavigationLoginButtonProps = PrimaryNavigationLoginButton["props"];
240
250
  /**
241
251
  * use {@link PrimaryNavigationLoginButton} instead
242
252
  */
243
- declare type PrimaryNavigationLoginButtonExtension = PrimaryNavigationLoginButton;
244
- declare type PrimaryNavigationLoginButton = RenderableExtensionPointDefinition<"primary-navigation.login", {
253
+ type PrimaryNavigationLoginButtonExtension = PrimaryNavigationLoginButton;
254
+ type PrimaryNavigationLoginButton = RenderableExtensionPointDefinition<"primary-navigation.login", {
245
255
  links: Links;
246
256
  label: string;
247
257
  loginUrl: string;
@@ -253,12 +263,12 @@ declare type PrimaryNavigationLoginButton = RenderableExtensionPointDefinition<"
253
263
  /**
254
264
  * @deprecated use {@link PrimaryNavigationLogoutButtonExtension}`["props"]` instead
255
265
  */
256
- declare type PrimaryNavigationLogoutButtonProps = PrimaryNavigationLogoutButton["props"];
266
+ type PrimaryNavigationLogoutButtonProps = PrimaryNavigationLogoutButton["props"];
257
267
  /**
258
268
  * @deprecated use {@link PrimaryNavigationLogoutButton} instead
259
269
  */
260
- declare type PrimaryNavigationLogoutButtonExtension = PrimaryNavigationLogoutButton;
261
- declare type PrimaryNavigationLogoutButton = RenderableExtensionPointDefinition<"primary-navigation.logout", {
270
+ type PrimaryNavigationLogoutButtonExtension = PrimaryNavigationLogoutButton;
271
+ type PrimaryNavigationLogoutButton = RenderableExtensionPointDefinition<"primary-navigation.logout", {
262
272
  links: Links;
263
273
  label: string;
264
274
  className: string;
@@ -267,8 +277,8 @@ declare type PrimaryNavigationLogoutButton = RenderableExtensionPointDefinition<
267
277
  /**
268
278
  * @deprecated use {@link SourceExtension}`["props"]` instead
269
279
  */
270
- declare type SourceExtensionProps = SourceExtension["props"];
271
- declare type SourceExtension = RenderableExtensionPointDefinition<"repos.sources.extensions", {
280
+ type SourceExtensionProps = SourceExtension["props"];
281
+ type SourceExtension = RenderableExtensionPointDefinition<"repos.sources.extensions", {
272
282
  repository: Repository;
273
283
  baseUrl: string;
274
284
  revision: string;
@@ -279,12 +289,12 @@ declare type SourceExtension = RenderableExtensionPointDefinition<"repos.sources
279
289
  /**
280
290
  * @deprecated use {@link RepositoryOverviewTop}`["props"]` instead
281
291
  */
282
- declare type RepositoryOverviewTopExtensionProps = RepositoryOverviewTop["props"];
292
+ type RepositoryOverviewTopExtensionProps = RepositoryOverviewTop["props"];
283
293
  /**
284
294
  * @deprecated use {@link RepositoryOverviewTop} instead
285
295
  */
286
- declare type RepositoryOverviewTopExtension = RepositoryOverviewTop;
287
- declare type RepositoryOverviewTop = RenderableExtensionPointDefinition<"repository.overview.top", {
296
+ type RepositoryOverviewTopExtension = RepositoryOverviewTop;
297
+ type RepositoryOverviewTop = RenderableExtensionPointDefinition<"repository.overview.top", {
288
298
  page: number;
289
299
  search?: string;
290
300
  namespace?: string;
@@ -292,46 +302,43 @@ declare type RepositoryOverviewTop = RenderableExtensionPointDefinition<"reposit
292
302
  /**
293
303
  * @deprecated use {@link RepositoryOverviewLeft} instead
294
304
  */
295
- declare type RepositoryOverviewLeftExtension = RepositoryOverviewLeft;
296
- declare type RepositoryOverviewLeft = ExtensionPointDefinition<"repository.overview.left", React__default.ComponentType>;
305
+ type RepositoryOverviewLeftExtension = RepositoryOverviewLeft;
306
+ type RepositoryOverviewLeft = ExtensionPointDefinition<"repository.overview.left", React__default.ComponentType>;
297
307
  /**
298
308
  * @deprecated use {@link RepositoryOverviewTitle} instead
299
309
  */
300
- declare type RepositoryOverviewTitleExtension = RepositoryOverviewTitle;
301
- declare type RepositoryOverviewTitle = RenderableExtensionPointDefinition<"repository.overview.title">;
310
+ type RepositoryOverviewTitleExtension = RepositoryOverviewTitle;
311
+ type RepositoryOverviewTitle = RenderableExtensionPointDefinition<"repository.overview.title">;
302
312
  /**
303
313
  * @deprecated use {@link RepositoryOverviewSubtitle} instead
304
314
  */
305
- declare type RepositoryOverviewSubtitleExtension = RepositoryOverviewSubtitle;
306
- declare type RepositoryOverviewSubtitle = RenderableExtensionPointDefinition<"repository.overview.subtitle">;
315
+ type RepositoryOverviewSubtitleExtension = RepositoryOverviewSubtitle;
316
+ type RepositoryOverviewSubtitle = RenderableExtensionPointDefinition<"repository.overview.subtitle">;
307
317
  /**
308
318
  * Specify options for the repository overview like the page size
309
319
  */
310
- declare type RepositoryOverviewListOptionsExtensionPoint = ExtensionPointDefinition<"repository.overview.listOptions", () => {
320
+ type RepositoryOverviewListOptionsExtensionPoint = ExtensionPointDefinition<"repository.overview.listOptions", () => {
311
321
  pageSize?: number;
312
322
  showArchived?: boolean;
313
323
  }>;
314
- declare type DocumentTitleExtensionPoint = ExtensionPointDefinition<"document.title", {
324
+ type DocumentTitleExtensionPoint = ExtensionPointDefinition<"document.title", {
315
325
  documentTitle: string | ((originalTitle: string) => string);
316
326
  }>;
317
- declare type AdminNavigation = RenderableExtensionPointDefinition<"admin.navigation", {
327
+ type AdminNavigation = RenderableExtensionPointDefinition<"admin.navigation", {
318
328
  links: Links;
319
- url: string;
320
329
  }>;
321
- declare type AdminRoute = RenderableExtensionPointDefinition<"admin.route", {
330
+ type AdminRoute = RouteExtensionPointDefinition<"admin.route", {
322
331
  links: Links;
323
- url: string;
324
332
  }>;
325
- declare type AdminSetting = RenderableExtensionPointDefinition<"admin.setting", {
333
+ type AdminSetting = RenderableExtensionPointDefinition<"admin.setting", {
326
334
  links: Links;
327
- url: string;
328
335
  }>;
329
336
  /**
330
337
  * - can be used to replace the whole description of a changeset
331
338
  *
332
339
  * @deprecated Use `changeset.description.tokens` instead
333
340
  */
334
- declare type ChangesetDescription = RenderableExtensionPointDefinition<"changeset.description", {
341
+ type ChangesetDescription = RenderableExtensionPointDefinition<"changeset.description", {
335
342
  changeset: Changeset;
336
343
  value: string;
337
344
  }>;
@@ -342,7 +349,7 @@ declare type ChangesetDescription = RenderableExtensionPointDefinition<"changese
342
349
  * - replacement: The component to take instead of the text to replace
343
350
  * - replaceAll: Optional boolean; if set to `true`, all occurances of the text will be replaced (default: `false`)
344
351
  */
345
- declare type ChangesetDescriptionTokens = ExtensionPointDefinition<"changeset.description.tokens", (changeset: Changeset, value: string) => Array<{
352
+ type ChangesetDescriptionTokens = ExtensionPointDefinition<"changeset.description.tokens", (changeset: Changeset, value: string) => Array<{
346
353
  textToReplace: string;
347
354
  replacement: ReactNode;
348
355
  replaceAll?: boolean;
@@ -350,40 +357,37 @@ declare type ChangesetDescriptionTokens = ExtensionPointDefinition<"changeset.de
350
357
  changeset: Changeset;
351
358
  value: string;
352
359
  }>;
353
- declare type ChangesetRight = RenderableExtensionPointDefinition<"changeset.right", {
360
+ type ChangesetRight = RenderableExtensionPointDefinition<"changeset.right", {
354
361
  repository: Repository;
355
362
  changeset: Changeset;
356
363
  }>;
357
- declare type ChangesetsAuthorSuffix = RenderableExtensionPointDefinition<"changesets.author.suffix", {
364
+ type ChangesetsAuthorSuffix = RenderableExtensionPointDefinition<"changesets.author.suffix", {
358
365
  changeset: Changeset;
359
366
  }>;
360
- declare type ChangesetsContributorTableRow = RenderableExtensionPointDefinition<"changesets.contributor.table.row", {
367
+ type ChangesetsContributorTableRow = RenderableExtensionPointDefinition<"changesets.contributor.table.row", {
361
368
  changeset: Changeset;
362
369
  }>;
363
- declare type GroupNavigation = RenderableExtensionPointDefinition<"group.navigation", {
370
+ type GroupNavigation = RenderableExtensionPointDefinition<"group.navigation", {
364
371
  group: Group;
365
- url: string;
366
372
  }>;
367
- declare type GroupRoute = RenderableExtensionPointDefinition<"group.route", {
368
- group: Group;
369
- url: string;
373
+ type GroupRoute = RouteExtensionPointDefinition<"group.route", {
374
+ group?: Group;
370
375
  }>;
371
- declare type GroupSetting = RenderableExtensionPointDefinition<"group.setting", {
372
- group: Group;
373
- url: string;
376
+ type GroupSetting = RenderableExtensionPointDefinition<"group.setting", {
377
+ group?: Group;
374
378
  }>;
375
379
  /**
376
380
  * - Add a new Route to the main Route (scm/)
377
381
  * - Props: authenticated?: boolean, links: Links
378
382
  */
379
- declare type MainRoute = RenderableExtensionPointDefinition<"main.route", {
383
+ type MainRoute = RouteExtensionPointDefinition<"main.route", {
380
384
  me: Me;
381
385
  authenticated?: boolean;
382
386
  }>;
383
- declare type PluginAvatar = RenderableExtensionPointDefinition<"plugins.plugin-avatar", {
387
+ type PluginAvatar = RenderableExtensionPointDefinition<"plugins.plugin-avatar", {
384
388
  plugin: Plugin;
385
389
  }>;
386
- declare type PrimaryNavigation = RenderableExtensionPointDefinition<"primary-navigation", {
390
+ type PrimaryNavigation = RenderableExtensionPointDefinition<"primary-navigation", {
387
391
  links: Links;
388
392
  }>;
389
393
  /**
@@ -391,28 +395,24 @@ declare type PrimaryNavigation = RenderableExtensionPointDefinition<"primary-nav
391
395
  * - A PrimaryNavigationLink Component can be used here
392
396
  * - Actually this Extension Point is used from the Activity Plugin to display the activities at the first Main Navigation menu.
393
397
  */
394
- declare type PrimaryNavigationFirstMenu = RenderableExtensionPointDefinition<"primary-navigation.first-menu", {
398
+ type PrimaryNavigationFirstMenu = RenderableExtensionPointDefinition<"primary-navigation.first-menu", {
395
399
  links: Links;
396
400
  label: string;
397
401
  }>;
398
- declare type ProfileRoute = RenderableExtensionPointDefinition<"profile.route", {
399
- me: Me;
400
- url: string;
402
+ type ProfileRoute = RouteExtensionPointDefinition<"profile.route", {
403
+ me?: Me;
401
404
  }>;
402
- declare type ProfileSetting = RenderableExtensionPointDefinition<"profile.setting", {
405
+ type ProfileSetting = RenderableExtensionPointDefinition<"profile.setting", {
403
406
  me?: Me;
404
- url: string;
405
407
  links: Links;
406
408
  }>;
407
- declare type RepoConfigRoute = RenderableExtensionPointDefinition<"repo-config.route", {
408
- repository: Repository;
409
- url: string;
409
+ type RepoConfigRoute = RouteExtensionPointDefinition<"repo-config.route", {
410
+ repository?: Repository;
410
411
  }>;
411
- declare type RepoConfigDetails = RenderableExtensionPointDefinition<"repo-config.details", {
412
- repository: Repository;
413
- url: string;
412
+ type RepoConfigDetails = RenderableExtensionPointDefinition<"repo-config.details", {
413
+ repository?: Repository;
414
414
  }>;
415
- declare type ReposBranchDetailsInformation = RenderableExtensionPointDefinition<"repos.branch-details.information", {
415
+ type ReposBranchDetailsInformation = RenderableExtensionPointDefinition<"repos.branch-details.information", {
416
416
  repository: Repository;
417
417
  branch: Branch;
418
418
  }>;
@@ -421,12 +421,12 @@ declare type ReposBranchDetailsInformation = RenderableExtensionPointDefinition<
421
421
  * - can be used to render additional meta data line
422
422
  * - Props: file: string, repository: Repository, revision: string
423
423
  */
424
- declare type ReposContentMetaData = RenderableExtensionPointDefinition<"repos.content.metadata", {
424
+ type ReposContentMetaData = RenderableExtensionPointDefinition<"repos.content.metadata", {
425
425
  file: File;
426
426
  repository: Repository;
427
427
  revision: string;
428
428
  }>;
429
- declare type ReposCreateNamespace = RenderableExtensionPointDefinition<"repos.create.namespace", {
429
+ type ReposCreateNamespace = RenderableExtensionPointDefinition<"repos.create.namespace", {
430
430
  label: string;
431
431
  helpText: string;
432
432
  value: string;
@@ -434,42 +434,39 @@ declare type ReposCreateNamespace = RenderableExtensionPointDefinition<"repos.cr
434
434
  errorMessage: string;
435
435
  validationError?: boolean;
436
436
  }>;
437
- declare type ReposSourcesContentActionBar = RenderableExtensionPointDefinition<"repos.sources.content.actionbar", {
437
+ type ReposSourcesContentActionBar = RenderableExtensionPointDefinition<"repos.sources.content.actionbar", {
438
438
  repository: Repository;
439
439
  file: File;
440
440
  revision: string;
441
441
  handleExtensionError: React__default.Dispatch<React__default.SetStateAction<Error | undefined>>;
442
442
  }>;
443
- declare type RepositoryCodeOverviewContent = RenderableExtensionPointDefinition<"repository.code.overview.content", {
443
+ type RepositoryCodeOverviewContent = RenderableExtensionPointDefinition<"repository.code.overview.content", {
444
444
  sources: File;
445
445
  repository: Repository;
446
446
  }>;
447
- declare type RepositoryNavigation = RenderableExtensionPointDefinition<"repository.navigation", {
447
+ type RepositoryNavigation = RenderableExtensionPointDefinition<"repository.navigation", {
448
448
  repository: Repository;
449
- url: string;
450
449
  indexLinks: Links;
451
450
  }>;
452
- declare type RepositoryNavigationTopLevel = RenderableExtensionPointDefinition<"repository.navigation.topLevel", {
451
+ type RepositoryNavigationTopLevel = RenderableExtensionPointDefinition<"repository.navigation.topLevel", {
453
452
  repository: Repository;
454
- url: string;
455
453
  indexLinks: Links;
456
454
  }>;
457
- declare type RepositoryRoleDetailsInformation = RenderableExtensionPointDefinition<"repositoryRole.role-details.information", {
455
+ type RepositoryRoleDetailsInformation = RenderableExtensionPointDefinition<"repositoryRole.role-details.information", {
458
456
  role: RepositoryRole;
459
457
  }>;
460
- declare type RepositorySetting = RenderableExtensionPointDefinition<"repository.setting", {
458
+ type RepositorySetting = RenderableExtensionPointDefinition<"repository.setting", {
461
459
  repository: Repository;
462
- url: string;
463
460
  indexLinks: Links;
464
461
  }>;
465
- declare type RepositoryAvatar = RenderableExtensionPointDefinition<"repos.repository-avatar", {
462
+ type RepositoryAvatar = RenderableExtensionPointDefinition<"repos.repository-avatar", {
466
463
  repository: Repository;
467
464
  }>;
468
465
  /**
469
466
  * - Location: At each repository in repository overview
470
467
  * - can be used to add avatar for each repository (e.g., to mark repository type)
471
468
  */
472
- declare type PrimaryRepositoryAvatar = RenderableExtensionPointDefinition<"repos.repository-avatar.primary", {
469
+ type PrimaryRepositoryAvatar = RenderableExtensionPointDefinition<"repos.repository-avatar.primary", {
473
470
  repository: Repository;
474
471
  size: number;
475
472
  }>;
@@ -477,40 +474,37 @@ declare type PrimaryRepositoryAvatar = RenderableExtensionPointDefinition<"repos
477
474
  * - Location: At bottom of a single repository view
478
475
  * - can be used to show detailed information about the repository (how to clone, e.g.)
479
476
  */
480
- declare type RepositoryDetailsInformation = RenderableExtensionPointDefinition<"repos.repository-details.information", {
477
+ type RepositoryDetailsInformation = RenderableExtensionPointDefinition<"repos.repository-details.information", {
481
478
  repository: Repository;
482
479
  }>;
483
480
  /**
484
481
  * - Location: At sources viewer
485
482
  * - can be used to render a special source that is not an image or a source code
486
483
  */
487
- declare type RepositorySourcesView = RenderableExtensionPointDefinition<"repos.sources.view", {
484
+ type RepositorySourcesView = RenderableExtensionPointDefinition<"repos.sources.view", {
488
485
  file: File;
489
486
  contentType: string;
490
487
  revision: string;
491
488
  basePath: string;
492
489
  }>;
493
- declare type RolesRoute = RenderableExtensionPointDefinition<"roles.route", {
494
- role: HalRepresentation & RepositoryRoleBase & {
490
+ type RolesRoute = RouteExtensionPointDefinition<"roles.route", {
491
+ role?: HalRepresentation & RepositoryRoleBase & {
495
492
  creationDate?: string;
496
493
  lastModified?: string;
497
494
  };
498
- url: string;
499
495
  }>;
500
- declare type UserRoute = RenderableExtensionPointDefinition<"user.route", {
501
- user: User;
502
- url: string;
496
+ type UserRoute = RouteExtensionPointDefinition<"user.route", {
497
+ user?: User;
503
498
  }>;
504
- declare type UserSetting = RenderableExtensionPointDefinition<"user.setting", {
505
- user: User;
506
- url: string;
499
+ type UserSetting = RenderableExtensionPointDefinition<"user.setting", {
500
+ user?: User;
507
501
  }>;
508
502
  /**
509
503
  * - Dynamic extension point for custom language-specific renderers
510
504
  * - Overrides the default Syntax Highlighter for the given language
511
505
  * - Used by the Markdown Plantuml Plugin
512
506
  */
513
- declare type MarkdownCodeRenderer<Language extends string | undefined = undefined> = SimpleRenderableDynamicExtensionPointDefinition<"markdown-renderer.code.", Language, {
507
+ type MarkdownCodeRenderer<Language extends string | undefined = undefined> = SimpleRenderableDynamicExtensionPointDefinition<"markdown-renderer.code.", Language, {
514
508
  language?: Language extends string ? Language : string;
515
509
  value: string;
516
510
  indexLinks: Links;
@@ -527,7 +521,7 @@ declare type MarkdownCodeRenderer<Language extends string | undefined = undefine
527
521
  * binder.bind<extensionPoints.MarkdownLinkProtocolRenderer<"myprotocol">>("markdown-renderer.link.protocol", { protocol: "myprotocol", renderer: MyProtocolRenderer })
528
522
  * ```
529
523
  */
530
- declare type MarkdownLinkProtocolRenderer<Protocol extends string | undefined = undefined> = ExtensionPointDefinition<"markdown-renderer.link.protocol", {
524
+ type MarkdownLinkProtocolRenderer<Protocol extends string | undefined = undefined> = ExtensionPointDefinition<"markdown-renderer.link.protocol", {
531
525
  protocol: Protocol extends string ? Protocol : string;
532
526
  renderer: React__default.ComponentType<{
533
527
  protocol: Protocol extends string ? Protocol : string;
@@ -539,15 +533,15 @@ declare type MarkdownLinkProtocolRenderer<Protocol extends string | undefined =
539
533
  *
540
534
  * @see https://github.com/scm-manager/scm-gravatar-plugin
541
535
  */
542
- declare type AvatarFactory = ExtensionPointDefinition<"avatar.factory", (person: Person) => string | undefined>;
536
+ type AvatarFactory = ExtensionPointDefinition<"avatar.factory", (person: Person) => string | undefined>;
543
537
  /**
544
538
  * - Location: At every changeset (detailed view as well as changeset overview)
545
539
  * - can be used to add avatar (such as gravatar) for each changeset
546
540
  *
547
541
  * @deprecated Has no effect, use {@link AvatarFactory} instead
548
542
  */
549
- declare type ChangesetAvatarFactory = ExtensionPointDefinition<"changeset.avatar-factory", (changeset: Changeset) => void>;
550
- declare type MainRedirectProps = {
543
+ type ChangesetAvatarFactory = ExtensionPointDefinition<"changeset.avatar-factory", (changeset: Changeset) => void>;
544
+ type MainRedirectProps = {
551
545
  me: Me;
552
546
  authenticated?: boolean;
553
547
  };
@@ -555,18 +549,18 @@ declare type MainRedirectProps = {
555
549
  * - Extension Point for a link factory that provide the Redirect Link
556
550
  * - Actually used from the activity plugin: binder.bind("main.redirect", () => "/activity");
557
551
  */
558
- declare type MainRedirect = ExtensionPointDefinition<"main.redirect", (props: MainRedirectProps) => string, MainRedirectProps>;
552
+ type MainRedirect = ExtensionPointDefinition<"main.redirect", (props: MainRedirectProps) => string, MainRedirectProps>;
559
553
  /**
560
554
  * - A Factory function to create markdown [renderer](https://github.com/rexxars/react-markdown#node-types)
561
555
  * - The factory function will be called with a renderContext parameter of type Object. this parameter is given as a prop for the {@link MarkdownView} component.
562
556
  *
563
557
  * @deprecated Use {@link MarkdownCodeRenderer} or {@link MarkdownLinkProtocolRenderer} instead
564
558
  */
565
- declare type MarkdownRendererFactory = ExtensionPointDefinition<"markdown-renderer-factory", (renderContext: unknown) => Record<string, React__default.ComponentType<any>>>;
566
- declare type RepositoryCardBeforeTitle = RenderableExtensionPointDefinition<"repository.card.beforeTitle", {
559
+ type MarkdownRendererFactory = ExtensionPointDefinition<"markdown-renderer-factory", (renderContext: unknown) => Record<string, React__default.ComponentType<any>>>;
560
+ type RepositoryCardBeforeTitle = RenderableExtensionPointDefinition<"repository.card.beforeTitle", {
567
561
  repository: Repository;
568
562
  }>;
569
- declare type RepositoryCreationInitialization = RenderableExtensionPointDefinition<"repos.create.initialize", {
563
+ type RepositoryCreationInitialization = RenderableExtensionPointDefinition<"repos.create.initialize", {
570
564
  repository: Repository;
571
565
  setCreationContextEntry: (key: string, value: any) => void;
572
566
  indexResources: Partial<HalRepresentation> & {
@@ -575,35 +569,32 @@ declare type RepositoryCreationInitialization = RenderableExtensionPointDefiniti
575
569
  initialization?: string;
576
570
  };
577
571
  }>;
578
- declare type NamespaceTopLevelNavigation = RenderableExtensionPointDefinition<"namespace.navigation.topLevel", {
572
+ type NamespaceTopLevelNavigation = RenderableExtensionPointDefinition<"namespace.navigation.topLevel", {
579
573
  namespace: Namespace;
580
- url: string;
581
574
  }>;
582
- declare type NamespaceRoute = RenderableExtensionPointDefinition<"namespace.route", {
583
- namespace: Namespace;
584
- url: string;
575
+ type NamespaceRoute = RouteExtensionPointDefinition<"namespace.route", {
576
+ namespace?: Namespace;
585
577
  }>;
586
- declare type NamespaceSetting = RenderableExtensionPointDefinition<"namespace.setting", {
587
- namespace: Namespace;
588
- url: string;
578
+ type NamespaceSetting = RenderableExtensionPointDefinition<"namespace.setting", {
579
+ namespace?: Namespace;
589
580
  }>;
590
- declare type RepositoryTagDetailsInformation = RenderableExtensionPointDefinition<"repos.tag-details.information", {
581
+ type RepositoryTagDetailsInformation = RenderableExtensionPointDefinition<"repos.tag-details.information", {
591
582
  repository: Repository;
592
583
  tag: Tag;
593
584
  }>;
594
- declare type SearchHitRenderer<Type extends string | undefined = undefined> = RenderableExtensionPointDefinition<Type extends string ? `search.hit.${Type}.renderer` : `search.hit.${string}.renderer`, {
585
+ type SearchHitRenderer<Type extends string | undefined = undefined> = RenderableExtensionPointDefinition<Type extends string ? `search.hit.${Type}.renderer` : `search.hit.${string}.renderer`, {
595
586
  hit: Hit;
596
587
  }>;
597
- declare type RepositorySourcesContentDownloadButton = RenderableExtensionPointDefinition<"repos.sources.content.downloadButton", {
588
+ type RepositorySourcesContentDownloadButton = RenderableExtensionPointDefinition<"repos.sources.content.downloadButton", {
598
589
  repository: Repository;
599
590
  file: File;
600
591
  }>;
601
- declare type RepositoryRoute = RenderableExtensionPointDefinition<"repository.route", {
602
- repository: Repository;
603
- url: string;
592
+ type RepositoryRoute = RouteExtensionPointDefinition<"repository.route", {
593
+ repository?: Repository;
604
594
  indexLinks: Links;
595
+ urlForLinks: string;
605
596
  }>;
606
- declare type RepositoryRedirectProps = {
597
+ type RepositoryRedirectProps = {
607
598
  namespace: string;
608
599
  name: string;
609
600
  repository: Repository;
@@ -618,14 +609,13 @@ declare type RepositoryRedirectProps = {
618
609
  };
619
610
  isExact: boolean;
620
611
  path: string;
621
- url: string;
622
612
  };
623
613
  };
624
- declare type RepositoryRedirect = ExtensionPointDefinition<"repository.redirect", (props: RepositoryRedirectProps) => string, RepositoryRedirectProps>;
625
- declare type InitializationStep<Step extends string | undefined = undefined> = SimpleRenderableDynamicExtensionPointDefinition<"initialization.step.", Step, {
614
+ type RepositoryRedirect = ExtensionPointDefinition<"repository.redirect", (props: RepositoryRedirectProps) => string, RepositoryRedirectProps>;
615
+ type InitializationStep<Step extends string | undefined = undefined> = SimpleRenderableDynamicExtensionPointDefinition<"initialization.step.", Step, {
626
616
  data: HalRepresentation;
627
617
  }>;
628
- declare type ContentActionExtensionProps = {
618
+ type ContentActionExtensionProps = {
629
619
  repository: Repository;
630
620
  file: File;
631
621
  revision: string;
@@ -633,45 +623,44 @@ declare type ContentActionExtensionProps = {
633
623
  contentType?: ContentType;
634
624
  setLoading?: (isLoading: boolean) => void;
635
625
  };
636
- declare type BaseActionBarOverflowMenuProps = {
626
+ type BaseActionBarOverflowMenuProps = {
637
627
  category: string;
638
628
  label: string;
639
629
  icon: string;
640
630
  props?: Record<string | number | symbol, unknown>;
641
631
  };
642
- declare type ActionMenuProps = BaseActionBarOverflowMenuProps & {
632
+ type ActionMenuProps = BaseActionBarOverflowMenuProps & {
643
633
  action: (props: ContentActionExtensionProps) => void;
644
634
  };
645
- declare type ModalMenuProps = BaseActionBarOverflowMenuProps & {
635
+ type ModalMenuProps = BaseActionBarOverflowMenuProps & {
646
636
  modalElement: ComponentType<ContentActionExtensionProps & {
647
637
  close: () => void;
648
638
  }>;
649
639
  };
650
- declare type LinkMenuProps = BaseActionBarOverflowMenuProps & {
640
+ type LinkMenuProps = BaseActionBarOverflowMenuProps & {
651
641
  link: (props: ContentActionExtensionProps) => string;
652
642
  };
653
- declare type FileViewActionBarOverflowMenu = ExtensionPointDefinition<"repos.sources.content.actionbar.menu", ActionMenuProps | ModalMenuProps | LinkMenuProps, ContentActionExtensionProps>;
654
- declare type LoginForm = RenderableExtensionPointDefinition<"login.form">;
655
- declare type RepositoryDeleteButton = RenderableExtensionPointDefinition<"repository.deleteButton", {
643
+ type FileViewActionBarOverflowMenu = ExtensionPointDefinition<"repos.sources.content.actionbar.menu", ActionMenuProps | ModalMenuProps | LinkMenuProps, ContentActionExtensionProps>;
644
+ type LoginForm = RenderableExtensionPointDefinition<"login.form">;
645
+ type RepositoryDeleteButton = RenderableExtensionPointDefinition<"repository.deleteButton", {
656
646
  repository: Repository;
657
647
  }>;
658
- declare type RepositoryDangerZone = RenderableExtensionPointDefinition<"repository.dangerZone", {
648
+ type RepositoryDangerZone = RenderableExtensionPointDefinition<"repository.dangerZone", {
659
649
  repository: Repository;
660
650
  }>;
661
- declare type RepositoryInformationTableBottom = RenderableExtensionPointDefinition<"repository.information.table.bottom", {
651
+ type RepositoryInformationTableBottom = RenderableExtensionPointDefinition<"repository.information.table.bottom", {
662
652
  repository: Repository;
663
653
  }>;
664
- declare type RepositoryBanner = RenderableExtensionPointDefinition<"repository.banner", {
654
+ type RepositoryBanner = RenderableExtensionPointDefinition<"repository.banner", {
665
655
  repository: Repository;
666
- url: string;
667
656
  }>;
668
- declare type UserInformationTableBottom = RenderableExtensionPointDefinition<"user.information.table.bottom", {
657
+ type UserInformationTableBottom = RenderableExtensionPointDefinition<"user.information.table.bottom", {
669
658
  user: User;
670
659
  }>;
671
- declare type GroupInformationTableBottom = RenderableExtensionPointDefinition<"group.information.table.bottom", {
660
+ type GroupInformationTableBottom = RenderableExtensionPointDefinition<"group.information.table.bottom", {
672
661
  group: Group;
673
662
  }>;
674
- declare type BranchMenuDetailProps = {
663
+ type BranchMenuDetailProps = {
675
664
  repository: Repository;
676
665
  branch: Branch;
677
666
  };
@@ -692,8 +681,8 @@ declare type BranchMenuDetailProps = {
692
681
  * )
693
682
  * ```
694
683
  */
695
- declare type BranchListMenu = RenderableExtensionPointDefinition<"branches.list.menu", BranchMenuDetailProps>;
696
- declare type BranchListDetailProps = {
684
+ type BranchListMenu = RenderableExtensionPointDefinition<"branches.list.menu", BranchMenuDetailProps>;
685
+ type BranchListDetailProps = {
697
686
  repository: Repository;
698
687
  branch: Branch;
699
688
  branchDetails?: BranchDetails;
@@ -715,7 +704,7 @@ declare type BranchListDetailProps = {
715
704
  * )
716
705
  * ```
717
706
  */
718
- declare type BranchListDetail = RenderableExtensionPointDefinition<"branches.list.detail", BranchListDetailProps>;
707
+ type BranchListDetail = RenderableExtensionPointDefinition<"branches.list.detail", BranchListDetailProps>;
719
708
 
720
709
  type extensionPoints_RepositoryCreatorComponentProps = RepositoryCreatorComponentProps;
721
710
  type extensionPoints_RepositoryCreatorExtension = RepositoryCreatorExtension;
@@ -928,4 +917,4 @@ declare namespace extensionPoints {
928
917
  };
929
918
  }
930
919
 
931
- export { Binder, BinderContext, ExtensionPoint, ExtensionPointDefinition, ExtractProps, RenderableExtensionPointDefinition, SimpleRenderableDynamicExtensionPointDefinition, binder, extensionPoints, useBinder };
920
+ export { Binder, BinderContext, ExtensionPoint, ExtensionPointDefinition, ExtractProps, RenderableExtensionPointDefinition, SimpleRenderableDynamicExtensionPointDefinition, binder, extensionPoints, useBinder, useRouteExtensions };
package/build/index.js CHANGED
@@ -31,7 +31,8 @@ __export(src_exports, {
31
31
  ExtensionPoint: () => ExtensionPoint,
32
32
  binder: () => binder_default,
33
33
  extensionPoints: () => extensionPoints_exports,
34
- useBinder: () => useBinder
34
+ useBinder: () => useBinder,
35
+ useRouteExtensions: () => useRouteExtensions
35
36
  });
36
37
  module.exports = __toCommonJS(src_exports);
37
38
 
@@ -138,8 +139,7 @@ function createInstance(Component, props, key) {
138
139
  });
139
140
  }
140
141
  return /* @__PURE__ */ import_react2.default.createElement(Component, {
141
- ...props,
142
- key
142
+ ...props
143
143
  });
144
144
  }
145
145
  var renderAllExtensions = (binder2, name, props) => {
@@ -198,6 +198,28 @@ function ExtensionPoint({ name, propTransformer, props, renderAll, wrapper, chil
198
198
  return renderSingleExtension(binder2, name, renderProps);
199
199
  }
200
200
 
201
+ // src/RouteExtensionPoint.tsx
202
+ var import_react3 = __toESM(require("react"));
203
+ var import_react_router_dom = require("react-router-dom");
204
+ function useRouteExtensions({
205
+ name,
206
+ props
207
+ }) {
208
+ const binder2 = useBinder_default();
209
+ if (!binder2.hasExtension(name, props)) {
210
+ return [];
211
+ }
212
+ const extensionFunctions = binder2.getExtensions(name, props);
213
+ return extensionFunctions.flatMap((createRouteFn, index) => {
214
+ const elementOrElements = createRouteFn(props);
215
+ if (!elementOrElements) {
216
+ return [];
217
+ }
218
+ const elements = Array.isArray(elementOrElements) ? elementOrElements : [elementOrElements];
219
+ return elements.filter((element) => import_react3.default.isValidElement(element) && element.type === import_react_router_dom.Route).map((routeElement, subIndex) => import_react3.default.cloneElement(routeElement, { key: `${name}-${index}-${subIndex}` }));
220
+ });
221
+ }
222
+
201
223
  // src/extensionPoints.tsx
202
224
  var extensionPoints_exports = {};
203
225
  // Annotate the CommonJS export names for ESM import in node:
@@ -207,5 +229,6 @@ var extensionPoints_exports = {};
207
229
  ExtensionPoint,
208
230
  binder,
209
231
  extensionPoints,
210
- useBinder
232
+ useBinder,
233
+ useRouteExtensions
211
234
  });
package/build/index.mjs CHANGED
@@ -101,8 +101,7 @@ function createInstance(Component, props, key) {
101
101
  });
102
102
  }
103
103
  return /* @__PURE__ */ React.createElement(Component, {
104
- ...props,
105
- key
104
+ ...props
106
105
  });
107
106
  }
108
107
  var renderAllExtensions = (binder2, name, props) => {
@@ -161,6 +160,28 @@ function ExtensionPoint({ name, propTransformer, props, renderAll, wrapper, chil
161
160
  return renderSingleExtension(binder2, name, renderProps);
162
161
  }
163
162
 
163
+ // src/RouteExtensionPoint.tsx
164
+ import React2 from "react";
165
+ import { Route } from "react-router-dom";
166
+ function useRouteExtensions({
167
+ name,
168
+ props
169
+ }) {
170
+ const binder2 = useBinder_default();
171
+ if (!binder2.hasExtension(name, props)) {
172
+ return [];
173
+ }
174
+ const extensionFunctions = binder2.getExtensions(name, props);
175
+ return extensionFunctions.flatMap((createRouteFn, index) => {
176
+ const elementOrElements = createRouteFn(props);
177
+ if (!elementOrElements) {
178
+ return [];
179
+ }
180
+ const elements = Array.isArray(elementOrElements) ? elementOrElements : [elementOrElements];
181
+ return elements.filter((element) => React2.isValidElement(element) && element.type === Route).map((routeElement, subIndex) => React2.cloneElement(routeElement, { key: `${name}-${index}-${subIndex}` }));
182
+ });
183
+ }
184
+
164
185
  // src/extensionPoints.tsx
165
186
  var extensionPoints_exports = {};
166
187
  export {
@@ -169,5 +190,6 @@ export {
169
190
  ExtensionPoint,
170
191
  binder_default as binder,
171
192
  extensionPoints_exports as extensionPoints,
172
- useBinder
193
+ useBinder,
194
+ useRouteExtensions
173
195
  };
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@scm-manager/ui-extensions",
3
- "version": "4.0.0-REACT18-20250701-125025",
3
+ "version": "4.0.0-REACT19",
4
4
  "license": "AGPL-3.0-only",
5
5
  "private": false,
6
6
  "author": "Sebastian Sdorra <sebastian.sdorra@cloudogu.com>",
@@ -17,21 +17,23 @@
17
17
  "test": "jest",
18
18
  "depcheck": "depcheck"
19
19
  },
20
+ "dependencies": {
21
+ "react-router-dom": "^7.9.1"
22
+ },
20
23
  "peerDependencies": {
21
- "react": "^18.3.1"
24
+ "react": "^19.1.1"
22
25
  },
23
26
  "devDependencies": {
24
- "@scm-manager/ui-types": "4.0.0-REACT18-20250701-125025",
25
- "@scm-manager/ui-tests": "4.0.0-REACT18-20250701-125025",
26
27
  "@scm-manager/babel-preset": "^2.13.1",
27
28
  "@scm-manager/eslint-config": "^2.17.0",
28
- "@scm-manager/jest-preset": "^2.14.1",
29
+ "@scm-manager/jest-preset": "^2.15.0-alpha1",
29
30
  "@scm-manager/prettier-config": "^2.12.0",
30
31
  "@scm-manager/tsconfig": "^2.13.0",
31
- "@types/enzyme": "^3.10.18",
32
- "@types/react": "^18.3.1",
33
- "tsup": "^5.12.6",
34
- "enzyme": "^3.11.0"
32
+ "@scm-manager/ui-types": "4.0.0-REACT19",
33
+ "@testing-library/react": "16.3.0",
34
+ "@types/react": "^19.1.1",
35
+ "minimatch": "^10.0.3",
36
+ "tsup": "^5.12.6"
35
37
  },
36
38
  "babel": {
37
39
  "presets": [
@@ -48,4 +50,4 @@
48
50
  "publishConfig": {
49
51
  "access": "public"
50
52
  }
51
- }
53
+ }