@techdocs/cli 1.10.8-next.0 → 1.11.0-next.1

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.
Files changed (98) hide show
  1. package/CHANGELOG.md +11 -0
  2. package/dist/commands/generate/generate.cjs.js +2 -0
  3. package/dist/commands/generate/generate.cjs.js.map +1 -1
  4. package/dist/commands/index.cjs.js +4 -0
  5. package/dist/commands/index.cjs.js.map +1 -1
  6. package/dist/embedded-app/.config-schema.json +85 -85
  7. package/dist/embedded-app/index.html +1 -1
  8. package/dist/embedded-app/index.html.tmpl +1 -1
  9. package/dist/embedded-app/static/{1659.d3caa6c5.chunk.js → 1659.d55e1e7e.chunk.js} +2 -2
  10. package/dist/embedded-app/static/{1659.d3caa6c5.chunk.js.map → 1659.d55e1e7e.chunk.js.map} +1 -1
  11. package/dist/embedded-app/static/1749.1749.9bd71ea7.css +2 -0
  12. package/dist/embedded-app/static/1749.1749.9bd71ea7.css.map +1 -0
  13. package/dist/embedded-app/static/1749.3363c017.chunk.js +2 -0
  14. package/dist/embedded-app/static/1749.3363c017.chunk.js.map +1 -0
  15. package/dist/embedded-app/static/1994.1994.c97915be.css +2 -0
  16. package/dist/embedded-app/static/1994.1994.c97915be.css.map +1 -0
  17. package/dist/embedded-app/static/1994.807cdf9c.chunk.js +2 -0
  18. package/dist/embedded-app/static/1994.807cdf9c.chunk.js.map +1 -0
  19. package/dist/embedded-app/static/2295.2295.a6e701d5.css +2 -0
  20. package/dist/embedded-app/static/2295.2295.a6e701d5.css.map +1 -0
  21. package/dist/embedded-app/static/2295.affbb231.chunk.js +5 -0
  22. package/dist/embedded-app/static/2295.affbb231.chunk.js.map +1 -0
  23. package/dist/embedded-app/static/{4587.e2b4e8d1.chunk.js → 4587.5bdade78.chunk.js} +2 -2
  24. package/dist/embedded-app/static/{4587.e2b4e8d1.chunk.js.map → 4587.5bdade78.chunk.js.map} +1 -1
  25. package/dist/embedded-app/static/4648.4648.5cd21ea2.css +2 -0
  26. package/dist/embedded-app/static/4648.4648.5cd21ea2.css.map +1 -0
  27. package/dist/embedded-app/static/4648.f4e33ba3.chunk.js +2 -0
  28. package/dist/embedded-app/static/4648.f4e33ba3.chunk.js.map +1 -0
  29. package/dist/embedded-app/static/6138.6138.22c5a34e.css +2 -0
  30. package/dist/embedded-app/static/6138.6138.22c5a34e.css.map +1 -0
  31. package/dist/embedded-app/static/6138.9f69a7c7.chunk.js +2 -0
  32. package/dist/embedded-app/static/6138.9f69a7c7.chunk.js.map +1 -0
  33. package/dist/embedded-app/static/7203.68fb62b5.chunk.js +2 -0
  34. package/dist/embedded-app/static/7203.68fb62b5.chunk.js.map +1 -0
  35. package/dist/embedded-app/static/7203.7203.a1eea317.css +2 -0
  36. package/dist/embedded-app/static/7203.7203.a1eea317.css.map +1 -0
  37. package/dist/embedded-app/static/9050.5b9e5c7b.chunk.js +2 -0
  38. package/dist/embedded-app/static/9050.5b9e5c7b.chunk.js.map +1 -0
  39. package/dist/embedded-app/static/9050.9050.0395ba44.css +2 -0
  40. package/dist/embedded-app/static/9050.9050.0395ba44.css.map +1 -0
  41. package/dist/embedded-app/static/9230.306648d7.chunk.js +2 -0
  42. package/dist/embedded-app/static/9230.306648d7.chunk.js.map +1 -0
  43. package/dist/embedded-app/static/9230.9230.219d1ca0.css +2 -0
  44. package/dist/embedded-app/static/9230.9230.219d1ca0.css.map +1 -0
  45. package/dist/embedded-app/static/main.b226bb87.css +2 -0
  46. package/dist/embedded-app/static/main.b226bb87.css.map +1 -0
  47. package/dist/embedded-app/static/main.bf467822.js +523 -0
  48. package/dist/embedded-app/static/main.bf467822.js.map +1 -0
  49. package/dist/embedded-app/static/module-react-aria-components.92fb2156.js +2 -0
  50. package/dist/embedded-app/static/{module-react-aria-components.d7b73980.js.map → module-react-aria-components.92fb2156.js.map} +1 -1
  51. package/dist/embedded-app/static/{module-react-aria.ee611fa4.js → module-react-aria.e3e38de1.js} +2 -2
  52. package/dist/embedded-app/static/{module-react-aria.ee611fa4.js.map → module-react-aria.e3e38de1.js.map} +1 -1
  53. package/dist/embedded-app/static/module-remixicon.341273f1.js.map +1 -1
  54. package/dist/embedded-app/static/{runtime.c1e06c6b.js → runtime.4ae6f2de.js} +2 -2
  55. package/dist/embedded-app/static/{runtime.c1e06c6b.js.map → runtime.4ae6f2de.js.map} +1 -1
  56. package/dist/embedded-app/static/vendor.d9ce079c.js +16 -0
  57. package/dist/embedded-app/static/vendor.d9ce079c.js.map +1 -0
  58. package/dist/package.json.cjs.js +1 -1
  59. package/package.json +5 -5
  60. package/dist/embedded-app/static/1749.1749.8baddcfb.css +0 -2
  61. package/dist/embedded-app/static/1749.1749.8baddcfb.css.map +0 -1
  62. package/dist/embedded-app/static/1749.be57cbd0.chunk.js +0 -2
  63. package/dist/embedded-app/static/1749.be57cbd0.chunk.js.map +0 -1
  64. package/dist/embedded-app/static/1994.1994.ffd8676b.css +0 -2
  65. package/dist/embedded-app/static/1994.1994.ffd8676b.css.map +0 -1
  66. package/dist/embedded-app/static/1994.2981f452.chunk.js +0 -2
  67. package/dist/embedded-app/static/1994.2981f452.chunk.js.map +0 -1
  68. package/dist/embedded-app/static/2295.2295.936ed793.css +0 -2
  69. package/dist/embedded-app/static/2295.2295.936ed793.css.map +0 -1
  70. package/dist/embedded-app/static/2295.ee548019.chunk.js +0 -5
  71. package/dist/embedded-app/static/2295.ee548019.chunk.js.map +0 -1
  72. package/dist/embedded-app/static/4648.07315500.chunk.js +0 -2
  73. package/dist/embedded-app/static/4648.07315500.chunk.js.map +0 -1
  74. package/dist/embedded-app/static/4648.4648.c470d11c.css +0 -2
  75. package/dist/embedded-app/static/4648.4648.c470d11c.css.map +0 -1
  76. package/dist/embedded-app/static/6138.6138.e2289b5d.css +0 -2
  77. package/dist/embedded-app/static/6138.6138.e2289b5d.css.map +0 -1
  78. package/dist/embedded-app/static/6138.ba8a0164.chunk.js +0 -2
  79. package/dist/embedded-app/static/6138.ba8a0164.chunk.js.map +0 -1
  80. package/dist/embedded-app/static/7203.6919bbc3.chunk.js +0 -2
  81. package/dist/embedded-app/static/7203.6919bbc3.chunk.js.map +0 -1
  82. package/dist/embedded-app/static/7203.7203.cefa9a1b.css +0 -2
  83. package/dist/embedded-app/static/7203.7203.cefa9a1b.css.map +0 -1
  84. package/dist/embedded-app/static/9050.164f67fc.chunk.js +0 -2
  85. package/dist/embedded-app/static/9050.164f67fc.chunk.js.map +0 -1
  86. package/dist/embedded-app/static/9050.9050.90aa6155.css +0 -2
  87. package/dist/embedded-app/static/9050.9050.90aa6155.css.map +0 -1
  88. package/dist/embedded-app/static/9230.18c2fa11.chunk.js +0 -2
  89. package/dist/embedded-app/static/9230.18c2fa11.chunk.js.map +0 -1
  90. package/dist/embedded-app/static/9230.9230.a84ae986.css +0 -2
  91. package/dist/embedded-app/static/9230.9230.a84ae986.css.map +0 -1
  92. package/dist/embedded-app/static/main.c8ae213c.js +0 -523
  93. package/dist/embedded-app/static/main.c8ae213c.js.map +0 -1
  94. package/dist/embedded-app/static/main.f9ce547f.css +0 -2
  95. package/dist/embedded-app/static/main.f9ce547f.css.map +0 -1
  96. package/dist/embedded-app/static/module-react-aria-components.d7b73980.js +0 -2
  97. package/dist/embedded-app/static/vendor.4c22115e.js +0 -6
  98. package/dist/embedded-app/static/vendor.4c22115e.js.map +0 -1
package/CHANGELOG.md CHANGED
@@ -1,5 +1,16 @@
1
1
  # @techdocs/cli
2
2
 
3
+ ## 1.11.0-next.1
4
+
5
+ ### Minor Changes
6
+
7
+ - 329f592: Add support for disabling external font downloads via techdocs-cli `techdocs-cli generate --disableExternalFonts`, useful for air-gapped Backstage instances.
8
+
9
+ ### Patch Changes
10
+
11
+ - Updated dependencies
12
+ - @backstage/plugin-techdocs-node@1.15.0-next.1
13
+
3
14
  ## 1.10.8-next.0
4
15
 
5
16
  ### Patch Changes
@@ -20,6 +20,7 @@ async function generate(opts) {
20
20
  const dockerImage = opts.dockerImage;
21
21
  const pullImage = opts.pull;
22
22
  const legacyCopyReadmeMdToIndexMd = opts.legacyCopyReadmeMdToIndexMd;
23
+ const disableExternalFonts = opts.disableExternalFonts;
23
24
  const defaultPlugins = opts.defaultPlugin;
24
25
  logger.info(`Using source dir ${sourceDir}`);
25
26
  logger.info(`Will output generated files in ${outputDir}`);
@@ -37,6 +38,7 @@ async function generate(opts) {
37
38
  mkdocs: {
38
39
  legacyCopyReadmeMdToIndexMd,
39
40
  omitTechdocsCorePlugin,
41
+ disableExternalFonts,
40
42
  defaultPlugins
41
43
  }
42
44
  }
@@ -1 +1 @@
1
- {"version":3,"file":"generate.cjs.js","sources":["../../../src/commands/generate/generate.ts"],"sourcesContent":["/*\n * Copyright 2020 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 { resolve } from 'node:path';\nimport { OptionValues } from 'commander';\nimport fs from 'fs-extra';\nimport {\n TechdocsGenerator,\n ParsedLocationAnnotation,\n getMkdocsYml,\n} from '@backstage/plugin-techdocs-node';\nimport { ConfigReader } from '@backstage/config';\nimport {\n convertTechDocsRefToLocationAnnotation,\n createLogger,\n getLogStream,\n} from '../../lib/utility';\n\nexport default async function generate(opts: OptionValues) {\n // Use techdocs-node package to generate docs. Keep consistency between Backstage and CI generating docs.\n // Docs can be prepared using actions/checkout or git clone, or similar paradigms on CI. The TechDocs CI workflow\n // will run on the CI pipeline containing the documentation files.\n\n const logger = createLogger({ verbose: opts.verbose });\n\n const sourceDir = resolve(opts.sourceDir);\n const outputDir = resolve(opts.outputDir);\n const omitTechdocsCorePlugin = opts.omitTechdocsCoreMkdocsPlugin;\n const dockerImage = opts.dockerImage;\n const pullImage = opts.pull;\n const legacyCopyReadmeMdToIndexMd = opts.legacyCopyReadmeMdToIndexMd;\n const defaultPlugins = opts.defaultPlugin;\n\n logger.info(`Using source dir ${sourceDir}`);\n logger.info(`Will output generated files in ${outputDir}`);\n\n logger.verbose('Creating output directory if it does not exist.');\n\n await fs.ensureDir(outputDir);\n\n const { path: mkdocsYmlPath, configIsTemporary } = await getMkdocsYml(\n sourceDir,\n );\n\n const config = new ConfigReader({\n techdocs: {\n generator: {\n runIn: opts.docker ? 'docker' : 'local',\n dockerImage,\n pullImage,\n mkdocs: {\n legacyCopyReadmeMdToIndexMd,\n omitTechdocsCorePlugin,\n defaultPlugins,\n },\n },\n },\n });\n\n let parsedLocationAnnotation = {} as ParsedLocationAnnotation;\n if (opts.techdocsRef) {\n try {\n parsedLocationAnnotation = convertTechDocsRefToLocationAnnotation(\n opts.techdocsRef,\n );\n } catch (err) {\n logger.error(err.message);\n }\n }\n\n // Generate docs using @backstage/plugin-techdocs-node\n const techdocsGenerator = await TechdocsGenerator.fromConfig(config, {\n logger,\n });\n\n logger.info('Generating documentation...');\n\n await techdocsGenerator.run({\n inputDir: sourceDir,\n outputDir,\n ...(opts.techdocsRef\n ? {\n parsedLocationAnnotation,\n }\n : {}),\n logger,\n etag: opts.etag,\n logStream: getLogStream(logger),\n siteOptions: { name: opts.siteName },\n runAsDefaultUser: opts.runAsDefaultUser,\n });\n\n if (configIsTemporary) {\n process.on('exit', async () => {\n fs.rmSync(mkdocsYmlPath, {});\n });\n }\n\n logger.info('Done!');\n}\n"],"names":["createLogger","resolve","fs","getMkdocsYml","config","ConfigReader","convertTechDocsRefToLocationAnnotation","TechdocsGenerator","getLogStream"],"mappings":";;;;;;;;;;;;;;AA+BA,eAA8B,SAAS,IAAA,EAAoB;AAKzD,EAAA,MAAM,SAASA,oBAAA,CAAa,EAAE,OAAA,EAAS,IAAA,CAAK,SAAS,CAAA;AAErD,EAAA,MAAM,SAAA,GAAYC,YAAA,CAAQ,IAAA,CAAK,SAAS,CAAA;AACxC,EAAA,MAAM,SAAA,GAAYA,YAAA,CAAQ,IAAA,CAAK,SAAS,CAAA;AACxC,EAAA,MAAM,yBAAyB,IAAA,CAAK,4BAAA;AACpC,EAAA,MAAM,cAAc,IAAA,CAAK,WAAA;AACzB,EAAA,MAAM,YAAY,IAAA,CAAK,IAAA;AACvB,EAAA,MAAM,8BAA8B,IAAA,CAAK,2BAAA;AACzC,EAAA,MAAM,iBAAiB,IAAA,CAAK,aAAA;AAE5B,EAAA,MAAA,CAAO,IAAA,CAAK,CAAA,iBAAA,EAAoB,SAAS,CAAA,CAAE,CAAA;AAC3C,EAAA,MAAA,CAAO,IAAA,CAAK,CAAA,+BAAA,EAAkC,SAAS,CAAA,CAAE,CAAA;AAEzD,EAAA,MAAA,CAAO,QAAQ,iDAAiD,CAAA;AAEhE,EAAA,MAAMC,mBAAA,CAAG,UAAU,SAAS,CAAA;AAE5B,EAAA,MAAM,EAAE,IAAA,EAAM,aAAA,EAAe,iBAAA,KAAsB,MAAMC,+BAAA;AAAA,IACvD;AAAA,GACF;AAEA,EAAA,MAAMC,QAAA,GAAS,IAAIC,mBAAA,CAAa;AAAA,IAC9B,QAAA,EAAU;AAAA,MACR,SAAA,EAAW;AAAA,QACT,KAAA,EAAO,IAAA,CAAK,MAAA,GAAS,QAAA,GAAW,OAAA;AAAA,QAChC,WAAA;AAAA,QACA,SAAA;AAAA,QACA,MAAA,EAAQ;AAAA,UACN,2BAAA;AAAA,UACA,sBAAA;AAAA,UACA;AAAA;AACF;AACF;AACF,GACD,CAAA;AAED,EAAA,IAAI,2BAA2B,EAAC;AAChC,EAAA,IAAI,KAAK,WAAA,EAAa;AACpB,IAAA,IAAI;AACF,MAAA,wBAAA,GAA2BC,8CAAA;AAAA,QACzB,IAAA,CAAK;AAAA,OACP;AAAA,IACF,SAAS,GAAA,EAAK;AACZ,MAAA,MAAA,CAAO,KAAA,CAAM,IAAI,OAAO,CAAA;AAAA,IAC1B;AAAA,EACF;AAGA,EAAA,MAAM,iBAAA,GAAoB,MAAMC,oCAAA,CAAkB,UAAA,CAAWH,QAAA,EAAQ;AAAA,IACnE;AAAA,GACD,CAAA;AAED,EAAA,MAAA,CAAO,KAAK,6BAA6B,CAAA;AAEzC,EAAA,MAAM,kBAAkB,GAAA,CAAI;AAAA,IAC1B,QAAA,EAAU,SAAA;AAAA,IACV,SAAA;AAAA,IACA,GAAI,KAAK,WAAA,GACL;AAAA,MACE;AAAA,QAEF,EAAC;AAAA,IACL,MAAA;AAAA,IACA,MAAM,IAAA,CAAK,IAAA;AAAA,IACX,SAAA,EAAWI,qBAAa,MAAM,CAAA;AAAA,IAC9B,WAAA,EAAa,EAAE,IAAA,EAAM,IAAA,CAAK,QAAA,EAAS;AAAA,IACnC,kBAAkB,IAAA,CAAK;AAAA,GACxB,CAAA;AAED,EAAA,IAAI,iBAAA,EAAmB;AACrB,IAAA,OAAA,CAAQ,EAAA,CAAG,QAAQ,YAAY;AAC7B,MAAAN,mBAAA,CAAG,MAAA,CAAO,aAAA,EAAe,EAAE,CAAA;AAAA,IAC7B,CAAC,CAAA;AAAA,EACH;AAEA,EAAA,MAAA,CAAO,KAAK,OAAO,CAAA;AACrB;;;;"}
1
+ {"version":3,"file":"generate.cjs.js","sources":["../../../src/commands/generate/generate.ts"],"sourcesContent":["/*\n * Copyright 2020 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 { resolve } from 'node:path';\nimport { OptionValues } from 'commander';\nimport fs from 'fs-extra';\nimport {\n TechdocsGenerator,\n ParsedLocationAnnotation,\n getMkdocsYml,\n} from '@backstage/plugin-techdocs-node';\nimport { ConfigReader } from '@backstage/config';\nimport {\n convertTechDocsRefToLocationAnnotation,\n createLogger,\n getLogStream,\n} from '../../lib/utility';\n\nexport default async function generate(opts: OptionValues) {\n // Use techdocs-node package to generate docs. Keep consistency between Backstage and CI generating docs.\n // Docs can be prepared using actions/checkout or git clone, or similar paradigms on CI. The TechDocs CI workflow\n // will run on the CI pipeline containing the documentation files.\n\n const logger = createLogger({ verbose: opts.verbose });\n\n const sourceDir = resolve(opts.sourceDir);\n const outputDir = resolve(opts.outputDir);\n const omitTechdocsCorePlugin = opts.omitTechdocsCoreMkdocsPlugin;\n const dockerImage = opts.dockerImage;\n const pullImage = opts.pull;\n const legacyCopyReadmeMdToIndexMd = opts.legacyCopyReadmeMdToIndexMd;\n const disableExternalFonts = opts.disableExternalFonts;\n const defaultPlugins = opts.defaultPlugin;\n\n logger.info(`Using source dir ${sourceDir}`);\n logger.info(`Will output generated files in ${outputDir}`);\n\n logger.verbose('Creating output directory if it does not exist.');\n\n await fs.ensureDir(outputDir);\n\n const { path: mkdocsYmlPath, configIsTemporary } = await getMkdocsYml(\n sourceDir,\n );\n\n const config = new ConfigReader({\n techdocs: {\n generator: {\n runIn: opts.docker ? 'docker' : 'local',\n dockerImage,\n pullImage,\n mkdocs: {\n legacyCopyReadmeMdToIndexMd,\n omitTechdocsCorePlugin,\n disableExternalFonts,\n defaultPlugins,\n },\n },\n },\n });\n\n let parsedLocationAnnotation = {} as ParsedLocationAnnotation;\n if (opts.techdocsRef) {\n try {\n parsedLocationAnnotation = convertTechDocsRefToLocationAnnotation(\n opts.techdocsRef,\n );\n } catch (err) {\n logger.error(err.message);\n }\n }\n\n // Generate docs using @backstage/plugin-techdocs-node\n const techdocsGenerator = await TechdocsGenerator.fromConfig(config, {\n logger,\n });\n\n logger.info('Generating documentation...');\n\n await techdocsGenerator.run({\n inputDir: sourceDir,\n outputDir,\n ...(opts.techdocsRef\n ? {\n parsedLocationAnnotation,\n }\n : {}),\n logger,\n etag: opts.etag,\n logStream: getLogStream(logger),\n siteOptions: { name: opts.siteName },\n runAsDefaultUser: opts.runAsDefaultUser,\n });\n\n if (configIsTemporary) {\n process.on('exit', async () => {\n fs.rmSync(mkdocsYmlPath, {});\n });\n }\n\n logger.info('Done!');\n}\n"],"names":["createLogger","resolve","fs","getMkdocsYml","config","ConfigReader","convertTechDocsRefToLocationAnnotation","TechdocsGenerator","getLogStream"],"mappings":";;;;;;;;;;;;;;AA+BA,eAA8B,SAAS,IAAA,EAAoB;AAKzD,EAAA,MAAM,SAASA,oBAAA,CAAa,EAAE,OAAA,EAAS,IAAA,CAAK,SAAS,CAAA;AAErD,EAAA,MAAM,SAAA,GAAYC,YAAA,CAAQ,IAAA,CAAK,SAAS,CAAA;AACxC,EAAA,MAAM,SAAA,GAAYA,YAAA,CAAQ,IAAA,CAAK,SAAS,CAAA;AACxC,EAAA,MAAM,yBAAyB,IAAA,CAAK,4BAAA;AACpC,EAAA,MAAM,cAAc,IAAA,CAAK,WAAA;AACzB,EAAA,MAAM,YAAY,IAAA,CAAK,IAAA;AACvB,EAAA,MAAM,8BAA8B,IAAA,CAAK,2BAAA;AACzC,EAAA,MAAM,uBAAuB,IAAA,CAAK,oBAAA;AAClC,EAAA,MAAM,iBAAiB,IAAA,CAAK,aAAA;AAE5B,EAAA,MAAA,CAAO,IAAA,CAAK,CAAA,iBAAA,EAAoB,SAAS,CAAA,CAAE,CAAA;AAC3C,EAAA,MAAA,CAAO,IAAA,CAAK,CAAA,+BAAA,EAAkC,SAAS,CAAA,CAAE,CAAA;AAEzD,EAAA,MAAA,CAAO,QAAQ,iDAAiD,CAAA;AAEhE,EAAA,MAAMC,mBAAA,CAAG,UAAU,SAAS,CAAA;AAE5B,EAAA,MAAM,EAAE,IAAA,EAAM,aAAA,EAAe,iBAAA,KAAsB,MAAMC,+BAAA;AAAA,IACvD;AAAA,GACF;AAEA,EAAA,MAAMC,QAAA,GAAS,IAAIC,mBAAA,CAAa;AAAA,IAC9B,QAAA,EAAU;AAAA,MACR,SAAA,EAAW;AAAA,QACT,KAAA,EAAO,IAAA,CAAK,MAAA,GAAS,QAAA,GAAW,OAAA;AAAA,QAChC,WAAA;AAAA,QACA,SAAA;AAAA,QACA,MAAA,EAAQ;AAAA,UACN,2BAAA;AAAA,UACA,sBAAA;AAAA,UACA,oBAAA;AAAA,UACA;AAAA;AACF;AACF;AACF,GACD,CAAA;AAED,EAAA,IAAI,2BAA2B,EAAC;AAChC,EAAA,IAAI,KAAK,WAAA,EAAa;AACpB,IAAA,IAAI;AACF,MAAA,wBAAA,GAA2BC,8CAAA;AAAA,QACzB,IAAA,CAAK;AAAA,OACP;AAAA,IACF,SAAS,GAAA,EAAK;AACZ,MAAA,MAAA,CAAO,KAAA,CAAM,IAAI,OAAO,CAAA;AAAA,IAC1B;AAAA,EACF;AAGA,EAAA,MAAM,iBAAA,GAAoB,MAAMC,oCAAA,CAAkB,UAAA,CAAWH,QAAA,EAAQ;AAAA,IACnE;AAAA,GACD,CAAA;AAED,EAAA,MAAA,CAAO,KAAK,6BAA6B,CAAA;AAEzC,EAAA,MAAM,kBAAkB,GAAA,CAAI;AAAA,IAC1B,QAAA,EAAU,SAAA;AAAA,IACV,SAAA;AAAA,IACA,GAAI,KAAK,WAAA,GACL;AAAA,MACE;AAAA,QAEF,EAAC;AAAA,IACL,MAAA;AAAA,IACA,MAAM,IAAA,CAAK,IAAA;AAAA,IACX,SAAA,EAAWI,qBAAa,MAAM,CAAA;AAAA,IAC9B,WAAA,EAAa,EAAE,IAAA,EAAM,IAAA,CAAK,QAAA,EAAS;AAAA,IACnC,kBAAkB,IAAA,CAAK;AAAA,GACxB,CAAA;AAED,EAAA,IAAI,iBAAA,EAAmB;AACrB,IAAA,OAAA,CAAQ,EAAA,CAAG,QAAQ,YAAY;AAC7B,MAAAN,mBAAA,CAAG,MAAA,CAAO,aAAA,EAAe,EAAE,CAAA;AAAA,IAC7B,CAAC,CAAA;AAAA,EACH;AAEA,EAAA,MAAA,CAAO,KAAK,OAAO,CAAA;AACrB;;;;"}
@@ -38,6 +38,10 @@ function registerCommands(program) {
38
38
  "--legacyCopyReadmeMdToIndexMd",
39
39
  "Attempt to ensure an index.md exists falling back to using <docs-dir>/README.md or README.md in case a default <docs-dir>/index.md is not provided.",
40
40
  false
41
+ ).option(
42
+ "--disableExternalFonts",
43
+ "Disable external font downloads by default by setting theme.font: false in mkdocs.yml when not already configured. Useful for air-gapped environments where Google fonts cannot be accessed.",
44
+ false
41
45
  ).option(
42
46
  "--defaultPlugin [defaultPlugins...]",
43
47
  "Plugins which should be added automatically to the mkdocs.yaml file",
@@ -1 +1 @@
1
- {"version":3,"file":"index.cjs.js","sources":["../../src/commands/index.ts"],"sourcesContent":["/*\n * Copyright 2020 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 { Command } from 'commander';\nimport { TechdocsGenerator } from '@backstage/plugin-techdocs-node';\n\nconst defaultDockerImage = TechdocsGenerator.defaultDockerImage;\nconst defaultPreviewAppPort = '3000';\n\nexport function registerCommands(program: Command) {\n program\n .command('generate')\n .description('Generate TechDocs documentation site using MkDocs.')\n .option(\n '--source-dir <PATH>',\n 'Source directory containing mkdocs.yml and docs/ directory.',\n '.',\n )\n .option(\n '--output-dir <PATH>',\n 'Output directory containing generated TechDocs site.',\n './site/',\n )\n .option(\n '--docker-image <DOCKER_IMAGE>',\n 'The mkdocs docker container to use',\n defaultDockerImage,\n )\n .option('--no-pull', 'Do not pull the latest docker image')\n .option(\n '--no-docker',\n 'Do not use Docker, use MkDocs executable and plugins in current user environment.',\n )\n .option(\n '--techdocs-ref <HOST_TYPE:URL>',\n 'The repository hosting documentation source files e.g. url:https://ghe.mycompany.net.com/org/repo.' +\n '\\nThis value is same as the backstage.io/techdocs-ref annotation of the corresponding Backstage entity.' +\n '\\nIt is completely fine to skip this as it is only being used to set repo_url in mkdocs.yml if not found.\\n',\n )\n .option(\n '--etag <ETAG>',\n 'A unique identifier for the prepared tree e.g. commit SHA. If provided it will be stored in techdocs_metadata.json.',\n )\n .option(\n '--site-name',\n 'Name for site when using default MkDocs config',\n 'Documentation Site',\n )\n .option('-v, --verbose', 'Enable verbose output.', false)\n .option(\n '--omitTechdocsCoreMkdocsPlugin',\n \"Don't patch MkDocs file automatically with techdocs-core plugin.\",\n false,\n )\n .option(\n '--legacyCopyReadmeMdToIndexMd',\n 'Attempt to ensure an index.md exists falling back to using <docs-dir>/README.md or README.md in case a default <docs-dir>/index.md is not provided.',\n false,\n )\n .option(\n '--defaultPlugin [defaultPlugins...]',\n 'Plugins which should be added automatically to the mkdocs.yaml file',\n [],\n )\n .option(\n '--runAsDefaultUser',\n 'Bypass setting the container user as the same user and group id as host for Linux and MacOS',\n false,\n )\n .alias('build')\n .action(lazy(() => import('./generate/generate'), 'default'));\n\n program\n .command('migrate')\n .description(\n 'Migrate objects with case-sensitive entity triplets to lower-case versions.',\n )\n .requiredOption(\n '--publisher-type <TYPE>',\n '(Required always) awsS3 | googleGcs | azureBlobStorage | openStackSwift - same as techdocs.publisher.type in Backstage app-config.yaml',\n )\n .requiredOption(\n '--storage-name <BUCKET/CONTAINER NAME>',\n '(Required always) In case of AWS/GCS, use the bucket name. In case of Azure, use container name. Same as techdocs.publisher.[TYPE].bucketName',\n )\n .option(\n '--azureAccountName <AZURE ACCOUNT NAME>',\n '(Required for Azure) specify when --publisher-type azureBlobStorage',\n )\n .option(\n '--azureAccountKey <AZURE ACCOUNT KEY>',\n 'Azure Storage Account key to use for authentication. If not specified, you must set AZURE_TENANT_ID, AZURE_CLIENT_ID & AZURE_CLIENT_SECRET as environment variables.',\n )\n .option(\n '--awsRoleArn <AWS ROLE ARN>',\n 'Optional AWS ARN of role to be assumed.',\n )\n .option(\n '--awsEndpoint <AWS ENDPOINT>',\n 'Optional AWS endpoint to send requests to.',\n )\n .option(\n '--awsS3ForcePathStyle',\n 'Optional AWS S3 option to force path style.',\n )\n .option(\n '--osCredentialId <OPENSTACK SWIFT APPLICATION CREDENTIAL ID>',\n '(Required for OpenStack) specify when --publisher-type openStackSwift',\n )\n .option(\n '--osSecret <OPENSTACK SWIFT APPLICATION CREDENTIAL SECRET>',\n '(Required for OpenStack) specify when --publisher-type openStackSwift',\n )\n .option(\n '--osAuthUrl <OPENSTACK SWIFT AUTHURL>',\n '(Required for OpenStack) specify when --publisher-type openStackSwift',\n )\n .option(\n '--osSwiftUrl <OPENSTACK SWIFT SWIFTURL>',\n '(Required for OpenStack) specify when --publisher-type openStackSwift',\n )\n .option(\n '--removeOriginal',\n 'Optional Files are copied by default. If flag is set, files are renamed/moved instead.',\n false,\n )\n .option(\n '--concurrency <MAX CONCURRENT REQS>',\n 'Optional Controls the number of API requests allowed to be performed simultaneously.',\n '25',\n )\n .option('-v, --verbose', 'Enable verbose output.', false)\n .action(lazy(() => import('./migrate/migrate'), 'default'));\n\n program\n .command('publish')\n .description(\n 'Publish generated TechDocs site to an external storage AWS S3, Google GCS, etc.',\n )\n .requiredOption(\n '--publisher-type <TYPE>',\n '(Required always) awsS3 | googleGcs | azureBlobStorage | openStackSwift - same as techdocs.publisher.type in Backstage app-config.yaml',\n )\n .requiredOption(\n '--storage-name <BUCKET/CONTAINER NAME>',\n '(Required always) In case of AWS/GCS, use the bucket name. In case of Azure, use container name. Same as techdocs.publisher.[TYPE].bucketName',\n )\n .requiredOption(\n '--entity <NAMESPACE/KIND/NAME>',\n '(Required always) Entity uid separated by / in namespace/kind/name order (case-sensitive). Example: default/Component/myEntity ',\n )\n .option(\n '--legacyUseCaseSensitiveTripletPaths',\n 'Publishes objects with cased entity triplet prefix when set (e.g. namespace/Kind/name). Only use if your TechDocs backend is configured the same way.',\n false,\n )\n .option(\n '--azureAccountName <AZURE ACCOUNT NAME>',\n '(Required for Azure) specify when --publisher-type azureBlobStorage',\n )\n .option(\n '--azureAccountKey <AZURE ACCOUNT KEY>',\n 'Azure Storage Account key to use for authentication. If not specified, you must set AZURE_TENANT_ID, AZURE_CLIENT_ID & AZURE_CLIENT_SECRET as environment variables.',\n )\n .option(\n '--awsRoleArn <AWS ROLE ARN>',\n 'Optional AWS ARN of role to be assumed.',\n )\n .option(\n '--awsEndpoint <AWS ENDPOINT>',\n 'Optional AWS endpoint to send requests to.',\n )\n .option(\n '--awsProxy <HTTPS Proxy>',\n 'Optional Proxy to use for AWS requests.',\n )\n .option('--awsS3sse <AWS SSE>', 'Optional AWS S3 Server Side Encryption.')\n .option(\n '--awsS3ForcePathStyle',\n 'Optional AWS S3 option to force path style.',\n )\n .option(\n '--awsBucketRootPath <AWS BUCKET ROOT PATH>',\n 'Optional sub-directory to store files in Amazon S3',\n )\n .option(\n '--awsMaxAttempts <AWS MAX ATTEMPTS>',\n 'Optional maximum number of retries for AWS S3 operations. If not specified, default value of 3 is used.',\n )\n .option(\n '--osCredentialId <OPENSTACK SWIFT APPLICATION CREDENTIAL ID>',\n '(Required for OpenStack) specify when --publisher-type openStackSwift',\n )\n .option(\n '--osSecret <OPENSTACK SWIFT APPLICATION CREDENTIAL SECRET>',\n '(Required for OpenStack) specify when --publisher-type openStackSwift',\n )\n .option(\n '--osAuthUrl <OPENSTACK SWIFT AUTHURL>',\n '(Required for OpenStack) specify when --publisher-type openStackSwift',\n )\n .option(\n '--osSwiftUrl <OPENSTACK SWIFT SWIFTURL>',\n '(Required for OpenStack) specify when --publisher-type openStackSwift',\n )\n .option(\n '--gcsBucketRootPath <GCS BUCKET ROOT PATH>',\n 'Optional sub-directory to store files in Google cloud storage',\n )\n .option(\n '--directory <PATH>',\n 'Path of the directory containing generated files to publish',\n './site/',\n )\n .action(lazy(() => import('./publish/publish'), 'default'));\n\n program\n .command('serve:mkdocs')\n .description('Serve a documentation project locally using MkDocs serve.')\n .option(\n '-i, --docker-image <DOCKER_IMAGE>',\n 'The mkdocs docker container to use',\n defaultDockerImage,\n )\n .option(\n '--docker-entrypoint <DOCKER_ENTRYPOINT>',\n 'Override the image entrypoint',\n )\n .option(\n '--docker-option <DOCKER_OPTION...>',\n 'Extra options to pass to the docker run command, e.g. \"--add-host=internal.host:192.168.11.12\" (can be added multiple times).',\n )\n .option(\n '--no-docker',\n 'Do not use Docker, run `mkdocs serve` in current user environment.',\n )\n .option(\n '--site-name',\n 'Name for site when using default MkDocs config',\n 'Documentation Site',\n )\n .option('-p, --port <PORT>', 'Port to serve documentation locally', '8000')\n .option('-v, --verbose', 'Enable verbose output.', false)\n .action(lazy(() => import('./serve/mkdocs'), 'default'));\n\n program\n .command('serve')\n .description(\n 'Serve a documentation project locally in a Backstage app-like environment',\n )\n .option(\n '-i, --docker-image <DOCKER_IMAGE>',\n 'The mkdocs docker container to use',\n defaultDockerImage,\n )\n .option(\n '--docker-entrypoint <DOCKER_ENTRYPOINT>',\n 'Override the image entrypoint',\n )\n .option(\n '--docker-option <DOCKER_OPTION...>',\n 'Extra options to pass to the docker run command, e.g. \"--add-host=internal.host:192.168.11.12\" (can be added multiple times).',\n )\n .option(\n '--no-docker',\n 'Do not use Docker, use MkDocs executable in current user environment.',\n )\n .option(\n '--site-name',\n 'Name for site when using default MkDocs config',\n 'Documentation Site',\n )\n .option('--mkdocs-port <PORT>', 'Port for MkDocs server to use', '8000')\n .option('-v, --verbose', 'Enable verbose output.', false)\n .option(\n '--preview-app-bundle-path <PATH_TO_BUNDLE>',\n 'Preview documentation using another web app',\n )\n .option(\n '--preview-app-port <PORT>',\n 'Port for the preview app to be served on',\n defaultPreviewAppPort,\n )\n .option(\n '-c, --mkdocs-config-file-name <FILENAME>',\n 'Mkdocs config file name',\n )\n .option(\n '--mkdocs-parameter-clean',\n 'Pass \"--clean\" parameter to mkdocs server running in containerized environment',\n false,\n )\n .option(\n '--mkdocs-parameter-dirtyreload',\n 'Pass \"--dirtyreload\" parameter to mkdocs server running in containerized environment',\n false,\n )\n .option(\n '--mkdocs-parameter-strict',\n 'Pass \"--strict\" parameter to mkdocs server running in containerized environment',\n false,\n )\n .hook('preAction', command => {\n if (\n command.opts().previewAppPort !== defaultPreviewAppPort &&\n !command.opts().previewAppBundlePath\n ) {\n command.error(\n '--preview-app-port can only be used together with --preview-app-bundle-path',\n );\n }\n })\n .action(lazy(() => import('./serve/serve'), 'default'));\n}\n\n// Humbly taken from backstage-cli's registerCommands\ntype ActionFunc = (...args: any[]) => Promise<void>;\ntype ActionExports<TModule extends object> = {\n [KName in keyof TModule as TModule[KName] extends ActionFunc\n ? KName\n : never]: TModule[KName];\n};\n\n// Wraps an action function so that it always exits and handles errors\nexport function lazy<TModule extends object>(\n moduleLoader: () => Promise<TModule>,\n exportName: keyof ActionExports<TModule>,\n): (...args: any[]) => Promise<never> {\n return async (...args: any[]) => {\n try {\n const mod = await moduleLoader();\n const actualModule = (\n mod as unknown as { default: ActionExports<TModule> }\n ).default;\n const actionFunc = actualModule[exportName] as ActionFunc;\n await actionFunc(...args);\n\n process.exit(0);\n } catch (error) {\n console.error(error.message);\n process.exit(1);\n }\n };\n}\n"],"names":["TechdocsGenerator"],"mappings":"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"}
1
+ {"version":3,"file":"index.cjs.js","sources":["../../src/commands/index.ts"],"sourcesContent":["/*\n * Copyright 2020 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 { Command } from 'commander';\nimport { TechdocsGenerator } from '@backstage/plugin-techdocs-node';\n\nconst defaultDockerImage = TechdocsGenerator.defaultDockerImage;\nconst defaultPreviewAppPort = '3000';\n\nexport function registerCommands(program: Command) {\n program\n .command('generate')\n .description('Generate TechDocs documentation site using MkDocs.')\n .option(\n '--source-dir <PATH>',\n 'Source directory containing mkdocs.yml and docs/ directory.',\n '.',\n )\n .option(\n '--output-dir <PATH>',\n 'Output directory containing generated TechDocs site.',\n './site/',\n )\n .option(\n '--docker-image <DOCKER_IMAGE>',\n 'The mkdocs docker container to use',\n defaultDockerImage,\n )\n .option('--no-pull', 'Do not pull the latest docker image')\n .option(\n '--no-docker',\n 'Do not use Docker, use MkDocs executable and plugins in current user environment.',\n )\n .option(\n '--techdocs-ref <HOST_TYPE:URL>',\n 'The repository hosting documentation source files e.g. url:https://ghe.mycompany.net.com/org/repo.' +\n '\\nThis value is same as the backstage.io/techdocs-ref annotation of the corresponding Backstage entity.' +\n '\\nIt is completely fine to skip this as it is only being used to set repo_url in mkdocs.yml if not found.\\n',\n )\n .option(\n '--etag <ETAG>',\n 'A unique identifier for the prepared tree e.g. commit SHA. If provided it will be stored in techdocs_metadata.json.',\n )\n .option(\n '--site-name',\n 'Name for site when using default MkDocs config',\n 'Documentation Site',\n )\n .option('-v, --verbose', 'Enable verbose output.', false)\n .option(\n '--omitTechdocsCoreMkdocsPlugin',\n \"Don't patch MkDocs file automatically with techdocs-core plugin.\",\n false,\n )\n .option(\n '--legacyCopyReadmeMdToIndexMd',\n 'Attempt to ensure an index.md exists falling back to using <docs-dir>/README.md or README.md in case a default <docs-dir>/index.md is not provided.',\n false,\n )\n .option(\n '--disableExternalFonts',\n 'Disable external font downloads by default by setting theme.font: false in mkdocs.yml when not already configured. Useful for air-gapped environments where Google fonts cannot be accessed.',\n false,\n )\n .option(\n '--defaultPlugin [defaultPlugins...]',\n 'Plugins which should be added automatically to the mkdocs.yaml file',\n [],\n )\n .option(\n '--runAsDefaultUser',\n 'Bypass setting the container user as the same user and group id as host for Linux and MacOS',\n false,\n )\n .alias('build')\n .action(lazy(() => import('./generate/generate'), 'default'));\n\n program\n .command('migrate')\n .description(\n 'Migrate objects with case-sensitive entity triplets to lower-case versions.',\n )\n .requiredOption(\n '--publisher-type <TYPE>',\n '(Required always) awsS3 | googleGcs | azureBlobStorage | openStackSwift - same as techdocs.publisher.type in Backstage app-config.yaml',\n )\n .requiredOption(\n '--storage-name <BUCKET/CONTAINER NAME>',\n '(Required always) In case of AWS/GCS, use the bucket name. In case of Azure, use container name. Same as techdocs.publisher.[TYPE].bucketName',\n )\n .option(\n '--azureAccountName <AZURE ACCOUNT NAME>',\n '(Required for Azure) specify when --publisher-type azureBlobStorage',\n )\n .option(\n '--azureAccountKey <AZURE ACCOUNT KEY>',\n 'Azure Storage Account key to use for authentication. If not specified, you must set AZURE_TENANT_ID, AZURE_CLIENT_ID & AZURE_CLIENT_SECRET as environment variables.',\n )\n .option(\n '--awsRoleArn <AWS ROLE ARN>',\n 'Optional AWS ARN of role to be assumed.',\n )\n .option(\n '--awsEndpoint <AWS ENDPOINT>',\n 'Optional AWS endpoint to send requests to.',\n )\n .option(\n '--awsS3ForcePathStyle',\n 'Optional AWS S3 option to force path style.',\n )\n .option(\n '--osCredentialId <OPENSTACK SWIFT APPLICATION CREDENTIAL ID>',\n '(Required for OpenStack) specify when --publisher-type openStackSwift',\n )\n .option(\n '--osSecret <OPENSTACK SWIFT APPLICATION CREDENTIAL SECRET>',\n '(Required for OpenStack) specify when --publisher-type openStackSwift',\n )\n .option(\n '--osAuthUrl <OPENSTACK SWIFT AUTHURL>',\n '(Required for OpenStack) specify when --publisher-type openStackSwift',\n )\n .option(\n '--osSwiftUrl <OPENSTACK SWIFT SWIFTURL>',\n '(Required for OpenStack) specify when --publisher-type openStackSwift',\n )\n .option(\n '--removeOriginal',\n 'Optional Files are copied by default. If flag is set, files are renamed/moved instead.',\n false,\n )\n .option(\n '--concurrency <MAX CONCURRENT REQS>',\n 'Optional Controls the number of API requests allowed to be performed simultaneously.',\n '25',\n )\n .option('-v, --verbose', 'Enable verbose output.', false)\n .action(lazy(() => import('./migrate/migrate'), 'default'));\n\n program\n .command('publish')\n .description(\n 'Publish generated TechDocs site to an external storage AWS S3, Google GCS, etc.',\n )\n .requiredOption(\n '--publisher-type <TYPE>',\n '(Required always) awsS3 | googleGcs | azureBlobStorage | openStackSwift - same as techdocs.publisher.type in Backstage app-config.yaml',\n )\n .requiredOption(\n '--storage-name <BUCKET/CONTAINER NAME>',\n '(Required always) In case of AWS/GCS, use the bucket name. In case of Azure, use container name. Same as techdocs.publisher.[TYPE].bucketName',\n )\n .requiredOption(\n '--entity <NAMESPACE/KIND/NAME>',\n '(Required always) Entity uid separated by / in namespace/kind/name order (case-sensitive). Example: default/Component/myEntity ',\n )\n .option(\n '--legacyUseCaseSensitiveTripletPaths',\n 'Publishes objects with cased entity triplet prefix when set (e.g. namespace/Kind/name). Only use if your TechDocs backend is configured the same way.',\n false,\n )\n .option(\n '--azureAccountName <AZURE ACCOUNT NAME>',\n '(Required for Azure) specify when --publisher-type azureBlobStorage',\n )\n .option(\n '--azureAccountKey <AZURE ACCOUNT KEY>',\n 'Azure Storage Account key to use for authentication. If not specified, you must set AZURE_TENANT_ID, AZURE_CLIENT_ID & AZURE_CLIENT_SECRET as environment variables.',\n )\n .option(\n '--awsRoleArn <AWS ROLE ARN>',\n 'Optional AWS ARN of role to be assumed.',\n )\n .option(\n '--awsEndpoint <AWS ENDPOINT>',\n 'Optional AWS endpoint to send requests to.',\n )\n .option(\n '--awsProxy <HTTPS Proxy>',\n 'Optional Proxy to use for AWS requests.',\n )\n .option('--awsS3sse <AWS SSE>', 'Optional AWS S3 Server Side Encryption.')\n .option(\n '--awsS3ForcePathStyle',\n 'Optional AWS S3 option to force path style.',\n )\n .option(\n '--awsBucketRootPath <AWS BUCKET ROOT PATH>',\n 'Optional sub-directory to store files in Amazon S3',\n )\n .option(\n '--awsMaxAttempts <AWS MAX ATTEMPTS>',\n 'Optional maximum number of retries for AWS S3 operations. If not specified, default value of 3 is used.',\n )\n .option(\n '--osCredentialId <OPENSTACK SWIFT APPLICATION CREDENTIAL ID>',\n '(Required for OpenStack) specify when --publisher-type openStackSwift',\n )\n .option(\n '--osSecret <OPENSTACK SWIFT APPLICATION CREDENTIAL SECRET>',\n '(Required for OpenStack) specify when --publisher-type openStackSwift',\n )\n .option(\n '--osAuthUrl <OPENSTACK SWIFT AUTHURL>',\n '(Required for OpenStack) specify when --publisher-type openStackSwift',\n )\n .option(\n '--osSwiftUrl <OPENSTACK SWIFT SWIFTURL>',\n '(Required for OpenStack) specify when --publisher-type openStackSwift',\n )\n .option(\n '--gcsBucketRootPath <GCS BUCKET ROOT PATH>',\n 'Optional sub-directory to store files in Google cloud storage',\n )\n .option(\n '--directory <PATH>',\n 'Path of the directory containing generated files to publish',\n './site/',\n )\n .action(lazy(() => import('./publish/publish'), 'default'));\n\n program\n .command('serve:mkdocs')\n .description('Serve a documentation project locally using MkDocs serve.')\n .option(\n '-i, --docker-image <DOCKER_IMAGE>',\n 'The mkdocs docker container to use',\n defaultDockerImage,\n )\n .option(\n '--docker-entrypoint <DOCKER_ENTRYPOINT>',\n 'Override the image entrypoint',\n )\n .option(\n '--docker-option <DOCKER_OPTION...>',\n 'Extra options to pass to the docker run command, e.g. \"--add-host=internal.host:192.168.11.12\" (can be added multiple times).',\n )\n .option(\n '--no-docker',\n 'Do not use Docker, run `mkdocs serve` in current user environment.',\n )\n .option(\n '--site-name',\n 'Name for site when using default MkDocs config',\n 'Documentation Site',\n )\n .option('-p, --port <PORT>', 'Port to serve documentation locally', '8000')\n .option('-v, --verbose', 'Enable verbose output.', false)\n .action(lazy(() => import('./serve/mkdocs'), 'default'));\n\n program\n .command('serve')\n .description(\n 'Serve a documentation project locally in a Backstage app-like environment',\n )\n .option(\n '-i, --docker-image <DOCKER_IMAGE>',\n 'The mkdocs docker container to use',\n defaultDockerImage,\n )\n .option(\n '--docker-entrypoint <DOCKER_ENTRYPOINT>',\n 'Override the image entrypoint',\n )\n .option(\n '--docker-option <DOCKER_OPTION...>',\n 'Extra options to pass to the docker run command, e.g. \"--add-host=internal.host:192.168.11.12\" (can be added multiple times).',\n )\n .option(\n '--no-docker',\n 'Do not use Docker, use MkDocs executable in current user environment.',\n )\n .option(\n '--site-name',\n 'Name for site when using default MkDocs config',\n 'Documentation Site',\n )\n .option('--mkdocs-port <PORT>', 'Port for MkDocs server to use', '8000')\n .option('-v, --verbose', 'Enable verbose output.', false)\n .option(\n '--preview-app-bundle-path <PATH_TO_BUNDLE>',\n 'Preview documentation using another web app',\n )\n .option(\n '--preview-app-port <PORT>',\n 'Port for the preview app to be served on',\n defaultPreviewAppPort,\n )\n .option(\n '-c, --mkdocs-config-file-name <FILENAME>',\n 'Mkdocs config file name',\n )\n .option(\n '--mkdocs-parameter-clean',\n 'Pass \"--clean\" parameter to mkdocs server running in containerized environment',\n false,\n )\n .option(\n '--mkdocs-parameter-dirtyreload',\n 'Pass \"--dirtyreload\" parameter to mkdocs server running in containerized environment',\n false,\n )\n .option(\n '--mkdocs-parameter-strict',\n 'Pass \"--strict\" parameter to mkdocs server running in containerized environment',\n false,\n )\n .hook('preAction', command => {\n if (\n command.opts().previewAppPort !== defaultPreviewAppPort &&\n !command.opts().previewAppBundlePath\n ) {\n command.error(\n '--preview-app-port can only be used together with --preview-app-bundle-path',\n );\n }\n })\n .action(lazy(() => import('./serve/serve'), 'default'));\n}\n\n// Humbly taken from backstage-cli's registerCommands\ntype ActionFunc = (...args: any[]) => Promise<void>;\ntype ActionExports<TModule extends object> = {\n [KName in keyof TModule as TModule[KName] extends ActionFunc\n ? KName\n : never]: TModule[KName];\n};\n\n// Wraps an action function so that it always exits and handles errors\nexport function lazy<TModule extends object>(\n moduleLoader: () => Promise<TModule>,\n exportName: keyof ActionExports<TModule>,\n): (...args: any[]) => Promise<never> {\n return async (...args: any[]) => {\n try {\n const mod = await moduleLoader();\n const actualModule = (\n mod as unknown as { default: ActionExports<TModule> }\n ).default;\n const actionFunc = actualModule[exportName] as ActionFunc;\n await actionFunc(...args);\n\n process.exit(0);\n } catch (error) {\n console.error(error.message);\n process.exit(1);\n }\n };\n}\n"],"names":["TechdocsGenerator"],"mappings":"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"}
@@ -404,6 +404,67 @@
404
404
  },
405
405
  "packageName": "@backstage/core-components"
406
406
  },
407
+ {
408
+ "path": "../../plugins/techdocs/config.d.ts",
409
+ "value": {
410
+ "type": "object",
411
+ "properties": {
412
+ "techdocs": {
413
+ "description": "Configuration options for the techdocs plugin",
414
+ "type": "object",
415
+ "properties": {
416
+ "builder": {
417
+ "description": "Documentation building process depends on the builder attr",
418
+ "visibility": "frontend",
419
+ "enum": [
420
+ "external",
421
+ "local"
422
+ ],
423
+ "type": "string"
424
+ },
425
+ "legacyUseCaseSensitiveTripletPaths": {
426
+ "description": "Allows fallback to case-sensitive triplets in case of migration issues.",
427
+ "visibility": "frontend",
428
+ "type": "boolean"
429
+ },
430
+ "sanitizer": {
431
+ "type": "object",
432
+ "properties": {
433
+ "allowedIframeHosts": {
434
+ "description": "Allows iframe tag only for listed hosts\nExample:\n allowedIframeHosts: [\"example.com\"]\n this will allow all iframes with the host `example.com` in the src attribute",
435
+ "visibility": "frontend",
436
+ "type": "array",
437
+ "items": {
438
+ "type": "string"
439
+ }
440
+ },
441
+ "allowedCustomElementTagNameRegExp": {
442
+ "description": "Allows listed custom element tag name regex\nExample:\n allowedCustomElementTagNameRegExp: '^backstage-'\n this will allow all custom elements with tag name matching `^backstage-` like <backstage-custom-element /> etc.",
443
+ "visibility": "frontend",
444
+ "type": "string"
445
+ },
446
+ "allowedCustomElementAttributeNameRegExp": {
447
+ "description": "Allows listed custom element attribute name regex\nExample:\n allowedCustomElementAttributeNameRegExp: 'attribute1|attribute2'\n this will allow all custom element attributes matching `attribute1` or `attribute2` like <backstage-custom-element attribute1=\"yes\" attribute2/>",
448
+ "visibility": "frontend",
449
+ "type": "string"
450
+ },
451
+ "additionalAllowedURIProtocols": {
452
+ "description": "Allows listed protocols in attributes with URI values\nExample:\n additionalAllowedURIProtocols: ['vscode']\n this will allow all attributes with URI values to have `vscode` protocol like `vscode://some/path` in addition to the default protocols\n matched by DOMPurify's IS_ALLOWED_URI RegExp:",
453
+ "visibility": "frontend",
454
+ "type": "array",
455
+ "items": {
456
+ "type": "string"
457
+ }
458
+ }
459
+ }
460
+ }
461
+ }
462
+ }
463
+ },
464
+ "$schema": "http://json-schema.org/draft-07/schema#"
465
+ },
466
+ "packageName": "@backstage/plugin-techdocs"
467
+ },
407
468
  {
408
469
  "path": "../integration/config.d.ts",
409
470
  "value": {
@@ -1135,67 +1196,6 @@
1135
1196
  },
1136
1197
  "packageName": "@backstage/frontend-app-api"
1137
1198
  },
1138
- {
1139
- "path": "../../plugins/techdocs/config.d.ts",
1140
- "value": {
1141
- "type": "object",
1142
- "properties": {
1143
- "techdocs": {
1144
- "description": "Configuration options for the techdocs plugin",
1145
- "type": "object",
1146
- "properties": {
1147
- "builder": {
1148
- "description": "Documentation building process depends on the builder attr",
1149
- "visibility": "frontend",
1150
- "enum": [
1151
- "external",
1152
- "local"
1153
- ],
1154
- "type": "string"
1155
- },
1156
- "legacyUseCaseSensitiveTripletPaths": {
1157
- "description": "Allows fallback to case-sensitive triplets in case of migration issues.",
1158
- "visibility": "frontend",
1159
- "type": "boolean"
1160
- },
1161
- "sanitizer": {
1162
- "type": "object",
1163
- "properties": {
1164
- "allowedIframeHosts": {
1165
- "description": "Allows iframe tag only for listed hosts\nExample:\n allowedIframeHosts: [\"example.com\"]\n this will allow all iframes with the host `example.com` in the src attribute",
1166
- "visibility": "frontend",
1167
- "type": "array",
1168
- "items": {
1169
- "type": "string"
1170
- }
1171
- },
1172
- "allowedCustomElementTagNameRegExp": {
1173
- "description": "Allows listed custom element tag name regex\nExample:\n allowedCustomElementTagNameRegExp: '^backstage-'\n this will allow all custom elements with tag name matching `^backstage-` like <backstage-custom-element /> etc.",
1174
- "visibility": "frontend",
1175
- "type": "string"
1176
- },
1177
- "allowedCustomElementAttributeNameRegExp": {
1178
- "description": "Allows listed custom element attribute name regex\nExample:\n allowedCustomElementAttributeNameRegExp: 'attribute1|attribute2'\n this will allow all custom element attributes matching `attribute1` or `attribute2` like <backstage-custom-element attribute1=\"yes\" attribute2/>",
1179
- "visibility": "frontend",
1180
- "type": "string"
1181
- },
1182
- "additionalAllowedURIProtocols": {
1183
- "description": "Allows listed protocols in attributes with URI values\nExample:\n additionalAllowedURIProtocols: ['vscode']\n this will allow all attributes with URI values to have `vscode` protocol like `vscode://some/path` in addition to the default protocols\n matched by DOMPurify's IS_ALLOWED_URI RegExp:",
1184
- "visibility": "frontend",
1185
- "type": "array",
1186
- "items": {
1187
- "type": "string"
1188
- }
1189
- }
1190
- }
1191
- }
1192
- }
1193
- }
1194
- },
1195
- "$schema": "http://json-schema.org/draft-07/schema#"
1196
- },
1197
- "packageName": "@backstage/plugin-techdocs"
1198
- },
1199
1199
  {
1200
1200
  "path": "../backend-plugin-api/config.d.ts",
1201
1201
  "value": {
@@ -1565,6 +1565,30 @@
1565
1565
  },
1566
1566
  "packageName": "@backstage/backend-app-api"
1567
1567
  },
1568
+ {
1569
+ "path": "../../plugins/events-node/config.d.ts",
1570
+ "value": {
1571
+ "type": "object",
1572
+ "properties": {
1573
+ "events": {
1574
+ "type": "object",
1575
+ "properties": {
1576
+ "useEventBus": {
1577
+ "description": "Whether to use the event bus API in the events plugin backend to\ndistribute events across multiple instances when publishing and\nsubscribing to events.\n\nThe default is 'auto', which means means that the event bus API will be\nused if it's available, but will be disabled if the events backend\nreturns a 404.\n\nIf set to 'never', the events service will only ever publish events\nlocally to the same instance, while if set to 'always', the event bus API\nwill never be disabled, even if the events backend returns a 404.",
1578
+ "enum": [
1579
+ "always",
1580
+ "auto",
1581
+ "never"
1582
+ ],
1583
+ "type": "string"
1584
+ }
1585
+ }
1586
+ }
1587
+ },
1588
+ "$schema": "http://json-schema.org/draft-07/schema#"
1589
+ },
1590
+ "packageName": "@backstage/plugin-events-node"
1591
+ },
1568
1592
  {
1569
1593
  "path": "../backend-defaults/config.d.ts",
1570
1594
  "value": {
@@ -3308,30 +3332,6 @@
3308
3332
  },
3309
3333
  "packageName": "@backstage/backend-defaults"
3310
3334
  },
3311
- {
3312
- "path": "../../plugins/events-node/config.d.ts",
3313
- "value": {
3314
- "type": "object",
3315
- "properties": {
3316
- "events": {
3317
- "type": "object",
3318
- "properties": {
3319
- "useEventBus": {
3320
- "description": "Whether to use the event bus API in the events plugin backend to\ndistribute events across multiple instances when publishing and\nsubscribing to events.\n\nThe default is 'auto', which means means that the event bus API will be\nused if it's available, but will be disabled if the events backend\nreturns a 404.\n\nIf set to 'never', the events service will only ever publish events\nlocally to the same instance, while if set to 'always', the event bus API\nwill never be disabled, even if the events backend returns a 404.",
3321
- "enum": [
3322
- "always",
3323
- "auto",
3324
- "never"
3325
- ],
3326
- "type": "string"
3327
- }
3328
- }
3329
- }
3330
- },
3331
- "$schema": "http://json-schema.org/draft-07/schema#"
3332
- },
3333
- "packageName": "@backstage/plugin-events-node"
3334
- },
3335
3335
  {
3336
3336
  "path": "../../plugins/auth-backend-module-google-provider/config.d.ts",
3337
3337
  "value": {
@@ -1,4 +1,4 @@
1
- <!doctype html><html lang="en"><head><meta charset="utf-8"/><meta name="viewport" content="width=device-width,initial-scale=1"/><meta name="theme-color" content="#000000"/><meta name="color-scheme" content="light dark"/><meta name="description" content="Backstage is an open source framework for building developer portals"/><link rel="manifest" href="/manifest.json" crossorigin="use-credentials"/><link rel="icon" href="/favicon.ico"/><link rel="shortcut icon" href="/favicon.ico"/><link rel="apple-touch-icon" sizes="180x180" href="/apple-touch-icon.png"/><link rel="icon" type="image/png" sizes="32x32" href="/favicon-32x32.png"/><link rel="icon" type="image/png" sizes="16x16" href="/favicon-16x16.png"/><link rel="mask-icon" href="/safari-pinned-tab.svg" color="#5bbad5"/><title>Techdocs Preview App</title><meta name="backstage-app-mode" content="public"><script defer="defer" src="/static/runtime.c1e06c6b.js"></script><script defer="defer" src="/static/module-react-aria.ee611fa4.js"></script><script defer="defer" src="/static/module-material-ui.b673969e.js"></script><script defer="defer" src="/static/module-motion-dom.3c999f2a.js"></script><script defer="defer" src="/static/module-lodash.abe41c34.js"></script><script defer="defer" src="/static/module-zod.bc4245f8.js"></script><script defer="defer" src="/static/module-ajv.ac283755.js"></script><script defer="defer" src="/static/module-framer-motion.f34ff33a.js"></script><script defer="defer" src="/static/module-mui.9c07ad9e.js"></script><script defer="defer" src="/static/module-react-stately.97fc37eb.js"></script><script defer="defer" src="/static/module-react-aria-components.d7b73980.js"></script><script defer="defer" src="/static/module-micromark-core-commonmark.d049c8fc.js"></script><script defer="defer" src="/static/module-parse5.94980036.js"></script><script defer="defer" src="/static/module-react-dom.c631e87d.js"></script><script defer="defer" src="/static/module-react-hook-form.2803e955.js"></script><script defer="defer" src="/static/module-i18next.c154323c.js"></script><script defer="defer" src="/static/module-remixicon.341273f1.js"></script><script defer="defer" src="/static/module-remix-run.0c80eb31.js"></script><script defer="defer" src="/static/vendor.4c22115e.js"></script><script defer="defer" src="/static/main.c8ae213c.js"></script><link href="/static/main.f9ce547f.css" rel="stylesheet"><script type="backstage.io/config">[
1
+ <!doctype html><html lang="en"><head><meta charset="utf-8"/><meta name="viewport" content="width=device-width,initial-scale=1"/><meta name="theme-color" content="#000000"/><meta name="color-scheme" content="light dark"/><meta name="description" content="Backstage is an open source framework for building developer portals"/><link rel="manifest" href="/manifest.json" crossorigin="use-credentials"/><link rel="icon" href="/favicon.ico"/><link rel="shortcut icon" href="/favicon.ico"/><link rel="apple-touch-icon" sizes="180x180" href="/apple-touch-icon.png"/><link rel="icon" type="image/png" sizes="32x32" href="/favicon-32x32.png"/><link rel="icon" type="image/png" sizes="16x16" href="/favicon-16x16.png"/><link rel="mask-icon" href="/safari-pinned-tab.svg" color="#5bbad5"/><title>Techdocs Preview App</title><meta name="backstage-app-mode" content="public"><script defer="defer" src="/static/runtime.4ae6f2de.js"></script><script defer="defer" src="/static/module-react-aria.e3e38de1.js"></script><script defer="defer" src="/static/module-material-ui.b673969e.js"></script><script defer="defer" src="/static/module-motion-dom.3c999f2a.js"></script><script defer="defer" src="/static/module-lodash.abe41c34.js"></script><script defer="defer" src="/static/module-zod.bc4245f8.js"></script><script defer="defer" src="/static/module-ajv.ac283755.js"></script><script defer="defer" src="/static/module-framer-motion.f34ff33a.js"></script><script defer="defer" src="/static/module-mui.9c07ad9e.js"></script><script defer="defer" src="/static/module-react-stately.97fc37eb.js"></script><script defer="defer" src="/static/module-react-aria-components.92fb2156.js"></script><script defer="defer" src="/static/module-micromark-core-commonmark.d049c8fc.js"></script><script defer="defer" src="/static/module-parse5.94980036.js"></script><script defer="defer" src="/static/module-react-dom.c631e87d.js"></script><script defer="defer" src="/static/module-react-hook-form.2803e955.js"></script><script defer="defer" src="/static/module-i18next.c154323c.js"></script><script defer="defer" src="/static/module-remixicon.341273f1.js"></script><script defer="defer" src="/static/module-remix-run.0c80eb31.js"></script><script defer="defer" src="/static/vendor.d9ce079c.js"></script><script defer="defer" src="/static/main.bf467822.js"></script><link href="/static/main.b226bb87.css" rel="stylesheet"><script type="backstage.io/config">[
2
2
  {
3
3
  "context": "app-config.yaml",
4
4
  "data": {
@@ -43,7 +43,7 @@
43
43
  color="#5bbad5"
44
44
  />
45
45
  <title><%= config.getString('app.title') %></title>
46
- <meta name="backstage-app-mode" content="public"><meta name="backstage-public-path" content="<%= publicPath %>/"><script defer src="<%= publicPath %>/static/runtime.c1e06c6b.js"></script><script defer src="<%= publicPath %>/static/module-react-aria.ee611fa4.js"></script><script defer src="<%= publicPath %>/static/module-material-ui.b673969e.js"></script><script defer src="<%= publicPath %>/static/module-motion-dom.3c999f2a.js"></script><script defer src="<%= publicPath %>/static/module-lodash.abe41c34.js"></script><script defer src="<%= publicPath %>/static/module-zod.bc4245f8.js"></script><script defer src="<%= publicPath %>/static/module-ajv.ac283755.js"></script><script defer src="<%= publicPath %>/static/module-framer-motion.f34ff33a.js"></script><script defer src="<%= publicPath %>/static/module-mui.9c07ad9e.js"></script><script defer src="<%= publicPath %>/static/module-react-stately.97fc37eb.js"></script><script defer src="<%= publicPath %>/static/module-react-aria-components.d7b73980.js"></script><script defer src="<%= publicPath %>/static/module-micromark-core-commonmark.d049c8fc.js"></script><script defer src="<%= publicPath %>/static/module-parse5.94980036.js"></script><script defer src="<%= publicPath %>/static/module-react-dom.c631e87d.js"></script><script defer src="<%= publicPath %>/static/module-react-hook-form.2803e955.js"></script><script defer src="<%= publicPath %>/static/module-i18next.c154323c.js"></script><script defer src="<%= publicPath %>/static/module-remixicon.341273f1.js"></script><script defer src="<%= publicPath %>/static/module-remix-run.0c80eb31.js"></script><script defer src="<%= publicPath %>/static/vendor.4c22115e.js"></script><script defer src="<%= publicPath %>/static/main.c8ae213c.js"></script><link href="<%= publicPath %>/static/main.f9ce547f.css" rel="stylesheet"></head>
46
+ <meta name="backstage-app-mode" content="public"><meta name="backstage-public-path" content="<%= publicPath %>/"><script defer src="<%= publicPath %>/static/runtime.4ae6f2de.js"></script><script defer src="<%= publicPath %>/static/module-react-aria.e3e38de1.js"></script><script defer src="<%= publicPath %>/static/module-material-ui.b673969e.js"></script><script defer src="<%= publicPath %>/static/module-motion-dom.3c999f2a.js"></script><script defer src="<%= publicPath %>/static/module-lodash.abe41c34.js"></script><script defer src="<%= publicPath %>/static/module-zod.bc4245f8.js"></script><script defer src="<%= publicPath %>/static/module-ajv.ac283755.js"></script><script defer src="<%= publicPath %>/static/module-framer-motion.f34ff33a.js"></script><script defer src="<%= publicPath %>/static/module-mui.9c07ad9e.js"></script><script defer src="<%= publicPath %>/static/module-react-stately.97fc37eb.js"></script><script defer src="<%= publicPath %>/static/module-react-aria-components.92fb2156.js"></script><script defer src="<%= publicPath %>/static/module-micromark-core-commonmark.d049c8fc.js"></script><script defer src="<%= publicPath %>/static/module-parse5.94980036.js"></script><script defer src="<%= publicPath %>/static/module-react-dom.c631e87d.js"></script><script defer src="<%= publicPath %>/static/module-react-hook-form.2803e955.js"></script><script defer src="<%= publicPath %>/static/module-i18next.c154323c.js"></script><script defer src="<%= publicPath %>/static/module-remixicon.341273f1.js"></script><script defer src="<%= publicPath %>/static/module-remix-run.0c80eb31.js"></script><script defer src="<%= publicPath %>/static/vendor.d9ce079c.js"></script><script defer src="<%= publicPath %>/static/main.bf467822.js"></script><link href="<%= publicPath %>/static/main.b226bb87.css" rel="stylesheet"></head>
47
47
  <body>
48
48
  <noscript>You need to enable JavaScript to run this app.</noscript>
49
49
  <div id="root"></div>
@@ -1,2 +1,2 @@
1
- "use strict";(self.webpackChunktechdocs_cli_embedded_app=self.webpackChunktechdocs_cli_embedded_app||[]).push([["1659"],{23494(e){e.exports=JSON.parse('{"name":"@backstage/plugin-techdocs","version":"1.17.6-next.0","description":"The Backstage plugin that renders technical documentation for your components","backstage":{"role":"frontend-plugin","pluginId":"techdocs","pluginPackages":["@backstage/plugin-techdocs","@backstage/plugin-techdocs-backend","@backstage/plugin-techdocs-common","@backstage/plugin-techdocs-node","@backstage/plugin-techdocs-react"]},"publishConfig":{"access":"public"},"keywords":["backstage","techdocs"],"homepage":"https://backstage.io","repository":{"type":"git","url":"https://github.com/backstage/backstage","directory":"plugins/techdocs"},"license":"Apache-2.0","sideEffects":false,"exports":{".":"./src/index.ts","./alpha":"./src/alpha/index.tsx","./package.json":"./package.json"},"main":"src/index.ts","types":"src/index.ts","typesVersions":{"*":{"alpha":["src/alpha/index.tsx"],"package.json":["package.json"]}},"files":["dist","config.d.ts"],"scripts":{"build":"backstage-cli package build","clean":"backstage-cli package clean","lint":"backstage-cli package lint","prepack":"backstage-cli package prepack","postpack":"backstage-cli package postpack","start":"backstage-cli package start","test":"backstage-cli package test"},"dependencies":{"@backstage/catalog-client":"workspace:^","@backstage/catalog-model":"workspace:^","@backstage/config":"workspace:^","@backstage/core-components":"workspace:^","@backstage/core-plugin-api":"workspace:^","@backstage/errors":"workspace:^","@backstage/frontend-plugin-api":"workspace:^","@backstage/integration":"workspace:^","@backstage/integration-react":"workspace:^","@backstage/plugin-auth-react":"workspace:^","@backstage/plugin-catalog-react":"workspace:^","@backstage/plugin-search-common":"workspace:^","@backstage/plugin-search-react":"workspace:^","@backstage/plugin-techdocs-common":"workspace:^","@backstage/plugin-techdocs-react":"workspace:^","@backstage/theme":"workspace:^","@backstage/ui":"workspace:^","@material-ui/core":"^4.12.2","@material-ui/icons":"^4.9.1","@material-ui/lab":"4.0.0-alpha.61","@material-ui/styles":"^4.10.0","@microsoft/fetch-event-source":"^2.0.1","@remixicon/react":"^4.6.0","dompurify":"^3.3.2","git-url-parse":"^15.0.0","lodash":"^4.17.21","react-helmet":"6.1.0","react-use":"^17.2.4","zod":"^4.0.0"},"devDependencies":{"@backstage/cli":"workspace:^","@backstage/core-app-api":"workspace:^","@backstage/dev-utils":"workspace:^","@backstage/plugin-catalog":"workspace:^","@backstage/plugin-techdocs-module-addons-contrib":"workspace:^","@backstage/test-utils":"workspace:^","@testing-library/dom":"^10.0.0","@testing-library/jest-dom":"^6.0.0","@testing-library/react":"^16.0.0","@testing-library/user-event":"^14.0.0","@types/dompurify":"^3.0.0","@types/react":"^18.0.0","react":"^18.0.2","react-dom":"^18.0.2","react-router-dom":"^6.30.2"},"peerDependencies":{"@types/react":"^17.0.0 || ^18.0.0","react":"^17.0.0 || ^18.0.0","react-dom":"^17.0.0 || ^18.0.0","react-router-dom":"^6.30.2"},"peerDependenciesMeta":{"@types/react":{"optional":true}},"configSchema":"config.d.ts"}')}}]);
2
- //# sourceMappingURL=1659.d3caa6c5.chunk.js.map
1
+ "use strict";(self.webpackChunktechdocs_cli_embedded_app=self.webpackChunktechdocs_cli_embedded_app||[]).push([["1659"],{23494(e){e.exports=JSON.parse('{"name":"@backstage/plugin-techdocs","version":"1.17.6-next.1","description":"The Backstage plugin that renders technical documentation for your components","backstage":{"role":"frontend-plugin","pluginId":"techdocs","pluginPackages":["@backstage/plugin-techdocs","@backstage/plugin-techdocs-backend","@backstage/plugin-techdocs-common","@backstage/plugin-techdocs-node","@backstage/plugin-techdocs-react"]},"publishConfig":{"access":"public"},"keywords":["backstage","techdocs"],"homepage":"https://backstage.io","repository":{"type":"git","url":"https://github.com/backstage/backstage","directory":"plugins/techdocs"},"license":"Apache-2.0","sideEffects":false,"exports":{".":"./src/index.ts","./alpha":"./src/alpha/index.tsx","./package.json":"./package.json"},"main":"src/index.ts","types":"src/index.ts","typesVersions":{"*":{"alpha":["src/alpha/index.tsx"],"package.json":["package.json"]}},"files":["dist","config.d.ts"],"scripts":{"build":"backstage-cli package build","clean":"backstage-cli package clean","lint":"backstage-cli package lint","prepack":"backstage-cli package prepack","postpack":"backstage-cli package postpack","start":"backstage-cli package start","test":"backstage-cli package test"},"dependencies":{"@backstage/catalog-client":"workspace:^","@backstage/catalog-model":"workspace:^","@backstage/config":"workspace:^","@backstage/core-components":"workspace:^","@backstage/core-plugin-api":"workspace:^","@backstage/errors":"workspace:^","@backstage/frontend-plugin-api":"workspace:^","@backstage/integration":"workspace:^","@backstage/integration-react":"workspace:^","@backstage/plugin-auth-react":"workspace:^","@backstage/plugin-catalog-react":"workspace:^","@backstage/plugin-search-common":"workspace:^","@backstage/plugin-search-react":"workspace:^","@backstage/plugin-techdocs-common":"workspace:^","@backstage/plugin-techdocs-react":"workspace:^","@backstage/theme":"workspace:^","@backstage/ui":"workspace:^","@material-ui/core":"^4.12.2","@material-ui/icons":"^4.9.1","@material-ui/lab":"4.0.0-alpha.61","@material-ui/styles":"^4.10.0","@microsoft/fetch-event-source":"^2.0.1","@remixicon/react":">=4.6.0 <4.9.0","dompurify":"^3.3.2","git-url-parse":"^15.0.0","lodash":"^4.17.21","react-helmet":"6.1.0","react-use":"^17.2.4","zod":"^4.0.0"},"devDependencies":{"@backstage/cli":"workspace:^","@backstage/core-app-api":"workspace:^","@backstage/dev-utils":"workspace:^","@backstage/plugin-catalog":"workspace:^","@backstage/plugin-techdocs-module-addons-contrib":"workspace:^","@backstage/test-utils":"workspace:^","@testing-library/dom":"^10.0.0","@testing-library/jest-dom":"^6.0.0","@testing-library/react":"^16.0.0","@testing-library/user-event":"^14.0.0","@types/dompurify":"^3.0.0","@types/react":"^18.0.0","react":"^18.0.2","react-dom":"^18.0.2","react-router-dom":"^6.30.2"},"peerDependencies":{"@types/react":"^17.0.0 || ^18.0.0","react":"^17.0.0 || ^18.0.0","react-dom":"^17.0.0 || ^18.0.0","react-router-dom":"^6.30.2"},"peerDependenciesMeta":{"@types/react":{"optional":true}},"configSchema":"config.d.ts"}')}}]);
2
+ //# sourceMappingURL=1659.d55e1e7e.chunk.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"static/1659.d3caa6c5.chunk.js","sources":["webpack://techdocs-cli-embedded-app/json|/home/runner/work/publishing/publishing/plugins/techdocs/package.json"],"sourcesContent":["module.exports = JSON.parse('{\"name\":\"@backstage/plugin-techdocs\",\"version\":\"1.17.6-next.0\",\"description\":\"The Backstage plugin that renders technical documentation for your components\",\"backstage\":{\"role\":\"frontend-plugin\",\"pluginId\":\"techdocs\",\"pluginPackages\":[\"@backstage/plugin-techdocs\",\"@backstage/plugin-techdocs-backend\",\"@backstage/plugin-techdocs-common\",\"@backstage/plugin-techdocs-node\",\"@backstage/plugin-techdocs-react\"]},\"publishConfig\":{\"access\":\"public\"},\"keywords\":[\"backstage\",\"techdocs\"],\"homepage\":\"https://backstage.io\",\"repository\":{\"type\":\"git\",\"url\":\"https://github.com/backstage/backstage\",\"directory\":\"plugins/techdocs\"},\"license\":\"Apache-2.0\",\"sideEffects\":false,\"exports\":{\".\":\"./src/index.ts\",\"./alpha\":\"./src/alpha/index.tsx\",\"./package.json\":\"./package.json\"},\"main\":\"src/index.ts\",\"types\":\"src/index.ts\",\"typesVersions\":{\"*\":{\"alpha\":[\"src/alpha/index.tsx\"],\"package.json\":[\"package.json\"]}},\"files\":[\"dist\",\"config.d.ts\"],\"scripts\":{\"build\":\"backstage-cli package build\",\"clean\":\"backstage-cli package clean\",\"lint\":\"backstage-cli package lint\",\"prepack\":\"backstage-cli package prepack\",\"postpack\":\"backstage-cli package postpack\",\"start\":\"backstage-cli package start\",\"test\":\"backstage-cli package test\"},\"dependencies\":{\"@backstage/catalog-client\":\"workspace:^\",\"@backstage/catalog-model\":\"workspace:^\",\"@backstage/config\":\"workspace:^\",\"@backstage/core-components\":\"workspace:^\",\"@backstage/core-plugin-api\":\"workspace:^\",\"@backstage/errors\":\"workspace:^\",\"@backstage/frontend-plugin-api\":\"workspace:^\",\"@backstage/integration\":\"workspace:^\",\"@backstage/integration-react\":\"workspace:^\",\"@backstage/plugin-auth-react\":\"workspace:^\",\"@backstage/plugin-catalog-react\":\"workspace:^\",\"@backstage/plugin-search-common\":\"workspace:^\",\"@backstage/plugin-search-react\":\"workspace:^\",\"@backstage/plugin-techdocs-common\":\"workspace:^\",\"@backstage/plugin-techdocs-react\":\"workspace:^\",\"@backstage/theme\":\"workspace:^\",\"@backstage/ui\":\"workspace:^\",\"@material-ui/core\":\"^4.12.2\",\"@material-ui/icons\":\"^4.9.1\",\"@material-ui/lab\":\"4.0.0-alpha.61\",\"@material-ui/styles\":\"^4.10.0\",\"@microsoft/fetch-event-source\":\"^2.0.1\",\"@remixicon/react\":\"^4.6.0\",\"dompurify\":\"^3.3.2\",\"git-url-parse\":\"^15.0.0\",\"lodash\":\"^4.17.21\",\"react-helmet\":\"6.1.0\",\"react-use\":\"^17.2.4\",\"zod\":\"^4.0.0\"},\"devDependencies\":{\"@backstage/cli\":\"workspace:^\",\"@backstage/core-app-api\":\"workspace:^\",\"@backstage/dev-utils\":\"workspace:^\",\"@backstage/plugin-catalog\":\"workspace:^\",\"@backstage/plugin-techdocs-module-addons-contrib\":\"workspace:^\",\"@backstage/test-utils\":\"workspace:^\",\"@testing-library/dom\":\"^10.0.0\",\"@testing-library/jest-dom\":\"^6.0.0\",\"@testing-library/react\":\"^16.0.0\",\"@testing-library/user-event\":\"^14.0.0\",\"@types/dompurify\":\"^3.0.0\",\"@types/react\":\"^18.0.0\",\"react\":\"^18.0.2\",\"react-dom\":\"^18.0.2\",\"react-router-dom\":\"^6.30.2\"},\"peerDependencies\":{\"@types/react\":\"^17.0.0 || ^18.0.0\",\"react\":\"^17.0.0 || ^18.0.0\",\"react-dom\":\"^17.0.0 || ^18.0.0\",\"react-router-dom\":\"^6.30.2\"},\"peerDependenciesMeta\":{\"@types/react\":{\"optional\":true}},\"configSchema\":\"config.d.ts\"}')"],"names":["JSON"],"mappings":"kIAAA,EAAO,OAAO,CAAGA,KAAK,KAAK,CAAC,y+F"}
1
+ {"version":3,"file":"static/1659.d55e1e7e.chunk.js","sources":["webpack://techdocs-cli-embedded-app/json|/home/runner/work/publishing/publishing/plugins/techdocs/package.json"],"sourcesContent":["module.exports = JSON.parse('{\"name\":\"@backstage/plugin-techdocs\",\"version\":\"1.17.6-next.1\",\"description\":\"The Backstage plugin that renders technical documentation for your components\",\"backstage\":{\"role\":\"frontend-plugin\",\"pluginId\":\"techdocs\",\"pluginPackages\":[\"@backstage/plugin-techdocs\",\"@backstage/plugin-techdocs-backend\",\"@backstage/plugin-techdocs-common\",\"@backstage/plugin-techdocs-node\",\"@backstage/plugin-techdocs-react\"]},\"publishConfig\":{\"access\":\"public\"},\"keywords\":[\"backstage\",\"techdocs\"],\"homepage\":\"https://backstage.io\",\"repository\":{\"type\":\"git\",\"url\":\"https://github.com/backstage/backstage\",\"directory\":\"plugins/techdocs\"},\"license\":\"Apache-2.0\",\"sideEffects\":false,\"exports\":{\".\":\"./src/index.ts\",\"./alpha\":\"./src/alpha/index.tsx\",\"./package.json\":\"./package.json\"},\"main\":\"src/index.ts\",\"types\":\"src/index.ts\",\"typesVersions\":{\"*\":{\"alpha\":[\"src/alpha/index.tsx\"],\"package.json\":[\"package.json\"]}},\"files\":[\"dist\",\"config.d.ts\"],\"scripts\":{\"build\":\"backstage-cli package build\",\"clean\":\"backstage-cli package clean\",\"lint\":\"backstage-cli package lint\",\"prepack\":\"backstage-cli package prepack\",\"postpack\":\"backstage-cli package postpack\",\"start\":\"backstage-cli package start\",\"test\":\"backstage-cli package test\"},\"dependencies\":{\"@backstage/catalog-client\":\"workspace:^\",\"@backstage/catalog-model\":\"workspace:^\",\"@backstage/config\":\"workspace:^\",\"@backstage/core-components\":\"workspace:^\",\"@backstage/core-plugin-api\":\"workspace:^\",\"@backstage/errors\":\"workspace:^\",\"@backstage/frontend-plugin-api\":\"workspace:^\",\"@backstage/integration\":\"workspace:^\",\"@backstage/integration-react\":\"workspace:^\",\"@backstage/plugin-auth-react\":\"workspace:^\",\"@backstage/plugin-catalog-react\":\"workspace:^\",\"@backstage/plugin-search-common\":\"workspace:^\",\"@backstage/plugin-search-react\":\"workspace:^\",\"@backstage/plugin-techdocs-common\":\"workspace:^\",\"@backstage/plugin-techdocs-react\":\"workspace:^\",\"@backstage/theme\":\"workspace:^\",\"@backstage/ui\":\"workspace:^\",\"@material-ui/core\":\"^4.12.2\",\"@material-ui/icons\":\"^4.9.1\",\"@material-ui/lab\":\"4.0.0-alpha.61\",\"@material-ui/styles\":\"^4.10.0\",\"@microsoft/fetch-event-source\":\"^2.0.1\",\"@remixicon/react\":\">=4.6.0 <4.9.0\",\"dompurify\":\"^3.3.2\",\"git-url-parse\":\"^15.0.0\",\"lodash\":\"^4.17.21\",\"react-helmet\":\"6.1.0\",\"react-use\":\"^17.2.4\",\"zod\":\"^4.0.0\"},\"devDependencies\":{\"@backstage/cli\":\"workspace:^\",\"@backstage/core-app-api\":\"workspace:^\",\"@backstage/dev-utils\":\"workspace:^\",\"@backstage/plugin-catalog\":\"workspace:^\",\"@backstage/plugin-techdocs-module-addons-contrib\":\"workspace:^\",\"@backstage/test-utils\":\"workspace:^\",\"@testing-library/dom\":\"^10.0.0\",\"@testing-library/jest-dom\":\"^6.0.0\",\"@testing-library/react\":\"^16.0.0\",\"@testing-library/user-event\":\"^14.0.0\",\"@types/dompurify\":\"^3.0.0\",\"@types/react\":\"^18.0.0\",\"react\":\"^18.0.2\",\"react-dom\":\"^18.0.2\",\"react-router-dom\":\"^6.30.2\"},\"peerDependencies\":{\"@types/react\":\"^17.0.0 || ^18.0.0\",\"react\":\"^17.0.0 || ^18.0.0\",\"react-dom\":\"^17.0.0 || ^18.0.0\",\"react-router-dom\":\"^6.30.2\"},\"peerDependenciesMeta\":{\"@types/react\":{\"optional\":true}},\"configSchema\":\"config.d.ts\"}')"],"names":["JSON"],"mappings":"kIAAA,EAAO,OAAO,CAAGA,KAAK,KAAK,CAAC,i/F"}
@@ -0,0 +1,2 @@
1
+ @layer tokens,base;@layer components{.v8W8N2dqiE5cGNxm{flex-direction:column;display:flex}.Q3dVWKchqFEGDxNm{flex-direction:column;flex:1;min-height:0;display:flex;overflow:hidden}.kHZPXvGYPYAGYFhf{caption-side:bottom;border-collapse:collapse;table-layout:fixed;flex:1;width:100%;min-height:0;transition:opacity .2s ease-in-out;overflow:auto}.kHZPXvGYPYAGYFhf[data-stale=true]{opacity:.6}.kHZPXvGYPYAGYFhf[data-ispending=true]{opacity:.6}.oifZQr6gC_QyhRzd{border-bottom:1px solid var(--bui-border-2);transition:color .2s ease-in-out}.X8xcDL8E6rIYbeSR{text-align:left;padding:var(--bui-space-3);font-size:var(--bui-font-size-3);color:var(--bui-fg-primary)}.ae9pE72Zc07f8L6W{width:40px}.d_1Lwe7cMab7Y7x8{align-items:center;gap:var(--bui-space-1);flex-direction:row;display:flex}.c2mE5YTadTwCB9Cv{text-overflow:ellipsis;white-space:nowrap;min-width:0;overflow:hidden}.U0p16BfATSMI0pZa{cursor:pointer;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;align-items:center;gap:var(--bui-space-1);opacity:0;color:var(--bui-fg-secondary);transition:opacity .1s ease-in-out;display:inline-flex}.X8xcDL8E6rIYbeSR:hover .U0p16BfATSMI0pZa{opacity:1}[data-sort-direction=ascending] .U0p16BfATSMI0pZa{opacity:1}[data-sort-direction=descending] .U0p16BfATSMI0pZa{opacity:1}.U0p16BfATSMI0pZa svg{transition:transform .1s ease-in-out}[data-sort-direction=descending] .U0p16BfATSMI0pZa svg{transform:rotate(180deg)}.RevIL7d7UeIjyBcV{color:var(--bui-fg-primary)}.kPJhRwYa5RAAhwxF{border-bottom:1px solid var(--bui-border-2);cursor:default;transition:color .2s ease-in-out}.kPJhRwYa5RAAhwxF:hover{background-color:var(--bui-bg-neutral-1-hover)}.kPJhRwYa5RAAhwxF[data-selected]{background-color:var(--bui-bg-neutral-1-pressed)}.kPJhRwYa5RAAhwxF[data-pressed]{background-color:var(--bui-bg-neutral-1-pressed)}.kPJhRwYa5RAAhwxF[data-on-bg=neutral-1]:hover{background-color:var(--bui-bg-neutral-2-hover)}.kPJhRwYa5RAAhwxF[data-on-bg=neutral-1][data-selected]{background-color:var(--bui-bg-neutral-2-pressed)}.kPJhRwYa5RAAhwxF[data-on-bg=neutral-1][data-pressed]{background-color:var(--bui-bg-neutral-2-pressed)}.kPJhRwYa5RAAhwxF[data-on-bg=neutral-1][data-disabled]{background-color:var(--bui-bg-neutral-2-disabled)}.kPJhRwYa5RAAhwxF[data-on-bg=neutral-2]:hover{background-color:var(--bui-bg-neutral-3-hover)}.kPJhRwYa5RAAhwxF[data-on-bg=neutral-2][data-selected]{background-color:var(--bui-bg-neutral-3-pressed)}.kPJhRwYa5RAAhwxF[data-on-bg=neutral-2][data-pressed]{background-color:var(--bui-bg-neutral-3-pressed)}.kPJhRwYa5RAAhwxF[data-on-bg=neutral-2][data-disabled]{background-color:var(--bui-bg-neutral-3-disabled)}.kPJhRwYa5RAAhwxF[data-on-bg=neutral-3]:hover{background-color:var(--bui-bg-neutral-4-hover)}.kPJhRwYa5RAAhwxF[data-on-bg=neutral-3][data-selected]{background-color:var(--bui-bg-neutral-4-pressed)}.kPJhRwYa5RAAhwxF[data-on-bg=neutral-3][data-pressed]{background-color:var(--bui-bg-neutral-4-pressed)}.kPJhRwYa5RAAhwxF[data-on-bg=neutral-3][data-disabled]{background-color:var(--bui-bg-neutral-4-disabled)}.kPJhRwYa5RAAhwxF[data-href]{cursor:pointer}.kPJhRwYa5RAAhwxF[data-selection-mode]{cursor:pointer}.kPJhRwYa5RAAhwxF[data-react-aria-pressable=true]{cursor:pointer}.kPJhRwYa5RAAhwxF[data-disabled]{background-color:var(--bui-bg-neutral-1-disabled);cursor:not-allowed}.lBJ1evBwz18CSuEb{padding:var(--bui-space-3);font-size:var(--bui-font-size-3);font-family:var(--bui-font-regular);font-weight:var(--bui-font-weight-regular);min-width:0;overflow:hidden}.waN8m81er3MmoNwQ{width:40px}.AQrmv2_3dWQm8mkC{align-items:center;gap:var(--bui-space-2);flex-direction:row;width:100%;min-width:0;max-width:100%;display:flex}.pZfxgqebmIQNGPFo,.pZfxgqebmIQNGPFo svg{color:var(--bui-fg-primary);align-items:center;display:inline-flex}.VL_PIHABTKklOpWr{gap:var(--bui-space-0_5);flex-direction:column;flex:1;min-width:0;max-width:100%;display:flex;overflow:hidden}.VL_PIHABTKklOpWr>*{min-width:0;max-width:100%}.qco3EFeJwhQRop02{gap:var(--bui-space-2);flex-direction:row;align-items:center;display:flex}.hJtmqCNU8SMp97Lu{align-items:flex-start;gap:var(--bui-space-2);font-size:var(--bui-font-size-3);font-family:var(--bui-font-regular);font-weight:var(--bui-font-weight-regular);color:var(--bui-fg-primary);-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;cursor:pointer;flex-direction:row;display:flex}.hJtmqCNU8SMp97Lu[data-disabled]{cursor:not-allowed;opacity:.5}.AsCZ8LTTAs5lRnNR{width:1rem;height:1rem;box-shadow:inset 0 0 0 1px var(--bui-border-2);background-color:var(--bui-bg-neutral-1);color:transparent;border:none;border-radius:2px;flex-shrink:0;justify-content:center;align-items:center;padding:0;transition:background-color .2s ease-in-out;display:flex}.hJtmqCNU8SMp97Lu[data-focus-visible] .AsCZ8LTTAs5lRnNR{outline:2px solid var(--bui-ring);outline-offset:2px;transition:none}.hJtmqCNU8SMp97Lu[data-selected] .AsCZ8LTTAs5lRnNR{background-color:var(--bui-bg-solid);box-shadow:none;color:var(--bui-fg-solid)}.hJtmqCNU8SMp97Lu[data-indeterminate] .AsCZ8LTTAs5lRnNR{background-color:var(--bui-bg-neutral-1);box-shadow:inset 0 0 0 1px var(--bui-border-2);color:var(--bui-fg-primary)}.hJtmqCNU8SMp97Lu[data-invalid] .AsCZ8LTTAs5lRnNR{box-shadow:inset 0 0 0 1px var(--bui-border-danger)}.hJtmqCNU8SMp97Lu[data-invalid][data-selected] .AsCZ8LTTAs5lRnNR{background-color:var(--bui-border-danger);box-shadow:none}.hJtmqCNU8SMp97Lu[data-invalid][data-indeterminate] .AsCZ8LTTAs5lRnNR{box-shadow:inset 0 0 0 1px var(--bui-border-danger)}@media (prefers-reduced-motion:reduce){.AsCZ8LTTAs5lRnNR{transition:none}}.oswl8eimGwGMv65g{--loading-duration:.2s;--bg:transparent;--bg-hover:transparent;--bg-active:transparent;--fg:inherit;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;cursor:pointer;border-radius:var(--bui-radius-2);transition:background-color var(--loading-duration)ease-out,box-shadow var(--loading-duration)ease-out;color:var(--fg);background-color:var(--bg);border:none;flex-shrink:0;justify-content:center;align-items:center;padding:0;display:inline-flex;position:relative}.oswl8eimGwGMv65g:hover{background-color:var(--bg-hover);transition:background-color .15s}.oswl8eimGwGMv65g:active{background-color:var(--bg-active)}.oswl8eimGwGMv65g[data-disabled=true]{cursor:not-allowed}.oswl8eimGwGMv65g[data-ispending=true]{cursor:wait}.oswl8eimGwGMv65g[data-variant=primary]{--bg:var(--bui-bg-solid);--bg-hover:var(--bui-bg-solid-hover);--bg-active:var(--bui-bg-solid-pressed);--fg:var(--bui-fg-solid)}.oswl8eimGwGMv65g[data-variant=primary][data-disabled=true]{--bg:var(--bui-bg-solid-disabled);--bg-hover:var(--bui-bg-solid-disabled);--bg-active:var(--bui-bg-solid-disabled);--fg:var(--bui-fg-solid-disabled)}.oswl8eimGwGMv65g[data-variant=primary][data-ispending=true]{--bg:var(--bui-bg-solid-disabled);--bg-hover:var(--bui-bg-solid-disabled);--bg-active:var(--bui-bg-solid-disabled);--fg:var(--bui-fg-solid-disabled)}.oswl8eimGwGMv65g[data-variant=primary][data-focus-visible]{outline:2px solid var(--bui-ring);outline-offset:2px}.oswl8eimGwGMv65g[data-variant=secondary]{--bg:var(--bui-bg-neutral-1);--bg-hover:var(--bui-bg-neutral-1-hover);--bg-active:var(--bui-bg-neutral-1-pressed);--fg:var(--bui-fg-primary)}.oswl8eimGwGMv65g[data-variant=secondary][data-on-bg=neutral-1]{--bg:var(--bui-bg-neutral-2);--bg-hover:var(--bui-bg-neutral-2-hover);--bg-active:var(--bui-bg-neutral-2-pressed)}.oswl8eimGwGMv65g[data-variant=secondary][data-on-bg=neutral-2]{--bg:var(--bui-bg-neutral-3);--bg-hover:var(--bui-bg-neutral-3-hover);--bg-active:var(--bui-bg-neutral-3-pressed)}.oswl8eimGwGMv65g[data-variant=secondary][data-on-bg=neutral-3]{--bg:var(--bui-bg-neutral-4);--bg-hover:var(--bui-bg-neutral-4-hover);--bg-active:var(--bui-bg-neutral-4-pressed)}.oswl8eimGwGMv65g[data-variant=secondary][data-disabled=true]{--bg-hover:var(--bg);--bg-active:var(--bg);--fg:var(--bui-fg-disabled)}.oswl8eimGwGMv65g[data-variant=secondary][data-ispending=true]{--bg-hover:var(--bg);--bg-active:var(--bg);--fg:var(--bui-fg-disabled)}.oswl8eimGwGMv65g[data-variant=secondary][data-focus-visible]{box-shadow:inset 0 0 0 2px var(--bui-ring);outline:none;transition:none}.oswl8eimGwGMv65g[data-variant=tertiary]{--bg-hover:var(--bui-bg-neutral-1-hover);--bg-active:var(--bui-bg-neutral-1-pressed);--fg:var(--bui-fg-primary)}.oswl8eimGwGMv65g[data-variant=tertiary][data-on-bg=neutral-1]{--bg-hover:var(--bui-bg-neutral-2-hover);--bg-active:var(--bui-bg-neutral-2-pressed)}.oswl8eimGwGMv65g[data-variant=tertiary][data-on-bg=neutral-2]{--bg-hover:var(--bui-bg-neutral-3-hover);--bg-active:var(--bui-bg-neutral-3-pressed)}.oswl8eimGwGMv65g[data-variant=tertiary][data-on-bg=neutral-3]{--bg-hover:var(--bui-bg-neutral-4-hover);--bg-active:var(--bui-bg-neutral-4-pressed)}.oswl8eimGwGMv65g[data-variant=tertiary][data-disabled=true]{--bg-hover:var(--bg);--bg-active:var(--bg);--fg:var(--bui-fg-disabled)}.oswl8eimGwGMv65g[data-variant=tertiary][data-ispending=true]{--bg-hover:var(--bg);--bg-active:var(--bg);--fg:var(--bui-fg-disabled)}.oswl8eimGwGMv65g[data-variant=tertiary][data-focus-visible]{box-shadow:inset 0 0 0 2px var(--bui-ring);outline:none;transition:none}.oswl8eimGwGMv65g[data-size=small]{width:2rem;height:2rem}.oswl8eimGwGMv65g[data-size=small] svg{width:1rem;height:1rem}.oswl8eimGwGMv65g[data-size=medium]{width:2.5rem;height:2.5rem}.oswl8eimGwGMv65g[data-size=medium] svg{width:1.25rem;height:1.25rem}.nupI988ZoWQXN2ow{width:100%;height:100%;transition:opacity var(--loading-duration)ease-out;justify-content:center;align-items:center;display:inline-flex}.oswl8eimGwGMv65g[data-ispending=true] .nupI988ZoWQXN2ow{opacity:0}.S0ip8O7B0EhQCtAt{opacity:0;transition:opacity var(--loading-duration)ease-in;display:flex;position:absolute;top:50%;left:50%;transform:translate(-50%,-50%)}.oswl8eimGwGMv65g[data-ispending=true] .S0ip8O7B0EhQCtAt{opacity:1}.S0ip8O7B0EhQCtAt svg{animation:1s linear infinite wvp018_1ftcIUJUQ}@media (prefers-reduced-motion:reduce){.oswl8eimGwGMv65g,.nupI988ZoWQXN2ow,.S0ip8O7B0EhQCtAt{transition-duration:50ms}.S0ip8O7B0EhQCtAt svg{animation:none}}@keyframes wvp018_1ftcIUJUQ{0%{transform:rotate(0)}to{transform:rotate(360deg)}}:is(.fl_o2cRttX8vIo5j,.xRoZ59Ta50wTyFbP)[data-size=small]{--select-item-height:2rem}:is(.fl_o2cRttX8vIo5j,.xRoZ59Ta50wTyFbP)[data-size=medium]{--select-item-height:2.5rem}.xRoZ59Ta50wTyFbP{min-width:var(--trigger-width)}.f6xSegNfnDAA591f{box-sizing:border-box;border-radius:var(--bui-radius-3);background-color:var(--bui-bg-neutral-1);border:none;outline:none;transition:box-shadow .2s ease-in-out}.f6xSegNfnDAA591f[data-on-bg=neutral-1]{background-color:var(--bui-bg-neutral-2)}.f6xSegNfnDAA591f[data-on-bg=neutral-2]{background-color:var(--bui-bg-neutral-3)}.f6xSegNfnDAA591f[data-on-bg=neutral-3]{background-color:var(--bui-bg-neutral-4)}.fl_o2cRttX8vIo5j[data-focused] .f6xSegNfnDAA591f{box-shadow:inset 0 0 0 1px var(--bui-ring)}.f6xSegNfnDAA591f{cursor:pointer;justify-content:space-between;align-items:center;gap:var(--bui-space-2);width:100%;height:var(--select-item-height);display:flex}.fl_o2cRttX8vIo5j[data-size=small] .f6xSegNfnDAA591f{padding-inline:var(--bui-space-3)0}.fl_o2cRttX8vIo5j[data-size=medium] .f6xSegNfnDAA591f{padding-inline:var(--bui-space-4)0}.f6xSegNfnDAA591f svg{color:var(--bui-fg-secondary);flex-shrink:0}.fl_o2cRttX8vIo5j[data-size=small] :is(.f6xSegNfnDAA591f svg){width:1rem;height:1rem}.fl_o2cRttX8vIo5j[data-size=medium] :is(.f6xSegNfnDAA591f svg){width:1.25rem;height:1.25rem}.f6xSegNfnDAA591f::-webkit-input-placeholder{color:var(--bui-fg-secondary)}.f6xSegNfnDAA591f::-ms-input-placeholder{color:var(--bui-fg-secondary)}.f6xSegNfnDAA591f::placeholder{color:var(--bui-fg-secondary)}.fl_o2cRttX8vIo5j[data-invalid] .f6xSegNfnDAA591f{box-shadow:inset 0 0 0 1px var(--bui-border-danger)}.f6xSegNfnDAA591f[disabled]{cursor:not-allowed;color:var(--bui-fg-disabled)}.hey3g7_Ll4EtTJdE{width:var(--select-item-height);height:var(--select-item-height);flex-grow:0;flex-shrink:0;align-content:center;justify-content:center;display:grid}.EOuke6Cxn9cos7ok{text-overflow:ellipsis;white-space:nowrap;width:100%;font-size:var(--bui-font-size-3);font-family:var(--bui-font-regular);font-weight:var(--bui-font-weight-regular);color:var(--bui-fg-primary);text-align:left;overflow:hidden}.EOuke6Cxn9cos7ok .LiF4f9w5zcb_V5q_{display:none}.EOuke6Cxn9cos7ok[disabled]{color:var(--bui-fg-disabled)}.wCPzC0hbf30wVMOp{min-height:0;padding-block:var(--bui-space-1);padding-inline:var(--bui-space-1);overflow:auto}.wCPzC0hbf30wVMOp[data-focus-visible]{outline:none}.Mn7kwp0_L8g4rWcf{box-sizing:border-box;min-height:var(--select-item-height);padding-block:var(--bui-space-1);padding-left:var(--bui-space-3);padding-right:var(--bui-space-4);color:var(--bui-fg-primary);cursor:pointer;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;font-size:var(--bui-font-size-3);align-items:center;gap:var(--bui-space-2);border-radius:var(--bui-radius-2);outline:none;grid-template-columns:1rem 1fr;grid-template-areas:"icon text";display:grid;position:relative}.Mn7kwp0_L8g4rWcf[data-focused]{background-color:var(--bui-bg-neutral-2)}.Mn7kwp0_L8g4rWcf[data-disabled]{cursor:not-allowed;color:var(--bui-fg-disabled)}.Mn7kwp0_L8g4rWcf[data-selected] .LiF4f9w5zcb_V5q_{opacity:1}.LiF4f9w5zcb_V5q_{opacity:0;grid-area:icon;justify-content:center;align-items:center;transition:opacity .2s ease-in-out;display:flex}.sG8NrKzlnq4NyoHP{flex:1;grid-area:text}.af0jN5t2MnkzSKwM{margin-bottom:var(--bui-space-1);padding-inline:var(--bui-space-3)0;border-bottom:1px solid var(--bui-border-2);flex-shrink:0;align-items:center;display:flex}.MAcGzHfmHVw4bkcS{color:var(--bui-fg-primary);font-size:var(--bui-font-size-3);font-family:var(--bui-font-regular);height:var(--select-item-height);line-height:var(--select-item-height);background-color:transparent;border:none;outline:none;flex:1;padding:0}.MAcGzHfmHVw4bkcS::-webkit-input-placeholder{color:var(--bui-fg-secondary)}.MAcGzHfmHVw4bkcS::-ms-input-placeholder{color:var(--bui-fg-secondary)}.MAcGzHfmHVw4bkcS::placeholder{color:var(--bui-fg-secondary)}.MAcGzHfmHVw4bkcS::-webkit-search-cancel-button{-webkit-appearance:none}.MAcGzHfmHVw4bkcS::-webkit-search-decoration{-webkit-appearance:none}.Qm0LMYJXqDozSs4J{cursor:pointer;color:var(--bui-fg-secondary);width:var(--select-item-height);height:var(--select-item-height);background-color:transparent;border:none;flex:none;align-content:center;justify-content:center;margin:0;padding:0;transition:color .2s ease-in-out;display:grid}input:placeholder-shown+.Qm0LMYJXqDozSs4J{display:none}.Qm0LMYJXqDozSs4J:hover{color:var(--bui-fg-primary)}.Qm0LMYJXqDozSs4J svg{width:1rem;height:1rem}.sPxu4s2LxhUkjdE5:first-child .FuD_n78xDNQIkQ_A{padding-top:0}.FuD_n78xDNQIkQ_A{height:2rem;padding-top:var(--bui-space-3);padding-left:var(--bui-space-3);color:var(--bui-fg-primary);font-size:var(--bui-font-size-1);letter-spacing:.05rem;text-transform:uppercase;align-items:center;font-weight:700;display:flex}.mai_FHtvkacjqFtg{padding-inline:var(--bui-space-3);padding-block:var(--bui-space-2);color:var(--bui-fg-secondary);font-size:var(--bui-font-size-3);font-family:var(--bui-font-regular);font-weight:var(--bui-font-weight-regular)}.c6K43dAXzUIQYTPO{--popover-border-radius:var(--bui-radius-3);box-shadow:var(--bui-shadow);border-radius:var(--popover-border-radius);background:var(--bui-bg-app);border:1px solid var(--bui-border-1);forced-color-adjust:none;max-height:inherit;outline:none;flex-direction:column;transition:transform .2s,opacity .2s;display:flex;transform:translate(0,0)}.c6K43dAXzUIQYTPO[data-entering]{transform:var(--origin);opacity:0}.c6K43dAXzUIQYTPO[data-exiting]{transform:var(--origin);opacity:0}.c6K43dAXzUIQYTPO[data-placement=top]{--origin:translateY(4px)}.c6K43dAXzUIQYTPO[data-placement=top]:has(.nWNOVN9SSAkDCJc4){margin-bottom:var(--bui-space-3)}.c6K43dAXzUIQYTPO[data-placement=right]{--origin:translateX(-4px)}.c6K43dAXzUIQYTPO[data-placement=right]:has(.nWNOVN9SSAkDCJc4){margin-left:var(--bui-space-3)}.c6K43dAXzUIQYTPO[data-placement=bottom]{--origin:translateY(-4px)}.c6K43dAXzUIQYTPO[data-placement=bottom]:has(.nWNOVN9SSAkDCJc4){margin-top:var(--bui-space-3)}.c6K43dAXzUIQYTPO[data-placement=left]{--origin:translateX(4px)}.c6K43dAXzUIQYTPO[data-placement=left]:has(.nWNOVN9SSAkDCJc4){margin-right:var(--bui-space-3)}.ndXnur8atSwrX9tW{padding:var(--bui-space-4);border-radius:var(--popover-border-radius);flex:auto;min-height:0;overflow-x:hidden;overflow-y:auto}.nWNOVN9SSAkDCJc4 svg{display:block}.nWNOVN9SSAkDCJc4 svg use:first-of-type{fill:var(--bui-bg-app)}.nWNOVN9SSAkDCJc4 svg use:nth-of-type(2){fill:var(--bui-bg-neutral-1)}.nWNOVN9SSAkDCJc4 svg path{fill:var(--bui-border-1)}.nWNOVN9SSAkDCJc4 svg{--popover-arrow-overlap:-2px}.nWNOVN9SSAkDCJc4[data-placement=top] svg{margin-top:var(--popover-arrow-overlap)}.nWNOVN9SSAkDCJc4[data-placement=bottom] svg{margin-bottom:var(--popover-arrow-overlap);transform:rotate(180deg)}.nWNOVN9SSAkDCJc4[data-placement=right] svg{margin-right:var(--popover-arrow-overlap);transform:rotate(90deg)}.nWNOVN9SSAkDCJc4[data-placement=left] svg{margin-left:var(--popover-arrow-overlap);transform:rotate(-90deg)}.QCxpyIls6to9Bn5w{margin-bottom:var(--bui-space-3);gap:var(--bui-space-1);flex-direction:column;display:flex}.qjnrgCeKosN0HGNG{color:var(--bui-fg-primary);cursor:pointer;font-weight:var(--bui-font-weight-regular);font-size:var(--bui-font-size-2);margin-right:auto}.VAD8KU3Enrs4kH_k{color:var(--bui-fg-secondary);font-weight:var(--bui-font-weight-regular);margin-left:var(--bui-space-1)}.KsFBKeDCTE86ZANx{font-weight:var(--bui-font-weight-regular);font-size:var(--bui-font-size-2);color:var(--bui-fg-secondary);margin:0}.Ai9iNkHuNwQ8kqsz{color:var(--bui-fg-danger);font-size:var(--bui-font-size-2);font-weight:var(--bui-font-weight-regular);margin-top:var(--bui-space-2);display:inline-block}.Z_Iagacz0F1YYG04{padding-top:var(--bui-space-5);justify-content:space-between;align-items:center;display:flex}.N_pRbW6lVsY4Hdgf{justify-content:space-between;align-items:center;display:flex}.qXYnm03BkEcKl1FA{justify-content:space-between;align-items:center;gap:var(--bui-space-2);display:flex}.plzZlLJyZhc3wn3s{min-width:10.5rem}.dQdXlDCvsLk1w8Z3{animation:var(--bui-animate-pulse);background-color:var(--bui-bg-neutral-2);border-radius:var(--bui-radius-2)}.dQdXlDCvsLk1w8Z3[data-rounded=true]{border-radius:var(--bui-radius-full)}}@layer utilities;
2
+ /*# sourceMappingURL=1749.1749.9bd71ea7.css.map*/
@@ -0,0 +1 @@
1
+ {"version":3,"file":"static/1749.1749.9bd71ea7.css","sources":["webpack://techdocs-cli-embedded-app/../ui/src/components/Table/Table.module.css","webpack://techdocs-cli-embedded-app/../ui/src/components/Checkbox/Checkbox.module.css","webpack://techdocs-cli-embedded-app/../ui/src/components/ButtonIcon/ButtonIcon.module.css","webpack://techdocs-cli-embedded-app/../ui/src/components/Select/Select.module.css","webpack://techdocs-cli-embedded-app/../ui/src/components/Popover/Popover.module.css","webpack://techdocs-cli-embedded-app/../ui/src/components/FieldLabel/FieldLabel.module.css","webpack://techdocs-cli-embedded-app/../ui/src/components/FieldError/FieldError.module.css","webpack://techdocs-cli-embedded-app/../ui/src/components/TablePagination/TablePagination.module.css","webpack://techdocs-cli-embedded-app/../ui/src/components/Skeleton/Skeleton.module.css"],"sourcesContent":["/*\n * Copyright 2025 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\n@layer tokens, base, components, utilities;\n\n@layer components {\n .bui-TableWrapper {\n display: flex;\n flex-direction: column;\n }\n\n .bui-TableResizableContainer {\n display: flex;\n flex-direction: column;\n flex: 1;\n min-height: 0;\n overflow: hidden;\n }\n\n .bui-Table {\n width: 100%;\n caption-side: bottom;\n border-collapse: collapse;\n table-layout: fixed;\n transition: opacity 0.2s ease-in-out;\n overflow: auto;\n flex: 1;\n min-height: 0;\n\n &[data-stale='true'],\n &[data-ispending='true'] {\n opacity: 0.6;\n }\n }\n\n .bui-TableHeader {\n border-bottom: 1px solid var(--bui-border-2);\n transition: color 0.2s ease-in-out;\n }\n\n .bui-TableHead {\n text-align: left;\n padding: var(--bui-space-3);\n font-size: var(--bui-font-size-3);\n color: var(--bui-fg-primary);\n }\n\n .bui-TableHeadSelection {\n width: 40px;\n }\n\n .bui-TableHeadContent {\n display: flex;\n flex-direction: row;\n align-items: center;\n gap: var(--bui-space-1);\n }\n\n .bui-TableHeadLabel {\n overflow: hidden;\n text-overflow: ellipsis;\n white-space: nowrap;\n min-width: 0;\n }\n\n .bui-TableHeadSortButton {\n cursor: pointer;\n user-select: none;\n display: inline-flex;\n align-items: center;\n gap: var(--bui-space-1);\n opacity: 0;\n transition: opacity 0.1s ease-in-out;\n color: var(--bui-fg-secondary);\n\n .bui-TableHead:hover &,\n [data-sort-direction='ascending'] &,\n [data-sort-direction='descending'] & {\n opacity: 1;\n }\n\n & svg {\n transition: transform 0.1s ease-in-out;\n }\n [data-sort-direction='descending'] & svg {\n transform: rotate(180deg);\n }\n }\n\n .bui-TableBody {\n color: var(--bui-fg-primary);\n }\n\n .bui-TableRow {\n border-bottom: 1px solid var(--bui-border-2);\n transition: color 0.2s ease-in-out;\n cursor: default;\n\n &:hover {\n background-color: var(--bui-bg-neutral-1-hover);\n }\n\n &[data-selected] {\n background-color: var(--bui-bg-neutral-1-pressed);\n }\n\n &[data-pressed] {\n background-color: var(--bui-bg-neutral-1-pressed);\n }\n\n &[data-on-bg='neutral-1'] {\n &:hover {\n background-color: var(--bui-bg-neutral-2-hover);\n }\n\n &[data-selected] {\n background-color: var(--bui-bg-neutral-2-pressed);\n }\n\n &[data-pressed] {\n background-color: var(--bui-bg-neutral-2-pressed);\n }\n\n &[data-disabled] {\n background-color: var(--bui-bg-neutral-2-disabled);\n }\n }\n\n &[data-on-bg='neutral-2'] {\n &:hover {\n background-color: var(--bui-bg-neutral-3-hover);\n }\n\n &[data-selected] {\n background-color: var(--bui-bg-neutral-3-pressed);\n }\n\n &[data-pressed] {\n background-color: var(--bui-bg-neutral-3-pressed);\n }\n\n &[data-disabled] {\n background-color: var(--bui-bg-neutral-3-disabled);\n }\n }\n\n &[data-on-bg='neutral-3'] {\n &:hover {\n background-color: var(--bui-bg-neutral-4-hover);\n }\n\n &[data-selected] {\n background-color: var(--bui-bg-neutral-4-pressed);\n }\n\n &[data-pressed] {\n background-color: var(--bui-bg-neutral-4-pressed);\n }\n\n &[data-disabled] {\n background-color: var(--bui-bg-neutral-4-disabled);\n }\n }\n\n &[data-href],\n &[data-selection-mode],\n &[data-react-aria-pressable='true'] {\n cursor: pointer;\n }\n\n &[data-disabled] {\n background-color: var(--bui-bg-neutral-1-disabled);\n cursor: not-allowed;\n }\n }\n\n .bui-TableCell {\n padding: var(--bui-space-3);\n font-size: var(--bui-font-size-3);\n font-family: var(--bui-font-regular);\n font-weight: var(--bui-font-weight-regular);\n min-width: 0;\n overflow: hidden;\n }\n\n .bui-TableCellSelection {\n width: 40px;\n }\n\n .bui-TableCellContentWrapper {\n display: flex;\n flex-direction: row;\n align-items: center;\n gap: var(--bui-space-2);\n min-width: 0;\n width: 100%;\n max-width: 100%;\n }\n\n .bui-TableCellIcon,\n .bui-TableCellIcon svg {\n display: inline-flex;\n align-items: center;\n color: var(--bui-fg-primary);\n }\n\n .bui-TableCellContent {\n display: flex;\n flex-direction: column;\n gap: var(--bui-space-0_5);\n min-width: 0;\n flex: 1;\n overflow: hidden;\n max-width: 100%;\n }\n\n .bui-TableCellContent > * {\n min-width: 0;\n max-width: 100%;\n }\n\n .bui-TableCellProfile {\n display: flex;\n flex-direction: row;\n gap: var(--bui-space-2);\n align-items: center;\n }\n}\n","/*\n * Copyright 2025 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\n@layer tokens, base, components, utilities;\n\n@layer components {\n .bui-Checkbox {\n display: flex;\n flex-direction: row;\n align-items: flex-start;\n gap: var(--bui-space-2);\n font-size: var(--bui-font-size-3);\n font-family: var(--bui-font-regular);\n font-weight: var(--bui-font-weight-regular);\n color: var(--bui-fg-primary);\n user-select: none;\n cursor: pointer;\n }\n\n .bui-Checkbox[data-disabled] {\n cursor: not-allowed;\n opacity: 0.5;\n }\n\n .bui-CheckboxIndicator {\n border: none;\n display: flex;\n align-items: center;\n justify-content: center;\n width: 1rem;\n height: 1rem;\n box-shadow: inset 0 0 0 1px var(--bui-border-2);\n border-radius: 2px;\n transition: background-color 0.2s ease-in-out;\n background-color: var(--bui-bg-neutral-1);\n padding: 0;\n flex-shrink: 0;\n color: transparent;\n\n .bui-Checkbox[data-focus-visible] & {\n transition: none;\n outline: 2px solid var(--bui-ring);\n outline-offset: 2px;\n }\n\n .bui-Checkbox[data-selected] & {\n background-color: var(--bui-bg-solid);\n box-shadow: none;\n color: var(--bui-fg-solid);\n }\n\n .bui-Checkbox[data-indeterminate] & {\n background-color: var(--bui-bg-neutral-1);\n box-shadow: inset 0 0 0 1px var(--bui-border-2);\n color: var(--bui-fg-primary);\n }\n\n .bui-Checkbox[data-invalid] & {\n box-shadow: inset 0 0 0 1px var(--bui-border-danger);\n }\n\n .bui-Checkbox[data-invalid][data-selected] & {\n background-color: var(--bui-border-danger);\n box-shadow: none;\n }\n\n .bui-Checkbox[data-invalid][data-indeterminate] & {\n box-shadow: inset 0 0 0 1px var(--bui-border-danger);\n }\n\n @media (prefers-reduced-motion: reduce) {\n & {\n transition: none;\n }\n }\n }\n}\n","/*\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\n@layer tokens, base, components, utilities;\n\n@layer components {\n .bui-ButtonIcon {\n --loading-duration: 200ms;\n --bg: transparent;\n --bg-hover: transparent;\n --bg-active: transparent;\n --fg: inherit;\n\n position: relative;\n display: inline-flex;\n align-items: center;\n justify-content: center;\n border: none;\n user-select: none;\n padding: 0;\n cursor: pointer;\n border-radius: var(--bui-radius-2);\n flex-shrink: 0;\n transition: background-color var(--loading-duration) ease-out,\n box-shadow var(--loading-duration) ease-out;\n\n /* Apply variables */\n color: var(--fg);\n background-color: var(--bg);\n\n &:hover {\n background-color: var(--bg-hover);\n transition: background-color 150ms ease;\n }\n\n &:active {\n background-color: var(--bg-active);\n }\n\n &[data-disabled='true'] {\n cursor: not-allowed;\n }\n\n &[data-ispending='true'] {\n cursor: wait;\n }\n }\n\n .bui-ButtonIcon[data-variant='primary'] {\n --bg: var(--bui-bg-solid);\n --bg-hover: var(--bui-bg-solid-hover);\n --bg-active: var(--bui-bg-solid-pressed);\n --fg: var(--bui-fg-solid);\n\n &[data-disabled='true'],\n &[data-ispending='true'] {\n --bg: var(--bui-bg-solid-disabled);\n --bg-hover: var(--bui-bg-solid-disabled);\n --bg-active: var(--bui-bg-solid-disabled);\n --fg: var(--bui-fg-solid-disabled);\n }\n\n &[data-focus-visible] {\n outline: 2px solid var(--bui-ring);\n outline-offset: 2px;\n }\n }\n\n .bui-ButtonIcon[data-variant='secondary'] {\n --bg: var(--bui-bg-neutral-1);\n --bg-hover: var(--bui-bg-neutral-1-hover);\n --bg-active: var(--bui-bg-neutral-1-pressed);\n --fg: var(--bui-fg-primary);\n\n &[data-on-bg='neutral-1'] {\n --bg: var(--bui-bg-neutral-2);\n --bg-hover: var(--bui-bg-neutral-2-hover);\n --bg-active: var(--bui-bg-neutral-2-pressed);\n }\n\n &[data-on-bg='neutral-2'] {\n --bg: var(--bui-bg-neutral-3);\n --bg-hover: var(--bui-bg-neutral-3-hover);\n --bg-active: var(--bui-bg-neutral-3-pressed);\n }\n\n &[data-on-bg='neutral-3'] {\n --bg: var(--bui-bg-neutral-4);\n --bg-hover: var(--bui-bg-neutral-4-hover);\n --bg-active: var(--bui-bg-neutral-4-pressed);\n }\n\n &[data-disabled='true'],\n &[data-ispending='true'] {\n --bg-hover: var(--bg);\n --bg-active: var(--bg);\n --fg: var(--bui-fg-disabled);\n }\n\n &[data-focus-visible] {\n outline: none;\n transition: none;\n box-shadow: inset 0 0 0 2px var(--bui-ring);\n }\n }\n\n .bui-ButtonIcon[data-variant='tertiary'] {\n --bg-hover: var(--bui-bg-neutral-1-hover);\n --bg-active: var(--bui-bg-neutral-1-pressed);\n --fg: var(--bui-fg-primary);\n\n &[data-on-bg='neutral-1'] {\n --bg-hover: var(--bui-bg-neutral-2-hover);\n --bg-active: var(--bui-bg-neutral-2-pressed);\n }\n\n &[data-on-bg='neutral-2'] {\n --bg-hover: var(--bui-bg-neutral-3-hover);\n --bg-active: var(--bui-bg-neutral-3-pressed);\n }\n\n &[data-on-bg='neutral-3'] {\n --bg-hover: var(--bui-bg-neutral-4-hover);\n --bg-active: var(--bui-bg-neutral-4-pressed);\n }\n\n &[data-disabled='true'],\n &[data-ispending='true'] {\n --bg-hover: var(--bg);\n --bg-active: var(--bg);\n --fg: var(--bui-fg-disabled);\n }\n\n &[data-focus-visible] {\n outline: none;\n transition: none;\n box-shadow: inset 0 0 0 2px var(--bui-ring);\n }\n }\n\n .bui-ButtonIcon[data-size='small'] {\n width: 2rem;\n height: 2rem;\n\n svg {\n width: 1rem;\n height: 1rem;\n }\n }\n\n .bui-ButtonIcon[data-size='medium'] {\n width: 2.5rem;\n height: 2.5rem;\n\n svg {\n width: 1.25rem;\n height: 1.25rem;\n }\n }\n\n .bui-ButtonIconContent {\n display: inline-flex;\n align-items: center;\n justify-content: center;\n height: 100%;\n width: 100%;\n transition: opacity var(--loading-duration) ease-out;\n\n .bui-ButtonIcon[data-ispending='true'] & {\n opacity: 0;\n }\n }\n\n .bui-ButtonIconSpinner {\n position: absolute;\n top: 50%;\n left: 50%;\n transform: translate(-50%, -50%);\n display: flex;\n opacity: 0;\n transition: opacity var(--loading-duration) ease-in;\n\n .bui-ButtonIcon[data-ispending='true'] & {\n opacity: 1;\n }\n\n & svg {\n animation: bui-spin 1s linear infinite;\n }\n }\n\n @media (prefers-reduced-motion: reduce) {\n .bui-ButtonIcon {\n transition-duration: 50ms;\n }\n\n .bui-ButtonIconContent {\n transition-duration: 50ms;\n }\n\n .bui-ButtonIconSpinner {\n transition-duration: 50ms;\n }\n\n .bui-ButtonIconSpinner svg {\n animation: none;\n }\n }\n\n @keyframes bui-spin {\n from {\n transform: rotate(0deg);\n }\n\n to {\n transform: rotate(360deg);\n }\n }\n}\n","/*\n * Copyright 2025 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\n@layer tokens, base, components, utilities;\n\n@layer components {\n .bui-Select,\n .bui-SelectPopover {\n &[data-size='small'] {\n --select-item-height: 2rem;\n }\n\n &[data-size='medium'] {\n --select-item-height: 2.5rem;\n }\n }\n\n .bui-SelectPopover {\n min-width: var(--trigger-width);\n }\n\n .bui-SelectTrigger {\n box-sizing: border-box;\n border-radius: var(--bui-radius-3);\n border: none;\n outline: none;\n background-color: var(--bui-bg-neutral-1);\n transition: box-shadow 0.2s ease-in-out;\n\n &[data-on-bg='neutral-1'] {\n background-color: var(--bui-bg-neutral-2);\n }\n\n &[data-on-bg='neutral-2'] {\n background-color: var(--bui-bg-neutral-3);\n }\n\n &[data-on-bg='neutral-3'] {\n background-color: var(--bui-bg-neutral-4);\n }\n\n .bui-Select[data-focused] & {\n box-shadow: inset 0 0 0 1px var(--bui-ring);\n }\n display: flex;\n justify-content: space-between;\n align-items: center;\n cursor: pointer;\n gap: var(--bui-space-2);\n width: 100%;\n height: var(--select-item-height);\n\n .bui-Select[data-size='small'] & {\n padding-inline: var(--bui-space-3) 0;\n }\n\n .bui-Select[data-size='medium'] & {\n padding-inline: var(--bui-space-4) 0;\n }\n\n & svg {\n flex-shrink: 0;\n color: var(--bui-fg-secondary);\n\n .bui-Select[data-size='small'] & {\n width: 1rem;\n height: 1rem;\n }\n\n .bui-Select[data-size='medium'] & {\n width: 1.25rem;\n height: 1.25rem;\n }\n }\n\n &::placeholder {\n color: var(--bui-fg-secondary);\n }\n\n .bui-Select[data-invalid] & {\n box-shadow: inset 0 0 0 1px var(--bui-border-danger);\n }\n\n &[disabled] {\n cursor: not-allowed;\n color: var(--bui-fg-disabled);\n }\n }\n\n .bui-SelectTriggerChevron {\n display: grid;\n place-content: center;\n width: var(--select-item-height);\n height: var(--select-item-height);\n flex-shrink: 0;\n flex-grow: 0;\n }\n\n .bui-SelectValue {\n text-overflow: ellipsis;\n overflow: hidden;\n white-space: nowrap;\n width: 100%;\n font-size: var(--bui-font-size-3);\n font-family: var(--bui-font-regular);\n font-weight: var(--bui-font-weight-regular);\n color: var(--bui-fg-primary);\n text-align: left;\n\n & .bui-SelectItemIndicator {\n display: none;\n }\n\n &[disabled] {\n color: var(--bui-fg-disabled);\n }\n }\n\n .bui-SelectList {\n overflow: auto;\n min-height: 0;\n padding-block: var(--bui-space-1);\n padding-inline: var(--bui-space-1);\n\n &[data-focus-visible] {\n /* Remove default focus-visible outline because React Aria\n * triggers it on mouse click open of the list for some reason.\n * On keyboard use, the top item receives the focus style,\n * so it's not needed anyway. */\n outline: none;\n }\n }\n\n .bui-SelectItem {\n box-sizing: border-box;\n position: relative;\n display: grid;\n grid-template-areas: 'icon text';\n grid-template-columns: 1rem 1fr;\n align-items: center;\n min-height: var(--select-item-height);\n padding-block: var(--bui-space-1);\n padding-left: var(--bui-space-3);\n padding-right: var(--bui-space-4);\n color: var(--bui-fg-primary);\n cursor: pointer;\n user-select: none;\n font-size: var(--bui-font-size-3);\n gap: var(--bui-space-2);\n outline: none;\n border-radius: var(--bui-radius-2);\n\n &[data-focused] {\n background-color: var(--bui-bg-neutral-2);\n }\n\n &[data-disabled] {\n cursor: not-allowed;\n color: var(--bui-fg-disabled);\n }\n\n &[data-selected] .bui-SelectItemIndicator {\n opacity: 1;\n }\n }\n\n .bui-SelectItemIndicator {\n grid-area: icon;\n display: flex;\n align-items: center;\n justify-content: center;\n opacity: 0;\n transition: opacity 0.2s ease-in-out;\n }\n\n .bui-SelectItemLabel {\n flex: 1;\n grid-area: text;\n }\n\n .bui-SelectSearchWrapper {\n flex-shrink: 0;\n margin-bottom: var(--bui-space-1);\n display: flex;\n align-items: center;\n padding-inline: var(--bui-space-3) 0;\n border-bottom: 1px solid var(--bui-border-2);\n }\n\n .bui-SelectSearch {\n border: none;\n background-color: transparent;\n padding: 0;\n color: var(--bui-fg-primary);\n flex: 1;\n outline: none;\n font-size: var(--bui-font-size-3);\n font-family: var(--bui-font-regular);\n height: var(--select-item-height);\n line-height: var(--select-item-height);\n\n &::placeholder {\n color: var(--bui-fg-secondary);\n }\n\n /* Hide native browser clear button */\n &::-webkit-search-cancel-button,\n &::-webkit-search-decoration {\n -webkit-appearance: none;\n }\n }\n\n .bui-SelectSearchClear {\n flex: 0 0 auto;\n display: grid;\n place-content: center;\n background-color: transparent;\n border: none;\n padding: 0;\n margin: 0;\n cursor: pointer;\n color: var(--bui-fg-secondary);\n transition: color 0.2s ease-in-out;\n width: var(--select-item-height);\n height: var(--select-item-height);\n\n input:placeholder-shown + & {\n display: none;\n }\n\n &:hover {\n color: var(--bui-fg-primary);\n }\n\n & svg {\n width: 1rem;\n height: 1rem;\n }\n }\n\n .bui-SelectSection {\n &:first-child .bui-SelectSectionHeader {\n padding-top: 0;\n }\n }\n\n .bui-SelectSectionHeader {\n height: 2rem;\n display: flex;\n align-items: center;\n padding-top: var(--bui-space-3);\n padding-left: var(--bui-space-3);\n color: var(--bui-fg-primary);\n font-size: var(--bui-font-size-1);\n font-weight: bold;\n letter-spacing: 0.05rem;\n text-transform: uppercase;\n }\n\n .bui-SelectNoResults {\n padding-inline: var(--bui-space-3);\n padding-block: var(--bui-space-2);\n color: var(--bui-fg-secondary);\n font-size: var(--bui-font-size-3);\n font-family: var(--bui-font-regular);\n font-weight: var(--bui-font-weight-regular);\n }\n}\n","/*\n * Copyright 2025 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\n@layer tokens, base, components, utilities;\n\n@layer components {\n .bui-Popover {\n --popover-border-radius: var(--bui-radius-3);\n box-shadow: var(--bui-shadow);\n border-radius: var(--popover-border-radius);\n background: var(--bui-bg-app);\n border: 1px solid var(--bui-border-1);\n forced-color-adjust: none;\n outline: none;\n max-height: inherit;\n display: flex;\n flex-direction: column;\n /* fixes FF gap */\n transform: translate3d(0, 0, 0);\n transition: transform 200ms, opacity 200ms;\n\n &[data-entering],\n &[data-exiting] {\n transform: var(--origin);\n opacity: 0;\n }\n\n &[data-placement='top'] {\n --origin: translateY(4px);\n\n &:has(.bui-PopoverArrow) {\n margin-bottom: var(--bui-space-3);\n }\n }\n\n &[data-placement='right'] {\n --origin: translateX(-4px);\n\n &:has(.bui-PopoverArrow) {\n margin-left: var(--bui-space-3);\n }\n }\n\n &[data-placement='bottom'] {\n --origin: translateY(-4px);\n\n &:has(.bui-PopoverArrow) {\n margin-top: var(--bui-space-3);\n }\n }\n\n &[data-placement='left'] {\n --origin: translateX(4px);\n\n &:has(.bui-PopoverArrow) {\n margin-right: var(--bui-space-3);\n }\n }\n }\n\n .bui-PopoverContent {\n overflow-x: hidden;\n overflow-y: auto;\n padding: var(--bui-space-4);\n flex: 1 1 auto;\n min-height: 0;\n border-radius: var(--popover-border-radius);\n }\n\n .bui-PopoverArrow {\n & svg {\n display: block;\n\n /* The popover is rendered overlaying the main\n popover element by 1px. This causes the borders\n to overlap, which causes minor visual artifacts\n with transparent border colors. To mitigate this,\n we split the stroke and fill across separate\n elements in order to guarantee that the stroke is\n always overlaying a consistent color. */\n use:nth-of-type(1) {\n fill: var(--bui-bg-app);\n }\n use:nth-of-type(2) {\n fill: var(--bui-bg-neutral-1);\n }\n\n path {\n fill: var(--bui-border-1);\n }\n\n /* The arrow svg overlaps the popover by 2px, so we\n need to adjust the margins accordingly. */\n --popover-arrow-overlap: -2px;\n }\n\n &[data-placement='top'] svg {\n margin-top: var(--popover-arrow-overlap);\n }\n\n &[data-placement='bottom'] svg {\n margin-bottom: var(--popover-arrow-overlap);\n transform: rotate(180deg);\n }\n\n &[data-placement='right'] svg {\n margin-right: var(--popover-arrow-overlap);\n transform: rotate(90deg);\n }\n\n &[data-placement='left'] svg {\n margin-left: var(--popover-arrow-overlap);\n transform: rotate(-90deg);\n }\n }\n}\n","/*\n * Copyright 2025 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\n@layer tokens, base, components, utilities;\n\n@layer components {\n .bui-FieldLabelWrapper {\n display: flex;\n flex-direction: column;\n margin-bottom: var(--bui-space-3);\n gap: var(--bui-space-1);\n }\n\n .bui-FieldLabel {\n color: var(--bui-fg-primary);\n margin-right: auto;\n cursor: pointer;\n font-weight: var(--bui-font-weight-regular);\n font-size: var(--bui-font-size-2);\n }\n\n .bui-FieldSecondaryLabel {\n color: var(--bui-fg-secondary);\n font-weight: var(--bui-font-weight-regular);\n margin-left: var(--bui-space-1);\n }\n\n .bui-FieldDescription {\n font-weight: var(--bui-font-weight-regular);\n font-size: var(--bui-font-size-2);\n color: var(--bui-fg-secondary);\n margin: 0;\n }\n}\n","/*\n * Copyright 2025 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\n@layer tokens, base, components, utilities;\n\n@layer components {\n .bui-FieldError {\n display: inline-block;\n color: var(--bui-fg-danger);\n font-size: var(--bui-font-size-2);\n font-weight: var(--bui-font-weight-regular);\n margin-top: var(--bui-space-2);\n }\n}\n","/*\n * Copyright 2025 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\n@layer tokens, base, components, utilities;\n\n@layer components {\n .bui-TablePagination {\n display: flex;\n align-items: center;\n justify-content: space-between;\n padding-top: var(--bui-space-5);\n }\n\n .bui-TablePaginationLeft {\n display: flex;\n align-items: center;\n justify-content: space-between;\n }\n\n .bui-TablePaginationRight {\n display: flex;\n align-items: center;\n justify-content: space-between;\n gap: var(--bui-space-2);\n }\n\n .bui-TablePaginationSelect {\n min-width: 10.5rem;\n }\n}\n","/*\n * Copyright 2025 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\n@layer tokens, base, components, utilities;\n\n@layer components {\n .bui-Skeleton {\n animation: var(--bui-animate-pulse);\n background-color: var(--bui-bg-neutral-2);\n border-radius: var(--bui-radius-2);\n }\n\n .bui-Skeleton[data-rounded='true'] {\n border-radius: var(--bui-radius-full);\n }\n}\n"],"names":[],"mappings":"AAgBA,qCAGE,qDAKA,yFAQA,kKAUE,gGAMF,+FAKA,0HAOA,6BAIA,4FAOA,wFAOA,+PAUE,6KAMA,2DAGA,gFAKF,8CAIA,8GAKE,uEAIA,kFAIA,iFAKE,6FAIA,wGAIA,uGAIA,yGAMA,6FAIA,wGAIA,uGAIA,yGAMA,6FAIA,wGAIA,uGAIA,yGAKF,mKAMA,sGAMF,yLASA,6BAIA,kIAUA,2GAOA,gIAUA,+CAKA,4FCvNA,gVAaA,+DAKA,4SAeE,6HAMA,kIAMA,4KAMA,sGAIA,2HAKA,0HAIA,uCACE,mCCjEJ,kgBAwBE,0FAKA,2DAIA,yDAIA,mDAKF,uKAME,maAQA,iHAMF,uLAME,kLAMA,kLAMA,kLAMA,2QAOA,sIAOF,yJAKE,oJAKA,oJAKA,oJAKA,yQAOA,qIAOF,0DAIE,8DAMF,+DAIE,qEAMF,0JAQE,mEAKF,6JASE,mEAIA,oEAKF,uCACE,+EAYA,sCAKF,gFCzME,oFAIA,uFAKF,iDAIA,kLAQE,iFAIA,iFAIA,iFAIA,6FAGQ,kKAQR,wFAIA,yFAIA,kEAIE,qFAKA,4FAMF,+MAIA,sGAIA,4EAMF,sKASA,mPAWE,iDAIA,yDAKF,gHAME,mDASF,ugBAmBE,yEAIA,iFAKA,6DAKF,qIASA,wCAKA,gLASA,iQAYE,+MAKA,6IAMF,gSAcE,uDAIA,oDAIA,6CAOA,8DAKF,yPAaA,mOC7PA,kWAeE,qIAMA,+DAGE,8FAKF,kEAGE,8FAKF,mEAGE,8FAKF,gEAGE,8FAMJ,iJAUE,oCAUE,+DAGA,sEAIA,oDAMwB,mDAG1B,kFAIA,iHAKA,8GAKA,6GCxGF,6GAOA,2JAQA,0HAMA,qICrBA,4KCAA,+GAOA,gFAMA,uGAOA,oCCpBA,gIAMA,2ERTF"}