@cobaltcore-dev/aurora 0.2.0 → 0.2.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 (172) hide show
  1. package/dist/client/{ContentHeader-H8KGY3Wd.mjs → ContentHeader-DtBiIwRY.mjs} +15 -15
  2. package/dist/client/{ContentHeader-H8KGY3Wd.mjs.map → ContentHeader-DtBiIwRY.mjs.map} +1 -1
  3. package/dist/client/{DeleteFlavorModal-B98oiHWx.mjs → DeleteFlavorModal-rmuYIafD.mjs} +142 -142
  4. package/dist/client/{DeleteFlavorModal-B98oiHWx.mjs.map → DeleteFlavorModal-rmuYIafD.mjs.map} +1 -1
  5. package/dist/client/{EditSecurityGroupModal-wQVNIVg1.mjs → EditSecurityGroupModal-B7Sz9puM.mjs} +15 -15
  6. package/dist/client/{EditSecurityGroupModal-wQVNIVg1.mjs.map → EditSecurityGroupModal-B7Sz9puM.mjs.map} +1 -1
  7. package/dist/client/{FloatingIpActionModals-qu1NMI5a.mjs → FloatingIpActionModals-CfRJiZqD.mjs} +59 -59
  8. package/dist/client/{FloatingIpActionModals-qu1NMI5a.mjs.map → FloatingIpActionModals-CfRJiZqD.mjs.map} +1 -1
  9. package/dist/client/{ImageToastNotifications-wsQDNEh7.mjs → ImageToastNotifications-Cw30RXsw.mjs} +374 -374
  10. package/dist/client/{ImageToastNotifications-wsQDNEh7.mjs.map → ImageToastNotifications-Cw30RXsw.mjs.map} +1 -1
  11. package/dist/client/{ListToolbar-CHlkZrpl.mjs → ListToolbar-DuazvsAu.mjs} +61 -61
  12. package/dist/client/{ListToolbar-CHlkZrpl.mjs.map → ListToolbar-DuazvsAu.mjs.map} +1 -1
  13. package/dist/client/{RouteError-BwgDIwJE.mjs → RouteError-Cyto623-.mjs} +2 -2
  14. package/dist/client/{RouteError-BwgDIwJE.mjs.map → RouteError-Cyto623-.mjs.map} +1 -1
  15. package/dist/client/{_auth-CsliQdkJ.mjs → _auth-CJj1Cnbm.mjs} +1 -1
  16. package/dist/client/{_auth-CsliQdkJ.mjs.map → _auth-CJj1Cnbm.mjs.map} +1 -1
  17. package/dist/client/_flavorId-B-1fYadl.mjs +188 -0
  18. package/dist/client/_flavorId-B-1fYadl.mjs.map +1 -0
  19. package/dist/client/{_flavorId-D_A53VYa.mjs → _flavorId-BYfIHIV_.mjs} +20 -10
  20. package/dist/client/_flavorId-BYfIHIV_.mjs.map +1 -0
  21. package/dist/client/_floatingIpId-FQ5P2qMV.mjs +228 -0
  22. package/dist/client/_floatingIpId-FQ5P2qMV.mjs.map +1 -0
  23. package/dist/client/{_floatingIpId-BGgftRBQ.mjs → _floatingIpId-IrnN-ozB.mjs} +13 -3
  24. package/dist/client/_floatingIpId-IrnN-ozB.mjs.map +1 -0
  25. package/dist/client/_imageId-Tx_9bqEc.mjs +527 -0
  26. package/dist/client/_imageId-Tx_9bqEc.mjs.map +1 -0
  27. package/dist/client/{_pcaId-DBgz5V_9.mjs → _pcaId-DWHfvMhT.mjs} +16 -3
  28. package/dist/client/_pcaId-DWHfvMhT.mjs.map +1 -0
  29. package/dist/client/{_pcaId-C7Lrv1H_.mjs → _pcaId-r2BTjN9y.mjs} +81 -81
  30. package/dist/client/_pcaId-r2BTjN9y.mjs.map +1 -0
  31. package/dist/client/{_projectId-INhedXor.mjs → _projectId-B1VjDd0Z.mjs} +3 -3
  32. package/dist/client/{_projectId-INhedXor.mjs.map → _projectId-B1VjDd0Z.mjs.map} +1 -1
  33. package/dist/client/_projectId-Bs4W9hos.mjs +283 -0
  34. package/dist/client/_projectId-Bs4W9hos.mjs.map +1 -0
  35. package/dist/client/{_projectId-C-E4NNgo.mjs → _projectId-PSpuCKO7.mjs} +9 -9
  36. package/dist/client/{_projectId-C-E4NNgo.mjs.map → _projectId-PSpuCKO7.mjs.map} +1 -1
  37. package/dist/client/{_projectId-B9fln31N.mjs → _projectId-Pxp-RXK4.mjs} +2 -2
  38. package/dist/client/{_projectId-B9fln31N.mjs.map → _projectId-Pxp-RXK4.mjs.map} +1 -1
  39. package/dist/client/{_securityGroupId-DQoRQ-yA.mjs → _securityGroupId-Dqi6ddw4.mjs} +499 -499
  40. package/dist/client/_securityGroupId-Dqi6ddw4.mjs.map +1 -0
  41. package/dist/client/{_securityGroupId-ihjy8Lcd.mjs → _securityGroupId-VV2lUcGQ.mjs} +16 -3
  42. package/dist/client/_securityGroupId-VV2lUcGQ.mjs.map +1 -0
  43. package/dist/client/{about-oT6ccz8T.mjs → about-B2AzqxFI.mjs} +8 -8
  44. package/dist/client/{about-oT6ccz8T.mjs.map → about-B2AzqxFI.mjs.map} +1 -1
  45. package/dist/client/{aurora-D_NPTbo-.mjs → aurora-CRcxVUCo.mjs} +1 -1
  46. package/dist/client/{aurora-D_NPTbo-.mjs.map → aurora-CRcxVUCo.mjs.map} +1 -1
  47. package/dist/client/{build-eu9eg0zF.mjs → build-Cf7iWbpH.mjs} +2727 -2646
  48. package/dist/client/build-Cf7iWbpH.mjs.map +1 -0
  49. package/dist/client/{buildFilterParams-BDOIRDeD.mjs → buildFilterParams-ngVK3ybs.mjs} +1 -1
  50. package/dist/client/{buildFilterParams-BDOIRDeD.mjs.map → buildFilterParams-ngVK3ybs.mjs.map} +1 -1
  51. package/dist/client/{constants-ByHCdNsI.mjs → constants-CCgR6fKI.mjs} +15 -15
  52. package/dist/client/{constants-ByHCdNsI.mjs.map → constants-CCgR6fKI.mjs.map} +1 -1
  53. package/dist/client/{containers-rn_ntCJu.mjs → containers-BWERuY0O.mjs} +978 -976
  54. package/dist/client/containers-BWERuY0O.mjs.map +1 -0
  55. package/dist/client/{containers-Dx7TYruP.mjs → containers-Cs5vOeR2.mjs} +1 -1
  56. package/dist/client/{containers-Dx7TYruP.mjs.map → containers-Cs5vOeR2.mjs.map} +1 -1
  57. package/dist/client/{containers-B_ozmVlx.mjs → containers-DovytjVP.mjs} +6 -3
  58. package/dist/client/containers-DovytjVP.mjs.map +1 -0
  59. package/dist/client/{flavors-DRZb9LJP.mjs → flavors-BXPYAFyQ.mjs} +1 -1
  60. package/dist/client/flavors-BXPYAFyQ.mjs.map +1 -0
  61. package/dist/client/{flavors-CT4auvLO.mjs → flavors-Bovz-I2U.mjs} +137 -137
  62. package/dist/client/flavors-Bovz-I2U.mjs.map +1 -0
  63. package/dist/client/flavors-CUiALHcB.mjs +16 -0
  64. package/dist/client/flavors-CUiALHcB.mjs.map +1 -0
  65. package/dist/client/floatingips-BrjDiY2t.mjs +435 -0
  66. package/dist/client/floatingips-BrjDiY2t.mjs.map +1 -0
  67. package/dist/client/{formatBytes-GYujK0dP.mjs → formatBytes-D6oa0wU9.mjs} +1 -1
  68. package/dist/client/{formatBytes-GYujK0dP.mjs.map → formatBytes-D6oa0wU9.mjs.map} +1 -1
  69. package/dist/client/{hooks-s-I8vWww.mjs → hooks-D0krAKvo.mjs} +1 -1
  70. package/dist/client/images-BZP3pBqj.mjs +16 -0
  71. package/dist/client/images-BZP3pBqj.mjs.map +1 -0
  72. package/dist/client/{images-DRTfx8k2.mjs → images-DM9I8G0p.mjs} +1 -1
  73. package/dist/client/images-DM9I8G0p.mjs.map +1 -0
  74. package/dist/client/{images-BTqRflJv2.mjs → images-DaaCUXMI.mjs} +413 -410
  75. package/dist/client/images-DaaCUXMI.mjs.map +1 -0
  76. package/dist/client/index.js +494 -414
  77. package/dist/client/index.js.map +1 -1
  78. package/dist/client/{md-CI9FmfYv.mjs → md-BivyCkGC.mjs} +1 -1
  79. package/dist/client/{md-CI9FmfYv.mjs.map → md-BivyCkGC.mjs.map} +1 -1
  80. package/dist/client/{network-DFVVVNS5.mjs → network-SCVadZsv.mjs} +1 -1
  81. package/dist/client/{network-DFVVVNS5.mjs.map → network-SCVadZsv.mjs.map} +1 -1
  82. package/dist/client/{objects-DkDKVSmQ.mjs → objects-B4yrYf_a.mjs} +1 -1
  83. package/dist/client/objects-B4yrYf_a.mjs.map +1 -0
  84. package/dist/client/objects-Cw4Vu01M.mjs +4760 -0
  85. package/dist/client/objects-Cw4Vu01M.mjs.map +1 -0
  86. package/dist/client/{objects-r_Vl31oj.mjs → objects-D4zBka5e.mjs} +9 -3
  87. package/dist/client/objects-D4zBka5e.mjs.map +1 -0
  88. package/dist/client/overview-2J54-loz.mjs +15 -0
  89. package/dist/client/overview-2J54-loz.mjs.map +1 -0
  90. package/dist/client/{overview-B7pXx6bt.mjs → overview-BnmukbFh.mjs} +5 -5
  91. package/dist/client/overview-BnmukbFh.mjs.map +1 -0
  92. package/dist/client/overview-BtIXpYBo.mjs +15 -0
  93. package/dist/client/overview-BtIXpYBo.mjs.map +1 -0
  94. package/dist/client/overview-D0AAvsmL.mjs +15 -0
  95. package/dist/client/overview-D0AAvsmL.mjs.map +1 -0
  96. package/dist/client/pca-BqZycwCu.mjs +16 -0
  97. package/dist/client/pca-BqZycwCu.mjs.map +1 -0
  98. package/dist/client/pca-V2aaOxZA.mjs +167 -0
  99. package/dist/client/pca-V2aaOxZA.mjs.map +1 -0
  100. package/dist/client/{projects-_Dfn6eQT.mjs → projects-0feOw_b6.mjs} +2 -2
  101. package/dist/client/{projects-_Dfn6eQT.mjs.map → projects-0feOw_b6.mjs.map} +1 -1
  102. package/dist/client/{projects-MbS1USl2.mjs → projects-BsN4bvU2.mjs} +1 -1
  103. package/dist/client/{projects-MbS1USl2.mjs.map → projects-BsN4bvU2.mjs.map} +1 -1
  104. package/dist/client/{projects-BuN69cxO.mjs → projects-C1IYOvFQ.mjs} +29 -29
  105. package/dist/client/{projects-BuN69cxO.mjs.map → projects-C1IYOvFQ.mjs.map} +1 -1
  106. package/dist/client/{projects-D1pP0XdA.mjs → projects-jyIHL6DE.mjs} +2 -2
  107. package/dist/client/{projects-D1pP0XdA.mjs.map → projects-jyIHL6DE.mjs.map} +1 -1
  108. package/dist/client/securitygroups-B4MkSBtI.mjs +441 -0
  109. package/dist/client/securitygroups-B4MkSBtI.mjs.map +1 -0
  110. package/dist/client/{useListWithFiltering-mMX_EfyI.mjs → useListWithFiltering-CEDh1LO-.mjs} +1 -1
  111. package/dist/client/{useListWithFiltering-mMX_EfyI.mjs.map → useListWithFiltering-CEDh1LO-.mjs.map} +1 -1
  112. package/dist/client/{useModal-Dg4CBeqL.mjs → useModal-DxxlilRm.mjs} +1 -1
  113. package/dist/client/{useModal-Dg4CBeqL.mjs.map → useModal-DxxlilRm.mjs.map} +1 -1
  114. package/dist/client/{useProjectId-BWaeJZOy.mjs → useProjectId-CgOTejka.mjs} +1 -1
  115. package/dist/client/{useProjectId-BWaeJZOy.mjs.map → useProjectId-CgOTejka.mjs.map} +1 -1
  116. package/package.json +8 -7
  117. package/permission_policies/compute.yaml +975 -0
  118. package/permission_policies/image.yaml +71 -0
  119. package/dist/client/_flavorId-D_A53VYa.mjs.map +0 -1
  120. package/dist/client/_flavorId-DbhYLFxY.mjs +0 -190
  121. package/dist/client/_flavorId-DbhYLFxY.mjs.map +0 -1
  122. package/dist/client/_floatingIpId-BGgftRBQ.mjs.map +0 -1
  123. package/dist/client/_floatingIpId-D5myuLFz.mjs +0 -228
  124. package/dist/client/_floatingIpId-D5myuLFz.mjs.map +0 -1
  125. package/dist/client/_imageId-BoHX155h.mjs +0 -27
  126. package/dist/client/_imageId-BoHX155h.mjs.map +0 -1
  127. package/dist/client/_imageId-CTa0c3Av.mjs +0 -530
  128. package/dist/client/_imageId-CTa0c3Av.mjs.map +0 -1
  129. package/dist/client/_pcaId-C7Lrv1H_.mjs.map +0 -1
  130. package/dist/client/_pcaId-DBgz5V_9.mjs.map +0 -1
  131. package/dist/client/_projectId-Be1Erj68.mjs +0 -300
  132. package/dist/client/_projectId-Be1Erj68.mjs.map +0 -1
  133. package/dist/client/_securityGroupId-DQoRQ-yA.mjs.map +0 -1
  134. package/dist/client/_securityGroupId-ihjy8Lcd.mjs.map +0 -1
  135. package/dist/client/build-eu9eg0zF.mjs.map +0 -1
  136. package/dist/client/containers-B_ozmVlx.mjs.map +0 -1
  137. package/dist/client/containers-rn_ntCJu.mjs.map +0 -1
  138. package/dist/client/flavors-CT4auvLO.mjs.map +0 -1
  139. package/dist/client/flavors-DRZb9LJP.mjs.map +0 -1
  140. package/dist/client/flavors-DtgMd0Ii.mjs +0 -12
  141. package/dist/client/flavors-DtgMd0Ii.mjs.map +0 -1
  142. package/dist/client/floatingips-DG5cFJSZ.mjs +0 -12
  143. package/dist/client/floatingips-DG5cFJSZ.mjs.map +0 -1
  144. package/dist/client/floatingips-iCMR0ZiL.mjs +0 -436
  145. package/dist/client/floatingips-iCMR0ZiL.mjs.map +0 -1
  146. package/dist/client/images-BTqRflJv2.mjs.map +0 -1
  147. package/dist/client/images-DRTfx8k2.mjs.map +0 -1
  148. package/dist/client/images-xBfsjxkX.mjs +0 -12
  149. package/dist/client/images-xBfsjxkX.mjs.map +0 -1
  150. package/dist/client/objects-CKk6cST_.mjs +0 -4762
  151. package/dist/client/objects-CKk6cST_.mjs.map +0 -1
  152. package/dist/client/objects-DkDKVSmQ.mjs.map +0 -1
  153. package/dist/client/objects-r_Vl31oj.mjs.map +0 -1
  154. package/dist/client/overview-B7pXx6bt.mjs.map +0 -1
  155. package/dist/client/overview-CKGLIu6W.mjs +0 -12
  156. package/dist/client/overview-CKGLIu6W.mjs.map +0 -1
  157. package/dist/client/overview-Ca8r3SAz.mjs +0 -16
  158. package/dist/client/overview-Ca8r3SAz.mjs.map +0 -1
  159. package/dist/client/overview-DkPM0Od5.mjs +0 -12
  160. package/dist/client/overview-DkPM0Od5.mjs.map +0 -1
  161. package/dist/client/overview-Dxm7Ef3X.mjs +0 -12
  162. package/dist/client/overview-Dxm7Ef3X.mjs.map +0 -1
  163. package/dist/client/overview-ag4Envez.mjs +0 -16
  164. package/dist/client/overview-ag4Envez.mjs.map +0 -1
  165. package/dist/client/pca-BGv7Mprl.mjs +0 -12
  166. package/dist/client/pca-BGv7Mprl.mjs.map +0 -1
  167. package/dist/client/pca-DpULpMu5.mjs +0 -167
  168. package/dist/client/pca-DpULpMu5.mjs.map +0 -1
  169. package/dist/client/securitygroups-DURjFfYK.mjs +0 -12
  170. package/dist/client/securitygroups-DURjFfYK.mjs.map +0 -1
  171. package/dist/client/securitygroups-KC2qvmH8.mjs +0 -442
  172. package/dist/client/securitygroups-KC2qvmH8.mjs.map +0 -1
@@ -0,0 +1 @@
1
+ {"version":3,"file":"_pcaId-DWHfvMhT.mjs","names":["createFileRoute","redirect","getServiceIndex","Route","staticData","section","service","isDetail","sectionCrumb","labelKey","crumb","to","RouteInfo","loader","context","params","pca","trpcClient","services","getById","query","project_id","projectId","certificate_authority_id","pcaId","pcaTitle","configuration","subject","common_name","id","head","loaderData","meta","title","component","lazyRouteComponent","$$splitComponentImporter","beforeLoad","availableServices","auth","getAvailableServices","serviceIndex","pcaServices"],"sources":["../../src/client/routes/_auth/projects/$projectId/services/pca/$pcaId/index.tsx"],"sourcesContent":["import { createFileRoute, redirect, useNavigate } from \"@tanstack/react-router\"\nimport { Trans } from \"@lingui/react/macro\"\nimport { Button, Spinner, Stack } from \"@cloudoperators/juno-ui-components/index\"\nimport { getServiceIndex } from \"@/server/Authentication/helpers\"\nimport type { RouteInfo } from \"@/client/routes/routeInfo\"\nimport { trpcReact } from \"@/client/trpcClient\"\nimport { useProjectId } from \"@/client/hooks/useProjectId\"\nimport { PcaDetailsView } from \"./-components/PcaDetailsView\"\n\nexport const Route = createFileRoute(\"/_auth/projects/$projectId/services/pca/$pcaId/\")({\n staticData: {\n section: \"services\",\n service: \"pca\",\n isDetail: true,\n sectionCrumb: { labelKey: \"Services\" },\n crumb: { labelKey: \"PCA (Clavis)\", to: \"/projects/$projectId/services/pca\" },\n } satisfies RouteInfo,\n loader: async ({ context, params }) => {\n const pca = await context.trpcClient?.services.pca.getById.query({\n project_id: params.projectId,\n certificate_authority_id: params.pcaId,\n })\n return { pcaTitle: pca?.configuration?.subject?.common_name || pca?.id || null }\n },\n head: ({ loaderData }) => ({\n meta: [{ title: loaderData?.pcaTitle ?? \"Certificate Authority\" }],\n }),\n component: RouteComponent,\n beforeLoad: async ({ context, params }) => {\n const { trpcClient } = context\n const availableServices = (await trpcClient?.auth.getAvailableServices.query()) || []\n const serviceIndex = getServiceIndex(availableServices)\n // temporary as clavis is not fully GA, after GA replace with [\"pca\"]?.[\"clavis\"]\n const pcaServices = serviceIndex[\"pca\"]?.[\"clavis-beta\"] || serviceIndex[\"pca\"]?.[\"clavis-dev\"]\n\n // Redirect if clavis service not available\n if (!pcaServices) {\n throw redirect({\n to: \"/projects/$projectId/services/pca\",\n params: { projectId: params.projectId },\n })\n }\n },\n})\n\nfunction RouteComponent() {\n const navigate = useNavigate()\n const projectId = useProjectId()\n const { pcaId } = Route.useParams()\n\n const {\n isLoading,\n isError,\n error,\n data: pca,\n } = trpcReact.services.pca.getById.useQuery({\n project_id: projectId,\n certificate_authority_id: pcaId,\n })\n\n // Loading state\n if (isLoading) {\n return (\n <Stack className=\"fixed inset-0\" distribution=\"center\" alignment=\"center\" direction=\"vertical\">\n <Spinner variant=\"primary\" size=\"large\" className=\"mb-2\" />\n <Trans>Loading Certificate Authority Details...</Trans>\n </Stack>\n )\n }\n\n const handleBack = () =>\n navigate({\n to: \"/projects/$projectId/services/pca\",\n params: { projectId },\n })\n\n // Error state\n if (isError) {\n const errorMessage = error?.message || \"Unknown error\"\n return (\n <Stack className=\"fixed inset-0\" distribution=\"center\" alignment=\"center\" direction=\"vertical\" gap=\"5\">\n <p className=\"text-theme-error font-semibold\">\n <Trans>Error loading Certificate Authority</Trans>\n </p>\n <p className=\"text-theme-highest\">{errorMessage}</p>\n <Button onClick={handleBack} variant=\"primary\">\n <Trans>Back to Certificate Authorities</Trans>\n </Button>\n </Stack>\n )\n }\n\n // No data state\n if (!pca) {\n return (\n <Stack className=\"fixed inset-0\" distribution=\"center\" alignment=\"center\" direction=\"vertical\" gap=\"5\">\n <p className=\"text-theme-secondary\">\n <Trans>Certificate Authority not found</Trans>\n </p>\n <Button onClick={handleBack} variant=\"primary\">\n <Trans>Back to Certificate Authorities</Trans>\n </Button>\n </Stack>\n )\n }\n\n return <PcaDetailsView pca={pca} />\n}\n"],"mappings":";;AASA,IAAaG,IAAQH,EAAgB,kDAAA,CAAmD;CACtFI,YAAY;EACVC,SAAS;EACTC,SAAS;EACTC,UAAU;EACVC,cAAc,EAAEC,UAAU,YAAW;EACrCC,OAAO;GAAED,UAAU;GAAgBE,IAAI;GAAoC;EAC7E;CACAE,QAAQ,OAAO,EAAEC,YAASC,gBAAQ;EAChC,IAAMC,IAAM,MAAMF,EAAQG,YAAYC,SAASF,IAAIG,QAAQC,MAAM;GAC/DC,YAAYN,EAAOO;GACnBC,0BAA0BR,EAAOS;GACnC,CAAA;AACA,SAAO,EAAEC,UAAUT,GAAKU,eAAeC,SAASC,eAAeZ,GAAKa,MAAM,MAAK;;CAEjFC,OAAO,EAAEC,qBAAkB,EACzBC,MAAM,CAAC,EAAEC,OAAOF,GAAYN,YAAY,yBAAwB,CAAC,EACnE;CACAS,WAASC,yCAAA,YAAA;CACTE,YAAY,OAAO,EAAEvB,YAASC,gBAAQ;EACpC,IAAM,EAAEE,kBAAeH,GAEjB2B,IAAevC,EADK,MAAOe,GAAYsB,KAAKC,qBAAqBpB,OAAAA,IAAY,EAAE,CAChDkB;AAKrC,MAAI,EAHgBG,EAAa,MAAS,kBAAkBA,EAAa,MAAS,eAIhF,OAAMxC,EAAS;GACbU,IAAI;GACJI,QAAQ,EAAEO,WAAWP,EAAOO,WAAU;GACxC,CAAA;;CAGN,CAAA"}
@@ -1,21 +1,21 @@
1
- import { A as e, G as t, I as n, K as r, L as i, N as a, P as o, W as s, g as c, it as l, k as u, n as d, q as f, rt as p, w as m } from "./build-eu9eg0zF.mjs";
1
+ import { $ as e, A as t, B as n, K as r, N as i, O as a, P as o, T as s, V as c, W as l, Y as u, j as d, l as f, tt as p, z as m } from "./build-Cf7iWbpH.mjs";
2
2
  import { r as h } from "./trpcClient-BxguzNYF.mjs";
3
- import { t as g } from "./_pcaId-DBgz5V_9.mjs";
4
- import { i as _, s as v } from "./md-CI9FmfYv.mjs";
5
- import { t as y } from "./useModal-Dg4CBeqL.mjs";
6
- import { t as b } from "./useProjectId-BWaeJZOy.mjs";
7
- import "./hooks-s-I8vWww.mjs";
8
- import { r as x, t as S } from "./constants-ByHCdNsI.mjs";
3
+ import { t as g } from "./_pcaId-DWHfvMhT.mjs";
4
+ import { i as _, s as v } from "./md-BivyCkGC.mjs";
5
+ import { t as y } from "./useModal-DxxlilRm.mjs";
6
+ import { t as b } from "./useProjectId-CgOTejka.mjs";
7
+ import "./hooks-D0krAKvo.mjs";
8
+ import { r as x, t as S } from "./constants-CCgR6fKI.mjs";
9
9
  import { Fragment as C, jsx as w, jsxs as T } from "react/jsx-runtime";
10
10
  import { Fragment as E } from "react";
11
11
  import { useNavigate as D } from "@tanstack/react-router";
12
12
  import { Trans as O, useLingui as k } from "@lingui/react";
13
13
  //#region src/client/routes/_auth/projects/$projectId/services/pca/$pcaId/-components/-table/PcaCertificatesTableRow.tsx
14
14
  var A = ({ certificate: e }) => {
15
- let { i18n: t, _: i } = k(), o = D();
16
- return /* @__PURE__ */ T(n, {
15
+ let { i18n: n, _: r } = k(), a = D();
16
+ return /* @__PURE__ */ T(i, {
17
17
  "data-testid": `pca-certificate-row-${e.id}`,
18
- onClick: () => o({
18
+ onClick: () => a({
19
19
  from: "/projects/$projectId/services/pca/$pcaId/",
20
20
  to: "$certificateId",
21
21
  params: (t) => ({
@@ -24,108 +24,108 @@ var A = ({ certificate: e }) => {
24
24
  })
25
25
  }),
26
26
  children: [
27
- /* @__PURE__ */ w(a, { children: e.certificate_authority_id }),
28
- /* @__PURE__ */ w(a, { children: e.id }),
29
- /* @__PURE__ */ w(a, {
27
+ /* @__PURE__ */ w(t, { children: e.certificate_authority_id }),
28
+ /* @__PURE__ */ w(t, { children: e.id }),
29
+ /* @__PURE__ */ w(t, {
30
30
  onClick: (e) => e.stopPropagation(),
31
31
  className: "items-end pr-0",
32
- children: /* @__PURE__ */ w(d, { children: /* @__PURE__ */ w(p, { children: /* @__PURE__ */ w(r, {
33
- label: t._({ id: "WIx31g" }),
32
+ children: /* @__PURE__ */ w(u, { children: /* @__PURE__ */ w(s, { children: /* @__PURE__ */ w(l, {
33
+ label: n._({ id: "WIx31g" }),
34
34
  disabled: !0
35
35
  }) }) })
36
36
  })
37
37
  ]
38
38
  }, e.id);
39
- }, j = ({ pcaId: e }) => {
40
- let { i18n: t, _: r } = k(), i = b(), o = () => [
41
- t._({ id: "c1OE1x" }),
42
- t._({ id: "S0kLOH" }),
39
+ }, j = ({ pcaId: n }) => {
40
+ let { i18n: o, _: s } = k(), l = b(), u = () => [
41
+ o._({ id: "c1OE1x" }),
42
+ o._({ id: "S0kLOH" }),
43
43
  ""
44
44
  ], { data: d = [], isLoading: p, isError: g, error: _ } = h.services.pca.listCertificates.useQuery({
45
- project_id: i,
46
- certificate_authority_id: e
45
+ project_id: l,
46
+ certificate_authority_id: n
47
47
  });
48
- return p ? /* @__PURE__ */ T(f, {
48
+ return p ? /* @__PURE__ */ T(e, {
49
49
  className: "py-8",
50
50
  distribution: "center",
51
51
  alignment: "center",
52
52
  direction: "vertical",
53
- children: [/* @__PURE__ */ w(s, {
53
+ children: [/* @__PURE__ */ w(r, {
54
54
  variant: "primary",
55
55
  size: "large",
56
56
  className: "mb-2"
57
57
  }), /* @__PURE__ */ w(O, { id: "T9o/az" })]
58
- }) : g ? /* @__PURE__ */ w(f, {
58
+ }) : g ? /* @__PURE__ */ w(e, {
59
59
  className: "py-8",
60
60
  distribution: "center",
61
61
  alignment: "center",
62
62
  direction: "vertical",
63
- children: _?.message ?? t._({ id: "hz9da7" })
64
- }) : d.length === 0 ? /* @__PURE__ */ w(u, {
65
- columns: o().length,
63
+ children: _?.message ?? o._({ id: "hz9da7" })
64
+ }) : d.length === 0 ? /* @__PURE__ */ w(m, {
65
+ columns: u().length,
66
66
  className: "pca-certificates",
67
67
  "data-testid": "no-pcas-certificates",
68
- children: /* @__PURE__ */ w(n, { children: /* @__PURE__ */ T(a, {
69
- colSpan: o().length,
70
- children: [/* @__PURE__ */ w(m, { children: /* @__PURE__ */ w(O, { id: "kNeZrV" }) }), /* @__PURE__ */ w("p", { children: /* @__PURE__ */ w(O, { id: "7huC4O" }) })]
68
+ children: /* @__PURE__ */ w(i, { children: /* @__PURE__ */ T(t, {
69
+ colSpan: u().length,
70
+ children: [/* @__PURE__ */ w(a, { children: /* @__PURE__ */ w(O, { id: "kNeZrV" }) }), /* @__PURE__ */ w("p", { children: /* @__PURE__ */ w(O, { id: "7huC4O" }) })]
71
71
  }) })
72
72
  }) : /* @__PURE__ */ T("div", {
73
73
  className: "relative",
74
- children: [/* @__PURE__ */ w(c, {
74
+ children: [/* @__PURE__ */ w(f, {
75
75
  variant: "primary",
76
- label: t._({ id: "BMogtG" }),
76
+ label: o._({ id: "BMogtG" }),
77
77
  disabled: !0
78
- }), /* @__PURE__ */ T(u, {
79
- columns: o().length,
80
- children: [/* @__PURE__ */ w(n, { children: o().map((e) => /* @__PURE__ */ w(l, { children: e }, e)) }), d.map((e) => /* @__PURE__ */ w(A, { certificate: e }, e.id))]
78
+ }), /* @__PURE__ */ T(m, {
79
+ columns: u().length,
80
+ children: [/* @__PURE__ */ w(i, { children: u().map((e) => /* @__PURE__ */ w(c, { children: e }, e)) }), d.map((e) => /* @__PURE__ */ w(A, { certificate: e }, e.id))]
81
81
  })]
82
82
  });
83
- }, M = ({ pca: n }) => {
84
- let { i18n: r, _: a } = k(), s = D(), l = b(), [u, d] = y(!1), p = () => s({
83
+ }, M = ({ pca: t }) => {
84
+ let { i18n: r, _: i } = k(), a = D(), s = b(), [c, l] = y(!1), u = () => a({
85
85
  to: "/projects/$projectId/services/pca",
86
- params: { projectId: l }
86
+ params: { projectId: s }
87
87
  }), m = [
88
88
  {
89
89
  label: r._({ id: "c1OE1x" }),
90
- value: n.id
90
+ value: t.id
91
91
  },
92
92
  {
93
93
  label: r._({ id: "mSfwLL" }),
94
- value: n.project_id
94
+ value: t.project_id
95
95
  },
96
96
  {
97
97
  label: r._({ id: "UJmAAK" }),
98
- value: n.configuration?.subject?.common_name
98
+ value: t.configuration?.subject?.common_name
99
99
  },
100
100
  {
101
101
  label: r._({ id: "UbWeJA" }),
102
- value: n.certificate?.validity.not_before !== void 0 && n.certificate?.validity.not_after !== void 0 ? `${Math.round((n.certificate.validity.not_after - n.certificate.validity.not_before) / (3600 * 24))} days` : void 0
102
+ value: t.certificate?.validity.not_before !== void 0 && t.certificate?.validity.not_after !== void 0 ? `${Math.round((t.certificate.validity.not_after - t.certificate.validity.not_before) / (3600 * 24))} days` : void 0
103
103
  }
104
104
  ];
105
105
  return /* @__PURE__ */ T(C, { children: [
106
- /* @__PURE__ */ T(f, {
106
+ /* @__PURE__ */ T(e, {
107
107
  direction: "vertical",
108
108
  gap: "3",
109
109
  children: [
110
- /* @__PURE__ */ T(f, {
110
+ /* @__PURE__ */ T(e, {
111
111
  direction: "horizontal",
112
112
  distribution: "between",
113
- children: [/* @__PURE__ */ T(f, {
113
+ children: [/* @__PURE__ */ T(e, {
114
114
  gap: "2",
115
115
  alignment: "center",
116
116
  children: [/* @__PURE__ */ w("div", {
117
117
  className: "text-theme-default text-2xl font-semibold",
118
- children: `${n.configuration?.subject?.common_name} Certificate Authority Details`
118
+ children: `${t.configuration?.subject?.common_name} Certificate Authority Details`
119
119
  }), /* @__PURE__ */ T("div", {
120
120
  className: "bg-aurora-blue-200 flex items-center gap-1 rounded-sm px-1 py-0.5",
121
121
  children: [
122
- S[n.state].icon,
122
+ S[t.state].icon,
123
123
  " ",
124
- S[n.state].text
124
+ S[t.state].text
125
125
  ]
126
126
  })]
127
- }), /* @__PURE__ */ w(c, {
128
- onClick: d,
127
+ }), /* @__PURE__ */ w(f, {
128
+ onClick: l,
129
129
  children: /* @__PURE__ */ w(O, { id: "Blsc/x" })
130
130
  })]
131
131
  }),
@@ -133,71 +133,71 @@ var A = ({ certificate: e }) => {
133
133
  className: "text-theme-highest text-sm",
134
134
  children: /* @__PURE__ */ w(O, { id: "dxMaZH" })
135
135
  }),
136
- /* @__PURE__ */ T(f, {
136
+ /* @__PURE__ */ T(e, {
137
137
  gap: "4",
138
138
  className: "grid grid-cols-2 items-start",
139
- children: [/* @__PURE__ */ w(e, {
139
+ children: [/* @__PURE__ */ w(n, {
140
140
  alignTerms: "right",
141
141
  className: "w-full",
142
- children: m.map(({ label: e, value: t }) => /* @__PURE__ */ T(E, { children: [/* @__PURE__ */ w(o, { children: e }), /* @__PURE__ */ w(i, { children: t || "—" })] }, e))
142
+ children: m.map(({ label: e, value: t }) => /* @__PURE__ */ T(E, { children: [/* @__PURE__ */ w(d, { children: e }), /* @__PURE__ */ w(o, { children: t || "—" })] }, e))
143
143
  }), /* @__PURE__ */ T("div", {
144
144
  className: "bg-dt-background w-full rounded-sm",
145
145
  children: [
146
146
  /* @__PURE__ */ T("div", {
147
147
  className: "text-theme-default p-4 text-xl font-bold",
148
- children: ["Certificate ", `${n.configuration?.subject?.common_name}`]
148
+ children: ["Certificate ", `${t.configuration?.subject?.common_name}`]
149
149
  }),
150
- /* @__PURE__ */ w(t, {}),
150
+ /* @__PURE__ */ w(p, {}),
151
151
  /* @__PURE__ */ w("div", {
152
152
  className: "p-4 text-sm break-all whitespace-pre-wrap",
153
- children: n?.csr
153
+ children: t?.csr
154
154
  }),
155
- /* @__PURE__ */ w(t, {}),
156
- /* @__PURE__ */ T(f, {
155
+ /* @__PURE__ */ w(p, {}),
156
+ /* @__PURE__ */ T(e, {
157
157
  gap: "2",
158
158
  distribution: "end",
159
159
  className: "p-4",
160
- children: [/* @__PURE__ */ w(c, { children: /* @__PURE__ */ w(v, {}) }), /* @__PURE__ */ w(c, { children: /* @__PURE__ */ w(_, {}) })]
160
+ children: [/* @__PURE__ */ w(f, { children: /* @__PURE__ */ w(v, {}) }), /* @__PURE__ */ w(f, { children: /* @__PURE__ */ w(_, {}) })]
161
161
  })
162
162
  ]
163
163
  })]
164
164
  })
165
165
  ]
166
166
  }),
167
- u && /* @__PURE__ */ w(x, {
168
- pca: n,
169
- open: u,
170
- onClose: d,
171
- onSuccess: p
167
+ c && /* @__PURE__ */ w(x, {
168
+ pca: t,
169
+ open: c,
170
+ onClose: l,
171
+ onSuccess: u
172
172
  }),
173
- /* @__PURE__ */ w(j, { pcaId: n.id })
173
+ /* @__PURE__ */ w(j, { pcaId: t.id })
174
174
  ] });
175
175
  };
176
176
  //#endregion
177
177
  //#region src/client/routes/_auth/projects/$projectId/services/pca/$pcaId/index.tsx?tsr-split=component
178
178
  function N() {
179
- let { i18n: e, _: t } = k(), n = D(), r = b(), { pcaId: i } = g.useParams(), { setPageTitle: a } = g.useRouteContext(), { isLoading: o, isError: l, error: u, data: d } = h.services.pca.getById.useQuery({
180
- project_id: r,
179
+ let t = D(), n = b(), { pcaId: i } = g.useParams(), { isLoading: a, isError: o, error: s, data: c } = h.services.pca.getById.useQuery({
180
+ project_id: n,
181
181
  certificate_authority_id: i
182
182
  });
183
- if (o) return a(e._({ id: "Z3FXyt" })), /* @__PURE__ */ T(f, {
183
+ if (a) return /* @__PURE__ */ T(e, {
184
184
  className: "fixed inset-0",
185
185
  distribution: "center",
186
186
  alignment: "center",
187
187
  direction: "vertical",
188
- children: [/* @__PURE__ */ w(s, {
188
+ children: [/* @__PURE__ */ w(r, {
189
189
  variant: "primary",
190
190
  size: "large",
191
191
  className: "mb-2"
192
192
  }), /* @__PURE__ */ w(O, { id: "og1m+J" })]
193
193
  });
194
- let p = () => n({
194
+ let l = () => t({
195
195
  to: "/projects/$projectId/services/pca",
196
- params: { projectId: r }
196
+ params: { projectId: n }
197
197
  });
198
- if (l) {
199
- let e = u?.message || "Unknown error";
200
- return /* @__PURE__ */ T(f, {
198
+ if (o) {
199
+ let t = s?.message || "Unknown error";
200
+ return /* @__PURE__ */ T(e, {
201
201
  className: "fixed inset-0",
202
202
  distribution: "center",
203
203
  alignment: "center",
@@ -210,17 +210,17 @@ function N() {
210
210
  }),
211
211
  /* @__PURE__ */ w("p", {
212
212
  className: "text-theme-highest",
213
- children: e
213
+ children: t
214
214
  }),
215
- /* @__PURE__ */ w(c, {
216
- onClick: p,
215
+ /* @__PURE__ */ w(f, {
216
+ onClick: l,
217
217
  variant: "primary",
218
218
  children: /* @__PURE__ */ w(O, { id: "HG0uMz" })
219
219
  })
220
220
  ]
221
221
  });
222
222
  }
223
- return d ? (a(d.configuration?.subject?.common_name || d.id), /* @__PURE__ */ w(M, { pca: d })) : /* @__PURE__ */ T(f, {
223
+ return c ? /* @__PURE__ */ w(M, { pca: c }) : /* @__PURE__ */ T(e, {
224
224
  className: "fixed inset-0",
225
225
  distribution: "center",
226
226
  alignment: "center",
@@ -229,8 +229,8 @@ function N() {
229
229
  children: [/* @__PURE__ */ w("p", {
230
230
  className: "text-theme-secondary",
231
231
  children: /* @__PURE__ */ w(O, { id: "Io2Dvq" })
232
- }), /* @__PURE__ */ w(c, {
233
- onClick: p,
232
+ }), /* @__PURE__ */ w(f, {
233
+ onClick: l,
234
234
  variant: "primary",
235
235
  children: /* @__PURE__ */ w(O, { id: "HG0uMz" })
236
236
  })]
@@ -239,4 +239,4 @@ function N() {
239
239
  //#endregion
240
240
  export { N as component };
241
241
 
242
- //# sourceMappingURL=_pcaId-C7Lrv1H_.mjs.map
242
+ //# sourceMappingURL=_pcaId-r2BTjN9y.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"_pcaId-r2BTjN9y.mjs","names":["useNavigate","DataGridCell","DataGridRow","PopupMenu","PopupMenuItem","PopupMenuOptions","PcaCertificatesTableRow","certificate","useLingui","navigate","navigateToCertificateDetailsPage","from","to","params","prev","certificateId","id","data-testid","onClick","certificate_authority_id","e","stopPropagation","className","label","t","disabled","Stack","Spinner","DataGrid","DataGridRow","DataGridCell","ContentHeading","DataGridHeadCell","Button","trpcReact","useProjectId","PcaCertificatesTableRow","PcaCertificatesListContainer","pcaId","useLingui","projectId","columns","t","data","pcaCertificates","isLoading","isError","error","services","pca","listCertificates","useQuery","project_id","certificate_authority_id","className","distribution","alignment","direction","variant","size","message","length","data-testid","colSpan","p","div","label","disabled","map","certificate","id","Fragment","MdDownload","MdContentCopy","useNavigate","Button","DescriptionDefinition","DescriptionList","DescriptionTerm","Divider","Stack","useProjectId","useModal","DeletePcaModal","STATE_CONFIG","PcaCertificatesListContainer","PcaDetailsView","pca","useLingui","navigate","projectId","deletePcaModalOpen","toggleDeletePcaModal","navigateToPcaList","to","params","basicInfo","label","t","value","id","project_id","configuration","subject","common_name","certificate","validity","not_before","undefined","not_after","Math","round","direction","gap","distribution","alignment","div","className","state","icon","text","onClick","p","alignTerms","map","csr","open","onClose","onSuccess","pcaId","useNavigate","Trans","Button","Spinner","Stack","trpcReact","useProjectId","PcaDetailsView","Route","RouteComponent","navigate","projectId","pcaId","useParams","isLoading","isError","error","data","pca","services","getById","useQuery","project_id","certificate_authority_id","handleBack","to","params","errorMessage","message","component"],"sources":["../../src/client/routes/_auth/projects/$projectId/services/pca/$pcaId/-components/-table/PcaCertificatesTableRow.tsx","../../src/client/routes/_auth/projects/$projectId/services/pca/$pcaId/-components/PcaCertificatesListContainer.tsx","../../src/client/routes/_auth/projects/$projectId/services/pca/$pcaId/-components/PcaDetailsView.tsx","../../src/client/routes/_auth/projects/$projectId/services/pca/$pcaId/index.tsx?tsr-split=component"],"sourcesContent":["import { useNavigate } from \"@tanstack/react-router\"\nimport { useLingui } from \"@lingui/react/macro\"\nimport {\n DataGridCell,\n DataGridRow,\n PopupMenu,\n PopupMenuItem,\n PopupMenuOptions,\n} from \"@cloudoperators/juno-ui-components\"\nimport { Certificate } from \"@/server/Services/types/pca\"\n\ninterface PcaCertificatesTableRowProps {\n certificate: Certificate\n}\n\nexport const PcaCertificatesTableRow = ({ certificate }: PcaCertificatesTableRowProps) => {\n const { t } = useLingui()\n const navigate = useNavigate()\n\n const navigateToCertificateDetailsPage = () =>\n navigate({\n from: \"/projects/$projectId/services/pca/$pcaId/\",\n to: \"$certificateId\",\n params: (prev) => ({ ...prev, certificateId: certificate.id }),\n })\n\n return (\n <DataGridRow\n key={certificate.id}\n data-testid={`pca-certificate-row-${certificate.id}`}\n onClick={navigateToCertificateDetailsPage}\n >\n <DataGridCell>{certificate.certificate_authority_id}</DataGridCell>\n <DataGridCell>{certificate.id}</DataGridCell>\n <DataGridCell onClick={(e) => e.stopPropagation()} className=\"items-end pr-0\">\n <PopupMenu>\n <PopupMenuOptions>\n {/* I will enable this button on create-certificate task of the EPIC */}\n <PopupMenuItem label={t`Create Certificate`} disabled />\n </PopupMenuOptions>\n </PopupMenu>\n </DataGridCell>\n </DataGridRow>\n )\n}\n","import { Trans, useLingui } from \"@lingui/react/macro\"\nimport {\n Stack,\n Spinner,\n DataGrid,\n DataGridRow,\n DataGridCell,\n ContentHeading,\n DataGridHeadCell,\n Button,\n} from \"@cloudoperators/juno-ui-components\"\nimport { trpcReact } from \"@/client/trpcClient\"\nimport { useProjectId } from \"@/client/hooks\"\nimport { PcaCertificatesTableRow } from \"./-table/PcaCertificatesTableRow\"\n\ninterface PcaCertificatesListContainerProps {\n pcaId: string\n}\n\nexport const PcaCertificatesListContainer = ({ pcaId }: PcaCertificatesListContainerProps) => {\n const { t } = useLingui()\n const projectId = useProjectId()\n\n const columns = () =>\n [\n t`CA ID`,\n t`ID`,\n \"\", // empty column for item-action with context menu containing \"Delete CA\" button\n ] as const\n\n const {\n data: pcaCertificates = [],\n isLoading,\n isError,\n error,\n } = trpcReact.services.pca.listCertificates.useQuery({\n project_id: projectId,\n certificate_authority_id: pcaId,\n })\n\n if (isLoading) {\n return (\n <Stack className=\"py-8\" distribution=\"center\" alignment=\"center\" direction=\"vertical\">\n <Spinner variant=\"primary\" size=\"large\" className=\"mb-2\" />\n <Trans>Loading Certificates issued by Certificate Authority...</Trans>\n </Stack>\n )\n }\n\n if (isError) {\n return (\n <Stack className=\"py-8\" distribution=\"center\" alignment=\"center\" direction=\"vertical\">\n {error?.message ?? t`Failed to load Certificates issued by Certificate Authority.`}\n </Stack>\n )\n }\n\n if (pcaCertificates.length === 0) {\n return (\n <DataGrid columns={columns().length} className=\"pca-certificates\" data-testid=\"no-pcas-certificates\">\n <DataGridRow>\n <DataGridCell colSpan={columns().length}>\n <ContentHeading>\n <Trans>No Certificates issued by this Certificate Authority found</Trans>\n </ContentHeading>\n <p>\n <Trans>There are no Certificates available for this Certificate Authority.</Trans>\n </p>\n </DataGridCell>\n </DataGridRow>\n </DataGrid>\n )\n }\n\n return (\n <div className=\"relative\">\n {/* I will enable this button on issue-certificate task of the EPIC */}\n <Button variant=\"primary\" label={t`Issue End Entity Certificate`} disabled />\n <DataGrid columns={columns().length}>\n <DataGridRow>\n {columns().map((label) => (\n <DataGridHeadCell key={label}>{label}</DataGridHeadCell>\n ))}\n </DataGridRow>\n {pcaCertificates.map((certificate) => (\n <PcaCertificatesTableRow key={certificate.id} certificate={certificate} />\n ))}\n </DataGrid>\n </div>\n )\n}\n","import { Fragment } from \"react\"\nimport { MdDownload, MdContentCopy } from \"react-icons/md\"\nimport { useNavigate } from \"@tanstack/react-router\"\nimport { Trans, useLingui } from \"@lingui/react/macro\"\nimport {\n Button,\n DescriptionDefinition,\n DescriptionList,\n DescriptionTerm,\n Divider,\n Stack,\n} from \"@cloudoperators/juno-ui-components/index\"\nimport { CertificateAuthority } from \"@/server/Services/types/pca\"\nimport { useProjectId } from \"@/client/hooks\"\nimport { useModal } from \"@/client/utils/useModal\"\nimport { DeletePcaModal } from \"../../-components/-modals/DeletePcaModal\"\nimport { STATE_CONFIG } from \"../../-components/-table/constants\"\nimport { PcaCertificatesListContainer } from \"./PcaCertificatesListContainer\"\n\ninterface PcaDetailsViewProps {\n pca: CertificateAuthority\n}\n\nexport const PcaDetailsView = ({ pca }: PcaDetailsViewProps) => {\n const { t } = useLingui()\n const navigate = useNavigate()\n const projectId = useProjectId()\n const [deletePcaModalOpen, toggleDeletePcaModal] = useModal(false)\n\n const navigateToPcaList = () =>\n navigate({\n to: \"/projects/$projectId/services/pca\",\n params: { projectId },\n })\n\n const basicInfo = [\n { label: t`CA ID`, value: pca.id },\n { label: t`Project ID`, value: pca.project_id },\n { label: t`Subject`, value: pca.configuration?.subject?.common_name },\n {\n label: t`Duration/validity`,\n value:\n pca.certificate?.validity.not_before !== undefined && pca.certificate?.validity.not_after !== undefined\n ? `${Math.round(\n (pca.certificate.validity.not_after - pca.certificate.validity.not_before) / (60 * 60 * 24)\n )} days`\n : undefined,\n },\n ] as const\n\n return (\n <>\n <Stack direction=\"vertical\" gap=\"3\">\n <Stack direction=\"horizontal\" distribution=\"between\">\n <Stack gap=\"2\" alignment=\"center\">\n <div className=\"text-theme-default text-2xl font-semibold\">\n {`${pca.configuration?.subject?.common_name} Certificate Authority Details`}\n </div>\n {/* temporary bg, I will resolve this as soon as I will have sync with designers */}\n <div className=\"bg-aurora-blue-200 flex items-center gap-1 rounded-sm px-1 py-0.5\">\n {STATE_CONFIG[pca.state].icon} {STATE_CONFIG[pca.state].text}\n </div>\n </Stack>\n <Button onClick={toggleDeletePcaModal}>\n <Trans>Delete Certificate Authority</Trans>\n </Button>\n </Stack>\n\n <p className=\"text-theme-highest text-sm\">\n <Trans>Manage your Private Certificate Authority infrastructure</Trans>\n </p>\n\n <Stack gap=\"4\" className=\"grid grid-cols-2 items-start\">\n <DescriptionList alignTerms=\"right\" className=\"w-full\">\n {basicInfo.map(({ label, value }) => (\n <Fragment key={label}>\n <DescriptionTerm>{label}</DescriptionTerm>\n <DescriptionDefinition>{value || \"—\"}</DescriptionDefinition>\n </Fragment>\n ))}\n </DescriptionList>\n\n <div className=\"bg-dt-background w-full rounded-sm\">\n <div className=\"text-theme-default p-4 text-xl font-bold\">\n Certificate {`${pca.configuration?.subject?.common_name}`}\n </div>\n <Divider />\n\n <div className=\"p-4 text-sm break-all whitespace-pre-wrap\">{pca?.csr}</div>\n\n {/* I will implement downloading-copying functionality at issue/import part of the epic as I need to clarify some stuff with design-clavis team */}\n <Divider />\n <Stack gap=\"2\" distribution=\"end\" className=\"p-4\">\n <Button>\n <MdDownload />\n </Button>\n <Button>\n <MdContentCopy />\n </Button>\n </Stack>\n </div>\n </Stack>\n </Stack>\n\n {deletePcaModalOpen && (\n <DeletePcaModal\n pca={pca}\n open={deletePcaModalOpen}\n onClose={toggleDeletePcaModal}\n onSuccess={navigateToPcaList}\n />\n )}\n\n <PcaCertificatesListContainer pcaId={pca.id} />\n </>\n )\n}\n","import { createFileRoute, redirect, useNavigate } from \"@tanstack/react-router\"\nimport { Trans } from \"@lingui/react/macro\"\nimport { Button, Spinner, Stack } from \"@cloudoperators/juno-ui-components/index\"\nimport { getServiceIndex } from \"@/server/Authentication/helpers\"\nimport type { RouteInfo } from \"@/client/routes/routeInfo\"\nimport { trpcReact } from \"@/client/trpcClient\"\nimport { useProjectId } from \"@/client/hooks/useProjectId\"\nimport { PcaDetailsView } from \"./-components/PcaDetailsView\"\n\nexport const Route = createFileRoute(\"/_auth/projects/$projectId/services/pca/$pcaId/\")({\n staticData: {\n section: \"services\",\n service: \"pca\",\n isDetail: true,\n sectionCrumb: { labelKey: \"Services\" },\n crumb: { labelKey: \"PCA (Clavis)\", to: \"/projects/$projectId/services/pca\" },\n } satisfies RouteInfo,\n loader: async ({ context, params }) => {\n const pca = await context.trpcClient?.services.pca.getById.query({\n project_id: params.projectId,\n certificate_authority_id: params.pcaId,\n })\n return { pcaTitle: pca?.configuration?.subject?.common_name || pca?.id || null }\n },\n head: ({ loaderData }) => ({\n meta: [{ title: loaderData?.pcaTitle ?? \"Certificate Authority\" }],\n }),\n component: RouteComponent,\n beforeLoad: async ({ context, params }) => {\n const { trpcClient } = context\n const availableServices = (await trpcClient?.auth.getAvailableServices.query()) || []\n const serviceIndex = getServiceIndex(availableServices)\n // temporary as clavis is not fully GA, after GA replace with [\"pca\"]?.[\"clavis\"]\n const pcaServices = serviceIndex[\"pca\"]?.[\"clavis-beta\"] || serviceIndex[\"pca\"]?.[\"clavis-dev\"]\n\n // Redirect if clavis service not available\n if (!pcaServices) {\n throw redirect({\n to: \"/projects/$projectId/services/pca\",\n params: { projectId: params.projectId },\n })\n }\n },\n})\n\nfunction RouteComponent() {\n const navigate = useNavigate()\n const projectId = useProjectId()\n const { pcaId } = Route.useParams()\n\n const {\n isLoading,\n isError,\n error,\n data: pca,\n } = trpcReact.services.pca.getById.useQuery({\n project_id: projectId,\n certificate_authority_id: pcaId,\n })\n\n // Loading state\n if (isLoading) {\n return (\n <Stack className=\"fixed inset-0\" distribution=\"center\" alignment=\"center\" direction=\"vertical\">\n <Spinner variant=\"primary\" size=\"large\" className=\"mb-2\" />\n <Trans>Loading Certificate Authority Details...</Trans>\n </Stack>\n )\n }\n\n const handleBack = () =>\n navigate({\n to: \"/projects/$projectId/services/pca\",\n params: { projectId },\n })\n\n // Error state\n if (isError) {\n const errorMessage = error?.message || \"Unknown error\"\n return (\n <Stack className=\"fixed inset-0\" distribution=\"center\" alignment=\"center\" direction=\"vertical\" gap=\"5\">\n <p className=\"text-theme-error font-semibold\">\n <Trans>Error loading Certificate Authority</Trans>\n </p>\n <p className=\"text-theme-highest\">{errorMessage}</p>\n <Button onClick={handleBack} variant=\"primary\">\n <Trans>Back to Certificate Authorities</Trans>\n </Button>\n </Stack>\n )\n }\n\n // No data state\n if (!pca) {\n return (\n <Stack className=\"fixed inset-0\" distribution=\"center\" alignment=\"center\" direction=\"vertical\" gap=\"5\">\n <p className=\"text-theme-secondary\">\n <Trans>Certificate Authority not found</Trans>\n </p>\n <Button onClick={handleBack} variant=\"primary\">\n <Trans>Back to Certificate Authorities</Trans>\n </Button>\n </Stack>\n )\n }\n\n return <PcaDetailsView pca={pca} />\n}\n"],"mappings":"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"}
@@ -1,7 +1,7 @@
1
1
  import { createFileRoute as e, lazyRouteComponent as t } from "@tanstack/react-router";
2
2
  var n = e("/_auth/projects/$projectId")({
3
- component: t(() => import("./_projectId-Be1Erj68.mjs"), "component"),
4
- errorComponent: t(() => import("./_projectId-B9fln31N.mjs"), "errorComponent"),
3
+ component: t(() => import("./_projectId-Bs4W9hos.mjs"), "component"),
4
+ errorComponent: t(() => import("./_projectId-Pxp-RXK4.mjs"), "errorComponent"),
5
5
  loader: async (e) => {
6
6
  let { context: t, params: n } = e, r = await t.trpcClient?.auth.setCurrentScope.mutate({
7
7
  type: "project",
@@ -23,4 +23,4 @@ var n = e("/_auth/projects/$projectId")({
23
23
  //#endregion
24
24
  export { n as t };
25
25
 
26
- //# sourceMappingURL=_projectId-INhedXor.mjs.map
26
+ //# sourceMappingURL=_projectId-B1VjDd0Z.mjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"_projectId-INhedXor.mjs","names":["createFileRoute","Route","component","lazyRouteComponent","$$splitComponentImporter","errorComponent","$$splitErrorComponentImporter","loader","options","context","params","data","trpcClient","auth","setCurrentScope","mutate","type","projectId","availableServices","getAvailableServices","query","accountId","domain","id","crumbDomain","path","name","crumbProject","project"],"sources":["../../src/client/routes/_auth/projects/$projectId.tsx"],"sourcesContent":["import { createFileRoute, Outlet, useLoaderData } from \"@tanstack/react-router\"\nimport { AppShell, Container, Stack } from \"@cloudoperators/juno-ui-components\"\nimport { SideNavBar } from \"@/client/routes/_auth/projects/-components/SideNavBar\"\nimport { ProjectInfoBox } from \"@/client/components/ProjectView/ProjectInfoBox\"\nimport { RouteError } from \"@/client/components/Error/RouteError\"\n\nexport const Route = createFileRoute(\"/_auth/projects/$projectId\")({\n component: RouteComponent,\n errorComponent: ({ error }) => {\n return <RouteError error={error} />\n },\n loader: async (options) => {\n const { context, params } = options\n const data = await context.trpcClient?.auth.setCurrentScope.mutate({\n type: \"project\",\n projectId: params.projectId || \"\",\n })\n const availableServices = await context.trpcClient?.auth.getAvailableServices.query()\n\n // Extract accountId (domain id) from the rescoped token\n // This is needed for SideNavBar navigation until we refactor it\n const accountId = data?.domain?.id || \"\"\n\n return {\n trpcClient: context.trpcClient,\n crumbDomain: { path: `/projects`, name: data?.domain?.name },\n crumbProject: data?.project,\n availableServices,\n accountId, // Keep for SideNavBar compatibility\n projectId: params.projectId,\n }\n },\n})\n\nfunction RouteComponent() {\n const { availableServices, projectId, crumbProject } = useLoaderData({ from: Route.id })\n\n return (\n <AppShell\n embedded\n sideNavigation={\n <SideNavBar\n availableServices={availableServices!}\n projectId={projectId}\n projectName={crumbProject?.name || projectId}\n />\n }\n className=\"h-min-screen\"\n >\n <Container>\n <Stack direction=\"vertical\" distribution=\"start\" alignment=\"stretch\" className=\"xl:flex-row\" gap=\"6\">\n {/* Main content area */}\n <div className=\"min-w-0 flex-1\">\n <ProjectInfoBox\n projectInfo={{\n id: projectId,\n name: crumbProject?.name || projectId,\n domain: crumbProject?.domain,\n }}\n />\n <Outlet />\n </div>\n </Stack>\n </Container>\n </AppShell>\n )\n}\n"],"mappings":";AAMA,IAAaC,IAAQD,EAAgB,6BAAA,CAA8B;CACjEE,WAASC,6CAAA,YAAA;CACTE,gBAAcF,6CAAA,iBAAA;CAGdI,QAAQ,OAAOC,MAAAA;EACb,IAAM,EAAEC,YAASC,cAAWF,GACtBG,IAAO,MAAMF,EAAQG,YAAYC,KAAKC,gBAAgBC,OAAO;GACjEC,MAAM;GACNC,WAAWP,EAAOO,aAAa;GACjC,CAAA,EACMC,IAAoB,MAAMT,EAAQG,YAAYC,KAAKM,qBAAqBC,OAAAA,EAIxEC,IAAYV,GAAMW,QAAQC,MAAM;AAEtC,SAAO;GACLX,YAAYH,EAAQG;GACpBY,aAAa;IAAEC,MAAM;IAAaC,MAAMf,GAAMW,QAAQI;IAAK;GAC3DC,cAAchB,GAAMiB;GACpBV;GACAG;GACAJ,WAAWP,EAAOO;GACpB;;CAEJ,CAAA"}
1
+ {"version":3,"file":"_projectId-B1VjDd0Z.mjs","names":["createFileRoute","Route","component","lazyRouteComponent","$$splitComponentImporter","errorComponent","$$splitErrorComponentImporter","loader","options","context","params","data","trpcClient","auth","setCurrentScope","mutate","type","projectId","availableServices","getAvailableServices","query","accountId","domain","id","crumbDomain","path","name","crumbProject","project"],"sources":["../../src/client/routes/_auth/projects/$projectId.tsx"],"sourcesContent":["import { createFileRoute, Outlet, useLoaderData } from \"@tanstack/react-router\"\nimport { AppShell, Container, Stack } from \"@cloudoperators/juno-ui-components\"\nimport { SideNavBar } from \"@/client/routes/_auth/projects/-components/SideNavBar\"\nimport { ProjectInfoBox } from \"@/client/components/ProjectView/ProjectInfoBox\"\nimport { RouteError } from \"@/client/components/Error/RouteError\"\n\nexport const Route = createFileRoute(\"/_auth/projects/$projectId\")({\n component: RouteComponent,\n errorComponent: ({ error }) => {\n return <RouteError error={error} />\n },\n loader: async (options) => {\n const { context, params } = options\n const data = await context.trpcClient?.auth.setCurrentScope.mutate({\n type: \"project\",\n projectId: params.projectId || \"\",\n })\n const availableServices = await context.trpcClient?.auth.getAvailableServices.query()\n\n // Extract accountId (domain id) from the rescoped token\n // This is needed for SideNavBar navigation until we refactor it\n const accountId = data?.domain?.id || \"\"\n\n return {\n trpcClient: context.trpcClient,\n crumbDomain: { path: `/projects`, name: data?.domain?.name },\n crumbProject: data?.project,\n availableServices,\n accountId, // Keep for SideNavBar compatibility\n projectId: params.projectId,\n }\n },\n})\n\nfunction RouteComponent() {\n const { availableServices, projectId, crumbProject } = useLoaderData({ from: Route.id })\n\n return (\n <AppShell\n embedded\n sideNavigation={\n <SideNavBar\n availableServices={availableServices!}\n projectId={projectId}\n projectName={crumbProject?.name || projectId}\n />\n }\n className=\"h-min-screen\"\n >\n <Container>\n <Stack direction=\"vertical\" distribution=\"start\" alignment=\"stretch\" className=\"xl:flex-row\" gap=\"6\">\n {/* Main content area */}\n <div className=\"min-w-0 flex-1\">\n <ProjectInfoBox\n projectInfo={{\n id: projectId,\n name: crumbProject?.name || projectId,\n domain: crumbProject?.domain,\n }}\n />\n <Outlet />\n </div>\n </Stack>\n </Container>\n </AppShell>\n )\n}\n"],"mappings":";AAMA,IAAaC,IAAQD,EAAgB,6BAAA,CAA8B;CACjEE,WAASC,6CAAA,YAAA;CACTE,gBAAcF,6CAAA,iBAAA;CAGdI,QAAQ,OAAOC,MAAAA;EACb,IAAM,EAAEC,YAASC,cAAWF,GACtBG,IAAO,MAAMF,EAAQG,YAAYC,KAAKC,gBAAgBC,OAAO;GACjEC,MAAM;GACNC,WAAWP,EAAOO,aAAa;GACjC,CAAA,EACMC,IAAoB,MAAMT,EAAQG,YAAYC,KAAKM,qBAAqBC,OAAAA,EAIxEC,IAAYV,GAAMW,QAAQC,MAAM;AAEtC,SAAO;GACLX,YAAYH,EAAQG;GACpBY,aAAa;IAAEC,MAAM;IAAaC,MAAMf,GAAMW,QAAQI;IAAK;GAC3DC,cAAchB,GAAMiB;GACpBV;GACAG;GACAJ,WAAWP,EAAOO;GACpB;;CAEJ,CAAA"}