@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
@@ -12,4 +12,4 @@ var e = (e) => {
12
12
  //#endregion
13
13
  export { e as t };
14
14
 
15
- //# sourceMappingURL=buildFilterParams-TeyosGyK.mjs.map
15
+ //# sourceMappingURL=buildFilterParams-DoZzMKX9.mjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"buildFilterParams-TeyosGyK.mjs","names":["buildFilterParams","filterSettings","params","selectedFilters","length","filter","sf","inactive","forEach","value","name"],"sources":["../../src/client/utils/buildFilterParams.ts"],"sourcesContent":["import { FilterSettings } from \"@/client/components/ListToolbar/types\"\n\n/**\n * Builds filter parameters from current filter settings\n */\nexport const buildFilterParams = (filterSettings: FilterSettings): Record<string, string | boolean> => {\n const params: Record<string, string | boolean> = {}\n\n if (!filterSettings.selectedFilters?.length) return params\n\n filterSettings.selectedFilters\n .filter((sf) => !sf.inactive)\n .forEach((sf) => {\n if (sf.value === \"true\" || sf.value === \"false\") {\n params[sf.name] = sf.value === \"true\"\n return\n }\n params[sf.name] = sf.value\n })\n return params\n}\n"],"mappings":";AAKA,IAAaA,KAAqBC,MAAAA;CAChC,IAAMC,IAA2C,EAAC;AAalD,QAXKD,EAAeE,iBAAiBC,UAErCH,EAAeE,gBACZE,QAAQC,MAAO,CAACA,EAAGC,SAAQ,CAC3BC,SAASF,MAAAA;AACR,MAAIA,EAAGG,UAAU,UAAUH,EAAGG,UAAU,SAAS;AAC/CP,KAAOI,EAAGI,QAAQJ,EAAGG,UAAU;AAC/B;;AAEFP,IAAOI,EAAGI,QAAQJ,EAAGG;GACvB,EAVkDP"}
1
+ {"version":3,"file":"buildFilterParams-DoZzMKX9.mjs","names":["buildFilterParams","filterSettings","params","selectedFilters","length","filter","sf","inactive","forEach","value","name"],"sources":["../../src/client/utils/buildFilterParams.ts"],"sourcesContent":["import { FilterSettings } from \"@/client/components/ListToolbar/types\"\n\n/**\n * Builds filter parameters from current filter settings\n */\nexport const buildFilterParams = (filterSettings: FilterSettings): Record<string, string | boolean> => {\n const params: Record<string, string | boolean> = {}\n\n if (!filterSettings.selectedFilters?.length) return params\n\n filterSettings.selectedFilters\n .filter((sf) => !sf.inactive)\n .forEach((sf) => {\n if (sf.value === \"true\" || sf.value === \"false\") {\n params[sf.name] = sf.value === \"true\"\n return\n }\n params[sf.name] = sf.value\n })\n return params\n}\n"],"mappings":";AAKA,IAAaA,KAAqBC,MAAAA;CAChC,IAAMC,IAA2C,CAAC;CAalD,OAXKD,EAAeE,iBAAiBC,UAErCH,EAAeE,gBACZE,QAAQC,MAAO,CAACA,EAAGC,QAAQ,EAC3BC,SAASF,MAAAA;EACR,IAAIA,EAAGG,UAAU,UAAUH,EAAGG,UAAU,SAAS;GAC/CP,EAAOI,EAAGI,QAAQJ,EAAGG,UAAU;GAC/B;EACF;EACAP,EAAOI,EAAGI,QAAQJ,EAAGG;CACvB,CAAA,GAVkDP;AAYtD"}
@@ -7,4 +7,4 @@ function n(...n) {
7
7
  //#endregion
8
8
  export { n as t };
9
9
 
10
- //# sourceMappingURL=cn-C3laVXMm.mjs.map
10
+ //# sourceMappingURL=cn-DM4Cy3jv.mjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"cn-C3laVXMm.mjs","names":["clsx","twMerge","cn","inputs"],"sources":["../../src/client/utils/cn.ts"],"sourcesContent":["import { type ClassValue, clsx } from \"clsx\"\nimport { twMerge } from \"tailwind-merge\"\n\n/**\n * A utility function that combines clsx and tailwind-merge\n *\n * This function takes multiple class values (strings, objects, arrays, etc.)\n * and combines them into a single string of CSS classes.\n * It then uses tailwind-merge to resolve any Tailwind CSS conflicts.\n *\n * @param inputs - Class values to be combined\n * @returns A string of CSS classes with Tailwind conflicts resolved\n *\n * @example\n * // Basic usage\n * cn('text-red-500', 'bg-blue-500')\n * // => 'text-red-500 bg-blue-500'\n *\n * @example\n * // With conditionals\n * cn('text-white', isError && 'bg-red-500', !isError && 'bg-blue-500')\n * // => 'text-white bg-red-500' or 'text-white bg-blue-500'\n *\n * @example\n * // Resolving conflicts\n * cn('text-red-500', 'text-blue-500')\n * // => 'text-blue-500' (the latter class wins)\n */\nexport function cn(...inputs: ClassValue[]): string {\n return twMerge(clsx(inputs))\n}\n"],"mappings":";;;AA4BA,SAAgBE,EAAG,GAAGC,GAAoB;AACxC,QAAOF,EAAQD,EAAKG,EAAAA,CAAAA"}
1
+ {"version":3,"file":"cn-DM4Cy3jv.mjs","names":["clsx","twMerge","cn","inputs"],"sources":["../../src/client/utils/cn.ts"],"sourcesContent":["import { type ClassValue, clsx } from \"clsx\"\nimport { twMerge } from \"tailwind-merge\"\n\n/**\n * A utility function that combines clsx and tailwind-merge\n *\n * This function takes multiple class values (strings, objects, arrays, etc.)\n * and combines them into a single string of CSS classes.\n * It then uses tailwind-merge to resolve any Tailwind CSS conflicts.\n *\n * @param inputs - Class values to be combined\n * @returns A string of CSS classes with Tailwind conflicts resolved\n *\n * @example\n * // Basic usage\n * cn('text-red-500', 'bg-blue-500')\n * // => 'text-red-500 bg-blue-500'\n *\n * @example\n * // With conditionals\n * cn('text-white', isError && 'bg-red-500', !isError && 'bg-blue-500')\n * // => 'text-white bg-red-500' or 'text-white bg-blue-500'\n *\n * @example\n * // Resolving conflicts\n * cn('text-red-500', 'text-blue-500')\n * // => 'text-blue-500' (the latter class wins)\n */\nexport function cn(...inputs: ClassValue[]): string {\n return twMerge(clsx(inputs))\n}\n"],"mappings":";;;AA4BA,SAAgBE,EAAG,GAAGC,GAAoB;CACxC,OAAOF,EAAQD,EAAKG,CAAAA,CAAAA;AACtB"}
@@ -1,8 +1,8 @@
1
- import { Q as e, T as t, at as n, n as r, nt as i, ot as a, q as o } from "./build-BJDfnAyi.mjs";
2
- import { r as s } from "./trpcClient-BxguzNYF.mjs";
3
- import { c, n as l, p as u } from "./md-BivyCkGC.mjs";
4
- import { t as d } from "./useProjectId-OQv2KBbG.mjs";
5
- import "./hooks-DEjb9d1F.mjs";
1
+ import { Q as e, T as t, at as n, n as r, nt as i, ot as a, q as o } from "./build-DracvfrJ.mjs";
2
+ import { r as s } from "./trpcClient-BzPUgiM2.mjs";
3
+ import { c, n as l, p as u } from "./md-sBiSNVSQ.mjs";
4
+ import { t as d } from "./useProjectId-DBc5lpoU.mjs";
5
+ import "./hooks-dSArr2Ca.mjs";
6
6
  import { jsx as f, jsxs as p } from "react/jsx-runtime";
7
7
  import { Trans as m, useLingui as h } from "@lingui/react";
8
8
  import { z as g } from "zod";
@@ -22,7 +22,7 @@ var b = ({ pca: c, open: l, onClose: u, onSuccess: _ }) => {
22
22
  }), D = y(E.store, (e) => e.isSubmitting || e.values.delete !== "delete"), O = () => {
23
23
  E.reset(), u();
24
24
  };
25
- return /* @__PURE__ */ p(a, {
25
+ return /*#__PURE__*/ p(a, {
26
26
  open: l,
27
27
  size: "large",
28
28
  title: b._({ id: "ctc4XR" }),
@@ -32,37 +32,37 @@ var b = ({ pca: c, open: l, onClose: u, onSuccess: _ }) => {
32
32
  onConfirm: E.handleSubmit,
33
33
  disableConfirmButton: w || D,
34
34
  children: [
35
- T.error?.message && /* @__PURE__ */ f(o, {
35
+ T.error?.message && /*#__PURE__*/ f(o, {
36
36
  dismissible: !1,
37
37
  variant: "error",
38
38
  className: "mb-4",
39
39
  children: T.error.message
40
40
  }),
41
- w && /* @__PURE__ */ p("div", {
41
+ w && /*#__PURE__*/ p("div", {
42
42
  className: "mb-4 flex items-center justify-center gap-2",
43
- children: [/* @__PURE__ */ f(e, { variant: "primary" }), /* @__PURE__ */ f("span", {
43
+ children: [/*#__PURE__*/ f(e, { variant: "primary" }), /*#__PURE__*/ f("span", {
44
44
  className: "text-theme-high text-sm",
45
- children: /* @__PURE__ */ f(m, { id: "nWNviN" })
45
+ children: /*#__PURE__*/ f(m, { id: "nWNviN" })
46
46
  })]
47
47
  }),
48
- /* @__PURE__ */ p(i, {
48
+ /*#__PURE__*/ p(i, {
49
49
  gap: "2.5",
50
50
  direction: "vertical",
51
51
  className: "mb-2.5",
52
- children: [/* @__PURE__ */ f("p", { children: /* @__PURE__ */ f(m, { id: "nNKXt7" }) }), /* @__PURE__ */ f("p", { children: /* @__PURE__ */ f(m, {
52
+ children: [/*#__PURE__*/ f("p", { children: /*#__PURE__*/ f(m, { id: "nNKXt7" }) }), /*#__PURE__*/ f("p", { children: /*#__PURE__*/ f(m, {
53
53
  id: "go9U+C",
54
- components: { 0: /* @__PURE__ */ f("strong", {}) }
54
+ components: { 0: /*#__PURE__*/ f("strong", {}) }
55
55
  }) })]
56
56
  }),
57
- !w && /* @__PURE__ */ f(n, {
57
+ !w && /*#__PURE__*/ f(n, {
58
58
  className: "mb-0",
59
59
  id: "delete-pca-form",
60
60
  onSubmit: (e) => {
61
61
  e.preventDefault(), E.handleSubmit();
62
62
  },
63
- children: /* @__PURE__ */ f(r, { children: /* @__PURE__ */ f(E.Field, {
63
+ children: /*#__PURE__*/ f(r, { children: /*#__PURE__*/ f(E.Field, {
64
64
  name: "delete",
65
- children: (e) => /* @__PURE__ */ f(t, {
65
+ children: (e) => /*#__PURE__*/ f(t, {
66
66
  id: e.name,
67
67
  name: e.name,
68
68
  value: e.state.value,
@@ -78,7 +78,7 @@ var b = ({ pca: c, open: l, onClose: u, onSuccess: _ }) => {
78
78
  }, x = {
79
79
  CREATING: {
80
80
  text: "CREATING",
81
- icon: /* @__PURE__ */ f(l, {
81
+ icon: /*#__PURE__*/ f(l, {
82
82
  size: 18,
83
83
  color: "white",
84
84
  fill: "#4FB81C"
@@ -86,7 +86,7 @@ var b = ({ pca: c, open: l, onClose: u, onSuccess: _ }) => {
86
86
  },
87
87
  AWAITING_CERTIFICATE: {
88
88
  text: "AWAITING_CERTIFICATE",
89
- icon: /* @__PURE__ */ f(u, {
89
+ icon: /*#__PURE__*/ f(u, {
90
90
  size: 18,
91
91
  color: "white",
92
92
  fill: "#969696"
@@ -94,7 +94,7 @@ var b = ({ pca: c, open: l, onClose: u, onSuccess: _ }) => {
94
94
  },
95
95
  READY: {
96
96
  text: "READY",
97
- icon: /* @__PURE__ */ f(c, {
97
+ icon: /*#__PURE__*/ f(c, {
98
98
  size: 18,
99
99
  color: "white",
100
100
  fill: "#C70000"
@@ -102,7 +102,7 @@ var b = ({ pca: c, open: l, onClose: u, onSuccess: _ }) => {
102
102
  },
103
103
  FAILED: {
104
104
  text: "FAILED",
105
- icon: /* @__PURE__ */ f(c, {
105
+ icon: /*#__PURE__*/ f(c, {
106
106
  size: 18,
107
107
  color: "white",
108
108
  fill: "#C70000"
@@ -110,7 +110,7 @@ var b = ({ pca: c, open: l, onClose: u, onSuccess: _ }) => {
110
110
  },
111
111
  UNEXPECTED: {
112
112
  text: "UNEXPECTED",
113
- icon: /* @__PURE__ */ f(c, {
113
+ icon: /*#__PURE__*/ f(c, {
114
114
  size: 18,
115
115
  color: "white",
116
116
  fill: "#C70000"
@@ -125,4 +125,4 @@ var b = ({ pca: c, open: l, onClose: u, onSuccess: _ }) => {
125
125
  //#endregion
126
126
  export { S as n, b as r, x as t };
127
127
 
128
- //# sourceMappingURL=constants-B-P2r5F1.mjs.map
128
+ //# sourceMappingURL=constants-4lVQXort.mjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"constants-B-P2r5F1.mjs","names":["z","useForm","useStore","Modal","Form","FormSection","Spinner","Message","TextInput","Stack","trpcReact","useProjectId","DeletePcaModal","pca","open","onClose","onSuccess","useLingui","projectId","utils","useUtils","isPending","deletePcaMutation","services","delete","useMutation","onSettled","list","invalidate","formSchema","object","string","refine","value","message","t","form","defaultValues","validators","onSubmit","mutateAsync","project_id","certificate_authority_id","id","handleClose","canDelete","store","state","isSubmitting","values","reset","size","title","onCancel","cancelButtonLabel","confirmButtonLabel","onConfirm","handleSubmit","disableConfirmButton","error","dismissible","variant","className","div","span","gap","direction","p","strong","e","preventDefault","Field","name","children","field","onChange","handleChange","target","placeholder","helptext","required","MdError","MdRemoveCircle","MdCheckCircle","STATE_CONFIG","CREATING","text","icon","size","color","fill","AWAITING_CERTIFICATE","READY","FAILED","UNEXPECTED","TABLE_COLUMNS","t"],"sources":["../../src/client/routes/_auth/projects/$projectId/services/pca/-components/-modals/DeletePcaModal.tsx","../../src/client/routes/_auth/projects/$projectId/services/pca/-components/-table/constants.tsx"],"sourcesContent":["import { z } from \"zod\"\nimport { useForm, useStore } from \"@tanstack/react-form\"\nimport { Trans, useLingui } from \"@lingui/react/macro\"\nimport { Modal, Form, FormSection, Spinner, Message, TextInput, Stack } from \"@cloudoperators/juno-ui-components\"\nimport type { CertificateAuthority } from \"@/server/Services/types/pca\"\nimport { trpcReact } from \"@/client/trpcClient\"\nimport { useProjectId } from \"@/client/hooks\"\n\nexport interface DeletePcaModalProps {\n pca: CertificateAuthority\n open: boolean\n onClose: () => void\n onSuccess?: () => void\n}\n\nexport const DeletePcaModal = ({ pca, open, onClose, onSuccess }: DeletePcaModalProps) => {\n const { t } = useLingui()\n const projectId = useProjectId()\n const utils = trpcReact.useUtils()\n\n const { isPending, ...deletePcaMutation } = trpcReact.services.pca.delete.useMutation({\n onSettled: () => utils.services.pca.list.invalidate(),\n })\n\n const formSchema = z.object({\n delete: z.string().refine((value) => value === \"delete\", {\n message: t`Type “delete” to confirm`,\n }),\n })\n\n const form = useForm({\n defaultValues: {\n delete: \"\",\n },\n validators: {\n onSubmit: formSchema,\n },\n onSubmit: async () => {\n if (isPending) return\n\n await deletePcaMutation.mutateAsync({\n project_id: projectId,\n certificate_authority_id: pca.id,\n })\n handleClose()\n onSuccess?.()\n },\n })\n\n // creates a reactive subscription so the component re-renders, which allows the confirm button to enable once the user types \"delete\".\n const canDelete = useStore(form.store, (state) => state.isSubmitting || state.values.delete !== \"delete\")\n\n const handleClose = () => {\n form.reset()\n onClose()\n }\n\n return (\n <Modal\n open={open}\n size=\"large\"\n title={t`Delete certificate authority`}\n onCancel={handleClose}\n cancelButtonLabel={t`Cancel`}\n confirmButtonLabel={t`Delete`}\n onConfirm={form.handleSubmit}\n disableConfirmButton={isPending || canDelete}\n >\n {deletePcaMutation.error?.message && (\n <Message dismissible={false} variant=\"error\" className=\"mb-4\">\n {deletePcaMutation.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>Deleting certificate authority...</Trans>\n </span>\n </div>\n )}\n\n <Stack gap=\"2.5\" direction=\"vertical\" className=\"mb-2.5\">\n <p>\n <Trans>\n Deleting this Certificate Authority is permanent, and all the associated certificates will no longer apply\n to entities.\n </Trans>\n </p>\n <p>\n <Trans>\n To confirm, type <strong>\"delete\"</strong> in the field below.\n </Trans>\n </p>\n </Stack>\n\n {!isPending && (\n <Form\n className=\"mb-0\"\n id=\"delete-pca-form\"\n onSubmit={(e) => {\n e.preventDefault()\n form.handleSubmit()\n }}\n >\n <FormSection>\n <form.Field\n name=\"delete\"\n children={(field) => (\n <TextInput\n id={field.name}\n name={field.name}\n value={field.state.value}\n onChange={(e) => field.handleChange(e.target.value)}\n placeholder={t`Type \"delete\" to confirm`}\n helptext={t`The text must match “delete” in lowercase.`}\n required\n />\n )}\n />\n </FormSection>\n </Form>\n )}\n </Modal>\n )\n}\n","import { MdError, MdRemoveCircle, MdCheckCircle } from \"react-icons/md\"\nimport { t } from \"@lingui/core/macro\"\nimport { CertificateAuthorityState } from \"@/server/Services/types/pca\"\n\ntype PcaDisplayState = {\n text: string\n icon: React.ReactNode\n}\n\n// will replace text and icon after design-sync with Marta\nexport const STATE_CONFIG: Record<CertificateAuthorityState, PcaDisplayState> = {\n CREATING: {\n text: \"CREATING\",\n icon: <MdCheckCircle size={18} color=\"white\" fill=\"#4FB81C\" />,\n },\n AWAITING_CERTIFICATE: {\n text: \"AWAITING_CERTIFICATE\",\n icon: <MdRemoveCircle size={18} color=\"white\" fill=\"#969696\" />,\n },\n READY: {\n text: \"READY\",\n icon: <MdError size={18} color=\"white\" fill=\"#C70000\" />,\n },\n FAILED: {\n text: \"FAILED\",\n icon: <MdError size={18} color=\"white\" fill=\"#C70000\" />,\n },\n UNEXPECTED: {\n text: \"UNEXPECTED\",\n icon: <MdError size={18} color=\"white\" fill=\"#C70000\" />,\n },\n} as const\n\nexport const TABLE_COLUMNS = () =>\n [\n t`State`,\n t`ID`,\n t`Subject information`,\n \"\", // empty column for item-action with context menu containing \"Delete CA\" button\n ] as const\n"],"mappings":"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"}
1
+ {"version":3,"file":"constants-4lVQXort.mjs","names":["z","useForm","useStore","Modal","Form","FormSection","Spinner","Message","TextInput","Stack","trpcReact","useProjectId","DeletePcaModal","pca","open","onClose","onSuccess","useLingui","projectId","utils","useUtils","isPending","deletePcaMutation","services","delete","useMutation","onSettled","list","invalidate","formSchema","object","string","refine","value","message","t","form","defaultValues","validators","onSubmit","mutateAsync","project_id","certificate_authority_id","id","handleClose","canDelete","store","state","isSubmitting","values","reset","size","title","onCancel","cancelButtonLabel","confirmButtonLabel","onConfirm","handleSubmit","disableConfirmButton","error","dismissible","variant","className","div","span","gap","direction","p","strong","e","preventDefault","Field","name","children","field","onChange","handleChange","target","placeholder","helptext","required","MdError","MdRemoveCircle","MdCheckCircle","STATE_CONFIG","CREATING","text","icon","size","color","fill","AWAITING_CERTIFICATE","READY","FAILED","UNEXPECTED","TABLE_COLUMNS","t"],"sources":["../../src/client/routes/_auth/projects/$projectId/services/pca/-components/-modals/DeletePcaModal.tsx","../../src/client/routes/_auth/projects/$projectId/services/pca/-components/-table/constants.tsx"],"sourcesContent":["import { z } from \"zod\"\nimport { useForm, useStore } from \"@tanstack/react-form\"\nimport { Trans, useLingui } from \"@lingui/react/macro\"\nimport { Modal, Form, FormSection, Spinner, Message, TextInput, Stack } from \"@cloudoperators/juno-ui-components\"\nimport type { CertificateAuthority } from \"@/server/Services/types/pca\"\nimport { trpcReact } from \"@/client/trpcClient\"\nimport { useProjectId } from \"@/client/hooks\"\n\nexport interface DeletePcaModalProps {\n pca: CertificateAuthority\n open: boolean\n onClose: () => void\n onSuccess?: () => void\n}\n\nexport const DeletePcaModal = ({ pca, open, onClose, onSuccess }: DeletePcaModalProps) => {\n const { t } = useLingui()\n const projectId = useProjectId()\n const utils = trpcReact.useUtils()\n\n const { isPending, ...deletePcaMutation } = trpcReact.services.pca.delete.useMutation({\n onSettled: () => utils.services.pca.list.invalidate(),\n })\n\n const formSchema = z.object({\n delete: z.string().refine((value) => value === \"delete\", {\n message: t`Type “delete” to confirm`,\n }),\n })\n\n const form = useForm({\n defaultValues: {\n delete: \"\",\n },\n validators: {\n onSubmit: formSchema,\n },\n onSubmit: async () => {\n if (isPending) return\n\n await deletePcaMutation.mutateAsync({\n project_id: projectId,\n certificate_authority_id: pca.id,\n })\n handleClose()\n onSuccess?.()\n },\n })\n\n // creates a reactive subscription so the component re-renders, which allows the confirm button to enable once the user types \"delete\".\n const canDelete = useStore(form.store, (state) => state.isSubmitting || state.values.delete !== \"delete\")\n\n const handleClose = () => {\n form.reset()\n onClose()\n }\n\n return (\n <Modal\n open={open}\n size=\"large\"\n title={t`Delete certificate authority`}\n onCancel={handleClose}\n cancelButtonLabel={t`Cancel`}\n confirmButtonLabel={t`Delete`}\n onConfirm={form.handleSubmit}\n disableConfirmButton={isPending || canDelete}\n >\n {deletePcaMutation.error?.message && (\n <Message dismissible={false} variant=\"error\" className=\"mb-4\">\n {deletePcaMutation.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>Deleting certificate authority...</Trans>\n </span>\n </div>\n )}\n\n <Stack gap=\"2.5\" direction=\"vertical\" className=\"mb-2.5\">\n <p>\n <Trans>\n Deleting this Certificate Authority is permanent, and all the associated certificates will no longer apply\n to entities.\n </Trans>\n </p>\n <p>\n <Trans>\n To confirm, type <strong>\"delete\"</strong> in the field below.\n </Trans>\n </p>\n </Stack>\n\n {!isPending && (\n <Form\n className=\"mb-0\"\n id=\"delete-pca-form\"\n onSubmit={(e) => {\n e.preventDefault()\n form.handleSubmit()\n }}\n >\n <FormSection>\n <form.Field\n name=\"delete\"\n children={(field) => (\n <TextInput\n id={field.name}\n name={field.name}\n value={field.state.value}\n onChange={(e) => field.handleChange(e.target.value)}\n placeholder={t`Type \"delete\" to confirm`}\n helptext={t`The text must match “delete” in lowercase.`}\n required\n />\n )}\n />\n </FormSection>\n </Form>\n )}\n </Modal>\n )\n}\n","import { MdError, MdRemoveCircle, MdCheckCircle } from \"react-icons/md\"\nimport { t } from \"@lingui/core/macro\"\nimport { CertificateAuthorityState } from \"@/server/Services/types/pca\"\n\ntype PcaDisplayState = {\n text: string\n icon: React.ReactNode\n}\n\n// will replace text and icon after design-sync with Marta\nexport const STATE_CONFIG: Record<CertificateAuthorityState, PcaDisplayState> = {\n CREATING: {\n text: \"CREATING\",\n icon: <MdCheckCircle size={18} color=\"white\" fill=\"#4FB81C\" />,\n },\n AWAITING_CERTIFICATE: {\n text: \"AWAITING_CERTIFICATE\",\n icon: <MdRemoveCircle size={18} color=\"white\" fill=\"#969696\" />,\n },\n READY: {\n text: \"READY\",\n icon: <MdError size={18} color=\"white\" fill=\"#C70000\" />,\n },\n FAILED: {\n text: \"FAILED\",\n icon: <MdError size={18} color=\"white\" fill=\"#C70000\" />,\n },\n UNEXPECTED: {\n text: \"UNEXPECTED\",\n icon: <MdError size={18} color=\"white\" fill=\"#C70000\" />,\n },\n} as const\n\nexport const TABLE_COLUMNS = () =>\n [\n t`State`,\n t`ID`,\n t`Subject information`,\n \"\", // empty column for item-action with context menu containing \"Delete CA\" button\n ] as const\n"],"mappings":"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"}
@@ -1,8 +1,8 @@
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
  import { z as i } from "zod";
4
4
  //#region src/client/routes/_auth/projects/$projectId/storage/$provider/containers/index.tsx
5
- var a = () => import("./containers-DsRWc1L5.mjs"), o = () => import("./containers-J7WFA18U.mjs"), s = (t, n) => {
5
+ var a = () => import("./containers-xfsYgRyf.mjs"), o = () => import("./containers-ZMFTRaQL.mjs"), s = (t, n) => {
6
6
  let { provider: i, projectId: a } = n, o = e(t);
7
7
  if (!o["object-store"]) throw r({
8
8
  to: "/projects/$projectId",
@@ -74,4 +74,4 @@ var a = () => import("./containers-DsRWc1L5.mjs"), o = () => import("./container
74
74
  //#endregion
75
75
  export { l as t };
76
76
 
77
- //# sourceMappingURL=containers-BjWqjNOx.mjs.map
77
+ //# sourceMappingURL=containers-DGY2hoWw.mjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"containers-BjWqjNOx.mjs","names":["createFileRoute","redirect","z","getServiceIndex","checkServiceAvailability","availableServices","type","name","params","projectId","provider","serviceIndex","to","hasSwift","Boolean","hasCeph","cephFallbackEnabled","hasEffectiveCeph","fallbackProvider","containersSearchSchema","object","sortBy","enum","optional","sortDirection","search","string","Route","staticData","section","service","sectionCrumb","labelKey","crumb","useParamAsLabel","RouteInfo","validateSearch","head","match","meta","title","component","lazyRouteComponent","$$splitComponentImporter","notFoundComponent","$$splitNotFoundComponentImporter","loader","context","trpcClient","auth","getAvailableServices","query","client","beforeLoad"],"sources":["../../src/client/routes/_auth/projects/$projectId/storage/$provider/containers/index.tsx"],"sourcesContent":["import { createFileRoute, redirect, useParams } from \"@tanstack/react-router\"\nimport { z } from \"zod\"\nimport { getServiceIndex } from \"@/server/Authentication/helpers\"\nimport { ErrorBoundary } from \"react-error-boundary\"\nimport { SwiftContainers } from \"../../-components/Swift/Containers\"\nimport { CephContainers } from \"../../-components/Ceph/Containers\"\nimport { Trans, useLingui } from \"@lingui/react/macro\"\nimport type { RouteInfo } from \"@/client/routes/routeInfo\"\nimport { ContentHeader } from \"@/client/components/ContentHeader/ContentHeader\"\n\n/**\n * Validates that the requested storage provider is available for the given project,\n * and redirects to an appropriate fallback route when it is not.\n *\n * Redirect rules (in priority order):\n * 1. No `object-store` service at all → redirect to the project overview.\n * 2. Unknown provider (neither \"swift\" nor \"ceph\") → redirect to the first\n * available provider, or to the project overview if none exist.\n * 3. Requested provider unavailable → redirect to the other provider,\n * or to the project overview if no alternative exists.\n *\n * Ceph has a temporary fallback flag (`cephFallbackEnabled`) that treats it as\n * available even when absent from the OpenStack service catalog.\n *\n * @throws {redirect} - Always throws a TanStack Router redirect; never returns normally\n * when the requested provider/project combination is unavailable.\n */\nexport const checkServiceAvailability = (\n availableServices: {\n type: string\n name: string\n }[],\n params: {\n projectId: string\n provider: string\n }\n) => {\n const { provider, projectId } = params\n\n const serviceIndex = getServiceIndex(availableServices)\n\n // Redirect to the \"Projects Overview\" page if no storage services available\n if (!serviceIndex[\"object-store\"]) {\n throw redirect({\n to: \"/projects/$projectId\",\n params: { projectId },\n })\n }\n\n // Check provider availability\n const hasSwift = Boolean(serviceIndex[\"object-store\"][\"swift\"])\n const hasCeph = Boolean(serviceIndex[\"object-store\"][\"ceph\"])\n\n // TEMPORARY: Allow Ceph access even if not in catalog (relies on env config)\n // TODO: Properly register Ceph in OpenStack service catalog\n const cephFallbackEnabled = true // Set to false once Ceph is in catalog\n\n // Effective availability includes fallback flag for Ceph\n const hasEffectiveCeph = hasCeph || cephFallbackEnabled\n const fallbackProvider = hasSwift ? \"swift\" : hasEffectiveCeph ? \"ceph\" : null\n\n if (provider !== \"swift\" && provider !== \"ceph\") {\n if (!fallbackProvider) {\n throw redirect({\n to: \"/projects/$projectId\",\n params: { projectId },\n })\n }\n throw redirect({\n to: \"/projects/$projectId/storage/$provider/containers\",\n params: { ...params, provider: fallbackProvider },\n })\n }\n\n if (provider === \"swift\" && !hasSwift) {\n if (!hasEffectiveCeph) {\n throw redirect({\n to: \"/projects/$projectId\",\n params: { projectId },\n })\n }\n\n throw redirect({\n to: \"/projects/$projectId/storage/$provider/containers\",\n params: { ...params, provider: \"ceph\" },\n })\n }\n\n if (provider === \"ceph\" && !hasEffectiveCeph) {\n if (!hasSwift) {\n throw redirect({\n to: \"/projects/$projectId\",\n params: { projectId },\n })\n }\n\n throw redirect({\n to: \"/projects/$projectId/storage/$provider/containers\",\n params: { ...params, provider: \"swift\" },\n })\n }\n}\n\n// Search params schema\n// - sortBy: active sort column — persisted for deep links and back navigation\n// - sortDirection: \"asc\" | \"desc\" — persisted alongside sortBy\n// - search: active filter string — persisted so deep links preserve the current search\nconst containersSearchSchema = z.object({\n sortBy: z.enum([\"name\", \"count\", \"bytes\", \"last_modified\"]).optional(),\n sortDirection: z.enum([\"asc\", \"desc\"]).optional(),\n search: z.string().optional(),\n})\n\nexport const Route = createFileRoute(\"/_auth/projects/$projectId/storage/$provider/containers/\")({\n staticData: {\n section: \"storage\",\n service: \"containers\",\n sectionCrumb: { labelKey: \"Storage\" },\n crumb: { useParamAsLabel: \"provider\" },\n } satisfies RouteInfo,\n validateSearch: containersSearchSchema,\n head: ({ match }) => ({\n meta: [\n {\n title:\n match.params.provider === \"swift\"\n ? \"Object Storage (Swift)\"\n : match.params.provider === \"ceph\"\n ? \"Object Storage (Ceph)\"\n : \"Storage Overview\",\n },\n ],\n }),\n component: () => {\n return <StorageDashboard />\n },\n notFoundComponent: () => {\n return <p>Storage service not found</p>\n },\n loader: async ({ context }) => {\n const { trpcClient } = context\n const availableServices = await trpcClient?.auth.getAvailableServices.query()\n\n return {\n client: trpcClient,\n availableServices,\n }\n },\n beforeLoad: async ({ context, params }) => {\n const { trpcClient } = context\n const availableServices = await trpcClient?.auth.getAvailableServices.query()\n checkServiceAvailability(availableServices!, params)\n },\n})\n\nfunction StorageDashboard() {\n const { project, provider } = useParams({\n from: \"/_auth/projects/$projectId/storage/$provider/containers/\",\n select: (params) => {\n return { project: params.projectId, provider: params.provider }\n },\n })\n\n const { t } = useLingui()\n\n let pageTitle: string\n switch (provider) {\n case \"swift\":\n pageTitle = t`Object Storage (Swift)`\n break\n case \"ceph\":\n pageTitle = t`Object Storage (Ceph)`\n break\n default:\n pageTitle = t`Storage Overview`\n }\n\n return (\n <div>\n <ContentHeader title={pageTitle} projectId={project} />\n {project ? (\n <ErrorBoundary\n resetKeys={[project, provider]}\n fallback={\n <div className=\"p-4 text-center\">\n <Trans>Error loading component</Trans>\n </div>\n }\n >\n {(() => {\n switch (provider) {\n case \"swift\":\n return <SwiftContainers />\n case \"ceph\":\n return <CephContainers />\n default:\n return <div>Storage Overview Page</div> // replace when available\n }\n })()}\n </ErrorBoundary>\n ) : (\n <div className=\"p-4 text-center\">\n <Trans>No project selected</Trans>\n </div>\n )}\n </div>\n )\n}\n"],"mappings":";;;;kGA2BaI,KACXC,GAIAG,MAAAA;CAKA,IAAM,EAAEE,aAAUD,iBAAcD,GAE1BG,IAAeR,EAAgBE,EAAAA;AAGrC,KAAI,CAACM,EAAa,gBAChB,OAAMV,EAAS;EACbW,IAAI;EACJJ,QAAQ,EAAEC,cAAU;EACtB,CAAA;CAIF,IAAMI,IAAWC,EAAQH,EAAa,gBAAgB,OAQhDM,IAPUH,EAAQH,EAAa,gBAAgB,QAIzB,IAItBO,IAAmBL,IAAW,UAAUI,IAAmB,SAAS;AAE1E,KAAIP,MAAa,WAAWA,MAAa,OAOvC,OAAMT,EANDiB,IAMU;EACbN,IAAI;EACJJ,QAAQ;GAAE,GAAGA;GAAQE,UAAUQ;GAAiB;EAClD,GARiB;EACbN,IAAI;EACJJ,QAAQ,EAAEC,cAAU;EACtB,CAAA;AAQJ,KAAIC,MAAa,WAAW,CAACG,EAQ3B,OAAMZ,EAPDgB,IAOU;EACbL,IAAI;EACJJ,QAAQ;GAAE,GAAGA;GAAQE,UAAU;GAAO;EACxC,GATiB;EACbE,IAAI;EACJJ,QAAQ,EAAEC,cAAU;EACtB,CAAA;AASJ,KAAIC,MAAa,UAAU,CAACO,EAQ1B,OAAMhB,EAPDY,IAOU;EACbD,IAAI;EACJJ,QAAQ;GAAE,GAAGA;GAAQE,UAAU;GAAQ;EACzC,GATiB;EACbE,IAAI;EACJJ,QAAQ,EAAEC,cAAU;EACtB,CAAA;GAcAU,IAAyBjB,EAAEkB,OAAO;CACtCC,QAAQnB,EAAEoB,KAAK;EAAC;EAAQ;EAAS;EAAS;EAAgB,CAAA,CAAEC,UAAQ;CACpEC,eAAetB,EAAEoB,KAAK,CAAC,OAAO,OAAO,CAAA,CAAEC,UAAQ;CAC/CE,QAAQvB,EAAEwB,QAAM,CAAGH,UAAQ;CAC7B,CAAA,EAEaI,IAAQ3B,EAAgB,2DAAA,CAA4D;CAC/F4B,YAAY;EACVC,SAAS;EACTC,SAAS;EACTC,cAAc,EAAEC,UAAU,WAAU;EACpCC,OAAO,EAAEC,iBAAiB,YAAW;EACvC;CACAE,gBAAgBjB;CAChBkB,OAAO,EAAEC,gBAAa,EACpBC,MAAM,CACJ,EACEC,OACEF,EAAM9B,OAAOE,aAAa,UACtB,2BACA4B,EAAM9B,OAAOE,aAAa,SACxB,0BACA,oBACV,CAAC,EAEL;CACA+B,WAASC,EAAAC,GAAA,YAAA;CAGTC,mBAAiBF,EAAAG,GAAA,oBAAA;CAGjBC,QAAQ,OAAO,EAAEC,iBAAS;EACxB,IAAM,EAAEC,kBAAeD;AAGvB,SAAO;GACLK,QAAQJ;GACR3C,mBAJwB,MAAM2C,GAAYC,KAAKC,qBAAqBC,OAAAA;GAKtE;;CAEFE,YAAY,OAAO,EAAEN,YAASvC,gBAAQ;EACpC,IAAM,EAAEwC,kBAAeD;AAEvB3C,IAD0B,MAAM4C,GAAYC,KAAKC,qBAAqBC,OAAAA,EACzB3C,EAAAA;;CAEjD,CAAA"}
1
+ {"version":3,"file":"containers-DGY2hoWw.mjs","names":["createFileRoute","redirect","z","getServiceIndex","checkServiceAvailability","availableServices","type","name","params","projectId","provider","serviceIndex","to","hasSwift","Boolean","hasCeph","cephFallbackEnabled","hasEffectiveCeph","fallbackProvider","containersSearchSchema","object","sortBy","enum","optional","sortDirection","search","string","Route","staticData","section","service","sectionCrumb","labelKey","crumb","useParamAsLabel","RouteInfo","validateSearch","head","match","meta","title","component","lazyRouteComponent","$$splitComponentImporter","notFoundComponent","$$splitNotFoundComponentImporter","loader","context","trpcClient","auth","getAvailableServices","query","client","beforeLoad"],"sources":["../../src/client/routes/_auth/projects/$projectId/storage/$provider/containers/index.tsx"],"sourcesContent":["import { createFileRoute, redirect, useParams } from \"@tanstack/react-router\"\nimport { z } from \"zod\"\nimport { getServiceIndex } from \"@/server/Authentication/helpers\"\nimport { ErrorBoundary } from \"react-error-boundary\"\nimport { SwiftContainers } from \"../../-components/Swift/Containers\"\nimport { CephContainers } from \"../../-components/Ceph/Containers\"\nimport { Trans, useLingui } from \"@lingui/react/macro\"\nimport type { RouteInfo } from \"@/client/routes/routeInfo\"\nimport { ContentHeader } from \"@/client/components/ContentHeader/ContentHeader\"\n\n/**\n * Validates that the requested storage provider is available for the given project,\n * and redirects to an appropriate fallback route when it is not.\n *\n * Redirect rules (in priority order):\n * 1. No `object-store` service at all → redirect to the project overview.\n * 2. Unknown provider (neither \"swift\" nor \"ceph\") → redirect to the first\n * available provider, or to the project overview if none exist.\n * 3. Requested provider unavailable → redirect to the other provider,\n * or to the project overview if no alternative exists.\n *\n * Ceph has a temporary fallback flag (`cephFallbackEnabled`) that treats it as\n * available even when absent from the OpenStack service catalog.\n *\n * @throws {redirect} - Always throws a TanStack Router redirect; never returns normally\n * when the requested provider/project combination is unavailable.\n */\nexport const checkServiceAvailability = (\n availableServices: {\n type: string\n name: string\n }[],\n params: {\n projectId: string\n provider: string\n }\n) => {\n const { provider, projectId } = params\n\n const serviceIndex = getServiceIndex(availableServices)\n\n // Redirect to the \"Projects Overview\" page if no storage services available\n if (!serviceIndex[\"object-store\"]) {\n throw redirect({\n to: \"/projects/$projectId\",\n params: { projectId },\n })\n }\n\n // Check provider availability\n const hasSwift = Boolean(serviceIndex[\"object-store\"][\"swift\"])\n const hasCeph = Boolean(serviceIndex[\"object-store\"][\"ceph\"])\n\n // TEMPORARY: Allow Ceph access even if not in catalog (relies on env config)\n // TODO: Properly register Ceph in OpenStack service catalog\n const cephFallbackEnabled = true // Set to false once Ceph is in catalog\n\n // Effective availability includes fallback flag for Ceph\n const hasEffectiveCeph = hasCeph || cephFallbackEnabled\n const fallbackProvider = hasSwift ? \"swift\" : hasEffectiveCeph ? \"ceph\" : null\n\n if (provider !== \"swift\" && provider !== \"ceph\") {\n if (!fallbackProvider) {\n throw redirect({\n to: \"/projects/$projectId\",\n params: { projectId },\n })\n }\n throw redirect({\n to: \"/projects/$projectId/storage/$provider/containers\",\n params: { ...params, provider: fallbackProvider },\n })\n }\n\n if (provider === \"swift\" && !hasSwift) {\n if (!hasEffectiveCeph) {\n throw redirect({\n to: \"/projects/$projectId\",\n params: { projectId },\n })\n }\n\n throw redirect({\n to: \"/projects/$projectId/storage/$provider/containers\",\n params: { ...params, provider: \"ceph\" },\n })\n }\n\n if (provider === \"ceph\" && !hasEffectiveCeph) {\n if (!hasSwift) {\n throw redirect({\n to: \"/projects/$projectId\",\n params: { projectId },\n })\n }\n\n throw redirect({\n to: \"/projects/$projectId/storage/$provider/containers\",\n params: { ...params, provider: \"swift\" },\n })\n }\n}\n\n// Search params schema\n// - sortBy: active sort column — persisted for deep links and back navigation\n// - sortDirection: \"asc\" | \"desc\" — persisted alongside sortBy\n// - search: active filter string — persisted so deep links preserve the current search\nconst containersSearchSchema = z.object({\n sortBy: z.enum([\"name\", \"count\", \"bytes\", \"last_modified\"]).optional(),\n sortDirection: z.enum([\"asc\", \"desc\"]).optional(),\n search: z.string().optional(),\n})\n\nexport const Route = createFileRoute(\"/_auth/projects/$projectId/storage/$provider/containers/\")({\n staticData: {\n section: \"storage\",\n service: \"containers\",\n sectionCrumb: { labelKey: \"Storage\" },\n crumb: { useParamAsLabel: \"provider\" },\n } satisfies RouteInfo,\n validateSearch: containersSearchSchema,\n head: ({ match }) => ({\n meta: [\n {\n title:\n match.params.provider === \"swift\"\n ? \"Object Storage (Swift)\"\n : match.params.provider === \"ceph\"\n ? \"Object Storage (Ceph)\"\n : \"Storage Overview\",\n },\n ],\n }),\n component: () => {\n return <StorageDashboard />\n },\n notFoundComponent: () => {\n return <p>Storage service not found</p>\n },\n loader: async ({ context }) => {\n const { trpcClient } = context\n const availableServices = await trpcClient?.auth.getAvailableServices.query()\n\n return {\n client: trpcClient,\n availableServices,\n }\n },\n beforeLoad: async ({ context, params }) => {\n const { trpcClient } = context\n const availableServices = await trpcClient?.auth.getAvailableServices.query()\n checkServiceAvailability(availableServices!, params)\n },\n})\n\nfunction StorageDashboard() {\n const { project, provider } = useParams({\n from: \"/_auth/projects/$projectId/storage/$provider/containers/\",\n select: (params) => {\n return { project: params.projectId, provider: params.provider }\n },\n })\n\n const { t } = useLingui()\n\n let pageTitle: string\n switch (provider) {\n case \"swift\":\n pageTitle = t`Object Storage (Swift)`\n break\n case \"ceph\":\n pageTitle = t`Object Storage (Ceph)`\n break\n default:\n pageTitle = t`Storage Overview`\n }\n\n return (\n <div>\n <ContentHeader title={pageTitle} projectId={project} />\n {project ? (\n <ErrorBoundary\n resetKeys={[project, provider]}\n fallback={\n <div className=\"p-4 text-center\">\n <Trans>Error loading component</Trans>\n </div>\n }\n >\n {(() => {\n switch (provider) {\n case \"swift\":\n return <SwiftContainers />\n case \"ceph\":\n return <CephContainers />\n default:\n return <div>Storage Overview Page</div> // replace when available\n }\n })()}\n </ErrorBoundary>\n ) : (\n <div className=\"p-4 text-center\">\n <Trans>No project selected</Trans>\n </div>\n )}\n </div>\n )\n}\n"],"mappings":";;;;kGA2BaI,KACXC,GAIAG,MAAAA;CAKA,IAAM,EAAEE,aAAUD,iBAAcD,GAE1BG,IAAeR,EAAgBE,CAAAA;CAGrC,IAAI,CAACM,EAAa,iBAChB,MAAMV,EAAS;EACbW,IAAI;EACJJ,QAAQ,EAAEC,aAAU;CACtB,CAAA;CAIF,IAAMI,IAAWC,EAAQH,EAAa,gBAAgB,OAQhDM,IAPUH,EAAQH,EAAa,gBAAgB,QAOjBK,IAC9BE,IAAmBL,IAAW,UAAUI,IAAmB,SAAS;CAE1E,IAAIP,MAAa,WAAWA,MAAa,QAOvC,MAAMT,EANDiB,IAMU;EACbN,IAAI;EACJJ,QAAQ;GAAE,GAAGA;GAAQE,UAAUQ;EAAiB;CAClD,IARiB;EACbN,IAAI;EACJJ,QAAQ,EAAEC,aAAU;CACtB,CAAA;CAQJ,IAAIC,MAAa,WAAW,CAACG,GAQ3B,MAAMZ,EAPDgB,IAOU;EACbL,IAAI;EACJJ,QAAQ;GAAE,GAAGA;GAAQE,UAAU;EAAO;CACxC,IATiB;EACbE,IAAI;EACJJ,QAAQ,EAAEC,aAAU;CACtB,CAAA;CASJ,IAAIC,MAAa,UAAU,CAACO,GAQ1B,MAAMhB,EAPDY,IAOU;EACbD,IAAI;EACJJ,QAAQ;GAAE,GAAGA;GAAQE,UAAU;EAAQ;CACzC,IATiB;EACbE,IAAI;EACJJ,QAAQ,EAAEC,aAAU;CACtB,CAAA;AAQN,GAMMU,IAAyBjB,EAAEkB,OAAO;CACtCC,QAAQnB,EAAEoB,KAAK;EAAC;EAAQ;EAAS;EAAS;EAAgB,EAAEC,SAAQ;CACpEC,eAAetB,EAAEoB,KAAK,CAAC,OAAO,MAAA,CAAO,EAAEC,SAAQ;CAC/CE,QAAQvB,EAAEwB,OAAM,EAAGH,SAAQ;AAC7B,CAAA,GAEaI,IAAQ3B,EAAgB,0DAAA,EAA4D;CAC/F4B,YAAY;EACVC,SAAS;EACTC,SAAS;EACTC,cAAc,EAAEC,UAAU,UAAU;EACpCC,OAAO,EAAEC,iBAAiB,WAAW;CACvC;CACAE,gBAAgBjB;CAChBkB,OAAO,EAAEC,gBAAa,EACpBC,MAAM,CACJ,EACEC,OACEF,EAAM9B,OAAOE,aAAa,UACtB,2BACA4B,EAAM9B,OAAOE,aAAa,SACxB,0BACA,mBACV,CAAA,EAEJ;CACA+B,WAASC,EAAAC,GAAA,WAAA;CAGTC,mBAAiBF,EAAAG,GAAA,mBAAA;CAGjBC,QAAQ,OAAO,EAAEC,iBAAS;EACxB,IAAM,EAAEC,kBAAeD;EAGvB,OAAO;GACLK,QAAQJ;GACR3C,mBAAAA,MAJ8B2C,GAAYC,KAAKC,qBAAqBC,MAAAA;EAKtE;CACF;CACAE,YAAY,OAAO,EAAEN,YAASvC,gBAAQ;EACpC,IAAM,EAAEwC,kBAAeD;EAEvB3C,EAAyBC,MADO2C,GAAYC,KAAKC,qBAAqBC,MAAAA,GACzB3C,CAAAA;CAC/C;AACF,CAAA"}