사이드바형·헤더형 셸 2종과 페이지 타이틀·여백 밀도·브레이크포인트 표준입니다.
관리자·데이터 도구처럼 상시 내비게이션이 필요한 화면의 기본 셸입니다 — doksam-ui 자체가 이 구조입니다.
앱 셸 패턴
본문은 max-w 로 폭을 제한하고 좌측 정렬합니다.
<div className="flex min-h-screen">
<SiteSidebar /> {/* w-56 shrink-0, border-r border-border bg-card px-3 py-4 */}
<main className="flex-1 px-6 py-8">
{/* 페이지 콘텐츠 — 텍스트 위주 페이지는 max-w-3xl, 대시보드류는 max-w-6xl/w-full */}
{children}
</main>
</div>메뉴가 적은 단순 서비스·모바일 우선 화면에 쓰는 셸 — 상단 헤더 + 중앙 정렬 본문입니다.
중앙 정렬 콘텐츠
<div className="flex min-h-screen flex-col">
<header className="flex h-14 items-center justify-between border-b border-border bg-card px-4">
<span className="text-sm font-semibold tracking-tight">서비스명</span>
{/* 메뉴 · 사용자 액션 */}
</header>
<main className="flex-1 px-4 py-6">
<div className="mx-auto flex max-w-[1300px] flex-col gap-8">
{children}
</div>
</main>
</div>셸 종류와 무관하게 모든 페이지 상단에 반복되는 타이틀 3요소 구조입니다.
text-xl~2xl 크기, 대시보드·목록 등 정보 밀도가 높은 페이지.
text-xl 크기, 중앙 정렬 본문의 단순 서비스 페이지.
<section className="flex flex-col gap-3">
<Badge variant="secondary" className="w-fit">{sectionLabel}</Badge>
<h1 className="text-xl font-semibold tracking-tight md:text-2xl">{title}</h1>
<p className="max-w-prose text-sm text-muted-foreground">{description}</p>
</section>섹션 간격과 카드 내부 간격에 쓰는 gap 토큰 4단계입니다 — 임의의 gap 값을 새로 만들지 않는다.
// 카드 내부
<CardContent className="flex flex-col gap-4"> {/* 좁은 간격: 라벨-값 */}
<CardContent className="flex flex-col gap-6"> {/* 기본 간격 */}
// 페이지 섹션 사이
<div className="flex flex-col gap-8"> {/* 기본 */}
<div className="flex flex-col gap-10"> {/* 섹션이 많은 페이지 */}셸·그리드가 열을 바꾸는 기준점을 sm/md/lg/xl 4단계로 고정합니다.
| 브레이크포인트 | 기준폭 | 용도 |
|---|---|---|
| sm | 640px | 폼 필드 1열 → 2열 |
| md | 768px | 폼 필드 2열 → 4열, 요약 카드 3열 → 5열 |
| lg | 1024px | 사이드바형 셸에서 사이드바 상시 노출, 차트 1열 → 2열 |
| xl | 1280px | 헤더형 셸 본문이 max-w-[1300px]에 도달 |
<div className="grid grid-cols-2 gap-3 md:grid-cols-4"> {/* 폼 필드 */}
<div className="grid grid-cols-3 gap-1.5 md:grid-cols-5"> {/* 요약 카드 */}
<div className="grid grid-cols-1 gap-2 lg:grid-cols-2"> {/* 차트 · 사이드바 노출 */}
<div className="mx-auto max-w-[1300px]"> {/* 헤더형 셸 본문, xl 근방에서 폭 도달 */}