@backstage/plugin-techdocs 1.16.3-next.1 → 1.17.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/CHANGELOG.md CHANGED
@@ -1,5 +1,65 @@
1
1
  # @backstage/plugin-techdocs
2
2
 
3
+ ## 1.17.0
4
+
5
+ ### Minor Changes
6
+
7
+ - 27798df: Add two config values to the `page:techdocs/reader` extension that configure default layout, `withoutSearch` and `withoutHeader`. Default are unchanged to `false`.
8
+
9
+ E.g. to disable the search and header on the Techdocs Reader Page:
10
+
11
+ ```yaml
12
+ app:
13
+ extensions:
14
+ - page:techdocs/reader:
15
+ config:
16
+ withoutSearch: true
17
+ withoutHeader: true
18
+ ```
19
+
20
+ ### Patch Changes
21
+
22
+ - 7feb83b: Adjusted to use the new `@backstage/filter-predicates` types for predicate expressions.
23
+ - 491a06c: Add the ability to show icons for the tabs on the entity page (new frontend)
24
+ - 018ca87: Added `title` and `icon` to the plugin definition for the new frontend system.
25
+ - 9e29545: Improve sidebars (nav/TOC) layout and scrolling
26
+ - 22dce2b: TechDocs addons in the new frontend system now use a Utility API pattern instead of multiple attachment points. The `AddonBlueprint` now uses this new approach, and while addons created with older versions still work, they will produce a deprecation warning and will stop working in a future release.
27
+ - a7e0d50: Updated `react-router-dom` peer dependency to `^6.30.2` and explicitly disabled v7 future flags to suppress deprecation warnings.
28
+ - 0a88779: Added title prop to OffsetPaginatedDocsTable for proper display
29
+ - Updated dependencies
30
+ - @backstage/plugin-catalog-react@2.0.0
31
+ - @backstage/integration@1.20.0
32
+ - @backstage/core-components@0.18.7
33
+ - @backstage/plugin-search-common@1.2.22
34
+ - @backstage/theme@0.7.2
35
+ - @backstage/frontend-plugin-api@0.14.0
36
+ - @backstage/catalog-client@1.13.0
37
+ - @backstage/core-plugin-api@1.12.3
38
+ - @backstage/plugin-techdocs-react@1.3.8
39
+ - @backstage/integration-react@1.2.15
40
+ - @backstage/plugin-search-react@1.10.3
41
+ - @backstage/plugin-auth-react@0.1.24
42
+
43
+ ## 1.16.3-next.2
44
+
45
+ ### Patch Changes
46
+
47
+ - 7feb83b: Adjusted to use the new `@backstage/filter-predicates` types for predicate expressions.
48
+ - 491a06c: Add the ability to show icons for the tabs on the entity page (new frontend)
49
+ - a7e0d50: Prepare for React Router v7 migration by updating to v6.30.2 across all NFS packages and enabling v7 future flags. Convert routes from splat paths to parent/child structure with Outlet components.
50
+ - Updated dependencies
51
+ - @backstage/integration@1.20.0-next.2
52
+ - @backstage/plugin-catalog-react@2.0.0-next.2
53
+ - @backstage/catalog-client@1.12.2-next.0
54
+ - @backstage/frontend-plugin-api@0.14.0-next.2
55
+ - @backstage/integration-react@1.2.15-next.2
56
+ - @backstage/core-components@0.18.7-next.2
57
+ - @backstage/core-plugin-api@1.12.3-next.1
58
+ - @backstage/plugin-techdocs-react@1.3.8-next.1
59
+ - @backstage/plugin-search-react@1.10.3-next.2
60
+ - @backstage/plugin-auth-react@0.1.24-next.1
61
+ - @backstage/theme@0.7.2-next.1
62
+
3
63
  ## 1.16.3-next.1
4
64
 
5
65
  ### Patch Changes
package/dist/alpha.d.ts CHANGED
@@ -1,6 +1,7 @@
1
1
  import * as _backstage_core_components from '@backstage/core-components';
2
- import * as _backstage_catalog_model from '@backstage/catalog-model';
3
2
  import * as _backstage_plugin_catalog_react_alpha from '@backstage/plugin-catalog-react/alpha';
3
+ import * as _backstage_catalog_model from '@backstage/catalog-model';
4
+ import * as _backstage_filter_predicates from '@backstage/filter-predicates';
4
5
  import * as _backstage_plugin_techdocs_react from '@backstage/plugin-techdocs-react';
5
6
  import * as _backstage_core_plugin_api from '@backstage/core-plugin-api';
6
7
  import * as _backstage_frontend_plugin_api from '@backstage/frontend-plugin-api';
@@ -97,23 +98,27 @@ declare const _default: _backstage_frontend_plugin_api.OverridableFrontendPlugin
97
98
  config: {
98
99
  path: string | undefined;
99
100
  title: string | undefined;
100
- filter: _backstage_plugin_catalog_react_alpha.EntityPredicate | undefined;
101
+ filter: _backstage_filter_predicates.FilterPredicate | undefined;
101
102
  group: string | false | undefined;
103
+ icon: string | undefined;
102
104
  };
103
105
  configInput: {
104
- filter?: _backstage_plugin_catalog_react_alpha.EntityPredicate | undefined;
106
+ filter?: _backstage_filter_predicates.FilterPredicate | undefined;
105
107
  title?: string | undefined;
106
108
  path?: string | undefined;
107
109
  group?: string | false | undefined;
110
+ icon?: string | undefined;
108
111
  };
109
- output: _backstage_frontend_plugin_api.ExtensionDataRef<string, "core.routing.path", {}> | _backstage_frontend_plugin_api.ExtensionDataRef<react.JSX.Element, "core.reactElement", {}> | _backstage_frontend_plugin_api.ExtensionDataRef<_backstage_frontend_plugin_api.RouteRef<_backstage_frontend_plugin_api.AnyRouteRefParams>, "core.routing.ref", {
112
+ output: _backstage_frontend_plugin_api.ExtensionDataRef<string, "core.routing.path", {}> | _backstage_frontend_plugin_api.ExtensionDataRef<_backstage_frontend_plugin_api.RouteRef<_backstage_frontend_plugin_api.AnyRouteRefParams>, "core.routing.ref", {
110
113
  optional: true;
111
- }> | _backstage_frontend_plugin_api.ExtensionDataRef<(entity: _backstage_catalog_model.Entity) => boolean, "catalog.entity-filter-function", {
114
+ }> | _backstage_frontend_plugin_api.ExtensionDataRef<react.JSX.Element, "core.reactElement", {}> | _backstage_frontend_plugin_api.ExtensionDataRef<(entity: _backstage_catalog_model.Entity) => boolean, "catalog.entity-filter-function", {
112
115
  optional: true;
113
116
  }> | _backstage_frontend_plugin_api.ExtensionDataRef<string, "catalog.entity-filter-expression", {
114
117
  optional: true;
115
118
  }> | _backstage_frontend_plugin_api.ExtensionDataRef<string, "catalog.entity-content-title", {}> | _backstage_frontend_plugin_api.ExtensionDataRef<string, "catalog.entity-content-group", {
116
119
  optional: true;
120
+ }> | _backstage_frontend_plugin_api.ExtensionDataRef<string | react.ReactElement<any, string | react.JSXElementConstructor<any>>, "catalog.entity-content-icon", {
121
+ optional: true;
117
122
  }>;
118
123
  inputs: {
119
124
  addons: _backstage_frontend_plugin_api.ExtensionInput<_backstage_frontend_plugin_api.ConfigurableExtensionDataRef<_backstage_plugin_techdocs_react.TechDocsAddonOptions, "techdocs.addon", {}>, {
@@ -138,9 +143,10 @@ declare const _default: _backstage_frontend_plugin_api.OverridableFrontendPlugin
138
143
  title: string;
139
144
  defaultGroup?: [Error: `Use the 'group' param instead`];
140
145
  group?: keyof typeof _backstage_plugin_catalog_react_alpha.defaultEntityContentGroups | (string & {});
146
+ icon?: string | react.ReactElement;
141
147
  loader: () => Promise<JSX.Element>;
142
148
  routeRef?: _backstage_frontend_plugin_api.RouteRef;
143
- filter?: string | _backstage_plugin_catalog_react_alpha.EntityPredicate | ((entity: _backstage_catalog_model.Entity) => boolean);
149
+ filter?: string | _backstage_filter_predicates.FilterPredicate | ((entity: _backstage_catalog_model.Entity) => boolean);
144
150
  };
145
151
  }>;
146
152
  "entity-icon-link:techdocs/read-docs": _backstage_frontend_plugin_api.OverridableExtensionDefinition<{
@@ -149,10 +155,10 @@ declare const _default: _backstage_frontend_plugin_api.OverridableFrontendPlugin
149
155
  config: {
150
156
  label: string | undefined;
151
157
  title: string | undefined;
152
- filter: _backstage_plugin_catalog_react_alpha.EntityPredicate | undefined;
158
+ filter: _backstage_filter_predicates.FilterPredicate | undefined;
153
159
  };
154
160
  configInput: {
155
- filter?: _backstage_plugin_catalog_react_alpha.EntityPredicate | undefined;
161
+ filter?: _backstage_filter_predicates.FilterPredicate | undefined;
156
162
  label?: string | undefined;
157
163
  title?: string | undefined;
158
164
  };
@@ -164,7 +170,7 @@ declare const _default: _backstage_frontend_plugin_api.OverridableFrontendPlugin
164
170
  inputs: {};
165
171
  params: {
166
172
  useProps: () => Omit<_backstage_core_components.IconLinkVerticalProps, "color">;
167
- filter?: _backstage_plugin_catalog_react_alpha.EntityPredicate | ((entity: _backstage_catalog_model.Entity) => boolean);
173
+ filter?: _backstage_filter_predicates.FilterPredicate | ((entity: _backstage_catalog_model.Entity) => boolean);
168
174
  };
169
175
  }>;
170
176
  "nav-item:techdocs": _backstage_frontend_plugin_api.OverridableExtensionDefinition<{
@@ -189,32 +195,74 @@ declare const _default: _backstage_frontend_plugin_api.OverridableFrontendPlugin
189
195
  name: undefined;
190
196
  config: {
191
197
  path: string | undefined;
198
+ title: string | undefined;
192
199
  };
193
200
  configInput: {
201
+ title?: string | undefined;
194
202
  path?: string | undefined;
195
203
  };
196
- output: _backstage_frontend_plugin_api.ExtensionDataRef<string, "core.routing.path", {}> | _backstage_frontend_plugin_api.ExtensionDataRef<react.JSX.Element, "core.reactElement", {}> | _backstage_frontend_plugin_api.ExtensionDataRef<_backstage_frontend_plugin_api.RouteRef<_backstage_frontend_plugin_api.AnyRouteRefParams>, "core.routing.ref", {
204
+ output: _backstage_frontend_plugin_api.ExtensionDataRef<string, "core.routing.path", {}> | _backstage_frontend_plugin_api.ExtensionDataRef<_backstage_frontend_plugin_api.RouteRef<_backstage_frontend_plugin_api.AnyRouteRefParams>, "core.routing.ref", {
205
+ optional: true;
206
+ }> | _backstage_frontend_plugin_api.ExtensionDataRef<react.JSX.Element, "core.reactElement", {}> | _backstage_frontend_plugin_api.ExtensionDataRef<string, "core.title", {
207
+ optional: true;
208
+ }> | _backstage_frontend_plugin_api.ExtensionDataRef<_backstage_frontend_plugin_api.IconElement, "core.icon", {
197
209
  optional: true;
198
210
  }>;
199
- inputs: {};
211
+ inputs: {
212
+ pages: _backstage_frontend_plugin_api.ExtensionInput<_backstage_frontend_plugin_api.ConfigurableExtensionDataRef<react.JSX.Element, "core.reactElement", {}> | _backstage_frontend_plugin_api.ConfigurableExtensionDataRef<string, "core.routing.path", {}> | _backstage_frontend_plugin_api.ConfigurableExtensionDataRef<_backstage_frontend_plugin_api.RouteRef<_backstage_frontend_plugin_api.AnyRouteRefParams>, "core.routing.ref", {
213
+ optional: true;
214
+ }> | _backstage_frontend_plugin_api.ConfigurableExtensionDataRef<string, "core.title", {
215
+ optional: true;
216
+ }> | _backstage_frontend_plugin_api.ConfigurableExtensionDataRef<_backstage_frontend_plugin_api.IconElement, "core.icon", {
217
+ optional: true;
218
+ }>, {
219
+ singleton: false;
220
+ optional: false;
221
+ internal: false;
222
+ }>;
223
+ };
200
224
  params: {
201
225
  defaultPath?: [Error: `Use the 'path' param instead`];
202
226
  path: string;
203
- loader: () => Promise<JSX.Element>;
227
+ title?: string;
228
+ icon?: _backstage_frontend_plugin_api.IconElement;
229
+ loader?: () => Promise<react.JSX.Element>;
204
230
  routeRef?: _backstage_frontend_plugin_api.RouteRef;
231
+ noHeader?: boolean;
205
232
  };
206
233
  }>;
207
234
  "page:techdocs/reader": _backstage_frontend_plugin_api.OverridableExtensionDefinition<{
208
235
  config: {
236
+ withoutSearch: boolean;
237
+ withoutHeader: boolean;
209
238
  path: string | undefined;
239
+ title: string | undefined;
210
240
  };
211
241
  configInput: {
242
+ withoutSearch?: boolean | undefined;
243
+ withoutHeader?: boolean | undefined;
244
+ title?: string | undefined;
212
245
  path?: string | undefined;
213
246
  };
214
- output: _backstage_frontend_plugin_api.ExtensionDataRef<string, "core.routing.path", {}> | _backstage_frontend_plugin_api.ExtensionDataRef<react.JSX.Element, "core.reactElement", {}> | _backstage_frontend_plugin_api.ExtensionDataRef<_backstage_frontend_plugin_api.RouteRef<_backstage_frontend_plugin_api.AnyRouteRefParams>, "core.routing.ref", {
247
+ output: _backstage_frontend_plugin_api.ExtensionDataRef<string, "core.routing.path", {}> | _backstage_frontend_plugin_api.ExtensionDataRef<_backstage_frontend_plugin_api.RouteRef<_backstage_frontend_plugin_api.AnyRouteRefParams>, "core.routing.ref", {
248
+ optional: true;
249
+ }> | _backstage_frontend_plugin_api.ExtensionDataRef<react.JSX.Element, "core.reactElement", {}> | _backstage_frontend_plugin_api.ExtensionDataRef<string, "core.title", {
250
+ optional: true;
251
+ }> | _backstage_frontend_plugin_api.ExtensionDataRef<_backstage_frontend_plugin_api.IconElement, "core.icon", {
215
252
  optional: true;
216
253
  }>;
217
254
  inputs: {
255
+ pages: _backstage_frontend_plugin_api.ExtensionInput<_backstage_frontend_plugin_api.ConfigurableExtensionDataRef<react.JSX.Element, "core.reactElement", {}> | _backstage_frontend_plugin_api.ConfigurableExtensionDataRef<string, "core.routing.path", {}> | _backstage_frontend_plugin_api.ConfigurableExtensionDataRef<_backstage_frontend_plugin_api.RouteRef<_backstage_frontend_plugin_api.AnyRouteRefParams>, "core.routing.ref", {
256
+ optional: true;
257
+ }> | _backstage_frontend_plugin_api.ConfigurableExtensionDataRef<string, "core.title", {
258
+ optional: true;
259
+ }> | _backstage_frontend_plugin_api.ConfigurableExtensionDataRef<_backstage_frontend_plugin_api.IconElement, "core.icon", {
260
+ optional: true;
261
+ }>, {
262
+ singleton: false;
263
+ optional: false;
264
+ internal: false;
265
+ }>;
218
266
  addons: _backstage_frontend_plugin_api.ExtensionInput<_backstage_frontend_plugin_api.ConfigurableExtensionDataRef<_backstage_plugin_techdocs_react.TechDocsAddonOptions, "techdocs.addon", {}>, {
219
267
  singleton: false;
220
268
  optional: false;
@@ -226,8 +274,11 @@ declare const _default: _backstage_frontend_plugin_api.OverridableFrontendPlugin
226
274
  params: {
227
275
  defaultPath?: [Error: `Use the 'path' param instead`];
228
276
  path: string;
229
- loader: () => Promise<JSX.Element>;
277
+ title?: string;
278
+ icon?: _backstage_frontend_plugin_api.IconElement;
279
+ loader?: () => Promise<react.JSX.Element>;
230
280
  routeRef?: _backstage_frontend_plugin_api.RouteRef;
281
+ noHeader?: boolean;
231
282
  };
232
283
  }>;
233
284
  "search-result-list-item:techdocs": _backstage_frontend_plugin_api.OverridableExtensionDefinition<{
package/dist/alpha.esm.js CHANGED
@@ -94,7 +94,13 @@ const techDocsReaderPage = PageBlueprint.makeWithOverrides({
94
94
  inputs: {
95
95
  addons: createExtensionInput([AddonBlueprint.dataRefs.addon])
96
96
  },
97
- factory(originalFactory, { apis, inputs }) {
97
+ config: {
98
+ schema: {
99
+ withoutSearch: (z) => z.boolean().default(false),
100
+ withoutHeader: (z) => z.boolean().default(false)
101
+ }
102
+ },
103
+ factory(originalFactory, { apis, inputs, config }) {
98
104
  const addonsApi = apis.get(techdocsAddonsApiRef);
99
105
  return originalFactory({
100
106
  path: "/docs/:namespace/:kind/:name",
@@ -111,7 +117,13 @@ const techDocsReaderPage = PageBlueprint.makeWithOverrides({
111
117
  return /* @__PURE__ */ jsx(Suspense, { fallback: null, children: /* @__PURE__ */ jsx(Addon, {}) }, options.name);
112
118
  });
113
119
  return import('./Router.esm.js').then(({ TechDocsReaderRouter }) => /* @__PURE__ */ jsxs(TechDocsReaderRouter, { children: [
114
- /* @__PURE__ */ jsx(TechDocsReaderLayout, {}),
120
+ /* @__PURE__ */ jsx(
121
+ TechDocsReaderLayout,
122
+ {
123
+ withSearch: !config.withoutSearch,
124
+ withHeader: !config.withoutHeader
125
+ }
126
+ ),
115
127
  /* @__PURE__ */ jsx(TechDocsAddons, { children: addons })
116
128
  ] }));
117
129
  }
@@ -178,6 +190,8 @@ const techDocsNavItem = NavItemBlueprint.make({
178
190
  });
179
191
  var index = createFrontendPlugin({
180
192
  pluginId: "techdocs",
193
+ title: "Docs",
194
+ icon: /* @__PURE__ */ jsx(LibraryBooks, {}),
181
195
  info: { packageJson: () => import('./package.json.esm.js') },
182
196
  extensions: [
183
197
  techDocsClientApi,
@@ -1 +1 @@
1
- {"version":3,"file":"alpha.esm.js","sources":["../src/alpha/index.tsx"],"sourcesContent":["/*\n * Copyright 2023 The Backstage Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { Suspense } from 'react';\nimport LibraryBooks from '@material-ui/icons/LibraryBooks';\nimport {\n createFrontendPlugin,\n ApiBlueprint,\n PageBlueprint,\n NavItemBlueprint,\n createExtensionInput,\n coreExtensionData,\n createExtension,\n} from '@backstage/frontend-plugin-api';\nimport {\n configApiRef,\n discoveryApiRef,\n fetchApiRef,\n} from '@backstage/core-plugin-api';\nimport {\n EntityContentBlueprint,\n EntityIconLinkBlueprint,\n} from '@backstage/plugin-catalog-react/alpha';\nimport { SearchResultListItemBlueprint } from '@backstage/plugin-search-react/alpha';\nimport {\n AddonBlueprint,\n attachTechDocsAddonComponentData,\n} from '@backstage/plugin-techdocs-react/alpha';\nimport { TechDocsAddonsApiExtension, techdocsAddonsApiRef } from './addonsApi';\nimport { TechDocsClient, TechDocsStorageClient } from '../client';\nimport {\n rootCatalogDocsRouteRef,\n rootDocsRouteRef,\n rootRouteRef,\n} from '../routes';\nimport { TechDocsReaderLayout } from '../reader';\nimport {\n TechDocsAddons,\n techdocsApiRef,\n techdocsStorageApiRef,\n} from '@backstage/plugin-techdocs-react';\n\nimport { useTechdocsReaderIconLinkProps } from './hooks/useTechdocsReaderIconLinkProps';\nimport { DocsIcon } from '@backstage/core-components';\n\n/** @alpha */\nconst techdocsEntityIconLink = EntityIconLinkBlueprint.make({\n name: 'read-docs',\n params: {\n useProps: useTechdocsReaderIconLinkProps,\n },\n});\n\n/** @alpha */\nconst techDocsStorageApi = ApiBlueprint.make({\n name: 'storage',\n params: defineParams =>\n defineParams({\n api: techdocsStorageApiRef,\n deps: {\n configApi: configApiRef,\n discoveryApi: discoveryApiRef,\n fetchApi: fetchApiRef,\n },\n factory: ({ configApi, discoveryApi, fetchApi }) =>\n new TechDocsStorageClient({\n configApi,\n discoveryApi,\n fetchApi,\n }),\n }),\n});\n\n/** @alpha */\nconst techDocsClientApi = ApiBlueprint.make({\n params: defineParams =>\n defineParams({\n api: techdocsApiRef,\n deps: {\n configApi: configApiRef,\n discoveryApi: discoveryApiRef,\n fetchApi: fetchApiRef,\n },\n factory: ({ configApi, discoveryApi, fetchApi }) =>\n new TechDocsClient({\n configApi,\n discoveryApi,\n fetchApi,\n }),\n }),\n});\n\n/** @alpha */\nexport const techDocsSearchResultListItemExtension =\n SearchResultListItemBlueprint.makeWithOverrides({\n config: {\n schema: {\n title: z => z.string().optional(),\n lineClamp: z => z.number().default(5),\n asLink: z => z.boolean().default(true),\n asListItem: z => z.boolean().default(true),\n },\n },\n factory(originalFactory, { config }) {\n return originalFactory({\n icon: <DocsIcon />,\n predicate: result => result.type === 'techdocs',\n component: async () => {\n const { TechDocsSearchResultListItem } = await import(\n '../search/components/TechDocsSearchResultListItem'\n );\n return props => (\n <TechDocsSearchResultListItem {...props} {...config} />\n );\n },\n });\n },\n });\n\n/**\n * Responsible for rendering the provided router element\n *\n * @alpha\n */\nconst techDocsPage = PageBlueprint.make({\n params: {\n path: '/docs',\n routeRef: rootRouteRef,\n loader: () =>\n import('../home/components/TechDocsIndexPage').then(m => (\n <m.TechDocsIndexPage />\n )),\n },\n});\n\n/**\n * Component responsible for composing a TechDocs reader page experience\n *\n * @alpha\n */\nconst techDocsReaderPage = PageBlueprint.makeWithOverrides({\n name: 'reader',\n inputs: {\n addons: createExtensionInput([AddonBlueprint.dataRefs.addon]),\n },\n factory(originalFactory, { apis, inputs }) {\n const addonsApi = apis.get(techdocsAddonsApiRef);\n\n return originalFactory({\n path: '/docs/:namespace/:kind/:name',\n routeRef: rootDocsRouteRef,\n loader: async () => {\n // Merge addons from the API with old-style direct attachments\n const apiAddons = addonsApi?.getAddons() ?? [];\n const directAddons = inputs.addons.map(output =>\n output.get(AddonBlueprint.dataRefs.addon),\n );\n const addonOptions = [...apiAddons, ...directAddons];\n\n const addons = addonOptions.map(options => {\n const Addon = options.component;\n attachTechDocsAddonComponentData(Addon, options);\n return (\n <Suspense key={options.name} fallback={null}>\n <Addon />\n </Suspense>\n );\n });\n\n return import('../Router').then(({ TechDocsReaderRouter }) => (\n <TechDocsReaderRouter>\n <TechDocsReaderLayout />\n <TechDocsAddons>{addons}</TechDocsAddons>\n </TechDocsReaderRouter>\n ));\n },\n });\n },\n});\n\n/**\n * Component responsible for rendering techdocs on entity pages\n *\n * @alpha\n */\nconst techDocsEntityContent = EntityContentBlueprint.makeWithOverrides({\n inputs: {\n addons: createExtensionInput([AddonBlueprint.dataRefs.addon]),\n emptyState: createExtensionInput(\n [coreExtensionData.reactElement.optional()],\n {\n singleton: true,\n optional: true,\n },\n ),\n },\n factory(originalFactory, context) {\n const addonsApi = context.apis.get(techdocsAddonsApiRef);\n\n return originalFactory(\n {\n path: 'docs',\n title: 'TechDocs',\n routeRef: rootCatalogDocsRouteRef,\n loader: () => {\n // Merge addons from the API with old-style direct attachments\n const apiAddons = addonsApi?.getAddons() ?? [];\n const directAddons = context.inputs.addons.map(output =>\n output.get(AddonBlueprint.dataRefs.addon),\n );\n const addonOptions = [...apiAddons, ...directAddons];\n\n const addons = addonOptions.map(options => {\n const Addon = options.component;\n attachTechDocsAddonComponentData(Addon, options);\n return (\n <Suspense key={options.name} fallback={null}>\n <Addon />\n </Suspense>\n );\n });\n\n return import('../Router').then(({ EmbeddedDocsRouter }) => (\n <EmbeddedDocsRouter\n emptyState={context.inputs.emptyState?.get(\n coreExtensionData.reactElement,\n )}\n >\n <TechDocsAddons>{addons}</TechDocsAddons>\n </EmbeddedDocsRouter>\n ));\n },\n },\n context,\n );\n },\n});\n\nconst techDocsEntityContentEmptyState = createExtension({\n kind: 'empty-state',\n name: 'entity-content',\n attachTo: { id: 'entity-content:techdocs', input: 'emptyState' },\n output: [coreExtensionData.reactElement.optional()],\n factory: () => [],\n});\n\n/** @alpha */\nconst techDocsNavItem = NavItemBlueprint.make({\n params: {\n icon: LibraryBooks,\n title: 'Docs',\n routeRef: rootRouteRef,\n },\n});\n\n/** @alpha */\nexport default createFrontendPlugin({\n pluginId: 'techdocs',\n info: { packageJson: () => import('../../package.json') },\n extensions: [\n techDocsClientApi,\n techDocsStorageApi,\n TechDocsAddonsApiExtension,\n techDocsNavItem,\n techDocsPage,\n techDocsReaderPage,\n techdocsEntityIconLink,\n techDocsEntityContent,\n techDocsEntityContentEmptyState,\n techDocsSearchResultListItemExtension,\n ],\n routes: {\n root: rootRouteRef,\n docRoot: rootDocsRouteRef,\n entityContent: rootCatalogDocsRouteRef,\n },\n});\n"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"alpha.esm.js","sources":["../src/alpha/index.tsx"],"sourcesContent":["/*\n * Copyright 2023 The Backstage Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { Suspense } from 'react';\nimport LibraryBooks from '@material-ui/icons/LibraryBooks';\nimport {\n createFrontendPlugin,\n ApiBlueprint,\n PageBlueprint,\n NavItemBlueprint,\n createExtensionInput,\n coreExtensionData,\n createExtension,\n} from '@backstage/frontend-plugin-api';\nimport {\n configApiRef,\n discoveryApiRef,\n fetchApiRef,\n} from '@backstage/core-plugin-api';\nimport {\n EntityContentBlueprint,\n EntityIconLinkBlueprint,\n} from '@backstage/plugin-catalog-react/alpha';\nimport { SearchResultListItemBlueprint } from '@backstage/plugin-search-react/alpha';\nimport {\n AddonBlueprint,\n attachTechDocsAddonComponentData,\n} from '@backstage/plugin-techdocs-react/alpha';\nimport { TechDocsAddonsApiExtension, techdocsAddonsApiRef } from './addonsApi';\nimport { TechDocsClient, TechDocsStorageClient } from '../client';\nimport {\n rootCatalogDocsRouteRef,\n rootDocsRouteRef,\n rootRouteRef,\n} from '../routes';\nimport { TechDocsReaderLayout } from '../reader';\nimport {\n TechDocsAddons,\n techdocsApiRef,\n techdocsStorageApiRef,\n} from '@backstage/plugin-techdocs-react';\n\nimport { useTechdocsReaderIconLinkProps } from './hooks/useTechdocsReaderIconLinkProps';\nimport { DocsIcon } from '@backstage/core-components';\n\n/** @alpha */\nconst techdocsEntityIconLink = EntityIconLinkBlueprint.make({\n name: 'read-docs',\n params: {\n useProps: useTechdocsReaderIconLinkProps,\n },\n});\n\n/** @alpha */\nconst techDocsStorageApi = ApiBlueprint.make({\n name: 'storage',\n params: defineParams =>\n defineParams({\n api: techdocsStorageApiRef,\n deps: {\n configApi: configApiRef,\n discoveryApi: discoveryApiRef,\n fetchApi: fetchApiRef,\n },\n factory: ({ configApi, discoveryApi, fetchApi }) =>\n new TechDocsStorageClient({\n configApi,\n discoveryApi,\n fetchApi,\n }),\n }),\n});\n\n/** @alpha */\nconst techDocsClientApi = ApiBlueprint.make({\n params: defineParams =>\n defineParams({\n api: techdocsApiRef,\n deps: {\n configApi: configApiRef,\n discoveryApi: discoveryApiRef,\n fetchApi: fetchApiRef,\n },\n factory: ({ configApi, discoveryApi, fetchApi }) =>\n new TechDocsClient({\n configApi,\n discoveryApi,\n fetchApi,\n }),\n }),\n});\n\n/** @alpha */\nexport const techDocsSearchResultListItemExtension =\n SearchResultListItemBlueprint.makeWithOverrides({\n config: {\n schema: {\n title: z => z.string().optional(),\n lineClamp: z => z.number().default(5),\n asLink: z => z.boolean().default(true),\n asListItem: z => z.boolean().default(true),\n },\n },\n factory(originalFactory, { config }) {\n return originalFactory({\n icon: <DocsIcon />,\n predicate: result => result.type === 'techdocs',\n component: async () => {\n const { TechDocsSearchResultListItem } = await import(\n '../search/components/TechDocsSearchResultListItem'\n );\n return props => (\n <TechDocsSearchResultListItem {...props} {...config} />\n );\n },\n });\n },\n });\n\n/**\n * Responsible for rendering the provided router element\n *\n * @alpha\n */\nconst techDocsPage = PageBlueprint.make({\n params: {\n path: '/docs',\n routeRef: rootRouteRef,\n loader: () =>\n import('../home/components/TechDocsIndexPage').then(m => (\n <m.TechDocsIndexPage />\n )),\n },\n});\n\n/**\n * Component responsible for composing a TechDocs reader page experience\n *\n * @alpha\n */\nconst techDocsReaderPage = PageBlueprint.makeWithOverrides({\n name: 'reader',\n inputs: {\n addons: createExtensionInput([AddonBlueprint.dataRefs.addon]),\n },\n config: {\n schema: {\n withoutSearch: z => z.boolean().default(false),\n withoutHeader: z => z.boolean().default(false),\n },\n },\n factory(originalFactory, { apis, inputs, config }) {\n const addonsApi = apis.get(techdocsAddonsApiRef);\n\n return originalFactory({\n path: '/docs/:namespace/:kind/:name',\n routeRef: rootDocsRouteRef,\n loader: async () => {\n // Merge addons from the API with old-style direct attachments\n const apiAddons = addonsApi?.getAddons() ?? [];\n const directAddons = inputs.addons.map(output =>\n output.get(AddonBlueprint.dataRefs.addon),\n );\n const addonOptions = [...apiAddons, ...directAddons];\n\n const addons = addonOptions.map(options => {\n const Addon = options.component;\n attachTechDocsAddonComponentData(Addon, options);\n return (\n <Suspense key={options.name} fallback={null}>\n <Addon />\n </Suspense>\n );\n });\n\n return import('../Router').then(({ TechDocsReaderRouter }) => (\n <TechDocsReaderRouter>\n <TechDocsReaderLayout\n withSearch={!config.withoutSearch}\n withHeader={!config.withoutHeader}\n />\n <TechDocsAddons>{addons}</TechDocsAddons>\n </TechDocsReaderRouter>\n ));\n },\n });\n },\n});\n\n/**\n * Component responsible for rendering techdocs on entity pages\n *\n * @alpha\n */\nconst techDocsEntityContent = EntityContentBlueprint.makeWithOverrides({\n inputs: {\n addons: createExtensionInput([AddonBlueprint.dataRefs.addon]),\n emptyState: createExtensionInput(\n [coreExtensionData.reactElement.optional()],\n {\n singleton: true,\n optional: true,\n },\n ),\n },\n factory(originalFactory, context) {\n const addonsApi = context.apis.get(techdocsAddonsApiRef);\n\n return originalFactory(\n {\n path: 'docs',\n title: 'TechDocs',\n routeRef: rootCatalogDocsRouteRef,\n loader: () => {\n // Merge addons from the API with old-style direct attachments\n const apiAddons = addonsApi?.getAddons() ?? [];\n const directAddons = context.inputs.addons.map(output =>\n output.get(AddonBlueprint.dataRefs.addon),\n );\n const addonOptions = [...apiAddons, ...directAddons];\n\n const addons = addonOptions.map(options => {\n const Addon = options.component;\n attachTechDocsAddonComponentData(Addon, options);\n return (\n <Suspense key={options.name} fallback={null}>\n <Addon />\n </Suspense>\n );\n });\n\n return import('../Router').then(({ EmbeddedDocsRouter }) => (\n <EmbeddedDocsRouter\n emptyState={context.inputs.emptyState?.get(\n coreExtensionData.reactElement,\n )}\n >\n <TechDocsAddons>{addons}</TechDocsAddons>\n </EmbeddedDocsRouter>\n ));\n },\n },\n context,\n );\n },\n});\n\nconst techDocsEntityContentEmptyState = createExtension({\n kind: 'empty-state',\n name: 'entity-content',\n attachTo: { id: 'entity-content:techdocs', input: 'emptyState' },\n output: [coreExtensionData.reactElement.optional()],\n factory: () => [],\n});\n\n/** @alpha */\nconst techDocsNavItem = NavItemBlueprint.make({\n params: {\n icon: LibraryBooks,\n title: 'Docs',\n routeRef: rootRouteRef,\n },\n});\n\n/** @alpha */\nexport default createFrontendPlugin({\n pluginId: 'techdocs',\n title: 'Docs',\n icon: <LibraryBooks />,\n info: { packageJson: () => import('../../package.json') },\n extensions: [\n techDocsClientApi,\n techDocsStorageApi,\n TechDocsAddonsApiExtension,\n techDocsNavItem,\n techDocsPage,\n techDocsReaderPage,\n techdocsEntityIconLink,\n techDocsEntityContent,\n techDocsEntityContentEmptyState,\n techDocsSearchResultListItemExtension,\n ],\n routes: {\n root: rootRouteRef,\n docRoot: rootDocsRouteRef,\n entityContent: rootCatalogDocsRouteRef,\n },\n});\n"],"names":[],"mappings":"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"}
@@ -4,7 +4,7 @@ import { Table } from '@backstage/core-components';
4
4
  import { useEntityList, EntityTextFilter } from '@backstage/plugin-catalog-react';
5
5
 
6
6
  function OffsetPaginatedDocsTable(props) {
7
- const { actions, columns, data, isLoading, options } = props;
7
+ const { actions, columns, data, isLoading, options, title } = props;
8
8
  const { updateFilters, setLimit, setOffset, limit, totalItems, offset } = useEntityList();
9
9
  const [page, setPage] = useState(
10
10
  offset && limit ? Math.floor(offset / limit) : 0
@@ -19,6 +19,7 @@ function OffsetPaginatedDocsTable(props) {
19
19
  return /* @__PURE__ */ jsx(
20
20
  Table,
21
21
  {
22
+ title,
22
23
  columns,
23
24
  data,
24
25
  options: {
@@ -1 +1 @@
1
- {"version":3,"file":"OffsetPaginatedDocsTable.esm.js","sources":["../../../../src/home/components/Tables/OffsetPaginatedDocsTable.tsx"],"sourcesContent":["/*\n * Copyright 2024 The Backstage Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { useState, useEffect } from 'react';\n\nimport { Table, TableProps } from '@backstage/core-components';\nimport { DocsTableRow } from './types';\nimport {\n EntityTextFilter,\n useEntityList,\n} from '@backstage/plugin-catalog-react';\n\n/**\n * @internal\n */\nexport function OffsetPaginatedDocsTable(props: TableProps<DocsTableRow>) {\n const { actions, columns, data, isLoading, options } = props;\n const { updateFilters, setLimit, setOffset, limit, totalItems, offset } =\n useEntityList();\n const [page, setPage] = useState(\n offset && limit ? Math.floor(offset / limit) : 0,\n );\n\n useEffect(() => {\n if (totalItems && page * limit >= totalItems) {\n setOffset!(Math.max(0, totalItems - limit));\n } else {\n setOffset!(Math.max(0, page * limit));\n }\n }, [setOffset, page, limit, totalItems]);\n\n return (\n <Table<DocsTableRow>\n columns={columns}\n data={data}\n options={{\n paginationPosition: 'both',\n pageSizeOptions: [5, 10, 20, 50, 100],\n pageSize: limit,\n emptyRowsWhenPaging: false,\n actionsColumnIndex: -1,\n ...options,\n }}\n actions={actions}\n onSearchChange={(searchText: string) =>\n updateFilters({\n text: searchText ? new EntityTextFilter(searchText) : undefined,\n })\n }\n page={page}\n onPageChange={newPage => {\n setPage(newPage);\n }}\n onRowsPerPageChange={pageSize => {\n setLimit(pageSize);\n }}\n totalCount={totalItems}\n localization={{ pagination: { labelDisplayedRows: '' } }}\n isLoading={isLoading}\n />\n );\n}\n"],"names":[],"mappings":";;;;;AA4BO,SAAS,yBAAyB,KAAA,EAAiC;AACxE,EAAA,MAAM,EAAE,OAAA,EAAS,OAAA,EAAS,IAAA,EAAM,SAAA,EAAW,SAAQ,GAAI,KAAA;AACvD,EAAA,MAAM,EAAE,eAAe,QAAA,EAAU,SAAA,EAAW,OAAO,UAAA,EAAY,MAAA,KAC7D,aAAA,EAAc;AAChB,EAAA,MAAM,CAAC,IAAA,EAAM,OAAO,CAAA,GAAI,QAAA;AAAA,IACtB,UAAU,KAAA,GAAQ,IAAA,CAAK,KAAA,CAAM,MAAA,GAAS,KAAK,CAAA,GAAI;AAAA,GACjD;AAEA,EAAA,SAAA,CAAU,MAAM;AACd,IAAA,IAAI,UAAA,IAAc,IAAA,GAAO,KAAA,IAAS,UAAA,EAAY;AAC5C,MAAA,SAAA,CAAW,IAAA,CAAK,GAAA,CAAI,CAAA,EAAG,UAAA,GAAa,KAAK,CAAC,CAAA;AAAA,IAC5C,CAAA,MAAO;AACL,MAAA,SAAA,CAAW,IAAA,CAAK,GAAA,CAAI,CAAA,EAAG,IAAA,GAAO,KAAK,CAAC,CAAA;AAAA,IACtC;AAAA,EACF,GAAG,CAAC,SAAA,EAAW,IAAA,EAAM,KAAA,EAAO,UAAU,CAAC,CAAA;AAEvC,EAAA,uBACE,GAAA;AAAA,IAAC,KAAA;AAAA,IAAA;AAAA,MACC,OAAA;AAAA,MACA,IAAA;AAAA,MACA,OAAA,EAAS;AAAA,QACP,kBAAA,EAAoB,MAAA;AAAA,QACpB,iBAAiB,CAAC,CAAA,EAAG,EAAA,EAAI,EAAA,EAAI,IAAI,GAAG,CAAA;AAAA,QACpC,QAAA,EAAU,KAAA;AAAA,QACV,mBAAA,EAAqB,KAAA;AAAA,QACrB,kBAAA,EAAoB,EAAA;AAAA,QACpB,GAAG;AAAA,OACL;AAAA,MACA,OAAA;AAAA,MACA,cAAA,EAAgB,CAAC,UAAA,KACf,aAAA,CAAc;AAAA,QACZ,IAAA,EAAM,UAAA,GAAa,IAAI,gBAAA,CAAiB,UAAU,CAAA,GAAI;AAAA,OACvD,CAAA;AAAA,MAEH,IAAA;AAAA,MACA,cAAc,CAAA,OAAA,KAAW;AACvB,QAAA,OAAA,CAAQ,OAAO,CAAA;AAAA,MACjB,CAAA;AAAA,MACA,qBAAqB,CAAA,QAAA,KAAY;AAC/B,QAAA,QAAA,CAAS,QAAQ,CAAA;AAAA,MACnB,CAAA;AAAA,MACA,UAAA,EAAY,UAAA;AAAA,MACZ,cAAc,EAAE,UAAA,EAAY,EAAE,kBAAA,EAAoB,IAAG,EAAE;AAAA,MACvD;AAAA;AAAA,GACF;AAEJ;;;;"}
1
+ {"version":3,"file":"OffsetPaginatedDocsTable.esm.js","sources":["../../../../src/home/components/Tables/OffsetPaginatedDocsTable.tsx"],"sourcesContent":["/*\n * Copyright 2024 The Backstage Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { useState, useEffect } from 'react';\n\nimport { Table, TableProps } from '@backstage/core-components';\nimport { DocsTableRow } from './types';\nimport {\n EntityTextFilter,\n useEntityList,\n} from '@backstage/plugin-catalog-react';\n\n/**\n * @internal\n */\nexport function OffsetPaginatedDocsTable(props: TableProps<DocsTableRow>) {\n const { actions, columns, data, isLoading, options, title } = props;\n const { updateFilters, setLimit, setOffset, limit, totalItems, offset } =\n useEntityList();\n const [page, setPage] = useState(\n offset && limit ? Math.floor(offset / limit) : 0,\n );\n\n useEffect(() => {\n if (totalItems && page * limit >= totalItems) {\n setOffset!(Math.max(0, totalItems - limit));\n } else {\n setOffset!(Math.max(0, page * limit));\n }\n }, [setOffset, page, limit, totalItems]);\n\n return (\n <Table<DocsTableRow>\n title={title}\n columns={columns}\n data={data}\n options={{\n paginationPosition: 'both',\n pageSizeOptions: [5, 10, 20, 50, 100],\n pageSize: limit,\n emptyRowsWhenPaging: false,\n actionsColumnIndex: -1,\n ...options,\n }}\n actions={actions}\n onSearchChange={(searchText: string) =>\n updateFilters({\n text: searchText ? new EntityTextFilter(searchText) : undefined,\n })\n }\n page={page}\n onPageChange={newPage => {\n setPage(newPage);\n }}\n onRowsPerPageChange={pageSize => {\n setLimit(pageSize);\n }}\n totalCount={totalItems}\n localization={{ pagination: { labelDisplayedRows: '' } }}\n isLoading={isLoading}\n />\n );\n}\n"],"names":[],"mappings":";;;;;AA4BO,SAAS,yBAAyB,KAAA,EAAiC;AACxE,EAAA,MAAM,EAAE,OAAA,EAAS,OAAA,EAAS,MAAM,SAAA,EAAW,OAAA,EAAS,OAAM,GAAI,KAAA;AAC9D,EAAA,MAAM,EAAE,eAAe,QAAA,EAAU,SAAA,EAAW,OAAO,UAAA,EAAY,MAAA,KAC7D,aAAA,EAAc;AAChB,EAAA,MAAM,CAAC,IAAA,EAAM,OAAO,CAAA,GAAI,QAAA;AAAA,IACtB,UAAU,KAAA,GAAQ,IAAA,CAAK,KAAA,CAAM,MAAA,GAAS,KAAK,CAAA,GAAI;AAAA,GACjD;AAEA,EAAA,SAAA,CAAU,MAAM;AACd,IAAA,IAAI,UAAA,IAAc,IAAA,GAAO,KAAA,IAAS,UAAA,EAAY;AAC5C,MAAA,SAAA,CAAW,IAAA,CAAK,GAAA,CAAI,CAAA,EAAG,UAAA,GAAa,KAAK,CAAC,CAAA;AAAA,IAC5C,CAAA,MAAO;AACL,MAAA,SAAA,CAAW,IAAA,CAAK,GAAA,CAAI,CAAA,EAAG,IAAA,GAAO,KAAK,CAAC,CAAA;AAAA,IACtC;AAAA,EACF,GAAG,CAAC,SAAA,EAAW,IAAA,EAAM,KAAA,EAAO,UAAU,CAAC,CAAA;AAEvC,EAAA,uBACE,GAAA;AAAA,IAAC,KAAA;AAAA,IAAA;AAAA,MACC,KAAA;AAAA,MACA,OAAA;AAAA,MACA,IAAA;AAAA,MACA,OAAA,EAAS;AAAA,QACP,kBAAA,EAAoB,MAAA;AAAA,QACpB,iBAAiB,CAAC,CAAA,EAAG,EAAA,EAAI,EAAA,EAAI,IAAI,GAAG,CAAA;AAAA,QACpC,QAAA,EAAU,KAAA;AAAA,QACV,mBAAA,EAAqB,KAAA;AAAA,QACrB,kBAAA,EAAoB,EAAA;AAAA,QACpB,GAAG;AAAA,OACL;AAAA,MACA,OAAA;AAAA,MACA,cAAA,EAAgB,CAAC,UAAA,KACf,aAAA,CAAc;AAAA,QACZ,IAAA,EAAM,UAAA,GAAa,IAAI,gBAAA,CAAiB,UAAU,CAAA,GAAI;AAAA,OACvD,CAAA;AAAA,MAEH,IAAA;AAAA,MACA,cAAc,CAAA,OAAA,KAAW;AACvB,QAAA,OAAA,CAAQ,OAAO,CAAA;AAAA,MACjB,CAAA;AAAA,MACA,qBAAqB,CAAA,QAAA,KAAY;AAC/B,QAAA,QAAA,CAAS,QAAQ,CAAA;AAAA,MACnB,CAAA;AAAA,MACA,UAAA,EAAY,UAAA;AAAA,MACZ,cAAc,EAAE,UAAA,EAAY,EAAE,kBAAA,EAAoB,IAAG,EAAE;AAAA,MACvD;AAAA;AAAA,GACF;AAEJ;;;;"}
@@ -1,5 +1,5 @@
1
1
  var name = "@backstage/plugin-techdocs";
2
- var version = "1.16.3-next.1";
2
+ var version = "1.17.0";
3
3
  var description = "The Backstage plugin that renders technical documentation for your components";
4
4
  var backstage = {
5
5
  role: "frontend-plugin",
@@ -100,13 +100,13 @@ var devDependencies = {
100
100
  "@types/react": "^18.0.0",
101
101
  react: "^18.0.2",
102
102
  "react-dom": "^18.0.2",
103
- "react-router-dom": "^6.3.0"
103
+ "react-router-dom": "^6.30.2"
104
104
  };
105
105
  var peerDependencies = {
106
106
  "@types/react": "^17.0.0 || ^18.0.0",
107
107
  react: "^17.0.0 || ^18.0.0",
108
108
  "react-dom": "^17.0.0 || ^18.0.0",
109
- "react-router-dom": "^6.3.0"
109
+ "react-router-dom": "^6.30.2"
110
110
  };
111
111
  var peerDependenciesMeta = {
112
112
  "@types/react": {
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@backstage/plugin-techdocs",
3
- "version": "1.16.3-next.1",
3
+ "version": "1.17.0",
4
4
  "description": "The Backstage plugin that renders technical documentation for your components",
5
5
  "backstage": {
6
6
  "role": "frontend-plugin",
@@ -71,22 +71,22 @@
71
71
  "test": "backstage-cli package test"
72
72
  },
73
73
  "dependencies": {
74
- "@backstage/catalog-client": "1.12.1",
75
- "@backstage/catalog-model": "1.7.6",
76
- "@backstage/config": "1.3.6",
77
- "@backstage/core-components": "0.18.7-next.1",
78
- "@backstage/core-plugin-api": "1.12.3-next.0",
79
- "@backstage/errors": "1.2.7",
80
- "@backstage/frontend-plugin-api": "0.14.0-next.1",
81
- "@backstage/integration": "1.20.0-next.1",
82
- "@backstage/integration-react": "1.2.15-next.1",
83
- "@backstage/plugin-auth-react": "0.1.24-next.0",
84
- "@backstage/plugin-catalog-react": "1.22.0-next.1",
85
- "@backstage/plugin-search-common": "1.2.22-next.0",
86
- "@backstage/plugin-search-react": "1.10.3-next.1",
87
- "@backstage/plugin-techdocs-common": "0.1.1",
88
- "@backstage/plugin-techdocs-react": "1.3.8-next.0",
89
- "@backstage/theme": "0.7.2-next.0",
74
+ "@backstage/catalog-client": "^1.13.0",
75
+ "@backstage/catalog-model": "^1.7.6",
76
+ "@backstage/config": "^1.3.6",
77
+ "@backstage/core-components": "^0.18.7",
78
+ "@backstage/core-plugin-api": "^1.12.3",
79
+ "@backstage/errors": "^1.2.7",
80
+ "@backstage/frontend-plugin-api": "^0.14.0",
81
+ "@backstage/integration": "^1.20.0",
82
+ "@backstage/integration-react": "^1.2.15",
83
+ "@backstage/plugin-auth-react": "^0.1.24",
84
+ "@backstage/plugin-catalog-react": "^2.0.0",
85
+ "@backstage/plugin-search-common": "^1.2.22",
86
+ "@backstage/plugin-search-react": "^1.10.3",
87
+ "@backstage/plugin-techdocs-common": "^0.1.1",
88
+ "@backstage/plugin-techdocs-react": "^1.3.8",
89
+ "@backstage/theme": "^0.7.2",
90
90
  "@material-ui/core": "^4.12.2",
91
91
  "@material-ui/icons": "^4.9.1",
92
92
  "@material-ui/lab": "4.0.0-alpha.61",
@@ -99,12 +99,12 @@
99
99
  "react-use": "^17.2.4"
100
100
  },
101
101
  "devDependencies": {
102
- "@backstage/cli": "0.35.4-next.1",
103
- "@backstage/core-app-api": "1.19.5-next.0",
104
- "@backstage/dev-utils": "1.1.20-next.1",
105
- "@backstage/plugin-catalog": "1.33.0-next.1",
106
- "@backstage/plugin-techdocs-module-addons-contrib": "1.1.33-next.1",
107
- "@backstage/test-utils": "1.7.15-next.1",
102
+ "@backstage/cli": "^0.35.4",
103
+ "@backstage/core-app-api": "^1.19.5",
104
+ "@backstage/dev-utils": "^1.1.20",
105
+ "@backstage/plugin-catalog": "^1.33.0",
106
+ "@backstage/plugin-techdocs-module-addons-contrib": "^1.1.33",
107
+ "@backstage/test-utils": "^1.7.15",
108
108
  "@testing-library/dom": "^10.0.0",
109
109
  "@testing-library/jest-dom": "^6.0.0",
110
110
  "@testing-library/react": "^16.0.0",
@@ -113,13 +113,13 @@
113
113
  "@types/react": "^18.0.0",
114
114
  "react": "^18.0.2",
115
115
  "react-dom": "^18.0.2",
116
- "react-router-dom": "^6.3.0"
116
+ "react-router-dom": "^6.30.2"
117
117
  },
118
118
  "peerDependencies": {
119
119
  "@types/react": "^17.0.0 || ^18.0.0",
120
120
  "react": "^17.0.0 || ^18.0.0",
121
121
  "react-dom": "^17.0.0 || ^18.0.0",
122
- "react-router-dom": "^6.3.0"
122
+ "react-router-dom": "^6.30.2"
123
123
  },
124
124
  "peerDependenciesMeta": {
125
125
  "@types/react": {