// ──────────────────────────────────────────────────────────────────── // KARE AW · AdminLayout chrome (Topbar 60 + Sidebar 240) // ──────────────────────────────────────────────────────────────────── const KareAdminLogo = () => (
K
KARE
Admin
); // Inline SVG icons — tiny, stroked const icon = (path, size = 16) => ( {path} ); const Icons = { dashboard: icon(<>), users: icon(<>), product: icon(<>), voucher: icon(<>), settlement: icon(<>), channel: icon(<>), booking: icon(<>), physical: icon(<>), support: icon(<>), promo: icon(<>), settings: icon(<>), ops: icon(<>), bell: icon(<>), chevron: icon(<>, 14), search: icon(<>, 14), arrowUp: icon(<>, 12), arrowDown: icon(<>, 12), refresh: icon(<>, 14), external: icon(<>, 12), warn: icon(<>, 14), err: icon(<>, 14), info: icon(<>, 14), }; const SIDEBAR_GROUPS = [ { id: 'dashboard', label: '대시보드', icon: 'dashboard', href: 'AW-002' }, { id: 'member', label: '회원·파트너 관리', icon: 'users', href: 'AW-005' }, { id: 'product', label: '상품 관리', icon: 'product', href: 'AW-010' }, { id: 'voucher', label: '바우처 관리', icon: 'voucher', href: 'AW-015' }, { id: 'settle', label: '정산 관리', icon: 'settlement', href: 'AW-018' }, { id: 'channel', label: '채널 관리', icon: 'channel', href: 'AW-022' }, { id: 'booking', label: '예약 관리', icon: 'booking', href: 'AW-025' }, { id: 'physical', label: '실물 상품', icon: 'physical', href: 'AW-028' }, { id: 'support', label: '고객 지원', icon: 'support', href: 'AW-032' }, { id: 'promo', label: '프로모션', icon: 'promo', href: 'AW-034' }, { id: 'system', label: '시스템 설정', icon: 'settings', href: 'AW-036' }, { id: 'ops', label: '운영 도구', icon: 'ops', href: 'AW-038' }, ]; const Topbar = ({ adminEmail = 'ops.kim@kare.co.kr' }) => (
{/* center search */}
{Icons.search} 검색 · Voucher / Partner / Booking ID…
K
{/* right: email / bell / profile */}
{Icons.bell}
OK
{adminEmail}
{Icons.chevron}
); const Sidebar = ({ activeId = 'dashboard' }) => (
{SIDEBAR_GROUPS.map(g => { const active = g.id === activeId; return (
{active && (
)}
{Icons[g.icon]}
{g.label}
{g.id === 'support' && (
3
)}
); })}
env · prod-kr
build · 2026.04.24-a7f3
status · ● operational
); const AdminLayout = ({ activeId, children, pageBg = 'var(--n-100)' }) => (
{children}
); Object.assign(window, { AdminLayout, Topbar, Sidebar, Icons, KareAdminLogo });