00 · Intro

디자인 시스템 v1.2

editorial은 교정·교열·윤문을 제공하는 AI 도서편집자 서비스입니다.

컴포넌트 인벤토리 — 우선순위

랜딩(/)과 로그인(/login)을 그릴 때 즉시 필요한 컴포넌트를 P0으로, 인증 후 화면(/library, /documents/:id)에 필요한 컴포넌트를 P1로 분류합니다.

tier component 화면 본 문서 수록
P0Button (light + dark, 3 sizes, icon, loading, group)/, /login, 전 화면v1.1
P0Text input · Password · Search/login, 검색v1.1
P0Field (label + helper + error)/login, 설정v1.1
P0Checkbox · Radio · Toggle설정, 필터, 옵션v1.1
P0Top navigation (미인증)/, /login, /about, /pricingv1.1
P0Sidebar (인증 후)/library, /documents/:idv1.1
P0Tabs · Breadcrumb · Pagination/library, /settingsv1.1
P0File drop zone/, 업로드 모달v1.2 예정
P0Modal (사이즈, 헤더·본문·푸터 구조)로그인 모달, 업로드 모달, 공유 모달v1.2
P0Social login button (kakao·naver·google)/login, 로그인 모달v1.2 예정
P1Toast · Inline alert전 화면v1.2 예정
P1Tooltip · Popover전 화면v1.2 예정
P1Dropdown menu/library, 보고서v1.2 예정
P1Badge · Tag · Filter chip · Status indicator · Format pill/library, 보고서, 랜딩v1.2 예정
P1Table/libraryv1.2 예정
P1Card · Divider · 보고서 항목 카드/documents/:idv1.2 예정
P1Progress · Skeleton · Empty state업로드, 로딩, /libraryv1.2 예정
P2Patterns — 로그인 모달, 업로드 카드, 보고서 항목플로우 조립v1.3 예정
v1.1 범위본 문서는 인벤토리의 상단 — Foundations + P0 컴포넌트 중 Button·Form·Choice·Navigation·Tabs/Breadcrumb/Pagination — 까지를 담습니다. 이후 v1.2에서 Overlay/Feedback/Display, v1.3에서 Patterns를 이어 작업합니다.

01 · Foundations

Color

플레이북 §3의 코어 팔레트를 토큰 단위로 시각화하고, 다크/라이트 양 테마의 surface 계층을 v1.1에서 신설합니다.

코어 팔레트

core
Press Black#111111인쇄기가 종이에 남긴 먹
Warm Black#1F1E1C잉크가 마른 온기
Ink Black#212122활자가 만드는 명도의 경계
Tiger Orange#F96815BOOKEND CI · 인터랙션
Tiger Red#8B0029시맨틱 알림 · 그라데이션 경유
Ivory Paper#F7F0DF미색지 노이즈 전용

Light 테마 — Surface · Border · Text

light

앱 진입 후(/library, /documents 등)에 적용. 미색지 언더톤을 가진 웜 그레이.

tokenhex역할
surface/canvas#FFFFFF메인 콘텐츠 배경
surface/raised#FAFAF8사이드바, 카드, 호버 행
surface/sunken#F2F1EE인풋 비활성, 테이블 zebra
border/default#E5E4E0구분선, 인풋 보더
border/strong · text/disabled#D1D0CC비활성, 플레이스홀더
text/tertiary#A8A6A0아이콘 기본, 캡션
text/secondary#6F6D67본문 보조
text/primary#111111본문, 헤딩, CTA

Dark 테마 — Surface · Border · Text

dark

퍼블릭(/, /about 일부, /pricing 일부, /brand, /login)에 적용. Press Black 위의 elevation은 알파 대신 별도 hex 토큰으로 정의 — 인쇄잉크의 누적 농도 비유.

tokenhex / alpha역할
surface/page#111111페이지 배경 (Press Black)
surface/raised-1#181715카드, 인풋 배경
surface/raised-2#1F1E1C모달, 드롭다운 (Warm Black)
surface/raised-3#26241F호버, 활성
border/defaultrgba(255,255,255,.12)구분선, 카드 보더
border/strongrgba(255,255,255,.22)포커스 외 강조 보더
text/primary#FFFFFF헤딩, 강조
text/secondaryrgba(255,255,255,.7)본문
text/tertiaryrgba(255,255,255,.4)캡션, 메타

시맨틱 컬러

semantic

익숙한 UI 컨벤션을 채택. warning·destructive는 vivid red, success는 채도 높은 green. Tiger Red는 브랜드 팔레트에만 유지하고 UI 시맨틱 알림에서는 분리합니다.

rolelightdark적용
interaction#F96815#F96815포커스 링, 호버 전환, 진행 상태
warning / destructive#DC2626#F87171에러 메시지, 폼 검증 실패, 삭제 액션
success#16A34A#4ADE80완료, 승인, 저장됨
info / neutral#2C2A26#FFFFFF중립 안내 — 별도 색 도입하지 않음. 본문색으로 처리

02 · Foundations

Typography

Pretendard Variable 단일 스택. Magnolia Script는 로고와 인라인 editorial 표기에 한정.

스케일

scale

4의 배수 + 15px 예외. rem base 62.5% (1rem = 10px).

specimen
display
교정·교열·윤문 48px · 800 bold · 1.1 lh · -0.02em ls
title
원고를 받습니다 32px · 800 bold · 1.3 lh · -0.01em ls
heading
교정 보고서 24px · 650 mid · 1.4 lh
subtitle
제안 253건 20px · 650 mid · 1.5 lh
body
합쇼체 기반 서술. 한 문장 한 메시지. 능동태 우선. 이중 부정 금지. 15px · 500 regular · 1.7 lh
caption
2026.05.23 · 생성됨 12px · 500 regular · 1.6 lh · +0.02em ls
확정15px 본문 유지. 16px 시스템이 만드는 "늙은 서비스" 인상을 피하고 밀도 키워드와 부합. 모바일은 rem 스케일 56.25%로 환산 시 13.5px까지 내려가지만 line-height 1.7과 웨이트 500이 가독성을 보조.

웨이트

weight

다크 배경에서 400은 가늘게 보이므로 500부터 시작. Pretendard Variable 환경 보장.

weight
regular 500 편집자의 옆에 앉아 있습니다. mid 650 편집자의 옆에 앉아 있습니다. bold 800 편집자의 옆에 앉아 있습니다.
note650은 비표준 웨이트입니다. Variable 폰트가 로드되지 않는 fallback 환경에서는 700으로 라운딩됩니다. 600 표준 매핑으로 변경 검토 가능 — 단 현재 톤은 650의 두께가 만드는 "절제된 단단함"에 의존하므로 v1.1은 유지.

Magnolia Script — 워드마크 인라인

brand type

본 문서는 Magnolia Script 라이선스 제약으로 Sacramento를 fallback으로 표시합니다. 실제 배포에서는 Magnolia Script Regular 우선.

inline

editorial은 설득하지 않습니다. 대신 설명합니다.

평문 안에서 1.25em 사이즈 보정, letter-spacing -0.02em, 항상 소문자.

03 · Foundations

Spacing

베이스 유닛 8px. 미세 유닛 4px은 아이콘 패딩과 인라인 간격에 한정.

scale
xs4 / 0.4rem
sm8 / 0.8rem
md16 / 1.6rem
lg24 / 2.4rem
xl32 / 3.2rem
2xl48 / 4.8rem
3xl64 / 6.4rem

컴포넌트 패딩 규칙

componenthorizontalverticalgap
button sm12px6px
button md16px8px
button lg20px8px
input12px
card24px24px16px (heading→body)
modal32px32px24px (header→body→footer)
table cell16px14px
sidebar nav-item12px10px12px (icon→label)
toast16px14px12px

04 · Foundations

Radius

v1 플레이북에 미정의. 활자 인쇄의 직각 비유를 살려 작은 라운딩만 허용.

scale
none · 0
xs · 2px
sm · 4px
md · 6px
lg · 10px
pill · 999
token적용
none테이블 셀, 풀블리드 카드, 인쇄 영역
xs · 2체크박스, 아이콘 백그라운드
sm · 4버튼, 인풋, 토스트, 카드, 모달 — 표준
md · 6업로드 카드 등 강조 컨테이너
lg · 10이미지 컨테이너, 일러스트 프레임
pill토글, 태그, 칩, 배지

05 · Foundations

Motion

UI 트랜지션 + 히어로 회전부. 한 화면에 다이내믹 요소는 하나만.

tokendurationeasing적용
fast120msease-out버튼·인풋 hover/focus, 작은 색 변화
med200msease-out드롭다운 열기, 토스트 입장
slow320msease-in-out모달, 탭 전환
ambient16–20sease-in-out그라데이션 블롭 드리프트 (플레이북 §2.3)
원칙한 화면에 다이내믹 요소는 하나만(플레이북 §5.6). UI 트랜지션은 항상 짧고 비독립적 — 사용자의 액션에 즉시 반응. 자동 재생되는 모션은 그라데이션과 히어로 회전부에 한정.

텍스트 트랜지션 — 히어로 회전부

hero rotator

랜딩 히어로의 회전부 모션. 새 문장이 위에서 내려와 자리를 잡고, 기존 문장은 아래로 사라집니다. 문장이 자리를 남고 갈아끼워지는 구조.

live · descending
교정·교열·윤문, 미묘한 표현 하나까지 사소한 문장 하나까지 원고 전체를 한번에
token설명
hold3000ms한 문장이 정지된 채 머무르는 시간
transition300ms새 문장 in (translateY -100→ 0) · 기존 문장 out (0 → +100) 동시 진행
directiontop ↓ middle ↓ bottom새 문장은 위에서 진입, 기존 문장은 아래로 퇴장
opacity0 ↔ 1translateY와 동기 적용. 순수 슬라이드 아닌 페이드 병행
easingcubic-bezier(.2,.7,.2,1)ease-out — 활자가 멈춰서는 무게감
cycle per phrase3300mshold 3000 + transition 300
full cycle (3문)9.9s3 phrases × 3.3s
reduced motion정적prefers-reduced-motion 감지 시 첫 문장만 노출, 회전 중단
v1 → v2v1 정적: 새로고침마다 3문 중 1문 랜덤 선택, 애니메이션 없음. v2 회전: 상기 스펙. 그라데이션 스냅샷이 정적이므로 텍스트 회전이 단일 다이내믹 요소.
문안 확정3문자. 마침표 없음. "편집자의 첫번째 시선"은 핸드오프 §4.4에서 삭제.

06 · Foundations

Icons

Remix Icon 채택. 2px 스트로크, 스퀘어 코너의 line 버전을 기본으로 하고, fill은 활성·선택 상태에 한정.

소스 · 사이즈

source · size

오픈소스 셋 — Apache 2.0. CDN 또는 SVG 직접 임베드 모두 허용. 본 문서는 webfont 방식으로 로드.

size
24 · 기본
20 · 캡션급
16 · 인라인
size적용
24 px버튼 내, 사이드바, 일반 액션 — 기본
20 px인풋 affix, 테이블 행 액션, 캡션과 동행
16 px본문 인라인, 메타 정보, 작은 배지

Line vs Fill

variant

Line 기본, Fill은 선택됨·on·활성 상태에 한정. 같은 컴포넌트 안에서 line/fill 혼용 금지.

line · fill
line · 기본
fill · 활성
line · 일반
fill · 알림

컬러 · 상태

color

아이콘은 텍스트와 동행 시 텍스트와 같은 색을 따릅니다. 단독 사용 시 컨텍스트별 컬러 매핑.

light
primary
#111 — 본문색
secondary
#6F6D67 — 본문 보조
tertiary
#A8A6A0 — 캡션, affix
interaction
Tiger Orange — 활성, 호버
destructive
#DC2626 — 삭제, 경고
success
#16A34A — 승인, 완료
disabled
#D1D0CC — 비활성
dark
primary
#FFF
secondary
rgba(255,255,255,.7)
tertiary
rgba(255,255,255,.4)
interaction
Tiger Orange

자주 쓰이는 아이콘

common

editorial 시스템에서 반복 등장하는 아이콘 모음. 같은 의미에는 같은 아이콘만.

common
upload-line업로드
folder-2-line라이브러리
file-text-line원고·문서
bank-card-line결제·플랜
settings-3-line설정
chat-3-line문의
logout-circle-r로그아웃
search-line검색
filter-3-line필터
notification-3알림
download-line받기
share-line공유
bookmark-line북마크
check-line승인
close-line무시·닫기
more-2-fill더보기
eye-line비밀번호 보기
edit-line편집
delete-bin-line삭제
arrow-left-s이전
arrow-right-s다음
arrow-down-s펼치기
error-warning경고·에러
information-line정보

교정 전용 아이콘 — TBD

custom

교정 부호(가운뎃점, 띄어쓰기 표시 등) 전용 아이콘이 필요한 경우 Remix와 동일 스펙(2px 스트로크, 스퀘어 코너, 24×24 그리드)으로 커스텀 제작. 보고서 뷰의 항목 카드와 다운로드된 주석본에서 사용.

사용 규칙

dodon't
텍스트와 동행 시 같은 색·같은 베이스라인아이콘만 별도 색 (강조하려면 라벨도 동일 색)
line/fill 한 화면 내 한 가지로 통일같은 컴포넌트 안에 line + fill 혼용
중요 액션은 라벨과 함께아이콘만으로 의미 전달 (접근성 ↓)
버튼 내 아이콘은 라벨 앞에같은 버튼군에서 정렬 방향이 일관되지 않음
같은 의미에는 같은 아이콘만upload/cloud-upload 등 동의 아이콘 병행

07 · Components

Buttons

4티어 × 3사이즈 × 라이트·다크 변형. primary 호버 시 오렌지 전환은 "블랙이 반응하면 오렌지가 드러난다"는 다크 랜딩 내러티브와 일관.

티어 (light theme)

tier · light
light
primary
secondary
tertiary
ghost
state
default hover disabled loading

티어 (dark theme)

tier · dark
dark
primary
secondary
tertiary
ghost

사이즈

size
size
sm · 32
md · 40 (기본)
lg · 48
sizeheightpadding-xfont주 사용처
sm321213/500테이블 행 액션, 필터 칩 옆
md401614/650폼, 모달, 일반 액션 (기본)
lg482015/650랜딩 CTA, 결제 CTA

아이콘 · 버튼 그룹

icon · group
variants
segmented (filter)

사용 규칙

dodon't
한 화면 안 primary는 1개 — 가장 중요한 액션 1개에만같은 카드/모달 안 primary 2개 이상
destructive는 secondary + Tiger Red text 조합destructive에 primary fill 적용 (Tiger Red가 한 화면에서 두 의미를 가짐)
버튼 라벨은 개조식 동사 종결 — "업로드", "분석 시작"~하기, ~해보세요 — 해요체 금지
로딩 시 라벨 교체 — "분석 중", "저장 중"스피너만 표시 + 라벨 유지 (사용자가 무엇이 진행 중인지 모름)

08 · Components

Form

Field는 label + control + helper의 3단 구조. 에러는 helper 영역에 인라인 표시 — 별도 토스트로 분리하지 않습니다.

Text Input (light)

input · light
states
default
이메일업무용 이메일 권장
hover
이메일
focus
이메일
filled
이메일
error
이메일이메일 형식이 아닙니다
disabled
이메일

Text Input (dark)

input · dark
states
default
이메일
focus
이메일
filled
이메일
error
이메일이메일 형식이 아닙니다

Password · Search · Affix

variants
variants
password
비밀번호
search
원고 검색
prefix label
서브 도메인
editorial.kr/

Textarea · Select

complex
complex
요청 메모 선택 입력 · 최대 500자
파일 포맷 원본 포맷 그대로 다운로드됩니다

UX 라이팅 규칙 (필드 카피)

slotrule예시
label명사 종결이메일 / 비밀번호 / 요청 메모
placeholder형식 예시 또는 동사 종결name@example.com / 원고 제목으로 검색
helper합쇼체 또는 개조식업무용 이메일 권장 / 선택 입력
error개조식 — 무엇이 문제인지 명시이메일 형식이 아닙니다 / 비밀번호 8자 이상
tone"~해주세요" 시오체 금지. "올바른 이메일을 입력해주세요" → "이메일 형식이 아닙니다". 청자(편집자) 앞에서 행동을 지시하지 않고 상태를 알립니다.

09 · Components

Choice — Check · Radio · Toggle

선택 UI 3종. Checkbox·Radio는 라이트에서 Press Black, 다크에서 Tiger Orange로 활성색이 분기합니다.

light
checkbox
radio
toggle
dark
checkbox
radio
toggle

사용 규칙

component사용금지
checkbox다중 선택, on/off 동의2개 옵션 중 택1 (radio 사용)
radio2~5개 옵션 중 단일 선택, 옵션이 한 화면에 다 보임6개 이상 (select 사용)
toggle즉시 적용되는 설정 — 저장 버튼 없음폼 안 — 제출 시 적용되는 옵션 (checkbox 사용)

11 · Components

Tabs · Breadcrumb · Pagination

화면 내 내비게이션 3종. 설정 페이지, 보고서 필터, 라이브러리 페이지네이션에 각각 사용.

Tabs

in-page nav
light

tab panel

dark

tab panel

spec라이트는 언더라인 Press Black + 라벨 weight 650. 다크는 언더라인 Tiger Orange로 분기 (다크에서 검정 언더라인은 보이지 않음). 라벨 옆 카운트는 같은 weight, 같은 색.

Breadcrumb

crumbs
light
라이브러리 / 2026 / 05 / 미공개 단행본 — 김작가 원고
spec구분자는 슬래시(/). 마지막 항목은 링크 아님, 현재 위치. 사용처: /documents/:id 상단 (라이브러리로 돌아가는 동선). /library는 단일 뎁스이므로 breadcrumb 미사용.

Pagination

page nav
light
spec10건/페이지 (프로덕트 §11.3). 활성 페이지는 Press Black fill + White text. 첫 페이지에서 prev disabled, 마지막에서 next disabled. 페이지 수 ≤ 7이면 ellipsis 미사용.

14 · Components

Tooltip

아이콘 버튼처럼 라벨이 생략된 요소에 부가 설명을 붙입니다. 한 줄 짧은 텍스트만, 인터랙티브 요소 없음.

방향

position
positions
⌘K · 검색
top
필터
bottom
공유
left
교정 근거 보기
right

스펙 · 행동

항목
배경Press Black #111111
텍스트White, 12/500
padding6 · 9
radius2 (xs)
arrow8 × 8 정사각형 45° 회전
offset트리거에서 8px
delay in300ms
delay out0ms
트리거hover, focus (모바일에서 미노출)
위치 자동 보정뷰포트 가장자리에서 반대 방향으로 전환
최대 길이한 줄. 두 줄 이상 — popover로 승격
don't인터랙티브 요소 안 (링크, 버튼). 모바일에서 호버 없음 — aria-label로 대체 필요. 핵심 정보를 툴팁에만 의존하지 않음.

15 · Components

Toast · Inline alert

시스템 피드백 두 종. Toast는 일시적·위치 외부(우상단), Alert는 페이지 안 인라인. 둘 다 무드는 절제 — 깜빡임·진동 없음.

Toast

temporary

우상단에 고정, 자동 dismiss. 아이콘 + 메시지 + 액션(선택) + 닫기 버튼.

variants

보고서를 다운로드 폴더에 저장했습니다.

네트워크 연결이 끊겼습니다. 저장된 진행 사항은 보존됩니다.

분석이 완료되었습니다. 비용을 확인해주세요.

북마크 위치를 저장했습니다.

variantauto-dismiss적용
success3s완료, 저장됨
info4s알림, 안내
warning수동 dismiss실패, 에러, 주의
neutral (기본)3s일반 피드백
positiontop: 24, right: 24 (데스크톱) / top: 12 (모바일)
스택최대 3개. 4번째 발생 시 가장 오래된 것 dismiss
모션입장 slide-in 우→좌 200ms, 퇴장 fade 160ms
액션 슬롯1개 — "다시 시도", "열기" 등 동사 종결

Inline Alert

persistent

페이지 안에 머무는 알림. 폼 검증, 상황 안내, 결제 누락 등. 사용자가 직접 닫기 전까지 표시.

variants
저장됨변경 사항을 모두 반영했습니다.
이메일 형식이 아닙니다예: name@example.com 형식으로 입력해주세요.
구독이 7일 후 만료됩니다플랜 변경 또는 갱신을 진행해주세요.
북마크 위치마지막으로 본 항목 #128. 이어보기를 누르면 해당 위치로 이동합니다.
tone제목(strong)은 결론. 본문은 한 줄 보조 설명. "방법을 알려드릴게요" 같은 친절 보장 어휘 없이 구조로 친절 — 무엇이 일어났고 무엇을 하면 되는지만.

16 · Components

Progress · Skeleton · Empty

로딩과 비어있음의 세 표현. Progress(진행률 있음), Skeleton(레이아웃 유지하며 대기), Empty(데이터 없음).

Progress

progress
determinate · indeterminate
교정 진행62%
구독 사용량31,840 / 50,000 자
분석 중
variant적용
determinate · neutral구독 사용량 등 통계
determinate · orange능동적 진행 — 교정, 업로드
indeterminate시간 예측 불가 — "분석 중"
height6px (얇음) / 4px (인라인 셀)
radiuspill

Skeleton

layout-preserving load

레이아웃을 유지하면서 콘텐츠가 도착하기를 기다림. 스피너 대신 사용 — 사용자가 화면 구조를 미리 인지.

card skeleton
variantshape
text1em 높이, 라인별 — 마지막 라인 60% 너비
box이미지·카드 영역
circle아바타, 아이콘
shimmer1.6s loop, 좌→우 그라데이션
colorGray 100 base + White 60% shimmer

Empty state

no data

아직 데이터가 없거나 검색 결과가 없을 때. 아이콘(또는 일러스트 슬롯) + 제목 + 본문 + 1개 CTA.

empty

아직 원고가 없습니다

교정·교열·윤문은 원고를 받는 순간 시작됩니다.

검색 결과 없음

"김작가 미공개"로 검색했습니다. 다른 키워드로 다시 시도해주세요.

tone제목은 사실 — "아직 원고가 없습니다". 본문은 다음 행동 안내 — 명령형 아닌 서술. CTA 1개만, 가장 자연스러운 다음 행동.

17 · Components

Markers — Badge · Tag · Chip · Pill · Status

짧은 라벨 5종. 의미와 모양이 다르므로 혼용 금지.

Badge — 카운트 · 라벨

badge

숫자 또는 짧은 라벨. 항상 컴포넌트 옆에 종속(독립 사용 X).

badge
128 NEW PRO 완료 실패 초안

Status indicator — dot + label

status

처리 상태 4종. 점 + 라벨 조합으로 라이브러리 테이블·보고서 메타에 사용.

status
대기 분석 중 완료 실패
statecoloranimation
queuedGray 400
processingTiger Orangepulse 1.4s
done#16A34A
failed#DC2626

Tag — 텍스트 라벨

tag

분류·메타. 사각 라운드, 작은 폰트, 가능하면 제거 가능(×).

tag
단행본 논픽션 윌북 2026년 가을 김작가

Filter chip

chip

클릭하면 필터가 적용되는 토글 칩. 카운트 부속 표시 가능. 활성 시 Press Black fill.

filter

Format pill — 파일 포맷

format

업로드 카드, 라이브러리 행, 다운로드 옵션에서 사용. 모노스페이스, 전체 대문자.

light
PDF DOCX HWP HWPX
dark
PDF DOCX HWP HWPX
specHWP·HWPX는 Tiger Orange 액센트 변형 — editorial이 한국어 출판에 최적화되어 있다는 시그널. PDF·DOCX는 중립 그레이.

차이 정리

markershape독립인터랙션주 사용처
Badgepill, 작음X — 컴포넌트 부속X카운트, 상태 라벨
Statusdot + 라벨OX처리 상태 4종
Tag사각, 작음O제거 가능분류, 메타
Filter chippill, 보통O클릭 토글필터 선택
Format pill사각 미니, 모노OX파일 포맷

18 · Components

Table

/library의 메인 표시 컴포넌트. 헤더(정렬) + 행(호버·액션) + zebra 없음 — 인쇄지의 간결함.

library table
파일 이름 포맷 요청 날짜 글자수 상태
미공개 단행본 — 김작가 원고 HWP 2026.05.22 14:32 128,420자 완료
에세이집 초고 v3 DOCX 2026.05.20 11:08 87,310자 분석 중
번역 원고 — 이태리 단편선 HWPX 2026.05.18 09:44 156,920자 완료
시집 교정본 PDF 2026.05.15 16:20 22,840자 실패
regionspec
header11.5/650, uppercase, letter-spacing 0.06em, Gray 500
cell padding14 · 16
row hoverGray 50 background, row actions fade-in
borderGray 200 between rows, Gray 300 below header
zebra없음 (인쇄지 간결함)
row actionsopacity 0 → 1 on hover, 우측 정렬
sort indicatorcaret 4px, Gray 300(idle) → Press Black(active)
row heightauto (최소 56px)

19 · Components

Card · Divider

컨테이너와 구분선. Card는 정보 그룹핑, Divider는 의미적 분리.

Card

card
variants

기본 카드

Default

1px Gray 200 보더 + Gray 200 채움 없음. 라이브러리 카드, 설정 패널 등.

Raised 카드

Raised

보더 대신 그림자. 모달 위 부유 요소, 카드 단독으로 도드라져야 할 때.

Divider

divider

섹션 사이의 의미적 분리. 단순 라인 또는 텍스트 라벨 포함.

divider

또는
2026년 5월
divider · dark

또는
use"또는" — 로그인 폼에서 소셜과 이메일 사이. "2026년 5월" — 라이브러리 테이블에서 월별 그룹핑. 의미 없는 분리는 spacing으로.

20 · Components

File drop zone

랜딩의 업로드 카드 핵심 + 업로드 모달의 1단계. 드래그 영역 + 포맷 배지 + CTA + 디스크립션 슬롯.

상태

states · dark

랜딩(/)은 다크 테마, 업로드 모달은 라이트 테마. 양쪽 모두 동일 anatomy.

landing · dark
원고를 드래그하거나 클릭하여 업로드
PDF DOCX HWP HWPX
최소 1,000자. 비밀번호 PDF는 해제 후 업로드해주세요.
dragover · is-dragover
놓으면 분석을 시작합니다
error · is-error
지원하지 않는 포맷
PDF · DOCX · HWP · HWPX 중 하나로 다시 시도해주세요.

스펙

stateborderbackground
default1.5px dashed Gray 300White (light) / rgba(255,255,255,.02) (dark)
hover1.5px dashed Gray 400Gray 50
dragover1.5px solid Tiger Orangergba(249,104,21,.04)
error1.5px dashed #DC2626rgba(220,38,38,.04)
disabled1.5px dashed Gray 200Gray 50 — 인터랙션 없음
radius6 (r-md)
padding64 · 32

카피 슬롯

slot예시tone
main원고를 드래그하거나 클릭하여 업로드개조식, 동사 종결
format pillsPDF · DOCX · HWP · HWPX고정
helper최소 1,000자. 비밀번호 PDF는 해제 후 업로드해주세요.합쇼체 · 1줄
CTA분석 시작개조식 동사
dragover놓으면 분석을 시작합니다합쇼체
error지원하지 않는 포맷 + 보조 안내사실 명시 → 다음 행동

21 · Components

Social login buttons

SSO 3종 — 카카오 · 네이버 · Google. 브랜드 컬러 그대로, 가입·로그인 통합이므로 동사는 "시작".

dark · login modal
brandbackgroundtexticon
카카오#FEE500#191919ri-kakao-talk-fill
네이버#03C75A#FFFFFF커스텀 N (Naver는 Remix 미수록)
Google#FFFFFF + Gray 200 border#1F1F1Fri-google-fill, fill #4285F4
spec모든 버튼 동일 사이즈 (h 44, 풀 너비, weight 650, 14px). 라벨은 "[브랜드]로 시작" — SSO 가입·로그인 통합 동사. 아이콘은 왼쪽 정렬 X, 텍스트 옆 중앙.

22 · Product patterns

제품 화면 패턴

실제 editorial 화면에서 반복되는 상위 패턴. 컴포넌트 조합의 목적과 상태 표현을 문서화해 랜딩, 라이브러리, 보고서가 같은 언어로 움직이도록 합니다.

인증 헤더 · 앱 셸

로그인 상태의 랜딩 헤더는 데스크톱/태블릿에서 알림, 프로필 칩, 라이브러리 버튼 순서로 배치합니다. 모바일 768 미만에서는 헤더 밀도를 낮추기 위해 알림과 프로필 칩을 숨기고 라이브러리 버튼만 유지합니다. 사이드패널이 있는 앱 화면은 이미 라이브러리 진입점이 있으므로 데스크톱/태블릿 topbar에는 알림과 프로필 칩만 두고, 모바일 앱 셸은 알림을 햄버거 패널 상단으로 이동합니다.

authenticated landing header · desktop/tablet
editorial
라이브러리
app shell · centered main container
라이브러리/미공개 단행본

미공개 단행본 — 김작가 원고

사이드패널을 제외한 메인 콘텐츠는 최대 1280px 컨테이너 안에서 중앙 정렬합니다.

상태 표시 · 분석 진행

라이브러리 테이블의 분석 중 상태는 진행률이 핵심 정보이므로 원형 진행률과 퍼센트를 함께 씁니다. 간단한 배지나 리스트 안의 처리 상태는 점형 status-dot을 사용합니다.

분석 중 40% 완료 실패 대기

보고서 제안 항목

보고서의 반복 카드 구조는 원문, 제안, 근거, 액션 순서를 유지합니다. 무시는 삭제가 아니므로 destructive 버튼이 아니라 secondary/ghost 계열로 표현합니다.

#012 · 교정 · p.42 · 3번째 문단 대기
원문

그날 밤 그는 아주아주아주 빠른 속도로 골목을 빠져나갔다.

제안

그날 밤 그는 몹시 빠른 속도로 골목을 빠져나갔다.

같은 부사를 반복해 강조하는 표현은 출판물에서 권장하지 않는 구어 표현입니다.

업로드 · 교정 진행

업로드 모달의 교정 단계는 구조, 맞춤법, 어법, 문체, 일관성 순서로 고정합니다. 완료는 체크, 진행 중은 주황색 pulse, 예정은 빈 원으로 표시합니다.

36%

맞춤법을 검토하고 있습니다.

표기 오류와 문장부호 등 명확한 교정 후보를 추립니다.

구조 맞춤법 어법 문체 일관성

다운로드 옵션 그룹

다운로드 모달은 포함할 제안 상태와 받을 파일을 분리합니다. 토글/체크박스 카드가 같은 밀도와 대비를 유지해야 하며, 하위 상태는 간결한 라벨만 씁니다.


23 · 다음

다음 작업

v1.2 — Overlay · Feedback · Display (다음 라운드)

component핵심 결정사항
File drop zone랜딩용 업로드 카드 — 드래그 영역, 포맷 배지, CTA, 하단 디스크립션 슬롯
Dropdown menu액션 메뉴 vs 셀렉트 메뉴 구분, 키보드 내비, 아이콘+라벨 정렬
Tooltip · Popover딜레이 (300ms in / 0 out), 위치 자동 보정, 포커스 트리거
Toast · Inline alert위치 (우상단), 자동 dismiss 시간, action 슬롯, success/warning/error 분기
Progress · Skeleton업로드 5단계(분석→비용→교정→검증→보고서) 시각화 패턴
Empty state/library 빈 상태, 검색 결과 없음 — 카피 + 일러스트 슬롯 규칙
Badge · Tag · Filter chip · Format pill상태/카운트/필터 3계열. PDF·DOCX·HWP·HWPX 포맷 배지
Status indicator분석중·완료·실패 상태 표기 — 보고서 행, 라이브러리 테이블
Table/library 테이블 — 정렬, 호버, 행 액션, 빈 상태
Card · Divider일반 카드, 보고서 항목 카드(원문→제안→근거)
Social login buttonkakao · naver · google — 브랜드 컬러 매핑

v1.3 — Patterns (조립)

pattern구성
로그인 모달워드마크 + 소셜 4 + 디바이더 + 이메일 폼 + 하단 링크
업로드 카드 (랜딩)드롭존 + 포맷 배지 + CTA + 디스크립션
업로드 모달 5단계분석 → 비용 확인 게이트 → 교정 → 검증 → 보고서
보고서 항목 카드원문 → 수정 제안 → 교정 근거 → 승인/무시
공유 모달경고 → 만료 기간 → 링크 생성 → 복사