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; }