Upload

Upload

파일 선택·드래그 앤 드롭·업로드 목록·이미지 카드·아바타 업로드 UI를 제공합니다. upload_input은 시각적으로 숨기고 label.upload_trigger · label.upload_dropzone으로 트리거합니다. 버튼형 트리거는 button 대신 span.btn으로 스킨을 적용합니다. 파일 입력은 비제어 방식으로 동작하며 선택 결과는 change 이벤트에서 처리합니다.

버튼 업로드

label.upload_trigger 안에 span.btn으로 버튼 스킨을 적용합니다. button 요소는 label 안에 넣지 않습니다.

PNG, JPG · 최대 5MB

드래그 앤 드롭

upload_dropzone으로 클릭·드래그 영역을 만듭니다. multiple · accept 속성으로 파일 제한을 지정합니다.

파일 목록

upload_list · upload_item으로 업로드 진행·완료·오류 상태를 표시합니다. 진행률은 upload_progress-barstyle="width: …" 또는 CSS 변수로 제어합니다.

  • 프로젝트_제안서_v2.pdf
    2.4 MB · 60%
  • 디자인_가이드.zip업로드 완료 · 8.1 MB
  • 대용량_영상.mp4
    파일 크기가 10MB를 초과합니다.

사진 카드

upload_cards 그리드에 미리보기 카드와 upload_card-trigger를 배치합니다. 호버 시 upload_card-actions 오버레이가 표시됩니다.

미리보기 1
미리보기 2

아바타 업로드

upload_avatar로 프로필 이미지 변경 UI를 구성합니다. Avatar 컴포넌트와 조합합니다.

폼 필드

form_field와 조합해 레이블·힌트·오류 메시지를 표시합니다.

제출 전 파일명을 확인해 주세요.

첨부파일은 필수입니다.

API · Props

Prop타입기본값설명
variant'button' | 'drag' | 'list' | 'picture-card' | 'avatar'button업로드 UI 유형
size'sm' | 'md' | 'lg'mdupload_sm · upload_lg
disabledbooleanfalse비활성 (is-disabled)
fitbooleanfalse콘텐츠 너비 (upload_fit)
multiplebooleanfalse다중 파일 선택
acceptstringinput accept 속성
input-idstringfile input id
hintstringbutton·drag variant 힌트 텍스트
dragoverbooleanfalse드래그 오버 상태 (is-dragover)
errorbooleanfalse오류 (is-error)
ripplebooleantrue클릭 파장(ripple). true 시 자식 클릭 표면에 data-ripple · false 시 data-no-ripple으로 하위 전체 비활성

API · Slots

슬롯설명
trigger업로드 트리거 UI (button·drag·picture-card·avatar)
hint힌트 텍스트 (hint prop 대체)
default파일 목록 (list variant)
cards이미지 카드 그리드 (picture-card)

API · Events

이벤트설명
change파일 선택 변경 시. 네이티브 input change 이벤트 전달

클래스 · 속성

Vue 컴포넌트가 렌더하는 OOCSS 클래스입니다. HTML 마크업으로 직접 작성할 때 동일하게 조합합니다.

클래스설명
upload루트
upload_sm · upload_lg · upload_fit크기·너비
upload_trigger · upload_dropzone · upload_inputbutton·drag 트리거
upload_card · upload_cards · upload_avatarpicture-card·avatar
upload_list · upload_item · upload_item-info목록 variant
upload_hint · upload_progress힌트·진행률
is-dragover · is-error · is-disabled상태
data-ripple클릭 파장 활성. data-ripple="surface"는 절대 위치 보조 버튼용
data-ripple="false"해당 요소 ripple 비활성
data-no-ripple하위 전체 ripple 비활성

디자인 토큰

토큰기본값설명
--upload-max-widthvar(--input-max-width)최대 너비
--upload-dropzone-padding · --upload-dropzone-icon-size드롭존
--upload-card-size · --upload-list-gap6.5rem · var(--space-xs)카드·목록