-
1
-
2
-
3
-
4
-
5
-
6
-
7
-
8
-
9
-
10
-
11
-
12
-
13
-
14
-
15
-
16
-
17
-
18
-
19
-
20
-
21
-
22
-
23
-
24
-
25
-
26
-
27
-
28
-
29
-
30
-
31
-
32
-
33
-
34
-
35
-
36
-
37
-
38
-
39
-
40
-
41
-
42
-
43
-
44
-
45
-
46
-
47
-
48
-
49
-
50
-
51
-
52
-
53
-
54
// SPDX-FileCopyrightText: 2024 Shota FUJI <pockawoooh@gmail.com>
// SPDX-License-Identifier: AGPL-3.0-only
import {
Box,
type BoxProps,
Card,
Flex,
Grid,
Heading,
Inset,
ScrollArea,
Theme,
} from "@radix-ui/themes";
import { type FC, type ReactNode } from "react";
import css from "./Layout.module.css";
export interface LayoutProps extends Pick<BoxProps, "className" | "children" | "style"> {
title: ReactNode;
}
export const Layout: FC<LayoutProps> = ({ className, children, title, ...rest }) => {
return (
<Grid
className={`${css.bgGrid} ${className || ""}`}
inset="0"
height="100%"
p="4"
px={{ initial: "2", md: "4" }}
columns={{ initial: "1", md: "minmax(0, 1fr) 30rem" }}
{...rest}
>
<Box asChild gridColumn="-2 / -1">
<Card>
<Theme asChild panelBackground="solid">
<Flex height="100%" direction="column" gap="7" p={{ initial: "0", md: "1" }}>
<Heading size="4" align="center">
{title}
</Heading>
<Inset>
<ScrollArea>
<Box px={{ initial: "2", xs: "3" }} pb="3" pt="0">
{children}
</Box>
</ScrollArea>
</Inset>
</Flex>
</Theme>
</Card>
</Box>
</Grid>
);
};