크로스 플랫폼 및 모바일 UI · 새 리소스

Vant 디자인 시스템.

Vant 4를 사용해 만든 모바일 주소 선택 흐름입니다. 실제 CSS 변수, 주소 식별 정보 관리, 필드 유효성 검사, 테마 전환, 로컬에만 저장한다는 명시적 안내를 포함합니다.

OpenDesign 가이드9개 챕터참조 항목 34개독자적 적용 가이드
01

Vant 디자인 시스템 인터페이스 미리보기

수신자를 선택하고, 주소를 수정하고, 새 항목을 검증한 다음 기본 구성 요소 테마를 전환하세요.

Sample-kit 배송 주소전체 예시 열기
Vue 3 기반 기본 Vant 4.10.2. 종이 그래픽과 주변 레이아웃은 독자적으로 제작했습니다. · 구현 레퍼런스
02

Vant 디자인 시스템 디자인 레퍼런스

설치된 기본 스타일시트에서 읽은 Vant 4.10.2 CSS 변수입니다. 미리보기에서는 ConfigProvider를 통해 독자적으로 청록색 기본 색상을 적용합니다. 아래의 기본 역할은 명확히 구분해 표시합니다.

기본 색상 역할

출처
이름 / 규칙값 / 구성용도
--van-primary-colorvar(--van-blue)기본 동작 별칭. 파란색은 #1989fa입니다.
--van-success-colorvar(--van-green)성공 별칭. 초록색은 #07c160입니다.
--van-danger-colorvar(--van-red)위험 별칭. 빨간색은 #ee0a24입니다.
--van-warning-colorvar(--van-orange)경고 별칭. 주황색은 #ff976a입니다.
--van-text-colorvar(--van-gray-8)기본 텍스트 별칭. gray-8은 #323233입니다.
--van-text-color-2var(--van-gray-6)보조 텍스트 별칭. gray-6은 #969799입니다.
--van-border-colorvar(--van-gray-3)구분선 별칭. gray-3은 #ebedf0입니다.
--van-backgroundvar(--van-gray-1)페이지 표면. gray-1은 #f7f8fa입니다.
--van-background-2var(--van-white)구성 요소 표면. 흰색은 #fff입니다.

패딩 간격

출처
이름 / 규칙값 / 구성용도
--van-padding-base4px내부의 미세한 여백입니다.
--van-padding-xs8px작은 내부 간격입니다.
--van-padding-sm12px주소 항목 패딩입니다.
--van-padding-md16px일반 페이지 안쪽 여백입니다.
--van-padding-lg24px섹션 안쪽 여백입니다.
--van-padding-xl32px넓은 페이지 안쪽 여백입니다.

타이포그래피 및 형태

출처
이름 / 규칙값 / 구성용도
--van-font-size-xs10px기본 UI 글자 크기입니다.
--van-font-size-sm12px기본 UI 글자 크기입니다.
--van-font-size-md14px기본 UI 글자 크기입니다.
--van-font-size-lg16px기본 UI 글자 크기입니다.
--van-line-height-xs14px이에 대응하는 줄 높이 토큰입니다.
--van-line-height-sm18px이에 대응하는 줄 높이 토큰입니다.
--van-line-height-md20px이에 대응하는 줄 높이 토큰입니다.
--van-line-height-lg22px이에 대응하는 줄 높이 토큰입니다.
--van-radius-sm2px지정된 모서리 반경입니다.
--van-radius-md4px지정된 모서리 반경입니다.
--van-radius-lg8px지정된 모서리 반경입니다.
--van-radius-max999px지정된 모서리 반경입니다.
--van-disabled-opacity.5기본 비활성 상태 불투명도입니다.
--van-duration-base.3s표준 전환 지속 시간.

주소 목록 및 미리보기 조정

출처
이름 / 규칙값 / 구성용도
--van-address-list-padding12px 12px 80px공식 기본값에서는 하단 추가 버튼을 위한 공간을 확보합니다.
themeVars.addressListPadding12px이 미리보기에서는 고정 추가 버튼을 숨기므로 독자적으로 조정했습니다.
themeVars.primaryColor#176b77 --van-primary-color에 매핑한 독자적인 기본 색상 재정의입니다.
--van-address-list-item-font-size13px공식 주소 텍스트 크기입니다.
--van-address-list-edit-icon-size20px공식 수정 아이콘 크기이며, 전체 터치 영역의 크기는 아닙니다.
03

Vant 디자인 시스템 전체 가이드

실제 인터페이스를 위해 이 시스템을 선택하고 적용하고 검토하는 실용 가이드.

DESIGN-vant.md

완전한 안내와 구현 시작점, 소스 링크.

가이드 다운로드

명시적인 CSS 역할을 적용한 Vant 디자인 시스템 모바일 구성 요소

명시적인 CSS 역할을 적용한 모바일 구성 요소

Vant는 모바일 웹 인터페이스용 Vue를 대상으로 합니다. AddressList, Field, CellGroup은 데스크톱 관리 테이블 대신 간결한 수신 주소 행과 양식 셀을 제공합니다. Sample-kit 흐름에서는 이러한 기본 구성 요소를 사용하고, 별도의 요약 영역에 선택한 배송지를 표시합니다.

이 OpenDesign 가이드에서

기본 역할은 --van-primary-color를 통해 파란색으로 지정됩니다. 성공, 위험, 경고에는 각각 별도의 색상 변수가 사용됩니다. 이 예시에서는 ConfigProvider를 통해 기본 색상을 #176b77로 의도적으로 변경했습니다. 이 청록색을 공식 Vant 브랜드 색상이라고 부르는 것은 아닙니다. 독자적으로 제작한 종이 질감 그래픽은 장식용이며 컨트롤 상태를 나타내지 않습니다.

지원 사양 읽기

Vant 디자인 시스템의 4픽셀 패딩 간격과 컴팩트한 글자

4픽셀 패딩 간격과 컴팩트한 글자

Vant는 4, 8, 12, 16, 24, 32픽셀의 패딩 값을 제공합니다. 이는 스크린샷에서 추정한 값이 아니라 실제 기본 변수입니다. 주소 목록 항목에는 작은 패딩 토큰을 사용하고, 양식과 주문 요약을 구분하기 위해 주변 미리보기에는 더 넓은 섹션 간격을 적용합니다.

지정된 텍스트 크기는 10~16픽셀이고, 이에 대응하는 줄 높이는 14~22픽셀입니다. 주소 텍스트에는 별도의 13px 구성 요소 변수가 있습니다. 모바일 제품은 이러한 컨트롤 기본값보다 큰 편집용 텍스트가 필요할 수 있습니다. 예시 제목은 독자적으로 지정한 32px 크기이며, 페이지 중단점에서 27px로 줄어듭니다.

지원 사양 읽기

Vant 디자인 시스템에서 주소 ID에 따라 라디오 선택 항목이 결정됩니다

주소 ID에 따라 라디오 선택 항목이 결정됩니다

AddressList에는 id, name, tel, address와 선택적 isDefault가 포함된 목록 레코드를 전달합니다. v-model 값은 선택한 레코드를 식별합니다. 요약은 현재 목록에서 해당 ID를 찾아 계산하므로, 수신자를 수정하면 별도의 요약 상태를 두지 않아도 표시된 배송지가 즉시 업데이트됩니다.

사용할 수 없는 창고는 disabled-list에 전달하고, 비활성 상태를 명확히 설명하는 텍스트를 표시합니다. 맥락을 위해 계속 표시하지만 배송지로 선택할 수는 없습니다. 기본값 배지는 레코드의 기본 상태를 나타냅니다. 현재 선택과는 별개이며 다른 라디오 옵션을 선택해도 바뀌지 않습니다.

지원 사양 읽기

Vant 디자인 시스템 저장된 레코드와 초안을 분리하세요

초안과 저장된 기록을 분리하세요

수정 이벤트는 주소 레코드를 전달합니다. 편집기는 수정 가능한 필드만 반응형 초안에 복사하고, 변경되지 않는 ID는 별도로 저장합니다. 취소하면 저장된 주소를 수정하지 않고 초안만 숨깁니다. 저장하면 ID가 일치하는 레코드를 바꾸거나 새 레코드를 추가한 다음, 해당 ID를 선택합니다.

이 예제는 하단 팝업을 여는 대신 목록 아래에 인라인 편집기를 표시합니다. 따라서 문서에 삽입된 상태에서도 예제 전체를 사용할 수 있습니다. Vant는 표준화된 주소 입력을 위한 AddressEdit도 제공합니다. 이 예제에서는 특정 국가의 행정 구역 데이터를 전제로 하지 않도록 Form과 Field를 사용합니다.

  1. 스튜디오를 선택하고 요약을 확인한 다음 수정을 여세요.
  2. 수신인을 변경한 다음 취소를 눌러 저장된 행이 그대로인지 확인하세요.
  3. 편집기를 다시 열고 올바른 필드를 저장한 다음 선택된 요약을 확인하세요.

지원 사양 읽기

Vant 디자인 시스템 필드 규칙으로 제출 이벤트 제어하기

필드 규칙으로 제출 이벤트 제어하기

Form은 validate-trigger="onSubmit"을 사용합니다. 수신인 검사기는 공백을 제거한 뒤 두 글자 이상인지 확인합니다. 전화번호 검사기는 맨 앞의 선택적 더하기 기호와 숫자, 공백, 괄호, 하이픈으로 구성된 적당한 길이의 문자열을 허용합니다. 주소 검사기는 공백이 아닌 문자가 열 개 이상 있는지 확인합니다. 이 검사는 동작 방식을 보여 주기 위한 것으로, 우편 주소 확인이나 모든 전화번호에 적용되는 보편적인 유효성 검사가 아닙니다.

native-type="submit"인 기본 Button을 누르면 네이티브 폼이 제출됩니다. Vant는 규칙을 통과한 뒤에만 submit을 발생시킵니다. 오류는 해당 Field 옆에 표시되며, scroll-to-error는 유효하지 않은 필드가 화면에 보이도록 이동합니다. 미리보기에서는 편집을 시작할 때 첫 번째 수신인 입력란에도 포커스를 둡니다. 유효성 검사에 실패해도 초안은 유지됩니다.

지원 사양 읽기

Vant 디자인 시스템 ConfigProvider로 카멜 케이스 값을 CSS 변수에 매핑하기

ConfigProvider가 CamelCase 값을 CSS 변수에 매핑합니다

theme-vars 객체에는 primaryColor, buttonPrimaryBackground, buttonPrimaryBorderColor, addressListPadding이 포함됩니다. ConfigProvider는 이 이름들을 각각 대응하는 --van-* 변수에 매핑합니다. 별도로 격리된 이 문서에서는 theme-vars-scope="global"을 사용합니다. 루트에 선언된 별칭이 변경된 기본 색상 역할을 기준으로 적용되기 때문입니다. 기본 색상 역할과 기본 버튼의 두 값을 모두 재정의하면 기본 동작 버튼과 라디오 선택의 색상을 일관되게 유지할 수 있습니다.

theme 속성을 light와 dark 사이에서 전환하면 Vant 구성 요소의 테마가 바뀝니다. 페이지의 배경과 텍스트에도 테마 변수를 사용해 별도로 스타일을 지정해야 합니다. 프로바이더만 설정해서는 애플리케이션의 모든 요소에 색상이 적용되지 않습니다. 장식용 종이 샘플은 두 테마 모두에서 재질 색상을 그대로 유지합니다.

지원 사양 읽기

Vant 디자인 시스템 고정 모바일 동작에는 삽입 방식에 대한 판단이 필요합니다

고정 모바일 동작에는 삽입 방식에 대한 판단이 필요합니다

AddressList는 고정된 추가 버튼을 위해 보통 하단 여백 80픽셀을 확보합니다. 미리보기에서는 show-add-button을 false로 설정하고, 일반 인라인 Button을 제공합니다. 또한 addressListPadding을 12픽셀로 변경해 고정 동작 버튼이 따로 떠 있거나, 삽입된 예제 하단에 불필요한 빈 공간이 생기지 않도록 합니다.

넓은 화면에서는 목록과 재질 요약이 두 열로 표시됩니다. 원래 중단점인 680px 아래에서는 세로로 쌓입니다. 기본 AddressList의 height:100%는 명시적으로 height:auto로 재설정해 패널이 다음 그리드 행과 겹치지 않고 콘텐츠에 맞춰지게 합니다. 전역 최소 뷰포트 높이는 사용하지 않으므로, 부모 페이지가 콘텐츠에 맞춰 삽입된 문서의 크기를 정할 수 있습니다. 좁은 화면에서는 주소 이름이 줄바꿈되어 페이지 너비가 강제로 늘어나지 않습니다.

지원 사양 읽기

Vant 디자인 시스템 명확한 포커스 표시와 분명한 로컬 결과

명확한 포커스 표시와 분명한 로컬 결과

Vant의 기본 리셋은 기본 포커스 윤곽선을 제거합니다. 함께 제공되는 페이지 스타일시트는 버튼, 입력란, 텍스트 영역 및 tabindex가 지정된 컨트롤에 3픽셀의 focus-visible 링을 다시 적용합니다. 이는 애플리케이션 수준에서 추가한 것으로, 라이브러리를 가져오는 것만으로 접근성 작업이 모두 완료된다는 뜻은 아닙니다. 테마 전환 컨트롤에는 접근 가능한 이름과 눈에 보이는 레이블을 제공합니다.

상태 알림은 로컬 저장 또는 배송지 선택 결과를 기록합니다. 배송을 예약한 것은 아니라는 점도 명확히 알립니다. 이 예제에는 체크아웃 엔드포인트, 저장소 또는 외부 부수 효과가 없습니다. 실제 체크아웃에는 구매 전에 서버 측 주소 확인, 배송 가능 여부 확인, 최종 검토가 필요합니다.

  • 사용할 수 없는 주소는 조용히 삭제하는 대신, 그 이유가 보이도록 표시하세요.
  • 제출이 잘못되었더라도 사용자가 필드를 수정할 수 있도록 초안을 유지하세요.
  • 작업이 로컬 선택을 변경하는지, 실제로 배송을 예약하는지 설명합니다.

지원 사양 읽기

Vant 디자인 시스템 로케일과 구성 요소 스타일시트 가져오기

로케일과 구성 요소 스타일을 가져오세요

전체 SFC는 구성 요소를 로컬에서 가져옵니다. 진입 파일은 Locale.use를 통해 영어 로케일을 설정하고, 기존 레이아웃 스타일시트보다 먼저 vant/lib/index.css를 가져옵니다. 확인된 패키지는 Vue 3에서 사용하는 Vant 4.10.2입니다. 영어 로케일 가져오기에 사용된 .mjs 확장자는 설치된 ESM 파일과 일치합니다.

독립 실행형 미리보기에는 JavaScript, CSS 및 아이콘 글꼴이 문서에 포함되어 있습니다. 번들된 WOFF2 글꼴은 유지하고 사용하지 않는 원격 WOFF 대체 글꼴은 제거했으므로, 이 예제는 서드파티 글꼴 요청에 의존하지 않습니다. 프로덕션 애플리케이션에서는 호스팅된 데모 URL을 그대로 복사하지 말고 자체 번들러와 에셋 정책을 사용해야 합니다.

지원 사양 읽기

Vant 디자인 시스템 구성 요소 예제

주소 선택 및 유효성 검사를 거친 편집

AddressList, Form, Field, ConfigProvider와 제어형 초안을 사용하는 완전한 Vue SFC입니다.

vue
<script setup>
import {ref,reactive,computed,nextTick} from 'vue';
import {ConfigProvider,AddressList,Button,Form,Field,CellGroup,Tag,Switch,NoticeBar} from 'vant';
const list=ref([{id:'studio',name:'Alex Morgan',tel:'+44 20 7946 0101',address:'Studio 4, 18 Paper Street, London',isDefault:true},{id:'workshop',name:'Jules Chen',tel:'+44 20 7946 0122',address:'Workshop B, 52 Clay Road, London'}]);
const disabledList=[{id:'archive',name:'Sam Rivera',tel:'+44 20 7946 0133',address:'Old warehouse, 8 Mill Lane, London'}];
const chosen=ref('studio'),editing=ref(false),editingId=ref(null),notice=ref(''),dark=ref(false),formRef=ref();
const draft=reactive({name:'',tel:'',address:''});
const selected=computed(()=>list.value.find(x=>x.id===chosen.value));
const themeVars={primaryColor:'#176b77',addressListPadding:'12px',buttonPrimaryBackground:'#176b77',buttonPrimaryBorderColor:'#176b77'};
async function edit(item){editingId.value=item?.id||null;Object.assign(draft,item?{name:item.name,tel:item.tel,address:item.address}:{name:'',tel:'',address:''});editing.value=true;notice.value='';await nextTick();formRef.value?.resetValidation();document.querySelector('[name="recipient"]')?.focus();}
function save(){const value={id:editingId.value||`local-${Date.now()}`,name:draft.name.trim(),tel:draft.tel.trim(),address:draft.address.trim()};if(editingId.value)list.value=list.value.map(x=>x.id===editingId.value?{...x,...value}:x);else list.value.push(value);chosen.value=value.id;editing.value=false;notice.value='Address saved in this local preview.';}
function confirm(){notice.value=`Selected ${selected.value.name} at ${selected.value.address}. No delivery was booked.`;}
const nonempty=v=>v.trim().length>=2;
const phone=v=>/^\+?[\d ()-]{7,22}$/.test(v.trim());
</script>
<template><ConfigProvider theme-vars-scope="global" :theme="dark?'dark':'light'" :theme-vars="themeVars"><main class="delivery" :class="{dark}"><header><div><p class="eyebrow">VANT · MOBILE COMMERCE</p><h1>A destination for your sample kit.</h1><p class="intro">Choose a studio, update a recipient or add a local address.</p></div><label class="mode"><span>Dark</span><Switch v-model="dark" size="22px" aria-label="Dark theme" /></label></header><div class="columns"><section class="address-panel" aria-label="Delivery addresses"><div class="section-heading"><h2>Delivery address</h2><Tag plain type="primary">{{list.length}} available</Tag></div><AddressList v-model="chosen" :list="list" :disabled-list="disabledList" disabled-text="Outside the sample delivery area" default-tag-text="Default" :show-add-button="false" @edit="edit" @select="notice=''" /><div class="actions"><Button plain block type="primary" @click="edit()">Add a local address</Button></div></section><aside><section class="kit"><div class="paper-samples" aria-hidden="true"><i></i><i></i><i></i></div><p class="eyebrow">MATERIAL LIBRARY</p><h2>Paper & pigment kit</h2><p>Six paper stocks. Three print finishes. One place to compare them.</p><dl><div><dt>Recipient</dt><dd>{{selected?.name}}</dd></div><div><dt>Destination</dt><dd>{{selected?.address}}</dd></div></dl><Button block type="primary" @click="confirm">Use this address</Button><p class="local-note">Selection only. Nothing is purchased or shipped.</p></section></aside></div><section v-if="editing" class="editor"><h2>{{editingId?'Edit recipient':'Add an address'}}</h2><Form ref="formRef" validate-trigger="onSubmit" label-align="top" scroll-to-error @submit="save"><CellGroup inset><Field v-model="draft.name" name="recipient" label="Recipient" placeholder="Full name" :rules="[{validator:nonempty,message:'Enter at least two characters.'}]" /><Field v-model="draft.tel" name="telephone" type="tel" label="Telephone" placeholder="+44 20 7946 0100" :rules="[{validator:phone,message:'Use 7–22 characters: digits, spaces, +, brackets or hyphens.'}]" /><Field v-model="draft.address" name="address" type="textarea" rows="2" autosize label="Address" placeholder="Building, street and city" :rules="[{validator:v=>v.trim().length>=10,message:'Enter a complete address of at least ten characters.'}]" /></CellGroup><div class="form-actions"><Button type="primary" native-type="submit">Save locally</Button><Button native-type="button" @click="editing=false">Cancel</Button></div></Form></section><NoticeBar v-if="notice" wrapable :scrollable="false" color="var(--van-primary-color)" background="var(--van-background-2)" class="result" role="status">{{notice}}</NoticeBar></main></ConfigProvider></template>

코드 참조

  • 선택된 값은 배열의 위치가 아니라 주소 ID입니다.
  • 고정된 AddressList 추가 버튼은 숨기고, 인라인 Button으로 편집기를 엽니다.
  • Form 제출은 Field 검사기를 통과한 뒤에만 진행됩니다.

반응형 페이지와 명확한 포커스 표시

기존 데스크톱 분할 레이아웃이 모바일 배송 흐름에 맞게 재구성됩니다.

CSS
*{box-sizing:border-box}body{margin:0;background:#f7f8fa;color:#323233}.delivery{padding:32px;max-width:1080px;margin:auto;background:var(--van-background);color:var(--van-text-color)}.delivery.dark{background:var(--van-background);color:var(--van-text-color)}header{display:flex;align-items:flex-start;justify-content:space-between;gap:24px;margin-bottom:32px}.eyebrow{font-size:11px;font-weight:600;letter-spacing:.12em;color:var(--van-text-color-2)}h1{font-size:32px;line-height:1.2;margin:12px 0;max-width:550px}h2{font-size:18px;line-height:24px;margin:0 0 12px}.intro{font-size:15px;line-height:24px;color:var(--van-text-color-2)}.mode{display:flex;gap:8px;align-items:center;font-size:12px}.columns{display:grid;grid-template-columns:1.25fr 1fr;gap:24px}.section-heading{display:flex;justify-content:space-between;align-items:center;padding:0 12px}.section-heading h2{margin:0}.actions{padding:0 12px}.kit{background:var(--van-background-2);padding:24px;border-radius:8px}.kit p{line-height:1.6}.paper-samples{height:130px;position:relative;display:flex;align-items:center;justify-content:center;margin-bottom:24px;background:#e9edef;border-radius:4px;overflow:hidden}.paper-samples i{height:90px;width:90px;background:#d6b59b;box-shadow:0 4px 8px #0001;transform:rotate(-12deg);margin-right:-25px}.paper-samples i:nth-child(2){background:#efdfbe;transform:rotate(2deg)}.paper-samples i:nth-child(3){background:#94adb1;transform:rotate(16deg)}dl{font-size:14px;line-height:20px;margin:24px 0}dl div{display:grid;grid-template-columns:90px 1fr;margin:12px 0;gap:12px}dt{color:var(--van-text-color-2)}dd{margin:0}.local-note{font-size:12px;color:var(--van-text-color-2);margin-bottom:0}.editor{max-width:640px;margin-top:32px}.editor h2{margin-left:16px}.form-actions{display:flex;gap:12px;margin:16px}.result{margin-top:24px;border-radius:8px}button:focus-visible,input:focus-visible,textarea:focus-visible,[tabindex]:focus-visible{outline:3px solid #176b77!important;outline-offset:3px}@media(max-width:680px){.delivery{padding:24px 12px}.columns{grid-template-columns:1fr}header{gap:8px;margin-bottom:24px}h1{font-size:27px}.mode{padding-top:4px}.kit{padding:20px}.paper-samples{height:110px}.van-address-item__name{white-space:normal}}

.delivery .van-address-list{height:auto}

코드 참조

  • 컴포넌트의 기하 구조는 Vant에서 가져오며, 페이지 중단점 680px는 애플리케이션에서 정한 값입니다.
  • 미리보기에서는 기본 초기화가 기본 윤곽선을 제거하므로, 포커스 링이 다시 표시되도록 복원합니다.
04

Vant 디자인 시스템 AI 에이전트 설정

구현 시작점

Vue 3 및 Vant 4.10.2에서 검증했습니다. 이 예제는 메모리 내 상태 외에는 주소를 저장하지 않습니다.

자바스크립트
// Create the project first:
// npm create vite@latest vant-specimen -- --template vue
// cd vant-specimen && npm install
// In a Vite Vue 3 project:
// npm install [email protected]
// Save the complete SFC as App.vue and the supplied layout as style.css.
import {createApp} from 'vue';
import {Locale} from 'vant';
import enUS from 'vant/es/locale/lang/en-US.mjs';
import 'vant/lib/index.css';
import './style.css';
import App from './App.vue';
Locale.use('en-US',enUS);
createApp(App).mount('#app');
// index.html must contain <div id="app"></div>.
// Keep the template index.html and replace its entry with the code above.
// npm run dev

프로젝트를 위한 프롬프트

에이전트 프롬프트
Vant 4.10.2 sample-kit 주소 선택기를 바탕으로 시작합니다. 주소 목록을 추가하거나 수정할 때 기본 AddressList와 Form/Field 편집 흐름을 유지하고, 필드 유효성 검사와 선택된 주소 상태도 보존합니다. Locale 설정, en-US 모듈, ConfigProvider 테마 범위, 콘텐츠 높이에 맞춘 AddressList 조정을 유지합니다. 취소 시 기존 주소를 대체하지 않아야 하며, 유효성 검사를 통과하면 로컬 주소 컬렉션만 업데이트해야 합니다. 주소만 다루는 이 예제에 결제 또는 배송 시간대 관련 성공 문구를 추가하지 마세요.
05

Vant 디자인 시스템의 출처 및 범위

Vant 4.10.2. 기본 토큰과 원래 페이지에서 정한 값은 구분되어 있습니다. 예시 주소는 허구이며, 선택 및 수정은 로컬에서만 이루어집니다.