@cobaltcore-dev/aurora 0.8.0 → 0.8.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (46) hide show
  1. package/dist/client/{ContentHeader-DqsGNvtD.mjs → ContentHeader-C51H95X8.mjs} +9 -5
  2. package/dist/client/ContentHeader-C51H95X8.mjs.map +1 -0
  3. package/dist/client/{_flavorId-B9Vqkraj.mjs → _flavorId-DU4gcFna.mjs} +2 -2
  4. package/dist/client/{_flavorId-B9Vqkraj.mjs.map → _flavorId-DU4gcFna.mjs.map} +1 -1
  5. package/dist/client/{_flavorId-CFpNGz52.mjs → _flavorId-iZE2j210.mjs} +3 -3
  6. package/dist/client/{_flavorId-CFpNGz52.mjs.map → _flavorId-iZE2j210.mjs.map} +1 -1
  7. package/dist/client/{_imageId-9NZytfNs.mjs → _imageId-zmaSymWe.mjs} +2 -2
  8. package/dist/client/{_imageId-9NZytfNs.mjs.map → _imageId-zmaSymWe.mjs.map} +1 -1
  9. package/dist/client/_projectId-B_2sZKk-.mjs.map +1 -1
  10. package/dist/client/{_projectId-cW9aQ4Ag.mjs → _projectId-C8BaEHUj.mjs} +9 -7
  11. package/dist/client/_projectId-C8BaEHUj.mjs.map +1 -0
  12. package/dist/client/_projectId-COt93OEF.mjs +84 -0
  13. package/dist/client/_projectId-COt93OEF.mjs.map +1 -0
  14. package/dist/client/{_storageType-2_fau4B5.mjs → _storageType-B-qGcGUQ.mjs} +52 -51
  15. package/dist/client/_storageType-B-qGcGUQ.mjs.map +1 -0
  16. package/dist/client/{_storageType-dRTFMKG3.mjs → _storageType-CepuevDG.mjs} +2 -2
  17. package/dist/client/{_storageType-dRTFMKG3.mjs.map → _storageType-CepuevDG.mjs.map} +1 -1
  18. package/dist/client/{flavors-_P7R-CeT.mjs → flavors-8bZVlzzb.mjs} +2 -2
  19. package/dist/client/{flavors-_P7R-CeT.mjs.map → flavors-8bZVlzzb.mjs.map} +1 -1
  20. package/dist/client/{flavors-m1qDHzeS.mjs → flavors-BfsEBUE-.mjs} +3 -3
  21. package/dist/client/{flavors-m1qDHzeS.mjs.map → flavors-BfsEBUE-.mjs.map} +1 -1
  22. package/dist/client/{images-CpM-T_jM.mjs → images-8FOgju2f.mjs} +2 -2
  23. package/dist/client/{images-CpM-T_jM.mjs.map → images-8FOgju2f.mjs.map} +1 -1
  24. package/dist/client/{images-DHmVgQAh2.mjs → images-BPnTuKFO2.mjs} +3 -3
  25. package/dist/client/{images-DHmVgQAh2.mjs.map → images-BPnTuKFO2.mjs.map} +1 -1
  26. package/dist/client/index.js +10 -10
  27. package/dist/client/index.js.map +1 -1
  28. package/dist/client/{pca-CK5-j7Kk.mjs → pca-5wOBf_KI.mjs} +3 -3
  29. package/dist/client/{pca-CK5-j7Kk.mjs.map → pca-5wOBf_KI.mjs.map} +1 -1
  30. package/dist/client/{pca-C8zWTSSt.mjs → pca-dhrOFfrE.mjs} +2 -2
  31. package/dist/client/{pca-C8zWTSSt.mjs.map → pca-dhrOFfrE.mjs.map} +1 -1
  32. package/dist/client/{projects-CeLhtLvf.mjs → projects-B_PPyZD1.mjs} +2 -2
  33. package/dist/client/{projects-CeLhtLvf.mjs.map → projects-B_PPyZD1.mjs.map} +1 -1
  34. package/dist/client/{projects-ClViaUuv.mjs → projects-Dmewygrp.mjs} +3 -3
  35. package/dist/client/projects-Dmewygrp.mjs.map +1 -0
  36. package/dist/client/{routeInfo-DlDJZnpg.mjs → routeInfo-CHiJfum5.mjs} +6 -5
  37. package/dist/client/routeInfo-CHiJfum5.mjs.map +1 -0
  38. package/dist/server/index.js +0 -40
  39. package/package.json +1 -1
  40. package/dist/client/ContentHeader-DqsGNvtD.mjs.map +0 -1
  41. package/dist/client/_projectId-CLgClx24.mjs +0 -84
  42. package/dist/client/_projectId-CLgClx24.mjs.map +0 -1
  43. package/dist/client/_projectId-cW9aQ4Ag.mjs.map +0 -1
  44. package/dist/client/_storageType-2_fau4B5.mjs.map +0 -1
  45. package/dist/client/projects-ClViaUuv.mjs.map +0 -1
  46. package/dist/client/routeInfo-DlDJZnpg.mjs.map +0 -1
@@ -0,0 +1 @@
1
+ {"version":3,"file":"_projectId-C8BaEHUj.mjs","names":["useNavigate","useMatches","useParams","useRouteContext","useState","useEffect","useRef","getServiceIndex","SideNavigation","SideNavigationList","SideNavigationGroup","SideNavigationItem","Divider","isRouteInfo","Slot","SideNavBar","projectId","projectName","domainName","availableServices","useLingui","navigate","matches","provider","strict","slots","activeMatch","reverse","find","m","staticData","activeRouteInfo","undefined","activeSection","section","activeService","service","serviceIndex","openSections","setOpenSections","compute","network","storage","services","prevSectionRef","mountedRef","prev","current","wasMounted","s","setTimeout","computeServices","label","t","to","params","networkServices","storageServices","storageType","pcaServices","clavisServices","ariaLabel","onClick","p","className","spacing","open","map","selected","length","isStorageContainers","isSelected","sideNavBanner","component","Breadcrumb","BreadcrumbItem","useMatches","useNavigate","useParams","useMemo","isRouteInfo","ProjectInfoBox","projectInfo","useLingui","navigate","matches","projectId","strict","breadcrumbs","crumbLabels","Compute","t","Network","Storage","Services","Images","Flavors","resolveProviderLabel","provider","items","push","icon","label","onClick","to","domain","name","projectMatches","filter","m","routeId","startsWith","deepest","length","info","staticData","undefined","active","params","sectionCrumb","labelKey","crumb","useParamAsLabel","resolvedLabel","isDetail","intermediateCrumb","iTo","iParam","useParentTitleAsLabel","parentMatch","parentTitle","meta","find","title","iLabel","className","map","item","index","Outlet","useLoaderData","AppShell","Container","Stack","SideNavBar","ProjectInfoBox","Route","RouteComponent","availableServices","projectId","crumbProject","crumbDomain","from","id","name","domain","component"],"sources":["../../src/client/routes/_auth/projects/-components/SideNavBar.tsx","../../src/client/components/ProjectView/ProjectInfoBox.tsx","../../src/client/routes/_auth/projects/$projectId.tsx?tsr-split=component"],"sourcesContent":["import { useNavigate, useMatches, useParams, useRouteContext } from \"@tanstack/react-router\"\nimport { useState, useEffect, useRef } from \"react\"\nimport { getServiceIndex } from \"@/server/Authentication/helpers\"\nimport {\n SideNavigation,\n SideNavigationList,\n SideNavigationGroup,\n SideNavigationItem,\n Divider,\n} from \"@cloudoperators/juno-ui-components/index\"\nimport { useLingui } from \"@lingui/react/macro\"\nimport { isRouteInfo } from \"@/client/routes/routeInfo\"\nimport { Slot } from \"@/client/components/Slot\"\n\ninterface SideNavBarProps {\n projectId: string\n projectName: string\n domainName?: string\n availableServices: {\n type: string\n name: string\n }[]\n}\n\nexport const SideNavBar = ({ projectId, projectName, domainName, availableServices }: SideNavBarProps) => {\n const { t } = useLingui()\n const navigate = useNavigate()\n const matches = useMatches()\n const { provider } = useParams({ strict: false }) as { provider?: string }\n const { slots } = useRouteContext({ strict: false })\n\n // Read active section/service from the deepest match that has valid RouteInfo staticData\n const activeMatch = [...matches].reverse().find((m) => isRouteInfo(m.staticData))\n const activeRouteInfo = activeMatch && isRouteInfo(activeMatch.staticData) ? activeMatch.staticData : undefined\n const activeSection = activeRouteInfo?.section ?? null\n const activeService = activeRouteInfo?.service ?? null\n\n const serviceIndex = getServiceIndex(availableServices)\n\n const [openSections, setOpenSections] = useState({ compute: true, network: true, storage: true, services: true })\n const prevSectionRef = useRef<string | null>(null)\n const mountedRef = useRef(false)\n\n useEffect(() => {\n const prev = prevSectionRef.current\n prevSectionRef.current = activeSection\n const wasMounted = mountedRef.current\n mountedRef.current = true\n // Skip on initial mount: all sections start open, Juno initializes correctly from the open prop.\n // Only re-open when navigating to a section that Juno may have internally collapsed.\n if (!wasMounted) return\n if (activeSection && activeSection !== prev && activeSection in openSections) {\n // Set false first, then true in the next tick so Juno's useEffect([open]) sees the change\n // even if the section was already true in our state (Juno may have internally collapsed it).\n setOpenSections((s) => ({ ...s, [activeSection]: false }))\n const section = activeSection\n setTimeout(() => setOpenSections((s) => ({ ...s, [section]: true })), 0)\n }\n }, [activeSection])\n\n const computeServices = [\n ...(serviceIndex[\"image\"]?.[\"glance\"]\n ? [\n {\n service: \"images\",\n label: t`Images`,\n to: \"/projects/$projectId/compute/images\" as const,\n params: { projectId },\n },\n ]\n : []),\n ...(serviceIndex?.[\"compute\"]?.[\"nova\"]\n ? [\n {\n service: \"flavors\",\n label: t`Flavors`,\n to: \"/projects/$projectId/compute/flavors\" as const,\n params: { projectId },\n },\n ]\n : []),\n ]\n\n const networkServices = [\n ...(serviceIndex[\"network\"]\n ? [\n {\n service: \"securitygroups\",\n label: t`Security Groups`,\n to: \"/projects/$projectId/network/securitygroups\" as const,\n params: { projectId },\n },\n {\n service: \"floatingips\",\n label: t`Floating IPs`,\n to: \"/projects/$projectId/network/floatingips\" as const,\n params: { projectId },\n },\n ]\n : []),\n ]\n\n const storageServices = [\n ...(serviceIndex?.[\"object-store\"]?.[\"swift\"]\n ? [\n {\n service: \"containers\",\n label: t`Object Storage (Swift)`,\n to: \"/projects/$projectId/storage/$provider/$storageType\" as const,\n params: { projectId, provider: \"swift\", storageType: \"containers\" },\n },\n ]\n : []),\n {\n service: \"ceph-containers\",\n label: t`Object Storage (Ceph)`,\n to: \"/projects/$projectId/storage/$provider/$storageType\" as const,\n params: { projectId, provider: \"ceph\", storageType: \"buckets\" },\n },\n ]\n\n // temporary as clavis is not fully GA, after GA replace with [\"pca\"]?.[\"clavis\"]\n const pcaServices = serviceIndex[\"pca\"]?.[\"clavis-beta\"] || serviceIndex[\"pca\"]?.[\"clavis-dev\"]\n const clavisServices = [\n ...(pcaServices\n ? [\n {\n service: \"pca\",\n label: t`PCA (Clavis)`,\n to: \"/projects/$projectId/services/pca\" as const,\n params: { projectId },\n },\n ]\n : []),\n ]\n\n return (\n <SideNavigation ariaLabel=\"Project Side Navigation\">\n <>\n <SideNavigationList>\n <>\n <SideNavigationItem\n onClick={() => navigate({ to: \"/projects/$projectId\", params: { projectId } })}\n label={\n <>\n {domainName && <p className=\"text-theme-light text-xs leading-4 font-bold\">{domainName} /</p>}\n <p className=\"leading-5 font-normal\">{projectName}</p>\n </>\n }\n />\n <Divider spacing=\"1\" />\n <SideNavigationGroup label={t`Compute`} open={openSections.compute}>\n {computeServices.map(({ service, label, to, params }) => (\n <SideNavigationItem\n key={label}\n onClick={() => navigate({ to, params })}\n label={label}\n selected={activeSection === \"compute\" && activeService === service}\n />\n ))}\n </SideNavigationGroup>\n\n {networkServices.length > 0 && (\n <SideNavigationGroup label={t`Network`} open={openSections.network}>\n {networkServices.map(({ service, label, to, params }) => (\n <SideNavigationItem\n key={label}\n onClick={() => navigate({ to, params })}\n label={label}\n selected={activeSection === \"network\" && activeService === service}\n />\n ))}\n </SideNavigationGroup>\n )}\n\n {storageServices.length > 0 && (\n <SideNavigationGroup label={t`Storage`} open={openSections.storage}>\n {storageServices.map(({ service, label, to, params }) => {\n // For storage services with provider param, match against current provider\n const isStorageContainers = activeSection === \"storage\" && activeService === \"containers\"\n const isSelected = isStorageContainers ? params.provider === provider : activeService === service\n\n return (\n <SideNavigationItem\n key={label}\n onClick={() => navigate({ to, params })}\n label={label}\n selected={isSelected}\n />\n )\n })}\n </SideNavigationGroup>\n )}\n\n {clavisServices.length > 0 && (\n <SideNavigationGroup label={t`Services`} open={openSections.services}>\n {clavisServices.map(({ service, label, to, params }) => (\n <SideNavigationItem\n key={label}\n onClick={() => navigate({ to, params })}\n label={label}\n selected={activeSection === \"services\" && activeService === service}\n />\n ))}\n </SideNavigationGroup>\n )}\n </>\n </SideNavigationList>\n {slots?.sideNavBanner && <Slot component={slots.sideNavBanner} />}\n </>\n </SideNavigation>\n )\n}\n","import { Breadcrumb, BreadcrumbItem, KnownIcons } from \"@cloudoperators/juno-ui-components\"\nimport { useMatches, useNavigate, useParams } from \"@tanstack/react-router\"\nimport { useMemo } from \"react\"\nimport { useLingui } from \"@lingui/react/macro\"\nimport { isRouteInfo, CrumbLabelKey } from \"@/client/routes/routeInfo\"\n\ninterface ProjectInfoBoxProps {\n projectInfo: {\n id: string\n name: string\n description?: string\n domain?: {\n name?: string\n }\n }\n}\n\nexport function ProjectInfoBox({ projectInfo }: ProjectInfoBoxProps) {\n const { t } = useLingui()\n const navigate = useNavigate()\n const matches = useMatches()\n const { projectId } = useParams({ strict: false }) as { projectId: string }\n\n const breadcrumbs = useMemo(() => {\n const crumbLabels: Record<CrumbLabelKey, string> = {\n Compute: t`Compute`,\n Network: t`Network`,\n Storage: t`Storage`,\n Services: t`Services`,\n Images: t`Images`,\n Flavors: t`Flavors`,\n \"Security Groups\": t`Security Groups`,\n \"Floating IPs\": t`Floating IPs`,\n \"PCA (Clavis)\": t`PCA (Clavis)`,\n }\n\n const resolveProviderLabel = (provider: string | undefined) => {\n if (provider === \"swift\") return t`Object Storage (Swift)`\n if (provider === \"ceph\") return t`Object Storage (Ceph)`\n return t`Storage`\n }\n\n const items: Array<{ label?: string; icon?: KnownIcons; onClick?: () => void; active?: boolean }> = []\n\n items.push({ icon: \"home\", label: t`Home`, onClick: () => navigate({ to: \"/projects\" }) })\n\n if (projectInfo.domain?.name) {\n items.push({ label: projectInfo.domain.name })\n }\n\n const projectMatches = matches.filter(\n (m) => m.routeId !== \"/_auth/projects/$projectId\" && m.routeId.startsWith(\"/_auth/projects/$projectId\")\n )\n const deepest = projectMatches[projectMatches.length - 1]\n\n const info = deepest ? (isRouteInfo(deepest.staticData) ? deepest.staticData : undefined) : undefined\n\n if (!deepest || !info) {\n items.push({ label: projectInfo.name, active: true })\n return items\n }\n\n items.push({\n label: projectInfo.name,\n onClick: () => navigate({ to: \"/projects/$projectId\", params: { projectId } }),\n })\n\n const params = deepest.params as Record<string, string>\n\n if (info.sectionCrumb?.to) {\n const { labelKey, to } = info.sectionCrumb\n const label = labelKey ? crumbLabels[labelKey] : undefined\n items.push({ label, onClick: () => navigate({ to: to as never, params: params as never }) })\n }\n\n if (info.crumb) {\n const { labelKey, to, useParamAsLabel } = info.crumb\n const resolvedLabel = useParamAsLabel\n ? resolveProviderLabel(params[useParamAsLabel])\n : labelKey\n ? crumbLabels[labelKey]\n : undefined\n\n if (info.isDetail) {\n items.push({ label: resolvedLabel, onClick: () => navigate({ to: to as never, params: params as never }) })\n\n if (info.intermediateCrumb) {\n const { to: iTo, useParamAsLabel: iParam, useParentTitleAsLabel } = info.intermediateCrumb\n const parentMatch = projectMatches[projectMatches.length - 2]\n const parentTitle = parentMatch?.meta?.find((m) => m != null && \"title\" in m)?.title as string | undefined\n const iLabel = useParentTitleAsLabel\n ? (parentTitle ?? (iParam ? params[iParam] : undefined))\n : iParam\n ? params[iParam]\n : undefined\n items.push(\n iTo\n ? { label: iLabel, onClick: () => navigate({ to: iTo as never, params: params as never }) }\n : { label: iLabel }\n )\n }\n\n const title = deepest.meta?.find((m) => m != null && \"title\" in m)?.title as string | undefined\n if (title) items.push({ label: title, active: true })\n } else {\n items.push(\n to\n ? { label: resolvedLabel, onClick: () => navigate({ to: to as never, params: params as never }) }\n : { label: resolvedLabel, active: true }\n )\n }\n }\n\n return items\n }, [matches, projectInfo, projectId, navigate, t])\n\n return (\n <Breadcrumb className=\"relative z-1 mt-8 mb-4\">\n {breadcrumbs.map((item, index) => (\n <BreadcrumbItem key={index} label={item.label} icon={item.icon} onClick={item.onClick} active={item.active} />\n ))}\n </Breadcrumb>\n )\n}\n","import { createFileRoute, Outlet, useLoaderData } from \"@tanstack/react-router\"\nimport { AppShell, Container, Stack } from \"@cloudoperators/juno-ui-components\"\nimport { SideNavBar } from \"@/client/routes/_auth/projects/-components/SideNavBar\"\nimport { ProjectInfoBox } from \"@/client/components/ProjectView/ProjectInfoBox\"\nimport { RouteError } from \"@/client/components/Error/RouteError\"\n\nexport const Route = createFileRoute(\"/_auth/projects/$projectId\")({\n component: RouteComponent,\n errorComponent: ({ error }) => {\n return <RouteError error={error} />\n },\n loader: async (options) => {\n const { context, params } = options\n const data = await context.trpcClient?.auth.setCurrentScope.mutate({\n type: \"project\",\n projectId: params.projectId || \"\",\n })\n\n const [availableServices, projects] = await Promise.all([\n context.trpcClient?.auth.getAvailableServices.query(),\n context.trpcClient?.project.getAuthProjects.query().catch(() => null),\n ])\n\n const accountId = data?.domain?.id || \"\"\n const description = projects?.find((p) => p.id === params.projectId)?.description ?? null\n\n return {\n trpcClient: context.trpcClient,\n crumbDomain: { path: `/projects`, name: data?.domain?.name },\n crumbProject: data?.project,\n availableServices,\n accountId,\n projectId: params.projectId,\n description,\n }\n },\n})\n\nfunction RouteComponent() {\n const { availableServices, projectId, crumbProject, crumbDomain } = useLoaderData({ from: Route.id })\n\n return (\n <AppShell\n embedded\n sideNavigation={\n <SideNavBar\n availableServices={availableServices!}\n projectId={projectId}\n projectName={crumbProject?.name || projectId}\n domainName={crumbDomain?.name}\n />\n }\n className=\"h-min-screen\"\n >\n <Container>\n <Stack direction=\"vertical\" distribution=\"start\" alignment=\"stretch\" className=\"xl:flex-row\" gap=\"6\">\n {/* Main content area */}\n <div className=\"min-w-0 flex-1\">\n <ProjectInfoBox\n projectInfo={{\n id: projectId,\n name: crumbProject?.name || projectId,\n domain: crumbProject?.domain,\n }}\n />\n <Outlet />\n </div>\n </Stack>\n </Container>\n </AppShell>\n )\n}\n"],"mappings":"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"}
@@ -0,0 +1,84 @@
1
+ import { Y as e, c as t, u as n } from "./build-BdRRmNf5.mjs";
2
+ import { t as r } from "./helpers-1PpYf-fC.mjs";
3
+ import { t as i } from "./ContentHeader-C51H95X8.mjs";
4
+ import { jsx as a, jsxs as o } from "react/jsx-runtime";
5
+ import { useLoaderData as s, useNavigate as c } from "@tanstack/react-router";
6
+ import { Trans as l, useLingui as u } from "@lingui/react";
7
+ //#region src/client/routes/_auth/projects/$projectId/index.tsx?tsr-split=component
8
+ function d({ group: e, label: r, to: i }) {
9
+ let s = c();
10
+ return /*#__PURE__*/ o(n, {
11
+ onClick: () => s({ to: i }),
12
+ className: "flex min-h-40 flex-col gap-4 px-3 pt-2 pb-3",
13
+ "data-testid": "service-card",
14
+ children: [/*#__PURE__*/ o("div", {
15
+ className: "flex min-w-0 flex-col",
16
+ children: [/*#__PURE__*/ o("div", {
17
+ className: "flex items-center gap-1",
18
+ children: [/*#__PURE__*/ a("p", {
19
+ className: "text-theme-light text-xs leading-5 font-medium",
20
+ children: e
21
+ }), /*#__PURE__*/ a(t, {
22
+ icon: "expandLess",
23
+ size: "16",
24
+ className: "text-theme-high"
25
+ })]
26
+ }), /*#__PURE__*/ a("p", {
27
+ className: "text-theme-high text-lg leading-7 font-bold",
28
+ "data-testid": "service-card-label",
29
+ children: r
30
+ })]
31
+ }), /*#__PURE__*/ a("div", { className: "flex-1" })]
32
+ });
33
+ }
34
+ function f() {
35
+ let { crumbProject: t, availableServices: n, projectId: c, description: f } = s({ from: "/_auth/projects/$projectId" }), { i18n: p, _: m } = u(), h = r(n ?? []), g = `/projects/${c}`, _ = [];
36
+ return h.image?.glance && _.push({
37
+ group: p._({ id: "rp0Bd0" }),
38
+ label: p._({ id: "an5hVd" }),
39
+ to: `${g}/compute/images`
40
+ }), h.compute?.nova && _.push({
41
+ group: p._({ id: "rp0Bd0" }),
42
+ label: p._({ id: "neiJm0" }),
43
+ to: `${g}/compute/flavors`
44
+ }), h.network && (_.push({
45
+ group: p._({ id: "OR475H" }),
46
+ label: p._({ id: "4opp4r" }),
47
+ to: `${g}/network/securitygroups`
48
+ }), _.push({
49
+ group: p._({ id: "OR475H" }),
50
+ label: p._({ id: "u77/s4" }),
51
+ to: `${g}/network/floatingips`
52
+ })), h["object-store"]?.swift && _.push({
53
+ group: p._({ id: "BrrIs8" }),
54
+ label: p._({ id: "+OEi73" }),
55
+ to: `${g}/storage/swift/containers`
56
+ }), h["object-store-ceph"]?.ceph && _.push({
57
+ group: p._({ id: "BrrIs8" }),
58
+ label: p._({ id: "KhNDX4" }),
59
+ to: `${g}/storage/ceph/buckets`
60
+ }), (h.pca?.["clavis-dev"] || h.pca?.["clavis-beta"]) && _.push({
61
+ group: p._({ id: "MILoeL" }),
62
+ label: p._({ id: "miy5mb" }),
63
+ to: `${g}/services/pca`
64
+ }), /*#__PURE__*/ o(e, {
65
+ direction: "vertical",
66
+ gap: "6",
67
+ className: "pb-4",
68
+ children: [/*#__PURE__*/ a(i, {
69
+ title: t?.name ?? p._({ id: "e0NrBM" }),
70
+ projectId: c,
71
+ description: f
72
+ }), _.length > 0 ? /*#__PURE__*/ a("div", {
73
+ className: "grid grid-cols-1 gap-6 sm:grid-cols-2 lg:grid-cols-3 2xl:grid-cols-4",
74
+ children: _.map((e) => /*#__PURE__*/ a(d, { ...e }, e.to))
75
+ }) : /*#__PURE__*/ a("p", {
76
+ className: "text-theme-light text-sm",
77
+ children: /*#__PURE__*/ a(l, { id: "Q1W//7" })
78
+ })]
79
+ });
80
+ }
81
+ //#endregion
82
+ export { f as component };
83
+
84
+ //# sourceMappingURL=_projectId-COt93OEF.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"_projectId-COt93OEF.mjs","names":["useLoaderData","useNavigate","Card","Icon","Stack","getServiceIndex","Trans","useLingui","ContentHeader","ServiceCardProps","group","label","to","ServiceCard","navigate","RouteComponent","crumbProject","availableServices","projectId","description","from","t","serviceIndex","base","cards","push","name","length","map","card","component"],"sources":["../../src/client/routes/_auth/projects/$projectId/index.tsx?tsr-split=component"],"sourcesContent":["import { createFileRoute, useLoaderData, useNavigate } from \"@tanstack/react-router\"\nimport { Card, Icon, Stack } from \"@cloudoperators/juno-ui-components\"\nimport { getServiceIndex } from \"@/server/Authentication/helpers\"\nimport { Trans } from \"@lingui/react/macro\"\nimport { useLingui } from \"@lingui/react/macro\"\nimport { ContentHeader } from \"@/client/components/ContentHeader/ContentHeader\"\n\nexport const Route = createFileRoute(\"/_auth/projects/$projectId/\")({\n component: RouteComponent,\n})\n\ninterface ServiceCardProps {\n group: string\n label: string\n to: string\n}\n\nfunction ServiceCard({ group, label, to }: ServiceCardProps) {\n const navigate = useNavigate()\n return (\n <Card\n onClick={() => navigate({ to: to as never })}\n className=\"flex min-h-40 flex-col gap-4 px-3 pt-2 pb-3\"\n data-testid=\"service-card\"\n >\n <div className=\"flex min-w-0 flex-col\">\n <div className=\"flex items-center gap-1\">\n <p className=\"text-theme-light text-xs leading-5 font-medium\">{group}</p>\n <Icon icon=\"expandLess\" size=\"16\" className=\"text-theme-high\" />\n </div>\n <p className=\"text-theme-high text-lg leading-7 font-bold\" data-testid=\"service-card-label\">\n {label}\n </p>\n </div>\n <div className=\"flex-1\" />\n </Card>\n )\n}\n\nfunction RouteComponent() {\n const { crumbProject, availableServices, projectId, description } = useLoaderData({\n from: \"/_auth/projects/$projectId\",\n })\n const { t } = useLingui()\n\n const serviceIndex = getServiceIndex(availableServices ?? [])\n const base = `/projects/${projectId}`\n\n const cards: ServiceCardProps[] = []\n\n if (serviceIndex[\"image\"]?.[\"glance\"])\n cards.push({ group: t`Compute`, label: t`Images`, to: `${base}/compute/images` })\n if (serviceIndex[\"compute\"]?.[\"nova\"])\n cards.push({ group: t`Compute`, label: t`Flavors`, to: `${base}/compute/flavors` })\n if (serviceIndex[\"network\"]) {\n cards.push({ group: t`Network`, label: t`Security Groups`, to: `${base}/network/securitygroups` })\n cards.push({ group: t`Network`, label: t`Floating IPs`, to: `${base}/network/floatingips` })\n }\n if (serviceIndex[\"object-store\"]?.[\"swift\"])\n cards.push({ group: t`Storage`, label: t`Object Storage (Swift)`, to: `${base}/storage/swift/containers` })\n if (serviceIndex[\"object-store-ceph\"]?.[\"ceph\"])\n cards.push({ group: t`Storage`, label: t`Object Storage (Ceph)`, to: `${base}/storage/ceph/buckets` })\n if (serviceIndex[\"pca\"]?.[\"clavis-dev\"] || serviceIndex[\"pca\"]?.[\"clavis-beta\"]) {\n cards.push({ group: t`Services`, label: t`PCA (Clavis)`, to: `${base}/services/pca` })\n }\n\n return (\n <Stack direction=\"vertical\" gap=\"6\" className=\"pb-4\">\n <ContentHeader title={crumbProject?.name ?? t`Project`} projectId={projectId} description={description} />\n {cards.length > 0 ? (\n <div className=\"grid grid-cols-1 gap-6 sm:grid-cols-2 lg:grid-cols-3 2xl:grid-cols-4\">\n {cards.map((card) => (\n <ServiceCard key={card.to} {...card} />\n ))}\n </div>\n ) : (\n <p className=\"text-theme-light text-sm\">\n <Trans>No services available for this project.</Trans>\n </p>\n )}\n </Stack>\n )\n}\n"],"mappings":";;;;;;;AAiBA,SAASa,EAAY,EAAEH,UAAOC,UAAOC,SAAsB;CACzD,IAAME,IAAWb,EAAAA;CACjB,OACE,gBAAC,GAAA;EACC,eAAea,EAAS,EAAMF,MAAY,CAAA;EAC1C,WAAU;EACV,eAAY;aAEZ,gBAAC,OAAA;GAAI,WAAU;cACb,gBAAC,OAAA;IAAI,WAAU;eACb,gBAAC,KAAA;KAAE,WAAU;eAAkDF;QAC/D,gBAAC,GAAA;KAAK,MAAK;KAAa,MAAK;KAAK,WAAU;;OAE9C,gBAAC,KAAA;IAAE,WAAU;IAA8C,eAAY;cACpEC;;MAGL,gBAAC,OAAA,EAAI,WAAU,SAAA,CAAA,CAAA;;AAGrB;AAEA,SAASI,IAAAA;CACP,IAAM,EAAEC,iBAAcC,sBAAmBC,cAAWC,mBAAgBnB,EAAc,EAChFoB,MAAM,6BACR,CAAA,GACM,EAAA,MAAA,GAAA,GAAA,MAAQb,EAAAA,GAERe,IAAejB,EAAgBY,KAAqB,CAAA,CAAE,GACtDM,IAAO,aAAaL,KAEpBM,IAA4B,CAAA;CAkBlC,OAhBIF,EAAa,OAAW,UAC1BE,EAAMC,KAAK;EAAEf,OAAOW,EAAAA,EAAC,EAAA,IAAA,SAAA,CAAA;EAAWV,OAAOU,EAAAA,EAAC,EAAA,IAAA,SAAA,CAAA;EAAUT,IAAI,GAAGW,EAAI;CAAkB,CAAA,GAC7ED,EAAa,SAAa,QAC5BE,EAAMC,KAAK;EAAEf,OAAOW,EAAAA,EAAC,EAAA,IAAA,SAAA,CAAA;EAAWV,OAAOU,EAAAA,EAAC,EAAA,IAAA,SAAA,CAAA;EAAWT,IAAI,GAAGW,EAAI;CAAmB,CAAA,GAC/ED,EAAa,YACfE,EAAMC,KAAK;EAAEf,OAAOW,EAAAA,EAAC,EAAA,IAAA,SAAA,CAAA;EAAWV,OAAOU,EAAAA,EAAC,EAAA,IAAA,SAAA,CAAA;EAAmBT,IAAI,GAAGW,EAAI;CAA0B,CAAA,GAChGC,EAAMC,KAAK;EAAEf,OAAOW,EAAAA,EAAC,EAAA,IAAA,SAAA,CAAA;EAAWV,OAAOU,EAAAA,EAAC,EAAA,IAAA,SAAA,CAAA;EAAgBT,IAAI,GAAGW,EAAI;CAAuB,CAAA,IAExFD,EAAa,iBAAkB,SACjCE,EAAMC,KAAK;EAAEf,OAAOW,EAAAA,EAAC,EAAA,IAAA,SAAA,CAAA;EAAWV,OAAOU,EAAAA,EAAC,EAAA,IAAA,SAAA,CAAA;EAA0BT,IAAI,GAAGW,EAAI;CAA4B,CAAA,GACvGD,EAAa,sBAAuB,QACtCE,EAAMC,KAAK;EAAEf,OAAOW,EAAAA,EAAC,EAAA,IAAA,SAAA,CAAA;EAAWV,OAAOU,EAAAA,EAAC,EAAA,IAAA,SAAA,CAAA;EAAyBT,IAAI,GAAGW,EAAI;CAAwB,CAAA,IAClGD,EAAa,MAAS,iBAAiBA,EAAa,MAAS,mBAC/DE,EAAMC,KAAK;EAAEf,OAAOW,EAAAA,EAAC,EAAA,IAAA,SAAA,CAAA;EAAYV,OAAOU,EAAAA,EAAC,EAAA,IAAA,SAAA,CAAA;EAAgBT,IAAI,GAAGW,EAAI;CAAgB,CAAA,GAIpF,gBAAC,GAAA;EAAM,WAAU;EAAW,KAAI;EAAI,WAAU;aAC5C,gBAAC,GAAA;GAAc,OAAOP,GAAcU,QAAQL,EAAAA,EAAC,EAAA,IAAA,SAAA,CAAA;GAAsBH;GAAwBC;MAC1FK,EAAMG,SAAS,IACd,gBAAC,OAAA;GAAI,WAAU;aACZH,EAAMI,KAAKC,MACV,gBAAC,GAAA,EAA0B,GAAIA,EAAAA,GAAbA,EAAKjB,EAAE,CAAA;OAI7B,gBAAC,KAAA;GAAE,WAAU;aACX,gBAAA,GAAA,EAAA,IAAA,SAAA,CAAA;;;AAKV"}
@@ -1,7 +1,7 @@
1
1
  import { $ as e, A as t, C as n, D as r, G as i, H as a, J as o, L as s, N as c, T as l, U as u, V as d, Y as f, _ as p, c as m, ct as h, d as g, et as _, f as v, it as y, k as b, lt as x, m as S, nt as C, o as w, ot as T, rt as E, t as D } from "./build-BdRRmNf5.mjs";
2
2
  import { r as O } from "./trpcClient-BzPUgiM2.mjs";
3
- import { t as k } from "./_storageType-dRTFMKG3.mjs";
4
- import { t as A } from "./ContentHeader-DqsGNvtD.mjs";
3
+ import { t as k } from "./_storageType-CepuevDG.mjs";
4
+ import { t as A } from "./ContentHeader-C51H95X8.mjs";
5
5
  import { t as j } from "./SortInput-VK7IYqQv.mjs";
6
6
  import { t as M } from "./formatBytes-CZv_XyCY.mjs";
7
7
  import { t as N } from "./useProjectId-DBc5lpoU.mjs";
@@ -1685,21 +1685,22 @@ var ge = (e, t) => ({
1685
1685
  className: "text-theme-default block font-semibold",
1686
1686
  children: e
1687
1687
  }), t]
1688
- }), Oe = ({ serviceInfo: e, accountInfo: r }) => {
1689
- let { i18n: i, _: a } = W(), o = e?.swift, s = {
1690
- account_quotas: i._({ id: "DJT9tB" }),
1691
- container_quotas: i._({ id: "USiuNX" }),
1692
- bulk_delete: i._({ id: "F6YIQe" }),
1693
- bulk_upload: i._({ id: "2Inn83" }),
1694
- slo: i._({ id: "cpw++p" }),
1695
- container_sync: i._({ id: "ezT9KW" }),
1696
- tempurl: i._({ id: "UO3hJ2" }),
1697
- symlink: i._({ id: "Q2xmVl" }),
1698
- versioned_writes: i._({ id: "8jLXs3" })
1699
- }, c = Object.entries(s).filter(([e]) => o?.[e]).map(([, e]) => e);
1688
+ }), Oe = ({ serviceInfo: e, accountInfo: r, open: i }) => {
1689
+ let { i18n: a, _: o } = W(), s = e?.swift, c = {
1690
+ account_quotas: a._({ id: "DJT9tB" }),
1691
+ container_quotas: a._({ id: "USiuNX" }),
1692
+ bulk_delete: a._({ id: "F6YIQe" }),
1693
+ bulk_upload: a._({ id: "2Inn83" }),
1694
+ slo: a._({ id: "cpw++p" }),
1695
+ container_sync: a._({ id: "ezT9KW" }),
1696
+ tempurl: a._({ id: "UO3hJ2" }),
1697
+ symlink: a._({ id: "Q2xmVl" }),
1698
+ versioned_writes: a._({ id: "8jLXs3" })
1699
+ }, l = Object.entries(c).filter(([e]) => s?.[e]).map(([, e]) => e);
1700
1700
  return /*#__PURE__*/ I(t, {
1701
1701
  triggerEvent: "hover",
1702
1702
  placement: "bottom-end",
1703
+ open: i,
1703
1704
  children: [/*#__PURE__*/ F(w, {
1704
1705
  asChild: !0,
1705
1706
  children: /*#__PURE__*/ F(m, {
@@ -1716,83 +1717,83 @@ var ge = (e, t) => ({
1716
1717
  title: /*#__PURE__*/ F(U, { id: "AeXO77" }),
1717
1718
  children: [
1718
1719
  /*#__PURE__*/ F($, {
1719
- label: i._({ id: "ClGcRq" }),
1720
+ label: a._({ id: "ClGcRq" }),
1720
1721
  value: r.containerCount.toLocaleString()
1721
1722
  }),
1722
1723
  /*#__PURE__*/ F($, {
1723
- label: i._({ id: "B3toQF" }),
1724
+ label: a._({ id: "B3toQF" }),
1724
1725
  value: r.objectCount.toLocaleString()
1725
1726
  }),
1726
1727
  /*#__PURE__*/ F($, {
1727
- label: i._({ id: "aL1w5Z" }),
1728
+ label: a._({ id: "aL1w5Z" }),
1728
1729
  value: M(r.bytesUsed)
1729
1730
  }),
1730
1731
  r.quotaBytes !== void 0 && /*#__PURE__*/ F($, {
1731
- label: i._({ id: "vEkTR9" }),
1732
+ label: a._({ id: "vEkTR9" }),
1732
1733
  value: M(r.quotaBytes)
1733
1734
  })
1734
1735
  ]
1735
1736
  }),
1736
- o && /*#__PURE__*/ I(De, {
1737
+ s && /*#__PURE__*/ I(De, {
1737
1738
  title: /*#__PURE__*/ F(U, { id: "6BDqha" }),
1738
1739
  children: [
1739
1740
  /*#__PURE__*/ F($, {
1740
- label: i._({ id: "wTg+FY" }),
1741
- value: o.max_file_size === void 0 ? void 0 : M(o.max_file_size)
1741
+ label: a._({ id: "wTg+FY" }),
1742
+ value: s.max_file_size === void 0 ? void 0 : M(s.max_file_size)
1742
1743
  }),
1743
1744
  /*#__PURE__*/ F($, {
1744
- label: i._({ id: "Rih53k" }),
1745
- value: o.max_container_name_length
1745
+ label: a._({ id: "Rih53k" }),
1746
+ value: s.max_container_name_length
1746
1747
  }),
1747
1748
  /*#__PURE__*/ F($, {
1748
- label: i._({ id: "qAkkjP" }),
1749
- value: o.max_object_name_length
1749
+ label: a._({ id: "qAkkjP" }),
1750
+ value: s.max_object_name_length
1750
1751
  }),
1751
1752
  /*#__PURE__*/ F($, {
1752
- label: i._({ id: "OZImTR" }),
1753
- value: o.container_listing_limit?.toLocaleString()
1753
+ label: a._({ id: "OZImTR" }),
1754
+ value: s.container_listing_limit?.toLocaleString()
1754
1755
  }),
1755
1756
  /*#__PURE__*/ F($, {
1756
- label: i._({ id: "a4A2uB" }),
1757
- value: o.account_listing_limit?.toLocaleString()
1757
+ label: a._({ id: "a4A2uB" }),
1758
+ value: s.account_listing_limit?.toLocaleString()
1758
1759
  }),
1759
1760
  /*#__PURE__*/ F($, {
1760
- label: i._({ id: "zWb/Nn" }),
1761
- value: o.max_header_size
1761
+ label: a._({ id: "zWb/Nn" }),
1762
+ value: s.max_header_size
1762
1763
  }),
1763
1764
  /*#__PURE__*/ F($, {
1764
- label: i._({ id: "RGwfoL" }),
1765
- value: o.max_meta_count
1765
+ label: a._({ id: "RGwfoL" }),
1766
+ value: s.max_meta_count
1766
1767
  }),
1767
1768
  /*#__PURE__*/ F($, {
1768
- label: i._({ id: "8c3/77" }),
1769
- value: o.max_meta_name_length
1769
+ label: a._({ id: "8c3/77" }),
1770
+ value: s.max_meta_name_length
1770
1771
  }),
1771
1772
  /*#__PURE__*/ F($, {
1772
- label: i._({ id: "5JDSvn" }),
1773
- value: o.max_meta_value_length
1773
+ label: a._({ id: "5JDSvn" }),
1774
+ value: s.max_meta_value_length
1774
1775
  }),
1775
1776
  /*#__PURE__*/ F($, {
1776
- label: i._({ id: "ZAx+d1" }),
1777
- value: o.max_meta_overall_size
1777
+ label: a._({ id: "ZAx+d1" }),
1778
+ value: s.max_meta_overall_size
1778
1779
  }),
1779
- o.bulk_delete && /*#__PURE__*/ F($, {
1780
- label: i._({ id: "lQ3EIe" }),
1781
- value: o.bulk_delete.max_deletes_per_request.toLocaleString()
1780
+ s.bulk_delete && /*#__PURE__*/ F($, {
1781
+ label: a._({ id: "lQ3EIe" }),
1782
+ value: s.bulk_delete.max_deletes_per_request.toLocaleString()
1782
1783
  }),
1783
- o.bulk_upload && /*#__PURE__*/ F($, {
1784
- label: i._({ id: "STc+7E" }),
1785
- value: o.bulk_upload.max_containers_per_extraction.toLocaleString()
1784
+ s.bulk_upload && /*#__PURE__*/ F($, {
1785
+ label: a._({ id: "STc+7E" }),
1786
+ value: s.bulk_upload.max_containers_per_extraction.toLocaleString()
1786
1787
  }),
1787
- o.slo && /*#__PURE__*/ F($, {
1788
- label: i._({ id: "RNBvdl" }),
1789
- value: o.slo.max_manifest_segments.toLocaleString()
1788
+ s.slo && /*#__PURE__*/ F($, {
1789
+ label: a._({ id: "RNBvdl" }),
1790
+ value: s.slo.max_manifest_segments.toLocaleString()
1790
1791
  })
1791
1792
  ]
1792
1793
  }),
1793
- c.length > 0 && /*#__PURE__*/ F(De, {
1794
+ l.length > 0 && /*#__PURE__*/ F(De, {
1794
1795
  title: /*#__PURE__*/ F(U, { id: "Qx7DM7" }),
1795
- children: c.map((e) => /*#__PURE__*/ F(Ee, { label: e }, e))
1796
+ children: l.map((e) => /*#__PURE__*/ F(Ee, { label: e }, e))
1796
1797
  })
1797
1798
  ]
1798
1799
  })
@@ -3240,4 +3241,4 @@ var $e = () => /*#__PURE__*/ F(Qe, {});
3240
3241
  //#endregion
3241
3242
  export { $e as component };
3242
3243
 
3243
- //# sourceMappingURL=_storageType-2_fau4B5.mjs.map
3244
+ //# sourceMappingURL=_storageType-B-qGcGUQ.mjs.map