// DesignContent.tsx — 디자인 토큰 탭 콘텐츠 (다크/라이트 테마 지원)
import type { DesignTheme } from './designTheme';
// ---------- 06 타이포그래피 스케일 데이터 ----------
interface TypoRow {
size: string;
sampleNode: (theme: DesignTheme) => React.ReactNode;
properties: string;
isData?: boolean;
}
// ---------- 공통 섹션 타이틀 ----------
interface SectionTitleProps {
num: string;
title: string;
sub?: string;
rightNode?: React.ReactNode;
theme: DesignTheme;
}
const SectionTitle = ({ num, title, sub, rightNode, theme }: SectionTitleProps) => (
{num} {title}
{rightNode}
{sub && (
{sub}
)}
);
// ---------- 타이포그래피 행 ----------
const TYPO_ROWS: TypoRow[] = [
{
size: '9px / Meta',
sampleNode: (t) => (
메타정보 Meta info
),
properties: 'Regular / 400',
},
{
size: '10px / Table',
sampleNode: (t) => (
테이블 데이터 Table data
),
properties: 'Medium / 500',
},
{
size: '11px / Action',
sampleNode: (t) => (
입력/버튼 Input/Button text
),
properties: 'Medium / 500',
},
{
size: '13px / Header',
sampleNode: (t) => (
섹션 헤더 Section Header
),
properties: 'Bold / 700',
},
{
size: '15px / Title',
sampleNode: (t) => (
패널 타이틀 Panel Title
),
properties: 'ExtraBold / 800',
},
{
size: 'Data / Mono',
sampleNode: (t) => (
1,234.56 km²
35° 06' 12" N
),
properties: 'JetBrains Mono / 11px',
isData: true,
},
];
// ---------- 컴포넌트 ----------
export interface DesignContentProps {
theme: DesignTheme;
}
export const DesignContent = ({ theme }: DesignContentProps) => {
const t = theme;
const isDark = t.mode === 'dark';
return (
{/* ── 헤더 섹션 ── */}
디자인 토큰
Comprehensive design token reference for the WING-OPS operational interface.
{/* 상태 뱃지 */}
System Active
{/* ── 2컬럼 그리드 ── */}
{/* ── 행 1 좌측: 01 배경색 ── */}
{t.bgTokens.map((item) => (
{/* 색상 스와치 */}
{/* 정보 */}
{item.token}
{item.hex}
{item.desc}
))}
{/* ── 행 1 우측: 02 테두리 색상 + 03 텍스트 색상 ── */}
{/* 02 테두리 색상 */}
{t.borderTokens.map((item) => (
))}
{/* 03 텍스트 색상 */}
{t.textTokens.map((item) => (
{item.token}
{item.sampleText}
{item.desc}
))}
{/* ── 행 2 좌측: 04 강조 색상 ── */}
{t.accentTokens.map((item) => (
{/* 좌측: 색상 원 + 이름/토큰 */}
{item.name}
{item.token} / {item.color}
{/* 우측: 뱃지 */}
{item.badge}
))}
{/* ── 행 2 우측: 05 상태 표시기 ── */}
{t.statusTokens.map((item) => (
{item.label}
{item.hex}
))}
{/* ── 행 3: 06 타이포그래피 스케일 (전체 열 span) ── */}
Noto Sans KR
JetBrains Mono
}
/>
{/* 헤더 행 */}
{(['Size / Role', 'Sample String', 'Properties'] as const).map((col, i) => (
{col}
))}
{/* 데이터 행 */}
{TYPO_ROWS.map((row) => (
{/* Size */}
{row.size}
{/* Sample */}
{row.sampleNode(t)}
{/* Properties */}
{row.properties}
))}
{/* ── 행 4: 07 테두리 곡률 (전체 열 span) ── */}
{/* radius-sm */}
{t.radiusSmLabel}
Small Elements
Applied to tactical buttons, search inputs, and micro-cards for a precise, sharp industrial feel.
{/* radius-md */}
{t.radiusMdLabel}
Structural Panels
Applied to telemetry cards, floating modals, and primary operational panels to soften high-density data.
{/* ── 푸터 ── */}
{/* 좌측 */}
{['Precision Engineering', 'Safety Compliant', 'Optimized v8.42'].map((label) => (
{label}
))}
{/* 우측 */}
Generated for Terminal:
1440x900_PR_MKT
);
};
export default DesignContent;