import { Layout, Header, Sider, Content, Footer } from "sud-ui";Header, Sider, Content, Footer 컴포넌트는 반드시 Layout 컴포넌트 내부에 위치해야 합니다.
Layout 내부에 다른 Layout을 중첩하여 사용할 수 있습니다.
Sider의 위치는 'above-header' 또는 'below-header'로 설정할 수 있습니다.
각 컴포넌트의 크기는 자동으로 계산되며, Content 영역이 나머지 공간을 채웁니다.
import React from 'react';
import { Layout, Header, Content, Footer, Avatar, Typography } from 'sud-ui';
import { LogoSud } from 'sud-ui';
const BasicLayout = () => {
return (
<Layout>
<Header
className="flex justify-center items-center"
colorType="sub"
shadow="sm"
border={false}
>
<LogoSud /> Soon UI Design
</Header>
<Content className="flex flex-col justify-center items-center gap-[10px]" background="sky-1">
<Avatar />
<Typography as="span" size="base" pretendard="B">
Hello World!
</Typography>
</Content>
<Footer
className="flex justify-center items-center"
colorType="sub"
border={false}
height="40px"
>
All rights reserved © 2025 SeeUSoon93
</Footer>
</Layout>
);
};
export default BasicLayout;import React, { useState } from 'react';
import { Layout, Header, Sider, Content, Menu } from 'sud-ui';
import { LogoSud } from 'sud-icons';
const AboveHeaderSiderContent = () => {
const [selectedMenu, setSelectedMenu] = useState("");
const menuItems = [
{
key: "dashboard",
label: "Dashboard",
children: [
{ key: "overview", label: "Overview" },
{ key: "analytics", label: "Analytics" }
]
},
{
key: "management",
label: "Management",
children: [
{ key: "users", label: "Users" },
{ key: "settings", label: "Settings" }
]
}
];
const findLabel = (items, targetKey) => {
for (const item of items) {
if (item.key === targetKey) return item.label;
if (item.children) {
const childLabel = findLabel(item.children, targetKey);
if (childLabel) return childLabel;
}
}
return null;
};
const handleMenuSelect = (key) => {
const label = findLabel(menuItems, key);
setSelectedMenu(label || "");
};
return (
<Layout siderPosition="above-header">
<Header
className="flex justify-center items-center"
colorType="sub"
shadow="sm"
border={false}
>
<LogoSud /> Soon UI Design
</Header>
<Sider
className="flex pd-l-5 pd-r-10"
width="object-fit"
border={false}
colorType="sub"
shadow="sm"
>
<Menu
items={menuItems}
expandType="accordion"
colorType="sub"
onSelect={handleMenuSelect}
/>
</Sider>
<Content
className="flex justify-center items-center"
background="sky-1"
>
{selectedMenu ? `${selectedMenu} selected` : "Please select a menu"}
</Content>
</Layout>
);
};
export default AboveHeaderSiderContent;import React from 'react';
import { Layout, Header, Sider, Content, Menu } from 'sud-ui';
import { LogoSud } from 'sud-icons';
const NestedLayout = () => {
return (
<Layout>
<Header
className="flex justify-center items-center"
colorType="sub"
shadow="sm"
border={false}
>
<LogoSud /> Soon UI Design
</Header>
<Sider
className="flex pd-l-5 pd-r-10"
width="270"
colorType="sub"
shadow="sm"
border={false}
>
<Menu
items={[
{ key: "dashboard", label: "Dashboard" },
{ key: "users", label: "Users" },
{ key: "settings", label: "Settings" }
]}
colorType="sub"
/>
</Sider>
<Content>
<Layout>
<Header
className="flex justify-center items-center"
colorType="primary"
shadow="sm"
border={false}
height="60"
>
Sub Header
</Header>
<Content className="flex justify-center items-center">
Nested Layout Content
</Content>
</Layout>
</Content>
</Layout>
);
};
export default NestedLayout;import React, { useState } from 'react';
import { Layout, Sider, Content, Menu } from 'sud-ui';
const SiderContentLayout = () => {
const [selectedMenu, setSelectedMenu] = useState("");
const menuItems = [
{ key: "dashboard", label: "Dashboard" },
{ key: "users", label: "Users" },
{ key: "settings", label: "Settings" }
];
const handleMenuSelect = (key) => {
const selected = menuItems.find(item => item.key === key);
setSelectedMenu(selected?.label || "");
};
return (
<Layout>
<Sider
className="flex pd-l-5 pd-r-10"
width="270"
colorType="sub"
shadow="sm"
border={false}
>
<Menu
items={menuItems}
colorType="sub"
onSelect={handleMenuSelect}
/>
</Sider>
<Content className="flex justify-center items-center" background="sky-1">
{selectedMenu ? `${selectedMenu} page` : "Please select a menu"}
</Content>
</Layout>
);
};
export default SiderContentLayout;속성 이름 | 설명 | 타입 | 기본값 |
|---|