Skip to content

YumYum 디자인 시스템 — 스페이싱 & 라디우스 토큰 v2

냠냠픽업 디자인 시스템 Spacing & Radius 가이드 작성일: 2026-05-13 버전: v2.0


1. 디자인 원칙

1.1 핵심 컨셉

  • 4px Base Unit — 모든 spacing이 4의 배수 (iOS HIG / Material Design 표준)
  • 모바일 최적화 — 미세 조정 가능한 단위로 정밀한 표현
  • 2단계 토큰 구조 — Primitives + Semantic (의미별)
  • 친근하게 둥근 모서리 — radius-sm(8px)이 기본

1.2 왜 4px Base인가

  • iOS와 Material Design 양쪽 표준
  • 8의 배수도 모두 포함 (4, 8, 12, 16, 20, 24...)
  • 모바일에서 미세 조정이 필요한 순간(아이콘-텍스트 4px) 표현 가능
  • 디자이너/개발자 모두에게 익숙한 단위

2. Spacing Scale (Primitives)

4의 배수로 구성된 11단계.

TokenValue비고
space-00px간격 없음 (reset)
space-14px최소 단위
space-28px
space-312px
space-416px기본 (대부분의 padding/gap)
space-520px
space-624px
space-832px
space-1040px
space-1248px
space-1664px페이지 레벨

숫자가 4의 배수라는 점이 핵심. space-4 = 16px (4×4), space-8 = 32px (4×8).

작은 값은 촘촘하게(1~6), 큰 값은 듬성듬성(8, 10, 12, 16). 큰 사이즈에서는 점프가 커야 시각적으로 의미 있는 차이가 나오기 때문.


3. 의미별 토큰 (Semantic Tokens)

3.1 Generic Spacing — padding, gap, margin 통합

TokenPrimitiveValue주 용도
space-xsspace-14px아이콘-텍스트, 매우 가까운 요소
space-smspace-28px버튼 안 padding, 태그 사이
space-mdspace-312px카드 안 요소 간
space-lgspace-416px기본 카드 padding, 리스트 gap
space-xlspace-624px모달 padding, 섹션 내부
space-2xlspace-832px섹션 사이
space-3xlspace-1248pxHero 위아래

3.2 Layout Spacing — 페이지/섹션 레벨 특수 토큰

TokenValue용도
layout-page-x16px모바일 페이지 좌우 padding (iOS/Android 표준)
layout-section-gap32px섹션 사이 간격
layout-hero-y48pxHero 영역 위아래 여백

4. 컴포넌트별 적용 가이드

4.1 Button

SizePaddingHeight용도
Small6/1232px인라인 액션, 작은 영역
Medium ⭐10/1640px일반 버튼 (기본)
Large14/2048px메인 CTA (주문하기)

4.2 Input

  • padding: 10/12 (y/x)
  • height: 44px (터치 영역 충분히 확보)
  • label 아래 gap: space-sm (8px)

4.3 Card

  • padding: space-lg (16px)
  • 내부 요소 gap: space-md (12px)
  • 아바타-텍스트 gap: space-md (12px)
  • 카드끼리 gap: space-md (12px)

4.4 List Item

  • padding: 12/16 (y/x)
  • 아이콘-텍스트 gap: space-md (12px)
  • height: 최소 44px (터치 영역)

4.5 Badge & Tag

  • padding: 3/8 (y/x) — 컴팩트
  • badge 사이 gap: 6px (space-xs와 sm 사이)

4.6 Modal / Bottom Sheet

  • padding: space-xl (24px)
  • 제목-본문 gap: space-sm (8px)
  • 본문-버튼 gap: space-lg (16px)

4.7 Section (페이지 구조)

  • 페이지 좌우: layout-page-x (16px)
  • 제목-콘텐츠 gap: space-lg (16px)
  • 섹션 간 간격: layout-section-gap (32px)

4.8 터치 영역의 황금 기준

누를 수 있는 모든 요소(버튼, 입력창, 리스트 아이템)는 height 44px 이상이 좋음. iOS Human Interface Guidelines 표준. 32px Small 버튼은 인라인 액션 같은 특별한 경우에만 사용.


5. Radius (모서리 둥글기)

5.1 Radius Scale — 6단계

TokenValue주 용도
radius-xs4px작은 뱃지, 태그, 라벨
radius-sm8px기본 버튼, 입력창, 작은 카드
radius-md12px카드, 일반 컨테이너
radius-lg16px이벤트 배너 (큰 표면), 약관동의류 — radius-xl로 대체되어 가는 추세
radius-xl24pxBottom Sheet 상단 / Popup 4 corners / Hero 이미지
radius-full9999px아바타, 원형 버튼, Pill 태그

5.2 Radius 일관성 원칙

중첩 시 외부 > 내부 카드(12) 안에 버튼(8)이 들어가는 식으로 외부가 더 둥글게. 반대로 가면 어색함.

한 화면에 3가지 이내 너무 많은 radius가 섞이면 산만해 보임. 보통 카드용 + 버튼용 + 원형 정도면 충분.

Pill 태그는 카테고리 라벨에만radius-full을 너무 많이 쓰면 정돈된 느낌이 사라짐. 카테고리 라벨, 필터 칩 정도에만.

5.3 컴포넌트별 라디우스 위계 ⭐ (2026-05-18 표준화)

PWA + Figma 전체 통일된 4단계 라디우스 위계.

표면 종류TokenValue적용 컴포넌트
CTA Buttonradius-sm8px확인 버튼, 더보기, 현위치 설정, Yellow CTA 전체
Cardradius-md12pxStoreCard, 카드형 UI
Bottom Sheet / Popupradius-xl24pxLocationBottomSheet, popup/more/store, 모든 모달 표면
Pill / Avatarradius-full9999pxLocationHeader pill, 더보기 pill, 카테고리 라벨, BottomTabBar 활성 표시

핵심 원칙: 시각 위계 = CTA(8) < Card(12) < Sheet(24) < Pill(full)

Why: 표면이 클수록 라디우스가 커야 자연스러움. 작은 액션(버튼)은 명확한 코너로 클릭성 강조, 큰 표면(시트/팝업)은 부드럽게 페이지에서 떠 있는 느낌. Pill은 표면 크기와 무관하게 "이 요소는 인터랙티브"라는 시각 신호로 사용.

적용 사례 (2026-05-18 일괄 sync):

  • 코드: tailwind.config.ts의 rounded-sm/md/xl/full 그대로 사용. 임의 rounded-[6px] 같은 hack 금지.
  • Figma: popup 마스터 5개 (Popup_2 1-line/2-line/NO-text 등) cornerRadius 12→24 일괄 변경. Bottom sheet 19개 topL/topR 16→24 일괄 변경.

6. CSS Variables 구현 예시

css
:root {
  /* Spacing — Primitives */
  --space-0: 0;
  --space-1: 4px;
  --space-2: 8px;
  --space-3: 12px;
  --space-4: 16px;
  --space-5: 20px;
  --space-6: 24px;
  --space-8: 32px;
  --space-10: 40px;
  --space-12: 48px;
  --space-16: 64px;

  /* Spacing — Semantic */
  --space-xs: var(--space-1);
  --space-sm: var(--space-2);
  --space-md: var(--space-3);
  --space-lg: var(--space-4);
  --space-xl: var(--space-6);
  --space-2xl: var(--space-8);
  --space-3xl: var(--space-12);

  /* Layout */
  --layout-page-x: 16px;
  --layout-section-gap: 32px;
  --layout-hero-y: 48px;

  /* Radius */
  --radius-xs: 4px;
  --radius-sm: 8px;
  --radius-md: 12px;
  --radius-lg: 16px;
  --radius-xl: 24px;
  --radius-full: 9999px;
}

/* 컴포넌트 적용 예시 */
.button-medium {
  padding: 10px 16px;
  height: 40px;
  border-radius: var(--radius-sm);
}

.button-large {
  padding: 14px 20px;
  height: 48px;
  border-radius: var(--radius-sm);
}

.input {
  padding: 10px 12px;
  height: 44px;
  border-radius: var(--radius-sm);
}

.card {
  padding: var(--space-lg);
  border-radius: var(--radius-md);
  gap: var(--space-md);
}

.list-item {
  padding: 12px 16px;
  min-height: 44px;
  gap: var(--space-md);
}

.modal {
  padding: var(--space-xl);
  border-radius: var(--radius-lg);
}

.page {
  padding-left: var(--layout-page-x);
  padding-right: var(--layout-page-x);
}

.section {
  margin-bottom: var(--layout-section-gap);
}

7. Figma 적용 방법

7.1 Variables 구조 권장

Yumyum/
├── 01-Primitives/
│   ├── Spacing/
│   │   ├── space-0 (0)
│   │   ├── space-1 (4)
│   │   ├── space-2 (8)
│   │   ├── ... (~ space-16)
│   └── Radius/
│       ├── radius-xs (4)
│       ├── radius-sm (8)
│       ├── ... (~ radius-full)

└── 02-Semantic/
    ├── Spacing/
    │   ├── space-xs ~ space-3xl
    │   └── (alias to Primitives)
    ├── Layout/
    │   ├── layout-page-x
    │   ├── layout-section-gap
    │   └── layout-hero-y
    └── (Radius는 Primitives만으로 충분)

7.2 Auto Layout 활용

Figma의 Auto Layout에서 spacing 변수를 직접 적용 가능:

  • Gap between itemsspace-md 같은 변수
  • Paddingspace-lg 같은 변수

수동 입력 대신 변수로 연결하면, 디자인 시스템 변경 시 일괄 업데이트됨.


8. 기존 vs 신규 비교

항목기존v2 (신규)
Spacing Scale정의 없음11단계 Primitives (4px Base)
의미별 토큰없음7개 Generic + 3개 Layout
컴포넌트 spacing즉흥적컴포넌트별 명시적 가이드
Radius정의 없음6단계 (4 / 8 / 12 / 16 / 24 / full)
터치 영역 기준없음44px 최소 기준 명시
중첩 원칙없음외부 > 내부 명시

9. 다음 단계

스페이싱과 라디우스가 잡혔으니, 디자인 시스템의 핵심 토큰(Color + Typography + Spacing + Radius)이 모두 완성되었음. 다음으로 작업할 것:

  • [ ] Elevation/Shadow — 깊이감 표현 (0~4단계)
  • [ ] Components — Button, Input, Card, Modal, Badge, Toast (Color + Typography + Spacing 조합으로 정의)
  • [ ] Stratis UI Icons — Stratis UI Icons 사이즈 가이드 (16 / 20 / 24)
  • [ ] Motion — 애니메이션 duration, easing 정의
  • [ ] Grid System — 모바일 4-column 그리드 (필요 시)

이 문서는 살아있는 문서입니다. 디자인 시스템이 발전하면서 함께 업데이트하세요.

냠냠픽업 — 지속가능한 중개수수료 2% 음식 픽업 서비스