dynamic styling

This commit is contained in:
Max Peintner
2023-04-22 20:16:47 +02:00
parent f2b3d5ef7e
commit 1d9a858cea
3 changed files with 49 additions and 31 deletions

View File

@@ -9,23 +9,25 @@ import { LayoutProviders } from "#/ui/LayoutProviders";
import { Analytics } from "@vercel/analytics/react";
import { ZitadelUIProvider } from "#/../../packages/zitadel-react/dist";
import ThemeWrapper from "#/ui/ThemeWrapper";
import { getBranding } from "#/lib/zitadel";
import { server } from "../lib/zitadel";
const lato = Lato({
weight: "400",
subsets: ["latin"],
});
export default function RootLayout({
export default async function RootLayout({
children,
}: {
children: React.ReactNode;
}) {
const branding = await getBranding(server);
return (
<html lang="en" className={`${lato.className}`} suppressHydrationWarning>
<head />
<body>
{/* @ts-expect-error Server Component */}
<ThemeWrapper>
<ThemeWrapper branding={branding}>
<LayoutProviders>
<div className="overflow-y-scroll bg-[url('/grid-light.svg')] dark:bg-[url('/grid-dark.svg')]">
<GlobalNav />

View File

@@ -12,3 +12,16 @@
@apply text-sm;
}
}
html {
--background-color: #ffffff;
--dark-background-color: #000000;
}
.bg-background-light-600 {
background-color: var(--background-color);
}
.dark .dark\:bg-background-dark-600 {
background-color: var(--dark-background-color) !important;
}

View File

@@ -1,36 +1,39 @@
import { getBranding } from "#/lib/zitadel";
import { server } from "../lib/zitadel";
"use client";
const ThemeWrapper = async ({ children }: any) => {
console.log("hehe");
import { LabelPolicy } from "#/../../packages/zitadel-server/dist";
import { useEffect } from "react";
type Props = {
branding: LabelPolicy | undefined;
children: React.ReactNode;
};
const ThemeWrapper = ({ children, branding }: Props) => {
const defaultClasses = "bg-background-light-600 dark:bg-background-dark-600";
try {
const policy = await getBranding(server);
const darkStyles = {
backgroundColor: `${policy?.backgroundColorDark}`,
color: `${policy?.fontColorDark}`,
};
const lightStyles = {
backgroundColor: `${policy?.backgroundColor}`,
color: `${policy?.fontColor}`,
};
console.log(policy);
console.log(branding);
useEffect(() => {
if (branding) {
document.documentElement.style.setProperty(
"--background-color",
branding?.backgroundColor
);
document.documentElement.style.setProperty(
"--dark-background-color",
branding?.backgroundColorDark
);
}
}, []);
return (
<div className={defaultClasses} style={darkStyles}>
<div className={defaultClasses}>
{children}
{/* <style jsx>{`
--background-color: ${branding?.backgroundColor};
--dark-background-color: ${branding?.backgroundColorDark};
`}</style> */}
</div>
);
} catch (error) {
console.error(error);
return <div className={defaultClasses}>{children}</div>;
}
};
export default ThemeWrapper;