Skip to content

Commit f9d048f

Browse files
committed
feat: added service-types page
1 parent dc142b3 commit f9d048f

2 files changed

Lines changed: 56 additions & 3 deletions

File tree

Lines changed: 53 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,57 @@
1+
"use client";
2+
import { Card, CardContent, CardHeader, CardTitle } from "@/components/ui/card";
3+
import { useCloudRegistry } from "@/hooks";
4+
import { ServiceType } from "@elixir-cloud/cloud-registry/providers";
5+
import { useEffect, useState } from "react";
6+
17
function Page() {
2-
return <div></div>;
8+
const { cloudRegistryProvider } = useCloudRegistry();
9+
const [serviceTypes, setServiceTypes] = useState<ServiceType[] | null>(null);
10+
const [loading, setLoading] = useState(true);
11+
12+
useEffect(() => {
13+
cloudRegistryProvider
14+
?.getServiceTypes()
15+
.then((val) => setServiceTypes(val))
16+
.finally(() => setLoading(false));
17+
}, [cloudRegistryProvider]);
18+
19+
return (
20+
<div className="space-y-6">
21+
<div>
22+
<h2 className="text-3xl font-semibold tracking-tight mt-2">Service Types</h2>
23+
<p className="leading-7 mt-2">
24+
Manage and monitor registered service types across all environments
25+
</p>
26+
</div>
27+
<div>
28+
<div className="flex gap-4 flex-wrap justify-center md:justify-start">
29+
{loading === true && (
30+
<p className="font-bold text-lg mt-20 text-center w-full">Loading...</p>
31+
)}
32+
{serviceTypes !== null &&
33+
serviceTypes?.map((val, idx) => (
34+
<div key={idx}>
35+
<Card className="min-w-72 hover:scale-[102%] transition-all cursor-pointer">
36+
<CardHeader>
37+
<CardTitle>Artifact - {val.artifact}</CardTitle>
38+
</CardHeader>
39+
<CardContent className="space-y-2">
40+
<p>Group - {val.group}</p>
41+
<p>Version - {val.version}</p>
42+
</CardContent>
43+
</Card>
44+
</div>
45+
))}
46+
{loading === false && serviceTypes === null && (
47+
<p className="font-bold text-lg mt-20 text-center w-full">
48+
No service types
49+
</p>
50+
)}
51+
</div>
52+
</div>
53+
</div>
54+
);
355
}
456

557
export default Page;

src/components/shared/app-sidebar/app-sidebar-header.tsx

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,20 +1,21 @@
11
import { SidebarMenu, SidebarMenuButton, SidebarMenuItem } from "@/components/ui/sidebar";
22
import Image from "next/image";
3+
import Link from "next/link";
34

45
function AppSidebarHeader() {
56
return (
67
<SidebarMenu>
78
<SidebarMenuItem>
89
<SidebarMenuButton size="lg" asChild isActive>
9-
<div>
10+
<Link href={"/dashboard"}>
1011
<div className="flex aspect-square size-8 items-center justify-center rounded-lg">
1112
<Image src={"/logo.svg"} width={40} height={40} alt="icon" />
1213
</div>
1314
<div className="flex flex-col gap-0.5 leading-none">
1415
<span className="font-medium">Elixir Cloud AAI</span>
1516
<span className="text-xs">Cloud Registry</span>
1617
</div>
17-
</div>
18+
</Link>
1819
</SidebarMenuButton>
1920
</SidebarMenuItem>
2021
</SidebarMenu>

0 commit comments

Comments
 (0)