diff --git a/src/components/general/admin/hero.tsx b/src/components/general/admin/hero.tsx
index 07219da..1870fde 100644
--- a/src/components/general/admin/hero.tsx
+++ b/src/components/general/admin/hero.tsx
@@ -1,8 +1,10 @@
+import { AppContext } from "@/src/pages/_app";
+import Breadcrumbs from "@/twui/components/elements/Breadcrumbs";
import H1 from "@/twui/components/layout/H1";
import Row from "@/twui/components/layout/Row";
import Span from "@/twui/components/layout/Span";
import Stack from "@/twui/components/layout/Stack";
-import { ReactNode } from "react";
+import { ReactNode, useContext } from "react";
type Props = {
title: string | ReactNode;
@@ -11,6 +13,10 @@ type Props = {
};
export default function AdminHero({ title, ctas, description }: Props) {
+ const { pageProps } = useContext(AppContext);
+
+ console.log("pageProps.pageUrl", pageProps.pageUrl);
+
return (
@@ -18,6 +24,10 @@ export default function AdminHero({ title, ctas, description }: Props) {
{description ? (
{description}
) : null}
+
{ctas}
diff --git a/src/components/pages/admin/services/service/(partials)/cluster-server.tsx b/src/components/pages/admin/services/service/(partials)/cluster-server.tsx
new file mode 100644
index 0000000..7bfc3e9
--- /dev/null
+++ b/src/components/pages/admin/services/service/(partials)/cluster-server.tsx
@@ -0,0 +1,32 @@
+import Stack from "@/twui/components/layout/Stack";
+import { useContext } from "react";
+import { AppContext } from "@/src/pages/_app";
+import {
+ NormalizedServerObject,
+ ParsedDeploymentServiceConfig,
+} from "@/src/types";
+
+type Props = {
+ service: ParsedDeploymentServiceConfig;
+ server: NormalizedServerObject;
+};
+
+export default function ServiceClusterServer({ service, server }: Props) {
+ const { pageProps } = useContext(AppContext);
+ const { deployment, children_services } = pageProps;
+
+ const all_services = [service, ...(children_services || [])];
+
+ const deployment_name = deployment?.deployment_name;
+ const service_name = service?.service_name;
+
+ const cluster_servers = service.servers;
+
+ return (
+
+ {cluster_servers?.map((server, index) => {
+ return null;
+ })}
+
+ );
+}
diff --git a/src/components/pages/admin/services/service/(partials)/cluster.tsx b/src/components/pages/admin/services/service/(partials)/cluster.tsx
new file mode 100644
index 0000000..df43415
--- /dev/null
+++ b/src/components/pages/admin/services/service/(partials)/cluster.tsx
@@ -0,0 +1,31 @@
+import Stack from "@/twui/components/layout/Stack";
+import { useContext } from "react";
+import { AppContext } from "@/src/pages/_app";
+import { ParsedDeploymentServiceConfig } from "@/src/types";
+import Row from "@/twui/components/layout/Row";
+
+type Props = {
+ service: ParsedDeploymentServiceConfig;
+};
+
+export default function ServiceCluster({ service }: Props) {
+ const { pageProps } = useContext(AppContext);
+ const { deployment, children_services } = pageProps;
+
+ const all_services = [service, ...(children_services || [])];
+
+ const deployment_name = deployment?.deployment_name;
+ const service_name = service?.service_name;
+
+ const cluster_servers = service.servers;
+
+ return (
+
+
+ {cluster_servers?.map((server, index) => {
+ return {server.private_ip};
+ })}
+
+
+ );
+}
diff --git a/src/components/pages/admin/services/service/(sections)/clusters.tsx b/src/components/pages/admin/services/service/(sections)/clusters.tsx
new file mode 100644
index 0000000..4986381
--- /dev/null
+++ b/src/components/pages/admin/services/service/(sections)/clusters.tsx
@@ -0,0 +1,20 @@
+import Stack from "@/twui/components/layout/Stack";
+import { useContext } from "react";
+import { AppContext } from "@/src/pages/_app";
+import ServiceCluster from "../(partials)/cluster";
+
+export default function ServiceClusters() {
+ const { pageProps } = useContext(AppContext);
+ const { service, deployment, children_services } = pageProps;
+
+ const all_services = [service, ...(children_services || [])];
+
+ return (
+
+ {all_services.map((srv, index) => {
+ if (!srv) return null;
+ return ;
+ })}
+
+ );
+}
diff --git a/src/components/pages/admin/services/service/index.tsx b/src/components/pages/admin/services/service/index.tsx
index 49cf2db..90ad897 100644
--- a/src/components/pages/admin/services/service/index.tsx
+++ b/src/components/pages/admin/services/service/index.tsx
@@ -1,9 +1,10 @@
import Stack from "@/twui/components/layout/Stack";
-import { useContext } from "react";
+import { Fragment, useContext } from "react";
import { AppContext } from "@/src/pages/_app";
import twuiSlugToNormalText from "@/twui/components/utils/slug-to-normal-text";
import Divider from "@/twui/components/layout/Divider";
import AdminHero from "@/src/components/general/admin/hero";
+import ServiceClusters from "./(sections)/clusters";
export default function Main() {
const { pageProps } = useContext(AppContext);
@@ -13,7 +14,7 @@ export default function Main() {
const service_name = service?.service_name;
return (
-
+
-
+
+
);
}
diff --git a/src/layouts/admin/index.tsx b/src/layouts/admin/index.tsx
index 360a4c9..adf29a3 100644
--- a/src/layouts/admin/index.tsx
+++ b/src/layouts/admin/index.tsx
@@ -13,7 +13,7 @@ export default function Layout({ children }: Props) {
-
+
-
+
{children}
diff --git a/src/styles/globals.css b/src/styles/globals.css
index 48cdbd0..25c1a24 100644
--- a/src/styles/globals.css
+++ b/src/styles/globals.css
@@ -42,14 +42,11 @@
}
.nested-grid-frame .grid-cell {
- @apply relative z-2;
+ @apply relative z-2 h-full;
}
-.grid-frame.nested-grid-frame .grid-cell {
- @apply h-full;
-}
-
-.grid-frame > .grid-cell {
+.grid-frame > .grid-cell,
+.nested-grid-frame .grid-cell {
@apply bg-background-light dark:bg-background-dark;
}
@@ -105,3 +102,11 @@ code {
@apply bg-slate-100 dark:bg-white/10 px-3 py-1 rounded-default;
@apply my-1;
}
+
+.twui-a {
+ @apply border-none;
+}
+
+.twui-breadcrumbs-divider {
+ @apply rotate-12;
+}
diff --git a/src/utils/parse-page-url.ts b/src/utils/parse-page-url.ts
index 68162e8..331a1a8 100644
--- a/src/utils/parse-page-url.ts
+++ b/src/utils/parse-page-url.ts
@@ -9,13 +9,7 @@ export default function parsePageUrl(url?: string, admin?: boolean) {
.split("/")
.filter((item) => item !== "");
- if (admin) {
- finalAdminUrlArray?.splice(1, 1);
- }
-
- const finalAdminUrl = finalAdminUrlArray
- ? "/" + finalAdminUrlArray?.join("/") || ""
- : null;
+ const finalAdminUrl = "/" + finalAdminUrlArray?.join("/") || "";
return finalAdminUrl;
}