// ────────────────────────────────────────────────────────────────────
// KARE AW · AdminLayout chrome (Topbar 60 + Sidebar 240)
// ────────────────────────────────────────────────────────────────────
const KareAdminLogo = () => (
);
// Inline SVG icons — tiny, stroked
const icon = (path, size = 16) => (
);
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 */}
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)' }) => (
);
Object.assign(window, { AdminLayout, Topbar, Sidebar, Icons, KareAdminLogo });