mirror of
https://github.com/stefanpejcic/openpanel
synced 2025-06-26 18:28:26 +00:00
50 lines
1.5 KiB
TypeScript
50 lines
1.5 KiB
TypeScript
import React from "react";
|
|
import { Box } from "@mantine/core";
|
|
|
|
import { RefineThemedLayoutV2Props } from "./types";
|
|
import { ThemedSiderV2 as DefaultSider } from "./sider";
|
|
import { ThemedHeaderV2 as DefaultHeader } from "./header";
|
|
import { ThemedLayoutContextProvider } from "../../contexts";
|
|
|
|
export const ThemedLayoutV2: React.FC<RefineThemedLayoutV2Props> = ({
|
|
Sider,
|
|
Header,
|
|
Title,
|
|
Footer,
|
|
OffLayoutArea,
|
|
initialSiderCollapsed,
|
|
children,
|
|
}) => {
|
|
const SiderToRender = Sider ?? DefaultSider;
|
|
const HeaderToRender = Header ?? DefaultHeader;
|
|
|
|
return (
|
|
<ThemedLayoutContextProvider
|
|
initialSiderCollapsed={initialSiderCollapsed}
|
|
>
|
|
<Box sx={{ display: "flex" }}>
|
|
<SiderToRender Title={Title} />
|
|
<Box
|
|
sx={{
|
|
display: "flex",
|
|
flexDirection: "column",
|
|
flex: 1,
|
|
}}
|
|
>
|
|
<HeaderToRender />
|
|
<Box
|
|
component="main"
|
|
sx={(theme) => ({
|
|
padding: theme.spacing.sm,
|
|
})}
|
|
>
|
|
{children}
|
|
</Box>
|
|
{Footer && <Footer />}
|
|
</Box>
|
|
{OffLayoutArea && <OffLayoutArea />}
|
|
</Box>
|
|
</ThemedLayoutContextProvider>
|
|
);
|
|
};
|