@backstage/plugin-techdocs 0.0.0-nightly-20260829022506 → 0.0.0-nightly-20260904022803

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,29 +1,49 @@
1
1
  # @backstage/plugin-techdocs
2
2
 
3
- ## 0.0.0-nightly-20260829022506
3
+ ## 0.0.0-nightly-20260904022803
4
4
 
5
5
  ### Patch Changes
6
6
 
7
+ - d421187: Reduced the initial app bundle size by loading page and optional UI implementations only when their extensions render.
7
8
  - 9cb79f5: Use the catalog presentation API for TechDocs document titles and owner labels so entity display names are consistent with the rest of Backstage.
8
9
  - Updated dependencies
9
- - @backstage/ui@0.0.0-nightly-20260829022506
10
- - @backstage/plugin-catalog-react@0.0.0-nightly-20260829022506
11
- - @backstage/integration@0.0.0-nightly-20260829022506
12
- - @backstage/core-components@0.0.0-nightly-20260829022506
13
- - @backstage/integration-react@0.0.0-nightly-20260829022506
14
- - @backstage/core-plugin-api@1.12.9
15
- - @backstage/plugin-search-react@0.0.0-nightly-20260829022506
16
- - @backstage/plugin-auth-react@0.0.0-nightly-20260829022506
17
- - @backstage/plugin-techdocs-react@0.0.0-nightly-20260829022506
18
- - @backstage/catalog-client@1.16.1
19
- - @backstage/catalog-model@1.10.0
10
+ - @backstage/core-components@0.0.0-nightly-20260904022803
11
+ - @backstage/ui@0.0.0-nightly-20260904022803
12
+ - @backstage/integration@0.0.0-nightly-20260904022803
13
+ - @backstage/frontend-plugin-api@0.0.0-nightly-20260904022803
14
+ - @backstage/plugin-catalog-react@0.0.0-nightly-20260904022803
15
+ - @backstage/integration-react@0.0.0-nightly-20260904022803
16
+ - @backstage/plugin-auth-react@0.0.0-nightly-20260904022803
17
+ - @backstage/plugin-search-react@0.0.0-nightly-20260904022803
18
+ - @backstage/plugin-techdocs-react@0.0.0-nightly-20260904022803
19
+ - @backstage/core-plugin-api@0.0.0-nightly-20260904022803
20
+ - @backstage/catalog-client@0.0.0-nightly-20260904022803
20
21
  - @backstage/config@1.3.8
22
+ - @backstage/catalog-model@1.10.0
21
23
  - @backstage/errors@1.3.1
22
- - @backstage/frontend-plugin-api@0.18.0
23
24
  - @backstage/theme@0.7.3
24
25
  - @backstage/plugin-search-common@1.2.24
25
26
  - @backstage/plugin-techdocs-common@0.1.1
26
27
 
28
+ ## 1.18.1-next.1
29
+
30
+ ### Patch Changes
31
+
32
+ - d421187: Reduced the initial app bundle size by loading page and optional UI implementations only when their extensions render.
33
+ - 9cb79f5: Use the catalog presentation API for TechDocs document titles and owner labels so entity display names are consistent with the rest of Backstage.
34
+ - Updated dependencies
35
+ - @backstage/core-components@0.18.14-next.1
36
+ - @backstage/integration@2.1.2-next.0
37
+ - @backstage/frontend-plugin-api@0.18.1-next.0
38
+ - @backstage/plugin-catalog-react@3.2.3-next.1
39
+ - @backstage/ui@0.18.0-next.1
40
+ - @backstage/integration-react@1.2.22-next.0
41
+ - @backstage/core-plugin-api@1.12.10-next.0
42
+ - @backstage/plugin-search-react@1.11.8-next.1
43
+ - @backstage/plugin-techdocs-react@1.3.15-next.1
44
+ - @backstage/catalog-client@1.16.2-next.0
45
+ - @backstage/plugin-auth-react@0.1.31-next.1
46
+
27
47
  ## 1.18.1-next.0
28
48
 
29
49
  ### Patch Changes
@@ -0,0 +1,32 @@
1
+ import { jsxs, jsx } from 'react/jsx-runtime';
2
+ import { Suspense } from 'react';
3
+ import { TechDocsAddons } from '@backstage/plugin-techdocs-react';
4
+ import { attachTechDocsAddonComponentData } from '@backstage/plugin-techdocs-react/alpha';
5
+ import { TechDocsReaderRouter, EmbeddedDocsRouter } from '../../Router.esm.js';
6
+ import { TechDocsReaderLayout } from './TechDocsReaderLayout.esm.js';
7
+
8
+ function Addons(props) {
9
+ return /* @__PURE__ */ jsx(TechDocsAddons, { children: props.options.map((options) => {
10
+ const Addon = options.component;
11
+ attachTechDocsAddonComponentData(Addon, options);
12
+ return /* @__PURE__ */ jsx(Suspense, { fallback: null, children: /* @__PURE__ */ jsx(Addon, {}) }, options.name);
13
+ }) });
14
+ }
15
+ function TechDocsReaderPage(props) {
16
+ return /* @__PURE__ */ jsxs(TechDocsReaderRouter, { children: [
17
+ /* @__PURE__ */ jsx(
18
+ TechDocsReaderLayout,
19
+ {
20
+ withSearch: props.withSearch,
21
+ withHeader: props.withHeader
22
+ }
23
+ ),
24
+ /* @__PURE__ */ jsx(Addons, { options: props.addonOptions })
25
+ ] });
26
+ }
27
+ function TechDocsEntityContent(props) {
28
+ return /* @__PURE__ */ jsx(EmbeddedDocsRouter, { emptyState: props.emptyState, children: /* @__PURE__ */ jsx(Addons, { options: props.addonOptions }) });
29
+ }
30
+
31
+ export { TechDocsEntityContent, TechDocsReaderPage };
32
+ //# sourceMappingURL=TechDocsReaderPage.esm.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"TechDocsReaderPage.esm.js","sources":["../../../src/alpha/components/TechDocsReaderPage.tsx"],"sourcesContent":["/*\n * Copyright 2026 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 { ReactElement, Suspense } from 'react';\nimport {\n TechDocsAddons,\n type TechDocsAddonOptions,\n} from '@backstage/plugin-techdocs-react';\nimport { attachTechDocsAddonComponentData } from '@backstage/plugin-techdocs-react/alpha';\nimport { EmbeddedDocsRouter, TechDocsReaderRouter } from '../../Router';\nimport { TechDocsReaderLayout } from './TechDocsReaderLayout';\n\nfunction Addons(props: { options: TechDocsAddonOptions[] }) {\n return (\n <TechDocsAddons>\n {props.options.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 </TechDocsAddons>\n );\n}\n\nexport function TechDocsReaderPage(props: {\n addonOptions: TechDocsAddonOptions[];\n withSearch: boolean;\n withHeader: boolean;\n}) {\n return (\n <TechDocsReaderRouter>\n <TechDocsReaderLayout\n withSearch={props.withSearch}\n withHeader={props.withHeader}\n />\n <Addons options={props.addonOptions} />\n </TechDocsReaderRouter>\n );\n}\n\nexport function TechDocsEntityContent(props: {\n addonOptions: TechDocsAddonOptions[];\n emptyState?: ReactElement;\n}) {\n return (\n <EmbeddedDocsRouter emptyState={props.emptyState}>\n <Addons options={props.addonOptions} />\n </EmbeddedDocsRouter>\n );\n}\n"],"names":[],"mappings":";;;;;;;AAyBA,SAAS,OAAO,KAAA,EAA4C;AAC1D,EAAA,uBACE,GAAA,CAAC,cAAA,EAAA,EACE,QAAA,EAAA,KAAA,CAAM,OAAA,CAAQ,IAAI,CAAA,OAAA,KAAW;AAC5B,IAAA,MAAM,QAAQ,OAAA,CAAQ,SAAA;AACtB,IAAA,gCAAA,CAAiC,OAAO,OAAO,CAAA;AAC/C,IAAA,uBACE,GAAA,CAAC,YAA4B,QAAA,EAAU,IAAA,EACrC,8BAAC,KAAA,EAAA,EAAM,CAAA,EAAA,EADM,QAAQ,IAEvB,CAAA;AAAA,EAEJ,CAAC,CAAA,EACH,CAAA;AAEJ;AAEO,SAAS,mBAAmB,KAAA,EAIhC;AACD,EAAA,4BACG,oBAAA,EAAA,EACC,QAAA,EAAA;AAAA,oBAAA,GAAA;AAAA,MAAC,oBAAA;AAAA,MAAA;AAAA,QACC,YAAY,KAAA,CAAM,UAAA;AAAA,QAClB,YAAY,KAAA,CAAM;AAAA;AAAA,KACpB;AAAA,oBACA,GAAA,CAAC,MAAA,EAAA,EAAO,OAAA,EAAS,KAAA,CAAM,YAAA,EAAc;AAAA,GAAA,EACvC,CAAA;AAEJ;AAEO,SAAS,sBAAsB,KAAA,EAGnC;AACD,EAAA,uBACE,GAAA,CAAC,kBAAA,EAAA,EAAmB,UAAA,EAAY,KAAA,CAAM,UAAA,EACpC,8BAAC,MAAA,EAAA,EAAO,OAAA,EAAS,KAAA,CAAM,YAAA,EAAc,CAAA,EACvC,CAAA;AAEJ;;;;"}
package/dist/alpha.esm.js CHANGED
@@ -1,19 +1,17 @@
1
- import { jsx, jsxs } from 'react/jsx-runtime';
2
- import { Suspense } from 'react';
1
+ import { jsx } from 'react/jsx-runtime';
3
2
  import { z } from 'zod/v4';
4
3
  import { RiArticleLine } from '@remixicon/react';
5
4
  import { ApiBlueprint, PageBlueprint, createExtensionInput, coreExtensionData, createExtension, PluginHeaderActionBlueprint, createFrontendPlugin } from '@backstage/frontend-plugin-api';
6
5
  import { fetchApiRef, discoveryApiRef, configApiRef } from '@backstage/core-plugin-api';
7
6
  import { EntityIconLinkBlueprint, EntityContentBlueprint } from '@backstage/plugin-catalog-react/alpha';
8
7
  import { SearchResultListItemBlueprint, SearchFilterResultTypeBlueprint } from '@backstage/plugin-search-react/alpha';
9
- import { AddonBlueprint, attachTechDocsAddonComponentData } from '@backstage/plugin-techdocs-react/alpha';
8
+ import { AddonBlueprint } from '@backstage/plugin-techdocs-react/alpha';
10
9
  import { techdocsAddonsApiRef, TechDocsAddonsApiExtension } from './alpha/addonsApi.esm.js';
11
10
  import { TechDocsStorageClient, TechDocsClient } from './client.esm.js';
12
11
  import { rootRouteRef, rootDocsRouteRef, rootCatalogDocsRouteRef } from './routes.esm.js';
13
- import { TechDocsReaderLayout } from './alpha/components/TechDocsReaderLayout.esm.js';
14
- import { techdocsStorageApiRef, techdocsApiRef, TechDocsAddons } from '@backstage/plugin-techdocs-react';
12
+ import { techdocsStorageApiRef, techdocsApiRef } from '@backstage/plugin-techdocs-react';
15
13
  import { useTechdocsReaderIconLinkProps } from './alpha/hooks/useTechdocsReaderIconLinkProps.esm.js';
16
- import { DocsIcon, SupportButton } from '@backstage/core-components';
14
+ import { DocsIcon } from '@backstage/core-components';
17
15
  export { techdocsTranslationRef } from './translation.esm.js';
18
16
 
19
17
  const techdocsEntityIconLink = EntityIconLinkBlueprint.make({
@@ -112,21 +110,15 @@ const techDocsReaderPage = PageBlueprint.makeWithOverrides({
112
110
  (output) => output.get(AddonBlueprint.dataRefs.addon)
113
111
  );
114
112
  const addonOptions = [...apiAddons, ...directAddons];
115
- const addons = addonOptions.map((options) => {
116
- const Addon = options.component;
117
- attachTechDocsAddonComponentData(Addon, options);
118
- return /* @__PURE__ */ jsx(Suspense, { fallback: null, children: /* @__PURE__ */ jsx(Addon, {}) }, options.name);
119
- });
120
- return import('./Router.esm.js').then(({ TechDocsReaderRouter }) => /* @__PURE__ */ jsxs(TechDocsReaderRouter, { children: [
121
- /* @__PURE__ */ jsx(
122
- TechDocsReaderLayout,
123
- {
124
- withSearch: !config.withoutSearch,
125
- withHeader: !config.withoutHeader
126
- }
127
- ),
128
- /* @__PURE__ */ jsx(TechDocsAddons, { children: addons })
129
- ] }));
113
+ const { TechDocsReaderPage } = await import('./alpha/components/TechDocsReaderPage.esm.js');
114
+ return /* @__PURE__ */ jsx(
115
+ TechDocsReaderPage,
116
+ {
117
+ addonOptions,
118
+ withSearch: !config.withoutSearch,
119
+ withHeader: !config.withoutHeader
120
+ }
121
+ );
130
122
  }
131
123
  });
132
124
  }
@@ -156,18 +148,13 @@ const techDocsEntityContent = EntityContentBlueprint.makeWithOverrides({
156
148
  (output) => output.get(AddonBlueprint.dataRefs.addon)
157
149
  );
158
150
  const addonOptions = [...apiAddons, ...directAddons];
159
- const addons = addonOptions.map((options) => {
160
- const Addon = options.component;
161
- attachTechDocsAddonComponentData(Addon, options);
162
- return /* @__PURE__ */ jsx(Suspense, { fallback: null, children: /* @__PURE__ */ jsx(Addon, {}) }, options.name);
163
- });
164
- return import('./Router.esm.js').then(({ EmbeddedDocsRouter }) => /* @__PURE__ */ jsx(
165
- EmbeddedDocsRouter,
151
+ return import('./alpha/components/TechDocsReaderPage.esm.js').then((m) => /* @__PURE__ */ jsx(
152
+ m.TechDocsEntityContent,
166
153
  {
154
+ addonOptions,
167
155
  emptyState: context.inputs.emptyState?.get(
168
156
  coreExtensionData.reactElement
169
- ),
170
- children: /* @__PURE__ */ jsx(TechDocsAddons, { children: addons })
157
+ )
171
158
  }
172
159
  ));
173
160
  }
@@ -185,7 +172,7 @@ const techDocsEntityContentEmptyState = createExtension({
185
172
  });
186
173
  const techDocsSupportAction = PluginHeaderActionBlueprint.make({
187
174
  params: (defineParams) => defineParams({
188
- loader: async () => /* @__PURE__ */ jsx(SupportButton, { children: "Discover documentation in your ecosystem." })
175
+ loader: () => import('@backstage/core-components').then(({ SupportButton }) => /* @__PURE__ */ jsx(SupportButton, { children: "Discover documentation in your ecosystem." }))
189
176
  })
190
177
  });
191
178
  var index = createFrontendPlugin({
@@ -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 { z } from 'zod/v4';\nimport { RiArticleLine } from '@remixicon/react';\nimport {\n createFrontendPlugin,\n ApiBlueprint,\n PageBlueprint,\n PluginHeaderActionBlueprint,\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 {\n SearchFilterResultTypeBlueprint,\n SearchResultListItemBlueprint,\n} 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 './components/TechDocsReaderLayout';\nimport {\n TechDocsAddons,\n techdocsApiRef,\n techdocsStorageApiRef,\n} from '@backstage/plugin-techdocs-react';\n\nimport { useTechdocsReaderIconLinkProps } from './hooks/useTechdocsReaderIconLinkProps';\nimport { DocsIcon, SupportButton } 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 configSchema: {\n title: z.string().optional(),\n lineClamp: z.number().default(5),\n asLink: z.boolean().default(true),\n asListItem: z.boolean().default(true),\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\nconst techDocsSearchFilterResultTypeExtension =\n SearchFilterResultTypeBlueprint.make({\n params: {\n value: 'techdocs',\n name: 'Documentation',\n icon: <DocsIcon />,\n },\n });\n\n/**\n * Responsible for rendering the provided router element\n *\n * @alpha\n */\nconst techDocsPage = PageBlueprint.makeWithOverrides({\n configSchema: {\n initialFilter: z.enum(['all', 'owned', 'starred']).default('owned'),\n },\n factory(originalFactory, { config }) {\n return originalFactory({\n path: '/docs',\n routeRef: rootRouteRef,\n title: 'Docs',\n icon: <RiArticleLine />,\n loader: () =>\n import('./components/TechDocsIndexPageContent').then(m => (\n <m.TechDocsIndexPageContent initialFilter={config.initialFilter} />\n )),\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 configSchema: {\n withoutSearch: z.boolean().default(false),\n withoutHeader: z.boolean().default(false),\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 group: 'documentation',\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\nconst techDocsSupportAction = PluginHeaderActionBlueprint.make({\n params: defineParams =>\n defineParams({\n loader: async () => (\n <SupportButton>Discover documentation in your ecosystem.</SupportButton>\n ),\n }),\n});\n\n/** @alpha */\nexport default createFrontendPlugin({\n pluginId: 'techdocs',\n title: 'Documentation',\n icon: <RiArticleLine />,\n info: { packageJson: () => import('../../package.json') },\n extensions: [\n techDocsClientApi,\n techDocsStorageApi,\n TechDocsAddonsApiExtension,\n techDocsSupportAction,\n techDocsPage,\n techDocsReaderPage,\n techdocsEntityIconLink,\n techDocsEntityContent,\n techDocsEntityContentEmptyState,\n techDocsSearchFilterResultTypeExtension,\n techDocsSearchResultListItemExtension,\n ],\n routes: {\n root: rootRouteRef,\n docRoot: rootDocsRouteRef,\n entityContent: rootCatalogDocsRouteRef,\n },\n});\n\n/** @alpha */\nexport { techdocsTranslationRef } from '../translation';\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 { z } from 'zod/v4';\nimport { RiArticleLine } from '@remixicon/react';\nimport {\n createFrontendPlugin,\n ApiBlueprint,\n PageBlueprint,\n PluginHeaderActionBlueprint,\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 {\n SearchFilterResultTypeBlueprint,\n SearchResultListItemBlueprint,\n} from '@backstage/plugin-search-react/alpha';\nimport { AddonBlueprint } 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 {\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 configSchema: {\n title: z.string().optional(),\n lineClamp: z.number().default(5),\n asLink: z.boolean().default(true),\n asListItem: z.boolean().default(true),\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\nconst techDocsSearchFilterResultTypeExtension =\n SearchFilterResultTypeBlueprint.make({\n params: {\n value: 'techdocs',\n name: 'Documentation',\n icon: <DocsIcon />,\n },\n });\n\n/**\n * Responsible for rendering the provided router element\n *\n * @alpha\n */\nconst techDocsPage = PageBlueprint.makeWithOverrides({\n configSchema: {\n initialFilter: z.enum(['all', 'owned', 'starred']).default('owned'),\n },\n factory(originalFactory, { config }) {\n return originalFactory({\n path: '/docs',\n routeRef: rootRouteRef,\n title: 'Docs',\n icon: <RiArticleLine />,\n loader: () =>\n import('./components/TechDocsIndexPageContent').then(m => (\n <m.TechDocsIndexPageContent initialFilter={config.initialFilter} />\n )),\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 configSchema: {\n withoutSearch: z.boolean().default(false),\n withoutHeader: z.boolean().default(false),\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 const { TechDocsReaderPage } = await import(\n './components/TechDocsReaderPage'\n );\n return (\n <TechDocsReaderPage\n addonOptions={addonOptions}\n withSearch={!config.withoutSearch}\n withHeader={!config.withoutHeader}\n />\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 group: 'documentation',\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 return import('./components/TechDocsReaderPage').then(m => (\n <m.TechDocsEntityContent\n addonOptions={addonOptions}\n emptyState={context.inputs.emptyState?.get(\n coreExtensionData.reactElement,\n )}\n />\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\nconst techDocsSupportAction = PluginHeaderActionBlueprint.make({\n params: defineParams =>\n defineParams({\n loader: () =>\n import('@backstage/core-components').then(({ SupportButton }) => (\n <SupportButton>\n Discover documentation in your ecosystem.\n </SupportButton>\n )),\n }),\n});\n\n/** @alpha */\nexport default createFrontendPlugin({\n pluginId: 'techdocs',\n title: 'Documentation',\n icon: <RiArticleLine />,\n info: { packageJson: () => import('../../package.json') },\n extensions: [\n techDocsClientApi,\n techDocsStorageApi,\n TechDocsAddonsApiExtension,\n techDocsSupportAction,\n techDocsPage,\n techDocsReaderPage,\n techdocsEntityIconLink,\n techDocsEntityContent,\n techDocsEntityContentEmptyState,\n techDocsSearchFilterResultTypeExtension,\n techDocsSearchResultListItemExtension,\n ],\n routes: {\n root: rootRouteRef,\n docRoot: rootDocsRouteRef,\n entityContent: rootCatalogDocsRouteRef,\n },\n});\n\n/** @alpha */\nexport { techdocsTranslationRef } from '../translation';\n"],"names":[],"mappings":"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"}
@@ -1,5 +1,5 @@
1
1
  var name = "@backstage/plugin-techdocs";
2
- var version = "0.0.0-nightly-20260829022506";
2
+ var version = "0.0.0-nightly-20260904022803";
3
3
  var description = "The Backstage plugin that renders technical documentation for your components";
4
4
  var backstage = {
5
5
  role: "frontend-plugin",
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@backstage/plugin-techdocs",
3
- "version": "0.0.0-nightly-20260829022506",
3
+ "version": "0.0.0-nightly-20260904022803",
4
4
  "description": "The Backstage plugin that renders technical documentation for your components",
5
5
  "backstage": {
6
6
  "role": "frontend-plugin",
@@ -71,23 +71,23 @@
71
71
  "test": "backstage-cli package test"
72
72
  },
73
73
  "dependencies": {
74
- "@backstage/catalog-client": "1.16.1",
74
+ "@backstage/catalog-client": "0.0.0-nightly-20260904022803",
75
75
  "@backstage/catalog-model": "1.10.0",
76
76
  "@backstage/config": "1.3.8",
77
- "@backstage/core-components": "0.0.0-nightly-20260829022506",
78
- "@backstage/core-plugin-api": "1.12.9",
77
+ "@backstage/core-components": "0.0.0-nightly-20260904022803",
78
+ "@backstage/core-plugin-api": "0.0.0-nightly-20260904022803",
79
79
  "@backstage/errors": "1.3.1",
80
- "@backstage/frontend-plugin-api": "0.18.0",
81
- "@backstage/integration": "0.0.0-nightly-20260829022506",
82
- "@backstage/integration-react": "0.0.0-nightly-20260829022506",
83
- "@backstage/plugin-auth-react": "0.0.0-nightly-20260829022506",
84
- "@backstage/plugin-catalog-react": "0.0.0-nightly-20260829022506",
80
+ "@backstage/frontend-plugin-api": "0.0.0-nightly-20260904022803",
81
+ "@backstage/integration": "0.0.0-nightly-20260904022803",
82
+ "@backstage/integration-react": "0.0.0-nightly-20260904022803",
83
+ "@backstage/plugin-auth-react": "0.0.0-nightly-20260904022803",
84
+ "@backstage/plugin-catalog-react": "0.0.0-nightly-20260904022803",
85
85
  "@backstage/plugin-search-common": "1.2.24",
86
- "@backstage/plugin-search-react": "0.0.0-nightly-20260829022506",
86
+ "@backstage/plugin-search-react": "0.0.0-nightly-20260904022803",
87
87
  "@backstage/plugin-techdocs-common": "0.1.1",
88
- "@backstage/plugin-techdocs-react": "0.0.0-nightly-20260829022506",
88
+ "@backstage/plugin-techdocs-react": "0.0.0-nightly-20260904022803",
89
89
  "@backstage/theme": "0.7.3",
90
- "@backstage/ui": "0.0.0-nightly-20260829022506",
90
+ "@backstage/ui": "0.0.0-nightly-20260904022803",
91
91
  "@material-ui/core": "^4.12.2",
92
92
  "@material-ui/icons": "^4.9.1",
93
93
  "@material-ui/lab": "4.0.0-alpha.61",
@@ -102,12 +102,12 @@
102
102
  "zod": "^4.0.0"
103
103
  },
104
104
  "devDependencies": {
105
- "@backstage/cli": "0.0.0-nightly-20260829022506",
106
- "@backstage/core-app-api": "0.0.0-nightly-20260829022506",
107
- "@backstage/dev-utils": "0.0.0-nightly-20260829022506",
108
- "@backstage/plugin-catalog": "0.0.0-nightly-20260829022506",
109
- "@backstage/plugin-techdocs-module-addons-contrib": "0.0.0-nightly-20260829022506",
110
- "@backstage/test-utils": "0.0.0-nightly-20260829022506",
105
+ "@backstage/cli": "0.0.0-nightly-20260904022803",
106
+ "@backstage/core-app-api": "0.0.0-nightly-20260904022803",
107
+ "@backstage/dev-utils": "0.0.0-nightly-20260904022803",
108
+ "@backstage/plugin-catalog": "0.0.0-nightly-20260904022803",
109
+ "@backstage/plugin-techdocs-module-addons-contrib": "0.0.0-nightly-20260904022803",
110
+ "@backstage/test-utils": "0.0.0-nightly-20260904022803",
111
111
  "@testing-library/dom": "^10.0.0",
112
112
  "@testing-library/jest-dom": "^6.0.0",
113
113
  "@testing-library/react": "^16.0.0",