@cobaltcore-dev/aurora 0.3.0 → 0.3.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 (111) hide show
  1. package/dist/client/{ContentHeader-B_PWrxbw.mjs → ContentHeader-BXZoN3B9.mjs} +16 -16
  2. package/dist/client/{ContentHeader-B_PWrxbw.mjs.map → ContentHeader-BXZoN3B9.mjs.map} +1 -1
  3. package/dist/client/{DeleteFlavorModal-BkPrQKyE.mjs → DeleteFlavorModal-BusYn32r.mjs} +152 -152
  4. package/dist/client/{DeleteFlavorModal-BkPrQKyE.mjs.map → DeleteFlavorModal-BusYn32r.mjs.map} +1 -1
  5. package/dist/client/{EditSecurityGroupModal-ad4uzlt0.mjs → EditSecurityGroupModal-Dl6m7wUe.mjs} +15 -15
  6. package/dist/client/{EditSecurityGroupModal-ad4uzlt0.mjs.map → EditSecurityGroupModal-Dl6m7wUe.mjs.map} +1 -1
  7. package/dist/client/FiltersInput-BgNaHFBt.mjs +81 -0
  8. package/dist/client/FiltersInput-BgNaHFBt.mjs.map +1 -0
  9. package/dist/client/{FloatingIpActionModals-lKMwLuL8.mjs → FloatingIpActionModals-By2hXR9m.mjs} +50 -50
  10. package/dist/client/{FloatingIpActionModals-lKMwLuL8.mjs.map → FloatingIpActionModals-By2hXR9m.mjs.map} +1 -1
  11. package/dist/client/{ImageToastNotifications--U13YiQ_.mjs → ImageToastNotifications-fHI8jB2j.mjs} +321 -321
  12. package/dist/client/{ImageToastNotifications--U13YiQ_.mjs.map → ImageToastNotifications-fHI8jB2j.mjs.map} +1 -1
  13. package/dist/client/ListToolbar-BvtCo8dk.mjs +129 -0
  14. package/dist/client/ListToolbar-BvtCo8dk.mjs.map +1 -0
  15. package/dist/client/{RouteError-iP1Vd6bY.mjs → RouteError-pDEWC_k7.mjs} +2 -2
  16. package/dist/client/{RouteError-iP1Vd6bY.mjs.map → RouteError-pDEWC_k7.mjs.map} +1 -1
  17. package/dist/client/SortInput-DXWSqSny.mjs +34 -0
  18. package/dist/client/SortInput-DXWSqSny.mjs.map +1 -0
  19. package/dist/client/{_flavorId-BaNXUJhA.mjs → _flavorId-BRonXvCo.mjs} +40 -40
  20. package/dist/client/{_flavorId-BaNXUJhA.mjs.map → _flavorId-BRonXvCo.mjs.map} +1 -1
  21. package/dist/client/{_flavorId-CnO76tuy.mjs → _flavorId-BoNcxYmF.mjs} +9 -9
  22. package/dist/client/{_flavorId-CnO76tuy.mjs.map → _flavorId-BoNcxYmF.mjs.map} +1 -1
  23. package/dist/client/_floatingIpId-BpUfL8Im2.mjs +228 -0
  24. package/dist/client/_floatingIpId-BpUfL8Im2.mjs.map +1 -0
  25. package/dist/client/{_floatingIpId-C8G20nNt.mjs → _floatingIpId-CwHiXazi.mjs} +2 -2
  26. package/dist/client/{_floatingIpId-C8G20nNt.mjs.map → _floatingIpId-CwHiXazi.mjs.map} +1 -1
  27. package/dist/client/{_imageId-DdSbxFqG.mjs → _imageId-CdOOJjw0.mjs} +127 -127
  28. package/dist/client/{_imageId-DdSbxFqG.mjs.map → _imageId-CdOOJjw0.mjs.map} +1 -1
  29. package/dist/client/{_pcaId-DFkYJEb5.mjs → _pcaId-CwlH1Kvl.mjs} +82 -82
  30. package/dist/client/{_pcaId-DFkYJEb5.mjs.map → _pcaId-CwlH1Kvl.mjs.map} +1 -1
  31. package/dist/client/{_pcaId-DX_S-3hE.mjs → _pcaId-D1ZEaCdp.mjs} +2 -2
  32. package/dist/client/{_pcaId-DX_S-3hE.mjs.map → _pcaId-D1ZEaCdp.mjs.map} +1 -1
  33. package/dist/client/{_projectId-DsSVV2EA.mjs → _projectId-D1gGribM.mjs} +69 -69
  34. package/dist/client/{_projectId-DsSVV2EA.mjs.map → _projectId-D1gGribM.mjs.map} +1 -1
  35. package/dist/client/{_projectId-DYrcZ3E3.mjs → _projectId-DhLpIalx.mjs} +3 -3
  36. package/dist/client/{_projectId-DYrcZ3E3.mjs.map → _projectId-DhLpIalx.mjs.map} +1 -1
  37. package/dist/client/{_projectId-Dha4XqX4.mjs → _projectId-Dj_InfSc.mjs} +3 -3
  38. package/dist/client/{_projectId-Dha4XqX4.mjs.map → _projectId-Dj_InfSc.mjs.map} +1 -1
  39. package/dist/client/{_projectId-KH5si25Q.mjs → _projectId-OW2xkK43.mjs} +2 -2
  40. package/dist/client/{_projectId-KH5si25Q.mjs.map → _projectId-OW2xkK43.mjs.map} +1 -1
  41. package/dist/client/{_securityGroupId-DgaSqYex.mjs → _securityGroupId-B0llWH9A.mjs} +2 -2
  42. package/dist/client/{_securityGroupId-DgaSqYex.mjs.map → _securityGroupId-B0llWH9A.mjs.map} +1 -1
  43. package/dist/client/{_securityGroupId-O7FXfx0M.mjs → _securityGroupId-gbUnd5Wv.mjs} +306 -306
  44. package/dist/client/{_securityGroupId-O7FXfx0M.mjs.map → _securityGroupId-gbUnd5Wv.mjs.map} +1 -1
  45. package/dist/client/{about-DN8n8sN8.mjs → about-DCe6LsKz.mjs} +2 -2
  46. package/dist/client/{about-DN8n8sN8.mjs.map → about-DCe6LsKz.mjs.map} +1 -1
  47. package/dist/client/{build-CZRvXrAL.mjs → build-BJDfnAyi.mjs} +541 -537
  48. package/dist/client/{build-CZRvXrAL.mjs.map → build-BJDfnAyi.mjs.map} +1 -1
  49. package/dist/client/{buildFilterParams-ngVK3ybs.mjs → buildFilterParams-By33pG59.mjs} +1 -1
  50. package/dist/client/{buildFilterParams-ngVK3ybs.mjs.map → buildFilterParams-By33pG59.mjs.map} +1 -1
  51. package/dist/client/{constants-akdIBeTX.mjs → constants-CAjjRTo_.mjs} +9 -9
  52. package/dist/client/{constants-akdIBeTX.mjs.map → constants-CAjjRTo_.mjs.map} +1 -1
  53. package/dist/client/{containers-BE2QiLBs.mjs → containers-BuXUVb1N.mjs} +702 -702
  54. package/dist/client/{containers-BE2QiLBs.mjs.map → containers-BuXUVb1N.mjs.map} +1 -1
  55. package/dist/client/{containers-Cs5vOeR2.mjs → containers-Ca5V1EBS.mjs} +1 -1
  56. package/dist/client/{containers-Cs5vOeR2.mjs.map → containers-Ca5V1EBS.mjs.map} +1 -1
  57. package/dist/client/{containers-DmwhE9Uz.mjs → containers-NW7RnHTI.mjs} +2 -2
  58. package/dist/client/{containers-DmwhE9Uz.mjs.map → containers-NW7RnHTI.mjs.map} +1 -1
  59. package/dist/client/{flavors-CY7A6--v.mjs → flavors-D8oElC2K.mjs} +2 -2
  60. package/dist/client/{flavors-CY7A6--v.mjs.map → flavors-D8oElC2K.mjs.map} +1 -1
  61. package/dist/client/flavors-qvgPSI7J.mjs +613 -0
  62. package/dist/client/flavors-qvgPSI7J.mjs.map +1 -0
  63. package/dist/client/{floatingips-BtL4d4m-.mjs → floatingips-Be3zLoaD.mjs} +85 -85
  64. package/dist/client/{floatingips-BtL4d4m-.mjs.map → floatingips-Be3zLoaD.mjs.map} +1 -1
  65. package/dist/client/{images-I9gQfRa7.mjs → images-BiEBENaj.mjs} +2 -2
  66. package/dist/client/{images-I9gQfRa7.mjs.map → images-BiEBENaj.mjs.map} +1 -1
  67. package/dist/client/images-CCYBAphP2.mjs +1900 -0
  68. package/dist/client/images-CCYBAphP2.mjs.map +1 -0
  69. package/dist/client/index.js +109 -109
  70. package/dist/client/index.js.map +1 -1
  71. package/dist/client/{network-SCVadZsv.mjs → network-nbSbl0X0.mjs} +1 -1
  72. package/dist/client/{network-SCVadZsv.mjs.map → network-nbSbl0X0.mjs.map} +1 -1
  73. package/dist/client/{objects-BrYe_RaJ.mjs → objects-CU5ws07o.mjs} +2 -2
  74. package/dist/client/{objects-BrYe_RaJ.mjs.map → objects-CU5ws07o.mjs.map} +1 -1
  75. package/dist/client/{objects-DOYFFn3Y.mjs → objects-FXN0VWLI.mjs} +1791 -1791
  76. package/dist/client/{objects-DOYFFn3Y.mjs.map → objects-FXN0VWLI.mjs.map} +1 -1
  77. package/dist/client/{objects-B4yrYf_a.mjs → objects-GmuIOaHd.mjs} +1 -1
  78. package/dist/client/{objects-B4yrYf_a.mjs.map → objects-GmuIOaHd.mjs.map} +1 -1
  79. package/dist/client/{overview-DTLIAKkJ.mjs → overview-B3gdnWTG.mjs} +2 -2
  80. package/dist/client/{overview-DTLIAKkJ.mjs.map → overview-B3gdnWTG.mjs.map} +1 -1
  81. package/dist/client/{overview-BjRSFSBh.mjs → overview-DzYBiNfD.mjs} +2 -2
  82. package/dist/client/{overview-BjRSFSBh.mjs.map → overview-DzYBiNfD.mjs.map} +1 -1
  83. package/dist/client/{overview-CmQkJ4Hh.mjs → overview-EhfPY8Je.mjs} +2 -2
  84. package/dist/client/{overview-CmQkJ4Hh.mjs.map → overview-EhfPY8Je.mjs.map} +1 -1
  85. package/dist/client/{overview-C4gjtc2q.mjs → overview-XueZI4LQ.mjs} +3 -3
  86. package/dist/client/{overview-C4gjtc2q.mjs.map → overview-XueZI4LQ.mjs.map} +1 -1
  87. package/dist/client/{pca-DzixU9Dl.mjs → pca-DSM71LhW.mjs} +2 -2
  88. package/dist/client/{pca-DzixU9Dl.mjs.map → pca-DSM71LhW.mjs.map} +1 -1
  89. package/dist/client/{pca-CYFJxSZ2.mjs → pca-x9if8xU-.mjs} +51 -51
  90. package/dist/client/{pca-CYFJxSZ2.mjs.map → pca-x9if8xU-.mjs.map} +1 -1
  91. package/dist/client/{projects-DwVawmll.mjs → projects-B6BPo2Ar.mjs} +2 -2
  92. package/dist/client/{projects-DwVawmll.mjs.map → projects-B6BPo2Ar.mjs.map} +1 -1
  93. package/dist/client/{projects-BsN4bvU2.mjs → projects-BilrmHLu.mjs} +1 -1
  94. package/dist/client/{projects-BsN4bvU2.mjs.map → projects-BilrmHLu.mjs.map} +1 -1
  95. package/dist/client/{projects-BtyjXGq2.mjs → projects-Bt0XptpG.mjs} +2 -2
  96. package/dist/client/{projects-BtyjXGq2.mjs.map → projects-Bt0XptpG.mjs.map} +1 -1
  97. package/dist/client/{projects-D3hOC1cy.mjs → projects-CnmZIB2Q.mjs} +25 -25
  98. package/dist/client/{projects-D3hOC1cy.mjs.map → projects-CnmZIB2Q.mjs.map} +1 -1
  99. package/dist/client/{securitygroups-DMCIDHQS.mjs → securitygroups-BdzieS7Z.mjs} +101 -101
  100. package/dist/client/{securitygroups-DMCIDHQS.mjs.map → securitygroups-BdzieS7Z.mjs.map} +1 -1
  101. package/dist/client/{useListWithFiltering-CEDh1LO-.mjs → useListWithFiltering-CqQbAjEe.mjs} +1 -1
  102. package/dist/client/{useListWithFiltering-CEDh1LO-.mjs.map → useListWithFiltering-CqQbAjEe.mjs.map} +1 -1
  103. package/package.json +2 -2
  104. package/dist/client/ListToolbar-C5lzTrit.mjs +0 -223
  105. package/dist/client/ListToolbar-C5lzTrit.mjs.map +0 -1
  106. package/dist/client/_floatingIpId-DdKnjdIV.mjs +0 -228
  107. package/dist/client/_floatingIpId-DdKnjdIV.mjs.map +0 -1
  108. package/dist/client/flavors-pEcGkCut.mjs +0 -565
  109. package/dist/client/flavors-pEcGkCut.mjs.map +0 -1
  110. package/dist/client/images-C19gCFSy.mjs +0 -1797
  111. package/dist/client/images-C19gCFSy.mjs.map +0 -1
@@ -1,11 +1,11 @@
1
- import { $ as e, A as t, F as n, H as r, I as i, J as a, K as o, M as s, T as c, U as l, W as u, Z as d, at as f, c as p, it as m, j as h, n as g, nt as _, s as v, tt as y } from "./build-CZRvXrAL.mjs";
1
+ import { E as e, G as t, I as n, L as r, M as i, N as a, Q as o, U as s, W as c, Y as l, at as u, c as d, et as f, j as p, n as m, nt as h, ot as g, q as _, rt as v, s as y } from "./build-BJDfnAyi.mjs";
2
2
  import { r as b } from "./trpcClient-BxguzNYF.mjs";
3
- import { t as x } from "./_pcaId-DX_S-3hE.mjs";
3
+ import { t as x } from "./_pcaId-D1ZEaCdp.mjs";
4
4
  import { i as S, s as C } from "./md-BivyCkGC.mjs";
5
5
  import { t as w } from "./useModal-DxxlilRm.mjs";
6
6
  import { t as T } from "./useProjectId-CgOTejka.mjs";
7
7
  import "./hooks-D0krAKvo.mjs";
8
- import { r as E, t as D } from "./constants-akdIBeTX.mjs";
8
+ import { r as E, t as D } from "./constants-CAjjRTo_.mjs";
9
9
  import { Fragment as O, jsx as k, jsxs as A } from "react/jsx-runtime";
10
10
  import { Fragment as j } from "react";
11
11
  import { useNavigate as M } from "@tanstack/react-router";
@@ -14,7 +14,7 @@ import { z as F } from "zod";
14
14
  import { useForm as I, useStore as L } from "@tanstack/react-form";
15
15
  //#region src/client/routes/_auth/projects/$projectId/services/pca/$pcaId/-components/-table/PcaCertificatesTableRow.tsx
16
16
  var R = ({ certificate: t }) => {
17
- let { i18n: r, _: i } = P(), o = M();
17
+ let { i18n: r, _: a } = P(), o = M();
18
18
  return /* @__PURE__ */ A(n, {
19
19
  "data-testid": `pca-certificate-row-${t.id}`,
20
20
  onClick: () => o({
@@ -26,12 +26,12 @@ var R = ({ certificate: t }) => {
26
26
  })
27
27
  }),
28
28
  children: [
29
- /* @__PURE__ */ k(h, { children: t.certificate_authority_id }),
30
- /* @__PURE__ */ k(h, { children: t.id }),
31
- /* @__PURE__ */ k(h, {
29
+ /* @__PURE__ */ k(i, { children: t.certificate_authority_id }),
30
+ /* @__PURE__ */ k(i, { children: t.id }),
31
+ /* @__PURE__ */ k(i, {
32
32
  onClick: (e) => e.stopPropagation(),
33
33
  className: "items-end pr-0",
34
- children: /* @__PURE__ */ k(e, { children: /* @__PURE__ */ k(c, { children: /* @__PURE__ */ k(a, {
34
+ children: /* @__PURE__ */ k(f, { children: /* @__PURE__ */ k(e, { children: /* @__PURE__ */ k(l, {
35
35
  label: r._({ id: "WIx31g" }),
36
36
  disabled: !0
37
37
  }) }) })
@@ -39,7 +39,7 @@ var R = ({ certificate: t }) => {
39
39
  ]
40
40
  }, t.id);
41
41
  }, z = ({ open: e, onClose: t, pcaId: n }) => {
42
- let { i18n: r, _: i } = P(), a = T(), s = b.useUtils(), { isPending: c, ...l } = b.services.pca.createCertificate.useMutation({ onSettled: () => s.services.pca.listCertificates.invalidate() }), u = I({
42
+ let { i18n: r, _: i } = P(), a = T(), s = b.useUtils(), { isPending: c, ...l } = b.services.pca.createCertificate.useMutation({ onSettled: () => s.services.pca.listCertificates.invalidate() }), d = I({
43
43
  defaultValues: { csr: "" },
44
44
  validators: { onSubmit: F.object({ csr: F.string().trim().min(1) }) },
45
45
  onSubmit: async ({ value: e }) => {
@@ -48,22 +48,22 @@ var R = ({ certificate: t }) => {
48
48
  certificate_authority_id: n,
49
49
  csr: e.csr.replace(/\\n/g, "\n"),
50
50
  configuration: { validity: { not_after: Math.floor(Date.now() / 1e3) + 480 * 60 } }
51
- }), p());
51
+ }), f());
52
52
  }
53
- }), p = () => {
54
- c || (u.reset(), l.reset(), t());
55
- }, h = L(u.store, (e) => e.values.csr);
56
- return /* @__PURE__ */ A(f, {
53
+ }), f = () => {
54
+ c || (d.reset(), l.reset(), t());
55
+ }, p = L(d.store, (e) => e.values.csr);
56
+ return /* @__PURE__ */ A(g, {
57
57
  open: e,
58
58
  size: "large",
59
59
  title: r._({ id: "BMogtG" }),
60
- onCancel: p,
60
+ onCancel: f,
61
61
  cancelButtonLabel: r._({ id: "dEgA5A" }),
62
62
  confirmButtonLabel: r._({ id: "tfDRzk" }),
63
- onConfirm: u.handleSubmit,
64
- disableConfirmButton: c || !(h.trim().length > 0),
63
+ onConfirm: d.handleSubmit,
64
+ disableConfirmButton: c || !(p.trim().length > 0),
65
65
  children: [
66
- l.error && /* @__PURE__ */ k(o, {
66
+ l.error && /* @__PURE__ */ k(_, {
67
67
  dismissible: !1,
68
68
  variant: "error",
69
69
  className: "mb-4",
@@ -71,20 +71,20 @@ var R = ({ certificate: t }) => {
71
71
  }),
72
72
  c && /* @__PURE__ */ A("div", {
73
73
  className: "mb-4 flex items-center justify-center gap-2",
74
- children: [/* @__PURE__ */ k(d, { variant: "primary" }), /* @__PURE__ */ k("span", {
74
+ children: [/* @__PURE__ */ k(o, { variant: "primary" }), /* @__PURE__ */ k("span", {
75
75
  className: "text-theme-high text-sm",
76
76
  children: /* @__PURE__ */ k(N, { id: "khxtMT" })
77
77
  })]
78
78
  }),
79
- !c && /* @__PURE__ */ k(m, {
79
+ !c && /* @__PURE__ */ k(u, {
80
80
  className: "mb-0",
81
81
  id: "issue-end-entity-certificate-form",
82
82
  onSubmit: (e) => {
83
- e.preventDefault(), u.handleSubmit();
83
+ e.preventDefault(), d.handleSubmit();
84
84
  },
85
- children: /* @__PURE__ */ k(g, { children: /* @__PURE__ */ k(u.Field, {
85
+ children: /* @__PURE__ */ k(m, { children: /* @__PURE__ */ k(d.Field, {
86
86
  name: "csr",
87
- children: (e) => /* @__PURE__ */ k(v, {
87
+ children: (e) => /* @__PURE__ */ k(y, {
88
88
  id: e.name,
89
89
  name: e.name,
90
90
  value: e.state.value,
@@ -98,57 +98,57 @@ var R = ({ certificate: t }) => {
98
98
  })
99
99
  ]
100
100
  });
101
- }, B = ({ pcaId: e, pcaState: i }) => {
102
- let { i18n: a, _: o } = P(), s = T(), [c, l] = w(!1), f = () => [
101
+ }, B = ({ pcaId: e, pcaState: r }) => {
102
+ let { i18n: a, _: c } = P(), l = T(), [u, f] = w(!1), m = () => [
103
103
  a._({ id: "c1OE1x" }),
104
104
  a._({ id: "S0kLOH" }),
105
105
  ""
106
- ], { data: m = [], isLoading: g, isError: _, error: v } = b.services.pca.listCertificates.useQuery({
107
- project_id: s,
106
+ ], { data: g = [], isLoading: _, isError: v, error: y } = b.services.pca.listCertificates.useQuery({
107
+ project_id: l,
108
108
  certificate_authority_id: e
109
109
  });
110
- return g ? /* @__PURE__ */ A(y, {
110
+ return _ ? /* @__PURE__ */ A(h, {
111
111
  className: "py-8",
112
112
  distribution: "center",
113
113
  alignment: "center",
114
114
  direction: "vertical",
115
- children: [/* @__PURE__ */ k(d, {
115
+ children: [/* @__PURE__ */ k(o, {
116
116
  variant: "primary",
117
117
  size: "large",
118
118
  className: "mb-2"
119
119
  }), /* @__PURE__ */ k(N, { id: "T9o/az" })]
120
- }) : _ ? /* @__PURE__ */ k(y, {
120
+ }) : v ? /* @__PURE__ */ k(h, {
121
121
  className: "py-8",
122
122
  distribution: "center",
123
123
  alignment: "center",
124
124
  direction: "vertical",
125
- children: v?.message ?? a._({ id: "hz9da7" })
125
+ children: y?.message ?? a._({ id: "hz9da7" })
126
126
  }) : /* @__PURE__ */ A("div", {
127
127
  className: "relative",
128
- children: [i === "READY" && /* @__PURE__ */ A(O, { children: [/* @__PURE__ */ k(p, {
128
+ children: [r === "READY" && /* @__PURE__ */ A(O, { children: [/* @__PURE__ */ k(d, {
129
129
  variant: "primary",
130
130
  label: a._({ id: "BMogtG" }),
131
- onClick: l
132
- }), c && /* @__PURE__ */ k(z, {
133
- open: c,
134
- onClose: l,
131
+ onClick: f
132
+ }), u && /* @__PURE__ */ k(z, {
133
+ open: u,
134
+ onClose: f,
135
135
  pcaId: e
136
- })] }), m.length === 0 ? /* @__PURE__ */ k(r, {
137
- columns: f().length,
136
+ })] }), g.length === 0 ? /* @__PURE__ */ k(s, {
137
+ columns: m().length,
138
138
  className: "pca-certificates",
139
139
  "data-testid": "no-pcas-certificates",
140
- children: /* @__PURE__ */ k(n, { children: /* @__PURE__ */ A(h, {
141
- colSpan: f().length,
142
- children: [/* @__PURE__ */ k(t, { children: /* @__PURE__ */ k(N, { id: "kNeZrV" }) }), /* @__PURE__ */ k("p", { children: /* @__PURE__ */ k(N, { id: "7huC4O" }) })]
140
+ children: /* @__PURE__ */ k(n, { children: /* @__PURE__ */ A(i, {
141
+ colSpan: m().length,
142
+ children: [/* @__PURE__ */ k(p, { children: /* @__PURE__ */ k(N, { id: "kNeZrV" }) }), /* @__PURE__ */ k("p", { children: /* @__PURE__ */ k(N, { id: "7huC4O" }) })]
143
143
  }) })
144
- }) : /* @__PURE__ */ A(r, {
145
- columns: f().length,
146
- children: [/* @__PURE__ */ k(n, { children: f().map((e) => /* @__PURE__ */ k(u, { children: e }, e)) }), m.map((e) => /* @__PURE__ */ k(R, { certificate: e }, e.id))]
144
+ }) : /* @__PURE__ */ A(s, {
145
+ columns: m().length,
146
+ children: [/* @__PURE__ */ k(n, { children: m().map((e) => /* @__PURE__ */ k(t, { children: e }, e)) }), g.map((e) => /* @__PURE__ */ k(R, { certificate: e }, e.id))]
147
147
  })]
148
148
  });
149
149
  }, V = 86400, H = ({ open: e, onClose: t, pca: n }) => {
150
150
  let { i18n: r, _: i } = P(), a = T(), s = b.useUtils(), { isPending: c, ...l } = b.services.pca.createCertificate.useMutation({ onSettled: () => s.services.pca.listCertificates.invalidate() });
151
- return /* @__PURE__ */ A(f, {
151
+ return /* @__PURE__ */ A(g, {
152
152
  open: e,
153
153
  title: r._({ id: "8yVjU5" }),
154
154
  onCancel: () => {
@@ -165,23 +165,23 @@ var R = ({ certificate: t }) => {
165
165
  }), t());
166
166
  },
167
167
  disableConfirmButton: c || !n.csr,
168
- children: [l.error && /* @__PURE__ */ k(o, {
168
+ children: [l.error && /* @__PURE__ */ k(_, {
169
169
  dismissible: !1,
170
170
  variant: "error",
171
171
  className: "mb-4",
172
172
  children: l.error?.message
173
173
  }), c ? /* @__PURE__ */ A("div", {
174
174
  className: "flex items-center justify-center gap-2",
175
- children: [/* @__PURE__ */ k(d, { variant: "primary" }), /* @__PURE__ */ k("span", {
175
+ children: [/* @__PURE__ */ k(o, { variant: "primary" }), /* @__PURE__ */ k("span", {
176
176
  className: "text-theme-high text-sm",
177
177
  children: /* @__PURE__ */ k(N, { id: "1DbiGM" })
178
178
  })]
179
179
  }) : /* @__PURE__ */ k(N, { id: "MI6aae" })]
180
180
  });
181
181
  }, U = ({ pca: e }) => {
182
- let { i18n: t, _: n } = P(), r = M(), a = T(), [o, c] = w(!1), [u, d] = w(!1), f = () => r({
182
+ let { i18n: t, _: n } = P(), i = M(), o = T(), [s, l] = w(!1), [u, f] = w(!1), p = () => i({
183
183
  to: "/projects/$projectId/services/pca",
184
- params: { projectId: a }
184
+ params: { projectId: o }
185
185
  }), m = [
186
186
  {
187
187
  label: t._({ id: "c1OE1x" }),
@@ -201,14 +201,14 @@ var R = ({ certificate: t }) => {
201
201
  }
202
202
  ];
203
203
  return /* @__PURE__ */ A(O, { children: [
204
- /* @__PURE__ */ A(y, {
204
+ /* @__PURE__ */ A(h, {
205
205
  direction: "vertical",
206
206
  gap: "3",
207
207
  children: [
208
- /* @__PURE__ */ A(y, {
208
+ /* @__PURE__ */ A(h, {
209
209
  direction: "horizontal",
210
210
  distribution: "between",
211
- children: [/* @__PURE__ */ A(y, {
211
+ children: [/* @__PURE__ */ A(h, {
212
212
  gap: "2",
213
213
  alignment: "center",
214
214
  children: [/* @__PURE__ */ k("div", {
@@ -222,8 +222,8 @@ var R = ({ certificate: t }) => {
222
222
  D[e.state].text
223
223
  ]
224
224
  })]
225
- }), /* @__PURE__ */ k(p, {
226
- onClick: d,
225
+ }), /* @__PURE__ */ k(d, {
226
+ onClick: f,
227
227
  children: /* @__PURE__ */ k(N, { id: "Blsc/x" })
228
228
  })]
229
229
  }),
@@ -231,34 +231,34 @@ var R = ({ certificate: t }) => {
231
231
  className: "text-theme-highest text-sm",
232
232
  children: /* @__PURE__ */ k(N, { id: "dxMaZH" })
233
233
  }),
234
- e.state === "AWAITING_CERTIFICATE" && /* @__PURE__ */ A(y, {
234
+ e.state === "AWAITING_CERTIFICATE" && /* @__PURE__ */ A(h, {
235
235
  direction: "vertical",
236
236
  gap: "1",
237
237
  className: "bg-dt-background mb-1 rounded-sm p-2",
238
- children: [/* @__PURE__ */ A(y, {
238
+ children: [/* @__PURE__ */ A(h, {
239
239
  direction: "vertical",
240
240
  gap: "1",
241
241
  children: [/* @__PURE__ */ k("div", {
242
242
  className: "text-base font-bold",
243
243
  children: /* @__PURE__ */ k(N, { id: "cUKFby" })
244
244
  }), /* @__PURE__ */ k("div", { children: /* @__PURE__ */ k(N, { id: "+HVj+D" }) })]
245
- }), /* @__PURE__ */ k(y, {
245
+ }), /* @__PURE__ */ k(h, {
246
246
  direction: "horizontal",
247
247
  gap: "2",
248
248
  distribution: "end",
249
- children: /* @__PURE__ */ k(p, {
250
- onClick: c,
249
+ children: /* @__PURE__ */ k(d, {
250
+ onClick: l,
251
251
  children: /* @__PURE__ */ k(N, { id: "AirKNZ" })
252
252
  })
253
253
  })]
254
254
  }),
255
- /* @__PURE__ */ A(y, {
255
+ /* @__PURE__ */ A(h, {
256
256
  gap: "4",
257
257
  className: "grid grid-cols-2 items-start",
258
- children: [/* @__PURE__ */ k(l, {
258
+ children: [/* @__PURE__ */ k(c, {
259
259
  alignTerms: "right",
260
260
  className: "w-full",
261
- children: m.map(({ label: e, value: t }) => /* @__PURE__ */ A(j, { children: [/* @__PURE__ */ k(s, { children: e }), /* @__PURE__ */ k(i, { children: t || "—" })] }, e))
261
+ children: m.map(({ label: e, value: t }) => /* @__PURE__ */ A(j, { children: [/* @__PURE__ */ k(a, { children: e }), /* @__PURE__ */ k(r, { children: t || "—" })] }, e))
262
262
  }), /* @__PURE__ */ A("div", {
263
263
  className: "bg-dt-background w-full rounded-sm",
264
264
  children: [
@@ -266,33 +266,33 @@ var R = ({ certificate: t }) => {
266
266
  className: "text-theme-default p-4 text-xl font-bold",
267
267
  children: ["Certificate ", `${e.configuration?.subject?.common_name}`]
268
268
  }),
269
- /* @__PURE__ */ k(_, {}),
269
+ /* @__PURE__ */ k(v, {}),
270
270
  /* @__PURE__ */ k("div", {
271
271
  className: "p-4 text-sm break-all whitespace-pre-wrap",
272
272
  children: e?.csr
273
273
  }),
274
- /* @__PURE__ */ k(_, {}),
275
- /* @__PURE__ */ A(y, {
274
+ /* @__PURE__ */ k(v, {}),
275
+ /* @__PURE__ */ A(h, {
276
276
  gap: "2",
277
277
  distribution: "end",
278
278
  className: "p-4",
279
- children: [/* @__PURE__ */ k(p, { children: /* @__PURE__ */ k(C, {}) }), /* @__PURE__ */ k(p, { children: /* @__PURE__ */ k(S, {}) })]
279
+ children: [/* @__PURE__ */ k(d, { children: /* @__PURE__ */ k(C, {}) }), /* @__PURE__ */ k(d, { children: /* @__PURE__ */ k(S, {}) })]
280
280
  })
281
281
  ]
282
282
  })]
283
283
  })
284
284
  ]
285
285
  }),
286
- o && /* @__PURE__ */ k(H, {
286
+ s && /* @__PURE__ */ k(H, {
287
287
  pca: e,
288
- open: o,
289
- onClose: c
288
+ open: s,
289
+ onClose: l
290
290
  }),
291
291
  u && /* @__PURE__ */ k(E, {
292
292
  pca: e,
293
293
  open: u,
294
- onClose: d,
295
- onSuccess: f
294
+ onClose: f,
295
+ onSuccess: p
296
296
  }),
297
297
  /* @__PURE__ */ k(B, {
298
298
  pcaId: e.id,
@@ -303,28 +303,28 @@ var R = ({ certificate: t }) => {
303
303
  //#endregion
304
304
  //#region src/client/routes/_auth/projects/$projectId/services/pca/$pcaId/index.tsx?tsr-split=component
305
305
  function W() {
306
- let e = M(), t = T(), { pcaId: n } = x.useParams(), { isLoading: r, isError: i, error: a, data: o } = b.services.pca.getById.useQuery({
306
+ let e = M(), t = T(), { pcaId: n } = x.useParams(), { isLoading: r, isError: i, error: a, data: s } = b.services.pca.getById.useQuery({
307
307
  project_id: t,
308
308
  certificate_authority_id: n
309
309
  });
310
- if (r) return /* @__PURE__ */ A(y, {
310
+ if (r) return /* @__PURE__ */ A(h, {
311
311
  className: "fixed inset-0",
312
312
  distribution: "center",
313
313
  alignment: "center",
314
314
  direction: "vertical",
315
- children: [/* @__PURE__ */ k(d, {
315
+ children: [/* @__PURE__ */ k(o, {
316
316
  variant: "primary",
317
317
  size: "large",
318
318
  className: "mb-2"
319
319
  }), /* @__PURE__ */ k(N, { id: "og1m+J" })]
320
320
  });
321
- let s = () => e({
321
+ let c = () => e({
322
322
  to: "/projects/$projectId/services/pca",
323
323
  params: { projectId: t }
324
324
  });
325
325
  if (i) {
326
326
  let e = a?.message || "Unknown error";
327
- return /* @__PURE__ */ A(y, {
327
+ return /* @__PURE__ */ A(h, {
328
328
  className: "fixed inset-0",
329
329
  distribution: "center",
330
330
  alignment: "center",
@@ -339,15 +339,15 @@ function W() {
339
339
  className: "text-theme-highest",
340
340
  children: e
341
341
  }),
342
- /* @__PURE__ */ k(p, {
343
- onClick: s,
342
+ /* @__PURE__ */ k(d, {
343
+ onClick: c,
344
344
  variant: "primary",
345
345
  children: /* @__PURE__ */ k(N, { id: "HG0uMz" })
346
346
  })
347
347
  ]
348
348
  });
349
349
  }
350
- return o ? /* @__PURE__ */ k(U, { pca: o }) : /* @__PURE__ */ A(y, {
350
+ return s ? /* @__PURE__ */ k(U, { pca: s }) : /* @__PURE__ */ A(h, {
351
351
  className: "fixed inset-0",
352
352
  distribution: "center",
353
353
  alignment: "center",
@@ -356,8 +356,8 @@ function W() {
356
356
  children: [/* @__PURE__ */ k("p", {
357
357
  className: "text-theme-secondary",
358
358
  children: /* @__PURE__ */ k(N, { id: "Io2Dvq" })
359
- }), /* @__PURE__ */ k(p, {
360
- onClick: s,
359
+ }), /* @__PURE__ */ k(d, {
360
+ onClick: c,
361
361
  variant: "primary",
362
362
  children: /* @__PURE__ */ k(N, { id: "HG0uMz" })
363
363
  })]
@@ -366,4 +366,4 @@ function W() {
366
366
  //#endregion
367
367
  export { W as component };
368
368
 
369
- //# sourceMappingURL=_pcaId-DFkYJEb5.mjs.map
369
+ //# sourceMappingURL=_pcaId-CwlH1Kvl.mjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"_pcaId-DFkYJEb5.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","z","useForm","useStore","Modal","Form","FormSection","Spinner","Message","Textarea","trpcReact","useProjectId","IssueEndEntityCertificateModal","open","onClose","pcaId","useLingui","projectId","utils","useUtils","isPending","createCertificateMutation","services","pca","createCertificate","useMutation","onSettled","listCertificates","invalidate","formSchema","object","csr","string","trim","min","form","defaultValues","validators","onSubmit","value","mutateAsync","project_id","certificate_authority_id","replace","configuration","validity","not_after","Math","floor","Date","now","handleClose","reset","currentCsr","store","state","values","size","title","t","onCancel","cancelButtonLabel","confirmButtonLabel","onConfirm","handleSubmit","disableConfirmButton","length","error","dismissible","variant","className","message","div","span","id","e","preventDefault","Field","name","children","field","onBlur","handleBlur","onChange","handleChange","target","placeholder","errortext","meta","errors","map","join","disabled","Stack","Spinner","DataGrid","DataGridRow","DataGridCell","ContentHeading","DataGridHeadCell","Button","trpcReact","useProjectId","useModal","PcaCertificatesTableRow","IssueEndEntityCertificateModal","PcaCertificatesListContainer","pcaId","pcaState","useLingui","projectId","createIssueEndEntityOpen","toggleIssueEndEntity","columns","t","data","pcaCertificates","isLoading","isError","error","services","pca","listCertificates","useQuery","project_id","certificate_authority_id","className","distribution","alignment","direction","variant","size","message","div","label","onClick","open","onClose","length","data-testid","colSpan","p","map","certificate","id","Modal","Spinner","Message","trpcReact","useProjectId","VALIDITY_SECONDS","IssueSelfSignedCertificateModal","open","onClose","pca","useLingui","projectId","utils","useUtils","isPending","createCertificateMutation","services","createCertificate","useMutation","onSettled","listCertificates","invalidate","handleConfirm","csr","mutateAsync","project_id","certificate_authority_id","id","configuration","validity","not_after","Math","floor","Date","now","handleClose","reset","title","t","onCancel","cancelButtonLabel","confirmButtonLabel","onConfirm","disableConfirmButton","error","dismissible","variant","className","message","div","span","Fragment","MdDownload","MdContentCopy","useNavigate","Button","DescriptionDefinition","DescriptionList","DescriptionTerm","Divider","Stack","useProjectId","useModal","DeletePcaModal","STATE_CONFIG","PcaCertificatesListContainer","IssueSelfSignedCertificateModal","PcaDetailsView","pca","useLingui","navigate","projectId","issueSelfSignedModalOpen","toggleIssueSelfSignedModal","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","pcaState","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/-modals/IssueEndEntityCertificateModal.tsx","../../src/client/routes/_auth/projects/$projectId/services/pca/$pcaId/-components/PcaCertificatesListContainer.tsx","../../src/client/routes/_auth/projects/$projectId/services/pca/$pcaId/-components/-modals/IssueSelfSignedCertificateModal.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 { z } from \"zod\"\nimport { useForm, useStore } from \"@tanstack/react-form\"\nimport { Trans, useLingui } from \"@lingui/react/macro\"\nimport { Modal, Form, FormSection, Spinner, Message, Textarea } from \"@cloudoperators/juno-ui-components\"\nimport { trpcReact } from \"@/client/trpcClient\"\nimport { useProjectId } from \"@/client/hooks\"\n\nexport interface IssueEndEntityCertificateModalProps {\n open: boolean\n onClose: () => void\n pcaId: string\n}\n\nexport const IssueEndEntityCertificateModal = ({ open, onClose, pcaId }: IssueEndEntityCertificateModalProps) => {\n const { t } = useLingui()\n const projectId = useProjectId()\n const utils = trpcReact.useUtils()\n\n const { isPending, ...createCertificateMutation } = trpcReact.services.pca.createCertificate.useMutation({\n onSettled: () => utils.services.pca.listCertificates.invalidate(),\n })\n\n const formSchema = z.object({\n csr: z.string().trim().min(1),\n })\n\n const form = useForm({\n defaultValues: {\n csr: \"\",\n },\n validators: {\n onSubmit: formSchema,\n },\n onSubmit: async ({ value }) => {\n if (isPending) return\n\n await createCertificateMutation.mutateAsync({\n project_id: projectId,\n certificate_authority_id: pcaId,\n // Normalize to one format so users can paste raw multi-line CSRs with \\n along with already formatted ones\n csr: value.csr.replace(/\\\\n/g, \"\\n\"),\n configuration: { validity: { not_after: Math.floor(Date.now() / 1000) + 8 * 60 * 60 } },\n })\n handleClose()\n },\n })\n\n const handleClose = () => {\n if (isPending) return\n\n form.reset()\n createCertificateMutation.reset()\n onClose()\n }\n\n const currentCsr = useStore(form.store, (state) => state.values.csr)\n\n return (\n <Modal\n open={open}\n size=\"large\"\n title={t`Issue End Entity Certificate`}\n onCancel={handleClose}\n cancelButtonLabel={t`Cancel`}\n confirmButtonLabel={t`Save`}\n onConfirm={form.handleSubmit}\n disableConfirmButton={isPending || !(currentCsr.trim().length > 0)}\n >\n {createCertificateMutation.error && (\n <Message dismissible={false} variant=\"error\" className=\"mb-4\">\n {createCertificateMutation.error?.message}\n </Message>\n )}\n\n {isPending && (\n <div className=\"mb-4 flex items-center justify-center gap-2\">\n <Spinner variant=\"primary\" />\n <span className=\"text-theme-high text-sm\">\n <Trans>Issuing End Entity Certificate...</Trans>\n </span>\n </div>\n )}\n\n {!isPending && (\n <Form\n className=\"mb-0\"\n id=\"issue-end-entity-certificate-form\"\n onSubmit={(e) => {\n e.preventDefault()\n form.handleSubmit()\n }}\n >\n <FormSection>\n <form.Field\n name=\"csr\"\n children={(field) => (\n <Textarea\n id={field.name}\n name={field.name}\n value={field.state.value}\n onBlur={field.handleBlur}\n onChange={(e) => field.handleChange(e.target.value)}\n placeholder={t`Paste CSR code`}\n errortext={field.state.meta.errors.map((e) => e?.message).join(\", \")}\n disabled={isPending}\n />\n )}\n />\n </FormSection>\n </Form>\n )}\n </Modal>\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 { CertificateAuthority } from \"@/server/Services/types/pca\"\nimport { trpcReact } from \"@/client/trpcClient\"\nimport { useProjectId } from \"@/client/hooks\"\nimport { useModal } from \"@/client/utils/useModal\"\nimport { PcaCertificatesTableRow } from \"./-table/PcaCertificatesTableRow\"\nimport { IssueEndEntityCertificateModal } from \"./-modals/IssueEndEntityCertificateModal\"\n\ninterface PcaCertificatesListContainerProps {\n pcaId: string\n pcaState: CertificateAuthority[\"state\"]\n}\n\nexport const PcaCertificatesListContainer = ({ pcaId, pcaState }: PcaCertificatesListContainerProps) => {\n const { t } = useLingui()\n const projectId = useProjectId()\n const [createIssueEndEntityOpen, toggleIssueEndEntity] = useModal(false)\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 return (\n <div className=\"relative\">\n {pcaState === \"READY\" && (\n <>\n <Button variant=\"primary\" label={t`Issue End Entity Certificate`} onClick={toggleIssueEndEntity} />\n {createIssueEndEntityOpen && (\n <IssueEndEntityCertificateModal\n open={createIssueEndEntityOpen}\n onClose={toggleIssueEndEntity}\n pcaId={pcaId}\n />\n )}\n </>\n )}\n\n {pcaCertificates.length === 0 ? (\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 <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 )}\n </div>\n )\n}\n","import { Trans, useLingui } from \"@lingui/react/macro\"\nimport { Modal, Spinner, Message } from \"@cloudoperators/juno-ui-components\"\nimport { CertificateAuthority } from \"@/server/Services/types/pca\"\nimport { trpcReact } from \"@/client/trpcClient\"\nimport { useProjectId } from \"@/client/hooks\"\n\nconst VALIDITY_SECONDS = 86400 // 1 day\n\nexport interface IssueSelfSignedCertificateModalProps {\n open: boolean\n onClose: () => void\n pca: CertificateAuthority\n}\n\nexport const IssueSelfSignedCertificateModal = ({ open, onClose, pca }: IssueSelfSignedCertificateModalProps) => {\n const { t } = useLingui()\n const projectId = useProjectId()\n const utils = trpcReact.useUtils()\n\n const { isPending, ...createCertificateMutation } = trpcReact.services.pca.createCertificate.useMutation({\n onSettled: () => utils.services.pca.listCertificates.invalidate(),\n })\n\n const handleConfirm = async () => {\n if (isPending || !pca.csr) return\n\n await createCertificateMutation.mutateAsync({\n project_id: projectId,\n certificate_authority_id: pca.id,\n csr: pca.csr,\n configuration: {\n validity: {\n not_after: Math.floor(Date.now() / 1000) + VALIDITY_SECONDS,\n },\n },\n })\n onClose()\n }\n\n const handleClose = () => {\n if (isPending) return\n\n createCertificateMutation.reset()\n onClose()\n }\n\n return (\n <Modal\n open={open}\n title={t`Issue Self Signed Certificate`}\n onCancel={handleClose}\n cancelButtonLabel={t`Cancel`}\n confirmButtonLabel={t`Issue Certificate`}\n onConfirm={handleConfirm}\n disableConfirmButton={isPending || !pca.csr}\n >\n {createCertificateMutation.error && (\n <Message dismissible={false} variant=\"error\" className=\"mb-4\">\n {createCertificateMutation.error?.message}\n </Message>\n )}\n\n {isPending ? (\n <div className=\"flex items-center justify-center gap-2\">\n <Spinner variant=\"primary\" />\n <span className=\"text-theme-high text-sm\">\n <Trans>Issuing Self-Signed Certificate...</Trans>\n </span>\n </div>\n ) : (\n <Trans>This action will create a self-signed CA certificate.</Trans>\n )}\n </Modal>\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\"\nimport { IssueSelfSignedCertificateModal } from \"./-modals/IssueSelfSignedCertificateModal\"\n// import { ImportExternallySignedCertificateModal } from \"./ImportExternallySignedCertificateModal\"\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 [issueSelfSignedModalOpen, toggleIssueSelfSignedModal] = useModal(false)\n // I will enable this modal on import-certificate task of the EPIC\n // const [importExternallySignedModalOpen, toggleImportExternallySignedModal] = useModal(false)\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 {pca.state === \"AWAITING_CERTIFICATE\" && (\n <Stack direction=\"vertical\" gap=\"1\" className=\"bg-dt-background mb-1 rounded-sm p-2\">\n <Stack direction=\"vertical\" gap=\"1\">\n <div className=\"text-base font-bold\">\n <Trans>Lifecycle action</Trans>\n </div>\n <div>\n <Trans>Add a Signed Certificate to your CA to activate it</Trans>\n </div>\n </Stack>\n <Stack direction=\"horizontal\" gap=\"2\" distribution=\"end\">\n <Button onClick={toggleIssueSelfSignedModal}>\n <Trans>Issue Self-Signed Certificate</Trans>\n </Button>\n {/* <Button onClick={toggleImportExternallySignedModal}>\n <Trans>Import Signed Certificate</Trans>\n </Button> */}\n </Stack>\n </Stack>\n )}\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 {/* {importExternallySignedModalOpen && (\n <ImportExternallySignedCertificateModal\n pcaId={pca.id}\n open={importExternallySignedModalOpen}\n onClose={toggleImportExternallySignedModal}\n />\n )} */}\n\n {issueSelfSignedModalOpen && (\n <IssueSelfSignedCertificateModal\n pca={pca}\n open={issueSelfSignedModalOpen}\n onClose={toggleIssueSelfSignedModal}\n />\n )}\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} pcaState={pca.state} />\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
+ {"version":3,"file":"_pcaId-CwlH1Kvl.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","z","useForm","useStore","Modal","Form","FormSection","Spinner","Message","Textarea","trpcReact","useProjectId","IssueEndEntityCertificateModal","open","onClose","pcaId","useLingui","projectId","utils","useUtils","isPending","createCertificateMutation","services","pca","createCertificate","useMutation","onSettled","listCertificates","invalidate","formSchema","object","csr","string","trim","min","form","defaultValues","validators","onSubmit","value","mutateAsync","project_id","certificate_authority_id","replace","configuration","validity","not_after","Math","floor","Date","now","handleClose","reset","currentCsr","store","state","values","size","title","t","onCancel","cancelButtonLabel","confirmButtonLabel","onConfirm","handleSubmit","disableConfirmButton","length","error","dismissible","variant","className","message","div","span","id","e","preventDefault","Field","name","children","field","onBlur","handleBlur","onChange","handleChange","target","placeholder","errortext","meta","errors","map","join","disabled","Stack","Spinner","DataGrid","DataGridRow","DataGridCell","ContentHeading","DataGridHeadCell","Button","trpcReact","useProjectId","useModal","PcaCertificatesTableRow","IssueEndEntityCertificateModal","PcaCertificatesListContainer","pcaId","pcaState","useLingui","projectId","createIssueEndEntityOpen","toggleIssueEndEntity","columns","t","data","pcaCertificates","isLoading","isError","error","services","pca","listCertificates","useQuery","project_id","certificate_authority_id","className","distribution","alignment","direction","variant","size","message","div","label","onClick","open","onClose","length","data-testid","colSpan","p","map","certificate","id","Modal","Spinner","Message","trpcReact","useProjectId","VALIDITY_SECONDS","IssueSelfSignedCertificateModal","open","onClose","pca","useLingui","projectId","utils","useUtils","isPending","createCertificateMutation","services","createCertificate","useMutation","onSettled","listCertificates","invalidate","handleConfirm","csr","mutateAsync","project_id","certificate_authority_id","id","configuration","validity","not_after","Math","floor","Date","now","handleClose","reset","title","t","onCancel","cancelButtonLabel","confirmButtonLabel","onConfirm","disableConfirmButton","error","dismissible","variant","className","message","div","span","Fragment","MdDownload","MdContentCopy","useNavigate","Button","DescriptionDefinition","DescriptionList","DescriptionTerm","Divider","Stack","useProjectId","useModal","DeletePcaModal","STATE_CONFIG","PcaCertificatesListContainer","IssueSelfSignedCertificateModal","PcaDetailsView","pca","useLingui","navigate","projectId","issueSelfSignedModalOpen","toggleIssueSelfSignedModal","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","pcaState","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/-modals/IssueEndEntityCertificateModal.tsx","../../src/client/routes/_auth/projects/$projectId/services/pca/$pcaId/-components/PcaCertificatesListContainer.tsx","../../src/client/routes/_auth/projects/$projectId/services/pca/$pcaId/-components/-modals/IssueSelfSignedCertificateModal.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 { z } from \"zod\"\nimport { useForm, useStore } from \"@tanstack/react-form\"\nimport { Trans, useLingui } from \"@lingui/react/macro\"\nimport { Modal, Form, FormSection, Spinner, Message, Textarea } from \"@cloudoperators/juno-ui-components\"\nimport { trpcReact } from \"@/client/trpcClient\"\nimport { useProjectId } from \"@/client/hooks\"\n\nexport interface IssueEndEntityCertificateModalProps {\n open: boolean\n onClose: () => void\n pcaId: string\n}\n\nexport const IssueEndEntityCertificateModal = ({ open, onClose, pcaId }: IssueEndEntityCertificateModalProps) => {\n const { t } = useLingui()\n const projectId = useProjectId()\n const utils = trpcReact.useUtils()\n\n const { isPending, ...createCertificateMutation } = trpcReact.services.pca.createCertificate.useMutation({\n onSettled: () => utils.services.pca.listCertificates.invalidate(),\n })\n\n const formSchema = z.object({\n csr: z.string().trim().min(1),\n })\n\n const form = useForm({\n defaultValues: {\n csr: \"\",\n },\n validators: {\n onSubmit: formSchema,\n },\n onSubmit: async ({ value }) => {\n if (isPending) return\n\n await createCertificateMutation.mutateAsync({\n project_id: projectId,\n certificate_authority_id: pcaId,\n // Normalize to one format so users can paste raw multi-line CSRs with \\n along with already formatted ones\n csr: value.csr.replace(/\\\\n/g, \"\\n\"),\n configuration: { validity: { not_after: Math.floor(Date.now() / 1000) + 8 * 60 * 60 } },\n })\n handleClose()\n },\n })\n\n const handleClose = () => {\n if (isPending) return\n\n form.reset()\n createCertificateMutation.reset()\n onClose()\n }\n\n const currentCsr = useStore(form.store, (state) => state.values.csr)\n\n return (\n <Modal\n open={open}\n size=\"large\"\n title={t`Issue End Entity Certificate`}\n onCancel={handleClose}\n cancelButtonLabel={t`Cancel`}\n confirmButtonLabel={t`Save`}\n onConfirm={form.handleSubmit}\n disableConfirmButton={isPending || !(currentCsr.trim().length > 0)}\n >\n {createCertificateMutation.error && (\n <Message dismissible={false} variant=\"error\" className=\"mb-4\">\n {createCertificateMutation.error?.message}\n </Message>\n )}\n\n {isPending && (\n <div className=\"mb-4 flex items-center justify-center gap-2\">\n <Spinner variant=\"primary\" />\n <span className=\"text-theme-high text-sm\">\n <Trans>Issuing End Entity Certificate...</Trans>\n </span>\n </div>\n )}\n\n {!isPending && (\n <Form\n className=\"mb-0\"\n id=\"issue-end-entity-certificate-form\"\n onSubmit={(e) => {\n e.preventDefault()\n form.handleSubmit()\n }}\n >\n <FormSection>\n <form.Field\n name=\"csr\"\n children={(field) => (\n <Textarea\n id={field.name}\n name={field.name}\n value={field.state.value}\n onBlur={field.handleBlur}\n onChange={(e) => field.handleChange(e.target.value)}\n placeholder={t`Paste CSR code`}\n errortext={field.state.meta.errors.map((e) => e?.message).join(\", \")}\n disabled={isPending}\n />\n )}\n />\n </FormSection>\n </Form>\n )}\n </Modal>\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 { CertificateAuthority } from \"@/server/Services/types/pca\"\nimport { trpcReact } from \"@/client/trpcClient\"\nimport { useProjectId } from \"@/client/hooks\"\nimport { useModal } from \"@/client/utils/useModal\"\nimport { PcaCertificatesTableRow } from \"./-table/PcaCertificatesTableRow\"\nimport { IssueEndEntityCertificateModal } from \"./-modals/IssueEndEntityCertificateModal\"\n\ninterface PcaCertificatesListContainerProps {\n pcaId: string\n pcaState: CertificateAuthority[\"state\"]\n}\n\nexport const PcaCertificatesListContainer = ({ pcaId, pcaState }: PcaCertificatesListContainerProps) => {\n const { t } = useLingui()\n const projectId = useProjectId()\n const [createIssueEndEntityOpen, toggleIssueEndEntity] = useModal(false)\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 return (\n <div className=\"relative\">\n {pcaState === \"READY\" && (\n <>\n <Button variant=\"primary\" label={t`Issue End Entity Certificate`} onClick={toggleIssueEndEntity} />\n {createIssueEndEntityOpen && (\n <IssueEndEntityCertificateModal\n open={createIssueEndEntityOpen}\n onClose={toggleIssueEndEntity}\n pcaId={pcaId}\n />\n )}\n </>\n )}\n\n {pcaCertificates.length === 0 ? (\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 <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 )}\n </div>\n )\n}\n","import { Trans, useLingui } from \"@lingui/react/macro\"\nimport { Modal, Spinner, Message } from \"@cloudoperators/juno-ui-components\"\nimport { CertificateAuthority } from \"@/server/Services/types/pca\"\nimport { trpcReact } from \"@/client/trpcClient\"\nimport { useProjectId } from \"@/client/hooks\"\n\nconst VALIDITY_SECONDS = 86400 // 1 day\n\nexport interface IssueSelfSignedCertificateModalProps {\n open: boolean\n onClose: () => void\n pca: CertificateAuthority\n}\n\nexport const IssueSelfSignedCertificateModal = ({ open, onClose, pca }: IssueSelfSignedCertificateModalProps) => {\n const { t } = useLingui()\n const projectId = useProjectId()\n const utils = trpcReact.useUtils()\n\n const { isPending, ...createCertificateMutation } = trpcReact.services.pca.createCertificate.useMutation({\n onSettled: () => utils.services.pca.listCertificates.invalidate(),\n })\n\n const handleConfirm = async () => {\n if (isPending || !pca.csr) return\n\n await createCertificateMutation.mutateAsync({\n project_id: projectId,\n certificate_authority_id: pca.id,\n csr: pca.csr,\n configuration: {\n validity: {\n not_after: Math.floor(Date.now() / 1000) + VALIDITY_SECONDS,\n },\n },\n })\n onClose()\n }\n\n const handleClose = () => {\n if (isPending) return\n\n createCertificateMutation.reset()\n onClose()\n }\n\n return (\n <Modal\n open={open}\n title={t`Issue Self Signed Certificate`}\n onCancel={handleClose}\n cancelButtonLabel={t`Cancel`}\n confirmButtonLabel={t`Issue Certificate`}\n onConfirm={handleConfirm}\n disableConfirmButton={isPending || !pca.csr}\n >\n {createCertificateMutation.error && (\n <Message dismissible={false} variant=\"error\" className=\"mb-4\">\n {createCertificateMutation.error?.message}\n </Message>\n )}\n\n {isPending ? (\n <div className=\"flex items-center justify-center gap-2\">\n <Spinner variant=\"primary\" />\n <span className=\"text-theme-high text-sm\">\n <Trans>Issuing Self-Signed Certificate...</Trans>\n </span>\n </div>\n ) : (\n <Trans>This action will create a self-signed CA certificate.</Trans>\n )}\n </Modal>\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\"\nimport { IssueSelfSignedCertificateModal } from \"./-modals/IssueSelfSignedCertificateModal\"\n// import { ImportExternallySignedCertificateModal } from \"./ImportExternallySignedCertificateModal\"\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 [issueSelfSignedModalOpen, toggleIssueSelfSignedModal] = useModal(false)\n // I will enable this modal on import-certificate task of the EPIC\n // const [importExternallySignedModalOpen, toggleImportExternallySignedModal] = useModal(false)\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 {pca.state === \"AWAITING_CERTIFICATE\" && (\n <Stack direction=\"vertical\" gap=\"1\" className=\"bg-dt-background mb-1 rounded-sm p-2\">\n <Stack direction=\"vertical\" gap=\"1\">\n <div className=\"text-base font-bold\">\n <Trans>Lifecycle action</Trans>\n </div>\n <div>\n <Trans>Add a Signed Certificate to your CA to activate it</Trans>\n </div>\n </Stack>\n <Stack direction=\"horizontal\" gap=\"2\" distribution=\"end\">\n <Button onClick={toggleIssueSelfSignedModal}>\n <Trans>Issue Self-Signed Certificate</Trans>\n </Button>\n {/* <Button onClick={toggleImportExternallySignedModal}>\n <Trans>Import Signed Certificate</Trans>\n </Button> */}\n </Stack>\n </Stack>\n )}\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 {/* {importExternallySignedModalOpen && (\n <ImportExternallySignedCertificateModal\n pcaId={pca.id}\n open={importExternallySignedModalOpen}\n onClose={toggleImportExternallySignedModal}\n />\n )} */}\n\n {issueSelfSignedModalOpen && (\n <IssueSelfSignedCertificateModal\n pca={pca}\n open={issueSelfSignedModalOpen}\n onClose={toggleIssueSelfSignedModal}\n />\n )}\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} pcaState={pca.state} />\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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"}
@@ -19,7 +19,7 @@ var i = t("/_auth/projects/$projectId/services/pca/$pcaId/")({
19
19
  return { pcaTitle: n?.configuration?.subject?.common_name || n?.id || null };
20
20
  },
21
21
  head: ({ loaderData: e }) => ({ meta: [{ title: e?.pcaTitle ?? "Certificate Authority" }] }),
22
- component: n(() => import("./_pcaId-DFkYJEb5.mjs"), "component"),
22
+ component: n(() => import("./_pcaId-CwlH1Kvl.mjs"), "component"),
23
23
  beforeLoad: async ({ context: t, params: n }) => {
24
24
  let { trpcClient: i } = t, a = e(await i?.auth.getAvailableServices.query() || []);
25
25
  if (!(a.pca?.["clavis-beta"] || a.pca?.["clavis-dev"])) throw r({
@@ -31,4 +31,4 @@ var i = t("/_auth/projects/$projectId/services/pca/$pcaId/")({
31
31
  //#endregion
32
32
  export { i as t };
33
33
 
34
- //# sourceMappingURL=_pcaId-DX_S-3hE.mjs.map
34
+ //# sourceMappingURL=_pcaId-D1ZEaCdp.mjs.map