LUMIR Internal Design System
๋ฃจ๋ฏธ๋ฅด ์ฌ๋ด ํ๋ก์ ํธ์ฉ ๋์์ธ ์์คํ
์
๋๋ค. ์ด ์์คํ
์ ์ผ๊ด๋ UI/UX๋ฅผ ์ ๊ณตํ๊ณ ๊ฐ๋ฐ ํจ์จ์ฑ์ ๋์ด๊ธฐ ์ํด ์ค๊ณ๋์์ต๋๋ค.
๋ชฉ์ฐจ
์ฃผ์ ๊ธฐ๋ฅ
- ์ฌ์ด๋๋ฐ ์ปดํฌ๋ํธ
- ๋ฉ๋ด ์์ดํ
๊ด๋ฆฌ
- ๋ฐ์ํ ๋์์ธ
- Next.js์ ํตํฉ
์ค์น
npm install lumir-internal-design-system
pnpm add lumir-internal-design-system
์ฌ์ฉ๋ฒ
- CSS ํ์ผ์ ์ํฌํธํฉ๋๋ค:
import "lumir-internal-design-system/index.css";
- ์ปดํฌ๋ํธ๋ฅผ ์ํฌํธํ์ฌ ์ฌ์ฉํฉ๋๋ค:
import { SidebarTest } from "lumir-internal-design-system";
- next.config.js ํ์ผ์ ์๋ ์ค์ ์ ์ถ๊ฐํด์ค๋๋ค.:
const nextConfig = {
transpilePackages: ['lumir-internal-design-system']
};
์ปดํฌ๋ํธ
์ฌ์ด๋๋ฐ
์ฌ์ด๋๋ฐ ์ปดํฌ๋ํธ๋ ์ ํ๋ฆฌ์ผ์ด์
์ ์ฃผ์ ๋ค๋น๊ฒ์ด์
์์์
๋๋ค.
๋ฉ๋ด ๊ตฌ์กฐ
๋ฉ๋ด๋ main๊ณผ config ๋ ์น์
์ผ๋ก ๋๋ฉ๋๋ค. ๊ฐ ์น์
์ ์ฌ๋ฌ ์นดํ
๊ณ ๋ฆฌ๋ฅผ ํฌํจํ๋ฉฐ, ๊ฐ ์นดํ
๊ณ ๋ฆฌ๋ ์ฌ๋ฌ ๋ฉ๋ด ์์ดํ
์ ๊ฐ์ง๋๋ค.
๋ฉ๋ด ์์ดํ
ํ์
interface MenuItem {
name: string;
path: string;
icon: string;
}
interface MenuCategory {
category: string;
icon: string;
items: MenuItem[];
}
import {
Sidebar,
SidebarItem,
SidebarLogo,
} from "lumir-internal-design-system";
const favorites: MenuItem[] = [
{
name: '์ ์ฒด ๋ฉด์ ์ผ์ ',
path: '/calendar',
icon: 'FiPieChart',
}
]
const menuItems: {
main: MenuCategory[];
config: MenuCategory[];
} = {main: [
{
category: '๋์ ๋ฉด์ ์ผ์ ',
icon: 'FiPieChart',
items: [
{ name: '์๋ฉดํ๊ฐ', path: '/', icon: 'FiPieChart' },
{ name: '๋๋ฉดํ๊ฐ', path: '/dashboard/employees', icon: 'FiBarChart2' },
{ name: '์
์ฌ ํ 1์ฐจ ํ๊ฐ', path: '/dashboard/employees', icon: 'FiBarChart2' },
{ name: '์
์ฌ ํ 2์ฐจ ํ๊ฐ', path: '/dashboard/employees', icon: 'FiBarChart2' },
]
},
{
category: '์ธ์ฌ ๊ด๋ฆฌ',
icon: 'FiCalendar',
items: [
{ name: '์ง์์ ๊ด๋ฆฌ', path: '/attendance', icon: 'FiClock' },
{ name: '์ฑ์ฉ ํฌ์ง์
๊ด๋ฆฌ', path: '/attendance', icon: 'FiClock' },
{ name: '์ง์์ ์ ๊ท ์ถ๊ฐ', path: '/attendance', icon: 'FiClock' },
]
},
{
category: '๊ด๋ฆฌ์',
icon: 'FiSettings',
items: [
{ name: '์ฌ์ฉ์ ๊ด๋ฆฌ', path: '/management/files', icon: 'FiHome' },
]
},
{
category: '์ธ๋ถ ๋งํฌ',
icon: 'FiSettings',
items: [
{ name: '๋ฃจ๋ฏธ๋ฅด', path: 'https://www.google.com', icon: 'FiHome' },
{ name: '์ฌ๋์ธ', path: 'https://www.google.com', icon: 'FiHome' },
{ name: '์ก์ฝ๋ฆฌ์', path: 'https://www.google.com', icon: 'FiHome' },
{ name: '์ ํ', path: 'https://www.google.com', icon: 'FiHome' },
{ name: 'ํ๋ก๊ทธ๋๋จธ์ค', path: 'https://www.google.com', icon: 'FiHome' },
]
}
],
config: [
{
category: '์ค์ ',
icon: 'FiSettings',
items: [
{ name: '์ผ๋ฐ ์ค์ ', path: '/settings/users', icon: 'FiSettings' },
{ name: '๊ทผํ ์ค์ ', path: '/settings', icon: 'FiTool' },
]
},
]}
<Sidebar currentPath={pathname}>
<SidebarHeader>
<SidebarLogo src={LUMIR_LOGO_1} />
<SidebarToggle />
</SidebarHeader>
<SidebarFavorite
name="์ ์ฒด ๋ฉด์ ์ผ์ "
path="/calendar"
icon="FiPieChart"
LinkComponent={Link}
/>
<SidebarUpperSection>
{/* ๋ฉ๋ด ์นดํ
๊ณ ๋ฆฌ ๋ฐ ์์ดํ
*/}
</SidebarUpperSection>
<SidebarBottomSection>
{/* ์ฌ์ฉ์ ์ ๋ณด ๋ฑ */}
</SidebarBottomSection>
</Sidebar>
์์ธํ ์ฌ์ฉ๋ฒ์ ์ฌ์ด๋๋ฐ ๋ฌธ์๋ฅผ ์ฐธ์กฐํ์ธ์.
์ปค์คํฐ๋ง์ด์ง
์ฌ์ด๋๋ฐ๋ TailwindCSS๋ก ์ปค์คํฐ๋ง์ด์งํ ์ ์์ต๋๋ค. Sidebar ์ปดํฌ๋ํธ์ className์ prop์ผ๋ก ์ ๋ฌํ์ฌ ์ฌ์ฉํ์ธ์.
์ฐธ๊ณ ์ฌํญ
- ์ด ๋์์ธ ์์คํ
์ Next.js์
Link ์ปดํฌ๋ํธ์ ํตํฉ๋์ด ์์ต๋๋ค. ๋ค๋ฅธ ํ๋ ์์ํฌ์์๋ ๋์ํ์ง ์์ต๋๋ค.
- ์์ด์ฝ์
react-icons ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ฅผ ์ฌ์ฉํฉ๋๋ค.
- ์ธ๋ถ ๋งํฌ ์ง์: ๋ฉ๋ด ์์ดํ
์ ์ธ๋ถ URL์ ์ง์ ํ ์ ์์ต๋๋ค.
๋ผ์ด์ ์ค
์ด ํ๋ก์ ํธ๋ ๋ด๋ถ์ฉ์ผ๋ก, ๋ฃจ๋ฏธ๋ฅด์ ์์ ์
๋๋ค. ๋ฌด๋จ ์ฌ์ฉ ๋ฐ ๋ฐฐํฌ๋ฅผ ๊ธ์งํฉ๋๋ค.