@cobaltcore-dev/aurora 0.4.0 → 0.5.0

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 (157) hide show
  1. package/README.md +73 -77
  2. package/dist/client/AuroraApp.d.ts +15 -0
  3. package/dist/client/{AuthProvider-D-5Jpa6F.mjs → AuthProvider-Co4d0WzB.mjs} +3 -3
  4. package/dist/client/{AuthProvider-D-5Jpa6F.mjs.map → AuthProvider-Co4d0WzB.mjs.map} +1 -1
  5. package/dist/client/{ContentHeader-BXZoN3B9.mjs → ContentHeader-xQVhO2yT.mjs} +20 -20
  6. package/dist/client/{ContentHeader-BXZoN3B9.mjs.map → ContentHeader-xQVhO2yT.mjs.map} +1 -1
  7. package/dist/client/{DeleteFlavorModal-BusYn32r.mjs → DeleteFlavorModal-CHTUZ3YV.mjs} +211 -202
  8. package/dist/client/DeleteFlavorModal-CHTUZ3YV.mjs.map +1 -0
  9. package/dist/client/{EditSecurityGroupModal-DK3WYikA.mjs → EditSecurityGroupModal-CWHHx2Xk.mjs} +22 -22
  10. package/dist/client/{EditSecurityGroupModal-DK3WYikA.mjs.map → EditSecurityGroupModal-CWHHx2Xk.mjs.map} +1 -1
  11. package/dist/client/{FiltersInput-OVeIJzIo.mjs → FiltersInput-UKJpNFdr.mjs} +10 -10
  12. package/dist/client/{FiltersInput-OVeIJzIo.mjs.map → FiltersInput-UKJpNFdr.mjs.map} +1 -1
  13. package/dist/client/{FloatingIpActionModals-Dok7fJss.mjs → FloatingIpActionModals-caXn6bYo.mjs} +54 -54
  14. package/dist/client/{FloatingIpActionModals-Dok7fJss.mjs.map → FloatingIpActionModals-caXn6bYo.mjs.map} +1 -1
  15. package/dist/client/{ImageToastNotifications-BG9LPnXf.mjs → ImageToastNotifications-BWimIzu_.mjs} +227 -227
  16. package/dist/client/{ImageToastNotifications-BG9LPnXf.mjs.map → ImageToastNotifications-BWimIzu_.mjs.map} +1 -1
  17. package/dist/client/{RouteError-pDEWC_k7.mjs → RouteError-CUj_m3gu.mjs} +6 -6
  18. package/dist/client/{RouteError-pDEWC_k7.mjs.map → RouteError-CUj_m3gu.mjs.map} +1 -1
  19. package/dist/client/{SortInput-DXWSqSny.mjs → SortInput-GQlQBlAj.mjs} +6 -6
  20. package/dist/client/{SortInput-DXWSqSny.mjs.map → SortInput-GQlQBlAj.mjs.map} +1 -1
  21. package/dist/client/{_auth-CJj1Cnbm.mjs → _auth-DXJkv9QO.mjs} +3 -3
  22. package/dist/client/{_auth-CJj1Cnbm.mjs.map → _auth-DXJkv9QO.mjs.map} +1 -1
  23. package/dist/client/_flavorId-C5dc1N_j.mjs +194 -0
  24. package/dist/client/_flavorId-C5dc1N_j.mjs.map +1 -0
  25. package/dist/client/{_flavorId-BoNcxYmF.mjs → _flavorId-sUWG0xuy.mjs} +15 -15
  26. package/dist/client/_flavorId-sUWG0xuy.mjs.map +1 -0
  27. package/dist/client/{_floatingIpId-DF_BSJN6.mjs → _floatingIpId-COK_TBrz2.mjs} +42 -42
  28. package/dist/client/_floatingIpId-COK_TBrz2.mjs.map +1 -0
  29. package/dist/client/{_floatingIpId-D33bOEmH.mjs → _floatingIpId-CT4y-60o.mjs} +3 -3
  30. package/dist/client/{_floatingIpId-D33bOEmH.mjs.map → _floatingIpId-CT4y-60o.mjs.map} +1 -1
  31. package/dist/client/_imageId-n3RcnhAR.mjs +534 -0
  32. package/dist/client/_imageId-n3RcnhAR.mjs.map +1 -0
  33. package/dist/client/{_pcaId-CbBhBrX1.mjs → _pcaId-B-f_6kqs.mjs} +99 -99
  34. package/dist/client/{_pcaId-CbBhBrX1.mjs.map → _pcaId-B-f_6kqs.mjs.map} +1 -1
  35. package/dist/client/{_pcaId-BYCoeK6_.mjs → _pcaId-ChnM_t-9.mjs} +3 -3
  36. package/dist/client/{_pcaId-BYCoeK6_.mjs.map → _pcaId-ChnM_t-9.mjs.map} +1 -1
  37. package/dist/client/_projectId-26bw-_rm.mjs +46 -0
  38. package/dist/client/_projectId-26bw-_rm.mjs.map +1 -0
  39. package/dist/client/{_projectId-BwLMEMGC.mjs → _projectId-BK9UqeYw.mjs} +14 -14
  40. package/dist/client/{_projectId-BwLMEMGC.mjs.map → _projectId-BK9UqeYw.mjs.map} +1 -1
  41. package/dist/client/{_projectId-D35MN1kY.mjs → _projectId-CCtpAQ8m.mjs} +78 -95
  42. package/dist/client/_projectId-CCtpAQ8m.mjs.map +1 -0
  43. package/dist/client/{_projectId-OW2xkK43.mjs → _projectId-Dhb4AyBD.mjs} +3 -3
  44. package/dist/client/{_projectId-OW2xkK43.mjs.map → _projectId-Dhb4AyBD.mjs.map} +1 -1
  45. package/dist/client/{_securityGroupId-B-Z-CzLp.mjs → _securityGroupId-CR1mKICQ.mjs} +3 -3
  46. package/dist/client/{_securityGroupId-B-Z-CzLp.mjs.map → _securityGroupId-CR1mKICQ.mjs.map} +1 -1
  47. package/dist/client/{_securityGroupId-B1bOYRbX.mjs → _securityGroupId-DroYG6cA.mjs} +254 -255
  48. package/dist/client/{_securityGroupId-B1bOYRbX.mjs.map → _securityGroupId-DroYG6cA.mjs.map} +1 -1
  49. package/dist/client/about-969pIiZ9.mjs +92 -0
  50. package/dist/client/{about-DLn1ShhF.mjs.map → about-969pIiZ9.mjs.map} +1 -1
  51. package/dist/client/aurora-DDzsst74.mjs +19 -0
  52. package/dist/client/{aurora-CRcxVUCo.mjs.map → aurora-DDzsst74.mjs.map} +1 -1
  53. package/dist/client/{build-BJDfnAyi.mjs → build-DracvfrJ.mjs} +5 -5
  54. package/dist/client/{build-BJDfnAyi.mjs.map → build-DracvfrJ.mjs.map} +1 -1
  55. package/dist/client/{buildFilterParams-TeyosGyK.mjs → buildFilterParams-DoZzMKX9.mjs} +1 -1
  56. package/dist/client/{buildFilterParams-TeyosGyK.mjs.map → buildFilterParams-DoZzMKX9.mjs.map} +1 -1
  57. package/dist/client/{cn-C3laVXMm.mjs → cn-DM4Cy3jv.mjs} +1 -1
  58. package/dist/client/{cn-C3laVXMm.mjs.map → cn-DM4Cy3jv.mjs.map} +1 -1
  59. package/dist/client/{constants-B-P2r5F1.mjs → constants-4lVQXort.mjs} +22 -22
  60. package/dist/client/{constants-B-P2r5F1.mjs.map → constants-4lVQXort.mjs.map} +1 -1
  61. package/dist/client/{containers-BjWqjNOx.mjs → containers-DGY2hoWw.mjs} +3 -3
  62. package/dist/client/{containers-BjWqjNOx.mjs.map → containers-DGY2hoWw.mjs.map} +1 -1
  63. package/dist/client/containers-ZMFTRaQL.mjs +3277 -0
  64. package/dist/client/containers-ZMFTRaQL.mjs.map +1 -0
  65. package/dist/client/{containers-DsRWc1L5.mjs → containers-xfsYgRyf.mjs} +2 -2
  66. package/dist/client/{containers-DsRWc1L5.mjs.map → containers-xfsYgRyf.mjs.map} +1 -1
  67. package/dist/client/{flavors-D8oElC2K.mjs → flavors-C4GtoybP.mjs} +2 -2
  68. package/dist/client/{flavors-D8oElC2K.mjs.map → flavors-C4GtoybP.mjs.map} +1 -1
  69. package/dist/client/{flavors-qvgPSI7J.mjs → flavors-CpirO_nr.mjs} +167 -148
  70. package/dist/client/flavors-CpirO_nr.mjs.map +1 -0
  71. package/dist/client/{flavors-BXPYAFyQ.mjs → flavors-DWMZ6TuJ.mjs} +2 -2
  72. package/dist/client/{flavors-BXPYAFyQ.mjs.map → flavors-DWMZ6TuJ.mjs.map} +1 -1
  73. package/dist/client/{floatingips-Fa6ocNUu.mjs → floatingips-BUf_oLRl.mjs} +74 -75
  74. package/dist/client/{floatingips-Fa6ocNUu.mjs.map → floatingips-BUf_oLRl.mjs.map} +1 -1
  75. package/dist/client/{formatBytes-tQBEnPoL.mjs → formatBytes-CZv_XyCY.mjs} +1 -1
  76. package/dist/client/{formatBytes-tQBEnPoL.mjs.map → formatBytes-CZv_XyCY.mjs.map} +1 -1
  77. package/dist/client/{helpers--JWXi40U.mjs → helpers-1PpYf-fC.mjs} +1 -1
  78. package/dist/client/{helpers--JWXi40U.mjs.map → helpers-1PpYf-fC.mjs.map} +1 -1
  79. package/dist/client/hooks-dSArr2Ca.mjs +2 -0
  80. package/dist/client/{images-tYfyOkX8.mjs → images-CsonlmFx.mjs} +3 -3
  81. package/dist/client/{images-tYfyOkX8.mjs.map → images-CsonlmFx.mjs.map} +1 -1
  82. package/dist/client/{images-CSFfefAu.mjs → images-Da1t5KPh.mjs} +507 -535
  83. package/dist/client/images-Da1t5KPh.mjs.map +1 -0
  84. package/dist/client/{images-DM9I8G0p.mjs → images-NBf2bV43.mjs} +2 -2
  85. package/dist/client/{images-DM9I8G0p.mjs.map → images-NBf2bV43.mjs.map} +1 -1
  86. package/dist/client/{images-CTLCY-yY.mjs → images-QnWf63uj.mjs} +2 -2
  87. package/dist/client/{images-CTLCY-yY.mjs.map → images-QnWf63uj.mjs.map} +1 -1
  88. package/dist/client/index.js +252 -258
  89. package/dist/client/index.js.map +1 -1
  90. package/dist/client/{md-BivyCkGC.mjs → md-sBiSNVSQ.mjs} +7 -7
  91. package/dist/client/{md-BivyCkGC.mjs.map → md-sBiSNVSQ.mjs.map} +1 -1
  92. package/dist/client/{network-rYLHyf15.mjs → network-DuZm76BZ.mjs} +2 -2
  93. package/dist/client/{network-rYLHyf15.mjs.map → network-DuZm76BZ.mjs.map} +1 -1
  94. package/dist/client/{objects-BciXwZ00.mjs → objects-B89dYCBq.mjs} +3 -3
  95. package/dist/client/{objects-BciXwZ00.mjs.map → objects-B89dYCBq.mjs.map} +1 -1
  96. package/dist/client/{objects-Cdew99tK.mjs → objects-CuFLUOe1.mjs} +2 -2
  97. package/dist/client/{objects-Cdew99tK.mjs.map → objects-CuFLUOe1.mjs.map} +1 -1
  98. package/dist/client/objects-H0NN_Sja.mjs +5460 -0
  99. package/dist/client/objects-H0NN_Sja.mjs.map +1 -0
  100. package/dist/client/{pca-oc7J0_Xd.mjs → pca-C-UFjicP.mjs} +42 -42
  101. package/dist/client/{pca-oc7J0_Xd.mjs.map → pca-C-UFjicP.mjs.map} +1 -1
  102. package/dist/client/{pca-COmKvp3J.mjs → pca-CtU6REww.mjs} +2 -2
  103. package/dist/client/{pca-COmKvp3J.mjs.map → pca-CtU6REww.mjs.map} +1 -1
  104. package/dist/client/{projects-Dl5XkXUP.mjs → projects-C-sjd9T5.mjs} +3 -3
  105. package/dist/client/{projects-Dl5XkXUP.mjs.map → projects-C-sjd9T5.mjs.map} +1 -1
  106. package/dist/client/{projects-BUabCzvw.mjs → projects-DNXsDnJM.mjs} +25 -21
  107. package/dist/client/projects-DNXsDnJM.mjs.map +1 -0
  108. package/dist/client/{projects-DI_L4oDw.mjs → projects-dhnQkuvV.mjs} +2 -2
  109. package/dist/client/{projects-DI_L4oDw.mjs.map → projects-dhnQkuvV.mjs.map} +1 -1
  110. package/dist/client/{projects-HoQ0gE5Y.mjs → projects-yiK0HGSA.mjs} +2 -2
  111. package/dist/client/{projects-HoQ0gE5Y.mjs.map → projects-yiK0HGSA.mjs.map} +1 -1
  112. package/dist/client/{securitygroups-BjkmHk2J.mjs → securitygroups-wHdrxZXd.mjs} +72 -73
  113. package/dist/client/{securitygroups-BjkmHk2J.mjs.map → securitygroups-wHdrxZXd.mjs.map} +1 -1
  114. package/dist/client/{trpcClient-BxguzNYF.mjs → trpcClient-BzPUgiM2.mjs} +1 -1
  115. package/dist/client/{trpcClient-BxguzNYF.mjs.map → trpcClient-BzPUgiM2.mjs.map} +1 -1
  116. package/dist/client/{useErrorTranslation-TZVwIAzq.mjs → useErrorTranslation-Dc0eE8Zt.mjs} +1 -1
  117. package/dist/client/{useErrorTranslation-TZVwIAzq.mjs.map → useErrorTranslation-Dc0eE8Zt.mjs.map} +1 -1
  118. package/dist/client/useListWithFiltering-DrgUwXef.mjs +157 -0
  119. package/dist/client/useListWithFiltering-DrgUwXef.mjs.map +1 -0
  120. package/dist/client/{useModal-DxxlilRm.mjs → useModal-DCs1OJh7.mjs} +1 -1
  121. package/dist/client/{useModal-DxxlilRm.mjs.map → useModal-DCs1OJh7.mjs.map} +1 -1
  122. package/dist/client/{useProjectId-OQv2KBbG.mjs → useProjectId-DBc5lpoU.mjs} +1 -1
  123. package/dist/client/{useProjectId-OQv2KBbG.mjs.map → useProjectId-DBc5lpoU.mjs.map} +1 -1
  124. package/dist/server/index.js +1281 -432
  125. package/package.json +6 -5
  126. package/dist/client/DeleteFlavorModal-BusYn32r.mjs.map +0 -1
  127. package/dist/client/ListToolbar-BojRTNbo.mjs +0 -129
  128. package/dist/client/ListToolbar-BojRTNbo.mjs.map +0 -1
  129. package/dist/client/_flavorId-BRonXvCo.mjs +0 -188
  130. package/dist/client/_flavorId-BRonXvCo.mjs.map +0 -1
  131. package/dist/client/_flavorId-BoNcxYmF.mjs.map +0 -1
  132. package/dist/client/_floatingIpId-DF_BSJN6.mjs.map +0 -1
  133. package/dist/client/_imageId-BL0I5_pv.mjs +0 -527
  134. package/dist/client/_imageId-BL0I5_pv.mjs.map +0 -1
  135. package/dist/client/_projectId-5NiasyXm.mjs +0 -26
  136. package/dist/client/_projectId-5NiasyXm.mjs.map +0 -1
  137. package/dist/client/_projectId-D35MN1kY.mjs.map +0 -1
  138. package/dist/client/about-DLn1ShhF.mjs +0 -92
  139. package/dist/client/aurora-CRcxVUCo.mjs +0 -19
  140. package/dist/client/containers-J7WFA18U.mjs +0 -3120
  141. package/dist/client/containers-J7WFA18U.mjs.map +0 -1
  142. package/dist/client/flavors-qvgPSI7J.mjs.map +0 -1
  143. package/dist/client/hooks-DEjb9d1F.mjs +0 -2
  144. package/dist/client/images-CSFfefAu.mjs.map +0 -1
  145. package/dist/client/objects-DaElrban.mjs +0 -5340
  146. package/dist/client/objects-DaElrban.mjs.map +0 -1
  147. package/dist/client/overview-BMhjFMIV.mjs +0 -15
  148. package/dist/client/overview-BMhjFMIV.mjs.map +0 -1
  149. package/dist/client/overview-BYIRj7_X.mjs +0 -15
  150. package/dist/client/overview-BYIRj7_X.mjs.map +0 -1
  151. package/dist/client/overview-DRCKNBH2.mjs +0 -15
  152. package/dist/client/overview-DRCKNBH2.mjs.map +0 -1
  153. package/dist/client/overview-urYLOVQE.mjs +0 -173
  154. package/dist/client/overview-urYLOVQE.mjs.map +0 -1
  155. package/dist/client/projects-BUabCzvw.mjs.map +0 -1
  156. package/dist/client/useListWithFiltering-CbhHJO4V.mjs +0 -32
  157. package/dist/client/useListWithFiltering-CbhHJO4V.mjs.map +0 -1
@@ -1,9 +1,9 @@
1
- import { L as e, N as t, Q as n, W as r, c as i, h as a, j as o, nt as s } from "./build-BJDfnAyi.mjs";
2
- import { r as c } from "./trpcClient-BxguzNYF.mjs";
3
- import { t as l } from "./_floatingIpId-D33bOEmH.mjs";
4
- import { t as u } from "./useProjectId-OQv2KBbG.mjs";
5
- import "./hooks-DEjb9d1F.mjs";
6
- import { t as d } from "./FloatingIpActionModals-Dok7fJss.mjs";
1
+ import { L as e, N as t, Q as n, W as r, c as i, h as a, j as o, nt as s } from "./build-DracvfrJ.mjs";
2
+ import { r as c } from "./trpcClient-BzPUgiM2.mjs";
3
+ import { t as l } from "./_floatingIpId-CT4y-60o.mjs";
4
+ import { t as u } from "./useProjectId-DBc5lpoU.mjs";
5
+ import "./hooks-dSArr2Ca.mjs";
6
+ import { t as d } from "./FloatingIpActionModals-caXn6bYo.mjs";
7
7
  import { Fragment as f, jsx as p, jsxs as m } from "react/jsx-runtime";
8
8
  import { Fragment as h } from "react";
9
9
  import { useNavigate as g } from "@tanstack/react-router";
@@ -11,15 +11,15 @@ import { Trans as _, useLingui as v } from "@lingui/react";
11
11
  //#region src/client/utils/formatFloatingIpStatus.ts
12
12
  var y = (e) => e.charAt(0) + e.slice(1).toLowerCase(), b = ({ items: n }) => {
13
13
  let i = Math.ceil(n.length / 2), a = n.slice(0, i), o = n.slice(i);
14
- return /* @__PURE__ */ m(s, {
14
+ return /*#__PURE__*/ m(s, {
15
15
  gap: "6",
16
16
  className: "grid grid-cols-2",
17
- children: [/* @__PURE__ */ p(r, {
17
+ children: [/*#__PURE__*/ p(r, {
18
18
  alignTerms: "right",
19
- children: a.map(({ label: n, value: r }) => /* @__PURE__ */ m(h, { children: [/* @__PURE__ */ p(t, { children: n }), /* @__PURE__ */ p(e, { children: r })] }, n))
20
- }), /* @__PURE__ */ p(r, {
19
+ children: a.map(({ label: n, value: r }) => /*#__PURE__*/ m(h, { children: [/*#__PURE__*/ p(t, { children: n }), /*#__PURE__*/ p(e, { children: r })] }, n))
20
+ }), /*#__PURE__*/ p(r, {
21
21
  alignTerms: "right",
22
- children: o.map(({ label: n, value: r }) => /* @__PURE__ */ m(h, { children: [/* @__PURE__ */ p(t, { children: n }), /* @__PURE__ */ p(e, { children: r })] }, n))
22
+ children: o.map(({ label: n, value: r }) => /*#__PURE__*/ m(h, { children: [/*#__PURE__*/ p(t, { children: n }), /*#__PURE__*/ p(e, { children: r })] }, n))
23
23
  })]
24
24
  });
25
25
  }, x = ({ floatingIp: e }) => {
@@ -108,51 +108,51 @@ var y = (e) => e.charAt(0) + e.slice(1).toLowerCase(), b = ({ items: n }) => {
108
108
  label: t._({ id: "eGEHJE" }),
109
109
  value: e.dns_name || "—"
110
110
  }];
111
- return /* @__PURE__ */ m(f, { children: [
112
- /* @__PURE__ */ p("p", {
111
+ return /*#__PURE__*/ m(f, { children: [
112
+ /*#__PURE__*/ p("p", {
113
113
  className: "text-theme-secondary mt-2 text-sm",
114
- children: /* @__PURE__ */ p(_, { id: "DNVql8" })
114
+ children: /*#__PURE__*/ p(_, { id: "DNVql8" })
115
115
  }),
116
- /* @__PURE__ */ p(d, {
116
+ /*#__PURE__*/ p(d, {
117
117
  floatingIp: e,
118
- children: ({ toggleEditModal: e, toggleAttachModal: n, toggleDetachModal: r, toggleReleaseModal: o }) => /* @__PURE__ */ m(a, { children: [
119
- /* @__PURE__ */ p(i, {
118
+ children: ({ toggleEditModal: e, toggleAttachModal: n, toggleDetachModal: r, toggleReleaseModal: o }) => /*#__PURE__*/ m(a, { children: [
119
+ /*#__PURE__*/ p(i, {
120
120
  onClick: e,
121
121
  children: t._({ id: "n22YIM" })
122
122
  }),
123
- /* @__PURE__ */ p(i, {
123
+ /*#__PURE__*/ p(i, {
124
124
  onClick: n,
125
125
  children: t._({ id: "igVDFt" })
126
126
  }),
127
- /* @__PURE__ */ p(i, {
127
+ /*#__PURE__*/ p(i, {
128
128
  onClick: r,
129
129
  children: t._({ id: "FOcBn3" })
130
130
  }),
131
- /* @__PURE__ */ p(i, {
131
+ /*#__PURE__*/ p(i, {
132
132
  onClick: o,
133
133
  children: t._({ id: "H+a5j6" })
134
134
  })
135
135
  ] })
136
136
  }),
137
- /* @__PURE__ */ m(s, {
137
+ /*#__PURE__*/ m(s, {
138
138
  direction: "vertical",
139
139
  gap: "6",
140
140
  className: "my-6",
141
141
  children: [
142
- /* @__PURE__ */ m(s, {
142
+ /*#__PURE__*/ m(s, {
143
143
  direction: "vertical",
144
144
  gap: "2",
145
- children: [/* @__PURE__ */ p(o, { children: /* @__PURE__ */ p(_, { id: "SuX2Ca" }) }), /* @__PURE__ */ p(b, { items: r })]
145
+ children: [/*#__PURE__*/ p(o, { children: /*#__PURE__*/ p(_, { id: "SuX2Ca" }) }), /*#__PURE__*/ p(b, { items: r })]
146
146
  }),
147
- /* @__PURE__ */ m(s, {
147
+ /*#__PURE__*/ m(s, {
148
148
  direction: "vertical",
149
149
  gap: "2",
150
- children: [/* @__PURE__ */ p(o, { children: /* @__PURE__ */ p(_, { id: "jKopCP" }) }), /* @__PURE__ */ p(b, { items: c })]
150
+ children: [/*#__PURE__*/ p(o, { children: /*#__PURE__*/ p(_, { id: "jKopCP" }) }), /*#__PURE__*/ p(b, { items: c })]
151
151
  }),
152
- /* @__PURE__ */ m(s, {
152
+ /*#__PURE__*/ m(s, {
153
153
  direction: "vertical",
154
154
  gap: "2",
155
- children: [/* @__PURE__ */ p(o, { children: /* @__PURE__ */ p(_, { id: "5M4Te3" }) }), /* @__PURE__ */ p(b, { items: l })]
155
+ children: [/*#__PURE__*/ p(o, { children: /*#__PURE__*/ p(_, { id: "5M4Te3" }) }), /*#__PURE__*/ p(b, { items: l })]
156
156
  })
157
157
  ]
158
158
  })
@@ -170,59 +170,59 @@ function S() {
170
170
  params: { projectId: t }
171
171
  });
172
172
  };
173
- if (d) return /* @__PURE__ */ m(s, {
173
+ if (d) return /*#__PURE__*/ m(s, {
174
174
  className: "fixed inset-0",
175
175
  distribution: "center",
176
176
  alignment: "center",
177
177
  direction: "vertical",
178
- children: [/* @__PURE__ */ p(n, {
178
+ children: [/*#__PURE__*/ p(n, {
179
179
  variant: "primary",
180
180
  size: "large",
181
181
  className: "mb-2"
182
- }), /* @__PURE__ */ p(_, { id: "VLI9eO" })]
182
+ }), /*#__PURE__*/ p(_, { id: "VLI9eO" })]
183
183
  });
184
184
  if (h) {
185
185
  let e = v?.message || "Unknown error";
186
- return /* @__PURE__ */ m(s, {
186
+ return /*#__PURE__*/ m(s, {
187
187
  className: "fixed inset-0",
188
188
  distribution: "center",
189
189
  alignment: "center",
190
190
  direction: "vertical",
191
191
  gap: "5",
192
192
  children: [
193
- /* @__PURE__ */ p("p", {
193
+ /*#__PURE__*/ p("p", {
194
194
  className: "text-theme-error font-semibold",
195
- children: /* @__PURE__ */ p(_, { id: "Smk7M2" })
195
+ children: /*#__PURE__*/ p(_, { id: "Smk7M2" })
196
196
  }),
197
- /* @__PURE__ */ p("p", {
197
+ /*#__PURE__*/ p("p", {
198
198
  className: "text-theme-highest",
199
199
  children: e
200
200
  }),
201
- /* @__PURE__ */ p(i, {
201
+ /*#__PURE__*/ p(i, {
202
202
  onClick: y,
203
203
  variant: "primary",
204
- children: /* @__PURE__ */ p(_, { id: "z1JceR" })
204
+ children: /*#__PURE__*/ p(_, { id: "z1JceR" })
205
205
  })
206
206
  ]
207
207
  });
208
208
  }
209
- return a ? /* @__PURE__ */ m(f, { children: [/* @__PURE__ */ p(o, { children: a.floating_ip_address }), /* @__PURE__ */ p(x, { floatingIp: a })] }) : /* @__PURE__ */ m(s, {
209
+ return a ? /*#__PURE__*/ m(f, { children: [/*#__PURE__*/ p(o, { children: a.floating_ip_address }), /*#__PURE__*/ p(x, { floatingIp: a })] }) : /*#__PURE__*/ m(s, {
210
210
  className: "fixed inset-0",
211
211
  distribution: "center",
212
212
  alignment: "center",
213
213
  direction: "vertical",
214
214
  gap: "5",
215
- children: [/* @__PURE__ */ p("p", {
215
+ children: [/*#__PURE__*/ p("p", {
216
216
  className: "text-theme-secondary",
217
- children: /* @__PURE__ */ p(_, { id: "ChOuUj" })
218
- }), /* @__PURE__ */ p(i, {
217
+ children: /*#__PURE__*/ p(_, { id: "ChOuUj" })
218
+ }), /*#__PURE__*/ p(i, {
219
219
  onClick: y,
220
220
  variant: "primary",
221
- children: /* @__PURE__ */ p(_, { id: "z1JceR" })
221
+ children: /*#__PURE__*/ p(_, { id: "z1JceR" })
222
222
  })]
223
223
  });
224
224
  }
225
225
  //#endregion
226
226
  export { S as component };
227
227
 
228
- //# sourceMappingURL=_floatingIpId-DF_BSJN6.mjs.map
228
+ //# sourceMappingURL=_floatingIpId-COK_TBrz2.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"_floatingIpId-COK_TBrz2.mjs","names":["formatFloatingIpStatus","status","charAt","slice","toLowerCase","Fragment","DescriptionDefinition","DescriptionList","DescriptionTerm","Stack","TwoColumnDescriptionList","items","mid","Math","ceil","length","firstColumn","slice","secondColumn","gap","className","alignTerms","map","label","value","Stack","ButtonRow","Button","ContentHeading","formatFloatingIpStatus","TwoColumnDescriptionList","FloatingIpActionModals","FloatingIpDetailsView","floatingIp","useLingui","basicInfoItems","label","t","value","id","description","project_id","status","created_at","Date","toLocaleString","updated_at","tags","join","networkRoutingItems","floating_ip_address","floating_network_id","fixed_ip_address","port_details","name","mac_address","network_id","device_owner","device_id","router_id","port_id","qos_policy_id","port_forwardings","map","port","dnsItems","dns_domain","dns_name","p","className","toggleEditModal","toggleAttachModal","toggleDetachModal","toggleReleaseModal","onClick","direction","gap","items","useNavigate","Button","ContentHeading","Stack","Spinner","Trans","useProjectId","trpcReact","FloatingIpDetailsView","Route","RouteComponent","floatingIpId","useParams","projectId","navigate","data","floatingIp","isLoading","isError","error","network","getById","useQuery","project_id","floatingip_id","handleBack","to","params","errorMessage","message","floating_ip_address","component"],"sources":["../../src/client/utils/formatFloatingIpStatus.ts","../../src/client/routes/_auth/projects/$projectId/network/floatingips/$floatingIpId/-components/TwoColumnDescriptionList.tsx","../../src/client/routes/_auth/projects/$projectId/network/floatingips/$floatingIpId/-components/-details/FloatingIpDetailsView.tsx","../../src/client/routes/_auth/projects/$projectId/network/floatingips/$floatingIpId/index.tsx?tsr-split=component"],"sourcesContent":["import type { FloatingIpStatus } from \"@/server/Network/types/floatingIp\"\n\n/**\n * Formats a floating IP status value from uppercase enum to title case.\n * Example: \"ACTIVE\" → \"Active\", \"DOWN\" → \"Down\", \"ERROR\" → \"Error\"\n */\nexport const formatFloatingIpStatus = (status: FloatingIpStatus) => {\n return status.charAt(0) + status.slice(1).toLowerCase()\n}\n","import { Fragment } from \"react\"\nimport { DescriptionDefinition, DescriptionList, DescriptionTerm, Stack } from \"@cloudoperators/juno-ui-components\"\n\nexport type DetailListItem = {\n label: string\n value: string\n}\n\ninterface TwoColumnDescriptionListProps {\n items: DetailListItem[]\n}\n\nexport const TwoColumnDescriptionList = ({ items }: TwoColumnDescriptionListProps) => {\n const mid = Math.ceil(items.length / 2)\n const firstColumn = items.slice(0, mid)\n const secondColumn = items.slice(mid)\n\n return (\n <Stack gap=\"6\" className=\"grid grid-cols-2\">\n <DescriptionList alignTerms=\"right\">\n {firstColumn.map(({ label, value }) => (\n <Fragment key={label}>\n <DescriptionTerm>{label}</DescriptionTerm>\n <DescriptionDefinition>{value}</DescriptionDefinition>\n </Fragment>\n ))}\n </DescriptionList>\n\n <DescriptionList alignTerms=\"right\">\n {secondColumn.map(({ label, value }) => (\n <Fragment key={label}>\n <DescriptionTerm>{label}</DescriptionTerm>\n <DescriptionDefinition>{value}</DescriptionDefinition>\n </Fragment>\n ))}\n </DescriptionList>\n </Stack>\n )\n}\n","import { Trans, useLingui } from \"@lingui/react/macro\"\nimport { Stack, ButtonRow, Button, ContentHeading } from \"@cloudoperators/juno-ui-components\"\nimport type { FloatingIp } from \"@/server/Network/types/floatingIp\"\nimport { formatFloatingIpStatus } from \"@/client/utils/formatFloatingIpStatus\"\nimport { DetailListItem, TwoColumnDescriptionList } from \"../TwoColumnDescriptionList\"\nimport { FloatingIpActionModals } from \"../../../-components/-modals/FloatingIpActionModals\"\n\ninterface FloatingIpDetailsViewProps {\n floatingIp: FloatingIp\n}\n\nexport const FloatingIpDetailsView = ({ floatingIp }: FloatingIpDetailsViewProps) => {\n const { t } = useLingui()\n\n const basicInfoItems: DetailListItem[] = [\n { label: t`ID`, value: floatingIp.id },\n { label: t`Description`, value: floatingIp.description || `—` },\n { label: t`Project ID`, value: floatingIp.project_id || `—` },\n { label: t`Status`, value: formatFloatingIpStatus(floatingIp.status) },\n { label: t`Created At`, value: floatingIp.created_at ? new Date(floatingIp.created_at).toLocaleString() : `—` },\n { label: t`Updated At`, value: floatingIp.updated_at ? new Date(floatingIp.updated_at).toLocaleString() : `—` },\n { label: t`Tags`, value: floatingIp.tags?.join(\", \") || `—` },\n ]\n\n const networkRoutingItems: DetailListItem[] = [\n { label: t`Floating IP Address`, value: floatingIp.floating_ip_address || `—` },\n { label: t`Floating Network`, value: floatingIp.floating_network_id || `—` },\n { label: t`Fixed IP Address`, value: floatingIp.fixed_ip_address || `—` },\n { label: t`Port Name`, value: floatingIp.port_details?.name || `—` },\n { label: t`MAC Address`, value: floatingIp.port_details?.mac_address || `—` },\n { label: t`Network ID`, value: floatingIp.port_details?.network_id || `—` },\n { label: t`Device Owner`, value: floatingIp.port_details?.device_owner || `—` },\n { label: t`Device ID`, value: floatingIp.port_details?.device_id || `—` },\n { label: t`Router ID`, value: floatingIp.router_id || `—` },\n { label: t`Port ID`, value: floatingIp.port_id || `—` },\n { label: t`QoS Policy ID`, value: floatingIp.qos_policy_id || `—` },\n { label: t`Port Forwarding`, value: floatingIp.port_forwardings?.map((port) => port.id).join(\", \") || `—` },\n ]\n\n const dnsItems: DetailListItem[] = [\n { label: t`DNS Domain`, value: floatingIp.dns_domain || `—` },\n { label: t`DNS Name`, value: floatingIp.dns_name || `—` },\n ]\n\n return (\n <>\n <p className=\"text-theme-secondary mt-2 text-sm\">\n <Trans>\n Full lifecycle management of Floating IPs, including attachment, port association/disassociation, DNS\n settings, and deletion\n </Trans>\n </p>\n\n <FloatingIpActionModals floatingIp={floatingIp}>\n {({ toggleEditModal, toggleAttachModal, toggleDetachModal, toggleReleaseModal }) => (\n <ButtonRow>\n <Button onClick={toggleEditModal}>{t`Edit Description`}</Button>\n <Button onClick={toggleAttachModal}>{t`Attach`}</Button>\n <Button onClick={toggleDetachModal}>{t`Detach`}</Button>\n <Button onClick={toggleReleaseModal}>{t`Release`}</Button>\n </ButtonRow>\n )}\n </FloatingIpActionModals>\n\n <Stack direction=\"vertical\" gap=\"6\" className=\"my-6\">\n <Stack direction=\"vertical\" gap=\"2\">\n <ContentHeading>\n <Trans>Basic Info</Trans>\n </ContentHeading>\n <TwoColumnDescriptionList items={basicInfoItems} />\n </Stack>\n\n <Stack direction=\"vertical\" gap=\"2\">\n <ContentHeading>\n <Trans>Network & Routing</Trans>\n </ContentHeading>\n <TwoColumnDescriptionList items={networkRoutingItems} />\n </Stack>\n\n <Stack direction=\"vertical\" gap=\"2\">\n <ContentHeading>\n <Trans>DNS</Trans>\n </ContentHeading>\n <TwoColumnDescriptionList items={dnsItems} />\n </Stack>\n </Stack>\n </>\n )\n}\n","import { createFileRoute, redirect, useNavigate } from \"@tanstack/react-router\"\nimport { Button, ContentHeading, Stack, Spinner } from \"@cloudoperators/juno-ui-components\"\nimport { Trans } from \"@lingui/react/macro\"\nimport type { RouteInfo } from \"@/client/routes/routeInfo\"\nimport { getServiceIndex } from \"@/server/Authentication/helpers\"\nimport { useProjectId } from \"@/client/hooks\"\nimport { trpcReact } from \"@/client/trpcClient\"\nimport { FloatingIpDetailsView } from \"./-components/-details/FloatingIpDetailsView\"\n\nexport const Route = createFileRoute(\"/_auth/projects/$projectId/network/floatingips/$floatingIpId/\")({\n staticData: {\n section: \"network\",\n service: \"floatingips\",\n isDetail: true,\n sectionCrumb: { labelKey: \"Network\" },\n crumb: { labelKey: \"Floating IPs\", to: \"/projects/$projectId/network/floatingips\" },\n } satisfies RouteInfo,\n loader: async ({ context, params }) => {\n const floatingIp = await context.trpcClient?.network.floatingIp.getById.query({\n project_id: params.projectId,\n floatingip_id: params.floatingIpId,\n })\n return { floatingIpAddress: floatingIp?.floating_ip_address ?? null }\n },\n head: ({ loaderData }) => ({\n meta: [{ title: loaderData?.floatingIpAddress ?? \"Floating IP\" }],\n }),\n component: RouteComponent,\n beforeLoad: async ({ context, params }) => {\n const { trpcClient } = context\n\n const availableServices = (await trpcClient?.auth.getAvailableServices.query()) || []\n const serviceIndex = getServiceIndex(availableServices)\n\n // Redirect if network service not available\n if (!serviceIndex[\"network\"]) {\n throw redirect({\n to: \"/projects/$projectId/network/floatingips\",\n params: { projectId: params.projectId },\n })\n }\n\n if (!serviceIndex[\"network\"][\"neutron\"]) {\n throw redirect({\n to: \"/projects/$projectId/network/floatingips\",\n params: { projectId: params.projectId },\n })\n }\n },\n})\n\nfunction RouteComponent() {\n const { floatingIpId } = Route.useParams()\n const projectId = useProjectId()\n const navigate = useNavigate()\n\n // Fetch floating IP details\n const {\n data: floatingIp,\n isLoading,\n isError,\n error,\n } = trpcReact.network.floatingIp.getById.useQuery({\n project_id: projectId,\n floatingip_id: floatingIpId,\n })\n\n const handleBack = () => {\n navigate({\n to: \"/projects/$projectId/network/floatingips\",\n params: { projectId },\n })\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 Floating IP Details...</Trans>\n </Stack>\n )\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 floating IP</Trans>\n </p>\n <p className=\"text-theme-highest\">{errorMessage}</p>\n <Button onClick={handleBack} variant=\"primary\">\n <Trans>Back to Floating IPs</Trans>\n </Button>\n </Stack>\n )\n }\n\n // No data state\n if (!floatingIp) {\n return (\n <Stack className=\"fixed inset-0\" distribution=\"center\" alignment=\"center\" direction=\"vertical\" gap=\"5\">\n <p className=\"text-theme-secondary\">\n <Trans>Floating IP not found</Trans>\n </p>\n <Button onClick={handleBack} variant=\"primary\">\n <Trans>Back to Floating IPs</Trans>\n </Button>\n </Stack>\n )\n }\n\n // Success state\n return (\n <>\n <ContentHeading>{floatingIp.floating_ip_address}</ContentHeading>\n <FloatingIpDetailsView floatingIp={floatingIp} />\n </>\n )\n}\n"],"mappings":";;;;;;;;;;;AAMA,IAAaA,KAA0BC,MAC9BA,EAAOC,OAAO,CAAA,IAAKD,EAAOE,MAAM,CAAA,EAAGC,YAAW,GCK1CM,KAA4B,EAAEC,eAAsC;CAC/E,IAAMC,IAAMC,KAAKC,KAAKH,EAAMI,SAAS,CAAA,GAC/BC,IAAcL,EAAMM,MAAM,GAAGL,CAAAA,GAC7BM,IAAeP,EAAMM,MAAML,CAAAA;CAEjC,OACE,gBAACH,GAAAA;EAAMU,KAAI;EAAIC,WAAU;aACvB,gBAACb,GAAAA;GAAgBc,YAAW;aACzBL,EAAYM,KAAK,EAAEC,UAAOC,eACzB,gBAACnB,GAAAA,EAAAA,UAAAA,CACC,gBAACG,GAAAA,EAAAA,UAAiBe,EAAAA,CAAAA,GAClB,gBAACjB,GAAAA,EAAAA,UAAuBkB,EAAAA,CAAAA,CAAAA,EAAAA,GAFXD,CAAAA,CAAAA;MAOnB,gBAAChB,GAAAA;GAAgBc,YAAW;aACzBH,EAAaI,KAAK,EAAEC,UAAOC,eAC1B,gBAACnB,GAAAA,EAAAA,UAAAA,CACC,gBAACG,GAAAA,EAAAA,UAAiBe,EAAAA,CAAAA,GAClB,gBAACjB,GAAAA,EAAAA,UAAuBkB,EAAAA,CAAAA,CAAAA,EAAAA,GAFXD,CAAAA,CAAAA;;;AAQzB,GC3BaS,KAAyB,EAAEC,oBAAwC;CAC9E,IAAM,EAAA,MAAA,GAAA,GAAA,MAAQC,EAAAA,GAERC,IAAmC;EACvC;GAAEC,OAAOC,EAAAA,EAAC,EAAA,IAAA,SAAG,CAAA;GAAGC,OAAOL,EAAWM;EAAG;EACrC;GAAEH,OAAOC,EAAAA,EAAC,EAAA,IAAA,SAAY,CAAA;GAAGC,OAAOL,EAAWO,eAAe;EAAI;EAC9D;GAAEJ,OAAOC,EAAAA,EAAC,EAAA,IAAA,SAAW,CAAA;GAAGC,OAAOL,EAAWQ,cAAc;EAAI;EAC5D;GAAEL,OAAOC,EAAAA,EAAC,EAAA,IAAA,SAAO,CAAA;GAAGC,OAAOT,EAAuBI,EAAWS,MAAM;EAAE;EACrE;GAAEN,OAAOC,EAAAA,EAAC,EAAA,IAAA,SAAW,CAAA;GAAGC,OAAOL,EAAWU,aAAa,IAAIC,KAAKX,EAAWU,UAAU,EAAEE,eAAc,IAAK;EAAI;EAC9G;GAAET,OAAOC,EAAAA,EAAC,EAAA,IAAA,SAAW,CAAA;GAAGC,OAAOL,EAAWa,aAAa,IAAIF,KAAKX,EAAWa,UAAU,EAAED,eAAc,IAAK;EAAI;EAC9G;GAAET,OAAOC,EAAAA,EAAC,EAAA,IAAA,SAAK,CAAA;GAAGC,OAAOL,EAAWc,MAAMC,KAAK,IAAA,KAAS;EAAI;IAGxDC,IAAwC;EAC5C;GAAEb,OAAOC,EAAAA,EAAC,EAAA,IAAA,SAAoB,CAAA;GAAGC,OAAOL,EAAWiB,uBAAuB;EAAI;EAC9E;GAAEd,OAAOC,EAAAA,EAAC,EAAA,IAAA,SAAiB,CAAA;GAAGC,OAAOL,EAAWkB,uBAAuB;EAAI;EAC3E;GAAEf,OAAOC,EAAAA,EAAC,EAAA,IAAA,SAAiB,CAAA;GAAGC,OAAOL,EAAWmB,oBAAoB;EAAI;EACxE;GAAEhB,OAAOC,EAAAA,EAAC,EAAA,IAAA,SAAU,CAAA;GAAGC,OAAOL,EAAWoB,cAAcC,QAAQ;EAAI;EACnE;GAAElB,OAAOC,EAAAA,EAAC,EAAA,IAAA,SAAY,CAAA;GAAGC,OAAOL,EAAWoB,cAAcE,eAAe;EAAI;EAC5E;GAAEnB,OAAOC,EAAAA,EAAC,EAAA,IAAA,SAAW,CAAA;GAAGC,OAAOL,EAAWoB,cAAcG,cAAc;EAAI;EAC1E;GAAEpB,OAAOC,EAAAA,EAAC,EAAA,IAAA,SAAa,CAAA;GAAGC,OAAOL,EAAWoB,cAAcI,gBAAgB;EAAI;EAC9E;GAAErB,OAAOC,EAAAA,EAAC,EAAA,IAAA,SAAU,CAAA;GAAGC,OAAOL,EAAWoB,cAAcK,aAAa;EAAI;EACxE;GAAEtB,OAAOC,EAAAA,EAAC,EAAA,IAAA,SAAU,CAAA;GAAGC,OAAOL,EAAW0B,aAAa;EAAI;EAC1D;GAAEvB,OAAOC,EAAAA,EAAC,EAAA,IAAA,SAAQ,CAAA;GAAGC,OAAOL,EAAW2B,WAAW;EAAI;EACtD;GAAExB,OAAOC,EAAAA,EAAC,EAAA,IAAA,SAAc,CAAA;GAAGC,OAAOL,EAAW4B,iBAAiB;EAAI;EAClE;GAAEzB,OAAOC,EAAAA,EAAC,EAAA,IAAA,SAAgB,CAAA;GAAGC,OAAOL,EAAW6B,kBAAkBC,KAAKC,MAASA,EAAKzB,EAAE,EAAES,KAAK,IAAA,KAAS;EAAI;IAGtGiB,IAA6B,CACjC;EAAE7B,OAAOC,EAAAA,EAAC,EAAA,IAAA,SAAW,CAAA;EAAGC,OAAOL,EAAWiC,cAAc;CAAI,GAC5D;EAAE9B,OAAOC,EAAAA,EAAC,EAAA,IAAA,SAAS,CAAA;EAAGC,OAAOL,EAAWkC,YAAY;CAAI,CAAA;CAG1D,OACE,gBAAA,GAAA,EAAA,UAAA;EACE,gBAACC,KAAAA;GAAEC,WAAU;aACX,gBAAA,GAAA,EAAA,IAAA,SAAA,CAAA;;EAMF,gBAACtC,GAAAA;GAAmCE;cAChC,EAAEqC,oBAAiBC,sBAAmBC,sBAAmBC,4BACzD,gBAAC/C,GAAAA,EAAAA,UAAAA;IACC,gBAACC,GAAAA;KAAO+C,SAASJ;eAAkBjC,EAAAA,EAAC,EAAA,IAAA,SAAiB,CAAA;;IACrD,gBAACV,GAAAA;KAAO+C,SAASH;eAAoBlC,EAAAA,EAAC,EAAA,IAAA,SAAO,CAAA;;IAC7C,gBAACV,GAAAA;KAAO+C,SAASF;eAAoBnC,EAAAA,EAAC,EAAA,IAAA,SAAO,CAAA;;IAC7C,gBAACV,GAAAA;KAAO+C,SAASD;eAAqBpC,EAAAA,EAAC,EAAA,IAAA,SAAQ,CAAA;;;;EAKrD,gBAACZ,GAAAA;GAAMkD,WAAU;GAAWC,KAAI;GAAIP,WAAU;;IAC5C,gBAAC5C,GAAAA;KAAMkD,WAAU;KAAWC,KAAI;gBAC9B,gBAAChD,GAAAA,EAAAA,UACC,gBAAA,GAAA,EAAA,IAAA,SAAA,CAAA,EAAA,CAAA,GAEF,gBAACE,GAAAA,EAAyB+C,OAAO1C,EAAAA,CAAAA,CAAAA;;IAGnC,gBAACV,GAAAA;KAAMkD,WAAU;KAAWC,KAAI;gBAC9B,gBAAChD,GAAAA,EAAAA,UACC,gBAAA,GAAA,EAAA,IAAA,SAAA,CAAA,EAAA,CAAA,GAEF,gBAACE,GAAAA,EAAyB+C,OAAO5B,EAAAA,CAAAA,CAAAA;;IAGnC,gBAACxB,GAAAA;KAAMkD,WAAU;KAAWC,KAAI;gBAC9B,gBAAChD,GAAAA,EAAAA,UACC,gBAAA,GAAA,EAAA,IAAA,SAAA,CAAA,EAAA,CAAA,GAEF,gBAACE,GAAAA,EAAyB+C,OAAOZ,EAAAA,CAAAA,CAAAA;;;;;AAK3C;;;ACrCA,SAASuB,IAAAA;CACP,IAAM,EAAEC,oBAAiBF,EAAMG,UAAS,GAClCC,IAAYP,EAAAA,GACZQ,IAAWd,EAAAA,GAGX,EACJe,MAAMC,GACNC,cACAC,YACAC,aACEZ,EAAUa,QAAQJ,WAAWK,QAAQC,SAAS;EAChDC,YAAYV;EACZW,eAAeb;CACjB,CAAA,GAEMc,UAAaA;EACjBX,EAAS;GACPY,IAAI;GACJC,QAAQ,EAAEd,aAAU;EACtB,CAAA;CACF;CAGA,IAAII,GACF,OACE,gBAAC,GAAA;EAAM,WAAU;EAAgB,cAAa;EAAS,WAAU;EAAS,WAAU;aAClF,gBAAC,GAAA;GAAQ,SAAQ;GAAU,MAAK;GAAQ,WAAU;MAClD,gBAAA,GAAA,EAAA,IAAA,SAAA,CAAA,CAAA;;CAMN,IAAIC,GAAS;EACX,IAAMU,IAAeT,GAAOU,WAAW;EACvC,OACE,gBAAC,GAAA;GAAM,WAAU;GAAgB,cAAa;GAAS,WAAU;GAAS,WAAU;GAAW,KAAI;;IACjG,gBAAC,KAAA;KAAE,WAAU;eACX,gBAAA,GAAA,EAAA,IAAA,SAAA,CAAA;;IAEF,gBAAC,KAAA;KAAE,WAAU;eAAsBD;;IACnC,gBAAC,GAAA;KAAO,SAASH;KAAY,SAAQ;eACnC,gBAAA,GAAA,EAAA,IAAA,SAAA,CAAA;;;;CAIR;CAiBA,OAdKT,IAeH,gBAAA,GAAA,EAAA,UAAA,CACE,gBAAC,GAAA,EAAA,UAAgBA,EAAWc,oBAAAA,CAAAA,GAC5B,gBAAC,GAAA,EAAkCd,cAAAA,CAAAA,CAAAA,EAAAA,CAAAA,IAfnC,gBAAC,GAAA;EAAM,WAAU;EAAgB,cAAa;EAAS,WAAU;EAAS,WAAU;EAAW,KAAI;aACjG,gBAAC,KAAA;GAAE,WAAU;aACX,gBAAA,GAAA,EAAA,IAAA,SAAA,CAAA;MAEF,gBAAC,GAAA;GAAO,SAASS;GAAY,SAAQ;aACnC,gBAAA,GAAA,EAAA,IAAA,SAAA,CAAA;;;AAaV"}
@@ -1,4 +1,4 @@
1
- import { t as e } from "./helpers--JWXi40U.mjs";
1
+ import { t as e } from "./helpers-1PpYf-fC.mjs";
2
2
  import { createFileRoute as t, lazyRouteComponent as n, redirect as r } from "@tanstack/react-router";
3
3
  var i = t("/_auth/projects/$projectId/network/floatingips/$floatingIpId/")({
4
4
  staticData: {
@@ -16,7 +16,7 @@ var i = t("/_auth/projects/$projectId/network/floatingips/$floatingIpId/")({
16
16
  floatingip_id: t.floatingIpId
17
17
  }))?.floating_ip_address ?? null }),
18
18
  head: ({ loaderData: e }) => ({ meta: [{ title: e?.floatingIpAddress ?? "Floating IP" }] }),
19
- component: n(() => import("./_floatingIpId-DF_BSJN6.mjs"), "component"),
19
+ component: n(() => import("./_floatingIpId-COK_TBrz2.mjs"), "component"),
20
20
  beforeLoad: async ({ context: t, params: n }) => {
21
21
  let { trpcClient: i } = t, a = e(await i?.auth.getAvailableServices.query() || []);
22
22
  if (!a.network || !a.network.neutron) throw r({
@@ -28,4 +28,4 @@ var i = t("/_auth/projects/$projectId/network/floatingips/$floatingIpId/")({
28
28
  //#endregion
29
29
  export { i as t };
30
30
 
31
- //# sourceMappingURL=_floatingIpId-D33bOEmH.mjs.map
31
+ //# sourceMappingURL=_floatingIpId-CT4y-60o.mjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"_floatingIpId-D33bOEmH.mjs","names":["createFileRoute","redirect","getServiceIndex","Route","staticData","section","service","isDetail","sectionCrumb","labelKey","crumb","to","RouteInfo","loader","context","params","floatingIp","trpcClient","network","getById","query","project_id","projectId","floatingip_id","floatingIpId","floatingIpAddress","floating_ip_address","head","loaderData","meta","title","component","lazyRouteComponent","$$splitComponentImporter","beforeLoad","availableServices","auth","getAvailableServices","serviceIndex"],"sources":["../../src/client/routes/_auth/projects/$projectId/network/floatingips/$floatingIpId/index.tsx"],"sourcesContent":["import { createFileRoute, redirect, useNavigate } from \"@tanstack/react-router\"\nimport { Button, ContentHeading, Stack, Spinner } from \"@cloudoperators/juno-ui-components\"\nimport { Trans } from \"@lingui/react/macro\"\nimport type { RouteInfo } from \"@/client/routes/routeInfo\"\nimport { getServiceIndex } from \"@/server/Authentication/helpers\"\nimport { useProjectId } from \"@/client/hooks\"\nimport { trpcReact } from \"@/client/trpcClient\"\nimport { FloatingIpDetailsView } from \"./-components/-details/FloatingIpDetailsView\"\n\nexport const Route = createFileRoute(\"/_auth/projects/$projectId/network/floatingips/$floatingIpId/\")({\n staticData: {\n section: \"network\",\n service: \"floatingips\",\n isDetail: true,\n sectionCrumb: { labelKey: \"Network\" },\n crumb: { labelKey: \"Floating IPs\", to: \"/projects/$projectId/network/floatingips\" },\n } satisfies RouteInfo,\n loader: async ({ context, params }) => {\n const floatingIp = await context.trpcClient?.network.floatingIp.getById.query({\n project_id: params.projectId,\n floatingip_id: params.floatingIpId,\n })\n return { floatingIpAddress: floatingIp?.floating_ip_address ?? null }\n },\n head: ({ loaderData }) => ({\n meta: [{ title: loaderData?.floatingIpAddress ?? \"Floating IP\" }],\n }),\n component: RouteComponent,\n beforeLoad: async ({ context, params }) => {\n const { trpcClient } = context\n\n const availableServices = (await trpcClient?.auth.getAvailableServices.query()) || []\n const serviceIndex = getServiceIndex(availableServices)\n\n // Redirect if network service not available\n if (!serviceIndex[\"network\"]) {\n throw redirect({\n to: \"/projects/$projectId/network/floatingips\",\n params: { projectId: params.projectId },\n })\n }\n\n if (!serviceIndex[\"network\"][\"neutron\"]) {\n throw redirect({\n to: \"/projects/$projectId/network/floatingips\",\n params: { projectId: params.projectId },\n })\n }\n },\n})\n\nfunction RouteComponent() {\n const { floatingIpId } = Route.useParams()\n const projectId = useProjectId()\n const navigate = useNavigate()\n\n // Fetch floating IP details\n const {\n data: floatingIp,\n isLoading,\n isError,\n error,\n } = trpcReact.network.floatingIp.getById.useQuery({\n project_id: projectId,\n floatingip_id: floatingIpId,\n })\n\n const handleBack = () => {\n navigate({\n to: \"/projects/$projectId/network/floatingips\",\n params: { projectId },\n })\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 Floating IP Details...</Trans>\n </Stack>\n )\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 floating IP</Trans>\n </p>\n <p className=\"text-theme-highest\">{errorMessage}</p>\n <Button onClick={handleBack} variant=\"primary\">\n <Trans>Back to Floating IPs</Trans>\n </Button>\n </Stack>\n )\n }\n\n // No data state\n if (!floatingIp) {\n return (\n <Stack className=\"fixed inset-0\" distribution=\"center\" alignment=\"center\" direction=\"vertical\" gap=\"5\">\n <p className=\"text-theme-secondary\">\n <Trans>Floating IP not found</Trans>\n </p>\n <Button onClick={handleBack} variant=\"primary\">\n <Trans>Back to Floating IPs</Trans>\n </Button>\n </Stack>\n )\n }\n\n // Success state\n return (\n <>\n <ContentHeading>{floatingIp.floating_ip_address}</ContentHeading>\n <FloatingIpDetailsView floatingIp={floatingIp} />\n </>\n )\n}\n"],"mappings":";;AASA,IAAaG,IAAQH,EAAgB,gEAAA,CAAiE;CACpGI,YAAY;EACVC,SAAS;EACTC,SAAS;EACTC,UAAU;EACVC,cAAc,EAAEC,UAAU,WAAU;EACpCC,OAAO;GAAED,UAAU;GAAgBE,IAAI;GAA2C;EACpF;CACAE,QAAQ,OAAO,EAAEC,YAASC,iBAKjB,EAAEU,oBAJU,MAAMX,EAAQG,YAAYC,QAAQF,WAAWG,QAAQC,MAAM;EAC5EC,YAAYN,EAAOO;EACnBC,eAAeR,EAAOS;EACxB,CAAA,GACwCE,uBAAuB,MAAK;CAEtEC,OAAO,EAAEC,qBAAkB,EACzBC,MAAM,CAAC,EAAEC,OAAOF,GAAYH,qBAAqB,eAAc,CAAC,EAClE;CACAM,WAASC,gDAAA,YAAA;CACTE,YAAY,OAAO,EAAEpB,YAASC,gBAAQ;EACpC,IAAM,EAAEE,kBAAeH,GAGjBwB,IAAepC,EADK,MAAOe,GAAYmB,KAAKC,qBAAqBjB,OAAAA,IAAY,EAAE,CAChDe;AAUrC,MAPI,CAACG,EAAa,WAOd,CAACA,EAAa,QAAW,QAC3B,OAAMrC,EAAS;GACbU,IAAI;GACJI,QAAQ,EAAEO,WAAWP,EAAOO,WAAU;GACxC,CAAA;;CAGN,CAAA"}
1
+ {"version":3,"file":"_floatingIpId-CT4y-60o.mjs","names":["createFileRoute","redirect","getServiceIndex","Route","staticData","section","service","isDetail","sectionCrumb","labelKey","crumb","to","RouteInfo","loader","context","params","floatingIp","trpcClient","network","getById","query","project_id","projectId","floatingip_id","floatingIpId","floatingIpAddress","floating_ip_address","head","loaderData","meta","title","component","lazyRouteComponent","$$splitComponentImporter","beforeLoad","availableServices","auth","getAvailableServices","serviceIndex"],"sources":["../../src/client/routes/_auth/projects/$projectId/network/floatingips/$floatingIpId/index.tsx"],"sourcesContent":["import { createFileRoute, redirect, useNavigate } from \"@tanstack/react-router\"\nimport { Button, ContentHeading, Stack, Spinner } from \"@cloudoperators/juno-ui-components\"\nimport { Trans } from \"@lingui/react/macro\"\nimport type { RouteInfo } from \"@/client/routes/routeInfo\"\nimport { getServiceIndex } from \"@/server/Authentication/helpers\"\nimport { useProjectId } from \"@/client/hooks\"\nimport { trpcReact } from \"@/client/trpcClient\"\nimport { FloatingIpDetailsView } from \"./-components/-details/FloatingIpDetailsView\"\n\nexport const Route = createFileRoute(\"/_auth/projects/$projectId/network/floatingips/$floatingIpId/\")({\n staticData: {\n section: \"network\",\n service: \"floatingips\",\n isDetail: true,\n sectionCrumb: { labelKey: \"Network\" },\n crumb: { labelKey: \"Floating IPs\", to: \"/projects/$projectId/network/floatingips\" },\n } satisfies RouteInfo,\n loader: async ({ context, params }) => {\n const floatingIp = await context.trpcClient?.network.floatingIp.getById.query({\n project_id: params.projectId,\n floatingip_id: params.floatingIpId,\n })\n return { floatingIpAddress: floatingIp?.floating_ip_address ?? null }\n },\n head: ({ loaderData }) => ({\n meta: [{ title: loaderData?.floatingIpAddress ?? \"Floating IP\" }],\n }),\n component: RouteComponent,\n beforeLoad: async ({ context, params }) => {\n const { trpcClient } = context\n\n const availableServices = (await trpcClient?.auth.getAvailableServices.query()) || []\n const serviceIndex = getServiceIndex(availableServices)\n\n // Redirect if network service not available\n if (!serviceIndex[\"network\"]) {\n throw redirect({\n to: \"/projects/$projectId/network/floatingips\",\n params: { projectId: params.projectId },\n })\n }\n\n if (!serviceIndex[\"network\"][\"neutron\"]) {\n throw redirect({\n to: \"/projects/$projectId/network/floatingips\",\n params: { projectId: params.projectId },\n })\n }\n },\n})\n\nfunction RouteComponent() {\n const { floatingIpId } = Route.useParams()\n const projectId = useProjectId()\n const navigate = useNavigate()\n\n // Fetch floating IP details\n const {\n data: floatingIp,\n isLoading,\n isError,\n error,\n } = trpcReact.network.floatingIp.getById.useQuery({\n project_id: projectId,\n floatingip_id: floatingIpId,\n })\n\n const handleBack = () => {\n navigate({\n to: \"/projects/$projectId/network/floatingips\",\n params: { projectId },\n })\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 Floating IP Details...</Trans>\n </Stack>\n )\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 floating IP</Trans>\n </p>\n <p className=\"text-theme-highest\">{errorMessage}</p>\n <Button onClick={handleBack} variant=\"primary\">\n <Trans>Back to Floating IPs</Trans>\n </Button>\n </Stack>\n )\n }\n\n // No data state\n if (!floatingIp) {\n return (\n <Stack className=\"fixed inset-0\" distribution=\"center\" alignment=\"center\" direction=\"vertical\" gap=\"5\">\n <p className=\"text-theme-secondary\">\n <Trans>Floating IP not found</Trans>\n </p>\n <Button onClick={handleBack} variant=\"primary\">\n <Trans>Back to Floating IPs</Trans>\n </Button>\n </Stack>\n )\n }\n\n // Success state\n return (\n <>\n <ContentHeading>{floatingIp.floating_ip_address}</ContentHeading>\n <FloatingIpDetailsView floatingIp={floatingIp} />\n </>\n )\n}\n"],"mappings":";;AASA,IAAaG,IAAQH,EAAgB,+DAAA,EAAiE;CACpGI,YAAY;EACVC,SAAS;EACTC,SAAS;EACTC,UAAU;EACVC,cAAc,EAAEC,UAAU,UAAU;EACpCC,OAAO;GAAED,UAAU;GAAgBE,IAAI;EAA2C;CACpF;CACAE,QAAQ,OAAO,EAAEC,YAASC,iBAKjB,EAAEU,oBAAmBT,MAJHF,EAAQG,YAAYC,QAAQF,WAAWG,QAAQC,MAAM;EAC5EC,YAAYN,EAAOO;EACnBC,eAAeR,EAAOS;CACxB,CAAA,IACwCE,uBAAuB,KAAK;CAEtEC,OAAO,EAAEC,qBAAkB,EACzBC,MAAM,CAAC,EAAEC,OAAOF,GAAYH,qBAAqB,cAAc,CAAA,EACjE;CACAM,WAASC,iDAAA,WAAA;CACTE,YAAY,OAAO,EAAEpB,YAASC,gBAAQ;EACpC,IAAM,EAAEE,kBAAeH,GAGjBwB,IAAepC,EADK,MAAOe,GAAYmB,KAAKC,qBAAqBjB,MAAAA,KAAY,CAAA,CAC9Ce;EAUrC,IAPI,CAACG,EAAa,WAOd,CAACA,EAAa,QAAW,SAC3B,MAAMrC,EAAS;GACbU,IAAI;GACJI,QAAQ,EAAEO,WAAWP,EAAOO,UAAU;EACxC,CAAA;CAEJ;AACF,CAAA"}