@cobaltcore-dev/aurora 0.5.0 → 0.7.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 (116) hide show
  1. package/README.md +59 -13
  2. package/dist/client/{ContentHeader-xQVhO2yT.mjs → ContentHeader-kx1Th5Sq.mjs} +18 -18
  3. package/dist/client/{ContentHeader-xQVhO2yT.mjs.map → ContentHeader-kx1Th5Sq.mjs.map} +1 -1
  4. package/dist/client/{DeleteFlavorModal-CHTUZ3YV.mjs → DeleteFlavorModal-C3cb7YiJ.mjs} +155 -155
  5. package/dist/client/{DeleteFlavorModal-CHTUZ3YV.mjs.map → DeleteFlavorModal-C3cb7YiJ.mjs.map} +1 -1
  6. package/dist/client/{EditSecurityGroupModal-CWHHx2Xk.mjs → EditSecurityGroupModal-CpP54WIK.mjs} +18 -18
  7. package/dist/client/{EditSecurityGroupModal-CWHHx2Xk.mjs.map → EditSecurityGroupModal-CpP54WIK.mjs.map} +1 -1
  8. package/dist/client/{FiltersInput-UKJpNFdr.mjs → FiltersInput-DxcyR6Bp.mjs} +18 -18
  9. package/dist/client/{FiltersInput-UKJpNFdr.mjs.map → FiltersInput-DxcyR6Bp.mjs.map} +1 -1
  10. package/dist/client/{FloatingIpActionModals-caXn6bYo.mjs → FloatingIpActionModals-BP8RWHbu.mjs} +55 -55
  11. package/dist/client/{FloatingIpActionModals-caXn6bYo.mjs.map → FloatingIpActionModals-BP8RWHbu.mjs.map} +1 -1
  12. package/dist/client/{ImageToastNotifications-BWimIzu_.mjs → ImageToastNotifications-TZ3EfQg-.mjs} +323 -371
  13. package/dist/client/ImageToastNotifications-TZ3EfQg-.mjs.map +1 -0
  14. package/dist/client/{RouteError-CUj_m3gu.mjs → RouteError-QSV7qOoJ.mjs} +2 -2
  15. package/dist/client/{RouteError-CUj_m3gu.mjs.map → RouteError-QSV7qOoJ.mjs.map} +1 -1
  16. package/dist/client/{SortInput-GQlQBlAj.mjs → SortInput-CYv2_Pur.mjs} +5 -5
  17. package/dist/client/{SortInput-GQlQBlAj.mjs.map → SortInput-CYv2_Pur.mjs.map} +1 -1
  18. package/dist/client/_auth-DXJkv9QO.mjs.map +1 -1
  19. package/dist/client/{_flavorId-sUWG0xuy.mjs → _flavorId-C2x43-6S.mjs} +9 -9
  20. package/dist/client/{_flavorId-sUWG0xuy.mjs.map → _flavorId-C2x43-6S.mjs.map} +1 -1
  21. package/dist/client/{_flavorId-C5dc1N_j.mjs → _flavorId-CR8ZUI-P.mjs} +46 -46
  22. package/dist/client/{_flavorId-C5dc1N_j.mjs.map → _flavorId-CR8ZUI-P.mjs.map} +1 -1
  23. package/dist/client/{_floatingIpId-CT4y-60o.mjs → _floatingIpId-BCk41_Lb.mjs} +2 -2
  24. package/dist/client/{_floatingIpId-CT4y-60o.mjs.map → _floatingIpId-BCk41_Lb.mjs.map} +1 -1
  25. package/dist/client/{_floatingIpId-COK_TBrz2.mjs → _floatingIpId-BGrOAmPT.mjs} +33 -33
  26. package/dist/client/_floatingIpId-BGrOAmPT.mjs.map +1 -0
  27. package/dist/client/_imageId-CvfD832b.mjs +534 -0
  28. package/dist/client/{_imageId-n3RcnhAR.mjs.map → _imageId-CvfD832b.mjs.map} +1 -1
  29. package/dist/client/_pcaId-BxBt5DXi.mjs +459 -0
  30. package/dist/client/_pcaId-BxBt5DXi.mjs.map +1 -0
  31. package/dist/client/{_pcaId-ChnM_t-9.mjs → _pcaId-DOHycvCf.mjs} +2 -2
  32. package/dist/client/{_pcaId-ChnM_t-9.mjs.map → _pcaId-DOHycvCf.mjs.map} +1 -1
  33. package/dist/client/{_projectId-26bw-_rm.mjs → _projectId-BDSWnMGj.mjs} +3 -3
  34. package/dist/client/{_projectId-26bw-_rm.mjs.map → _projectId-BDSWnMGj.mjs.map} +1 -1
  35. package/dist/client/{_projectId-Dhb4AyBD.mjs → _projectId-DOgwFiqD.mjs} +2 -2
  36. package/dist/client/{_projectId-Dhb4AyBD.mjs.map → _projectId-DOgwFiqD.mjs.map} +1 -1
  37. package/dist/client/_projectId-DS4nR59B.mjs +299 -0
  38. package/dist/client/_projectId-DS4nR59B.mjs.map +1 -0
  39. package/dist/client/{_projectId-BK9UqeYw.mjs → _projectId-MxcHrXW4.mjs} +12 -12
  40. package/dist/client/_projectId-MxcHrXW4.mjs.map +1 -0
  41. package/dist/client/{_securityGroupId-CR1mKICQ.mjs → _securityGroupId-CJJanWiY.mjs} +2 -2
  42. package/dist/client/{_securityGroupId-CR1mKICQ.mjs.map → _securityGroupId-CJJanWiY.mjs.map} +1 -1
  43. package/dist/client/{_securityGroupId-DroYG6cA.mjs → _securityGroupId-KKw4RPdH.mjs} +328 -328
  44. package/dist/client/{_securityGroupId-DroYG6cA.mjs.map → _securityGroupId-KKw4RPdH.mjs.map} +1 -1
  45. package/dist/client/{containers-DGY2hoWw.mjs → _storageType-4wSxI__0.mjs} +18 -15
  46. package/dist/client/_storageType-4wSxI__0.mjs.map +1 -0
  47. package/dist/client/{containers-ZMFTRaQL.mjs → _storageType-DYjo-6ej.mjs} +1054 -1088
  48. package/dist/client/_storageType-DYjo-6ej.mjs.map +1 -0
  49. package/dist/client/{containers-xfsYgRyf.mjs → _storageType-zeSZe--V.mjs} +2 -2
  50. package/dist/client/_storageType-zeSZe--V.mjs.map +1 -0
  51. package/dist/client/{about-969pIiZ9.mjs → about-Bo9vxGHy.mjs} +8 -8
  52. package/dist/client/{about-969pIiZ9.mjs.map → about-Bo9vxGHy.mjs.map} +1 -1
  53. package/dist/client/{build-DracvfrJ.mjs → build-DeJcDjPi.mjs} +3798 -3372
  54. package/dist/client/build-DeJcDjPi.mjs.map +1 -0
  55. package/dist/client/constants-BmcGYeR-.mjs +153 -0
  56. package/dist/client/constants-BmcGYeR-.mjs.map +1 -0
  57. package/dist/client/{flavors-C4GtoybP.mjs → flavors-BxFVqgnb.mjs} +2 -2
  58. package/dist/client/{flavors-C4GtoybP.mjs.map → flavors-BxFVqgnb.mjs.map} +1 -1
  59. package/dist/client/{flavors-CpirO_nr.mjs → flavors-CfdgjsZY.mjs} +192 -192
  60. package/dist/client/{flavors-CpirO_nr.mjs.map → flavors-CfdgjsZY.mjs.map} +1 -1
  61. package/dist/client/{floatingips-BUf_oLRl.mjs → floatingips-ByRb82wS.mjs} +123 -123
  62. package/dist/client/{floatingips-BUf_oLRl.mjs.map → floatingips-ByRb82wS.mjs.map} +1 -1
  63. package/dist/client/{images-Da1t5KPh.mjs → images-CKqIXUq52.mjs} +613 -613
  64. package/dist/client/images-CKqIXUq52.mjs.map +1 -0
  65. package/dist/client/{images-CsonlmFx.mjs → images-C_dX7nY6.mjs} +2 -2
  66. package/dist/client/{images-CsonlmFx.mjs.map → images-C_dX7nY6.mjs.map} +1 -1
  67. package/dist/client/{images-QnWf63uj.mjs → images-CenluYV8.mjs} +2 -2
  68. package/dist/client/{images-QnWf63uj.mjs.map → images-CenluYV8.mjs.map} +1 -1
  69. package/dist/client/index.js +391 -431
  70. package/dist/client/index.js.map +1 -1
  71. package/dist/client/{md-sBiSNVSQ.mjs → md-CYTrL5dq.mjs} +52 -16
  72. package/dist/client/{md-sBiSNVSQ.mjs.map → md-CYTrL5dq.mjs.map} +1 -1
  73. package/dist/client/{objects-H0NN_Sja.mjs → objects-BJM6YeuF.mjs} +2131 -1883
  74. package/dist/client/objects-BJM6YeuF.mjs.map +1 -0
  75. package/dist/client/{objects-B89dYCBq.mjs → objects-gxSjvbvF.mjs} +36 -21
  76. package/dist/client/objects-gxSjvbvF.mjs.map +1 -0
  77. package/dist/client/{objects-CuFLUOe1.mjs → objects-o2Cj_ndZ.mjs} +2 -2
  78. package/dist/client/objects-o2Cj_ndZ.mjs.map +1 -0
  79. package/dist/client/{pca-CtU6REww.mjs → pca-Bl8NmoVZ.mjs} +2 -2
  80. package/dist/client/{pca-CtU6REww.mjs.map → pca-Bl8NmoVZ.mjs.map} +1 -1
  81. package/dist/client/pca-RSiWpJs9.mjs +182 -0
  82. package/dist/client/pca-RSiWpJs9.mjs.map +1 -0
  83. package/dist/client/{projects-DNXsDnJM.mjs → projects-CgclWI16.mjs} +33 -27
  84. package/dist/client/{projects-DNXsDnJM.mjs.map → projects-CgclWI16.mjs.map} +1 -1
  85. package/dist/client/{projects-dhnQkuvV.mjs → projects-D2iewAzu.mjs} +2 -2
  86. package/dist/client/{projects-dhnQkuvV.mjs.map → projects-D2iewAzu.mjs.map} +1 -1
  87. package/dist/client/{projects-C-sjd9T5.mjs → projects-pe2_dCnV.mjs} +2 -2
  88. package/dist/client/{projects-C-sjd9T5.mjs.map → projects-pe2_dCnV.mjs.map} +1 -1
  89. package/dist/client/projects-yiK0HGSA.mjs.map +1 -1
  90. package/dist/client/{securitygroups-wHdrxZXd.mjs → securitygroups-DahZkVYQ.mjs} +111 -111
  91. package/dist/client/{securitygroups-wHdrxZXd.mjs.map → securitygroups-DahZkVYQ.mjs.map} +1 -1
  92. package/dist/client/{useListWithFiltering-DrgUwXef.mjs → useListWithFiltering-DaYcu5AB.mjs} +12 -12
  93. package/dist/client/{useListWithFiltering-DrgUwXef.mjs.map → useListWithFiltering-DaYcu5AB.mjs.map} +1 -1
  94. package/dist/server/index.d.ts +571 -2
  95. package/dist/server/index.js +29 -211
  96. package/package.json +4 -5
  97. package/dist/client/ImageToastNotifications-BWimIzu_.mjs.map +0 -1
  98. package/dist/client/_floatingIpId-COK_TBrz2.mjs.map +0 -1
  99. package/dist/client/_imageId-n3RcnhAR.mjs +0 -534
  100. package/dist/client/_pcaId-B-f_6kqs.mjs +0 -466
  101. package/dist/client/_pcaId-B-f_6kqs.mjs.map +0 -1
  102. package/dist/client/_projectId-BK9UqeYw.mjs.map +0 -1
  103. package/dist/client/_projectId-CCtpAQ8m.mjs +0 -299
  104. package/dist/client/_projectId-CCtpAQ8m.mjs.map +0 -1
  105. package/dist/client/build-DracvfrJ.mjs.map +0 -1
  106. package/dist/client/constants-4lVQXort.mjs +0 -128
  107. package/dist/client/constants-4lVQXort.mjs.map +0 -1
  108. package/dist/client/containers-DGY2hoWw.mjs.map +0 -1
  109. package/dist/client/containers-ZMFTRaQL.mjs.map +0 -1
  110. package/dist/client/containers-xfsYgRyf.mjs.map +0 -1
  111. package/dist/client/images-Da1t5KPh.mjs.map +0 -1
  112. package/dist/client/objects-B89dYCBq.mjs.map +0 -1
  113. package/dist/client/objects-CuFLUOe1.mjs.map +0 -1
  114. package/dist/client/objects-H0NN_Sja.mjs.map +0 -1
  115. package/dist/client/pca-C-UFjicP.mjs +0 -167
  116. package/dist/client/pca-C-UFjicP.mjs.map +0 -1
@@ -1 +0,0 @@
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":"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"}
@@ -1,534 +0,0 @@
1
- import { E as e, J as t, L as n, N as r, Q as i, R as a, W as o, Y as s, b as c, c as l, et as u, h as d, j as f, nt as p, q as m, z as h } from "./build-DracvfrJ.mjs";
2
- import { r as g } from "./trpcClient-BzPUgiM2.mjs";
3
- import { n as _, t as ee } from "./ContentHeader-xQVhO2yT.mjs";
4
- import { A as te, D as ne, E as re, F as v, I as y, N as ie, O as ae, P as b, T as oe, d as se, k as ce, u as le } from "./ImageToastNotifications-BWimIzu_.mjs";
5
- import { Fragment as x, jsx as S, jsxs as C } from "react/jsx-runtime";
6
- import w, { useState as T } from "react";
7
- import { useNavigate as ue, useParams as de, useSearch as fe } from "@tanstack/react-router";
8
- import { Trans as E, useLingui as D } from "@lingui/react";
9
- //#region src/client/routes/_auth/projects/$projectId/compute/-components/Images/-components/ImageDetailsView.tsx
10
- var O = ({ image: e, myMemberData: t, canUpdateMember: n, onStatusChange: r, isLoading: i }) => {
11
- let { i18n: a, _: o } = D(), s = t.status === v.PENDING, u = t.status === v.REJECTED, f = t.created_at ? new Date(t.created_at).toLocaleString() : a._({ id: "fj5byd" }), p = t.updated_at ? new Date(t.updated_at).toLocaleString() : a._({ id: "fj5byd" }), m = e.owner ?? "";
12
- return /*#__PURE__*/ C(c, { children: [
13
- s && /*#__PURE__*/ S("p", {
14
- className: "text-theme-highest font-semibold",
15
- children: /*#__PURE__*/ S(E, { id: "/EcdUM" })
16
- }),
17
- /*#__PURE__*/ S("p", { children: /*#__PURE__*/ S(E, {
18
- id: "Uwo8Xw",
19
- values: {
20
- ownerProject: m,
21
- sharedAt: f
22
- },
23
- components: { 0: /*#__PURE__*/ S("span", { className: "font-semibold" }) }
24
- }) }),
25
- /*#__PURE__*/ C("ul", { children: [
26
- /*#__PURE__*/ C("li", { children: [
27
- /*#__PURE__*/ S("span", {
28
- className: "font-semibold",
29
- children: /*#__PURE__*/ S(E, { id: "azXlY+" })
30
- }),
31
- " ",
32
- t.status
33
- ] }),
34
- /*#__PURE__*/ C("li", { children: [
35
- /*#__PURE__*/ S("span", {
36
- className: "font-semibold",
37
- children: /*#__PURE__*/ S(E, { id: "G6AP+o" })
38
- }),
39
- " ",
40
- f
41
- ] }),
42
- /*#__PURE__*/ C("li", { children: [
43
- /*#__PURE__*/ S("span", {
44
- className: "font-semibold",
45
- children: /*#__PURE__*/ S(E, { id: "pFg+7w" })
46
- }),
47
- " ",
48
- p
49
- ] })
50
- ] }),
51
- n && (s || u) && /*#__PURE__*/ C(d, { children: [/*#__PURE__*/ S(l, {
52
- onClick: () => r(v.ACCEPTED),
53
- disabled: i,
54
- children: /*#__PURE__*/ S(E, { id: "g3UF2V" })
55
- }), s && /*#__PURE__*/ S(l, {
56
- onClick: () => r(v.REJECTED),
57
- disabled: i,
58
- children: /*#__PURE__*/ S(E, { id: "1t/NnN" })
59
- })] })
60
- ] });
61
- }, k = ({ image: e }) => {
62
- let { i18n: t, _: i } = D();
63
- return /*#__PURE__*/ C(h, {
64
- px: !1,
65
- py: !0,
66
- children: [/*#__PURE__*/ S(f, { children: t._({ id: "nW/hX9" }) }), /*#__PURE__*/ C(o, {
67
- alignTerms: "right",
68
- children: [
69
- /*#__PURE__*/ S(r, { children: t._({ id: "S0kLOH" }) }),
70
- /*#__PURE__*/ S(n, { children: /*#__PURE__*/ S(_, { text: e.id }) }),
71
- /*#__PURE__*/ S(r, { children: t._({ id: "6YtxFj" }) }),
72
- /*#__PURE__*/ S(n, { children: e.name }),
73
- /*#__PURE__*/ S(r, { children: t._({ id: "uAQUqI" }) }),
74
- /*#__PURE__*/ S(n, { children: e.status }),
75
- /*#__PURE__*/ S(r, { children: t._({ id: "Cj2Gtd" }) }),
76
- /*#__PURE__*/ S(n, { children: /*#__PURE__*/ S(y, { size: e.size }) }),
77
- /*#__PURE__*/ S(r, { children: t._({ id: "Cxgv2U" }) }),
78
- /*#__PURE__*/ C(n, { children: [e.min_disk, " GB"] }),
79
- /*#__PURE__*/ S(r, { children: t._({ id: "B2Czeb" }) }),
80
- /*#__PURE__*/ C(n, { children: [e.min_ram, " MB"] }),
81
- /*#__PURE__*/ S(r, { children: t._({ id: "NopYGU" }) }),
82
- /*#__PURE__*/ S(n, { children: /*#__PURE__*/ S("span", {
83
- className: "uppercase",
84
- children: e.disk_format
85
- }) }),
86
- /*#__PURE__*/ S(r, { children: t._({ id: "6/xipy" }) }),
87
- /*#__PURE__*/ S(n, { children: /*#__PURE__*/ S("span", {
88
- className: "uppercase",
89
- children: e.container_format
90
- }) }),
91
- /*#__PURE__*/ S(r, { children: t._({ id: "88kg0+" }) }),
92
- /*#__PURE__*/ S(n, { children: e.created_at ? new Date(e.created_at).toLocaleDateString() : t._({ id: "fj5byd" }) }),
93
- /*#__PURE__*/ S(r, { children: t._({ id: "Llcakz" }) }),
94
- /*#__PURE__*/ S(n, { children: e.updated_at ? new Date(e.updated_at).toLocaleDateString() : t._({ id: "fj5byd" }) })
95
- ]
96
- })]
97
- });
98
- }, A = ({ image: e, currentProjectId: t }) => {
99
- let { i18n: i, _: a } = D(), s = e.visibility === "shared" && e.owner !== void 0 && e.owner !== t;
100
- return /*#__PURE__*/ C(h, {
101
- px: !1,
102
- py: !0,
103
- children: [/*#__PURE__*/ S(f, { children: i._({ id: "a3LDKx" }) }), /*#__PURE__*/ C(o, {
104
- alignTerms: "right",
105
- children: [
106
- /*#__PURE__*/ S(r, { children: s ? i._({ id: "20axE5" }) : i._({ id: "YsrbQh" }) }),
107
- /*#__PURE__*/ S(n, { children: e.owner ? /*#__PURE__*/ S(_, { text: e.owner }) : "" }),
108
- /*#__PURE__*/ S(r, { children: i._({ id: "2q/Q7x" }) }),
109
- /*#__PURE__*/ S(n, { children: e.visibility }),
110
- /*#__PURE__*/ S(r, { children: i._({ id: "644xgx" }) }),
111
- /*#__PURE__*/ S(n, { children: e.protected ? i._({ id: "l75CjT" }) : i._({ id: "1UzENP" }) }),
112
- /*#__PURE__*/ S(r, { children: i._({ id: "PzgYM9" }) }),
113
- /*#__PURE__*/ S(n, { children: e?.checksum ? e.checksum : "" })
114
- ]
115
- })]
116
- });
117
- }, j = ({ image: e }) => {
118
- let { i18n: t, _: i } = D(), a = new Set([
119
- "id",
120
- "name",
121
- "status",
122
- "visibility",
123
- "size",
124
- "disk_format",
125
- "container_format",
126
- "min_disk",
127
- "min_ram",
128
- "owner",
129
- "protected",
130
- "created_at",
131
- "updated_at",
132
- "checksum"
133
- ]), s = Object.entries(e).filter(([e]) => !a.has(e)).sort(([e], [t]) => e.localeCompare(t)), c = s.length > 0;
134
- return /*#__PURE__*/ C(h, {
135
- px: !1,
136
- py: !0,
137
- children: [/*#__PURE__*/ S(f, { children: t._({ id: "bc67JN" }) }), c ? /*#__PURE__*/ S(o, {
138
- alignTerms: "right",
139
- className: "grid-cols-4",
140
- children: s.map(([e, i]) => /*#__PURE__*/ C(w.Fragment, { children: [/*#__PURE__*/ S(r, {
141
- className: "col-span-1",
142
- children: e
143
- }), /*#__PURE__*/ S(n, {
144
- className: "col-span-1",
145
- children: i == null ? /*#__PURE__*/ S("span", { children: "null" }) : typeof i == "object" ? /*#__PURE__*/ S("span", {
146
- className: "break-all",
147
- children: JSON.stringify(i)
148
- }) : typeof i == "boolean" ? i ? t._({ id: "c+xCSz" }) : t._({ id: "ocUvR+" }) : /*#__PURE__*/ S("span", {
149
- className: "break-all",
150
- children: String(i)
151
- })
152
- })] }, e))
153
- }) : /*#__PURE__*/ S("p", {
154
- className: "text-theme-light",
155
- children: t._({ id: "9v5VLp" })
156
- })]
157
- });
158
- }, M = (e) => {
159
- let t = "px-6 py-3 font-semibold border-b-2 transition-colors";
160
- return e ? `${t} border-theme-accent text-theme-highest` : `${t} border-transparent text-theme-secondary hover:text-theme-high`;
161
- }, N = ({ image: e, permissions: t, currentProjectId: n }) => {
162
- let [r, i] = T(!1), [a, o] = T(null), { data: s, isLoading: c } = g.compute.listImageMembers.useQuery({
163
- project_id: n,
164
- imageId: e.id
165
- }, { enabled: !!e.id && !!n });
166
- return /*#__PURE__*/ C(h, {
167
- px: !1,
168
- py: !0,
169
- children: [a && /*#__PURE__*/ S(m, {
170
- text: a.text,
171
- variant: a.type,
172
- onDismiss: () => o(null),
173
- className: "mb-4"
174
- }), /*#__PURE__*/ S(te, {
175
- image: e,
176
- imageMembers: s,
177
- isMembersLoading: c,
178
- canAdd: t?.canCreateMember ?? !1,
179
- canRemove: t?.canDeleteMember ?? !1,
180
- isAddingMember: r,
181
- setIsAddingMember: i,
182
- setMessage: o,
183
- projectId: n
184
- })]
185
- });
186
- }, pe = ({ image: e, currentProjectId: t, activeTab: n = "details", onTabChange: r, permissions: i, myMemberData: a, onMemberStatusChange: o, isMemberStatusChanging: s, actions: c }) => {
187
- let { i18n: l, _: u } = D(), d = e.visibility === "shared" && e.owner !== void 0 && e.owner !== t, f = e.owner === t && e.visibility === "shared";
188
- return /*#__PURE__*/ C(p, {
189
- direction: "vertical",
190
- gap: "6",
191
- children: [
192
- d && a && o && /*#__PURE__*/ S(O, {
193
- image: e,
194
- myMemberData: a,
195
- canUpdateMember: i?.canUpdateMember ?? !1,
196
- onStatusChange: o,
197
- isLoading: s ?? !1
198
- }),
199
- f && /*#__PURE__*/ S("div", {
200
- className: "border-theme-background-lvl-3 border-b",
201
- children: /*#__PURE__*/ C(p, {
202
- direction: "horizontal",
203
- gap: "0",
204
- children: [/*#__PURE__*/ S("button", {
205
- className: M(n === "details"),
206
- onClick: () => r?.("details"),
207
- children: l._({ id: "URmyfc" })
208
- }), /*#__PURE__*/ S("button", {
209
- className: M(n === "sharing"),
210
- onClick: () => r?.("sharing"),
211
- children: l._({ id: "aG9OiI" })
212
- })]
213
- })
214
- }),
215
- (n === "details" || !f) && /*#__PURE__*/ C(x, { children: [
216
- c,
217
- /*#__PURE__*/ S(k, { image: e }),
218
- /*#__PURE__*/ S(A, {
219
- image: e,
220
- currentProjectId: t
221
- }),
222
- /*#__PURE__*/ S(j, { image: e })
223
- ] }),
224
- n === "sharing" && f && /*#__PURE__*/ S(N, {
225
- image: e,
226
- permissions: i
227
- })
228
- ]
229
- });
230
- };
231
- //#endregion
232
- //#region src/client/routes/_auth/projects/$projectId/compute/images/$imageId.tsx?tsr-split=component
233
- function P() {
234
- let { projectId: n, imageId: r } = de({ from: "/_auth/projects/$projectId/compute/images/$imageId" }), { tab: o } = fe({ from: "/_auth/projects/$projectId/compute/images/$imageId" }), c = ue(), { i18n: f, _: m } = D(), { data: h, status: _, error: te } = g.compute.getImageById.useQuery({
235
- project_id: n,
236
- imageId: r
237
- }), { data: v } = g.compute.canUser.useQuery({
238
- project_id: n,
239
- permission: [
240
- "images:delete",
241
- "images:update",
242
- "images:create_member",
243
- "images:delete_member",
244
- "images:update_member"
245
- ]
246
- }), y = {
247
- canDelete: v?.[0] ?? !1,
248
- canUpdate: v?.[1] ?? !1,
249
- canCreateMember: v?.[2] ?? !1,
250
- canDeleteMember: v?.[3] ?? !1,
251
- canUpdateMember: v?.[4] ?? !1
252
- }, w = g.useUtils(), [O, k] = T(!1), [A, j] = T(!1), [M, N] = T(!1), [P, F] = T(!1), [I, L] = T(!1), [R, z] = T(null), B = g.compute.updateImage.useMutation({ onSuccess: (e) => {
253
- w.compute.getImageById.setData({
254
- project_id: n,
255
- imageId: r
256
- }, e), w.compute.listImagesWithPagination.invalidate();
257
- } }), V = g.compute.deleteImage.useMutation({ onSuccess: () => {
258
- w.compute.listImagesWithPagination.invalidate();
259
- } }), H = g.compute.deactivateImage.useMutation({ onSuccess: () => {
260
- w.compute.getImageById.invalidate({
261
- project_id: n,
262
- imageId: r
263
- });
264
- } }), U = g.compute.reactivateImage.useMutation({ onSuccess: () => {
265
- w.compute.getImageById.invalidate({
266
- project_id: n,
267
- imageId: r
268
- });
269
- } }), W = g.compute.updateImageVisibility.useMutation({ onSuccess: (e) => {
270
- w.compute.getImageById.setData({
271
- project_id: n,
272
- imageId: r
273
- }, e);
274
- } }), G = h?.visibility === b.SHARED && h?.owner !== void 0 && h?.owner !== n, { data: K } = g.compute.getImageMember.useQuery({
275
- project_id: n,
276
- imageId: r,
277
- memberId: n
278
- }, { enabled: G && !!r && !!n }), q = g.compute.updateImageMember.useMutation({ onSuccess: () => {
279
- w.compute.getImageMember.invalidate({
280
- project_id: n,
281
- imageId: r,
282
- memberId: n
283
- }), w.compute.listImageMembers.invalidate({
284
- project_id: n,
285
- imageId: r
286
- }), w.compute.listImagesWithPagination.invalidate(), w.compute.listSharedImagesByMemberStatus.invalidate();
287
- } }), J = async (e) => {
288
- try {
289
- await q.mutateAsync({
290
- project_id: n,
291
- imageId: r,
292
- memberId: n,
293
- status: e
294
- }), z(se(e, { onDismiss: () => z(null) }));
295
- } catch (e) {
296
- let t = e?.message;
297
- z(le(t, { onDismiss: () => z(null) }));
298
- }
299
- }, Y = () => {
300
- c({
301
- to: "/projects/$projectId/compute/images",
302
- params: { projectId: n }
303
- });
304
- }, X = B.isPending || V.isPending || H.isPending || U.isPending || W.isPending, me = (e, t) => {
305
- let n = [];
306
- return Object.entries(e).forEach(([e, r]) => {
307
- let i = `/${e}`;
308
- if (r == null) e in t && n.push({
309
- op: "remove",
310
- path: i
311
- });
312
- else {
313
- let a = e in t;
314
- n.push({
315
- op: a ? "replace" : "add",
316
- path: i,
317
- value: r
318
- });
319
- }
320
- }), n;
321
- }, Z = async (e) => {
322
- if (!h) return !1;
323
- let t = me(e, h);
324
- try {
325
- return await B.mutateAsync({
326
- project_id: n,
327
- imageId: r,
328
- operations: t
329
- }), k(!1), !0;
330
- } catch {
331
- return !1;
332
- }
333
- }, he = async (e) => {
334
- try {
335
- await V.mutateAsync({
336
- project_id: n,
337
- imageId: e.id
338
- }), N(!1), Y();
339
- } catch {
340
- N(!1);
341
- }
342
- }, ge = async (e) => {
343
- try {
344
- await U.mutateAsync({
345
- project_id: n,
346
- imageId: e.id
347
- }), F(!1);
348
- } catch {
349
- F(!1);
350
- }
351
- }, _e = async (e) => {
352
- try {
353
- await H.mutateAsync({
354
- project_id: n,
355
- imageId: e.id
356
- }), L(!1);
357
- } catch {
358
- L(!1);
359
- }
360
- }, ve = async (e) => {
361
- if (h) try {
362
- await W.mutateAsync({
363
- project_id: n,
364
- imageId: h.id,
365
- visibility: e
366
- });
367
- } catch {}
368
- };
369
- if (_ === "pending") return /*#__PURE__*/ C(p, {
370
- className: "fixed inset-0",
371
- distribution: "center",
372
- alignment: "center",
373
- direction: "vertical",
374
- children: [/*#__PURE__*/ S(i, {
375
- variant: "primary",
376
- size: "large",
377
- className: "mb-2"
378
- }), /*#__PURE__*/ S(E, { id: "hH3kDo" })]
379
- });
380
- if (_ === "error") {
381
- let e = te?.message || "Unknown error";
382
- return /*#__PURE__*/ C(p, {
383
- className: "fixed inset-0",
384
- distribution: "center",
385
- alignment: "center",
386
- direction: "vertical",
387
- gap: "5",
388
- children: [
389
- /*#__PURE__*/ S("p", {
390
- className: "text-theme-error font-semibold",
391
- children: /*#__PURE__*/ S(E, { id: "Jh4rAZ" })
392
- }),
393
- /*#__PURE__*/ S("p", {
394
- className: "text-theme-highest",
395
- children: e
396
- }),
397
- /*#__PURE__*/ S(l, {
398
- onClick: Y,
399
- variant: "primary",
400
- children: /*#__PURE__*/ S(E, { id: "bnql/K" })
401
- })
402
- ]
403
- });
404
- }
405
- if (!h) return /*#__PURE__*/ C(p, {
406
- className: "fixed inset-0",
407
- distribution: "center",
408
- alignment: "center",
409
- direction: "vertical",
410
- gap: "5",
411
- children: [/*#__PURE__*/ S("p", {
412
- className: "text-theme-highest",
413
- children: /*#__PURE__*/ S(E, { id: "1pdLQw" })
414
- }), /*#__PURE__*/ S(l, {
415
- onClick: Y,
416
- variant: "primary",
417
- children: /*#__PURE__*/ S(E, { id: "bnql/K" })
418
- })]
419
- });
420
- let ye = h.status === ie.DEACTIVATED, be = h.visibility === b.PRIVATE, xe = K?.status === "accepted", Se = h.owner === n, Q = G && xe && y.canUpdateMember, Ce = !G && y.canUpdate, we = !G && y.canDelete && !h.protected, Te = !G && Se && h.visibility === b.SHARED && (y.canCreateMember || y.canDeleteMember), $ = Q || Ce || we || Te, Ee = $ || !G && y.canUpdate ? /*#__PURE__*/ C(d, { children: [
421
- $ && /*#__PURE__*/ C(u, { children: [/*#__PURE__*/ S(a, {
422
- as: "div",
423
- children: /*#__PURE__*/ S(l, {
424
- icon: "moreVert",
425
- disabled: X,
426
- children: /*#__PURE__*/ S(E, { id: "PgNNGl" })
427
- })
428
- }), /*#__PURE__*/ C(e, { children: [
429
- Q && /*#__PURE__*/ S(s, {
430
- label: f._({ id: "1t/NnN" }),
431
- onClick: () => J("rejected")
432
- }),
433
- !G && y.canUpdate && /*#__PURE__*/ S(s, {
434
- label: ye ? f._({ id: "FQBaXG" }) : f._({ id: "5y3O+A" }),
435
- onClick: () => ye ? F(!0) : L(!0)
436
- }),
437
- !G && y.canUpdate && be && /*#__PURE__*/ S(s, {
438
- label: f._({ id: "gMYsdZ" }),
439
- onClick: () => ve("shared")
440
- }),
441
- !G && Se && h.visibility === b.SHARED && (y.canCreateMember || y.canDeleteMember) && /*#__PURE__*/ S(s, {
442
- label: f._({ id: "cWbW6w" }),
443
- onClick: () => c({
444
- to: "/projects/$projectId/compute/images/$imageId",
445
- params: {
446
- projectId: n,
447
- imageId: h.id
448
- },
449
- search: { tab: "sharing" }
450
- })
451
- }),
452
- !G && y.canDelete && !h.protected && /*#__PURE__*/ S(s, {
453
- label: f._({ id: "cnGeoo" }),
454
- onClick: () => N(!0)
455
- })
456
- ] })] }),
457
- !G && y.canUpdate && /*#__PURE__*/ S(l, {
458
- onClick: () => j(!0),
459
- disabled: X,
460
- children: /*#__PURE__*/ S(E, { id: "SIfYq6" })
461
- }),
462
- !G && y.canUpdate && /*#__PURE__*/ S(l, {
463
- onClick: () => k(!0),
464
- variant: "primary",
465
- disabled: X,
466
- children: /*#__PURE__*/ S(E, { id: "Y1YKad" })
467
- })
468
- ] }) : void 0;
469
- return /*#__PURE__*/ C(x, { children: [
470
- /*#__PURE__*/ S(ee, {
471
- title: String(h.name ?? h.id),
472
- projectId: n,
473
- actions: Ee
474
- }),
475
- /*#__PURE__*/ S("div", {
476
- className: "mt-3",
477
- children: /*#__PURE__*/ S(pe, {
478
- image: h,
479
- currentProjectId: n,
480
- activeTab: o ?? "details",
481
- onTabChange: (e) => c({ search: { tab: e === "details" ? void 0 : e } }),
482
- permissions: {
483
- canCreateMember: y.canCreateMember,
484
- canDeleteMember: y.canDeleteMember,
485
- canUpdateMember: y.canUpdateMember
486
- },
487
- myMemberData: K,
488
- onMemberStatusChange: J,
489
- isMemberStatusChanging: q.isPending
490
- }, h.id)
491
- }),
492
- R && /*#__PURE__*/ S(t, { ...R }),
493
- O && /*#__PURE__*/ S(ce, {
494
- image: h,
495
- isOpen: O,
496
- isLoading: B.isPending,
497
- onClose: () => k(!1),
498
- onSave: Z
499
- }),
500
- A && /*#__PURE__*/ S(ae, {
501
- image: h,
502
- isOpen: A,
503
- isLoading: B.isPending,
504
- onClose: () => j(!1),
505
- onSave: Z
506
- }),
507
- M && /*#__PURE__*/ S(ne, {
508
- image: h,
509
- isOpen: M,
510
- isLoading: V.isPending,
511
- isDisabled: !!h.protected,
512
- onClose: () => N(!1),
513
- onDelete: he
514
- }),
515
- P && /*#__PURE__*/ S(re, {
516
- image: h,
517
- isOpen: P,
518
- isLoading: U.isPending,
519
- onClose: () => F(!1),
520
- onActivate: ge
521
- }),
522
- I && /*#__PURE__*/ S(oe, {
523
- image: h,
524
- isOpen: I,
525
- isLoading: H.isPending,
526
- onClose: () => L(!1),
527
- onDeactivate: _e
528
- })
529
- ] });
530
- }
531
- //#endregion
532
- export { P as component };
533
-
534
- //# sourceMappingURL=_imageId-n3RcnhAR.mjs.map