* feat: announce Homarr v2 beta * chore: refine v2 beta announcement * feat: expand v2 beta guidance * chore: refine v2 beta resources * chore: simplify v2 beta modal * chore: improve v2 beta feedback links * fix: keep v2 modal above header * chore: sharpen v2 beta message * fix: clear header for v2 modal
44 lines
1021 B
TypeScript
44 lines
1021 B
TypeScript
"use client";
|
|
|
|
import type { PropsWithChildren } from "react";
|
|
import { AppShell } from "@mantine/core";
|
|
import { useAtomValue } from "jotai";
|
|
|
|
import { useOptionalBackgroundProps } from "./background";
|
|
import { navigationCollapsedAtom } from "./header/burger";
|
|
|
|
interface ClientShellProps {
|
|
hasHeader?: boolean;
|
|
hasNavigation?: boolean;
|
|
headerHeight?: number;
|
|
}
|
|
|
|
export const ClientShell = ({
|
|
hasHeader = true,
|
|
hasNavigation = true,
|
|
headerHeight = 60,
|
|
children,
|
|
}: PropsWithChildren<ClientShellProps>) => {
|
|
const collapsed = useAtomValue(navigationCollapsedAtom);
|
|
const backgroundProps = useOptionalBackgroundProps();
|
|
|
|
return (
|
|
<AppShell
|
|
{...backgroundProps}
|
|
header={hasHeader ? { height: headerHeight } : undefined}
|
|
navbar={
|
|
hasNavigation
|
|
? {
|
|
width: 300,
|
|
breakpoint: "sm",
|
|
collapsed: { mobile: collapsed },
|
|
}
|
|
: undefined
|
|
}
|
|
padding="md"
|
|
>
|
|
{children}
|
|
</AppShell>
|
|
);
|
|
};
|