@kuadrant/kuadrant-backstage-plugin-frontend 0.0.1-test.1-d62c1cdb → 0.0.1-test.1-464d7760

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 (484) hide show
  1. package/dist/components/ApiAccessCard/ApiAccessCard.esm.js +15 -10
  2. package/dist/components/ApiAccessCard/ApiAccessCard.esm.js.map +1 -1
  3. package/dist/components/ApiKeyManagementTab/ApiKeyManagementTab.esm.js +74 -29
  4. package/dist/components/ApiKeyManagementTab/ApiKeyManagementTab.esm.js.map +1 -1
  5. package/dist/components/ApprovalQueueCard/ApprovalQueueCard.esm.js +116 -74
  6. package/dist/components/ApprovalQueueCard/ApprovalQueueCard.esm.js.map +1 -1
  7. package/dist/components/CreateAPIProductDialog/CreateAPIProductDialog.esm.js +74 -47
  8. package/dist/components/CreateAPIProductDialog/CreateAPIProductDialog.esm.js.map +1 -1
  9. package/dist/components/EditAPIProductDialog/EditAPIProductDialog.esm.js +274 -0
  10. package/dist/components/EditAPIProductDialog/EditAPIProductDialog.esm.js.map +1 -0
  11. package/dist/components/KuadrantPage/KuadrantPage.esm.js +101 -41
  12. package/dist/components/KuadrantPage/KuadrantPage.esm.js.map +1 -1
  13. package/dist/components/MyApiKeysCard/MyApiKeysCard.esm.js +175 -0
  14. package/dist/components/MyApiKeysCard/MyApiKeysCard.esm.js.map +1 -0
  15. package/dist/components/PermissionGate/PermissionGate.esm.js +7 -16
  16. package/dist/components/PermissionGate/PermissionGate.esm.js.map +1 -1
  17. package/dist/index.d.ts +81 -1
  18. package/dist/index.esm.js +1 -0
  19. package/dist/index.esm.js.map +1 -1
  20. package/dist/permissions.esm.js +103 -0
  21. package/dist/permissions.esm.js.map +1 -0
  22. package/dist/utils/permissions.esm.js +19 -0
  23. package/dist/utils/permissions.esm.js.map +1 -0
  24. package/dist-scalprum/configSchema.json +1 -0
  25. package/dist-scalprum/internal.plugin-kuadrant.9baeefa3b735dde128c6.js +2 -0
  26. package/dist-scalprum/internal.plugin-kuadrant.9baeefa3b735dde128c6.js.map +1 -0
  27. package/dist-scalprum/plugin-manifest.json +11 -0
  28. package/dist-scalprum/static/1613.71f0fccd.chunk.js +3 -0
  29. package/dist-scalprum/static/1613.71f0fccd.chunk.js.LICENSE.txt +10 -0
  30. package/dist-scalprum/static/1613.71f0fccd.chunk.js.map +1 -0
  31. package/dist-scalprum/static/1836.b74b4c40.chunk.js +3 -0
  32. package/dist-scalprum/static/1836.b74b4c40.chunk.js.LICENSE.txt +10 -0
  33. package/dist-scalprum/static/1836.b74b4c40.chunk.js.map +1 -0
  34. package/dist-scalprum/static/2198.5905970e.chunk.js +2 -0
  35. package/dist-scalprum/static/2198.5905970e.chunk.js.map +1 -0
  36. package/dist-scalprum/static/3007.bffc9924.chunk.js +2 -0
  37. package/dist-scalprum/static/3007.bffc9924.chunk.js.map +1 -0
  38. package/dist-scalprum/static/3144.6f99ccee.chunk.js +3 -0
  39. package/dist-scalprum/static/3144.6f99ccee.chunk.js.LICENSE.txt +19 -0
  40. package/dist-scalprum/static/3144.6f99ccee.chunk.js.map +1 -0
  41. package/dist-scalprum/static/3483.2f14a8ca.chunk.js +3 -0
  42. package/dist-scalprum/static/3483.2f14a8ca.chunk.js.LICENSE.txt +5 -0
  43. package/dist-scalprum/static/3483.2f14a8ca.chunk.js.map +1 -0
  44. package/dist-scalprum/static/3647.b96f9b3e.chunk.js +2 -0
  45. package/dist-scalprum/static/3647.b96f9b3e.chunk.js.map +1 -0
  46. package/dist-scalprum/static/3657.59d45756.chunk.js +3 -0
  47. package/dist-scalprum/static/3657.59d45756.chunk.js.LICENSE.txt +10 -0
  48. package/dist-scalprum/static/3657.59d45756.chunk.js.map +1 -0
  49. package/dist-scalprum/static/4041.29923ad9.chunk.js +3 -0
  50. package/dist-scalprum/static/4041.29923ad9.chunk.js.LICENSE.txt +9 -0
  51. package/dist-scalprum/static/4041.29923ad9.chunk.js.map +1 -0
  52. package/dist-scalprum/static/4161.aa5fd28d.chunk.js +3 -0
  53. package/dist-scalprum/static/4161.aa5fd28d.chunk.js.LICENSE.txt +27 -0
  54. package/dist-scalprum/static/4161.aa5fd28d.chunk.js.map +1 -0
  55. package/dist-scalprum/static/428.0a290bc6.chunk.js +2 -0
  56. package/dist-scalprum/static/428.0a290bc6.chunk.js.map +1 -0
  57. package/dist-scalprum/static/4306.133aa342.chunk.js +2 -0
  58. package/dist-scalprum/static/4306.133aa342.chunk.js.map +1 -0
  59. package/dist-scalprum/static/441.8bd811bc.chunk.js +2 -0
  60. package/dist-scalprum/static/441.8bd811bc.chunk.js.map +1 -0
  61. package/dist-scalprum/static/4491.a2e0258f.chunk.js +2 -0
  62. package/dist-scalprum/static/4491.a2e0258f.chunk.js.map +1 -0
  63. package/dist-scalprum/static/4570.8b9f98d7.chunk.js +3 -0
  64. package/dist-scalprum/static/4570.8b9f98d7.chunk.js.LICENSE.txt +16 -0
  65. package/dist-scalprum/static/4570.8b9f98d7.chunk.js.map +1 -0
  66. package/dist-scalprum/static/5222.796292ca.chunk.js +2 -0
  67. package/dist-scalprum/static/5222.796292ca.chunk.js.map +1 -0
  68. package/dist-scalprum/static/5453.d8d305e9.chunk.js +2 -0
  69. package/dist-scalprum/static/5453.d8d305e9.chunk.js.map +1 -0
  70. package/dist-scalprum/static/5568.5dbce633.chunk.js +3 -0
  71. package/dist-scalprum/static/5568.5dbce633.chunk.js.LICENSE.txt +18 -0
  72. package/dist-scalprum/static/5568.5dbce633.chunk.js.map +1 -0
  73. package/dist-scalprum/static/5603.05d9ca7f.chunk.js +2 -0
  74. package/dist-scalprum/static/5603.05d9ca7f.chunk.js.map +1 -0
  75. package/dist-scalprum/static/5811.5c192eeb.chunk.js +2 -0
  76. package/dist-scalprum/static/5811.5c192eeb.chunk.js.map +1 -0
  77. package/dist-scalprum/static/6272.e49551fa.chunk.js +2 -0
  78. package/dist-scalprum/static/6272.e49551fa.chunk.js.map +1 -0
  79. package/dist-scalprum/static/6281.29f4549b.chunk.js +2 -0
  80. package/dist-scalprum/static/6281.29f4549b.chunk.js.map +1 -0
  81. package/dist-scalprum/static/6352.d48bba8c.chunk.js +2 -0
  82. package/dist-scalprum/static/6352.d48bba8c.chunk.js.map +1 -0
  83. package/dist-scalprum/static/6872.feed76d2.chunk.js +2 -0
  84. package/dist-scalprum/static/6872.feed76d2.chunk.js.map +1 -0
  85. package/dist-scalprum/static/7601.08d8ff3f.chunk.js +2 -0
  86. package/dist-scalprum/static/7601.08d8ff3f.chunk.js.map +1 -0
  87. package/dist-scalprum/static/7984.c8511b89.chunk.js +2 -0
  88. package/dist-scalprum/static/7984.c8511b89.chunk.js.map +1 -0
  89. package/dist-scalprum/static/8365.75ea3581.chunk.js +2 -0
  90. package/dist-scalprum/static/8365.75ea3581.chunk.js.map +1 -0
  91. package/dist-scalprum/static/8617.d1dc70a8.chunk.js +2 -0
  92. package/dist-scalprum/static/8617.d1dc70a8.chunk.js.map +1 -0
  93. package/dist-scalprum/static/9288.61b45746.chunk.js +3 -0
  94. package/dist-scalprum/static/9288.61b45746.chunk.js.LICENSE.txt +33 -0
  95. package/dist-scalprum/static/9288.61b45746.chunk.js.map +1 -0
  96. package/dist-scalprum/static/exposed-PluginRoot.8bc4d676.chunk.js +2 -0
  97. package/dist-scalprum/static/exposed-PluginRoot.8bc4d676.chunk.js.map +1 -0
  98. package/dist-scalprum/static/react-syntax-highlighter/lowlight-import.2bd53873.chunk.js +2 -0
  99. package/dist-scalprum/static/react-syntax-highlighter/lowlight-import.2bd53873.chunk.js.map +1 -0
  100. package/dist-scalprum/static/react-syntax-highlighter_languages_highlight_abnf.bb6a8626.chunk.js +2 -0
  101. package/dist-scalprum/static/react-syntax-highlighter_languages_highlight_abnf.bb6a8626.chunk.js.map +1 -0
  102. package/dist-scalprum/static/react-syntax-highlighter_languages_highlight_accesslog.bd112f1a.chunk.js +2 -0
  103. package/dist-scalprum/static/react-syntax-highlighter_languages_highlight_accesslog.bd112f1a.chunk.js.map +1 -0
  104. package/dist-scalprum/static/react-syntax-highlighter_languages_highlight_actionscript.78db0238.chunk.js +2 -0
  105. package/dist-scalprum/static/react-syntax-highlighter_languages_highlight_actionscript.78db0238.chunk.js.map +1 -0
  106. package/dist-scalprum/static/react-syntax-highlighter_languages_highlight_ada.b0d90871.chunk.js +2 -0
  107. package/dist-scalprum/static/react-syntax-highlighter_languages_highlight_ada.b0d90871.chunk.js.map +1 -0
  108. package/dist-scalprum/static/react-syntax-highlighter_languages_highlight_angelscript.f9816c44.chunk.js +2 -0
  109. package/dist-scalprum/static/react-syntax-highlighter_languages_highlight_angelscript.f9816c44.chunk.js.map +1 -0
  110. package/dist-scalprum/static/react-syntax-highlighter_languages_highlight_apache.aa86d495.chunk.js +2 -0
  111. package/dist-scalprum/static/react-syntax-highlighter_languages_highlight_apache.aa86d495.chunk.js.map +1 -0
  112. package/dist-scalprum/static/react-syntax-highlighter_languages_highlight_applescript.ddf703d6.chunk.js +2 -0
  113. package/dist-scalprum/static/react-syntax-highlighter_languages_highlight_applescript.ddf703d6.chunk.js.map +1 -0
  114. package/dist-scalprum/static/react-syntax-highlighter_languages_highlight_arcade.70910623.chunk.js +2 -0
  115. package/dist-scalprum/static/react-syntax-highlighter_languages_highlight_arcade.70910623.chunk.js.map +1 -0
  116. package/dist-scalprum/static/react-syntax-highlighter_languages_highlight_arduino.9b9ce313.chunk.js +2 -0
  117. package/dist-scalprum/static/react-syntax-highlighter_languages_highlight_arduino.9b9ce313.chunk.js.map +1 -0
  118. package/dist-scalprum/static/react-syntax-highlighter_languages_highlight_armasm.4bfb8996.chunk.js +2 -0
  119. package/dist-scalprum/static/react-syntax-highlighter_languages_highlight_armasm.4bfb8996.chunk.js.map +1 -0
  120. package/dist-scalprum/static/react-syntax-highlighter_languages_highlight_asciidoc.4b40a3f9.chunk.js +2 -0
  121. package/dist-scalprum/static/react-syntax-highlighter_languages_highlight_asciidoc.4b40a3f9.chunk.js.map +1 -0
  122. package/dist-scalprum/static/react-syntax-highlighter_languages_highlight_aspectj.35f221e8.chunk.js +2 -0
  123. package/dist-scalprum/static/react-syntax-highlighter_languages_highlight_aspectj.35f221e8.chunk.js.map +1 -0
  124. package/dist-scalprum/static/react-syntax-highlighter_languages_highlight_autohotkey.614c5248.chunk.js +2 -0
  125. package/dist-scalprum/static/react-syntax-highlighter_languages_highlight_autohotkey.614c5248.chunk.js.map +1 -0
  126. package/dist-scalprum/static/react-syntax-highlighter_languages_highlight_autoit.a06c1c62.chunk.js +2 -0
  127. package/dist-scalprum/static/react-syntax-highlighter_languages_highlight_autoit.a06c1c62.chunk.js.map +1 -0
  128. package/dist-scalprum/static/react-syntax-highlighter_languages_highlight_avrasm.6381890e.chunk.js +2 -0
  129. package/dist-scalprum/static/react-syntax-highlighter_languages_highlight_avrasm.6381890e.chunk.js.map +1 -0
  130. package/dist-scalprum/static/react-syntax-highlighter_languages_highlight_awk.dfc9b0b0.chunk.js +2 -0
  131. package/dist-scalprum/static/react-syntax-highlighter_languages_highlight_awk.dfc9b0b0.chunk.js.map +1 -0
  132. package/dist-scalprum/static/react-syntax-highlighter_languages_highlight_axapta.80d14346.chunk.js +2 -0
  133. package/dist-scalprum/static/react-syntax-highlighter_languages_highlight_axapta.80d14346.chunk.js.map +1 -0
  134. package/dist-scalprum/static/react-syntax-highlighter_languages_highlight_bash.53f7c730.chunk.js +2 -0
  135. package/dist-scalprum/static/react-syntax-highlighter_languages_highlight_bash.53f7c730.chunk.js.map +1 -0
  136. package/dist-scalprum/static/react-syntax-highlighter_languages_highlight_basic.ec232b8a.chunk.js +2 -0
  137. package/dist-scalprum/static/react-syntax-highlighter_languages_highlight_basic.ec232b8a.chunk.js.map +1 -0
  138. package/dist-scalprum/static/react-syntax-highlighter_languages_highlight_bnf.84e0a497.chunk.js +2 -0
  139. package/dist-scalprum/static/react-syntax-highlighter_languages_highlight_bnf.84e0a497.chunk.js.map +1 -0
  140. package/dist-scalprum/static/react-syntax-highlighter_languages_highlight_brainfuck.31bde7c5.chunk.js +2 -0
  141. package/dist-scalprum/static/react-syntax-highlighter_languages_highlight_brainfuck.31bde7c5.chunk.js.map +1 -0
  142. package/dist-scalprum/static/react-syntax-highlighter_languages_highlight_c.b43ce116.chunk.js +2 -0
  143. package/dist-scalprum/static/react-syntax-highlighter_languages_highlight_c.b43ce116.chunk.js.map +1 -0
  144. package/dist-scalprum/static/react-syntax-highlighter_languages_highlight_cLike.f884fdc0.chunk.js +2 -0
  145. package/dist-scalprum/static/react-syntax-highlighter_languages_highlight_cLike.f884fdc0.chunk.js.map +1 -0
  146. package/dist-scalprum/static/react-syntax-highlighter_languages_highlight_cal.781cc6c6.chunk.js +2 -0
  147. package/dist-scalprum/static/react-syntax-highlighter_languages_highlight_cal.781cc6c6.chunk.js.map +1 -0
  148. package/dist-scalprum/static/react-syntax-highlighter_languages_highlight_capnproto.79dfc31f.chunk.js +2 -0
  149. package/dist-scalprum/static/react-syntax-highlighter_languages_highlight_capnproto.79dfc31f.chunk.js.map +1 -0
  150. package/dist-scalprum/static/react-syntax-highlighter_languages_highlight_ceylon.ab3b1c28.chunk.js +2 -0
  151. package/dist-scalprum/static/react-syntax-highlighter_languages_highlight_ceylon.ab3b1c28.chunk.js.map +1 -0
  152. package/dist-scalprum/static/react-syntax-highlighter_languages_highlight_clean.97b48014.chunk.js +2 -0
  153. package/dist-scalprum/static/react-syntax-highlighter_languages_highlight_clean.97b48014.chunk.js.map +1 -0
  154. package/dist-scalprum/static/react-syntax-highlighter_languages_highlight_clojure.e3fcc98c.chunk.js +2 -0
  155. package/dist-scalprum/static/react-syntax-highlighter_languages_highlight_clojure.e3fcc98c.chunk.js.map +1 -0
  156. package/dist-scalprum/static/react-syntax-highlighter_languages_highlight_clojureRepl.e6dbc3b4.chunk.js +2 -0
  157. package/dist-scalprum/static/react-syntax-highlighter_languages_highlight_clojureRepl.e6dbc3b4.chunk.js.map +1 -0
  158. package/dist-scalprum/static/react-syntax-highlighter_languages_highlight_cmake.cb9028b5.chunk.js +2 -0
  159. package/dist-scalprum/static/react-syntax-highlighter_languages_highlight_cmake.cb9028b5.chunk.js.map +1 -0
  160. package/dist-scalprum/static/react-syntax-highlighter_languages_highlight_coffeescript.3bc87b5b.chunk.js +2 -0
  161. package/dist-scalprum/static/react-syntax-highlighter_languages_highlight_coffeescript.3bc87b5b.chunk.js.map +1 -0
  162. package/dist-scalprum/static/react-syntax-highlighter_languages_highlight_coq.6b156852.chunk.js +2 -0
  163. package/dist-scalprum/static/react-syntax-highlighter_languages_highlight_coq.6b156852.chunk.js.map +1 -0
  164. package/dist-scalprum/static/react-syntax-highlighter_languages_highlight_cos.78d69dee.chunk.js +2 -0
  165. package/dist-scalprum/static/react-syntax-highlighter_languages_highlight_cos.78d69dee.chunk.js.map +1 -0
  166. package/dist-scalprum/static/react-syntax-highlighter_languages_highlight_cpp.ff6a8f78.chunk.js +2 -0
  167. package/dist-scalprum/static/react-syntax-highlighter_languages_highlight_cpp.ff6a8f78.chunk.js.map +1 -0
  168. package/dist-scalprum/static/react-syntax-highlighter_languages_highlight_crmsh.58c4cb07.chunk.js +2 -0
  169. package/dist-scalprum/static/react-syntax-highlighter_languages_highlight_crmsh.58c4cb07.chunk.js.map +1 -0
  170. package/dist-scalprum/static/react-syntax-highlighter_languages_highlight_crystal.3a36e63f.chunk.js +2 -0
  171. package/dist-scalprum/static/react-syntax-highlighter_languages_highlight_crystal.3a36e63f.chunk.js.map +1 -0
  172. package/dist-scalprum/static/react-syntax-highlighter_languages_highlight_csharp.ea98c6fb.chunk.js +2 -0
  173. package/dist-scalprum/static/react-syntax-highlighter_languages_highlight_csharp.ea98c6fb.chunk.js.map +1 -0
  174. package/dist-scalprum/static/react-syntax-highlighter_languages_highlight_csp.7fc6f9a3.chunk.js +2 -0
  175. package/dist-scalprum/static/react-syntax-highlighter_languages_highlight_csp.7fc6f9a3.chunk.js.map +1 -0
  176. package/dist-scalprum/static/react-syntax-highlighter_languages_highlight_css.2cc312ae.chunk.js +2 -0
  177. package/dist-scalprum/static/react-syntax-highlighter_languages_highlight_css.2cc312ae.chunk.js.map +1 -0
  178. package/dist-scalprum/static/react-syntax-highlighter_languages_highlight_d.bf4f2b44.chunk.js +2 -0
  179. package/dist-scalprum/static/react-syntax-highlighter_languages_highlight_d.bf4f2b44.chunk.js.map +1 -0
  180. package/dist-scalprum/static/react-syntax-highlighter_languages_highlight_dart.0a0b12af.chunk.js +2 -0
  181. package/dist-scalprum/static/react-syntax-highlighter_languages_highlight_dart.0a0b12af.chunk.js.map +1 -0
  182. package/dist-scalprum/static/react-syntax-highlighter_languages_highlight_delphi.588e191d.chunk.js +2 -0
  183. package/dist-scalprum/static/react-syntax-highlighter_languages_highlight_delphi.588e191d.chunk.js.map +1 -0
  184. package/dist-scalprum/static/react-syntax-highlighter_languages_highlight_diff.a8373241.chunk.js +2 -0
  185. package/dist-scalprum/static/react-syntax-highlighter_languages_highlight_diff.a8373241.chunk.js.map +1 -0
  186. package/dist-scalprum/static/react-syntax-highlighter_languages_highlight_django.8fb85401.chunk.js +2 -0
  187. package/dist-scalprum/static/react-syntax-highlighter_languages_highlight_django.8fb85401.chunk.js.map +1 -0
  188. package/dist-scalprum/static/react-syntax-highlighter_languages_highlight_dns.6d79126a.chunk.js +2 -0
  189. package/dist-scalprum/static/react-syntax-highlighter_languages_highlight_dns.6d79126a.chunk.js.map +1 -0
  190. package/dist-scalprum/static/react-syntax-highlighter_languages_highlight_dockerfile.2c5fdf55.chunk.js +2 -0
  191. package/dist-scalprum/static/react-syntax-highlighter_languages_highlight_dockerfile.2c5fdf55.chunk.js.map +1 -0
  192. package/dist-scalprum/static/react-syntax-highlighter_languages_highlight_dos.1ede6e37.chunk.js +2 -0
  193. package/dist-scalprum/static/react-syntax-highlighter_languages_highlight_dos.1ede6e37.chunk.js.map +1 -0
  194. package/dist-scalprum/static/react-syntax-highlighter_languages_highlight_dsconfig.c3457b50.chunk.js +2 -0
  195. package/dist-scalprum/static/react-syntax-highlighter_languages_highlight_dsconfig.c3457b50.chunk.js.map +1 -0
  196. package/dist-scalprum/static/react-syntax-highlighter_languages_highlight_dts.8fd3703c.chunk.js +2 -0
  197. package/dist-scalprum/static/react-syntax-highlighter_languages_highlight_dts.8fd3703c.chunk.js.map +1 -0
  198. package/dist-scalprum/static/react-syntax-highlighter_languages_highlight_dust.b30d0c38.chunk.js +2 -0
  199. package/dist-scalprum/static/react-syntax-highlighter_languages_highlight_dust.b30d0c38.chunk.js.map +1 -0
  200. package/dist-scalprum/static/react-syntax-highlighter_languages_highlight_ebnf.a34b6944.chunk.js +2 -0
  201. package/dist-scalprum/static/react-syntax-highlighter_languages_highlight_ebnf.a34b6944.chunk.js.map +1 -0
  202. package/dist-scalprum/static/react-syntax-highlighter_languages_highlight_elixir.1e79c9b9.chunk.js +2 -0
  203. package/dist-scalprum/static/react-syntax-highlighter_languages_highlight_elixir.1e79c9b9.chunk.js.map +1 -0
  204. package/dist-scalprum/static/react-syntax-highlighter_languages_highlight_elm.8a488b19.chunk.js +2 -0
  205. package/dist-scalprum/static/react-syntax-highlighter_languages_highlight_elm.8a488b19.chunk.js.map +1 -0
  206. package/dist-scalprum/static/react-syntax-highlighter_languages_highlight_erb.4ac917b8.chunk.js +2 -0
  207. package/dist-scalprum/static/react-syntax-highlighter_languages_highlight_erb.4ac917b8.chunk.js.map +1 -0
  208. package/dist-scalprum/static/react-syntax-highlighter_languages_highlight_erlang.501777c7.chunk.js +2 -0
  209. package/dist-scalprum/static/react-syntax-highlighter_languages_highlight_erlang.501777c7.chunk.js.map +1 -0
  210. package/dist-scalprum/static/react-syntax-highlighter_languages_highlight_erlangRepl.0d7f4890.chunk.js +2 -0
  211. package/dist-scalprum/static/react-syntax-highlighter_languages_highlight_erlangRepl.0d7f4890.chunk.js.map +1 -0
  212. package/dist-scalprum/static/react-syntax-highlighter_languages_highlight_excel.2f5c76b9.chunk.js +2 -0
  213. package/dist-scalprum/static/react-syntax-highlighter_languages_highlight_excel.2f5c76b9.chunk.js.map +1 -0
  214. package/dist-scalprum/static/react-syntax-highlighter_languages_highlight_fix.5ee62733.chunk.js +2 -0
  215. package/dist-scalprum/static/react-syntax-highlighter_languages_highlight_fix.5ee62733.chunk.js.map +1 -0
  216. package/dist-scalprum/static/react-syntax-highlighter_languages_highlight_flix.972cc801.chunk.js +2 -0
  217. package/dist-scalprum/static/react-syntax-highlighter_languages_highlight_flix.972cc801.chunk.js.map +1 -0
  218. package/dist-scalprum/static/react-syntax-highlighter_languages_highlight_fortran.38ec3d00.chunk.js +2 -0
  219. package/dist-scalprum/static/react-syntax-highlighter_languages_highlight_fortran.38ec3d00.chunk.js.map +1 -0
  220. package/dist-scalprum/static/react-syntax-highlighter_languages_highlight_fsharp.2ba37c00.chunk.js +2 -0
  221. package/dist-scalprum/static/react-syntax-highlighter_languages_highlight_fsharp.2ba37c00.chunk.js.map +1 -0
  222. package/dist-scalprum/static/react-syntax-highlighter_languages_highlight_gams.a45eb030.chunk.js +2 -0
  223. package/dist-scalprum/static/react-syntax-highlighter_languages_highlight_gams.a45eb030.chunk.js.map +1 -0
  224. package/dist-scalprum/static/react-syntax-highlighter_languages_highlight_gauss.cceeafb0.chunk.js +2 -0
  225. package/dist-scalprum/static/react-syntax-highlighter_languages_highlight_gauss.cceeafb0.chunk.js.map +1 -0
  226. package/dist-scalprum/static/react-syntax-highlighter_languages_highlight_gcode.378d3296.chunk.js +2 -0
  227. package/dist-scalprum/static/react-syntax-highlighter_languages_highlight_gcode.378d3296.chunk.js.map +1 -0
  228. package/dist-scalprum/static/react-syntax-highlighter_languages_highlight_gherkin.e740620a.chunk.js +2 -0
  229. package/dist-scalprum/static/react-syntax-highlighter_languages_highlight_gherkin.e740620a.chunk.js.map +1 -0
  230. package/dist-scalprum/static/react-syntax-highlighter_languages_highlight_glsl.bb5b0086.chunk.js +2 -0
  231. package/dist-scalprum/static/react-syntax-highlighter_languages_highlight_glsl.bb5b0086.chunk.js.map +1 -0
  232. package/dist-scalprum/static/react-syntax-highlighter_languages_highlight_gml.2347c999.chunk.js +2 -0
  233. package/dist-scalprum/static/react-syntax-highlighter_languages_highlight_gml.2347c999.chunk.js.map +1 -0
  234. package/dist-scalprum/static/react-syntax-highlighter_languages_highlight_go.abc0a144.chunk.js +2 -0
  235. package/dist-scalprum/static/react-syntax-highlighter_languages_highlight_go.abc0a144.chunk.js.map +1 -0
  236. package/dist-scalprum/static/react-syntax-highlighter_languages_highlight_golo.eaa5e2bf.chunk.js +2 -0
  237. package/dist-scalprum/static/react-syntax-highlighter_languages_highlight_golo.eaa5e2bf.chunk.js.map +1 -0
  238. package/dist-scalprum/static/react-syntax-highlighter_languages_highlight_gradle.72fdf84d.chunk.js +2 -0
  239. package/dist-scalprum/static/react-syntax-highlighter_languages_highlight_gradle.72fdf84d.chunk.js.map +1 -0
  240. package/dist-scalprum/static/react-syntax-highlighter_languages_highlight_groovy.ecd68b19.chunk.js +2 -0
  241. package/dist-scalprum/static/react-syntax-highlighter_languages_highlight_groovy.ecd68b19.chunk.js.map +1 -0
  242. package/dist-scalprum/static/react-syntax-highlighter_languages_highlight_haml.d698757b.chunk.js +2 -0
  243. package/dist-scalprum/static/react-syntax-highlighter_languages_highlight_haml.d698757b.chunk.js.map +1 -0
  244. package/dist-scalprum/static/react-syntax-highlighter_languages_highlight_handlebars.75c0a89b.chunk.js +2 -0
  245. package/dist-scalprum/static/react-syntax-highlighter_languages_highlight_handlebars.75c0a89b.chunk.js.map +1 -0
  246. package/dist-scalprum/static/react-syntax-highlighter_languages_highlight_haskell.bbd3c104.chunk.js +2 -0
  247. package/dist-scalprum/static/react-syntax-highlighter_languages_highlight_haskell.bbd3c104.chunk.js.map +1 -0
  248. package/dist-scalprum/static/react-syntax-highlighter_languages_highlight_haxe.e2543cc2.chunk.js +2 -0
  249. package/dist-scalprum/static/react-syntax-highlighter_languages_highlight_haxe.e2543cc2.chunk.js.map +1 -0
  250. package/dist-scalprum/static/react-syntax-highlighter_languages_highlight_hsp.5d714528.chunk.js +2 -0
  251. package/dist-scalprum/static/react-syntax-highlighter_languages_highlight_hsp.5d714528.chunk.js.map +1 -0
  252. package/dist-scalprum/static/react-syntax-highlighter_languages_highlight_htmlbars.e57e3c89.chunk.js +2 -0
  253. package/dist-scalprum/static/react-syntax-highlighter_languages_highlight_htmlbars.e57e3c89.chunk.js.map +1 -0
  254. package/dist-scalprum/static/react-syntax-highlighter_languages_highlight_http.5859273c.chunk.js +2 -0
  255. package/dist-scalprum/static/react-syntax-highlighter_languages_highlight_http.5859273c.chunk.js.map +1 -0
  256. package/dist-scalprum/static/react-syntax-highlighter_languages_highlight_hy.c60db034.chunk.js +2 -0
  257. package/dist-scalprum/static/react-syntax-highlighter_languages_highlight_hy.c60db034.chunk.js.map +1 -0
  258. package/dist-scalprum/static/react-syntax-highlighter_languages_highlight_inform7.78be038f.chunk.js +2 -0
  259. package/dist-scalprum/static/react-syntax-highlighter_languages_highlight_inform7.78be038f.chunk.js.map +1 -0
  260. package/dist-scalprum/static/react-syntax-highlighter_languages_highlight_ini.d9d4ed7e.chunk.js +2 -0
  261. package/dist-scalprum/static/react-syntax-highlighter_languages_highlight_ini.d9d4ed7e.chunk.js.map +1 -0
  262. package/dist-scalprum/static/react-syntax-highlighter_languages_highlight_irpf90.25afcc29.chunk.js +2 -0
  263. package/dist-scalprum/static/react-syntax-highlighter_languages_highlight_irpf90.25afcc29.chunk.js.map +1 -0
  264. package/dist-scalprum/static/react-syntax-highlighter_languages_highlight_isbl.abe269c1.chunk.js +2 -0
  265. package/dist-scalprum/static/react-syntax-highlighter_languages_highlight_isbl.abe269c1.chunk.js.map +1 -0
  266. package/dist-scalprum/static/react-syntax-highlighter_languages_highlight_java.e04d1c07.chunk.js +2 -0
  267. package/dist-scalprum/static/react-syntax-highlighter_languages_highlight_java.e04d1c07.chunk.js.map +1 -0
  268. package/dist-scalprum/static/react-syntax-highlighter_languages_highlight_javascript.b0ad82d3.chunk.js +2 -0
  269. package/dist-scalprum/static/react-syntax-highlighter_languages_highlight_javascript.b0ad82d3.chunk.js.map +1 -0
  270. package/dist-scalprum/static/react-syntax-highlighter_languages_highlight_jbossCli.1ff533ef.chunk.js +2 -0
  271. package/dist-scalprum/static/react-syntax-highlighter_languages_highlight_jbossCli.1ff533ef.chunk.js.map +1 -0
  272. package/dist-scalprum/static/react-syntax-highlighter_languages_highlight_json.d934b52b.chunk.js +2 -0
  273. package/dist-scalprum/static/react-syntax-highlighter_languages_highlight_json.d934b52b.chunk.js.map +1 -0
  274. package/dist-scalprum/static/react-syntax-highlighter_languages_highlight_julia.f43a39d0.chunk.js +2 -0
  275. package/dist-scalprum/static/react-syntax-highlighter_languages_highlight_julia.f43a39d0.chunk.js.map +1 -0
  276. package/dist-scalprum/static/react-syntax-highlighter_languages_highlight_juliaRepl.e3bfcde8.chunk.js +2 -0
  277. package/dist-scalprum/static/react-syntax-highlighter_languages_highlight_juliaRepl.e3bfcde8.chunk.js.map +1 -0
  278. package/dist-scalprum/static/react-syntax-highlighter_languages_highlight_kotlin.c5eaa6f5.chunk.js +2 -0
  279. package/dist-scalprum/static/react-syntax-highlighter_languages_highlight_kotlin.c5eaa6f5.chunk.js.map +1 -0
  280. package/dist-scalprum/static/react-syntax-highlighter_languages_highlight_lasso.8d4054e7.chunk.js +2 -0
  281. package/dist-scalprum/static/react-syntax-highlighter_languages_highlight_lasso.8d4054e7.chunk.js.map +1 -0
  282. package/dist-scalprum/static/react-syntax-highlighter_languages_highlight_latex.b4bb9102.chunk.js +2 -0
  283. package/dist-scalprum/static/react-syntax-highlighter_languages_highlight_latex.b4bb9102.chunk.js.map +1 -0
  284. package/dist-scalprum/static/react-syntax-highlighter_languages_highlight_ldif.74045e43.chunk.js +2 -0
  285. package/dist-scalprum/static/react-syntax-highlighter_languages_highlight_ldif.74045e43.chunk.js.map +1 -0
  286. package/dist-scalprum/static/react-syntax-highlighter_languages_highlight_leaf.92519810.chunk.js +2 -0
  287. package/dist-scalprum/static/react-syntax-highlighter_languages_highlight_leaf.92519810.chunk.js.map +1 -0
  288. package/dist-scalprum/static/react-syntax-highlighter_languages_highlight_less.cc574d49.chunk.js +2 -0
  289. package/dist-scalprum/static/react-syntax-highlighter_languages_highlight_less.cc574d49.chunk.js.map +1 -0
  290. package/dist-scalprum/static/react-syntax-highlighter_languages_highlight_lisp.1cb2f675.chunk.js +2 -0
  291. package/dist-scalprum/static/react-syntax-highlighter_languages_highlight_lisp.1cb2f675.chunk.js.map +1 -0
  292. package/dist-scalprum/static/react-syntax-highlighter_languages_highlight_livecodeserver.f624f22d.chunk.js +2 -0
  293. package/dist-scalprum/static/react-syntax-highlighter_languages_highlight_livecodeserver.f624f22d.chunk.js.map +1 -0
  294. package/dist-scalprum/static/react-syntax-highlighter_languages_highlight_livescript.3ece3068.chunk.js +2 -0
  295. package/dist-scalprum/static/react-syntax-highlighter_languages_highlight_livescript.3ece3068.chunk.js.map +1 -0
  296. package/dist-scalprum/static/react-syntax-highlighter_languages_highlight_llvm.f32d41e6.chunk.js +2 -0
  297. package/dist-scalprum/static/react-syntax-highlighter_languages_highlight_llvm.f32d41e6.chunk.js.map +1 -0
  298. package/dist-scalprum/static/react-syntax-highlighter_languages_highlight_lsl.b6519e02.chunk.js +2 -0
  299. package/dist-scalprum/static/react-syntax-highlighter_languages_highlight_lsl.b6519e02.chunk.js.map +1 -0
  300. package/dist-scalprum/static/react-syntax-highlighter_languages_highlight_lua.52f73c98.chunk.js +2 -0
  301. package/dist-scalprum/static/react-syntax-highlighter_languages_highlight_lua.52f73c98.chunk.js.map +1 -0
  302. package/dist-scalprum/static/react-syntax-highlighter_languages_highlight_makefile.cad796c9.chunk.js +2 -0
  303. package/dist-scalprum/static/react-syntax-highlighter_languages_highlight_makefile.cad796c9.chunk.js.map +1 -0
  304. package/dist-scalprum/static/react-syntax-highlighter_languages_highlight_markdown.1489792c.chunk.js +2 -0
  305. package/dist-scalprum/static/react-syntax-highlighter_languages_highlight_markdown.1489792c.chunk.js.map +1 -0
  306. package/dist-scalprum/static/react-syntax-highlighter_languages_highlight_mathematica.d8631b37.chunk.js +2 -0
  307. package/dist-scalprum/static/react-syntax-highlighter_languages_highlight_mathematica.d8631b37.chunk.js.map +1 -0
  308. package/dist-scalprum/static/react-syntax-highlighter_languages_highlight_matlab.114e44eb.chunk.js +2 -0
  309. package/dist-scalprum/static/react-syntax-highlighter_languages_highlight_matlab.114e44eb.chunk.js.map +1 -0
  310. package/dist-scalprum/static/react-syntax-highlighter_languages_highlight_maxima.f1f17544.chunk.js +2 -0
  311. package/dist-scalprum/static/react-syntax-highlighter_languages_highlight_maxima.f1f17544.chunk.js.map +1 -0
  312. package/dist-scalprum/static/react-syntax-highlighter_languages_highlight_mel.5251fe1a.chunk.js +2 -0
  313. package/dist-scalprum/static/react-syntax-highlighter_languages_highlight_mel.5251fe1a.chunk.js.map +1 -0
  314. package/dist-scalprum/static/react-syntax-highlighter_languages_highlight_mercury.fa8fdac0.chunk.js +2 -0
  315. package/dist-scalprum/static/react-syntax-highlighter_languages_highlight_mercury.fa8fdac0.chunk.js.map +1 -0
  316. package/dist-scalprum/static/react-syntax-highlighter_languages_highlight_mipsasm.f5bc5b04.chunk.js +2 -0
  317. package/dist-scalprum/static/react-syntax-highlighter_languages_highlight_mipsasm.f5bc5b04.chunk.js.map +1 -0
  318. package/dist-scalprum/static/react-syntax-highlighter_languages_highlight_mizar.9b39cf3b.chunk.js +2 -0
  319. package/dist-scalprum/static/react-syntax-highlighter_languages_highlight_mizar.9b39cf3b.chunk.js.map +1 -0
  320. package/dist-scalprum/static/react-syntax-highlighter_languages_highlight_mojolicious.0cf721ff.chunk.js +2 -0
  321. package/dist-scalprum/static/react-syntax-highlighter_languages_highlight_mojolicious.0cf721ff.chunk.js.map +1 -0
  322. package/dist-scalprum/static/react-syntax-highlighter_languages_highlight_monkey.5f60f06d.chunk.js +2 -0
  323. package/dist-scalprum/static/react-syntax-highlighter_languages_highlight_monkey.5f60f06d.chunk.js.map +1 -0
  324. package/dist-scalprum/static/react-syntax-highlighter_languages_highlight_moonscript.443301b3.chunk.js +2 -0
  325. package/dist-scalprum/static/react-syntax-highlighter_languages_highlight_moonscript.443301b3.chunk.js.map +1 -0
  326. package/dist-scalprum/static/react-syntax-highlighter_languages_highlight_n1ql.c54b2c4a.chunk.js +2 -0
  327. package/dist-scalprum/static/react-syntax-highlighter_languages_highlight_n1ql.c54b2c4a.chunk.js.map +1 -0
  328. package/dist-scalprum/static/react-syntax-highlighter_languages_highlight_nginx.630147e0.chunk.js +2 -0
  329. package/dist-scalprum/static/react-syntax-highlighter_languages_highlight_nginx.630147e0.chunk.js.map +1 -0
  330. package/dist-scalprum/static/react-syntax-highlighter_languages_highlight_nim.17afaed1.chunk.js +2 -0
  331. package/dist-scalprum/static/react-syntax-highlighter_languages_highlight_nim.17afaed1.chunk.js.map +1 -0
  332. package/dist-scalprum/static/react-syntax-highlighter_languages_highlight_nix.245f31b6.chunk.js +2 -0
  333. package/dist-scalprum/static/react-syntax-highlighter_languages_highlight_nix.245f31b6.chunk.js.map +1 -0
  334. package/dist-scalprum/static/react-syntax-highlighter_languages_highlight_nodeRepl.5b05cdf2.chunk.js +2 -0
  335. package/dist-scalprum/static/react-syntax-highlighter_languages_highlight_nodeRepl.5b05cdf2.chunk.js.map +1 -0
  336. package/dist-scalprum/static/react-syntax-highlighter_languages_highlight_nsis.4934a8e8.chunk.js +2 -0
  337. package/dist-scalprum/static/react-syntax-highlighter_languages_highlight_nsis.4934a8e8.chunk.js.map +1 -0
  338. package/dist-scalprum/static/react-syntax-highlighter_languages_highlight_objectivec.2d204375.chunk.js +2 -0
  339. package/dist-scalprum/static/react-syntax-highlighter_languages_highlight_objectivec.2d204375.chunk.js.map +1 -0
  340. package/dist-scalprum/static/react-syntax-highlighter_languages_highlight_ocaml.0e42541e.chunk.js +2 -0
  341. package/dist-scalprum/static/react-syntax-highlighter_languages_highlight_ocaml.0e42541e.chunk.js.map +1 -0
  342. package/dist-scalprum/static/react-syntax-highlighter_languages_highlight_oneC.362a3b0a.chunk.js +2 -0
  343. package/dist-scalprum/static/react-syntax-highlighter_languages_highlight_oneC.362a3b0a.chunk.js.map +1 -0
  344. package/dist-scalprum/static/react-syntax-highlighter_languages_highlight_openscad.4a460eaf.chunk.js +2 -0
  345. package/dist-scalprum/static/react-syntax-highlighter_languages_highlight_openscad.4a460eaf.chunk.js.map +1 -0
  346. package/dist-scalprum/static/react-syntax-highlighter_languages_highlight_oxygene.ea742315.chunk.js +2 -0
  347. package/dist-scalprum/static/react-syntax-highlighter_languages_highlight_oxygene.ea742315.chunk.js.map +1 -0
  348. package/dist-scalprum/static/react-syntax-highlighter_languages_highlight_parser3.706a4bd6.chunk.js +2 -0
  349. package/dist-scalprum/static/react-syntax-highlighter_languages_highlight_parser3.706a4bd6.chunk.js.map +1 -0
  350. package/dist-scalprum/static/react-syntax-highlighter_languages_highlight_perl.ae8475a2.chunk.js +2 -0
  351. package/dist-scalprum/static/react-syntax-highlighter_languages_highlight_perl.ae8475a2.chunk.js.map +1 -0
  352. package/dist-scalprum/static/react-syntax-highlighter_languages_highlight_pf.5052a768.chunk.js +2 -0
  353. package/dist-scalprum/static/react-syntax-highlighter_languages_highlight_pf.5052a768.chunk.js.map +1 -0
  354. package/dist-scalprum/static/react-syntax-highlighter_languages_highlight_pgsql.5b0d21b9.chunk.js +2 -0
  355. package/dist-scalprum/static/react-syntax-highlighter_languages_highlight_pgsql.5b0d21b9.chunk.js.map +1 -0
  356. package/dist-scalprum/static/react-syntax-highlighter_languages_highlight_php.ade4c6c4.chunk.js +2 -0
  357. package/dist-scalprum/static/react-syntax-highlighter_languages_highlight_php.ade4c6c4.chunk.js.map +1 -0
  358. package/dist-scalprum/static/react-syntax-highlighter_languages_highlight_phpTemplate.2bd36dc7.chunk.js +2 -0
  359. package/dist-scalprum/static/react-syntax-highlighter_languages_highlight_phpTemplate.2bd36dc7.chunk.js.map +1 -0
  360. package/dist-scalprum/static/react-syntax-highlighter_languages_highlight_plaintext.25f8d292.chunk.js +2 -0
  361. package/dist-scalprum/static/react-syntax-highlighter_languages_highlight_plaintext.25f8d292.chunk.js.map +1 -0
  362. package/dist-scalprum/static/react-syntax-highlighter_languages_highlight_pony.1961f69f.chunk.js +2 -0
  363. package/dist-scalprum/static/react-syntax-highlighter_languages_highlight_pony.1961f69f.chunk.js.map +1 -0
  364. package/dist-scalprum/static/react-syntax-highlighter_languages_highlight_powershell.7bd31b3a.chunk.js +2 -0
  365. package/dist-scalprum/static/react-syntax-highlighter_languages_highlight_powershell.7bd31b3a.chunk.js.map +1 -0
  366. package/dist-scalprum/static/react-syntax-highlighter_languages_highlight_processing.8d1f48c5.chunk.js +2 -0
  367. package/dist-scalprum/static/react-syntax-highlighter_languages_highlight_processing.8d1f48c5.chunk.js.map +1 -0
  368. package/dist-scalprum/static/react-syntax-highlighter_languages_highlight_profile.615fa721.chunk.js +2 -0
  369. package/dist-scalprum/static/react-syntax-highlighter_languages_highlight_profile.615fa721.chunk.js.map +1 -0
  370. package/dist-scalprum/static/react-syntax-highlighter_languages_highlight_prolog.be0fdf0c.chunk.js +2 -0
  371. package/dist-scalprum/static/react-syntax-highlighter_languages_highlight_prolog.be0fdf0c.chunk.js.map +1 -0
  372. package/dist-scalprum/static/react-syntax-highlighter_languages_highlight_properties.60f97895.chunk.js +2 -0
  373. package/dist-scalprum/static/react-syntax-highlighter_languages_highlight_properties.60f97895.chunk.js.map +1 -0
  374. package/dist-scalprum/static/react-syntax-highlighter_languages_highlight_protobuf.0cd375bc.chunk.js +2 -0
  375. package/dist-scalprum/static/react-syntax-highlighter_languages_highlight_protobuf.0cd375bc.chunk.js.map +1 -0
  376. package/dist-scalprum/static/react-syntax-highlighter_languages_highlight_puppet.ee3f80da.chunk.js +2 -0
  377. package/dist-scalprum/static/react-syntax-highlighter_languages_highlight_puppet.ee3f80da.chunk.js.map +1 -0
  378. package/dist-scalprum/static/react-syntax-highlighter_languages_highlight_purebasic.08443005.chunk.js +2 -0
  379. package/dist-scalprum/static/react-syntax-highlighter_languages_highlight_purebasic.08443005.chunk.js.map +1 -0
  380. package/dist-scalprum/static/react-syntax-highlighter_languages_highlight_python.9e4100ae.chunk.js +2 -0
  381. package/dist-scalprum/static/react-syntax-highlighter_languages_highlight_python.9e4100ae.chunk.js.map +1 -0
  382. package/dist-scalprum/static/react-syntax-highlighter_languages_highlight_pythonRepl.feb72aed.chunk.js +2 -0
  383. package/dist-scalprum/static/react-syntax-highlighter_languages_highlight_pythonRepl.feb72aed.chunk.js.map +1 -0
  384. package/dist-scalprum/static/react-syntax-highlighter_languages_highlight_q.989943de.chunk.js +2 -0
  385. package/dist-scalprum/static/react-syntax-highlighter_languages_highlight_q.989943de.chunk.js.map +1 -0
  386. package/dist-scalprum/static/react-syntax-highlighter_languages_highlight_qml.8f3a0af6.chunk.js +2 -0
  387. package/dist-scalprum/static/react-syntax-highlighter_languages_highlight_qml.8f3a0af6.chunk.js.map +1 -0
  388. package/dist-scalprum/static/react-syntax-highlighter_languages_highlight_r.8540ccea.chunk.js +2 -0
  389. package/dist-scalprum/static/react-syntax-highlighter_languages_highlight_r.8540ccea.chunk.js.map +1 -0
  390. package/dist-scalprum/static/react-syntax-highlighter_languages_highlight_reasonml.a5a73a29.chunk.js +2 -0
  391. package/dist-scalprum/static/react-syntax-highlighter_languages_highlight_reasonml.a5a73a29.chunk.js.map +1 -0
  392. package/dist-scalprum/static/react-syntax-highlighter_languages_highlight_rib.dc8afdf1.chunk.js +2 -0
  393. package/dist-scalprum/static/react-syntax-highlighter_languages_highlight_rib.dc8afdf1.chunk.js.map +1 -0
  394. package/dist-scalprum/static/react-syntax-highlighter_languages_highlight_roboconf.47518214.chunk.js +2 -0
  395. package/dist-scalprum/static/react-syntax-highlighter_languages_highlight_roboconf.47518214.chunk.js.map +1 -0
  396. package/dist-scalprum/static/react-syntax-highlighter_languages_highlight_routeros.c0bcd6ce.chunk.js +2 -0
  397. package/dist-scalprum/static/react-syntax-highlighter_languages_highlight_routeros.c0bcd6ce.chunk.js.map +1 -0
  398. package/dist-scalprum/static/react-syntax-highlighter_languages_highlight_rsl.909f2a27.chunk.js +2 -0
  399. package/dist-scalprum/static/react-syntax-highlighter_languages_highlight_rsl.909f2a27.chunk.js.map +1 -0
  400. package/dist-scalprum/static/react-syntax-highlighter_languages_highlight_ruby.d84064e5.chunk.js +2 -0
  401. package/dist-scalprum/static/react-syntax-highlighter_languages_highlight_ruby.d84064e5.chunk.js.map +1 -0
  402. package/dist-scalprum/static/react-syntax-highlighter_languages_highlight_ruleslanguage.038504d0.chunk.js +2 -0
  403. package/dist-scalprum/static/react-syntax-highlighter_languages_highlight_ruleslanguage.038504d0.chunk.js.map +1 -0
  404. package/dist-scalprum/static/react-syntax-highlighter_languages_highlight_rust.7e26e901.chunk.js +2 -0
  405. package/dist-scalprum/static/react-syntax-highlighter_languages_highlight_rust.7e26e901.chunk.js.map +1 -0
  406. package/dist-scalprum/static/react-syntax-highlighter_languages_highlight_sas.94075d6a.chunk.js +2 -0
  407. package/dist-scalprum/static/react-syntax-highlighter_languages_highlight_sas.94075d6a.chunk.js.map +1 -0
  408. package/dist-scalprum/static/react-syntax-highlighter_languages_highlight_scala.a4629d0a.chunk.js +2 -0
  409. package/dist-scalprum/static/react-syntax-highlighter_languages_highlight_scala.a4629d0a.chunk.js.map +1 -0
  410. package/dist-scalprum/static/react-syntax-highlighter_languages_highlight_scheme.508b5846.chunk.js +2 -0
  411. package/dist-scalprum/static/react-syntax-highlighter_languages_highlight_scheme.508b5846.chunk.js.map +1 -0
  412. package/dist-scalprum/static/react-syntax-highlighter_languages_highlight_scilab.bb9cc730.chunk.js +2 -0
  413. package/dist-scalprum/static/react-syntax-highlighter_languages_highlight_scilab.bb9cc730.chunk.js.map +1 -0
  414. package/dist-scalprum/static/react-syntax-highlighter_languages_highlight_scss.bec19089.chunk.js +2 -0
  415. package/dist-scalprum/static/react-syntax-highlighter_languages_highlight_scss.bec19089.chunk.js.map +1 -0
  416. package/dist-scalprum/static/react-syntax-highlighter_languages_highlight_shell.9bbc16eb.chunk.js +2 -0
  417. package/dist-scalprum/static/react-syntax-highlighter_languages_highlight_shell.9bbc16eb.chunk.js.map +1 -0
  418. package/dist-scalprum/static/react-syntax-highlighter_languages_highlight_smali.4fa5afdd.chunk.js +2 -0
  419. package/dist-scalprum/static/react-syntax-highlighter_languages_highlight_smali.4fa5afdd.chunk.js.map +1 -0
  420. package/dist-scalprum/static/react-syntax-highlighter_languages_highlight_smalltalk.53da57ca.chunk.js +2 -0
  421. package/dist-scalprum/static/react-syntax-highlighter_languages_highlight_smalltalk.53da57ca.chunk.js.map +1 -0
  422. package/dist-scalprum/static/react-syntax-highlighter_languages_highlight_sml.0e45c1cf.chunk.js +2 -0
  423. package/dist-scalprum/static/react-syntax-highlighter_languages_highlight_sml.0e45c1cf.chunk.js.map +1 -0
  424. package/dist-scalprum/static/react-syntax-highlighter_languages_highlight_sqf.43421810.chunk.js +2 -0
  425. package/dist-scalprum/static/react-syntax-highlighter_languages_highlight_sqf.43421810.chunk.js.map +1 -0
  426. package/dist-scalprum/static/react-syntax-highlighter_languages_highlight_sql.651dcc8d.chunk.js +2 -0
  427. package/dist-scalprum/static/react-syntax-highlighter_languages_highlight_sql.651dcc8d.chunk.js.map +1 -0
  428. package/dist-scalprum/static/react-syntax-highlighter_languages_highlight_sqlMore.d69b1825.chunk.js +2 -0
  429. package/dist-scalprum/static/react-syntax-highlighter_languages_highlight_sqlMore.d69b1825.chunk.js.map +1 -0
  430. package/dist-scalprum/static/react-syntax-highlighter_languages_highlight_stan.17155e77.chunk.js +2 -0
  431. package/dist-scalprum/static/react-syntax-highlighter_languages_highlight_stan.17155e77.chunk.js.map +1 -0
  432. package/dist-scalprum/static/react-syntax-highlighter_languages_highlight_stata.fe81a7fc.chunk.js +2 -0
  433. package/dist-scalprum/static/react-syntax-highlighter_languages_highlight_stata.fe81a7fc.chunk.js.map +1 -0
  434. package/dist-scalprum/static/react-syntax-highlighter_languages_highlight_step21.a431b2db.chunk.js +2 -0
  435. package/dist-scalprum/static/react-syntax-highlighter_languages_highlight_step21.a431b2db.chunk.js.map +1 -0
  436. package/dist-scalprum/static/react-syntax-highlighter_languages_highlight_stylus.cde06cf5.chunk.js +2 -0
  437. package/dist-scalprum/static/react-syntax-highlighter_languages_highlight_stylus.cde06cf5.chunk.js.map +1 -0
  438. package/dist-scalprum/static/react-syntax-highlighter_languages_highlight_subunit.c5ac3a0a.chunk.js +2 -0
  439. package/dist-scalprum/static/react-syntax-highlighter_languages_highlight_subunit.c5ac3a0a.chunk.js.map +1 -0
  440. package/dist-scalprum/static/react-syntax-highlighter_languages_highlight_swift.7d33a4a9.chunk.js +2 -0
  441. package/dist-scalprum/static/react-syntax-highlighter_languages_highlight_swift.7d33a4a9.chunk.js.map +1 -0
  442. package/dist-scalprum/static/react-syntax-highlighter_languages_highlight_taggerscript.695a2547.chunk.js +2 -0
  443. package/dist-scalprum/static/react-syntax-highlighter_languages_highlight_taggerscript.695a2547.chunk.js.map +1 -0
  444. package/dist-scalprum/static/react-syntax-highlighter_languages_highlight_tap.402e473f.chunk.js +2 -0
  445. package/dist-scalprum/static/react-syntax-highlighter_languages_highlight_tap.402e473f.chunk.js.map +1 -0
  446. package/dist-scalprum/static/react-syntax-highlighter_languages_highlight_tcl.79af288c.chunk.js +2 -0
  447. package/dist-scalprum/static/react-syntax-highlighter_languages_highlight_tcl.79af288c.chunk.js.map +1 -0
  448. package/dist-scalprum/static/react-syntax-highlighter_languages_highlight_thrift.ecb04f2a.chunk.js +2 -0
  449. package/dist-scalprum/static/react-syntax-highlighter_languages_highlight_thrift.ecb04f2a.chunk.js.map +1 -0
  450. package/dist-scalprum/static/react-syntax-highlighter_languages_highlight_tp.0f4ff415.chunk.js +2 -0
  451. package/dist-scalprum/static/react-syntax-highlighter_languages_highlight_tp.0f4ff415.chunk.js.map +1 -0
  452. package/dist-scalprum/static/react-syntax-highlighter_languages_highlight_twig.5cb0fdfc.chunk.js +2 -0
  453. package/dist-scalprum/static/react-syntax-highlighter_languages_highlight_twig.5cb0fdfc.chunk.js.map +1 -0
  454. package/dist-scalprum/static/react-syntax-highlighter_languages_highlight_typescript.cf576f17.chunk.js +2 -0
  455. package/dist-scalprum/static/react-syntax-highlighter_languages_highlight_typescript.cf576f17.chunk.js.map +1 -0
  456. package/dist-scalprum/static/react-syntax-highlighter_languages_highlight_vala.843d9bc4.chunk.js +2 -0
  457. package/dist-scalprum/static/react-syntax-highlighter_languages_highlight_vala.843d9bc4.chunk.js.map +1 -0
  458. package/dist-scalprum/static/react-syntax-highlighter_languages_highlight_vbnet.21c190ed.chunk.js +2 -0
  459. package/dist-scalprum/static/react-syntax-highlighter_languages_highlight_vbnet.21c190ed.chunk.js.map +1 -0
  460. package/dist-scalprum/static/react-syntax-highlighter_languages_highlight_vbscript.4703f4c5.chunk.js +2 -0
  461. package/dist-scalprum/static/react-syntax-highlighter_languages_highlight_vbscript.4703f4c5.chunk.js.map +1 -0
  462. package/dist-scalprum/static/react-syntax-highlighter_languages_highlight_vbscriptHtml.42eb54af.chunk.js +2 -0
  463. package/dist-scalprum/static/react-syntax-highlighter_languages_highlight_vbscriptHtml.42eb54af.chunk.js.map +1 -0
  464. package/dist-scalprum/static/react-syntax-highlighter_languages_highlight_verilog.e32adbeb.chunk.js +2 -0
  465. package/dist-scalprum/static/react-syntax-highlighter_languages_highlight_verilog.e32adbeb.chunk.js.map +1 -0
  466. package/dist-scalprum/static/react-syntax-highlighter_languages_highlight_vhdl.dea9db6c.chunk.js +2 -0
  467. package/dist-scalprum/static/react-syntax-highlighter_languages_highlight_vhdl.dea9db6c.chunk.js.map +1 -0
  468. package/dist-scalprum/static/react-syntax-highlighter_languages_highlight_vim.e82f126f.chunk.js +2 -0
  469. package/dist-scalprum/static/react-syntax-highlighter_languages_highlight_vim.e82f126f.chunk.js.map +1 -0
  470. package/dist-scalprum/static/react-syntax-highlighter_languages_highlight_x86asm.217c56f0.chunk.js +2 -0
  471. package/dist-scalprum/static/react-syntax-highlighter_languages_highlight_x86asm.217c56f0.chunk.js.map +1 -0
  472. package/dist-scalprum/static/react-syntax-highlighter_languages_highlight_xl.7cff3cbb.chunk.js +2 -0
  473. package/dist-scalprum/static/react-syntax-highlighter_languages_highlight_xl.7cff3cbb.chunk.js.map +1 -0
  474. package/dist-scalprum/static/react-syntax-highlighter_languages_highlight_xml.ee14d6a4.chunk.js +2 -0
  475. package/dist-scalprum/static/react-syntax-highlighter_languages_highlight_xml.ee14d6a4.chunk.js.map +1 -0
  476. package/dist-scalprum/static/react-syntax-highlighter_languages_highlight_xquery.353780d4.chunk.js +2 -0
  477. package/dist-scalprum/static/react-syntax-highlighter_languages_highlight_xquery.353780d4.chunk.js.map +1 -0
  478. package/dist-scalprum/static/react-syntax-highlighter_languages_highlight_yaml.2aae489e.chunk.js +2 -0
  479. package/dist-scalprum/static/react-syntax-highlighter_languages_highlight_yaml.2aae489e.chunk.js.map +1 -0
  480. package/dist-scalprum/static/react-syntax-highlighter_languages_highlight_zephir.fc94a148.chunk.js +2 -0
  481. package/dist-scalprum/static/react-syntax-highlighter_languages_highlight_zephir.fc94a148.chunk.js.map +1 -0
  482. package/package.json +7 -3
  483. package/dist/hooks/useUserRole.esm.js +0 -49
  484. package/dist/hooks/useUserRole.esm.js.map +0 -1
@@ -1,35 +1,41 @@
1
1
  import React, { useState } from 'react';
2
- import { Dialog, DialogTitle, DialogContent, Grid, TextField, MenuItem, Typography, Box, Chip, Button, DialogActions } from '@material-ui/core';
2
+ import { makeStyles, Dialog, DialogTitle, DialogContent, Grid, TextField, MenuItem, Typography, Box, Chip, Button, DialogActions } from '@material-ui/core';
3
3
  import { useApi, configApiRef, fetchApiRef } from '@backstage/core-plugin-api';
4
4
  import { Alert } from '@material-ui/lab';
5
5
  import useAsync from 'react-use/lib/useAsync';
6
6
 
7
+ const useStyles = makeStyles({
8
+ asterisk: {
9
+ color: "#f44336"
10
+ }
11
+ });
7
12
  const CreateAPIProductDialog = ({ open, onClose, onSuccess }) => {
13
+ const classes = useStyles();
8
14
  const config = useApi(configApiRef);
9
15
  const fetchApi = useApi(fetchApiRef);
10
16
  const backendUrl = config.getString("backend.baseUrl");
11
17
  const [name, setName] = useState("");
12
- const [namespace, setNamespace] = useState("");
13
18
  const [displayName, setDisplayName] = useState("");
14
19
  const [description, setDescription] = useState("");
15
20
  const [version, setVersion] = useState("v1");
16
21
  const [approvalMode, setApprovalMode] = useState("manual");
22
+ const [publishStatus, setPublishStatus] = useState("Published");
17
23
  const [tags, setTags] = useState([]);
18
24
  const [tagInput, setTagInput] = useState("");
19
- const [selectedPlanPolicy, setSelectedPlanPolicy] = useState("");
25
+ const [selectedHTTPRoute, setSelectedHTTPRoute] = useState("");
20
26
  const [contactEmail, setContactEmail] = useState("");
21
27
  const [contactTeam, setContactTeam] = useState("");
22
28
  const [docsURL, setDocsURL] = useState("");
23
29
  const [openAPISpec, setOpenAPISpec] = useState("");
24
30
  const [error, setError] = useState("");
25
31
  const [creating, setCreating] = useState(false);
26
- const { value: planPolicies, loading: planPoliciesLoading } = useAsync(async () => {
27
- const response = await fetchApi.fetch(`${backendUrl}/api/kuadrant/planpolicies`);
32
+ const { value: httpRoutes, loading: httpRoutesLoading } = useAsync(async () => {
33
+ const response = await fetchApi.fetch(`${backendUrl}/api/kuadrant/httproutes`);
28
34
  const data = await response.json();
29
35
  return (data.items || []).filter(
30
- (policy) => !namespace || policy.metadata.namespace === namespace
36
+ (route) => route.metadata.annotations?.["backstage.io/expose"] === "true"
31
37
  );
32
- }, [backendUrl, fetchApi, open, namespace]);
38
+ }, [backendUrl, fetchApi, open]);
33
39
  const handleAddTag = () => {
34
40
  if (tagInput.trim() && !tags.includes(tagInput.trim())) {
35
41
  setTags([...tags, tagInput.trim()]);
@@ -43,13 +49,11 @@ const CreateAPIProductDialog = ({ open, onClose, onSuccess }) => {
43
49
  setError("");
44
50
  setCreating(true);
45
51
  try {
46
- if (!selectedPlanPolicy) {
47
- throw new Error("Please select a PlanPolicy");
48
- }
49
- const [selectedPlanNamespace, selectedPlanName] = selectedPlanPolicy.split("/");
50
- if (selectedPlanNamespace !== namespace) {
51
- throw new Error(`PlanPolicy must be in the same namespace as the APIProduct (${namespace}). Selected PlanPolicy is in ${selectedPlanNamespace}.`);
52
+ if (!selectedHTTPRoute) {
53
+ throw new Error("Please select an HTTPRoute");
52
54
  }
55
+ const [selectedRouteNamespace, selectedRouteName] = selectedHTTPRoute.split("/");
56
+ const namespace = selectedRouteNamespace;
53
57
  const apiProduct = {
54
58
  apiVersion: "extensions.kuadrant.io/v1alpha1",
55
59
  kind: "APIProduct",
@@ -62,13 +66,14 @@ const CreateAPIProductDialog = ({ open, onClose, onSuccess }) => {
62
66
  description,
63
67
  version,
64
68
  approvalMode,
69
+ publishStatus,
65
70
  tags,
66
- planPolicyRef: {
67
- name: selectedPlanName,
68
- namespace: selectedPlanNamespace
71
+ targetRef: {
72
+ group: "gateway.networking.k8s.io",
73
+ kind: "HTTPRoute",
74
+ name: selectedRouteName,
75
+ namespace: selectedRouteNamespace
69
76
  },
70
- plans: [],
71
- // controller will inject plans from planPolicyRef
72
77
  ...contactEmail || contactTeam ? {
73
78
  contact: {
74
79
  ...contactEmail && { email: contactEmail },
@@ -104,14 +109,14 @@ const CreateAPIProductDialog = ({ open, onClose, onSuccess }) => {
104
109
  };
105
110
  const handleClose = () => {
106
111
  setName("");
107
- setNamespace("");
108
112
  setDisplayName("");
109
113
  setDescription("");
110
114
  setVersion("v1");
111
115
  setApprovalMode("manual");
116
+ setPublishStatus("Published");
112
117
  setTags([]);
113
118
  setTagInput("");
114
- setSelectedPlanPolicy("");
119
+ setSelectedHTTPRoute("");
115
120
  setContactEmail("");
116
121
  setContactTeam("");
117
122
  setDocsURL("");
@@ -129,18 +134,12 @@ const CreateAPIProductDialog = ({ open, onClose, onSuccess }) => {
129
134
  placeholder: "my-api",
130
135
  helperText: "Kubernetes resource name (lowercase, hyphens)",
131
136
  margin: "normal",
132
- required: true
133
- }
134
- )), /* @__PURE__ */ React.createElement(Grid, { item: true, xs: 6 }, /* @__PURE__ */ React.createElement(
135
- TextField,
136
- {
137
- fullWidth: true,
138
- label: "Namespace",
139
- value: namespace,
140
- onChange: (e) => setNamespace(e.target.value),
141
- placeholder: "default",
142
- margin: "normal",
143
- required: true
137
+ required: true,
138
+ InputLabelProps: {
139
+ classes: {
140
+ asterisk: classes.asterisk
141
+ }
142
+ }
144
143
  }
145
144
  )), /* @__PURE__ */ React.createElement(Grid, { item: true, xs: 6 }, /* @__PURE__ */ React.createElement(
146
145
  TextField,
@@ -151,7 +150,12 @@ const CreateAPIProductDialog = ({ open, onClose, onSuccess }) => {
151
150
  onChange: (e) => setDisplayName(e.target.value),
152
151
  placeholder: "My API",
153
152
  margin: "normal",
154
- required: true
153
+ required: true,
154
+ InputLabelProps: {
155
+ classes: {
156
+ asterisk: classes.asterisk
157
+ }
158
+ }
155
159
  }
156
160
  )), /* @__PURE__ */ React.createElement(Grid, { item: true, xs: 6 }, /* @__PURE__ */ React.createElement(
157
161
  TextField,
@@ -176,6 +180,19 @@ const CreateAPIProductDialog = ({ open, onClose, onSuccess }) => {
176
180
  },
177
181
  /* @__PURE__ */ React.createElement(MenuItem, { value: "manual" }, "Manual"),
178
182
  /* @__PURE__ */ React.createElement(MenuItem, { value: "automatic" }, "Automatic")
183
+ )), /* @__PURE__ */ React.createElement(Grid, { item: true, xs: 12 }, /* @__PURE__ */ React.createElement(
184
+ TextField,
185
+ {
186
+ fullWidth: true,
187
+ select: true,
188
+ label: "Publish Status",
189
+ value: publishStatus,
190
+ onChange: (e) => setPublishStatus(e.target.value),
191
+ margin: "normal",
192
+ helperText: "Draft: hidden from catalog. Published: visible to consumers."
193
+ },
194
+ /* @__PURE__ */ React.createElement(MenuItem, { value: "Draft" }, "Draft"),
195
+ /* @__PURE__ */ React.createElement(MenuItem, { value: "Published" }, "Published")
179
196
  )), /* @__PURE__ */ React.createElement(Grid, { item: true, xs: 12 }, /* @__PURE__ */ React.createElement(
180
197
  TextField,
181
198
  {
@@ -187,7 +204,12 @@ const CreateAPIProductDialog = ({ open, onClose, onSuccess }) => {
187
204
  margin: "normal",
188
205
  multiline: true,
189
206
  rows: 2,
190
- required: true
207
+ required: true,
208
+ InputLabelProps: {
209
+ classes: {
210
+ asterisk: classes.asterisk
211
+ }
212
+ }
191
213
  }
192
214
  )), /* @__PURE__ */ React.createElement(Grid, { item: true, xs: 12 }, /* @__PURE__ */ React.createElement(Typography, { variant: "subtitle2", gutterBottom: true, style: { marginTop: 16 } }, "Tags"), /* @__PURE__ */ React.createElement(Box, { display: "flex", flexWrap: "wrap", marginBottom: 1, style: { gap: 8 } }, tags.map((tag) => /* @__PURE__ */ React.createElement(
193
215
  Chip,
@@ -212,25 +234,30 @@ const CreateAPIProductDialog = ({ open, onClose, onSuccess }) => {
212
234
  {
213
235
  fullWidth: true,
214
236
  select: true,
215
- label: "PlanPolicy",
216
- value: selectedPlanPolicy,
217
- onChange: (e) => setSelectedPlanPolicy(e.target.value),
237
+ label: "HTTPRoute",
238
+ value: selectedHTTPRoute,
239
+ onChange: (e) => setSelectedHTTPRoute(e.target.value),
218
240
  margin: "normal",
219
241
  required: true,
220
- helperText: "Select an existing PlanPolicy resource",
221
- disabled: planPoliciesLoading
242
+ helperText: "Select an HTTPRoute (backstage.io/expose: true). APIProduct will be created in the same namespace.",
243
+ disabled: httpRoutesLoading,
244
+ InputLabelProps: {
245
+ classes: {
246
+ asterisk: classes.asterisk
247
+ }
248
+ }
222
249
  },
223
- planPoliciesLoading && /* @__PURE__ */ React.createElement(MenuItem, { value: "" }, "Loading..."),
224
- !planPoliciesLoading && planPolicies && planPolicies.length === 0 && /* @__PURE__ */ React.createElement(MenuItem, { value: "" }, "No PlanPolicies available"),
225
- !planPoliciesLoading && planPolicies && planPolicies.map((policy) => /* @__PURE__ */ React.createElement(
250
+ httpRoutesLoading && /* @__PURE__ */ React.createElement(MenuItem, { value: "" }, "Loading..."),
251
+ !httpRoutesLoading && httpRoutes && httpRoutes.length === 0 && /* @__PURE__ */ React.createElement(MenuItem, { value: "" }, "No HTTPRoutes available"),
252
+ !httpRoutesLoading && httpRoutes && httpRoutes.map((route) => /* @__PURE__ */ React.createElement(
226
253
  MenuItem,
227
254
  {
228
- key: `${policy.metadata.namespace}/${policy.metadata.name}`,
229
- value: `${policy.metadata.namespace}/${policy.metadata.name}`
255
+ key: `${route.metadata.namespace}/${route.metadata.name}`,
256
+ value: `${route.metadata.namespace}/${route.metadata.name}`
230
257
  },
231
- policy.metadata.name,
258
+ route.metadata.name,
232
259
  " (",
233
- policy.metadata.namespace,
260
+ route.metadata.namespace,
234
261
  ")"
235
262
  ))
236
263
  )), /* @__PURE__ */ React.createElement(Grid, { item: true, xs: 6 }, /* @__PURE__ */ React.createElement(
@@ -279,7 +306,7 @@ const CreateAPIProductDialog = ({ open, onClose, onSuccess }) => {
279
306
  onClick: handleCreate,
280
307
  color: "primary",
281
308
  variant: "contained",
282
- disabled: creating || !name || !namespace || !displayName || !description || !selectedPlanPolicy
309
+ disabled: creating || !name || !displayName || !description || !selectedHTTPRoute
283
310
  },
284
311
  creating ? "Creating..." : "Create"
285
312
  )));
@@ -1 +1 @@
1
- {"version":3,"file":"CreateAPIProductDialog.esm.js","sources":["../../../src/components/CreateAPIProductDialog/CreateAPIProductDialog.tsx"],"sourcesContent":["import React, { useState } from 'react';\nimport {\n Dialog,\n DialogTitle,\n DialogContent,\n DialogActions,\n Button,\n TextField,\n Box,\n Typography,\n Chip,\n Grid,\n MenuItem,\n} from '@material-ui/core';\nimport { useApi, configApiRef, fetchApiRef } from '@backstage/core-plugin-api';\nimport { Alert } from '@material-ui/lab';\nimport useAsync from 'react-use/lib/useAsync';\n\ninterface CreateAPIProductDialogProps {\n open: boolean;\n onClose: () => void;\n onSuccess: () => void;\n}\n\nexport const CreateAPIProductDialog = ({ open, onClose, onSuccess }: CreateAPIProductDialogProps) => {\n const config = useApi(configApiRef);\n const fetchApi = useApi(fetchApiRef);\n const backendUrl = config.getString('backend.baseUrl');\n\n const [name, setName] = useState('');\n const [namespace, setNamespace] = useState('');\n const [displayName, setDisplayName] = useState('');\n const [description, setDescription] = useState('');\n const [version, setVersion] = useState('v1');\n const [approvalMode, setApprovalMode] = useState<'automatic' | 'manual'>('manual');\n const [tags, setTags] = useState<string[]>([]);\n const [tagInput, setTagInput] = useState('');\n const [selectedPlanPolicy, setSelectedPlanPolicy] = useState('');\n const [contactEmail, setContactEmail] = useState('');\n const [contactTeam, setContactTeam] = useState('');\n const [docsURL, setDocsURL] = useState('');\n const [openAPISpec, setOpenAPISpec] = useState('');\n const [error, setError] = useState('');\n const [creating, setCreating] = useState(false);\n\n const { value: planPolicies, loading: planPoliciesLoading } = useAsync(async () => {\n const response = await fetchApi.fetch(`${backendUrl}/api/kuadrant/planpolicies`);\n const data = await response.json();\n // filter to only show planpolicies in the same namespace as the apiproduct\n return (data.items || []).filter((policy: any) =>\n !namespace || policy.metadata.namespace === namespace\n );\n }, [backendUrl, fetchApi, open, namespace]);\n\n const handleAddTag = () => {\n if (tagInput.trim() && !tags.includes(tagInput.trim())) {\n setTags([...tags, tagInput.trim()]);\n setTagInput('');\n }\n };\n\n const handleDeleteTag = (tagToDelete: string) => {\n setTags(tags.filter(tag => tag !== tagToDelete));\n };\n\n const handleCreate = async () => {\n setError('');\n setCreating(true);\n\n try {\n if (!selectedPlanPolicy) {\n throw new Error('Please select a PlanPolicy');\n }\n\n const [selectedPlanNamespace, selectedPlanName] = selectedPlanPolicy.split('/');\n\n // Validate namespace matching\n if (selectedPlanNamespace !== namespace) {\n throw new Error(`PlanPolicy must be in the same namespace as the APIProduct (${namespace}). Selected PlanPolicy is in ${selectedPlanNamespace}.`);\n }\n\n const apiProduct = {\n apiVersion: 'extensions.kuadrant.io/v1alpha1',\n kind: 'APIProduct',\n metadata: {\n name,\n namespace,\n },\n spec: {\n displayName,\n description,\n version,\n approvalMode,\n tags,\n planPolicyRef: {\n name: selectedPlanName,\n namespace: selectedPlanNamespace,\n },\n plans: [], // controller will inject plans from planPolicyRef\n ...(contactEmail || contactTeam ? {\n contact: {\n ...(contactEmail && { email: contactEmail }),\n ...(contactTeam && { team: contactTeam }),\n },\n } : {}),\n ...(docsURL || openAPISpec ? {\n documentation: {\n ...(docsURL && { docsURL }),\n ...(openAPISpec && { openAPISpec }),\n },\n } : {}),\n },\n };\n\n const response = await fetchApi.fetch(`${backendUrl}/api/kuadrant/apiproducts`, {\n method: 'POST',\n headers: {\n 'Content-Type': 'application/json',\n },\n body: JSON.stringify(apiProduct),\n });\n\n if (!response.ok) {\n const errorData = await response.json();\n throw new Error(errorData.error || 'failed to create apiproduct');\n }\n\n onSuccess();\n handleClose();\n } catch (err) {\n setError(err instanceof Error ? err.message : String(err));\n } finally {\n setCreating(false);\n }\n };\n\n const handleClose = () => {\n setName('');\n setNamespace('');\n setDisplayName('');\n setDescription('');\n setVersion('v1');\n setApprovalMode('manual');\n setTags([]);\n setTagInput('');\n setSelectedPlanPolicy('');\n setContactEmail('');\n setContactTeam('');\n setDocsURL('');\n setOpenAPISpec('');\n setError('');\n onClose();\n };\n\n return (\n <Dialog open={open} onClose={handleClose} maxWidth=\"md\" fullWidth>\n <DialogTitle>Create API Product</DialogTitle>\n <DialogContent>\n {error && (\n <Alert severity=\"error\" style={{ marginBottom: 16 }}>\n {error}\n </Alert>\n )}\n\n <Grid container spacing={2}>\n <Grid item xs={6}>\n <TextField\n fullWidth\n label=\"Name\"\n value={name}\n onChange={e => setName(e.target.value)}\n placeholder=\"my-api\"\n helperText=\"Kubernetes resource name (lowercase, hyphens)\"\n margin=\"normal\"\n required\n />\n </Grid>\n <Grid item xs={6}>\n <TextField\n fullWidth\n label=\"Namespace\"\n value={namespace}\n onChange={e => setNamespace(e.target.value)}\n placeholder=\"default\"\n margin=\"normal\"\n required\n />\n </Grid>\n <Grid item xs={6}>\n <TextField\n fullWidth\n label=\"Display Name\"\n value={displayName}\n onChange={e => setDisplayName(e.target.value)}\n placeholder=\"My API\"\n margin=\"normal\"\n required\n />\n </Grid>\n <Grid item xs={6}>\n <TextField\n fullWidth\n label=\"Version\"\n value={version}\n onChange={e => setVersion(e.target.value)}\n placeholder=\"v1\"\n margin=\"normal\"\n />\n </Grid>\n <Grid item xs={12}>\n <TextField\n fullWidth\n select\n label=\"Approval Mode\"\n value={approvalMode}\n onChange={e => setApprovalMode(e.target.value as 'automatic' | 'manual')}\n margin=\"normal\"\n helperText=\"Automatic: keys are created immediately. Manual: requires approval.\"\n >\n <MenuItem value=\"manual\">Manual</MenuItem>\n <MenuItem value=\"automatic\">Automatic</MenuItem>\n </TextField>\n </Grid>\n <Grid item xs={12}>\n <TextField\n fullWidth\n label=\"Description\"\n value={description}\n onChange={e => setDescription(e.target.value)}\n placeholder=\"API description\"\n margin=\"normal\"\n multiline\n rows={2}\n required\n />\n </Grid>\n\n <Grid item xs={12}>\n <Typography variant=\"subtitle2\" gutterBottom style={{ marginTop: 16 }}>\n Tags\n </Typography>\n <Box display=\"flex\" flexWrap=\"wrap\" marginBottom={1} style={{ gap: 8 }}>\n {tags.map(tag => (\n <Chip\n key={tag}\n label={tag}\n onDelete={() => handleDeleteTag(tag)}\n size=\"small\"\n />\n ))}\n </Box>\n <Box display=\"flex\" style={{ gap: 8 }}>\n <TextField\n fullWidth\n size=\"small\"\n value={tagInput}\n onChange={e => setTagInput(e.target.value)}\n onKeyPress={e => e.key === 'Enter' && handleAddTag()}\n placeholder=\"Add tag\"\n />\n <Button onClick={handleAddTag} variant=\"outlined\" size=\"small\">\n Add\n </Button>\n </Box>\n </Grid>\n\n <Grid item xs={12}>\n <TextField\n fullWidth\n select\n label=\"PlanPolicy\"\n value={selectedPlanPolicy}\n onChange={e => setSelectedPlanPolicy(e.target.value)}\n margin=\"normal\"\n required\n helperText=\"Select an existing PlanPolicy resource\"\n disabled={planPoliciesLoading}\n >\n {planPoliciesLoading && (\n <MenuItem value=\"\">Loading...</MenuItem>\n )}\n {!planPoliciesLoading && planPolicies && planPolicies.length === 0 && (\n <MenuItem value=\"\">No PlanPolicies available</MenuItem>\n )}\n {!planPoliciesLoading && planPolicies && planPolicies.map((policy: any) => (\n <MenuItem\n key={`${policy.metadata.namespace}/${policy.metadata.name}`}\n value={`${policy.metadata.namespace}/${policy.metadata.name}`}\n >\n {policy.metadata.name} ({policy.metadata.namespace})\n </MenuItem>\n ))}\n </TextField>\n </Grid>\n\n <Grid item xs={6}>\n <TextField\n fullWidth\n label=\"Contact Email\"\n value={contactEmail}\n onChange={e => setContactEmail(e.target.value)}\n placeholder=\"api-team@example.com\"\n margin=\"normal\"\n />\n </Grid>\n <Grid item xs={6}>\n <TextField\n fullWidth\n label=\"Contact Team\"\n value={contactTeam}\n onChange={e => setContactTeam(e.target.value)}\n placeholder=\"platform-team\"\n margin=\"normal\"\n />\n </Grid>\n <Grid item xs={6}>\n <TextField\n fullWidth\n label=\"Docs URL\"\n value={docsURL}\n onChange={e => setDocsURL(e.target.value)}\n placeholder=\"https://api.example.com/docs\"\n margin=\"normal\"\n />\n </Grid>\n <Grid item xs={6}>\n <TextField\n fullWidth\n label=\"OpenAPI Spec URL\"\n value={openAPISpec}\n onChange={e => setOpenAPISpec(e.target.value)}\n placeholder=\"https://api.example.com/openapi.json\"\n margin=\"normal\"\n />\n </Grid>\n </Grid>\n </DialogContent>\n <DialogActions>\n <Button onClick={handleClose}>Cancel</Button>\n <Button\n onClick={handleCreate}\n color=\"primary\"\n variant=\"contained\"\n disabled={creating || !name || !namespace || !displayName || !description || !selectedPlanPolicy}\n >\n {creating ? 'Creating...' : 'Create'}\n </Button>\n </DialogActions>\n </Dialog>\n );\n};\n"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"CreateAPIProductDialog.esm.js","sources":["../../../src/components/CreateAPIProductDialog/CreateAPIProductDialog.tsx"],"sourcesContent":["import React, { useState } from 'react';\nimport {\n Dialog,\n DialogTitle,\n DialogContent,\n DialogActions,\n Button,\n TextField,\n Box,\n Typography,\n Chip,\n Grid,\n MenuItem,\n makeStyles,\n} from '@material-ui/core';\nimport { useApi, configApiRef, fetchApiRef } from '@backstage/core-plugin-api';\nimport { Alert } from '@material-ui/lab';\nimport useAsync from 'react-use/lib/useAsync';\n\nconst useStyles = makeStyles({\n asterisk: {\n color: '#f44336',\n },\n});\n\ninterface CreateAPIProductDialogProps {\n open: boolean;\n onClose: () => void;\n onSuccess: () => void;\n}\n\nexport const CreateAPIProductDialog = ({ open, onClose, onSuccess }: CreateAPIProductDialogProps) => {\n const classes = useStyles();\n const config = useApi(configApiRef);\n const fetchApi = useApi(fetchApiRef);\n const backendUrl = config.getString('backend.baseUrl');\n\n const [name, setName] = useState('');\n const [displayName, setDisplayName] = useState('');\n const [description, setDescription] = useState('');\n const [version, setVersion] = useState('v1');\n const [approvalMode, setApprovalMode] = useState<'automatic' | 'manual'>('manual');\n const [publishStatus, setPublishStatus] = useState<'Draft' | 'Published'>('Published');\n const [tags, setTags] = useState<string[]>([]);\n const [tagInput, setTagInput] = useState('');\n const [selectedHTTPRoute, setSelectedHTTPRoute] = useState('');\n const [contactEmail, setContactEmail] = useState('');\n const [contactTeam, setContactTeam] = useState('');\n const [docsURL, setDocsURL] = useState('');\n const [openAPISpec, setOpenAPISpec] = useState('');\n const [error, setError] = useState('');\n const [creating, setCreating] = useState(false);\n\n const { value: httpRoutes, loading: httpRoutesLoading } = useAsync(async () => {\n const response = await fetchApi.fetch(`${backendUrl}/api/kuadrant/httproutes`);\n const data = await response.json();\n // filter to only show httproutes annotated for backstage exposure\n return (data.items || []).filter((route: any) =>\n route.metadata.annotations?.['backstage.io/expose'] === 'true'\n );\n }, [backendUrl, fetchApi, open]);\n\n const handleAddTag = () => {\n if (tagInput.trim() && !tags.includes(tagInput.trim())) {\n setTags([...tags, tagInput.trim()]);\n setTagInput('');\n }\n };\n\n const handleDeleteTag = (tagToDelete: string) => {\n setTags(tags.filter(tag => tag !== tagToDelete));\n };\n\n const handleCreate = async () => {\n setError('');\n setCreating(true);\n\n try {\n if (!selectedHTTPRoute) {\n throw new Error('Please select an HTTPRoute');\n }\n\n const [selectedRouteNamespace, selectedRouteName] = selectedHTTPRoute.split('/');\n\n // derive namespace from selected httproute\n const namespace = selectedRouteNamespace;\n\n const apiProduct = {\n apiVersion: 'extensions.kuadrant.io/v1alpha1',\n kind: 'APIProduct',\n metadata: {\n name,\n namespace,\n },\n spec: {\n displayName,\n description,\n version,\n approvalMode,\n publishStatus,\n tags,\n targetRef: {\n group: 'gateway.networking.k8s.io',\n kind: 'HTTPRoute',\n name: selectedRouteName,\n namespace: selectedRouteNamespace,\n },\n ...(contactEmail || contactTeam ? {\n contact: {\n ...(contactEmail && { email: contactEmail }),\n ...(contactTeam && { team: contactTeam }),\n },\n } : {}),\n ...(docsURL || openAPISpec ? {\n documentation: {\n ...(docsURL && { docsURL }),\n ...(openAPISpec && { openAPISpec }),\n },\n } : {}),\n },\n };\n\n const response = await fetchApi.fetch(`${backendUrl}/api/kuadrant/apiproducts`, {\n method: 'POST',\n headers: {\n 'Content-Type': 'application/json',\n },\n body: JSON.stringify(apiProduct),\n });\n\n if (!response.ok) {\n const errorData = await response.json();\n throw new Error(errorData.error || 'failed to create apiproduct');\n }\n\n onSuccess();\n handleClose();\n } catch (err) {\n setError(err instanceof Error ? err.message : String(err));\n } finally {\n setCreating(false);\n }\n };\n\n const handleClose = () => {\n setName('');\n setDisplayName('');\n setDescription('');\n setVersion('v1');\n setApprovalMode('manual');\n setPublishStatus('Published');\n setTags([]);\n setTagInput('');\n setSelectedHTTPRoute('');\n setContactEmail('');\n setContactTeam('');\n setDocsURL('');\n setOpenAPISpec('');\n setError('');\n onClose();\n };\n\n return (\n <Dialog open={open} onClose={handleClose} maxWidth=\"md\" fullWidth>\n <DialogTitle>Create API Product</DialogTitle>\n <DialogContent>\n {error && (\n <Alert severity=\"error\" style={{ marginBottom: 16 }}>\n {error}\n </Alert>\n )}\n\n <Grid container spacing={2}>\n <Grid item xs={6}>\n <TextField\n fullWidth\n label=\"Name\"\n value={name}\n onChange={e => setName(e.target.value)}\n placeholder=\"my-api\"\n helperText=\"Kubernetes resource name (lowercase, hyphens)\"\n margin=\"normal\"\n required\n InputLabelProps={{\n classes: {\n asterisk: classes.asterisk,\n },\n }}\n />\n </Grid>\n <Grid item xs={6}>\n <TextField\n fullWidth\n label=\"Display Name\"\n value={displayName}\n onChange={e => setDisplayName(e.target.value)}\n placeholder=\"My API\"\n margin=\"normal\"\n required\n InputLabelProps={{\n classes: {\n asterisk: classes.asterisk,\n },\n }}\n />\n </Grid>\n <Grid item xs={6}>\n <TextField\n fullWidth\n label=\"Version\"\n value={version}\n onChange={e => setVersion(e.target.value)}\n placeholder=\"v1\"\n margin=\"normal\"\n />\n </Grid>\n <Grid item xs={12}>\n <TextField\n fullWidth\n select\n label=\"Approval Mode\"\n value={approvalMode}\n onChange={e => setApprovalMode(e.target.value as 'automatic' | 'manual')}\n margin=\"normal\"\n helperText=\"Automatic: keys are created immediately. Manual: requires approval.\"\n >\n <MenuItem value=\"manual\">Manual</MenuItem>\n <MenuItem value=\"automatic\">Automatic</MenuItem>\n </TextField>\n </Grid>\n <Grid item xs={12}>\n <TextField\n fullWidth\n select\n label=\"Publish Status\"\n value={publishStatus}\n onChange={e => setPublishStatus(e.target.value as 'Draft' | 'Published')}\n margin=\"normal\"\n helperText=\"Draft: hidden from catalog. Published: visible to consumers.\"\n >\n <MenuItem value=\"Draft\">Draft</MenuItem>\n <MenuItem value=\"Published\">Published</MenuItem>\n </TextField>\n </Grid>\n <Grid item xs={12}>\n <TextField\n fullWidth\n label=\"Description\"\n value={description}\n onChange={e => setDescription(e.target.value)}\n placeholder=\"API description\"\n margin=\"normal\"\n multiline\n rows={2}\n required\n InputLabelProps={{\n classes: {\n asterisk: classes.asterisk,\n },\n }}\n />\n </Grid>\n\n <Grid item xs={12}>\n <Typography variant=\"subtitle2\" gutterBottom style={{ marginTop: 16 }}>\n Tags\n </Typography>\n <Box display=\"flex\" flexWrap=\"wrap\" marginBottom={1} style={{ gap: 8 }}>\n {tags.map(tag => (\n <Chip\n key={tag}\n label={tag}\n onDelete={() => handleDeleteTag(tag)}\n size=\"small\"\n />\n ))}\n </Box>\n <Box display=\"flex\" style={{ gap: 8 }}>\n <TextField\n fullWidth\n size=\"small\"\n value={tagInput}\n onChange={e => setTagInput(e.target.value)}\n onKeyPress={e => e.key === 'Enter' && handleAddTag()}\n placeholder=\"Add tag\"\n />\n <Button onClick={handleAddTag} variant=\"outlined\" size=\"small\">\n Add\n </Button>\n </Box>\n </Grid>\n\n <Grid item xs={12}>\n <TextField\n fullWidth\n select\n label=\"HTTPRoute\"\n value={selectedHTTPRoute}\n onChange={e => setSelectedHTTPRoute(e.target.value)}\n margin=\"normal\"\n required\n helperText=\"Select an HTTPRoute (backstage.io/expose: true). APIProduct will be created in the same namespace.\"\n disabled={httpRoutesLoading}\n InputLabelProps={{\n classes: {\n asterisk: classes.asterisk,\n },\n }}\n >\n {httpRoutesLoading && (\n <MenuItem value=\"\">Loading...</MenuItem>\n )}\n {!httpRoutesLoading && httpRoutes && httpRoutes.length === 0 && (\n <MenuItem value=\"\">No HTTPRoutes available</MenuItem>\n )}\n {!httpRoutesLoading && httpRoutes && httpRoutes.map((route: any) => (\n <MenuItem\n key={`${route.metadata.namespace}/${route.metadata.name}`}\n value={`${route.metadata.namespace}/${route.metadata.name}`}\n >\n {route.metadata.name} ({route.metadata.namespace})\n </MenuItem>\n ))}\n </TextField>\n </Grid>\n\n <Grid item xs={6}>\n <TextField\n fullWidth\n label=\"Contact Email\"\n value={contactEmail}\n onChange={e => setContactEmail(e.target.value)}\n placeholder=\"api-team@example.com\"\n margin=\"normal\"\n />\n </Grid>\n <Grid item xs={6}>\n <TextField\n fullWidth\n label=\"Contact Team\"\n value={contactTeam}\n onChange={e => setContactTeam(e.target.value)}\n placeholder=\"platform-team\"\n margin=\"normal\"\n />\n </Grid>\n <Grid item xs={6}>\n <TextField\n fullWidth\n label=\"Docs URL\"\n value={docsURL}\n onChange={e => setDocsURL(e.target.value)}\n placeholder=\"https://api.example.com/docs\"\n margin=\"normal\"\n />\n </Grid>\n <Grid item xs={6}>\n <TextField\n fullWidth\n label=\"OpenAPI Spec URL\"\n value={openAPISpec}\n onChange={e => setOpenAPISpec(e.target.value)}\n placeholder=\"https://api.example.com/openapi.json\"\n margin=\"normal\"\n />\n </Grid>\n </Grid>\n </DialogContent>\n <DialogActions>\n <Button onClick={handleClose}>Cancel</Button>\n <Button\n onClick={handleCreate}\n color=\"primary\"\n variant=\"contained\"\n disabled={creating || !name || !displayName || !description || !selectedHTTPRoute}\n >\n {creating ? 'Creating...' : 'Create'}\n </Button>\n </DialogActions>\n </Dialog>\n );\n};\n"],"names":[],"mappings":"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"}
@@ -0,0 +1,274 @@
1
+ import React, { useState, useEffect } from 'react';
2
+ import { makeStyles, Dialog, DialogTitle, DialogContent, Grid, TextField, MenuItem, Typography, Box, Chip, Button, DialogActions } from '@material-ui/core';
3
+ import { useApi, configApiRef, fetchApiRef } from '@backstage/core-plugin-api';
4
+ import { Alert } from '@material-ui/lab';
5
+ import { Progress } from '@backstage/core-components';
6
+
7
+ const useStyles = makeStyles({
8
+ asterisk: {
9
+ color: "#f44336"
10
+ }
11
+ });
12
+ const EditAPIProductDialog = ({ open, onClose, onSuccess, namespace, name }) => {
13
+ const classes = useStyles();
14
+ const config = useApi(configApiRef);
15
+ const fetchApi = useApi(fetchApiRef);
16
+ const backendUrl = config.getString("backend.baseUrl");
17
+ const [loading, setLoading] = useState(false);
18
+ const [displayName, setDisplayName] = useState("");
19
+ const [description, setDescription] = useState("");
20
+ const [version, setVersion] = useState("v1");
21
+ const [publishStatus, setPublishStatus] = useState("Draft");
22
+ const [approvalMode, setApprovalMode] = useState("manual");
23
+ const [tags, setTags] = useState([]);
24
+ const [targetRef, setTargetRef] = useState(null);
25
+ const [tagInput, setTagInput] = useState("");
26
+ const [contactEmail, setContactEmail] = useState("");
27
+ const [contactTeam, setContactTeam] = useState("");
28
+ const [docsURL, setDocsURL] = useState("");
29
+ const [openAPISpec, setOpenAPISpec] = useState("");
30
+ const [error, setError] = useState("");
31
+ const [saving, setSaving] = useState(false);
32
+ useEffect(() => {
33
+ if (open && namespace && name) {
34
+ setLoading(true);
35
+ setError("");
36
+ fetchApi.fetch(`${backendUrl}/api/kuadrant/apiproducts/${namespace}/${name}`).then((res) => res.json()).then((data) => {
37
+ setDisplayName(data.spec.displayName || "");
38
+ setDescription(data.spec.description || "");
39
+ setVersion(data.spec.version || "v1");
40
+ setPublishStatus(data.spec.publishStatus || "Draft");
41
+ setApprovalMode(data.spec.approvalMode || "manual");
42
+ setTags(data.spec.tags || []);
43
+ setTargetRef(data.spec.targetRef || null);
44
+ setContactEmail(data.spec.contact?.email || "");
45
+ setContactTeam(data.spec.contact?.team || "");
46
+ setDocsURL(data.spec.documentation?.docsURL || "");
47
+ setOpenAPISpec(data.spec.documentation?.openAPISpec || "");
48
+ setLoading(false);
49
+ }).catch((err) => {
50
+ setError(err.message || "Failed to load API Product");
51
+ setLoading(false);
52
+ });
53
+ }
54
+ }, [open, namespace, name, backendUrl, fetchApi]);
55
+ const handleAddTag = () => {
56
+ if (tagInput.trim() && !tags.includes(tagInput.trim())) {
57
+ setTags([...tags, tagInput.trim()]);
58
+ setTagInput("");
59
+ }
60
+ };
61
+ const handleDeleteTag = (tagToDelete) => {
62
+ setTags(tags.filter((tag) => tag !== tagToDelete));
63
+ };
64
+ const handleSave = async () => {
65
+ setError("");
66
+ setSaving(true);
67
+ try {
68
+ const patch = {
69
+ spec: {
70
+ displayName,
71
+ description,
72
+ version,
73
+ publishStatus,
74
+ approvalMode,
75
+ tags,
76
+ targetRef,
77
+ ...contactEmail || contactTeam ? {
78
+ contact: {
79
+ ...contactEmail && { email: contactEmail },
80
+ ...contactTeam && { team: contactTeam }
81
+ }
82
+ } : {},
83
+ ...docsURL || openAPISpec ? {
84
+ documentation: {
85
+ ...docsURL && { docsURL },
86
+ ...openAPISpec && { openAPISpec }
87
+ }
88
+ } : {}
89
+ }
90
+ };
91
+ const response = await fetchApi.fetch(
92
+ `${backendUrl}/api/kuadrant/apiproducts/${namespace}/${name}`,
93
+ {
94
+ method: "PATCH",
95
+ headers: {
96
+ "Content-Type": "application/json"
97
+ },
98
+ body: JSON.stringify(patch)
99
+ }
100
+ );
101
+ if (!response.ok) {
102
+ const errorData = await response.json();
103
+ throw new Error(errorData.error || "failed to update apiproduct");
104
+ }
105
+ onSuccess();
106
+ onClose();
107
+ } catch (err) {
108
+ setError(err instanceof Error ? err.message : String(err));
109
+ } finally {
110
+ setSaving(false);
111
+ }
112
+ };
113
+ return /* @__PURE__ */ React.createElement(Dialog, { open, onClose, maxWidth: "md", fullWidth: true }, /* @__PURE__ */ React.createElement(DialogTitle, null, "Edit API Product"), /* @__PURE__ */ React.createElement(DialogContent, null, error && /* @__PURE__ */ React.createElement(Alert, { severity: "error", style: { marginBottom: 16 } }, error), loading ? /* @__PURE__ */ React.createElement(Progress, null) : /* @__PURE__ */ React.createElement(Grid, { container: true, spacing: 2 }, /* @__PURE__ */ React.createElement(Grid, { item: true, xs: 6 }, /* @__PURE__ */ React.createElement(
114
+ TextField,
115
+ {
116
+ fullWidth: true,
117
+ label: "Name",
118
+ value: name,
119
+ disabled: true,
120
+ helperText: "Kubernetes resource name (immutable)",
121
+ margin: "normal"
122
+ }
123
+ )), /* @__PURE__ */ React.createElement(Grid, { item: true, xs: 6 }, /* @__PURE__ */ React.createElement(
124
+ TextField,
125
+ {
126
+ fullWidth: true,
127
+ label: "Namespace",
128
+ value: namespace,
129
+ disabled: true,
130
+ helperText: "Derived from HTTPRoute (immutable)",
131
+ margin: "normal"
132
+ }
133
+ )), /* @__PURE__ */ React.createElement(Grid, { item: true, xs: 6 }, /* @__PURE__ */ React.createElement(
134
+ TextField,
135
+ {
136
+ fullWidth: true,
137
+ label: "Display Name",
138
+ value: displayName,
139
+ onChange: (e) => setDisplayName(e.target.value),
140
+ placeholder: "My API",
141
+ margin: "normal",
142
+ required: true,
143
+ InputLabelProps: {
144
+ classes: {
145
+ asterisk: classes.asterisk
146
+ }
147
+ }
148
+ }
149
+ )), /* @__PURE__ */ React.createElement(Grid, { item: true, xs: 6 }, /* @__PURE__ */ React.createElement(
150
+ TextField,
151
+ {
152
+ fullWidth: true,
153
+ label: "Version",
154
+ value: version,
155
+ onChange: (e) => setVersion(e.target.value),
156
+ placeholder: "v1",
157
+ margin: "normal"
158
+ }
159
+ )), /* @__PURE__ */ React.createElement(Grid, { item: true, xs: 6 }, /* @__PURE__ */ React.createElement(
160
+ TextField,
161
+ {
162
+ fullWidth: true,
163
+ select: true,
164
+ label: "Publish Status",
165
+ value: publishStatus,
166
+ onChange: (e) => setPublishStatus(e.target.value),
167
+ margin: "normal",
168
+ helperText: "Draft: Hidden from catalog. Published: Visible in catalog."
169
+ },
170
+ /* @__PURE__ */ React.createElement(MenuItem, { value: "Draft" }, "Draft (Hidden)"),
171
+ /* @__PURE__ */ React.createElement(MenuItem, { value: "Published" }, "Published (Visible)")
172
+ )), /* @__PURE__ */ React.createElement(Grid, { item: true, xs: 6 }, /* @__PURE__ */ React.createElement(
173
+ TextField,
174
+ {
175
+ fullWidth: true,
176
+ select: true,
177
+ label: "Approval Mode",
178
+ value: approvalMode,
179
+ onChange: (e) => setApprovalMode(e.target.value),
180
+ margin: "normal",
181
+ helperText: "Automatic: keys created immediately. Manual: requires approval."
182
+ },
183
+ /* @__PURE__ */ React.createElement(MenuItem, { value: "manual" }, "Manual"),
184
+ /* @__PURE__ */ React.createElement(MenuItem, { value: "automatic" }, "Automatic")
185
+ )), /* @__PURE__ */ React.createElement(Grid, { item: true, xs: 12 }, /* @__PURE__ */ React.createElement(
186
+ TextField,
187
+ {
188
+ fullWidth: true,
189
+ label: "Description",
190
+ value: description,
191
+ onChange: (e) => setDescription(e.target.value),
192
+ placeholder: "API description",
193
+ margin: "normal",
194
+ multiline: true,
195
+ rows: 2,
196
+ required: true,
197
+ InputLabelProps: {
198
+ classes: {
199
+ asterisk: classes.asterisk
200
+ }
201
+ }
202
+ }
203
+ )), /* @__PURE__ */ React.createElement(Grid, { item: true, xs: 12 }, /* @__PURE__ */ React.createElement(Typography, { variant: "subtitle2", gutterBottom: true, style: { marginTop: 16 } }, "Tags"), /* @__PURE__ */ React.createElement(Box, { display: "flex", flexWrap: "wrap", marginBottom: 1, style: { gap: 8 } }, tags.map((tag) => /* @__PURE__ */ React.createElement(
204
+ Chip,
205
+ {
206
+ key: tag,
207
+ label: tag,
208
+ onDelete: () => handleDeleteTag(tag),
209
+ size: "small"
210
+ }
211
+ ))), /* @__PURE__ */ React.createElement(Box, { display: "flex", style: { gap: 8 } }, /* @__PURE__ */ React.createElement(
212
+ TextField,
213
+ {
214
+ fullWidth: true,
215
+ size: "small",
216
+ value: tagInput,
217
+ onChange: (e) => setTagInput(e.target.value),
218
+ onKeyPress: (e) => e.key === "Enter" && handleAddTag(),
219
+ placeholder: "Add tag"
220
+ }
221
+ ), /* @__PURE__ */ React.createElement(Button, { onClick: handleAddTag, variant: "outlined", size: "small" }, "Add"))), /* @__PURE__ */ React.createElement(Grid, { item: true, xs: 6 }, /* @__PURE__ */ React.createElement(
222
+ TextField,
223
+ {
224
+ fullWidth: true,
225
+ label: "Contact Email",
226
+ value: contactEmail,
227
+ onChange: (e) => setContactEmail(e.target.value),
228
+ placeholder: "api-team@example.com",
229
+ margin: "normal"
230
+ }
231
+ )), /* @__PURE__ */ React.createElement(Grid, { item: true, xs: 6 }, /* @__PURE__ */ React.createElement(
232
+ TextField,
233
+ {
234
+ fullWidth: true,
235
+ label: "Contact Team",
236
+ value: contactTeam,
237
+ onChange: (e) => setContactTeam(e.target.value),
238
+ placeholder: "platform-team",
239
+ margin: "normal"
240
+ }
241
+ )), /* @__PURE__ */ React.createElement(Grid, { item: true, xs: 6 }, /* @__PURE__ */ React.createElement(
242
+ TextField,
243
+ {
244
+ fullWidth: true,
245
+ label: "Docs URL",
246
+ value: docsURL,
247
+ onChange: (e) => setDocsURL(e.target.value),
248
+ placeholder: "https://api.example.com/docs",
249
+ margin: "normal"
250
+ }
251
+ )), /* @__PURE__ */ React.createElement(Grid, { item: true, xs: 6 }, /* @__PURE__ */ React.createElement(
252
+ TextField,
253
+ {
254
+ fullWidth: true,
255
+ label: "OpenAPI Spec URL",
256
+ value: openAPISpec,
257
+ onChange: (e) => setOpenAPISpec(e.target.value),
258
+ placeholder: "https://api.example.com/openapi.json",
259
+ margin: "normal"
260
+ }
261
+ )))), /* @__PURE__ */ React.createElement(DialogActions, null, /* @__PURE__ */ React.createElement(Button, { onClick: onClose }, "Cancel"), /* @__PURE__ */ React.createElement(
262
+ Button,
263
+ {
264
+ onClick: handleSave,
265
+ color: "primary",
266
+ variant: "contained",
267
+ disabled: saving || loading || !displayName || !description
268
+ },
269
+ saving ? "Saving..." : "Save"
270
+ )));
271
+ };
272
+
273
+ export { EditAPIProductDialog };
274
+ //# sourceMappingURL=EditAPIProductDialog.esm.js.map